<?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>217198</bug_id>
          
          <creation_ts>2020-10-01 17:11:03 -0700</creation_ts>
          <short_desc>Support EXT_texture_compression_rgtc WebGL extension</short_desc>
          <delta_ts>2020-11-30 13:47:02 -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>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219219</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=217813</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>217424</dependson>
          <blocked>217761</blocked>
    
    <blocked>217813</blocked>
    
    <blocked>219219</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Darpinian">jdarpinian</reporter>
          <assigned_to name="James Darpinian">jdarpinian</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>annulen</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kbr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1693931</commentid>
    <comment_count>0</comment_count>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-01 17:11:03 -0700</bug_when>
    <thetext>Support EXT_texture_compression_rgtc WebGL extension</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693932</commentid>
    <comment_count>1</comment_count>
      <attachid>410284</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-01 17:12:51 -0700</bug_when>
    <thetext>Created attachment 410284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693934</commentid>
    <comment_count>2</comment_count>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-01 17:15:54 -0700</bug_when>
    <thetext>Will add conformance test tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694267</commentid>
    <comment_count>3</comment_count>
      <attachid>410383</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-02 15:43:09 -0700</bug_when>
    <thetext>Created attachment 410383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694272</commentid>
    <comment_count>4</comment_count>
      <attachid>410383</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-10-02 15:54:11 -0700</bug_when>
    <thetext>Comment on attachment 410383
Patch

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

Looks great! One question. r+

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:6739
&gt; +        const int kBlockHeight = 4;

Have you confirmed that these values (from the extension spec) are correct, and that the tests both successfully enable the extension, and pass?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694280</commentid>
    <comment_count>5</comment_count>
      <attachid>410383</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-02 16:14:50 -0700</bug_when>
    <thetext>Comment on attachment 410383
Patch

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

&gt;&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:6739
&gt;&gt; +        const int kBlockHeight = 4;
&gt; 
&gt; Have you confirmed that these values (from the extension spec) are correct, and that the tests both successfully enable the extension, and pass?

Yes. Although the existing conformance test doesn&apos;t appear to load any images or do any rendering. So I guess we don&apos;t truly know if any existing implementation actually works. I will try to find some sample images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695357</commentid>
    <comment_count>6</comment_count>
      <attachid>410704</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-06 15:35:20 -0700</bug_when>
    <thetext>Created attachment 410704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695358</commentid>
    <comment_count>7</comment_count>
      <attachid>410704</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-06 15:38:39 -0700</bug_when>
    <thetext>Comment on attachment 410704
Patch

Added very thorough rendering test based on the existing S3TC test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695375</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-06 16:23:15 -0700</bug_when>
    <thetext>Committed r268085: &lt;https://trac.webkit.org/changeset/268085&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410704.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695376</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-06 16:24:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/70022537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695491</commentid>
    <comment_count>10</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-07 03:58:22 -0700</bug_when>
    <thetext>(In reply to EWS from comment #8)
&gt; Committed r268085: &lt;https://trac.webkit.org/changeset/268085&gt;
The newly added test: webgl/conformance/extensions/s3tc-and-rgtc.html seems to be consistently failing on ios-wk2. EWS indicated this failure on previous version of this patch. Should have waited for ios-wk2 EWS to complete before landing.

History: https://results.webkit.org/?suite=layout-tests&amp;test=webgl%2Fconformance%2Fextensions%2Fs3tc-and-rgtc.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695493</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-10-07 03:59:04 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 217424</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695614</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-10-07 12:17:53 -0700</bug_when>
    <thetext>From this run:
https://build.webkit.org/results/Apple-iOS-14-Simulator-Release-WK2-Tests/r268117%20(171)/results.html
https://build.webkit.org/results/Apple-iOS-14-Simulator-Release-WK2-Tests/r268117%20(171)/webgl/conformance/extensions/s3tc-and-rgtc-pretty-diff.html

it looks like the bug in the test is that it doesn&apos;t handle the case where the extension isn&apos;t available:

 1CONSOLE MESSAGE: TypeError: undefined is not an object (evaluating &apos;ext_rgtc.COMPRESSED_RED_RGTC1_EXT&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695688</commentid>
    <comment_count>13</comment_count>
      <attachid>410784</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-07 14:41:04 -0700</bug_when>
    <thetext>Created attachment 410784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695692</commentid>
    <comment_count>14</comment_count>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-07 14:45:11 -0700</bug_when>
    <thetext>Sorry for the breakage. The code to check whether the extension was supported was buggy. Will wait for EWS before relanding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695704</commentid>
    <comment_count>15</comment_count>
      <attachid>410784</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-10-07 15:04:32 -0700</bug_when>
    <thetext>Comment on attachment 410784
Patch

Looks good assuming the revised test has been tested locally when EXT_texture_compression_rgtc is not supported. r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695987</commentid>
    <comment_count>16</comment_count>
      <attachid>410868</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-10-08 12:02:20 -0700</bug_when>
    <thetext>Created attachment 410868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696081</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-08 17:24:46 -0700</bug_when>
    <thetext>Committed r268234: &lt;https://trac.webkit.org/changeset/268234&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410868.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410284</attachid>
            <date>2020-10-01 17:12:51 -0700</date>
            <delta_ts>2020-10-02 15:43:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217198-20201001171250.patch</filename>
            <type>text/plain</type>
            <size>23013</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZjYzQyMmJjOTdiZTAx
MDA0MTRlM2I4M2RlYmVkZDBiMTU2MGNmMy4uNDkwNjg4MzU3Y2ZkOGQxYThiMDI5Njk2ZDIzZjUy
ZmIyN2ZkYjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTEwLTAxICBKYW1l
cyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0
IEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMgV2ViR0wgZXh0ZW5zaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udmVydFRvSlNWYWx1ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0
ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmV4dGVuc2lvbklzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlRXh0ZW5zaW9ucyk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oOgorCiAyMDIwLTA5LTI4ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBPdXQtb2YtYmFu
ZCBUZXh0VHJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDJjZWYwYzdkYjVlZGZkYmNiMjZk
ZDk4NDM5MGEwNTlmNGIzOWZhNjcuLjhlNDRlNjZmN2QzZjcyYTM0NmQ4NDM0NmU3OGM4NDNlNjA1
MWU5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNDQ5LDYgKzE0NDksNyBAQCBpZiAoRU5B
QkxFX1dFQkdMKQogICAgICAgICBodG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmNwcAogICAgICAg
ICBodG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL0VYVFNo
YWRlclRleHR1cmVMT0QuY3BwCisgICAgICAgIGh0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVz
c2lvblJHVEMuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvRVhUc1JHQi5jcHAKICAgICAgICAgaHRtbC9j
YW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKQEAgLTE1MDcsNiArMTUwOCw3IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5p
ZGwKICAgICBodG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaWRsCiAgICAgaHRtbC9jYW52YXMvRVhU
U2hhZGVyVGV4dHVyZUxPRC5pZGwKKyAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmlkbAogICAgIGh0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5p
ZGwKICAgICBodG1sL2NhbnZhcy9FWFRzUkdCLmlkbAogICAgIGh0bWwvY2FudmFzL09FU0VsZW1l
bnRJbmRleFVpbnQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAppbmRleCAxODFlYTBmYjhiNTBiMDYyM2JlZmU2MjNkZjEyNjQ3ZGE4YjRkMmY3
Li42Nzk0ZTI2Yzg1NjQ2ZjlkNDViYTg3MjU1NTkwZGM2ZGIyNGU1ZGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkzMCw2ICs5MzAs
NyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5p
ZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsCiAkKFBST0pF
Q1RfRElSKS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaWRsCiAkKFBST0pFQ1RfRElSKS9odG1s
L2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmlkbAorJChQUk9KRUNUX0RJUikvaHRtbC9jYW52
YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvY2Fu
dmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwv
Y2FudmFzL0VYVHNSR0IuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9JbWFnZUJpdG1h
cFJlbmRlcmluZ0NvbnRleHQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDczNzMzZTY2NDg0ZDBmNmU0YjM4YTFlZjc3ZDMxYTI1
ZDU3ZDVmZDYuLjYzYzUyYWVlMTdkZDE1OWNhNmMwZGE5YjdjZTUxZDU5MjM3MjU1OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC02
NjAsNiArNjYwLDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNFWFRGcmFnRGVwdGguY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0VYVEZyYWdEZXB0aC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VYVFNoYWRlclRleHR1cmVMT0QuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFWFRUZXh0dXJl
Q29tcHJlc3Npb25SR1RDLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFWFRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNFWFRzUkdCLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggZTZiZGYzZTI1ZTk2MTRhMDhmMGEwZGU3YzcyYjk0ODY0ZDZhOTlmZC4uZjQ2OTI0NmJk
OWY0N2M0NGVkM2I3ODUxYTIzMmZjZmE5MDJmOTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC05NTAsNiArOTUwLDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2Vi
Q29yZSkvaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9F
WFRTaGFkZXJUZXh0dXJlTE9ELmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRU
ZXh0dXJlQ29tcHJlc3Npb25SR1RDLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9F
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2Fu
dmFzL0VYVHNSR0IuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0ltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4NWNhMDRhNmE4OThjNDQz
ZDE0ZDY4NjI0NzdiNzQ5ODY3NjA0ZmM5Li5hOTkyNjEwOGI5MzQwODk4YTdmNjBmNmY2ZmFhZTFh
MTVkOWQ2YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTI1MSw2ICsxMjUxLDcgQEAgaHRtbC9jYW52
YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCiBodG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5k
LmNwcAogaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcAogaHRtbC9jYW52YXMvRVhUU2hhZGVy
VGV4dHVyZUxPRC5jcHAKK2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3Bw
CiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwCiBodG1sL2NhbnZh
cy9FWFRzUkdCLmNwcAogaHRtbC9jYW52YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMjg1Miw2ICsyODUzLDcgQEAgSlNFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAK
IEpTRVhURmxvYXRCbGVuZC5jcHAKIEpTRVhURnJhZ0RlcHRoLmNwcAogSlNFWFRTaGFkZXJUZXh0
dXJlTE9ELmNwcAorSlNFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAogSlNFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuY3BwCiBKU0VYVHNSR0IuY3BwCiBKU0VjS2V5UGFyYW1zLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDc1ZjlkNTU4YTYyM2NlNTYwYjMxY2IyYmY3YzRiYjlhZDhkZTk5MjMuLjBhYzU4ZjJiYzc3
YWE2OThiMjc1OWZjYjRjNDIzMDEwNzg4ZGU2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMDc2LDYgKzEyMDc2LDkgQEAK
IAkJQTM3QTQyQ0UyNTFFQjk5NjAwRjc1QUZGIC8qIE9FU0ZCT1JlbmRlck1pcG1hcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPRVNGQk9SZW5kZXJNaXBtYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzdBNDJEMDI1MUVCOTk2MDBGNzVBRkYg
LyogT0VTRkJPUmVuZGVyTWlwbWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE9FU0ZCT1JlbmRlck1pcG1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzdB
NDJEMTI1MUVCOTk3MDBGNzVBRkYgLyogT0VTRkJPUmVuZGVyTWlwbWFwLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBPRVNGQk9SZW5kZXJNaXBtYXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMzdBNDJEODI1MjU1NzIwMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNz
aW9uUkdUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzN0E0MkRBMjUyNTU3MjAw
MEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzdBNDJEQjI1MjU1NzIxMDBGNzVBRkYgLyogRVhU
VGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUEzQUY5RDgxMjAzMjUyRUUwMDZDQUQwNiAvKiBVc2VyQWdlbnRDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudENvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNl
ckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJBZ2VudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4MzIwMzI1NjkxMDA2Q0FEMDYgLyog
VXNlckFnZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VXNlckFnZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzOTYsNiAr
MTkzOTksOSBAQAogCQkJCTcyN0FGRUQxMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmNwcCAq
LywKIAkJCQk3MjdBRkVEMjFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5oICovLAogCQkJCTcy
N0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmlkbCAqLywKKwkJCQlBMzdBNDJEQTI1
MjU1NzIwMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgKi8sCisJCQkJ
QTM3QTQyREIyNTI1NTcyMTAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCAq
LywKKwkJCQlBMzdBNDJEODI1MjU1NzIwMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5pZGwgKi8sCiAJCQkJNzcyODY5NEIxNEY4ODgyNTAwRjQ4NERDIC8qIEVYVFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYy5jcHAgKi8sCiAJCQkJNzcyODY5NEMxNEY4ODgyNTAwRjQ4NERDIC8q
IEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oICovLAogCQkJCTc3Mjg2OTREMTRGODg4MjUw
MEY0ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsICovLApAQCAtMjg0OTUs
MTAgKzI4NTAxLDYgQEAKIAkJRTRGQjRCMUUyMzk1MzU2RjAwM0MzMzZBIC8qIGludGVncmF0aW9u
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlFNEE2NjRD
NzI1MjFCNzc5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgKi8s
Ci0JCQkJRTRBNjY0QzYyNTIxQjc3ODAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRl
cmF0b3IuaCAqLywKLQkJCQlFNEE2NjRDNTI1MjFCNzc4MDA3MDgxREMgLyogTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCAqLywKLQkJCQlFNEE2NjRDNDI1MjFCNzc3MDA3
MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCAqLywKIAkJ
CQlFNDE4MDI1NjIzRDQ1NEI1MDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmNw
cCAqLywKIAkJCQlFNDE4MDI1MzIzRDQ1NDlBMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25C
b3hUcmVlLmggKi8sCiAJCQkJRTQwM0I3OUYyNTFCMTE4QjAwMTlFODAwIC8qIExheW91dEludGVn
cmF0aW9uQ292ZXJhZ2UuY3BwICovLApAQCAtMjg1MDcsNiArMjg1MDksMTAgQEAKIAkJCQlFNEFC
QUJEQjIzNjA4OEZEMDBGQTQzNDUgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggKi8s
CiAJCQkJRTQzMTJBQjUyNEIzMjY1NjAwNjc4MzQ5IC8qIExheW91dEludGVncmF0aW9uUGFnaW5h
dGlvbi5jcHAgKi8sCiAJCQkJRTQzMTJBQjcyNEIzMjY1NjAwNjc4MzQ5IC8qIExheW91dEludGVn
cmF0aW9uUGFnaW5hdGlvbi5oICovLAorCQkJCUU0QTY2NEM3MjUyMUI3NzkwMDcwODFEQyAvKiBM
YXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcCAqLywKKwkJCQlFNEE2NjRDNjI1MjFCNzc4
MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oICovLAorCQkJCUU0QTY2
NEM1MjUyMUI3NzgwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5
UGF0aC5oICovLAorCQkJCUU0QTY2NEM0MjUyMUI3NzcwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3Jh
dGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpbnRlZ3Jh
dGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMjQ0Nyw3ICszMjQ1Myw2IEBA
CiAJCQkJMDc5NjlEQjAxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDRFRNRlNlbmRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc5NjlEQjIxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDRFRNRlRvbmVD
aGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NjlEQjYxN0QxNDE1MTAwN0ZGODQy
IC8qIEpTUlRDSWNlQ2FuZGlkYXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEE2NjRDRTI1MjFE
NEM5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCBp
biBIZWFkZXJzICovLAogCQkJCTMxNkRDQjRDMUU3OTEwQTYwMDFCNUY4NyAvKiBKU1JUQ0ljZUNv
bm5lY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RENCNEUxRTc5MTBBNjAwMUI1
Rjg3IC8qIEpTUlRDSWNlR2F0aGVyaW5nU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mzc5
NEVDMTlFRTM0MUUwMEU1QTA0NSAvKiBKU1JUQ0ljZVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMjQ5Myw3ICszMjQ5OCw2IEBACiAJCQkJQjU5REQ2QTUxMTkwMkE2MjAwN0U5Njg0IC8qIEpT
U1FMU3RhdGVtZW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURENkE5MTE5MDJB
NzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDODI0MzJBMEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTFRyYW5zYWN0aW9uLmggaW4g
SGVhZGVycyAqLywKLQkJCQlFNEE2NjRDQzI1MjFENEFGMDA3MDgxREMgLyogTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2OUQxMTkwMkE0MjAw
N0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjU5REQ2QTExMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODY2MjlEMzA5REEyQjQ4MDA5NjMzQTcgLyogSlNTdGF0
aWNSYW5nZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjc4NSw2ICszMjc4OSw5IEBACiAJCQkJRTQw
M0I3QTIyNTFCMTE5MzAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uQ292ZXJhZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0QUJBQkREMjM2MDg4RkUwMEZBNDM0NSAvKiBMYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDNCN0EzMjUxQjExQzEwMDE5
RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUU0QTY2NENDMjUyMUQ0QUYwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEE2NjRDRjI1MjFENEUyMDA3MDgxREMgLyogTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovLAorCQkJCUU0
QTY2NENFMjUyMUQ0QzkwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9k
ZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8q
IExheW91dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkZBNEMwMTIzRjJGRUQ5MDA3
RTRFQkMgLyogTGF5b3V0TGluZUJyZWFrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJG
NjE1RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWlsZXN0b25lLmggaW4gSGVhZGVycyAqLywKQEAg
LTMyOTYzLDcgKzMyOTcwLDYgQEAKIAkJCQlDOTZGNUVDODFCNTg3MjI2MDA5MUVBOUQgLyogTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5NkY1
RUM1MUI1ODcyMjYwMDkxRUE5RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1h
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwRjY1NTYxQjIyNTNCRTAwMjE2M0ExIC8qIE1lZGlh
U2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0QTY2NENGMjUyMUQ0RTIwMDcw
ODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDE3RjdBRUYyMTM5QkY2RjAwRkJBN0VDIC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2MzhBOTkxODg0NDg3MjAwRTE1QTFCIC8q
IE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5RDg1MUYwMUIz
OURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKaW5k
ZXggZDQ3MGQwMDhhNDlkNDBhM2U3YWJjYmE0ZTI2ZTQ1MzY0N2FmMzAxZS4uM2QzMDY2MzExMDQ2
YTc2MDcwNDEyOTlkMTNlOGFmNzU1ZmEyNjRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkpTRVhURmxvYXRCbGVuZC5oIgogI2luY2x1ZGUgIkpTRVhURnJhZ0RlcHRoLmgiCiAjaW5j
bHVkZSAiSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmgiCisjaW5jbHVkZSAiSlNFWFRUZXh0dXJlQ29t
cHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiSlNFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMu
aCIKICNpbmNsdWRlICJKU0VYVHNSR0IuaCIKICNpbmNsdWRlICJKU09FU0VsZW1lbnRJbmRleFVp
bnQuaCIKQEAgLTE3MSw2ICsxNzIsOCBAQCBKU1ZhbHVlIGNvbnZlcnRUb0pTVmFsdWUoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JgogICAgICAg
ICByZXR1cm4gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8V2ViR0xMb3NlQ29udGV4dCY+KGV4dGVuc2lvbikpOwogICAgIGNhc2UgV2ViR0xFeHRl
bnNpb246OkVYVFNoYWRlclRleHR1cmVMT0ROYW1lOgogICAgICAgICByZXR1cm4gdG9KUygmbGV4
aWNhbEdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RVhUU2hhZGVyVGV4
dHVyZUxPRCY+KGV4dGVuc2lvbikpOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OkVYVFRleHR1
cmVDb21wcmVzc2lvblJHVENOYW1lOgorICAgICAgICByZXR1cm4gdG9KUygmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgJmdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQyY+KGV4dGVuc2lvbikpOwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OkVYVFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpY05hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxFWFRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMmPihleHRlbnNpb24pKTsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpFWFRzUkdCTmFt
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggNzUzMjUyOWVhNGUzNzYyMmQ5MjkwMDQwMDhkMzZmM2VmNzAyYTM5
ZS4uZjRkOWI2MTMxOWQ2MGEzZjRmNjFjM2ZiNTQzYjhjZWQyYmMyZjcwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFWFRDb2xvckJ1ZmZlckZsb2F0LmgiCiAjaW5j
bHVkZSAiRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaCIKICNpbmNsdWRlICJFWFRGbG9hdEJsZW5k
LmgiCisjaW5jbHVkZSAiRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oIgogI2luY2x1ZGUgIkVY
VFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTC5oIgpAQCAtMjY3NSw2ICsyNjc2LDcgQEAgV2ViR0xFeHRlbnNp
b24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgICAgIHJldHVybiB2YXJpYWJsZS5nZXQoKTsgXAogICAgIH0KIAorICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQywgbV9leHRUZXh0dXJlQ29t
cHJlc3Npb25SR1RDLCAiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIsIGVuYWJsZVN1cHBv
cnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJfcykpOwogICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIs
IGVuYWJsZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJv
cGljIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXQsIG1fb2Vz
VGV4dHVyZUZsb2F0LCAiT0VTX3RleHR1cmVfZmxvYXQiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNp
b24oIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChP
RVNUZXh0dXJlRmxvYXRMaW5lYXIsIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyLCAiT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdF9saW5lYXIiX3MpKTsKQEAgLTI3MTYsNiArMjcxOCw4IEBAIE9wdGlvbmFsPFZlY3Rv
cjxTdHJpbmc+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25z
KCkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiAg
ICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGlu
ZWFyIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9s
aW5lYXIiX3MpOworICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIl9zKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyJfcyk7CiAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAgICAgaWYgKFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKaW5kZXggYTc4ZWYxNWIzOTEyMjYwZDFhMDRmYjA0YjI5
Y2MyMWYwOTEzMzRkMS4uNDQwZDRiOTU0Nzk0MzNjZmZlMTliMmFlNjE0NWFkMDk5ODViNmJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCkBAIC00MSw2
ICs0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgRVhUQmxlbmRNaW5NYXhOYW1lLAogICAgICAgICBF
WFRGcmFnRGVwdGhOYW1lLAogICAgICAgICBFWFRTaGFkZXJUZXh0dXJlTE9ETmFtZSwKKyAgICAg
ICAgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQ05hbWUsCiAgICAgICAgIEVYVFRleHR1cmVGaWx0
ZXJBbmlzb3Ryb3BpY05hbWUsCiAgICAgICAgIEVYVHNSR0JOYW1lLAogICAgICAgICBPRVNUZXh0
dXJlRmxvYXROYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYmY3OWRkZWFmYjNjOTdmOTgyNWI2YjZhOTMyYzQw
Mjg5ZTVkMzIxOS4uNGU2NGE4NzBlYTk3ODhlMTRkYzc0ZGM3MTVjOTRhOTRmYmM1MTQ2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRVhURmxvYXRCbGVuZC5oIgogI2lu
Y2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgogI2luY2x1ZGUgIkVYVFNoYWRlclRleHR1cmVMT0QuaCIK
KyNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgogI2luY2x1ZGUg
IkV4dGVuc2lvbnNHTC5oIgpAQCAtMTUzLDYgKzE1NCw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgIHJldHVybiBtX2V4dFNoYWRlclRleHR1cmVMT0QuZ2V0KCk7CiAgICAgfQogICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYywgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9z
KSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBt
X2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3Rj
IiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9y
Z3RjIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNTdGFuZGFyZERlcml2YXRpdmVz
LCBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMsICJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiLCBl
bmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJfcykp
OwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0LCBtX29lc1RleHR1cmVG
bG9hdCwgIk9FU190ZXh0dXJlX2Zsb2F0IiwgT0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQoKnRo
aXMpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9v
ZXNUZXh0dXJlRmxvYXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVT
dXBwb3J0ZWRFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwpAQCAt
MjMwLDYgKzIzMiw4IEBAIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJP
RVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiX3MpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykgfHwgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2Qi
X3MpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsK
KyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKTsKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7
CiAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdmVy
dGV4X2FycmF5X29iamVjdCJfcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDA0NWQ2YTZiZjkxNmU1
YWYzYmEwMjlhMWI0NjU2ZjkzNWQxMGE1ZTAuLmVlYzUzOTY4ZDJjZjhmMDA0NjcxOGUyZDAzMDky
ZDU3NzAyYzhhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk
ZSAiRVhURmxvYXRCbGVuZC5oIgogI2luY2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgogI2luY2x1ZGUg
IkVYVFNoYWRlclRleHR1cmVMT0QuaCIKKyNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVk
ZSAiRVhUc1JHQi5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTM3MTQsNiArMzcxNSw3
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVkKGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICBDSEVDS19FWFRFTlNJT04obV9leHRGcmFnRGVwdGgsICJF
WFRfZnJhZ19kZXB0aCIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dEJsZW5kTWluTWF4LCAi
RVhUX2JsZW5kX21pbm1heCIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dHNSR0IsICJFWFRf
c1JHQiIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEMs
ICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIik7CiAgICAgQ0hFQ0tfRVhURU5TSU9OKG1f
ZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJv
cGljIik7CiAgICAgQ0hFQ0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
LCAiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwogICAgIENIRUNLX0VY
VEVOU0lPTihtX2V4dFNoYWRlclRleHR1cmVMT0QsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7
CkBAIC02NzMwLDYgKzY3MzIsMjYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAg
Ynl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkLnVuc2FmZUdldCgpOwogICAgICAg
ICBicmVhazsKICAgICB9CisgICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVEX1JH
VEMxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JH
VEMxX0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CisgICAgICAgIGNv
bnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQg
PSA0OworICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGgg
LSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICBpbnQgbnVtQmxvY2tzRG93biA9IChoZWlnaHQg
KyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAgICAgYnl0ZXNSZXF1aXJl
ZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXplOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVEX0dS
RUVOX1JHVEMyX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURf
UkVEX0dSRUVOX1JHVEMyX0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2
OworICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgaW50IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCAr
IGtCbG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0aDsKKyAgICAgICAgaW50IG51bUJsb2Nrc0Rv
d24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAg
IGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duICoga0Jsb2Nr
U2l6ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFt
ZSwgImludmFsaWQgZm9ybWF0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc3ODQsNiAr
NzgwNiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUV4dGVuc2lvbnMo
TG9zdENvbnRleHRNb2RlIG1vZGUpCiAgICAgTE9TRV9FWFRFTlNJT04obV9leHRGcmFnRGVwdGgp
OwogICAgIExPU0VfRVhURU5TSU9OKG1fZXh0QmxlbmRNaW5NYXgpOwogICAgIExPU0VfRVhURU5T
SU9OKG1fZXh0c1JHQik7CisgICAgTE9TRV9FWFRFTlNJT04obV9leHRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDKTsKICAgICBMT1NFX0VYVEVOU0lPTihtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
Yyk7CiAgICAgTE9TRV9FWFRFTlNJT04obV9leHRTaGFkZXJUZXh0dXJlTE9EKTsKICAgICBMT1NF
X0VYVEVOU0lPTihtX29lc1RleHR1cmVGbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggN2IyMTg2NzJh
YzU2NTI4ODRmYmQ3MTY4NmVkMjdlMDg2ODYxNTc3MC4uMjA2YWNlMzU1MGFiOWExNjMxYzUzNTM2
NGZhYzE5MjNmODU1ZWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBF
WFRCbGVuZE1pbk1heDsKIGNsYXNzIEVYVENvbG9yQnVmZmVyRmxvYXQ7CiBjbGFzcyBFWFRDb2xv
ckJ1ZmZlckhhbGZGbG9hdDsKIGNsYXNzIEVYVEZsb2F0QmxlbmQ7CitjbGFzcyBFWFRUZXh0dXJl
Q29tcHJlc3Npb25SR1RDOwogY2xhc3MgRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOwogY2xh
c3MgRVhUU2hhZGVyVGV4dHVyZUxPRDsKIGNsYXNzIEVYVHNSR0I7CkBAIC00MjgsNiArNDI5LDcg
QEAgcHJvdGVjdGVkOgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYs
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uo
Q2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgV2ViR0xDb250ZXh0
QXR0cmlidXRlcyk7CiAKKyAgICBmcmllbmQgY2xhc3MgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdU
QzsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xEcmF3QnVmZmVyczsKICAgICBmcmllbmQgY2xhc3Mg
V2ViR0xGcmFtZWJ1ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CkBAIC02Njks
NiArNjcxLDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxFWFRGcmFnRGVwdGg+IG1fZXh0RnJh
Z0RlcHRoOwogICAgIFJlZlB0cjxFWFRCbGVuZE1pbk1heD4gbV9leHRCbGVuZE1pbk1heDsKICAg
ICBSZWZQdHI8RVhUc1JHQj4gbV9leHRzUkdCOworICAgIFJlZlB0cjxFWFRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDPiBtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEM7CiAgICAgUmVmUHRyPEVYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4gbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM7CiAg
ICAgUmVmUHRyPEVYVFNoYWRlclRleHR1cmVMT0Q+IG1fZXh0U2hhZGVyVGV4dHVyZUxPRDsKICAg
ICBSZWZQdHI8T0VTVGV4dHVyZUZsb2F0PiBtX29lc1RleHR1cmVGbG9hdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYzA3YjNjMDA1
ZjQyYjljZjczYmZhMDYxNzYxODU4ZDU1Njk3MTRmNy4uMGY1ZGJiYWJmYjE0OGRmMGFkMjMyN2Uw
NGVkMzEwZmQ3MThlMWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTIxOSw2ICsyMTksMTIgQEAgcHVibGljOgogICAgICAgICBD
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4OTNEQywKICAgICAgICAg
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQsCiAKKyAgICAg
ICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YworICAgICAgICBDT01QUkVTU0VE
X1JFRF9SR1RDMV9FWFQgPSAweDhEQkIsCisgICAgICAgIENPTVBSRVNTRURfU0lHTkVEX1JFRF9S
R1RDMV9FWFQgPSAweDhEQkMsCisgICAgICAgIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VY
VCA9IDB4OERCRCwKKyAgICAgICAgQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VY
VCA9IDB4OERCRSwKKwogICAgICAgICAvLyBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMKICAgICAgICAgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkUsCiAgICAgICAg
IE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410383</attachid>
            <date>2020-10-02 15:43:09 -0700</date>
            <delta_ts>2020-10-06 15:35:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217198-20201002154309.patch</filename>
            <type>text/plain</type>
            <size>46757</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzliNjBmZTYxMDYyMzI1
ODgzYzYwZTcyM2FiNDVkMWFmMjllOTI0MC4uZWIxODk5ZDRiMTgxMTNhZGZjNjRhMzEzYmY5MWYx
Yzc4OGFjNWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTEwLTAyICBKYW1l
cyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0
IEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMgV2ViR0wgZXh0ZW5zaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiB3ZWJnbC9jb25mb3Jt
YW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRtbAorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9KU1ZhbHVlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKToKKyAgICAgICAgKFdlYkNvcmU6OkVYVFRl
eHR1cmVDb21wcmVzc2lvblJHVEM6OmdldE5hbWUgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaDogQWRkZWQuCisgICAgICAgICogaHRtbC9j
YW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpleHRlbnNpb25Jc0VuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVu
Y0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9z
ZUV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaDoKKwog
MjAyMC0wOS0zMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBBZGQgbm9uLWFuaW1hdGVkIHN1cHBvcnQgZm9yIHRoZSBDU1MgdHJhbnNsYXRlIHByb3BlcnR5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDE5NDM4MDIzYzQzNThiMDYwNjEwM2M2NWM0N2Q1ODlm
N2VlNWMzNGMuLjk0YWI1OTgxNDNjMWJiMjhmZjJkZWEwYTAyN2RkYTc1NGM1ZWZjMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0xNDQ4LDYgKzE0NDgsNyBAQCBpZiAoRU5BQkxFX1dFQkdMKQog
ICAgICAgICBodG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmNwcAogICAgICAgICBodG1sL2NhbnZh
cy9FWFRGcmFnRGVwdGguY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVM
T0QuY3BwCisgICAgICAgIGh0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3Bw
CiAgICAgICAgIGh0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAKICAg
ICAgICAgaHRtbC9jYW52YXMvRVhUc1JHQi5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvT0VTRWxl
bWVudEluZGV4VWludC5jcHAKQEAgLTE1MDYsNiArMTUwNyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5pZGwKICAgICBodG1s
L2NhbnZhcy9FWFRGcmFnRGVwdGguaWRsCiAgICAgaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVy
ZUxPRC5pZGwKKyAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmlkbAog
ICAgIGh0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwKICAgICBodG1s
L2NhbnZhcy9FWFRzUkdCLmlkbAogICAgIGh0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQu
aWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApp
bmRleCBhOGRjZjk2OTgyYTQwODI5OTc0NTgyNTgzNGI3MTYwYjQ1ZDI3ZjVmLi4wNjg1YzVhMjk0
ZGQ2MDUyMWExMDVjYTBlNTY1NjcwYTU4ZWZjMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkzMiw2ICs5MzIsNyBAQCAkKFBST0pF
Q1RfRElSKS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5pZGwKICQoUFJPSkVD
VF9ESVIpL2h0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1s
L2NhbnZhcy9FWFRGcmFnRGVwdGguaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRT
aGFkZXJUZXh0dXJlTE9ELmlkbAorJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvRVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL0VYVFRleHR1
cmVGaWx0ZXJBbmlzb3Ryb3BpYy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL0VYVHNS
R0IuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CmluZGV4IDM2Nzk1ZWE0MTMzOGVkZGE4NGFkMjgzNGY2ODhkZWQzMjA0ZGUwZDguLjc3
OTkwMGY4YzI0NzNiNDFlZjlkZGQ0ZDRmODJiMDMwYzc5MDQ3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC02NzEsNiArNjcxLDgg
QEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFWFRGcmFn
RGVwdGguY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0VYVEZyYWdEZXB0aC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VYVFNoYWRlclRleHR1cmVMT0QuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFWFRUZXh0dXJlRmlsdGVy
QW5pc290cm9waWMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNFWFRzUkdCLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMmMxYzEw
ODlhZDVhYjZiNzU5ZjUwNmRjMWFlOTAzY2ZmMjA2MDZmNi4uZjRjZWM4NjQ2MmMzMmQwYmQ5ZTdh
NmE4OWQ0NTRkZjcyMWQ2MWVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC05
NTEsNiArOTUxLDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvRVhURmxvYXRCbGVuZC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhU
RnJhZ0RlcHRoLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0
dXJlTE9ELmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmls
dGVyQW5pc290cm9waWMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0VYVHNSR0Iu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBjN2VjZmRkMTU1YzUyODBkNTg1NGJmYjUyYmVi
ZWEwMjg0YWRiN2EzLi42ZDNhM2U1MTAwM2M0MTQ0NGRmNmMxNTFlZGRlNmU0ODdhMjVjNzcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTI1NSw2ICsxMjU1LDcgQEAgaHRtbC9jYW52YXMvRVhUQ29sb3JC
dWZmZXJIYWxmRmxvYXQuY3BwCiBodG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmNwcAogaHRtbC9j
YW52YXMvRVhURnJhZ0RlcHRoLmNwcAogaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5j
cHAKK2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwCiBodG1sL2NhbnZh
cy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwCiBodG1sL2NhbnZhcy9FWFRzUkdCLmNw
cAogaHRtbC9jYW52YXMvR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjg2
Myw2ICsyODY0LDcgQEAgSlNFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKIEpTRVhURmxvYXRC
bGVuZC5jcHAKIEpTRVhURnJhZ0RlcHRoLmNwcAogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmNwcAor
SlNFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAogSlNFWFRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMuY3BwCiBKU0VYVHNSR0IuY3BwCiBKU0VjS2V5UGFyYW1zLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNhMDBmOWUw
YTI2YmYyMWE4YmNjOWZmNTUxMDIyZjc0Nzk4MTIwZGQuLjFiOGYxYjNjYjZmYmMwNjJhYTc0ZTdm
ZmNiODMyZDUwODg3MDM4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTEzLDYgKzEyMTEzLDkgQEAKIAkJQTM3QTQyQ0Uy
NTFFQjk5NjAwRjc1QUZGIC8qIE9FU0ZCT1JlbmRlck1pcG1hcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPRVNGQk9SZW5kZXJNaXBtYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMzdBNDJEMDI1MUVCOTk2MDBGNzVBRkYgLyogT0VTRkJPUmVu
ZGVyTWlwbWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9FU0ZCT1JlbmRl
ck1pcG1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzdBNDJEMTI1MUVCOTk3
MDBGNzVBRkYgLyogT0VTRkJPUmVuZGVyTWlwbWFwLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBPRVNGQk9SZW5kZXJNaXBtYXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MzdBNDJFMDI1MjdCNDlDMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRUZXh0dXJlQ29tcHJlc3Np
b25SR1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTM3QTQyRTIyNTI3QjQ5
RDAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMzdBNDJFMzI1MjdCNDlFMDBGNzVBRkYgLyogRVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUVGV4dHVyZUNv
bXByZXNzaW9uUkdUQy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQUY5RDgx
MjAzMjUyRUUwMDZDQUQwNiAvKiBVc2VyQWdlbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBM0FGOUQ4MjIwMzI1MzI0MDA2Q0FEMDYgLyogVXNlckFnZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBM0FGOUQ4MzIwMzI1NjkxMDA2Q0FEMDYgLyogVXNlckFnZW50SU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckFnZW50SU9T
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzOTMsNiArMTkzOTYsOSBAQAog
CQkJCTcyN0FGRUQxMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmNwcCAqLywKIAkJCQk3MjdB
RkVEMjFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5oICovLAogCQkJCTcyN0FGRUQzMUEyRUE2
QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmlkbCAqLywKKwkJCQlBMzdBNDJFMDI1MjdCNDlDMDBGNzVB
RkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgKi8sCisJCQkJQTM3QTQyRTIyNTI3
QjQ5RDAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCAqLywKKwkJCQlBMzdB
NDJFMzI1MjdCNDlFMDBGNzVBRkYgLyogRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwgKi8s
CiAJCQkJNzcyODY5NEIxNEY4ODgyNTAwRjQ4NERDIC8qIEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5jcHAgKi8sCiAJCQkJNzcyODY5NEMxNEY4ODgyNTAwRjQ4NERDIC8qIEVYVFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYy5oICovLAogCQkJCTc3Mjg2OTREMTRGODg4MjUwMEY0ODREQyAvKiBF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCmluZGV4IGQ0NzBkMDA4YTQ5ZDQwYTNl
N2FiY2JhNGUyNmU0NTM2NDdhZjMwMWUuLjNkMzA2NjMxMTA0NmE3NjA3MDQxMjk5ZDEzZThhZjc1
NWZhMjY0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFdlYkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnRXZWJHTC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU0VYVEZsb2F0QmxlbmQu
aCIKICNpbmNsdWRlICJKU0VYVEZyYWdEZXB0aC5oIgogI2luY2x1ZGUgIkpTRVhUU2hhZGVyVGV4
dHVyZUxPRC5oIgorI2luY2x1ZGUgIkpTRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oIgogI2lu
Y2x1ZGUgIkpTRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiSlNFWFRz
UkdCLmgiCiAjaW5jbHVkZSAiSlNPRVNFbGVtZW50SW5kZXhVaW50LmgiCkBAIC0xNzEsNiArMTcy
LDggQEAgSlNWYWx1ZSBjb252ZXJ0VG9KU1ZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCYKICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGlj
YWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMTG9zZUNvbnRl
eHQmPihleHRlbnNpb24pKTsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpFWFRTaGFkZXJUZXh0
dXJlTE9ETmFtZToKICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEVYVFNoYWRlclRleHR1cmVMT0QmPihleHRlbnNpb24p
KTsKKyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDTmFt
ZToKKyAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmpl
Y3QsIHN0YXRpY19jYXN0PEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMmPihleHRlbnNpb24pKTsK
ICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWNOYW1l
OgogICAgICAgICByZXR1cm4gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVj
dCwgc3RhdGljX2Nhc3Q8RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljJj4oZXh0ZW5zaW9uKSk7
CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUc1JHQk5hbWU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBhOWI1Nzg2ODYzOTE0NmVlMmQxYjMyYWEyMTg1YzZhNTY5ZTQ4ZWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIkVYVFRleHR1cmVDb21wcmVzc2lvblJH
VEMuaCIKKworI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEVYVFRleHR1cmVDb21wcmVz
c2lvblJHVEMpOworCitFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpFWFRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCisgICAgOiBXZWJH
TEV4dGVuc2lvbihjb250ZXh0KQoreworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X3JndGMiKTsKKworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdU
QzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVE
X0dSRUVOX1JHVEMyX0VYVCk7Cit9CisKK0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEM6On5FWFRU
ZXh0dXJlQ29tcHJlc3Npb25SR1RDKCkgPSBkZWZhdWx0OworCitXZWJHTEV4dGVuc2lvbjo6RXh0
ZW5zaW9uTmFtZSBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpnZXROYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQ05hbWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODgzZDkzYmNhMWIxOGQzNzE3ZWZlYzllNDM1N2M0YzQ4YmJlMmM0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNz
aW9uUkdUQy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRVhU
VGV4dHVyZUNvbXByZXNzaW9uUkdUQyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7Cisg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKTsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmKTsKKyAgICB2aXJ0dWFsIH5FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RD
KCk7CisKKyAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNmOTYw
MzVmNmI5MjQ4Y2YwMTc5NWIxODgwNzRiNzU3NTYyZDU2MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR0wsCisgICAgR2Vu
ZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0LAorICAgIExlZ2FjeU5v
SW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyB7
CisgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQgPSAweDhE
QkI7CisgICAgY29uc3QgdW5zaWduZWQgbG9uZyBDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFf
RVhUID0gMHg4REJDOworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SRURfR1JF
RU5fUkdUQzJfRVhUID0gMHg4REJEOworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NF
RF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRTsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IDdkNGI1OGZkZTUwNWIyNzI4MGJlMzBlNGE4MDhjNGFiMmEzNTNmOGYuLmI1ZmNmOTNkODcyYWFl
MzVjYzhjYjY4NmM4Njk0YTVmZTZhZTMzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRVhUQ29sb3JCdWZmZXJGbG9hdC5oIgogI2luY2x1ZGUgIkVYVENvbG9yQnVm
ZmVySGFsZkZsb2F0LmgiCiAjaW5jbHVkZSAiRVhURmxvYXRCbGVuZC5oIgorI2luY2x1ZGUgIkVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKICNpbmNsdWRlICJFWFRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWMuaCIKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeHRlbnNpb25z
R0wuaCIKQEAgLTI2NzEsNiArMjY3Miw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1
cm4gdmFyaWFibGUuZ2V0KCk7IFwKICAgICB9CiAKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMsIG1fZXh0VGV4dHVyZUNvbXByZXNzaW9uUkdUQywgIkVY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiLCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oIkdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiLCBlbmFibGVTdXBwb3J0ZWRF
eHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpOwogICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0TGluZWFyLCBtX29lc1RleHR1cmVGbG9h
dExpbmVhciwgIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIsIGVuYWJsZVN1cHBvcnRlZEV4dGVu
c2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JF
UVVFU1RFRChXZWJHTExvc2VDb250ZXh0LCBtX3dlYmdsTG9zZUNvbnRleHQsICJXRUJHTF9sb3Nl
X2NvbnRleHQiLCB0cnVlKTsKQEAgLTI3MDMsNiArMjcwNSw4IEBAIE9wdGlvbmFsPFZlY3RvcjxT
dHJpbmc+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkK
ICAgICBhdXRvJiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CiAgICAg
aWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcyk7Cisg
ICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3Jn
dGMiX3MpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9y
Z3RjIl9zKTsKICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVf
ZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKICAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFT
VEM6OnN1cHBvcnRlZCgqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uaAppbmRleCBhNzhlZjE1YjM5MTIyNjBkMWEwNGZiMDRiMjljYzIxZjA5MTMzNGQx
Li40NDBkNGI5NTQ3OTQzM2NmZmUxOWIyYWU2MTQ1YWQwOTk4NWI2YmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVi
bGljOgogICAgICAgICBFWFRCbGVuZE1pbk1heE5hbWUsCiAgICAgICAgIEVYVEZyYWdEZXB0aE5h
bWUsCiAgICAgICAgIEVYVFNoYWRlclRleHR1cmVMT0ROYW1lLAorICAgICAgICBFWFRUZXh0dXJl
Q29tcHJlc3Npb25SR1RDTmFtZSwKICAgICAgICAgRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
TmFtZSwKICAgICAgICAgRVhUc1JHQk5hbWUsCiAgICAgICAgIE9FU1RleHR1cmVGbG9hdE5hbWUs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAppbmRleCBhYWI5MGY5Mjk1MmNhNjEzOWUxYmEyOTc0MjlmYjMzZWY2NzQ1NDVmLi4z
NTU2NmViOGRhNTdlN2UzNjJiODQwZmU4NjRmMzU5MTc2NmQyYjA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFWFRGbG9hdEJsZW5kLmgiCiAjaW5jbHVkZSAiRVhURnJh
Z0RlcHRoLmgiCiAjaW5jbHVkZSAiRVhUU2hhZGVyVGV4dHVyZUxPRC5oIgorI2luY2x1ZGUgIkVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKICNpbmNsdWRlICJFWFRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWMuaCIKICNpbmNsdWRlICJFWFRzUkdCLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dM
LmgiCkBAIC0xNTMsNiArMTU0LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIG1f
ZXh0U2hhZGVyVGV4dHVyZUxPRC5nZXQoKTsKICAgICB9CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RF
RChFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVkRXh0
ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKKyAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMsIG1fZXh0VGV4dHVyZUNv
bXByZXNzaW9uUkdUQywgIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiLCBlbmFibGVTdXBw
b3J0ZWRFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiX3MpKTsKICAg
ICBFTkFCTEVfSUZfUkVRVUVTVEVEKE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMsIG1fb2VzU3RhbmRh
cmREZXJpdmF0aXZlcywgIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIsIGVuYWJsZVN1cHBvcnRl
ZEV4dGVuc2lvbigiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIl9zKSk7CiAgICAgRU5BQkxF
X0lGX1JFUVVFU1RFRChPRVNUZXh0dXJlRmxvYXQsIG1fb2VzVGV4dHVyZUZsb2F0LCAiT0VTX3Rl
eHR1cmVfZmxvYXQiLCBPRVNUZXh0dXJlRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOwogICAgIEVO
QUJMRV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0TGluZWFyLCBtX29lc1RleHR1cmVGbG9h
dExpbmVhciwgIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIsIGVuYWJsZVN1cHBvcnRlZEV4dGVu
c2lvbigiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIl9zKSk7CkBAIC0yMzEsNiArMjMzLDgg
QEAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19zdGFuZGFyZF9k
ZXJpdmF0aXZlcyJfcyk7CiAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKSB8fCBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykpCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOworICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fcmd0YyJfcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3JndGMiX3MpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKICAgICBpZiAobV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0Il9zKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDQ1ZDZhNmJmOTE2ZTVhZjNiYTAyOWExYjQ2
NTZmOTM1ZDEwYTVlMC4uZWVjNTM5NjhkMmNmOGYwMDQ2NzE4ZTJkMDMwOTJkNTc3MDJjOGExMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJFWFRGbG9hdEJs
ZW5kLmgiCiAjaW5jbHVkZSAiRVhURnJhZ0RlcHRoLmgiCiAjaW5jbHVkZSAiRVhUU2hhZGVyVGV4
dHVyZUxPRC5oIgorI2luY2x1ZGUgIkVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKICNpbmNs
dWRlICJFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCIKICNpbmNsdWRlICJFWFRzUkdCLmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtMzcxNCw2ICszNzE1LDcgQEAgYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpleHRlbnNpb25Jc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dEZyYWdEZXB0aCwgIkVYVF9mcmFnX2RlcHRo
Iik7CiAgICAgQ0hFQ0tfRVhURU5TSU9OKG1fZXh0QmxlbmRNaW5NYXgsICJFWFRfYmxlbmRfbWlu
bWF4Iik7CiAgICAgQ0hFQ0tfRVhURU5TSU9OKG1fZXh0c1JHQiwgIkVYVF9zUkdCIik7CisgICAg
Q0hFQ0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUNvbXByZXNzaW9uUkdUQywgIkVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiKTsKICAgICBDSEVDS19FWFRFTlNJT04obV9leHRUZXh0dXJlRmls
dGVyQW5pc290cm9waWMsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKICAgICBD
SEVDS19FWFRFTlNJT04obV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsICJXRUJLSVRfRVhU
X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CiAgICAgQ0hFQ0tfRVhURU5TSU9OKG1fZXh0
U2hhZGVyVGV4dHVyZUxPRCwgIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKQEAgLTY3MzAsNiAr
NjczMiwyNiBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aQogICAgICAgICBieXRlc1JlcXVpcmVk
ID0gY2hlY2tlZEJ5dGVzUmVxdWlyZWQudW5zYWZlR2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KKyAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUOgorICAg
IGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOiB7Cisg
ICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gODsKKyAgICAgICAgY29uc3QgaW50IGtCbG9j
a1dpZHRoID0gNDsKKyAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAg
IGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGggKyBrQmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2Nr
V2lkdGg7CisgICAgICAgIGludCBudW1CbG9ja3NEb3duID0gKGhlaWdodCArIGtCbG9ja0hlaWdo
dCAtIDEpIC8ga0Jsb2NrSGVpZ2h0OworICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVtQmxvY2tz
QWNyb3NzICogbnVtQmxvY2tzRG93biAqIGtCbG9ja1NpemU7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
OgorICAgIGNhc2UgRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdU
QzJfRVhUOiB7CisgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7CisgICAgICAgIGNv
bnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQg
PSA0OworICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGgg
LSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICBpbnQgbnVtQmxvY2tzRG93biA9IChoZWlnaHQg
KyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAgICAgYnl0ZXNSZXF1aXJl
ZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXplOworICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBm
b3JtYXQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzc4NCw2ICs3ODA2LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlRXh0ZW5zaW9ucyhMb3N0Q29udGV4dE1v
ZGUgbW9kZSkKICAgICBMT1NFX0VYVEVOU0lPTihtX2V4dEZyYWdEZXB0aCk7CiAgICAgTE9TRV9F
WFRFTlNJT04obV9leHRCbGVuZE1pbk1heCk7CiAgICAgTE9TRV9FWFRFTlNJT04obV9leHRzUkdC
KTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEMpOwogICAg
IExPU0VfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKTsKICAgICBMT1NF
X0VYVEVOU0lPTihtX2V4dFNoYWRlclRleHR1cmVMT0QpOwogICAgIExPU0VfRVhURU5TSU9OKG1f
b2VzVGV4dHVyZUZsb2F0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCA3YjIxODY3MmFjNTY1Mjg4NGZiZDcx
Njg2ZWQyN2UwODY4NjE1NzcwLi4yMDZhY2UzNTUwYWI5YTE2MzFjNTM1MzY0ZmFjMTkyM2Y4NTVl
YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oCkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIEVYVEJsZW5kTWluTWF4
OwogY2xhc3MgRVhUQ29sb3JCdWZmZXJGbG9hdDsKIGNsYXNzIEVYVENvbG9yQnVmZmVySGFsZkZs
b2F0OwogY2xhc3MgRVhURmxvYXRCbGVuZDsKK2NsYXNzIEVYVFRleHR1cmVDb21wcmVzc2lvblJH
VEM7CiBjbGFzcyBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM7CiBjbGFzcyBFWFRTaGFkZXJU
ZXh0dXJlTE9EOwogY2xhc3MgRVhUc1JHQjsKQEAgLTQyOCw2ICs0MjksNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiwgV2ViR0xDb250ZXh0
QXR0cmlidXRlcyk7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShDYW52YXNCYXNlJiwg
UmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiYmLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKTsK
IAorICAgIGZyaWVuZCBjbGFzcyBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJHTERyYXdCdWZmZXJzOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTEZyYW1lYnVm
ZmVyOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTE9iamVjdDsKQEAgLTY2OSw2ICs2NzEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEVYVEZyYWdEZXB0aD4gbV9leHRGcmFnRGVwdGg7CiAgICAg
UmVmUHRyPEVYVEJsZW5kTWluTWF4PiBtX2V4dEJsZW5kTWluTWF4OwogICAgIFJlZlB0cjxFWFRz
UkdCPiBtX2V4dHNSR0I7CisgICAgUmVmUHRyPEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEM+IG1f
ZXh0VGV4dHVyZUNvbXByZXNzaW9uUkdUQzsKICAgICBSZWZQdHI8RVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljPiBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYzsKICAgICBSZWZQdHI8RVhU
U2hhZGVyVGV4dHVyZUxPRD4gbV9leHRTaGFkZXJUZXh0dXJlTE9EOwogICAgIFJlZlB0cjxPRVNU
ZXh0dXJlRmxvYXQ+IG1fb2VzVGV4dHVyZUZsb2F0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaAppbmRleCBjMDdiM2MwMDVmNDJiOWNmNzNiZmEw
NjE3NjE4NThkNTU2OTcxNGY3Li4wZjVkYmJhYmZiMTQ4ZGYwYWQyMzI3ZTA0ZWQzMTBmZDcxOGUx
ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25z
R0wuaApAQCAtMjE5LDYgKzIxOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIENPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSID0gMHg5M0RDLAogICAgICAgICBDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiA9IDB4OTNERCwKIAorICAgICAgICAvLyBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCisgICAgICAgIENPTVBSRVNTRURfUkVEX1JHVEMxX0VY
VCA9IDB4OERCQiwKKyAgICAgICAgQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCA9IDB4
OERCQywKKyAgICAgICAgQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJELAor
ICAgICAgICBDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUID0gMHg4REJFLAor
CiAgICAgICAgIC8vIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgICAgICBU
RVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRSwKICAgICAgICAgTUFYX1RFWFRVUkVf
TUFYX0FOSVNPVFJPUFlfRVhUID0gMHg4NEZGLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU4ZGYxYjFjNmY1YzQyM2Y4ZTUy
ZGEwOGE0M2QxN2UxNTQ3OWZlZTguLmUwY2VhYTg4NmYwZTMyZGRhOGMyZThjNWMwYzYwZTA0ZGRl
MzFmYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0xMC0wMiAgSmFtZXMgRGFycGluaWFu
ICA8amRhcnBpbmlhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBFWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9yZ3RjIFdlYkdMIGV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25z
L2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9u
LXJndGMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3Rj
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2pzL3Rlc3RzL2NvbXByZXNzZWQtdGV4dHVyZS11dGlscy5qczogQWRkZWQuCisKIDIwMjAtMDkt
MzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIG5v
bi1hbmltYXRlZCBzdXBwb3J0IGZvciB0aGUgQ1NTIHRyYW5zbGF0ZSBwcm9wZXJ0eQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVy
ZS1jb21wcmVzc2lvbi1yZ3RjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDc3NDRkYjc3ZDFkMmYyMDkxYWJkYTc5YTI1YmE4YjM2ODAyN2UyZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0
IEBACitUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZy
YW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KKworVGVzdDogLi4vLi4vcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJl
c3Npb24tcmd0Yy5odG1sCitbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXBy
ZXNzaW9uLXJndGMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOTk5ZjVm
ZGZiMWNkNDZiMmIyZGVkMTkxMzcxOTE0MjYyZDU3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNz
aW9uLXJndGMuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMgZmlsZSBpcyBhdXRvLWdl
bmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Cis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0
bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciBleHQtdGV4dHVyZS1jb21wcmVz
c2lvbi1yZ3RjLmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJraXQtd2ViZ2wt
dGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0
cyBQQVNTIG9yIEZBSUwuPC9wPgorVGVzdDogPGEgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lv
bi1yZ3RjLmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sPC9hPgorPGRpdiBp
ZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRt
bCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgorPC9kaXY+Cis8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9l
eHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJl
LWNvbXByZXNzaW9uLXJndGMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmEyZDQxNjkwODc1NTI2OTc0ZjBj
ZWRmMTZlY2NhZmRmMmUwYmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4
dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwKQEAgLTAsMCArMSwxNDYgQEAKKzwhLS0KK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEVYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3JndGMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPExJTksgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvdGVzdHMvY29tcHJlc3NlZC10ZXh0dXJlLXV0aWxzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fcmd0YyBleHRlbnNpb24sIGlmIGl0IGlzIGF2YWlsYWJsZS4iKTsKKworZGVidWco
IiIpOworCit2YXIgdmFsaWRGb3JtYXRzID0geworICBDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6
IDB4OERCQiwKKyAgQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDogMHg4REJDLAorICBD
T01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6IDB4OERCRCwKKyAgQ09NUFJFU1NFRF9TSUdO
RURfUkVEX0dSRUVOX1JHVEMyX0VYVDogMHg4REJFCit9OworCitmdW5jdGlvbiBleHBlY3RlZEJ5
dGVMZW5ndGgod2lkdGgsIGhlaWdodCwgZm9ybWF0KSB7CisgIGlmIChmb3JtYXQgPT0gdmFsaWRG
b3JtYXRzLkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCB8fCBmb3JtYXQgPT0gdmFsaWRGb3JtYXRz
LkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQpIHsKKyAgICByZXR1cm4gTWF0aC5jZWls
KHdpZHRoIC8gNCkgKiBNYXRoLmNlaWwoaGVpZ2h0IC8gNCkgKiA4OworICB9CisgIGVsc2Ugewor
ICAgIHJldHVybiBNYXRoLmNlaWwod2lkdGggLyA0KSAqIE1hdGguY2VpbChoZWlnaHQgLyA0KSAq
IDE2OworICB9Cit9CisKK2Z1bmN0aW9uIGdldEJsb2NrRGltZW5zaW9ucyhmb3JtYXQpIHsKKyAg
cmV0dXJuIHt3aWR0aDogNCwgaGVpZ2h0OiA0fTsKK30KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0
aWxzOwordmFyIGN0dSA9IENvbXByZXNzZWRUZXh0dXJlVXRpbHM7Cit2YXIgY29udGV4dFZlcnNp
b24gPSB3dHUuZ2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oKTsKK3ZhciBnbCA9IHd0dS5jcmVh
dGUzRENvbnRleHQoKTsKK3ZhciBleHQ7CisKK3ZhciBmb3JtYXRzID0gbnVsbDsKKworZnVuY3Rp
b24gcnVuVGVzdEV4dGVuc2lvbigpIHsKKyAgLy8gVGVzdCB0aGF0IGVudW0gdmFsdWVzIGFyZSBs
aXN0ZWQgY29ycmVjdGx5IGluIHN1cHBvcnRlZCBmb3JtYXRzIGFuZCBpbiB0aGUgZXh0ZW5zaW9u
IG9iamVjdC4KKyAgY3R1LnRlc3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZChnbCwgdmFsaWRGb3Jt
YXRzKTsKKyAgY3R1LnRlc3RDb3JyZWN0RW51bVZhbHVlc0luRXh0KGV4dCwgdmFsaWRGb3JtYXRz
KTsKKyAgLy8gVGVzdCB0aGF0IHRleHR1cmUgdXBsb2FkIGJ1ZmZlciBzaXplIGlzIHZhbGlkYXRl
ZCBjb3JyZWN0bHkuCisgIGN0dS50ZXN0Rm9ybWF0UmVzdHJpY3Rpb25zT25CdWZmZXJTaXplKGds
LCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgZ2V0QmxvY2tEaW1lbnNpb25zKTsK
KyAgLy8gVGVzdCBUZXhTdWJJbWFnZSB2YWxpZGF0aW9uIG9uIGRpbWVuc2lvbnMKKyAgLy8gQ29t
cHJlc3NlZFRleFN1YkltYWdlKiB3aWxsIHJlc3VsdCBpbiBhbgorICAvLyBJTlZBTElEX09QRVJB
VElPTiBlcnJvciBvbmx5IGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgb2NjdXJz
OgorICAvLyAqIDx3aWR0aD4gaXMgbm90IGEgbXVsdGlwbGUgb2YgZm91ciwgYW5kIDx3aWR0aD4g
cGx1cyA8eG9mZnNldD4gaXMgbm90CisgIC8vIGVxdWFsIHRvIFRFWFRVUkVfV0lEVEg7CisgIC8v
ICogPGhlaWdodD4gaXMgbm90IGEgbXVsdGlwbGUgb2YgZm91ciwgYW5kIDxoZWlnaHQ+IHBsdXMg
PHlvZmZzZXQ+IGlzCisgIC8vICAgICAgICAgICBub3QgZXF1YWwgdG8gVEVYVFVSRV9IRUlHSFQ7
IG9yCisgIC8vICogPHhvZmZzZXQ+IG9yIDx5b2Zmc2V0PiBpcyBub3QgYSBtdWx0aXBsZSBvZiBm
b3VyLgorICBjdHUudGVzdFRleFN1YkltYWdlRGltZW5zaW9ucyhnbCwgdmFsaWRGb3JtYXRzLCBl
eHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucywKKyAgICAxNiwgMTYsIFsKKyAg
ICAgIHsgeG9mZnNldDogMCwgeW9mZnNldDogMCwgd2lkdGg6IDQsIGhlaWdodDogMywKKyAgICAg
ICAgZXhwZWN0YXRpb246IGdsLklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAiaGVpZ2h0IGlz
IG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCisgICAgICB7IHhvZmZzZXQ6IDAsIHlvZmZzZXQ6IDAs
IHdpZHRoOiAzLCBoZWlnaHQ6IDQsCisgICAgICAgIGV4cGVjdGF0aW9uOiBnbC5JTlZBTElEX09Q
RVJBVElPTiwgbWVzc2FnZTogIndpZHRoIGlzIG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCisgICAg
ICB7IHhvZmZzZXQ6IDEsIHlvZmZzZXQ6IDAsIHdpZHRoOiA0LCBoZWlnaHQ6IDQsCisgICAgICAg
IGV4cGVjdGF0aW9uOiBnbC5JTlZBTElEX09QRVJBVElPTiwgbWVzc2FnZTogInhvZmZzZXQgaXMg
bm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKKyAgICAgIHsgeG9mZnNldDogMCwgeW9mZnNldDogMSwg
d2lkdGg6IDQsIGhlaWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLklOVkFMSURfT1BF
UkFUSU9OLCBtZXNzYWdlOiAieW9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiA0IiB9LAorICAg
ICAgeyB4b2Zmc2V0OiAxMiwgeW9mZnNldDogMTIsIHdpZHRoOiA0LCBoZWlnaHQ6IDQsCisgICAg
ICAgIGV4cGVjdGF0aW9uOiBnbC5OT19FUlJPUiwgbWVzc2FnZTogImlzIHZhbGlkIiB9LAorICBd
KTsKKworICAvLyBUZXN0IFRleEltYWdlIHZhbGlkYXRpb24gb24gbGV2ZWwgZGltZW5zaW9ucyBj
b21iaW5hdGlvbnMuCisgIC8vIFdoZW4gbGV2ZWwgZXF1YWxzIDAsIHdpZHRoIGFuZCBoZWlnaHQg
bXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuCisgIC8vIFdoZW4gbGV2ZWwgaXMgbGFyZ2VyIHRoYW4g
MCwgdGhpcyBjb25zdHJhaW50IGRvZXNuJ3QgYXBwbHkuCisgIGN0dS50ZXN0VGV4SW1hZ2VMZXZl
bERpbWVuc2lvbnMoZ2wsIHZhbGlkRm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCBnZXRCbG9j
a0RpbWVuc2lvbnMsCisgICAgWworICAgICAgeyBsZXZlbDogMCwgd2lkdGg6IDQsIGhlaWdodDog
MywKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAi
bGV2ZWwgaXMgMCwgaGVpZ2h0IGlzIG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCisgICAgICB7IGxl
dmVsOiAwLCB3aWR0aDogMywgaGVpZ2h0OiA0LAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5W
QUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJsZXZlbCBpcyAwLCB3aWR0aCBpcyBub3QgYSBtdWx0
aXBsZSBvZiA0IiB9LAorICAgICAgeyBsZXZlbDogMCwgd2lkdGg6IDIsIGhlaWdodDogMiwKKyAg
ICAgICAgZXhwZWN0YXRpb246IGdsLklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAibGV2ZWwg
aXMgMCwgd2lkdGggaXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKKyAgICAgIHsgbGV2ZWw6IDAs
IHdpZHRoOiA0LCBoZWlnaHQ6IDQsCisgICAgICAgIGV4cGVjdGF0aW9uOiBnbC5OT19FUlJPUiwg
bWVzc2FnZTogImlzIHZhbGlkIiB9LAorICAgICAgeyBsZXZlbDogMSwgd2lkdGg6IDIsIGhlaWdo
dDogMiwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAibGV2ZWwg
PiAwLCBpcyB2YWxpZCIgfSwKKyAgICAgIHsgbGV2ZWw6IDIsIHdpZHRoOiAxLCBoZWlnaHQ6IDEs
CisgICAgICAgIGV4cGVjdGF0aW9uOiBnbC5OT19FUlJPUiwgbWVzc2FnZTogImxldmVsID4gMCwg
aXMgdmFsaWQiIH0sCisgIF0pOworCisgIC8vIFRlc3QgdGhhdCBSR1RDIGVudW1zIGFyZSBub3Qg
YWNjZXB0ZWQgYnkgdGV4SW1hZ2UyRAorICBpZiAoY29udGV4dFZlcnNpb24gPj0gMikgeworICAg
IHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgdGV4KTsKKworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZXh0
LkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCwgNCwgNCwgMCwgZ2wuUkVELCBnbC5VTlNJR05FRF9C
WVRFLCBudWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJB
VElPTiwgIkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCBmYWlscyB3aXRoIHRleEltYWdlMkQiKTsK
KworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZXh0LkNPTVBSRVNTRURfU0lH
TkVEX1JFRF9SR1RDMV9FWFQsIDQsIDQsIDAsIGdsLlJFRCwgZ2wuQllURSwgbnVsbCk7CisgICAg
d3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJDT01QUkVTU0VE
X1NJR05FRF9SRURfUkdUQzFfRVhUIGZhaWxzIHdpdGggdGV4SW1hZ2UyRCIpOworCisgICAgZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBleHQuQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdU
QzJfRVhULCA0LCA0LCAwLCBnbC5SRywgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7CisgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJDT01QUkVTU0VEX1JF
RF9HUkVFTl9SR1RDMl9FWFQgZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7CisKKyAgICBnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGV4dC5DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5f
UkdUQzJfRVhULCA0LCA0LCAwLCBnbC5SRywgZ2wuQllURSwgbnVsbCk7CisgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJDT01QUkVTU0VEX1NJR05FRF9S
RURfR1JFRU5fUkdUQzJfRVhUIGZhaWxzIHdpdGggdGV4SW1hZ2UyRCIpOworCisgICAgZ2wuZGVs
ZXRlVGV4dHVyZSh0ZXgpOworICB9Cit9OworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICBpZiAo
IWdsKSB7CisgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOworICB9IGVs
c2UgeworICAgIHRlc3RQYXNzZWQoImNvbnRleHQgZXhpc3RzIik7CisKKyAgICBjdHUudGVzdENv
bXByZXNzZWRGb3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0ZW5zaW9uRGlzYWJsZWQoZ2wsIHZhbGlk
Rm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCA0KTsKKworICAgIGV4dCA9IGdsLmdldEV4dGVu
c2lvbigiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIpOworCisgICAgd3R1LnJ1bkV4dGVu
c2lvblN1cHBvcnRlZFRlc3QoZ2wsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZXh0
ICE9PSBudWxsKTsKKworICAgIGlmIChleHQgIT09IG51bGwpIHsKKyAgICAgIHJ1blRlc3RFeHRl
bnNpb24oKTsKKyAgICB9CisgIH0KK30KKworcnVuVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9jb21wcmVzc2Vk
LXRleHR1cmUtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDZmMDJjNGQ0M2IzOWYwYWE0ODUzZTc0ODlmNDA1OGZjMmQ2YmNmNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3Rz
L2NvbXByZXNzZWQtdGV4dHVyZS11dGlscy5qcwpAQCAtMCwwICsxLDIyOSBAQAorLyoKK0NvcHly
aWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91
bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisidXNlIHN0cmljdCI7CisKK2xldCBD
b21wcmVzc2VkVGV4dHVyZVV0aWxzID0gKGZ1bmN0aW9uKCkgeworCitsZXQgZm9ybWF0VG9TdHJp
bmcgPSBmdW5jdGlvbihleHQsIGZvcm1hdCkgeworICAgIGZvciAobGV0IHAgaW4gZXh0KSB7Cisg
ICAgICAgIGlmIChleHRbcF0gPT0gZm9ybWF0KSB7CisgICAgICAgICAgICByZXR1cm4gcDsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gIjB4IiArIGZvcm1hdC50b1N0cmluZygxNik7Cit9
OworCisvKioKKyAqIE1ha2UgYW4gaW1hZ2UgZWxlbWVudCBmcm9tIFVpbnQ4QXJyYXkgYml0bWFw
IGRhdGEuCisgKiBAcGFyYW0ge251bWJlcn0gaW1hZ2VIZWlnaHQgSGVpZ2h0IG9mIHRoZSBkYXRh
IGluIHBpeGVscy4KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbWFnZVdpZHRoIFdpZHRoIG9mIHRoZSBk
YXRhIGluIHBpeGVscy4KKyAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhV2lkdGggV2lkdGggb2YgZWFj
aCByb3cgaW4gdGhlIGRhdGEgYnVmZmVyLCBpbiBwaXhlbHMuCisgKiBAcGFyYW0ge1VpbnQ4QXJy
YXl9IGRhdGEgSW1hZ2UgZGF0YSBidWZmZXIgdG8gZGlzcGxheS4gRWFjaCBwaXhlbCB0YWtlcyB1
cCA0IGJ5dGVzIGluIHRoZSBhcnJheSByZWdhcmRsZXNzIG9mIHRoZSBhbHBoYSBwYXJhbWV0ZXIu
CisgKiBAcGFyYW0ge2Jvb2xlYW59IGFscGhhIFRydWUgaWYgYWxwaGEgZGF0YSBzaG91bGQgYmUg
dGFrZW4gZnJvbSBkYXRhLiBPdGhlcndpc2UgYWxwaGEgY2hhbm5lbCBpcyBzZXQgdG8gMjU1Lgor
ICogQHJldHVybiB7SFRNTEltYWdlRWxlbWVudH0gVGhlIGltYWdlIGVsZW1lbnQuCisgKi8KK2xl
dCBtYWtlU2NhbGVkSW1hZ2UgPSBmdW5jdGlvbihpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgZGF0
YVdpZHRoLCBkYXRhLCBhbHBoYSwgb3B0X3NjYWxlKSB7CisgICAgbGV0IHNjYWxlID0gb3B0X3Nj
YWxlID8gb3B0X3NjYWxlIDogODsKKyAgICBsZXQgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpOworICAgIGMud2lkdGggPSBpbWFnZVdpZHRoICogc2NhbGU7CisgICAgYy5oZWln
aHQgPSBpbWFnZUhlaWdodCAqIHNjYWxlOworICAgIGxldCBjdHggPSBjLmdldENvbnRleHQoIjJk
Iik7CisgICAgZm9yIChsZXQgeXkgPSAwOyB5eSA8IGltYWdlSGVpZ2h0OyArK3l5KSB7CisgICAg
ICAgIGZvciAobGV0IHh4ID0gMDsgeHggPCBpbWFnZVdpZHRoOyArK3h4KSB7CisgICAgICAgICAg
ICBsZXQgb2Zmc2V0ID0gKHl5ICogZGF0YVdpZHRoICsgeHgpICogNDsKKyAgICAgICAgICAgIGN0
eC5maWxsU3R5bGUgPSAicmdiYSgiICsKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtvZmZzZXQg
KyAwXSArICIsIiArCisgICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0ICsgMV0gKyAiLCIg
KworICAgICAgICAgICAgICAgICAgICBkYXRhW29mZnNldCArIDJdICsgIiwiICsKKyAgICAgICAg
ICAgICAgICAgICAgKGFscGhhID8gZGF0YVtvZmZzZXQgKyAzXSAvIDI1NSA6IDEpICsgIikiOwor
ICAgICAgICAgICAgY3R4LmZpbGxSZWN0KHh4ICogc2NhbGUsIHl5ICogc2NhbGUsIHNjYWxlLCBz
Y2FsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHd0dS5tYWtlSW1hZ2VGcm9tQ2Fu
dmFzKGMpOworfTsKKworbGV0IGluc2VydENhcHRpb25lZEltZyA9IGZ1bmN0aW9uKHBhcmVudCwg
Y2FwdGlvbiwgaW1nKSB7CisgICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgIGRpdi5hcHBlbmRDaGlsZChpbWcpOworICAgIGxldCBsYWJlbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKGNhcHRpb24pKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQobGFiZWwpOworICAg
IHBhcmVudC5hcHBlbmRDaGlsZChkaXYpOworfTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2V9IGdsCisgKiBAcGFyYW0ge09iamVjdH0gY29tcHJlc3NlZEZvcm1h
dHMgTWFwcGluZyBmcm9tIGZvcm1hdCBuYW1lcyB0byBmb3JtYXQgZW51bSB2YWx1ZXMuCisgKiBA
cGFyYW0gZXhwZWN0ZWRCeXRlTGVuZ3RoIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBpbiB3aWR0aCwg
aGVpZ2h0IGFuZCBmb3JtYXQgYW5kIHJldHVybnMgdGhlIGV4cGVjdGVkIGJ1ZmZlciBzaXplIGlu
IGJ5dGVzLgorICovCitsZXQgdGVzdENvbXByZXNzZWRGb3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0
ZW5zaW9uRGlzYWJsZWQgPSBmdW5jdGlvbihnbCwgY29tcHJlc3NlZEZvcm1hdHMsIGV4cGVjdGVk
Qnl0ZUxlbmd0aCwgdGVzdFNpemUpIHsKKyAgICBsZXQgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgZm9yIChsZXQg
bmFtZSBpbiBjb21wcmVzc2VkRm9ybWF0cykgeworICAgICAgICBpZiAoY29tcHJlc3NlZEZvcm1h
dHMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGNvbXByZXNzZWRGb3JtYXRzW25hbWVdLCB0ZXN0U2l6
ZSwgdGVzdFNpemUsIDAsIG5ldyBVaW50OEFycmF5KGV4cGVjdGVkQnl0ZUxlbmd0aCh0ZXN0U2l6
ZSwgdGVzdFNpemUsIGNvbXByZXNzZWRGb3JtYXRzW25hbWVdKSkpOworICAgICAgICAgICAgd3R1
LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiVHJ5aW5nIHRvIHVzZSBmb3Jt
YXQgIiArIG5hbWUgKyAiIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkLiIpOworICAgICAgICB9Cisg
ICAgfQorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAgIGdsLmRl
bGV0ZVRleHR1cmUodGV4KTsKK307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlfSBnbAorICogQHBhcmFtIHtPYmplY3R9IGV4cGVjdGVkRm9ybWF0cyBNYXBwaW5n
IGZyb20gZm9ybWF0IG5hbWVzIHRvIGZvcm1hdCBlbnVtIHZhbHVlcy4KKyAqLworbGV0IHRlc3RD
b21wcmVzc2VkRm9ybWF0c0xpc3RlZCA9IGZ1bmN0aW9uKGdsLCBleHBlY3RlZEZvcm1hdHMpIHsK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgdGhhdCBldmVyeSBmb3JtYXQgaXMg
bGlzdGVkIGJ5IHRoZSBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0cyBxdWVyeSIpOworCisgICAg
bGV0IHN1cHBvcnRlZEZvcm1hdHMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ09NUFJFU1NFRF9URVhU
VVJFX0ZPUk1BVFMpOworCisgICAgbGV0IGZhaWxlZDsKKyAgICBsZXQgY291bnQgPSAwOworICAg
IGZvciAobGV0IG5hbWUgaW4gZXhwZWN0ZWRGb3JtYXRzKSB7CisgICAgICAgIGlmIChleHBlY3Rl
ZEZvcm1hdHMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgICAgICsrY291bnQ7Cisg
ICAgICAgICAgICBsZXQgZm9ybWF0ID0gZXhwZWN0ZWRGb3JtYXRzW25hbWVdOworICAgICAgICAg
ICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCBzdXBw
b3J0ZWRGb3JtYXRzLmxlbmd0aDsgKytpaSkgeworICAgICAgICAgICAgICAgIGlmIChmb3JtYXQg
PT0gc3VwcG9ydGVkRm9ybWF0c1tpaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgic3VwcG9ydGVkIGZvcm1hdCAiICsgbmFtZSArICIgZXhpc3RzIik7CisgICAgICAgICAgICAg
ICAgICAgIGZhaWxlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmFpbGVkKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgic3VwcG9ydGVkIGZvcm1hdCAiICsgbmFtZSArICIg
ZG9lcyBub3QgZXhpc3QiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBp
ZiAoc3VwcG9ydGVkRm9ybWF0cy5sZW5ndGggIT0gY291bnQpIHsKKyAgICAgICAgdGVzdEZhaWxl
ZCgiSW5jb3JyZWN0IG51bWJlciBvZiBzdXBwb3J0ZWQgZm9ybWF0cywgd2FzICIgKyBzdXBwb3J0
ZWRGb3JtYXRzLmxlbmd0aCArICIgc2hvdWxkIGJlICIgKyBjb3VudCk7CisgICAgfQorfTsKKwor
LyoqCisgKiBAcGFyYW0ge09iamVjdH0gZXh0IENvbXByZXNzZWQgdGV4dHVyZSBleHRlbnNpb24g
b2JqZWN0LgorICogQHBhcmFtIHtPYmplY3R9IGV4cGVjdGVkRm9ybWF0cyBNYXBwaW5nIGZyb20g
Zm9ybWF0IG5hbWVzIHRvIGZvcm1hdCBlbnVtIHZhbHVlcy4KKyAqLworbGV0IHRlc3RDb3JyZWN0
RW51bVZhbHVlc0luRXh0ID0gZnVuY3Rpb24oZXh0LCBleHBlY3RlZEZvcm1hdHMpIHsKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgdGhhdCBmb3JtYXQgZW51bSB2YWx1ZXMgaW4g
dGhlIGV4dGVuc2lvbiBvYmplY3QgYXJlIGNvcnJlY3QiKTsKKworICAgIGZvciAobmFtZSBpbiBl
eHBlY3RlZEZvcm1hdHMpIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkRm9ybWF0cy5oYXNPd25Qcm9w
ZXJ0eShuYW1lKSkgeworICAgICAgICAgICAgaWYgKGlzUmVzdWx0Q29ycmVjdChleHRbbmFtZV0s
IGV4cGVjdGVkRm9ybWF0c1tuYW1lXSkpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJF
bnVtIHZhbHVlIGZvciAiICsgbmFtZSArICIgbWF0Y2hlcyAweCIgKyBleHRbbmFtZV0udG9TdHJp
bmcoMTYpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiRW51bSB2YWx1ZSBmb3IgIiArIG5hbWUgKyAiIG1pc21hdGNoOiAweCIgKyBleHRbbmFtZV0u
dG9TdHJpbmcoMTYpICsgIiBzaG91bGQgYmUgMHgiICsgZXhwZWN0ZWRGb3JtYXRzW25hbWVdLnRv
U3RyaW5nKDE2KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9OworCisvKioK
KyAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZX0gZ2wKKyAqIEBwYXJhbSB7T2Jq
ZWN0fSB2YWxpZEZvcm1hdHMgTWFwcGluZyBmcm9tIGZvcm1hdCBuYW1lcyB0byBmb3JtYXQgZW51
bSB2YWx1ZXMuCisgKiBAcGFyYW0gZXhwZWN0ZWRCeXRlTGVuZ3RoIEEgZnVuY3Rpb24gdGhhdCB0
YWtlcyBpbiB3aWR0aCwgaGVpZ2h0IGFuZCBmb3JtYXQgYW5kIHJldHVybnMgdGhlIGV4cGVjdGVk
IGJ1ZmZlciBzaXplIGluIGJ5dGVzLgorICogQHBhcmFtIGdldEJsb2NrRGltZW5zaW9ucyBBIGZ1
bmN0aW9uIHRoYXQgdGFrZXMgaW4gYSBmb3JtYXQgYW5kIHJldHVybnMgYmxvY2sgc2l6ZSBpbiBw
aXhlbHMuCisgKi8KK2xldCB0ZXN0Rm9ybWF0UmVzdHJpY3Rpb25zT25CdWZmZXJTaXplID0gZnVu
Y3Rpb24oZ2wsIHZhbGlkRm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCBnZXRCbG9ja0RpbWVu
c2lvbnMpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgZm9ybWF0IHJlc3Ry
aWN0aW9ucyBvbiB0ZXh0dXJlIHVwbG9hZCBidWZmZXIgc2l6ZSIpOworCisgICAgbGV0IHRleCA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0
ZXgpOworICAgIGZvciAobGV0IGZvcm1hdElkIGluIHZhbGlkRm9ybWF0cykgeworICAgICAgICBp
ZiAodmFsaWRGb3JtYXRzLmhhc093blByb3BlcnR5KGZvcm1hdElkKSkgeworICAgICAgICAgICAg
bGV0IGZvcm1hdCA9IHZhbGlkRm9ybWF0c1tmb3JtYXRJZF07CisgICAgICAgICAgICBsZXQgYmxv
Y2tTaXplID0gZ2V0QmxvY2tEaW1lbnNpb25zKGZvcm1hdCk7CisgICAgICAgICAgICBsZXQgZXhw
ZWN0ZWRTaXplID0gZXhwZWN0ZWRCeXRlTGVuZ3RoKGJsb2NrU2l6ZS53aWR0aCAqIDQsIGJsb2Nr
U2l6ZS5oZWlnaHQgKiA0LCBmb3JtYXQpOworICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgVWlu
dDhBcnJheShleHBlY3RlZFNpemUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBibG9ja1NpemUud2lkdGggKiAzLCBibG9ja1Np
emUuaGVpZ2h0ICogNCwgMCwgZGF0YSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX1ZBTFVFLCBmb3JtYXRJZCArICIgZGF0YSBzaXplIGRvZXMgbm90IG1h
dGNoIGRpbWVuc2lvbnMgKHRvbyBzbWFsbCB3aWR0aCkiKTsKKyAgICAgICAgICAgIGdsLmNvbXBy
ZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgYmxvY2tTaXplLndpZHRo
ICogNSwgYmxvY2tTaXplLmhlaWdodCAqIDQsIDAsIGRhdGEpOworICAgICAgICAgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgZm9ybWF0SWQgKyAiIGRhdGEgc2l6
ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zICh0b28gbGFyZ2Ugd2lkdGgpIik7CisgICAgICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIGJs
b2NrU2l6ZS53aWR0aCAqIDQsIGJsb2NrU2l6ZS5oZWlnaHQgKiAzLCAwLCBkYXRhKTsKKyAgICAg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsIGZvcm1hdElk
ICsgIiBkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyAodG9vIHNtYWxsIGhlaWdo
dCkiKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGZvcm1hdCwgYmxvY2tTaXplLndpZHRoICogNCwgYmxvY2tTaXplLmhlaWdodCAqIDUsIDAs
IGRhdGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9W
QUxVRSwgZm9ybWF0SWQgKyAiIGRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zICh0
b28gbGFyZ2UgaGVpZ2h0KSIpOworICAgICAgICB9CisgICAgfQorfTsKKworLyoqCisgKiBAcGFy
YW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2V9IGdsCisgKiBAcGFyYW0ge09iamVjdH0gdmFs
aWRGb3JtYXRzIE1hcHBpbmcgZnJvbSBmb3JtYXQgbmFtZXMgdG8gZm9ybWF0IGVudW0gdmFsdWVz
LgorICogQHBhcmFtIGV4cGVjdGVkQnl0ZUxlbmd0aCBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaW4g
d2lkdGgsIGhlaWdodCBhbmQgZm9ybWF0IGFuZCByZXR1cm5zIHRoZSBleHBlY3RlZCBidWZmZXIg
c2l6ZSBpbiBieXRlcy4KKyAqIEBwYXJhbSBnZXRCbG9ja0RpbWVuc2lvbnMgQSBmdW5jdGlvbiB0
aGF0IHRha2VzIGluIGEgZm9ybWF0IGFuZCByZXR1cm5zIGJsb2NrIHNpemUgaW4gcGl4ZWxzLgor
ICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoIFdpZHRoIG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuCisg
KiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IEhlaWdodCBvZiB0aGUgaW1hZ2UgaW4gcGl4ZWxzLgor
ICogQHBhcmFtIHtPYmplY3R9IHN1YkltYWdlQ29uZmlncyBjb25maWdzIGZvciBjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UgY2FsbHMKKyAqLworbGV0IHRlc3RUZXhTdWJJbWFnZURpbWVuc2lvbnMgPSBm
dW5jdGlvbihnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGlt
ZW5zaW9ucywgd2lkdGgsIGhlaWdodCwgc3ViSW1hZ2VDb25maWdzKSB7CisgICAgbGV0IHRleCA9
IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0
ZXgpOworCisgICAgZm9yIChsZXQgZm9ybWF0SWQgaW4gdmFsaWRGb3JtYXRzKSB7CisgICAgICAg
IGlmICh2YWxpZEZvcm1hdHMuaGFzT3duUHJvcGVydHkoZm9ybWF0SWQpKSB7CisgICAgICAgICAg
ICBsZXQgZm9ybWF0ID0gdmFsaWRGb3JtYXRzW2Zvcm1hdElkXTsKKyAgICAgICAgICAgIGxldCBi
bG9ja1NpemUgPSBnZXRCbG9ja0RpbWVuc2lvbnMoZm9ybWF0KTsKKyAgICAgICAgICAgIGxldCBl
eHBlY3RlZFNpemUgPSBleHBlY3RlZEJ5dGVMZW5ndGgod2lkdGgsIGhlaWdodCwgZm9ybWF0KTsK
KyAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWRTaXplKTsKKwor
ICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2V0dGluZyB1cCBjb21wcmVzc2VkIHRleHR1cmUiKTsK
KworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHN1YkltYWdlQ29uZmlncy5sZW5n
dGg7IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAgICAgIGxldCBjID0gc3ViSW1hZ2VDb25m
aWdzW2ldOworICAgICAgICAgICAgICAgIGxldCBzdWJEYXRhID0gbmV3IFVpbnQ4QXJyYXkoZXhw
ZWN0ZWRCeXRlTGVuZ3RoKGMud2lkdGgsIGMuaGVpZ2h0LCBmb3JtYXQpKTsKKyAgICAgICAgICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBjLnhvZmZz
ZXQsIGMueW9mZnNldCwgYy53aWR0aCwgYy5oZWlnaHQsIGZvcm1hdCwgc3ViRGF0YSk7CisgICAg
ICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgYy5leHBlY3RhdGlvbiwgYy5tZXNz
YWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK307
CisKK2xldCB0ZXN0VGV4SW1hZ2VMZXZlbERpbWVuc2lvbnMgPSBmdW5jdGlvbihnbCwgdmFsaWRG
b3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucywgaW1hZ2VDb25m
aWdzKSB7CisgICAgbGV0IHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworCisgICAgZm9yIChsZXQgZm9ybWF0SWQgaW4gdmFs
aWRGb3JtYXRzKSB7CisgICAgICAgIGlmICh2YWxpZEZvcm1hdHMuaGFzT3duUHJvcGVydHkoZm9y
bWF0SWQpKSB7CisgICAgICAgICAgICBsZXQgZm9ybWF0ID0gdmFsaWRGb3JtYXRzW2Zvcm1hdElk
XTsKKyAgICAgICAgICAgIGxldCBibG9ja1NpemUgPSBnZXRCbG9ja0RpbWVuc2lvbnMoZm9ybWF0
KTsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGltYWdlQ29uZmlncy5sZW5n
dGg7IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAgICAgIGxldCBjID0gaW1hZ2VDb25maWdz
W2ldOworICAgICAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWRC
eXRlTGVuZ3RoKGMud2lkdGgsIGMuaGVpZ2h0LCBmb3JtYXQpKTsKKyAgICAgICAgICAgICAgICBn
bC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCBjLmxldmVsLCBmb3JtYXQsIGMu
d2lkdGgsIGMuaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBjLmV4cGVjdGF0aW9uLCBjLm1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7
CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfQorCityZXR1cm4geworICAgIGZvcm1hdFRv
U3RyaW5nOiBmb3JtYXRUb1N0cmluZywKKyAgICBpbnNlcnRDYXB0aW9uZWRJbWc6IGluc2VydENh
cHRpb25lZEltZywKKyAgICBtYWtlU2NhbGVkSW1hZ2U6IG1ha2VTY2FsZWRJbWFnZSwKKyAgICB0
ZXN0Q29tcHJlc3NlZEZvcm1hdHNMaXN0ZWQ6IHRlc3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZCwK
KyAgICB0ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2YWlsYWJsZVdoZW5FeHRlbnNpb25EaXNhYmxl
ZDogdGVzdENvbXByZXNzZWRGb3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0ZW5zaW9uRGlzYWJsZWQs
CisgICAgdGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQ6IHRlc3RDb3JyZWN0RW51bVZhbHVlc0lu
RXh0LAorICAgIHRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1ZmZlclNpemU6IHRlc3RGb3JtYXRS
ZXN0cmljdGlvbnNPbkJ1ZmZlclNpemUsCisgICAgdGVzdFRleFN1YkltYWdlRGltZW5zaW9uczog
dGVzdFRleFN1YkltYWdlRGltZW5zaW9ucywKKyAgICB0ZXN0VGV4SW1hZ2VMZXZlbERpbWVuc2lv
bnM6IHRlc3RUZXhJbWFnZUxldmVsRGltZW5zaW9ucywKK307CisKK30pKCk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410704</attachid>
            <date>2020-10-06 15:35:20 -0700</date>
            <delta_ts>2020-10-07 14:41:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217198-20201006153519.patch</filename>
            <type>text/plain</type>
            <size>87821</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzliNjBmZTYxMDYyMzI1
ODgzYzYwZTcyM2FiNDVkMWFmMjllOTI0MC4uYmEwY2Q4ZjcyNjA2OWQwODEyNzNhYzFiMzBjNTgw
YmNiZmRlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTEwLTA2ICBKYW1l
cyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0
IEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMgV2ViR0wgZXh0ZW5zaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgVGVzdDogd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFRvSlNWYWx1ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQzo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk6CisgICAgICAgIChXZWJDb3JlOjpFWFRU
ZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpnZXROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1
bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxv
c2VFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisK
IDIwMjAtMDktMzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIG5vbi1hbmltYXRlZCBzdXBwb3J0IGZvciB0aGUgQ1NTIHRyYW5zbGF0ZSBwcm9wZXJ0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxOTQzODAyM2M0MzU4YjA2MDYxMDNjNjVjNDdkNTg5
ZjdlZTVjMzRjLi45NGFiNTk4MTQzYzFiYjI4ZmYyZGVhMGEwMjdkZGE3NTRjNWVmYzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQ0OCw2ICsxNDQ4LDcgQEAgaWYgKEVOQUJMRV9XRUJHTCkK
ICAgICAgICAgaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKICAgICAgICAgaHRtbC9jYW52
YXMvRVhURnJhZ0RlcHRoLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJl
TE9ELmNwcAorICAgICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNw
cAogICAgICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwCiAg
ICAgICAgIGh0bWwvY2FudmFzL0VYVHNSR0IuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL09FU0Vs
ZW1lbnRJbmRleFVpbnQuY3BwCkBAIC0xNTA2LDYgKzE1MDcsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX0lETF9GSUxFUwogICAgIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsCiAgICAgaHRt
bC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAogICAgIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1
cmVMT0QuaWRsCisgICAgaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwK
ICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCiAgICAgaHRt
bC9jYW52YXMvRVhUc1JHQi5pZGwKICAgICBodG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50
LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
aW5kZXggYThkY2Y5Njk4MmE0MDgyOTk3NDU4MjU4MzRiNzE2MGI0NWQyN2Y1Zi4uMDY4NWM1YTI5
NGRkNjA1MjFhMTA1Y2EwZTU2NTY3MGE1OGVmYzE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MzIsNiArOTMyLDcgQEAgJChQUk9K
RUNUX0RJUikvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsCiAkKFBST0pF
Q1RfRElSKS9odG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmlkbAogJChQUk9KRUNUX0RJUikvaHRt
bC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvRVhU
U2hhZGVyVGV4dHVyZUxPRC5pZGwKKyQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL0VYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRz
UkdCLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCAzNjc5NWVhNDEzMzhlZGRhODRhZDI4MzRmNjg4ZGVkMzIwNGRlMGQ4Li43
Nzk5MDBmOGMyNDczYjQxZWY5ZGRkNGQ0ZjgyYjAzMGM3OTA0Nzc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNjcxLDYgKzY3MSw4
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhURnJh
Z0RlcHRoLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNFWFRGcmFnRGVwdGguaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRVhUc1JHQi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDJjMWMx
MDg5YWQ1YWI2Yjc1OWY1MDZkYzFhZTkwM2NmZjIwNjA2ZjYuLmY0Y2VjODY0NjJjMzJkMGJkOWU3
YTZhODlkNDU0ZGY3MjFkNjFlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
OTUxLDYgKzk1MSw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4
dHVyZUxPRC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRzUkdC
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHQuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYzdlY2ZkZDE1NWM1MjgwZDU4NTRiZmI1MmJl
YmVhMDI4NGFkYjdhMy4uNmQzYTNlNTEwMDNjNDE0NDRkZjZjMTUxZWRkZTZlNDg3YTI1Yzc3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTEyNTUsNiArMTI1NSw3IEBAIGh0bWwvY2FudmFzL0VYVENvbG9y
QnVmZmVySGFsZkZsb2F0LmNwcAogaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKIGh0bWwv
Y2FudmFzL0VYVEZyYWdEZXB0aC5jcHAKIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0Qu
Y3BwCitodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAogaHRtbC9jYW52
YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcAogaHRtbC9jYW52YXMvRVhUc1JHQi5j
cHAKIGh0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI4
NjMsNiArMjg2NCw3IEBAIEpTRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCiBKU0VYVEZsb2F0
QmxlbmQuY3BwCiBKU0VYVEZyYWdEZXB0aC5jcHAKIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAK
K0pTRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAKIEpTRVhUVGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLmNwcAogSlNFWFRzUkdCLmNwcAogSlNFY0tleVBhcmFtcy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYTAwZjll
MGEyNmJmMjFhOGJjYzlmZjU1MTAyMmY3NDc5ODEyMGRkLi4xYjhmMWIzY2I2ZmJjMDYyYWE3NGU3
ZmZjYjgzMmQ1MDg4NzAzOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjExMyw2ICsxMjExMyw5IEBACiAJCUEzN0E0MkNF
MjUxRUI5OTYwMEY3NUFGRiAvKiBPRVNGQk9SZW5kZXJNaXBtYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT0VTRkJPUmVuZGVyTWlwbWFwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRDAyNTFFQjk5NjAwRjc1QUZGIC8qIE9FU0ZCT1Jl
bmRlck1pcG1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPRVNGQk9SZW5k
ZXJNaXBtYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRDEyNTFFQjk5
NzAwRjc1QUZGIC8qIE9FU0ZCT1JlbmRlck1pcG1hcC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gT0VTRkJPUmVuZGVyTWlwbWFwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTM3QTQyRTAyNTI3QjQ5QzAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNz
aW9uUkdUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzN0E0MkUyMjUyN0I0
OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTM3QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4
MTIwMzI1MkVFMDA2Q0FEMDYgLyogVXNlckFnZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWdlbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWdlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODMyMDMyNTY5MTAwNkNBRDA2IC8qIFVzZXJBZ2VudElP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudElP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzkzLDYgKzE5Mzk2LDkgQEAK
IAkJCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8sCiAJCQkJNzI3
QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLywKIAkJCQk3MjdBRkVEMzFBMkVB
NkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8sCisJCQkJQTM3QTQyRTAyNTI3QjQ5QzAwRjc1
QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwICovLAorCQkJCUEzN0E0MkUyMjUy
N0I0OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8sCisJCQkJQTM3
QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsICov
LAogCQkJCTc3Mjg2OTRCMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMuY3BwICovLAogCQkJCTc3Mjg2OTRDMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCAqLywKIAkJCQk3NzI4Njk0RDE0Rjg4ODI1MDBGNDg0REMgLyog
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAppbmRleCBkNDcwZDAwOGE0OWQ0MGEz
ZTdhYmNiYTRlMjZlNDUzNjQ3YWYzMDFlLi4zZDMwNjYzMTEwNDZhNzYwNzA0MTI5OWQxM2U4YWY3
NTVmYTI2NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRXZWJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0V2ViR0wuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNFWFRGbG9hdEJsZW5k
LmgiCiAjaW5jbHVkZSAiSlNFWFRGcmFnRGVwdGguaCIKICNpbmNsdWRlICJKU0VYVFNoYWRlclRl
eHR1cmVMT0QuaCIKKyNpbmNsdWRlICJKU0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKICNp
bmNsdWRlICJKU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUgIkpTRVhU
c1JHQi5oIgogI2luY2x1ZGUgIkpTT0VTRWxlbWVudEluZGV4VWludC5oIgpAQCAtMTcxLDYgKzE3
Miw4IEBAIEpTVmFsdWUgY29udmVydFRvSlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmCiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTExvc2VDb250
ZXh0Jj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUU2hhZGVyVGV4
dHVyZUxPRE5hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAm
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxFWFRTaGFkZXJUZXh0dXJlTE9EJj4oZXh0ZW5zaW9u
KSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQ05h
bWU6CisgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfY2FzdDxFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDJj4oZXh0ZW5zaW9uKSk7
CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljTmFt
ZToKICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmpl
Y3QsIHN0YXRpY19jYXN0PEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyY+KGV4dGVuc2lvbikp
OwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OkVYVHNSR0JOYW1lOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYTliNTc4Njg2MzkxNDZlZTJkMWIzMmFhMjE4NWM2YTU2OWU0OGVhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDLmgiCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDKTsKKworRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6RVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKK3sKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9yZ3RjIik7CisKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JH
VEMxX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JF
RF9HUkVFTl9SR1RDMl9FWFQpOworfQorCitFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhU
VGV4dHVyZUNvbXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKKworV2ViR0xFeHRlbnNpb246OkV4
dGVuc2lvbk5hbWUgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6Z2V0TmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVENOYW1lOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTg4M2Q5M2JjYTFiMThkMzcxN2VmZWM5ZTQzNTdjNGM0OGJiZTJjNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVz
c2lvblJHVEMuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJXZWJHTEV4dGVuc2lvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewor
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgdmlydHVhbCB+RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdU
QygpOworCisgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZjk2
MDM1ZjZiOTI0OGNmMDE3OTViMTg4MDc0Yjc1NzU2MmQ1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmlkbApA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdMLAorICAgIEdl
bmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMg
eworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUID0gMHg4
REJCOworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMx
X0VYVCA9IDB4OERCQzsKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkVEX0dS
RUVOX1JHVEMyX0VYVCA9IDB4OERCRDsKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNT
RURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkU7Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA3ZDRiNThmZGU1MDViMjcyODBiZTMwZTRhODA4YzRhYjJhMzUzZjhmLi5iNWZjZjkzZDg3MmFh
ZTM1Y2M4Y2I2ODZjODY5NGE1ZmU2YWUzM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkVYVENvbG9yQnVmZmVyRmxvYXQuaCIKICNpbmNsdWRlICJFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdC5oIgogI2luY2x1ZGUgIkVYVEZsb2F0QmxlbmQuaCIKKyNpbmNsdWRlICJF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCkBAIC0yNjcxLDYgKzI2NzIsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0
dXJuIHZhcmlhYmxlLmdldCgpOyBcCiAgICAgfQogCisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEMsICJF
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxv
YXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRl
bnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9z
ZV9jb250ZXh0IiwgdHJ1ZSk7CkBAIC0yNzAzLDYgKzI3MDUsOCBAQCBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygp
CiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAg
IGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3Mp
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwor
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9y
Z3RjIl9zKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
cmd0YyJfcyk7CiAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
U1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXh0ZW5zaW9uLmgKaW5kZXggYTc4ZWYxNWIzOTEyMjYwZDFhMDRmYjA0YjI5Y2MyMWYwOTEzMzRk
MS4uNDQwZDRiOTU0Nzk0MzNjZmZlMTliMmFlNjE0NWFkMDk5ODViNmJkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCkBAIC00MSw2ICs0MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgRVhUQmxlbmRNaW5NYXhOYW1lLAogICAgICAgICBFWFRGcmFnRGVwdGhO
YW1lLAogICAgICAgICBFWFRTaGFkZXJUZXh0dXJlTE9ETmFtZSwKKyAgICAgICAgRVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQ05hbWUsCiAgICAgICAgIEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
Y05hbWUsCiAgICAgICAgIEVYVHNSR0JOYW1lLAogICAgICAgICBPRVNUZXh0dXJlRmxvYXROYW1l
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggYWFiOTBmOTI5NTJjYTYxMzllMWJhMjk3NDI5ZmIzM2VmNjc0NTQ1Zi4u
MzU1NjZlYjhkYTU3ZTdlMzYyYjg0MGZlODY0ZjM1OTE3NjZkMmIwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRVhURmxvYXRCbGVuZC5oIgogI2luY2x1ZGUgIkVYVEZy
YWdEZXB0aC5oIgogI2luY2x1ZGUgIkVYVFNoYWRlclRleHR1cmVMT0QuaCIKKyNpbmNsdWRlICJF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgpAQCAtMTUzLDYgKzE1NCw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBt
X2V4dFNoYWRlclRleHR1cmVMT0QuZ2V0KCk7CiAgICAgfQogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYywgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsIGVuYWJsZVN1cHBvcnRlZEV4
dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBtX2V4dFRleHR1cmVD
b21wcmVzc2lvblJHVEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSk7CiAg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNTdGFuZGFyZERlcml2YXRpdmVzLCBtX29lc1N0YW5k
YXJkRGVyaXZhdGl2ZXMsICJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiLCBlbmFibGVTdXBwb3J0
ZWRFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJfcykpOwogICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0LCBtX29lc1RleHR1cmVGbG9hdCwgIk9FU190
ZXh0dXJlX2Zsb2F0IiwgT0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKICAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxv
YXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRl
bnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwpAQCAtMjMxLDYgKzIzMyw4
IEBAIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1
cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMiX3MpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKKyAgICBpZiAobV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3JndGMiX3MpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9yZ3RjIl9zKTsKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9y
dHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdCJfcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDA0NWQ2YTZiZjkxNmU1YWYzYmEwMjlhMWI0
NjU2ZjkzNWQxMGE1ZTAuLmVlYzUzOTY4ZDJjZjhmMDA0NjcxOGUyZDAzMDkyZDU3NzAyYzhhMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRVhURmxvYXRC
bGVuZC5oIgogI2luY2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgogI2luY2x1ZGUgIkVYVFNoYWRlclRl
eHR1cmVMT0QuaCIKKyNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5j
bHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTM3MTQsNiArMzcxNSw3IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVkKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICBDSEVDS19FWFRFTlNJT04obV9leHRGcmFnRGVwdGgsICJFWFRfZnJhZ19kZXB0
aCIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dEJsZW5kTWluTWF4LCAiRVhUX2JsZW5kX21p
bm1heCIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dHNSR0IsICJFWFRfc1JHQiIpOworICAg
IENIRUNLX0VYVEVOU0lPTihtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEMsICJFWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9yZ3RjIik7CiAgICAgQ0hFQ0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CiAgICAg
Q0hFQ0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCAiV0VCS0lUX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4
dFNoYWRlclRleHR1cmVMT0QsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CkBAIC02NzMwLDYg
KzY3MzIsMjYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0ZXNSZXF1aXJl
ZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkLnVuc2FmZUdldCgpOwogICAgICAgICBicmVhazsKICAg
ICB9CisgICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKKyAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDogewor
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CisgICAgICAgIGNvbnN0IGludCBrQmxv
Y2tXaWR0aCA9IDQ7CisgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OworICAgICAg
ICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9j
a1dpZHRoOworICAgICAgICBpbnQgbnVtQmxvY2tzRG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWln
aHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2Nr
c0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXplOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VY
VDoKKyAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JH
VEMyX0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OworICAgICAgICBj
b25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0
ID0gNDsKKyAgICAgICAgaW50IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCArIGtCbG9ja1dpZHRo
IC0gMSkgLyBrQmxvY2tXaWR0aDsKKyAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0
ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAgIGJ5dGVzUmVxdWly
ZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duICoga0Jsb2NrU2l6ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQg
Zm9ybWF0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc3ODQsNiArNzgwNiw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUV4dGVuc2lvbnMoTG9zdENvbnRleHRN
b2RlIG1vZGUpCiAgICAgTE9TRV9FWFRFTlNJT04obV9leHRGcmFnRGVwdGgpOwogICAgIExPU0Vf
RVhURU5TSU9OKG1fZXh0QmxlbmRNaW5NYXgpOwogICAgIExPU0VfRVhURU5TSU9OKG1fZXh0c1JH
Qik7CisgICAgTE9TRV9FWFRFTlNJT04obV9leHRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKTsKICAg
ICBMT1NFX0VYVEVOU0lPTihtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyk7CiAgICAgTE9T
RV9FWFRFTlNJT04obV9leHRTaGFkZXJUZXh0dXJlTE9EKTsKICAgICBMT1NFX0VYVEVOU0lPTiht
X29lc1RleHR1cmVGbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggN2IyMTg2NzJhYzU2NTI4ODRmYmQ3
MTY4NmVkMjdlMDg2ODYxNTc3MC4uMjA2YWNlMzU1MGFiOWExNjMxYzUzNTM2NGZhYzE5MjNmODU1
ZWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBFWFRCbGVuZE1pbk1h
eDsKIGNsYXNzIEVYVENvbG9yQnVmZmVyRmxvYXQ7CiBjbGFzcyBFWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdDsKIGNsYXNzIEVYVEZsb2F0QmxlbmQ7CitjbGFzcyBFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDOwogY2xhc3MgRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOwogY2xhc3MgRVhUU2hhZGVy
VGV4dHVyZUxPRDsKIGNsYXNzIEVYVHNSR0I7CkBAIC00MjgsNiArNDI5LDcgQEAgcHJvdGVjdGVk
OgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYsIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMpOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYs
IFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyk7
CiAKKyAgICBmcmllbmQgY2xhc3MgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzsKICAgICBmcmll
bmQgY2xhc3MgV2ViR0xEcmF3QnVmZmVyczsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xGcmFtZWJ1
ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CkBAIC02NjksNiArNjcxLDcgQEAg
cHJvdGVjdGVkOgogICAgIFJlZlB0cjxFWFRGcmFnRGVwdGg+IG1fZXh0RnJhZ0RlcHRoOwogICAg
IFJlZlB0cjxFWFRCbGVuZE1pbk1heD4gbV9leHRCbGVuZE1pbk1heDsKICAgICBSZWZQdHI8RVhU
c1JHQj4gbV9leHRzUkdCOworICAgIFJlZlB0cjxFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDPiBt
X2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEM7CiAgICAgUmVmUHRyPEVYVFRleHR1cmVGaWx0ZXJB
bmlzb3Ryb3BpYz4gbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM7CiAgICAgUmVmUHRyPEVY
VFNoYWRlclRleHR1cmVMT0Q+IG1fZXh0U2hhZGVyVGV4dHVyZUxPRDsKICAgICBSZWZQdHI8T0VT
VGV4dHVyZUZsb2F0PiBtX29lc1RleHR1cmVGbG9hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYzA3YjNjMDA1ZjQyYjljZjczYmZh
MDYxNzYxODU4ZDU1Njk3MTRmNy4uMGY1ZGJiYWJmYjE0OGRmMGFkMjMyN2UwNGVkMzEwZmQ3MThl
MWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9u
c0dMLmgKQEAgLTIxOSw2ICsyMTksMTIgQEAgcHVibGljOgogICAgICAgICBDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4OTNEQywKICAgICAgICAgQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQsCiAKKyAgICAgICAgLy8gR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fcmd0YworICAgICAgICBDT01QUkVTU0VEX1JFRF9SR1RDMV9F
WFQgPSAweDhEQkIsCisgICAgICAgIENPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQgPSAw
eDhEQkMsCisgICAgICAgIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRCwK
KyAgICAgICAgQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRSwK
KwogICAgICAgICAvLyBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAg
VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkUsCiAgICAgICAgIE1BWF9URVhUVVJF
X01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OGRmMWIxYzZmNWM0MjNmOGU1
MmRhMDhhNDNkMTdlMTU0NzlmZWU4Li4wYjU1ZjYzNGViZWE5ZTA5MTFhZmU4NGU5MmM5NzliNDgw
Y2RkMWY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMTAtMDYgIEphbWVzIERhcnBpbmlh
biAgPGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzE5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUnVzc2VsbC4KKworICAgICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Np
b24tcmd0Yy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNp
b25zL3MzdGMtYW5kLXJndGMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9j
b25mb3JtYW5jZS9leHRlbnNpb25zL3MzdGMtYW5kLXJndGMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0
Yy1hbmQtcmd0Yy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanM6IEFkZGVkLgor
CiAyMDIwLTA5LTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFkZCBub24tYW5pbWF0ZWQgc3VwcG9ydCBmb3IgdGhlIENTUyB0cmFuc2xhdGUgcHJvcGVy
dHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
ZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMzBmNjI2Njc1ODllODVjNDc4NGNmMTFlM2RjZWQ5
OWM2YWIzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93
IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rlc3Q6IC4uLy4uL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1
cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1
cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOTk5ZjVmZGZiMWNkNDZiMmIy
ZGVkMTkxMzcxOTE0MjYyZDU3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRt
bApAQCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29u
Zm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciBleHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0
bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IHJ1bnMgdGhlIFdl
YkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZB
SUwuPC9wPgorVGVzdDogPGEgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwi
Pi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
ZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sPC9hPgorPGRpdiBpZD0iaWZyYW1lIj4K
KzxpZnJhbWUgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRtbCIgd2lkdGg9Ijgw
MCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzk1NmE5NDY4NjVkYzdhM2YxNjVlYzcxODYzNjUxOGJjZTk3ODZmNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
czN0Yy1hbmQtcmd0Yy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgcnVu
cyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBB
U1Mgb3IgRkFJTC4KKworVGVzdDogLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLmh0bWwKK1BBU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1y
Z3RjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY2ODA1OGQ5YzhkM2MxOWJkZjUxZjcyNWJjMTNiNWE3OTUx
ZTAwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4
dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0gVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLXdlYmdsLXRlc3RzLnB5LiBETyBOT1Qg
RURJVCAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdyYXBwZXIgZm9yIHMzdGMt
YW5kLXJndGMuaHRtbDwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Qg
cnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRz
IFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3MzdGMtYW5kLXJndGMuaHRtbCI+Li4v
Li4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3Rj
LWFuZC1yZ3RjLmh0bWw8L2E+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4uLy4u
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1h
bmQtcmd0Yy5odG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rpdj4K
KzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
ZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyYTJkNDE2OTA4
NzU1MjY5NzRmMGNlZGYxNmVjY2FmZGYyZTBiZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRtbApAQCAtMCwwICsxLDE0NiBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8TElOSyByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIp
OworCitkZWJ1ZygiIik7CisKK3ZhciB2YWxpZEZvcm1hdHMgPSB7CisgIENPTVBSRVNTRURfUkVE
X1JHVEMxX0VYVDogMHg4REJCLAorICBDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOiAw
eDhEQkMsCisgIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDogMHg4REJELAorICBDT01Q
UkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOiAweDhEQkUKK307CisKK2Z1bmN0aW9u
IGV4cGVjdGVkQnl0ZUxlbmd0aCh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpIHsKKyAgaWYgKGZvcm1h
dCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUIHx8IGZvcm1hdCA9PSB2
YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCkgeworICAgIHJldHVy
biBNYXRoLmNlaWwod2lkdGggLyA0KSAqIE1hdGguY2VpbChoZWlnaHQgLyA0KSAqIDg7CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIE1hdGguY2VpbCh3aWR0aCAvIDQpICogTWF0aC5jZWlsKGhl
aWdodCAvIDQpICogMTY7CisgIH0KK30KKworZnVuY3Rpb24gZ2V0QmxvY2tEaW1lbnNpb25zKGZv
cm1hdCkgeworICByZXR1cm4ge3dpZHRoOiA0LCBoZWlnaHQ6IDR9OworfQorCit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgY3R1ID0gQ29tcHJlc3NlZFRleHR1cmVVdGlsczsKK3ZhciBj
b250ZXh0VmVyc2lvbiA9IHd0dS5nZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGV4dDsKKwordmFyIGZvcm1hdHMgPSBudWxs
OworCitmdW5jdGlvbiBydW5UZXN0RXh0ZW5zaW9uKCkgeworICAvLyBUZXN0IHRoYXQgZW51bSB2
YWx1ZXMgYXJlIGxpc3RlZCBjb3JyZWN0bHkgaW4gc3VwcG9ydGVkIGZvcm1hdHMgYW5kIGluIHRo
ZSBleHRlbnNpb24gb2JqZWN0LgorICBjdHUudGVzdENvbXByZXNzZWRGb3JtYXRzTGlzdGVkKGds
LCB2YWxpZEZvcm1hdHMpOworICBjdHUudGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQoZXh0LCB2
YWxpZEZvcm1hdHMpOworICAvLyBUZXN0IHRoYXQgdGV4dHVyZSB1cGxvYWQgYnVmZmVyIHNpemUg
aXMgdmFsaWRhdGVkIGNvcnJlY3RseS4KKyAgY3R1LnRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1
ZmZlclNpemUoZ2wsIHZhbGlkRm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCBnZXRCbG9ja0Rp
bWVuc2lvbnMpOworICAvLyBUZXN0IFRleFN1YkltYWdlIHZhbGlkYXRpb24gb24gZGltZW5zaW9u
cworICAvLyBDb21wcmVzc2VkVGV4U3ViSW1hZ2UqIHdpbGwgcmVzdWx0IGluIGFuCisgIC8vIElO
VkFMSURfT1BFUkFUSU9OIGVycm9yIG9ubHkgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBvY2N1cnM6CisgIC8vICogPHdpZHRoPiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBh
bmQgPHdpZHRoPiBwbHVzIDx4b2Zmc2V0PiBpcyBub3QKKyAgLy8gZXF1YWwgdG8gVEVYVFVSRV9X
SURUSDsKKyAgLy8gKiA8aGVpZ2h0PiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQgPGhl
aWdodD4gcGx1cyA8eW9mZnNldD4gaXMKKyAgLy8gICAgICAgICAgIG5vdCBlcXVhbCB0byBURVhU
VVJFX0hFSUdIVDsgb3IKKyAgLy8gKiA8eG9mZnNldD4gb3IgPHlvZmZzZXQ+IGlzIG5vdCBhIG11
bHRpcGxlIG9mIGZvdXIuCisgIGN0dS50ZXN0VGV4U3ViSW1hZ2VEaW1lbnNpb25zKGdsLCB2YWxp
ZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgZ2V0QmxvY2tEaW1lbnNpb25zLAorICAgIDE2
LCAxNiwgWworICAgICAgeyB4b2Zmc2V0OiAwLCB5b2Zmc2V0OiAwLCB3aWR0aDogNCwgaGVpZ2h0
OiAzLAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6
ICJoZWlnaHQgaXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKKyAgICAgIHsgeG9mZnNldDogMCwg
eW9mZnNldDogMCwgd2lkdGg6IDMsIGhlaWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGds
LklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAid2lkdGggaXMgbm90IGEgbXVsdGlwbGUgb2Yg
NCIgfSwKKyAgICAgIHsgeG9mZnNldDogMSwgeW9mZnNldDogMCwgd2lkdGg6IDQsIGhlaWdodDog
NCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAi
eG9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiA0IiB9LAorICAgICAgeyB4b2Zmc2V0OiAwLCB5
b2Zmc2V0OiAxLCB3aWR0aDogNCwgaGVpZ2h0OiA0LAorICAgICAgICBleHBlY3RhdGlvbjogZ2wu
SU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJ5b2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9m
IDQiIH0sCisgICAgICB7IHhvZmZzZXQ6IDEyLCB5b2Zmc2V0OiAxMiwgd2lkdGg6IDQsIGhlaWdo
dDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMgdmFs
aWQiIH0sCisgIF0pOworCisgIC8vIFRlc3QgVGV4SW1hZ2UgdmFsaWRhdGlvbiBvbiBsZXZlbCBk
aW1lbnNpb25zIGNvbWJpbmF0aW9ucy4KKyAgLy8gV2hlbiBsZXZlbCBlcXVhbHMgMCwgd2lkdGgg
YW5kIGhlaWdodCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgLy8gV2hlbiBsZXZlbCBpcyBs
YXJnZXIgdGhhbiAwLCB0aGlzIGNvbnN0cmFpbnQgZG9lc24ndCBhcHBseS4KKyAgY3R1LnRlc3RU
ZXhJbWFnZUxldmVsRGltZW5zaW9ucyhnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5n
dGgsIGdldEJsb2NrRGltZW5zaW9ucywKKyAgICBbCisgICAgICB7IGxldmVsOiAwLCB3aWR0aDog
NCwgaGVpZ2h0OiAzLAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04s
IG1lc3NhZ2U6ICJsZXZlbCBpcyAwLCBoZWlnaHQgaXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwK
KyAgICAgIHsgbGV2ZWw6IDAsIHdpZHRoOiAzLCBoZWlnaHQ6IDQsCisgICAgICAgIGV4cGVjdGF0
aW9uOiBnbC5JTlZBTElEX09QRVJBVElPTiwgbWVzc2FnZTogImxldmVsIGlzIDAsIHdpZHRoIGlz
IG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCisgICAgICB7IGxldmVsOiAwLCB3aWR0aDogMiwgaGVp
Z2h0OiAyLAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3Nh
Z2U6ICJsZXZlbCBpcyAwLCB3aWR0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiA0IiB9LAorICAgICAg
eyBsZXZlbDogMCwgd2lkdGg6IDQsIGhlaWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGds
Lk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMgdmFsaWQiIH0sCisgICAgICB7IGxldmVsOiAxLCB3aWR0
aDogMiwgaGVpZ2h0OiAyLAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuTk9fRVJST1IsIG1lc3Nh
Z2U6ICJsZXZlbCA+IDAsIGlzIHZhbGlkIiB9LAorICAgICAgeyBsZXZlbDogMiwgd2lkdGg6IDEs
IGhlaWdodDogMSwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAi
bGV2ZWwgPiAwLCBpcyB2YWxpZCIgfSwKKyAgXSk7CisKKyAgLy8gVGVzdCB0aGF0IFJHVEMgZW51
bXMgYXJlIG5vdCBhY2NlcHRlZCBieSB0ZXhJbWFnZTJECisgIGlmIChjb250ZXh0VmVyc2lvbiA+
PSAyKSB7CisgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworCisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBleHQuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhULCA0LCA0LCAwLCBnbC5SRUQsIGds
LlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAiQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUIGZhaWxzIHdpdGggdGV4
SW1hZ2UyRCIpOworCisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBleHQuQ09N
UFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCwgNCwgNCwgMCwgZ2wuUkVELCBnbC5CWVRFLCBu
dWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
IkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQgZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7
CisKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGV4dC5DT01QUkVTU0VEX1JF
RF9HUkVFTl9SR1RDMl9FWFQsIDQsIDQsIDAsIGdsLlJHLCBnbC5VTlNJR05FRF9CWVRFLCBudWxs
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNP
TVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCBmYWlscyB3aXRoIHRleEltYWdlMkQiKTsKKwor
ICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZXh0LkNPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQsIDQsIDQsIDAsIGdsLlJHLCBnbC5CWVRFLCBudWxsKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNPTVBSRVNT
RURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7CisK
KyAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMiKTsKKworICAg
IGN0dS50ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2YWlsYWJsZVdoZW5FeHRlbnNpb25EaXNhYmxl
ZChnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIDQpOworCisgICAgZXh0ID0g
Z2wuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIik7CisKKyAgICB3
dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVkVGVzdChnbCwgIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X3JndGMiLCBleHQgIT09IG51bGwpOworCisgICAgaWYgKGV4dCAhPT0gbnVsbCkgeworICAgICAg
cnVuVGVzdEV4dGVuc2lvbigpOworICAgIH0KKyAgfQorfQorCitydW5UZXN0KCk7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1y
Z3RjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODBmMTZkMGYxMGU3NDFjMzU0N2I0YmE4YWZjMmUyM2I0MWVh
MTEwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sCkBA
IC0wLDAgKzEsOTc0IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2NvbXByZXNzZWQtdGV4dHVyZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+V2ViR0wgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3MzdGMgYW5kIEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPHN0eWxlPgoraW1nIHsKKyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyBtYXJn
aW4tcmlnaHQ6IDFlbTsKK30KKworLnRlc3RpbWFnZXMgYnIgeworICBjbGVhcjogYm90aDsKK30K
KworLnRlc3RpbWFnZXMgPiBkaXYgeworICBmbG9hdDogbGVmdDsKKyAgbWFyZ2luOiAxZW07Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHN0eWxlPSJ3aWR0aDog
OHB4OyBoZWlnaHQ6IDhweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0
aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMgZXh0
ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIEl0IGFsc28gdGVzdHMgdGhlIHJlbGF0ZWQgZm9y
bWF0cyBmcm9tIHRoZSBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIGV4dGVuc2lvbi4iKTsK
KworZGVidWcoIiIpOworCisvKgorQkMxIChEWFQxKSBibG9jaworZTAgPSBbICAwLCAyNTUsIDBd
CitlMSA9IFsyNTUsICAgMCwgMF0KK2UwIDwgZTEsIHNvIGl0IHVzZXMgMy1jb2xvciBtb2RlCisK
K2xvY2FsIHBhbGV0dGUKKyAgICAwOiBbICAwLCAyNTUsIDAsIDI1NV0KKyAgICAxOiBbMjU1LCAg
IDAsIDAsIDI1NV0KKyAgICAyOiBbMTI4LCAxMjgsIDAsIDI1NV0KKyAgICAzOiBbICAwLCAgIDAs
IDAsIDI1NV0gLy8gZm9yIEJDMSBSR0IKKyAgICAzOiBbICAwLCAgIDAsIDAsICAgMF0gLy8gZm9y
IEJDMSBSR0JBCitzZWxlY3RvcnMKKyAgICAzIDIgMSAwCisgICAgMiAyIDEgMAorICAgIDEgMSAx
IDAKKyAgICAwIDAgMCAwCisKK0V4dGVuZGluZyB0aGlzIGJsb2NrIHdpdGggb3BhcXVlIGFscGhh
IGFuZCB1cGxvYWRpbmcgYXMgQkMyIG9yIEJDMword2lsbCBnZW5lcmF0ZSB3cm9uZyBjb2xvcnMg
YmVjYXVzZSBCQzIgYW5kIEJDMyBkbyBub3QgaGF2ZSAzLWNvbG9yIG1vZGUuCisqLwordmFyIGlt
Z180eDRfcmdiYV9keHQxID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4RTAsIDB4MDcsIDB4MDAs
IDB4RjgsIDB4MUIsIDB4MUEsIDB4MTUsIDB4MDAKK10pOworCisvKgorQkMyIChEWFQzKSBibG9j
aworCitRdWFudGl6ZWQgYWxwaGEgdmFsdWVzCisgICAgMCAxIDIgMworICAgIDQgNSA2IDcKKyAg
ICA4IDkgQSBCCisgICAgQyBEIEUgRgorCitSR0IgYmxvY2sKK2UwID0gWzI1NSwgICAwLCAwXQor
ZTEgPSBbICAwLCAyNTUsIDBdCitCQzIgaGFzIG9ubHkgNC1jb2xvciBtb2RlCisKK2xvY2FsIHBh
bGV0dGUKKyAgICAwOiBbMjU1LCAgIDAsIDBdCisgICAgMTogWyAgMCwgMjU1LCAwXQorICAgIDI6
IFsxNzAsICA4NSwgMF0KKyAgICAzOiBbIDg1LCAxNzAsIDBdCitzZWxlY3RvcnMKKyAgICAwIDEg
MiAzCisgICAgMSAxIDIgMworICAgIDIgMiAyIDMKKyAgICAzIDMgMyAzCisqLwordmFyIGltZ180
eDRfcmdiYV9keHQzID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4MTAsIDB4MzIsIDB4NTQsIDB4
NzYsIDB4OTgsIDB4QkEsIDB4REMsIDB4RkUsCisgICAgMHgwMCwgMHhGOCwgMHhFMCwgMHgwNywg
MHhFNCwgMHhFNSwgMHhFQSwgMHhGRgorXSk7CisKKy8qCitCQzMgKERYVDUpIGJsb2NrCisKK0Fs
cGhhIGJsb2NrIChha2EgRFhUNUEpCitlMCA9IDI1NQorZTEgPSAwCitlMCA+IGUxLCBzbyB1c2lu
ZyA2IGludGVybWVkaWF0ZSBwb2ludHMKK2xvY2FsIHBhbGV0dGUKKyAgICAyNTUsIDAsIDIxOSwg
MTgyLCAxNDYsIDEwOSwgNzMsIDM2CitzZWxlY3RvcnMKKyAgICAwIDEgMiAzCisgICAgMSAyIDMg
NAorICAgIDIgMyA0IDUKKyAgICAzIDQgNSA2CisKK1JHQiBibG9jaworZTAgPSBbMjU1LCAgIDAs
IDBdCitlMSA9IFsgIDAsIDI1NSwgMF0KK0JDMyBoYXMgb25seSA0LWNvbG9yIG1vZGUKKworbG9j
YWwgcGFsZXR0ZQorICAgIDA6IFsyNTUsICAgMCwgMF0KKyAgICAxOiBbICAwLCAyNTUsIDBdCisg
ICAgMjogWzE3MCwgIDg1LCAwXQorICAgIDM6IFsgODUsIDE3MCwgMF0KK3NlbGVjdG9ycworICAg
IDMgMiAxIDAKKyAgICAzIDIgMSAxCisgICAgMyAyIDIgMgorICAgIDMgMyAzIDMKKyovCit2YXIg
aW1nXzR4NF9yZ2JhX2R4dDUgPSBuZXcgVWludDhBcnJheShbCisgICAgMHhGRiwgMHgwMCwgMHg4
OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKKyAgICAweDAwLCAweEY4LCAweEUwLCAw
eDA3LCAweDFCLCAweDVCLCAweEFCLCAweEZGCitdKTsKKworLy8gQkM0IC0ganVzdCB0aGUgYWxw
aGEgYmxvY2sgZnJvbSBCQzMgYWJvdmUsIGludGVycHJldGVkIGFzIHRoZSByZWQgY2hhbm5lbC4K
K3ZhciBpbWdfNHg0X3JfYmM0ID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4RkYsIDB4MDAsIDB4
ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCitdKTsKKworLy8gQkM1IC0gVHdvIEJD
MyBhbHBoYSBibG9ja3MsIGludGVycHJldGVkIGFzIHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxz
LgordmFyIGltZ180eDRfcmdfYmM1ID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4RkYsIDB4MDAs
IDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCisgICAgMHgwMCwgMHhGRiwgMHg4
OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKK10pOworCisvLyBTaWduZWQgQkM0IC0g
Y2hhbmdlIGVuZHBvaW50cyB0byB1c2UgZnVsbCAtMSB0byAxIHJhbmdlLgordmFyIGltZ180eDRf
c2lnbmVkX3JfYmM0ID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4N0YsIDB4ODAsIDB4ODgsIDB4
MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCitdKTsKKworLy8gU2lnbmVkIEJDNSAtIFR3byBC
QzMgYWxwaGEgYmxvY2tzLCBpbnRlcnByZXRlZCBhcyB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVs
cy4KK3ZhciBpbWdfNHg0X3NpZ25lZF9yZ19iYzUgPSBuZXcgVWludDhBcnJheShbCisgICAgMHg3
RiwgMHg4MCwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKKyAgICAweDgwLCAw
eDdGLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorXSk7CisKKworLyoKKzh4
OCBibG9jayBlbmRwb2ludHMgdXNlIGhhbGYtaW50ZW5zaXR5IHZhbHVlcyAoYXBwZWFyIGRhcmtl
ciB0aGFuIDR4NCkKKyovCit2YXIgaW1nXzh4OF9yZ2JhX2R4dDEgPSBuZXcgVWludDhBcnJheShb
CisgICAgMHhlMCwweDAzLDB4MDAsMHg3OCwweDEzLDB4MTAsMHgxNSwweDAwLAorICAgIDB4MGYs
MHgwMCwweGUwLDB4N2IsMHgxMSwweDEwLDB4MTUsMHgwMCwKKyAgICAweGUwLDB4MDMsMHgwZiww
eDc4LDB4NDQsMHg0NSwweDQwLDB4NTUsCisgICAgMHgwZiwweDAwLDB4ZWYsMHgwMywweDQ0LDB4
NDUsMHg0MCwweDU1CitdKTsKK3ZhciBpbWdfOHg4X3JnYmFfZHh0MyA9IG5ldyBVaW50OEFycmF5
KFsKKyAgICAweGY2LDB4ZmYsMHhmNiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHgwMCwweDc4
LDB4ZTAsMHgwMywweDQ0LDB4NDUsMHg0MCwweDU1LAorICAgIDB4ZmYsMHhmZiwweGZmLDB4ZmYs
MHhmZiwweGZmLDB4ZmYsMHhmZiwweGUwLDB4N2IsMHgwZiwweDAwLDB4NDQsMHg0NSwweDQwLDB4
NTUsCisgICAgMHhmZiwweGZmLDB4ZmYsMHhmZiwweGY2LDB4ZmYsMHhmNiwweGZmLDB4MGYsMHg3
OCwweGUwLDB4MDMsMHgxMSwweDEwLDB4MTUsMHgwMCwKKyAgICAweGZmLDB4ZmYsMHhmZiwweGZm
LDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhlZiwweDAzLDB4MGYsMHgwMCwweDExLDB4MTAsMHgxNSww
eDAwCitdKTsKK3ZhciBpbWdfOHg4X3JnYmFfZHh0NSA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAw
eGZmLDB4NjksMHgwMSwweDEwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDc4LDB4ZTAsMHgw
MywweDQ0LDB4NDUsMHg0MCwweDU1LAorICAgIDB4ZmYsMHhmZiwweDAwLDB4MDAsMHgwMCwweDAw
LDB4MDAsMHgwMCwweGUwLDB4N2IsMHgwZiwweDAwLDB4NDQsMHg0NSwweDQwLDB4NTUsCisgICAg
MHhmZiwweDY5LDB4MDAsMHgwMCwweDAwLDB4MDEsMHgxMCwweDAwLDB4MGYsMHg3OCwweGUwLDB4
MDMsMHgxMSwweDEwLDB4MTUsMHgwMCwKKyAgICAweGZmLDB4ZmYsMHgwMCwweDAwLDB4MDAsMHgw
MCwweDAwLDB4MDAsMHhlZiwweDAzLDB4ZWYsMHgwMCwweDExLDB4MTAsMHgxNSwweDAwCitdKTsK
K3ZhciBpbWdfOHg4X3JfYmM0ID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4N0YsIDB4MDAsIDB4
ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCisgICAgMHg3RiwgMHgwMCwgMHg4OCwg
MHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKKyAgICAweDdGLCAweDAwLCAweDg4LCAweDE2
LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorICAgIDB4N0YsIDB4MDAsIDB4ODgsIDB4MTYsIDB4
OEQsIDB4MUEsIDB4M0IsIDB4RDYsCitdKTsKK3ZhciBpbWdfOHg4X3JnX2JjNSA9IG5ldyBVaW50
OEFycmF5KFsKKyAgICAweDdGLCAweDAwLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAw
eEQ2LCAweDAwLCAweDdGLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorICAg
IDB4N0YsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsIDB4MDAsIDB4
N0YsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCisgICAgMHg3RiwgMHgwMCwg
MHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwgMHgwMCwgMHg3RiwgMHg4OCwgMHgx
NiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKKyAgICAweDdGLCAweDAwLCAweDg4LCAweDE2LCAw
eDhELCAweDFBLCAweDNCLCAweEQ2LCAweDAwLCAweDdGLCAweDg4LCAweDE2LCAweDhELCAweDFB
LCAweDNCLCAweEQ2LAorXSk7CisKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjdHUg
PSBDb21wcmVzc2VkVGV4dHVyZVV0aWxzOwordmFyIGNvbnRleHRWZXJzaW9uID0gd3R1LmdldERl
ZmF1bHQzRENvbnRleHRWZXJzaW9uKCk7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHth
bnRpYWxpYXM6IGZhbHNlfSk7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChn
bCk7Cit2YXIgZXh0ID0gbnVsbDsKK3ZhciBleHRfcmd0YyA9IHt9OwordmFyIHZhbyA9IG51bGw7
Cit2YXIgdmFsaWRGb3JtYXRzID0geworICAgIENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQg
IDogMHg4M0YwLAorICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIDogMHg4M0YxLAor
ICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUIDogMHg4M0YyLAorICAgIENPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfRVhUIDogMHg4M0YzLAorfTsKK3ZhciBuYW1lOwordmFyIHN1cHBv
cnRlZEZvcm1hdHM7CisKK2lmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0
IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2UgeworICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRl
eHQgZXhpc3RzIik7CisKKyAgICAvLyBSdW4gdGVzdHMgd2l0aCBleHRlbnNpb24gZGlzYWJsZWQK
KyAgICBjdHUudGVzdENvbXByZXNzZWRGb3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0ZW5zaW9uRGlz
YWJsZWQoZ2wsIHZhbGlkRm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCA0KTsKKworICAgIC8v
IFF1ZXJ5IHRoZSBleHRlbnNpb24gYW5kIHN0b3JlIGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBh
Y2Nlc3MgaXQKKyAgICBleHQgPSB3dHUuZ2V0RXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMoZ2ws
ICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpOworICAgIGlmICghZXh0KSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoIk5vIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIHN1cHBvcnQg
LS0gdGhpcyBpcyBsZWdhbCIpOworICAgICAgICB3dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVkVGVz
dChnbCwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIiwgZmFsc2UpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBlbmFibGVkIFdFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9zM3RjIGV4dGVuc2lvbiIpOworCisgICAgICAgIHd0dS5ydW5FeHRlbnNp
b25TdXBwb3J0ZWRUZXN0KGdsLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiLCB0cnVl
KTsKKyAgICAgICAgcnVuVGVzdEV4dGVuc2lvbigpOworICAgIH0KKyAgICBleHRfcmd0YyA9IHd0
dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgIkVYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3JndGMiKTsKKyAgICBpZiAoZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUKSB7
CisgICAgICAgIGV4dCA9IGV4dCB8fCB7fTsKKyAgICAgICAgLy8gTWFrZSBjdHUuZm9ybWF0VG9T
dHJpbmcgd29yayBmb3Igcmd0YyBlbnVtcy4KKyAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIGV4
dF9yZ3RjKQorICAgICAgICAgICAgZXh0W25hbWVdID0gZXh0X3JndGNbbmFtZV07CisgICAgICAg
IHJ1blRlc3RSR1RDKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBleHBlY3RlZEJ5dGVMZW5ndGgo
d2lkdGgsIGhlaWdodCwgZm9ybWF0KSB7CisgICAgaWYgKGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMu
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgfHwgZm9ybWF0ID09IHZhbGlkRm9ybWF0cy5D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCkgeworICAgICAgICByZXR1cm4gTWF0aC5mbG9v
cigod2lkdGggKyAzKSAvIDQpICogTWF0aC5mbG9vcigoaGVpZ2h0ICsgMykgLyA0KSAqIDE2Owor
ICAgIH0KKyAgICByZXR1cm4gTWF0aC5mbG9vcigod2lkdGggKyAzKSAvIDQpICogTWF0aC5mbG9v
cigoaGVpZ2h0ICsgMykgLyA0KSAqIDg7Cit9CisKK2Z1bmN0aW9uIGdldEJsb2NrRGltZW5zaW9u
cyhmb3JtYXQpIHsKKyAgICByZXR1cm4ge3dpZHRoOiA0LCBoZWlnaHQ6IDR9OworfQorCitmdW5j
dGlvbiBydW5UZXN0RXh0ZW5zaW9uKCkgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVz
dGluZyBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpOworCisgICAgLy8gVGVzdCB0aGF0
IGVudW0gdmFsdWVzIGFyZSBsaXN0ZWQgY29ycmVjdGx5IGluIHN1cHBvcnRlZCBmb3JtYXRzIGFu
ZCBpbiB0aGUgZXh0ZW5zaW9uIG9iamVjdC4KKyAgICBjdHUudGVzdENvbXByZXNzZWRGb3JtYXRz
TGlzdGVkKGdsLCB2YWxpZEZvcm1hdHMpOworICAgIGN0dS50ZXN0Q29ycmVjdEVudW1WYWx1ZXNJ
bkV4dChleHQsIHZhbGlkRm9ybWF0cyk7CisgICAgLy8gVGVzdCB0aGF0IHRleHR1cmUgdXBsb2Fk
IGJ1ZmZlciBzaXplIGlzIHZhbGlkYXRlZCBjb3JyZWN0bHkuCisgICAgY3R1LnRlc3RGb3JtYXRS
ZXN0cmljdGlvbnNPbkJ1ZmZlclNpemUoZ2wsIHZhbGlkRm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVu
Z3RoLCBnZXRCbG9ja0RpbWVuc2lvbnMpOworCisgICAgLy8gVGVzdCBlYWNoIGZvcm1hdAorICAg
IHRlc3REWFQxX1JHQigpOworICAgIHRlc3REWFQxX1JHQkEoKTsKKyAgICB0ZXN0RFhUM19SR0JB
KCk7CisgICAgdGVzdERYVDVfUkdCQSgpOworCisgICAgLy8gVGVzdCBjb21wcmVzc2VkIFBCT3Mg
d2l0aCBhIHNpbmdsZSBmb3JtYXQKKyAgICBpZiAoY29udGV4dFZlcnNpb24gPj0gMikgeworICAg
ICAgICB0ZXN0RFhUNV9SR0JBX1BCTygpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdFJH
VEMoKSB7CisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7ICAgd2lkdGg6IDQsCisgICAgICAg
ICAgICBoZWlnaHQ6IDQsCisgICAgICAgICAgICBjaGFubmVsczogMSwKKyAgICAgICAgICAgIGRh
dGE6IGltZ180eDRfcl9iYzQsCisgICAgICAgICAgICBmb3JtYXQ6IGV4dF9yZ3RjLkNPTVBSRVNT
RURfUkVEX1JHVEMxX0VYVCwKKyAgICAgICAgICAgIGhhc0FscGhhOiBmYWxzZSwKKyAgICAgICAg
fSwKKyAgICAgICAgeyAgIHdpZHRoOiA0LAorICAgICAgICAgICAgaGVpZ2h0OiA0LAorICAgICAg
ICAgICAgY2hhbm5lbHM6IDEsCisgICAgICAgICAgICBkYXRhOiBpbWdfNHg0X3NpZ25lZF9yX2Jj
NCwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0X3JndGMuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JH
VEMxX0VYVCwKKyAgICAgICAgICAgIGhhc0FscGhhOiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAg
ICAgeyAgIHdpZHRoOiA0LAorICAgICAgICAgICAgaGVpZ2h0OiA0LAorICAgICAgICAgICAgY2hh
bm5lbHM6IDIsCisgICAgICAgICAgICBkYXRhOiBpbWdfNHg0X3JnX2JjNSwKKyAgICAgICAgICAg
IGZvcm1hdDogZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhULAorICAgICAg
ICAgICAgaGFzQWxwaGE6IGZhbHNlLAorICAgICAgICB9LAorICAgICAgICB7ICAgd2lkdGg6IDQs
CisgICAgICAgICAgICBoZWlnaHQ6IDQsCisgICAgICAgICAgICBjaGFubmVsczogMiwKKyAgICAg
ICAgICAgIGRhdGE6IGltZ180eDRfc2lnbmVkX3JnX2JjNSwKKyAgICAgICAgICAgIGZvcm1hdDog
ZXh0X3JndGMuQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCwKKyAgICAgICAg
ICAgIGhhc0FscGhhOiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAgIHdpZHRoOiA4LAor
ICAgICAgICAgICAgaGVpZ2h0OiA4LAorICAgICAgICAgICAgY2hhbm5lbHM6IDIsCisgICAgICAg
ICAgICBkYXRhOiBpbWdfOHg4X3JfYmM0LAorICAgICAgICAgICAgZm9ybWF0OiBleHRfcmd0Yy5D
T01QUkVTU0VEX1JFRF9SR1RDMV9FWFQsCisgICAgICAgICAgICBoYXNBbHBoYTogZmFsc2UsCisg
ICAgICAgICAgICBzdWJYMDogMCwKKyAgICAgICAgICAgIHN1YlkwOiAwLAorICAgICAgICAgICAg
c3ViV2lkdGg6IDQsCisgICAgICAgICAgICBzdWJIZWlnaHQ6IDQsCisgICAgICAgICAgICBzdWJE
YXRhOiBpbWdfNHg0X3JfYmM0LAorICAgICAgICB9LAorICAgICAgICB7ICAgd2lkdGg6IDgsCisg
ICAgICAgICAgICBoZWlnaHQ6IDgsCisgICAgICAgICAgICBjaGFubmVsczogMiwKKyAgICAgICAg
ICAgIGRhdGE6IGltZ184eDhfcmdfYmM1LAorICAgICAgICAgICAgZm9ybWF0OiBleHRfcmd0Yy5D
T01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQsCisgICAgICAgICAgICBoYXNBbHBoYTogZmFs
c2UsCisgICAgICAgICAgICBzdWJYMDogMCwKKyAgICAgICAgICAgIHN1YlkwOiAwLAorICAgICAg
ICAgICAgc3ViV2lkdGg6IDQsCisgICAgICAgICAgICBzdWJIZWlnaHQ6IDQsCisgICAgICAgICAg
ICBzdWJEYXRhOiBpbWdfNHg0X3JnX2JjNSwKKyAgICAgICAgfSwKKyAgICBdOworICAgIHRlc3RE
WFRUZXh0dXJlcyh0ZXN0cyk7Cit9CisKK2Z1bmN0aW9uIHRlc3REWFQxX1JHQigpIHsKKyAgICB2
YXIgdGVzdHMgPSBbCisgICAgICAgIHsgICB3aWR0aDogNCwKKyAgICAgICAgICAgIGhlaWdodDog
NCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiAzLAorICAgICAgICAgICAgZGF0YTogaW1nXzR4NF9y
Z2JhX2R4dDEsCisgICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhULAorICAgICAgICAgICAgaGFzQWxwaGE6IGZhbHNlLAorICAgICAgICB9LAorICAgICAg
ICB7ICAgd2lkdGg6IDgsCisgICAgICAgICAgICBoZWlnaHQ6IDgsCisgICAgICAgICAgICBjaGFu
bmVsczogMywKKyAgICAgICAgICAgIGRhdGE6IGltZ184eDhfcmdiYV9keHQxLAorICAgICAgICAg
ICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAgICAg
IGhhc0FscGhhOiBmYWxzZSwKKyAgICAgICAgICAgIHN1YlgwOiAwLAorICAgICAgICAgICAgc3Vi
WTA6IDAsCisgICAgICAgICAgICBzdWJXaWR0aDogNCwKKyAgICAgICAgICAgIHN1YkhlaWdodDog
NCwKKyAgICAgICAgICAgIHN1YkRhdGE6IGltZ180eDRfcmdiYV9keHQxCisgICAgICAgIH0KKyAg
ICBdOworICAgIHRlc3REWFRUZXh0dXJlcyh0ZXN0cyk7Cit9CisKK2Z1bmN0aW9uIHRlc3REWFQx
X1JHQkEoKSB7CisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7ICAgd2lkdGg6IDQsCisgICAg
ICAgICAgICBoZWlnaHQ6IDQsCisgICAgICAgICAgICBjaGFubmVsczogNCwKKyAgICAgICAgICAg
IGRhdGE6IGltZ180eDRfcmdiYV9keHQxLAorICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lh
bCBjYXNlIC0tIHRoZSB0ZXh0dXJlIGlzIHN0aWxsIG9wYXF1ZQorICAgICAgICAgICAgLy8gdGhv
dWdoIGl0J3MgUkdCQS4KKyAgICAgICAgICAgIGhhc0FscGhhOiBmYWxzZSwKKyAgICAgICAgfSwK
KyAgICAgICAgeyAgIHdpZHRoOiA4LAorICAgICAgICAgICAgaGVpZ2h0OiA4LAorICAgICAgICAg
ICAgY2hhbm5lbHM6IDQsCisgICAgICAgICAgICBkYXRhOiBpbWdfOHg4X3JnYmFfZHh0MSwKKyAg
ICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULAorICAg
ICAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSAtLSB0aGUgdGV4dHVyZSBpcyBzdGls
bCBvcGFxdWUKKyAgICAgICAgICAgIC8vIHRob3VnaCBpdCdzIFJHQkEuCisgICAgICAgICAgICBo
YXNBbHBoYTogZmFsc2UsCisgICAgICAgIH0KKyAgICBdOworICAgIHRlc3REWFRUZXh0dXJlcyh0
ZXN0cyk7Cit9CisKK2Z1bmN0aW9uIHRlc3REWFQzX1JHQkEoKSB7CisgICAgdmFyIHRlc3RzID0g
WworICAgICAgICB7ICAgd2lkdGg6IDQsCisgICAgICAgICAgICBoZWlnaHQ6IDQsCisgICAgICAg
ICAgICBjaGFubmVsczogNCwKKyAgICAgICAgICAgIGRhdGE6IGltZ180eDRfcmdiYV9keHQzLAor
ICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQsCisg
ICAgICAgICAgICBoYXNBbHBoYTogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAgIHdpZHRo
OiA4LAorICAgICAgICAgICAgaGVpZ2h0OiA4LAorICAgICAgICAgICAgY2hhbm5lbHM6IDQsCisg
ICAgICAgICAgICBkYXRhOiBpbWdfOHg4X3JnYmFfZHh0MywKKyAgICAgICAgICAgIGZvcm1hdDog
ZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhULAorICAgICAgICAgICAgaGFzQWxwaGE6
IHRydWUsCisgICAgICAgICAgICBzdWJYMDogMCwKKyAgICAgICAgICAgIHN1YlkwOiAwLAorICAg
ICAgICAgICAgc3ViV2lkdGg6IDQsCisgICAgICAgICAgICBzdWJIZWlnaHQ6IDQsCisgICAgICAg
ICAgICBzdWJEYXRhOiBpbWdfNHg0X3JnYmFfZHh0MworICAgICAgICB9CisgICAgXTsKKyAgICB0
ZXN0RFhUVGV4dHVyZXModGVzdHMpOworfQorCitmdW5jdGlvbiB0ZXN0RFhUNV9SR0JBKCkgewor
ICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyAgIHdpZHRoOiA0LAorICAgICAgICAgICAgaGVp
Z2h0OiA0LAorICAgICAgICAgICAgY2hhbm5lbHM6IDQsCisgICAgICAgICAgICBkYXRhOiBpbWdf
NHg0X3JnYmFfZHh0NSwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURfUkdCQV9T
M1RDX0RYVDVfRVhULAorICAgICAgICAgICAgaGFzQWxwaGE6IHRydWUsCisgICAgICAgIH0sCisg
ICAgICAgIHsgICB3aWR0aDogOCwKKyAgICAgICAgICAgIGhlaWdodDogOCwKKyAgICAgICAgICAg
IGNoYW5uZWxzOiA0LAorICAgICAgICAgICAgZGF0YTogaW1nXzh4OF9yZ2JhX2R4dDUsCisgICAg
ICAgICAgICBmb3JtYXQ6IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCwKKyAgICAg
ICAgICAgIGhhc0FscGhhOiB0cnVlLAorICAgICAgICAgICAgc3ViWDA6IDAsCisgICAgICAgICAg
ICBzdWJZMDogMCwKKyAgICAgICAgICAgIHN1YldpZHRoOiA0LAorICAgICAgICAgICAgc3ViSGVp
Z2h0OiA0LAorICAgICAgICAgICAgc3ViRGF0YTogaW1nXzR4NF9yZ2JhX2R4dDUKKyAgICAgICAg
fQorICAgIF07CisgICAgdGVzdERYVFRleHR1cmVzKHRlc3RzKTsKK30KKworZnVuY3Rpb24gdGVz
dERYVFRleHR1cmVzKHRlc3RzKSB7CisgICAgZGVidWcoIjxoci8+Iik7CisgICAgZm9yICh2YXIg
aWkgPSAwOyBpaSA8IHRlc3RzLmxlbmd0aDsgKytpaSkgeworICAgICAgICB0ZXN0RFhUVGV4dHVy
ZSh0ZXN0c1tpaV0sIGZhbHNlKTsKKyAgICAgICAgaWYgKGNvbnRleHRWZXJzaW9uID49IDIpIHsK
KyAgICAgICAgICAgIGRlYnVnKCI8YnIvPiIpOworICAgICAgICAgICAgdGVzdERYVFRleHR1cmUo
dGVzdHNbaWldLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdW5jb21w
cmVzc0RYVEJsb2NrKAorICAgIGRlc3RCdWZmZXIsIGRlc3RYLCBkZXN0WSwgZGVzdFdpZHRoLCBz
cmMsIHNyY09mZnNldCwgZm9ybWF0KSB7CisgICAgLy8gRGVjb2Rpbmcgcm91dGluZXMgZm9sbG93
IEQzRDExIGZ1bmN0aW9uYWwgc3BlYyB3cnQKKyAgICAvLyBlbmRwb2ludHMgdW5xdWFudGl6YXRp
b24gYW5kIGludGVycG9sYXRpb24uCisgICAgLy8gU29tZSBoYXJkd2FyZSBtYXkgcHJvZHVjZSBz
bGlnaHRseSBkaWZmZXJlbnQgdmFsdWVzIC0gaXQncyBub3JtYWwuCisKKyAgICBmdW5jdGlvbiBt
YWtlNTY1KHNyYywgb2Zmc2V0KSB7CisgICAgICAgIHJldHVybiBzcmNbb2Zmc2V0ICsgMF0gKyAo
c3JjW29mZnNldCArIDFdIDw8IDgpOworICAgIH0KKyAgICBmdW5jdGlvbiBtYWtlODg4OEZyb201
NjUoYykgeworICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgZXhhY3RseSBtYXRjaCBodyBkZWNvZGVy
IHdoZW4gc2VsZWN0b3JzIGFyZSAwIG9yIDEuCisgICAgICAgIGZ1bmN0aW9uIHJlcGxpY2F0ZUJp
dHModiwgdykgeworICAgICAgICAgICByZXR1cm4gKHYgPDwgKDggLSB3KSkgfCAodiA+PiAodyAr
IHcgLSA4KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgICAgICBy
ZXBsaWNhdGVCaXRzKChjID4+IDExKSAmIDB4MUYsIDUpLAorICAgICAgICAgICAgICAgIHJlcGxp
Y2F0ZUJpdHMoKGMgPj4gIDUpICYgMHgzRiwgNiksCisgICAgICAgICAgICAgICAgcmVwbGljYXRl
Qml0cygoYyA+PiAgMCkgJiAweDFGLCA1KSwKKyAgICAgICAgICAgICAgICAyNTUKKyAgICAgICAg
ICAgIF07CisgICAgfQorICAgIGZ1bmN0aW9uIG1peChtdWx0LCBjMCwgYzEsIGRpdikgeworICAg
ICAgICB2YXIgciA9IFtdOworICAgICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgYzAubGVuZ3Ro
OyArK2lpKSB7CisgICAgICAgICAgICAvLyBGb3IgZ3JlZW4gY2hhbm5lbCAoNiBiaXRzKSwgdGhp
cyBpbnRlcnBvbGF0aW9uIGV4YWN0bHkgbWF0Y2hlcyBodyBkZWNvZGVycworCisgICAgICAgICAg
ICAvLyBGb3IgcmVkIGFuZCBibHVlIGNoYW5uZWxzICg1IGJpdHMpLCB0aGlzIGludGVycG9sYXRp
b24gZXhhY3RseQorICAgICAgICAgICAgLy8gbWF0Y2hlcyBvbmx5IHNvbWUgaHcgZGVjb2RlcnMg
YW5kIHN0YXlzIHdpdGhpbiBhY2NlcHRhYmxlIHJhbmdlIGZvciBvdGhlcnMuCisgICAgICAgICAg
ICByW2lpXSA9IE1hdGguZmxvb3IoKGMwW2lpXSAqIG11bHQgKyBjMVtpaV0pIC8gZGl2ICsgMC41
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgdmFyIGlzQkM0NSA9
IGV4dF9yZ3RjICYmCisgICAgICAgIChmb3JtYXQgPT0gZXh0X3JndGMuQ09NUFJFU1NFRF9SRURf
UkdUQzFfRVhUIHx8CisgICAgICAgICBmb3JtYXQgPT0gZXh0X3JndGMuQ09NUFJFU1NFRF9SRURf
R1JFRU5fUkdUQzJfRVhUIHx8CisgICAgICAgICBmb3JtYXQgPT0gZXh0X3JndGMuQ09NUFJFU1NF
RF9TSUdORURfUkVEX1JHVEMxX0VYVCB8fAorICAgICAgICAgZm9ybWF0ID09IGV4dF9yZ3RjLkNP
TVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGlmICghaXNCQzQ1KSB7
CisgICAgICAgIHZhciBpc0RYVDEgPSBmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQgfHwKKyAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9PSBleHQuQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQ7CisgICAgICAgIHZhciBjb2xvck9mZnNldCA9IHNyY09mZnNl
dCArIChpc0RYVDEgPyAwIDogOCk7CisgICAgICAgIHZhciBjb2xvcjAgPSBtYWtlNTY1KHNyYywg
Y29sb3JPZmZzZXQgKyAwKTsKKyAgICAgICAgdmFyIGNvbG9yMSA9IG1ha2U1NjUoc3JjLCBjb2xv
ck9mZnNldCArIDIpOworICAgICAgICB2YXIgYzBndGMxID0gY29sb3IwID4gY29sb3IxIHx8ICFp
c0RYVDE7CisgICAgICAgIHZhciByZ2JhMCA9IG1ha2U4ODg4RnJvbTU2NShjb2xvcjApOworICAg
ICAgICB2YXIgcmdiYTEgPSBtYWtlODg4OEZyb201NjUoY29sb3IxKTsKKyAgICAgICAgdmFyIGNv
bG9ycyA9IFsKKyAgICAgICAgICAgICAgICByZ2JhMCwKKyAgICAgICAgICAgICAgICByZ2JhMSwK
KyAgICAgICAgICAgICAgICBjMGd0YzEgPyBtaXgoMiwgcmdiYTAsIHJnYmExLCAzKSA6IG1peCgx
LCByZ2JhMCwgcmdiYTEsIDIpLAorICAgICAgICAgICAgICAgIGMwZ3RjMSA/IG1peCgyLCByZ2Jh
MSwgcmdiYTAsIDMpIDogWzAsIDAsIDAsIDI1NV0KKyAgICAgICAgICAgIF07CisgICAgfQorICAg
IGNvbnN0IGlzU2lnbmVkID0gZXh0X3JndGMgJiYgKGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVT
U0VEX1NJR05FRF9SRURfUkdUQzFfRVhUIHx8IGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVTU0VE
X1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUKTsKKyAgICBjb25zdCBzaWduZWRTcmMgPSBuZXcg
SW50OEFycmF5KHNyYyk7CisKKyAgICAvLyB5ZWEgSSBrbm93IHRoZXJlIGlzIGEgbG90IG9mIG1h
dGggaW4gdGhpcyBpbm5lciBsb29wLgorICAgIC8vIHNvIHN1ZSBtZS4KKyAgICBmb3IgKHZhciB5
eSA9IDA7IHl5IDwgNDsgKyt5eSkgeworICAgICAgICB2YXIgcGl4ZWxzID0gc3JjW2NvbG9yT2Zm
c2V0ICsgNCArIHl5XTsKKyAgICAgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IDQ7ICsreHgpIHsK
KyAgICAgICAgICAgIHZhciBkc3RPZmYgPSAoKGRlc3RZICsgeXkpICogZGVzdFdpZHRoICsgZGVz
dFggKyB4eCkgKiA0OworICAgICAgICAgICAgaWYgKCFpc0JDNDUpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgY29kZSA9IChwaXhlbHMgPj4gKHh4ICogMikpICYgMHgzOworICAgICAgICAgICAgICAg
IHZhciBzcmNDb2xvciA9IGNvbG9yc1tjb2RlXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHZhciBhbHBoYTsKKyAgICAgICAgICAgIHZhciByZ0NoYW5uZWwyID0gMDsKKyAgICAgICAgICAg
IGxldCBkZWNvZGVBbHBoYSA9IChvZmZzZXQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgYWxw
aGE7CisgICAgICAgICAgICAgICAgdmFyIGFscGhhMCA9IChpc1NpZ25lZCA/IHNpZ25lZFNyYyA6
IHNyYylbb2Zmc2V0ICsgMF07CisgICAgICAgICAgICAgICAgdmFyIGFscGhhMSA9IChpc1NpZ25l
ZCA/IHNpZ25lZFNyYyA6IHNyYylbb2Zmc2V0ICsgMV07CisgICAgICAgICAgICAgICAgdmFyIGFs
cGhhT2ZmID0gKHl5ID4+IDEpICogMyArIDI7CisgICAgICAgICAgICAgICAgdmFyIGFscGhhQml0
cyA9CisgICAgICAgICAgICAgICAgICAgICBzcmNbb2Zmc2V0ICsgYWxwaGFPZmYgKyAwXSArCisg
ICAgICAgICAgICAgICAgICAgICBzcmNbb2Zmc2V0ICsgYWxwaGFPZmYgKyAxXSAqIDI1NiArCisg
ICAgICAgICAgICAgICAgICAgICBzcmNbb2Zmc2V0ICsgYWxwaGFPZmYgKyAyXSAqIDY1NTM2Owor
ICAgICAgICAgICAgICAgIHZhciBhbHBoYVNoaWZ0ID0gKHl5ICUgMikgKiAxMiArIHh4ICogMzsK
KyAgICAgICAgICAgICAgICB2YXIgYWxwaGFDb2RlID0gKGFscGhhQml0cyA+PiBhbHBoYVNoaWZ0
KSAmIDB4NzsKKyAgICAgICAgICAgICAgICBpZiAoYWxwaGEwID4gYWxwaGExKSB7CisgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFDb2RlKSB7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhID0gYWxwaGEwOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFscGhhID0gYWxwaGExOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICBhbHBoYSA9IE1hdGguZmxvb3IoKCg4IC0gYWxwaGFDb2RlKSAqIGFscGhhMCArIChh
bHBoYUNvZGUgLSAxKSAqIGFscGhhMSkgLyA3LjAgKyAwLjUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFscGhhQ29kZSkgeworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IGFscGhh
MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IGFscGhhMTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAg
ICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA3OgorICAgICAgICAgICAgICAgICAgICAg
ICAgYWxwaGEgPSAyNTU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhID0gTWF0
aC5mbG9vcigoKDYgLSBhbHBoYUNvZGUpICogYWxwaGEwICsgKGFscGhhQ29kZSAtIDEpICogYWxw
aGExKSAvIDUuMCArIDAuNSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1
cm4gYWxwaGE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7
CisgICAgICAgICAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAg
ICAgICAgICAgICAgIGFscGhhID0gMjU1OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAg
ICAgICAgYWxwaGEgPSAoY29kZSA9PSAzICYmICFjMGd0YzEpID8gMCA6IDI1NTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDNfRVhUOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFs
cGhhMCA9IHNyY1tzcmNPZmZzZXQgKyB5eSAqIDIgKyAoeHggPj4gMSldOworICAgICAgICAgICAg
ICAgICAgICB2YXIgYWxwaGExID0gKGFscGhhMCA+PiAoKHh4ICUgMikgKiA0KSkgJiAweEY7Cisg
ICAgICAgICAgICAgICAgICAgIGFscGhhID0gYWxwaGExIHwgKGFscGhhMSA8PCA0KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGV4
dF9yZ3RjLkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICAgICAgICAgIGNhc2Ug
ZXh0X3JndGMuQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICAgICAg
ICAgICAgICByZ0NoYW5uZWwyID0gZGVjb2RlQWxwaGEoc3JjT2Zmc2V0ICsgOCk7CisgICAgICAg
ICAgICAgICAgLy8gRkFMTFRIUk9VR0gKKyAgICAgICAgICAgIGNhc2UgZXh0LkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfRVhUOgorICAgICAgICAgICAgY2FzZSBleHRfcmd0Yy5DT01QUkVTU0VE
X1JFRF9SR1RDMV9FWFQ6CisgICAgICAgICAgICBjYXNlIGV4dF9yZ3RjLkNPTVBSRVNTRURfU0lH
TkVEX1JFRF9SR1RDMV9FWFQ6CisgICAgICAgICAgICAgICAgYWxwaGEgPSBkZWNvZGVBbHBoYShz
cmNPZmZzZXQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICB0aHJvdyAiYmFkIGZvcm1hdCI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoaXNCQzQ1KSB7CisgICAgICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYg
KyAwXSA9IGFscGhhOworICAgICAgICAgICAgICAgIGRlc3RCdWZmZXJbZHN0T2ZmICsgMV0gPSBy
Z0NoYW5uZWwyOworICAgICAgICAgICAgICAgIGRlc3RCdWZmZXJbZHN0T2ZmICsgMl0gPSAwOwor
ICAgICAgICAgICAgICAgIGRlc3RCdWZmZXJbZHN0T2ZmICsgM10gPSAyNTU7CisgICAgICAgICAg
ICAgICAgaWYgKGlzU2lnbmVkKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RCdWZmZXJbZHN0
T2ZmICsgMF0gPSBNYXRoLm1heCgwLCBhbHBoYSkgKiAyOworICAgICAgICAgICAgICAgICAgICBk
ZXN0QnVmZmVyW2RzdE9mZiArIDFdID0gTWF0aC5tYXgoMCwgcmdDaGFubmVsMikgKiAyOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVz
dEJ1ZmZlcltkc3RPZmYgKyAwXSA9IHNyY0NvbG9yWzBdOworICAgICAgICAgICAgICAgIGRlc3RC
dWZmZXJbZHN0T2ZmICsgMV0gPSBzcmNDb2xvclsxXTsKKyAgICAgICAgICAgICAgICBkZXN0QnVm
ZmVyW2RzdE9mZiArIDJdID0gc3JjQ29sb3JbMl07CisgICAgICAgICAgICAgICAgZGVzdEJ1ZmZl
cltkc3RPZmYgKyAzXSA9IGFscGhhOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCitmdW5jdGlvbiBnZXRCbG9ja1NpemUoZm9ybWF0KSB7CisgIHZhciBpc0RYVDEgPSBmb3Jt
YXQgPT0gZXh0LkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgfHwKKyAgICAgICAgICAgICAg
IGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7CisgIHZhciBpc0JD
NCA9IGV4dF9yZ3RjICYmIChmb3JtYXQgPT0gZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfUkdUQzFf
RVhUIHx8IGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhU
KTsKKyAgcmV0dXJuIGlzRFhUMSB8fCBpc0JDNCA/IDggOiAxNjsKK30KKworZnVuY3Rpb24gdW5j
b21wcmVzc0RYVCh3aWR0aCwgaGVpZ2h0LCBkYXRhLCBmb3JtYXQpIHsKKyAgICBpZiAod2lkdGgg
JSA0IHx8IGhlaWdodCAlIDQpIHRocm93ICJiYWQgd2lkdGggb3IgaGVpZ2h0IjsKKworICAgIHZh
ciBkZXN0ID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KTsKKyAgICB2YXIgYmxv
Y2tzQWNyb3NzID0gd2lkdGggLyA0OworICAgIHZhciBibG9ja3NEb3duID0gaGVpZ2h0IC8gNDsK
KyAgICB2YXIgYmxvY2tTaXplID0gZ2V0QmxvY2tTaXplKGZvcm1hdCk7CisgICAgZm9yICh2YXIg
eXkgPSAwOyB5eSA8IGJsb2Nrc0Rvd247ICsreXkpIHsKKyAgICAgICAgZm9yICh2YXIgeHggPSAw
OyB4eCA8IGJsb2Nrc0Fjcm9zczsgKyt4eCkgeworICAgICAgICAgICAgdW5jb21wcmVzc0RYVEJs
b2NrKAorICAgICAgICAgICAgICAgIGRlc3QsIHh4ICogNCwgeXkgKiA0LCB3aWR0aCwgZGF0YSwK
KyAgICAgICAgICAgICAgICAoeXkgKiBibG9ja3NBY3Jvc3MgKyB4eCkgKiBibG9ja1NpemUsIGZv
cm1hdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGRlc3Q7Cit9CisKK2Z1bmN0aW9u
IHVuY29tcHJlc3NEWFRJbnRvU3ViUmVnaW9uKHdpZHRoLCBoZWlnaHQsIHN1YlgwLCBzdWJZMCwg
c3ViV2lkdGgsIHN1YkhlaWdodCwgZGF0YSwgZm9ybWF0KQoreworICAgIGlmICh3aWR0aCAlIDQg
fHwgaGVpZ2h0ICUgNCB8fCBzdWJYMCAlIDQgfHwgc3ViWTAgJSA0IHx8IHN1YldpZHRoICUgNCB8
fCBzdWJIZWlnaHQgJSA0KQorICAgICAgICB0aHJvdyAiYmFkIGRpbWVuc2lvbiI7CisKKyAgICB2
YXIgZGVzdCA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgLy8gWmVy
by1maWxsZWQgRFhUMSBvciBCQzQvNSB0ZXh0dXJlIHJlcHJlc2VudHMgWzAsIDAsIDAsIDI1NV0K
KyAgICBpZiAoZm9ybWF0ID09IGV4dC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIHx8IGZv
cm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgfHwKKyAgICAgICAgZm9y
bWF0ID09IGV4dC5DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQgfHwgZm9ybWF0ID09IGV4dC5DT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUIHx8CisgICAgICAgIGZvcm1hdCA9PSBleHQuQ09N
UFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUIHx8IGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9T
SUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCkgeworICAgICAgICBmb3IgKHZhciBpID0gMzsgaSA8
IGRlc3QubGVuZ3RoOyBpICs9IDQpIGRlc3RbaV0gPSAyNTU7CisgICAgfQorICAgIHZhciBibG9j
a3NBY3Jvc3MgPSBzdWJXaWR0aCAvIDQ7CisgICAgdmFyIGJsb2Nrc0Rvd24gPSBzdWJIZWlnaHQg
LyA0OworICAgIHZhciBibG9ja1NpemUgPSBnZXRCbG9ja1NpemUoZm9ybWF0KTsKKyAgICBmb3Ig
KHZhciB5eSA9IDA7IHl5IDwgYmxvY2tzRG93bjsgKyt5eSkgeworICAgICAgICBmb3IgKHZhciB4
eCA9IDA7IHh4IDwgYmxvY2tzQWNyb3NzOyArK3h4KSB7CisgICAgICAgICAgICB1bmNvbXByZXNz
RFhUQmxvY2soCisgICAgICAgICAgICAgICAgZGVzdCwgc3ViWDAgKyB4eCAqIDQsIHN1YlkwICsg
eXkgKiA0LCB3aWR0aCwgZGF0YSwKKyAgICAgICAgICAgICAgICAoeXkgKiBibG9ja3NBY3Jvc3Mg
KyB4eCkgKiBibG9ja1NpemUsIGZvcm1hdCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IGRlc3Q7Cit9CisKK2Z1bmN0aW9uIGNvcHlSZWN0KGRhdGEsIHNyY1gsIHNyY1ksIGRzdFgsIGRz
dFksIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSkgeworICB2YXIgYnl0ZXNQZXJMaW5lID0gd2lkdGgg
KiA0OworICB2YXIgc3JjT2Zmc2V0ID0gc3JjWCAqIDQgKyBzcmNZICogc3RyaWRlOworICB2YXIg
ZHN0T2Zmc2V0ID0gZHN0WCAqIDQgKyBkc3RZICogc3RyaWRlOworICBmb3IgKDsgaGVpZ2h0ID4g
MDsgLS1oZWlnaHQpIHsKKyAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgYnl0ZXNQZXJMaW5lOyAr
K2lpKSB7CisgICAgICBkYXRhW2RzdE9mZnNldCArIGlpXSA9IGRhdGFbc3JjT2Zmc2V0ICsgaWld
OworICAgIH0KKyAgICBzcmNPZmZzZXQgKz0gc3RyaWRlOworICAgIGRzdE9mZnNldCArPSBzdHJp
ZGU7CisgIH0KK30KKworZnVuY3Rpb24gdGVzdERYVFRleHR1cmUodGVzdCwgdXNlVGV4U3RvcmFn
ZSkgeworICAgIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkodGVzdC5kYXRhKTsKKyAgICB2YXIg
d2lkdGggPSB0ZXN0LndpZHRoOworICAgIHZhciBoZWlnaHQgPSB0ZXN0LmhlaWdodDsKKyAgICB2
YXIgZm9ybWF0ID0gdGVzdC5mb3JtYXQ7CisKKyAgICB2YXIgdW5jb21wcmVzc2VkRGF0YSA9IHVu
Y29tcHJlc3NEWFQod2lkdGgsIGhlaWdodCwgZGF0YSwgZm9ybWF0KTsKKworICAgIGNhbnZhcy53
aWR0aCA9IHdpZHRoOworICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgZ2wudmlld3Bv
cnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgZGVidWcoInRlc3RpbmcgIiArIGN0dS5mb3Jt
YXRUb1N0cmluZyhleHQsIGZvcm1hdCkgKyAiICIgKyB3aWR0aCArICJ4IiArIGhlaWdodCArCisg
ICAgICAgICAgKHVzZVRleFN0b3JhZ2UgPyAiIHZpYSB0ZXhTdG9yYWdlMkQiIDogIiB2aWEgY29t
cHJlc3NlZFRleEltYWdlMkQiKSk7CisKKyAgICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURH
RSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
VCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAg
ICBpZiAodXNlVGV4U3RvcmFnZSkgeworICAgICAgICBpZiAodGVzdC5zdWJEYXRhKSB7CisgICAg
ICAgICAgICB2YXIgdW5jb21wcmVzc2VkRGF0YVN1YiA9IHVuY29tcHJlc3NEWFRJbnRvU3ViUmVn
aW9uKAorICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIHRlc3Quc3ViWDAsIHRlc3Quc3Vi
WTAsIHRlc3Quc3ViV2lkdGgsIHRlc3Quc3ViSGVpZ2h0LCB0ZXN0LnN1YkRhdGEsIGZvcm1hdCk7
CisgICAgICAgICAgICB2YXIgdGV4MSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleDEpOworICAgICAgICAgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9f
RURHRSk7CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsK
KyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9N
QUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKworICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTJEKGds
LlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFsbG9jYXRpbmcgY29tcHJlc3NlZCB0
ZXh0dXJlIHZpYSB0ZXhTdG9yYWdlMkQiKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKAorICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfMkQsIDAsIHRlc3Quc3ViWDAs
IHRlc3Quc3ViWTAsIHRlc3Quc3ViV2lkdGgsIHRlc3Quc3ViSGVpZ2h0LCBmb3JtYXQsIHRlc3Qu
c3ViRGF0YSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInVwbG9hZGluZyBjb21wcmVzc2VkIHRleHR1cmUgZGF0YSB2aWEgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQiKTsKKworICAgICAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsK
KyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2lu
ZyB1bml0IHF1YWQgMSIpOworICAgICAgICAgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwg
dGVzdC5jaGFubmVscywgdW5jb21wcmVzc2VkRGF0YVN1YiwgIk5FQVJFU1QiKTsKKworICAgICAg
ICAgICAgLy8gQ2xlYW4gdXAgYW5kIHJlY292ZXIKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1
cmUodGV4MSk7CisgICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgp
OworICAgICAgICB9CisKKyAgICAgICAgZ2wudGV4U3RvcmFnZTJEKGdsLlRFWFRVUkVfMkQsIDEs
IGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAiYWxsb2NhdGluZyBjb21wcmVzc2VkIHRleHR1cmUgdmlhIHRleFN0b3Jh
Z2UyRCIpOworICAgICAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgdW5pdCBxdWFkIik7
CisgICAgICAgIHZhciBjbGVhckNvbG9yID0gKHRlc3QuaGFzQWxwaGEgPyBbMCwgMCwgMCwgMF0g
OiBbMCwgMCwgMCwgMjU1XSk7CisgICAgICAgIHd0dS5jaGVja0NhbnZhcyhnbCwgY2xlYXJDb2xv
ciwgInRleHR1cmUgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIGJsYWNrIik7CisgICAgICAgIGds
LmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidXBsb2FkaW5nIGNvbXByZXNzZWQgdGV4dHVyZSBkYXRhIHZpYSBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdsLmNvbXByZXNzZWRU
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZGF0
YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2Fk
aW5nIGNvbXByZXNzZWQgdGV4dHVyZSIpOworICAgIH0KKyAgICBnbC5nZW5lcmF0ZU1pcG1hcChn
bC5URVhUVVJFXzJEKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09Q
RVJBVElPTiwgInRyeWluZyB0byBnZW5lcmF0ZSBtaXBtYXBzIGZyb20gY29tcHJlc3NlZCB0ZXh0
dXJlIik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBj
bGVhcmluZyBnZW5lcmF0ZU1pcG1hcCBlcnJvciIpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0
UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3
aW5nIHVuaXQgcXVhZCAxIik7CisgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgdGVzdC5j
aGFubmVscywgdW5jb21wcmVzc2VkRGF0YSwgIk5FQVJFU1QiKTsKKyAgICAvLyBUZXN0IGFnYWlu
IHdpdGggbGluZWFyIGZpbHRlcmluZy4KKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAg
ICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1bml0IHF1YWQgMiIpOworICAgIGNvbXBhcmVSZWN0
KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hhbm5lbHMsIHVuY29tcHJlc3NlZERhdGEsICJMSU5FQVIi
KTsKKworICAgIGlmICghdXNlVGV4U3RvcmFnZSkgeworICAgICAgICAvLyBJdCdzIG5vdCBhbGxv
d2VkIHRvIHJlZGVmaW5lIHRleHR1cmVzIGRlZmluZWQgdmlhIHRleFN0b3JhZ2UyRC4KKyAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCAxLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9WQUxVRSwgIm5vbiAwIGJvcmRlciIpOworCisgICAgICAgIGdsLmNvbXByZXNzZWRU
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGggKyA0LCBoZWlnaHQsIDAs
IGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVF
LCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKKyAgICAgICAgZ2wuY29t
cHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
ICsgNCwgMCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFM
SURfVkFMVUUsICJkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyIpOworICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRo
IC0gNCwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7
CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1h
dCwgd2lkdGgsIGhlaWdodCAtIDQsIDAsIGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVu
c2lvbnMiKTsKKworICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBmb3JtYXQsIHdpZHRoIC0gMSwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lv
bnMiKTsKKyAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
Zm9ybWF0LCB3aWR0aCAtIDIsIGhlaWdodCwgMCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7
CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1h
dCwgd2lkdGgsIGhlaWdodCAtIDEsIDAsIGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOworICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQgLSAyLCAwLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKKworICAgICAg
ICBpZiAod2lkdGggPT0gNCkgeworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCAxLCBoZWlnaHQsIDAsIGRhdGEpOworICAgICAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ2YWxpZCBkaW1lbnNpb25z
IGZvciBsZXZlbCA+IDAiKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwgMiwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidmFsaWQgZGltZW5zaW9ucyBm
b3IgbGV2ZWwgPiAwIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhlaWdodCA9PSA0KSB7Cisg
ICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3Jt
YXQsIHdpZHRoLCAxLCAwLCBkYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAidmFsaWQgZGltZW5zaW9ucyBmb3IgbGV2ZWwgPiAwIik7CisgICAg
ICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3JtYXQs
IHdpZHRoLCAyLCAwLCBkYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAidmFsaWQgZGltZW5zaW9ucyBmb3IgbGV2ZWwgPiAwIik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBwaWNrIGEgd3JvbmcgZm9ybWF0IHRoYXQgdXNlcyB0aGUgc2Ft
ZSBhbW91bnQgb2YgZGF0YS4KKyAgICB2YXIgd3JvbmdGb3JtYXQ7CisgICAgc3dpdGNoIChmb3Jt
YXQpIHsKKyAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAg
d3JvbmdGb3JtYXQgPSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAg
IHdyb25nRm9ybWF0ID0gZXh0LkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICAg
IHdyb25nRm9ybWF0ID0gZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOworICAgICAg
YnJlYWs7CisgICAgY2FzZSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAg
ICB3cm9uZ0Zvcm1hdCA9IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDsKKyAgICAg
IGJyZWFrOworICAgIGNhc2UgZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUOgorICAg
IGNhc2UgZXh0X3JndGMuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDoKKyAgICAgIHdy
b25nRm9ybWF0ID0gZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9F
WFQ6CisgICAgY2FzZSBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJf
RVhUOgorICAgICAgd3JvbmdGb3JtYXQgPSBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9SR1RDMV9F
WFQ7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCB3cm9uZ0Zvcm1hdCwgZGF0
YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJm
b3JtYXQgZG9lcyBub3QgbWF0Y2giKTsKKworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIDQsIDAsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSk7Cisg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgImRpbWVuc2lvbiBv
dXQgb2YgcmFuZ2UiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCAwLCA0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkaW1lbnNpb24gb3V0IG9mIHJhbmdl
Iik7CisKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAw
LCAwLCB3aWR0aCArIDQsIGhlaWdodCwgZm9ybWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRp
bWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0ICsgNCwgZm9ybWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1h
dGNoIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCAwLCAwLCB3aWR0aCAtIDQsIGhlaWdodCwgZm9ybWF0LCBkYXRhKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMg
bm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0IC0gNCwgZm9ybWF0LCBkYXRhKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXpl
IGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKKworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoIC0gMSwgaGVpZ2h0LCBmb3JtYXQs
IGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9O
LCAiaW52YWxpZCBkaW1lbnNpb25zIik7CisgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGggLSAyLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZh
bGlkIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0IC0gMSwgZm9ybWF0LCBkYXRhKTsKKyAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGlt
ZW5zaW9ucyIpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQgLSAyLCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25z
Iik7CisKKyAgICB2YXIgc3ViRGF0YSA9IG5ldyBVaW50OEFycmF5KGRhdGEuYnVmZmVyLCAwLCBn
ZXRCbG9ja1NpemUoZm9ybWF0KSk7CisKKyAgICBpZiAod2lkdGggPT0gOCAmJiBoZWlnaHQgPT0g
OCkgeworICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCAxLCAwLCA0LCA0LCBmb3JtYXQsIHN1YkRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgb2Zmc2V0Iik7CisgICAgICAg
IGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDEsIDQsIDQs
IGZvcm1hdCwgc3ViRGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBvZmZzZXQiKTsKKyAgICB9CisKKyAgICB2YXIgc3Ry
aWRlID0gd2lkdGggKiA0OworICAgIGZvciAodmFyIHlvZmYgPSAwOyB5b2ZmIDwgaGVpZ2h0OyB5
b2ZmICs9IDQpIHsKKyAgICAgICAgZm9yICh2YXIgeG9mZiA9IDA7IHhvZmYgPCB3aWR0aDsgeG9m
ZiArPSA0KSB7CisgICAgICAgICAgICBjb3B5UmVjdCh1bmNvbXByZXNzZWREYXRhLCAwLCAwLCB4
b2ZmLCB5b2ZmLCA0LCA0LCBzdHJpZGUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgeG9mZiwgeW9mZiwgNCwgNCwgZm9ybWF0LCBzdWJE
YXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
dXBsb2FkaW5nIGNvbXByZXNzZWQgdGV4dHVyZSIpOworICAgICAgICAgICAgLy8gRmlyc3QgdGVz
dCBORUFSRVNUIGZpbHRlcmluZy4KKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBn
bC5ORUFSRVNUKTsKKyAgICAgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7Cisg
ICAgICAgICAgICBjb21wYXJlUmVjdCh3aWR0aCwgaGVpZ2h0LCB0ZXN0LmNoYW5uZWxzLCB1bmNv
bXByZXNzZWREYXRhLCAiTkVBUkVTVCIpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5nIHVuaXQgcXVhZCIpOworICAgICAgICAgICAgLy8g
TmV4dCB0ZXN0IExJTkVBUiBmaWx0ZXJpbmcuCisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAg
ICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklM
VEVSLCBnbC5MSU5FQVIpOworICAgICAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGds
KTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJh
d2luZyB1bml0IHF1YWQiKTsKKyAgICAgICAgICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQs
IHRlc3QuY2hhbm5lbHMsIHVuY29tcHJlc3NlZERhdGEsICJMSU5FQVIiKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdERYVDVfUkdCQV9QQk8oKSB7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJ0ZXN0aW5nIFBCTyB1cGxvYWRzIik7CisgICAgdmFyIHdpZHRoID0gODsK
KyAgICB2YXIgaGVpZ2h0ID0gODsKKyAgICB2YXIgY2hhbm5lbHMgPSA0OworICAgIHZhciBkYXRh
ID0gaW1nXzh4OF9yZ2JhX2R4dDU7CisgICAgdmFyIGZvcm1hdCA9IGV4dC5DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVDsKKyAgICB2YXIgdW5jb21wcmVzc2VkRGF0YSA9IHVuY29tcHJlc3NE
WFQod2lkdGgsIGhlaWdodCwgZGF0YSwgZm9ybWF0KTsKKworICAgIHZhciB0ZXggPSBnbC5jcmVh
dGVUZXh0dXJlKCk7CisKKyAgICAvLyBGaXJzdCwgUEJPIHNpemUgPSBpbWFnZSBzaXplCisgICAg
dmFyIHBibzEgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVM
X1VOUEFDS19CVUZGRVIsIHBibzEpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfVU5QQUNL
X0JVRkZFUiwgZGF0YSwgZ2wuU1RBVElDX0RSQVcpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUo
Z2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5nIGEgUEJPIik7CisKKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgIGdsLnRleFN0b3JhZ2UyRChnbC5URVhUVVJFXzJE
LCAxLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5s
ZW5ndGgsIDApOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBs
b2FkaW5nIGEgdGV4dHVyZSBmcm9tIGEgUEJPIik7CisKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlBJ
WEVMX1VOUEFDS19CVUZGRVIsIG51bGwpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChn
bCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5nIHVu
aXQgcXVhZCIpOworICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIGNoYW5uZWxzLCB1bmNv
bXByZXNzZWREYXRhLCAiTkVBUkVTVCIpOworCisgICAgLy8gQ2xlYXIgdGhlIHRleHR1cmUgYmVm
b3JlIHRoZSBuZXh0IHRlc3QKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZG
RVIsIG51bGwpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgbmV3IFVpbnQ4QXJyYXkoZGF0YS5sZW5n
dGgpKTsKKworICAgIC8vIFNlY29uZCwgaW1hZ2UgaXMganVzdCBhIHN1YnJhbmdlIG9mIHRoZSBQ
Qk8KKyAgICB2YXIgcGJvMiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIo
Z2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgcGJvMik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5QSVhF
TF9VTlBBQ0tfQlVGRkVSLCBkYXRhLmxlbmd0aCozLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wu
YnVmZmVyU3ViRGF0YShnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBkYXRhLmxlbmd0aCwgZGF0YSk7
CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ1cGxvYWRpbmcgYSBQ
Qk8gc3VicmFuZ2UiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEubGVuZ3RoLCBkYXRhLmxl
bmd0aCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ1cGxvYWRp
bmcgYSB0ZXh0dXJlIGZyb20gYSBQQk8gc3VicmFuZ2UiKTsKKyAgICBnbC5iaW5kQnVmZmVyKGds
LlBJWEVMX1VOUEFDS19CVUZGRVIsIG51bGwpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVh
ZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5n
IHVuaXQgcXVhZCIpOworICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIGNoYW5uZWxzLCB1
bmNvbXByZXNzZWREYXRhLCAiTkVBUkVTVCIpOworfQorCitmdW5jdGlvbiBjb21wYXJlUmVjdCh3
aWR0aCwgaGVpZ2h0LCBjaGFubmVscywgZXhwZWN0ZWREYXRhLCBmaWx0ZXJpbmdNb2RlKSB7Cisg
ICAgdmFyIGFjdHVhbCA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAg
Z2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBhY3R1YWwpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAi
cmVhZGluZyBiYWNrIHBpeGVscyIpOworCisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgIGRpdi5jbGFzc05hbWUgPSAidGVzdGltYWdlcyI7CisgICAgY3R1
Lmluc2VydENhcHRpb25lZEltZyhkaXYsICJleHBlY3RlZCIsIGN0dS5tYWtlU2NhbGVkSW1hZ2Uo
d2lkdGgsIGhlaWdodCwgd2lkdGgsIGV4cGVjdGVkRGF0YSwgdHJ1ZSkpOworICAgIGN0dS5pbnNl
cnRDYXB0aW9uZWRJbWcoZGl2LCAiYWN0dWFsIiwgY3R1Lm1ha2VTY2FsZWRJbWFnZSh3aWR0aCwg
aGVpZ2h0LCB3aWR0aCwgYWN0dWFsLCB0cnVlKSk7CisgICAgZGl2LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHZhciBmYWlsZWQgPSBmYWxzZTsKKyAg
ICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgaGVpZ2h0OyArK3l5KSB7CisgICAgICAgIGZvciAodmFy
IHh4ID0gMDsgeHggPCB3aWR0aDsgKyt4eCkgeworICAgICAgICAgICAgdmFyIG9mZnNldCA9ICh5
eSAqIHdpZHRoICsgeHgpICogNDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZCA9IGV4cGVjdGVk
RGF0YS5zbGljZShvZmZzZXQsIG9mZnNldCArIDQpOworICAgICAgICAgICAgLy8gQ29tcGFyZSBS
R0IgdmFsdWVzCisgICAgICAgICAgICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgMzsgKytqaikgewor
ICAgICAgICAgICAgICAgIC8vIEFjY2VwdGFibGUgaW50ZXJwb2xhdGlvbiBlcnJvciBkZXBlbmRz
IG9uIGVuZHBvaW50czoKKyAgICAgICAgICAgICAgICAvLyAxLjAgLyAyNTUuMCArIDAuMDMgKiBt
YXgoYWJzKGVuZHBvaW50MCAtIGVuZHBvaW50MSksIGFicyhlbmRwb2ludDBfcCAtIGVuZHBvaW50
MV9wKSkKKyAgICAgICAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSwgYXNzdW1lIHRoZSB3b3Jz
dCBjYXNlIChlMCBpcyAwLjAsIGUxIGlzIDEuMCkuIEFmdGVyIGNvbnZlcnNpb24gdG8gdW5vcm04
LCBpdCBpcyA5LgorICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhhY3R1YWxbb2Zmc2V0ICsg
ampdIC0gZXhwZWN0ZWRbampdKSA+IDkpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHdhcyA9
IGFjdHVhbFtvZmZzZXQgKyAwXS50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciBqID0gMTsgaiA8IDM7ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAgd2FzICs9
ICIsIiArIGFjdHVhbFtvZmZzZXQgKyBqXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCdSR0IgYXQgKCcgKyB4eCArICcsICcgKyB5eSArCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJykgZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZCArICcgwrEgOSB3YXMg
JyArIHdhcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoY2hhbm5lbHMgPT0gMykgeworICAgICAgICAgICAgICAgIC8vIEJDMSBSR0IgaXMgYWxs
b3dlZCB0byBiZSBtYXBwZWQgdG8gQkMxIFJHQkEuCisgICAgICAgICAgICAgICAgLy8gSW4gc3Vj
aCBhIGNhc2UsIDMtY29sb3IgbW9kZSBibGFjayB2YWx1ZSBjYW4gYmUgdHJhbnNwYXJlbnQ6Cisg
ICAgICAgICAgICAgICAgLy8gWzAsIDAsIDAsIDBdIGluc3RlYWQgb2YgWzAsIDAsIDAsIDI1NV0u
CisKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsW29mZnNldCArIDNdICE9IGV4cGVjdGVkWzNd
KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEdvdCBub24tb3BhcXVlIHZhbHVlIGZvciBvcGFx
dWUgZm9ybWF0CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgUkdCIHZhbHVlcy4gTm90
aWNlLCB0aGF0IHRoZSBjb25kaXRpb24gaGVyZQorICAgICAgICAgICAgICAgICAgICAvLyBpcyBt
b3JlIHBlcm1pc3NpdmUgdGhhbiBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZQorICAgICAgICAg
ICAgICAgICAgICAvLyBjb21wcmVzc2VkIGRhdGEgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGFjdHVhbFtvZmZzZXRdID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFjdHVhbFtvZmZzZXQgKyAxXSA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICBh
Y3R1YWxbb2Zmc2V0ICsgMl0gPT0gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFs
W29mZnNldCArIDNdID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zygi
PGI+RFhUMSBSR0IgaXMgbWFwcGVkIHRvIERYVDEgUkdCQTwvYj4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdBbHBoYSBhdCAoJyArIHh4ICsgJywg
JyArIHl5ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
KSBleHBlY3RlZDogJyArIGV4cGVjdGVkWzNdICsgJyB3YXMgJyArIGFjdHVhbFtvZmZzZXQgKyAz
XSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgQWxwaGEgdmFsdWVzCisgICAg
ICAgICAgICAgICAgLy8gQWNjZXB0YWJsZSBpbnRlcnBvbGF0aW9uIGVycm9yIGRlcGVuZHMgb24g
ZW5kcG9pbnRzOgorICAgICAgICAgICAgICAgIC8vIDEuMCAvIDY1NTM1LjAgKyAwLjAzICogbWF4
KGFicyhlbmRwb2ludDAgLSBlbmRwb2ludDEpLCBhYnMoZW5kcG9pbnQwX3AgLSBlbmRwb2ludDFf
cCkpCisgICAgICAgICAgICAgICAgLy8gRm9yIHNpbXBsaWNpdHksIGFzc3VtZSB0aGUgd29yc3Qg
Y2FzZSAoZTAgaXMgMC4wLCBlMSBpcyAxLjApLiBBZnRlciBjb252ZXJzaW9uIHRvIHVub3JtOCwg
aXQgaXMgOC4KKyAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoYWN0dWFsW29mZnNldCArIDNd
IC0gZXhwZWN0ZWRbM10pID4gOCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgd2FzID0gYWN0
dWFsW29mZnNldCArIDNdLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0FscGhhIGF0ICgnICsgeHgg
KyAnLCAnICsgeXkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JykgZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZCArICcgwrEgOCB3YXMgJyArIHdhcyk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmICghZmFp
bGVkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoInRleHR1cmUgcmVuZGVyZWQgY29ycmVjdGx5IHdp
dGggIiArIGZpbHRlcmluZ01vZGUgKyAiIGZpbHRlcmluZyIpOworICAgIH0KK30KKworZGVidWco
IiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1
cmUtdXRpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZmMDJjNGQ0M2IzOWYwYWE0ODUzZTc0ODlmNDA1OGZj
MmQ2YmNmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL2NvbXByZXNzZWQtdGV4dHVyZS11dGlscy5qcwpAQCAt
MCwwICsxLDIyOSBAQAorLyoKK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLwor
CisidXNlIHN0cmljdCI7CisKK2xldCBDb21wcmVzc2VkVGV4dHVyZVV0aWxzID0gKGZ1bmN0aW9u
KCkgeworCitsZXQgZm9ybWF0VG9TdHJpbmcgPSBmdW5jdGlvbihleHQsIGZvcm1hdCkgeworICAg
IGZvciAobGV0IHAgaW4gZXh0KSB7CisgICAgICAgIGlmIChleHRbcF0gPT0gZm9ybWF0KSB7Cisg
ICAgICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gIjB4IiAr
IGZvcm1hdC50b1N0cmluZygxNik7Cit9OworCisvKioKKyAqIE1ha2UgYW4gaW1hZ2UgZWxlbWVu
dCBmcm9tIFVpbnQ4QXJyYXkgYml0bWFwIGRhdGEuCisgKiBAcGFyYW0ge251bWJlcn0gaW1hZ2VI
ZWlnaHQgSGVpZ2h0IG9mIHRoZSBkYXRhIGluIHBpeGVscy4KKyAqIEBwYXJhbSB7bnVtYmVyfSBp
bWFnZVdpZHRoIFdpZHRoIG9mIHRoZSBkYXRhIGluIHBpeGVscy4KKyAqIEBwYXJhbSB7bnVtYmVy
fSBkYXRhV2lkdGggV2lkdGggb2YgZWFjaCByb3cgaW4gdGhlIGRhdGEgYnVmZmVyLCBpbiBwaXhl
bHMuCisgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGRhdGEgSW1hZ2UgZGF0YSBidWZmZXIgdG8gZGlz
cGxheS4gRWFjaCBwaXhlbCB0YWtlcyB1cCA0IGJ5dGVzIGluIHRoZSBhcnJheSByZWdhcmRsZXNz
IG9mIHRoZSBhbHBoYSBwYXJhbWV0ZXIuCisgKiBAcGFyYW0ge2Jvb2xlYW59IGFscGhhIFRydWUg
aWYgYWxwaGEgZGF0YSBzaG91bGQgYmUgdGFrZW4gZnJvbSBkYXRhLiBPdGhlcndpc2UgYWxwaGEg
Y2hhbm5lbCBpcyBzZXQgdG8gMjU1LgorICogQHJldHVybiB7SFRNTEltYWdlRWxlbWVudH0gVGhl
IGltYWdlIGVsZW1lbnQuCisgKi8KK2xldCBtYWtlU2NhbGVkSW1hZ2UgPSBmdW5jdGlvbihpbWFn
ZVdpZHRoLCBpbWFnZUhlaWdodCwgZGF0YVdpZHRoLCBkYXRhLCBhbHBoYSwgb3B0X3NjYWxlKSB7
CisgICAgbGV0IHNjYWxlID0gb3B0X3NjYWxlID8gb3B0X3NjYWxlIDogODsKKyAgICBsZXQgYyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGMud2lkdGggPSBpbWFnZVdp
ZHRoICogc2NhbGU7CisgICAgYy5oZWlnaHQgPSBpbWFnZUhlaWdodCAqIHNjYWxlOworICAgIGxl
dCBjdHggPSBjLmdldENvbnRleHQoIjJkIik7CisgICAgZm9yIChsZXQgeXkgPSAwOyB5eSA8IGlt
YWdlSGVpZ2h0OyArK3l5KSB7CisgICAgICAgIGZvciAobGV0IHh4ID0gMDsgeHggPCBpbWFnZVdp
ZHRoOyArK3h4KSB7CisgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gKHl5ICogZGF0YVdpZHRoICsg
eHgpICogNDsKKyAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAicmdiYSgiICsKKyAgICAgICAg
ICAgICAgICAgICAgZGF0YVtvZmZzZXQgKyAwXSArICIsIiArCisgICAgICAgICAgICAgICAgICAg
IGRhdGFbb2Zmc2V0ICsgMV0gKyAiLCIgKworICAgICAgICAgICAgICAgICAgICBkYXRhW29mZnNl
dCArIDJdICsgIiwiICsKKyAgICAgICAgICAgICAgICAgICAgKGFscGhhID8gZGF0YVtvZmZzZXQg
KyAzXSAvIDI1NSA6IDEpICsgIikiOworICAgICAgICAgICAgY3R4LmZpbGxSZWN0KHh4ICogc2Nh
bGUsIHl5ICogc2NhbGUsIHNjYWxlLCBzY2FsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFzKGMpOworfTsKKworbGV0IGluc2VydENhcHRpb25l
ZEltZyA9IGZ1bmN0aW9uKHBhcmVudCwgY2FwdGlvbiwgaW1nKSB7CisgICAgbGV0IGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5hcHBlbmRDaGlsZChpbWcpOwor
ICAgIGxldCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGxhYmVs
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNhcHRpb24pKTsKKyAgICBkaXYu
YXBwZW5kQ2hpbGQobGFiZWwpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChkaXYpOworfTsKKwor
LyoqCisgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2V9IGdsCisgKiBAcGFyYW0g
e09iamVjdH0gY29tcHJlc3NlZEZvcm1hdHMgTWFwcGluZyBmcm9tIGZvcm1hdCBuYW1lcyB0byBm
b3JtYXQgZW51bSB2YWx1ZXMuCisgKiBAcGFyYW0gZXhwZWN0ZWRCeXRlTGVuZ3RoIEEgZnVuY3Rp
b24gdGhhdCB0YWtlcyBpbiB3aWR0aCwgaGVpZ2h0IGFuZCBmb3JtYXQgYW5kIHJldHVybnMgdGhl
IGV4cGVjdGVkIGJ1ZmZlciBzaXplIGluIGJ5dGVzLgorICovCitsZXQgdGVzdENvbXByZXNzZWRG
b3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0ZW5zaW9uRGlzYWJsZWQgPSBmdW5jdGlvbihnbCwgY29t
cHJlc3NlZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgdGVzdFNpemUpIHsKKyAgICBsZXQg
dGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleCk7CisgICAgZm9yIChsZXQgbmFtZSBpbiBjb21wcmVzc2VkRm9ybWF0cykgeworICAg
ICAgICBpZiAoY29tcHJlc3NlZEZvcm1hdHMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAg
ICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGNvbXByZXNz
ZWRGb3JtYXRzW25hbWVdLCB0ZXN0U2l6ZSwgdGVzdFNpemUsIDAsIG5ldyBVaW50OEFycmF5KGV4
cGVjdGVkQnl0ZUxlbmd0aCh0ZXN0U2l6ZSwgdGVzdFNpemUsIGNvbXByZXNzZWRGb3JtYXRzW25h
bWVdKSkpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9F
TlVNLCAiVHJ5aW5nIHRvIHVzZSBmb3JtYXQgIiArIG5hbWUgKyAiIHdpdGggZXh0ZW5zaW9uIGRp
c2FibGVkLiIpOworICAgICAgICB9CisgICAgfQorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIG51bGwpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK307CisKKy8qKgorICog
QHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlfSBnbAorICogQHBhcmFtIHtPYmplY3R9
IGV4cGVjdGVkRm9ybWF0cyBNYXBwaW5nIGZyb20gZm9ybWF0IG5hbWVzIHRvIGZvcm1hdCBlbnVt
IHZhbHVlcy4KKyAqLworbGV0IHRlc3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZCA9IGZ1bmN0aW9u
KGdsLCBleHBlY3RlZEZvcm1hdHMpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3Rp
bmcgdGhhdCBldmVyeSBmb3JtYXQgaXMgbGlzdGVkIGJ5IHRoZSBjb21wcmVzc2VkIHRleHR1cmUg
Zm9ybWF0cyBxdWVyeSIpOworCisgICAgbGV0IHN1cHBvcnRlZEZvcm1hdHMgPSBnbC5nZXRQYXJh
bWV0ZXIoZ2wuQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMpOworCisgICAgbGV0IGZhaWxlZDsK
KyAgICBsZXQgY291bnQgPSAwOworICAgIGZvciAobGV0IG5hbWUgaW4gZXhwZWN0ZWRGb3JtYXRz
KSB7CisgICAgICAgIGlmIChleHBlY3RlZEZvcm1hdHMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsK
KyAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgICAgICBsZXQgZm9ybWF0ID0gZXhwZWN0ZWRG
b3JtYXRzW25hbWVdOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGZv
ciAobGV0IGlpID0gMDsgaWkgPCBzdXBwb3J0ZWRGb3JtYXRzLmxlbmd0aDsgKytpaSkgeworICAg
ICAgICAgICAgICAgIGlmIChmb3JtYXQgPT0gc3VwcG9ydGVkRm9ybWF0c1tpaV0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgic3VwcG9ydGVkIGZvcm1hdCAiICsgbmFtZSArICIg
ZXhpc3RzIik7CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoZmFpbGVkKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgic3VwcG9y
dGVkIGZvcm1hdCAiICsgbmFtZSArICIgZG9lcyBub3QgZXhpc3QiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3VwcG9ydGVkRm9ybWF0cy5sZW5ndGggIT0gY291
bnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiSW5jb3JyZWN0IG51bWJlciBvZiBzdXBwb3J0ZWQg
Zm9ybWF0cywgd2FzICIgKyBzdXBwb3J0ZWRGb3JtYXRzLmxlbmd0aCArICIgc2hvdWxkIGJlICIg
KyBjb3VudCk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge09iamVjdH0gZXh0IENvbXBy
ZXNzZWQgdGV4dHVyZSBleHRlbnNpb24gb2JqZWN0LgorICogQHBhcmFtIHtPYmplY3R9IGV4cGVj
dGVkRm9ybWF0cyBNYXBwaW5nIGZyb20gZm9ybWF0IG5hbWVzIHRvIGZvcm1hdCBlbnVtIHZhbHVl
cy4KKyAqLworbGV0IHRlc3RDb3JyZWN0RW51bVZhbHVlc0luRXh0ID0gZnVuY3Rpb24oZXh0LCBl
eHBlY3RlZEZvcm1hdHMpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgdGhh
dCBmb3JtYXQgZW51bSB2YWx1ZXMgaW4gdGhlIGV4dGVuc2lvbiBvYmplY3QgYXJlIGNvcnJlY3Qi
KTsKKworICAgIGZvciAobmFtZSBpbiBleHBlY3RlZEZvcm1hdHMpIHsKKyAgICAgICAgaWYgKGV4
cGVjdGVkRm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAgICAgICAgICAgaWYgKGlz
UmVzdWx0Q29ycmVjdChleHRbbmFtZV0sIGV4cGVjdGVkRm9ybWF0c1tuYW1lXSkpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJFbnVtIHZhbHVlIGZvciAiICsgbmFtZSArICIgbWF0Y2hl
cyAweCIgKyBleHRbbmFtZV0udG9TdHJpbmcoMTYpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRW51bSB2YWx1ZSBmb3IgIiArIG5hbWUgKyAiIG1p
c21hdGNoOiAweCIgKyBleHRbbmFtZV0udG9TdHJpbmcoMTYpICsgIiBzaG91bGQgYmUgMHgiICsg
ZXhwZWN0ZWRGb3JtYXRzW25hbWVdLnRvU3RyaW5nKDE2KSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZX0gZ2wKKyAqIEBwYXJhbSB7T2JqZWN0fSB2YWxpZEZvcm1hdHMgTWFwcGluZyBmcm9tIGZv
cm1hdCBuYW1lcyB0byBmb3JtYXQgZW51bSB2YWx1ZXMuCisgKiBAcGFyYW0gZXhwZWN0ZWRCeXRl
TGVuZ3RoIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBpbiB3aWR0aCwgaGVpZ2h0IGFuZCBmb3JtYXQg
YW5kIHJldHVybnMgdGhlIGV4cGVjdGVkIGJ1ZmZlciBzaXplIGluIGJ5dGVzLgorICogQHBhcmFt
IGdldEJsb2NrRGltZW5zaW9ucyBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaW4gYSBmb3JtYXQgYW5k
IHJldHVybnMgYmxvY2sgc2l6ZSBpbiBwaXhlbHMuCisgKi8KK2xldCB0ZXN0Rm9ybWF0UmVzdHJp
Y3Rpb25zT25CdWZmZXJTaXplID0gZnVuY3Rpb24oZ2wsIHZhbGlkRm9ybWF0cywgZXhwZWN0ZWRC
eXRlTGVuZ3RoLCBnZXRCbG9ja0RpbWVuc2lvbnMpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoIlRlc3RpbmcgZm9ybWF0IHJlc3RyaWN0aW9ucyBvbiB0ZXh0dXJlIHVwbG9hZCBidWZmZXIg
c2l6ZSIpOworCisgICAgbGV0IHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgIGZvciAobGV0IGZvcm1hdElkIGluIHZh
bGlkRm9ybWF0cykgeworICAgICAgICBpZiAodmFsaWRGb3JtYXRzLmhhc093blByb3BlcnR5KGZv
cm1hdElkKSkgeworICAgICAgICAgICAgbGV0IGZvcm1hdCA9IHZhbGlkRm9ybWF0c1tmb3JtYXRJ
ZF07CisgICAgICAgICAgICBsZXQgYmxvY2tTaXplID0gZ2V0QmxvY2tEaW1lbnNpb25zKGZvcm1h
dCk7CisgICAgICAgICAgICBsZXQgZXhwZWN0ZWRTaXplID0gZXhwZWN0ZWRCeXRlTGVuZ3RoKGJs
b2NrU2l6ZS53aWR0aCAqIDQsIGJsb2NrU2l6ZS5oZWlnaHQgKiA0LCBmb3JtYXQpOworICAgICAg
ICAgICAgbGV0IGRhdGEgPSBuZXcgVWludDhBcnJheShleHBlY3RlZFNpemUpOworICAgICAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBibG9j
a1NpemUud2lkdGggKiAzLCBibG9ja1NpemUuaGVpZ2h0ICogNCwgMCwgZGF0YSk7CisgICAgICAg
ICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCBmb3JtYXRJZCAr
ICIgZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMgKHRvbyBzbWFsbCB3aWR0aCki
KTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGZvcm1hdCwgYmxvY2tTaXplLndpZHRoICogNSwgYmxvY2tTaXplLmhlaWdodCAqIDQsIDAsIGRh
dGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxV
RSwgZm9ybWF0SWQgKyAiIGRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zICh0b28g
bGFyZ2Ugd2lkdGgpIik7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBmb3JtYXQsIGJsb2NrU2l6ZS53aWR0aCAqIDQsIGJsb2NrU2l6ZS5oZWln
aHQgKiAzLCAwLCBkYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
LklOVkFMSURfVkFMVUUsIGZvcm1hdElkICsgIiBkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGlt
ZW5zaW9ucyAodG9vIHNtYWxsIGhlaWdodCkiKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRU
ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgYmxvY2tTaXplLndpZHRoICogNCwg
YmxvY2tTaXplLmhlaWdodCAqIDUsIDAsIGRhdGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgZm9ybWF0SWQgKyAiIGRhdGEgc2l6ZSBkb2Vz
IG5vdCBtYXRjaCBkaW1lbnNpb25zICh0b28gbGFyZ2UgaGVpZ2h0KSIpOworICAgICAgICB9Cisg
ICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2V9IGds
CisgKiBAcGFyYW0ge09iamVjdH0gdmFsaWRGb3JtYXRzIE1hcHBpbmcgZnJvbSBmb3JtYXQgbmFt
ZXMgdG8gZm9ybWF0IGVudW0gdmFsdWVzLgorICogQHBhcmFtIGV4cGVjdGVkQnl0ZUxlbmd0aCBB
IGZ1bmN0aW9uIHRoYXQgdGFrZXMgaW4gd2lkdGgsIGhlaWdodCBhbmQgZm9ybWF0IGFuZCByZXR1
cm5zIHRoZSBleHBlY3RlZCBidWZmZXIgc2l6ZSBpbiBieXRlcy4KKyAqIEBwYXJhbSBnZXRCbG9j
a0RpbWVuc2lvbnMgQSBmdW5jdGlvbiB0aGF0IHRha2VzIGluIGEgZm9ybWF0IGFuZCByZXR1cm5z
IGJsb2NrIHNpemUgaW4gcGl4ZWxzLgorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoIFdpZHRoIG9m
IHRoZSBpbWFnZSBpbiBwaXhlbHMuCisgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IEhlaWdodCBv
ZiB0aGUgaW1hZ2UgaW4gcGl4ZWxzLgorICogQHBhcmFtIHtPYmplY3R9IHN1YkltYWdlQ29uZmln
cyBjb25maWdzIGZvciBjb21wcmVzc2VkVGV4U3ViSW1hZ2UgY2FsbHMKKyAqLworbGV0IHRlc3RU
ZXhTdWJJbWFnZURpbWVuc2lvbnMgPSBmdW5jdGlvbihnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3Rl
ZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucywgd2lkdGgsIGhlaWdodCwgc3ViSW1hZ2VD
b25maWdzKSB7CisgICAgbGV0IHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5k
VGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworCisgICAgZm9yIChsZXQgZm9ybWF0SWQgaW4g
dmFsaWRGb3JtYXRzKSB7CisgICAgICAgIGlmICh2YWxpZEZvcm1hdHMuaGFzT3duUHJvcGVydHko
Zm9ybWF0SWQpKSB7CisgICAgICAgICAgICBsZXQgZm9ybWF0ID0gdmFsaWRGb3JtYXRzW2Zvcm1h
dElkXTsKKyAgICAgICAgICAgIGxldCBibG9ja1NpemUgPSBnZXRCbG9ja0RpbWVuc2lvbnMoZm9y
bWF0KTsKKyAgICAgICAgICAgIGxldCBleHBlY3RlZFNpemUgPSBleHBlY3RlZEJ5dGVMZW5ndGgo
d2lkdGgsIGhlaWdodCwgZm9ybWF0KTsKKyAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IFVpbnQ4
QXJyYXkoZXhwZWN0ZWRTaXplKTsKKworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAg
ICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAic2V0dGluZyB1
cCBjb21wcmVzc2VkIHRleHR1cmUiKTsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxl
biA9IHN1YkltYWdlQ29uZmlncy5sZW5ndGg7IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAg
ICAgIGxldCBjID0gc3ViSW1hZ2VDb25maWdzW2ldOworICAgICAgICAgICAgICAgIGxldCBzdWJE
YXRhID0gbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWRCeXRlTGVuZ3RoKGMud2lkdGgsIGMuaGVpZ2h0
LCBmb3JtYXQpKTsKKyAgICAgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCBjLnhvZmZzZXQsIGMueW9mZnNldCwgYy53aWR0aCwgYy5oZWlnaHQs
IGZvcm1hdCwgc3ViRGF0YSk7CisgICAgICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgYy5leHBlY3RhdGlvbiwgYy5tZXNzYWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAgIGds
LmRlbGV0ZVRleHR1cmUodGV4KTsKK307CisKK2xldCB0ZXN0VGV4SW1hZ2VMZXZlbERpbWVuc2lv
bnMgPSBmdW5jdGlvbihnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJs
b2NrRGltZW5zaW9ucywgaW1hZ2VDb25maWdzKSB7CisgICAgbGV0IHRleCA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworCisgICAg
Zm9yIChsZXQgZm9ybWF0SWQgaW4gdmFsaWRGb3JtYXRzKSB7CisgICAgICAgIGlmICh2YWxpZEZv
cm1hdHMuaGFzT3duUHJvcGVydHkoZm9ybWF0SWQpKSB7CisgICAgICAgICAgICBsZXQgZm9ybWF0
ID0gdmFsaWRGb3JtYXRzW2Zvcm1hdElkXTsKKyAgICAgICAgICAgIGxldCBibG9ja1NpemUgPSBn
ZXRCbG9ja0RpbWVuc2lvbnMoZm9ybWF0KTsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAs
IGxlbiA9IGltYWdlQ29uZmlncy5sZW5ndGg7IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAg
ICAgIGxldCBjID0gaW1hZ2VDb25maWdzW2ldOworICAgICAgICAgICAgICAgIGxldCBkYXRhID0g
bmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWRCeXRlTGVuZ3RoKGMud2lkdGgsIGMuaGVpZ2h0LCBmb3Jt
YXQpKTsKKyAgICAgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCBjLmxldmVsLCBmb3JtYXQsIGMud2lkdGgsIGMuaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAg
ICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBjLmV4cGVjdGF0aW9uLCBjLm1lc3Nh
Z2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZ2wuYmluZFRleHR1
cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfQor
CityZXR1cm4geworICAgIGZvcm1hdFRvU3RyaW5nOiBmb3JtYXRUb1N0cmluZywKKyAgICBpbnNl
cnRDYXB0aW9uZWRJbWc6IGluc2VydENhcHRpb25lZEltZywKKyAgICBtYWtlU2NhbGVkSW1hZ2U6
IG1ha2VTY2FsZWRJbWFnZSwKKyAgICB0ZXN0Q29tcHJlc3NlZEZvcm1hdHNMaXN0ZWQ6IHRlc3RD
b21wcmVzc2VkRm9ybWF0c0xpc3RlZCwKKyAgICB0ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2YWls
YWJsZVdoZW5FeHRlbnNpb25EaXNhYmxlZDogdGVzdENvbXByZXNzZWRGb3JtYXRzVW5hdmFpbGFi
bGVXaGVuRXh0ZW5zaW9uRGlzYWJsZWQsCisgICAgdGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQ6
IHRlc3RDb3JyZWN0RW51bVZhbHVlc0luRXh0LAorICAgIHRlc3RGb3JtYXRSZXN0cmljdGlvbnNP
bkJ1ZmZlclNpemU6IHRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1ZmZlclNpemUsCisgICAgdGVz
dFRleFN1YkltYWdlRGltZW5zaW9uczogdGVzdFRleFN1YkltYWdlRGltZW5zaW9ucywKKyAgICB0
ZXN0VGV4SW1hZ2VMZXZlbERpbWVuc2lvbnM6IHRlc3RUZXhJbWFnZUxldmVsRGltZW5zaW9ucywK
K307CisKK30pKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410784</attachid>
            <date>2020-10-07 14:41:04 -0700</date>
            <delta_ts>2020-10-08 12:02:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217198-20201007144103.patch</filename>
            <type>text/plain</type>
            <size>88279</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzliNjBmZTYxMDYyMzI1
ODgzYzYwZTcyM2FiNDVkMWFmMjllOTI0MC4uYmEwY2Q4ZjcyNjA2OWQwODEyNzNhYzFiMzBjNTgw
YmNiZmRlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTEwLTA2ICBKYW1l
cyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0
IEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMgV2ViR0wgZXh0ZW5zaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgVGVzdDogd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFRvSlNWYWx1ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQzo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk6CisgICAgICAgIChXZWJDb3JlOjpFWFRU
ZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpnZXROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1
bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxv
c2VFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisK
IDIwMjAtMDktMzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIG5vbi1hbmltYXRlZCBzdXBwb3J0IGZvciB0aGUgQ1NTIHRyYW5zbGF0ZSBwcm9wZXJ0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxOTQzODAyM2M0MzU4YjA2MDYxMDNjNjVjNDdkNTg5
ZjdlZTVjMzRjLi45NGFiNTk4MTQzYzFiYjI4ZmYyZGVhMGEwMjdkZGE3NTRjNWVmYzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQ0OCw2ICsxNDQ4LDcgQEAgaWYgKEVOQUJMRV9XRUJHTCkK
ICAgICAgICAgaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKICAgICAgICAgaHRtbC9jYW52
YXMvRVhURnJhZ0RlcHRoLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJl
TE9ELmNwcAorICAgICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNw
cAogICAgICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwCiAg
ICAgICAgIGh0bWwvY2FudmFzL0VYVHNSR0IuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL09FU0Vs
ZW1lbnRJbmRleFVpbnQuY3BwCkBAIC0xNTA2LDYgKzE1MDcsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX0lETF9GSUxFUwogICAgIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsCiAgICAgaHRt
bC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAogICAgIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1
cmVMT0QuaWRsCisgICAgaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwK
ICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCiAgICAgaHRt
bC9jYW52YXMvRVhUc1JHQi5pZGwKICAgICBodG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50
LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
aW5kZXggYThkY2Y5Njk4MmE0MDgyOTk3NDU4MjU4MzRiNzE2MGI0NWQyN2Y1Zi4uMDY4NWM1YTI5
NGRkNjA1MjFhMTA1Y2EwZTU2NTY3MGE1OGVmYzE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MzIsNiArOTMyLDcgQEAgJChQUk9K
RUNUX0RJUikvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsCiAkKFBST0pF
Q1RfRElSKS9odG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmlkbAogJChQUk9KRUNUX0RJUikvaHRt
bC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvRVhU
U2hhZGVyVGV4dHVyZUxPRC5pZGwKKyQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL0VYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRz
UkdCLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCAzNjc5NWVhNDEzMzhlZGRhODRhZDI4MzRmNjg4ZGVkMzIwNGRlMGQ4Li43
Nzk5MDBmOGMyNDczYjQxZWY5ZGRkNGQ0ZjgyYjAzMGM3OTA0Nzc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNjcxLDYgKzY3MSw4
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhURnJh
Z0RlcHRoLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNFWFRGcmFnRGVwdGguaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRVhUc1JHQi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDJjMWMx
MDg5YWQ1YWI2Yjc1OWY1MDZkYzFhZTkwM2NmZjIwNjA2ZjYuLmY0Y2VjODY0NjJjMzJkMGJkOWU3
YTZhODlkNDU0ZGY3MjFkNjFlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
OTUxLDYgKzk1MSw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4
dHVyZUxPRC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRzUkdC
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHQuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYzdlY2ZkZDE1NWM1MjgwZDU4NTRiZmI1MmJl
YmVhMDI4NGFkYjdhMy4uNmQzYTNlNTEwMDNjNDE0NDRkZjZjMTUxZWRkZTZlNDg3YTI1Yzc3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTEyNTUsNiArMTI1NSw3IEBAIGh0bWwvY2FudmFzL0VYVENvbG9y
QnVmZmVySGFsZkZsb2F0LmNwcAogaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKIGh0bWwv
Y2FudmFzL0VYVEZyYWdEZXB0aC5jcHAKIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0Qu
Y3BwCitodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAogaHRtbC9jYW52
YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcAogaHRtbC9jYW52YXMvRVhUc1JHQi5j
cHAKIGh0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI4
NjMsNiArMjg2NCw3IEBAIEpTRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCiBKU0VYVEZsb2F0
QmxlbmQuY3BwCiBKU0VYVEZyYWdEZXB0aC5jcHAKIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAK
K0pTRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAKIEpTRVhUVGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLmNwcAogSlNFWFRzUkdCLmNwcAogSlNFY0tleVBhcmFtcy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYTAwZjll
MGEyNmJmMjFhOGJjYzlmZjU1MTAyMmY3NDc5ODEyMGRkLi4xYjhmMWIzY2I2ZmJjMDYyYWE3NGU3
ZmZjYjgzMmQ1MDg4NzAzOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjExMyw2ICsxMjExMyw5IEBACiAJCUEzN0E0MkNF
MjUxRUI5OTYwMEY3NUFGRiAvKiBPRVNGQk9SZW5kZXJNaXBtYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT0VTRkJPUmVuZGVyTWlwbWFwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRDAyNTFFQjk5NjAwRjc1QUZGIC8qIE9FU0ZCT1Jl
bmRlck1pcG1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPRVNGQk9SZW5k
ZXJNaXBtYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRDEyNTFFQjk5
NzAwRjc1QUZGIC8qIE9FU0ZCT1JlbmRlck1pcG1hcC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gT0VTRkJPUmVuZGVyTWlwbWFwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTM3QTQyRTAyNTI3QjQ5QzAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNz
aW9uUkdUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzN0E0MkUyMjUyN0I0
OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTM3QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4
MTIwMzI1MkVFMDA2Q0FEMDYgLyogVXNlckFnZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWdlbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWdlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODMyMDMyNTY5MTAwNkNBRDA2IC8qIFVzZXJBZ2VudElP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudElP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzkzLDYgKzE5Mzk2LDkgQEAK
IAkJCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8sCiAJCQkJNzI3
QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLywKIAkJCQk3MjdBRkVEMzFBMkVB
NkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8sCisJCQkJQTM3QTQyRTAyNTI3QjQ5QzAwRjc1
QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwICovLAorCQkJCUEzN0E0MkUyMjUy
N0I0OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8sCisJCQkJQTM3
QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsICov
LAogCQkJCTc3Mjg2OTRCMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMuY3BwICovLAogCQkJCTc3Mjg2OTRDMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCAqLywKIAkJCQk3NzI4Njk0RDE0Rjg4ODI1MDBGNDg0REMgLyog
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAppbmRleCBkNDcwZDAwOGE0OWQ0MGEz
ZTdhYmNiYTRlMjZlNDUzNjQ3YWYzMDFlLi4zZDMwNjYzMTEwNDZhNzYwNzA0MTI5OWQxM2U4YWY3
NTVmYTI2NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRXZWJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0V2ViR0wuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNFWFRGbG9hdEJsZW5k
LmgiCiAjaW5jbHVkZSAiSlNFWFRGcmFnRGVwdGguaCIKICNpbmNsdWRlICJKU0VYVFNoYWRlclRl
eHR1cmVMT0QuaCIKKyNpbmNsdWRlICJKU0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKICNp
bmNsdWRlICJKU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUgIkpTRVhU
c1JHQi5oIgogI2luY2x1ZGUgIkpTT0VTRWxlbWVudEluZGV4VWludC5oIgpAQCAtMTcxLDYgKzE3
Miw4IEBAIEpTVmFsdWUgY29udmVydFRvSlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmCiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTExvc2VDb250
ZXh0Jj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUU2hhZGVyVGV4
dHVyZUxPRE5hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAm
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxFWFRTaGFkZXJUZXh0dXJlTE9EJj4oZXh0ZW5zaW9u
KSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQ05h
bWU6CisgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfY2FzdDxFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDJj4oZXh0ZW5zaW9uKSk7
CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljTmFt
ZToKICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmpl
Y3QsIHN0YXRpY19jYXN0PEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyY+KGV4dGVuc2lvbikp
OwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OkVYVHNSR0JOYW1lOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYTliNTc4Njg2MzkxNDZlZTJkMWIzMmFhMjE4NWM2YTU2OWU0OGVhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDLmgiCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDKTsKKworRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6RVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKK3sKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9yZ3RjIik7CisKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JH
VEMxX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JF
RF9HUkVFTl9SR1RDMl9FWFQpOworfQorCitFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhU
VGV4dHVyZUNvbXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKKworV2ViR0xFeHRlbnNpb246OkV4
dGVuc2lvbk5hbWUgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6Z2V0TmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVENOYW1lOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTg4M2Q5M2JjYTFiMThkMzcxN2VmZWM5ZTQzNTdjNGM0OGJiZTJjNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVz
c2lvblJHVEMuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJXZWJHTEV4dGVuc2lvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewor
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgdmlydHVhbCB+RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdU
QygpOworCisgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZjk2
MDM1ZjZiOTI0OGNmMDE3OTViMTg4MDc0Yjc1NzU2MmQ1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmlkbApA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdMLAorICAgIEdl
bmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMg
eworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUID0gMHg4
REJCOworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMx
X0VYVCA9IDB4OERCQzsKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkVEX0dS
RUVOX1JHVEMyX0VYVCA9IDB4OERCRDsKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNT
RURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkU7Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA3ZDRiNThmZGU1MDViMjcyODBiZTMwZTRhODA4YzRhYjJhMzUzZjhmLi5iNWZjZjkzZDg3MmFh
ZTM1Y2M4Y2I2ODZjODY5NGE1ZmU2YWUzM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkVYVENvbG9yQnVmZmVyRmxvYXQuaCIKICNpbmNsdWRlICJFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdC5oIgogI2luY2x1ZGUgIkVYVEZsb2F0QmxlbmQuaCIKKyNpbmNsdWRlICJF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCkBAIC0yNjcxLDYgKzI2NzIsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0
dXJuIHZhcmlhYmxlLmdldCgpOyBcCiAgICAgfQogCisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEMsICJF
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxv
YXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRl
bnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9z
ZV9jb250ZXh0IiwgdHJ1ZSk7CkBAIC0yNzAzLDYgKzI3MDUsOCBAQCBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygp
CiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAg
IGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3Mp
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwor
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9y
Z3RjIl9zKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
cmd0YyJfcyk7CiAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
U1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXh0ZW5zaW9uLmgKaW5kZXggYTc4ZWYxNWIzOTEyMjYwZDFhMDRmYjA0YjI5Y2MyMWYwOTEzMzRk
MS4uNDQwZDRiOTU0Nzk0MzNjZmZlMTliMmFlNjE0NWFkMDk5ODViNmJkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCkBAIC00MSw2ICs0MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgRVhUQmxlbmRNaW5NYXhOYW1lLAogICAgICAgICBFWFRGcmFnRGVwdGhO
YW1lLAogICAgICAgICBFWFRTaGFkZXJUZXh0dXJlTE9ETmFtZSwKKyAgICAgICAgRVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQ05hbWUsCiAgICAgICAgIEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
Y05hbWUsCiAgICAgICAgIEVYVHNSR0JOYW1lLAogICAgICAgICBPRVNUZXh0dXJlRmxvYXROYW1l
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggYWFiOTBmOTI5NTJjYTYxMzllMWJhMjk3NDI5ZmIzM2VmNjc0NTQ1Zi4u
MzU1NjZlYjhkYTU3ZTdlMzYyYjg0MGZlODY0ZjM1OTE3NjZkMmIwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRVhURmxvYXRCbGVuZC5oIgogI2luY2x1ZGUgIkVYVEZy
YWdEZXB0aC5oIgogI2luY2x1ZGUgIkVYVFNoYWRlclRleHR1cmVMT0QuaCIKKyNpbmNsdWRlICJF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgpAQCAtMTUzLDYgKzE1NCw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBt
X2V4dFNoYWRlclRleHR1cmVMT0QuZ2V0KCk7CiAgICAgfQogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYywgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsIGVuYWJsZVN1cHBvcnRlZEV4
dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBtX2V4dFRleHR1cmVD
b21wcmVzc2lvblJHVEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSk7CiAg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNTdGFuZGFyZERlcml2YXRpdmVzLCBtX29lc1N0YW5k
YXJkRGVyaXZhdGl2ZXMsICJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiLCBlbmFibGVTdXBwb3J0
ZWRFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJfcykpOwogICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0LCBtX29lc1RleHR1cmVGbG9hdCwgIk9FU190
ZXh0dXJlX2Zsb2F0IiwgT0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKICAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxv
YXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRl
bnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwpAQCAtMjMxLDYgKzIzMyw4
IEBAIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1
cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMiX3MpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKKyAgICBpZiAobV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3JndGMiX3MpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9yZ3RjIl9zKTsKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9y
dHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdCJfcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDA0NWQ2YTZiZjkxNmU1YWYzYmEwMjlhMWI0
NjU2ZjkzNWQxMGE1ZTAuLmNjZmNiYWZkNzhjMGZiMWIxODgxYmVmMWEzMjVhNjVhNmYzZWRmYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRVhURmxvYXRC
bGVuZC5oIgogI2luY2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgogI2luY2x1ZGUgIkVYVFNoYWRlclRl
eHR1cmVMT0QuaCIKKyNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5j
bHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTEwOTEsOSArMTA5Miw5IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXJrQ29udGV4dENoYW5nZWRBbmROb3RpZnlDYW52YXNP
YnNlcnZlcigpCiB7Ci0gICAgLy8gSWYgd2UncmUgbm90IHRvdWNoaW5nIHRoZSBkZWZhdWx0IGZy
YW1lYnVmZmVyLCBub3RoaW5nIHZpc2libGUgaGFzIGNoYW5nZWQuCi0gICAgaWYgKG1fZnJhbWVi
dWZmZXJCaW5kaW5nKQotICAgICAgICByZXR1cm47CisvLyAgICAvLyBJZiB3ZSdyZSBub3QgdG91
Y2hpbmcgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIsIG5vdGhpbmcgdmlzaWJsZSBoYXMgY2hhbmdl
ZC4KKy8vICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZykKKy8vICAgICAgICByZXR1cm47CiAK
ICAgICBtYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICBpZiAoIWlzQWNjZWxlcmF0ZWQoKSkKQEAg
LTM3MTQsNiArMzcxNSw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5z
aW9uSXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBDSEVDS19FWFRFTlNJT04obV9l
eHRGcmFnRGVwdGgsICJFWFRfZnJhZ19kZXB0aCIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4
dEJsZW5kTWluTWF4LCAiRVhUX2JsZW5kX21pbm1heCIpOwogICAgIENIRUNLX0VYVEVOU0lPTiht
X2V4dHNSR0IsICJFWFRfc1JHQiIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dFRleHR1cmVD
b21wcmVzc2lvblJHVEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIik7CiAgICAgQ0hF
Q0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCAiRVhUX3RleHR1cmVf
ZmlsdGVyX2FuaXNvdHJvcGljIik7CiAgICAgQ0hFQ0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljLCAiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
OwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dFNoYWRlclRleHR1cmVMT0QsICJFWFRfc2hhZGVy
X3RleHR1cmVfbG9kIik7CkBAIC02NzMwLDYgKzY3MzIsMjYgQEAgYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBm
dW5jdGkKICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkLnVuc2Fm
ZUdldCgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TSUdORURfUkVEX1JHVEMxX0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9
IDg7CisgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAgIGNvbnN0IGlu
dCBrQmxvY2tIZWlnaHQgPSA0OworICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRo
ICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICBpbnQgbnVtQmxvY2tz
RG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAg
ICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxv
Y2tTaXplOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVDogeworICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrU2l6ZSA9IDE2OworICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAg
ICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgaW50IG51bUJsb2Nrc0Fj
cm9zcyA9ICh3aWR0aCArIGtCbG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0aDsKKyAgICAgICAg
aW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tI
ZWlnaHQ7CisgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9j
a3NEb3duICoga0Jsb2NrU2l6ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VO
VU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgZm9ybWF0Iik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTc3ODQsNiArNzgwNiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
bG9zZUV4dGVuc2lvbnMoTG9zdENvbnRleHRNb2RlIG1vZGUpCiAgICAgTE9TRV9FWFRFTlNJT04o
bV9leHRGcmFnRGVwdGgpOwogICAgIExPU0VfRVhURU5TSU9OKG1fZXh0QmxlbmRNaW5NYXgpOwog
ICAgIExPU0VfRVhURU5TSU9OKG1fZXh0c1JHQik7CisgICAgTE9TRV9FWFRFTlNJT04obV9leHRU
ZXh0dXJlQ29tcHJlc3Npb25SR1RDKTsKICAgICBMT1NFX0VYVEVOU0lPTihtX2V4dFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYyk7CiAgICAgTE9TRV9FWFRFTlNJT04obV9leHRTaGFkZXJUZXh0dXJl
TE9EKTsKICAgICBMT1NFX0VYVEVOU0lPTihtX29lc1RleHR1cmVGbG9hdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgK
aW5kZXggN2IyMTg2NzJhYzU2NTI4ODRmYmQ3MTY4NmVkMjdlMDg2ODYxNTc3MC4uMjA2YWNlMzU1
MGFiOWExNjMxYzUzNTM2NGZhYzE5MjNmODU1ZWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtNzIsNiAr
NzIsNyBAQCBjbGFzcyBFWFRCbGVuZE1pbk1heDsKIGNsYXNzIEVYVENvbG9yQnVmZmVyRmxvYXQ7
CiBjbGFzcyBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDsKIGNsYXNzIEVYVEZsb2F0QmxlbmQ7Citj
bGFzcyBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOwogY2xhc3MgRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljOwogY2xhc3MgRVhUU2hhZGVyVGV4dHVyZUxPRDsKIGNsYXNzIEVYVHNSR0I7CkBA
IC00MjgsNiArNDI5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UoQ2FudmFzQmFzZSYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpOwogICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4m
JiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyk7CiAKKyAgICBmcmllbmQgY2xhc3MgRVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQzsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xEcmF3QnVmZmVyczsKICAg
ICBmcmllbmQgY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xP
YmplY3Q7CkBAIC02NjksNiArNjcxLDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxFWFRGcmFn
RGVwdGg+IG1fZXh0RnJhZ0RlcHRoOwogICAgIFJlZlB0cjxFWFRCbGVuZE1pbk1heD4gbV9leHRC
bGVuZE1pbk1heDsKICAgICBSZWZQdHI8RVhUc1JHQj4gbV9leHRzUkdCOworICAgIFJlZlB0cjxF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDPiBtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEM7CiAg
ICAgUmVmUHRyPEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4gbV9leHRUZXh0dXJlRmlsdGVy
QW5pc290cm9waWM7CiAgICAgUmVmUHRyPEVYVFNoYWRlclRleHR1cmVMT0Q+IG1fZXh0U2hhZGVy
VGV4dHVyZUxPRDsKICAgICBSZWZQdHI8T0VTVGV4dHVyZUZsb2F0PiBtX29lc1RleHR1cmVGbG9h
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lv
bnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgK
aW5kZXggYzA3YjNjMDA1ZjQyYjljZjczYmZhMDYxNzYxODU4ZDU1Njk3MTRmNy4uMGY1ZGJiYWJm
YjE0OGRmMGFkMjMyN2UwNGVkMzEwZmQ3MThlMWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKQEAgLTIxOSw2ICsyMTksMTIgQEAgcHVi
bGljOgogICAgICAgICBDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4
OTNEQywKICAgICAgICAgQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAw
eDkzREQsCiAKKyAgICAgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YworICAg
ICAgICBDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQgPSAweDhEQkIsCisgICAgICAgIENPTVBSRVNT
RURfU0lHTkVEX1JFRF9SR1RDMV9FWFQgPSAweDhEQkMsCisgICAgICAgIENPTVBSRVNTRURfUkVE
X0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRCwKKyAgICAgICAgQ09NUFJFU1NFRF9TSUdORURfUkVE
X0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRSwKKwogICAgICAgICAvLyBHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMKICAgICAgICAgVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAw
eDg0RkUsCiAgICAgICAgIE1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRiwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OGRmMWIxYzZmNWM0MjNmOGU1MmRhMDhhNDNkMTdlMTU0NzlmZWU4Li4wYjU1ZjYz
NGViZWE5ZTA5MTFhZmU4NGU5MmM5NzliNDgwY2RkMWY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjAtMTAtMDYgIEphbWVzIERhcnBpbmlhbiAgPGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFN1cHBvcnQgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyBXZWJHTCBleHRl
bnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NzE5OAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KKworICAgICAgICAq
IHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0
Yy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3MzdGMtYW5kLXJndGMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3MzdGMtYW5k
LXJndGMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3Rj
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9jb21wcmVzc2Vk
LXRleHR1cmUtdXRpbHMuanM6IEFkZGVkLgorCiAyMDIwLTA5LTMwICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBub24tYW5pbWF0ZWQgc3VwcG9ydCBm
b3IgdGhlIENTUyB0cmFuc2xhdGUgcHJvcGVydHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4
dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMzBm
NjI2Njc1ODllODVjNDc4NGNmMTFlM2RjZWQ5OWM2YWIzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXBy
ZXNzaW9uLXJndGMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHJ1bnMg
dGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNT
IG9yIEZBSUwuCisKK1Rlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sCitQQVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4
dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZlOTk5ZjVmZGZiMWNkNDZiMmIyZGVkMTkxMzcxOTE0MjYyZDU3NmEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10
ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMg
ZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9U
IEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciBleHQt
dGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNl
cy93ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlm
cmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuPC9wPgorVGVzdDogPGEgaHJlZj0iLi4vLi4v
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4
dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwiPi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5o
dG1sPC9hPgorPGRpdiBpZD0iaWZyYW1lIj4KKzxpZnJhbWUgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXBy
ZXNzaW9uLXJndGMuaHRtbCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgorPC9k
aXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3Rj
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
czN0Yy1hbmQtcmd0Yy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk1NmE5NDY4NjVkYzdhM2Yx
NjVlYzcxODYzNjUxOGJjZTk3ODZmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACitUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cg
aW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KKworVGVzdDogLi4vLi4vcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1y
Z3RjLmh0bWwKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY2ODA1OGQ5
YzhkM2MxOWJkZjUxZjcyNWJjMTNiNWE3OTUxZTAwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sCkBA
IC0wLDAgKzEsMTggQEAKKzwhLS0gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLXdlYmdsLXRlc3RzLnB5LiBETyBOT1QgRURJVCAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25mb3Jt
YW5jZSBUZXN0IFdyYXBwZXIgZm9yIHMzdGMtYW5kLXJndGMuaHRtbDwvdGl0bGU+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVs
b3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBo
cmVmPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL3MzdGMtYW5kLXJndGMuaHRtbCI+Li4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLmh0bWw8L2E+Cis8ZGl2IGlkPSJp
ZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sIiB3aWR0aD0iODAwIiBoZWln
aHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNz
aW9uLXJndGMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMyYTJkNDE2OTA4NzU1MjY5NzRmMGNlZGYxNmVjY2FmZGYyZTBiZDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJn
dGMuaHRtbApAQCAtMCwwICsxLDE0NiBAQAorPCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50
eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0
YyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8TElOSyByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJn
bC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9j
b21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIGV4dGVu
c2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIpOworCitkZWJ1ZygiIik7CisKK3ZhciB2YWxpZEZv
cm1hdHMgPSB7CisgIENPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDogMHg4REJCLAorICBDT01QUkVT
U0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOiAweDhEQkMsCisgIENPTVBSRVNTRURfUkVEX0dSRUVO
X1JHVEMyX0VYVDogMHg4REJELAorICBDT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJf
RVhUOiAweDhEQkUKK307CisKK2Z1bmN0aW9uIGV4cGVjdGVkQnl0ZUxlbmd0aCh3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQpIHsKKyAgaWYgKGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9S
RURfUkdUQzFfRVhUIHx8IGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9TSUdORURf
UkVEX1JHVEMxX0VYVCkgeworICAgIHJldHVybiBNYXRoLmNlaWwod2lkdGggLyA0KSAqIE1hdGgu
Y2VpbChoZWlnaHQgLyA0KSAqIDg7CisgIH0KKyAgZWxzZSB7CisgICAgcmV0dXJuIE1hdGguY2Vp
bCh3aWR0aCAvIDQpICogTWF0aC5jZWlsKGhlaWdodCAvIDQpICogMTY7CisgIH0KK30KKworZnVu
Y3Rpb24gZ2V0QmxvY2tEaW1lbnNpb25zKGZvcm1hdCkgeworICByZXR1cm4ge3dpZHRoOiA0LCBo
ZWlnaHQ6IDR9OworfQorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY3R1ID0gQ29t
cHJlc3NlZFRleHR1cmVVdGlsczsKK3ZhciBjb250ZXh0VmVyc2lvbiA9IHd0dS5nZXREZWZhdWx0
M0RDb250ZXh0VmVyc2lvbigpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFy
IGV4dDsKKwordmFyIGZvcm1hdHMgPSBudWxsOworCitmdW5jdGlvbiBydW5UZXN0RXh0ZW5zaW9u
KCkgeworICAvLyBUZXN0IHRoYXQgZW51bSB2YWx1ZXMgYXJlIGxpc3RlZCBjb3JyZWN0bHkgaW4g
c3VwcG9ydGVkIGZvcm1hdHMgYW5kIGluIHRoZSBleHRlbnNpb24gb2JqZWN0LgorICBjdHUudGVz
dENvbXByZXNzZWRGb3JtYXRzTGlzdGVkKGdsLCB2YWxpZEZvcm1hdHMpOworICBjdHUudGVzdENv
cnJlY3RFbnVtVmFsdWVzSW5FeHQoZXh0LCB2YWxpZEZvcm1hdHMpOworICAvLyBUZXN0IHRoYXQg
dGV4dHVyZSB1cGxvYWQgYnVmZmVyIHNpemUgaXMgdmFsaWRhdGVkIGNvcnJlY3RseS4KKyAgY3R1
LnRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1ZmZlclNpemUoZ2wsIHZhbGlkRm9ybWF0cywgZXhw
ZWN0ZWRCeXRlTGVuZ3RoLCBnZXRCbG9ja0RpbWVuc2lvbnMpOworICAvLyBUZXN0IFRleFN1Yklt
YWdlIHZhbGlkYXRpb24gb24gZGltZW5zaW9ucworICAvLyBDb21wcmVzc2VkVGV4U3ViSW1hZ2Uq
IHdpbGwgcmVzdWx0IGluIGFuCisgIC8vIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIG9ubHkgaWYg
b25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBvY2N1cnM6CisgIC8vICogPHdpZHRoPiBp
cyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQgPHdpZHRoPiBwbHVzIDx4b2Zmc2V0PiBpcyBu
b3QKKyAgLy8gZXF1YWwgdG8gVEVYVFVSRV9XSURUSDsKKyAgLy8gKiA8aGVpZ2h0PiBpcyBub3Qg
YSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQgPGhlaWdodD4gcGx1cyA8eW9mZnNldD4gaXMKKyAgLy8g
ICAgICAgICAgIG5vdCBlcXVhbCB0byBURVhUVVJFX0hFSUdIVDsgb3IKKyAgLy8gKiA8eG9mZnNl
dD4gb3IgPHlvZmZzZXQ+IGlzIG5vdCBhIG11bHRpcGxlIG9mIGZvdXIuCisgIGN0dS50ZXN0VGV4
U3ViSW1hZ2VEaW1lbnNpb25zKGdsLCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwg
Z2V0QmxvY2tEaW1lbnNpb25zLAorICAgIDE2LCAxNiwgWworICAgICAgeyB4b2Zmc2V0OiAwLCB5
b2Zmc2V0OiAwLCB3aWR0aDogNCwgaGVpZ2h0OiAzLAorICAgICAgICBleHBlY3RhdGlvbjogZ2wu
SU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJoZWlnaHQgaXMgbm90IGEgbXVsdGlwbGUgb2Yg
NCIgfSwKKyAgICAgIHsgeG9mZnNldDogMCwgeW9mZnNldDogMCwgd2lkdGg6IDMsIGhlaWdodDog
NCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAi
d2lkdGggaXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKKyAgICAgIHsgeG9mZnNldDogMSwgeW9m
ZnNldDogMCwgd2lkdGg6IDQsIGhlaWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLklO
VkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAieG9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiA0
IiB9LAorICAgICAgeyB4b2Zmc2V0OiAwLCB5b2Zmc2V0OiAxLCB3aWR0aDogNCwgaGVpZ2h0OiA0
LAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJ5
b2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCisgICAgICB7IHhvZmZzZXQ6IDEyLCB5
b2Zmc2V0OiAxMiwgd2lkdGg6IDQsIGhlaWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGds
Lk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMgdmFsaWQiIH0sCisgIF0pOworCisgIC8vIFRlc3QgVGV4
SW1hZ2UgdmFsaWRhdGlvbiBvbiBsZXZlbCBkaW1lbnNpb25zIGNvbWJpbmF0aW9ucy4KKyAgLy8g
V2hlbiBsZXZlbCBlcXVhbHMgMCwgd2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGEgbXVsdGlwbGUg
b2YgNC4KKyAgLy8gV2hlbiBsZXZlbCBpcyBsYXJnZXIgdGhhbiAwLCB0aGlzIGNvbnN0cmFpbnQg
ZG9lc24ndCBhcHBseS4KKyAgY3R1LnRlc3RUZXhJbWFnZUxldmVsRGltZW5zaW9ucyhnbCwgdmFs
aWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucywKKyAgICBb
CisgICAgICB7IGxldmVsOiAwLCB3aWR0aDogNCwgaGVpZ2h0OiAzLAorICAgICAgICBleHBlY3Rh
dGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJsZXZlbCBpcyAwLCBoZWlnaHQg
aXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKKyAgICAgIHsgbGV2ZWw6IDAsIHdpZHRoOiAzLCBo
ZWlnaHQ6IDQsCisgICAgICAgIGV4cGVjdGF0aW9uOiBnbC5JTlZBTElEX09QRVJBVElPTiwgbWVz
c2FnZTogImxldmVsIGlzIDAsIHdpZHRoIGlzIG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCisgICAg
ICB7IGxldmVsOiAwLCB3aWR0aDogMiwgaGVpZ2h0OiAyLAorICAgICAgICBleHBlY3RhdGlvbjog
Z2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJsZXZlbCBpcyAwLCB3aWR0aCBpcyBub3Qg
YSBtdWx0aXBsZSBvZiA0IiB9LAorICAgICAgeyBsZXZlbDogMCwgd2lkdGg6IDQsIGhlaWdodDog
NCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMgdmFsaWQi
IH0sCisgICAgICB7IGxldmVsOiAxLCB3aWR0aDogMiwgaGVpZ2h0OiAyLAorICAgICAgICBleHBl
Y3RhdGlvbjogZ2wuTk9fRVJST1IsIG1lc3NhZ2U6ICJsZXZlbCA+IDAsIGlzIHZhbGlkIiB9LAor
ICAgICAgeyBsZXZlbDogMiwgd2lkdGg6IDEsIGhlaWdodDogMSwKKyAgICAgICAgZXhwZWN0YXRp
b246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAibGV2ZWwgPiAwLCBpcyB2YWxpZCIgfSwKKyAgXSk7
CisKKyAgLy8gVGVzdCB0aGF0IFJHVEMgZW51bXMgYXJlIG5vdCBhY2NlcHRlZCBieSB0ZXhJbWFn
ZTJECisgIGlmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7CisgICAgdmFyIHRleCA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworCisg
ICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBleHQuQ09NUFJFU1NFRF9SRURfUkdU
QzFfRVhULCA0LCA0LCAwLCBnbC5SRUQsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiQ09NUFJFU1NFRF9S
RURfUkdUQzFfRVhUIGZhaWxzIHdpdGggdGV4SW1hZ2UyRCIpOworCisgICAgZ2wudGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBleHQuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCwg
NCwgNCwgMCwgZ2wuUkVELCBnbC5CWVRFLCBudWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9F
WFQgZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7CisKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIGV4dC5DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQsIDQsIDQsIDAsIGds
LlJHLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCBm
YWlscyB3aXRoIHRleEltYWdlMkQiKTsKKworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZXh0LkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQsIDQsIDQsIDAs
IGdsLlJHLCBnbC5CWVRFLCBudWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgIkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQg
ZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7CisKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7Cisg
IH0KK307CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFp
bGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3Nl
ZCgiY29udGV4dCBleGlzdHMiKTsKKworICAgIGN0dS50ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2
YWlsYWJsZVdoZW5FeHRlbnNpb25EaXNhYmxlZChnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5
dGVMZW5ndGgsIDQpOworCisgICAgZXh0ID0gZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9yZ3RjIik7CisKKyAgICB3dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVkVGVzdChn
bCwgIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiLCBleHQgIT09IG51bGwpOworCisgICAg
aWYgKGV4dCAhPT0gbnVsbCkgeworICAgICAgcnVuVGVzdEV4dGVuc2lvbigpOworICAgIH0KKyAg
fQorfQorCitydW5UZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk1NWQ1OGU1
NjY3YjE1NWJlN2U0MTUxYzE4NWU3MTNiMGMzNjA3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sCkBAIC0wLDAgKzEsOTc0IEBACivvu788IS0tCitDb3B5
cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2Zv
dW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Rlc3RzL2NvbXByZXNzZWQtdGV4dHVyZS11dGlscy5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+V2Vi
R0wgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMgYW5kIEVYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3JndGMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPHN0eWxlPgoraW1nIHsKKyBib3Jk
ZXI6IDFweCBzb2xpZCBibGFjazsKKyBtYXJnaW4tcmlnaHQ6IDFlbTsKK30KKworLnRlc3RpbWFn
ZXMgYnIgeworICBjbGVhcjogYm90aDsKK30KKworLnRlc3RpbWFnZXMgPiBkaXYgeworICBmbG9h
dDogbGVmdDsKKyAgbWFyZ2luOiAxZW07Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI4
IiBoZWlnaHQ9IjgiIHN0eWxlPSJ3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsiPjwvY2FudmFzPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGMgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIEl0
IGFsc28gdGVzdHMgdGhlIHJlbGF0ZWQgZm9ybWF0cyBmcm9tIHRoZSBFWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9yZ3RjIGV4dGVuc2lvbi4iKTsKKworZGVidWcoIiIpOworCisvKgorQkMxIChEWFQx
KSBibG9jaworZTAgPSBbICAwLCAyNTUsIDBdCitlMSA9IFsyNTUsICAgMCwgMF0KK2UwIDwgZTEs
IHNvIGl0IHVzZXMgMy1jb2xvciBtb2RlCisKK2xvY2FsIHBhbGV0dGUKKyAgICAwOiBbICAwLCAy
NTUsIDAsIDI1NV0KKyAgICAxOiBbMjU1LCAgIDAsIDAsIDI1NV0KKyAgICAyOiBbMTI4LCAxMjgs
IDAsIDI1NV0KKyAgICAzOiBbICAwLCAgIDAsIDAsIDI1NV0gLy8gZm9yIEJDMSBSR0IKKyAgICAz
OiBbICAwLCAgIDAsIDAsICAgMF0gLy8gZm9yIEJDMSBSR0JBCitzZWxlY3RvcnMKKyAgICAzIDIg
MSAwCisgICAgMiAyIDEgMAorICAgIDEgMSAxIDAKKyAgICAwIDAgMCAwCisKK0V4dGVuZGluZyB0
aGlzIGJsb2NrIHdpdGggb3BhcXVlIGFscGhhIGFuZCB1cGxvYWRpbmcgYXMgQkMyIG9yIEJDMwor
d2lsbCBnZW5lcmF0ZSB3cm9uZyBjb2xvcnMgYmVjYXVzZSBCQzIgYW5kIEJDMyBkbyBub3QgaGF2
ZSAzLWNvbG9yIG1vZGUuCisqLwordmFyIGltZ180eDRfcmdiYV9keHQxID0gbmV3IFVpbnQ4QXJy
YXkoWworICAgIDB4RTAsIDB4MDcsIDB4MDAsIDB4RjgsIDB4MUIsIDB4MUEsIDB4MTUsIDB4MDAK
K10pOworCisvKgorQkMyIChEWFQzKSBibG9jaworCitRdWFudGl6ZWQgYWxwaGEgdmFsdWVzCisg
ICAgMCAxIDIgMworICAgIDQgNSA2IDcKKyAgICA4IDkgQSBCCisgICAgQyBEIEUgRgorCitSR0Ig
YmxvY2sKK2UwID0gWzI1NSwgICAwLCAwXQorZTEgPSBbICAwLCAyNTUsIDBdCitCQzIgaGFzIG9u
bHkgNC1jb2xvciBtb2RlCisKK2xvY2FsIHBhbGV0dGUKKyAgICAwOiBbMjU1LCAgIDAsIDBdCisg
ICAgMTogWyAgMCwgMjU1LCAwXQorICAgIDI6IFsxNzAsICA4NSwgMF0KKyAgICAzOiBbIDg1LCAx
NzAsIDBdCitzZWxlY3RvcnMKKyAgICAwIDEgMiAzCisgICAgMSAxIDIgMworICAgIDIgMiAyIDMK
KyAgICAzIDMgMyAzCisqLwordmFyIGltZ180eDRfcmdiYV9keHQzID0gbmV3IFVpbnQ4QXJyYXko
WworICAgIDB4MTAsIDB4MzIsIDB4NTQsIDB4NzYsIDB4OTgsIDB4QkEsIDB4REMsIDB4RkUsCisg
ICAgMHgwMCwgMHhGOCwgMHhFMCwgMHgwNywgMHhFNCwgMHhFNSwgMHhFQSwgMHhGRgorXSk7CisK
Ky8qCitCQzMgKERYVDUpIGJsb2NrCisKK0FscGhhIGJsb2NrIChha2EgRFhUNUEpCitlMCA9IDI1
NQorZTEgPSAwCitlMCA+IGUxLCBzbyB1c2luZyA2IGludGVybWVkaWF0ZSBwb2ludHMKK2xvY2Fs
IHBhbGV0dGUKKyAgICAyNTUsIDAsIDIxOSwgMTgyLCAxNDYsIDEwOSwgNzMsIDM2CitzZWxlY3Rv
cnMKKyAgICAwIDEgMiAzCisgICAgMSAyIDMgNAorICAgIDIgMyA0IDUKKyAgICAzIDQgNSA2CisK
K1JHQiBibG9jaworZTAgPSBbMjU1LCAgIDAsIDBdCitlMSA9IFsgIDAsIDI1NSwgMF0KK0JDMyBo
YXMgb25seSA0LWNvbG9yIG1vZGUKKworbG9jYWwgcGFsZXR0ZQorICAgIDA6IFsyNTUsICAgMCwg
MF0KKyAgICAxOiBbICAwLCAyNTUsIDBdCisgICAgMjogWzE3MCwgIDg1LCAwXQorICAgIDM6IFsg
ODUsIDE3MCwgMF0KK3NlbGVjdG9ycworICAgIDMgMiAxIDAKKyAgICAzIDIgMSAxCisgICAgMyAy
IDIgMgorICAgIDMgMyAzIDMKKyovCit2YXIgaW1nXzR4NF9yZ2JhX2R4dDUgPSBuZXcgVWludDhB
cnJheShbCisgICAgMHhGRiwgMHgwMCwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhE
NiwKKyAgICAweDAwLCAweEY4LCAweEUwLCAweDA3LCAweDFCLCAweDVCLCAweEFCLCAweEZGCitd
KTsKKworLy8gQkM0IC0ganVzdCB0aGUgYWxwaGEgYmxvY2sgZnJvbSBCQzMgYWJvdmUsIGludGVy
cHJldGVkIGFzIHRoZSByZWQgY2hhbm5lbC4KK3ZhciBpbWdfNHg0X3JfYmM0ID0gbmV3IFVpbnQ4
QXJyYXkoWworICAgIDB4RkYsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4
RDYsCitdKTsKKworLy8gQkM1IC0gVHdvIEJDMyBhbHBoYSBibG9ja3MsIGludGVycHJldGVkIGFz
IHRoZSByZWQgYW5kIGdyZWVuIGNoYW5uZWxzLgordmFyIGltZ180eDRfcmdfYmM1ID0gbmV3IFVp
bnQ4QXJyYXkoWworICAgIDB4RkYsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0Is
IDB4RDYsCisgICAgMHgwMCwgMHhGRiwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhE
NiwKK10pOworCisvLyBTaWduZWQgQkM0IC0gY2hhbmdlIGVuZHBvaW50cyB0byB1c2UgZnVsbCAt
MSB0byAxIHJhbmdlLgordmFyIGltZ180eDRfc2lnbmVkX3JfYmM0ID0gbmV3IFVpbnQ4QXJyYXko
WworICAgIDB4N0YsIDB4ODAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCitd
KTsKKworLy8gU2lnbmVkIEJDNSAtIFR3byBCQzMgYWxwaGEgYmxvY2tzLCBpbnRlcnByZXRlZCBh
cyB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4KK3ZhciBpbWdfNHg0X3NpZ25lZF9yZ19iYzUg
PSBuZXcgVWludDhBcnJheShbCisgICAgMHg3RiwgMHg4MCwgMHg4OCwgMHgxNiwgMHg4RCwgMHgx
QSwgMHgzQiwgMHhENiwKKyAgICAweDgwLCAweDdGLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAw
eDNCLCAweEQ2LAorXSk7CisKKworLyoKKzh4OCBibG9jayBlbmRwb2ludHMgdXNlIGhhbGYtaW50
ZW5zaXR5IHZhbHVlcyAoYXBwZWFyIGRhcmtlciB0aGFuIDR4NCkKKyovCit2YXIgaW1nXzh4OF9y
Z2JhX2R4dDEgPSBuZXcgVWludDhBcnJheShbCisgICAgMHhlMCwweDAzLDB4MDAsMHg3OCwweDEz
LDB4MTAsMHgxNSwweDAwLAorICAgIDB4MGYsMHgwMCwweGUwLDB4N2IsMHgxMSwweDEwLDB4MTUs
MHgwMCwKKyAgICAweGUwLDB4MDMsMHgwZiwweDc4LDB4NDQsMHg0NSwweDQwLDB4NTUsCisgICAg
MHgwZiwweDAwLDB4ZWYsMHgwMywweDQ0LDB4NDUsMHg0MCwweDU1CitdKTsKK3ZhciBpbWdfOHg4
X3JnYmFfZHh0MyA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGY2LDB4ZmYsMHhmNiwweGZmLDB4
ZmYsMHhmZiwweGZmLDB4ZmYsMHgwMCwweDc4LDB4ZTAsMHgwMywweDQ0LDB4NDUsMHg0MCwweDU1
LAorICAgIDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGUwLDB4N2Is
MHgwZiwweDAwLDB4NDQsMHg0NSwweDQwLDB4NTUsCisgICAgMHhmZiwweGZmLDB4ZmYsMHhmZiww
eGY2LDB4ZmYsMHhmNiwweGZmLDB4MGYsMHg3OCwweGUwLDB4MDMsMHgxMSwweDEwLDB4MTUsMHgw
MCwKKyAgICAweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhlZiwweDAz
LDB4MGYsMHgwMCwweDExLDB4MTAsMHgxNSwweDAwCitdKTsKK3ZhciBpbWdfOHg4X3JnYmFfZHh0
NSA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweGZmLDB4NjksMHgwMSwweDEwLDB4MDAsMHgwMCww
eDAwLDB4MDAsMHgwMCwweDc4LDB4ZTAsMHgwMywweDQ0LDB4NDUsMHg0MCwweDU1LAorICAgIDB4
ZmYsMHhmZiwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweGUwLDB4N2IsMHgwZiwweDAw
LDB4NDQsMHg0NSwweDQwLDB4NTUsCisgICAgMHhmZiwweDY5LDB4MDAsMHgwMCwweDAwLDB4MDEs
MHgxMCwweDAwLDB4MGYsMHg3OCwweGUwLDB4MDMsMHgxMSwweDEwLDB4MTUsMHgwMCwKKyAgICAw
eGZmLDB4ZmYsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHhlZiwweDAzLDB4ZWYsMHgw
MCwweDExLDB4MTAsMHgxNSwweDAwCitdKTsKK3ZhciBpbWdfOHg4X3JfYmM0ID0gbmV3IFVpbnQ4
QXJyYXkoWworICAgIDB4N0YsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4
RDYsCisgICAgMHg3RiwgMHgwMCwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwK
KyAgICAweDdGLCAweDAwLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorICAg
IDB4N0YsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCitdKTsKK3Zh
ciBpbWdfOHg4X3JnX2JjNSA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweDdGLCAweDAwLCAweDg4
LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LCAweDAwLCAweDdGLCAweDg4LCAweDE2LCAw
eDhELCAweDFBLCAweDNCLCAweEQ2LAorICAgIDB4N0YsIDB4MDAsIDB4ODgsIDB4MTYsIDB4OEQs
IDB4MUEsIDB4M0IsIDB4RDYsIDB4MDAsIDB4N0YsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4
M0IsIDB4RDYsCisgICAgMHg3RiwgMHgwMCwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwg
MHhENiwgMHgwMCwgMHg3RiwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKKyAg
ICAweDdGLCAweDAwLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LCAweDAwLCAw
eDdGLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorXSk7CisKK3ZhciB3dHUg
PSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjdHUgPSBDb21wcmVzc2VkVGV4dHVyZVV0aWxzOwordmFy
IGNvbnRleHRWZXJzaW9uID0gd3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCk7Cit2YXIg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwordmFyIGdsID0gd3R1
LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHthbnRpYWxpYXM6IGZhbHNlfSk7Cit2YXIgcHJvZ3Jh
bSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7Cit2YXIgZXh0ID0gbnVsbDsKK3ZhciBleHRf
cmd0YyA9IHt9OwordmFyIHZhbyA9IG51bGw7Cit2YXIgdmFsaWRGb3JtYXRzID0geworICAgIENP
TVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgIDogMHg4M0YwLAorICAgIENPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUIDogMHg4M0YxLAorICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
RVhUIDogMHg4M0YyLAorICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUIDogMHg4M0Yz
LAorfTsKK3ZhciBuYW1lOwordmFyIHN1cHBvcnRlZEZvcm1hdHM7CisKK2lmICghZ2wpIHsKKyAg
ICB0ZXN0RmFpbGVkKCJXZWJHTCBjb250ZXh0IGRvZXMgbm90IGV4aXN0Iik7Cit9IGVsc2Ugewor
ICAgIHRlc3RQYXNzZWQoIldlYkdMIGNvbnRleHQgZXhpc3RzIik7CisKKyAgICAvLyBSdW4gdGVz
dHMgd2l0aCBleHRlbnNpb24gZGlzYWJsZWQKKyAgICBjdHUudGVzdENvbXByZXNzZWRGb3JtYXRz
VW5hdmFpbGFibGVXaGVuRXh0ZW5zaW9uRGlzYWJsZWQoZ2wsIHZhbGlkRm9ybWF0cywgZXhwZWN0
ZWRCeXRlTGVuZ3RoLCA0KTsKKworICAgIC8vIFF1ZXJ5IHRoZSBleHRlbnNpb24gYW5kIHN0b3Jl
IGdsb2JhbGx5IHNvIHNob3VsZEJlIGNhbiBhY2Nlc3MgaXQKKyAgICBleHQgPSB3dHUuZ2V0RXh0
ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMoZ2wsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0
YyIpOworICAgIGlmICghZXh0KSB7CisgICAgICAgIHRlc3RQYXNzZWQoIk5vIFdFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9zM3RjIHN1cHBvcnQgLS0gdGhpcyBpcyBsZWdhbCIpOworICAgICAgICB3
dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVkVGVzdChnbCwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVy
ZV9zM3RjIiwgZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nl
c3NmdWxseSBlbmFibGVkIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIGV4dGVuc2lvbiIp
OworCisgICAgICAgIHd0dS5ydW5FeHRlbnNpb25TdXBwb3J0ZWRUZXN0KGdsLCAiV0VCR0xfY29t
cHJlc3NlZF90ZXh0dXJlX3MzdGMiLCB0cnVlKTsKKyAgICAgICAgcnVuVGVzdEV4dGVuc2lvbigp
OworICAgIH0KKyAgICBleHRfcmd0YyA9IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhl
cyhnbCwgIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKTsKKyAgICBpZiAoZXh0X3JndGMp
IHsKKyAgICAgICAgZXh0ID0gZXh0IHx8IHt9OworICAgICAgICAvLyBNYWtlIGN0dS5mb3JtYXRU
b1N0cmluZyB3b3JrIGZvciByZ3RjIGVudW1zLgorICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4g
ZXh0X3JndGMpCisgICAgICAgICAgICBleHRbbmFtZV0gPSBleHRfcmd0Y1tuYW1lXTsKKyAgICAg
ICAgcnVuVGVzdFJHVEMoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGV4cGVjdGVkQnl0ZUxlbmd0
aCh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpIHsKKyAgICBpZiAoZm9ybWF0ID09IHZhbGlkRm9ybWF0
cy5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCB8fCBmb3JtYXQgPT0gdmFsaWRGb3JtYXRz
LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUKSB7CisgICAgICAgIHJldHVybiBNYXRoLmZs
b29yKCh3aWR0aCArIDMpIC8gNCkgKiBNYXRoLmZsb29yKChoZWlnaHQgKyAzKSAvIDQpICogMTY7
CisgICAgfQorICAgIHJldHVybiBNYXRoLmZsb29yKCh3aWR0aCArIDMpIC8gNCkgKiBNYXRoLmZs
b29yKChoZWlnaHQgKyAzKSAvIDQpICogODsKK30KKworZnVuY3Rpb24gZ2V0QmxvY2tEaW1lbnNp
b25zKGZvcm1hdCkgeworICAgIHJldHVybiB7d2lkdGg6IDQsIGhlaWdodDogNH07Cit9CisKK2Z1
bmN0aW9uIHJ1blRlc3RFeHRlbnNpb24oKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJU
ZXN0aW5nIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7CisKKyAgICAvLyBUZXN0IHRo
YXQgZW51bSB2YWx1ZXMgYXJlIGxpc3RlZCBjb3JyZWN0bHkgaW4gc3VwcG9ydGVkIGZvcm1hdHMg
YW5kIGluIHRoZSBleHRlbnNpb24gb2JqZWN0LgorICAgIGN0dS50ZXN0Q29tcHJlc3NlZEZvcm1h
dHNMaXN0ZWQoZ2wsIHZhbGlkRm9ybWF0cyk7CisgICAgY3R1LnRlc3RDb3JyZWN0RW51bVZhbHVl
c0luRXh0KGV4dCwgdmFsaWRGb3JtYXRzKTsKKyAgICAvLyBUZXN0IHRoYXQgdGV4dHVyZSB1cGxv
YWQgYnVmZmVyIHNpemUgaXMgdmFsaWRhdGVkIGNvcnJlY3RseS4KKyAgICBjdHUudGVzdEZvcm1h
dFJlc3RyaWN0aW9uc09uQnVmZmVyU2l6ZShnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVM
ZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucyk7CisKKyAgICAvLyBUZXN0IGVhY2ggZm9ybWF0Cisg
ICAgdGVzdERYVDFfUkdCKCk7CisgICAgdGVzdERYVDFfUkdCQSgpOworICAgIHRlc3REWFQzX1JH
QkEoKTsKKyAgICB0ZXN0RFhUNV9SR0JBKCk7CisKKyAgICAvLyBUZXN0IGNvbXByZXNzZWQgUEJP
cyB3aXRoIGEgc2luZ2xlIGZvcm1hdAorICAgIGlmIChjb250ZXh0VmVyc2lvbiA+PSAyKSB7Cisg
ICAgICAgIHRlc3REWFQ1X1JHQkFfUEJPKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5UZXN0
UkdUQygpIHsKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgICB3aWR0aDogNCwKKyAgICAg
ICAgICAgIGhlaWdodDogNCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiAxLAorICAgICAgICAgICAg
ZGF0YTogaW1nXzR4NF9yX2JjNCwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0X3JndGMuQ09NUFJF
U1NFRF9SRURfUkdUQzFfRVhULAorICAgICAgICAgICAgaGFzQWxwaGE6IGZhbHNlLAorICAgICAg
ICB9LAorICAgICAgICB7ICAgd2lkdGg6IDQsCisgICAgICAgICAgICBoZWlnaHQ6IDQsCisgICAg
ICAgICAgICBjaGFubmVsczogMSwKKyAgICAgICAgICAgIGRhdGE6IGltZ180eDRfc2lnbmVkX3Jf
YmM0LAorICAgICAgICAgICAgZm9ybWF0OiBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURf
UkdUQzFfRVhULAorICAgICAgICAgICAgaGFzQWxwaGE6IGZhbHNlLAorICAgICAgICB9LAorICAg
ICAgICB7ICAgd2lkdGg6IDQsCisgICAgICAgICAgICBoZWlnaHQ6IDQsCisgICAgICAgICAgICBj
aGFubmVsczogMiwKKyAgICAgICAgICAgIGRhdGE6IGltZ180eDRfcmdfYmM1LAorICAgICAgICAg
ICAgZm9ybWF0OiBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQsCisgICAg
ICAgICAgICBoYXNBbHBoYTogZmFsc2UsCisgICAgICAgIH0sCisgICAgICAgIHsgICB3aWR0aDog
NCwKKyAgICAgICAgICAgIGhlaWdodDogNCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiAyLAorICAg
ICAgICAgICAgZGF0YTogaW1nXzR4NF9zaWduZWRfcmdfYmM1LAorICAgICAgICAgICAgZm9ybWF0
OiBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhULAorICAgICAg
ICAgICAgaGFzQWxwaGE6IGZhbHNlLAorICAgICAgICB9LAorICAgICAgICB7ICAgd2lkdGg6IDgs
CisgICAgICAgICAgICBoZWlnaHQ6IDgsCisgICAgICAgICAgICBjaGFubmVsczogMiwKKyAgICAg
ICAgICAgIGRhdGE6IGltZ184eDhfcl9iYzQsCisgICAgICAgICAgICBmb3JtYXQ6IGV4dF9yZ3Rj
LkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCwKKyAgICAgICAgICAgIGhhc0FscGhhOiBmYWxzZSwK
KyAgICAgICAgICAgIHN1YlgwOiAwLAorICAgICAgICAgICAgc3ViWTA6IDAsCisgICAgICAgICAg
ICBzdWJXaWR0aDogNCwKKyAgICAgICAgICAgIHN1YkhlaWdodDogNCwKKyAgICAgICAgICAgIHN1
YkRhdGE6IGltZ180eDRfcl9iYzQsCisgICAgICAgIH0sCisgICAgICAgIHsgICB3aWR0aDogOCwK
KyAgICAgICAgICAgIGhlaWdodDogOCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiAyLAorICAgICAg
ICAgICAgZGF0YTogaW1nXzh4OF9yZ19iYzUsCisgICAgICAgICAgICBmb3JtYXQ6IGV4dF9yZ3Rj
LkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCwKKyAgICAgICAgICAgIGhhc0FscGhhOiBm
YWxzZSwKKyAgICAgICAgICAgIHN1YlgwOiAwLAorICAgICAgICAgICAgc3ViWTA6IDAsCisgICAg
ICAgICAgICBzdWJXaWR0aDogNCwKKyAgICAgICAgICAgIHN1YkhlaWdodDogNCwKKyAgICAgICAg
ICAgIHN1YkRhdGE6IGltZ180eDRfcmdfYmM1LAorICAgICAgICB9LAorICAgIF07CisgICAgdGVz
dERYVFRleHR1cmVzKHRlc3RzKTsKK30KKworZnVuY3Rpb24gdGVzdERYVDFfUkdCKCkgeworICAg
IHZhciB0ZXN0cyA9IFsKKyAgICAgICAgeyAgIHdpZHRoOiA0LAorICAgICAgICAgICAgaGVpZ2h0
OiA0LAorICAgICAgICAgICAgY2hhbm5lbHM6IDMsCisgICAgICAgICAgICBkYXRhOiBpbWdfNHg0
X3JnYmFfZHh0MSwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQsCisgICAgICAgICAgICBoYXNBbHBoYTogZmFsc2UsCisgICAgICAgIH0sCisgICAg
ICAgIHsgICB3aWR0aDogOCwKKyAgICAgICAgICAgIGhlaWdodDogOCwKKyAgICAgICAgICAgIGNo
YW5uZWxzOiAzLAorICAgICAgICAgICAgZGF0YTogaW1nXzh4OF9yZ2JhX2R4dDEsCisgICAgICAg
ICAgICBmb3JtYXQ6IGV4dC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULAorICAgICAgICAg
ICAgaGFzQWxwaGE6IGZhbHNlLAorICAgICAgICAgICAgc3ViWDA6IDAsCisgICAgICAgICAgICBz
dWJZMDogMCwKKyAgICAgICAgICAgIHN1YldpZHRoOiA0LAorICAgICAgICAgICAgc3ViSGVpZ2h0
OiA0LAorICAgICAgICAgICAgc3ViRGF0YTogaW1nXzR4NF9yZ2JhX2R4dDEKKyAgICAgICAgfQor
ICAgIF07CisgICAgdGVzdERYVFRleHR1cmVzKHRlc3RzKTsKK30KKworZnVuY3Rpb24gdGVzdERY
VDFfUkdCQSgpIHsKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgICB3aWR0aDogNCwKKyAg
ICAgICAgICAgIGhlaWdodDogNCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiA0LAorICAgICAgICAg
ICAgZGF0YTogaW1nXzR4NF9yZ2JhX2R4dDEsCisgICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVj
aWFsIGNhc2UgLS0gdGhlIHRleHR1cmUgaXMgc3RpbGwgb3BhcXVlCisgICAgICAgICAgICAvLyB0
aG91Z2ggaXQncyBSR0JBLgorICAgICAgICAgICAgaGFzQWxwaGE6IGZhbHNlLAorICAgICAgICB9
LAorICAgICAgICB7ICAgd2lkdGg6IDgsCisgICAgICAgICAgICBoZWlnaHQ6IDgsCisgICAgICAg
ICAgICBjaGFubmVsczogNCwKKyAgICAgICAgICAgIGRhdGE6IGltZ184eDhfcmdiYV9keHQxLAor
ICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCisg
ICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIC0tIHRoZSB0ZXh0dXJlIGlzIHN0
aWxsIG9wYXF1ZQorICAgICAgICAgICAgLy8gdGhvdWdoIGl0J3MgUkdCQS4KKyAgICAgICAgICAg
IGhhc0FscGhhOiBmYWxzZSwKKyAgICAgICAgfQorICAgIF07CisgICAgdGVzdERYVFRleHR1cmVz
KHRlc3RzKTsKK30KKworZnVuY3Rpb24gdGVzdERYVDNfUkdCQSgpIHsKKyAgICB2YXIgdGVzdHMg
PSBbCisgICAgICAgIHsgICB3aWR0aDogNCwKKyAgICAgICAgICAgIGhlaWdodDogNCwKKyAgICAg
ICAgICAgIGNoYW5uZWxzOiA0LAorICAgICAgICAgICAgZGF0YTogaW1nXzR4NF9yZ2JhX2R4dDMs
CisgICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCwK
KyAgICAgICAgICAgIGhhc0FscGhhOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICB7ICAgd2lk
dGg6IDgsCisgICAgICAgICAgICBoZWlnaHQ6IDgsCisgICAgICAgICAgICBjaGFubmVsczogNCwK
KyAgICAgICAgICAgIGRhdGE6IGltZ184eDhfcmdiYV9keHQzLAorICAgICAgICAgICAgZm9ybWF0
OiBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQsCisgICAgICAgICAgICBoYXNBbHBo
YTogdHJ1ZSwKKyAgICAgICAgICAgIHN1YlgwOiAwLAorICAgICAgICAgICAgc3ViWTA6IDAsCisg
ICAgICAgICAgICBzdWJXaWR0aDogNCwKKyAgICAgICAgICAgIHN1YkhlaWdodDogNCwKKyAgICAg
ICAgICAgIHN1YkRhdGE6IGltZ180eDRfcmdiYV9keHQzCisgICAgICAgIH0KKyAgICBdOworICAg
IHRlc3REWFRUZXh0dXJlcyh0ZXN0cyk7Cit9CisKK2Z1bmN0aW9uIHRlc3REWFQ1X1JHQkEoKSB7
CisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7ICAgd2lkdGg6IDQsCisgICAgICAgICAgICBo
ZWlnaHQ6IDQsCisgICAgICAgICAgICBjaGFubmVsczogNCwKKyAgICAgICAgICAgIGRhdGE6IGlt
Z180eDRfcmdiYV9keHQ1LAorICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9FWFQsCisgICAgICAgICAgICBoYXNBbHBoYTogdHJ1ZSwKKyAgICAgICAgfSwK
KyAgICAgICAgeyAgIHdpZHRoOiA4LAorICAgICAgICAgICAgaGVpZ2h0OiA4LAorICAgICAgICAg
ICAgY2hhbm5lbHM6IDQsCisgICAgICAgICAgICBkYXRhOiBpbWdfOHg4X3JnYmFfZHh0NSwKKyAg
ICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhULAorICAg
ICAgICAgICAgaGFzQWxwaGE6IHRydWUsCisgICAgICAgICAgICBzdWJYMDogMCwKKyAgICAgICAg
ICAgIHN1YlkwOiAwLAorICAgICAgICAgICAgc3ViV2lkdGg6IDQsCisgICAgICAgICAgICBzdWJI
ZWlnaHQ6IDQsCisgICAgICAgICAgICBzdWJEYXRhOiBpbWdfNHg0X3JnYmFfZHh0NQorICAgICAg
ICB9CisgICAgXTsKKyAgICB0ZXN0RFhUVGV4dHVyZXModGVzdHMpOworfQorCitmdW5jdGlvbiB0
ZXN0RFhUVGV4dHVyZXModGVzdHMpIHsKKyAgICBkZWJ1ZygiPGhyLz4iKTsKKyAgICBmb3IgKHZh
ciBpaSA9IDA7IGlpIDwgdGVzdHMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgIHRlc3REWFRUZXh0
dXJlKHRlc3RzW2lpXSwgZmFsc2UpOworICAgICAgICBpZiAoY29udGV4dFZlcnNpb24gPj0gMikg
eworICAgICAgICAgICAgZGVidWcoIjxici8+Iik7CisgICAgICAgICAgICB0ZXN0RFhUVGV4dHVy
ZSh0ZXN0c1tpaV0sIHRydWUpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiB1bmNv
bXByZXNzRFhUQmxvY2soCisgICAgZGVzdEJ1ZmZlciwgZGVzdFgsIGRlc3RZLCBkZXN0V2lkdGgs
IHNyYywgc3JjT2Zmc2V0LCBmb3JtYXQpIHsKKyAgICAvLyBEZWNvZGluZyByb3V0aW5lcyBmb2xs
b3cgRDNEMTEgZnVuY3Rpb25hbCBzcGVjIHdydAorICAgIC8vIGVuZHBvaW50cyB1bnF1YW50aXph
dGlvbiBhbmQgaW50ZXJwb2xhdGlvbi4KKyAgICAvLyBTb21lIGhhcmR3YXJlIG1heSBwcm9kdWNl
IHNsaWdodGx5IGRpZmZlcmVudCB2YWx1ZXMgLSBpdCdzIG5vcm1hbC4KKworICAgIGZ1bmN0aW9u
IG1ha2U1NjUoc3JjLCBvZmZzZXQpIHsKKyAgICAgICAgcmV0dXJuIHNyY1tvZmZzZXQgKyAwXSAr
IChzcmNbb2Zmc2V0ICsgMV0gPDwgOCk7CisgICAgfQorICAgIGZ1bmN0aW9uIG1ha2U4ODg4RnJv
bTU2NShjKSB7CisgICAgICAgIC8vIFRoZXNlIHZhbHVlcyBleGFjdGx5IG1hdGNoIGh3IGRlY29k
ZXIgd2hlbiBzZWxlY3RvcnMgYXJlIDAgb3IgMS4KKyAgICAgICAgZnVuY3Rpb24gcmVwbGljYXRl
Qml0cyh2LCB3KSB7CisgICAgICAgICAgIHJldHVybiAodiA8PCAoOCAtIHcpKSB8ICh2ID4+ICh3
ICsgdyAtIDgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgICAg
IHJlcGxpY2F0ZUJpdHMoKGMgPj4gMTEpICYgMHgxRiwgNSksCisgICAgICAgICAgICAgICAgcmVw
bGljYXRlQml0cygoYyA+PiAgNSkgJiAweDNGLCA2KSwKKyAgICAgICAgICAgICAgICByZXBsaWNh
dGVCaXRzKChjID4+ICAwKSAmIDB4MUYsIDUpLAorICAgICAgICAgICAgICAgIDI1NQorICAgICAg
ICAgICAgXTsKKyAgICB9CisgICAgZnVuY3Rpb24gbWl4KG11bHQsIGMwLCBjMSwgZGl2KSB7Cisg
ICAgICAgIHZhciByID0gW107CisgICAgICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBjMC5sZW5n
dGg7ICsraWkpIHsKKyAgICAgICAgICAgIC8vIEZvciBncmVlbiBjaGFubmVsICg2IGJpdHMpLCB0
aGlzIGludGVycG9sYXRpb24gZXhhY3RseSBtYXRjaGVzIGh3IGRlY29kZXJzCisKKyAgICAgICAg
ICAgIC8vIEZvciByZWQgYW5kIGJsdWUgY2hhbm5lbHMgKDUgYml0cyksIHRoaXMgaW50ZXJwb2xh
dGlvbiBleGFjdGx5CisgICAgICAgICAgICAvLyBtYXRjaGVzIG9ubHkgc29tZSBodyBkZWNvZGVy
cyBhbmQgc3RheXMgd2l0aGluIGFjY2VwdGFibGUgcmFuZ2UgZm9yIG90aGVycy4KKyAgICAgICAg
ICAgIHJbaWldID0gTWF0aC5mbG9vcigoYzBbaWldICogbXVsdCArIGMxW2lpXSkgLyBkaXYgKyAw
LjUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByOworICAgIH0KKyAgICB2YXIgaXNCQzQ1
ID0gZXh0X3JndGMgJiYKKyAgICAgICAgKGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVTU0VEX1JF
RF9SR1RDMV9FWFQgfHwKKyAgICAgICAgIGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVTU0VEX1JF
RF9HUkVFTl9SR1RDMl9FWFQgfHwKKyAgICAgICAgIGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVT
U0VEX1NJR05FRF9SRURfUkdUQzFfRVhUIHx8CisgICAgICAgICBmb3JtYXQgPT0gZXh0X3JndGMu
Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgaWYgKCFpc0JDNDUp
IHsKKyAgICAgICAgdmFyIGlzRFhUMSA9IGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SR0JfUzNU
Q19EWFQxX0VYVCB8fAorICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID09IGV4dC5DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgICAgdmFyIGNvbG9yT2Zmc2V0ID0gc3JjT2Zm
c2V0ICsgKGlzRFhUMSA/IDAgOiA4KTsKKyAgICAgICAgdmFyIGNvbG9yMCA9IG1ha2U1NjUoc3Jj
LCBjb2xvck9mZnNldCArIDApOworICAgICAgICB2YXIgY29sb3IxID0gbWFrZTU2NShzcmMsIGNv
bG9yT2Zmc2V0ICsgMik7CisgICAgICAgIHZhciBjMGd0YzEgPSBjb2xvcjAgPiBjb2xvcjEgfHwg
IWlzRFhUMTsKKyAgICAgICAgdmFyIHJnYmEwID0gbWFrZTg4ODhGcm9tNTY1KGNvbG9yMCk7Cisg
ICAgICAgIHZhciByZ2JhMSA9IG1ha2U4ODg4RnJvbTU2NShjb2xvcjEpOworICAgICAgICB2YXIg
Y29sb3JzID0gWworICAgICAgICAgICAgICAgIHJnYmEwLAorICAgICAgICAgICAgICAgIHJnYmEx
LAorICAgICAgICAgICAgICAgIGMwZ3RjMSA/IG1peCgyLCByZ2JhMCwgcmdiYTEsIDMpIDogbWl4
KDEsIHJnYmEwLCByZ2JhMSwgMiksCisgICAgICAgICAgICAgICAgYzBndGMxID8gbWl4KDIsIHJn
YmExLCByZ2JhMCwgMykgOiBbMCwgMCwgMCwgMjU1XQorICAgICAgICAgICAgXTsKKyAgICB9Cisg
ICAgY29uc3QgaXNTaWduZWQgPSBleHRfcmd0YyAmJiAoZm9ybWF0ID09IGV4dF9yZ3RjLkNPTVBS
RVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQgfHwgZm9ybWF0ID09IGV4dF9yZ3RjLkNPTVBSRVNT
RURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQpOworICAgIGNvbnN0IHNpZ25lZFNyYyA9IG5l
dyBJbnQ4QXJyYXkoc3JjKTsKKworICAgIC8vIHllYSBJIGtub3cgdGhlcmUgaXMgYSBsb3Qgb2Yg
bWF0aCBpbiB0aGlzIGlubmVyIGxvb3AuCisgICAgLy8gc28gc3VlIG1lLgorICAgIGZvciAodmFy
IHl5ID0gMDsgeXkgPCA0OyArK3l5KSB7CisgICAgICAgIHZhciBwaXhlbHMgPSBzcmNbY29sb3JP
ZmZzZXQgKyA0ICsgeXldOworICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgNDsgKyt4eCkg
eworICAgICAgICAgICAgdmFyIGRzdE9mZiA9ICgoZGVzdFkgKyB5eSkgKiBkZXN0V2lkdGggKyBk
ZXN0WCArIHh4KSAqIDQ7CisgICAgICAgICAgICBpZiAoIWlzQkM0NSkgeworICAgICAgICAgICAg
ICAgIHZhciBjb2RlID0gKHBpeGVscyA+PiAoeHggKiAyKSkgJiAweDM7CisgICAgICAgICAgICAg
ICAgdmFyIHNyY0NvbG9yID0gY29sb3JzW2NvZGVdOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdmFyIGFscGhhOworICAgICAgICAgICAgdmFyIHJnQ2hhbm5lbDIgPSAwOworICAgICAgICAg
ICAgbGV0IGRlY29kZUFscGhhID0gKG9mZnNldCkgPT4geworICAgICAgICAgICAgICAgIGxldCBh
bHBoYTsKKyAgICAgICAgICAgICAgICB2YXIgYWxwaGEwID0gKGlzU2lnbmVkID8gc2lnbmVkU3Jj
IDogc3JjKVtvZmZzZXQgKyAwXTsKKyAgICAgICAgICAgICAgICB2YXIgYWxwaGExID0gKGlzU2ln
bmVkID8gc2lnbmVkU3JjIDogc3JjKVtvZmZzZXQgKyAxXTsKKyAgICAgICAgICAgICAgICB2YXIg
YWxwaGFPZmYgPSAoeXkgPj4gMSkgKiAzICsgMjsKKyAgICAgICAgICAgICAgICB2YXIgYWxwaGFC
aXRzID0KKyAgICAgICAgICAgICAgICAgICAgIHNyY1tvZmZzZXQgKyBhbHBoYU9mZiArIDBdICsK
KyAgICAgICAgICAgICAgICAgICAgIHNyY1tvZmZzZXQgKyBhbHBoYU9mZiArIDFdICogMjU2ICsK
KyAgICAgICAgICAgICAgICAgICAgIHNyY1tvZmZzZXQgKyBhbHBoYU9mZiArIDJdICogNjU1MzY7
CisgICAgICAgICAgICAgICAgdmFyIGFscGhhU2hpZnQgPSAoeXkgJSAyKSAqIDEyICsgeHggKiAz
OworICAgICAgICAgICAgICAgIHZhciBhbHBoYUNvZGUgPSAoYWxwaGFCaXRzID4+IGFscGhhU2hp
ZnQpICYgMHg3OworICAgICAgICAgICAgICAgIGlmIChhbHBoYTAgPiBhbHBoYTEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChhbHBoYUNvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBhbHBoYTA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAg
ICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBhbHBoYTE7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFscGhhID0gTWF0aC5mbG9vcigoKDggLSBhbHBoYUNvZGUpICogYWxwaGEwICsg
KGFscGhhQ29kZSAtIDEpICogYWxwaGExKSAvIDcuMCArIDAuNSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFDb2RlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhID0gYWxw
aGEwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhID0gYWxwaGExOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFscGhhID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICAgICAgICAg
ICAgICBhbHBoYSA9IDI1NTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBN
YXRoLmZsb29yKCgoNiAtIGFscGhhQ29kZSkgKiBhbHBoYTAgKyAoYWxwaGFDb2RlIC0gMSkgKiBh
bHBoYTEpIC8gNS4wICsgMC41KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJl
dHVybiBhbHBoYTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQp
IHsKKyAgICAgICAgICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Cisg
ICAgICAgICAgICAgICAgYWxwaGEgPSAyNTU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAg
ICAgICAgICBhbHBoYSA9IChjb2RlID09IDMgJiYgIWMwZ3RjMSkgPyAwIDogMjU1OworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBleHQuQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19FWFQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2YXIg
YWxwaGEwID0gc3JjW3NyY09mZnNldCArIHl5ICogMiArICh4eCA+PiAxKV07CisgICAgICAgICAg
ICAgICAgICAgIHZhciBhbHBoYTEgPSAoYWxwaGEwID4+ICgoeHggJSAyKSAqIDQpKSAmIDB4RjsK
KyAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSBhbHBoYTEgfCAoYWxwaGExIDw8IDQpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
ZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUOgorICAgICAgICAgICAgY2Fz
ZSBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOgorICAgICAg
ICAgICAgICAgIHJnQ2hhbm5lbDIgPSBkZWNvZGVBbHBoYShzcmNPZmZzZXQgKyA4KTsKKyAgICAg
ICAgICAgICAgICAvLyBGQUxMVEhST1VHSAorICAgICAgICAgICAgY2FzZSBleHQuQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgICAgICAgICBjYXNlIGV4dF9yZ3RjLkNPTVBSRVNT
RURfUkVEX1JHVEMxX0VYVDoKKyAgICAgICAgICAgIGNhc2UgZXh0X3JndGMuQ09NUFJFU1NFRF9T
SUdORURfUkVEX1JHVEMxX0VYVDoKKyAgICAgICAgICAgICAgICBhbHBoYSA9IGRlY29kZUFscGhh
KHNyY09mZnNldCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHRocm93ICJiYWQgZm9ybWF0IjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChpc0JDNDUpIHsKKyAgICAgICAgICAgICAgICBkZXN0QnVmZmVyW2RzdE9m
ZiArIDBdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAxXSA9
IHJnQ2hhbm5lbDI7CisgICAgICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAyXSA9IDA7
CisgICAgICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAzXSA9IDI1NTsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNTaWduZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdEJ1ZmZlcltk
c3RPZmYgKyAwXSA9IE1hdGgubWF4KDAsIGFscGhhKSAqIDI7CisgICAgICAgICAgICAgICAgICAg
IGRlc3RCdWZmZXJbZHN0T2ZmICsgMV0gPSBNYXRoLm1heCgwLCByZ0NoYW5uZWwyKSAqIDI7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
ZXN0QnVmZmVyW2RzdE9mZiArIDBdID0gc3JjQ29sb3JbMF07CisgICAgICAgICAgICAgICAgZGVz
dEJ1ZmZlcltkc3RPZmYgKyAxXSA9IHNyY0NvbG9yWzFdOworICAgICAgICAgICAgICAgIGRlc3RC
dWZmZXJbZHN0T2ZmICsgMl0gPSBzcmNDb2xvclsyXTsKKyAgICAgICAgICAgICAgICBkZXN0QnVm
ZmVyW2RzdE9mZiArIDNdID0gYWxwaGE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGdldEJsb2NrU2l6ZShmb3JtYXQpIHsKKyAgdmFyIGlzRFhUMSA9IGZv
cm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCB8fAorICAgICAgICAgICAg
ICAgZm9ybWF0ID09IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgdmFyIGlz
QkM0ID0gZXh0X3JndGMgJiYgKGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9SR1RD
MV9FWFQgfHwgZm9ybWF0ID09IGV4dF9yZ3RjLkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9F
WFQpOworICByZXR1cm4gaXNEWFQxIHx8IGlzQkM0ID8gOCA6IDE2OworfQorCitmdW5jdGlvbiB1
bmNvbXByZXNzRFhUKHdpZHRoLCBoZWlnaHQsIGRhdGEsIGZvcm1hdCkgeworICAgIGlmICh3aWR0
aCAlIDQgfHwgaGVpZ2h0ICUgNCkgdGhyb3cgImJhZCB3aWR0aCBvciBoZWlnaHQiOworCisgICAg
dmFyIGRlc3QgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCAqIDQpOworICAgIHZhciBi
bG9ja3NBY3Jvc3MgPSB3aWR0aCAvIDQ7CisgICAgdmFyIGJsb2Nrc0Rvd24gPSBoZWlnaHQgLyA0
OworICAgIHZhciBibG9ja1NpemUgPSBnZXRCbG9ja1NpemUoZm9ybWF0KTsKKyAgICBmb3IgKHZh
ciB5eSA9IDA7IHl5IDwgYmxvY2tzRG93bjsgKyt5eSkgeworICAgICAgICBmb3IgKHZhciB4eCA9
IDA7IHh4IDwgYmxvY2tzQWNyb3NzOyArK3h4KSB7CisgICAgICAgICAgICB1bmNvbXByZXNzRFhU
QmxvY2soCisgICAgICAgICAgICAgICAgZGVzdCwgeHggKiA0LCB5eSAqIDQsIHdpZHRoLCBkYXRh
LAorICAgICAgICAgICAgICAgICh5eSAqIGJsb2Nrc0Fjcm9zcyArIHh4KSAqIGJsb2NrU2l6ZSwg
Zm9ybWF0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZGVzdDsKK30KKworZnVuY3Rp
b24gdW5jb21wcmVzc0RYVEludG9TdWJSZWdpb24od2lkdGgsIGhlaWdodCwgc3ViWDAsIHN1Ylkw
LCBzdWJXaWR0aCwgc3ViSGVpZ2h0LCBkYXRhLCBmb3JtYXQpCit7CisgICAgaWYgKHdpZHRoICUg
NCB8fCBoZWlnaHQgJSA0IHx8IHN1YlgwICUgNCB8fCBzdWJZMCAlIDQgfHwgc3ViV2lkdGggJSA0
IHx8IHN1YkhlaWdodCAlIDQpCisgICAgICAgIHRocm93ICJiYWQgZGltZW5zaW9uIjsKKworICAg
IHZhciBkZXN0ID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KTsKKyAgICAvLyBa
ZXJvLWZpbGxlZCBEWFQxIG9yIEJDNC81IHRleHR1cmUgcmVwcmVzZW50cyBbMCwgMCwgMCwgMjU1
XQorICAgIGlmIChmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgfHwg
Zm9ybWF0ID09IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCB8fAorICAgICAgICBm
b3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCB8fCBmb3JtYXQgPT0gZXh0LkNP
TVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQgfHwKKyAgICAgICAgZm9ybWF0ID09IGV4dC5D
T01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQgfHwgZm9ybWF0ID09IGV4dC5DT01QUkVTU0VE
X1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAzOyBp
IDwgZGVzdC5sZW5ndGg7IGkgKz0gNCkgZGVzdFtpXSA9IDI1NTsKKyAgICB9CisgICAgdmFyIGJs
b2Nrc0Fjcm9zcyA9IHN1YldpZHRoIC8gNDsKKyAgICB2YXIgYmxvY2tzRG93biA9IHN1YkhlaWdo
dCAvIDQ7CisgICAgdmFyIGJsb2NrU2l6ZSA9IGdldEJsb2NrU2l6ZShmb3JtYXQpOworICAgIGZv
ciAodmFyIHl5ID0gMDsgeXkgPCBibG9ja3NEb3duOyArK3l5KSB7CisgICAgICAgIGZvciAodmFy
IHh4ID0gMDsgeHggPCBibG9ja3NBY3Jvc3M7ICsreHgpIHsKKyAgICAgICAgICAgIHVuY29tcHJl
c3NEWFRCbG9jaygKKyAgICAgICAgICAgICAgICBkZXN0LCBzdWJYMCArIHh4ICogNCwgc3ViWTAg
KyB5eSAqIDQsIHdpZHRoLCBkYXRhLAorICAgICAgICAgICAgICAgICh5eSAqIGJsb2Nrc0Fjcm9z
cyArIHh4KSAqIGJsb2NrU2l6ZSwgZm9ybWF0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gZGVzdDsKK30KKworZnVuY3Rpb24gY29weVJlY3QoZGF0YSwgc3JjWCwgc3JjWSwgZHN0WCwg
ZHN0WSwgd2lkdGgsIGhlaWdodCwgc3RyaWRlKSB7CisgIHZhciBieXRlc1BlckxpbmUgPSB3aWR0
aCAqIDQ7CisgIHZhciBzcmNPZmZzZXQgPSBzcmNYICogNCArIHNyY1kgKiBzdHJpZGU7CisgIHZh
ciBkc3RPZmZzZXQgPSBkc3RYICogNCArIGRzdFkgKiBzdHJpZGU7CisgIGZvciAoOyBoZWlnaHQg
PiAwOyAtLWhlaWdodCkgeworICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCBieXRlc1BlckxpbmU7
ICsraWkpIHsKKyAgICAgIGRhdGFbZHN0T2Zmc2V0ICsgaWldID0gZGF0YVtzcmNPZmZzZXQgKyBp
aV07CisgICAgfQorICAgIHNyY09mZnNldCArPSBzdHJpZGU7CisgICAgZHN0T2Zmc2V0ICs9IHN0
cmlkZTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0RFhUVGV4dHVyZSh0ZXN0LCB1c2VUZXhTdG9y
YWdlKSB7CisgICAgdmFyIGRhdGEgPSBuZXcgVWludDhBcnJheSh0ZXN0LmRhdGEpOworICAgIHZh
ciB3aWR0aCA9IHRlc3Qud2lkdGg7CisgICAgdmFyIGhlaWdodCA9IHRlc3QuaGVpZ2h0OworICAg
IHZhciBmb3JtYXQgPSB0ZXN0LmZvcm1hdDsKKworICAgIHZhciB1bmNvbXByZXNzZWREYXRhID0g
dW5jb21wcmVzc0RYVCh3aWR0aCwgaGVpZ2h0LCBkYXRhLCBmb3JtYXQpOworCisgICAgY2FudmFz
LndpZHRoID0gd2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgICBnbC52aWV3
cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBkZWJ1ZygidGVzdGluZyAiICsgY3R1LmZv
cm1hdFRvU3RyaW5nKGV4dCwgZm9ybWF0KSArICIgIiArIHdpZHRoICsgIngiICsgaGVpZ2h0ICsK
KyAgICAgICAgICAodXNlVGV4U3RvcmFnZSA/ICIgdmlhIHRleFN0b3JhZ2UyRCIgOiAiIHZpYSBj
b21wcmVzc2VkVGV4SW1hZ2UyRCIpKTsKKworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJl
KCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19F
REdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JB
UF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CisgICAgZ2wudGV4UGFyYW1l
dGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOwor
ICAgIGlmICh1c2VUZXhTdG9yYWdlKSB7CisgICAgICAgIGlmICh0ZXN0LnN1YkRhdGEpIHsKKyAg
ICAgICAgICAgIHZhciB1bmNvbXByZXNzZWREYXRhU3ViID0gdW5jb21wcmVzc0RYVEludG9TdWJS
ZWdpb24oCisgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgdGVzdC5zdWJYMCwgdGVzdC5z
dWJZMCwgdGVzdC5zdWJXaWR0aCwgdGVzdC5zdWJIZWlnaHQsIHRlc3Quc3ViRGF0YSwgZm9ybWF0
KTsKKyAgICAgICAgICAgIHZhciB0ZXgxID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAg
ICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4MSk7CisgICAgICAgICAgICBnbC50
ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9U
T19FREdFKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1Qp
OworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworCisgICAgICAgICAgICBnbC50ZXhTdG9yYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWxsb2NhdGluZyBjb21wcmVzc2Vk
IHRleHR1cmUgdmlhIHRleFN0b3JhZ2UyRCIpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoCisgICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCwgMCwgdGVzdC5zdWJY
MCwgdGVzdC5zdWJZMCwgdGVzdC5zdWJXaWR0aCwgdGVzdC5zdWJIZWlnaHQsIGZvcm1hdCwgdGVz
dC5zdWJEYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VS
Uk9SLCAidXBsb2FkaW5nIGNvbXByZXNzZWQgdGV4dHVyZSBkYXRhIHZpYSBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCIpOworCisgICAgICAgICAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQoZ2wp
OworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3
aW5nIHVuaXQgcXVhZCAxIik7CisgICAgICAgICAgICBjb21wYXJlUmVjdCh3aWR0aCwgaGVpZ2h0
LCB0ZXN0LmNoYW5uZWxzLCB1bmNvbXByZXNzZWREYXRhU3ViLCAiTkVBUkVTVCIpOworCisgICAg
ICAgICAgICAvLyBDbGVhbiB1cCBhbmQgcmVjb3ZlcgorICAgICAgICAgICAgZ2wuZGVsZXRlVGV4
dHVyZSh0ZXgxKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRl
eCk7CisgICAgICAgIH0KKworICAgICAgICBnbC50ZXhTdG9yYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MSwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJhbGxvY2F0aW5nIGNvbXByZXNzZWQgdGV4dHVyZSB2aWEgdGV4U3Rv
cmFnZTJEIik7CisgICAgICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1bml0IHF1YWQi
KTsKKyAgICAgICAgdmFyIGNsZWFyQ29sb3IgPSAodGVzdC5oYXNBbHBoYSA/IFswLCAwLCAwLCAw
XSA6IFswLCAwLCAwLCAyNTVdKTsKKyAgICAgICAgd3R1LmNoZWNrQ2FudmFzKGdsLCBjbGVhckNv
bG9yLCAidGV4dHVyZSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gYmxhY2siKTsKKyAgICAgICAg
Z2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJ1cGxvYWRpbmcgY29tcHJlc3NlZCB0ZXh0dXJlIGRhdGEgdmlhIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2wuY29tcHJlc3Nl
ZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBk
YXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ1cGxv
YWRpbmcgY29tcHJlc3NlZCB0ZXh0dXJlIik7CisgICAgfQorICAgIGdsLmdlbmVyYXRlTWlwbWFw
KGdsLlRFWFRVUkVfMkQpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCAidHJ5aW5nIHRvIGdlbmVyYXRlIG1pcG1hcHMgZnJvbSBjb21wcmVzc2VkIHRl
eHR1cmUiKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVy
IGNsZWFyaW5nIGdlbmVyYXRlTWlwbWFwIGVycm9yIik7CisgICAgd3R1LmNsZWFyQW5kRHJhd1Vu
aXRRdWFkKGdsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRy
YXdpbmcgdW5pdCBxdWFkIDEiKTsKKyAgICBjb21wYXJlUmVjdCh3aWR0aCwgaGVpZ2h0LCB0ZXN0
LmNoYW5uZWxzLCB1bmNvbXByZXNzZWREYXRhLCAiTkVBUkVTVCIpOworICAgIC8vIFRlc3QgYWdh
aW4gd2l0aCBsaW5lYXIgZmlsdGVyaW5nLgorICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOwor
ICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5nIHVuaXQgcXVhZCAyIik7CisgICAgY29tcGFyZVJl
Y3Qod2lkdGgsIGhlaWdodCwgdGVzdC5jaGFubmVscywgdW5jb21wcmVzc2VkRGF0YSwgIkxJTkVB
UiIpOworCisgICAgaWYgKCF1c2VUZXhTdG9yYWdlKSB7CisgICAgICAgIC8vIEl0J3Mgbm90IGFs
bG93ZWQgdG8gcmVkZWZpbmUgdGV4dHVyZXMgZGVmaW5lZCB2aWEgdGV4U3RvcmFnZTJELgorICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIDEsIGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5JTlZBTElEX1ZBTFVFLCAibm9uIDAgYm9yZGVyIik7CisKKyAgICAgICAgZ2wuY29tcHJlc3Nl
ZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCArIDQsIGhlaWdodCwg
MCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFM
VUUsICJkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyIpOworICAgICAgICBnbC5j
b21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoLCBoZWln
aHQgKyA0LCAwLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9WQUxVRSwgImRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7CisgICAg
ICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lk
dGggLSA0LCBoZWlnaHQsIDAsIGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMi
KTsKKyAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0IC0gNCwgMCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGlt
ZW5zaW9ucyIpOworCisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGZvcm1hdCwgd2lkdGggLSAxLCBoZWlnaHQsIDAsIGRhdGEpOworICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5z
aW9ucyIpOworICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAw
LCBmb3JtYXQsIHdpZHRoIC0gMiwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lvbnMi
KTsKKyAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0IC0gMSwgMCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7Cisg
ICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwg
d2lkdGgsIGhlaWdodCAtIDIsIDAsIGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOworCisgICAg
ICAgIGlmICh3aWR0aCA9PSA0KSB7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAxLCBmb3JtYXQsIDEsIGhlaWdodCwgMCwgZGF0YSk7CisgICAgICAg
ICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInZhbGlkIGRpbWVuc2lv
bnMgZm9yIGxldmVsID4gMCIpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCAyLCBoZWlnaHQsIDAsIGRhdGEpOworICAgICAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ2YWxpZCBkaW1lbnNpb25z
IGZvciBsZXZlbCA+IDAiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaGVpZ2h0ID09IDQpIHsK
KyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGZv
cm1hdCwgd2lkdGgsIDEsIDAsIGRhdGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJ2YWxpZCBkaW1lbnNpb25zIGZvciBsZXZlbCA+IDAiKTsKKyAg
ICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGZvcm1h
dCwgd2lkdGgsIDIsIDAsIGRhdGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJ2YWxpZCBkaW1lbnNpb25zIGZvciBsZXZlbCA+IDAiKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIHBpY2sgYSB3cm9uZyBmb3JtYXQgdGhhdCB1c2VzIHRoZSBz
YW1lIGFtb3VudCBvZiBkYXRhLgorICAgIHZhciB3cm9uZ0Zvcm1hdDsKKyAgICBzd2l0Y2ggKGZv
cm1hdCkgeworICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAg
ICB3cm9uZ0Zvcm1hdCA9IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAg
IGJyZWFrOworICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAg
ICAgd3JvbmdGb3JtYXQgPSBleHQuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDsKKyAgICAg
IGJyZWFrOworICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAg
ICAgd3JvbmdGb3JtYXQgPSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ7CisgICAg
ICBicmVhazsKKyAgICBjYXNlIGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAg
ICAgIHdyb25nRm9ybWF0ID0gZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOworICAg
ICAgYnJlYWs7CisgICAgY2FzZSBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Cisg
ICAgY2FzZSBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOgorICAgICAg
d3JvbmdGb3JtYXQgPSBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ7Cisg
ICAgICBicmVhazsKKyAgICBjYXNlIGV4dF9yZ3RjLkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMy
X0VYVDoKKyAgICBjYXNlIGV4dF9yZ3RjLkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RD
Ml9FWFQ6CisgICAgICB3cm9uZ0Zvcm1hdCA9IGV4dF9yZ3RjLkNPTVBSRVNTRURfUkVEX1JHVEMx
X0VYVDsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIHdyb25nRm9ybWF0LCBk
YXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
ImZvcm1hdCBkb2VzIG5vdCBtYXRjaCIpOworCisgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgNCwgMCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhKTsK
KyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGltZW5zaW9u
IG91dCBvZiByYW5nZSIpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIDAsIDQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgImRpbWVuc2lvbiBvdXQgb2YgcmFu
Z2UiKTsKKworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IDAsIDAsIHdpZHRoICsgNCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2gg
ZGltZW5zaW9ucyIpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQgKyA0LCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5n
bEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkYXRhIHNpemUgZG9lcyBub3Qg
bWF0Y2ggZGltZW5zaW9ucyIpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoIC0gNCwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkYXRhIHNpemUgZG9l
cyBub3QgbWF0Y2ggZGltZW5zaW9ucyIpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQgLSA0LCBmb3JtYXQsIGRhdGEp
OworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkYXRhIHNp
emUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyIpOworCisgICAgZ2wuY29tcHJlc3NlZFRleFN1
YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGggLSAxLCBoZWlnaHQsIGZvcm1h
dCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJ
T04sICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCAtIDIsIGhlaWdodCwgZm9ybWF0LCBkYXRh
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgImlu
dmFsaWQgZGltZW5zaW9ucyIpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQgLSAxLCBmb3JtYXQsIGRhdGEpOworICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBk
aW1lbnNpb25zIik7CisgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCAtIDIsIGZvcm1hdCwgZGF0YSk7CisgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lv
bnMiKTsKKworICAgIHZhciBzdWJEYXRhID0gbmV3IFVpbnQ4QXJyYXkoZGF0YS5idWZmZXIsIDAs
IGdldEJsb2NrU2l6ZShmb3JtYXQpKTsKKworICAgIGlmICh3aWR0aCA9PSA4ICYmIGhlaWdodCA9
PSA4KSB7CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIDEsIDAsIDQsIDQsIGZvcm1hdCwgc3ViRGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBvZmZzZXQiKTsKKyAgICAg
ICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMSwgNCwg
NCwgZm9ybWF0LCBzdWJEYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wu
SU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIG9mZnNldCIpOworICAgIH0KKworICAgIHZhciBz
dHJpZGUgPSB3aWR0aCAqIDQ7CisgICAgZm9yICh2YXIgeW9mZiA9IDA7IHlvZmYgPCBoZWlnaHQ7
IHlvZmYgKz0gNCkgeworICAgICAgICBmb3IgKHZhciB4b2ZmID0gMDsgeG9mZiA8IHdpZHRoOyB4
b2ZmICs9IDQpIHsKKyAgICAgICAgICAgIGNvcHlSZWN0KHVuY29tcHJlc3NlZERhdGEsIDAsIDAs
IHhvZmYsIHlvZmYsIDQsIDQsIHN0cmlkZSk7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCB4b2ZmLCB5b2ZmLCA0LCA0LCBmb3JtYXQsIHN1
YkRhdGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJ1cGxvYWRpbmcgY29tcHJlc3NlZCB0ZXh0dXJlIik7CisgICAgICAgICAgICAvLyBGaXJzdCB0
ZXN0IE5FQVJFU1QgZmlsdGVyaW5nLgorICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworICAgICAgICAg
ICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIs
IGdsLk5FQVJFU1QpOworICAgICAgICAgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsK
KyAgICAgICAgICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hhbm5lbHMsIHVu
Y29tcHJlc3NlZERhdGEsICJORUFSRVNUIik7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcgdW5pdCBxdWFkIik7CisgICAgICAgICAgICAv
LyBOZXh0IHRlc3QgTElORUFSIGZpbHRlcmluZy4KKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAg
ICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19G
SUxURVIsIGdsLkxJTkVBUik7CisgICAgICAgICAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQo
Z2wpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJk
cmF3aW5nIHVuaXQgcXVhZCIpOworICAgICAgICAgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdo
dCwgdGVzdC5jaGFubmVscywgdW5jb21wcmVzc2VkRGF0YSwgIkxJTkVBUiIpOworICAgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0RFhUNV9SR0JBX1BCTygpIHsKKyAgICBkZWJ1Zygi
Iik7CisgICAgZGVidWcoInRlc3RpbmcgUEJPIHVwbG9hZHMiKTsKKyAgICB2YXIgd2lkdGggPSA4
OworICAgIHZhciBoZWlnaHQgPSA4OworICAgIHZhciBjaGFubmVscyA9IDQ7CisgICAgdmFyIGRh
dGEgPSBpbWdfOHg4X3JnYmFfZHh0NTsKKyAgICB2YXIgZm9ybWF0ID0gZXh0LkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfRVhUOworICAgIHZhciB1bmNvbXByZXNzZWREYXRhID0gdW5jb21wcmVz
c0RYVCh3aWR0aCwgaGVpZ2h0LCBkYXRhLCBmb3JtYXQpOworCisgICAgdmFyIHRleCA9IGdsLmNy
ZWF0ZVRleHR1cmUoKTsKKworICAgIC8vIEZpcnN0LCBQQk8gc2l6ZSA9IGltYWdlIHNpemUKKyAg
ICB2YXIgcGJvMSA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuUElY
RUxfVU5QQUNLX0JVRkZFUiwgcGJvMSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5QSVhFTF9VTlBB
Q0tfQlVGRkVSLCBkYXRhLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJ1cGxvYWRpbmcgYSBQQk8iKTsKKworICAgIGdsLmJpbmRUZXh0
dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgZ2wudGV4U3RvcmFnZTJEKGdsLlRFWFRVUkVf
MkQsIDEsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2wuY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRh
Lmxlbmd0aCwgMCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ1
cGxvYWRpbmcgYSB0ZXh0dXJlIGZyb20gYSBQQk8iKTsKKworICAgIGdsLmJpbmRCdWZmZXIoZ2wu
UElYRUxfVU5QQUNLX0JVRkZFUiwgbnVsbCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFk
KGdsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdpbmcg
dW5pdCBxdWFkIik7CisgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgY2hhbm5lbHMsIHVu
Y29tcHJlc3NlZERhdGEsICJORUFSRVNUIik7CisKKyAgICAvLyBDbGVhciB0aGUgdGV4dHVyZSBi
ZWZvcmUgdGhlIG5leHQgdGVzdAorICAgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JV
RkZFUiwgbnVsbCk7CisgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBuZXcgVWludDhBcnJheShkYXRhLmxl
bmd0aCkpOworCisgICAgLy8gU2Vjb25kLCBpbWFnZSBpcyBqdXN0IGEgc3VicmFuZ2Ugb2YgdGhl
IFBCTworICAgIHZhciBwYm8yID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZl
cihnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBwYm8yKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLlBJ
WEVMX1VOUEFDS19CVUZGRVIsIGRhdGEubGVuZ3RoKjMsIGdsLlNUQVRJQ19EUkFXKTsKKyAgICBn
bC5idWZmZXJTdWJEYXRhKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIGRhdGEubGVuZ3RoLCBkYXRh
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBh
IFBCTyBzdWJyYW5nZSIpOworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5sZW5ndGgsIGRhdGEu
bGVuZ3RoKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9h
ZGluZyBhIHRleHR1cmUgZnJvbSBhIFBCTyBzdWJyYW5nZSIpOworICAgIGdsLmJpbmRCdWZmZXIo
Z2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgbnVsbCk7CisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRR
dWFkKGdsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImRyYXdp
bmcgdW5pdCBxdWFkIik7CisgICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgY2hhbm5lbHMs
IHVuY29tcHJlc3NlZERhdGEsICJORUFSRVNUIik7Cit9CisKK2Z1bmN0aW9uIGNvbXBhcmVSZWN0
KHdpZHRoLCBoZWlnaHQsIGNoYW5uZWxzLCBleHBlY3RlZERhdGEsIGZpbHRlcmluZ01vZGUpIHsK
KyAgICB2YXIgYWN0dWFsID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KTsKKyAg
ICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVE
X0JZVEUsIGFjdHVhbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1Is
ICJyZWFkaW5nIGJhY2sgcGl4ZWxzIik7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgZGl2LmNsYXNzTmFtZSA9ICJ0ZXN0aW1hZ2VzIjsKKyAgICBj
dHUuaW5zZXJ0Q2FwdGlvbmVkSW1nKGRpdiwgImV4cGVjdGVkIiwgY3R1Lm1ha2VTY2FsZWRJbWFn
ZSh3aWR0aCwgaGVpZ2h0LCB3aWR0aCwgZXhwZWN0ZWREYXRhLCB0cnVlKSk7CisgICAgY3R1Lmlu
c2VydENhcHRpb25lZEltZyhkaXYsICJhY3R1YWwiLCBjdHUubWFrZVNjYWxlZEltYWdlKHdpZHRo
LCBoZWlnaHQsIHdpZHRoLCBhY3R1YWwsIHRydWUpKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIGZhaWxlZCA9IGZhbHNlOwor
ICAgIGZvciAodmFyIHl5ID0gMDsgeXkgPCBoZWlnaHQ7ICsreXkpIHsKKyAgICAgICAgZm9yICh2
YXIgeHggPSAwOyB4eCA8IHdpZHRoOyArK3h4KSB7CisgICAgICAgICAgICB2YXIgb2Zmc2V0ID0g
KHl5ICogd2lkdGggKyB4eCkgKiA0OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkID0gZXhwZWN0
ZWREYXRhLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgNCk7CisgICAgICAgICAgICAvLyBDb21wYXJl
IFJHQiB2YWx1ZXMKKyAgICAgICAgICAgIGZvciAodmFyIGpqID0gMDsgamogPCAzOyArK2pqKSB7
CisgICAgICAgICAgICAgICAgLy8gQWNjZXB0YWJsZSBpbnRlcnBvbGF0aW9uIGVycm9yIGRlcGVu
ZHMgb24gZW5kcG9pbnRzOgorICAgICAgICAgICAgICAgIC8vIDEuMCAvIDI1NS4wICsgMC4wMyAq
IG1heChhYnMoZW5kcG9pbnQwIC0gZW5kcG9pbnQxKSwgYWJzKGVuZHBvaW50MF9wIC0gZW5kcG9p
bnQxX3ApKQorICAgICAgICAgICAgICAgIC8vIEZvciBzaW1wbGljaXR5LCBhc3N1bWUgdGhlIHdv
cnN0IGNhc2UgKGUwIGlzIDAuMCwgZTEgaXMgMS4wKS4gQWZ0ZXIgY29udmVyc2lvbiB0byB1bm9y
bTgsIGl0IGlzIDkuCisgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGFjdHVhbFtvZmZzZXQg
KyBqal0gLSBleHBlY3RlZFtqal0pID4gOSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgd2Fz
ID0gYWN0dWFsW29mZnNldCArIDBdLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIGogPSAxOyBqIDwgMzsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3YXMg
Kz0gIiwiICsgYWN0dWFsW29mZnNldCArIGpdOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoJ1JHQiBhdCAoJyArIHh4ICsgJywgJyArIHl5ICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnKSBleHBlY3RlZDogJyArIGV4cGVjdGVkICsgJyDCsSA5IHdh
cyAnICsgd2FzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChjaGFubmVscyA9PSAzKSB7CisgICAgICAgICAgICAgICAgLy8gQkMxIFJHQiBpcyBh
bGxvd2VkIHRvIGJlIG1hcHBlZCB0byBCQzEgUkdCQS4KKyAgICAgICAgICAgICAgICAvLyBJbiBz
dWNoIGEgY2FzZSwgMy1jb2xvciBtb2RlIGJsYWNrIHZhbHVlIGNhbiBiZSB0cmFuc3BhcmVudDoK
KyAgICAgICAgICAgICAgICAvLyBbMCwgMCwgMCwgMF0gaW5zdGVhZCBvZiBbMCwgMCwgMCwgMjU1
XS4KKworICAgICAgICAgICAgICAgIGlmIChhY3R1YWxbb2Zmc2V0ICsgM10gIT0gZXhwZWN0ZWRb
M10pIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gR290IG5vbi1vcGFxdWUgdmFsdWUgZm9yIG9w
YXF1ZSBmb3JtYXQKKworICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBSR0IgdmFsdWVzLiBO
b3RpY2UsIHRoYXQgdGhlIGNvbmRpdGlvbiBoZXJlCisgICAgICAgICAgICAgICAgICAgIC8vIGlz
IG1vcmUgcGVybWlzc2l2ZSB0aGFuIG5lZWRlZCBzaW5jZSB3ZSBkb24ndCBoYXZlCisgICAgICAg
ICAgICAgICAgICAgIC8vIGNvbXByZXNzZWQgZGF0YSBhdCB0aGlzIHBvaW50LgorICAgICAgICAg
ICAgICAgICAgICBpZiAoYWN0dWFsW29mZnNldF0gPT0gMCAmJgorICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0dWFsW29mZnNldCArIDFdID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFjdHVhbFtvZmZzZXQgKyAyXSA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICBhY3R1
YWxbb2Zmc2V0ICsgM10gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCI8Yj5EWFQxIFJHQiBpcyBtYXBwZWQgdG8gRFhUMSBSR0JBPC9iPiIpOworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0FscGhhIGF0ICgnICsgeHggKyAn
LCAnICsgeXkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcpIGV4cGVjdGVkOiAnICsgZXhwZWN0ZWRbM10gKyAnIHdhcyAnICsgYWN0dWFsW29mZnNldCAr
IDNdKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gQ29tcGFyZSBBbHBoYSB2YWx1ZXMKKyAg
ICAgICAgICAgICAgICAvLyBBY2NlcHRhYmxlIGludGVycG9sYXRpb24gZXJyb3IgZGVwZW5kcyBv
biBlbmRwb2ludHM6CisgICAgICAgICAgICAgICAgLy8gMS4wIC8gNjU1MzUuMCArIDAuMDMgKiBt
YXgoYWJzKGVuZHBvaW50MCAtIGVuZHBvaW50MSksIGFicyhlbmRwb2ludDBfcCAtIGVuZHBvaW50
MV9wKSkKKyAgICAgICAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSwgYXNzdW1lIHRoZSB3b3Jz
dCBjYXNlIChlMCBpcyAwLjAsIGUxIGlzIDEuMCkuIEFmdGVyIGNvbnZlcnNpb24gdG8gdW5vcm04
LCBpdCBpcyA4LgorICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhhY3R1YWxbb2Zmc2V0ICsg
M10gLSBleHBlY3RlZFszXSkgPiA4KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB3YXMgPSBh
Y3R1YWxbb2Zmc2V0ICsgM10udG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnQWxwaGEgYXQgKCcgKyB4
eCArICcsICcgKyB5eSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnKSBleHBlY3RlZDogJyArIGV4cGVjdGVkICsgJyDCsSA4IHdhcyAnICsgd2FzKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFm
YWlsZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgidGV4dHVyZSByZW5kZXJlZCBjb3JyZWN0bHkg
d2l0aCAiICsgZmlsdGVyaW5nTW9kZSArICIgZmlsdGVyaW5nIik7CisgICAgfQorfQorCitkZWJ1
ZygiIik7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2pzL3Rlc3RzL2NvbXByZXNzZWQtdGV4dHVyZS11dGlscy5qcyBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL2NvbXByZXNzZWQtdGV4
dHVyZS11dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmYwMmM0ZDQzYjM5ZjBhYTQ4NTNlNzQ4OWY0MDU4
ZmMyZDZiY2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvanMvdGVzdHMvY29tcHJlc3NlZC10ZXh0dXJlLXV0aWxzLmpzCkBA
IC0wLDAgKzEsMjI5IEBACisvKgorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3Vw
IEluYy4KK1VzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKyov
CisKKyJ1c2Ugc3RyaWN0IjsKKworbGV0IENvbXByZXNzZWRUZXh0dXJlVXRpbHMgPSAoZnVuY3Rp
b24oKSB7CisKK2xldCBmb3JtYXRUb1N0cmluZyA9IGZ1bmN0aW9uKGV4dCwgZm9ybWF0KSB7Cisg
ICAgZm9yIChsZXQgcCBpbiBleHQpIHsKKyAgICAgICAgaWYgKGV4dFtwXSA9PSBmb3JtYXQpIHsK
KyAgICAgICAgICAgIHJldHVybiBwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAiMHgi
ICsgZm9ybWF0LnRvU3RyaW5nKDE2KTsKK307CisKKy8qKgorICogTWFrZSBhbiBpbWFnZSBlbGVt
ZW50IGZyb20gVWludDhBcnJheSBiaXRtYXAgZGF0YS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbWFn
ZUhlaWdodCBIZWlnaHQgb2YgdGhlIGRhdGEgaW4gcGl4ZWxzLgorICogQHBhcmFtIHtudW1iZXJ9
IGltYWdlV2lkdGggV2lkdGggb2YgdGhlIGRhdGEgaW4gcGl4ZWxzLgorICogQHBhcmFtIHtudW1i
ZXJ9IGRhdGFXaWR0aCBXaWR0aCBvZiBlYWNoIHJvdyBpbiB0aGUgZGF0YSBidWZmZXIsIGluIHBp
eGVscy4KKyAqIEBwYXJhbSB7VWludDhBcnJheX0gZGF0YSBJbWFnZSBkYXRhIGJ1ZmZlciB0byBk
aXNwbGF5LiBFYWNoIHBpeGVsIHRha2VzIHVwIDQgYnl0ZXMgaW4gdGhlIGFycmF5IHJlZ2FyZGxl
c3Mgb2YgdGhlIGFscGhhIHBhcmFtZXRlci4KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gYWxwaGEgVHJ1
ZSBpZiBhbHBoYSBkYXRhIHNob3VsZCBiZSB0YWtlbiBmcm9tIGRhdGEuIE90aGVyd2lzZSBhbHBo
YSBjaGFubmVsIGlzIHNldCB0byAyNTUuCisgKiBAcmV0dXJuIHtIVE1MSW1hZ2VFbGVtZW50fSBU
aGUgaW1hZ2UgZWxlbWVudC4KKyAqLworbGV0IG1ha2VTY2FsZWRJbWFnZSA9IGZ1bmN0aW9uKGlt
YWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBkYXRhV2lkdGgsIGRhdGEsIGFscGhhLCBvcHRfc2NhbGUp
IHsKKyAgICBsZXQgc2NhbGUgPSBvcHRfc2NhbGUgPyBvcHRfc2NhbGUgOiA4OworICAgIGxldCBj
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgYy53aWR0aCA9IGltYWdl
V2lkdGggKiBzY2FsZTsKKyAgICBjLmhlaWdodCA9IGltYWdlSGVpZ2h0ICogc2NhbGU7CisgICAg
bGV0IGN0eCA9IGMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBmb3IgKGxldCB5eSA9IDA7IHl5IDwg
aW1hZ2VIZWlnaHQ7ICsreXkpIHsKKyAgICAgICAgZm9yIChsZXQgeHggPSAwOyB4eCA8IGltYWdl
V2lkdGg7ICsreHgpIHsKKyAgICAgICAgICAgIGxldCBvZmZzZXQgPSAoeXkgKiBkYXRhV2lkdGgg
KyB4eCkgKiA0OworICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKCIgKworICAgICAg
ICAgICAgICAgICAgICBkYXRhW29mZnNldCArIDBdICsgIiwiICsKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YVtvZmZzZXQgKyAxXSArICIsIiArCisgICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zm
c2V0ICsgMl0gKyAiLCIgKworICAgICAgICAgICAgICAgICAgICAoYWxwaGEgPyBkYXRhW29mZnNl
dCArIDNdIC8gMjU1IDogMSkgKyAiKSI7CisgICAgICAgICAgICBjdHguZmlsbFJlY3QoeHggKiBz
Y2FsZSwgeXkgKiBzY2FsZSwgc2NhbGUsIHNjYWxlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gd3R1Lm1ha2VJbWFnZUZyb21DYW52YXMoYyk7Cit9OworCitsZXQgaW5zZXJ0Q2FwdGlv
bmVkSW1nID0gZnVuY3Rpb24ocGFyZW50LCBjYXB0aW9uLCBpbWcpIHsKKyAgICBsZXQgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZGl2LmFwcGVuZENoaWxkKGltZyk7
CisgICAgbGV0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgbGFi
ZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2FwdGlvbikpOworICAgIGRp
di5hcHBlbmRDaGlsZChsYWJlbCk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGRpdik7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZX0gZ2wKKyAqIEBwYXJh
bSB7T2JqZWN0fSBjb21wcmVzc2VkRm9ybWF0cyBNYXBwaW5nIGZyb20gZm9ybWF0IG5hbWVzIHRv
IGZvcm1hdCBlbnVtIHZhbHVlcy4KKyAqIEBwYXJhbSBleHBlY3RlZEJ5dGVMZW5ndGggQSBmdW5j
dGlvbiB0aGF0IHRha2VzIGluIHdpZHRoLCBoZWlnaHQgYW5kIGZvcm1hdCBhbmQgcmV0dXJucyB0
aGUgZXhwZWN0ZWQgYnVmZmVyIHNpemUgaW4gYnl0ZXMuCisgKi8KK2xldCB0ZXN0Q29tcHJlc3Nl
ZEZvcm1hdHNVbmF2YWlsYWJsZVdoZW5FeHRlbnNpb25EaXNhYmxlZCA9IGZ1bmN0aW9uKGdsLCBj
b21wcmVzc2VkRm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCB0ZXN0U2l6ZSkgeworICAgIGxl
dCB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgdGV4KTsKKyAgICBmb3IgKGxldCBuYW1lIGluIGNvbXByZXNzZWRGb3JtYXRzKSB7Cisg
ICAgICAgIGlmIChjb21wcmVzc2VkRm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeworICAg
ICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgY29tcHJl
c3NlZEZvcm1hdHNbbmFtZV0sIHRlc3RTaXplLCB0ZXN0U2l6ZSwgMCwgbmV3IFVpbnQ4QXJyYXko
ZXhwZWN0ZWRCeXRlTGVuZ3RoKHRlc3RTaXplLCB0ZXN0U2l6ZSwgY29tcHJlc3NlZEZvcm1hdHNb
bmFtZV0pKSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X0VOVU0sICJUcnlpbmcgdG8gdXNlIGZvcm1hdCAiICsgbmFtZSArICIgd2l0aCBleHRlbnNpb24g
ZGlzYWJsZWQuIik7CisgICAgICAgIH0KKyAgICB9CisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVY
VFVSRV8yRCwgbnVsbCk7CisgICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfTsKKworLyoqCisg
KiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2V9IGdsCisgKiBAcGFyYW0ge09iamVj
dH0gZXhwZWN0ZWRGb3JtYXRzIE1hcHBpbmcgZnJvbSBmb3JtYXQgbmFtZXMgdG8gZm9ybWF0IGVu
dW0gdmFsdWVzLgorICovCitsZXQgdGVzdENvbXByZXNzZWRGb3JtYXRzTGlzdGVkID0gZnVuY3Rp
b24oZ2wsIGV4cGVjdGVkRm9ybWF0cykgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVz
dGluZyB0aGF0IGV2ZXJ5IGZvcm1hdCBpcyBsaXN0ZWQgYnkgdGhlIGNvbXByZXNzZWQgdGV4dHVy
ZSBmb3JtYXRzIHF1ZXJ5Iik7CisKKyAgICBsZXQgc3VwcG9ydGVkRm9ybWF0cyA9IGdsLmdldFBh
cmFtZXRlcihnbC5DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyk7CisKKyAgICBsZXQgZmFpbGVk
OworICAgIGxldCBjb3VudCA9IDA7CisgICAgZm9yIChsZXQgbmFtZSBpbiBleHBlY3RlZEZvcm1h
dHMpIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkRm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkg
eworICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgIGxldCBmb3JtYXQgPSBleHBlY3Rl
ZEZvcm1hdHNbbmFtZV07CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAg
Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHN1cHBvcnRlZEZvcm1hdHMubGVuZ3RoOyArK2lpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGZvcm1hdCA9PSBzdXBwb3J0ZWRGb3JtYXRzW2lpXSkgeworICAg
ICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJzdXBwb3J0ZWQgZm9ybWF0ICIgKyBuYW1lICsg
IiBleGlzdHMiKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbGVkID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChmYWlsZWQpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJzdXBw
b3J0ZWQgZm9ybWF0ICIgKyBuYW1lICsgIiBkb2VzIG5vdCBleGlzdCIpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIGlmIChzdXBwb3J0ZWRGb3JtYXRzLmxlbmd0aCAhPSBj
b3VudCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJJbmNvcnJlY3QgbnVtYmVyIG9mIHN1cHBvcnRl
ZCBmb3JtYXRzLCB3YXMgIiArIHN1cHBvcnRlZEZvcm1hdHMubGVuZ3RoICsgIiBzaG91bGQgYmUg
IiArIGNvdW50KTsKKyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7T2JqZWN0fSBleHQgQ29t
cHJlc3NlZCB0ZXh0dXJlIGV4dGVuc2lvbiBvYmplY3QuCisgKiBAcGFyYW0ge09iamVjdH0gZXhw
ZWN0ZWRGb3JtYXRzIE1hcHBpbmcgZnJvbSBmb3JtYXQgbmFtZXMgdG8gZm9ybWF0IGVudW0gdmFs
dWVzLgorICovCitsZXQgdGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQgPSBmdW5jdGlvbihleHQs
IGV4cGVjdGVkRm9ybWF0cykgeworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyB0
aGF0IGZvcm1hdCBlbnVtIHZhbHVlcyBpbiB0aGUgZXh0ZW5zaW9uIG9iamVjdCBhcmUgY29ycmVj
dCIpOworCisgICAgZm9yIChuYW1lIGluIGV4cGVjdGVkRm9ybWF0cykgeworICAgICAgICBpZiAo
ZXhwZWN0ZWRGb3JtYXRzLmhhc093blByb3BlcnR5KG5hbWUpKSB7CisgICAgICAgICAgICBpZiAo
aXNSZXN1bHRDb3JyZWN0KGV4dFtuYW1lXSwgZXhwZWN0ZWRGb3JtYXRzW25hbWVdKSkgeworICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVudW0gdmFsdWUgZm9yICIgKyBuYW1lICsgIiBtYXRj
aGVzIDB4IiArIGV4dFtuYW1lXS50b1N0cmluZygxNikpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJFbnVtIHZhbHVlIGZvciAiICsgbmFtZSArICIg
bWlzbWF0Y2g6IDB4IiArIGV4dFtuYW1lXS50b1N0cmluZygxNikgKyAiIHNob3VsZCBiZSAweCIg
KyBleHBlY3RlZEZvcm1hdHNbbmFtZV0udG9TdHJpbmcoMTYpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlfSBnbAorICogQHBhcmFtIHtPYmplY3R9IHZhbGlkRm9ybWF0cyBNYXBwaW5nIGZyb20g
Zm9ybWF0IG5hbWVzIHRvIGZvcm1hdCBlbnVtIHZhbHVlcy4KKyAqIEBwYXJhbSBleHBlY3RlZEJ5
dGVMZW5ndGggQSBmdW5jdGlvbiB0aGF0IHRha2VzIGluIHdpZHRoLCBoZWlnaHQgYW5kIGZvcm1h
dCBhbmQgcmV0dXJucyB0aGUgZXhwZWN0ZWQgYnVmZmVyIHNpemUgaW4gYnl0ZXMuCisgKiBAcGFy
YW0gZ2V0QmxvY2tEaW1lbnNpb25zIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBpbiBhIGZvcm1hdCBh
bmQgcmV0dXJucyBibG9jayBzaXplIGluIHBpeGVscy4KKyAqLworbGV0IHRlc3RGb3JtYXRSZXN0
cmljdGlvbnNPbkJ1ZmZlclNpemUgPSBmdW5jdGlvbihnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3Rl
ZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucykgeworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygiVGVzdGluZyBmb3JtYXQgcmVzdHJpY3Rpb25zIG9uIHRleHR1cmUgdXBsb2FkIGJ1ZmZl
ciBzaXplIik7CisKKyAgICBsZXQgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgZm9yIChsZXQgZm9ybWF0SWQgaW4g
dmFsaWRGb3JtYXRzKSB7CisgICAgICAgIGlmICh2YWxpZEZvcm1hdHMuaGFzT3duUHJvcGVydHko
Zm9ybWF0SWQpKSB7CisgICAgICAgICAgICBsZXQgZm9ybWF0ID0gdmFsaWRGb3JtYXRzW2Zvcm1h
dElkXTsKKyAgICAgICAgICAgIGxldCBibG9ja1NpemUgPSBnZXRCbG9ja0RpbWVuc2lvbnMoZm9y
bWF0KTsKKyAgICAgICAgICAgIGxldCBleHBlY3RlZFNpemUgPSBleHBlY3RlZEJ5dGVMZW5ndGgo
YmxvY2tTaXplLndpZHRoICogNCwgYmxvY2tTaXplLmhlaWdodCAqIDQsIGZvcm1hdCk7CisgICAg
ICAgICAgICBsZXQgZGF0YSA9IG5ldyBVaW50OEFycmF5KGV4cGVjdGVkU2l6ZSk7CisgICAgICAg
ICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIGJs
b2NrU2l6ZS53aWR0aCAqIDMsIGJsb2NrU2l6ZS5oZWlnaHQgKiA0LCAwLCBkYXRhKTsKKyAgICAg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsIGZvcm1hdElk
ICsgIiBkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyAodG9vIHNtYWxsIHdpZHRo
KSIpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwg
MCwgZm9ybWF0LCBibG9ja1NpemUud2lkdGggKiA1LCBibG9ja1NpemUuaGVpZ2h0ICogNCwgMCwg
ZGF0YSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZB
TFVFLCBmb3JtYXRJZCArICIgZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMgKHRv
byBsYXJnZSB3aWR0aCkiKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgYmxvY2tTaXplLndpZHRoICogNCwgYmxvY2tTaXplLmhl
aWdodCAqIDMsIDAsIGRhdGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9WQUxVRSwgZm9ybWF0SWQgKyAiIGRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBk
aW1lbnNpb25zICh0b28gc21hbGwgaGVpZ2h0KSIpOworICAgICAgICAgICAgZ2wuY29tcHJlc3Nl
ZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBibG9ja1NpemUud2lkdGggKiA0
LCBibG9ja1NpemUuaGVpZ2h0ICogNSwgMCwgZGF0YSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCBmb3JtYXRJZCArICIgZGF0YSBzaXplIGRv
ZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMgKHRvbyBsYXJnZSBoZWlnaHQpIik7CisgICAgICAgIH0K
KyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZX0g
Z2wKKyAqIEBwYXJhbSB7T2JqZWN0fSB2YWxpZEZvcm1hdHMgTWFwcGluZyBmcm9tIGZvcm1hdCBu
YW1lcyB0byBmb3JtYXQgZW51bSB2YWx1ZXMuCisgKiBAcGFyYW0gZXhwZWN0ZWRCeXRlTGVuZ3Ro
IEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBpbiB3aWR0aCwgaGVpZ2h0IGFuZCBmb3JtYXQgYW5kIHJl
dHVybnMgdGhlIGV4cGVjdGVkIGJ1ZmZlciBzaXplIGluIGJ5dGVzLgorICogQHBhcmFtIGdldEJs
b2NrRGltZW5zaW9ucyBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaW4gYSBmb3JtYXQgYW5kIHJldHVy
bnMgYmxvY2sgc2l6ZSBpbiBwaXhlbHMuCisgKiBAcGFyYW0ge251bWJlcn0gd2lkdGggV2lkdGgg
b2YgdGhlIGltYWdlIGluIHBpeGVscy4KKyAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgSGVpZ2h0
IG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuCisgKiBAcGFyYW0ge09iamVjdH0gc3ViSW1hZ2VDb25m
aWdzIGNvbmZpZ3MgZm9yIGNvbXByZXNzZWRUZXhTdWJJbWFnZSBjYWxscworICovCitsZXQgdGVz
dFRleFN1YkltYWdlRGltZW5zaW9ucyA9IGZ1bmN0aW9uKGdsLCB2YWxpZEZvcm1hdHMsIGV4cGVj
dGVkQnl0ZUxlbmd0aCwgZ2V0QmxvY2tEaW1lbnNpb25zLCB3aWR0aCwgaGVpZ2h0LCBzdWJJbWFn
ZUNvbmZpZ3MpIHsKKyAgICBsZXQgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJp
bmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisKKyAgICBmb3IgKGxldCBmb3JtYXRJZCBp
biB2YWxpZEZvcm1hdHMpIHsKKyAgICAgICAgaWYgKHZhbGlkRm9ybWF0cy5oYXNPd25Qcm9wZXJ0
eShmb3JtYXRJZCkpIHsKKyAgICAgICAgICAgIGxldCBmb3JtYXQgPSB2YWxpZEZvcm1hdHNbZm9y
bWF0SWRdOworICAgICAgICAgICAgbGV0IGJsb2NrU2l6ZSA9IGdldEJsb2NrRGltZW5zaW9ucyhm
b3JtYXQpOworICAgICAgICAgICAgbGV0IGV4cGVjdGVkU2l6ZSA9IGV4cGVjdGVkQnl0ZUxlbmd0
aCh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpOworICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgVWlu
dDhBcnJheShleHBlY3RlZFNpemUpOworCisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGRhdGEpOwor
ICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJzZXR0aW5n
IHVwIGNvbXByZXNzZWQgdGV4dHVyZSIpOworCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwg
bGVuID0gc3ViSW1hZ2VDb25maWdzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAg
ICAgICAgbGV0IGMgPSBzdWJJbWFnZUNvbmZpZ3NbaV07CisgICAgICAgICAgICAgICAgbGV0IHN1
YkRhdGEgPSBuZXcgVWludDhBcnJheShleHBlY3RlZEJ5dGVMZW5ndGgoYy53aWR0aCwgYy5oZWln
aHQsIGZvcm1hdCkpOworICAgICAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIGMueG9mZnNldCwgYy55b2Zmc2V0LCBjLndpZHRoLCBjLmhlaWdo
dCwgZm9ybWF0LCBzdWJEYXRhKTsKKyAgICAgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJl
KGdsLCBjLmV4cGVjdGF0aW9uLCBjLm1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CisgICAg
Z2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfTsKKworbGV0IHRlc3RUZXhJbWFnZUxldmVsRGltZW5z
aW9ucyA9IGZ1bmN0aW9uKGdsLCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgZ2V0
QmxvY2tEaW1lbnNpb25zLCBpbWFnZUNvbmZpZ3MpIHsKKyAgICBsZXQgdGV4ID0gZ2wuY3JlYXRl
VGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisKKyAg
ICBmb3IgKGxldCBmb3JtYXRJZCBpbiB2YWxpZEZvcm1hdHMpIHsKKyAgICAgICAgaWYgKHZhbGlk
Rm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShmb3JtYXRJZCkpIHsKKyAgICAgICAgICAgIGxldCBmb3Jt
YXQgPSB2YWxpZEZvcm1hdHNbZm9ybWF0SWRdOworICAgICAgICAgICAgbGV0IGJsb2NrU2l6ZSA9
IGdldEJsb2NrRGltZW5zaW9ucyhmb3JtYXQpOworCisgICAgICAgICAgICBmb3IgKGxldCBpID0g
MCwgbGVuID0gaW1hZ2VDb25maWdzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAg
ICAgICAgbGV0IGMgPSBpbWFnZUNvbmZpZ3NbaV07CisgICAgICAgICAgICAgICAgbGV0IGRhdGEg
PSBuZXcgVWludDhBcnJheShleHBlY3RlZEJ5dGVMZW5ndGgoYy53aWR0aCwgYy5oZWlnaHQsIGZv
cm1hdCkpOworICAgICAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRV
UkVfMkQsIGMubGV2ZWwsIGZvcm1hdCwgYy53aWR0aCwgYy5oZWlnaHQsIDAsIGRhdGEpOworICAg
ICAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGMuZXhwZWN0YXRpb24sIGMubWVz
c2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKKyAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7Cit9
CisKK3JldHVybiB7CisgICAgZm9ybWF0VG9TdHJpbmc6IGZvcm1hdFRvU3RyaW5nLAorICAgIGlu
c2VydENhcHRpb25lZEltZzogaW5zZXJ0Q2FwdGlvbmVkSW1nLAorICAgIG1ha2VTY2FsZWRJbWFn
ZTogbWFrZVNjYWxlZEltYWdlLAorICAgIHRlc3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZDogdGVz
dENvbXByZXNzZWRGb3JtYXRzTGlzdGVkLAorICAgIHRlc3RDb21wcmVzc2VkRm9ybWF0c1VuYXZh
aWxhYmxlV2hlbkV4dGVuc2lvbkRpc2FibGVkOiB0ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2YWls
YWJsZVdoZW5FeHRlbnNpb25EaXNhYmxlZCwKKyAgICB0ZXN0Q29ycmVjdEVudW1WYWx1ZXNJbkV4
dDogdGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQsCisgICAgdGVzdEZvcm1hdFJlc3RyaWN0aW9u
c09uQnVmZmVyU2l6ZTogdGVzdEZvcm1hdFJlc3RyaWN0aW9uc09uQnVmZmVyU2l6ZSwKKyAgICB0
ZXN0VGV4U3ViSW1hZ2VEaW1lbnNpb25zOiB0ZXN0VGV4U3ViSW1hZ2VEaW1lbnNpb25zLAorICAg
IHRlc3RUZXhJbWFnZUxldmVsRGltZW5zaW9uczogdGVzdFRleEltYWdlTGV2ZWxEaW1lbnNpb25z
LAorfTsKKworfSkoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410868</attachid>
            <date>2020-10-08 12:02:20 -0700</date>
            <delta_ts>2020-10-08 17:24:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217198-20201008120219.patch</filename>
            <type>text/plain</type>
            <size>87908</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzliNjBmZTYxMDYyMzI1
ODgzYzYwZTcyM2FiNDVkMWFmMjllOTI0MC4uYmEwY2Q4ZjcyNjA2OWQwODEyNzNhYzFiMzBjNTgw
YmNiZmRlNzFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTEwLTA2ICBKYW1l
cyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0
IEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMgV2ViR0wgZXh0ZW5zaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcxOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgVGVzdDogd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFRvSlNWYWx1ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQzo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk6CisgICAgICAgIChXZWJDb3JlOjpFWFRU
ZXh0dXJlQ29tcHJlc3Npb25SR1RDOjpnZXROYW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1
bmNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxv
c2VFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmg6CisK
IDIwMjAtMDktMzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIG5vbi1hbmltYXRlZCBzdXBwb3J0IGZvciB0aGUgQ1NTIHRyYW5zbGF0ZSBwcm9wZXJ0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxOTQzODAyM2M0MzU4YjA2MDYxMDNjNjVjNDdkNTg5
ZjdlZTVjMzRjLi45NGFiNTk4MTQzYzFiYjI4ZmYyZGVhMGEwMjdkZGE3NTRjNWVmYzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQ0OCw2ICsxNDQ4LDcgQEAgaWYgKEVOQUJMRV9XRUJHTCkK
ICAgICAgICAgaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKICAgICAgICAgaHRtbC9jYW52
YXMvRVhURnJhZ0RlcHRoLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJl
TE9ELmNwcAorICAgICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNw
cAogICAgICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwCiAg
ICAgICAgIGh0bWwvY2FudmFzL0VYVHNSR0IuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL09FU0Vs
ZW1lbnRJbmRleFVpbnQuY3BwCkBAIC0xNTA2LDYgKzE1MDcsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX0lETF9GSUxFUwogICAgIGh0bWwvY2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsCiAgICAgaHRt
bC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAogICAgIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1
cmVMT0QuaWRsCisgICAgaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5pZGwK
ICAgICBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCiAgICAgaHRt
bC9jYW52YXMvRVhUc1JHQi5pZGwKICAgICBodG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50
LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
aW5kZXggYThkY2Y5Njk4MmE0MDgyOTk3NDU4MjU4MzRiNzE2MGI0NWQyN2Y1Zi4uMDY4NWM1YTI5
NGRkNjA1MjFhMTA1Y2EwZTU2NTY3MGE1OGVmYzE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05MzIsNiArOTMyLDcgQEAgJChQUk9K
RUNUX0RJUikvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuaWRsCiAkKFBST0pF
Q1RfRElSKS9odG1sL2NhbnZhcy9FWFRGbG9hdEJsZW5kLmlkbAogJChQUk9KRUNUX0RJUikvaHRt
bC9jYW52YXMvRVhURnJhZ0RlcHRoLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvRVhU
U2hhZGVyVGV4dHVyZUxPRC5pZGwKKyQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL0VYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9FWFRz
UkdCLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAppbmRleCAzNjc5NWVhNDEzMzhlZGRhODRhZDI4MzRmNjg4ZGVkMzIwNGRlMGQ4Li43
Nzk5MDBmOGMyNDczYjQxZWY5ZGRkNGQ0ZjgyYjAzMGM3OTA0Nzc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNjcxLDYgKzY3MSw4
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhURnJh
Z0RlcHRoLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNFWFRGcmFnRGVwdGguaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUNvbXByZXNzaW9u
UkdUQy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRVhUc1JHQi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDJjMWMx
MDg5YWQ1YWI2Yjc1OWY1MDZkYzFhZTkwM2NmZjIwNjA2ZjYuLmY0Y2VjODY0NjJjMzJkMGJkOWU3
YTZhODlkNDU0ZGY3MjFkNjFlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
OTUxLDYgKzk1MSw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL0VYVEZsb2F0QmxlbmQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4
dHVyZUxPRC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9FWFRzUkdC
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHQuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYzdlY2ZkZDE1NWM1MjgwZDU4NTRiZmI1MmJl
YmVhMDI4NGFkYjdhMy4uNmQzYTNlNTEwMDNjNDE0NDRkZjZjMTUxZWRkZTZlNDg3YTI1Yzc3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTEyNTUsNiArMTI1NSw3IEBAIGh0bWwvY2FudmFzL0VYVENvbG9y
QnVmZmVySGFsZkZsb2F0LmNwcAogaHRtbC9jYW52YXMvRVhURmxvYXRCbGVuZC5jcHAKIGh0bWwv
Y2FudmFzL0VYVEZyYWdEZXB0aC5jcHAKIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0Qu
Y3BwCitodG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcAogaHRtbC9jYW52
YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcAogaHRtbC9jYW52YXMvRVhUc1JHQi5j
cHAKIGh0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI4
NjMsNiArMjg2NCw3IEBAIEpTRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwCiBKU0VYVEZsb2F0
QmxlbmQuY3BwCiBKU0VYVEZyYWdEZXB0aC5jcHAKIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAK
K0pTRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAKIEpTRVhUVGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLmNwcAogSlNFWFRzUkdCLmNwcAogSlNFY0tleVBhcmFtcy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYTAwZjll
MGEyNmJmMjFhOGJjYzlmZjU1MTAyMmY3NDc5ODEyMGRkLi4xYjhmMWIzY2I2ZmJjMDYyYWE3NGU3
ZmZjYjgzMmQ1MDg4NzAzOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjExMyw2ICsxMjExMyw5IEBACiAJCUEzN0E0MkNF
MjUxRUI5OTYwMEY3NUFGRiAvKiBPRVNGQk9SZW5kZXJNaXBtYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT0VTRkJPUmVuZGVyTWlwbWFwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRDAyNTFFQjk5NjAwRjc1QUZGIC8qIE9FU0ZCT1Jl
bmRlck1pcG1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPRVNGQk9SZW5k
ZXJNaXBtYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3QTQyRDEyNTFFQjk5
NzAwRjc1QUZGIC8qIE9FU0ZCT1JlbmRlck1pcG1hcC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gT0VTRkJPUmVuZGVyTWlwbWFwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTM3QTQyRTAyNTI3QjQ5QzAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUVGV4dHVyZUNvbXByZXNz
aW9uUkdUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzN0E0MkUyMjUyN0I0
OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTM3QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRleHR1
cmVDb21wcmVzc2lvblJHVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVFRleHR1cmVD
b21wcmVzc2lvblJHVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGOUQ4
MTIwMzI1MkVFMDA2Q0FEMDYgLyogVXNlckFnZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VyQWdlbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODIyMDMyNTMyNDAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWdlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRjlEODMyMDMyNTY5MTAwNkNBRDA2IC8qIFVzZXJBZ2VudElP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJBZ2VudElP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzkzLDYgKzE5Mzk2LDkgQEAK
IAkJCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8sCiAJCQkJNzI3
QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLywKIAkJCQk3MjdBRkVEMzFBMkVB
NkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8sCisJCQkJQTM3QTQyRTAyNTI3QjQ5QzAwRjc1
QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuY3BwICovLAorCQkJCUEzN0E0MkUyMjUy
N0I0OUQwMEY3NUFGRiAvKiBFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggKi8sCisJCQkJQTM3
QTQyRTMyNTI3QjQ5RTAwRjc1QUZGIC8qIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsICov
LAogCQkJCTc3Mjg2OTRCMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMuY3BwICovLAogCQkJCTc3Mjg2OTRDMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaCAqLywKIAkJCQk3NzI4Njk0RDE0Rjg4ODI1MDBGNDg0REMgLyog
RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAppbmRleCBkNDcwZDAwOGE0OWQ0MGEz
ZTdhYmNiYTRlMjZlNDUzNjQ3YWYzMDFlLi4zZDMwNjYzMTEwNDZhNzYwNzA0MTI5OWQxM2U4YWY3
NTVmYTI2NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRXZWJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0V2ViR0wuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNFWFRGbG9hdEJsZW5k
LmgiCiAjaW5jbHVkZSAiSlNFWFRGcmFnRGVwdGguaCIKICNpbmNsdWRlICJKU0VYVFNoYWRlclRl
eHR1cmVMT0QuaCIKKyNpbmNsdWRlICJKU0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaCIKICNp
bmNsdWRlICJKU0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIgogI2luY2x1ZGUgIkpTRVhU
c1JHQi5oIgogI2luY2x1ZGUgIkpTT0VTRWxlbWVudEluZGV4VWludC5oIgpAQCAtMTcxLDYgKzE3
Miw4IEBAIEpTVmFsdWUgY29udmVydFRvSlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmCiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTExvc2VDb250
ZXh0Jj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUU2hhZGVyVGV4
dHVyZUxPRE5hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAm
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxFWFRTaGFkZXJUZXh0dXJlTE9EJj4oZXh0ZW5zaW9u
KSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQ05h
bWU6CisgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfY2FzdDxFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDJj4oZXh0ZW5zaW9uKSk7
CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljTmFt
ZToKICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmpl
Y3QsIHN0YXRpY19jYXN0PEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyY+KGV4dGVuc2lvbikp
OwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OkVYVHNSR0JOYW1lOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYTliNTc4Njg2MzkxNDZlZTJkMWIzMmFhMjE4NWM2YTU2OWU0OGVhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQy5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDLmgiCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChFWFRUZXh0dXJlQ29tcHJl
c3Npb25SR1RDKTsKKworRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6RVhUVGV4dHVyZUNvbXBy
ZXNzaW9uUkdUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKK3sKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9yZ3RjIik7CisKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JH
VEMxX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCk7CisgICAgY29udGV4dC5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JF
RF9HUkVFTl9SR1RDMl9FWFQpOworfQorCitFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDOjp+RVhU
VGV4dHVyZUNvbXByZXNzaW9uUkdUQygpID0gZGVmYXVsdDsKKworV2ViR0xFeHRlbnNpb246OkV4
dGVuc2lvbk5hbWUgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzo6Z2V0TmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVENOYW1lOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTg4M2Q5M2JjYTFiMThkMzcxN2VmZWM5ZTQzNTdjNGM0OGJiZTJjNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVz
c2lvblJHVEMuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJXZWJHTEV4dGVuc2lvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVY
VFRleHR1cmVDb21wcmVzc2lvblJHVEMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewor
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgdmlydHVhbCB+RVhUVGV4dHVyZUNvbXByZXNzaW9uUkdU
QygpOworCisgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVFRleHR1cmVDb21wcmVzc2lvblJHVEMuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZjk2
MDM1ZjZiOTI0OGNmMDE3OTViMTg4MDc0Yjc1NzU2MmQ1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmlkbApA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQkdMLAorICAgIEdl
bmVyYXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwKKyAgICBMZWdhY3lO
b0ludGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIEVYVFRleHR1cmVDb21wcmVzc2lvblJHVEMg
eworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUID0gMHg4
REJCOworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMx
X0VYVCA9IDB4OERCQzsKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNTRURfUkVEX0dS
RUVOX1JHVEMyX0VYVCA9IDB4OERCRDsKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIENPTVBSRVNT
RURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgPSAweDhEQkU7Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA3ZDRiNThmZGU1MDViMjcyODBiZTMwZTRhODA4YzRhYjJhMzUzZjhmLi5iNWZjZjkzZDg3MmFh
ZTM1Y2M4Y2I2ODZjODY5NGE1ZmU2YWUzM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkVYVENvbG9yQnVmZmVyRmxvYXQuaCIKICNpbmNsdWRlICJFWFRDb2xvckJ1
ZmZlckhhbGZGbG9hdC5oIgogI2luY2x1ZGUgIkVYVEZsb2F0QmxlbmQuaCIKKyNpbmNsdWRlICJF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCkBAIC0yNjcxLDYgKzI2NzIsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0
dXJuIHZhcmlhYmxlLmdldCgpOyBcCiAgICAgfQogCisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEMsICJF
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVF
U1RFRChFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMsIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIiwgZW5hYmxlU3VwcG9ydGVk
RXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpKTsKICAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxv
YXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRl
bnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwogICAgIEVOQUJMRV9JRl9S
RVFVRVNURUQoV2ViR0xMb3NlQ29udGV4dCwgbV93ZWJnbExvc2VDb250ZXh0LCAiV0VCR0xfbG9z
ZV9jb250ZXh0IiwgdHJ1ZSk7CkBAIC0yNzAzLDYgKzI3MDUsOCBAQCBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygp
CiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAg
IGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3Mp
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiX3MpOwor
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9y
Z3RjIl9zKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
cmd0YyJfcyk7CiAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
U1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXh0ZW5zaW9uLmgKaW5kZXggYTc4ZWYxNWIzOTEyMjYwZDFhMDRmYjA0YjI5Y2MyMWYwOTEzMzRk
MS4uNDQwZDRiOTU0Nzk0MzNjZmZlMTliMmFlNjE0NWFkMDk5ODViNmJkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCkBAIC00MSw2ICs0MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgRVhUQmxlbmRNaW5NYXhOYW1lLAogICAgICAgICBFWFRGcmFnRGVwdGhO
YW1lLAogICAgICAgICBFWFRTaGFkZXJUZXh0dXJlTE9ETmFtZSwKKyAgICAgICAgRVhUVGV4dHVy
ZUNvbXByZXNzaW9uUkdUQ05hbWUsCiAgICAgICAgIEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
Y05hbWUsCiAgICAgICAgIEVYVHNSR0JOYW1lLAogICAgICAgICBPRVNUZXh0dXJlRmxvYXROYW1l
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggYWFiOTBmOTI5NTJjYTYxMzllMWJhMjk3NDI5ZmIzM2VmNjc0NTQ1Zi4u
MzU1NjZlYjhkYTU3ZTdlMzYyYjg0MGZlODY0ZjM1OTE3NjZkMmIwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRVhURmxvYXRCbGVuZC5oIgogI2luY2x1ZGUgIkVYVEZy
YWdEZXB0aC5oIgogI2luY2x1ZGUgIkVYVFNoYWRlclRleHR1cmVMT0QuaCIKKyNpbmNsdWRlICJF
WFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5jbHVkZSAiRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TC5oIgpAQCAtMTUzLDYgKzE1NCw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBt
X2V4dFNoYWRlclRleHR1cmVMT0QuZ2V0KCk7CiAgICAgfQogICAgIEVOQUJMRV9JRl9SRVFVRVNU
RUQoRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYywgIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsIGVuYWJsZVN1cHBvcnRlZEV4
dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKSk7CisgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLCBtX2V4dFRleHR1cmVD
b21wcmVzc2lvblJHVEMsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiwgZW5hYmxlU3Vw
cG9ydGVkRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIl9zKSk7CiAg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChPRVNTdGFuZGFyZERlcml2YXRpdmVzLCBtX29lc1N0YW5k
YXJkRGVyaXZhdGl2ZXMsICJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiLCBlbmFibGVTdXBwb3J0
ZWRFeHRlbnNpb24oIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyJfcykpOwogICAgIEVOQUJM
RV9JRl9SRVFVRVNURUQoT0VTVGV4dHVyZUZsb2F0LCBtX29lc1RleHR1cmVGbG9hdCwgIk9FU190
ZXh0dXJlX2Zsb2F0IiwgT0VTVGV4dHVyZUZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKICAgICBF
TkFCTEVfSUZfUkVRVUVTVEVEKE9FU1RleHR1cmVGbG9hdExpbmVhciwgbV9vZXNUZXh0dXJlRmxv
YXRMaW5lYXIsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiLCBlbmFibGVTdXBwb3J0ZWRFeHRl
bnNpb24oIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciJfcykpOwpAQCAtMjMxLDYgKzIzMyw4
IEBAIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1
cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMiX3MpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcykgfHwgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKKyAgICBpZiAobV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3JndGMiX3MpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9yZ3RjIl9zKTsKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9y
dHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcykpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdCJfcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDA0NWQ2YTZiZjkxNmU1YWYzYmEwMjlhMWI0
NjU2ZjkzNWQxMGE1ZTAuLmVlYzUzOTY4ZDJjZjhmMDA0NjcxOGUyZDAzMDkyZDU3NzAyYzhhMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRVhURmxvYXRC
bGVuZC5oIgogI2luY2x1ZGUgIkVYVEZyYWdEZXB0aC5oIgogI2luY2x1ZGUgIkVYVFNoYWRlclRl
eHR1cmVMT0QuaCIKKyNpbmNsdWRlICJFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDLmgiCiAjaW5j
bHVkZSAiRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgiCiAjaW5jbHVkZSAiRVhUc1JHQi5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTM3MTQsNiArMzcxNSw3IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVkKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICBDSEVDS19FWFRFTlNJT04obV9leHRGcmFnRGVwdGgsICJFWFRfZnJhZ19kZXB0
aCIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dEJsZW5kTWluTWF4LCAiRVhUX2JsZW5kX21p
bm1heCIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dHNSR0IsICJFWFRfc1JHQiIpOworICAg
IENIRUNLX0VYVEVOU0lPTihtX2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEMsICJFWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9yZ3RjIik7CiAgICAgQ0hFQ0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CiAgICAg
Q0hFQ0tfRVhURU5TSU9OKG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLCAiV0VCS0lUX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4
dFNoYWRlclRleHR1cmVMT0QsICJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CkBAIC02NzMwLDYg
KzY3MzIsMjYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGkKICAgICAgICAgYnl0ZXNSZXF1aXJl
ZCA9IGNoZWNrZWRCeXRlc1JlcXVpcmVkLnVuc2FmZUdldCgpOwogICAgICAgICBicmVhazsKICAg
ICB9CisgICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKKyAg
ICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDogewor
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CisgICAgICAgIGNvbnN0IGludCBrQmxv
Y2tXaWR0aCA9IDQ7CisgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OworICAgICAg
ICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9j
a1dpZHRoOworICAgICAgICBpbnQgbnVtQmxvY2tzRG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWln
aHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2Nr
c0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd24gKiBrQmxvY2tTaXplOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VY
VDoKKyAgICBjYXNlIEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JH
VEMyX0VYVDogeworICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OworICAgICAgICBj
b25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0
ID0gNDsKKyAgICAgICAgaW50IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCArIGtCbG9ja1dpZHRo
IC0gMSkgLyBrQmxvY2tXaWR0aDsKKyAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0
ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAgIGJ5dGVzUmVxdWly
ZWQgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duICoga0Jsb2NrU2l6ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQg
Zm9ybWF0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc3ODQsNiArNzgwNiw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUV4dGVuc2lvbnMoTG9zdENvbnRleHRN
b2RlIG1vZGUpCiAgICAgTE9TRV9FWFRFTlNJT04obV9leHRGcmFnRGVwdGgpOwogICAgIExPU0Vf
RVhURU5TSU9OKG1fZXh0QmxlbmRNaW5NYXgpOwogICAgIExPU0VfRVhURU5TSU9OKG1fZXh0c1JH
Qik7CisgICAgTE9TRV9FWFRFTlNJT04obV9leHRUZXh0dXJlQ29tcHJlc3Npb25SR1RDKTsKICAg
ICBMT1NFX0VYVEVOU0lPTihtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyk7CiAgICAgTE9T
RV9FWFRFTlNJT04obV9leHRTaGFkZXJUZXh0dXJlTE9EKTsKICAgICBMT1NFX0VYVEVOU0lPTiht
X29lc1RleHR1cmVGbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggN2IyMTg2NzJhYzU2NTI4ODRmYmQ3
MTY4NmVkMjdlMDg2ODYxNTc3MC4uMjA2YWNlMzU1MGFiOWExNjMxYzUzNTM2NGZhYzE5MjNmODU1
ZWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBFWFRCbGVuZE1pbk1h
eDsKIGNsYXNzIEVYVENvbG9yQnVmZmVyRmxvYXQ7CiBjbGFzcyBFWFRDb2xvckJ1ZmZlckhhbGZG
bG9hdDsKIGNsYXNzIEVYVEZsb2F0QmxlbmQ7CitjbGFzcyBFWFRUZXh0dXJlQ29tcHJlc3Npb25S
R1RDOwogY2xhc3MgRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOwogY2xhc3MgRVhUU2hhZGVy
VGV4dHVyZUxPRDsKIGNsYXNzIEVYVHNSR0I7CkBAIC00MjgsNiArNDI5LDcgQEAgcHJvdGVjdGVk
OgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYsIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMpOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoQ2FudmFzQmFzZSYs
IFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4mJiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyk7
CiAKKyAgICBmcmllbmQgY2xhc3MgRVhUVGV4dHVyZUNvbXByZXNzaW9uUkdUQzsKICAgICBmcmll
bmQgY2xhc3MgV2ViR0xEcmF3QnVmZmVyczsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xGcmFtZWJ1
ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CkBAIC02NjksNiArNjcxLDcgQEAg
cHJvdGVjdGVkOgogICAgIFJlZlB0cjxFWFRGcmFnRGVwdGg+IG1fZXh0RnJhZ0RlcHRoOwogICAg
IFJlZlB0cjxFWFRCbGVuZE1pbk1heD4gbV9leHRCbGVuZE1pbk1heDsKICAgICBSZWZQdHI8RVhU
c1JHQj4gbV9leHRzUkdCOworICAgIFJlZlB0cjxFWFRUZXh0dXJlQ29tcHJlc3Npb25SR1RDPiBt
X2V4dFRleHR1cmVDb21wcmVzc2lvblJHVEM7CiAgICAgUmVmUHRyPEVYVFRleHR1cmVGaWx0ZXJB
bmlzb3Ryb3BpYz4gbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM7CiAgICAgUmVmUHRyPEVY
VFNoYWRlclRleHR1cmVMT0Q+IG1fZXh0U2hhZGVyVGV4dHVyZUxPRDsKICAgICBSZWZQdHI8T0VT
VGV4dHVyZUZsb2F0PiBtX29lc1RleHR1cmVGbG9hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKaW5kZXggYzA3YjNjMDA1ZjQyYjljZjczYmZh
MDYxNzYxODU4ZDU1Njk3MTRmNy4uMGY1ZGJiYWJmYjE0OGRmMGFkMjMyN2UwNGVkMzEwZmQ3MThl
MWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9u
c0dMLmgKQEAgLTIxOSw2ICsyMTksMTIgQEAgcHVibGljOgogICAgICAgICBDT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiA9IDB4OTNEQywKICAgICAgICAgQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIgPSAweDkzREQsCiAKKyAgICAgICAgLy8gR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fcmd0YworICAgICAgICBDT01QUkVTU0VEX1JFRF9SR1RDMV9F
WFQgPSAweDhEQkIsCisgICAgICAgIENPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQgPSAw
eDhEQkMsCisgICAgICAgIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRCwK
KyAgICAgICAgQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCA9IDB4OERCRSwK
KwogICAgICAgICAvLyBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICAgICAgICAg
VEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkUsCiAgICAgICAgIE1BWF9URVhUVVJF
X01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OGRmMWIxYzZmNWM0MjNmOGU1
MmRhMDhhNDNkMTdlMTU0NzlmZWU4Li4wYjU1ZjYzNGViZWE5ZTA5MTFhZmU4NGU5MmM5NzliNDgw
Y2RkMWY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMTAtMDYgIEphbWVzIERhcnBpbmlh
biAgPGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzE5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUnVzc2VsbC4KKworICAgICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJlc3Np
b24tcmd0Yy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNp
b25zL3MzdGMtYW5kLXJndGMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9j
b25mb3JtYW5jZS9leHRlbnNpb25zL3MzdGMtYW5kLXJndGMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0
Yy1hbmQtcmd0Yy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanM6IEFkZGVkLgor
CiAyMDIwLTA5LTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFkZCBub24tYW5pbWF0ZWQgc3VwcG9ydCBmb3IgdGhlIENTUyB0cmFuc2xhdGUgcHJvcGVy
dHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
ZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMzBmNjI2Njc1ODllODVjNDc4NGNmMTFlM2RjZWQ5
OWM2YWIzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93
IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCisKK1Rlc3Q6IC4uLy4uL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1
cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1
cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOTk5ZjVmZGZiMWNkNDZiMmIy
ZGVkMTkxMzcxOTE0MjYyZDU3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRt
bApAQCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS13ZWJnbC10ZXN0cy5weS4gRE8gTk9UIEVESVQgLS0+Cis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29u
Zm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciBleHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0
bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJraXQtd2ViZ2wtdGVzdC1oYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IHJ1bnMgdGhlIFdl
YkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZB
SUwuPC9wPgorVGVzdDogPGEgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwi
Pi4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
ZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sPC9hPgorPGRpdiBpZD0iaWZyYW1lIj4K
KzxpZnJhbWUgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRtbCIgd2lkdGg9Ijgw
MCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzk1NmE5NDY4NjVkYzdhM2YxNjVlYzcxODYzNjUxOGJjZTk3ODZmNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
czN0Yy1hbmQtcmd0Yy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgcnVu
cyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBB
U1Mgb3IgRkFJTC4KKworVGVzdDogLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29u
Zm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLmh0bWwKK1BBU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1y
Z3RjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY2ODA1OGQ5YzhkM2MxOWJkZjUxZjcyNWJjMTNiNWE3OTUx
ZTAwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4
dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0gVGhpcyBm
aWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLXdlYmdsLXRlc3RzLnB5LiBETyBOT1Qg
RURJVCAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdyYXBwZXIgZm9yIHMzdGMt
YW5kLXJndGMuaHRtbDwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10
ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Qg
cnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRz
IFBBU1Mgb3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3MzdGMtYW5kLXJndGMuaHRtbCI+Li4v
Li4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3Rj
LWFuZC1yZ3RjLmh0bWw8L2E+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4uLy4u
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1h
bmQtcmd0Yy5odG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rpdj4K
KzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
ZXh0LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyYTJkNDE2OTA4
NzU1MjY5NzRmMGNlZGYxNmVjY2FmZGYyZTBiZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL2V4dC10ZXh0dXJlLWNvbXByZXNzaW9uLXJndGMuaHRtbApAQCAtMCwwICsxLDE0NiBAQAor
PCEtLQorQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorCis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2Vi
R0wgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+
Cis8TElOSyByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIGV4dGVuc2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIp
OworCitkZWJ1ZygiIik7CisKK3ZhciB2YWxpZEZvcm1hdHMgPSB7CisgIENPTVBSRVNTRURfUkVE
X1JHVEMxX0VYVDogMHg4REJCLAorICBDT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOiAw
eDhEQkMsCisgIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDogMHg4REJELAorICBDT01Q
UkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOiAweDhEQkUKK307CisKK2Z1bmN0aW9u
IGV4cGVjdGVkQnl0ZUxlbmd0aCh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpIHsKKyAgaWYgKGZvcm1h
dCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUIHx8IGZvcm1hdCA9PSB2
YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCkgeworICAgIHJldHVy
biBNYXRoLmNlaWwod2lkdGggLyA0KSAqIE1hdGguY2VpbChoZWlnaHQgLyA0KSAqIDg7CisgIH0K
KyAgZWxzZSB7CisgICAgcmV0dXJuIE1hdGguY2VpbCh3aWR0aCAvIDQpICogTWF0aC5jZWlsKGhl
aWdodCAvIDQpICogMTY7CisgIH0KK30KKworZnVuY3Rpb24gZ2V0QmxvY2tEaW1lbnNpb25zKGZv
cm1hdCkgeworICByZXR1cm4ge3dpZHRoOiA0LCBoZWlnaHQ6IDR9OworfQorCit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgY3R1ID0gQ29tcHJlc3NlZFRleHR1cmVVdGlsczsKK3ZhciBj
b250ZXh0VmVyc2lvbiA9IHd0dS5nZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpOwordmFyIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dCgpOwordmFyIGV4dDsKKwordmFyIGZvcm1hdHMgPSBudWxs
OworCitmdW5jdGlvbiBydW5UZXN0RXh0ZW5zaW9uKCkgeworICAvLyBUZXN0IHRoYXQgZW51bSB2
YWx1ZXMgYXJlIGxpc3RlZCBjb3JyZWN0bHkgaW4gc3VwcG9ydGVkIGZvcm1hdHMgYW5kIGluIHRo
ZSBleHRlbnNpb24gb2JqZWN0LgorICBjdHUudGVzdENvbXByZXNzZWRGb3JtYXRzTGlzdGVkKGds
LCB2YWxpZEZvcm1hdHMpOworICBjdHUudGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQoZXh0LCB2
YWxpZEZvcm1hdHMpOworICAvLyBUZXN0IHRoYXQgdGV4dHVyZSB1cGxvYWQgYnVmZmVyIHNpemUg
aXMgdmFsaWRhdGVkIGNvcnJlY3RseS4KKyAgY3R1LnRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1
ZmZlclNpemUoZ2wsIHZhbGlkRm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCBnZXRCbG9ja0Rp
bWVuc2lvbnMpOworICAvLyBUZXN0IFRleFN1YkltYWdlIHZhbGlkYXRpb24gb24gZGltZW5zaW9u
cworICAvLyBDb21wcmVzc2VkVGV4U3ViSW1hZ2UqIHdpbGwgcmVzdWx0IGluIGFuCisgIC8vIElO
VkFMSURfT1BFUkFUSU9OIGVycm9yIG9ubHkgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBvY2N1cnM6CisgIC8vICogPHdpZHRoPiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBh
bmQgPHdpZHRoPiBwbHVzIDx4b2Zmc2V0PiBpcyBub3QKKyAgLy8gZXF1YWwgdG8gVEVYVFVSRV9X
SURUSDsKKyAgLy8gKiA8aGVpZ2h0PiBpcyBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLCBhbmQgPGhl
aWdodD4gcGx1cyA8eW9mZnNldD4gaXMKKyAgLy8gICAgICAgICAgIG5vdCBlcXVhbCB0byBURVhU
VVJFX0hFSUdIVDsgb3IKKyAgLy8gKiA8eG9mZnNldD4gb3IgPHlvZmZzZXQ+IGlzIG5vdCBhIG11
bHRpcGxlIG9mIGZvdXIuCisgIGN0dS50ZXN0VGV4U3ViSW1hZ2VEaW1lbnNpb25zKGdsLCB2YWxp
ZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgZ2V0QmxvY2tEaW1lbnNpb25zLAorICAgIDE2
LCAxNiwgWworICAgICAgeyB4b2Zmc2V0OiAwLCB5b2Zmc2V0OiAwLCB3aWR0aDogNCwgaGVpZ2h0
OiAzLAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6
ICJoZWlnaHQgaXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwKKyAgICAgIHsgeG9mZnNldDogMCwg
eW9mZnNldDogMCwgd2lkdGg6IDMsIGhlaWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGds
LklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAid2lkdGggaXMgbm90IGEgbXVsdGlwbGUgb2Yg
NCIgfSwKKyAgICAgIHsgeG9mZnNldDogMSwgeW9mZnNldDogMCwgd2lkdGg6IDQsIGhlaWdodDog
NCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLklOVkFMSURfT1BFUkFUSU9OLCBtZXNzYWdlOiAi
eG9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiA0IiB9LAorICAgICAgeyB4b2Zmc2V0OiAwLCB5
b2Zmc2V0OiAxLCB3aWR0aDogNCwgaGVpZ2h0OiA0LAorICAgICAgICBleHBlY3RhdGlvbjogZ2wu
SU5WQUxJRF9PUEVSQVRJT04sIG1lc3NhZ2U6ICJ5b2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9m
IDQiIH0sCisgICAgICB7IHhvZmZzZXQ6IDEyLCB5b2Zmc2V0OiAxMiwgd2lkdGg6IDQsIGhlaWdo
dDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMgdmFs
aWQiIH0sCisgIF0pOworCisgIC8vIFRlc3QgVGV4SW1hZ2UgdmFsaWRhdGlvbiBvbiBsZXZlbCBk
aW1lbnNpb25zIGNvbWJpbmF0aW9ucy4KKyAgLy8gV2hlbiBsZXZlbCBlcXVhbHMgMCwgd2lkdGgg
YW5kIGhlaWdodCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgLy8gV2hlbiBsZXZlbCBpcyBs
YXJnZXIgdGhhbiAwLCB0aGlzIGNvbnN0cmFpbnQgZG9lc24ndCBhcHBseS4KKyAgY3R1LnRlc3RU
ZXhJbWFnZUxldmVsRGltZW5zaW9ucyhnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5n
dGgsIGdldEJsb2NrRGltZW5zaW9ucywKKyAgICBbCisgICAgICB7IGxldmVsOiAwLCB3aWR0aDog
NCwgaGVpZ2h0OiAzLAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04s
IG1lc3NhZ2U6ICJsZXZlbCBpcyAwLCBoZWlnaHQgaXMgbm90IGEgbXVsdGlwbGUgb2YgNCIgfSwK
KyAgICAgIHsgbGV2ZWw6IDAsIHdpZHRoOiAzLCBoZWlnaHQ6IDQsCisgICAgICAgIGV4cGVjdGF0
aW9uOiBnbC5JTlZBTElEX09QRVJBVElPTiwgbWVzc2FnZTogImxldmVsIGlzIDAsIHdpZHRoIGlz
IG5vdCBhIG11bHRpcGxlIG9mIDQiIH0sCisgICAgICB7IGxldmVsOiAwLCB3aWR0aDogMiwgaGVp
Z2h0OiAyLAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuSU5WQUxJRF9PUEVSQVRJT04sIG1lc3Nh
Z2U6ICJsZXZlbCBpcyAwLCB3aWR0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiA0IiB9LAorICAgICAg
eyBsZXZlbDogMCwgd2lkdGg6IDQsIGhlaWdodDogNCwKKyAgICAgICAgZXhwZWN0YXRpb246IGds
Lk5PX0VSUk9SLCBtZXNzYWdlOiAiaXMgdmFsaWQiIH0sCisgICAgICB7IGxldmVsOiAxLCB3aWR0
aDogMiwgaGVpZ2h0OiAyLAorICAgICAgICBleHBlY3RhdGlvbjogZ2wuTk9fRVJST1IsIG1lc3Nh
Z2U6ICJsZXZlbCA+IDAsIGlzIHZhbGlkIiB9LAorICAgICAgeyBsZXZlbDogMiwgd2lkdGg6IDEs
IGhlaWdodDogMSwKKyAgICAgICAgZXhwZWN0YXRpb246IGdsLk5PX0VSUk9SLCBtZXNzYWdlOiAi
bGV2ZWwgPiAwLCBpcyB2YWxpZCIgfSwKKyAgXSk7CisKKyAgLy8gVGVzdCB0aGF0IFJHVEMgZW51
bXMgYXJlIG5vdCBhY2NlcHRlZCBieSB0ZXhJbWFnZTJECisgIGlmIChjb250ZXh0VmVyc2lvbiA+
PSAyKSB7CisgICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4
dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworCisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBleHQuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhULCA0LCA0LCAwLCBnbC5SRUQsIGds
LlVOU0lHTkVEX0JZVEUsIG51bGwpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfT1BFUkFUSU9OLCAiQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUIGZhaWxzIHdpdGggdGV4
SW1hZ2UyRCIpOworCisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBleHQuQ09N
UFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCwgNCwgNCwgMCwgZ2wuUkVELCBnbC5CWVRFLCBu
dWxsKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwg
IkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQgZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7
CisKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGV4dC5DT01QUkVTU0VEX1JF
RF9HUkVFTl9SR1RDMl9FWFQsIDQsIDQsIDAsIGdsLlJHLCBnbC5VTlNJR05FRF9CWVRFLCBudWxs
KTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNP
TVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCBmYWlscyB3aXRoIHRleEltYWdlMkQiKTsKKwor
ICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZXh0LkNPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQsIDQsIDQsIDAsIGdsLlJHLCBnbC5CWVRFLCBudWxsKTsKKyAg
ICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgIkNPTVBSRVNT
RURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQgZmFpbHMgd2l0aCB0ZXhJbWFnZTJEIik7CisK
KyAgICBnbC5kZWxldGVUZXh0dXJlKHRleCk7CisgIH0KK307CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0RmFpbGVkKCJjb250ZXh0IGRvZXMgbm90IGV4aXN0
Iik7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiY29udGV4dCBleGlzdHMiKTsKKworICAg
IGN0dS50ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2YWlsYWJsZVdoZW5FeHRlbnNpb25EaXNhYmxl
ZChnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIDQpOworCisgICAgZXh0ID0g
Z2wuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIik7CisKKyAgICB3
dHUucnVuRXh0ZW5zaW9uU3VwcG9ydGVkVGVzdChnbCwgIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X3JndGMiLCBleHQgIT09IG51bGwpOworCisgICAgaWYgKGV4dCAhPT0gbnVsbCkgeworICAgICAg
cnVuVGVzdEV4dGVuc2lvbigpOworICAgIH0KKyAgfQorfQorCitydW5UZXN0KCk7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcmVz
b3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9zM3RjLWFuZC1y
Z3RjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkxZThlZmVmMGYxNDY3MDU0MDk4ODJlYjJlNmJiOWZiZjM3
YTc4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sCkBA
IC0wLDAgKzEsOTc2IEBACivvu788IS0tCitDb3B5cmlnaHQgKGMpIDIwMTkgVGhlIEtocm9ub3Mg
R3JvdXAgSW5jLgorVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlU
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxl
LgorLS0+CisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Rlc3RzL2NvbXByZXNzZWQtdGV4dHVyZS11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8dGl0bGU+V2ViR0wgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X3MzdGMgYW5kIEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMgQ29uZm9ybWFuY2UgVGVzdHM8
L3RpdGxlPgorPHN0eWxlPgoraW1nIHsKKyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyBtYXJn
aW4tcmlnaHQ6IDFlbTsKK30KKworLnRlc3RpbWFnZXMgYnIgeworICBjbGVhcjogYm90aDsKK30K
KworLnRlc3RpbWFnZXMgPiBkaXYgeworICBmbG9hdDogbGVmdDsKKyAgbWFyZ2luOiAxZW07Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHN0eWxlPSJ3aWR0aDog
OHB4OyBoZWlnaHQ6IDhweDsiPjwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0
aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMgZXh0
ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIEl0IGFsc28gdGVzdHMgdGhlIHJlbGF0ZWQgZm9y
bWF0cyBmcm9tIHRoZSBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIGV4dGVuc2lvbi4iKTsK
KworZGVidWcoIiIpOworCisvKgorQkMxIChEWFQxKSBibG9jaworZTAgPSBbICAwLCAyNTUsIDBd
CitlMSA9IFsyNTUsICAgMCwgMF0KK2UwIDwgZTEsIHNvIGl0IHVzZXMgMy1jb2xvciBtb2RlCisK
K2xvY2FsIHBhbGV0dGUKKyAgICAwOiBbICAwLCAyNTUsIDAsIDI1NV0KKyAgICAxOiBbMjU1LCAg
IDAsIDAsIDI1NV0KKyAgICAyOiBbMTI4LCAxMjgsIDAsIDI1NV0KKyAgICAzOiBbICAwLCAgIDAs
IDAsIDI1NV0gLy8gZm9yIEJDMSBSR0IKKyAgICAzOiBbICAwLCAgIDAsIDAsICAgMF0gLy8gZm9y
IEJDMSBSR0JBCitzZWxlY3RvcnMKKyAgICAzIDIgMSAwCisgICAgMiAyIDEgMAorICAgIDEgMSAx
IDAKKyAgICAwIDAgMCAwCisKK0V4dGVuZGluZyB0aGlzIGJsb2NrIHdpdGggb3BhcXVlIGFscGhh
IGFuZCB1cGxvYWRpbmcgYXMgQkMyIG9yIEJDMword2lsbCBnZW5lcmF0ZSB3cm9uZyBjb2xvcnMg
YmVjYXVzZSBCQzIgYW5kIEJDMyBkbyBub3QgaGF2ZSAzLWNvbG9yIG1vZGUuCisqLwordmFyIGlt
Z180eDRfcmdiYV9keHQxID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4RTAsIDB4MDcsIDB4MDAs
IDB4RjgsIDB4MUIsIDB4MUEsIDB4MTUsIDB4MDAKK10pOworCisvKgorQkMyIChEWFQzKSBibG9j
aworCitRdWFudGl6ZWQgYWxwaGEgdmFsdWVzCisgICAgMCAxIDIgMworICAgIDQgNSA2IDcKKyAg
ICA4IDkgQSBCCisgICAgQyBEIEUgRgorCitSR0IgYmxvY2sKK2UwID0gWzI1NSwgICAwLCAwXQor
ZTEgPSBbICAwLCAyNTUsIDBdCitCQzIgaGFzIG9ubHkgNC1jb2xvciBtb2RlCisKK2xvY2FsIHBh
bGV0dGUKKyAgICAwOiBbMjU1LCAgIDAsIDBdCisgICAgMTogWyAgMCwgMjU1LCAwXQorICAgIDI6
IFsxNzAsICA4NSwgMF0KKyAgICAzOiBbIDg1LCAxNzAsIDBdCitzZWxlY3RvcnMKKyAgICAwIDEg
MiAzCisgICAgMSAxIDIgMworICAgIDIgMiAyIDMKKyAgICAzIDMgMyAzCisqLwordmFyIGltZ180
eDRfcmdiYV9keHQzID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4MTAsIDB4MzIsIDB4NTQsIDB4
NzYsIDB4OTgsIDB4QkEsIDB4REMsIDB4RkUsCisgICAgMHgwMCwgMHhGOCwgMHhFMCwgMHgwNywg
MHhFNCwgMHhFNSwgMHhFQSwgMHhGRgorXSk7CisKKy8qCitCQzMgKERYVDUpIGJsb2NrCisKK0Fs
cGhhIGJsb2NrIChha2EgRFhUNUEpCitlMCA9IDI1NQorZTEgPSAwCitlMCA+IGUxLCBzbyB1c2lu
ZyA2IGludGVybWVkaWF0ZSBwb2ludHMKK2xvY2FsIHBhbGV0dGUKKyAgICAyNTUsIDAsIDIxOSwg
MTgyLCAxNDYsIDEwOSwgNzMsIDM2CitzZWxlY3RvcnMKKyAgICAwIDEgMiAzCisgICAgMSAyIDMg
NAorICAgIDIgMyA0IDUKKyAgICAzIDQgNSA2CisKK1JHQiBibG9jaworZTAgPSBbMjU1LCAgIDAs
IDBdCitlMSA9IFsgIDAsIDI1NSwgMF0KK0JDMyBoYXMgb25seSA0LWNvbG9yIG1vZGUKKworbG9j
YWwgcGFsZXR0ZQorICAgIDA6IFsyNTUsICAgMCwgMF0KKyAgICAxOiBbICAwLCAyNTUsIDBdCisg
ICAgMjogWzE3MCwgIDg1LCAwXQorICAgIDM6IFsgODUsIDE3MCwgMF0KK3NlbGVjdG9ycworICAg
IDMgMiAxIDAKKyAgICAzIDIgMSAxCisgICAgMyAyIDIgMgorICAgIDMgMyAzIDMKKyovCit2YXIg
aW1nXzR4NF9yZ2JhX2R4dDUgPSBuZXcgVWludDhBcnJheShbCisgICAgMHhGRiwgMHgwMCwgMHg4
OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKKyAgICAweDAwLCAweEY4LCAweEUwLCAw
eDA3LCAweDFCLCAweDVCLCAweEFCLCAweEZGCitdKTsKKworLy8gQkM0IC0ganVzdCB0aGUgYWxw
aGEgYmxvY2sgZnJvbSBCQzMgYWJvdmUsIGludGVycHJldGVkIGFzIHRoZSByZWQgY2hhbm5lbC4K
Ky8vIFNlZSBodHRwOi8vd3d3LnJlZWRiZXRhLmNvbS9ibG9nL3VuZGVyc3RhbmRpbmctYmNuLXRl
eHR1cmUtY29tcHJlc3Npb24tZm9ybWF0cy8jYmM0CisvLyBmb3IgZm9ybWF0IGRldGFpbHMuCit2
YXIgaW1nXzR4NF9yX2JjNCA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweEZGLCAweDAwLCAweDg4
LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorXSk7CisKKy8vIEJDNSAtIFR3byBCQzMg
YWxwaGEgYmxvY2tzLCBpbnRlcnByZXRlZCBhcyB0aGUgcmVkIGFuZCBncmVlbiBjaGFubmVscy4K
K3ZhciBpbWdfNHg0X3JnX2JjNSA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweEZGLCAweDAwLCAw
eDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorICAgIDB4MDAsIDB4RkYsIDB4ODgs
IDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCitdKTsKKworLy8gU2lnbmVkIEJDNCAtIGNo
YW5nZSBlbmRwb2ludHMgdG8gdXNlIGZ1bGwgLTEgdG8gMSByYW5nZS4KK3ZhciBpbWdfNHg0X3Np
Z25lZF9yX2JjNCA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweDdGLCAweDgwLCAweDg4LCAweDE2
LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorXSk7CisKKy8vIFNpZ25lZCBCQzUgLSBUd28gQkMz
IGFscGhhIGJsb2NrcywgaW50ZXJwcmV0ZWQgYXMgdGhlIHJlZCBhbmQgZ3JlZW4gY2hhbm5lbHMu
Cit2YXIgaW1nXzR4NF9zaWduZWRfcmdfYmM1ID0gbmV3IFVpbnQ4QXJyYXkoWworICAgIDB4N0Ys
IDB4ODAsIDB4ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCisgICAgMHg4MCwgMHg3
RiwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKK10pOworCisKKy8qCis4eDgg
YmxvY2sgZW5kcG9pbnRzIHVzZSBoYWxmLWludGVuc2l0eSB2YWx1ZXMgKGFwcGVhciBkYXJrZXIg
dGhhbiA0eDQpCisqLwordmFyIGltZ184eDhfcmdiYV9keHQxID0gbmV3IFVpbnQ4QXJyYXkoWwor
ICAgIDB4ZTAsMHgwMywweDAwLDB4NzgsMHgxMywweDEwLDB4MTUsMHgwMCwKKyAgICAweDBmLDB4
MDAsMHhlMCwweDdiLDB4MTEsMHgxMCwweDE1LDB4MDAsCisgICAgMHhlMCwweDAzLDB4MGYsMHg3
OCwweDQ0LDB4NDUsMHg0MCwweDU1LAorICAgIDB4MGYsMHgwMCwweGVmLDB4MDMsMHg0NCwweDQ1
LDB4NDAsMHg1NQorXSk7Cit2YXIgaW1nXzh4OF9yZ2JhX2R4dDMgPSBuZXcgVWludDhBcnJheShb
CisgICAgMHhmNiwweGZmLDB4ZjYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4MDAsMHg3OCww
eGUwLDB4MDMsMHg0NCwweDQ1LDB4NDAsMHg1NSwKKyAgICAweGZmLDB4ZmYsMHhmZiwweGZmLDB4
ZmYsMHhmZiwweGZmLDB4ZmYsMHhlMCwweDdiLDB4MGYsMHgwMCwweDQ0LDB4NDUsMHg0MCwweDU1
LAorICAgIDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmNiwweGZmLDB4ZjYsMHhmZiwweDBmLDB4Nzgs
MHhlMCwweDAzLDB4MTEsMHgxMCwweDE1LDB4MDAsCisgICAgMHhmZiwweGZmLDB4ZmYsMHhmZiww
eGZmLDB4ZmYsMHhmZiwweGZmLDB4ZWYsMHgwMywweDBmLDB4MDAsMHgxMSwweDEwLDB4MTUsMHgw
MAorXSk7Cit2YXIgaW1nXzh4OF9yZ2JhX2R4dDUgPSBuZXcgVWludDhBcnJheShbCisgICAgMHhm
ZiwweDY5LDB4MDEsMHgxMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHg3OCwweGUwLDB4MDMs
MHg0NCwweDQ1LDB4NDAsMHg1NSwKKyAgICAweGZmLDB4ZmYsMHgwMCwweDAwLDB4MDAsMHgwMCww
eDAwLDB4MDAsMHhlMCwweDdiLDB4MGYsMHgwMCwweDQ0LDB4NDUsMHg0MCwweDU1LAorICAgIDB4
ZmYsMHg2OSwweDAwLDB4MDAsMHgwMCwweDAxLDB4MTAsMHgwMCwweDBmLDB4NzgsMHhlMCwweDAz
LDB4MTEsMHgxMCwweDE1LDB4MDAsCisgICAgMHhmZiwweGZmLDB4MDAsMHgwMCwweDAwLDB4MDAs
MHgwMCwweDAwLDB4ZWYsMHgwMywweGVmLDB4MDAsMHgxMSwweDEwLDB4MTUsMHgwMAorXSk7Cit2
YXIgaW1nXzh4OF9yX2JjNCA9IG5ldyBVaW50OEFycmF5KFsKKyAgICAweDdGLCAweDAwLCAweDg4
LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorICAgIDB4N0YsIDB4MDAsIDB4ODgsIDB4
MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCisgICAgMHg3RiwgMHgwMCwgMHg4OCwgMHgxNiwg
MHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKKyAgICAweDdGLCAweDAwLCAweDg4LCAweDE2LCAweDhE
LCAweDFBLCAweDNCLCAweEQ2LAorXSk7Cit2YXIgaW1nXzh4OF9yZ19iYzUgPSBuZXcgVWludDhB
cnJheShbCisgICAgMHg3RiwgMHgwMCwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhE
NiwgMHgwMCwgMHg3RiwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwgMHgzQiwgMHhENiwKKyAgICAw
eDdGLCAweDAwLCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LCAweDAwLCAweDdG
LCAweDg4LCAweDE2LCAweDhELCAweDFBLCAweDNCLCAweEQ2LAorICAgIDB4N0YsIDB4MDAsIDB4
ODgsIDB4MTYsIDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsIDB4MDAsIDB4N0YsIDB4ODgsIDB4MTYs
IDB4OEQsIDB4MUEsIDB4M0IsIDB4RDYsCisgICAgMHg3RiwgMHgwMCwgMHg4OCwgMHgxNiwgMHg4
RCwgMHgxQSwgMHgzQiwgMHhENiwgMHgwMCwgMHg3RiwgMHg4OCwgMHgxNiwgMHg4RCwgMHgxQSwg
MHgzQiwgMHhENiwKK10pOworCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIgY3R1ID0g
Q29tcHJlc3NlZFRleHR1cmVVdGlsczsKK3ZhciBjb250ZXh0VmVyc2lvbiA9IHd0dS5nZXREZWZh
dWx0M0RDb250ZXh0VmVyc2lvbigpOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMiKTsKK3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB7YW50
aWFsaWFzOiBmYWxzZX0pOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wp
OwordmFyIGV4dCA9IG51bGw7Cit2YXIgZXh0X3JndGMgPSB7fTsKK3ZhciB2YW8gPSBudWxsOwor
dmFyIHZhbGlkRm9ybWF0cyA9IHsKKyAgICBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICA6
IDB4ODNGMCwKKyAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA6IDB4ODNGMSwKKyAg
ICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCA6IDB4ODNGMiwKKyAgICBDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQ1X0VYVCA6IDB4ODNGMywKK307Cit2YXIgbmFtZTsKK3ZhciBzdXBwb3J0
ZWRGb3JtYXRzOworCitpZiAoIWdsKSB7CisgICAgdGVzdEZhaWxlZCgiV2ViR0wgY29udGV4dCBk
b2VzIG5vdCBleGlzdCIpOworfSBlbHNlIHsKKyAgICB0ZXN0UGFzc2VkKCJXZWJHTCBjb250ZXh0
IGV4aXN0cyIpOworCisgICAgLy8gUnVuIHRlc3RzIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkCisg
ICAgY3R1LnRlc3RDb21wcmVzc2VkRm9ybWF0c1VuYXZhaWxhYmxlV2hlbkV4dGVuc2lvbkRpc2Fi
bGVkKGdsLCB2YWxpZEZvcm1hdHMsIGV4cGVjdGVkQnl0ZUxlbmd0aCwgNCk7CisKKyAgICAvLyBR
dWVyeSB0aGUgZXh0ZW5zaW9uIGFuZCBzdG9yZSBnbG9iYWxseSBzbyBzaG91bGRCZSBjYW4gYWNj
ZXNzIGl0CisgICAgZXh0ID0gd3R1LmdldEV4dGVuc2lvbldpdGhLbm93blByZWZpeGVzKGdsLCAi
V0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTsKKyAgICBpZiAoIWV4dCkgeworICAgICAg
ICB0ZXN0UGFzc2VkKCJObyBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyBzdXBwb3J0IC0t
IHRoaXMgaXMgbGVnYWwiKTsKKyAgICAgICAgd3R1LnJ1bkV4dGVuc2lvblN1cHBvcnRlZFRlc3Qo
Z2wsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIsIGZhbHNlKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgZW5hYmxlZCBXRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfczN0YyBleHRlbnNpb24iKTsKKworICAgICAgICB3dHUucnVuRXh0ZW5zaW9u
U3VwcG9ydGVkVGVzdChnbCwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIiwgdHJ1ZSk7
CisgICAgICAgIHJ1blRlc3RFeHRlbnNpb24oKTsKKyAgICB9CisgICAgZXh0X3JndGMgPSB3dHUu
Z2V0RXh0ZW5zaW9uV2l0aEtub3duUHJlZml4ZXMoZ2wsICJFWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9yZ3RjIik7CisgICAgaWYgKGV4dF9yZ3RjKSB7CisgICAgICAgIGV4dCA9IGV4dCB8fCB7fTsK
KyAgICAgICAgLy8gTWFrZSBjdHUuZm9ybWF0VG9TdHJpbmcgd29yayBmb3Igcmd0YyBlbnVtcy4K
KyAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIGV4dF9yZ3RjKQorICAgICAgICAgICAgZXh0W25h
bWVdID0gZXh0X3JndGNbbmFtZV07CisgICAgICAgIHJ1blRlc3RSR1RDKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiBleHBlY3RlZEJ5dGVMZW5ndGgod2lkdGgsIGhlaWdodCwgZm9ybWF0KSB7Cisg
ICAgaWYgKGZvcm1hdCA9PSB2YWxpZEZvcm1hdHMuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19F
WFQgfHwgZm9ybWF0ID09IHZhbGlkRm9ybWF0cy5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VY
VCkgeworICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigod2lkdGggKyAzKSAvIDQpICogTWF0aC5m
bG9vcigoaGVpZ2h0ICsgMykgLyA0KSAqIDE2OworICAgIH0KKyAgICByZXR1cm4gTWF0aC5mbG9v
cigod2lkdGggKyAzKSAvIDQpICogTWF0aC5mbG9vcigoaGVpZ2h0ICsgMykgLyA0KSAqIDg7Cit9
CisKK2Z1bmN0aW9uIGdldEJsb2NrRGltZW5zaW9ucyhmb3JtYXQpIHsKKyAgICByZXR1cm4ge3dp
ZHRoOiA0LCBoZWlnaHQ6IDR9OworfQorCitmdW5jdGlvbiBydW5UZXN0RXh0ZW5zaW9uKCkgewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdGluZyBXRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfczN0YyIpOworCisgICAgLy8gVGVzdCB0aGF0IGVudW0gdmFsdWVzIGFyZSBsaXN0ZWQgY29y
cmVjdGx5IGluIHN1cHBvcnRlZCBmb3JtYXRzIGFuZCBpbiB0aGUgZXh0ZW5zaW9uIG9iamVjdC4K
KyAgICBjdHUudGVzdENvbXByZXNzZWRGb3JtYXRzTGlzdGVkKGdsLCB2YWxpZEZvcm1hdHMpOwor
ICAgIGN0dS50ZXN0Q29ycmVjdEVudW1WYWx1ZXNJbkV4dChleHQsIHZhbGlkRm9ybWF0cyk7Cisg
ICAgLy8gVGVzdCB0aGF0IHRleHR1cmUgdXBsb2FkIGJ1ZmZlciBzaXplIGlzIHZhbGlkYXRlZCBj
b3JyZWN0bHkuCisgICAgY3R1LnRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1ZmZlclNpemUoZ2ws
IHZhbGlkRm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCBnZXRCbG9ja0RpbWVuc2lvbnMpOwor
CisgICAgLy8gVGVzdCBlYWNoIGZvcm1hdAorICAgIHRlc3REWFQxX1JHQigpOworICAgIHRlc3RE
WFQxX1JHQkEoKTsKKyAgICB0ZXN0RFhUM19SR0JBKCk7CisgICAgdGVzdERYVDVfUkdCQSgpOwor
CisgICAgLy8gVGVzdCBjb21wcmVzc2VkIFBCT3Mgd2l0aCBhIHNpbmdsZSBmb3JtYXQKKyAgICBp
ZiAoY29udGV4dFZlcnNpb24gPj0gMikgeworICAgICAgICB0ZXN0RFhUNV9SR0JBX1BCTygpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdFJHVEMoKSB7CisgICAgdmFyIHRlc3RzID0gWwor
ICAgICAgICB7ICAgd2lkdGg6IDQsCisgICAgICAgICAgICBoZWlnaHQ6IDQsCisgICAgICAgICAg
ICBjaGFubmVsczogMSwKKyAgICAgICAgICAgIGRhdGE6IGltZ180eDRfcl9iYzQsCisgICAgICAg
ICAgICBmb3JtYXQ6IGV4dF9yZ3RjLkNPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCwKKyAgICAgICAg
ICAgIGhhc0FscGhhOiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAgIHdpZHRoOiA0LAor
ICAgICAgICAgICAgaGVpZ2h0OiA0LAorICAgICAgICAgICAgY2hhbm5lbHM6IDEsCisgICAgICAg
ICAgICBkYXRhOiBpbWdfNHg0X3NpZ25lZF9yX2JjNCwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0
X3JndGMuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCwKKyAgICAgICAgICAgIGhhc0Fs
cGhhOiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAgIHdpZHRoOiA0LAorICAgICAgICAg
ICAgaGVpZ2h0OiA0LAorICAgICAgICAgICAgY2hhbm5lbHM6IDIsCisgICAgICAgICAgICBkYXRh
OiBpbWdfNHg0X3JnX2JjNSwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0X3JndGMuQ09NUFJFU1NF
RF9SRURfR1JFRU5fUkdUQzJfRVhULAorICAgICAgICAgICAgaGFzQWxwaGE6IGZhbHNlLAorICAg
ICAgICB9LAorICAgICAgICB7ICAgd2lkdGg6IDQsCisgICAgICAgICAgICBoZWlnaHQ6IDQsCisg
ICAgICAgICAgICBjaGFubmVsczogMiwKKyAgICAgICAgICAgIGRhdGE6IGltZ180eDRfc2lnbmVk
X3JnX2JjNSwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0X3JndGMuQ09NUFJFU1NFRF9TSUdORURf
UkVEX0dSRUVOX1JHVEMyX0VYVCwKKyAgICAgICAgICAgIGhhc0FscGhhOiBmYWxzZSwKKyAgICAg
ICAgfSwKKyAgICAgICAgeyAgIHdpZHRoOiA4LAorICAgICAgICAgICAgaGVpZ2h0OiA4LAorICAg
ICAgICAgICAgY2hhbm5lbHM6IDIsCisgICAgICAgICAgICBkYXRhOiBpbWdfOHg4X3JfYmM0LAor
ICAgICAgICAgICAgZm9ybWF0OiBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQsCisg
ICAgICAgICAgICBoYXNBbHBoYTogZmFsc2UsCisgICAgICAgICAgICBzdWJYMDogMCwKKyAgICAg
ICAgICAgIHN1YlkwOiAwLAorICAgICAgICAgICAgc3ViV2lkdGg6IDQsCisgICAgICAgICAgICBz
dWJIZWlnaHQ6IDQsCisgICAgICAgICAgICBzdWJEYXRhOiBpbWdfNHg0X3JfYmM0LAorICAgICAg
ICB9LAorICAgICAgICB7ICAgd2lkdGg6IDgsCisgICAgICAgICAgICBoZWlnaHQ6IDgsCisgICAg
ICAgICAgICBjaGFubmVsczogMiwKKyAgICAgICAgICAgIGRhdGE6IGltZ184eDhfcmdfYmM1LAor
ICAgICAgICAgICAgZm9ybWF0OiBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9F
WFQsCisgICAgICAgICAgICBoYXNBbHBoYTogZmFsc2UsCisgICAgICAgICAgICBzdWJYMDogMCwK
KyAgICAgICAgICAgIHN1YlkwOiAwLAorICAgICAgICAgICAgc3ViV2lkdGg6IDQsCisgICAgICAg
ICAgICBzdWJIZWlnaHQ6IDQsCisgICAgICAgICAgICBzdWJEYXRhOiBpbWdfNHg0X3JnX2JjNSwK
KyAgICAgICAgfSwKKyAgICBdOworICAgIHRlc3REWFRUZXh0dXJlcyh0ZXN0cyk7Cit9CisKK2Z1
bmN0aW9uIHRlc3REWFQxX1JHQigpIHsKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsgICB3
aWR0aDogNCwKKyAgICAgICAgICAgIGhlaWdodDogNCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiAz
LAorICAgICAgICAgICAgZGF0YTogaW1nXzR4NF9yZ2JhX2R4dDEsCisgICAgICAgICAgICBmb3Jt
YXQ6IGV4dC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULAorICAgICAgICAgICAgaGFzQWxw
aGE6IGZhbHNlLAorICAgICAgICB9LAorICAgICAgICB7ICAgd2lkdGg6IDgsCisgICAgICAgICAg
ICBoZWlnaHQ6IDgsCisgICAgICAgICAgICBjaGFubmVsczogMywKKyAgICAgICAgICAgIGRhdGE6
IGltZ184eDhfcmdiYV9keHQxLAorICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAgICAgIGhhc0FscGhhOiBmYWxzZSwKKyAgICAgICAg
ICAgIHN1YlgwOiAwLAorICAgICAgICAgICAgc3ViWTA6IDAsCisgICAgICAgICAgICBzdWJXaWR0
aDogNCwKKyAgICAgICAgICAgIHN1YkhlaWdodDogNCwKKyAgICAgICAgICAgIHN1YkRhdGE6IGlt
Z180eDRfcmdiYV9keHQxCisgICAgICAgIH0KKyAgICBdOworICAgIHRlc3REWFRUZXh0dXJlcyh0
ZXN0cyk7Cit9CisKK2Z1bmN0aW9uIHRlc3REWFQxX1JHQkEoKSB7CisgICAgdmFyIHRlc3RzID0g
WworICAgICAgICB7ICAgd2lkdGg6IDQsCisgICAgICAgICAgICBoZWlnaHQ6IDQsCisgICAgICAg
ICAgICBjaGFubmVsczogNCwKKyAgICAgICAgICAgIGRhdGE6IGltZ180eDRfcmdiYV9keHQxLAor
ICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCisg
ICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIC0tIHRoZSB0ZXh0dXJlIGlzIHN0
aWxsIG9wYXF1ZQorICAgICAgICAgICAgLy8gdGhvdWdoIGl0J3MgUkdCQS4KKyAgICAgICAgICAg
IGhhc0FscGhhOiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAgIHdpZHRoOiA4LAorICAg
ICAgICAgICAgaGVpZ2h0OiA4LAorICAgICAgICAgICAgY2hhbm5lbHM6IDQsCisgICAgICAgICAg
ICBkYXRhOiBpbWdfOHg4X3JnYmFfZHh0MSwKKyAgICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULAorICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNp
YWwgY2FzZSAtLSB0aGUgdGV4dHVyZSBpcyBzdGlsbCBvcGFxdWUKKyAgICAgICAgICAgIC8vIHRo
b3VnaCBpdCdzIFJHQkEuCisgICAgICAgICAgICBoYXNBbHBoYTogZmFsc2UsCisgICAgICAgIH0K
KyAgICBdOworICAgIHRlc3REWFRUZXh0dXJlcyh0ZXN0cyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RE
WFQzX1JHQkEoKSB7CisgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7ICAgd2lkdGg6IDQsCisg
ICAgICAgICAgICBoZWlnaHQ6IDQsCisgICAgICAgICAgICBjaGFubmVsczogNCwKKyAgICAgICAg
ICAgIGRhdGE6IGltZ180eDRfcmdiYV9keHQzLAorICAgICAgICAgICAgZm9ybWF0OiBleHQuQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQsCisgICAgICAgICAgICBoYXNBbHBoYTogdHJ1ZSwK
KyAgICAgICAgfSwKKyAgICAgICAgeyAgIHdpZHRoOiA4LAorICAgICAgICAgICAgaGVpZ2h0OiA4
LAorICAgICAgICAgICAgY2hhbm5lbHM6IDQsCisgICAgICAgICAgICBkYXRhOiBpbWdfOHg4X3Jn
YmFfZHh0MywKKyAgICAgICAgICAgIGZvcm1hdDogZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDNfRVhULAorICAgICAgICAgICAgaGFzQWxwaGE6IHRydWUsCisgICAgICAgICAgICBzdWJYMDog
MCwKKyAgICAgICAgICAgIHN1YlkwOiAwLAorICAgICAgICAgICAgc3ViV2lkdGg6IDQsCisgICAg
ICAgICAgICBzdWJIZWlnaHQ6IDQsCisgICAgICAgICAgICBzdWJEYXRhOiBpbWdfNHg0X3JnYmFf
ZHh0MworICAgICAgICB9CisgICAgXTsKKyAgICB0ZXN0RFhUVGV4dHVyZXModGVzdHMpOworfQor
CitmdW5jdGlvbiB0ZXN0RFhUNV9SR0JBKCkgeworICAgIHZhciB0ZXN0cyA9IFsKKyAgICAgICAg
eyAgIHdpZHRoOiA0LAorICAgICAgICAgICAgaGVpZ2h0OiA0LAorICAgICAgICAgICAgY2hhbm5l
bHM6IDQsCisgICAgICAgICAgICBkYXRhOiBpbWdfNHg0X3JnYmFfZHh0NSwKKyAgICAgICAgICAg
IGZvcm1hdDogZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhULAorICAgICAgICAgICAg
aGFzQWxwaGE6IHRydWUsCisgICAgICAgIH0sCisgICAgICAgIHsgICB3aWR0aDogOCwKKyAgICAg
ICAgICAgIGhlaWdodDogOCwKKyAgICAgICAgICAgIGNoYW5uZWxzOiA0LAorICAgICAgICAgICAg
ZGF0YTogaW1nXzh4OF9yZ2JhX2R4dDUsCisgICAgICAgICAgICBmb3JtYXQ6IGV4dC5DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCwKKyAgICAgICAgICAgIGhhc0FscGhhOiB0cnVlLAorICAg
ICAgICAgICAgc3ViWDA6IDAsCisgICAgICAgICAgICBzdWJZMDogMCwKKyAgICAgICAgICAgIHN1
YldpZHRoOiA0LAorICAgICAgICAgICAgc3ViSGVpZ2h0OiA0LAorICAgICAgICAgICAgc3ViRGF0
YTogaW1nXzR4NF9yZ2JhX2R4dDUKKyAgICAgICAgfQorICAgIF07CisgICAgdGVzdERYVFRleHR1
cmVzKHRlc3RzKTsKK30KKworZnVuY3Rpb24gdGVzdERYVFRleHR1cmVzKHRlc3RzKSB7CisgICAg
ZGVidWcoIjxoci8+Iik7CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHRlc3RzLmxlbmd0aDsg
KytpaSkgeworICAgICAgICB0ZXN0RFhUVGV4dHVyZSh0ZXN0c1tpaV0sIGZhbHNlKTsKKyAgICAg
ICAgaWYgKGNvbnRleHRWZXJzaW9uID49IDIpIHsKKyAgICAgICAgICAgIGRlYnVnKCI8YnIvPiIp
OworICAgICAgICAgICAgdGVzdERYVFRleHR1cmUodGVzdHNbaWldLCB0cnVlKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworZnVuY3Rpb24gdW5jb21wcmVzc0RYVEJsb2NrKAorICAgIGRlc3RCdWZm
ZXIsIGRlc3RYLCBkZXN0WSwgZGVzdFdpZHRoLCBzcmMsIHNyY09mZnNldCwgZm9ybWF0KSB7Cisg
ICAgLy8gRGVjb2Rpbmcgcm91dGluZXMgZm9sbG93IEQzRDExIGZ1bmN0aW9uYWwgc3BlYyB3cnQK
KyAgICAvLyBlbmRwb2ludHMgdW5xdWFudGl6YXRpb24gYW5kIGludGVycG9sYXRpb24uCisgICAg
Ly8gU29tZSBoYXJkd2FyZSBtYXkgcHJvZHVjZSBzbGlnaHRseSBkaWZmZXJlbnQgdmFsdWVzIC0g
aXQncyBub3JtYWwuCisKKyAgICBmdW5jdGlvbiBtYWtlNTY1KHNyYywgb2Zmc2V0KSB7CisgICAg
ICAgIHJldHVybiBzcmNbb2Zmc2V0ICsgMF0gKyAoc3JjW29mZnNldCArIDFdIDw8IDgpOworICAg
IH0KKyAgICBmdW5jdGlvbiBtYWtlODg4OEZyb201NjUoYykgeworICAgICAgICAvLyBUaGVzZSB2
YWx1ZXMgZXhhY3RseSBtYXRjaCBodyBkZWNvZGVyIHdoZW4gc2VsZWN0b3JzIGFyZSAwIG9yIDEu
CisgICAgICAgIGZ1bmN0aW9uIHJlcGxpY2F0ZUJpdHModiwgdykgeworICAgICAgICAgICByZXR1
cm4gKHYgPDwgKDggLSB3KSkgfCAodiA+PiAodyArIHcgLSA4KSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIFsKKyAgICAgICAgICAgICAgICByZXBsaWNhdGVCaXRzKChjID4+IDExKSAmIDB4
MUYsIDUpLAorICAgICAgICAgICAgICAgIHJlcGxpY2F0ZUJpdHMoKGMgPj4gIDUpICYgMHgzRiwg
NiksCisgICAgICAgICAgICAgICAgcmVwbGljYXRlQml0cygoYyA+PiAgMCkgJiAweDFGLCA1KSwK
KyAgICAgICAgICAgICAgICAyNTUKKyAgICAgICAgICAgIF07CisgICAgfQorICAgIGZ1bmN0aW9u
IG1peChtdWx0LCBjMCwgYzEsIGRpdikgeworICAgICAgICB2YXIgciA9IFtdOworICAgICAgICBm
b3IgKHZhciBpaSA9IDA7IGlpIDwgYzAubGVuZ3RoOyArK2lpKSB7CisgICAgICAgICAgICAvLyBG
b3IgZ3JlZW4gY2hhbm5lbCAoNiBiaXRzKSwgdGhpcyBpbnRlcnBvbGF0aW9uIGV4YWN0bHkgbWF0
Y2hlcyBodyBkZWNvZGVycworCisgICAgICAgICAgICAvLyBGb3IgcmVkIGFuZCBibHVlIGNoYW5u
ZWxzICg1IGJpdHMpLCB0aGlzIGludGVycG9sYXRpb24gZXhhY3RseQorICAgICAgICAgICAgLy8g
bWF0Y2hlcyBvbmx5IHNvbWUgaHcgZGVjb2RlcnMgYW5kIHN0YXlzIHdpdGhpbiBhY2NlcHRhYmxl
IHJhbmdlIGZvciBvdGhlcnMuCisgICAgICAgICAgICByW2lpXSA9IE1hdGguZmxvb3IoKGMwW2lp
XSAqIG11bHQgKyBjMVtpaV0pIC8gZGl2ICsgMC41KTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcjsKKyAgICB9CisgICAgdmFyIGlzQkM0NSA9IGV4dF9yZ3RjICYmCisgICAgICAgIChmb3Jt
YXQgPT0gZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUIHx8CisgICAgICAgICBmb3Jt
YXQgPT0gZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUIHx8CisgICAgICAg
ICBmb3JtYXQgPT0gZXh0X3JndGMuQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCB8fAor
ICAgICAgICAgZm9ybWF0ID09IGV4dF9yZ3RjLkNPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9S
R1RDMl9FWFQpOworICAgIGlmICghaXNCQzQ1KSB7CisgICAgICAgIHZhciBpc0RYVDEgPSBmb3Jt
YXQgPT0gZXh0LkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgfHwKKyAgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7CisgICAg
ICAgIHZhciBjb2xvck9mZnNldCA9IHNyY09mZnNldCArIChpc0RYVDEgPyAwIDogOCk7CisgICAg
ICAgIHZhciBjb2xvcjAgPSBtYWtlNTY1KHNyYywgY29sb3JPZmZzZXQgKyAwKTsKKyAgICAgICAg
dmFyIGNvbG9yMSA9IG1ha2U1NjUoc3JjLCBjb2xvck9mZnNldCArIDIpOworICAgICAgICB2YXIg
YzBndGMxID0gY29sb3IwID4gY29sb3IxIHx8ICFpc0RYVDE7CisgICAgICAgIHZhciByZ2JhMCA9
IG1ha2U4ODg4RnJvbTU2NShjb2xvcjApOworICAgICAgICB2YXIgcmdiYTEgPSBtYWtlODg4OEZy
b201NjUoY29sb3IxKTsKKyAgICAgICAgdmFyIGNvbG9ycyA9IFsKKyAgICAgICAgICAgICAgICBy
Z2JhMCwKKyAgICAgICAgICAgICAgICByZ2JhMSwKKyAgICAgICAgICAgICAgICBjMGd0YzEgPyBt
aXgoMiwgcmdiYTAsIHJnYmExLCAzKSA6IG1peCgxLCByZ2JhMCwgcmdiYTEsIDIpLAorICAgICAg
ICAgICAgICAgIGMwZ3RjMSA/IG1peCgyLCByZ2JhMSwgcmdiYTAsIDMpIDogWzAsIDAsIDAsIDI1
NV0KKyAgICAgICAgICAgIF07CisgICAgfQorICAgIGNvbnN0IGlzU2lnbmVkID0gZXh0X3JndGMg
JiYgKGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUIHx8
IGZvcm1hdCA9PSBleHRfcmd0Yy5DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhU
KTsKKyAgICBjb25zdCBzaWduZWRTcmMgPSBuZXcgSW50OEFycmF5KHNyYyk7CisKKyAgICAvLyB5
ZWEgSSBrbm93IHRoZXJlIGlzIGEgbG90IG9mIG1hdGggaW4gdGhpcyBpbm5lciBsb29wLgorICAg
IC8vIHNvIHN1ZSBtZS4KKyAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgNDsgKyt5eSkgeworICAg
ICAgICB2YXIgcGl4ZWxzID0gc3JjW2NvbG9yT2Zmc2V0ICsgNCArIHl5XTsKKyAgICAgICAgZm9y
ICh2YXIgeHggPSAwOyB4eCA8IDQ7ICsreHgpIHsKKyAgICAgICAgICAgIHZhciBkc3RPZmYgPSAo
KGRlc3RZICsgeXkpICogZGVzdFdpZHRoICsgZGVzdFggKyB4eCkgKiA0OworICAgICAgICAgICAg
aWYgKCFpc0JDNDUpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29kZSA9IChwaXhlbHMgPj4gKHh4
ICogMikpICYgMHgzOworICAgICAgICAgICAgICAgIHZhciBzcmNDb2xvciA9IGNvbG9yc1tjb2Rl
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBhbHBoYTsKKyAgICAgICAgICAgIHZh
ciByZ0NoYW5uZWwyID0gMDsKKyAgICAgICAgICAgIGxldCBkZWNvZGVBbHBoYSA9IChvZmZzZXQp
ID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgYWxwaGE7CisgICAgICAgICAgICAgICAgdmFyIGFs
cGhhMCA9IChpc1NpZ25lZCA/IHNpZ25lZFNyYyA6IHNyYylbb2Zmc2V0ICsgMF07CisgICAgICAg
ICAgICAgICAgdmFyIGFscGhhMSA9IChpc1NpZ25lZCA/IHNpZ25lZFNyYyA6IHNyYylbb2Zmc2V0
ICsgMV07CisgICAgICAgICAgICAgICAgdmFyIGFscGhhT2ZmID0gKHl5ID4+IDEpICogMyArIDI7
CisgICAgICAgICAgICAgICAgdmFyIGFscGhhQml0cyA9CisgICAgICAgICAgICAgICAgICAgICBz
cmNbb2Zmc2V0ICsgYWxwaGFPZmYgKyAwXSArCisgICAgICAgICAgICAgICAgICAgICBzcmNbb2Zm
c2V0ICsgYWxwaGFPZmYgKyAxXSAqIDI1NiArCisgICAgICAgICAgICAgICAgICAgICBzcmNbb2Zm
c2V0ICsgYWxwaGFPZmYgKyAyXSAqIDY1NTM2OworICAgICAgICAgICAgICAgIHZhciBhbHBoYVNo
aWZ0ID0gKHl5ICUgMikgKiAxMiArIHh4ICogMzsKKyAgICAgICAgICAgICAgICB2YXIgYWxwaGFD
b2RlID0gKGFscGhhQml0cyA+PiBhbHBoYVNoaWZ0KSAmIDB4NzsKKyAgICAgICAgICAgICAgICBp
ZiAoYWxwaGEwID4gYWxwaGExKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFD
b2RlKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFscGhhID0gYWxwaGEwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhID0g
YWxwaGExOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9IE1hdGguZmxvb3Io
KCg4IC0gYWxwaGFDb2RlKSAqIGFscGhhMCArIChhbHBoYUNvZGUgLSAxKSAqIGFscGhhMSkgLyA3
LjAgKyAwLjUpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGFscGhhQ29kZSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAg
ICAgICAgICAgICAgICAgICBhbHBoYSA9IGFscGhhMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAg
ICAgICBhbHBoYSA9IGFscGhhMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSA9
IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSA3OgorICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgPSAyNTU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFscGhhID0gTWF0aC5mbG9vcigoKDYgLSBhbHBoYUNvZGUpICog
YWxwaGEwICsgKGFscGhhQ29kZSAtIDEpICogYWxwaGExKSAvIDUuMCArIDAuNSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gYWxwaGE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIGV4dC5DT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgICAgIGFscGhhID0gMjU1Owor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBleHQuQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICAgICAgYWxwaGEgPSAoY29kZSA9PSAzICYm
ICFjMGd0YzEpID8gMCA6IDI1NTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUOgorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFscGhhMCA9IHNyY1tzcmNPZmZzZXQgKyB5eSAq
IDIgKyAoeHggPj4gMSldOworICAgICAgICAgICAgICAgICAgICB2YXIgYWxwaGExID0gKGFscGhh
MCA+PiAoKHh4ICUgMikgKiA0KSkgJiAweEY7CisgICAgICAgICAgICAgICAgICAgIGFscGhhID0g
YWxwaGExIHwgKGFscGhhMSA8PCA0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGV4dF9yZ3RjLkNPTVBSRVNTRURfUkVEX0dSRUVO
X1JHVEMyX0VYVDoKKyAgICAgICAgICAgIGNhc2UgZXh0X3JndGMuQ09NUFJFU1NFRF9TSUdORURf
UkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICAgICAgICAgICAgICByZ0NoYW5uZWwyID0gZGVjb2Rl
QWxwaGEoc3JjT2Zmc2V0ICsgOCk7CisgICAgICAgICAgICAgICAgLy8gRkFMTFRIUk9VR0gKKyAg
ICAgICAgICAgIGNhc2UgZXh0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgICAg
ICAgICAgY2FzZSBleHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6CisgICAgICAgICAg
ICBjYXNlIGV4dF9yZ3RjLkNPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQ6CisgICAgICAg
ICAgICAgICAgYWxwaGEgPSBkZWNvZGVBbHBoYShzcmNPZmZzZXQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyAiYmFk
IGZvcm1hdCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNCQzQ1KSB7CisgICAg
ICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAwXSA9IGFscGhhOworICAgICAgICAgICAg
ICAgIGRlc3RCdWZmZXJbZHN0T2ZmICsgMV0gPSByZ0NoYW5uZWwyOworICAgICAgICAgICAgICAg
IGRlc3RCdWZmZXJbZHN0T2ZmICsgMl0gPSAwOworICAgICAgICAgICAgICAgIGRlc3RCdWZmZXJb
ZHN0T2ZmICsgM10gPSAyNTU7CisgICAgICAgICAgICAgICAgaWYgKGlzU2lnbmVkKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3RCdWZmZXJbZHN0T2ZmICsgMF0gPSBNYXRoLm1heCgwLCBhbHBo
YSkgKiAyOworICAgICAgICAgICAgICAgICAgICBkZXN0QnVmZmVyW2RzdE9mZiArIDFdID0gTWF0
aC5tYXgoMCwgcmdDaGFubmVsMikgKiAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAwXSA9IHNyY0Nv
bG9yWzBdOworICAgICAgICAgICAgICAgIGRlc3RCdWZmZXJbZHN0T2ZmICsgMV0gPSBzcmNDb2xv
clsxXTsKKyAgICAgICAgICAgICAgICBkZXN0QnVmZmVyW2RzdE9mZiArIDJdID0gc3JjQ29sb3Jb
Ml07CisgICAgICAgICAgICAgICAgZGVzdEJ1ZmZlcltkc3RPZmYgKyAzXSA9IGFscGhhOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBnZXRCbG9ja1NpemUo
Zm9ybWF0KSB7CisgIHZhciBpc0RYVDEgPSBmb3JtYXQgPT0gZXh0LkNPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQgfHwKKyAgICAgICAgICAgICAgIGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQ7CisgIHZhciBpc0JDNCA9IGV4dF9yZ3RjICYmIChmb3JtYXQgPT0g
ZXh0X3JndGMuQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUIHx8IGZvcm1hdCA9PSBleHRfcmd0Yy5D
T01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUKTsKKyAgcmV0dXJuIGlzRFhUMSB8fCBpc0JD
NCA/IDggOiAxNjsKK30KKworZnVuY3Rpb24gdW5jb21wcmVzc0RYVCh3aWR0aCwgaGVpZ2h0LCBk
YXRhLCBmb3JtYXQpIHsKKyAgICBpZiAod2lkdGggJSA0IHx8IGhlaWdodCAlIDQpIHRocm93ICJi
YWQgd2lkdGggb3IgaGVpZ2h0IjsKKworICAgIHZhciBkZXN0ID0gbmV3IFVpbnQ4QXJyYXkod2lk
dGggKiBoZWlnaHQgKiA0KTsKKyAgICB2YXIgYmxvY2tzQWNyb3NzID0gd2lkdGggLyA0OworICAg
IHZhciBibG9ja3NEb3duID0gaGVpZ2h0IC8gNDsKKyAgICB2YXIgYmxvY2tTaXplID0gZ2V0Qmxv
Y2tTaXplKGZvcm1hdCk7CisgICAgZm9yICh2YXIgeXkgPSAwOyB5eSA8IGJsb2Nrc0Rvd247ICsr
eXkpIHsKKyAgICAgICAgZm9yICh2YXIgeHggPSAwOyB4eCA8IGJsb2Nrc0Fjcm9zczsgKyt4eCkg
eworICAgICAgICAgICAgdW5jb21wcmVzc0RYVEJsb2NrKAorICAgICAgICAgICAgICAgIGRlc3Qs
IHh4ICogNCwgeXkgKiA0LCB3aWR0aCwgZGF0YSwKKyAgICAgICAgICAgICAgICAoeXkgKiBibG9j
a3NBY3Jvc3MgKyB4eCkgKiBibG9ja1NpemUsIGZvcm1hdCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIGRlc3Q7Cit9CisKK2Z1bmN0aW9uIHVuY29tcHJlc3NEWFRJbnRvU3ViUmVnaW9u
KHdpZHRoLCBoZWlnaHQsIHN1YlgwLCBzdWJZMCwgc3ViV2lkdGgsIHN1YkhlaWdodCwgZGF0YSwg
Zm9ybWF0KQoreworICAgIGlmICh3aWR0aCAlIDQgfHwgaGVpZ2h0ICUgNCB8fCBzdWJYMCAlIDQg
fHwgc3ViWTAgJSA0IHx8IHN1YldpZHRoICUgNCB8fCBzdWJIZWlnaHQgJSA0KQorICAgICAgICB0
aHJvdyAiYmFkIGRpbWVuc2lvbiI7CisKKyAgICB2YXIgZGVzdCA9IG5ldyBVaW50OEFycmF5KHdp
ZHRoICogaGVpZ2h0ICogNCk7CisgICAgLy8gWmVyby1maWxsZWQgRFhUMSBvciBCQzQvNSB0ZXh0
dXJlIHJlcHJlc2VudHMgWzAsIDAsIDAsIDI1NV0KKyAgICBpZiAoZm9ybWF0ID09IGV4dC5DT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIHx8IGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQgfHwKKyAgICAgICAgZm9ybWF0ID09IGV4dC5DT01QUkVTU0VEX1JFRF9S
R1RDMV9FWFQgfHwgZm9ybWF0ID09IGV4dC5DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhU
IHx8CisgICAgICAgIGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
IHx8IGZvcm1hdCA9PSBleHQuQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCkg
eworICAgICAgICBmb3IgKHZhciBpID0gMzsgaSA8IGRlc3QubGVuZ3RoOyBpICs9IDQpIGRlc3Rb
aV0gPSAyNTU7CisgICAgfQorICAgIHZhciBibG9ja3NBY3Jvc3MgPSBzdWJXaWR0aCAvIDQ7Cisg
ICAgdmFyIGJsb2Nrc0Rvd24gPSBzdWJIZWlnaHQgLyA0OworICAgIHZhciBibG9ja1NpemUgPSBn
ZXRCbG9ja1NpemUoZm9ybWF0KTsKKyAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgYmxvY2tzRG93
bjsgKyt5eSkgeworICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgYmxvY2tzQWNyb3NzOyAr
K3h4KSB7CisgICAgICAgICAgICB1bmNvbXByZXNzRFhUQmxvY2soCisgICAgICAgICAgICAgICAg
ZGVzdCwgc3ViWDAgKyB4eCAqIDQsIHN1YlkwICsgeXkgKiA0LCB3aWR0aCwgZGF0YSwKKyAgICAg
ICAgICAgICAgICAoeXkgKiBibG9ja3NBY3Jvc3MgKyB4eCkgKiBibG9ja1NpemUsIGZvcm1hdCk7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGRlc3Q7Cit9CisKK2Z1bmN0aW9uIGNvcHlS
ZWN0KGRhdGEsIHNyY1gsIHNyY1ksIGRzdFgsIGRzdFksIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSkg
eworICB2YXIgYnl0ZXNQZXJMaW5lID0gd2lkdGggKiA0OworICB2YXIgc3JjT2Zmc2V0ID0gc3Jj
WCAqIDQgKyBzcmNZICogc3RyaWRlOworICB2YXIgZHN0T2Zmc2V0ID0gZHN0WCAqIDQgKyBkc3RZ
ICogc3RyaWRlOworICBmb3IgKDsgaGVpZ2h0ID4gMDsgLS1oZWlnaHQpIHsKKyAgICBmb3IgKHZh
ciBpaSA9IDA7IGlpIDwgYnl0ZXNQZXJMaW5lOyArK2lpKSB7CisgICAgICBkYXRhW2RzdE9mZnNl
dCArIGlpXSA9IGRhdGFbc3JjT2Zmc2V0ICsgaWldOworICAgIH0KKyAgICBzcmNPZmZzZXQgKz0g
c3RyaWRlOworICAgIGRzdE9mZnNldCArPSBzdHJpZGU7CisgIH0KK30KKworZnVuY3Rpb24gdGVz
dERYVFRleHR1cmUodGVzdCwgdXNlVGV4U3RvcmFnZSkgeworICAgIHZhciBkYXRhID0gbmV3IFVp
bnQ4QXJyYXkodGVzdC5kYXRhKTsKKyAgICB2YXIgd2lkdGggPSB0ZXN0LndpZHRoOworICAgIHZh
ciBoZWlnaHQgPSB0ZXN0LmhlaWdodDsKKyAgICB2YXIgZm9ybWF0ID0gdGVzdC5mb3JtYXQ7CisK
KyAgICB2YXIgdW5jb21wcmVzc2VkRGF0YSA9IHVuY29tcHJlc3NEWFQod2lkdGgsIGhlaWdodCwg
ZGF0YSwgZm9ybWF0KTsKKworICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoOworICAgIGNhbnZhcy5o
ZWlnaHQgPSBoZWlnaHQ7CisgICAgZ2wudmlld3BvcnQoMCwgMCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgZGVidWcoInRlc3RpbmcgIiArIGN0dS5mb3JtYXRUb1N0cmluZyhleHQsIGZvcm1hdCkgKyAi
ICIgKyB3aWR0aCArICJ4IiArIGhlaWdodCArCisgICAgICAgICAgKHVzZVRleFN0b3JhZ2UgPyAi
IHZpYSB0ZXhTdG9yYWdlMkQiIDogIiB2aWEgY29tcHJlc3NlZFRleEltYWdlMkQiKSk7CisKKyAg
ICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleCk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGds
Lk5FQVJFU1QpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICBpZiAodXNlVGV4U3RvcmFnZSkgeworICAg
ICAgICBpZiAodGVzdC5zdWJEYXRhKSB7CisgICAgICAgICAgICB2YXIgdW5jb21wcmVzc2VkRGF0
YVN1YiA9IHVuY29tcHJlc3NEWFRJbnRvU3ViUmVnaW9uKAorICAgICAgICAgICAgICAgIHdpZHRo
LCBoZWlnaHQsIHRlc3Quc3ViWDAsIHRlc3Quc3ViWTAsIHRlc3Quc3ViV2lkdGgsIHRlc3Quc3Vi
SGVpZ2h0LCB0ZXN0LnN1YkRhdGEsIGZvcm1hdCk7CisgICAgICAgICAgICB2YXIgdGV4MSA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleDEpOworICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19F
REdFKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRl
cmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKwor
ICAgICAgICAgICAgZ2wudGV4U3RvcmFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgImFsbG9jYXRpbmcgY29tcHJlc3NlZCB0ZXh0dXJlIHZpYSB0ZXhTdG9yYWdlMkQiKTsK
KyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKAorICAgICAgICAgICAgICAg
IGdsLlRFWFRVUkVfMkQsIDAsIHRlc3Quc3ViWDAsIHRlc3Quc3ViWTAsIHRlc3Quc3ViV2lkdGgs
IHRlc3Quc3ViSGVpZ2h0LCBmb3JtYXQsIHRlc3Quc3ViRGF0YSk7CisgICAgICAgICAgICB3dHUu
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgInVwbG9hZGluZyBjb21wcmVzc2VkIHRl
eHR1cmUgZGF0YSB2aWEgY29tcHJlc3NlZFRleFN1YkltYWdlMkQiKTsKKworICAgICAgICAgICAg
d3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1bml0IHF1YWQgMSIpOworICAgICAgICAg
ICAgY29tcGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgdGVzdC5jaGFubmVscywgdW5jb21wcmVzc2Vk
RGF0YVN1YiwgIk5FQVJFU1QiKTsKKworICAgICAgICAgICAgLy8gQ2xlYW4gdXAgYW5kIHJlY292
ZXIKKyAgICAgICAgICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4MSk7CisgICAgICAgICAgICBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAgICAgICB9CisKKyAgICAgICAgZ2wu
dGV4U3RvcmFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiYWxsb2NhdGluZyBj
b21wcmVzc2VkIHRleHR1cmUgdmlhIHRleFN0b3JhZ2UyRCIpOworICAgICAgICB3dHUuY2xlYXJB
bmREcmF3VW5pdFF1YWQoZ2wpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5O
T19FUlJPUiwgImRyYXdpbmcgdW5pdCBxdWFkIik7CisgICAgICAgIHZhciBjbGVhckNvbG9yID0g
KHRlc3QuaGFzQWxwaGEgPyBbMCwgMCwgMCwgMF0gOiBbMCwgMCwgMCwgMjU1XSk7CisgICAgICAg
IHd0dS5jaGVja0NhbnZhcyhnbCwgY2xlYXJDb2xvciwgInRleHR1cmUgc2hvdWxkIGJlIGluaXRp
YWxpemVkIHRvIGJsYWNrIik7CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSk7CisgICAg
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5nIGNvbXBy
ZXNzZWQgdGV4dHVyZSBkYXRhIHZpYSBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5nIGNvbXByZXNzZWQgdGV4dHVyZSIpOwor
ICAgIH0KKyAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsKKyAgICB3dHUuZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElPTiwgInRyeWluZyB0byBnZW5lcmF0
ZSBtaXBtYXBzIGZyb20gY29tcHJlc3NlZCB0ZXh0dXJlIik7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJhZnRlciBjbGVhcmluZyBnZW5lcmF0ZU1pcG1hcCBlcnJv
ciIpOworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JT
aG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5nIHVuaXQgcXVhZCAxIik7CisgICAgY29t
cGFyZVJlY3Qod2lkdGgsIGhlaWdodCwgdGVzdC5jaGFubmVscywgdW5jb21wcmVzc2VkRGF0YSwg
Ik5FQVJFU1QiKTsKKyAgICAvLyBUZXN0IGFnYWluIHdpdGggbGluZWFyIGZpbHRlcmluZy4KKyAg
ICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwg
Z2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQo
Z2wpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1
bml0IHF1YWQgMiIpOworICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hhbm5l
bHMsIHVuY29tcHJlc3NlZERhdGEsICJMSU5FQVIiKTsKKworICAgIGlmICghdXNlVGV4U3RvcmFn
ZSkgeworICAgICAgICAvLyBJdCdzIG5vdCBhbGxvd2VkIHRvIHJlZGVmaW5lIHRleHR1cmVzIGRl
ZmluZWQgdmlhIHRleFN0b3JhZ2UyRC4KKyAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAxLCBkYXRhKTsKKyAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgIm5vbiAwIGJvcmRl
ciIpOworCisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGZvcm1hdCwgd2lkdGggKyA0LCBoZWlnaHQsIDAsIGRhdGEpOworICAgICAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNo
IGRpbWVuc2lvbnMiKTsKKyAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwgMCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0ICsgNCwgMCwgZGF0YSk7CisgICAgICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsICJkYXRhIHNpemUgZG9lcyBu
b3QgbWF0Y2ggZGltZW5zaW9ucyIpOworICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoIC0gNCwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAg
ICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgImRhdGEgc2l6
ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zIik7CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCAtIDQsIDAsIGRh
dGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVFLCAi
ZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKKworICAgICAgICBnbC5jb21w
cmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoIC0gMSwgaGVp
Z2h0LCAwLCBkYXRhKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKKyAgICAgICAgZ2wuY29tcHJlc3Nl
ZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCB3aWR0aCAtIDIsIGhlaWdodCwg
MCwgZGF0YSk7CisgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BF
UkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCAtIDEsIDAsIGRh
dGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElP
TiwgImludmFsaWQgZGltZW5zaW9ucyIpOworICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1hZ2Uy
RChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQgLSAyLCAwLCBkYXRhKTsK
KyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJp
bnZhbGlkIGRpbWVuc2lvbnMiKTsKKworICAgICAgICBpZiAod2lkdGggPT0gNCkgeworICAgICAg
ICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCAx
LCBoZWlnaHQsIDAsIGRhdGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJ2YWxpZCBkaW1lbnNpb25zIGZvciBsZXZlbCA+IDAiKTsKKyAgICAgICAg
ICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDEsIGZvcm1hdCwgMiwg
aGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SLCAidmFsaWQgZGltZW5zaW9ucyBmb3IgbGV2ZWwgPiAwIik7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGhlaWdodCA9PSA0KSB7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4
SW1hZ2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3JtYXQsIHdpZHRoLCAxLCAwLCBkYXRhKTsKKyAg
ICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidmFsaWQgZGlt
ZW5zaW9ucyBmb3IgbGV2ZWwgPiAwIik7CisgICAgICAgICAgICBnbC5jb21wcmVzc2VkVGV4SW1h
Z2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3JtYXQsIHdpZHRoLCAyLCAwLCBkYXRhKTsKKyAgICAg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidmFsaWQgZGltZW5z
aW9ucyBmb3IgbGV2ZWwgPiAwIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBwaWNrIGEg
d3JvbmcgZm9ybWF0IHRoYXQgdXNlcyB0aGUgc2FtZSBhbW91bnQgb2YgZGF0YS4KKyAgICB2YXIg
d3JvbmdGb3JtYXQ7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIGV4dC5DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgd3JvbmdGb3JtYXQgPSBleHQuQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIGV4dC5DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgIHdyb25nRm9ybWF0ID0gZXh0LkNPTVBSRVNT
RURfUkdCX1MzVENfRFhUMV9FWFQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIGV4dC5DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICAgIHdyb25nRm9ybWF0ID0gZXh0LkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfRVhUOworICAgICAgYnJlYWs7CisgICAgY2FzZSBleHQuQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgICB3cm9uZ0Zvcm1hdCA9IGV4dC5DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0VYVDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgZXh0X3JndGMu
Q09NUFJFU1NFRF9SRURfUkdUQzFfRVhUOgorICAgIGNhc2UgZXh0X3JndGMuQ09NUFJFU1NFRF9T
SUdORURfUkVEX1JHVEMxX0VYVDoKKyAgICAgIHdyb25nRm9ybWF0ID0gZXh0X3JndGMuQ09NUFJF
U1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUOworICAgICAgYnJlYWs7CisgICAgY2FzZSBleHRfcmd0
Yy5DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6CisgICAgY2FzZSBleHRfcmd0Yy5DT01Q
UkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOgorICAgICAgd3JvbmdGb3JtYXQgPSBl
eHRfcmd0Yy5DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ7CisgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3
aWR0aCwgaGVpZ2h0LCB3cm9uZ0Zvcm1hdCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJmb3JtYXQgZG9lcyBub3QgbWF0Y2giKTsKKwor
ICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDQsIDAsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuSU5WQUxJRF9WQUxVRSwgImRpbWVuc2lvbiBvdXQgb2YgcmFuZ2UiKTsKKyAgICBnbC5jb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCA0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
VkFMVUUsICJkaW1lbnNpb24gb3V0IG9mIHJhbmdlIik7CisKKyAgICBnbC5jb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCArIDQsIGhlaWdodCwgZm9y
bWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX1ZBTFVF
LCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5jb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0ICsg
NCwgZm9ybWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElE
X1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5j
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCAtIDQs
IGhlaWdodCwgZm9ybWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMiKTsKKyAg
ICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0
aCwgaGVpZ2h0IC0gNCwgZm9ybWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX1ZBTFVFLCAiZGF0YSBzaXplIGRvZXMgbm90IG1hdGNoIGRpbWVuc2lvbnMi
KTsKKworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAs
IDAsIHdpZHRoIC0gMSwgaGVpZ2h0LCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7Cisg
ICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lk
dGggLSAyLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKKyAgICBnbC5j
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVp
Z2h0IC0gMSwgZm9ybWF0LCBkYXRhKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5J
TlZBTElEX09QRVJBVElPTiwgImludmFsaWQgZGltZW5zaW9ucyIpOworICAgIGdsLmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQgLSAy
LCBmb3JtYXQsIGRhdGEpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURf
T1BFUkFUSU9OLCAiaW52YWxpZCBkaW1lbnNpb25zIik7CisKKyAgICB2YXIgc3ViRGF0YSA9IG5l
dyBVaW50OEFycmF5KGRhdGEuYnVmZmVyLCAwLCBnZXRCbG9ja1NpemUoZm9ybWF0KSk7CisKKyAg
ICBpZiAod2lkdGggPT0gOCAmJiBoZWlnaHQgPT0gOCkgeworICAgICAgICBnbC5jb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAxLCAwLCA0LCA0LCBmb3JtYXQsIHN1YkRh
dGEpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX09QRVJBVElP
TiwgImludmFsaWQgb2Zmc2V0Iik7CisgICAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KGdsLlRFWFRVUkVfMkQsIDAsIDAsIDEsIDQsIDQsIGZvcm1hdCwgc3ViRGF0YSk7CisgICAgICAg
IHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OLCAiaW52YWxpZCBv
ZmZzZXQiKTsKKyAgICB9CisKKyAgICB2YXIgc3RyaWRlID0gd2lkdGggKiA0OworICAgIGZvciAo
dmFyIHlvZmYgPSAwOyB5b2ZmIDwgaGVpZ2h0OyB5b2ZmICs9IDQpIHsKKyAgICAgICAgZm9yICh2
YXIgeG9mZiA9IDA7IHhvZmYgPCB3aWR0aDsgeG9mZiArPSA0KSB7CisgICAgICAgICAgICBjb3B5
UmVjdCh1bmNvbXByZXNzZWREYXRhLCAwLCAwLCB4b2ZmLCB5b2ZmLCA0LCA0LCBzdHJpZGUpOwor
ICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwg
eG9mZiwgeW9mZiwgNCwgNCwgZm9ybWF0LCBzdWJEYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5nIGNvbXByZXNzZWQgdGV4dHVy
ZSIpOworICAgICAgICAgICAgLy8gRmlyc3QgdGVzdCBORUFSRVNUIGZpbHRlcmluZy4KKyAgICAg
ICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklM
VEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsKKyAgICAgICAgICAgIHd0
dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgICAgICAgICBjb21wYXJlUmVjdCh3aWR0
aCwgaGVpZ2h0LCB0ZXN0LmNoYW5uZWxzLCB1bmNvbXByZXNzZWREYXRhLCAiTkVBUkVTVCIpOwor
ICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5n
IHVuaXQgcXVhZCIpOworICAgICAgICAgICAgLy8gTmV4dCB0ZXN0IExJTkVBUiBmaWx0ZXJpbmcu
CisgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
TUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgICAgICAg
ICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiZHJhd2luZyB1bml0IHF1YWQiKTsKKyAgICAgICAg
ICAgIGNvbXBhcmVSZWN0KHdpZHRoLCBoZWlnaHQsIHRlc3QuY2hhbm5lbHMsIHVuY29tcHJlc3Nl
ZERhdGEsICJMSU5FQVIiKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdERY
VDVfUkdCQV9QQk8oKSB7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0aW5nIFBCTyB1
cGxvYWRzIik7CisgICAgdmFyIHdpZHRoID0gODsKKyAgICB2YXIgaGVpZ2h0ID0gODsKKyAgICB2
YXIgY2hhbm5lbHMgPSA0OworICAgIHZhciBkYXRhID0gaW1nXzh4OF9yZ2JhX2R4dDU7CisgICAg
dmFyIGZvcm1hdCA9IGV4dC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDsKKyAgICB2YXIg
dW5jb21wcmVzc2VkRGF0YSA9IHVuY29tcHJlc3NEWFQod2lkdGgsIGhlaWdodCwgZGF0YSwgZm9y
bWF0KTsKKworICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisKKyAgICAvLyBGaXJz
dCwgUEJPIHNpemUgPSBpbWFnZSBzaXplCisgICAgdmFyIHBibzEgPSBnbC5jcmVhdGVCdWZmZXIo
KTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIHBibzEpOworICAg
IGdsLmJ1ZmZlckRhdGEoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgZGF0YSwgZ2wuU1RBVElDX0RS
QVcpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5n
IGEgUEJPIik7CisKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOworICAg
IGdsLnRleFN0b3JhZ2UyRChnbC5URVhUVVJFXzJELCAxLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OworICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS5sZW5ndGgsIDApOworICAgIHd0dS5nbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAidXBsb2FkaW5nIGEgdGV4dHVyZSBmcm9tIGEgUEJP
Iik7CisKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIG51bGwpOwor
ICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5nIHVuaXQgcXVhZCIpOworICAgIGNvbXBhcmVSZWN0
KHdpZHRoLCBoZWlnaHQsIGNoYW5uZWxzLCB1bmNvbXByZXNzZWREYXRhLCAiTkVBUkVTVCIpOwor
CisgICAgLy8gQ2xlYXIgdGhlIHRleHR1cmUgYmVmb3JlIHRoZSBuZXh0IHRlc3QKKyAgICBnbC5i
aW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIG51bGwpOworICAgIGdsLmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgbmV3IFVpbnQ4QXJyYXkoZGF0YS5sZW5ndGgpKTsKKworICAgIC8vIFNlY29uZCwgaW1h
Z2UgaXMganVzdCBhIHN1YnJhbmdlIG9mIHRoZSBQQk8KKyAgICB2YXIgcGJvMiA9IGdsLmNyZWF0
ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuUElYRUxfVU5QQUNLX0JVRkZFUiwgcGJv
Mik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5QSVhFTF9VTlBBQ0tfQlVGRkVSLCBkYXRhLmxlbmd0
aCozLCBnbC5TVEFUSUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5QSVhFTF9VTlBB
Q0tfQlVGRkVSLCBkYXRhLmxlbmd0aCwgZGF0YSk7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IsICJ1cGxvYWRpbmcgYSBQQk8gc3VicmFuZ2UiKTsKKyAgICBnbC5jb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIGRhdGEubGVuZ3RoLCBkYXRhLmxlbmd0aCk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ1cGxvYWRpbmcgYSB0ZXh0dXJlIGZyb20gYSBQQk8gc3Vi
cmFuZ2UiKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLlBJWEVMX1VOUEFDS19CVUZGRVIsIG51bGwp
OworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChnbCk7CisgICAgd3R1LmdsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IsICJkcmF3aW5nIHVuaXQgcXVhZCIpOworICAgIGNvbXBhcmVS
ZWN0KHdpZHRoLCBoZWlnaHQsIGNoYW5uZWxzLCB1bmNvbXByZXNzZWREYXRhLCAiTkVBUkVTVCIp
OworfQorCitmdW5jdGlvbiBjb21wYXJlUmVjdCh3aWR0aCwgaGVpZ2h0LCBjaGFubmVscywgZXhw
ZWN0ZWREYXRhLCBmaWx0ZXJpbmdNb2RlKSB7CisgICAgdmFyIGFjdHVhbCA9IG5ldyBVaW50OEFy
cmF5KHdpZHRoICogaGVpZ2h0ICogNCk7CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwg
aGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBhY3R1YWwpOworICAgIHd0dS5nbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAicmVhZGluZyBiYWNrIHBpeGVscyIpOworCisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5jbGFz
c05hbWUgPSAidGVzdGltYWdlcyI7CisgICAgY3R1Lmluc2VydENhcHRpb25lZEltZyhkaXYsICJl
eHBlY3RlZCIsIGN0dS5tYWtlU2NhbGVkSW1hZ2Uod2lkdGgsIGhlaWdodCwgd2lkdGgsIGV4cGVj
dGVkRGF0YSwgdHJ1ZSkpOworICAgIGN0dS5pbnNlcnRDYXB0aW9uZWRJbWcoZGl2LCAiYWN0dWFs
IiwgY3R1Lm1ha2VTY2FsZWRJbWFnZSh3aWR0aCwgaGVpZ2h0LCB3aWR0aCwgYWN0dWFsLCB0cnVl
KSk7CisgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZGl2KTsK
KworICAgIHZhciBmYWlsZWQgPSBmYWxzZTsKKyAgICBmb3IgKHZhciB5eSA9IDA7IHl5IDwgaGVp
Z2h0OyArK3l5KSB7CisgICAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCB3aWR0aDsgKyt4eCkg
eworICAgICAgICAgICAgdmFyIG9mZnNldCA9ICh5eSAqIHdpZHRoICsgeHgpICogNDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZCA9IGV4cGVjdGVkRGF0YS5zbGljZShvZmZzZXQsIG9mZnNldCAr
IDQpOworICAgICAgICAgICAgLy8gQ29tcGFyZSBSR0IgdmFsdWVzCisgICAgICAgICAgICBmb3Ig
KHZhciBqaiA9IDA7IGpqIDwgMzsgKytqaikgeworICAgICAgICAgICAgICAgIC8vIEFjY2VwdGFi
bGUgaW50ZXJwb2xhdGlvbiBlcnJvciBkZXBlbmRzIG9uIGVuZHBvaW50czoKKyAgICAgICAgICAg
ICAgICAvLyAxLjAgLyAyNTUuMCArIDAuMDMgKiBtYXgoYWJzKGVuZHBvaW50MCAtIGVuZHBvaW50
MSksIGFicyhlbmRwb2ludDBfcCAtIGVuZHBvaW50MV9wKSkKKyAgICAgICAgICAgICAgICAvLyBG
b3Igc2ltcGxpY2l0eSwgYXNzdW1lIHRoZSB3b3JzdCBjYXNlIChlMCBpcyAwLjAsIGUxIGlzIDEu
MCkuIEFmdGVyIGNvbnZlcnNpb24gdG8gdW5vcm04LCBpdCBpcyA5LgorICAgICAgICAgICAgICAg
IGlmIChNYXRoLmFicyhhY3R1YWxbb2Zmc2V0ICsgampdIC0gZXhwZWN0ZWRbampdKSA+IDkpIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHdhcyA9IGFjdHVhbFtvZmZzZXQgKyAwXS50b1N0cmlu
ZygpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IDM7ICsraikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgd2FzICs9ICIsIiArIGFjdHVhbFtvZmZzZXQgKyBqXTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdSR0IgYXQgKCcgKyB4eCArICcsICcg
KyB5eSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJykgZXhwZWN0
ZWQ6ICcgKyBleHBlY3RlZCArICcgwrEgOSB3YXMgJyArIHdhcyk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2hhbm5lbHMgPT0gMykgeworICAg
ICAgICAgICAgICAgIC8vIEJDMSBSR0IgaXMgYWxsb3dlZCB0byBiZSBtYXBwZWQgdG8gQkMxIFJH
QkEuCisgICAgICAgICAgICAgICAgLy8gSW4gc3VjaCBhIGNhc2UsIDMtY29sb3IgbW9kZSBibGFj
ayB2YWx1ZSBjYW4gYmUgdHJhbnNwYXJlbnQ6CisgICAgICAgICAgICAgICAgLy8gWzAsIDAsIDAs
IDBdIGluc3RlYWQgb2YgWzAsIDAsIDAsIDI1NV0uCisKKyAgICAgICAgICAgICAgICBpZiAoYWN0
dWFsW29mZnNldCArIDNdICE9IGV4cGVjdGVkWzNdKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IEdvdCBub24tb3BhcXVlIHZhbHVlIGZvciBvcGFxdWUgZm9ybWF0CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gQ2hlY2sgUkdCIHZhbHVlcy4gTm90aWNlLCB0aGF0IHRoZSBjb25kaXRpb24gaGVy
ZQorICAgICAgICAgICAgICAgICAgICAvLyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiBuZWVkZWQg
c2luY2Ugd2UgZG9uJ3QgaGF2ZQorICAgICAgICAgICAgICAgICAgICAvLyBjb21wcmVzc2VkIGRh
dGEgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGFjdHVhbFtvZmZzZXRd
ID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFtvZmZzZXQgKyAxXSA9PSAw
ICYmCisgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxbb2Zmc2V0ICsgMl0gPT0gMCAmJgor
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsW29mZnNldCArIDNdID09IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiPGI+RFhUMSBSR0IgaXMgbWFwcGVkIHRvIERY
VDEgUkdCQTwvYj4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCdBbHBoYSBhdCAoJyArIHh4ICsgJywgJyArIHl5ICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKSBleHBlY3RlZDogJyArIGV4cGVjdGVkWzNd
ICsgJyB3YXMgJyArIGFjdHVhbFtvZmZzZXQgKyAzXSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IC8vIENvbXBhcmUgQWxwaGEgdmFsdWVzCisgICAgICAgICAgICAgICAgLy8gQWNjZXB0YWJsZSBp
bnRlcnBvbGF0aW9uIGVycm9yIGRlcGVuZHMgb24gZW5kcG9pbnRzOgorICAgICAgICAgICAgICAg
IC8vIDEuMCAvIDY1NTM1LjAgKyAwLjAzICogbWF4KGFicyhlbmRwb2ludDAgLSBlbmRwb2ludDEp
LCBhYnMoZW5kcG9pbnQwX3AgLSBlbmRwb2ludDFfcCkpCisgICAgICAgICAgICAgICAgLy8gRm9y
IHNpbXBsaWNpdHksIGFzc3VtZSB0aGUgd29yc3QgY2FzZSAoZTAgaXMgMC4wLCBlMSBpcyAxLjAp
LiBBZnRlciBjb252ZXJzaW9uIHRvIHVub3JtOCwgaXQgaXMgOC4KKyAgICAgICAgICAgICAgICBp
ZiAoTWF0aC5hYnMoYWN0dWFsW29mZnNldCArIDNdIC0gZXhwZWN0ZWRbM10pID4gOCkgeworICAg
ICAgICAgICAgICAgICAgICB2YXIgd2FzID0gYWN0dWFsW29mZnNldCArIDNdLnRvU3RyaW5nKCk7
CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoJ0FscGhhIGF0ICgnICsgeHggKyAnLCAnICsgeXkgKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJykgZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZCAr
ICcgwrEgOCB3YXMgJyArIHdhcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIGlmICghZmFpbGVkKSB7CisgICAgICAgIHRlc3RQYXNzZWQo
InRleHR1cmUgcmVuZGVyZWQgY29ycmVjdGx5IHdpdGggIiArIGZpbHRlcmluZ01vZGUgKyAiIGZp
bHRlcmluZyIpOworICAgIH0KK30KKworZGVidWcoIiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy90ZXN0cy9jb21wcmVzc2VkLXRl
eHR1cmUtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9qcy90ZXN0cy9jb21wcmVzc2VkLXRleHR1cmUtdXRpbHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZm
MDJjNGQ0M2IzOWYwYWE0ODUzZTc0ODlmNDA1OGZjMmQ2YmNmNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2pzL3Rlc3RzL2Nv
bXByZXNzZWQtdGV4dHVyZS11dGlscy5qcwpAQCAtMCwwICsxLDIyOSBAQAorLyoKK0NvcHlyaWdo
dCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorZm91bmQg
aW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCisqLworCisidXNlIHN0cmljdCI7CisKK2xldCBDb21w
cmVzc2VkVGV4dHVyZVV0aWxzID0gKGZ1bmN0aW9uKCkgeworCitsZXQgZm9ybWF0VG9TdHJpbmcg
PSBmdW5jdGlvbihleHQsIGZvcm1hdCkgeworICAgIGZvciAobGV0IHAgaW4gZXh0KSB7CisgICAg
ICAgIGlmIChleHRbcF0gPT0gZm9ybWF0KSB7CisgICAgICAgICAgICByZXR1cm4gcDsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gIjB4IiArIGZvcm1hdC50b1N0cmluZygxNik7Cit9Owor
CisvKioKKyAqIE1ha2UgYW4gaW1hZ2UgZWxlbWVudCBmcm9tIFVpbnQ4QXJyYXkgYml0bWFwIGRh
dGEuCisgKiBAcGFyYW0ge251bWJlcn0gaW1hZ2VIZWlnaHQgSGVpZ2h0IG9mIHRoZSBkYXRhIGlu
IHBpeGVscy4KKyAqIEBwYXJhbSB7bnVtYmVyfSBpbWFnZVdpZHRoIFdpZHRoIG9mIHRoZSBkYXRh
IGluIHBpeGVscy4KKyAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhV2lkdGggV2lkdGggb2YgZWFjaCBy
b3cgaW4gdGhlIGRhdGEgYnVmZmVyLCBpbiBwaXhlbHMuCisgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9
IGRhdGEgSW1hZ2UgZGF0YSBidWZmZXIgdG8gZGlzcGxheS4gRWFjaCBwaXhlbCB0YWtlcyB1cCA0
IGJ5dGVzIGluIHRoZSBhcnJheSByZWdhcmRsZXNzIG9mIHRoZSBhbHBoYSBwYXJhbWV0ZXIuCisg
KiBAcGFyYW0ge2Jvb2xlYW59IGFscGhhIFRydWUgaWYgYWxwaGEgZGF0YSBzaG91bGQgYmUgdGFr
ZW4gZnJvbSBkYXRhLiBPdGhlcndpc2UgYWxwaGEgY2hhbm5lbCBpcyBzZXQgdG8gMjU1LgorICog
QHJldHVybiB7SFRNTEltYWdlRWxlbWVudH0gVGhlIGltYWdlIGVsZW1lbnQuCisgKi8KK2xldCBt
YWtlU2NhbGVkSW1hZ2UgPSBmdW5jdGlvbihpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgZGF0YVdp
ZHRoLCBkYXRhLCBhbHBoYSwgb3B0X3NjYWxlKSB7CisgICAgbGV0IHNjYWxlID0gb3B0X3NjYWxl
ID8gb3B0X3NjYWxlIDogODsKKyAgICBsZXQgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNh
bnZhcyIpOworICAgIGMud2lkdGggPSBpbWFnZVdpZHRoICogc2NhbGU7CisgICAgYy5oZWlnaHQg
PSBpbWFnZUhlaWdodCAqIHNjYWxlOworICAgIGxldCBjdHggPSBjLmdldENvbnRleHQoIjJkIik7
CisgICAgZm9yIChsZXQgeXkgPSAwOyB5eSA8IGltYWdlSGVpZ2h0OyArK3l5KSB7CisgICAgICAg
IGZvciAobGV0IHh4ID0gMDsgeHggPCBpbWFnZVdpZHRoOyArK3h4KSB7CisgICAgICAgICAgICBs
ZXQgb2Zmc2V0ID0gKHl5ICogZGF0YVdpZHRoICsgeHgpICogNDsKKyAgICAgICAgICAgIGN0eC5m
aWxsU3R5bGUgPSAicmdiYSgiICsKKyAgICAgICAgICAgICAgICAgICAgZGF0YVtvZmZzZXQgKyAw
XSArICIsIiArCisgICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0ICsgMV0gKyAiLCIgKwor
ICAgICAgICAgICAgICAgICAgICBkYXRhW29mZnNldCArIDJdICsgIiwiICsKKyAgICAgICAgICAg
ICAgICAgICAgKGFscGhhID8gZGF0YVtvZmZzZXQgKyAzXSAvIDI1NSA6IDEpICsgIikiOworICAg
ICAgICAgICAgY3R4LmZpbGxSZWN0KHh4ICogc2NhbGUsIHl5ICogc2NhbGUsIHNjYWxlLCBzY2Fs
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHd0dS5tYWtlSW1hZ2VGcm9tQ2FudmFz
KGMpOworfTsKKworbGV0IGluc2VydENhcHRpb25lZEltZyA9IGZ1bmN0aW9uKHBhcmVudCwgY2Fw
dGlvbiwgaW1nKSB7CisgICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgIGRpdi5hcHBlbmRDaGlsZChpbWcpOworICAgIGxldCBsYWJlbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKGNhcHRpb24pKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQobGFiZWwpOworICAgIHBh
cmVudC5hcHBlbmRDaGlsZChkaXYpOworfTsKKworLyoqCisgKiBAcGFyYW0ge1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2V9IGdsCisgKiBAcGFyYW0ge09iamVjdH0gY29tcHJlc3NlZEZvcm1hdHMg
TWFwcGluZyBmcm9tIGZvcm1hdCBuYW1lcyB0byBmb3JtYXQgZW51bSB2YWx1ZXMuCisgKiBAcGFy
YW0gZXhwZWN0ZWRCeXRlTGVuZ3RoIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBpbiB3aWR0aCwgaGVp
Z2h0IGFuZCBmb3JtYXQgYW5kIHJldHVybnMgdGhlIGV4cGVjdGVkIGJ1ZmZlciBzaXplIGluIGJ5
dGVzLgorICovCitsZXQgdGVzdENvbXByZXNzZWRGb3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0ZW5z
aW9uRGlzYWJsZWQgPSBmdW5jdGlvbihnbCwgY29tcHJlc3NlZEZvcm1hdHMsIGV4cGVjdGVkQnl0
ZUxlbmd0aCwgdGVzdFNpemUpIHsKKyAgICBsZXQgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwor
ICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleCk7CisgICAgZm9yIChsZXQgbmFt
ZSBpbiBjb21wcmVzc2VkRm9ybWF0cykgeworICAgICAgICBpZiAoY29tcHJlc3NlZEZvcm1hdHMu
aGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGNvbXByZXNzZWRGb3JtYXRzW25hbWVdLCB0ZXN0U2l6ZSwg
dGVzdFNpemUsIDAsIG5ldyBVaW50OEFycmF5KGV4cGVjdGVkQnl0ZUxlbmd0aCh0ZXN0U2l6ZSwg
dGVzdFNpemUsIGNvbXByZXNzZWRGb3JtYXRzW25hbWVdKSkpOworICAgICAgICAgICAgd3R1Lmds
RXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9FTlVNLCAiVHJ5aW5nIHRvIHVzZSBmb3JtYXQg
IiArIG5hbWUgKyAiIHdpdGggZXh0ZW5zaW9uIGRpc2FibGVkLiIpOworICAgICAgICB9CisgICAg
fQorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAgIGdsLmRlbGV0
ZVRleHR1cmUodGV4KTsKK307CisKKy8qKgorICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlfSBnbAorICogQHBhcmFtIHtPYmplY3R9IGV4cGVjdGVkRm9ybWF0cyBNYXBwaW5nIGZy
b20gZm9ybWF0IG5hbWVzIHRvIGZvcm1hdCBlbnVtIHZhbHVlcy4KKyAqLworbGV0IHRlc3RDb21w
cmVzc2VkRm9ybWF0c0xpc3RlZCA9IGZ1bmN0aW9uKGdsLCBleHBlY3RlZEZvcm1hdHMpIHsKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgdGhhdCBldmVyeSBmb3JtYXQgaXMgbGlz
dGVkIGJ5IHRoZSBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0cyBxdWVyeSIpOworCisgICAgbGV0
IHN1cHBvcnRlZEZvcm1hdHMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQ09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFMpOworCisgICAgbGV0IGZhaWxlZDsKKyAgICBsZXQgY291bnQgPSAwOworICAgIGZv
ciAobGV0IG5hbWUgaW4gZXhwZWN0ZWRGb3JtYXRzKSB7CisgICAgICAgIGlmIChleHBlY3RlZEZv
cm1hdHMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKKyAgICAgICAgICAgICsrY291bnQ7CisgICAg
ICAgICAgICBsZXQgZm9ybWF0ID0gZXhwZWN0ZWRGb3JtYXRzW25hbWVdOworICAgICAgICAgICAg
ZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCBzdXBwb3J0
ZWRGb3JtYXRzLmxlbmd0aDsgKytpaSkgeworICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgPT0g
c3VwcG9ydGVkRm9ybWF0c1tpaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
c3VwcG9ydGVkIGZvcm1hdCAiICsgbmFtZSArICIgZXhpc3RzIik7CisgICAgICAgICAgICAgICAg
ICAgIGZhaWxlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmFpbGVkKSB7CisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgic3VwcG9ydGVkIGZvcm1hdCAiICsgbmFtZSArICIgZG9l
cyBub3QgZXhpc3QiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAo
c3VwcG9ydGVkRm9ybWF0cy5sZW5ndGggIT0gY291bnQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgi
SW5jb3JyZWN0IG51bWJlciBvZiBzdXBwb3J0ZWQgZm9ybWF0cywgd2FzICIgKyBzdXBwb3J0ZWRG
b3JtYXRzLmxlbmd0aCArICIgc2hvdWxkIGJlICIgKyBjb3VudCk7CisgICAgfQorfTsKKworLyoq
CisgKiBAcGFyYW0ge09iamVjdH0gZXh0IENvbXByZXNzZWQgdGV4dHVyZSBleHRlbnNpb24gb2Jq
ZWN0LgorICogQHBhcmFtIHtPYmplY3R9IGV4cGVjdGVkRm9ybWF0cyBNYXBwaW5nIGZyb20gZm9y
bWF0IG5hbWVzIHRvIGZvcm1hdCBlbnVtIHZhbHVlcy4KKyAqLworbGV0IHRlc3RDb3JyZWN0RW51
bVZhbHVlc0luRXh0ID0gZnVuY3Rpb24oZXh0LCBleHBlY3RlZEZvcm1hdHMpIHsKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgdGhhdCBmb3JtYXQgZW51bSB2YWx1ZXMgaW4gdGhl
IGV4dGVuc2lvbiBvYmplY3QgYXJlIGNvcnJlY3QiKTsKKworICAgIGZvciAobmFtZSBpbiBleHBl
Y3RlZEZvcm1hdHMpIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkRm9ybWF0cy5oYXNPd25Qcm9wZXJ0
eShuYW1lKSkgeworICAgICAgICAgICAgaWYgKGlzUmVzdWx0Q29ycmVjdChleHRbbmFtZV0sIGV4
cGVjdGVkRm9ybWF0c1tuYW1lXSkpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJFbnVt
IHZhbHVlIGZvciAiICsgbmFtZSArICIgbWF0Y2hlcyAweCIgKyBleHRbbmFtZV0udG9TdHJpbmco
MTYpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
RW51bSB2YWx1ZSBmb3IgIiArIG5hbWUgKyAiIG1pc21hdGNoOiAweCIgKyBleHRbbmFtZV0udG9T
dHJpbmcoMTYpICsgIiBzaG91bGQgYmUgMHgiICsgZXhwZWN0ZWRGb3JtYXRzW25hbWVdLnRvU3Ry
aW5nKDE2KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9OworCisvKioKKyAq
IEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZX0gZ2wKKyAqIEBwYXJhbSB7T2JqZWN0
fSB2YWxpZEZvcm1hdHMgTWFwcGluZyBmcm9tIGZvcm1hdCBuYW1lcyB0byBmb3JtYXQgZW51bSB2
YWx1ZXMuCisgKiBAcGFyYW0gZXhwZWN0ZWRCeXRlTGVuZ3RoIEEgZnVuY3Rpb24gdGhhdCB0YWtl
cyBpbiB3aWR0aCwgaGVpZ2h0IGFuZCBmb3JtYXQgYW5kIHJldHVybnMgdGhlIGV4cGVjdGVkIGJ1
ZmZlciBzaXplIGluIGJ5dGVzLgorICogQHBhcmFtIGdldEJsb2NrRGltZW5zaW9ucyBBIGZ1bmN0
aW9uIHRoYXQgdGFrZXMgaW4gYSBmb3JtYXQgYW5kIHJldHVybnMgYmxvY2sgc2l6ZSBpbiBwaXhl
bHMuCisgKi8KK2xldCB0ZXN0Rm9ybWF0UmVzdHJpY3Rpb25zT25CdWZmZXJTaXplID0gZnVuY3Rp
b24oZ2wsIHZhbGlkRm9ybWF0cywgZXhwZWN0ZWRCeXRlTGVuZ3RoLCBnZXRCbG9ja0RpbWVuc2lv
bnMpIHsKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlRlc3RpbmcgZm9ybWF0IHJlc3RyaWN0
aW9ucyBvbiB0ZXh0dXJlIHVwbG9hZCBidWZmZXIgc2l6ZSIpOworCisgICAgbGV0IHRleCA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgp
OworICAgIGZvciAobGV0IGZvcm1hdElkIGluIHZhbGlkRm9ybWF0cykgeworICAgICAgICBpZiAo
dmFsaWRGb3JtYXRzLmhhc093blByb3BlcnR5KGZvcm1hdElkKSkgeworICAgICAgICAgICAgbGV0
IGZvcm1hdCA9IHZhbGlkRm9ybWF0c1tmb3JtYXRJZF07CisgICAgICAgICAgICBsZXQgYmxvY2tT
aXplID0gZ2V0QmxvY2tEaW1lbnNpb25zKGZvcm1hdCk7CisgICAgICAgICAgICBsZXQgZXhwZWN0
ZWRTaXplID0gZXhwZWN0ZWRCeXRlTGVuZ3RoKGJsb2NrU2l6ZS53aWR0aCAqIDQsIGJsb2NrU2l6
ZS5oZWlnaHQgKiA0LCBmb3JtYXQpOworICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgVWludDhB
cnJheShleHBlY3RlZFNpemUpOworICAgICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBibG9ja1NpemUud2lkdGggKiAzLCBibG9ja1NpemUu
aGVpZ2h0ICogNCwgMCwgZGF0YSk7CisgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5JTlZBTElEX1ZBTFVFLCBmb3JtYXRJZCArICIgZGF0YSBzaXplIGRvZXMgbm90IG1hdGNo
IGRpbWVuc2lvbnMgKHRvbyBzbWFsbCB3aWR0aCkiKTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNz
ZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgYmxvY2tTaXplLndpZHRoICog
NSwgYmxvY2tTaXplLmhlaWdodCAqIDQsIDAsIGRhdGEpOworICAgICAgICAgICAgd3R1LmdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxVRSwgZm9ybWF0SWQgKyAiIGRhdGEgc2l6ZSBk
b2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zICh0b28gbGFyZ2Ugd2lkdGgpIik7CisgICAgICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBmb3JtYXQsIGJsb2Nr
U2l6ZS53aWR0aCAqIDQsIGJsb2NrU2l6ZS5oZWlnaHQgKiAzLCAwLCBkYXRhKTsKKyAgICAgICAg
ICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfVkFMVUUsIGZvcm1hdElkICsg
IiBkYXRhIHNpemUgZG9lcyBub3QgbWF0Y2ggZGltZW5zaW9ucyAodG9vIHNtYWxsIGhlaWdodCki
KTsKKyAgICAgICAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAs
IGZvcm1hdCwgYmxvY2tTaXplLndpZHRoICogNCwgYmxvY2tTaXplLmhlaWdodCAqIDUsIDAsIGRh
dGEpOworICAgICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5WQUxJRF9WQUxV
RSwgZm9ybWF0SWQgKyAiIGRhdGEgc2l6ZSBkb2VzIG5vdCBtYXRjaCBkaW1lbnNpb25zICh0b28g
bGFyZ2UgaGVpZ2h0KSIpOworICAgICAgICB9CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0g
e1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2V9IGdsCisgKiBAcGFyYW0ge09iamVjdH0gdmFsaWRG
b3JtYXRzIE1hcHBpbmcgZnJvbSBmb3JtYXQgbmFtZXMgdG8gZm9ybWF0IGVudW0gdmFsdWVzLgor
ICogQHBhcmFtIGV4cGVjdGVkQnl0ZUxlbmd0aCBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaW4gd2lk
dGgsIGhlaWdodCBhbmQgZm9ybWF0IGFuZCByZXR1cm5zIHRoZSBleHBlY3RlZCBidWZmZXIgc2l6
ZSBpbiBieXRlcy4KKyAqIEBwYXJhbSBnZXRCbG9ja0RpbWVuc2lvbnMgQSBmdW5jdGlvbiB0aGF0
IHRha2VzIGluIGEgZm9ybWF0IGFuZCByZXR1cm5zIGJsb2NrIHNpemUgaW4gcGl4ZWxzLgorICog
QHBhcmFtIHtudW1iZXJ9IHdpZHRoIFdpZHRoIG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuCisgKiBA
cGFyYW0ge251bWJlcn0gaGVpZ2h0IEhlaWdodCBvZiB0aGUgaW1hZ2UgaW4gcGl4ZWxzLgorICog
QHBhcmFtIHtPYmplY3R9IHN1YkltYWdlQ29uZmlncyBjb25maWdzIGZvciBjb21wcmVzc2VkVGV4
U3ViSW1hZ2UgY2FsbHMKKyAqLworbGV0IHRlc3RUZXhTdWJJbWFnZURpbWVuc2lvbnMgPSBmdW5j
dGlvbihnbCwgdmFsaWRGb3JtYXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5z
aW9ucywgd2lkdGgsIGhlaWdodCwgc3ViSW1hZ2VDb25maWdzKSB7CisgICAgbGV0IHRleCA9IGds
LmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgp
OworCisgICAgZm9yIChsZXQgZm9ybWF0SWQgaW4gdmFsaWRGb3JtYXRzKSB7CisgICAgICAgIGlm
ICh2YWxpZEZvcm1hdHMuaGFzT3duUHJvcGVydHkoZm9ybWF0SWQpKSB7CisgICAgICAgICAgICBs
ZXQgZm9ybWF0ID0gdmFsaWRGb3JtYXRzW2Zvcm1hdElkXTsKKyAgICAgICAgICAgIGxldCBibG9j
a1NpemUgPSBnZXRCbG9ja0RpbWVuc2lvbnMoZm9ybWF0KTsKKyAgICAgICAgICAgIGxldCBleHBl
Y3RlZFNpemUgPSBleHBlY3RlZEJ5dGVMZW5ndGgod2lkdGgsIGhlaWdodCwgZm9ybWF0KTsKKyAg
ICAgICAgICAgIGxldCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWRTaXplKTsKKworICAg
ICAgICAgICAgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgICAgIHd0dS5nbEVycm9yU2hvdWxk
QmUoZ2wsIGdsLk5PX0VSUk9SLCAic2V0dGluZyB1cCBjb21wcmVzc2VkIHRleHR1cmUiKTsKKwor
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHN1YkltYWdlQ29uZmlncy5sZW5ndGg7
IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAgICAgIGxldCBjID0gc3ViSW1hZ2VDb25maWdz
W2ldOworICAgICAgICAgICAgICAgIGxldCBzdWJEYXRhID0gbmV3IFVpbnQ4QXJyYXkoZXhwZWN0
ZWRCeXRlTGVuZ3RoKGMud2lkdGgsIGMuaGVpZ2h0LCBmb3JtYXQpKTsKKyAgICAgICAgICAgICAg
ICBnbC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBjLnhvZmZzZXQs
IGMueW9mZnNldCwgYy53aWR0aCwgYy5oZWlnaHQsIGZvcm1hdCwgc3ViRGF0YSk7CisgICAgICAg
ICAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgYy5leHBlY3RhdGlvbiwgYy5tZXNzYWdl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIG51bGwpOworICAgIGdsLmRlbGV0ZVRleHR1cmUodGV4KTsKK307CisK
K2xldCB0ZXN0VGV4SW1hZ2VMZXZlbERpbWVuc2lvbnMgPSBmdW5jdGlvbihnbCwgdmFsaWRGb3Jt
YXRzLCBleHBlY3RlZEJ5dGVMZW5ndGgsIGdldEJsb2NrRGltZW5zaW9ucywgaW1hZ2VDb25maWdz
KSB7CisgICAgbGV0IHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXgpOworCisgICAgZm9yIChsZXQgZm9ybWF0SWQgaW4gdmFsaWRG
b3JtYXRzKSB7CisgICAgICAgIGlmICh2YWxpZEZvcm1hdHMuaGFzT3duUHJvcGVydHkoZm9ybWF0
SWQpKSB7CisgICAgICAgICAgICBsZXQgZm9ybWF0ID0gdmFsaWRGb3JtYXRzW2Zvcm1hdElkXTsK
KyAgICAgICAgICAgIGxldCBibG9ja1NpemUgPSBnZXRCbG9ja0RpbWVuc2lvbnMoZm9ybWF0KTsK
KworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGltYWdlQ29uZmlncy5sZW5ndGg7
IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAgICAgIGxldCBjID0gaW1hZ2VDb25maWdzW2ld
OworICAgICAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWRCeXRl
TGVuZ3RoKGMud2lkdGgsIGMuaGVpZ2h0LCBmb3JtYXQpKTsKKyAgICAgICAgICAgICAgICBnbC5j
b21wcmVzc2VkVGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCBjLmxldmVsLCBmb3JtYXQsIGMud2lk
dGgsIGMuaGVpZ2h0LCAwLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB3dHUuZ2xFcnJvclNob3Vs
ZEJlKGdsLCBjLmV4cGVjdGF0aW9uLCBjLm1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7Cisg
ICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXgpOworfQorCityZXR1cm4geworICAgIGZvcm1hdFRvU3Ry
aW5nOiBmb3JtYXRUb1N0cmluZywKKyAgICBpbnNlcnRDYXB0aW9uZWRJbWc6IGluc2VydENhcHRp
b25lZEltZywKKyAgICBtYWtlU2NhbGVkSW1hZ2U6IG1ha2VTY2FsZWRJbWFnZSwKKyAgICB0ZXN0
Q29tcHJlc3NlZEZvcm1hdHNMaXN0ZWQ6IHRlc3RDb21wcmVzc2VkRm9ybWF0c0xpc3RlZCwKKyAg
ICB0ZXN0Q29tcHJlc3NlZEZvcm1hdHNVbmF2YWlsYWJsZVdoZW5FeHRlbnNpb25EaXNhYmxlZDog
dGVzdENvbXByZXNzZWRGb3JtYXRzVW5hdmFpbGFibGVXaGVuRXh0ZW5zaW9uRGlzYWJsZWQsCisg
ICAgdGVzdENvcnJlY3RFbnVtVmFsdWVzSW5FeHQ6IHRlc3RDb3JyZWN0RW51bVZhbHVlc0luRXh0
LAorICAgIHRlc3RGb3JtYXRSZXN0cmljdGlvbnNPbkJ1ZmZlclNpemU6IHRlc3RGb3JtYXRSZXN0
cmljdGlvbnNPbkJ1ZmZlclNpemUsCisgICAgdGVzdFRleFN1YkltYWdlRGltZW5zaW9uczogdGVz
dFRleFN1YkltYWdlRGltZW5zaW9ucywKKyAgICB0ZXN0VGV4SW1hZ2VMZXZlbERpbWVuc2lvbnM6
IHRlc3RUZXhJbWFnZUxldmVsRGltZW5zaW9ucywKK307CisKK30pKCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>