<?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>232226</bug_id>
          
          <creation_ts>2021-10-24 21:35:29 -0700</creation_ts>
          <short_desc>[WebCore] Remove unneeded WTF:: namespace prefix</short_desc>
          <delta_ts>2021-10-26 00:24:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>alecflett</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rego</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>toyoshim</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1808295</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-10-24 21:35:29 -0700</bug_when>
    <thetext>[WebCore] Remove unneeded WTF:: namespace prefix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808296</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-10-24 21:39:30 -0700</bug_when>
    <thetext># There are Observer classes in WebCore
# There are a lot of declarations of WTF::TextStream in WebCore
git ls-files Source/WTF | grep \.h$ | xargs grep -h &quot;using WTF:&quot; | sort | uniq | grep -v WTF::Observer | grep -v WTF::TextStream &gt; u.txt
perl -pe &apos;$_ = &quot;s/$&amp;\\b/$2/g\n&quot;  if ~/WTF(::\w+)?::(\w+)/&apos; u.txt &gt; u.sed
git ls-files Source/WebCore | grep -E &apos;.(h|cpp|pl)&apos;$ | xargs grep -l WTF:: | xargs sed -Ei -f u.sed

# Use WTF::append 
git co Source/WebCore/editing/TextIterator.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808299</commentid>
    <comment_count>2</comment_count>
      <attachid>442338</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-10-24 22:00:54 -0700</bug_when>
    <thetext>Created attachment 442338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808302</commentid>
    <comment_count>3</comment_count>
      <attachid>442339</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-10-24 23:26:52 -0700</bug_when>
    <thetext>Created attachment 442339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808307</commentid>
    <comment_count>4</comment_count>
      <attachid>442341</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-10-25 00:06:45 -0700</bug_when>
    <thetext>Created attachment 442341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808324</commentid>
    <comment_count>5</comment_count>
      <attachid>442341</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-25 02:05:35 -0700</bug_when>
    <thetext>Comment on attachment 442341
Patch

Please don&apos;t land this until the tv and watch bots are green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808571</commentid>
    <comment_count>6</comment_count>
      <attachid>442411</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-10-25 13:58:32 -0700</bug_when>
    <thetext>Created attachment 442411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808770</commentid>
    <comment_count>7</comment_count>
      <attachid>442411</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-10-25 23:47:37 -0700</bug_when>
    <thetext>Comment on attachment 442411
Patch

Thank you very much for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808781</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-26 00:23:12 -0700</bug_when>
    <thetext>Committed r284857 (243534@main): &lt;https://commits.webkit.org/243534@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442411.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808782</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-26 00:24:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/84651234&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442338</attachid>
            <date>2021-10-24 22:00:54 -0700</date>
            <delta_ts>2021-10-24 23:26:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232226-20211025140051.patch</filename>
            <type>text/plain</type>
            <size>534463</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTliMThmYjJlNjE4YmQ5
ZTI4OTRmNzM3ODFhYzcyYzBmODdmMDM2MC4uNDU0M2ZjMDQxNTVmZDFkYWY5ODI2MWRmN2ZhODYy
ODVmODVjODA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3NSBAQAorMjAyMS0xMC0yNCAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAgICAgICBbV2ViQ29y
ZV0gUmVtb3ZlIHVubmVlZGVkIFdURjo6IG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjIyNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb25FcnJvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6Y2Fu
TWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENv
b3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVy
YXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6dHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmg6CisgICAgICAgICogTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxIZWFkZXJN
YXApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hIZWFkZXJzOjpJdGVyYXRvcjo6bmV4dCk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAqIE1vZHVs
ZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmg6CisgICAgICAg
ICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rp
dmVET01PYmplY3Q6OmNhbGxGdW5jdGlvbk9uT3JpZ2luVGhyZWFkKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9P
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb09wZW5LZXlDdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRvR2V0QWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4Ojpkb0dldEFsbEtleXMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvT3BlbkN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9PcGVuS2V5Q3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0RlbGV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6ZG9HZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmRvR2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djFSZWNvcmRz
VGFibGVTY2hlbWEpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2MVJlY29yZHNUYWJs
ZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYyUmVjb3Jk
c1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djJSZWNvcmRzVGFi
bGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2MUluZGV4
UmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djFJbmRl
eFJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OnYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjp2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlOjpsb2dnZXJQdHIgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNvbnRy
b2xsZXI6OmFkZERldmljZUNoYW5nZU9ic2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpleGlzdGluZ1Ry
YW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
c2hvdyk6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNlOjpyZXRyeSk6CisgICAgICAg
ICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlB1c2hTdWJzY3JpcHRpb246OnRvSlNPTiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9w
dXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSlNPTi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxl
U3RyZWFtU291cmNlOjpwdWxsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXplQXVkaW9QYXJhbWV0
ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPZmZsaW5lQXVkaW9Db250ZXh0OjpmaW5pc2hlZFJlbmRlcmluZyk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
UmVzdWx0U2V0Um93TGlzdDo6aXRlbSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6c2VuZEZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSSGFuZDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJIYW5kLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291
cmNlQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZUFycmF5Ojpo
YW5kbGVBZGRlZE9yVXBkYXRlZElucHV0U291cmNlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUklucHV0U291cmNlQXJyYXkuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OjphcHBlbmRDaGlsZHJlblRvQXJyYXkp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkU2Nyb2xsYmFyKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNwcDoKKyAgICAg
ICAgKHdlYmtpdEFjY2Vzc2libGVHZXRJbmRleEluUGFyZW50KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAgICAgIChu
dW1iZXJPZlJlcGxhY2VkRWxlbWVudHNCZWZvcmVPZmZzZXQpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgICogYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjphbmltYXRp
b25DYW5CZVJlbW92ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5Lmg6CisgICAgICAgICogYmluZGluZ3MvanMv
R0NDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6
aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpp
bnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FjaGVkUHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5oOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0
ZXJuKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZDo6Zm9yRWFjaCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9E
RkFDb21iaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Q29tYmluZXI6OmNvbWJpbmVERkFzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFD
b21iaW5lci5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVC
dWlsZGVyLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oOgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL1Rlcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpUZXJtOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hP
cGVyYXRpb25JbldvcmtRdWV1ZSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5o
OgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oOgorICAgICAgICAqIGNzcy9D
U1NDcm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1
ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzIGNv
bnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U3JjVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJ
bWFnZVNldFZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6CisgICAgICAgICogY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25z
dCk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2Vz
IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6dHJhdmVyc2VTdWJy
ZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dGllczo6dHJhdmVyc2VTdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVBy
b3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNlUnVsZXNJblZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVNoZWV0Q29udGVudHM6OnRyYXZlcnNlUnVsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVTaGVldENvbnRlbnRzOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6CisgICAg
ICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9tYWtlcHJvcC5w
bDoKKyAgICAgICAgKiBjc3MvbWFrZXZhbHVlcy5wbDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1BhcnNlckZhc3RQYXRocy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybVRy
YW5zbGF0ZUFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybUFuZ2xl
QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VUcmFuc2Zvcm1OdW1iZXJBcmd1bWVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQ2FuTGlrZWx5VXNlRmFzdFBhdGgpOgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNBcHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpj
c3NWYWx1ZUtleXdvcmRJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
Ojpjb25zdW1lRm9udEZhbWlseVJhdyk6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGls
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OnJ1bGVDb2xsZWN0b3JT
aW1wbGVTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxl
cjo6cXVlcnlTZWxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RvckNvbXBpbGVyOjpydWxlQ29sbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNr
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpxdWVyeVNl
bGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NDb2xvclNjaGVtZVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWF0Y2hpbmdBbmltYXRpb25zKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRnVsbHNjcmVlbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBkb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmg6CisgICAgICAgICogZG9t
L1Njb3BlZEV2ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpTY3JpcHRFbGVtZW50KToKKyAgICAgICAg
KiBkb20vU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpU
YXNrKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZWRFbGVtZW50OjpzdHlsZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGRvbS9V
c2VyR2VzdHVyZUluZGljYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tl
bjo6YWRkRGVzdHJ1Y3Rpb25PYnNlcnZlcik6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmNwcDoKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRBY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCk6Cisg
ICAgICAgICogZWRpdGluZy9TbWFydFJlcGxhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
U21hcnRTZXQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnBhcnNl
KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgICogZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oOgorICAgICAgICAqIGVkaXRpbmcv
bWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmli
dXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cCk6CisgICAgICAgICogZWRp
dGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OnBlcmZvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNGaWxlU3RyZWFtOjpnZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
RmlsZVN0cmVhbTo6b3BlbkZvclJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3Ry
ZWFtOjpyZWFkKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpsYXN0TW9kaWZp
ZWQgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6
CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICogaHRtbC9B
dXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21I
VE1MRm9ybUNvbnRyb2xFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlzdC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50OjpIVE1MSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2Fp
dEZvclByZXBhcmVkRm9ySW5saW5lVGhlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9y
UHJlcGFyZWRGb3JJbmxpbmVUaGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBodG1sL0hUTUxTbG90RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2xvdEVsZW1lbnQ6OmFzc2lnbmVkTm9k
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50Ojphc3NpZ25lZEVs
ZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0xpbmtJY29uVHlwZS5oOgorICAgICAgICAq
IGh0bWwvU3VibWl0RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0RXZlbnQ6OmNy
ZWF0ZSk6CisgICAgICAgICogaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VVJMU2VhcmNoUGFyYW1zOjpVUkxTZWFyY2hQYXJhbXMpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMU2VhcmNoUGFyYW1zOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VVJMU2VhcmNo
UGFyYW1zOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICogaHRtbC9VUkxTZWFyY2hQYXJhbXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6cGFpcnMgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dE9iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUXVlcnkuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5zdXJlTm90TnVsbCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
U2hhZGVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFN5bmMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFRleHR1cmUuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRi
YWNrLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBsKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmg6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvcmVpZ25BdHRyaWJ1dGVzTWFwKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9QYXJz
aW5nVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpza2lwRXhhY3RseUlnbm9yaW5nQVND
SUlDYXNlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFNjYW5uZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VlRUU2Nhbm5lcjo6c2Nhbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRTY2FubmVy
OjpzY2FuUnVuKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjplcXVhbExpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
VG9rZW5pemVyOjpuZXh0VG9rZW4pOgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQ
SUhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpoYXNUcmFpbGluZ1RleHRDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZTo6dmlzdWFsbHlDb2xsYXBzZUhhbmdpbmdPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZTo6YWRkVHJhaWxpbmdIeXBoZW4pOgorICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVHcmlkLmg6CisgICAgICAgICogbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OmRpc3RyaWJ1dGVBdmFpbGFibGVTcGFjZSk6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjptYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Om1ha2VMaW5lTG9n
aWNhbE9yZGVyQ2FjaGUpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkNvdmVyYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpjYW5Vc2VGb3JMaW5lTGF5b3V0V2l0aFJlYXNvbik6CisgICAgICAgICogbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0SXRlcmF0b3IuaDoKKyAgICAgICAgKiBsb2FkZXIvQXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uRmFpbGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXNvdXJjZUZvclJlcXVlc3RJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpmb3JFYWNoUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmZvckVhY2hTZXNzaW9uUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJh
cy5oOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dHJhY2tEaXNwbGF5TmFtZSk6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2hvd1NoYXJlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzaG93Q29udGFjdFBpY2tlcik6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JW
aWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpoYXNTdG9yYWdl
QWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyk6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFw
cGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
Lmg6CisgICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5OjpjcmVhdGUpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmb3JFYWNoUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojp3aGVuVW5uZXN0ZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2Uv
UG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJD
YXB0dXJlQ29udHJvbGxlcjo6ZGlzcGF0Y2hFdmVudEZvclRvdWNoQXRJbmRleCk6CisgICAgICAg
ICogcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL1Jlc291
cmNlVXNhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRocmVh
ZDo6d2FpdFVudGlsT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VU
aHJlYWQ6OnRocmVhZEJvZHkpOgorICAgICAgICAqIHBhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgICogcGFn
ZS9TdXNwZW5kYWJsZVRpbWVyLmg6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yLmg6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tB
bmRTdGFydE1vbml0b3JpbmcpOgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9y
Lmg6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm9jZXNzRmVhdHVyZXNTdHJpbmcpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMu
aDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0phdmFTY3JpcHRVUkxzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxp
bmVFdmVudEhhbmRsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dOb25QYXJzZXJJbnNlcnRlZFNjcmlwdHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVNjcmlwdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0ZyYW1lQW5jZXN0b3JzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJj
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
UmVzb3VyY2VGcm9tU291cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dDb25uZWN0VG9Tb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Jhc2VVUkkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojpsb2dUb0NvbnNvbGUgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUaHJlYWQ6OlNjcm9sbGluZ1RocmVhZCk6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZU5pY29zaWE6OnNjcm9sbGluZ05vZGVGb3JQb2ludCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYTo6Y3JlYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2spOgorICAgICAg
ICAqIHBsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0NQ
VU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L0ZpbGVNb25pdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90aWZpZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QT0RJbnRlcnZhbC5oOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpzdGFydEFuaW1hdGVk
U2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uTW9tZW50dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlVGltZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkVGltZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6VGltZXI6OnNj
aGVkdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyOjpUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dl
YkF1ZGlvQnVmZmVyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVN
ZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0ZXJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6d2Fp
dEZvclByZXBhcmVkRm9ySW5saW5lVGhlbik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlOjpzZXRM
b2dnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpzZXRMb2dnZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVByaXZhdGU6OnNldExvZ2dlcik6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5U3RvcmU6
OmNvbnRhaW5zS2V5SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6S2V5U3RvcmU6OmFkZCk6
CisgICAgICAgIChXZWJDb3JlOjpLZXlTdG9yZTo6dW5yZWYpOgorICAgICAgICAqIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
UmVzdHJpY3Rpb25zOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBh
ZENvbnN0YW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFuZGFyZEdhbWVwYWRNYXBwaW5n
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAgICAgICAg
KEdDR0xTcGFuPEdDR0x2b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRF
bmNvZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllckVudW1zLmg6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChX
VEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZT46
OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5Pjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6c3Ry
b2tlQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxh
eWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNh
bXBsZXNGcm9tVHJhY2tCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5o
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6c2Vla0NvbXBsZXRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok5v
dGlmaWNhdGlvbjo6RnVuY3Rpb248dm9pZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6V1RGOjpGdW5jdGlvbjx2b2lkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjcmVhdGVGbHVzaGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpTdWJpbWFnZUNhY2hlSGFzaDo6aGFz
aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhUGxheWVyRGVjb2Rp
bmdDb25maWd1cmF0aW9uQ29jb2EpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
RWJtbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6bG9n
Z2VyUHRyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlz
cGxheUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lh
bkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjZWxlcmF0ZUJveEJsdXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9s
b2d5OjpwbGF0Zm9ybUFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaW1wbGVCdXNNZXNzYWdl
Q2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyOjppc0NvZGVjU3VwcG9ydGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhUGxheWVyRGVj
b2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1l
ZGlhUGxheWVyRW5jb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUdT
dHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lu
a0dTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVByb3h5VGh1bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKGNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGVuZFBpcGVsaW5lOjphcHBzcmNFbmRPZkFwcGVuZENoZWNrZXJQcm9iZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBlbmRQaXBlbGluZTo6aGFuZGxlQXBwc2lua05ld1NhbXBsZUZyb21TdHJlYW1pbmdU
aHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQ
bGF0Zm9ybUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dGhyZWFkU3BlY2lmaWNBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpkcm9wQ3VycmVudEJ1
ZmZlcldoaWxlUHJlc2VydmluZ1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlyZWN0MkQ6OmRyYXdXaXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpk
cmF3V2l0aG91dFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVj
dDJET3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6
aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bUlzRXF1YWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9y
bUNvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRDo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4dERpcmVjdDJEKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRHRElPYmplY3Q6Omhhc2ggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9DdXJzb3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmFsbGJhY2tDdXJzb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6d2FsbFRpbWVGb3JFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2Ny
ZWVuR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRQSU9ic2VydmVySGFuZGxlcnNN
YXApOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG93ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxp
dGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjphdWRpb1NhbXBsZXNBdmFp
bGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0NvbnN0cmFpbnQ6OmZpbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OmZvckVhY2ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OmZpbHRl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzOjppc0NvbnN0cmFp
bnRTZXQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpmaW5kIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURl
dmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92
aWRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3RvcnlNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxl
ck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrOjpT
Y3JvbGxiYXJzQ29udHJvbGxlck1vY2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xs
YmFyc0NvbnRyb2xsZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlRmlsZVBhdGhzT3JEYXRhQnVm
ZmVyc1RvRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2tp
cFdoaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnNraXBDaGFyYWN0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29v
a2llU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZUNoYW5nZUNhbGxi
YWNrTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNldENvb2tpZSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZVN0b3JhZ2VDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZVV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6ZG9t
YWluTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFyc2VFeHBpcmVzTVMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbGxPbldvcmtlclRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZXhlY3V0ZVRh
c2tzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtOjpDdXJsU3RyZWFtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0
cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVh
bVNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpj
YWxsT25Xb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbVNjaGVkdWxl
cjo6Y2FsbENsaWVudE9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFt
U2NoZWR1bGVyOjpleGVjdXRlVGFza3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU3RyZWFtU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1VSTFNvdXAuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVzdHJveUNvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmNhbGxDb2xsYXRpb25GdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZTo6c2V0Q29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNTaW5nbGVCeXRlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50Lmg6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bGFzdEh5cGhlbkxvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJE
YXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OkxheWVyRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGF5ZXJBbmNlc3Rv
ckNsaXBwaW5nU3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJBbmNlc3RvckNsaXBw
aW5nU3RhY2s6Omxhc3RPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZUlEIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZWZlcmVuY2Vk
U1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJj
ZXM6OmFkZENsaWVudEZvclRhcmdldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
ZW5zdXJlUmVmZXJlbmNlZFNWR1Jlc291cmNlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckl0ZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNob3dMYXllclRyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VWaXNpYmxlTm9uQ29t
cG9zaXRlZERlc2NlbmRhbnRMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVt
ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPdmVyZmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWREYXRhLmg6CisgICAgICAgICogc3R5bGUvUnVsZUZlYXR1cmUuaDoKKyAgICAgICAgKiBz
dHlsZS9TdHlsZUludmFsaWRhdG9yLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVT
ZXRzLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVVcGRhdGUuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
aDoKKyAgICAgICAgKiB0ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwZUNvbnZlcnNpb25zOjp0ZXN0TG9uZ1JlY29yZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBlQ29udmVyc2lvbnM6OnNldFRlc3RMb25nUmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OlR5cGVDb252ZXJzaW9uczo6dGVzdE5vZGVSZWNvcmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VHlwZUNvbnZlcnNpb25zOjpzZXRUZXN0Tm9kZVJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBlQ29udmVyc2lvbnM6OnRlc3RTZXF1ZW5jZVJlY29yZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpUeXBlQ29udmVyc2lvbnM6OnNldFRlc3RTZXF1ZW5jZVJlY29yZCk6CisgICAg
ICAgICogdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBv
cnQ6OnNldE1vY2tHYW1lcGFkRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6
OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyk6CisgICAgICAgICog
dGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ck9yV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRU
aHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJP
cldvcmtsZXRUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xl
dFRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjp0aHJl
YWQgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpydW5Jbk1vZGUpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGFibGVFdmVudDo6d2hlbkFsbEV4dGVuZExpZmV0aW1l
UHJvbWlzZXNBcmVTZXR0bGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJs
ZUV2ZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaFRvQ29udGV4dFRocmVhZElmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaDoK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJl
c29sdmVkV2l0aFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdv
cmtlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmZvckVhY2hDbGllbnRGb3JPcmlnaW4pOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXJKb2JRdWV1ZTo6cmVtb3ZlQWxsSm9ic01hdGNoaW5nKToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpmb3JFYWNoQ29ubmVjdGlvbik6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oOgorCiAyMDIxLTEw
LTI0ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHR5
cG8gaW4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFj
a3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZjdhY2IzYjE2NzQ3MjdjYTdiMWM3YjYzYWE4OTVl
NTk4NTUyNjc4ZS4uNTNkMzU2ODEzYWM4YTI4YmNkZWUwYTIxOTFkMDc4YzljYzlkOWZjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMjQgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW1dlYkNvcmVdIFJlbW92
ZSB1bm5lZWRlZCBXVEY6OiBuYW1lc3BhY2UgcHJlZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAg
ICAgICAgKFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5OjpIeXN0ZXJlc2lzQWN0aXZpdHkpOgorICAg
ICAgICAqIHBhbC9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxs
YmFjayk6CisgICAgICAgICogcGFsL0xvZ2dpbmcuaDoKKwogMjAyMS0xMC0yMyAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBVbmlmeSBzcGVlY2gg
c3ludGhlc2l6ZXIgcGxhdGZvcm0gdXNhZ2UgZm9yIE1hYy9pT1MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uRXJyb3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uRXJyb3IuaAppbmRleCAx
ZDY0ZTg1Y2IyZGNmNThiYzFjNTYwMGY3YTkyYTQyYzMzNGI1Zjc5Li40OGI0Mzc4YWVhYTFhYjY1
YWY4OGUzNTFkMGVjNWUxNzNiM2FlMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25FcnJvci5oCkBAIC0zNCw3ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBBcHBsZVBheVNlc3Npb25FcnJvciB7Ci0g
ICAgdXNpbmcgSW5mb1JlY29yZCA9IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0
cmluZz4+OworICAgIHVzaW5nIEluZm9SZWNvcmQgPSBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmlu
ZywgU3RyaW5nPj47CiAgICAgU3RyaW5nIGNvZGU7CiAgICAgSW5mb1JlY29yZCBpbmZvOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yLmNwcAppbmRleCBlNmYwMTBlZmI1NWRhYjhlYzNjZWNlMzY3NGIyODhmZjcxYTUwOGY1
Li42MWQ0M2YzOTg5NzdmODk1YTJjNDcwMzllMzhjYmFkMDQzMTk5ZWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3Bw
CkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5NYWtlUGF5bWVu
dHMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBheW1l
bnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6
OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jbGllbnQuY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNh
cmQobWVyY2hhbnRJZGVudGlmaWVyLCBkb2N1bWVudC5kb21haW4oKSwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIGRvY3VtZW50ID0gV2Vha1B0ciB7IGRvY3VtZW50IH0sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgY2FuTWFr
ZVBheW1lbnRzKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC05OCw3ICs5OCw3IEBAIHZv
aWQgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0CiAgICAgfSk7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5h
dG9yOjpvcGVuUGF5bWVudFNldHVwKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBt
ZXJjaGFudElkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIEZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUEFZTUVOVF9DT09SRElO
QVRPUl9SRUxFQVNFX0xPRygib3BlblBheW1lbnRTZXR1cCgpIik7CiAgICAgbV9jbGllbnQub3Bl
blBheW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvY3VtZW50LmRvbWFpbigpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaAppbmRleCA5YmZmZDRjMGQ5MjhjMDg4MmJm
YWU5ZGI4YTUxNmFlNTc0NjAzZjQ3Li4yNjdiNTg2ZWUwNTBlZjJhYTcwODRmM2JiMDJhZTlkNzJk
ZDk4ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudENvb3JkaW5hdG9yLmgKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBz
dXBwb3J0c1ZlcnNpb24oRG9jdW1lbnQmLCB1bnNpZ25lZCB2ZXJzaW9uKSBjb25zdDsKICAgICBi
b29sIGNhbk1ha2VQYXltZW50cyhEb2N1bWVudCYpOwotICAgIHZvaWQgY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmll
ciwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2
b2lkIG9wZW5QYXltZW50U2V0dXAoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKERvY3VtZW50JiwgY29uc3Qg
U3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChEb2N1bWVudCYsIGNvbnN0
IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlU2Vzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlU2Vzc2lvbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXlt
ZW50SGFuZGxlci5oCmluZGV4IGQ0YWVhZjY2YTRlYjhiZWM3MjE0OGViMTVlN2I4MmQyNWFlMTQw
NTMuLjdiZmVjZmU5NTVlMDhjNTlhN2M4YjJkOGVjNDE4OTM3YTlhM2RlZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5
bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oCkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydERhdGEoSlNDOjpKU1ZhbHVlKSBm
aW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzaG93KERvY3VtZW50JikgZmluYWw7CiAgICAg
dm9pZCBoaWRlKCkgZmluYWw7Ci0gICAgdm9pZCBjYW5NYWtlUGF5bWVudChEb2N1bWVudCYsIFdU
Rjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAg
dm9pZCBjYW5NYWtlUGF5bWVudChEb2N1bWVudCYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRldGFpbHNVcGRh
dGVkKFBheW1lbnRSZXF1ZXN0OjpVcGRhdGVSZWFzb24sIFN0cmluZyYmIGVycm9yLCBBZGRyZXNz
RXJyb3JzJiYsIFBheWVyRXJyb3JGaWVsZHMmJiwgSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhv
ZEVycm9ycykgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gbWVyY2hhbnRWYWxpZGF0aW9u
Q29tcGxldGVkKEpTQzo6SlNWYWx1ZSYmKSBmaW5hbDsKICAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6
b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IDEwM2RkYzBjMGFjYWFkYzZmMmM2YjFjMTE0
OThjOTZhNmYzZTQ5MjAuLmQ4YTRiM2FmMTJmMWE3OTIzZDg4NzA1ZDViOTU4MWQzNmYxMDI3MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDRE0+IGNyZWF0ZShEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB+Q0RNKCk7CiAKLSAgICB1c2luZyBTdXBw
b3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRp
b25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+KT47CisgICAgdXNpbmcgU3VwcG9ydGVk
Q29uZmlndXJhdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPE1lZGlh
S2V5U3lzdGVtQ29uZmlndXJhdGlvbj4pPjsKICAgICB2b2lkIGdldFN1cHBvcnRlZENvbmZpZ3Vy
YXRpb24oTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlv
biwgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQpAQCAtODYsNyArODYs
NyBAQCBwcml2YXRlOgogICAgIENETShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJlZjxXVEY6OkxvZ2dlcj4gbV9s
b2dnZXI7CisgICAgUmVmPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJ
ZGVudGlmaWVyOwogI2VuZGlmCiAgICAgU3RyaW5nIG1fa2V5U3lzdGVtOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
aW5kZXggODIxNzkwMzg1N2ViODIxNGEwMjlkMzM1ZGY4Yjg5ODQ0NmE0NDIwNy4uM2Q5NmY4ODAy
ZTc0Nzg0MWM0ZWZkYTgxZGNiOTQxZWE2ZTRhNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0xMTks
MTIgKzExOSwxMiBAQCBwcml2YXRlOgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
Ly8gTG9nZ2VySGVscGVyCi0gICAgY29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2dlcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJNZWRpYUtleVNlc3Npb24iOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5l
bCgpIGNvbnN0OwogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2xvZ0lkZW50aWZpZXI7IH0KIAotICAgIFJlZjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7Cisg
ICAgUmVmPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVy
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggMzY5ZjFmY2NhNDIyOTAxZTZi
NGFmYmI4OTk2MDViYmY1N2M4ZDExNi4uNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFl
YzU3OTdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgTWVkaWFL
ZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpJdGVyYXRvcihNZWRpYUtleVN0YXR1c01hcCYgbWFwKQog
ewogfQogCi1zdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFy
aWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpu
ZXh0KCkKK3N0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5
cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkK
IHsKICAgICBpZiAoIW1fbWFwLT5tX3Nlc3Npb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxC
dWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGkKIAogICAgIGF1
dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7Ci0g
ICAgcmV0dXJuIFdURjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1l
ZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFp
ci5zZWNvbmQgfTsKKyAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFu
dFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZm
ZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5oCmluZGV4IDhmZmQ0Y2Y3ZDlmYmE5ZWE0Y2M1NGZlYzY4MTI3NjcyMzYxZWFlMGEu
LmMyMTExMTNhMmM2ZGFjNzk3OTI0YTk5ZDJkMmRmOTdjMmU2NWY4NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEl0ZXJhdG9yKE1lZGlhS2V5U3RhdHVzTWFwJik7
Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpW
YXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBuZXh0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVz
Pj4gbmV4dCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmPE1lZGlhS2V5U3RhdHVzTWFw
PiBtX21hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5oCmluZGV4IDJmMzEzNWZkMzRiMzJiZDc4ZmJmNjM3M2EzZjZhYTJlMDgxNGY0Nzku
LjdiNTlhM2JjNmQyMjU2ZmM2NTZmMDhjYmYyNjg5MTg1MTA5ODNhMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtODksNyAr
ODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlcigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBj
b25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICNlbmRpZgogCkBAIC0xMDMsNyAr
MTAzLDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYWtIYXNoU2V0PENETUNsaWVudD4gbV9jZG1DbGll
bnRzOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmPFdURjo6TG9nZ2VyPiBt
X2xvZ2dlcjsKKyAgICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXI7CiAgICAgbXV0YWJsZSB1aW50NjRfdCBtX2NoaWxkSWRlbnRpZmllclNlZWQg
eyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCA2MzdkNDM1MjA1NTg2NzBjZjU0ODQ1MDFm
NjRjYzUyNWI3OWMxY2NhLi45NWRmZjkwYmRjN2YyNzMzYzBmM2QxZGM2NTg4NDYwMTI0OTNjNTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmln
YXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9O
YXZpZ2F0b3JFTUUuY3BwCkBAIC04MCwxMyArODAsMTMgQEAgaW5saW5lIHZvaWQgaW5mb0xvZyhM
b2dnZXImIGxvZ2dlciwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpCiAjZW5kaWYKIH0K
IAotc3RhdGljIHZvaWQgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4m
JiBpbXBsZW1lbnRhdGlvbiwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBz
dXBwb3J0ZWRDb25maWd1cmF0aW9ucywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiwgUmVmPExv
Z2dlcj4mJiwgV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYpOworc3RhdGljIHZvaWQg
dHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBsZW1lbnRhdGlv
biwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1
cmF0aW9ucywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiwgUmVmPExvZ2dlcj4mJiwgTG9nZ2Vy
OjpMb2dTaXRlSWRlbnRpZmllciYmKTsKIAogdm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRp
YUtleVN5c3RlbUFjY2VzcyhOYXZpZ2F0b3ImIG5hdmlnYXRvciwgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEv
I2RvbS1uYXZpZ2F0b3ItcmVxdWVzdG1lZGlha2V5c3lzdGVtYWNjZXNzCiAgICAgLy8gVzNDIEVk
aXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBXVEY6
OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk5hdmlnYXRvckVNRSIsIF9fZnVuY19fLCAmbmF2
aWdhdG9yKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVy
KCJOYXZpZ2F0b3JFTUUiLCBfX2Z1bmNfXywgJm5hdmlnYXRvcik7CiAgICAgUmVmPExvZ2dlcj4g
bG9nZ2VyID0gZG9jdW1lbnQubG9nZ2VyKCk7CiAKICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRp
ZmllciwgImtleVN5c3RlbSgiLCBrZXlTeXN0ZW0sICIpLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9u
cygiLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucywgIikiKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2
b2lkIE5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKE5hdmlnYXRvciYg
bmF2aWdhdG9yLCBEb2N1bWVudCYgZAogICAgIHJlcXVlc3QtPnN0YXJ0KCk7CiB9CiAKLXN0YXRp
YyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+JiYgaW1wbGVt
ZW50YXRpb24sIFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+JiYgc3VwcG9ydGVk
Q29uZmlndXJhdGlvbnMsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVmPExv
Z2dlcj4mJiBsb2dnZXIsIFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllciYmIGlkZW50aWZp
ZXIpCitzdGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RN
PiYmIGltcGxlbWVudGF0aW9uLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYm
IHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIFJlZjxMb2dnZXI+JiYgbG9nZ2VyLCBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYgaWRl
bnRpZmllcikKIHsKICAgICAvLyA2LjMuIEZvciBlYWNoIHZhbHVlIGluIHN1cHBvcnRlZENvbmZp
Z3VyYXRpb25zOgogICAgIGlmICghc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMuaXNFbXB0eSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5oCmluZGV4IGNmMjc2ZTUxZTFkNTFkNzE1ODdlNmU2ZjU2MWQ4ZjdmMDRh
ODU5YzMuLmIyZjJhZWQ3MzVlOWVjZjljMTkxNmQzYjFhOTNmY2UzOTRlOTc5NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIENETVBy
aXZhdGVJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllcjsKIAotdXNpbmcgQ3JlYXRlQ0RNID0g
V1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4oTGVnYWN5
Q0RNKik+OwotdXNpbmcgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gPSBXVEY6OkZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nJik+OwotdXNpbmcgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSA9
IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKT47Cit1c2lu
ZyBDcmVhdGVDRE0gPSBGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFj
ZT4oTGVnYWN5Q0RNKik+OwordXNpbmcgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gPSBGdW5jdGlvbjxi
b29sKGNvbnN0IFN0cmluZyYpPjsKK3VzaW5nIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5
cGUgPSBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpPjsKIAogY2xh
c3MgTGVnYWN5Q0RNQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDM4MzZiODc3YTY3ZDZiZDRjMzk4
Mjg5NTdkNWY1NDZhNDhmYjYzNjYuLjU2NjcyY2FmM2M5NWNmODk4YzE4ZjI4MWJiODEyYzA4Y2Y1
YjkyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01G
aWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZp
bGVTeXN0ZW0uaApAQCAtNTMsMTYgKzUzLDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBSZWY8RmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5PiByb290KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIHVzaW5nIERp
cmVjdG9yeUxpc3RpbmdDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxW
ZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiYmKT47CisgICAgdXNpbmcgRGlyZWN0b3J5TGlz
dGluZ0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVT
eXN0ZW1FbnRyeT4+PiYmKT47CiAgICAgdm9pZCBsaXN0RGlyZWN0b3J5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmLCBEaXJlY3RvcnlMaXN0aW5nQ2Fs
bGJhY2smJik7CiAKLSAgICB1c2luZyBHZXRQYXJlbnRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Pj4mJik+OworICAg
IHVzaW5nIEdldFBhcmVudENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWY8
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Pj4mJik+OwogICAgIHZvaWQgZ2V0UGFyZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRW50cnkmLCBHZXRQYXJlbnRDYWxsYmFjayYm
KTsKIAotICAgIHVzaW5nIEdldEVudHJ5Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhj
ZXB0aW9uT3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+JiYpPjsKKyAgICB1c2luZyBHZXRFbnRyeUNh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4m
Jik+OwogICAgIHZvaWQgZ2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCi0gICAg
dXNpbmcgR2V0RmlsZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJl
ZjxGaWxlPj4mJik+OworICAgIHVzaW5nIEdldEZpbGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
RXhjZXB0aW9uT3I8UmVmPEZpbGU+PiYmKT47CiAgICAgdm9pZCBnZXRGaWxlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxiYWNrJiYpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCmluZGV4IDk4NGY1ZGFhYTE4Njk4OTNm
NmIzYzIzNjBkYjA5ZGQwYTYzZDYxMzQuLjk3NjQ4YzRiMjg5ZjUyMzkxYzk2MTU3YWZhZTk2ZWFj
YzcyMWYyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9G
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdXNpbmcgRW50cnlNYXRjaGluZ0Z1bmN0aW9uID0gV1RGOjpGdW5j
dGlvbjxib29sKGNvbnN0IEZpbGVTeXN0ZW1FbnRyeSYpPjsKKyAgICB1c2luZyBFbnRyeU1hdGNo
aW5nRnVuY3Rpb24gPSBGdW5jdGlvbjxib29sKGNvbnN0IEZpbGVTeXN0ZW1FbnRyeSYpPjsKICAg
ICB2b2lkIGdldEVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IEZsYWdzJiBvcHRpb25zLCBFbnRyeU1hdGNoaW5nRnVuY3Rpb24mJiwgUmVmUHRy
PEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7CiAK
ICAgICBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERP
TUZpbGVTeXN0ZW0mLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAppbmRleCAyMDg0ZTAyZGRlMTYwN2M2
MzVjYmQ3Y2M2NjhhNjFkYWZjOGMzMGFjLi4wOTBmNWNmNGQwZmYxMTVkODRiZjczM2I3YTdiMTVi
MzRmMmUzYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
SGVhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRl
cnMuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGZpbGxI
ZWFkZXJNYXAoSFRUUEhlYWRlck1hcCYgaGVhZGVycywgY29uc3QgRmV0Y2hIZWFkZXIKICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8mIHJlY29yZCA9IHN0ZDo6Z2V0PFZlY3RvcjxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+PihoZWFkZXJzSW5pdCk7CisgICAgICAgIGF1
dG8mIHJlY29yZCA9IHN0ZDo6Z2V0PFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+
Pj4oaGVhZGVyc0luaXQpOwogICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IHJlY29yZCkgewog
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBhcHBlbmRUb0hlYWRlck1hcChoZWFkZXIua2V5LCBo
ZWFkZXIudmFsdWUsIGhlYWRlcnMsIGd1YXJkKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCkBAIC0yMjIsMTMgKzIyMiwxMyBAQCB2b2lkIEZldGNoSGVhZGVyczo6Zmls
dGVyQW5kRmlsbChjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBHdWFyZCBndWFyZCkKICAg
ICB9CiB9CiAKLXN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+
PiBGZXRjaEhlYWRlcnM6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQ
YWlyPFN0cmluZywgU3RyaW5nPj4gRmV0Y2hIZWFkZXJzOjpJdGVyYXRvcjo6bmV4dCgpCiB7CiAg
ICAgd2hpbGUgKG1fY3VycmVudEluZGV4IDwgbV9rZXlzLnNpemUoKSkgewogICAgICAgICBhdXRv
IGtleSA9IG1fa2V5c1ttX2N1cnJlbnRJbmRleCsrXTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1f
aGVhZGVycy0+bV9oZWFkZXJzLmdldChrZXkpOwogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPiB7
IFdURk1vdmUoa2V5KSwgV1RGTW92ZSh2YWx1ZSkgfTsKKyAgICAgICAgICAgIHJldHVybiBLZXlW
YWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+IHsgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHZhbHVlKSB9
OwogICAgIH0KICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKaW5kZXggYzUwNTcwMDE1MmMzMTE1MTA3ZTU2OWU4
Y2RlMDk2MzIyNzczNmI2OS4uOGEyODEyYzBlNjdlNWNlNDIxN2U0MjUyYTRlNTY4MmRmNDZjNzM0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVzcG9uc2UKICAgICB9OwogCi0gICAgdXNp
bmcgSW5pdCA9IHN0ZDo6dmFyaWFudDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8V1RG
OjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+Pj47CisgICAgdXNpbmcgSW5pdCA9IHN0ZDo6
dmFyaWFudDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmlu
ZywgU3RyaW5nPj4+OwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0Y2hIZWFkZXJzPj4g
Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8SW5pdD4mJik7CiAKICAgICBzdGF0aWMgUmVmPEZldGNoSGVh
ZGVycz4gY3JlYXRlKEd1YXJkIGd1YXJkID0gR3VhcmQ6Ok5vbmUsIEhUVFBIZWFkZXJNYXAmJiBo
ZWFkZXJzID0geyB9KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoSGVhZGVycyB7IGd1YXJk
LCBXVEZNb3ZlKGhlYWRlcnMpIH0pOyB9CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBj
bGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihG
ZXRjaEhlYWRlcnMmKTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxT
dHJpbmcsIFN0cmluZz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWY8
RmV0Y2hIZWFkZXJzPiBtX2hlYWRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCmluZGV4IGEzNTg1YzczMzY0ODg3Y2EzNDhhMjNmMjNiYjNmZDVkZjk5
ZDMyYzQuLmJjNTg1NGY5Yjk2NmZiNjMyOWQxNmZkZTYxOGNjZWIxZDhjOTRjYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGVycm9yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9u
c2U+PiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmws
IGludCBzdGF0dXMpOwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYpPjsKKyAgICB1c2luZyBO
b3RpZmljYXRpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8RmV0Y2hSZXNw
b25zZSY+JiYpPjsKICAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgRmV0Y2hSZXF1ZXN0JiwgTm90aWZpY2F0aW9uQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHN0
YXJ0Q29uc3VtaW5nU3RyZWFtKHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlLmNwcAppbmRleCA2YmRjN2ZjNzQ0YWYyMzFkNjgxZTg3YTU4ZTI2ZmQ0Njc1MTU2
NGYzLi41ZTcyZjZjOWJiZWZmYWVlN2E1ZjY5YjkxMzM0YTRlNGQ0MzdhZmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURpcmVj
dG9yeUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9p
ZCBGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6OmFkdmFuY2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb24KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlc3Vs
dCByZXN1bHRWYWx1ZSA9IFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmPEZpbGVTeXN0ZW1I
YW5kbGU+PiB7IFdURk1vdmUoa2V5KSwgcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07Cisg
ICAgICAgIFJlc3VsdCByZXN1bHRWYWx1ZSA9IEtleVZhbHVlUGFpcjxTdHJpbmcsIFJlZjxGaWxl
U3lzdGVtSGFuZGxlPj4geyBXVEZNb3ZlKGtleSksIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KSB9OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdFZhbHVlKSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUuaAppbmRleCA2OGEx
ZGVjMzYxMDNkYzg4YWI4OTQxZWIyMjE5ODk0YWRiMjA1OTFkLi44ODY5ZWE0NjcyMzIzM2RjMDll
NDRkZGEyZTE4YzE5MzA1MWU0ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIGNsYXNzIEl0ZXJhdG9yIDogcHVi
bGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZTo6SXRlcmF0b3I+IHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8SXRlcmF0b3I+IGNyZWF0ZShGaWxlU3lzdGVt
RGlyZWN0b3J5SGFuZGxlJik7Ci0gICAgICAgIHVzaW5nIFJlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8
V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWY8RmlsZVN5c3RlbUhhbmRsZT4+PjsKKyAgICAg
ICAgdXNpbmcgUmVzdWx0ID0gc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWY8
RmlsZVN5c3RlbUhhbmRsZT4+PjsKICAgICAgICAgdm9pZCBuZXh0KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8UmVzdWx0PiYmKT4mJik7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZXhwbGljaXQgSXRlcmF0b3IoRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSYgc291cmNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZE1hbmFnZXIuaAppbmRleCA4
MzQzN2RhMWJiZjM1MDZjOWIwNGYzMzFiZDI3YjE3MDM2YTdhYWQ3Li4wMzhkMjhiMDEzMDdiOGU4
YTk4YWU2OTAxNzEzNzc5NzI1YjBiNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dhbWVwYWQvR2FtZXBhZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dhbWVwYWQvR2FtZXBhZE1hbmFnZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAg
IEdhbWVwYWRNYW5hZ2VyKCk7CiAKICAgICB2b2lkIG1ha2VHYW1lcGFkVmlzaWJsZShQbGF0Zm9y
bUdhbWVwYWQmLCBIYXNoU2V0PE5hdmlnYXRvckdhbWVwYWQqPiYsIEhhc2hTZXQ8RE9NV2luZG93
Kj4mKTsKLSAgICB2b2lkIGRpc3BhdGNoR2FtZXBhZEV2ZW50KGNvbnN0IFdURjo6QXRvbVN0cmlu
ZyYgZXZlbnROYW1lLCBQbGF0Zm9ybUdhbWVwYWQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2FtZXBh
ZEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSwgUGxhdGZvcm1HYW1lcGFkJik7CiAK
ICAgICB2b2lkIG1heWJlU3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKTsKICAgICB2b2lkIG1heWJl
U3RvcE1vbml0b3JpbmdHYW1lcGFkcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaAppbmRleCBlYjY4NDA4ZGM0MWI1ZmFk
MzI3YTI3Y2Q1YjAzYTUzMjIzYTlkN2UwLi40NGRjMzQzNDg2YzQyZjYyZTVkYWEyNGQwOTNiYzE1
NzY1ZjUyODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJBY3RpdmVET01PYmplY3QuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnRleHQtPnBvc3RDcm9zc1RocmVhZFRhc2sob2JqZWN0LCBtZXRob2QsIGFyZ3VtZW50cy4u
Lik7CiAgICAgfQogCi0gICAgdm9pZCBjYWxsRnVuY3Rpb25Pbk9yaWdpblRocmVhZChXVEY6OkZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCisgICAgdm9pZCBjYWxsRnVuY3Rpb25Pbk9yaWdp
blRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgewogICAgICAgICBpZiAo
Y2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShvcmlnaW5UaHJlYWQoKSkpIHsK
ICAgICAgICAgICAgIGZ1bmN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDYyYTAwOTBkYTA2
M2NiNjJhMDNhNTJkNjVhNzMwNTdhZTJiMzcyNjMuLjZjMGIxYjRmMmFiMGMwMzMwNzY2NTRlYTRi
Mjc2NTU5NDQ1ODk1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgc3Ry
dWN0IElEQkRhdGFiYXNlSWRlbnRpZmllckhhc2ggewogICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CiB9OwogCi1zdHJ1Y3QgSURCRGF0
YWJhc2VJZGVudGlmaWVySGFzaFRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPElE
QkRhdGFiYXNlSWRlbnRpZmllcj4geworc3RydWN0IElEQkRhdGFiYXNlSWRlbnRpZmllckhhc2hU
cmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SURCRGF0YWJhc2VJZGVudGlmaWVyPiB7CiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwogICAg
IHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKICAgICBzdGF0aWMg
Ym9vbCBpc0VtcHR5VmFsdWUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpbmZvKSB7IHJl
dHVybiBpbmZvLmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguY3BwCmluZGV4IGY5NmRiNzQ2YjkyYWE2NTU4NjlkODVjZmJkNTc3MTdiYWE5
MzEzNGMuLjE2N2QzODA0ZWY5MGQwNzE3NzE4ZTNkMTlkZTAyODcxZWJiOWViZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTE0NCw3ICsx
NDQsNyBAQCB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9uQ2hhbmdlQWJvcnQo
KQogICAgIG1fZGVsZXRlZCA9IGZhbHNlOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQkluZGV4Ojpkb09wZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwg
V1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0
aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9PcGVuQ3Vyc29y
KElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0
cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QkluZGV4OjpvcGVuQ3Vyc29yIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NU
aHJlYWRMb2NhbERhdGEobV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkKCkpKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IElEQkluZGV4OjpvcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpT
VgogICAgIH0pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpk
b09wZW5LZXlDdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlv
bjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNv
ckRpcmVjdGlvbiBkaXJlY3Rpb24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlS
YW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4Ojpv
cGVuS2V5Q3Vyc29yIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRM
b2NhbERhdGEobV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkKCkpKTsKQEAgLTMzNyw3ICszMzcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQkluZGV4Ojpkb0dldEtleShFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+IHJhbgogICAg
IHJldHVybiB0cmFuc2FjdGlvbi5yZXF1ZXN0R2V0S2V5KCp0aGlzLCBrZXlSYW5nZSk7CiB9CiAK
LUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsKHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJ
REJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQkluZGV4Ojpkb0dldEFsbChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgRnVuY3Rp
b248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmdldEFsbCIpOwogICAgIEFTU0VSVChjYW5DdXJy
ZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24o
KS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0zNzQsNyArMzc0LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBl
eGVjU3RhdGUsIEpTVmFsdWUKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJJbmRleDo6ZG9HZXRBbGxLZXlzKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVu
Y3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbEtl
eXMoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJl
ZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQkluZGV4OjpnZXRBbGxLZXlzIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nl
c3NUaHJlYWRMb2NhbERhdGEobV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5oCmluZGV4IDlmM2ZiY2FkOTY0NmFhYjJmMGM3OTgwZWNhM2E5NDVjN2YwMTQ3MGUuLjdm
OGI2ODE5OTFiM2Y1YzA3OTI1MjUxMDhlN2EwOWMxYTAyNjEyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtODgsMTAgKzg4LDEwIEBAIHByaXZh
dGU6CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0NvdW50KGNvbnN0IElEQktl
eVJhbmdlRGF0YSYpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXQoRXhj
ZXB0aW9uT3I8SURCS2V5UmFuZ2VEYXRhPik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBkb0dldEtleShFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKLSAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbkN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24sIFdU
Rjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRp
cmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+Pigp
PiAmJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8
SURCS2V5UmFuZ2U+PigpPiAmJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBk
b0dldEFsbEtleXMoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248
RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgRnVuY3Rp
b248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwg
RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGwoc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYm
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBjb3VudCwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktl
eVJhbmdlPj4oKT4gJiYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCAxZjA0YWMz
YTUxYzE2ZTlhNDM0NjdlYTMxMGQwMDNjZGQ5ZDg5YWNmLi5hMTAzMDkxZTU3ZWU2YjFhODY0YTdj
OGIxYzhlNDhhZTAzZTEwZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBJREJP
YmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5mby5hdXRv
SW5jcmVtZW50KCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6OmRvT3BlbkN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1
bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5DdXJzb3Io
SURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRy
PElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
T2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFj
Y2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkpKTsKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
Qk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdAogICAgIH0p
OwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09w
ZW5LZXlDdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxF
eGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9PcGVuS2V5Q3Vyc29yKElEQkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJL
ZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVj
dFN0b3JlOjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nl
c3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgp
KSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJP
YmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oSURCS2V5UmFuZ2UqIGtleVJhbmcKICAgICB9KTsK
IH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxl
dGUoV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1
bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9E
ZWxldGUoRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5j
dGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0
aW9uIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEo
bV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC02MDMsNyArNjAz
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9Db3Vu
dChjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmcKICAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5y
ZXF1ZXN0Q291bnQoKnRoaXMsIHJhbmdlKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9HZXRBbGwoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291
bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBm
dW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRv
R2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBGdW5jdGlvbjxFeGNlcHRpb25P
cjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJl
YWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZCgpKSk7CkBAIC02NDAsNyArNjQwLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEoKICAg
ICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
ZG9HZXRBbGxLZXlzKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9u
PEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0dldEFsbEtleXMoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJL
ZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVj
dFN0b3JlOjpnZXRBbGxLZXlzIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NU
aHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aAppbmRleCBkNjU0N2Y3ZjNiYmExNjg2ZjlmZDczNTY2YTU5ODM4MWIyMDAzZjJkLi4zNmFiMzg0
NTNiNmE1YjZmYTU2M2I4ZDc3NzY1Mzc0ZjY1NzA3NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTExNiwxMSArMTE2LDEx
IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBJbmxpbmVLZXlDaGVjayB7IFBlcmZvcm0sIERv
Tm90UGVyZm9ybSB9OwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gcHV0T3JBZGQo
SlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPElEQktleT4sIEluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlLCBJbmxpbmVLZXlDaGVjaywgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiA9IG51bGxwdHIpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gZG9Db3VudChjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IGRvRGVsZXRlKFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNl
cHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IGRvT3BlbktleUN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24sIFdURjo6RnVu
Y3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJik7Ci0gICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAm
Jik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbEtleXMoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRy
PElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
ZG9EZWxldGUoRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYp
OworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1cnNv
ckRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4m
Jik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5LZXlDdXJzb3IoSURC
Q3Vyc29yRGlyZWN0aW9uLCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+
PigpPiYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURC
S2V5UmFuZ2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dl
dEFsbEtleXMoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlv
bk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVj
dC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGIzZmZhNjFjYzM2NmJiMzczMzYx
ZDYyMzI0ZGJjNzUwMGEyNWVlYWMuLjBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRj
MDk4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMDUsMTMgKzEw
NSwxMyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHYxUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0
cmluZyYgdGFibGVOYW1lKQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiB2MVJlY29yZHNUYWJsZVNj
aGVtYSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2MVJlY29y
ZHNUYWJsZVNjaGVtYVN0cmluZyh2MVJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MVJlY29yZHNUYWJsZVNjaGVtYVN0cmlu
Zyh2MVJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKICAgICByZXR1cm4gdjFSZWNvcmRz
VGFibGVTY2hlbWFTdHJpbmc7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxUmVjb3Jkc1Rh
YmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpT
dHJpbmc+IHYxUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYxUmVjb3Jkc1RhYmxlU2NoZW1hKCJc
IlJlY29yZHNcIiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MVJlY29y
ZHNUYWJsZVNjaGVtYVN0cmluZyh2MVJlY29yZHNUYWJsZVNjaGVtYSgiXCJSZWNvcmRzXCIiKSk7
CiAgICAgcmV0dXJuIHYxUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCkBAIC0xMjIsMTMg
KzEyMiwxMyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHYyUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0
IFN0cmluZyYgdGFibGVOYW1lKQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiB2MlJlY29yZHNUYWJs
ZVNjaGVtYSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2MlJl
Y29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MlJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MlJlY29yZHNUYWJsZVNjaGVtYVN0
cmluZyh2MlJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKICAgICByZXR1cm4gdjJSZWNv
cmRzVGFibGVTY2hlbWFTdHJpbmc7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYyUmVjb3Jk
c1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RG
OjpTdHJpbmc+IHYyUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYyUmVjb3Jkc1RhYmxlU2NoZW1h
KCJcIlJlY29yZHNcIiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MlJl
Y29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MlJlY29yZHNUYWJsZVNjaGVtYSgiXCJSZWNvcmRzXCIi
KSk7CiAgICAgcmV0dXJuIHYyUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCkBAIC0xNTQs
MTMgKzE1NCwxMyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHYxSW5kZXhSZWNvcmRzVGFibGVTY2hl
bWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxSW5k
ZXhSZWNvcmRzVGFibGVTY2hlbWEoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6
OlN0cmluZz4gdjFJbmRleFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVjb3Jkc1Rh
YmxlU2NoZW1hKCJJbmRleFJlY29yZHMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gdjFJbmRleFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVjb3Jkc1RhYmxl
U2NoZW1hKCJJbmRleFJlY29yZHMiKSk7CiAgICAgcmV0dXJuIHYxSW5kZXhSZWNvcmRzVGFibGVT
Y2hlbWFTdHJpbmc7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxSW5kZXhSZWNvcmRzVGFi
bGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0
cmluZz4gdjFJbmRleFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVjb3Jkc1RhYmxl
U2NoZW1hKCJcIkluZGV4UmVjb3Jkc1wiIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHYxSW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcodjFJbmRleFJlY29yZHNUYWJs
ZVNjaGVtYSgiXCJJbmRleFJlY29yZHNcIiIpKTsKICAgICByZXR1cm4gdjFJbmRleFJlY29yZHNU
YWJsZVNjaGVtYVN0cmluZzsKIH0KIApAQCAtMTcxLDEzICsxNzEsMTMgQEAgc3RhdGljIGNvbnN0
IFN0cmluZyB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
KQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCkKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYySW5kZXhSZWNvcmRzVGFi
bGVTY2hlbWFTdHJpbmcodjJJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiSW5kZXhSZWNvcmRzIikp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHYySW5kZXhSZWNvcmRzVGFibGVT
Y2hlbWFTdHJpbmcodjJJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiSW5kZXhSZWNvcmRzIikpOwog
ICAgIHJldHVybiB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCiBzdGF0aWMg
Y29uc3QgU3RyaW5nJiB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYySW5kZXhSZWNvcmRzVGFibGVT
Y2hlbWFTdHJpbmcodjJJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiXCJJbmRleFJlY29yZHNcIiIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MkluZGV4UmVjb3Jkc1RhYmxl
U2NoZW1hU3RyaW5nKHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWEoIlwiSW5kZXhSZWNvcmRzXCIi
KSk7CiAgICAgcmV0dXJuIHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDU3ODI1YmQzZTlkYjNiMzA5Mjk0YjBiY2Y3YzVj
NDljMGNkZGNjMjUuLjJiMWVhZGI5ZWE1YzQ2NGQwMjc1ZWQyMjNmNTAwM2I3YmVmMTU3MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtNzIzLDcgKzcyMyw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCS2V5CiAgICAgYm9vbCB1c2VkS2V5SXNHZW5lcmF0ZWQgPSBmYWxzZTsKICAgICB1
aW50NjRfdCBrZXlOdW1iZXI7CiAgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1
ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKTsKLSAgICBhdXRvIGdlbmVyYXRlZEtleVJl
c2V0dGVyID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgJmtleU51bWJlciwgJnVzZWRLZXlJc0dlbmVyYXRlZF0o
KSB7CisgICAgYXV0byBnZW5lcmF0ZWRLZXlSZXNldHRlciA9IG1ha2VTY29wZUV4aXQoW3RoaXMs
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCAma2V5TnVtYmVy
LCAmdXNlZEtleUlzR2VuZXJhdGVkXSgpIHsKICAgICAgICAgaWYgKHVzZWRLZXlJc0dlbmVyYXRl
ZCkKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5yZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIo
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFTZXNzaW9uLmNwcAppbmRleCBmYWU4ZTMzMGM1YmFkYmY2MTE4ODI0OGI1YThkNGJkYjlk
NTQ4ZGMwLi4zOWNjYzE0ZTIxYjhmN2FhNjY4MjM5NWZmYzEwZjJjYzgwZGE2ZWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpCiBz
dGF0aWMgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0
Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlv
bikKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0byBjb21tYW5kTWFwID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKLSAgICAgICAgdXNpbmcgQWN0aW9uVG9Db21tYW5kTWFwID0gSGFzaE1hcDxNZWRp
YVNlc3Npb25BY3Rpb24sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUsIFdURjo6SW50SGFzaDxNZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+OworICAgICAgICB1c2luZyBBY3Rpb25Ub0Nv
bW1hbmRNYXAgPSBIYXNoTWFwPE1lZGlhU2Vzc2lvbkFjdGlvbiwgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgSW50SGFzaDxNZWRpYVNlc3Npb25BY3Rpb24+
LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+OwogCiAgICAg
ICAgIHJldHVybiBBY3Rpb25Ub0NvbW1hbmRNYXAgewogICAgICAgICAgICAgeyBNZWRpYVNlc3Np
b25BY3Rpb246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaApp
bmRleCBhMWRlN2NkMzE1MDAwZTMwOGE0ZjQ4ODU0MTgwMTIxYWE0MWZlYmEzLi5mYjFiMjEwZDA4
YmZmMzYwYzA0MGRhZjhlNDA1ZDc2MjljZjUwYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaApAQCAtMTM4LDcgKzEzOCw3IEBA
IHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+IG1fcG9zaXRp
b25TdGF0ZTsKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9sYXN0UmVwb3J0ZWRQb3NpdGlv
bjsKICAgICBNb25vdG9uaWNUaW1lIG1fdGltZUF0TGFzdFBvc2l0aW9uVXBkYXRlOwotICAgIEhh
c2hNYXA8TWVkaWFTZXNzaW9uQWN0aW9uLCBSZWZQdHI8TWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxl
cj4sIFdURjo6SW50SGFzaDxNZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNo
VHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+IG1fYWN0aW9uSGFuZGxlcnM7CisgICAgSGFzaE1h
cDxNZWRpYVNlc3Npb25BY3Rpb24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiwg
SW50SGFzaDxNZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1l
ZGlhU2Vzc2lvbkFjdGlvbj4+IG1fYWN0aW9uSGFuZGxlcnM7CiAgICAgUmVmUHRyPGNvbnN0IExv
Z2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25D
b29yZGluYXRvclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oCmluZGV4IDM3Yzk5ZDdlOGY3MDA2N2Fk
YjFjNjE3MDhhNjkwZTljMWVlNjcyMmMuLjA2NzFlZjk5MGVjZGQ0OTQwMTFhYWY5MGViODM4YjNj
MWQ2MWM5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oCkBAIC03
MSwxOSArNzEsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0YXRlQ2hh
bmdlZChNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRy
YWNrSWRlbnRpZmllckNoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdm9pZCBzZXRM
b2dnZXIoY29uc3QgV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBzZXRMb2dn
ZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGll
bnQoV2Vha1B0cjxNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudD4gY2xpZW50KSB7IG1fY2xp
ZW50ID0gY2xpZW50O30KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAotICAgIGNvbnN0IFdURjo6TG9nZ2VyKiBs
b2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IExv
Z2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVy
OyB9CiAKICAgICBXZWFrUHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50PiBjbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxjb25z
dCBXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dn
ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8TWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQ+IG1fY2xpZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4
IDEzMTcxMTljM2E3NjdiYzZmZDkzNzg1MjBjMzgxZmNjNzFiNzVlMzkuLjdiYzIxZTU2YWVjYzY1
MWFkODg3MGUxNGY1YjdjNTc1YjQxYTE4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMzc2LDcgKzM3
Niw3IEBAIHN0YXRpYyBNZWRpYUNvbnN0cmFpbnRzIGNyZWF0ZU1lZGlhQ29uc3RyYWludHMoY29u
c3Qgc3RkOjpvcHRpb25hbDxNZWRpYVRyYWNrQ29uCiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6
YXBwbHlDb25zdHJhaW50cyhjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50
cz4mIGNvbnN0cmFpbnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewot
ICAgIG1fcHJvbWlzZSA9IFdURjo6bWFrZVVuaXF1ZTxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+
KFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fcHJvbWlzZSA9IG1ha2VVbmlxdWU8RE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+PihXVEZNb3ZlKHByb21pc2UpKTsKIAogICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnN0cmFp
bnRzXShhdXRvJiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoIW1fcHJvbWlzZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5jcHAKaW5kZXggN2VlZDU3Yzk3ZjRlMjFhMzU0ZWNmYzBmYjQ2MWZhZDQ5Y2JkYmExNi4uYTY3
OWIxZTJjZTMyNTM4ODc3ZWM2YzMxNzQyYzMyNWZkYzQxYjc2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKQEAgLTQy
LDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAotI2RlZmluZSBMT0dJREVOVElGSUVSX1JFQ0VJVkVSIFdURjo6TG9nZ2VyOjpMb2dTaXRl
SWRlbnRpZmllcihsb2dDbGFzc05hbWUoKSwgX19mdW5jX18sIG1fY29ubmVjdGlvbi0+bG9nSWRl
bnRpZmllcigpKQorI2RlZmluZSBMT0dJREVOVElGSUVSX1JFQ0VJVkVSIExvZ2dlcjo6TG9nU2l0
ZUlkZW50aWZpZXIobG9nQ2xhc3NOYW1lKCksIF9fZnVuY19fLCBtX2Nvbm5lY3Rpb24tPmxvZ0lk
ZW50aWZpZXIoKSkKICNlbHNlCiAjZGVmaW5lIExPR0lERU5USUZJRVJfUkVDRUlWRVIKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuY3BwCmluZGV4IGIwMDljOWNmM2RlZjI0YzJhOTJjNWJlNDgxN2M3MDJjYTczYTM3MjMuLjk1
NTA0NDlkN2NlZmU4ZmVkNGUzMzkwNGY3NDFhMGM0MTFjZDIwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotI2RlZmluZSBMT0dJREVOVElGSUVSX1NFTkRFUiBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50
aWZpZXIobG9nQ2xhc3NOYW1lKCksIF9fZnVuY19fLCBtX2Nvbm5lY3Rpb24tPmxvZ0lkZW50aWZp
ZXIoKSkKKyNkZWZpbmUgTE9HSURFTlRJRklFUl9TRU5ERVIgTG9nZ2VyOjpMb2dTaXRlSWRlbnRp
Zmllcihsb2dDbGFzc05hbWUoKSwgX19mdW5jX18sIG1fY29ubmVjdGlvbi0+bG9nSWRlbnRpZmll
cigpKQogI2Vsc2UKICNkZWZpbmUgTE9HSURFTlRJRklFUl9TRU5ERVIKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgK
aW5kZXggY2I5YjdlZGJlMmFkMTU3ODljMTMxMGNlOGZiMmI0Y2QxMjU4ZDRmNC4uZjU2OTU5NzMy
OTQwZDY0MjQwMmQzZDQxYmZjMzRmZmFlOGFmZWM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBAIC01NCw3ICs1NCw3
IEBAIHB1YmxpYzoKIAogICAgIGVudW0gRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGUgeyB9
OwogICAgIHVzaW5nIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gPSBPYmplY3RJZGVudGlmaWVy
PERldmljZUNoYW5nZU9ic2VydmVyVG9rZW5UeXBlPjsKLSAgICB2aXJ0dWFsIERldmljZUNoYW5n
ZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2
aWNlQ2hhbmdlT2JzZXJ2ZXIoRnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4p
ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAppbmRleCA3NTFlYzFlY2ViYjhmYmMy
MTBlZDdjMzA1NjU4MzQ0NzVkZDJlOWNmLi40M2NjODNhY2I1YzgyYzVlYTRkYmFmYmQ2ZTFmOTUx
NTY1YjljOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGVudW1lcmF0ZU1lZGlhRGV2aWNlcyhEb2N1bWVudCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiwgY29uc3QgU3RyaW5nJik+JiYp
OwogCi0gICAgVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIGFkZERl
dmljZUNoYW5nZU9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBVc2VyTWVk
aWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2
ZXIoRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZURldmljZUNoYW5nZU9ic2Vy
dmVyKFVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbik7CiAKICAgICB2
b2lkIGxvZ0dldFVzZXJNZWRpYURlbmlhbChEb2N1bWVudCYpOwpAQCAtNzksNyArNzksNyBAQCBp
bmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjplbnVtZXJhdGVNZWRpYURldmljZXMoRG9j
dW1lbnQmIGRvY3VtZW50LCBDb21wbAogfQogCiAKLWlubGluZSBVc2VyTWVkaWFDbGllbnQ6OkRl
dmljZUNoYW5nZU9ic2VydmVyVG9rZW4gVXNlck1lZGlhQ29udHJvbGxlcjo6YWRkRGV2aWNlQ2hh
bmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgb2JzZXJ2ZXIpCitpbmxpbmUgVXNl
ck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIFVzZXJNZWRpYUNvbnRyb2xs
ZXI6OmFkZERldmljZUNoYW5nZU9ic2VydmVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikK
IHsKICAgICByZXR1cm4gbV9jbGllbnQtPmFkZERldmljZUNoYW5nZU9ic2VydmVyKFdURk1vdmUo
b2JzZXJ2ZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDM5NDcyYmUyZjA4YWM2YTA2YTJhNGZlZTk5ODQ1NGZj
ZTZiYzk1MmIuLjM2YzhiNTBkNDAxNTY3MWMyMzdlMzA2ZDljMzIzZjA5YWUxNmQ5OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cApAQCAtMzc3LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgTGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kJiBiYWNrZW5kRnJvbVJUUFRyYW5zY2VpdmVyKFJUQ1J0cFRyCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZCY+KCp0cmFuc2NlaXZl
ci5iYWNrZW5kKCkpOwogfQogCi1SVENSdHBUcmFuc2NlaXZlciogTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpleGlzdGluZ1RyYW5zY2VpdmVyKFdURjo6RnVuY3Rpb248Ym9vbChMaWJX
ZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQmKT4mJiBtYXRjaGluZ0Z1bmN0aW9uKQorUlRDUnRw
VHJhbnNjZWl2ZXIqIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZXhpc3RpbmdUcmFu
c2NlaXZlcihGdW5jdGlvbjxib29sKExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZCYpPiYm
IG1hdGNoaW5nRnVuY3Rpb24pCiB7CiAgICAgZm9yIChhdXRvJiB0cmFuc2NlaXZlciA6IG1fcGVl
ckNvbm5lY3Rpb24uY3VycmVudFRyYW5zY2VpdmVycygpKSB7CiAgICAgICAgIGlmIChtYXRjaGlu
Z0Z1bmN0aW9uKGJhY2tlbmRGcm9tUlRQVHJhbnNjZWl2ZXIoKnRyYW5zY2VpdmVyKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4
IDM2NTcyZjBlZDk4MGY3NGRhMDE3MTQ1OGEwMTVhOThhOWQ1YzczMjcuLmI0ZDBlNGEzOWFhZDlj
NjdhODhlOWUyZGI3MmQzOWE3YmFlNWVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6
CiAgICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIo
UmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZp
bmFsOwogICAgIHZvaWQgc2V0U2VuZGVyU291cmNlRnJvbVRyYWNrKExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQmLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKLSAgICBSVENSdHBUcmFuc2NlaXZlciog
ZXhpc3RpbmdUcmFuc2NlaXZlcihXVEY6OkZ1bmN0aW9uPGJvb2woTGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kJik+JiYpOworICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiBleGlzdGluZ1RyYW5z
Y2VpdmVyKEZ1bmN0aW9uPGJvb2woTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kJik+JiYp
OwogICAgIFJUQ1J0cFRyYW5zY2VpdmVyJiBuZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPiYmLCBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlKTsKIAogICAgIHZvaWQgY29sbGVjdFRyYW5zY2VpdmVycygpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFu
ZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFu
ZGxlci5oCmluZGV4IDk1NWUzOWE3MjI4NTJjMjIwZjJiZTk0NjlkZGI1MTdjNjBmODlkZDcuLjdm
ODZlYmQwZjI3MGZhNjMzNmMwMmQ4N2Q1ZjQ0Yzg3NTI2NjlhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmgKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gY29u
dmVydERhdGEoSlNDOjpKU1ZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lk
PiBzaG93KERvY3VtZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjYW5NYWtlUGF5bWVudChEb2N1bWVudCYsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5N
YWtlUGF5bWVudChEb2N1bWVudCYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpID0gMDsKICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGRldGFpbHNVcGRhdGVk
KFBheW1lbnRSZXF1ZXN0OjpVcGRhdGVSZWFzb24sIFN0cmluZyYmIGVycm9yLCBBZGRyZXNzRXJy
b3JzJiYsIFBheWVyRXJyb3JGaWVsZHMmJiwgSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVy
cm9ycykgPSAwOwogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gbWVyY2hhbnRWYWxpZGF0
aW9uQ29tcGxldGVkKEpTQzo6SlNWYWx1ZSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbXBs
ZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3Bw
CmluZGV4IGU0NGIzMWMxZTRiMDc4YjAzMzE4YzgyMTk2YjNlZWY4NzAzMThlZDUuLjA2M2NmZjdl
MDkwN2I1ZTM3YzRmZjI0MTQwNGQ4ZDNiOTM4MTJiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0z
OTAsNyArMzkwLDcgQEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2hvdyhEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZlB0cjxET01Qcm9taXNlPiYmIGRldGFpbHNQcm9taXMKIAogICAgIG1fc3RhdGUgPSBT
dGF0ZTo6SW50ZXJhY3RpdmU7CiAgICAgQVNTRVJUKCFtX3Nob3dQcm9taXNlKTsKLSAgICBtX3No
b3dQcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPFNob3dQcm9taXNlPihXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICBtX3Nob3dQcm9taXNlID0gbWFrZVVuaXF1ZTxTaG93UHJvbWlzZT4oV1RGTW92ZShw
cm9taXNlKSk7CiAKICAgICBSZWZQdHI8UGF5bWVudEhhbmRsZXI+IHNlbGVjdGVkUGF5bWVudEhh
bmRsZXI7CiAgICAgZm9yIChhdXRvJiBwYXltZW50TWV0aG9kIDogbV9zZXJpYWxpemVkTWV0aG9k
RGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVzcG9uc2UuY3BwCmluZGV4IDE2MDBhOTI2MjZiNDk5NTQ0ZTk0YjFmM2U0
MjkwMjA0ZDdjOThlNDguLmIyNzE4ODYwNmFjZDczZmE2YThlOWM5ZGNhNjBlODUxNGY0MWUwZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVu
dFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXNwb25zZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFBheW1lbnRSZXNw
b25zZTo6cmV0cnkoUGF5bWVudFZhbGlkYXRpb25FcnJvcnMmJiBlcnJvcnMsIERPTVByb21pc2VE
ZWZlcnJlZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXRyeVByb21pc2UgPSBX
VEY6Om1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICBtX3JldHJ5UHJvbWlzZSA9IG1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+PihXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBQYXltZW50UmVzcG9uc2U6OmFib3J0
V2l0aEV4Y2VwdGlvbihFeGNlcHRpb24mJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcAppbmRleCA1OTQzYzgz
ZDJlZTJhMjJjOGRjMDViYzU3MzU5YjI5OGVhZGM0NGM0Li5lMDUwNDRkZDI3Yzk4YTE5OTM5MDI5
YmIzOTMyNzI4MDNjY2VlMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1
c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgUHVzaFN1YnNj
cmlwdGlvbkpTT04gUHVzaFN1YnNjcmlwdGlvbjo6dG9KU09OKCkgY29uc3QKICAgICByZXR1cm4g
UHVzaFN1YnNjcmlwdGlvbkpTT04gewogICAgICAgICBtX2VuZHBvaW50LAogICAgICAgICBtX2V4
cGlyYXRpb25UaW1lLAotICAgICAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBT
dHJpbmc+PiB7CisgICAgICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiB7
CiAgICAgICAgICAgICB7ICJwMjU2ZGgiX3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKG1fY2xp
ZW50RUNESFB1YmxpY0tleSkgfSwKICAgICAgICAgICAgIHsgImF1dGgiX3MsIGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKG1fc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpIH0KICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0
aW9uSlNPTi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0
aW9uSlNPTi5oCmluZGV4IGZmMGYyMjA2YmZiZDY3YWQyNWRmZDI4M2Y5NmM5MTYzZDUzMDU5ZTIu
LjliZWYyYzM2MmMwZTg2MDdlNWJhYTZhMDYzODYzZDVlY2IwMDc0YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkpTT04uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25KU09OLmgK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFB1c2hTdWJzY3Jp
cHRpb25KU09OIHsKICAgICBTdHJpbmcgZW5kcG9pbnQ7CiAgICAgc3RkOjpvcHRpb25hbDxFcG9j
aFRpbWVTdGFtcD4gZXhwaXJhdGlvblRpbWU7Ci0gICAgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWly
PFN0cmluZywgU3RyaW5nPj4ga2V5czsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywg
U3RyaW5nPj4ga2V5czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25D
YXB0dXJlU291cmNlLmgKaW5kZXggODQ0MDYwZGFkZmEzZjU5NDA0MzkyYjRiMjc3OWNjZDViM2Y3
MDljMS4uY2E5MDNiMTJiN2YyMjE5MzVmNWRmYTE5OGRiYjFhOGM0Yzc5ZDM0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25DYXB0dXJlU291cmNlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbXV0ZSgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB1
c2luZyBEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwg
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
c2l6ZV90KT47CisgICAgdXNpbmcgRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBzaXplX3QpPjsKICAgICB1c2luZyBTdGF0ZVVwZGF0ZUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPjsKICAgICBTcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgRGF0YUNhbGxiYWNrJiYsIFN0YXRlVXBkYXRlQ2FsbGJhY2smJiwgUmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+IGZpbmRDYXB0dXJlRGV2aWNlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNh
cHR1cmVTb3VyY2VJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgKaW5kZXggYjE0MDhiNjVlMTA4ZTYyZmIxZjUx
ODdkMWVjZDFmYTQwZmZmZjk4ZC4uNTg0YjcxZGQ5ZjA2ODg1ODEwOWIxODAzMzc4NTU0YjZhY2Fj
ZDkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaApAQCAtNTEsNyArNTEs
NyBAQCBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsCiAgICAgLCBwdWJs
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNpbmcgRGF0YUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk+OworICAgIHVzaW5nIERh
dGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT47CiAg
ICAgdXNpbmcgU3RhdGVVcGRhdGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUmKT47CiAgICAgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNl
SW1wbChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBEYXRhQ2Fs
bGJhY2smJiwgU3RhdGVVcGRhdGVDYWxsYmFjayYmLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4m
Jik7CiAgICAgflNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2Uu
Y3BwCmluZGV4IDg4OWJhYmI0Y2NjOTZlY2UyYWZmYTMyODdmMGJiNTc1NGU1MTFkY2UuLmZhYTQ2
YzAzYmIyN2U3NDFiNGQ1NGMxNDJiMWRjODhjYzNjZTYxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmNwcApAQCAt
MzQsNyArMzQsNyBAQCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6flJlYWRhYmxlU3RyZWFtU291cmNl
KCkgPSBkZWZhdWx0Owogdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlciYmIGNvbnRyb2xsZXIsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJUKCFtX3Byb21pc2UpOwotICAgIG1fcHJvbWlz
ZSA9IFdURjo6bWFrZVVuaXF1ZTxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+KFdURk1vdmUocHJv
bWlzZSkpOworICAgIG1fcHJvbWlzZSA9IG1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+PihXVEZNb3ZlKHByb21pc2UpKTsKICAgICBtX2NvbnRyb2xsZXIgPSBXVEZNb3ZlKGNvbnRy
b2xsZXIpOwogCiAgICAgc2V0QWN0aXZlKCk7CkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgUmVhZGFi
bGVTdHJlYW1Tb3VyY2U6OnB1bGwoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
ICAgICBBU1NFUlQoIW1fcHJvbWlzZSk7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKLSAg
ICBtX3Byb21pc2UgPSBXVEY6Om1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihX
VEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX3Byb21pc2UgPSBtYWtlVW5pcXVlPERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPj4oV1RGTW92ZShwcm9taXNlKSk7CiAKICAgICBzZXRBY3RpdmUoKTsKICAg
ICBkb1B1bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5o
CmluZGV4IGViYjNkYzBhZmM1OWY3MzAzOGVmMTAyMzhlODVlZDY4NmQ3ZDlmOWEuLmY0ZTdlMDUx
ZTJhMjZhNDZjYmUzOTczMTYxZGZlM2Q3MDQ4NzEwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAg
ICAgZG91YmxlIG1fbGFzdE5vblNpbGVudFRpbWUgeyAtMSB9OwogCiAgICAgLy8gUmVmLWNvdW50
aW5nCi0gICAgLy8gc3RhcnQgb3V0IHdpdGggbm9ybWFsIHJlZkNvdW50ID09IDEgKGxpa2UgV1RG
OjpSZWZDb3VudGVkIGNsYXNzKS4KKyAgICAvLyBzdGFydCBvdXQgd2l0aCBub3JtYWwgcmVmQ291
bnQgPT0gMSAobGlrZSBSZWZDb3VudGVkIGNsYXNzKS4KICAgICBzdGQ6OmF0b21pYzxpbnQ+IG1f
bm9ybWFsUmVmQ291bnQgeyAxIH07CiAgICAgc3RkOjphdG9taWM8aW50PiBtX2Nvbm5lY3Rpb25S
ZWZDb3VudCB7IDAgfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCmluZGV4IGUzYzFjODY4MWVmNGE4YTFhYzBkMTY0
YWUwNjc3NmEzNDY2Njg4ODMuLjhjZWViMzBkOTBlZTZiNDgzM2I0MmUwY2M0NDVkNjVmZGJjN2Q5
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXROb2RlLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIEF1ZGlvV29ya2xldE5vZGU6On5BdWRp
b1dvcmtsZXROb2RlKCkKICAgICB1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBBdWRpb1dvcmts
ZXROb2RlOjppbml0aWFsaXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1BhcmFt
RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3JzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpCit2b2lkIEF1ZGlv
V29ya2xldE5vZGU6OmluaXRpYWxpemVBdWRpb1BhcmFtZXRlcnMoY29uc3QgVmVjdG9yPEF1ZGlv
UGFyYW1EZXNjcmlwdG9yPiYgZGVzY3JpcHRvcnMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PEtleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLT5tYXAoKS5pc0Vt
cHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE5vZGUuaAppbmRleCBjNTRmYzhiNzRlNzMxZjZkNWY0ODg1OWE0NTc4ZGY4Y2E4ZDI1NWY3
Li5kNWI1YTYzMzFmZTFhMmI3ZjkzNmFjZjlmYmYwZDNlNWIyNmJjMzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaApAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSB7IHJldHVybiBtX3Bv
cnQuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc29yKFJlZlB0cjxBdWRpb1dvcmtsZXRQ
cm9jZXNzb3I+JiYpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUF1ZGlvUGFyYW1ldGVycyhjb25zdCBW
ZWN0b3I8QXVkaW9QYXJhbURlc2NyaXB0b3I+JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8
V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBkb3VibGU+Pj4mIHBhcmFtVmFsdWVzKTsKKyAgICB2
b2lkIGluaXRpYWxpemVBdWRpb1BhcmFtZXRlcnMoY29uc3QgVmVjdG9yPEF1ZGlvUGFyYW1EZXNj
cmlwdG9yPiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcs
IGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpOwogCiBwcml2YXRlOgogICAgIEF1ZGlvV29ya2xldE5v
ZGUoQmFzZUF1ZGlvQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQXVkaW9Xb3JrbGV0Tm9k
ZU9wdGlvbnMmJiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaAppbmRleCA2
NmUwMGZlNjBkODQ4MTZhZDNkMWZlNDk3MmE3MWJlMmY1NjA1NTgwLi5iMjY1N2NkMzgyOTA2ZTU1
ZGY1ZDMwMTIzMzgyMWM0ZTUzMzlkOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oCkBAIC00Miw3ICs0
Miw3IEBAIHN0cnVjdCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyA6IEF1ZGlvTm9kZU9wdGlvbnMg
ewogICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzID0gMTsKICAgICB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMgPSAxOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVuc2lnbmVkPj4gb3V0cHV0
Q2hhbm5lbENvdW50OwotICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWly
PFN0cmluZywgZG91YmxlPj4+IHBhcmFtZXRlckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgZG91YmxlPj4+IHBhcmFtZXRlckRhdGE7CiAgICAgSlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4gcHJvY2Vzc29yT3B0aW9uczsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCmlu
ZGV4IDFiYjQ5NTQxY2IyNjQxMzUzODg4NjM4NWFlZGUyNjM1MjY0MDc2NmMuLmY2ZTcxNTU2Y2Uw
Yzk0ZmFkNGQyNjk3NTMyNjg2NTgyMDQxMzUyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaApAQCAtNTcsNyArNTcsNyBA
QCBwcml2YXRlOgogICAgIEF1ZGlvV29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eSYsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBXb3JrZXJPcldvcmts
ZXRUaHJlYWQuCi0gICAgUmVmPFdURjo6VGhyZWFkPiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKKyAg
ICBSZWY8VGhyZWFkPiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKICAgICBSZWZQdHI8V29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU+IGNyZWF0ZUdsb2JhbFNjb3BlKCkgZmluYWw7CiAKICAgICBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbV9tZXNzYWdpbmdQcm94eTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29h
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZUNvY29hLmNwcAppbmRleCBmMWMyYWYzM2M1ZmEyYWI2ZmM1MTY2OTk4M2ZhNzBlNzY5NjQw
MjgwLi5iYzg0NGZmYjY2OGI5M2IzY2Y3NjQ5YjM0YmU4Yzc4ODAyYzc1NmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlQ29jb2EuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzJiBidXMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcykKICAgICAgICAgLy8gSGVhcCBhbGxvY2F0aW9ucyBhcmUgZm9yYmlkZGVuIG9uIHRoZSBh
dWRpbyB0aHJlYWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgc28gd2UgbmVlZCB0bwogICAgICAg
ICAvLyBleHBsaWNpdGx5IGFsbG93IHRoZSBmb2xsb3dpbmcgYWxsb2NhdGlvbihzKS4KICAgICAg
ICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxl
TWFsbG9jUmVzdHJpY3Rpb25zOwotICAgICAgICBtX2F1ZGlvQnVmZmVyID0gbWFrZVVuaXF1ZTxX
ZWJBdWRpb0J1ZmZlckxpc3Q+KGRlc2NyaXB0aW9uLCBXVEY6OnNhZmVDYXN0PHVpbnQzMl90Pihu
dW1iZXJPZkZyYW1lcykpOworICAgICAgICBtX2F1ZGlvQnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJB
dWRpb0J1ZmZlckxpc3Q+KGRlc2NyaXB0aW9uLCBzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZG
cmFtZXMpKTsKICAgICAgICAgYXVkaW9CdWZmZXIgPSAmZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJM
aXN0PigqbV9hdWRpb0J1ZmZlcik7CiAgICAgfSBlbHNlCiAgICAgICAgIGF1ZGlvQnVmZmVyLT5z
ZXRTYW1wbGVDb3VudChudW1iZXJPZkZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcAppbmRleCBkZTUyNGQy
ZjRmNDkwODEzODZkMWVjM2Y4ZWNkMjJmN2Y2ZWQ4ZTAzLi5iMWU1NDNkYzAzNmE4NDMzZTUzN2Mx
ZTMzZmJkOTU0ZDhkMTYyMWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2
b2lkIE9mZmxpbmVBdWRpb0NvbnRleHQ6OmZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVy
aW5nKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKIAotICAgIGF1dG8gdW5pbml0aWFsaXplT25FeGl0ID0gV1RGOjptYWtlU2NvcGVF
eGl0KFt0aGlzXSB7CisgICAgYXV0byB1bmluaXRpYWxpemVPbkV4aXQgPSBtYWtlU2NvcGVFeGl0
KFt0aGlzXSB7CiAgICAgICAgIHVuaW5pdGlhbGl6ZSgpOwogICAgICAgICBjbGVhcigpOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQuaAppbmRleCAwNjVhNDUyMzA5ZmUxNWQxODI2MTM1ZjdlMmMzNmM4NjU3ZDEx
NmE1Li5iYTc2Njg2MDkwMTBmYzc2NWE1Yjk3YmE0MGJkNjQyYzIwNDI3NmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogCiAgICAgVW5pcXVlUmVmPE9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CiAgICAgUmVmUHRyPERlZmVycmVk
UHJvbWlzZT4gbV9wZW5kaW5nUmVuZGVyaW5nUHJvbWlzZTsKLSAgICBIYXNoTWFwPHVuc2lnbmVk
IC8qIGZyYW1lICovLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiwgV1RGOjpJbnRIYXNoPHVuc2ln
bmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IG1fc3Vz
cGVuZFJlcXVlc3RzOworICAgIEhhc2hNYXA8dW5zaWduZWQgLyogZnJhbWUgKi8sIFJlZlB0cjxE
ZWZlcnJlZFByb21pc2U+LCBJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IG1fc3VzcGVuZFJlcXVlc3RzOwogICAgIHVuc2lnbmVk
IG1fbGVuZ3RoOwogICAgIGJvb2wgbV9kaWRTdGFydFJlbmRlcmluZyB7IGZhbHNlIH07CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5h
Z2VyLmgKaW5kZXggYWE2MjFkNjIxN2VmNTVjODY3MmUzMjVjNjYzZWM4Y2ZmZTk3Y2JmMS4uNDAy
Y2M1NmYzNTg2NGY5ODg1MDdiNWFlYmI4YTdmNTExMWE2ODNjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC00NSw3
ICs0NSw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIGNsYXNzIERhdGFiYXNlTWFu
YWdlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VNYW5hZ2VyKTsKLSAgICBm
cmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxEYXRhYmFzZU1hbmFnZXI+OworICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxEYXRhYmFzZU1hbmFnZXI+OwogcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEYXRhYmFzZU1hbmFnZXImIHNpbmdsZXRvbigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNl
dFJvd0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1
bHRTZXRSb3dMaXN0LmNwcAppbmRleCA0MTg2NTkzZTI5ZGY2ZDkwOGU0ZTdjZmE3NzQ4NzE4MTk0
OGU2MzIwLi4xNDdhMWUyMDM2OTFmMGQ0MWIwYjAxMmJmMzAzNmM4NjU4YTYyNTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0
U2V0Um93TGlzdC5jcHAKQEAgLTQxLDEyICs0MSwxMiBAQCB1bnNpZ25lZCBTUUxSZXN1bHRTZXRS
b3dMaXN0OjpsZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBtX3Jlc3VsdC5zaXplKCkgLyBtX2Nv
bHVtbnMuc2l6ZSgpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBTUUxWYWx1ZT4+PiBTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAorRXhjZXB0aW9uT3I8VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFNRTFZh
bHVlPj4+IFNRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7
CiAgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW5kZXhTaXplRXJyb3IgfTsKIAotICAgIFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcs
IFNRTFZhbHVlPj4gcmVzdWx0OworICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTUUxW
YWx1ZT4+IHJlc3VsdDsKIAogICAgIHVuc2lnbmVkIG51bWJlck9mQ29sdW1ucyA9IG1fY29sdW1u
cy5zaXplKCk7CiAgICAgdW5zaWduZWQgdmFsdWVzSW5kZXggPSBpbmRleCAqIG51bWJlck9mQ29s
dW1uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
UmVzdWx0U2V0Um93TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmgKaW5kZXggMTRjNDQ0ODNhZmI4NzlhMjk5NTUxOWM2ZjYxMjBh
MzBkMmE4YTk0Yi4uYmZmNWZmNGUwZGM5Y2M4ZDU2ODY4MjJlNTc0YjhmZWU0YjFhMGFhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRS
b3dMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1
bHRTZXRSb3dMaXN0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUmVz
dWx0KGNvbnN0IFNRTFZhbHVlJiByZXN1bHQpIHsgbV9yZXN1bHQuYXBwZW5kKHJlc3VsdCk7IH0K
IAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFZlY3RvcjxX
VEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFNRTFZhbHVlPj4+IGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTUUxW
YWx1ZT4+PiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTUUxS
ZXN1bHRTZXRSb3dMaXN0KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggYWFlYjY2MTRmNjZjN2M5Y2Y1
NmI4NGFlYmVjZTlhNjBkMDgzNTg4OC4uMmJhNzIxMmEyNzEzOTFkMzMxNjUxYWQ2NWU2NjY1M2Zh
YWZkNDc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtODIxLDcgKzgyMSw3IEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6YWJvcnRPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgIH0KIH0KIAotdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Ym9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQobV9oYW5kbGUpOwogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKaW5kZXggY2E3MTljN2JlNmU1MTk2YjM5ZGVjYTBjNmRmNDEzODY5MDQ1Yzg0My4uYzkyNmI0
MWZhNGRhMjU5Y2IyNTdjMGM5NWQ4ZWQxYTI0NWY3NjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElmIHlvdSBhcmUgZ29pbmcgdG8gc2VuZCBhIGh5
YmktMTAgZnJhbWUsIHlvdSBuZWVkIHRvIHVzZSB0aGUgb3V0Z29pbmcgZnJhbWUgcXVldWUKICAg
ICAvLyBpbnN0ZWFkIG9mIGNhbGwgc2VuZEZyYW1lKCkgZGlyZWN0bHkuCi0gICAgdm9pZCBzZW5k
RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0
aW9uSGFuZGxlcik7CiAKICAgICBlbnVtIEJsb2JMb2FkZXJTdGF0dXMgewogICAgICAgICBCbG9i
TG9hZGVyTm90U3RhcnRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJIYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5k
LmNwcAppbmRleCBmMjE2MjMxMjFlZTJiNjQ5NzVhNTRmZjJiMGJhOWVlYmEyM2Q1MmEyLi5mNTNl
NDFiZmQyZWY1YWQ1OTk3MmIzNGVkN2E2ZjMzNTU5YzFjMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYlhSSGFuZDo6
SXRlcmF0b3I6Okl0ZXJhdG9yKFdlYlhSSGFuZCYgaGFuZCkKIHsKIH0KIAotc3RkOjpvcHRpb25h
bDxXVEY6OktleVZhbHVlUGFpcjxYUkhhbmRKb2ludCwgUmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+
PiBXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWly
PFhSSGFuZEpvaW50LCBSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4+IFdlYlhSSGFuZDo6SXRlcmF0
b3I6Om5leHQoKQogewogICAgIGlmIChtX2luZGV4ID4gbV9oYW5kLT5tX2pvaW50cy5zaXplKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkhhbmQuaAppbmRleCA0YzkyYmYxOTM4NzQwZDYyMDRjY2I4OTNjZmFmNWEwOTk2YTkx
OTY0Li5kYmUxMTQzMjUzZDU3MDc5MWFmYzdiZDg2ODhjOTkyZGMzZmJiYWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEl0
ZXJhdG9yKFdlYlhSSGFuZCYpOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQ
YWlyPFhSSGFuZEpvaW50LCBSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4+IG5leHQoKTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpv
aW50U3BhY2U+Pj4gbmV4dCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmPFdlYlhSSGFu
ZD4gbV9oYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlQXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlQXJyYXkuY3BwCmluZGV4IDU2MGQwM2FiN2ZiOWMzZWNhNWMxMTE4NmM0MTY0
ODlmYjk5MmMwMDQuLjEwZjYwODJhYmU0NGRmOTVmNTU1MGQyZjRkYjRlMjg1MjA0NzczZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFy
cmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3Vy
Y2VBcnJheS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJh
eTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMoZG91YmxlIHRpbWVzdGFtcCwgYwog
CiAgICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNlcykgewogICAgICAgICBh
dXRvIGluZGV4ID0gbV9pbnB1dFNvdXJjZXMuZmluZE1hdGNoaW5nKFsmaW5wdXRTb3VyY2VdKGF1
dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPmhhbmRsZSgpID09IGlucHV0U291cmNlLmhhbmRsZTsg
fSk7Ci0gICAgICAgIGlmIChpbmRleCA9PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIGlmIChp
bmRleCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gV2hlbiBuZXcgWFIgaW5wdXQgc291
cmNlcyBiZWNvbWUgYXZhaWxhYmxlIGZvciBYUlNlc3Npb24gc2Vzc2lvbiwgdGhlIHVzZXIgYWdl
bnQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAgICAgICAgIC8vIDEuIElmIHNl
c3Npb24ncyBwcm9taXNlIHJlc29sdmVkIGZsYWcgaXMgbm90IHNldCwgYWJvcnQgdGhlc2Ugc3Rl
cHMuCiAgICAgICAgICAgICAvLyAyLiBMZXQgYWRkZWQgYmUgYSBuZXcgbGlzdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5oCmlu
ZGV4IDlmZWY2M2E3NWY3YmU1MjZmY2NmNjI5MmI1NmFlYzE3OWQ1ZTM1NDQuLmQ2NGJkNTAxNGU4
ZDhiMTExZDI2ODYxMjYzOTUzZmJjMDk2MzJlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuaApAQCAtNDMsNyArNDMsNyBA
QCBjbGFzcyBXZWJYUlNlc3Npb247CiAKIGNsYXNzIFdlYlhSSW5wdXRTb3VyY2VBcnJheSBmaW5h
bCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
V2ViWFJJbnB1dFNvdXJjZUFycmF5KTsKLSAgICBmcmllbmQgVW5pcXVlUmVmPFdlYlhSSW5wdXRT
b3VyY2VBcnJheT4gV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXZWJY
UklucHV0U291cmNlQXJyYXksIFdlYkNvcmU6OldlYlhSU2Vzc2lvbiY+KFdlYkNvcmU6OldlYlhS
U2Vzc2lvbiYpOworICAgIGZyaWVuZCBVbmlxdWVSZWY8V2ViWFJJbnB1dFNvdXJjZUFycmF5PiBt
YWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXZWJYUklucHV0U291cmNlQXJyYXks
IFdlYkNvcmU6OldlYlhSU2Vzc2lvbiY+KFdlYkNvcmU6OldlYlhSU2Vzc2lvbiYpOwogcHVibGlj
OgogICAgIHVzaW5nIElucHV0U291cmNlTGlzdCA9IFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+OwogICAgIHN0YXRpYyBVbmlxdWVSZWY8V2ViWFJJbnB1
dFNvdXJjZUFycmF5PiBjcmVhdGUoV2ViWFJTZXNzaW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaAppbmRleCA1NjM2MDBlYThlNjg0YjJlNjBjZGE2NDM1
YzFkZTljNjM5MTQ3NjIzLi45MjQ5YTlhZjc1MmUzMDE2NTEyODQ0MzQ5ZWVlM2I1ZGE1YzQzMTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvSHlzdGVyZXNpc0FjdGl2aXR5LmgKQEAgLTM5
LDcgKzM5LDcgQEAgZW51bSBjbGFzcyBIeXN0ZXJlc2lzU3RhdGUgewogCiBjbGFzcyBIeXN0ZXJl
c2lzQWN0aXZpdHkgewogcHVibGljOgotICAgIGV4cGxpY2l0IEh5c3RlcmVzaXNBY3Rpdml0eShX
VEY6OkZ1bmN0aW9uPHZvaWQoSHlzdGVyZXNpc1N0YXRlKT4mJiBjYWxsYmFjayA9IFtdKEh5c3Rl
cmVzaXNTdGF0ZSkgeyB9LCBTZWNvbmRzIGh5c3RlcmVzaXNTZWNvbmRzID0gZGVmYXVsdEh5c3Rl
cmVzaXNEdXJhdGlvbikKKyAgICBleHBsaWNpdCBIeXN0ZXJlc2lzQWN0aXZpdHkoRnVuY3Rpb248
dm9pZChIeXN0ZXJlc2lzU3RhdGUpPiYmIGNhbGxiYWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7
IH0sIFNlY29uZHMgaHlzdGVyZXNpc1NlY29uZHMgPSBkZWZhdWx0SHlzdGVyZXNpc0R1cmF0aW9u
KQogICAgICAgICA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCiAgICAgICAgICwgbV9o
eXN0ZXJlc2lzU2Vjb25kcyhoeXN0ZXJlc2lzU2Vjb25kcykKICAgICAgICAgLCBtX2FjdGl2ZShm
YWxzZSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9jYWxsYmFjayhIeXN0
ZXJlc2lzU3RhdGU6OlN0b3BwZWQpOwogICAgIH0KIAotICAgIFdURjo6RnVuY3Rpb248dm9pZChI
eXN0ZXJlc2lzU3RhdGUpPiBtX2NhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoSHlzdGVyZXNp
c1N0YXRlKT4gbV9jYWxsYmFjazsKICAgICBTZWNvbmRzIG1faHlzdGVyZXNpc1NlY29uZHM7CiAg
ICAgYm9vbCBtX2FjdGl2ZTsKICAgICBSdW5Mb29wOjpUaW1lcjxIeXN0ZXJlc2lzQWN0aXZpdHk+
IG1fdGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcAppbmRleCA4ZTZmYTIzMGZjNDVl
NmIyZjA0NmMxMWRmYWQyNzE0MzE4YzA2NTYwLi4wMGI3ZWQ4NDU4YjdmM2VhODU0YzFlYmFhYmM2
YTM0NjQ2ZTgwYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLXZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhj
b25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykK
K3ZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBGdW5j
dGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50
IHRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaAppbmRleCA2Y2FhZWRiMzVhMDUxZDlkNTNl
MmJhMzI0MWNhOTAwM2EzYjAxYTcyLi4zMGE4ZTVlMTMxZDZiMzhkNGE4ZWQ2M2ViNWRjOWQ1NGQz
OTg4NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaApAQCAtMjksNyArMjksNyBAQAogCiBu
YW1lc3BhY2UgUEFMIHsKIAotUEFMX0VYUE9SVCB2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2so
Y29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworUEFMX0VYUE9SVCB2b2lk
IHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZCgpPiYm
KTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDE4MzdkZjAyZTM3MWEyOWQxNjEzMTY5NjRmN2Nl
YjBhNGI4MjAyYjAuLmY4Njc4NGExNGU3ZjM1NjlmYmYzZGQ3MTYyZTUwNTEyN2I0MzczZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAt
MzI4NSw3ICszMjg1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUo
QVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGkKICAgICAgICAgdXBkYXRl
SXNvbGF0ZWRUcmVlKCpvYmplY3QsIG5vdGlmaWNhdGlvbik7CiB9CiAKLS8vIEZJWE1FOiBzaG91
bGQgYmUgYWRkZWQgdG8gV1RGOjpWZWN0b3IuCisvLyBGSVhNRTogc2hvdWxkIGJlIGFkZGVkIHRv
IFZlY3Rvci4KIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+CiBzdGF0aWMgYm9vbCBh
cHBlbmRJZk5vdENvbnRhaW5zTWF0Y2hpbmcoVmVjdG9yPFQ+JiB2ZWN0b3IsIGNvbnN0IFQmIHZh
bHVlLCBGIG1hdGNoZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAwOGUwZTRmNWI5NzQwNmZmODkzMjA0OWNk
NjFkMzY2MGE4MzlkZjRhLi4xMzJlZmJjZmZjNDRhMWM3M2I4YzA2MTdiZTAzZjM2NmUyMmFhMDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKQEAgLTQzMyw3ICs0MzMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBObwog
ICAgIH0pOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RG
cm9tTm9kZShjb25zdCBOb2RlKiBub2RlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYpPiYgaXNBY2Nlc3NpYmxlKQorQWNjZXNzaWJpbGl0eU9iamVj
dCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3Qg
RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik+JiBpc0FjY2Vzc2libGUp
CiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM5MTYsOSAr
MzkxNiw5IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJheShBWENvcmVPYmplY3Qq
IG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEFYQ29yZU9iCiAgICAgICAgICAgICBzdGFydE9iamVj
dCA9IGlzRm9yd2FyZCA/IHN0YXJ0T2JqZWN0LT5wcmV2aW91c1NpYmxpbmcoKSA6IHN0YXJ0T2Jq
ZWN0LT5uZXh0U2libGluZygpOwogICAgIH0KIAotICAgIHNpemVfdCBzZWFyY2hQb3NpdGlvbiA9
IHN0YXJ0T2JqZWN0ID8gc2VhcmNoQ2hpbGRyZW4uZmluZChzdGFydE9iamVjdCkgOiBXVEY6Om5v
dEZvdW5kOworICAgIHNpemVfdCBzZWFyY2hQb3NpdGlvbiA9IHN0YXJ0T2JqZWN0ID8gc2VhcmNo
Q2hpbGRyZW4uZmluZChzdGFydE9iamVjdCkgOiBub3RGb3VuZDsKIAotICAgIGlmIChzZWFyY2hQ
b3NpdGlvbiAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYgKHNlYXJjaFBvc2l0aW9uICE9IG5v
dEZvdW5kKSB7CiAgICAgICAgIGlmIChpc0ZvcndhcmQpCiAgICAgICAgICAgICBlbmRJbmRleCA9
IHNlYXJjaFBvc2l0aW9uICsgMTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBjOWMyODZmNGU2YzY0
NTZmMmM3YTY5NTBlZDMzYmI1N2I1YTliMDk0Li42YzViYTVkYzI5Mzk5YzdlM2MxNDAzYTQ1ZDlm
NGQwNTYwOGZhN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaApAQCAtODM4LDcgKzgzOCw3IEBAIGlubGluZSBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFsbG93c1RleHRSYW5nZXMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiBpbmxpbmUgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0TGVuZ3RoRm9yVGV4dFJh
bmdlKCkgY29uc3QgeyByZXR1cm4gdGV4dCgpLmxlbmd0aCgpOyB9CiAjZW5kaWYKIAotQWNjZXNz
aWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSos
IGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik+JiBp
c0FjY2Vzc2libGUpOworQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0
RnJvbU5vZGUoY29uc3QgTm9kZSosIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCYpPiYgaXNBY2Nlc3NpYmxlKTsKIAogbmFtZXNwYWNlIEFjY2Vzc2liaWxpdHkg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDdmOTU2OTZmYTBiYjIxMmZkNTI3Y2JiYjRh
MzQzNDEyOThjM2M0ZWUuLjFiNTQxNmVhNzg2N2FhNTJkZjI5YzgyMTRhYTMyMjBiOTcyZWE3NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0yNTAsNyArMjUwLDcgQEAgZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgV2luZG93LAogfTsKIAotdXNpbmcgQWNjZXNzaWJpbGl0
eVJvbGVTZXQgPSBXVEY6Okhhc2hTZXQ8QWNjZXNzaWJpbGl0eVJvbGUsIFdURjo6SW50SGFzaDxB
Y2Nlc3NpYmlsaXR5Um9sZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8QWNjZXNzaWJpbGl0
eVJvbGU+PjsKK3VzaW5nIEFjY2Vzc2liaWxpdHlSb2xlU2V0ID0gSGFzaFNldDxBY2Nlc3NpYmls
aXR5Um9sZSwgSW50SGFzaDxBY2Nlc3NpYmlsaXR5Um9sZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8QWNjZXNzaWJpbGl0eVJvbGU+PjsKIAogQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNz
aWJpbGl0eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcAppbmRleCA3NDQ1NjQ4ZTRjNmVjMjliMjg5MTlhYTNmOGU5ZjJiOWE3YmRkYzUxLi42MGMy
NjEyN2RmODViYzE5ZGFjNjkzNDAyODgyNGY0YWZkYTUyN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApA
QCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnVwZGF0ZVNj
cm9sbGJhcnMoKQogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGRTY3Jv
bGxiYXIoQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsYmFyKQogewogICAgIHNpemVfdCBwb3Mg
PSBtX2NoaWxkcmVuLmZpbmQoc2Nyb2xsYmFyKTsKLSAgICBpZiAocG9zICE9IFdURjo6bm90Rm91
bmQpIHsKKyAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIG1fY2hpbGRyZW5bcG9z
XS0+ZGV0YWNoRnJvbVBhcmVudCgpOwogICAgICAgICBtX2NoaWxkcmVuLnJlbW92ZShwb3MpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZS5jcHAKaW5kZXggNWMzMjI3YTdiMTVkYzllZDQ5Mzc2ZTU2NTQwZGJiMGI4NWE3
YWZlYi4uMTZjNGY1ODEzZGE4ZGZkYWQ1MzBlZDQyY2YwYjdlZmJhMTA1Yzk0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5j
cHAKQEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlR2V0SW5k
ZXhJblBhcmVudChBdGtPYmplY3QqIG9iamVjdCkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAg
c2l6ZV90IGluZGV4ID0gcGFyZW50LT5jaGlsZHJlbigpLmZpbmQoY29yZU9iamVjdCk7Ci0gICAg
cmV0dXJuIChpbmRleCA9PSBXVEY6Om5vdEZvdW5kKSA/IC0xIDogaW5kZXg7CisgICAgcmV0dXJu
IChpbmRleCA9PSBub3RGb3VuZCkgPyAtMSA6IGluZGV4OwogfQogCiBzdGF0aWMgQXRrQXR0cmli
dXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhBdGtPYmplY3QqIG9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAwYTg2ZDQ0M2Q1MDdlNzE0
YWE2NjUzYzdhMThhNjg0NTljYjgxYTNjLi44YTg3YWMzYjFiMjBkN2U3M2QxMzYwM2UxMjI3YjNl
YjExYWI1OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC02MDQs
NyArNjA0LDcgQEAgc3RhdGljIGludCBudW1iZXJPZlJlcGxhY2VkRWxlbWVudHNCZWZvcmVPZmZz
ZXQoQXRrVGV4dCogdGV4dCwgdW5zaWduZWQgb2Zmc2V0KQogCiAgICAgaW50IGNvdW50ID0gMDsK
ICAgICBzaXplX3QgaW5kZXggPSB0ZXh0QmVmb3JlT2Zmc2V0LmZpbmQob2JqZWN0UmVwbGFjZW1l
bnRDaGFyYWN0ZXIsIDApOwotICAgIHdoaWxlIChpbmRleCA8IG9mZnNldCAmJiBpbmRleCAhPSBX
VEY6Om5vdEZvdW5kKSB7CisgICAgd2hpbGUgKGluZGV4IDwgb2Zmc2V0ICYmIGluZGV4ICE9IG5v
dEZvdW5kKSB7CiAgICAgICAgIGluZGV4ID0gdGV4dEJlZm9yZU9mZnNldC5maW5kKG9iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVyLCBpbmRleCArIDEpOwogICAgICAgICBjb3VudCsrOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDc5MWZhZjUzMjMwMzBkNjA0YjA0YjI3N2VlZWIwZTUz
MTU4OGY1NzkuLmJmNmNlYTEyM2NiZjU4MTg3NDAyOWVlYWM1OGY4MDA4NTg0ZTQ2NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaApAQCAtMzE4LDcgKzMxOCw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0
eU5hbWUgOiB1aW50MTZfdCB7CiB9OwogCiB1c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0g
c3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQs
IGRvdWJsZSwgZmxvYXQsIHVpbnQ2NF90LCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9hdFJl
Y3QsIFBBTDo6U2Vzc2lvbklELCBJbnRQb2ludCwgT3B0aW9uU2V0PFNwZWFrQXM+LCBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiwgVmVjdG9y
PEFYSUQ+LCBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmluZz4sIFBh
dGg+OwotdXNpbmcgQVhQcm9wZXJ0eU1hcCA9IEhhc2hNYXA8QVhQcm9wZXJ0eU5hbWUsIEFYUHJv
cGVydHlWYWx1ZVZhcmlhbnQsIFdURjo6SW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6U3Ry
b25nRW51bUhhc2hUcmFpdHM8QVhQcm9wZXJ0eU5hbWU+PjsKK3VzaW5nIEFYUHJvcGVydHlNYXAg
PSBIYXNoTWFwPEFYUHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWYXJpYW50LCBJbnRIYXNo
PEFYUHJvcGVydHlOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxBWFByb3BlcnR5TmFt
ZT4+OwogCiBzdHJ1Y3QgQVhQcm9wZXJ0eUNoYW5nZSB7CiAgICAgQVhJRCBheElEIHsgSW52YWxp
ZEFYSUQgfTsgLy8gSUQgb2YgdGhlIG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGNoYW5nZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApp
bmRleCA0ZDM0MmMwZDE3ZmRjNTg2NDAzYzBhMjg4ODZmMmNjMTYzOTI2MjFiLi4yYjBhYzljZTU5
NjUyNjI5MWRkMzkzMmYwNzcwOWMzMmZmYTkxNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTIzNDgsNyArMjM0OCw3IEBA
IHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBjSW52YWxpZFByb3Bl
cnR5V3JhcHBlckluZGV4ID0gVUNIQVJfTUFYOwogCi0gICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2
ZXJEZXN0cm95ZWQ8Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwPjsKKyAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwPjsKIH07
CiAKIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25X
cmFwcGVyTWFwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5l
LmNwcAppbmRleCBlZGMwMmViNGI3Njg0YjE4MjhhMGMwOGExMTZmNjE1YWMyODNkNDUwLi4wNWMx
OTFmM2Q4MmRkOGVjZDZkNjc5OWFhZjFkYWExNGY3NjgzMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgYm9v
bCBEb2N1bWVudFRpbWVsaW5lOjphbmltYXRpb25DYW5CZVJlbW92ZWQoV2ViQW5pbWF0aW9uJiBh
bmltYXRpb24pCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbldp
dGhIaWdoZXJDb21wb3NpdGVPcmRlciA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UoYW5pbWF0aW9u
cykpIHsKKyAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbldpdGhIaWdoZXJDb21wb3NpdGVPcmRlciA6
IG1ha2VSZXZlcnNlZFJhbmdlKGFuaW1hdGlvbnMpKSB7CiAgICAgICAgIGlmICgmYW5pbWF0aW9u
ID09IGFuaW1hdGlvbldpdGhIaWdoZXJDb21wb3NpdGVPcmRlcikKICAgICAgICAgICAgIGJyZWFr
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAppbmRleCAzYjVhOTQ5MWI5YWYwNWQ0ZmJi
ZTlmMGQzMDYyMGU5ODRiOTkzOTQxLi5mZDA5OWY1NDM3OGExOTk1ZDNmMTQ3ODg5OTc1ODBjY2M4
ZWY5YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAgLTIyMCwxMiArMjIwLDEy
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExGcm96ZW5BcnJheSA6IElETFR5cGU8
VmVjdG9yPHR5cGVuYW1lIFQ6OkltcGxlbWVuCiAgICAgdXNpbmcgTnVsbGFibGVQYXJhbWV0ZXJU
eXBlID0gY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dHlwZW5hbWUgVDo6SW1wbGVtZW50YXRp
b25UeXBlPj4mOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gc3RydWN0
IElETFJlY29yZCA6IElETFR5cGU8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPHR5cGVuYW1lIEs6
OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4+IHsK
K3RlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+IHN0cnVjdCBJRExSZWNvcmQgOiBJRExU
eXBlPFZlY3RvcjxLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgSzo6SW1wbGVtZW50YXRpb25UeXBlLCB0
eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+Pj4gewogICAgIHVzaW5nIEtleVR5cGUgPSBL
OwogICAgIHVzaW5nIFZhbHVlVHlwZSA9IFY7CiAKLSAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0g
Y29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9u
VHlwZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4mOwotICAgIHVzaW5nIE51bGxh
YmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdURjo6S2V5VmFs
dWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5hbWUgVjo6SW1wbGVt
ZW50YXRpb25UeXBlPj4+JjsKKyAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmVjdG9y
PEtleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6
OkltcGxlbWVudGF0aW9uVHlwZT4+JjsKKyAgICB1c2luZyBOdWxsYWJsZVBhcmFtZXRlclR5cGUg
PSBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgSzo6SW1w
bGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+Pj4mOwogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFByb21pc2UgOiBJRExXcmFwcGVyPERP
TVByb21pc2U+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVBy
b21pc2VQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5
LmgKaW5kZXggM2JkNTBhZWE1ZTg3OTgwY2JkNjU5ODYxMTQzNGYyYmE2NjQwMDhhMS4uODAyNDkw
NTNkNTg5N2I2NjZkYWY1MDgxZTYyMzE2Yzk4ZjZiZDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKQEAgLTg2LDcgKzg2LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4KIGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJh
Y2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHVzaW5nIFJl
c29sdmVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVy
VHlwZSAoKT47CisgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNrID0gRnVuY3Rpb248dHlwZW5hbWUg
SURMVHlwZTo6UGFyYW1ldGVyVHlwZSgpPjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFz
cywgdHlwZW5hbWUgQmFzZUNsYXNzPgogICAgIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2Fs
bGJhY2soQ2xhc3MmLCB0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIChCYXNlQ2xhc3M6
OiopKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAppbmRleCA2
Y2VkZDc2NjQ1ZWM0ZjViZjQ2MDkzMmI2YTZkMTczMzdhZDgxNDBhLi43NWE2NWY4YTkyY2M0OTk4
NDk2NDYzZjVlY2E0ODNiYmNlMGI5MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBHQ0NvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEdDQ29udHJvbGxlcik7Ci0gICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2
ZXJEZXN0cm95ZWQ8R0NDb250cm9sbGVyPjsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95
ZWQ8R0NDb250cm9sbGVyPjsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgR0ND
b250cm9sbGVyJiBzaW5nbGV0b24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKaW5kZXggYTk4YTk3NzA3YzY0
OGQzZTgwOGI4ZDI0ZjY3YjZmYWNkNjYyNTQ2OC4uODIzNDVkMmU0YTNmZTE3OGRkNGNkMmE2Y2Y2
YmQ0MmVjZmM0NmU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgZWxlbWVudC5zZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KCp0aGlzKTsKIH0KIAotdm9p
ZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZUNhbGxiYWNrKEVsZW1lbnQmIGVsZW1l
bnQsIEpTT2JqZWN0KiBjYWxsYmFjaywgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEpTR2xvYmFs
T2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpPiYgYWRk
QXJndW1lbnRzKQordm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZUNhbGxiYWNr
KEVsZW1lbnQmIGVsZW1lbnQsIEpTT2JqZWN0KiBjYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9p
ZChKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgTWFya2VkQXJndW1lbnRCdWZm
ZXImKT4mIGFkZEFyZ3VtZW50cykKIHsKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tRWxlbWVudEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmgKaW5kZXggMzk5ZjJjMjA1MmY3ZmYzNzU0YzM3OTRkYjlh
YTYyODI1NDRhYjI4ZS4uNDZmZWI4N2M1MzZmNzYyZDY1NjVhODIwYTM2MzRiOTdlNWEyYTdmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxFbGVt
ZW50PiB0cnlUb0NvbnN0cnVjdEN1c3RvbUVsZW1lbnQoRG9jdW1lbnQmLCBjb25zdCBBdG9tU3Ry
aW5nJik7CiAKLSAgICB2b2lkIGludm9rZUNhbGxiYWNrKEVsZW1lbnQmLCBKU0M6OkpTT2JqZWN0
KiBjYWxsYmFjaywgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0RPTUdsb2JhbE9iamVjdCosIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImKT4mIGFkZEFy
Z3VtZW50cyA9IFtdKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIEpT
Qzo6TWFya2VkQXJndW1lbnRCdWZmZXImKSB7IH0pOworICAgIHZvaWQgaW52b2tlQ2FsbGJhY2so
RWxlbWVudCYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIEpTQzo6TWFya2VkQXJndW1l
bnRCdWZmZXImKT4mIGFkZEFyZ3VtZW50cyA9IFtdKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCosIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImKSB7IH0pOwogCiAgICAg
UXVhbGlmaWVkTmFtZSBtX25hbWU7CiAgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fY29u
c3RydWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5o
CmluZGV4IGJiYzFjY2YyNDcxZGIyZTQ5Mjg2NjM4YTVjYzMxMWIxZjQzNGRkMmUuLjUyNWRkOTlm
YTQ5YTY0MzkyZTUxNjdiMTg0MzQ4YzI0MzdjYWE0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJvdGVjdGVk
OgogICAgIFJlZlB0cjxKU0M6OldhdGNocG9pbnRTZXQ+IG1fd2luZG93Q2xvc2VXYXRjaHBvaW50
czsKIAogcHJpdmF0ZToKLSAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKKyAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChjb25zdCBjaGFyKiwgc2l6ZV90KT47CiAKICAgICBSZWZQdHI8RE9N
V2luZG93PiBtX3dyYXBwZWQ7CiAgICAgUmVmUHRyPEV2ZW50PiBtX2N1cnJlbnRFdmVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmFsdWVJbldyYXBwZWRPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmFsdWVJbldyYXBwZWRPYmplY3Qu
aAppbmRleCBkOTBjMGRlYzVkMjEwNWQ2YWNlY2MzMGYxZWZkZWNiYzY2ZGI1NjljLi43OTcwMmVi
YWVjZjNkZjU4ZGEwMmIwNmIwZDBkYzlkNTU3MGFmYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oCkBAIC01Myw3ICs1Myw3
IEBAIHByaXZhdGU6CiAgICAgVmFsdWUgbV92YWx1ZTsKIH07CiAKLUpTQzo6SlNWYWx1ZSBjYWNo
ZWRQcm9wZXJ0eVZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBKU0RPTU9iamVjdCYg
b3duZXIsIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGNhY2hlU2xvdCwgY29uc3QgV1RGOjpGdW5j
dGlvbjxKU0M6OkpTVmFsdWUoKT4mKTsKK0pTQzo6SlNWYWx1ZSBjYWNoZWRQcm9wZXJ0eVZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBKU0RPTU9iamVjdCYgb3duZXIsIEpTVmFsdWVJ
bldyYXBwZWRPYmplY3QmIGNhY2hlU2xvdCwgY29uc3QgRnVuY3Rpb248SlNDOjpKU1ZhbHVlKCk+
Jik7CiAKIGlubGluZSBhdXRvIEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6Om1ha2VWYWx1ZShKU0M6
OkpTVmFsdWUgdmFsdWUpIC0+IFZhbHVlCiB7CkBAIC0xMTgsNyArMTE4LDcgQEAgaW5saW5lIHZv
aWQgSlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6Y2xlYXIoKQogICAgIH0sIFtdIChhdXRvJikgeyB9
KTsKIH0KIAotaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWNoZWRQcm9wZXJ0eVZhbHVlKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTRE9NT2JqZWN0JiBvd25l
ciwgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgY2FjaGVkVmFsdWUsIGNvbnN0IFdURjo6RnVuY3Rp
b248SlNDOjpKU1ZhbHVlKCk+JiBmdW5jdGlvbikKK2lubGluZSBKU0M6OkpTVmFsdWUgY2FjaGVk
UHJvcGVydHlWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
b25zdCBKU0RPTU9iamVjdCYgb3duZXIsIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGNhY2hlZFZh
bHVlLCBjb25zdCBGdW5jdGlvbjxKU0M6OkpTVmFsdWUoKT4mIGZ1bmN0aW9uKQogewogICAgIGlm
IChjYWNoZWRWYWx1ZSAmJiBpc1dvcmxkQ29tcGF0aWJsZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
YWNoZWRWYWx1ZSkpCiAgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBiZjVkNTVmYWIzNGM3OTdm
OTRhYjhhNWNjZDA5YjE1ZWNjOTlhMDYwLi5kYWY5ZWFkMjFjZDgzY2NmMDUzMWVhZmE2MTM3ZmYw
NzE4OGY2NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIEpTQzo6SlNWYWx1ZSBldmFs
dWF0ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6OkpTTW9kdWxlUmVjb3JkJiwgRE9NV3JhcHBlcldv
cmxkJiwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1vZGUp
OwogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6OkpTTW9k
dWxlUmVjb3JkJiwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3Vt
ZU1vZGUpOwogCi0gICAgV1RGOjpUZXh0UG9zaXRpb24gZXZlbnRIYW5kbGVyUG9zaXRpb24oKSBj
b25zdDsKKyAgICBUZXh0UG9zaXRpb24gZXZlbnRIYW5kbGVyUG9zaXRpb24oKSBjb25zdDsKIAog
ICAgIHZvaWQgZW5hYmxlRXZhbCgpOwogICAgIHZvaWQgZW5hYmxlV2ViQXNzZW1ibHkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgKaW5kZXggN2IxMmZlYmMyMGFkNGI1YTBiNzA0M2Ew
YTA2YTA2NDk1ZjVkZTBhOC4uYmY5YTM3NDE0YzZiMmEyOTUyZmJjODhmMTA4Y2JmYTE2Y2M0NjAy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xh
c3MgUm9vdE9iamVjdDsKICAgICAKIHR5cGVkZWYgdWludDE2X3QgTlBVVEYxNjsKIAotV1RGOjpT
dHJpbmcgY29udmVydE5QU3RyaW5nVG9VVEYxNihjb25zdCBOUFN0cmluZyAqc3RyaW5nKTsKK1N0
cmluZyBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KGNvbnN0IE5QU3RyaW5nICopOwogdm9pZCBjb252
ZXJ0VmFsdWVUb05QVmFyaWFudChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIE5QVmFyaWFudCog
cmVzdWx0KTsKIEpTVmFsdWUgY29udmVydE5QVmFyaWFudFRvVmFsdWUoSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBOUFZhcmlhbnQqLCBSb290T2JqZWN0Kik7CiBJZGVudGlmaWVyIGlkZW50aWZpZXJG
cm9tTlBJZGVudGlmaWVyKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgTlBVVEY4KiBuYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmls
dGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZp
bHRlcnMuY3BwCmluZGV4IDAxY2YxOTQ3ZDMxNDhmMWEwZDdkOWQzMTI3MDhlMmQwYjMzNGNlMDMu
LjRkYTk4OGM1MjFkMTI5Yjc1YjQ5ODA1Y2VlYjVmYjA0ZWZhNmU2YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgUHJlZml4VHJlZUVkZ2UgewogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcmVmaXhUcmVlVmVydGV4PiBjaGlsZDsKIH07CiAgICAgCi10eXBlZGVmIFZlY3Rv
cjxQcmVmaXhUcmVlRWRnZSwgMCwgV1RGOjpDcmFzaE9uT3ZlcmZsb3csIDE+IFByZWZpeFRyZWVF
ZGdlczsKK3R5cGVkZWYgVmVjdG9yPFByZWZpeFRyZWVFZGdlLCAwLCBDcmFzaE9uT3ZlcmZsb3cs
IDE+IFByZWZpeFRyZWVFZGdlczsKIAogc3RydWN0IFByZWZpeFRyZWVWZXJ0ZXggewogICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IFJl
dmVyc2VTdWZmaXhUcmVlRWRnZSB7CiAgICAgY29uc3QgVGVybSogdGVybTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmV2ZXJzZVN1ZmZpeFRyZWVWZXJ0ZXg+IGNoaWxkOwogfTsKLXR5cGVkZWYgVmVj
dG9yPFJldmVyc2VTdWZmaXhUcmVlRWRnZSwgMCwgV1RGOjpDcmFzaE9uT3ZlcmZsb3csIDE+IFJl
dmVyc2VTdWZmaXhUcmVlRWRnZXM7Cit0eXBlZGVmIFZlY3RvcjxSZXZlcnNlU3VmZml4VHJlZUVk
Z2UsIDAsIENyYXNoT25PdmVyZmxvdywgMT4gUmV2ZXJzZVN1ZmZpeFRyZWVFZGdlczsKIAogc3Ry
dWN0IFJldmVyc2VTdWZmaXhUcmVlVmVydGV4IHsKICAgICBSZXZlcnNlU3VmZml4VHJlZUVkZ2Vz
IGVkZ2VzOwpAQCAtMTk1LDE0ICsxOTUsMTQgQEAgdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OmFk
ZFBhdHRlcm4odWludDY0X3QgYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxUZXJtPiYgcGF0dGUKICAg
ICBQcmVmaXhUcmVlVmVydGV4KiBsYXN0UHJlZml4VHJlZSA9IG1fcHJlZml4VHJlZVJvb3QuZ2V0
KCk7CiAKICAgICBmb3IgKGNvbnN0IFRlcm0mIHRlcm0gOiBwYXR0ZXJuKSB7Ci0gICAgICAgIHNp
emVfdCBuZXh0RW50cnlJbmRleCA9IFdURjo6bm90Rm91bmQ7CisgICAgICAgIHNpemVfdCBuZXh0
RW50cnlJbmRleCA9IG5vdEZvdW5kOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxh
c3RQcmVmaXhUcmVlLT5lZGdlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKCpsYXN0
UHJlZml4VHJlZS0+ZWRnZXNbaV0udGVybSA9PSB0ZXJtKSB7CiAgICAgICAgICAgICAgICAgbmV4
dEVudHJ5SW5kZXggPSBpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIGlmIChuZXh0RW50cnlJbmRleCAhPSBXVEY6Om5vdEZvdW5kKQor
ICAgICAgICBpZiAobmV4dEVudHJ5SW5kZXggIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBsYXN0
UHJlZml4VHJlZSA9IGxhc3RQcmVmaXhUcmVlLT5lZGdlc1tuZXh0RW50cnlJbmRleF0uY2hpbGQu
Z2V0KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2Vz
LmFwcGVuZChQcmVmaXhUcmVlRWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgbWFrZVVu
aXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpfSkpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgQ29t
YmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25zdCBWZWN0
b3I8VGVybT4mIHBhdHRlCiAKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYWN0aW9ucy5hZGQobGFz
dFByZWZpeFRyZWUsIEFjdGlvbkxpc3QoKSk7CiAgICAgQWN0aW9uTGlzdCYgYWN0aW9ucyA9IGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKGFjdGlvbnMuZmluZChhY3Rpb25JZCkg
PT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAoYWN0aW9ucy5maW5kKGFjdGlvbklkKSA9PSBub3RG
b3VuZCkKICAgICAgICAgYWN0aW9ucy5hcHBlbmQoYWN0aW9uSWQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmNwcAppbmRleCAwYjQwMjcyNzA1ZjExMmQ1ODVkZDVmODIyMGRmMGI1ZjhiMzEy
MjQ0Li4yNTExZThlZjU1Yjc4ZmRmOTg1MTUzYTJlOGU2ZjVhNDQ2ZjU1MWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBhdXRvIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUxvYWRJbmZv
JiByZQogICAgIHJldHVybiBhY3Rpb25zVmVjdG9yOwogfQogCi12b2lkIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZDo6Zm9yRWFjaChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
JiwgQ29udGVudEV4dGVuc2lvbiYpPiYgYXBwbHkpCit2b2lkIENvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZDo6Zm9yRWFjaChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRF
eHRlbnNpb24mKT4mIGFwcGx5KQogewogICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29udGVudEV4
dGVuc2lvbnMpCiAgICAgICAgIGFwcGx5KHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zRGVi
dWdnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uc0RlYnVnZ2luZy5oCmluZGV4IDZiYjE5MjhjYWUxOWM4N2FmNTZmNjQ4ZWZkY2YwOTkzZmMy
NzRkYmMuLmRlNGE1MGI2MTMyMzU2ZjBlZjQ5ZDdhOWE4MzEwNTgxZGQyNzUzMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zRGVi
dWdnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbnNEZWJ1Z2dpbmcuaApAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBDT05URU5UX0VY
VEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HIDAKIAogI2lmIENPTlRFTlRfRVhURU5TSU9O
U19TVEFURV9NQUNISU5FX0RFQlVHR0lORwotdHlwZWRlZiBXVEY6OkNyYXNoT25PdmVyZmxvdyBD
b250ZW50RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxlcjsKK3R5cGVkZWYgQ3Jhc2hPbk92ZXJmbG93
IENvbnRlbnRFeHRlbnNpb25zT3ZlcmZsb3dIYW5kbGVyOwogI2Vsc2UKIHR5cGVkZWYgVW5zYWZl
VmVjdG9yT3ZlcmZsb3cgQ29udGVudEV4dGVuc2lvbnNPdmVyZmxvd0hhbmRsZXI7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcApp
bmRleCA3MmU3NjE4MTVkMTNjNzk2MjRlYTY5YzM5Y2E3NWE5ODEzODRhNjE5Li44ODc1NTk2ODRi
YjU0ZjZmNjg2ZjQwOTFiZTIwMjE2MDllMGU2MTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8dWludDY0X3QsIDAsIENvbnRlbnRFeHRlbnNpb25zT3ZlcmZsb3dI
YW5kbGVyPiBtX3VucHJvY2Vzc2VkTm9kZXM7CiB9OwogCi12b2lkIERGQUNvbWJpbmVyOjpjb21i
aW5lREZBcyh1bnNpZ25lZCBtaW5pbXVtU2l6ZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERG
QSYmKT4mIGhhbmRsZXIpCit2b2lkIERGQUNvbWJpbmVyOjpjb21iaW5lREZBcyh1bnNpZ25lZCBt
aW5pbXVtU2l6ZSwgY29uc3QgRnVuY3Rpb248dm9pZChERkEmJik+JiBoYW5kbGVyKQogewogICAg
IGlmIChtX2RmYXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuaAppbmRleCBhMjdhODdhZTQzNWM4MDFk
Yzc2YzA0ZTFmN2JiZTBhOGM1MWUxZWY5Li40N2NkYmI1ZjFjYjM1MWI5MzgzZjc2NWExNjVkMTcw
YTI1MjJkZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9E
RkFDb21iaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNv
bWJpbmVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIERGQUNvbWJpbmVyIHsKIHB1YmxpYzoKICAgICB2b2lkIGFk
ZERGQShERkEmJik7Ci0gICAgdm9pZCBjb21iaW5lREZBcyh1bnNpZ25lZCBtaW5pbXVtU2l6ZSwg
Y29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERGQSYmKT4mIGhhbmRsZXIpOworICAgIHZvaWQgY29t
YmluZURGQXModW5zaWduZWQgbWluaW11bVNpemUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoREZBJiYp
PiYgaGFuZGxlcik7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPERGQT4gbV9kZmFzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1
aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5v
ZGVCdWlsZGVyLmgKaW5kZXggOTI0OGFjMDgyNzRlODMyNjEyYzk2YmNmMGM0YzU1MTlmYWNjOTY4
Yy4uNzJiODY3N2FjZDMzNjFlNzk2NTU2NDQ2NzMzOWY5Y2VlM2QzZWRjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2Rl
QnVpbGRlci5oCkBAIC0yMTgsNyArMjE4LDcgQEAgcHJpdmF0ZToKICAgICBUeXBlZEltbXV0YWJs
ZU5GQSogbV9pbW11dGFibGVORkEgeyBudWxscHRyIH07CiAgICAgTXV0YWJsZVJhbmdlTGlzdDxD
aGFyYWN0ZXJUeXBlLCBUYXJnZXRTZXQ+IG1fcmFuZ2VzOwogICAgIFRhcmdldFNldCBtX2Vwc2ls
b25UcmFuc2l0aW9uVGFyZ2V0czsKLSAgICBIYXNoU2V0PEFjdGlvblR5cGUsIFdURjo6SW50SGFz
aDxBY3Rpb25UeXBlPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxBY3Rpb25U
eXBlPj4gbV9hY3Rpb25zOworICAgIEhhc2hTZXQ8QWN0aW9uVHlwZSwgSW50SGFzaDxBY3Rpb25U
eXBlPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxBY3Rpb25UeXBlPj4gbV9h
Y3Rpb25zOwogICAgIHVpbnQzMl90IG1fbm9kZUlkOwogICAgIGJvb2wgbV9maW5hbGl6ZWQgeyB0
cnVlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
TkZBTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oCmlu
ZGV4IGFhYWVkMzExNDAzM2I0MzMzYmIxMDUxNDU5OGQzOWU0NjBiOWMzYjIuLjVlZDlmZjQyY2Y0
MjVlMzEyZWE4M2MyZDAwMDYxZjFjYzA1MTczNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ORkFOb2RlLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIENvbnRlbnRF
eHRlbnNpb25zIHsKIAogLy8gQSBORkFOb2RlIGFic3RyYWN0IHRoZSB0cmFuc2l0aW9uIHRhYmxl
IG91dCBvZiBhIE5GQSBzdGF0ZS4KIAotdHlwZWRlZiBWZWN0b3I8dWludDY0X3QsIDAsIFdURjo6
Q3Jhc2hPbk92ZXJmbG93LCAxPiBBY3Rpb25MaXN0OwordHlwZWRlZiBWZWN0b3I8dWludDY0X3Qs
IDAsIENyYXNoT25PdmVyZmxvdywgMT4gQWN0aW9uTGlzdDsKIHR5cGVkZWYgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4gTkZBTm9kZUluZGV4U2V0OwogdHlwZWRlZiBIYXNoTWFwPHVpbnQx
Nl90LCBORkFOb2RlSW5kZXhTZXQsIERlZmF1bHRIYXNoPHVpbnQxNl90PiwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MTZfdD4+IE5GQU5vZGVUcmFuc2l0aW9uczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5oIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5oCmluZGV4IDQ5MzBmNDY3ZmQ5NTEw
ODU3ZDg0MThmZjM3YWE1ZGNlYmI2YjBhZTguLmYwNjJlZmNlNzJlMzJmZWJmODZiYjIzYzRiY2U2
Yjc4YzJkYTgzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L1Rlcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKQEAg
LTU1Nyw3ICs1NTcsNyBAQCBpbmxpbmUgdW5zaWduZWQgVGVybTo6aGFzaCgpIGNvbnN0CiAgICAg
ICAgIHNlY29uZGFyeSA9IG1fYXRvbURhdGEuZ3JvdXAuaGFzaCgpOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgcmV0dXJuIFdURjo6cGFpckludEhhc2gocHJpbWFyeSwgc2Vjb25kYXJ5KTsK
KyAgICByZXR1cm4gcGFpckludEhhc2gocHJpbWFyeSwgc2Vjb25kYXJ5KTsKIH0KIAogaW5saW5l
IGJvb2wgVGVybTo6aXNFbXB0eVZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobS5jcHAKaW5kZXggYjE2OGFkYTM0Y2ZkNTA4YTk3YzExNjlmOGIzODU3ZTAw
ZmQ2Y2FhYi4uNDgxYmJmMWM5ZjZlNzhlYTRiYjJkNzMxNjUyMDM5Mzg0ZTZhMDcxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKQEAgLTEwOCwxMiArMTA4LDEy
IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKFdvcmtRdWV1ZSYgd29y
a1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250CiAgICAgICAgIH0pOwogfQogCi12b2lkIENyeXB0
b0FsZ29yaXRobTo6ZGlzcGF0Y2hPcGVyYXRpb25JbldvcmtRdWV1ZShXb3JrUXVldWUmIHdvcmtR
dWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgV1RGOjpGdW5j
dGlvbjxFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+KCk+JiYgb3BlcmF0aW9uKQordm9pZCBD
cnlwdG9BbGdvcml0aG06OmRpc3BhdGNoT3BlcmF0aW9uSW5Xb3JrUXVldWUoV29ya1F1ZXVlJiB3
b3JrUXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIEZ1bmN0
aW9uPEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4oKT4mJiBvcGVyYXRpb24pCiB7CiAgICAg
ZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIFdURk1vdmUob3BlcmF0aW9uKSk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaXNwYXRjaE9wZXJhdGlvbkluV29ya1F1ZXVl
KFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBC
b29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxs
YmFjaywgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25Pcjxib29sPigpPiYmIG9wZXJhdGlvbikKK3Zv
aWQgQ3J5cHRvQWxnb3JpdGhtOjpkaXNwYXRjaE9wZXJhdGlvbkluV29ya1F1ZXVlKFdvcmtRdWV1
ZSYgd29ya1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBCb29sQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgRnVu
Y3Rpb248RXhjZXB0aW9uT3I8Ym9vbD4oKT4mJiBvcGVyYXRpb24pCiB7CiAgICAgZGlzcGF0Y2hB
bGdvcml0aG1PcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwg
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIFdURk1vdmUob3BlcmF0aW9uKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKaW5kZXggYjljNGQ0YmU0YzJkMWI4MjEy
NWVjNGFmYmE2YjI0MmRkOTA0OGIzZS4uNDBkYmIwYWQ2MWIwZjdhZjYzYWZmNGE5NjA4NzI4MGFk
ZDJmZjQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaApAQCAtNTQs
MTQgKzU0LDE0IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgPSAwOwogCi0gICAgdXNpbmcgQm9vbENhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPjsKLSAgICB1c2luZyBLZXlDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChDcnlwdG9LZXkmKT47Ci0gICAgdXNpbmcgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoS2V5T3JLZXlQYWlyJiYpPjsKKyAgICB1c2luZyBCb29s
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wpPjsKKyAgICB1c2luZyBLZXlDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoQ3J5cHRvS2V5Jik+OworICAgIHVzaW5nIEtleU9yS2V5UGFpckNhbGxi
YWNrID0gRnVuY3Rpb248dm9pZChLZXlPcktleVBhaXImJik+OwogICAgIC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Mzk1Ci0gICAgdXNpbmcgVmVj
dG9yQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik+
OwotICAgIHVzaW5nIFZvaWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCgpPjsKLSAgICB1
c2luZyBFeGNlcHRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Db2Rl
KT47Ci0gICAgdXNpbmcgS2V5RGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENyeXB0
b0tleUZvcm1hdCwgS2V5RGF0YSYmKT47CisgICAgdXNpbmcgVmVjdG9yQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpPjsKKyAgICB1c2luZyBWb2lkQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKCk+OworICAgIHVzaW5nIEV4Y2VwdGlvbkNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChFeGNlcHRpb25Db2RlKT47CisgICAgdXNpbmcgS2V5RGF0YUNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJik+OwogCiAgICAgdmlydHVh
bCB2b2lkIGVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIFJlZjxDcnlw
dG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25D
YWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CiAgICAgdmly
dHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIFJlZjxD
cnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRp
b25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CkBAIC03
Nyw4ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW53cmFwS2V5KFJlZjxDcnlw
dG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25D
YWxsYmFjayYmKTsKICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0S2V5TGVuZ3Ro
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKTsKIAotICAgIHN0YXRpYyB2b2lkIGRp
c3BhdGNoT3BlcmF0aW9uSW5Xb3JrUXVldWUoV29ya1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFdURjo6RnVuY3Rp
b248RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PigpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBk
aXNwYXRjaE9wZXJhdGlvbkluV29ya1F1ZXVlKFdvcmtRdWV1ZSYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgV1RGOjpGdW5jdGlv
bjxFeGNlcHRpb25Pcjxib29sPigpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaE9wZXJh
dGlvbkluV29ya1F1ZXVlKFdvcmtRdWV1ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0
b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBGdW5jdGlvbjxFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+KCk+JiYpOworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoT3BlcmF0aW9u
SW5Xb3JrUXVldWUoV29ya1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEJvb2xDYWxs
YmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBGdW5jdGlvbjxFeGNlcHRpb25Pcjxib29sPigp
PiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2tleXMvQ3J5cHRvS2V5UlNBLmgKaW5kZXggMGJiMGFhZTcyYjFiZDdhZDQ1N2IwMjk0NjA3ZWZj
YWYyMjAzNzQxMS4uN2UxNGVlNTJkNTYzMzlhYTdkZjA0NjNjNDEyNjgzZTdkYzllYjgxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKQEAgLTc4LDggKzc4LDgg
QEAgcHVibGljOgogCiAgICAgc2l6ZV90IGtleVNpemVJbkJpdHMoKSBjb25zdDsKIAotICAgIHVz
aW5nIEtleVBhaXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDcnlwdG9LZXlQYWlyJiYp
PjsKLSAgICB1c2luZyBWb2lkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47CisgICAg
dXNpbmcgS2V5UGFpckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDcnlwdG9LZXlQYWlyJiYpPjsK
KyAgICB1c2luZyBWb2lkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHN0YXRpYyB2
b2lkIGdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgdW5zaWduZWQgbW9kdWx1c0xlbmd0aCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwdWJsaWNFeHBvbmVudCwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgUmVm
UHRyPENyeXB0b0tleVJTQT4gaW1wb3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgSnNvbldlYktleSYm
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAgICAgc3RhdGljIFJl
ZlB0cjxDcnlwdG9LZXlSU0E+IGltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWlu
dDhfdD4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKaW5kZXggMmRmZjViMTUxNWMyOWE2MDdk
ZDA4MThmMDE4MGU4M2NlZGI3NzczMi4uNzdhMWEyMDhjNzUyMmU2ZmY3MjFmZjYxNWRmM2ZjZjli
YzUwNzUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCkBAIC0x
OTMsNyArMTkzLDcgQEAgaW5saW5lIHZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmNyb3NzZmFkZUNo
YW5nZWQoKQogICAgICAgICBjbGllbnQua2V5LT5pbWFnZUNoYW5nZWQodGhpcyk7CiB9CiAKLWJv
b2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVu
Y3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0Citib29s
IENTU0Nyb3NzZmFkZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxi
b29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAgIGlmICht
X2NhY2hlZEZyb21JbWFnZSAmJiBoYW5kbGVyKCptX2NhY2hlZEZyb21JbWFnZSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAppbmRleCA5
NDllZDQxYTA0NWFlN2FmOTlhYWQ2YmQwYTdiM2ZiMWQ2MmY2MTA5Li44NDJiZWMzYTQ4OWRiYjJj
YTIyMjlkZTFhZjMwMWZhNDRmYmRkZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Jvc3NmYWRlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRTdWJpbWFn
ZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsK
IAotICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29s
IChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CisgICAgYm9vbCB0cmF2
ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNl
Jik+JiBoYW5kbGVyKSBjb25zdDsKIAogICAgIFJlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gYmxl
bmQoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDhj
ZjkwOWFlOWU1MzcyNGI5MWRiNGFjZTE0YWUyODU3MWRkOTU1MjYuLmM2N2EzNWIwNzE1YjcyMWVk
ODk5MmRlY2Q0OWZhOGQwYjgwNjQ3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIENTU0ZpbHRlckltYWdlVmFs
dWU6OkZpbHRlclN1YmltYWdlT2JzZXJ2ZXJQcm94eTo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdl
KgogICAgICAgICBtX293bmVyVmFsdWUtPmZpbHRlckltYWdlQ2hhbmdlZCgqcmVjdCk7CiB9CiAK
LWJvb2wgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RG
OjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QK
K2Jvb2wgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVu
Y3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKIHsKICAg
ICBpZiAoIW1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCmluZGV4IDUwNGMyYWQ4ZDE1Y2I0YzUzZTI0Mjkz
MTAzZDIxZDZhM2MwMjY4NjguLjMzYzIyMDA4NmM5OGZmNzIyOWYwNmYzMWU4MDYxZmRjMDJjZmY1
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaApAQCAtNjQsNyAr
NjQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VM
b2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKIAotICAgIGJvb2wgdHJhdmVy
c2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNv
dXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CisgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhj
b25zdCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25z
dDsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0ZpbHRlckltYWdlVmFsdWUmKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDU2NDI0
NGY3OTA1YTI3NWJmMTU0NjM0NTY4Y2YzZmZjMDRhY2U2YTkuLjMwNWMzMmVhODBjY2U1OTBiNGI2
MWQwNWQ5YTUwYzJmNjJlOWQ2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
cmNWYWx1ZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgU3RyaW5nIENTU0ZvbnRGYWNlU3JjVmFsdWU6
OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJldHVybiBtYWtlU3RyaW5nKHByZWZpeCwgc2Vy
aWFsaXplU3RyaW5nKG1fcmVzb3VyY2UpLCAiKSIsICIgZm9ybWF0KCIsIHNlcmlhbGl6ZVN0cmlu
ZyhtX2Zvcm1hdCksICIpIik7CiB9CiAKLWJvb2wgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6dHJhdmVy
c2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNv
dXJjZSYpPiYgaGFuZGxlcikgY29uc3QKK2Jvb2wgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6dHJhdmVy
c2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYp
PiYgaGFuZGxlcikgY29uc3QKIHsKICAgICBpZiAoIW1fY2FjaGVkRm9udCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKaW5kZXgg
Y2JlMTQxMWU0NmM0ZWQ3NmU3MTFiYzM0MWU2NTk5MDNmNTBmYWJjYi4uZDM0ZGFmY2Y1YWY1ODRm
MDMyYjE3ZmJiNzgyZjJlNTQzNTViODBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0
b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0
IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNv
bnN0OworICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChj
b25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBmb250TG9hZFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGJvb2wgaXNTVkcsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hh
ZG93VHJlZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBmOTc4YTE0
ZTQ1NTFiMjBmYjk3ODFiZjFmNjgwMWJlNGZlMjM5YTA1Li4xNGEwNDU0OWQ0MTA4Y2U1MzI5MjU4
M2IzOGU0NzAzMjdmMTk0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCkBA
IC0xMjgsMTUgKzEyOCwxNSBAQCBwcml2YXRlOgogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9j
c3NGb250RmFjZVNldDsKICAgICBIYXNoU2V0PEZvbnRTZWxlY3RvckNsaWVudCo+IG1fY2xpZW50
czsKIAotICAgIHN0cnVjdCBQYWxldHRlTWFwSGFzaCA6IFdURjo6RGVmYXVsdEhhc2g8c3RkOjpw
YWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiB7CisgICAgc3RydWN0IFBhbGV0dGVNYXBIYXNo
IDogRGVmYXVsdEhhc2g8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiB7CiAgICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9t
U3RyaW5nPiYga2V5KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcGFpckludEhhc2go
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOjpoYXNoKGtleS5maXJzdCksIFdURjo6RGVmYXVsdEhh
c2g8QXRvbVN0cmluZz46Omhhc2goa2V5LnNlY29uZCkpOworICAgICAgICAgICAgcmV0dXJuIHBh
aXJJbnRIYXNoKEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaDo6aGFzaChrZXkuZmlyc3QpLCBEZWZh
dWx0SGFzaDxBdG9tU3RyaW5nPjo6aGFzaChrZXkuc2Vjb25kKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0
cmluZz4mIGEsIGNvbnN0IHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiYgYikKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaDo6ZXF1
YWwoYS5maXJzdCwgYi5maXJzdCkgJiYgV1RGOjpEZWZhdWx0SGFzaDxBdG9tU3RyaW5nPjo6ZXF1
YWwoYS5zZWNvbmQsIGIuc2Vjb25kKTsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g6OmVxdWFsKGEuZmlyc3QsIGIuZmlyc3QpICYmIERlZmF1bHRIYXNoPEF0b21T
dHJpbmc+OjplcXVhbChhLnNlY29uZCwgYi5zZWNvbmQpOwogICAgICAgICB9CiAgICAgfTsKICAg
ICBIYXNoTWFwPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiwgRm9udFBhbGV0dGVW
YWx1ZXMsIFBhbGV0dGVNYXBIYXNoPiBtX3BhbGV0dGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggMTU1MTAxMjgzYzYyNmNhMThhMzNiMDJiYWIxMjc4ZTk2
YjhiMGYzOC4uOWVjNDc4YmRiMWJmMzgwODZlMzBjOGRlNzQ4OGQ1ZmY4YTUzNGRhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIFN0
cmluZyBDU1NJbWFnZVNldFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4g
cmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ1NTSW1hZ2VTZXRWYWx1ZTo6dHJhdmVyc2VT
dWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJj
ZSYpPiYgaGFuZGxlcikgY29uc3QKK2Jvb2wgQ1NTSW1hZ2VTZXRWYWx1ZTo6dHJhdmVyc2VTdWJy
ZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFu
ZGxlcikgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZWxlY3RlZEltYWdlVmFsdWUgJiYgbV9zZWxl
Y3RlZEltYWdlVmFsdWUtPnRyYXZlcnNlU3VicmVzb3VyY2VzKGhhbmRsZXIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKaW5kZXggOTUwMjE3ZDQwNGJmMTQ5MDUyNzA3MjU0
MDYxMTk2MTkwZjE3YmU5Ni4uZjQzYzM5YjJiMDZiOTNiNDY4YzQzMzNiNjVhNGRmYTJkMTcwM2Iz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBib29s
IHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OworICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNv
dXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxl
cikgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZURldmljZVNjYWxlRmFjdG9yKGNvbnN0IERvY3Vt
ZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAppbmRleCBlOThlMjgyN2Nl
MDIxOGFkMjQ1YmYzMTE1YWFkZDg3ZGQ0ZTE1N2EwLi42ZTJlYTBiOGUzM2FjOTM5MmM2MjQ1MTc4
ZmNmZmIyZGQ3Y2ZkZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0x
MjIsNyArMTIyLDcgQEAgQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmxvYWRJbWFnZShDYWNo
ZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXIKICAgICByZXR1cm4gbV9jYWNo
ZWRJbWFnZS52YWx1ZSgpLmdldCgpOwogfQogCi1ib29sIENTU0ltYWdlVmFsdWU6OnRyYXZlcnNl
U3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKT4mIGhhbmRsZXIpIGNvbnN0Citib29sIENTU0ltYWdlVmFsdWU6OnRyYXZlcnNlU3VicmVz
b3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRs
ZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2UudmFsdWVfb3IobnVsbHB0cikg
JiYgaGFuZGxlcigqKm1fY2FjaGVkSW1hZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmgKaW5kZXggMDIwMDU2ZDg0ZmM3MTk3YTM2NWE3ODg1MTUxMzY0NzZhOWVhMWYyMC4uZjQ5Mzdi
ODYxNWM2ZjBjMDA0OTJjMmRkODgyNjBhMjgzM2EwMDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VWYWx1ZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZjxEZXByZWNhdGVk
Q1NTT01WYWx1ZT4gY3JlYXRlRGVwcmVjYXRlZENTU09NV3JhcHBlcihDU1NTdHlsZURlY2xhcmF0
aW9uJikgY29uc3Q7CiAKLSAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6
RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0Owor
ICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBD
YWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhjb25z
dCBDU1NJbWFnZVZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IDFl
ZGUxOGM2Mjc1ZTIwZDNlZTI4ZjgxMGJhYmE2MmJiMjAyZWFjMTcuLjYxYWM3MTFhNzM1MWZkZGRk
ZDdmMjZmNjkwMjgwZDNkODFhNjFmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtMTA3
LDcgKzEwNyw3IEBAIENTU1ZhbHVlOjpUeXBlIENTU1ZhbHVlOjpjc3NWYWx1ZVR5cGUoKSBjb25z
dAogICAgIHJldHVybiBDU1NfQ1VTVE9NOwogfQogCi1ib29sIENTU1ZhbHVlOjp0cmF2ZXJzZVN1
YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNl
Jik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBDU1NWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMo
Y29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29u
c3QKIHsKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0PigqdGhpcykpCiAgICAgICAgIHJldHVybiBk
b3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp0aGlzKS50cmF2ZXJzZVN1YnJlc291cmNlcyhoYW5kbGVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggNWNmZTYwZGVhYjdjYmMzODk0MTQ2ZTVkMTNmYjQ1
MzZiYWU3ZDczMy4uYWU1MDZlZjdjOTk3MjcxMjhhMWQ4MTNjNWQyMjY0YjUwYzdmMzE0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAKICAgICBSZWY8
RGVwcmVjYXRlZENTU09NVmFsdWU+IGNyZWF0ZURlcHJlY2F0ZWRDU1NPTVdyYXBwZXIoQ1NTU3R5
bGVEZWNsYXJhdGlvbiYpIGNvbnN0OwogCi0gICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhj
b25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVy
KSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJv
b2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCiAgICAgLy8gV2hh
dCBwcm9wZXJ0aWVzIGRvZXMgdGhpcyB2YWx1ZSByZWx5IG9uIChlZywgZm9udC1zaXplIGZvciBl
bSB1bml0cykKICAgICB2b2lkIGNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVz
KEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlz
dC5jcHAKaW5kZXggMDU4NjE5NjUyZDgzZDdmZTdiOGY2ZjMzYjFhODdlY2FkZjNkZTJlYy4uMmIy
NDMzZjcyNjEyMDNiNjZhOTVkYjc1YjI0OTUwYzdlMGZkOGFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlTGlzdC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIENTU1ZhbHVlTGlzdDo6ZXF1
YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gbV92YWx1ZXNbMF0u
Z2V0KCkuZXF1YWxzKG90aGVyKTsKIH0KIAotYm9vbCBDU1NWYWx1ZUxpc3Q6OnRyYXZlcnNlU3Vi
cmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2Um
KT4mIGhhbmRsZXIpIGNvbnN0Citib29sIENTU1ZhbHVlTGlzdDo6dHJhdmVyc2VTdWJyZXNvdXJj
ZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikg
Y29uc3QKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgaWYgKG1fdmFsdWVzW2ldLmdldCgpLnRyYXZlcnNlU3VicmVzb3VyY2Vz
KGhhbmRsZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCmluZGV4IDYxYzg2OTY0ZDM1OTBi
MWM3M2NjN2E5OTBhOGM3MDZhMGUxNTYwYjAuLmJiMTI3M2E1ZmQzZWU4ZTY4ODBiYTc2N2FmOTI5
MTdlYmRkYTc0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKQEAgLTY5LDcgKzY5LDcg
QEAgcHVibGljOgogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ZhbHVlTGlzdCYpIGNvbnN0Owog
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ZhbHVlJikgY29uc3Q7CiAKLSAgICBib29sIHRyYXZl
cnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVz
b3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OworICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMo
Y29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29u
c3Q7CiAKICAgICB1bnNpZ25lZCBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlU2Vw
YXJhdG9yOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggOTFi
ZmIyYTRlZmQ3Y2I4ODE3YTg3MzA4ZWM1NjQzNDQwZjlhYTJjYi4uYzZiZTBmYmE2ODhjOGNhMzBi
N2MyZjEzYjNmYmZiMmY5YTE5NTQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5jcHAKQEAgLTEzODgsNyArMTM4OCw3IEBAIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6
bWVyZ2VBbmRPdmVycmlkZU9uQ29uZmxpY3QoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBvCiAgICAg
ICAgIGFkZFBhcnNlZFByb3BlcnR5KG90aGVyLnByb3BlcnR5QXQoaSkudG9DU1NQcm9wZXJ0eSgp
KTsKIH0KIAotYm9vbCBTdHlsZVByb3BlcnRpZXM6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0
IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNv
bnN0Citib29sIFN0eWxlUHJvcGVydGllczo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVu
Y3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKIHsKICAg
ICB1bnNpZ25lZCBzaXplID0gcHJvcGVydHlDb3VudCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAppbmRl
eCA2Y2Q2YmMwN2QyYzIxZGQ1YjA3NDE3MTVlMjZkYzZhOWY3NTc5YzUzLi5mNDg5ZTdlMzI5YTYy
NzE3NmE5MjU0YzE0ZjJlMTgwMjMzZGE3OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5oCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ1NTT01XcmFw
cGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc011dGFibGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkg
PT0gTXV0YWJsZVByb3BlcnRpZXNUeXBlOyB9CiAKLSAgICBib29sIHRyYXZlcnNlU3VicmVzb3Vy
Y2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhh
bmRsZXIpIGNvbnN0OworICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rp
b248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICBz
dGF0aWMgdW5zaWduZWQgYXZlcmFnZVNpemVJbkJ5dGVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5jcHAKaW5kZXggYmE0MzY1M2EwYTE2YmNhOTYwMjE2NzkyNzk1
MDEyYzNhN2MyZTE4MS4uNjliMzA5MzkyYTA1Y2U0ZTYyYzdkYzU2NTNjMDI3Yzc4NGM0ZTk5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKQEAgLTQ1MCw3ICs0
NTAsNyBAQCBEb2N1bWVudCogU3R5bGVTaGVldENvbnRlbnRzOjpzaW5nbGVPd25lckRvY3VtZW50
KCkgY29uc3QKICAgICByZXR1cm4gb3duZXJOb2RlID8gJm93bmVyTm9kZS0+ZG9jdW1lbnQoKSA6
IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBib29sIHRyYXZlcnNlUnVsZXNJblZlY3Rvcihjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIGNvbnN0IFdURjo6RnVuY3Rpb248
Ym9vbCAoY29uc3QgU3R5bGVSdWxlQmFzZSYpPiYgaGFuZGxlcikKK3N0YXRpYyBib29sIHRyYXZl
cnNlUnVsZXNJblZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVs
ZXMsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3R5bGVSdWxlQmFzZSYpPiYgaGFuZGxlcikK
IHsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBydWxlcykgewogICAgICAgICBpZiAoaGFuZGxlcigq
cnVsZSkpCkBAIC00ODMsNyArNDgzLDcgQEAgc3RhdGljIGJvb2wgdHJhdmVyc2VSdWxlc0luVmVj
dG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBydWxlcywgY28KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU3R5bGVTaGVldENvbnRlbnRzOjp0cmF2ZXJzZVJ1bGVz
KGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgU3R5bGVSdWxlQmFzZSYpPiYgaGFuZGxl
cikgY29uc3QKK2Jvb2wgU3R5bGVTaGVldENvbnRlbnRzOjp0cmF2ZXJzZVJ1bGVzKGNvbnN0IEZ1
bmN0aW9uPGJvb2woY29uc3QgU3R5bGVSdWxlQmFzZSYpPiYgaGFuZGxlcikgY29uc3QKIHsKICAg
ICBmb3IgKGF1dG8mIGltcG9ydFJ1bGUgOiBtX2ltcG9ydFJ1bGVzKSB7CiAgICAgICAgIGlmICho
YW5kbGVyKCppbXBvcnRSdWxlKSkKQEAgLTQ5NSw3ICs0OTUsNyBAQCBib29sIFN0eWxlU2hlZXRD
b250ZW50czo6dHJhdmVyc2VSdWxlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IFN0
eWxlUnVsZQogICAgIHJldHVybiB0cmF2ZXJzZVJ1bGVzSW5WZWN0b3IobV9jaGlsZFJ1bGVzLCBo
YW5kbGVyKTsKIH0KIAotYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6OnRyYXZlcnNlU3VicmVzb3Vy
Y2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhh
bmRsZXIpIGNvbnN0Citib29sIFN0eWxlU2hlZXRDb250ZW50czo6dHJhdmVyc2VTdWJyZXNvdXJj
ZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikg
Y29uc3QKIHsKICAgICByZXR1cm4gdHJhdmVyc2VSdWxlcyhbJl0gKGNvbnN0IFN0eWxlUnVsZUJh
c2UmIHJ1bGUpIHsKICAgICAgICAgc3dpdGNoIChydWxlLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCmluZGV4IDNiYzJiZTI4NzA3ZDFiYzcwYmUxZmM2ZDUx
NGJhNDI4ZjQzNWE0OWMuLjUzMDAyNTIzNjRhNjY1MDBkZGFkNzZjYTFmYTk3MmU0YWU2NzZiMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKQEAgLTg3LDggKzg3LDgg
QEAgcHVibGljOgogCiAgICAgYm9vbCBsb2FkQ29tcGxldGVkKCkgY29uc3QgeyByZXR1cm4gbV9s
b2FkQ29tcGxldGVkOyB9CiAKLSAgICBib29sIHRyYXZlcnNlUnVsZXMoY29uc3QgV1RGOjpGdW5j
dGlvbjxib29sIChjb25zdCBTdHlsZVJ1bGVCYXNlJik+JiBoYW5kbGVyKSBjb25zdDsKLSAgICBi
b29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OworICAgIGJvb2wgdHJhdmVyc2VSdWxl
cyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0eWxlUnVsZUJhc2UmKT4mIGhhbmRsZXIpIGNv
bnN0OworICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChj
b25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICB2b2lkIHNldElz
VXNlclN0eWxlU2hlZXQoYm9vbCBiKSB7IG1faXNVc2VyU3R5bGVTaGVldCA9IGI7IH0KICAgICBi
b29sIGlzVXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX2lzVXNlclN0eWxlU2hlZXQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCAwYzc4OGI4OWU5NTNlMGQ2NDUzNTM3OTU5MTg0
NTJmOWIzNGY2YjE4Li5mOTQxOTE3NGY1YTA5ZTVkMGZhOWZlNWQ2ZGU2ZWJhYzUwNDJiYjgwIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC01NjcsNyArNTY3LDcgQEAgU3RyaW5nIGdldEpTUHJv
cGVydHlOYW1lKENTU1Byb3BlcnR5SUQgaWQpCiAgICAgICAgICpyZXN1bHRQb2ludGVyKysgPSBj
aGFyYWN0ZXI7CiAgICAgfQogICAgICpyZXN1bHRQb2ludGVyID0gJ1xcMCc7Ci0gICAgcmV0dXJu
IFdURjo6U3RyaW5nKHJlc3VsdCk7CisgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQpOwogfQogCiBz
dGF0aWMgY29uc3QgYm9vbCBpc0luaGVyaXRlZFByb3BlcnR5VGFibGVbbnVtQ1NTUHJvcGVydGll
cyArICRudW1QcmVkZWZpbmVkUHJvcGVydGllc10gPSB7CkBAIC04NDYsOSArODQ2LDkgQEAgYm9v
bCBpc0ludGVybmFsQ1NTUHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHlJRCk7CiBib29sIGlzRW5h
YmxlZENTU1Byb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5SUQpOwogYm9vbCBpc0NTU1Byb3BlcnR5
RW5hYmxlZEJ5U2V0dGluZ3MoY29uc3QgQ1NTUHJvcGVydHlJRCwgY29uc3QgU2V0dGluZ3MqID0g
bnVsbHB0cik7CiBjb25zdCBjaGFyKiBnZXRQcm9wZXJ0eU5hbWUoQ1NTUHJvcGVydHlJRCk7Ci1j
b25zdCBXVEY6OkF0b21TdHJpbmcmIGdldFByb3BlcnR5TmFtZUF0b21TdHJpbmcoQ1NTUHJvcGVy
dHlJRCBpZCk7Ci1XVEY6OlN0cmluZyBnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlJ
RCBpZCk7Ci1XVEY6OlN0cmluZyBnZXRKU1Byb3BlcnR5TmFtZShDU1NQcm9wZXJ0eUlEKTsKK2Nv
bnN0IEF0b21TdHJpbmcmIGdldFByb3BlcnR5TmFtZUF0b21TdHJpbmcoQ1NTUHJvcGVydHlJRCBp
ZCk7CitTdHJpbmcgZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5SUQgaWQpOworU3Ry
aW5nIGdldEpTUHJvcGVydHlOYW1lKENTU1Byb3BlcnR5SUQpOwogQ1NTUHJvcGVydHlJRCBnZXRS
ZWxhdGVkUHJvcGVydHlJZChDU1NQcm9wZXJ0eUlEIGlkKTsKIAogaW5saW5lIENTU1Byb3BlcnR5
SUQgY29udmVydFRvQ1NTUHJvcGVydHlJRChpbnQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtldmFsdWVz
LnBsCmluZGV4IDExM2YxNjI4ZWRjNGVhZWIzNTI2NWFjMGJmOTdmNjMyNjAzMTZhMzAuLjBmODIx
OWQ0Y2NiNTFlY2E1MjVkODI5YTc2MDZiMjdiMGZhMjczMDMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9tYWtldmFsdWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtldmFs
dWVzLnBsCkBAIC0yMDQsOCArMjA0LDggQEAgcHJpbnQgSEVBREVSICJjb25zdCBzaXplX3QgbWF4
Q1NTVmFsdWVLZXl3b3JkTGVuZ3RoID0gIiAuICRtYXhMZW4gLiAiO1xuIjsKIHByaW50IEhFQURF
UiA8PCAiRU9GIjsKIAogY29uc3QgY2hhciogZ2V0VmFsdWVOYW1lKHVuc2lnbmVkIHNob3J0IGlk
KTsKLWNvbnN0IFdURjo6QXRvbVN0cmluZyYgZ2V0VmFsdWVOYW1lQXRvbVN0cmluZyhDU1NWYWx1
ZUlEIGlkKTsKLVdURjo6U3RyaW5nIGdldFZhbHVlTmFtZVN0cmluZyhDU1NWYWx1ZUlEIGlkKTsK
K2NvbnN0IEF0b21TdHJpbmcmIGdldFZhbHVlTmFtZUF0b21TdHJpbmcoQ1NTVmFsdWVJRCBpZCk7
CitTdHJpbmcgZ2V0VmFsdWVOYW1lU3RyaW5nKENTU1ZhbHVlSUQgaWQpOwogCiBpbmxpbmUgQ1NT
VmFsdWVJRCBjb252ZXJ0VG9DU1NWYWx1ZUlEKGludCB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAppbmRleCAwZGExZmIwNmMy
OGIxNzc4YWUxZTU1NTY3ODRhYzk4ZGE4Y2E5NDQ3Li4zN2ExMTUxYWRhMmU5NzViNGNjNDdkN2I2
ZTQ3OTY4M2QxYzE2M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckZhc3RQYXRocy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwCkBAIC0xMTM1LDcgKzExMzUsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhclR5cGU+CiBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybVRyYW5zbGF0ZUFyZ3VtZW50
cyhDaGFyVHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCwgdW5zaWduZWQgZXhwZWN0ZWRDb3VudCwg
Q1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUpCiB7CiAgICAgd2hpbGUgKGV4cGVjdGVk
Q291bnQpIHsKLSAgICAgICAgc2l6ZV90IGRlbGltaXRlciA9IFdURjo6ZmluZChwb3MsIGVuZCAt
IHBvcywgZXhwZWN0ZWRDb3VudCA9PSAxID8gJyknIDogJywnKTsKKyAgICAgICAgc2l6ZV90IGRl
bGltaXRlciA9IGZpbmQocG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6
ICcsJyk7CiAgICAgICAgIGlmIChkZWxpbWl0ZXIgPT0gbm90Rm91bmQpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50TGVuZ3RoID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRlbGltaXRlcik7CkBAIC0xMTU3LDcgKzExNTcsNyBAQCBzdGF0aWMgYm9v
bCBwYXJzZVRyYW5zZm9ybVRyYW5zbGF0ZUFyZ3VtZW50cyhDaGFyVHlwZSomIHBvcywgQ2hhclR5
cGUqIGVuZCwgdW5zaQogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogc3RhdGljIGJvb2wg
cGFyc2VUcmFuc2Zvcm1BbmdsZUFyZ3VtZW50KENoYXJUeXBlKiYgcG9zLCBDaGFyVHlwZSogZW5k
LCBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSkKIHsKLSAgICBzaXplX3QgZGVsaW1p
dGVyID0gV1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCAnKScpOworICAgIHNpemVfdCBkZWxpbWl0
ZXIgPSBmaW5kKHBvcywgZW5kIC0gcG9zLCAnKScpOwogICAgIGlmIChkZWxpbWl0ZXIgPT0gbm90
Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTE3OSw3ICsxMTc5LDcgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1OdW1i
ZXJBcmd1bWVudHMoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2lnbmVkIGV4cGVj
dGVkQ291bnQsIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlKQogewogICAgIHdoaWxl
IChleHBlY3RlZENvdW50KSB7Ci0gICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBXVEY6OmZpbmQo
cG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6ICcsJyk7CisgICAgICAg
IHNpemVfdCBkZWxpbWl0ZXIgPSBmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3RlZENvdW50ID09
IDEgPyAnKScgOiAnLCcpOwogICAgICAgICBpZiAoZGVsaW1pdGVyID09IG5vdEZvdW5kKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudExlbmd0aCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxpbWl0ZXIpOwpAQCAtMTM1Myw3ICsxMzUzLDcgQEAg
c3RhdGljIGJvb2wgdHJhbnNmb3JtQ2FuTGlrZWx5VXNlRmFzdFBhdGgoY29uc3QgQ2hhclR5cGUq
IGNoYXJzLCB1bnNpZ25lZCBsZW5ndGgKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBzaXplX3QgYXJndW1lbnRzRW5kID0gV1RG
OjpmaW5kKGNoYXJzLCBsZW5ndGgsICcpJywgaSk7CisgICAgICAgIHNpemVfdCBhcmd1bWVudHNF
bmQgPSBmaW5kKGNoYXJzLCBsZW5ndGgsICcpJywgaSk7CiAgICAgICAgIGlmIChhcmd1bWVudHNF
bmQgPT0gbm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIC8vIEFk
dmFuY2UgdG8gdGhlIGVuZCBvZiB0aGUgYXJndW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCA4NTkxOGU1YTdjZmM1YmM1NTEw
MWQyOTFkYjM5NDFlNjMxOGZkYjcxLi41ZmI5NDA3ZmZmYjY0NTBjZTdkNjAyZTlkM2FkMmVmMTcx
NTliNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBib29sIGlzQXBwbGVMZWdhY3lDc3NW
YWx1ZUtleXdvcmQoY29uc3QgY2hhciogdmFsdWVLZXl3b3JkLCB1bnNpZ25lZCBsZW5nCiAgICAg
JiYgIWhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVTeXN0ZW1QcmVmaXgpCiAg
ICAgJiYgIWhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVQYXlQcmVmaXgpCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgJiYgIVdURjo6ZXF1YWwocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KHZhbHVlS2V5d29yZCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihhcHBsZVdpcmVsZXNzUGxheWJhY2tUYXJnZXRBY3RpdmUpLCBsZW5ndGgpCisgICAgJiYgIWVx
dWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPih2YWx1ZUtleXdvcmQpLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYXBwbGVXaXJlbGVzc1BsYXliYWNrVGFyZ2V0QWN0aXZl
KSwgbGVuZ3RoKQogI2VuZGlmCiAgICAgOwogfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBD
U1NWYWx1ZUlEIGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENoYXJhY3RlclR5cGUqIHZhbHVlS2V5
d29yZCwgdW5zaWduZWQKICAgICAgICAgQ2hhcmFjdGVyVHlwZSBjID0gdmFsdWVLZXl3b3JkW2ld
OwogICAgICAgICBpZiAoIWMgfHwgYyA+PSAweDdGKQogICAgICAgICAgICAgcmV0dXJuIENTU1Zh
bHVlSW52YWxpZDsgLy8gaWxsZWdhbCBrZXl3b3JkLgotICAgICAgICBidWZmZXJbaV0gPSBXVEY6
OnRvQVNDSUlMb3dlcihjKTsKKyAgICAgICAgYnVmZmVyW2ldID0gdG9BU0NJSUxvd2VyKGMpOwog
ICAgIH0KICAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXgg
MDRlMWM4NGNiNWZhYjY4MzhkNGU3NjQxOTkwZWU1NDc1ODAzMWE5Zi4uM2Q0ZmY5NDBlNGNkNTRl
MTZlMGI1MWQ3MTg2MjIzZjc5MDRlNjNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAtMzc0NCw5ICszNzQ0
LDkgQEAgc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lR2VuZXJpY0ZhbWlseVJhdyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gY29uc3VtZUlkZW50UmFuZ2VS
YXcocmFuZ2UsIENTU1ZhbHVlU2VyaWYsIENTU1ZhbHVlV2Via2l0Qm9keSk7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8V1RGOjpWZWN0b3I8Rm9udEZhbWlseVJhdz4+IGNvbnN1bWVGb250RmFtaWx5UmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8Rm9udEZh
bWlseVJhdz4+IGNvbnN1bWVGb250RmFtaWx5UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQogewotICAgIFdURjo6VmVjdG9yPEZvbnRGYW1pbHlSYXc+IGxpc3Q7CisgICAgVmVjdG9yPEZv
bnRGYW1pbHlSYXc+IGxpc3Q7CiAgICAgZG8gewogICAgICAgICBpZiAoYXV0byBpZGVudCA9IGNv
bnN1bWVHZW5lcmljRmFtaWx5UmF3KHJhbmdlKSkKICAgICAgICAgICAgIGxpc3QuYXBwZW5kKHsg
KmlkZW50IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29t
cGlsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmgKaW5kZXgg
MDRlMWMwMDdlOTlhMmFmZGM1NGI5MTZlOGY4Mjg1NTkwZmY5YzBiOC4uMWIzZDdmMTQwMzUxZTcw
MTc0ZTRmMWM4ODk1MTg1YTVhM2Y0MDY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0
b3JDb21waWxlci5oCkBAIC02MSw3ICs2MSw3IEBAIGlubGluZSB1bnNpZ25lZCBydWxlQ29sbGVj
dG9yU2ltcGxlU2VsZWN0b3JDaGVja2VyKENvbXBpbGVkU2VsZWN0b3ImIGNvbXBpbGVkU2VsCiAg
ICAgICAgIHJldHVybiB2bUVudHJ5VG9DU1NKSVQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZWxl
bWVudCksIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSwgMCwgY29tcGlsZWRTZWxlY3Rv
ci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICNlbmRpZgogICAgIHVzaW5n
IFJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgPSB1bnNpZ25lZCgqKShjb25zdCBF
bGVtZW50KiwgdW5zaWduZWQqKTsKLSAgICByZXR1cm4gV1RGOjp1bnRhZ0NGdW5jdGlvblB0cjxS
dWxlQ29sbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2VyLCBKU0M6OkNTU1NlbGVjdG9yUHRyVGFn
Pihjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGVs
ZW1lbnQsIHZhbHVlKTsKKyAgICByZXR1cm4gdW50YWdDRnVuY3Rpb25QdHI8UnVsZUNvbGxlY3Rv
clNpbXBsZVNlbGVjdG9yQ2hlY2tlciwgSlNDOjpDU1NTZWxlY3RvclB0clRhZz4oY29tcGlsZWRT
ZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShlbGVtZW50LCB2YWx1
ZSk7CiB9CiAKIGlubGluZSB1bnNpZ25lZCBxdWVyeVNlbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVj
a2VyKENvbXBpbGVkU2VsZWN0b3ImIGNvbXBpbGVkU2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQpCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSB1bnNpZ25lZCBxdWVyeVNlbGVjdG9yU2lt
cGxlU2VsZWN0b3JDaGVja2VyKENvbXBpbGVkU2VsZWN0b3ImIGNvbXBpbGVkU2VsCiAgICAgICAg
IHJldHVybiB2bUVudHJ5VG9DU1NKSVQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZWxlbWVudCks
IDAsIDAsIGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CiAjZW5kaWYKICAgICB1c2luZyBRdWVyeVNlbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2Vy
ID0gdW5zaWduZWQoKikoY29uc3QgRWxlbWVudCopOwotICAgIHJldHVybiBXVEY6OnVudGFnQ0Z1
bmN0aW9uUHRyPFF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIsIEpTQzo6Q1NTU2Vs
ZWN0b3JQdHJUYWc+KGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkoZWxlbWVudCk7CisgICAgcmV0dXJuIHVudGFnQ0Z1bmN0aW9uUHRyPFF1ZXJ5U2Vs
ZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIsIEpTQzo6Q1NTU2VsZWN0b3JQdHJUYWc+KGNvbXBp
bGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoZWxlbWVudCk7
CiB9CiAKIGlubGluZSB1bnNpZ25lZCBydWxlQ29sbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENo
ZWNraW5nQ29udGV4dChDb21waWxlZFNlbGVjdG9yJiBjb21waWxlZFNlbGVjdG9yLCBjb25zdCBF
bGVtZW50KiBlbGVtZW50LCBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCogY29udGV4
dCwgdW5zaWduZWQqIHZhbHVlKQpAQCAtODMsNyArODMsNyBAQCBpbmxpbmUgdW5zaWduZWQgcnVs
ZUNvbGxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQoQ29tcGlsZWRTZWxl
Y3RvcgogICAgICAgICByZXR1cm4gdm1FbnRyeVRvQ1NTSklUKGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KGVsZW1lbnQpLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSwgYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4odmFsdWUpLCBjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOwogI2VuZGlmCiAgICAgdXNpbmcgUnVsZUNvbGxlY3RvclNlbGVj
dG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQgPSB1bnNpZ25lZCgqKShjb25zdCBFbGVtZW50
KiwgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQqLCB1bnNpZ25lZCopOwotICAgIHJl
dHVybiBXVEY6OnVudGFnQ0Z1bmN0aW9uUHRyPFJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJX
aXRoQ2hlY2tpbmdDb250ZXh0LCBKU0M6OkNTU1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVj
dG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGVsZW1lbnQsIGNvbnRleHQs
IHZhbHVlKTsKKyAgICByZXR1cm4gdW50YWdDRnVuY3Rpb25QdHI8UnVsZUNvbGxlY3RvclNlbGVj
dG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQsIEpTQzo6Q1NTU2VsZWN0b3JQdHJUYWc+KGNv
bXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoZWxlbWVu
dCwgY29udGV4dCwgdmFsdWUpOwogfQogCiBpbmxpbmUgdW5zaWduZWQgcXVlcnlTZWxlY3RvclNl
bGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQoQ29tcGlsZWRTZWxlY3RvciYgY29tcGls
ZWRTZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQqIGNvbnRleHQpCkBAIC05NCw3ICs5NCw3IEBAIGlubGluZSB1bnNp
Z25lZCBxdWVyeVNlbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dChDb21w
aWxlZFNlbGVjdG9yCiAgICAgICAgIHJldHVybiB2bUVudHJ5VG9DU1NKSVQoYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oZWxlbWVudCksIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpLCAw
LCBjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwog
I2VuZGlmCiAgICAgdXNpbmcgUXVlcnlTZWxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2lu
Z0NvbnRleHQgPSB1bnNpZ25lZCgqKShjb25zdCBFbGVtZW50KiwgY29uc3QgU2VsZWN0b3JDaGVj
a2VyOjpDaGVja2luZ0NvbnRleHQqKTsKLSAgICByZXR1cm4gV1RGOjp1bnRhZ0NGdW5jdGlvblB0
cjxRdWVyeVNlbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCwgSlNDOjpD
U1NTZWxlY3RvclB0clRhZz4oY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpKShlbGVtZW50LCBjb250ZXh0KTsKKyAgICByZXR1cm4gdW50YWdDRnVuY3Rp
b25QdHI8UXVlcnlTZWxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQsIEpT
Qzo6Q1NTU2VsZWN0b3JQdHJUYWc+KGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkoZWxlbWVudCwgY29udGV4dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFNlbGVjdG9yQ29tcGlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDVhZjc3NmU1OWFh
ZTcxMGEzMWNjNGNjMzQxZDI5Nzc5MDQ5N2I5OTQuLjk5NDljYjViNzZjY2E3YWI0YzdkNzMwNGQ1
N2E0NjExNzAyNmNlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzk2Myw3ICszOTYz
LDcgQEAgdm9pZCBEb2N1bWVudDo6dGhlbWVDb2xvckNoYW5nZWQoKQogfQogCiAjaWYgRU5BQkxF
KERBUktfTU9ERV9DU1MpCi1zdGF0aWMgdm9pZCBwcm9jZXNzQ29sb3JTY2hlbWVTdHJpbmcoU3Ry
aW5nVmlldyBjb2xvclNjaGVtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFN0cmluZ1ZpZXcg
a2V5KT4mIGNhbGxiYWNrKQorc3RhdGljIHZvaWQgcHJvY2Vzc0NvbG9yU2NoZW1lU3RyaW5nKFN0
cmluZ1ZpZXcgY29sb3JTY2hlbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoU3RyaW5nVmlldyBrZXkp
PiYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY29sb3JTY2hlbWUubGVuZ3Ro
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKSB7CkBAIC04NTEzLDcg
Kzg1MTMsNyBAQCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IERvY3VtZW50OjpnZXRBbmlt
YXRpb25zKCkKICAgICB9KTsKIH0KIAotVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBEb2N1
bWVudDo6bWF0Y2hpbmdBbmltYXRpb25zKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChFbGVtZW50
Jik+JiBmdW5jdGlvbikKK1ZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gRG9jdW1lbnQ6Om1h
dGNoaW5nQW5pbWF0aW9ucyhjb25zdCBGdW5jdGlvbjxib29sKEVsZW1lbnQmKT4mIGZ1bmN0aW9u
KQogewogICAgIC8vIEZvciB0aGUgbGlzdCBvZiBhbmltYXRpb25zIHRvIGJlIGN1cnJlbnQsIHdl
IG5lZWQgdG8gYWNjb3VudCBmb3IgYW55IHBlbmRpbmcgQ1NTIGNoYW5nZXMsCiAgICAgLy8gc3Vj
aCBhcyB1cGRhdGVzIHRvIENTUyBBbmltYXRpb25zIGFuZCBDU1MgVHJhbnNpdGlvbnMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDg3MmMwNWE1ZGNiZGMzNmNhMDljYjM1MzdkNDgzNzE1MTc3NTM4
ZTIuLjU5MjU3NGJlM2NmZTJmMjhkYWU3NjkzOGZjMTZjYjE0NTNiOTUzZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgRG9jdW1lbnRUaW1lbGluZSYgdGltZWxpbmUoKTsKICAgICBEb2N1bWVudFRpbWVsaW5lKiBl
eGlzdGluZ1RpbWVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZS5nZXQoKTsgfQogICAg
IFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gZ2V0QW5pbWF0aW9ucygpOwotICAgIFZlY3Rv
cjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gbWF0Y2hpbmdBbmltYXRpb25zKGNvbnN0IFdURjo6RnVu
Y3Rpb248Ym9vbChFbGVtZW50Jik+Jik7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+
PiBtYXRjaGluZ0FuaW1hdGlvbnMoY29uc3QgRnVuY3Rpb248Ym9vbChFbGVtZW50Jik+Jik7CiAg
ICAgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKiB0aW1lbGluZXNDb250cm9sbGVyKCkgY29u
c3QgeyByZXR1cm4gbV90aW1lbGluZXNDb250cm9sbGVyLmdldCgpOyB9CiAgICAgV0VCQ09SRV9F
WFBPUlQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyJiBlbnN1cmVUaW1lbGluZXNDb250cm9s
bGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggNWJmZTM4
ZGE2NGU0ZWRhZWZlZGNjM2RhZDgzMWZiZjM4YzFkMzFhYi4uNmU1YWM5OTEwOGJhOWMyOWZkNmIz
YWRmYTM3NmMyOGM4ZDIwM2Q1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxz
Y3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2Vy
LmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZG9jdW1lbnQubG9nZ2VyKCk7IH0KKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQubG9nZ2VyKCk7IH0KICAgICBjb25zdCB2b2lkKiBs
b2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkZ1bGxzY3JlZW5NYW5hZ2Vy
IjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuaAppbmRleCA0YmEwZmE5Y2I4OGM0ZWI4YmQz
ZmYxM2RmNzZhODdmOTA3YTAzZGZmLi5hMGUxNmZkNDA4ZmNlY2MzYjJmNTgzYmIyN2Y4MmQ0NDE4
MTlkYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5oCkBA
IC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNQYXJzaW5nQ2hpbGRyZW47
CiAgICAgYm9vbCBtX2xvYWRpbmc7Ci0gICAgV1RGOjpUZXh0UG9zaXRpb24gbV9zdGFydFRleHRQ
b3NpdGlvbjsKKyAgICBUZXh0UG9zaXRpb24gbV9zdGFydFRleHRQb3NpdGlvbjsKICAgICBBdG9t
U3RyaW5nIG1fY29udGVudFR5cGU7CiAgICAgQXRvbVN0cmluZyBtX21lZGlhOwogICAgIFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiBtX3NoZWV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1Njb3BlZEV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1ZXVl
LmgKaW5kZXggZmYyNmU2ZTAzNTQ5Y2M0YzkyYWJjNDUwZjM2ZjEwYTVhYTVmYmM0NC4uNzM1OWY4
NWM5MjUzYzU0ZTNiZmUxOTUyZDFjNGMxNTFmZDUxZGNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Nv
cGVkRXZlbnRRdWV1ZS5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFNj
b3BlZEV2ZW50PiBtX3F1ZXVlZEV2ZW50czsKICAgICB1bnNpZ25lZCBtX3Njb3BpbmdMZXZlbCB7
IDAgfTsKIAotICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFdlYkNvcmU6OlNj
b3BlZEV2ZW50UXVldWU+OworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxXZWJDb3Jl
OjpTY29wZWRFdmVudFF1ZXVlPjsKICAgICBmcmllbmQgY2xhc3MgRXZlbnRRdWV1ZVNjb3BlOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IGM0ZjI5NTk5OTM5ZWMx
NjgzMmM2ZGY2YzBjZWMwMjBiY2Q0MjUwYjQuLmZiYWExNTMyOTRkYWZjYTcxZWNmNTY4NjEyMjRl
YmZiMjJkYTFkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAgc3RhdGljIGNvbnN0IGF1dG8gbWF4VXNlckdlc3R1cmVQcm9wYWdhdGlvblRpbWUg
PSAxX3M7CiAKIFNjcmlwdEVsZW1lbnQ6OlNjcmlwdEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwg
Ym9vbCBwYXJzZXJJbnNlcnRlZCwgYm9vbCBhbHJlYWR5U3RhcnRlZCkKICAgICA6IG1fZWxlbWVu
dChlbGVtZW50KQotICAgICwgbV9zdGFydExpbmVOdW1iZXIoV1RGOjpPcmRpbmFsTnVtYmVyOjpi
ZWZvcmVGaXJzdCgpKQorICAgICwgbV9zdGFydExpbmVOdW1iZXIoT3JkaW5hbE51bWJlcjo6YmVm
b3JlRmlyc3QoKSkKICAgICAsIG1fcGFyc2VySW5zZXJ0ZWQocGFyc2VySW5zZXJ0ZWQgPyBQYXJz
ZXJJbnNlcnRlZDo6WWVzIDogUGFyc2VySW5zZXJ0ZWQ6Ok5vKQogICAgICwgbV9pc0V4dGVybmFs
U2NyaXB0KGZhbHNlKQogICAgICwgbV9hbHJlYWR5U3RhcnRlZChhbHJlYWR5U3RhcnRlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5oCmluZGV4IDhlMDUxZjgzYzViZDdmY2JhOWJiMDJlNTE1
NGI2NTliY2EzZmZkNWYuLjBlNzM5NzE0M2RjNTYzODAyNjM5YTc1YmVhM2Q4MTliMTVkOThlNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0ID0g
MDsKIAogICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKLSAgICBXVEY6Ok9yZGluYWxOdW1iZXIgbV9z
dGFydExpbmVOdW1iZXI7CisgICAgT3JkaW5hbE51bWJlciBtX3N0YXJ0TGluZU51bWJlcjsKICAg
ICBQYXJzZXJJbnNlcnRlZCBtX3BhcnNlckluc2VydGVkOwogICAgIGJvb2wgbV9pc0V4dGVybmFs
U2NyaXB0IDogMTsKICAgICBib29sIG1fYWxyZWFkeVN0YXJ0ZWQgOiAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMjVmYjAwZTYxMzIzZTk4Mjk2
MGEyODUwZDdlMTM3YmY1MjZiYTZkOS4uZjc5YzNlZGM4OGQzZWZmMTE2YTVhNjU4MzY0OGNkOGFm
YzFlYTM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CkBAIC0xODUsMjAgKzE4NSwyMCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBlbnVt
IENsZWFudXBUYXNrVGFnIHsgQ2xlYW51cFRhc2sgfTsKIAotICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vf
b2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8VCwgV1RGOjpGdW5jdGlv
bjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgorICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8
VCwgRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBl
PgogICAgICAgICBUYXNrKFQgdGFzaykKICAgICAgICAgICAgIDogbV90YXNrKFdURk1vdmUodGFz
aykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhmYWxzZSkKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKKyAg
ICAgICAgVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICAgICAgICAgIDogbV90YXNr
KFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgdGFzaygp
OyB9KQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAg
ICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTxULCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19jb252ZXJ0aWJsZTxULCBGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KT4+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgIFRhc2soQ2xlYW51cFRhc2tUYWcsIFQgdGFzaykK
ICAgICAgICAgICAgIDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICAgICAsIG1faXND
bGVhbnVwVGFzayh0cnVlKQpAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9v
bCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsZWFudXBUYXNrOyB9CiAKICAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiBtX3Rhc2s7CisgICAgICAgIEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiBtX3Rhc2s7CiAgICAgICAgIGJvb2wgbV9pc0NsZWFudXBUYXNrOwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCAyNTRkM2FmNGFhZjBiYjIw
YTMzMjljM2JjN2FlZDQ2OGIxOGJjZGE3Li43OWI4NGJlZDg0MjE1MzkwNjRiMDJjYTQ1NThiZDc2
MzI1ZDM2ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0yMDIsNyAr
MjAyLDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZUZyb21TdHJpbmcoY29u
c3QgQXRvbVN0cmluZyYgbmV3U3R5bGVTdHJpbmcpCiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6c3R5
bGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1N0eWxlU3RyaW5nLCBBdHRy
aWJ1dGVNb2RpZmljYXRpb25SZWFzb24gcmVhc29uKQogewotICAgIGF1dG8gc3RhcnRMaW5lTnVt
YmVyID0gV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpOworICAgIGF1dG8gc3RhcnRM
aW5lTnVtYmVyID0gT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKTsKICAgICBpZiAoZG9jdW1l
bnQoKS5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSAmJiAhZG9jdW1lbnQoKS5pc0luRG9jdW1l
bnRXcml0ZSgpKQogICAgICAgICBzdGFydExpbmVOdW1iZXIgPSBkb2N1bWVudCgpLnNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcigpLT50ZXh0UG9zaXRpb24oKS5tX2xpbmU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKaW5kZXggYTFhNDUwNDU0YzBiZGRjNDFhYjcz
YTNmY2Y1MGNmNTZiYjk0NDg2YS4uMWM4NzU5YzAyYWYzNTE4MDg5M2Y2NzMwMmQxMDI3YWUzYWEy
YTgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVk
aWEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFByb2Nlc3NpbmdVc2VyR2VzdHVyZSB8fCBt
X3N0YXRlID09IFByb2Nlc3NpbmdQb3RlbnRpYWxVc2VyR2VzdHVyZTsgfQogICAgIFVzZXJHZXN0
dXJlVHlwZSBnZXN0dXJlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VzdHVyZVR5cGU7IH0KIAot
ICAgIHZvaWQgYWRkRGVzdHJ1Y3Rpb25PYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQgKFVzZXJH
ZXN0dXJlVG9rZW4mKT4mJiBvYnNlcnZlcikKKyAgICB2b2lkIGFkZERlc3RydWN0aW9uT2JzZXJ2
ZXIoRnVuY3Rpb248dm9pZChVc2VyR2VzdHVyZVRva2VuJik+JiYgb2JzZXJ2ZXIpCiAgICAgewog
ICAgICAgICBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmFwcGVuZChXVEZNb3ZlKG9ic2VydmVyKSk7
CiAgICAgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgVXNlckdlc3R1cmVUb2tl
bihQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSwgVXNlckdlc3R1cmVUeXBlLCBEb2N1bWVudCop
OwogCiAgICAgUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUgbV9zdGF0ZSA9IE5vdFByb2Nlc3Np
bmdVc2VyR2VzdHVyZTsKLSAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkIChVc2VyR2VzdHVy
ZVRva2VuJik+PiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOworICAgIFZlY3RvcjxGdW5jdGlvbjx2
b2lkKFVzZXJHZXN0dXJlVG9rZW4mKT4+IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnM7CiAgICAgVXNl
ckdlc3R1cmVUeXBlIG1fZ2VzdHVyZVR5cGU7CiAgICAgV2Vha0hhc2hTZXQ8RG9jdW1lbnQ+IG1f
ZG9jdW1lbnRzSW1wYWN0ZWRCeVVzZXJHZXN0dXJlOwogICAgIERPTVBhc3RlQWNjZXNzUG9saWN5
IG1fZG9tUGFzdGVBY2Nlc3NQb2xpY3kgeyBET01QYXN0ZUFjY2Vzc1BvbGljeTo6Tm90UmVxdWVz
dGVkWWV0IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRleCA3
M2RmOTRjNDY0ZjllZTRjY2JmMzU5MTI2ODVjOWUwYzA3OWIwYTZiLi5kNDYzZGUwM2E0MmRlMTQ4
YWI2ZWI3NzU0MDY3ZWY3ZWQ1NjRiYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Vmlld3BvcnRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFy
Z3VtZW50cy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10
eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZChWaWV3cG9ydEVycm9yQ29kZSwgU3RyaW5nVmlldywg
U3RyaW5nVmlldyk+IEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXI7Cit0eXBlZGVmIEZ1bmN0
aW9uPHZvaWQoVmlld3BvcnRFcnJvckNvZGUsIFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpPiBJbnRl
cm5hbFZpZXdwb3J0RXJyb3JIYW5kbGVyOwogCiAjaWYgUExBVEZPUk0oR1RLKQogY29uc3QgZmxv
YXQgVmlld3BvcnRBcmd1bWVudHM6OmRlcHJlY2F0ZWRUYXJnZXREUEkgPSAxNjA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCmluZGV4IDk5NTRiZGMxYTA3NjI1ZTk2OWMyYzQ2
N2IwYWVlNmFmNmUxYzVkNzIuLmRjNzE4NzNiZjlhNDBhYTdkMjg5NzhiYjE2NWNhYzRiOTk5MDQ3
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCkBAIC0xNDMsNyArMTQz
LDcgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmll
d3BvcnRTaXplKFZpZXdwb3J0QXR0cmlidXRlcyYKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdHJp
Y3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoVmlld3BvcnRBdHRy
aWJ1dGVzJiByZXN1bHQpOwogV0VCQ09SRV9FWFBPUlQgZmxvYXQgY29tcHV0ZU1pbmltdW1TY2Fs
ZUZhY3RvckZvckNvbnRlbnRDb250YWluZWQoY29uc3QgVmlld3BvcnRBdHRyaWJ1dGVzJiByZXN1
bHQsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNp
emUpOwogCi10eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZChWaWV3cG9ydEVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJik+IFZpZXdwb3J0RXJyb3JIYW5kbGVyOwordHlwZWRlZiBGdW5jdGlvbjx2b2lk
KFZpZXdwb3J0RXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmKT4gVmlld3BvcnRFcnJvckhhbmRsZXI7
CiB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShWaWV3cG9ydEFyZ3VtZW50cyYsIERvY3VtZW50Jiwg
U3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWaWV3cG9ydEZlYXR1cmUoVmlld3BvcnRBcmd1bWVudHMmLCBTdHJpbmdWaWV3IGtleSwgU3Ry
aW5nVmlldyB2YWx1ZSwgYm9vbCB2aWV3cG9ydEZpdEVuYWJsZWQsIGNvbnN0IFZpZXdwb3J0RXJy
b3JIYW5kbGVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgKaW5kZXggYzYwYzZi
Y2M4MDU1NTU2N2EzY2JkZjYxYjg4N2Q0NGMyZTIxZGFmOC4uMzdmMDA5YTQzN2ZhOTk5NDU1MDE2
ZDVmMDQ0NjI1MTM4OTIxOWVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0QWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgKQEAg
LTI1LDkgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLW5hbWVzcGFjZSBXVEYgewotY2xhc3Mg
U3RyaW5nOwotfQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtOTYsNiArOTQsNiBAQCBlbnVtIGNsYXNzIEVkaXRBY3Rpb24gOiB1aW50OF90IHsK
ICAgICBPdXRkZW50CiB9OwogCi1XVEY6OlN0cmluZyB1bmRvUmVkb0xhYmVsKEVkaXRBY3Rpb24p
OworU3RyaW5nIHVuZG9SZWRvTGFiZWwoRWRpdEFjdGlvbik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAwN2E0ZjFiZjgyMjQzZWM2YTY5
NTU3YTk1NTZlMzQ4MGQxZWE5NWU3Li5jNjcxMDIyN2RkZDE0ZjUwNmQ4ZjUyMGMwZTg5NmNjOWNk
NGU2OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MDEwLDcgKzQwMTAsNyBA
QCBzdGF0aWMgVmVjdG9yPFRleHRMaXN0PiBlZGl0YWJsZVRleHRMaXN0c0F0UG9zaXRpb25JbkRl
c2NlbmRpbmdPcmRlcihjb25zdCBQb3NpdAogRm9udEF0dHJpYnV0ZXMgRWRpdG9yOjpmb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKQogewogICAgIFJlZlB0cjxOb2RlPiBub2RlVG9SZW1v
dmU7Ci0gICAgYXV0byBub2RlUmVtb3ZhbFNjb3BlID0gV1RGOjptYWtlU2NvcGVFeGl0KFsmbm9k
ZVRvUmVtb3ZlXSgpIHsKKyAgICBhdXRvIG5vZGVSZW1vdmFsU2NvcGUgPSBtYWtlU2NvcGVFeGl0
KFsmbm9kZVRvUmVtb3ZlXSgpIHsKICAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkKICAgICAgICAg
ICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NtYXJ0UmVwbGFjZS5jcHAKaW5kZXggZGU1M2NjMGZmYmYxNGM0YWIyZWRhMDI0Mjg4ODIzMGM5
OGZlNDA5OC4uNWM5NGRmYjhkMDRkOTM1Y2I1NWM3ZGYyYTY2ZjY0MDc5NjM1YTQ0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlLmNwcApAQCAtNzIsMTEgKzcyLDExIEBAIHN0
YXRpYyBVU2V0KiBnZXRTbWFydFNldChib29sIGlzUHJldmlvdXNDaGFyYWN0ZXIpCiAgICAgICAg
IHVzZXRfYWRkUmFuZ2Uoc21hcnRTZXQsIDB4MkY4MDAsIDB4MkY4MDAgKyAweDAyMUUpOyAvLyBD
SksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzICgweDJGODAwIC0gMHgyRkExRCkKIAogICAgICAg
ICBpZiAoaXNQcmV2aW91c0NoYXJhY3RlcikgewotICAgICAgICAgICAgLy8gRklYTUU6IFNpbGx5
IHRvIGNvbnZlcnQgdGhpcyB0byBhIFdURjo6U3RyaW5nIGp1c3QgdG8gbG9vcCB0aHJvdWdoIHRo
ZSBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgLy8gRklYTUU6IFNpbGx5IHRvIGNvbnZlcnQgdGhp
cyB0byBhIFN0cmluZyBqdXN0IHRvIGxvb3AgdGhyb3VnaCB0aGUgY2hhcmFjdGVycy4KICAgICAg
ICAgICAgIGFkZEFsbENvZGVQb2ludHMoc21hcnRTZXQsICIoW1wiXCcjJC8tYHsiX3MpOwogICAg
ICAgICAgICAgcHJlU21hcnRTZXQgPSBzbWFydFNldDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBTaWxseSB0byBjb252ZXJ0IHRoaXMgdG8gYSBXVEY6OlN0cmluZyBq
dXN0IHRvIGxvb3AgdGhyb3VnaCB0aGUgY2hhcmFjdGVycy4KKyAgICAgICAgICAgIC8vIEZJWE1F
OiBTaWxseSB0byBjb252ZXJ0IHRoaXMgdG8gYSBTdHJpbmcganVzdCB0byBsb29wIHRocm91Z2gg
dGhlIGNoYXJhY3RlcnMuCiAgICAgICAgICAgICBhZGRBbGxDb2RlUG9pbnRzKHNtYXJ0U2V0LCAi
KV0uLDs6P1wnIVwiJSotL30iX3MpOwogCiAgICAgICAgICAgICAvLyBQdW5jdHVhdGlvbiAoa0NG
Q2hhcmFjdGVyU2V0UHVuY3R1YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI0ZTE1ZmViMGNhNTM4NjVh
MTkyOTYwMDk4NGMxM2RiZjhlYTVlZDAuLjQ3NDI5ZDU5MTdhMjNhMmVkYWUxNmQwZjc3Zjk0MTJj
YThmNTZhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0zODgsMTMgKzM4OCwxMyBAQCB2b2lkIFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpwYXJzZShNYW5pcHVsYXRpb25Vbml0JiB1bml0LCBjb25zdCBT
dHJpbmcmIHRleAogewogICAgIEV4Y2x1c2lvblJ1bGVNYXRjaGVyIGV4Y2x1c2lvblJ1bGVNYXRj
aGVyKG1fZXhjbHVzaW9uUnVsZXMpOwogICAgIGJvb2wgaXNOb2RlRXhjbHVkZWQgPSBleGNsdXNp
b25SdWxlTWF0Y2hlci5pc0V4Y2x1ZGVkKCZ0ZXh0Tm9kZSkgfHwgc2hvdWxkRXhjbHVkZU5vZGVC
YXNlZE9uU3R5bGUodGV4dE5vZGUpOwotICAgIHNpemVfdCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxT
cGFjZSA9IFdURjo6bm90Rm91bmQ7CisgICAgc2l6ZV90IHBvc2l0aW9uT2ZMYXN0Tm9uSFRNTFNw
YWNlID0gbm90Rm91bmQ7CiAgICAgc2l6ZV90IHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA9
IDA7CiAgICAgc2l6ZV90IGluZGV4ID0gMDsKICAgICBmb3IgKDsgaW5kZXggPCB0ZXh0Lmxlbmd0
aCgpOyArK2luZGV4KSB7CiAgICAgICAgIGF1dG8gY2hhcmFjdGVyID0gdGV4dFtpbmRleF07CiAg
ICAgICAgIGlmIChpc1Rva2VuRGVsaW1pdGVyKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIGlm
IChwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSAhPSBXVEY6Om5vdEZvdW5kICYmIHN0YXJ0UG9z
aXRpb25PZkN1cnJlbnRUb2tlbiA8PSBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSkgeworICAg
ICAgICAgICAgaWYgKHBvc2l0aW9uT2ZMYXN0Tm9uSFRNTFNwYWNlICE9IG5vdEZvdW5kICYmIHN0
YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA8PSBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSkg
ewogICAgICAgICAgICAgICAgIGF1dG8gc3RyaW5nRm9yVG9rZW4gPSB0ZXh0LnN1YnN0cmluZyhz
dGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4sIHBvc2l0aW9uT2ZMYXN0Tm9uSFRNTFNwYWNlICsg
MSAtIHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbik7CiAgICAgICAgICAgICAgICAgdW5pdC50
b2tlbnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJh
dGUoKSwgc3RyaW5nRm9yVG9rZW4sIHRva2VuSW5mbygmdGV4dE5vZGUpLCBpc05vZGVFeGNsdWRl
ZCB9KTsKICAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPSBwb3Np
dGlvbk9mTGFzdE5vbkhUTUxTcGFjZSArIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKaW5kZXggMGQ5NzViMzY4OTYyOTczNjEx
MTZmODQ3MDlhMzIxODUzNmUzODliZi4uZWU2NzgwODBmMTdmYTY3NTVkNDkxOGE0Y2VmMWZlOWFl
MzhiYzgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RXhjbHVzaW9uUnVsZT4g
ZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogCi0gICAgdXNpbmcgTWFuaXB1bGF0aW9uSXRlbUNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50JiwgY29uc3QgVmVjdG9yPE1hbmlw
dWxhdGlvbkl0ZW0+Jik+OworICAgIHVzaW5nIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoRG9jdW1lbnQmLCBjb25zdCBWZWN0b3I8TWFuaXB1bGF0aW9uSXRlbT4mKT47
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydE9ic2VydmluZ1BhcmFncmFwaHMoTWFuaXB1
bGF0aW9uSXRlbUNhbGxiYWNrJiYsIFZlY3RvcjxFeGNsdXNpb25SdWxlPiYmID0geyB9KTsKIAog
ICAgIHZvaWQgZGlkQ3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAuaAppbmRleCAxMTBiOGY4MjZm
ODQxNzVkZDkyYWE0MGU4N2VjMmEzYWZjN2Q0NzFlLi5kZWJmMGY3NjE5YmY3MjFlZmUzNmNjNzFm
ZWE2NjZmNGFmYjBmZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9E
aWN0aW9uYXJ5TG9va3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlv
bmFyeUxvb2t1cC5oCkBAIC02MSwxMSArNjEsMTEgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6
IFNob3VsZCBtb3ZlL3VuaWZ5IGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSBoZXJlIHRvby4K
IAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNob3dQb3B1cChjb25zdCBEaWN0aW9u
YXJ5UG9wdXBJbmZvJiwgQ29jb2FWaWV3ICosIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChUZXh0
SW5kaWNhdG9yJik+JiB0ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJhY2ssIGNvbnN0IFdU
Rjo6RnVuY3Rpb248RmxvYXRSZWN0KEZsb2F0UmVjdCk+JiByb290Vmlld1RvVmlld0NvbnZlcnNp
b25DYWxsYmFjayA9IG51bGxwdHIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNsZWFyVGV4dElu
ZGljYXRvciA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNob3dQ
b3B1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiwgQ29jb2FWaWV3ICosIGNvbnN0IEZ1bmN0
aW9uPHZvaWQoVGV4dEluZGljYXRvciYpPiYgdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxi
YWNrLCBjb25zdCBGdW5jdGlvbjxGbG9hdFJlY3QoRmxvYXRSZWN0KT4mIHJvb3RWaWV3VG9WaWV3
Q29udmVyc2lvbkNhbGxiYWNrID0gbnVsbHB0ciwgRnVuY3Rpb248dm9pZCgpPiYmIGNsZWFyVGV4
dEluZGljYXRvciA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGhp
ZGVQb3B1cCgpOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgV0tSZXZlYWxDb250cm9sbGVyIGFuaW1hdGlvbkNvbnRyb2xsZXJGb3JQb3B1cChjb25z
dCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiwgTlNWaWV3ICosIGNvbnN0IFdURjo6RnVuY3Rpb248dm9p
ZChUZXh0SW5kaWNhdG9yJik+JiB0ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJhY2ssIGNv
bnN0IFdURjo6RnVuY3Rpb248RmxvYXRSZWN0KEZsb2F0UmVjdCk+JiByb290Vmlld1RvVmlld0Nv
bnZlcnNpb25DYWxsYmFjayA9IG51bGxwdHIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNsZWFy
VGV4dEluZGljYXRvciA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXS1Jl
dmVhbENvbnRyb2xsZXIgYW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwKGNvbnN0IERpY3Rpb25h
cnlQb3B1cEluZm8mLCBOU1ZpZXcgKiwgY29uc3QgRnVuY3Rpb248dm9pZChUZXh0SW5kaWNhdG9y
Jik+JiB0ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPEZs
b2F0UmVjdChGbG9hdFJlY3QpPiYgcm9vdFZpZXdUb1ZpZXdDb252ZXJzaW9uQ2FsbGJhY2sgPSBu
dWxscHRyLCBGdW5jdGlvbjx2b2lkKCk+JiYgY2xlYXJUZXh0SW5kaWNhdG9yID0gbnVsbHB0cik7
CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogICAgIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcAppbmRleCBkYzZjODAzMDRhODM5ZWFlYWM2Mjk1NDc4Mjg3ZTAwYWE4YjA0MDU5Li4yNWY0
ZDk1ZTYwMzVhMzA3ZWE4NjFhNDAxM2QyODA1ZjY5ODMyMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgc3RydWN0IEVsZW1lbnRBdHRyaWJ1dGUgewog
ICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZTsKIH07CiAKLXZvaWQgcmVtb3ZlU3VicmVz
b3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBXVEY6
OkZ1bmN0aW9uPGJvb2woY29uc3QgVVJMJik+IHNob3VsZFJlbW92ZVVSTCkKK3ZvaWQgcmVtb3Zl
U3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50
LCBGdW5jdGlvbjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwpCiB7CiAgICAgVmVj
dG9yPEVsZW1lbnRBdHRyaWJ1dGU+IGF0dHJpYnV0ZXNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTIw
OCw3ICsyMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXpp
bmdXZWJDb250ZW50KCkKICAgICByZXR1cm4gcGFnZTsKIH0KIAotU3RyaW5nIHNhbml0aXplTWFy
a3VwKGNvbnN0IFN0cmluZyYgcmF3SFRNTCwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBz
dGQ6Om9wdGlvbmFsPFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFn
bWVudFNhbml0aXplcikKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmIHJhd0hU
TUwsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgc3RkOjpvcHRpb25hbDxGdW5jdGlvbjx2
b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50U2FuaXRpemVyKQogewogICAgIGF1dG8g
cGFnZSA9IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogICAgIERvY3VtZW50
KiBzdGFnaW5nRG9jdW1lbnQgPSBwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmgKaW5kZXggYmI3NTk2NDM4ZWUwMjg2YThjMTg4Njg1OTg4ZTlmODVjMjZk
ZDUwZC4uOTI1MTFhOTM0NjZiYTk0ODQxMjQxYmFmZDY0ZTBmY2QxM2UxMWFlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5oCkBAIC01MSwxMSArNTEsMTEgQEAgc3RydWN0IFByZXNlbnRhdGlvblNp
emU7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKIHZvaWQgcmVwbGFjZVN1YnJlc291cmNlVVJMcyhS
ZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiYm
KTsKLXZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdt
ZW50PiYmLCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgVVJMJik+IHNob3VsZFJlbW92ZVVSTCk7
Cit2b2lkIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVu
dD4mJiwgRnVuY3Rpb248Ym9vbChjb25zdCBVUkwmKT4gc2hvdWxkUmVtb3ZlVVJMKTsKIAogc3Rk
Ojp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwog
ZW51bSBjbGFzcyBNU09MaXN0UXVpcmtzIDogYm9vbCB7IENoZWNrSWZOZWVkZWQsIERpc2FibGVk
IH07Ci1TdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiwgTVNPTGlzdFF1aXJrcyA9
IE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBzdGQ6Om9wdGlvbmFsPFdURjo6RnVuY3Rpb248dm9p
ZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXplciA9IHN0ZDo6bnVsbG9wdCk7
CitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiwgTVNPTGlzdFF1aXJrcyA9IE1T
T0xpc3RRdWlya3M6OkRpc2FibGVkLCBzdGQ6Om9wdGlvbmFsPEZ1bmN0aW9uPHZvaWQoRG9jdW1l
bnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIgPSBzdGQ6Om51bGxvcHQpOwogU3RyaW5n
IHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVu
dD4mJiwgRG9jdW1lbnQmLCBNU09MaXN0UXVpcmtzLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWFy
a3VwKTsKIAogV0VCQ09SRV9FWFBPUlQgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdt
ZW50RnJvbVRleHQoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggYTgz
NTA1NWJhYzI4YzJiNzU5Y2VkMDlkZTY4NzRiOWJkZjc3Nzc4NC4uYTE5ZGQzYjY1ZjFmM2RmZDUw
MWQ2YzdkYWI3OWMzNTJlYTlhNWQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIEFzeW5jRmlsZVN0cmVhbTo6fkFzeW5j
RmlsZVN0cmVhbSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3Jt
KFdURjo6RnVuY3Rpb248V1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmls
ZVN0cmVhbSYpPiYmIG9wZXJhdGlvbikKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKEZ1
bmN0aW9uPEZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+JiYg
b3BlcmF0aW9uKQogewogICAgIGF1dG8mIGludGVybmFscyA9ICptX2ludGVybmFsczsKICAgICBj
YWxsT25GaWxlVGhyZWFkKFsmaW50ZXJuYWxzLCBvcGVyYXRpb24gPSBXVEZNb3ZlKG9wZXJhdGlv
bildIHsKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZShj
b25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdAogewogICAg
IC8vIEZJWE1FOiBFeHBsaWNpdCByZXR1cm4gdHlwZSBoZXJlIGFuZCBpbiBhbGwgdGhlIG90aGVy
IGNhc2VzIGxpa2UgdGhpcyBiZWxvdyBpcyBhIHdvcmthcm91bmQgZm9yIGEgZGVmaWNpZW5jeQog
ICAgIC8vIGluIHRoZSBXaW5kb3dzIGNvbXBpbGVyIGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGlu
Zy4gQ291bGQgcmVtb3ZlIGl0IGlmIHRoYXQgaXMgcmVzb2x2ZWQuCi0gICAgcGVyZm9ybShbcGF0
aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZV0oRmlsZVN0
cmVhbSYgc3RyZWFtKSAtPiBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPiB7
CisgICAgcGVyZm9ybShbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZV0oRmlsZVN0cmVhbSYgc3RyZWFtKSAtPiBGdW5jdGlvbjx2b2lkKEZpbGVTdHJl
YW1DbGllbnQmKT4gewogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IHN0cmVhbS5nZXRTaXplKHBh
dGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAgICAgICAgIHJldHVybiBbc2l6ZV0oRmls
ZVN0cmVhbUNsaWVudCYgY2xpZW50KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkR2V0U2l6ZShz
aXplKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZShj
b25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdAogdm9pZCBB
c3luY0ZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25n
IG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKIHsKICAgICAvLyBGSVhNRTogRXhwbGljaXQgcmV0
dXJuIHR5cGUgaGVyZSBpcyBhIHdvcmthcm91bmQgZm9yIGEgZGVmaWNpZW5jeSBpbiB0aGUgV2lu
ZG93cyBjb21waWxlciBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuCi0gICAgcGVyZm9ybShb
cGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIG9mZnNldCwgbGVuZ3RoXShGaWxlU3RyZWFtJiBz
dHJlYW0pIC0+IFdURjo6RnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+IHsKKyAgICBw
ZXJmb3JtKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgb2Zmc2V0LCBsZW5ndGhdKEZpbGVT
dHJlYW0mIHN0cmVhbSkgLT4gRnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+IHsKICAg
ICAgICAgYm9vbCBzdWNjZXNzID0gc3RyZWFtLm9wZW5Gb3JSZWFkKHBhdGgsIG9mZnNldCwgbGVu
Z3RoKTsKICAgICAgICAgcmV0dXJuIFtzdWNjZXNzXShGaWxlU3RyZWFtQ2xpZW50JiBjbGllbnQp
IHsKICAgICAgICAgICAgIGNsaWVudC5kaWRPcGVuKHN1Y2Nlc3MpOwpAQCAtMTY5LDcgKzE2OSw3
IEBAIHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpjbG9zZSgpCiAKIHZvaWQgQXN5bmNGaWxlU3RyZWFt
OjpyZWFkKHZvaWQqIGJ1ZmZlciwgaW50IGxlbmd0aCkKIHsKLSAgICBwZXJmb3JtKFtidWZmZXIs
IGxlbmd0aF0oRmlsZVN0cmVhbSYgc3RyZWFtKSAtPiBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZVN0
cmVhbUNsaWVudCYpPiB7CisgICAgcGVyZm9ybShbYnVmZmVyLCBsZW5ndGhdKEZpbGVTdHJlYW0m
IHN0cmVhbSkgLT4gRnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+IHsKICAgICAgICAg
aW50IGJ5dGVzUmVhZCA9IHN0cmVhbS5yZWFkKGJ1ZmZlciwgbGVuZ3RoKTsKICAgICAgICAgcmV0
dXJuIFtieXRlc1JlYWRdKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkgewogICAgICAgICAgICAg
Y2xpZW50LmRpZFJlYWQoYnl0ZXNSZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5oCmluZGV4IGViYmE3ZjIyYzNiYWQzYjM0M2E4ZjE4ZTVmNTgzMGM5ZDYzODRkMDgu
LjY0NTI4ZTM5NDgwMzZmZmRhMzhlMTkzMjNlZmJmNmI2ZTNhODFlNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBzdGFydCgpOwotICAgIHZvaWQgcGVyZm9ybShXVEY6OkZ1bmN0
aW9uPFdURjo6RnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4m
Jik7CisgICAgdm9pZCBwZXJmb3JtKEZ1bmN0aW9uPEZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNs
aWVudCYpPihGaWxlU3RyZWFtJik+JiYpOwogCiAgICAgc3RydWN0IEludGVybmFsczsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxzPiBtX2ludGVybmFsczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwCmluZGV4IDhiZjc0Y2UzMzFmY2E4Y2M4YjQ2YTUzMzRiMjYwNTBlM2RiYTAzZTcuLjk3NDRi
MDE1N2FlMTFjMTEwY2Q4YzI4OWU1MjdjYmZhMDJjMTBlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGludDY0X3QgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29u
c3QKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2lu
Y2VFcG9jaCgpLm1pbGxpc2Vjb25kc0FzPGludDY0X3Q+KCk7CiAKLSAgICByZXR1cm4gV1RGOjp0
aW1lQ2xpcChyZXN1bHQpOworICAgIHJldHVybiB0aW1lQ2xpcChyZXN1bHQpOwogfQogCiB2b2lk
IEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVOYW1lLCBTdHJpbmcmIGVm
ZmVjdGl2ZUNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggMTU3YTFlNzg3Yzk2NTMyMTI2ZDkxZTViMzdiZTY0
NTc4ZWUzNDdjOS4uMTJkZGVmZWQ0ZjYwZTc0YzE2MWM2MDkxNTIyNGRlZThiNGU2NmY2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3Bw
CkBAIC00OSw4ICs0OSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCi11c2luZyBXVEY6OlRocmVh
ZFNwZWNpZmljOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IEJsb2JVcmxPcmlnaW5NYXA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCmluZGV4IDczZTc2ZTAwYjJhOTVlNDYzNjBi
OTdmOTRhNzcxZDAwMWNhNDgxZjIuLjcxYTVhNmQxMzIxZWU4OGY2MjMwMjQxOWZlYjQyODdhZGUy
ZmQxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCkBAIC04
Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5SZW1vdmVBbGxJdGVtc0ZvclBh
Z2UgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ry
b3llZDxCYWNrRm9yd2FyZENhY2hlPjsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8
QmFja0ZvcndhcmRDYWNoZT47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQXV0b2ZpbGwuY3BwCmluZGV4IDVhZTIwY2M1NGRlNzIzNDNiYTNiMzc3ZjJhM2NmMDhlZjcz
ZjQ2ZmMuLjBlNzNkMjlhMjM1MjM2OWUxZDk1OWZmOWVjY2U5NTc4NGVmOTI2NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQXV0b2ZpbGwuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgQXV0b2ZpbGxEYXRhIEF1dG9m
aWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1D
b250cm8KIAogICAgICAgICAvLyA0LiBMZXQgSURMIHZhbHVlIGJlIHRoZSBjb25jYXRlbmF0aW9u
IG9mIGNvbnRhY3QsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwgYW5kIHRoZSBwcmV2aW91cwog
ICAgICAgICAvLyB2YWx1ZSBvZiBJREwgdmFsdWUgKHdoaWNoIGF0IHRoaXMgcG9pbnQgd2lsbCBh
bHdheXMgYmUgZmllbGQpLgotICAgICAgICBpZGxWYWx1ZSA9IFdURjo6bWFrZVN0cmluZyhjb250
YWN0LCAiICIsIGlkbFZhbHVlKTsKKyAgICAgICAgaWRsVmFsdWUgPSBtYWtlU3RyaW5nKGNvbnRh
Y3QsICIgIiwgaWRsVmFsdWUpOwogCiAgICAgICAgIC8vIDUuIElmIHRoZSBpbmRleHRoIGVudHJ5
IGluIHRva2VucyBpcyB0aGUgZmlyc3QgZW50cnksIHRoZW4gc2tpcCB0byB0aGUgc3RlcCBsYWJl
bGVkIGRvbmUuCiAgICAgICAgIGlmIChpbmRleCA9PSAwKQpAQCAtMjg5LDcgKzI4OSw3IEBAIEF1
dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50
KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAgICAgICAgIC8vIDQuIExldCBJREwgdmFsdWUgYmUgdGhl
IGNvbmNhdGVuYXRpb24gb2YgbW9kZSwgYSBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVyLCBhbmQgdGhl
IHByZXZpb3VzCiAgICAgICAgIC8vIHZhbHVlIG9mIElETCB2YWx1ZSAod2hpY2ggYXQgdGhpcyBw
b2ludCB3aWxsIGVpdGhlciBiZSBmaWVsZCBvciB0aGUgY29uY2F0ZW5hdGlvbiBvZiBjb250YWN0
LAogICAgICAgICAvLyBhIHNwYWNlLCBhbmQgZmllbGQpLgotICAgICAgICBpZGxWYWx1ZSA9IFdU
Rjo6bWFrZVN0cmluZyhtb2RlLCAiICIsIGlkbFZhbHVlKTsKKyAgICAgICAgaWRsVmFsdWUgPSBt
YWtlU3RyaW5nKG1vZGUsICIgIiwgaWRsVmFsdWUpOwogCiAgICAgICAgIC8vIDUuIElmIHRoZSBp
bmRleHRoIGVudHJ5IGluIHRva2VucyBpcyB0aGUgZmlyc3QgZW50cnksIHRoZW4gc2tpcCB0byB0
aGUgc3RlcCBsYWJlbGVkIGRvbmUuCiAgICAgICAgIGlmIChpbmRleCA9PSAwKQpAQCAtMzE4LDcg
KzMxOCw3IEBAIEF1dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNv
bnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAKICAgICAvLyAyMC4gTGV0IElETCB2
YWx1ZSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBzZWN0aW9uLCBhIFUrMDAyMCBTUEFDRSBjaGFy
YWN0ZXIsIGFuZCB0aGUgcHJldmlvdXMKICAgICAvLyB2YWx1ZSBvZiBJREwgdmFsdWUuCi0gICAg
aWRsVmFsdWUgPSBXVEY6Om1ha2VTdHJpbmcoc2VjdGlvbiwgIiAiLCBpZGxWYWx1ZSk7CisgICAg
aWRsVmFsdWUgPSBtYWtlU3RyaW5nKHNlY3Rpb24sICIgIiwgaWRsVmFsdWUpOwogCiAgICAgcmV0
dXJuIHsgZmllbGQsIGlkbFZhbHVlIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVRva2VuTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaApp
bmRleCA0NmI4NTk4OTlmMTI0OTUyMzUxM2NlNzRmZWQ0OTk5ZjM0YjBkZDY4Li42Yjc4YzY4N2Nh
Yjc5NWNjMDgyZmMyNjZiNTYzNTY4NWVhMjQzMGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5M
aXN0LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NVG9r
ZW5MaXN0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2lu
ZyBJc1N1cHBvcnRlZFRva2VuRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPGJvb2woRG9jdW1lbnQm
LCBTdHJpbmdWaWV3KT47CisgICAgdXNpbmcgSXNTdXBwb3J0ZWRUb2tlbkZ1bmN0aW9uID0gRnVu
Y3Rpb248Ym9vbChEb2N1bWVudCYsIFN0cmluZ1ZpZXcpPjsKICAgICBET01Ub2tlbkxpc3QoRWxl
bWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIElzU3VwcG9ydGVkVG9r
ZW5GdW5jdGlvbiYmIGlzU3VwcG9ydGVkVG9rZW4gPSB7IH0pOwogCiAgICAgdm9pZCBhc3NvY2lh
dGVkQXR0cmlidXRlVmFsdWVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGU2YWIwZWM2YzU5MDZhZDdiYjYzZjI4
OTUyZjYzMGU4OWY2ZmI3ZmEuLjFlODViZDczYTY4NzU3OWU3MzM2ZGU0ZDU3YjBlYWEyZWMxMTEy
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNjgsNyAr
NjgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBIVE1MSW1hZ2VFbGVtZW50OjpI
VE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBk
b2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCi0gICAgLCBtX2ltYWdlTG9hZGVyKFdURjo6bWFrZVVuaXF1ZTxIVE1MSW1h
Z2VMb2FkZXI+KCp0aGlzKSkKKyAgICAsIG1faW1hZ2VMb2FkZXIobWFrZVVuaXF1ZTxIVE1MSW1h
Z2VMb2FkZXI+KCp0aGlzKSkKICAgICAsIG1fZm9ybShudWxscHRyKQogICAgICwgbV9mb3JtU2V0
QnlQYXJzZXIoZm9ybSkKICAgICAsIG1fY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlT3BlcmF0
b3I6OlNvdXJjZU92ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBjYjdiNjlmNTljNTBlYTU0N2M0N2EyODI0M2QwMmVlMDQ3ZDRkZjQ2Li5mZjM0NmYyNWY3
NWU0YzU4ZWJhOGU2ZjdjZThhZDFhMDdiNzVmZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTY0NzksNyArNjQ3OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShib29sIHZhbHVlKQog
ICAgIH0KIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxp
bmVUaGVuKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKEZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKICAgICBBU1NFUlQoIW1fcHJlcGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFuZGxlcik7CkBA
IC02NTExLDcgKzY1MTEsNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gSFRNTE1lZGlhRWxl
bWVudDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgbV92aWRl
b0Z1bGxzY3JlZW5MYXllciA9IHBsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCmluZGV4IDYxMmVmYzU4YzJhNzlhMjBkMWYyYWU5YTM1M2IwZjMwNDg3ODEy
Y2YuLjk2MDg0YTI3MDcwZDljMGNjYTlkNTFlNjc3YTk3MzZiMDFiNGY0NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xODAsMTAgKzE4MCwxMCBAQCBwdWJsaWM6
CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogICAgIGJvb2wgaXNW
aWRlb0xheWVySW5saW5lKCk7CiAgICAgdm9pZCBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXll
clRvSW5saW5lKGJvb2wpOwotICAgIHZvaWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CisgICAg
dm9pZCB3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKQogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5M
YXllcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
ID0gW10geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKFBsYXRmb3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIg
PSBbXSB7IH0pOwogI2lmZGVmIF9fT0JKQ19fCiAgICAgUGxhdGZvcm1MYXllciogdmlkZW9GdWxs
c2NyZWVuTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgp
OyB9CiAjZW5kaWYKQEAgLTkyNiw3ICs5MjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
Q2FwdGlvbkNvbnRhaW5lcigpOwogICAgIHZvaWQgZW5zdXJlTWVkaWFDb250cm9sc1NoYWRvd1Jv
b3QoKTsKIAotICAgIHVzaW5nIEpTU2V0dXBGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248Ym9vbChK
U0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBTY3JpcHRDb250cm9sbGVy
JiwgRE9NV3JhcHBlcldvcmxkJik+OworICAgIHVzaW5nIEpTU2V0dXBGdW5jdGlvbiA9IEZ1bmN0
aW9uPGJvb2woSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgU2NyaXB0
Q29udHJvbGxlciYsIERPTVdyYXBwZXJXb3JsZCYpPjsKICAgICBib29sIHNldHVwQW5kQ2FsbEpT
KGNvbnN0IEpTU2V0dXBGdW5jdGlvbiYpOwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHByaXZhdGU6CiAgICAgVmlkZW9GdWxsc2Ny
ZWVuTW9kZSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgeyBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9
OwogICAgIGJvb2wgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IHsgZmFsc2UgfTsKICAgICBib29s
IG1fcHJlcGFyZWRGb3JJbmxpbmU7Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcHJlcGFy
ZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFuZGxlcjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fcHJl
cGFyZWRGb3JJbmxpbmVDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIGJvb2wgbV90ZW1wb3Jhcmls
eUFsbG93aW5nSW5saW5lUGxheWJhY2tBZnRlckZ1bGxzY3JlZW4geyBmYWxzZSB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5jcHAKaW5kZXggMmM4MTc1YjdkM2NkNmRhOTQw
ZWFjODRlMzg1M2FhOGQyYWNjMWZlNC4uMzI0MTg4OTcxZWEyMzI4MjU2MTg1YjIyYzdiNzk0YjA5
MmEwYmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcApAQCAtMTQ3
LDcgKzE0Nyw3IEBAIFZlY3RvcjxSZWY8Tm9kZT4+IEhUTUxTbG90RWxlbWVudDo6YXNzaWduZWRO
b2Rlcyhjb25zdCBBc3NpZ25lZE5vZGVzT3B0aW9ucyYgb3B0CiAgICAgfQogCiAgICAgaWYgKGF1
dG8qIG5vZGVzID0gYXNzaWduZWROb2RlcygpOyBub2RlcykgewotICAgICAgICByZXR1cm4gV1RG
Ojpjb21wYWN0TWFwKCpub2RlcywgW10oYXV0byYgbm9kZVdlYWtQdHIpIC0+IFJlZlB0cjxOb2Rl
PiB7CisgICAgICAgIHJldHVybiBjb21wYWN0TWFwKCpub2RlcywgW10oYXV0byYgbm9kZVdlYWtQ
dHIpIC0+IFJlZlB0cjxOb2RlPiB7CiAgICAgICAgICAgICByZXR1cm4gbm9kZVdlYWtQdHIuZ2V0
KCk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCBWZWN0b3I8UmVmPE5v
ZGU+PiBIVE1MU2xvdEVsZW1lbnQ6OmFzc2lnbmVkTm9kZXMoY29uc3QgQXNzaWduZWROb2Rlc09w
dGlvbnMmIG9wdAogCiBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBIVE1MU2xvdEVsZW1lbnQ6OmFzc2ln
bmVkRWxlbWVudHMoY29uc3QgQXNzaWduZWROb2Rlc09wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFdURjo6Y29tcGFjdE1hcChhc3NpZ25lZE5vZGVzKG9wdGlvbnMpLCBbXShh
dXRvJiYgbm9kZSkgLT4gUmVmUHRyPEVsZW1lbnQ+IHsKKyAgICByZXR1cm4gY29tcGFjdE1hcChh
c3NpZ25lZE5vZGVzKG9wdGlvbnMpLCBbXShhdXRvJiYgbm9kZSkgLT4gUmVmUHRyPEVsZW1lbnQ+
IHsKICAgICAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEVsZW1lbnQ+KFdU
Rk1vdmUobm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvblR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25UeXBlLmgKaW5kZXggY2JmNzI1MzU0
MzE4YjdmMDVjODdlNTg0YmExZmZkMzUzYTE1MzVkMi4uZTUwMWZiZDJiZjBlZTRmYjQ5OTg4NzAw
OTYxMzk3Mjg5YjMwNjgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNv
blR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uVHlwZS5oCkBAIC0yOSw3
ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gVGhlc2UgdmFsdWVzIGFyZSBh
cnJhbmdlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgd2l0aCBXVEY6Ok9wdGlvblNldC4KKy8v
IFRoZXNlIHZhbHVlcyBhcmUgYXJyYW5nZWQgc28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkIHdpdGgg
T3B0aW9uU2V0LgogLy8gQW5kIHVzaW5nIGl0IHdpdGggTWFya2FibGUgdmlhIEVudW1NYXJrYWJs
ZVRyYWl0cy4KIC8vIFNlZSBXS0xpbmtJY29uVHlwZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9TdWJtaXRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1pdEV2
ZW50LmNwcAppbmRleCAzYTU2OGVjNjM0ZDEyMzk5NDdhM2ZiYWM3Mjk4N2NkZGRmZDBiZTg2Li5i
OTBiMGQ0NzkzMzBiMGU5MjJlM2M3ZDZiNjg4YjIwZDU3NzMxZjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1N1Ym1pdEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1N1Ym1pdEV2ZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTdWJtaXRFdmVudCk7CiAKLVJlZjxTdWJtaXRF
dmVudD4gU3VibWl0RXZlbnQ6OmNyZWF0ZShjb25zdCBXVEY6OkF0b21TdHJpbmcmIHR5cGUsIElu
aXQmJiBpbml0KQorUmVmPFN1Ym1pdEV2ZW50PiBTdWJtaXRFdmVudDo6Y3JlYXRlKGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIEluaXQmJiBpbml0KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN1Ym1pdEV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCAwNjA1OGE1YTY4ZWRmNGUxZDMwNDQ4OTAxNTkwNTQ1
ZjFkNzY4Mzg1Li5kNGZiYzFmMDZhYmVhZWMxMTJkYWJkYmMyZDg1MjkxNTI0ODE3Y2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCkBAIC0zNiwyMiArMzYsMjIgQEAg
VVJMU2VhcmNoUGFyYW1zOjpVUkxTZWFyY2hQYXJhbXMoY29uc3QgU3RyaW5nJiBpbml0LCBET01V
UkwqIGFzc29jaWF0ZWRVUkwpCiB7CiB9CiAKLVVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFy
YW1zKGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYWly
cykKK1VSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKGNvbnN0IFZlY3RvcjxLZXlWYWx1
ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFpcnMpCiAgICAgOiBtX3BhaXJzKHBhaXJzKQogewog
fQogCi1FeGNlcHRpb25PcjxSZWY8VVJMU2VhcmNoUGFyYW1zPj4gVVJMU2VhcmNoUGFyYW1zOjpj
cmVhdGUoc3RkOjp2YXJpYW50PFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4sIFZlY3RvcjxXVEY6Oktl
eVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+LCBTdHJpbmc+JiYgdmFyaWFudCkKK0V4Y2VwdGlv
bk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiBVUkxTZWFyY2hQYXJhbXM6OmNyZWF0ZShzdGQ6OnZh
cmlhbnQ8VmVjdG9yPFZlY3RvcjxTdHJpbmc+PiwgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcs
IFN0cmluZz4+LCBTdHJpbmc+JiYgdmFyaWFudCkKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6
Om1ha2VWaXNpdG9yKFsmXShjb25zdCBWZWN0b3I8VmVjdG9yPFN0cmluZz4+JiB2ZWN0b3IpIC0+
IEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiB7Ci0gICAgICAgIFZlY3RvcjxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhaXJzOworICAgICAgICBWZWN0b3I8S2V5
VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gcGFpcnM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgcGFpciA6IHZlY3RvcikgewogICAgICAgICAgICAgaWYgKHBhaXIuc2l6ZSgpICE9IDIpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgICAgICAg
ICAgcGFpcnMuYXBwZW5kKHtwYWlyWzBdLCBwYWlyWzFdfSk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVVJMU2VhcmNoUGFyYW1zKFdURk1vdmUocGFpcnMpKSk7Ci0g
ICAgfSwgWyZdKGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+
JiBwYWlycykgLT4gRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IHsKKyAgICB9LCBb
Jl0oY29uc3QgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYWlycykgLT4g
RXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVVJMU2VhcmNoUGFyYW1zKHBhaXJzKSk7CiAgICAgfSwgWyZdKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSAtPiBFeGNlcHRpb25PcjxSZWY8VVJMU2VhcmNoUGFyYW1zPj4gewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMoc3RyaW5nLCBudWxscHRyKSk7
CkBAIC0xNTEsMTQgKzE1MSwxNCBAQCB2b2lkIFVSTFNlYXJjaFBhcmFtczo6dXBkYXRlRnJvbUFz
c29jaWF0ZWRVUkwoKQogICAgIG1fcGFpcnMgPSBzZWFyY2guc3RhcnRzV2l0aCgnPycpID8gV1RG
OjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyhzZWFyY2gpLnN1YnN0
cmluZygxKSkgOiBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShzZWFyY2gpOwog
fQogCi1zdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJM
U2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4dCgpCitzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFp
cjxTdHJpbmcsIFN0cmluZz4+IFVSTFNlYXJjaFBhcmFtczo6SXRlcmF0b3I6Om5leHQoKQogewog
ICAgIGF1dG8mIHBhaXJzID0gbV90YXJnZXQtPnBhaXJzKCk7CiAgICAgaWYgKG1faW5kZXggPj0g
cGFpcnMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYg
cGFpciA9IHBhaXJzW21faW5kZXgrK107Ci0gICAgcmV0dXJuIFdURjo6S2V5VmFsdWVQYWlyPFN0
cmluZywgU3RyaW5nPiB7IHBhaXIua2V5LCBwYWlyLnZhbHVlIH07CisgICAgcmV0dXJuIEtleVZh
bHVlUGFpcjxTdHJpbmcsIFN0cmluZz4geyBwYWlyLmtleSwgcGFpci52YWx1ZSB9OwogfQogCiBV
UkxTZWFyY2hQYXJhbXM6Okl0ZXJhdG9yOjpJdGVyYXRvcihVUkxTZWFyY2hQYXJhbXMmIHBhcmFt
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5oCmluZGV4IDJkMDZhZGNjMGUyZGI2
ZDcxZmRjNGM1OGFjODgwNDIzZTNkYTQ5NzQuLjk1OTE1ODNlMDhlMjBhNGUyOTU5NGJlODljMjdj
NmJlZmRjOWQyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFy
YW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuaApAQCAtMzYs
NyArMzYsNyBAQCBjbGFzcyBET01VUkw7CiAKIGNsYXNzIFVSTFNlYXJjaFBhcmFtcyA6IHB1Ymxp
YyBSZWZDb3VudGVkPFVSTFNlYXJjaFBhcmFtcz4gewogcHVibGljOgotICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8VVJMU2VhcmNoUGFyYW1zPj4gY3JlYXRlKHN0ZDo6dmFyaWFudDxWZWN0b3I8
VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+
PiwgU3RyaW5nPiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFt
cz4+IGNyZWF0ZShzdGQ6OnZhcmlhbnQ8VmVjdG9yPFZlY3RvcjxTdHJpbmc+PiwgVmVjdG9yPEtl
eVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+LCBTdHJpbmc+JiYpOwogICAgIHN0YXRpYyBSZWY8
VVJMU2VhcmNoUGFyYW1zPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIERPTVVSTCogYXNz
b2NpYXRlZFVSTCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVSTFNlYXJj
aFBhcmFtcyhzdHJpbmcsIGFzc29jaWF0ZWRVUkwpKTsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGlj
OgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEl0
ZXJhdG9yKFVSTFNlYXJjaFBhcmFtcyYpOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5
VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gbmV4dCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQoKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIFJlZjxVUkxTZWFyY2hQYXJhbXM+IG1fdGFyZ2V0OwpAQCAtNjQsMTMgKzY0LDEzIEBA
IHB1YmxpYzoKICAgICBJdGVyYXRvciBjcmVhdGVJdGVyYXRvcigpIHsgcmV0dXJuIEl0ZXJhdG9y
IHsgKnRoaXMgfTsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVl
UGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYWlycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFpcnM7IH0K
KyAgICBjb25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4mIHBhaXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWlyczsgfQogICAgIFVSTFNlYXJjaFBhcmFtcyhjb25zdCBTdHJp
bmcmLCBET01VUkwqKTsKLSAgICBVUkxTZWFyY2hQYXJhbXMoY29uc3QgVmVjdG9yPFdURjo6S2V5
VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4mKTsKKyAgICBVUkxTZWFyY2hQYXJhbXMoY29uc3Qg
VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+Jik7CiAgICAgdm9pZCB1cGRhdGVV
UkwoKTsKIAogICAgIFdlYWtQdHI8RE9NVVJMPiBtX2Fzc29jaWF0ZWRVUkw7Ci0gICAgVmVjdG9y
PFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gbV9wYWlyczsKKyAgICBWZWN0b3I8
S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gbV9wYWlyczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuaAppbmRleCAyN2Y4YjMyOGEzMzMyMDNjNGMxMWFiMjNlOTg4NTgwYzEx
ZTEyNzhhLi4xZDdkMjQxZDk3N2FkYjg3MDU0OGY0ZDllMjc3NzRlYWZiOWI0NjQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5o
CkBAIC0yODcsNyArMjg3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHZhbGlkYXRlQnVmZmVyVGFy
Z2V0Q29tcGF0aWJpbGl0eShjb25zdCBjaGFyKiwgR0NHTGVudW0sIFdlYkdMQnVmZmVyKik7CiAg
ICAgV2ViR0xCdWZmZXIqIHZhbGlkYXRlQnVmZmVyRGF0YVBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHVzYWdlKSBmaW5hbDsKICAg
ICBXZWJHTEJ1ZmZlciogdmFsaWRhdGVCdWZmZXJEYXRhVGFyZ2V0KGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0KSBmaW5hbDsKLSAgICBib29sIHZhbGlkYXRlQW5kQ2Fj
aGVCdWZmZXJCaW5kaW5nKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqKSBmaW5hbDsKKyAgICBi
b29sIHZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKikg
ZmluYWw7CiAgICAgR0NHTGludCBnZXRNYXhEcmF3QnVmZmVycygpIGZpbmFsOwogICAgIEdDR0xp
bnQgZ2V0TWF4Q29sb3JBdHRhY2htZW50cygpIGZpbmFsOwogICAgIGJvb2wgdmFsaWRhdGVJbmRl
eEFycmF5Q29uc2VydmF0aXZlKEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkJiBudW1FbGVtZW50c1Jl
cXVpcmVkKSBmaW5hbDsKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdmFs
aWRhdGVUZXhTdG9yYWdlRnVuY1BhcmFtZXRlcnMoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
bGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpOwogI2VuZGlmCiAKLSAgICB2b2lk
IHVuY2FjaGVEZWxldGVkQnVmZmVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBXZWJHTEJ1
ZmZlciopIGZpbmFsOworICAgIHZvaWQgdW5jYWNoZURlbGV0ZWRCdWZmZXIoY29uc3QgQWJzdHJh
Y3RMb2NrZXImLCBXZWJHTEJ1ZmZlciopIGZpbmFsOwogCiAgICAgZW51bSBjbGFzcyBDbGVhckJ1
ZmZlckNhbGxlciA6IHVpbnQ4X3QgewogICAgICAgICBDbGVhckJ1ZmZlcml2LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKaW5kZXggYmQ5YjcyN2RjZmQ4YTRlODA5M2Mx
Y2E4ZmIyZDU0YTZmMDk3MWQzOS4uN2NlMDI3MjAzZjFiMmRjYjA5MzMxZWI1M2E1MzEwNjFmZjg0
MmNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYs
IEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAKICAgICBH
Q0dMZW51bSBtX3RhcmdldCB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbnRleHRPYmplY3QuaAppbmRleCBlMmQ4OTZiZjNiNWQyODRmYTViY2Q2NTY1OTVl
MDQzZTYzNDJhNDhkLi43OTAwOGVmOWI5ZmUxZTM1ZDA1ODhkMWM5N2EyZjdkNTNiZTMzYzU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmY29udGV4dCA9PSBtX2Nv
bnRleHQ7CiAgICAgfQogCi0gICAgdm9pZCBkZXRhY2hDb250ZXh0KGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImKTsKKyAgICB2b2lkIGRldGFjaENvbnRleHQoY29uc3QgQWJzdHJhY3RMb2NrZXIm
KTsKIAogICAgIExvY2smIG9iamVjdEdyYXBoTG9ja0ZvckNvbnRleHQoKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCmluZGV4IGM1
Mzg5MzkxMDlhOTgwODQwYTcyMTQ4ZDIzZjg3MjEwM2UyYmZlZmIuLjY4MTJiNDFiOWU1MjA0ZTli
YjYzOWQ3YzA0NDA3NTA4YzQ0Mjg2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmgKQEAgLTYyLDEwICs2MiwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNJbml0aWFsaXplZCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldEluaXRp
YWxpemVkKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgb25EZXRhY2hlZChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBvbkRldGFjaGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0
R0wqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0R0wq
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZW1iZXJz
VG9PcGFxdWVSb290cyhjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgSlNDOjpBYnN0cmFjdFNs
b3RWaXNpdG9yJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVl
Um9vdHMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKSA9
IDA7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMQXR0YWNobWVudCgpOwpAQCAtODEs
OSArODEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdHRhY2htZW50Rm9yQm91bmRGcmFtZWJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleFRh
cmdldCwgV2ViR0xUZXh0dXJlKiwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcik7CiAgICAg
dm9pZCBzZXRBdHRhY2htZW50Rm9yQm91bmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGF0dGFjaG1lbnQsIFdlYkdMUmVuZGVyYnVmZmVyKik7CiAgICAgLy8gSWYgYW4gb2Jq
ZWN0IGlzIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50bHkgYm91bmQgZnJhbWVidWZmZXIsIHJlbW92
ZSBpdC4KLSAgICB2b2lkIHJlbW92ZUF0dGFjaG1lbnRGcm9tQm91bmRGcmFtZWJ1ZmZlcihjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFNoYXJlZE9iamVj
dCopOworICAgIHZvaWQgcmVtb3ZlQXR0YWNobWVudEZyb21Cb3VuZEZyYW1lYnVmZmVyKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFNoYXJlZE9iamVjdCopOwog
ICAgIC8vIElmIGEgZ2l2ZW4gYXR0YWNobWVudCBwb2ludCBmb3IgdGhlIGN1cnJlbnRseSBib3Vu
ZCBmcmFtZWJ1ZmZlciBpcyBub3QgbnVsbCwgcmVtb3ZlIHRoZSBhdHRhY2hlZCBvYmplY3QuCi0g
ICAgdm9pZCByZW1vdmVBdHRhY2htZW50RnJvbUJvdW5kRnJhbWVidWZmZXIoY29uc3QgV1RGOjpB
YnN0cmFjdExvY2tlciYsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCk7Cisg
ICAgdm9pZCByZW1vdmVBdHRhY2htZW50RnJvbUJvdW5kRnJhbWVidWZmZXIoY29uc3QgQWJzdHJh
Y3RMb2NrZXImLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpOwogICAgIFdl
YkdMU2hhcmVkT2JqZWN0KiBnZXRBdHRhY2htZW50T2JqZWN0KEdDR0xlbnVtKSBjb25zdDsKIAog
I2lmICFVU0UoQU5HTEUpCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogCiAgICAgR0NHTGVu
dW0gZ2V0RHJhd0J1ZmZlcihHQ0dMZW51bSk7CiAKLSAgICB2b2lkIGFkZE1lbWJlcnNUb09wYXF1
ZVJvb3RzKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0
b3ImKTsKKyAgICB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJik7CiAKICNpZiBFTkFCTEUoV0VCWFIpCiAg
ICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlOyB9CkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBX
VEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAg
ICAgV2ViR0xBdHRhY2htZW50KiBnZXRBdHRhY2htZW50KEdDR0xlbnVtKSBjb25zdDsKIApAQCAt
MTQ5LDkgKzE0OSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBdHRhY2htZW50SW50ZXJuYWwo
R0NHTGVudW0gYXR0YWNobWVudCwgV2ViR0xSZW5kZXJidWZmZXIqKTsKICAgICAvLyBJZiBhIGdp
dmVuIGF0dGFjaG1lbnQgcG9pbnQgZm9yIHRoZSBjdXJyZW50bHkgYm91bmQgZnJhbWVidWZmZXIg
aXMgbm90CiAgICAgLy8gbnVsbCwgcmVtb3ZlIHRoZSBhdHRhY2hlZCBvYmplY3QuCi0gICAgdm9p
ZCByZW1vdmVBdHRhY2htZW50SW50ZXJuYWwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdD
R0xlbnVtIGF0dGFjaG1lbnQpOworICAgIHZvaWQgcmVtb3ZlQXR0YWNobWVudEludGVybmFsKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgR0NHTGVudW0gYXR0YWNobWVudCk7CiAKLSAgICB0eXBlZGVm
IFdURjo6SGFzaE1hcDxHQ0dMZW51bSwgUmVmUHRyPFdlYkdMQXR0YWNobWVudD4+IEF0dGFjaG1l
bnRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPEdDR0xlbnVtLCBSZWZQdHI8V2ViR0xBdHRhY2ht
ZW50Pj4gQXR0YWNobWVudE1hcDsKIAogICAgIEF0dGFjaG1lbnRNYXAgbV9hdHRhY2htZW50czsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKaW5kZXggZDY3MjBlNzI3
NmVhMmFlOTQyYzlkYjhhNDMwZTFiYmE1ZTgyNGYzYi4uNjJiOGY3NDA3OWVkYWY1YTY4ODM2ZTMw
YmM4Mjg1OGRmYTU0YjBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVj
dC5oCkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgogICAgIC8vIFRoZSBBYnN0cmFjdExvY2tl
ciBhcmd1bWVudCBlbmZvcmNlcyBhdCBjb21waWxlIHRpbWUgdGhhdCB0aGUgb2JqZWN0R3JhcGhM
b2NrCiAgICAgLy8gaXMgaGVsZC4gVGhpcyBpc24ndCBuZWNlc3NhcnkgZm9yIGFsbCBvYmplY3Qg
dHlwZXMsIGJ1dCBlbm91Z2ggb2YgdGhlbSB0aGF0CiAgICAgLy8gaXQncyBkb25lIGZvciBhbGwg
b2YgdGhlbS4KLSAgICB2b2lkIGRlbGV0ZU9iamVjdChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2Vy
JiwgR3JhcGhpY3NDb250ZXh0R0wqKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdChjb25zdCBBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKik7CiAKICAgICB2b2lkIG9uQXR0YWNoZWQo
KSB7ICsrbV9hdHRhY2htZW50Q291bnQ7IH0KLSAgICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKik7CisgICAgdm9pZCBvbkRldGFj
aGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKTsKIAogICAgIC8v
IFRoaXMgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNsaWVudCBzaWRlIGlzc3VlIGEgZGVsZXRlIGNh
bGwgYWxyZWFkeSwgbm90CiAgICAgLy8gd2hldGhlciB0aGUgT3BlbkdMIHJlc291cmNlIGlzIGRl
bGV0ZWQuCkBAIC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkRlc3RydWN0
b3IoKTsKIAogICAgIC8vIGRlbGV0ZU9iamVjdEltcGwgc2hvdWxkIGJlIG9ubHkgY2FsbGVkIG9u
Y2UgdG8gZGVsZXRlIHRoZSBPcGVuR0wgcmVzb3VyY2UuCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
KiwgUGxhdGZvcm1HTE9iamVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RJ
bXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdM
T2JqZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzR3JvdXBPckNvbnRleHQoKSBjb25z
dCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJv
Z3JhbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKaW5kZXgg
OTY4NWE4Y2JjZTU2OGU5NTk4MWQ0N2ZiZjA3NGIwOTVkZTY1NmU1MC4uN2I4ZWI3ZDAzYjM0MjE3
MWY2ZGVkOTNjM2Y5ZGVhN2MwOTlkOGUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xQcm9ncmFtLmgKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgaW5jcmVh
c2VMaW5rQ291bnQoKTsKIAogICAgIFdlYkdMU2hhZGVyKiBnZXRBdHRhY2hlZFNoYWRlcihHQ0dM
ZW51bSk7Ci0gICAgYm9vbCBhdHRhY2hTaGFkZXIoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYs
IFdlYkdMU2hhZGVyKik7Ci0gICAgYm9vbCBkZXRhY2hTaGFkZXIoY29uc3QgV1RGOjpBYnN0cmFj
dExvY2tlciYsIFdlYkdMU2hhZGVyKik7CisgICAgYm9vbCBhdHRhY2hTaGFkZXIoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBXZWJHTFNoYWRlciopOworICAgIGJvb2wgZGV0YWNoU2hhZGVyKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgV2ViR0xTaGFkZXIqKTsKICAgICAKICAgICB2b2lkIHNldFJlcXVp
cmVkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudChpbnQgY291bnQpCiAgICAgewpAQCAtODgs
MTIgKzg4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcmVxdWlyZWRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlckNvdW50OwogICAgIH0KIAotICAgIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVl
Um9vdHMoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEpTQzo6QWJzdHJhY3RTbG90VmlzaXRv
ciYpOworICAgIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVlUm9vdHMoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKTsKIAogcHJpdmF0ZToKICAgICBXZWJHTFBy
b2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNz
Q29udGV4dEdMKik7CiAgICAgdm9pZCBjYWNoZUluZm9JZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IDk5MmY3Yzg3OGU4ODA4OGU0M2FkYzE3ZGY5
MjE2ZDk1MmFmMTk3OTYuLjk2YWYzODFiYzBkNjhiOGYzMTk1N2NiZTY3YTc3NTdhOGRhNzcxNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkdMUXVlcnkoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBtX2lzUmVzdWx0QXZhaWxhYmxlIHsgZmFsc2UgfTsKICAgICBHQ0dMZW51bSBtX3Rhcmdl
dCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZl
ci5oCmluZGV4IDEyNGI0MzhjYzU5Y2ZkZWNmM2NjOTRkZjUyYjE2ODNiMTBjZjQ5ZGQuLjFjMDI2
NzZmODAzN2YwODZmZTRjMjcwMmU4ZjU0YzEyNjgyYjY1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFdlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
KyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1Jl
bmRlcmJ1ZmZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAppbmRleCA5ZmYwYTk3YzkzY2VhNzc1ZjkzYzgwZmRkOWE0MWJkMDM1OGU3MjNiLi5lY2Zm
NTkxY2M2NzEwNjY3MTQxZGVjZWI3MzcwMTg1YWJhMjNjMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApA
QCAtMjkzLDcgKzI5Myw3IEBAIG5hbWVzcGFjZSB7CiAgICAgICAgIFVDaGFyIHRlbXAgPSAwOwog
ICAgICAgICBzd2l0Y2ggKG1fcGFyc2VTdGF0ZSkgewogICAgICAgICBjYXNlIEJlZ2lubmluZ09m
TGluZToKLSAgICAgICAgICAgIGlmIChXVEY6OmlzQVNDSUlTcGFjZShjKSkgeworICAgICAgICAg
ICAgaWYgKGlzQVNDSUlTcGFjZShjKSkgewogICAgICAgICAgICAgICAgIGVtaXQoYyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC03NzgyLDcgKzc3ODIsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFNp
bXVsYXRlZEV2ZW50Rm9yVGVzdGluZwogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmVuc3VyZU5vdE51bGwoY29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAogewogICAgIGlmICh0ZXh0
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjplbXB0eVN0cmluZygpOworICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmlu
ZGV4IGYwOTg4NTc3YjJjYmIyMzQzOGE4NzM1NzA1MGVmZWQzNTI3ODkyODUuLjY1MjRjOTE3Mzc1
NzA5YTJjNjUwZTJhYjgxNjEzOWRmNTA1ODE2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTUzNyw3ICs1
MzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBlbmFibGVTdXBwb3J0ZWRFeHRlbnNpb24oQVND
SUlMaXRlcmFsIGV4dGVuc2lvbk5hbWVMaXRlcmFsKTsKICAgICB2b2lkIGxvc2VFeHRlbnNpb25z
KExvc3RDb250ZXh0TW9kZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5jYWNoZURlbGV0ZWRCdWZm
ZXIoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIFdlYkdMQnVmZmVyKik7CisgICAgdmlydHVh
bCB2b2lkIHVuY2FjaGVEZWxldGVkQnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgV2ViR0xC
dWZmZXIqKTsKIAogICAgIGJvb2wgY29tcG9zaXRpbmdSZXN1bHRzTmVlZFVwZGF0aW5nKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jb21wb3NpdGluZ1Jlc3VsdHNOZWVkVXBkYXRpbmc7IH0KICAg
ICBib29sIG5lZWRzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQpAQCAtNTYwLDcgKzU2MCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8V2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdEJhc2U+IG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0OwogICAgIFJl
ZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZT4gbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0
OwogCi0gICAgdm9pZCBzZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZSopOworICAgIHZvaWQgc2V0Qm91
bmRWZXJ0ZXhBcnJheU9iamVjdChjb25zdCBBYnN0cmFjdExvY2tlciYsIFdlYkdMVmVydGV4QXJy
YXlPYmplY3RCYXNlKik7CiAgICAgCiAgICAgY2xhc3MgVmVydGV4QXR0cmliVmFsdWUgewogICAg
IHB1YmxpYzoKQEAgLTEwNjEsNyArMTA2MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiBmb3IgZGVsZXRlKiAoZGVsZXRlQnVmZmVyLCBkZWxldGVQcm9ncmFtLCBldGMp
IGZ1bmN0aW9ucy4KICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgY2FsbGVyIHNob3VsZCByZXR1cm4g
d2l0aG91dCBmdXJ0aGVyIHByb2Nlc3NpbmcuCi0gICAgYm9vbCBkZWxldGVPYmplY3QoY29uc3Qg
V1RGOjpBYnN0cmFjdExvY2tlciYsIFdlYkdMT2JqZWN0Kik7CisgICAgYm9vbCBkZWxldGVPYmpl
Y3QoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBXZWJHTE9iamVjdCopOwogCiAgICAgLy8gSGVscGVy
IGZ1bmN0aW9uIGZvciBBUElzIHdoaWNoIGNhbiBsZWdhbGx5IHJlY2VpdmUgbnVsbCBvYmplY3Rz
LCBpbmNsdWRpbmcKICAgICAvLyB0aGUgYmluZCogY2FsbHMgKGJpbmRCdWZmZXIsIGJpbmRUZXh0
dXJlLCBldGMuKSBhbmQgdXNlUHJvZ3JhbS4gQ2hlY2tzIHRoYXQKQEAgLTEwNzksNyArMTA3OSw3
IEBAIHByb3RlY3RlZDoKICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91bmQgYnVmZmVyIHRv
IHRhcmdldCwgb3IgMCBpZiB0aGUgdGFyZ2V0IGlzIGludmFsaWQuCiAgICAgdmlydHVhbCBXZWJH
TEJ1ZmZlciogdmFsaWRhdGVCdWZmZXJEYXRhVGFyZ2V0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0NHTGVudW0gdGFyZ2V0KTsKIAotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUFuZENhY2hl
QnVmZmVyQmluZGluZyhjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKik7CisgICAgdmlydHVhbCBi
b29sIHZhbGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKik7
CiAKICNpZiAhVVNFKEFOR0xFKQogICAgIC8vIEhlbHBlcnMgZm9yIHNpbXVsYXRpbmcgdmVydGV4
QXR0cmliMC4KQEAgLTExMDgsNyArMTEwOCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEdD
R0xpbnQgZ2V0TWF4Q29sb3JBdHRhY2htZW50cygpID0gMDsKIAogICAgIHZvaWQgc2V0QmFja0Ry
YXdCdWZmZXIoR0NHTGVudW0pOwotICAgIHZvaWQgc2V0RnJhbWVidWZmZXIoY29uc3QgV1RGOjpB
YnN0cmFjdExvY2tlciYsIEdDR0xlbnVtLCBXZWJHTEZyYW1lYnVmZmVyKik7CisgICAgdm9pZCBz
ZXRGcmFtZWJ1ZmZlcihjb25zdCBBYnN0cmFjdExvY2tlciYsIEdDR0xlbnVtLCBXZWJHTEZyYW1l
YnVmZmVyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUN1cnJlbnRGcmFtZWJ1ZmZlcigp
OwogICAgIHZvaWQgcmVzdG9yZUN1cnJlbnRUZXh0dXJlMkQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xTYW1wbGVyLmgKaW5kZXggNGUxMGQ3NzE3MzUwMTA5Yzg4YTE5OWM1MWU3
ZjIxYWQ4MDVhODJhMy4uODc1NDk1ZmRlMjI0Y2I3NmJlNjdlY2ZhYWY5ZDhhOTI4YTY2YTc3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkdMU2FtcGxlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJik7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmpl
Y3QpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFNoYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFk
ZXIuaAppbmRleCA5MzRiM2RjMThhZjM0N2MzZDUwZmFlNGIwNjVjOTgyOWYwYmQ5OWI2Li5lOTQx
MTM5OTg5ZWRmYmEzZTM4MGY1ZDk4Zjg4OTUxODczZDYyYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgR0NHTGVudW0p
OwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
KiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiAKICAgICBHQ0dMZW51bSBtX3R5cGU7CiAgICAg
U3RyaW5nIG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFyZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hh
cmVkT2JqZWN0LmgKaW5kZXggMGNiOTM1NGEyMjNiY2Y5NzRjNDM5NmRmNDhhZWY1ZDhiNDIyYTgy
Yi4uYTJlN2NjNTI5Yzg4YTE2NDc0MjdhYzA5ZjdlNzRlY2UzYzA4YzYwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oCkBAIC01NSw3ICs1NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvbnRleHRHcm91cCA9PSBtX2NvbnRleHRHcm91
cDsKICAgICB9CiAKLSAgICB2b2lkIGRldGFjaENvbnRleHRHcm91cChjb25zdCBXVEY6OkFic3Ry
YWN0TG9ja2VyJik7CisgICAgdm9pZCBkZXRhY2hDb250ZXh0R3JvdXAoY29uc3QgQWJzdHJhY3RM
b2NrZXImKTsKIAogICAgIHZvaWQgZGV0YWNoQ29udGV4dEdyb3VwV2l0aG91dERlbGV0aW5nT2Jq
ZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3lu
Yy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKaW5kZXggNjBhYjA2
YTkyM2Y1ZTA5MjZjYzliZjg1YjBhMDUxZjJlNGRhODAxZi4uNTBiZTA0NGJhZTZjZDkyN2NiYTdj
ZTM2NDc2ZTllMmQ0NTMxZTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTeW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5j
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBHQ0dMaW50IG1fc3luY1N0YXR1cyA9
IHsgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkFMRUQgfTsKICAgICBHQ0dMc3luYyBtX3N5bmM7
CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYs
IEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVy
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKaW5kZXggYTg1
YWM3ODhlN2YxNzk3NmJlYTU0NjdjM2QyMDFkYzg4ZmZkNmVmZS4uOTk0ODZlZTUyZDQ4MTg1OGE3
ODM4ODk2MTVkMWFiY2M5OGU3N2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xUZXh0dXJlLmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJH
TFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVP
YmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCos
IFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVj
dCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzVGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5oCmluZGV4IDYwNTFlZGQwYjVkYjc4N2M2ZmZhNGZkNWRlZGY4M2Vj
OWI5MmVmNzkuLjM2OTc2NmI0NThjMTg3Njg0ODExYWY2MTVmODEwMDJlMDY4NmYyZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNr
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIC8vIFRoZXNlIGFyZSB0aGUgaW5kZXhl
ZCBiaW5kIHBvaW50cyBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZlcnMuCiAgICAgLy8gUmV0
dXJucyBmYWxzZSBpZiBpbmRleCBpcyBvdXQgb2YgcmFuZ2UgYW5kIHRoZSBjYWxsZXIgc2hvdWxk
CiAgICAgLy8gc3ludGhlc2l6ZSBhIEdMIGVycm9yLgotICAgIHZvaWQgc2V0Qm91bmRJbmRleGVk
VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdDR0x1
aW50IGluZGV4LCBXZWJHTEJ1ZmZlciopOworICAgIHZvaWQgc2V0Qm91bmRJbmRleGVkVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHQ0dMdWludCBpbmRleCwg
V2ViR0xCdWZmZXIqKTsKICAgICBib29sIGdldEJvdW5kSW5kZXhlZFRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyKEdDR0x1aW50IGluZGV4LCBXZWJHTEJ1ZmZlcioqIG91dEJ1ZmZlcik7CiAgICAgCiAg
ICAgYm9vbCB2YWxpZGF0ZVByb2dyYW1Gb3JSZXN1bWUoV2ViR0xQcm9ncmFtKikgY29uc3Q7CkBA
IC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0V2ZXJCZWVuQm91bmQoKSB7
IG1faGFzRXZlckJlZW5Cb3VuZCA9IHRydWU7IH0KICAgICAKICAgICBXZWJHTFByb2dyYW0qIHBy
b2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW0uZ2V0KCk7IH0KLSAgICB2b2lkIHNldFBy
b2dyYW0oY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIFdlYkdMUHJvZ3JhbSYpOworICAgIHZv
aWQgc2V0UHJvZ3JhbShjb25zdCBBYnN0cmFjdExvY2tlciYsIFdlYkdMUHJvZ3JhbSYpOwogICAg
IAogICAgIHZvaWQgdW5iaW5kQnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgV2ViR0xCdWZm
ZXImKTsKICAgICAKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmKTsKIAotICAgIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250
ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVj
dEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3Jt
R0xPYmplY3QpIG92ZXJyaWRlOwogICAgIAogICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCmluZGV4IGY3YjM2YTlmOThmMmVkNGRm
MTUyZjdjY2EzOGE2Y2RjNzBiY2JhMDQuLjhkN2FmZmM5OGI2YzAzYzk0YjNmNTNjODY0YjU5YzUw
NjE3ZmIxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZl
cnRleEFycmF5T2JqZWN0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fldlYkdMVmVydGV4QXJyYXlPYmplY3QoKTsKIHByaXZhdGU6CiAgICAgV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVHlwZSk7Ci0gICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaAppbmRl
eCBjNjEzOGJiZTY1ZTdkMzkwNGZmYTYzNTVlNmNjYzZjNTc3OGM4NDA0Li5hMzJjNzdhODU5OWY3
N2IxYzQ4MmRjZjMwOGM1MWFjMGJhZmU5NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmgKQEAgLTcwLDIxICs3
MCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFdmVyQmVlbkJvdW5kKCkgeyBtX2hhc0V2
ZXJCZWVuQm91bmQgPSB0cnVlOyB9CiAKICAgICBXZWJHTEJ1ZmZlciogZ2V0RWxlbWVudEFycmF5
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKTsg
fQotICAgIHZvaWQgc2V0RWxlbWVudEFycmF5QnVmZmVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2Nr
ZXImLCBXZWJHTEJ1ZmZlciopOworICAgIHZvaWQgc2V0RWxlbWVudEFycmF5QnVmZmVyKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgV2ViR0xCdWZmZXIqKTsKIAogICAgIHZvaWQgc2V0VmVydGV4QXR0
cmliRW5hYmxlZChpbnQgaW5kZXgsIGJvb2wgZmxhZyk7CiAgICAgY29uc3QgVmVydGV4QXR0cmli
U3RhdGUmIGdldFZlcnRleEF0dHJpYlN0YXRlKGludCBpbmRleCkgeyByZXR1cm4gbV92ZXJ0ZXhB
dHRyaWJTdGF0ZVtpbmRleF07IH0KLSAgICB2b2lkIHNldFZlcnRleEF0dHJpYlN0YXRlKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMaW50LCBHQ0dM
ZW51bSwgR0NHTGJvb2xlYW4sIEdDR0xzaXplaSwgR0NHTGludHB0ciwgYm9vbCwgV2ViR0xCdWZm
ZXIqKTsKLSAgICB2b2lkIHVuYmluZEJ1ZmZlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwg
V2ViR0xCdWZmZXImKTsKKyAgICB2b2lkIHNldFZlcnRleEF0dHJpYlN0YXRlKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xi
b29sZWFuLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIsIGJvb2wsIFdlYkdMQnVmZmVyKik7CisgICAg
dm9pZCB1bmJpbmRCdWZmZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBXZWJHTEJ1ZmZlciYpOwog
CiAgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWlu
dCBkaXZpc29yKTsKIAotICAgIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVlUm9vdHMoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYpOworICAgIHZvaWQg
YWRkTWVtYmVyc1RvT3BhcXVlUm9vdHMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBKU0M6OkFic3Ry
YWN0U2xvdFZpc2l0b3ImKTsKIAogICAgIGJvb2wgYXJlQWxsRW5hYmxlZEF0dHJpYkJ1ZmZlcnNC
b3VuZCgpOwogcHJvdGVjdGVkOgogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmLCBUeXBlKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwo
Y29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1H
TE9iamVjdCkgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3Zl
cnJpZGUgPSAwOwogI2lmICFVU0UoQU5HTEUpCiAgICAgdm9pZCB1cGRhdGVWZXJ0ZXhBdHRyaWIw
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKaW5kZXggMTEwY2M3NzVhNGZkNzhlYTMyOTM0YTU2
MDFiNDk1YjJkOWUwZDVmMi4uNzJiOTY4OGU2Zjk1ZWZjMmMwMDk5ZWViZDVkZWNkNDMzZWQ2OWFj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUzo6fldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKQogICAgIHJ1bkRlc3RydWN0b3Io
KTsKIH0KIAotdm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBs
KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImIGxvY2tlciwgR3JhcGhpY3NDb250ZXh0R0wqIGNv
bnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCit2b2lkIFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVM6OmRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
R3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQzZCwgUGxhdGZvcm1HTE9iamVjdCBvYmplY3QpCiB7
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkRlZmF1bHQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmgKaW5kZXggNjJjOGY3YzMyZmU1NjViNmI1NzJiN2YwZGUxMjFmODNkNmEzOTMyNy4uMWI3ZjNh
MmFiZjNlYzZjYzQ1ODRhMjAxOTljZDYzNDM3ZDFiMzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaApAQCAtMzcs
NyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
UygpOwogcHJpdmF0ZToKICAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmLCBUeXBlKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3Qg
V1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVj
dCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDM4NGIwMDI2MTRmYjU3YjAyOWM3OGVmZjgyMDhhNzMyMTkx
MDg1NTEuLjVmMjY0NzkyYjg3OGE0ZmM2YjZjMDkwOTViZWVlNGMwNjA0ZDFmZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtNTQzLDcg
KzU0Myw3IEBAIHN0YXRpYyBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8
QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4gY3JlYXRlCiAgICAgYWRkTmFtZXNXaXRoUHJlZml4
KG1hcCwgeGxpbmtOYW1lLCBYTGlua05hbWVzOjpnZXRYTGlua0F0dHJzKCksIFhMaW5rTmFtZXM6
OlhMaW5rQXR0cnNDb3VudCk7CiAgICAgYWRkTmFtZXNXaXRoUHJlZml4KG1hcCwgeG1sQXRvbSgp
LCBYTUxOYW1lczo6Z2V0WE1MQXR0cnMoKSwgWE1MTmFtZXM6OlhNTEF0dHJzQ291bnQpOwogCi0g
ICAgbWFwLmFkZChXVEY6OnhtbG5zQXRvbSgpLCBYTUxOU05hbWVzOjp4bWxuc0F0dHIpOworICAg
IG1hcC5hZGQoeG1sbnNBdG9tKCksIFhNTE5TTmFtZXM6OnhtbG5zQXR0cik7CiAgICAgbWFwLmFk
ZCgieG1sbnM6eGxpbmsiLCBRdWFsaWZpZWROYW1lKHhtbG5zQXRvbSgpLCB4bGlua05hbWUsIFhN
TE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSk7CiAKICAgICByZXR1cm4gbWFwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvUGFyc2luZ1V0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvUGFyc2luZ1V0aWxpdGllcy5oCmluZGV4IGU3ODNhMzMx
YzdjMTE0YzQ3OTc4NTRhMWIyODYzMTc4NmU5MjU1MzYuLmY2Y2FmYjcwZjU3ZjljNTEyNmIyYzVm
NTYxMTAxMDMxYjI1MWVkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1BhcnNpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJz
aW5nVXRpbGl0aWVzLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlLCB1bnNpZ25lZCBsb3dlcmNhc2VMZXR0ZXJzQXJyYXlTaXplPiBib29sIHNraXBF
eAogICAgIAogICAgIGlmIChwb3NpdGlvbiArIGxvd2VyY2FzZUxldHRlcnNMZW5ndGggPiBlbmQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIVdURjo6ZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UocG9zaXRpb24sIGxvd2VyY2FzZUxldHRlcnNMZW5ndGgsIGxvd2VyY2FzZUxl
dHRlcnMpKQorICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9zaXRpb24s
IGxvd2VyY2FzZUxldHRlcnNMZW5ndGgsIGxvd2VyY2FzZUxldHRlcnMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcG9zaXRpb24gKz0gbG93ZXJjYXNlTGV0dGVyc0xlbmd0aDsKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTE4Niw3ICsxODYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlLCB1bnNpZ25lZCBsb3dlcmNhc2VMZXR0ZXJzQXJyYXlTaXplPiBib29sIHNraXBFeAog
CiAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IGxvd2VyY2FzZUxldHRlcnNMZW5n
dGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIVdURjo6ZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoYnVmZmVyLnBvc2l0aW9uKCksIGxvd2VyY2FzZUxldHRlcnNMZW5ndGgs
IGxvd2VyY2FzZUxldHRlcnMpKQorICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoYnVmZmVyLnBvc2l0aW9uKCksIGxvd2VyY2FzZUxldHRlcnNMZW5ndGgsIGxvd2VyY2FzZUxl
dHRlcnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYnVmZmVyICs9IGxvd2VyY2FzZUxl
dHRlcnNMZW5ndGg7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRTY2FubmVyLmNwcAppbmRleCBhMTIwYTliZmRlNzU4MzI3N2RjODMwYTJlYmM0YTQ2ODdlZjc0
NmJkLi40MjcwN2U2OGYzNGM4YTRlZDc2MmM2ZjUzZWE1NzkxNmJiNzIyZjFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgYm9vbCBW
VFRTY2FubmVyOjpzY2FuKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgY2hhcmFjdGVy
c0NvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBtYXRjaGVkOwogICAgIGlm
IChtX2lzOEJpdCkKLSAgICAgICAgbWF0Y2hlZCA9IFdURjo6ZXF1YWwobV9kYXRhLmNoYXJhY3Rl
cnM4LCBjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzQ291bnQpOworICAgICAgICBtYXRjaGVkID0gZXF1
YWwobV9kYXRhLmNoYXJhY3RlcnM4LCBjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzQ291bnQpOwogICAg
IGVsc2UKLSAgICAgICAgbWF0Y2hlZCA9IFdURjo6ZXF1YWwobV9kYXRhLmNoYXJhY3RlcnMxNiwg
Y2hhcmFjdGVycywgY2hhcmFjdGVyc0NvdW50KTsKKyAgICAgICAgbWF0Y2hlZCA9IGVxdWFsKG1f
ZGF0YS5jaGFyYWN0ZXJzMTYsIGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNDb3VudCk7CiAgICAgaWYg
KG1hdGNoZWQpCiAgICAgICAgIGFkdmFuY2UoY2hhcmFjdGVyc0NvdW50KTsKICAgICByZXR1cm4g
bWF0Y2hlZDsKQEAgLTgwLDkgKzgwLDkgQEAgYm9vbCBWVFRTY2FubmVyOjpzY2FuUnVuKGNvbnN0
IFJ1biYgcnVuLCBjb25zdCBTdHJpbmcmIHRvTWF0Y2gpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBib29sIG1hdGNoZWQ7CiAgICAgaWYgKG1faXM4Qml0KQotICAgICAgICBtYXRjaGVkID0g
V1RGOjplcXVhbCh0b01hdGNoLmltcGwoKSwgbV9kYXRhLmNoYXJhY3RlcnM4LCBtYXRjaExlbmd0
aCk7CisgICAgICAgIG1hdGNoZWQgPSBlcXVhbCh0b01hdGNoLmltcGwoKSwgbV9kYXRhLmNoYXJh
Y3RlcnM4LCBtYXRjaExlbmd0aCk7CiAgICAgZWxzZQotICAgICAgICBtYXRjaGVkID0gV1RGOjpl
cXVhbCh0b01hdGNoLmltcGwoKSwgbV9kYXRhLmNoYXJhY3RlcnMxNiwgbWF0Y2hMZW5ndGgpOwor
ICAgICAgICBtYXRjaGVkID0gZXF1YWwodG9NYXRjaC5pbXBsKCksIG1fZGF0YS5jaGFyYWN0ZXJz
MTYsIG1hdGNoTGVuZ3RoKTsKICAgICBpZiAobWF0Y2hlZCkKICAgICAgICAgc2Vla1RvKHJ1bi5l
bmQoKSk7CiAgICAgcmV0dXJuIG1hdGNoZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVFRva2VuaXplci5jcHAKaW5kZXggNTdkZjY1MzBlNTc2MzJkYzc5NTg5OTRhNGRlNDk0
NzE1ZmY4NTAxZS4uYWE2MTU3Y2JiM2NkMjBkYWNlY2ZiYzFhZjQ5NjYwYzQ1MjU1ZTE5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJh
Y3RlcnNDb3VudD4gQUxXQVlTX0lOTElORSBib29sIGVxdWFsTGl0ZXJhbChjb25zdCBTdHJpbmdC
dWlsZGVyJiBzLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKIHsK
LSAgICByZXR1cm4gV1RGOjplcXVhbChzLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Y2hhcmFjdGVycyksIGNoYXJhY3RlcnNDb3VudCAtIDEpOworICAgIHJldHVybiBlcXVhbChzLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGNoYXJhY3RlcnNDb3Vu
dCAtIDEpOwogfQogCiBzdGF0aWMgdm9pZCBhZGROZXdDbGFzcyhTdHJpbmdCdWlsZGVyJiBjbGFz
c2VzLCBjb25zdCBTdHJpbmdCdWlsZGVyJiBuZXdDbGFzcykKQEAgLTE2Nyw3ICsxNjcsNyBAQCBU
YWdTdGF0ZToKICAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oU3RhcnRUYWdDbGFzc1N0YXRlKTsK
ICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnLycpIHsKICAgICAgICAgV0VCVlRUX0FEVkFO
Q0VfVE8oRW5kVGFnU3RhdGUpOwotICAgIH0gZWxzZSBpZiAoV1RGOjppc0FTQ0lJRGlnaXQoY2hh
cmFjdGVyKSkgeworICAgIH0gZWxzZSBpZiAoaXNBU0NJSURpZ2l0KGNoYXJhY3RlcikpIHsKICAg
ICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwogICAgICAgICBXRUJWVFRfQURWQU5DRV9U
TyhUaW1lc3RhbXBUYWdTdGF0ZSk7CiAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJz4nIHx8
IGNoYXJhY3RlciA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmgKaW5kZXggMzU3MzJiMTk4OTM3ZjUwNzUyN2Y2YWY2
OGE5ZDM0NzhhOTAyNjQ0Zi4uNDA0MWFkZTVkMDc2NTJlM2Q4ZThkYzc1YjY0MWUyNzhhMzFjZmQ5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaApA
QCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgb25jZTsKICAgICB9OwogCi0g
ICAgdXNpbmcgRXZlbnRMaXN0ZW5lcnNSZWNvcmQgPSBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBWZWN0b3I8TGlzdGVuZXJFbnRyeT4+PjsKKyAgICB1c2luZyBFdmVudExpc3RlbmVy
c1JlY29yZCA9IFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBWZWN0b3I8TGlzdGVuZXJFbnRy
eT4+PjsKICAgICBFdmVudExpc3RlbmVyc1JlY29yZCBnZXRFdmVudExpc3RlbmVycyhKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgRXZlbnRUYXJnZXQmKTsKIAogICAgIFN0cmluZyBkYXRhYmFzZUlkKERh
dGFiYXNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hT
dXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
CmluZGV4IDZhZjRhOGMwY2YzMTdhNDU0MTJiMTBjZmRmZDgwOWUwNGZiN2E5YTIuLjM3MmI5NzQ5
Mjk5ZGUwOGNmZmU5YWI0YjMyY2NlYTlmOTNhZGYxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4oQ29udGFpbmVyTm9k
ZSYgcGFyZW50Tm9kZSwKIAogICAgIC8vIDEuIEZpcnN0IHN0cmlwIGV2ZXJ5dGhpbmcgZXhjZXB0
IGZvciB0aGUgbm9kZXMgdGhhdCByZXRhaW4uIENvbGxlY3QgcGVuZGluZyBtZXJnZXMuCiAgICAg
SGFzaE1hcDxEaWdlc3QqLCBEaWdlc3QqPiBtZXJnZXM7Ci0gICAgSGFzaFNldDxzaXplX3QsIFdU
Rjo6SW50SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHNp
emVfdD4+IHVzZWROZXdPcmRpbmFsczsKKyAgICBIYXNoU2V0PHNpemVfdCwgSW50SGFzaDxzaXpl
X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHNpemVfdD4+IHVzZWROZXdP
cmRpbmFsczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9sZExpc3Quc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgaWYgKG9sZE1hcFtpXS5maXJzdCkgewogICAgICAgICAgICAgaWYgKCF1c2Vk
TmV3T3JkaW5hbHMuY29udGFpbnMob2xkTWFwW2ldLnNlY29uZCkpIHsKQEAgLTMzNiw3ICszMzYs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJl
bihDb250YWluZXJOb2RlJiBwYXJlbnROb2RlLAogICAgIH0KIAogICAgIC8vIE1hcmsgcmV0YWlu
ZWQgbm9kZXMgYXMgdXNlZCwgZG8gbm90IHJldXNlIG5vZGUgbW9yZSB0aGFuIG9uY2UuCi0gICAg
SGFzaFNldDxzaXplX3QsIFdURjo6SW50SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHNpemVfdD4+IHVzZWRPbGRPcmRpbmFsczsKKyAgICBIYXNoU2V0PHNp
emVfdCwgSW50SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHNpemVfdD4+IHVzZWRPbGRPcmRpbmFsczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5l
d0xpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKCFuZXdNYXBbaV0uZmlyc3QpCiAgICAg
ICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCmluZGV4IDc4NGJmNDgyZmQ2OGRhNjhlMWYzOGZkNWNkNmJjZWRjODk3MWRm
ZGEuLjExYzI2Y2NmZDgzNmMyM2VjODVhNTIwODJlNGViNGY0YTFmZmRlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTIwLDcgKzEy
MCw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZ1bmN0aW9uQ2FsbEhhbmRs
ZXIgZnVuY3Rpb25DYWxsSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIEluc3BlY3Rvcjo6
SW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgZnJvbnRlbmRJbml0aWFsaXplZCgpIG92ZXJyaWRlOwotICAgIFdURjo6U3Rv
cHdhdGNoJiBleGVjdXRpb25TdG9wd2F0Y2goKSBjb25zdCBmaW5hbDsKKyAgICBTdG9wd2F0Y2gm
IGV4ZWN1dGlvblN0b3B3YXRjaCgpIGNvbnN0IGZpbmFsOwogICAgIFBhZ2VEZWJ1Z2dlciYgZGVi
dWdnZXIoKSBvdmVycmlkZTsKICAgICBKU0M6OlZNJiB2bSgpIG92ZXJyaWRlOwogCkBAIC0xMzUs
NyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4g
bV9mcm9udGVuZFJvdXRlcjsKICAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yT3Zlcmxh
eT4gbV9vdmVybGF5OwotICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0
Y2g7CisgICAgUmVmPFN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAgICAgUGFnZURl
YnVnZ2VyIG1fZGVidWdnZXI7CiAgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRz
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oCmluZGV4IDExYjM1MWU4NTM2NzI4YzFhNDY0Mzc2ZTNhODllZDNhNzE4ZmIzNjcuLjI2
Nzg4M2Q5OTI1MWUyZWI1ZWViNDkyMGM2YzAwNjA2NjViNmM5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC00MSw4ICs0
MSw4IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKLXVzaW5nIEV4dGVuc2lvbklEID0gV1RGOjpTdHJpbmc7Ci11c2luZyBFeHRlbnNp
b25UYWJJRCA9IFdURjo6U3RyaW5nOwordXNpbmcgRXh0ZW5zaW9uSUQgPSBTdHJpbmc7Cit1c2lu
ZyBFeHRlbnNpb25UYWJJRCA9IFN0cmluZzsKIH0KICNlbmRpZgogCkBAIC0xMDYsOCArMTA2LDgg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIG9wZW5VUkxFeHRl
cm5hbGx5KGNvbnN0IFN0cmluZyYgdXJsKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblNhdmUo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNh
dmVBcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgV1RGOjpTdHJpbmcmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2
ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2hvd0NlcnRpZmljYXRlKGNvbnN0IENlcnRpZmljYXRlSW5mbyYpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IDUyZmZhMjY3OTZhZjAyNTYwMDA0ZmNlOTVlNmZmZDJmNTVmZWY3ZGEuLjM4NTFi
ZGIzZWVmNGIyN2EzMTM0NGFiMzliYjc1YjRiZWRkYzZlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNjQsNyAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5k
bGVyIGZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBJbnNwZWN0b3I6
Okluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIGZyb250ZW5kSW5pdGlhbGl6ZWQoKSBvdmVycmlkZSB7IH0KLSAgICBXVEY6
OlN0b3B3YXRjaCYgZXhlY3V0aW9uU3RvcHdhdGNoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9l
eGVjdXRpb25TdG9wd2F0Y2g7IH0KKyAgICBTdG9wd2F0Y2gmIGV4ZWN1dGlvblN0b3B3YXRjaCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXhlY3V0aW9uU3RvcHdhdGNoOyB9CiAgICAgV29ya2Vy
RGVidWdnZXImIGRlYnVnZ2VyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQogICAg
IEpTQzo6Vk0mIHZtKCkgb3ZlcnJpZGU7CiAKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcjsKICAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVu
ZFJvdXRlcjsKICAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKLSAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNo
OworICAgIFJlZjxTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFdvcmtlckRl
YnVnZ2VyIG1fZGVidWdnZXI7CiAgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRz
OwogICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX2dsb2JhbFNjb3BlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lQ29udGVudEJyZWFrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCmluZGV4IDFkYmIzMDNmMWVk
OTFkMTY3ZTEwYThkNGM1NjU5YjUyYjhlYTc4OWMuLmIxZjI1M2I2N2EwMjhhMzNiZTEyMTlmYzgx
OTk2Nzk5NWNiMTkyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJl
YWtlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNUcmFpbGluZ1RleHRDb250ZW50KGNvbnN0
IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudCYgY29udGludW91c0NvbnRl
bnQpCiB7Ci0gICAgZm9yIChhdXRvJiBydW4gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKGNvbnRp
bnVvdXNDb250ZW50LnJ1bnMoKSkpIHsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IG1ha2VSZXZlcnNl
ZFJhbmdlKGNvbnRpbnVvdXNDb250ZW50LnJ1bnMoKSkpIHsKICAgICAgICAgYXV0byYgaW5saW5l
SXRlbSA9IHJ1bi5pbmxpbmVJdGVtOwogICAgICAgICBpZiAoaW5saW5lSXRlbS5pc0lubGluZUJv
eFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKQogICAgICAgICAgICAgY29u
dGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCmluZGV4IDM2N2Q2ZDc2ZTkwYjQ2YzM1
ZGQ2MGQxYWU1MGI2MDEzODdjZjFlN2MuLjA3YWQxYjIzZTk1NzhhYmJiNmY1MzczYzY5ODRmMDdk
ZTg0ZjM3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCkBAIC0yMTMsNyArMjEzLDcg
QEAgdm9pZCBMaW5lOjp2aXN1YWxseUNvbGxhcHNlSGFuZ2luZ092ZXJmbG93KElubGluZUxheW91
dFVuaXQgaG9yaXpvbnRhbEF2YWlsYWJsZVMKICAgICAvLyBMZXQncyBqdXN0IGZpbmQgdGhlIHRy
YWlsaW5nIHByZS13cmFwIHdoaXRlc3BhY2UgY29udGVudCBmb3Igbm93IChlLmcgY2hlY2sgaWYg
dGhlcmUgYXJlIG11bHRpcGxlIHRyYWlsaW5nIHJ1bnMgd2l0aAogICAgIC8vIGRpZmZlcmVudCBz
ZXQgb2Ygd2hpdGUtc3BhY2UgdmFsdWVzIGFuZCBkZWNpZGUgaWYgdGhlIGluLWJldHdlZW4gcHJl
LXdyYXAgY29udGVudCBzaG91bGQgYmUgY29sbGFwc2VkIGFzIHdlbGwuKQogICAgIGF1dG8gdHJp
bW1lZENvbnRlbnRXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGZvciAoYXV0byYg
cnVuIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShtX3J1bnMpKSB7CisgICAgZm9yIChhdXRvJiBy
dW4gOiBtYWtlUmV2ZXJzZWRSYW5nZShtX3J1bnMpKSB7CiAgICAgICAgIGlmICghcnVuLnNob3Vs
ZFRyYWlsaW5nV2hpdGVzcGFjZUhhbmcoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBh
dXRvIHZpc3VhbGx5Q29sbGFwc2libGVJbmxpbmVJdGVtID0gcnVuLmlzTGluZVNwYW5uaW5nSW5s
aW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGluZUJv
eEVuZCgpIHx8IHJ1bi5oYXNUcmFpbGluZ1doaXRlc3BhY2UoKTsKQEAgLTI5Nyw3ICsyOTcsNyBA
QCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxp
bmVUZXh0SXRlbSwgY29uc3QgUmVuZGVyUwogICAgICAgICBpZiAoSW5saW5lVGV4dEl0ZW06OnNo
b3VsZFByZXNlcnZlU3BhY2VzQW5kVGFicyhpbmxpbmVUZXh0SXRlbSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIC8vIFRoaXMgY29udGVudCBpcyBjb2xsYXBzaWJsZS4gTGV0
J3MgY2hlY2sgaWYgdGhlIGxhc3QgaXRlbSBpcyBjb2xsYXBzZWQuCi0gICAgICAgIGZvciAoYXV0
byYgcnVuIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShtX3J1bnMpKSB7CisgICAgICAgIGZvciAo
YXV0byYgcnVuIDogbWFrZVJldmVyc2VkUmFuZ2UobV9ydW5zKSkgewogICAgICAgICAgICAgaWYg
KHJ1bi5pc0JveCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdGV4dC0zLyN3aGl0ZS1zcGFjZS1waGFz
ZS0xCkBAIC00MzksNyArNDM5LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lOjpyZW1vdmVCb3Jk
ZXJBbmRQYWRkaW5nRW5kRm9ySW5saW5lQm94RGVjb3JhdGlvbkNsb25lKGNvbnMKIAogdm9pZCBM
aW5lOjphZGRUcmFpbGluZ0h5cGhlbihJbmxpbmVMYXlvdXRVbml0IGh5cGhlbkxvZ2ljYWxXaWR0
aCkKIHsKLSAgICBmb3IgKGF1dG8mIHJ1biA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UobV9ydW5z
KSkgeworICAgIGZvciAoYXV0byYgcnVuIDogbWFrZVJldmVyc2VkUmFuZ2UobV9ydW5zKSkgewog
ICAgICAgICBpZiAoIXJ1bi5pc1RleHQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBydW4uc2V0TmVlZHNIeXBoZW4oaHlwaGVuTG9naWNhbFdpZHRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA2ZTQzODgwZWRhOWU0MzQ2YTc5ODAxMjFi
ZWRmYzE0ODA1NmExZGMyLi41MmZiNDU2ZDgyNzQ1NDE4N2JkY2ZlMGY4MjUyY2UwZDY5MDExNmY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0zMzUsNyAr
MzM1LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6aW5pdGlhbGl6ZShjb25zdCBVc2VkQ29uc3RyYWlu
dHMmIGxpbmVDb25zdHJhaW50cywgYm9vbCBpc0ZpcnMKICAgICAgICAgICAgIHNwYW5uaW5nTGF5
b3V0Qm94TGlzdC5hcHBlbmQoYW5jZXN0b3IpOwogICAgICAgICAgICAgYW5jZXN0b3IgPSAmYW5j
ZXN0b3ItPnBhcmVudCgpOwogICAgICAgICB9Ci0gICAgICAgIGZvciAoYXV0byogc3Bhbm5pbmdJ
bmxpbmVCb3ggOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKHNwYW5uaW5nTGF5b3V0Qm94TGlzdCkp
CisgICAgICAgIGZvciAoYXV0byogc3Bhbm5pbmdJbmxpbmVCb3ggOiBtYWtlUmV2ZXJzZWRSYW5n
ZShzcGFubmluZ0xheW91dEJveExpc3QpKQogICAgICAgICAgICAgbV9saW5lU3Bhbm5pbmdJbmxp
bmVCb3hlcy5hcHBlbmQoeyAqc3Bhbm5pbmdJbmxpbmVCb3gsIElubGluZUl0ZW06OlR5cGU6Oklu
bGluZUJveFN0YXJ0IH0pOwogICAgIH07CiAgICAgY3JlYXRlTGluZVNwYW5uaW5nSW5saW5lQm94
ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL3RhYmxlL1RhYmxlR3JpZC5oCmluZGV4IDY5MWYyMjk1N2Q4NTRhZTZiYjQ4ZTM3NjFh
OTc2N2NjY2M3ZmJlNTMuLjE1ZWFhMjZlMjhlM2EzNDhjMmMwMDRhYzcwODUwNmJjMjY0YTNhOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFi
bGUvVGFibGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy90YWJsZS9UYWJsZUdyaWQuaApAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBSb3dzJiByb3dzKCkgY29uc3QgeyByZXR1cm4gbV9yb3dzOyB9CiAgICAgUm93cyYgcm93
cygpIHsgcmV0dXJuIG1fcm93czsgfQogCi0gICAgdXNpbmcgQ2VsbHMgPSBXVEY6Okxpc3RIYXNo
U2V0PHN0ZDo6dW5pcXVlX3B0cjxDZWxsPj47CisgICAgdXNpbmcgQ2VsbHMgPSBMaXN0SGFzaFNl
dDxzdGQ6OnVuaXF1ZV9wdHI8Q2VsbD4+OwogICAgIENlbGxzJiBjZWxscygpIHsgcmV0dXJuIG1f
Y2VsbHM7IH0KIAogICAgIFNsb3QqIHNsb3QoU2xvdFBvc2l0aW9uKTsKQEAgLTIxNyw3ICsyMTcs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NwYW5uZWQoU2xvdFBvc2l0aW9uKTsKIAogcHJpdmF0
ZToKLSAgICB1c2luZyBTbG90TWFwID0gV1RGOjpIYXNoTWFwPFNsb3RQb3NpdGlvbiwgc3RkOjp1
bmlxdWVfcHRyPFNsb3Q+PjsKKyAgICB1c2luZyBTbG90TWFwID0gSGFzaE1hcDxTbG90UG9zaXRp
b24sIHN0ZDo6dW5pcXVlX3B0cjxTbG90Pj47CiAKICAgICBDb2x1bW5zIG1fY29sdW1uczsKICAg
ICBSb3dzIG1fcm93czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5jcHAKaW5kZXggMzNiYTU3MTM2
NjllZTQ4MjkzNDI1ZjQzZTZmMWY4ODQxMDQyZWUwMi4uMDI5NjAwYjMzNTJiM2ZlYjNmYTBlOWI5
MDM4OTE5YjYyNDZjM2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5jcHAKQEAgLTExNSw3
ICsxMTUsNyBAQCBpbmxpbmUgc3RhdGljIEdyaWRTcGFjZSYgb3BlcmF0b3IvKEdyaWRTcGFjZSYg
YSwgdW5zaWduZWQgdmFsdWUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBTcGFuVHlwZT4KLXN0
YXRpYyBWZWN0b3I8TGF5b3V0VW5pdD4gZGlzdHJpYnV0ZUF2YWlsYWJsZVNwYWNlKGNvbnN0IFRh
YmxlR3JpZCYgZ3JpZCwgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSwgY29uc3QgV1RGOjpGdW5j
dGlvbjxHcmlkU3BhY2UoY29uc3QgVGFibGVHcmlkOjpTbG90Jiwgc2l6ZV90KT4mIHNsb3RTcGFj
ZSkKK3N0YXRpYyBWZWN0b3I8TGF5b3V0VW5pdD4gZGlzdHJpYnV0ZUF2YWlsYWJsZVNwYWNlKGNv
bnN0IFRhYmxlR3JpZCYgZ3JpZCwgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSwgY29uc3QgRnVu
Y3Rpb248R3JpZFNwYWNlKGNvbnN0IFRhYmxlR3JpZDo6U2xvdCYsIHNpemVfdCk+JiBzbG90U3Bh
Y2UpCiB7CiAgICAgYXV0byYgY29sdW1ucyA9IGdyaWQuY29sdW1ucygpOwogICAgIGF1dG8mIHJv
d3MgPSBncmlkLnJvd3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2
ZXJzYWwuY3BwCmluZGV4IDY5ZjU3NDYxMDM2Y2UzZjJmMzY5Mzc1M2JkN2NkNmIzODYyOWNlNzEu
LjRjNDRjOTZiMDRhMWY5ZGI0MDhhYTU5YThhYzJiY2YwODFjYmQxZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRl
clRyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcApAQCAtMzYsNyArMzYsNyBAQCBz
dGF0aWMgVGV4dExvZ2ljYWxPcmRlckNhY2hlIG1ha2VUZXh0TG9naWNhbE9yZGVyQ2FjaGVJZk5l
ZWRlZChjb25zdCBSZW5kZXJUZXh0JgogICAgIGlmICghdGV4dC5jb250YWluc1JldmVyc2VkVGV4
dCgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBjYWNoZSA9IFdURjo6bWFrZVVu
aXF1ZTxUZXh0TG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtl
VW5pcXVlPFRleHRMb2dpY2FsT3JkZXJDYWNoZURhdGE+KCk7CiAgICAgZm9yIChhdXRvIHRleHRC
b3ggOiB0ZXh0Qm94ZXNGb3IodGV4dCkpCiAgICAgICAgIGNhY2hlLT5ib3hlcy5hcHBlbmQodGV4
dEJveCk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgVGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94SW5M
b2dpY2FsT3JkZXIoY29uc3QgVGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94LCBUZXh0TG8KIAogc3Rh
dGljIExpbmVMb2dpY2FsT3JkZXJDYWNoZSBtYWtlTGluZUxvZ2ljYWxPcmRlckNhY2hlKGNvbnN0
IExpbmVJdGVyYXRvciYgbGluZSkKIHsKLSAgICBhdXRvIGNhY2hlID0gV1RGOjptYWtlVW5pcXVl
PExpbmVMb2dpY2FsT3JkZXJDYWNoZURhdGE+KCk7CisgICAgYXV0byBjYWNoZSA9IG1ha2VVbmlx
dWU8TGluZUxvZ2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKIAogICAgIGNhY2hlLT5saW5lID0gbGlu
ZTsKICAgICBjYWNoZS0+Ym94ZXMgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihsaW5lLCBbXShh
dXRvIGZpcnN0LCBhdXRvIGxhc3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRl
eCAyY2NiNTc2MDMwOGI0MmI2NTdkNjcxMDdkZmYxYWRmZTlkMTkxZDU3Li40NjkzNDQ1NGY2ZDc4
NWEwODdhZmFlZGE5MTZlOGNiZmQ4ODQ2NDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2Uu
Y3BwCkBAIC01NzYsOCArNTc2LDggQEAgT3B0aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gY2FuVXNl
Rm9yTGluZUxheW91dFdpdGhSZWFzb24oY29uc3QgUmVuZGVyQmxvY2tGbG93JgogI2lmbmRlZiBO
REVCVUcKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNr
KCJjb20uYXBwbGUuV2ViS2l0LnNob3dNb2Rlcm5MaW5lTGF5b3V0Q292ZXJhZ2UiLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4geyBwcmludE1vZGVybkxpbmVMYXlvdXRDb3ZlcmFnZSB9KTsKLSAgICAg
ICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dNb2Rl
cm5MaW5lTGF5b3V0UmVhc29ucyIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiB7IHByaW50TW9kZXJu
TGluZUxheW91dEJsb2NrTGlzdCB9KTsKKyAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxi
YWNrKCJjb20uYXBwbGUuV2ViS2l0LnNob3dNb2Rlcm5MaW5lTGF5b3V0Q292ZXJhZ2UiLCBGdW5j
dGlvbjx2b2lkKCk+IHsgcHJpbnRNb2Rlcm5MaW5lTGF5b3V0Q292ZXJhZ2UgfSk7CisgICAgICAg
IFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5zaG93TW9kZXJu
TGluZUxheW91dFJlYXNvbnMiLCBGdW5jdGlvbjx2b2lkKCk+IHsgcHJpbnRNb2Rlcm5MaW5lTGF5
b3V0QmxvY2tMaXN0IH0pOwogICAgIH0pOwogI2VuZGlmCiAgICAgT3B0aW9uU2V0PEF2b2lkYW5j
ZVJlYXNvbj4gcmVhc29uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRJdGVyYXRvci5oCmluZGV4IDYxYzBkNjFkNmYxODNlNmQyNmNjZTYxYTY0ZGUwY2Yz
YTZiMjM4MjAuLjBlYjBiZjIyOTk0OTBlOWZlNjhhYWJjODgyOTJkYTkwMWVlMjc0ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SXRlcmF0b3IuaApA
QCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFQqIG1fY3VycmVudDsKIH07CiAK
LS8vIFNpbWlsYXIgdG8gV1RGOjppczw+KCkgYnV0IHdpdGhvdXQgdGhlIHN0YXRpY19hc3NlcnQo
KSBtYWtpbmcgc3VyZSB0aGUgY2hlY2sgaXMgbmVjZXNzYXJ5LgorLy8gU2ltaWxhciB0byBpczw+
KCkgYnV0IHdpdGhvdXQgdGhlIHN0YXRpY19hc3NlcnQoKSBtYWtpbmcgc3VyZSB0aGUgY2hlY2sg
aXMgbmVjZXNzYXJ5LgogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiBpbmxpbmUg
Ym9vbCBpc0xheW91dEJveE9mVHlwZShjb25zdCBVJiBsYXlvdXRCb3gpIHsgcmV0dXJuIFR5cGVD
YXN0VHJhaXRzPGNvbnN0IFQsIGNvbnN0IFU+Ojppc09mVHlwZShsYXlvdXRCb3gpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oCmlu
ZGV4IGQ1Zjc0NmFhYjE1ZGJjMjEyNDhjZTI0ODE2YzllZWY0OTNlMDZjZjQuLjFhMjczNmMxYjlh
NDg2ZjhhYmQzZjczNTQwNWFhNzc3N2M0ODViYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFz
cyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIgZmluYWwg
OiBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICB0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdD4pPiBDb21wbGV0aW9uSGFuZGxlclR5cGU7Cisg
ICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0Pik+IENvbXBsZXRpb25IYW5kbGVyVHlwZTsKIAogICAgIEFwcGxpY2F0
aW9uTWFuaWZlc3RMb2FkZXIoRG9jdW1lbnRMb2FkZXImLCBjb25zdCBVUkwmLCBib29sKTsKICAg
ICB2aXJ0dWFsIH5BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA0NjAwNjBjMTg5N2VlMTY5N2I4ZGM3ZWJjMzJk
Zjg4NTZiY2ZhOGUxLi5hNDNkNGJmYTNlYzJmYjM1MjdmNWRmYjYzMWNjNTFhZGY1ZTRlNDBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTI0MTksNyArMjQx
OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsCiAgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChG
cmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEp
KTsKIH0KIAotUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRpZEJs
b2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgV1RGOjpTdHJp
bmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK1Jlc291cmNlRXJyb3IgRG9jdW1lbnRM
b2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIg
dW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewog
ICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAg
IGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGI5MjczNmNjZGM0ZTNkNjU3
NGNmYmQ2ZDEwNjRjMWE0MGFiYmZkYzguLmU1YTZjYzMwMWE5OWNkOTA0MGIwM2FiMzdhNTVjOTYy
YjA5Njg0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNjM0LDcg
KzYzNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRDbGVhcldpbmRvd05hbWUoY29uc3Qg
RnJhbWUmIGZyYW1lLCBjb25zdCBEb2N1bWVudCYgbmV3CiAgICAgcmV0dXJuICFuZXdEb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpLmlzU2FtZU9yaWdpbkFzKGZyYW1lLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3
RG9jdW1lbnQsIGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2Jq
ZWN0cywgYm9vbCBjbGVhckZyYW1lVmlldywgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgaGFuZGxl
RE9NV2luZG93Q3JlYXRpb24pCit2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3
RG9jdW1lbnQsIGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2Jq
ZWN0cywgYm9vbCBjbGVhckZyYW1lVmlldywgRnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZURPTVdp
bmRvd0NyZWF0aW9uKQogewogICAgIGJvb2wgbmVlZGVkQ2xlYXIgPSBtX25lZWRzQ2xlYXI7CiAg
ICAgbV9uZWVkc0NsZWFyID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IGFlM2Y2ZDYwNmE5MWI5MDk5ZGM5MDRiOWQ1YzY4MjMyODYyMTRiOWUuLjA3NmMzMzU4Yjhj
YWE2YzAzNDhjMDVjZmM1YWVlMmYyNmNjYjczNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC05Miw3ICs5Miw3IEBAIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaXNCYWNrRm9yd2FyZExvYWRUeXBlKEZyYW1lTG9hZFR5cGUpOwogV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIAotdXNpbmcgQ29udGVudFBv
bGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIpPjsKK3VzaW5nIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uID0gRnVuY3Rpb248dm9pZChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+
OwogCiBjbGFzcyBGcmFtZUxvYWRlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcExvYWRpbmcoVW5s
b2FkRXZlbnRQb2xpY3kpOwogICAgIHZvaWQgY2xvc2VVUkwoKTsKICAgICAvLyBGSVhNRTogY2xl
YXIoKSBpcyB0cnlpbmcgdG8gZG8gdG9vIG1hbnkgdGhpbmdzLiBXZSBzaG91bGQgYnJlYWsgaXQg
ZG93biBpbnRvIHNtYWxsZXIgZnVuY3Rpb25zIChpZGVhbGx5IHdpdGggZmV3ZXIgcmF3IEJvb2xl
YW4gcGFyYW1ldGVycykuCi0gICAgdm9pZCBjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJv
b2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzID0gdHJ1ZSwgYm9vbCBjbGVhclNjcmlwdE9iamVjdHMg
PSB0cnVlLCBib29sIGNsZWFyRnJhbWVWaWV3ID0gdHJ1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgaGFuZGxlRE9NV2luZG93Q3JlYXRpb24gPSBudWxscHRyKTsKKyAgICB2b2lkIGNsZWFyKERv
Y3VtZW50KiBuZXdEb2N1bWVudCwgYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMgPSB0cnVlLCBi
b29sIGNsZWFyU2NyaXB0T2JqZWN0cyA9IHRydWUsIGJvb2wgY2xlYXJGcmFtZVZpZXcgPSB0cnVl
LCBGdW5jdGlvbjx2b2lkKCk+JiYgaGFuZGxlRE9NV2luZG93Q3JlYXRpb24gPSBudWxscHRyKTsK
IAogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBm
cmFtZUhhc0xvYWRlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCBlNzU4MmQ4OTVmZGFhOWE2NzU3ZDlmMjE2MmVjYzUyZDFlMTY0MTA4Li40
ZmQ2MzdhOTAxNGE1ZDQxYTIyNmVlNDU5MTdiNmIzZTlhNzkwZWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTA4LDcgKzEwOCw3IEBAIGVudW0gY2xh
c3MgVXNlZExlZ2FjeVRMUyA6IGJvb2w7CiAKIHN0cnVjdCBTdHJpbmdXaXRoRGlyZWN0aW9uOwog
Ci10eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lk
ZW50aWZpZXIpPiBGcmFtZVBvbGljeUZ1bmN0aW9uOwordHlwZWRlZiBGdW5jdGlvbjx2b2lkIChQ
b2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+IEZyYW1lUG9saWN5RnVuY3Rpb247
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5k
ZXggZTJlY2QxYWZjMzViYTZkMzEyMzg4YzgyOGVhNGNlMWRkYzIzYWNmYy4uYjBjYjU2ZWMwMTdl
OWM3ZjE3NmJmNTdjMmY4ZjI4YWMwMWFhMTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRl
clN0cmF0ZWd5LmgKQEAgLTc1LDE2ICs3NSwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHByaW9yaXRpemVSZXNvdXJjZUxvYWRzKGNvbnN0IFZlY3RvcjxTdWJyZXNvdXJjZUxvYWRlcio+
Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgdXNlUGluZ0xvYWQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdXNpbmcgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpPjsKKyAg
ICB1c2luZyBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChjb25zdCBS
ZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpPjsKICAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRQaW5nTG9hZChGcmFtZSYsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGNvbnN0IEZldGNoT3B0aW9ucyYsIENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24sIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJiA9
IHsgfSkgPSAwOwogCi0gICAgdXNpbmcgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyID0gV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT47CisgICAgdXNpbmcgUHJlY29u
bmVjdENvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZUVycm9y
Jik+OwogICAgIHZpcnR1YWwgdm9pZCBwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImLCBjb25zdCBV
UkwmLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3NFbmFibGVkKGJvb2wpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc09uTGluZSgpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcihX
VEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkT25s
aW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGF2ZVBlcmZvcm1lZFNlY3VyaXR5Q2hlY2tz
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCmluZGV4IDRm
MjI4ODMzNjNhMGNlMzVhZjUyYTRiNWI3ZmUxZjAxZjM1ZTM3ODUuLmU1NTViMjc5N2Q4YzVjZjcy
OThlNzcwOTk1ZDZiZmQwMGRhYjM3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgU2Vjb25kcyB0aW1lc3RhbXBSZXNvbHV0aW9uIHsgNV9zIH07CiAK
LXR5cGVkZWYgV1RGOjpIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCB1bnNpZ25lZCwgUmVnaXN0
cmFibGVEb21haW46OlJlZ2lzdHJhYmxlRG9tYWluSGFzaCwgSGFzaFRyYWl0czxSZWdpc3RyYWJs
ZURvbWFpbj4sIEhhc2hUcmFpdHM8dW5zaWduZWQ+Pjo6S2V5VmFsdWVQYWlyVHlwZSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVmFsdWU7Cit0eXBlZGVmIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4s
IHVuc2lnbmVkLCBSZWdpc3RyYWJsZURvbWFpbjo6UmVnaXN0cmFibGVEb21haW5IYXNoLCBIYXNo
VHJhaXRzPFJlZ2lzdHJhYmxlRG9tYWluPiwgSGFzaFRyYWl0czx1bnNpZ25lZD4+OjpLZXlWYWx1
ZVBhaXJUeXBlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NWYWx1ZTsKIAogc3RhdGljIHZvaWQgZW5j
b2RlSGFzaFNldChLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsICBj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGhhc2hT
ZXQpCiB7CkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU2NyZWVuQVBJT3B0
aW9uU2V0KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IE9wdGlvblNldDxSZXMKIH0KICNl
bmRpZgogCi1zdGF0aWMgYm9vbCBoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oV1RGOjpTZWNv
bmRzIGludGVyYWN0aW9uVGltZVNlY29uZHMpCitzdGF0aWMgYm9vbCBoYXNIYWRSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24oU2Vjb25kcyBpbnRlcmFjdGlvblRpbWVTZWNvbmRzKQogewogICAgIHJldHVy
biBpbnRlcmFjdGlvblRpbWVTZWNvbmRzID4gU2Vjb25kcygwKSAmJiBXYWxsVGltZTo6bm93KCku
c2Vjb25kc1NpbmNlRXBvY2goKSAtIGludGVyYWN0aW9uVGltZVNlY29uZHMgPCAyNF9oOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQy
MTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li45NjI4Njg4YmQ3YmY0MTZhYzY3M2QzYzJmYTgxZjU2
ZmQxOTk1MmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQ3
LDggKzE0Nyw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIGxvYWRU
aW1pbmcoKSB7IHJldHVybiBtX2xvYWRUaW1pbmc7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKLSAgICB2b2lkIHVuc2NoZWR1
bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKKyAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OworICAgIHZvaWQgdW5zY2hlZHVsZShTY2hlZHVsZVBhaXImKTsKICNlbmRpZgogCiAgICAgY29u
c3QgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZS5nZXQoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaAppbmRleCAxN2I4ZjA3YTFkM2M3OWMxMjc3ZTVjYTA4MTI4NGI5YTM4MjE1MjBmLi45
YTk1MzAwODc2NmE4ODg1NTYxYjM0ODg4OWI4Y2VkYTJiMmViMzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgSGFzaE1hcDxTdHJpbmcs
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCo+IG1fY2FjaGVzSW5NZW1vcnk7IC8vIEV4Y2x1ZGVzIG9i
c29sZXRlIGNhY2hlIGdyb3Vwcy4KIAotICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJv
eWVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPjsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0
cm95ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAppbmRleCA2MDllZDExMTRmZDE5OTZjZTg5NzNiNzRjNzliYzdmZTA1MjZl
ZDcyLi5kZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cApAQCAtNDEwLDcgKzQxMCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKGNvbnN0IFJlCiAKICNlbmRpZgog
Ci1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUm
IG5vZGUsIFdURjo6RnVuY3Rpb248Ym9vbCAoRnJhbWUmKT4mJiBmcmFtZUZpbHRlcikKK1JlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoTm9kZSYgbm9kZSwg
RnVuY3Rpb248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyKQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IG5vZGUuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC01MDIsNyAr
NTAyLDcgQEAgc3RhdGljIHZvaWQgYWRkU3VicmVzb3VyY2VzRm9yQXR0YWNobWVudEVsZW1lbnRz
SWZOZWNlc3NhcnkoRnJhbWUmIGZyYW1lLCBjb25zdAogCiAjZW5kaWYKIAotUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1
cFN0cmluZywgRnJhbWUmIGZyYW1lLCBjb25zdCBWZWN0b3I8Tm9kZSo+JiBub2RlcywgV1RGOjpG
dW5jdGlvbjxib29sIChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyKQorUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmlu
ZywgRnJhbWUmIGZyYW1lLCBjb25zdCBWZWN0b3I8Tm9kZSo+JiBub2RlcywgRnVuY3Rpb248Ym9v
bChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyKQogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUu
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VV
UkwgPSByZXNwb25zZS51cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCA2N2FmYTgzZGM3YTliZjIyZjhlODk2NTFl
ZTllYzQzOTMyZjA2NWUwLi5kMDllYzlmNzVhYmExMzZhODYzMzllYjRkODZhYmQ4Mjc3YzRmZjA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXImKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNv
dXJjZSwgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYmIHN1YnJlc291cmNlcywgVmVjdG9y
PFJlZjxMZWdhY3lXZWJBcmNoaXZlPj4mJiBzdWJmcmFtZUFyY2hpdmVzKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlJiwgV1RG
OjpGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBG
dW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGVG
cm9tU2VsZWN0aW9uKEZyYW1lKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgU2ltcGxlUmFuZ2UmKTsKQEAgLTYxLDcgKzYx
LDcgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gTWFpblJlc291cmNlU3RhdHVzIHsgU3VicmVzb3Vy
Y2UsIE1haW5SZXNvdXJjZSB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyYW1lJiwgY29uc3QgVmVjdG9y
PE5vZGUqPiYgbm9kZXMsIFdURjo6RnVuY3Rpb248Ym9vbCAoRnJhbWUmKT4mJiBmcmFtZUZpbHRl
cik7CisgICAgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBtYXJrdXBTdHJpbmcsIEZyYW1lJiwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMsIEZ1
bmN0aW9uPGJvb2woRnJhbWUmKT4mJiBmcmFtZUZpbHRlcik7CiAgICAgc3RhdGljIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IGNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZik7CiAgICAgc3Rh
dGljIFJlc291cmNlUmVzcG9uc2UgY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21NYWNBcmNoaXZl
ZERhdGEoQ0ZEYXRhUmVmKTsKICAgICBzdGF0aWMgUmVzb3VyY2VSZXNwb25zZSBjcmVhdGVSZXNv
dXJjZVJlc3BvbnNlRnJvbVByb3BlcnR5TGlzdERhdGEoQ0ZEYXRhUmVmLCBDRlN0cmluZ1JlZiBy
ZXNwb25zZURhdGFUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCmluZGV4IGQxOWU4YTExNDM4ZThmOTU0Mzc0ZmMzYTA5M2VhOTc2MDc5YjZlZDguLmNl
OGEwOTM5YTU2M2Y4OWYzOWU5ZjFiMTY5MzM0YWFlNTBlY2EzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMg
Y29uc3QgZmxvYXQgY1RhcmdldFBydW5lUGVyY2VudGFnZSA9IC45NWY7IC8vIFBlcmNlbnRhZ2Ug
b2YgY2FwYWNpdHkgdG93YQogCiBNZW1vcnlDYWNoZSYgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigp
CiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1lbW9yeUNhY2hlPiBtZW1vcnlD
YWNoZTsKICAgICByZXR1cm4gbWVtb3J5Q2FjaGU7CiB9CkBAIC0xMTcsNyArMTE3LDcgQEAgYm9v
bCBNZW1vcnlDYWNoZTo6YWRkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBpZiAocmVz
b3VyY2UucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpICE9ICJHRVQiKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIocmVz
b3VyY2UudXJsKCksIHJlc291cmNlLmNhY2hlUGFydGl0aW9uKCkpOwogCkBAIC0xNjcsNyArMTY3
LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291
cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSwgY28KIAogdm9pZCBNZW1vcnlDYWNoZTo6cmV2YWxp
ZGF0aW9uRmFpbGVkKENhY2hlZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSkKIHsKLSAg
ICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmV2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJXAi
LCAmcmV2YWxpZGF0aW5nUmVzb3VyY2UpOwogICAgIEFTU0VSVChyZXZhbGlkYXRpbmdSZXNvdXJj
ZS5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKICAgICByZXZhbGlkYXRpbmdSZXNvdXJjZS5jbGVh
clJlc291cmNlVG9SZXZhbGlkYXRlKCk7CkBAIC0xODUsNyArMTg1LDcgQEAgQ2FjaGVkUmVzb3Vy
Y2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LAogCiBDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlc291cmNlRm9yUmVx
dWVzdEltcGwoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZWRSZXNvdXJjZU1h
cCYgcmVzb3VyY2VzKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFVSTCB1cmwgPSByZW1vdmVGcmFnbWVudElkZW50
aWZpZXJJZk5lZWRlZChyZXF1ZXN0LnVybCgpKTsKIAogICAgIGF1dG8ga2V5ID0gc3RkOjptYWtl
X3BhaXIodXJsLCByZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCkpOwpAQCAtMjE4LDcgKzIxOCw3IEBA
IHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcyhib29sIHNob3VsZERlc3Ryb3lE
ZWNvZGVkRGF0YUZvckFsbExpdmVSZXNvCiAgICAgcHJ1bmVMaXZlUmVzb3VyY2VzVG9TaXplKHRh
cmdldFNpemUsIHNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExpdmVSZXNvdXJjZXMpOwog
fQogCi12b2lkIE1lbW9yeUNhY2hlOjpmb3JFYWNoUmVzb3VyY2UoY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKENhY2hlZFJlc291cmNlJik+JiBmdW5jdGlvbikKK3ZvaWQgTWVtb3J5Q2FjaGU6OmZv
ckVhY2hSZXNvdXJjZShjb25zdCBGdW5jdGlvbjx2b2lkKENhY2hlZFJlc291cmNlJik+JiBmdW5j
dGlvbikKIHsKICAgICBmb3IgKGF1dG8mIHVucHJvdGVjdGVkTFJVTGlzdCA6IG1fYWxsUmVzb3Vy
Y2VzKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBjb3B5VG9WZWN0b3IoKnVucHJv
dGVjdGVkTFJVTGlzdCkpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6Zm9y
RWFjaFJlc291cmNlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChDYWNoZWRSZXNvdXJjZSYpPiYg
ZnUKICAgICB9CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OmZvckVhY2hTZXNzaW9uUmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhY2hl
ZFJlc291cmNlJik+JiBmdW5jdGlvbikKK3ZvaWQgTWVtb3J5Q2FjaGU6OmZvckVhY2hTZXNzaW9u
UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBGdW5jdGlvbjx2b2lkKENh
Y2hlZFJlc291cmNlJik+JiBmdW5jdGlvbikKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9uUmVz
b3VyY2VzLmZpbmQoc2Vzc2lvbklEKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9uUmVzb3VyY2Vz
LmVuZCgpKQpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnNldENhcGFjaXRp
ZXModW5zaWduZWQgbWluRGVhZEJ5dGVzLCB1bnNpZ25lZCBtYXhEZWFkQnl0ZXMsIHVuCiAKIHZv
aWQgTWVtb3J5Q2FjaGU6OnJlbW92ZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAg
QVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkV2aWN0aW5nIHJlc291cmNlICVwIGZvciAnJS4y
NTVzJyBmcm9tIGNhY2hlIiwgJnJlc291cmNlLCByZXNvdXJjZS51cmwoKS5zdHJpbmcoKS5sYXRp
bjEoKS5kYXRhKCkpOwogICAgIC8vIFRoZSByZXNvdXJjZSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4g
cmVtb3ZlZCBieSBzb21lb25lIG90aGVyIHRoYW4gb3VyIGNhbGxlciwKICAgICAvLyB3aG8gbmVl
ZGVkIGEgZnJlc2ggY29weSBmb3IgYSByZWxvYWQuIFNlZSA8aHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NzkjYzY+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuaAppbmRleCA1NzQ0N2ZmMWFmMDQ2YzY0OGU4NGQ5NzZhYmYwMDYxMGJmMDAy
OGRiLi4xODYxNjZhMTVkZTFiZTMyMDkyYThlMjAyYWQzODZhNGQxYTE1ZDRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMTAyLDggKzEwMiw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJldmFsaWRhdGlvblN1Y2NlZWRlZChDYWNoZWRSZXNvdXJjZSYgcmV2
YWxpZGF0aW5nUmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHJl
dmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNvdXJjZSYgcmV2YWxpZGF0aW5nUmVzb3VyY2UpOwog
Ci0gICAgdm9pZCBmb3JFYWNoUmVzb3VyY2UoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hl
ZFJlc291cmNlJik+Jik7Ci0gICAgdm9pZCBmb3JFYWNoU2Vzc2lvblJlc291cmNlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVkUmVzb3VyY2UmKT4mKTsKKyAg
ICB2b2lkIGZvckVhY2hSZXNvdXJjZShjb25zdCBGdW5jdGlvbjx2b2lkKENhY2hlZFJlc291cmNl
Jik+Jik7CisgICAgdm9pZCBmb3JFYWNoU2Vzc2lvblJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBGdW5jdGlvbjx2b2lkKENhY2hlZFJlc291cmNlJik+Jik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFGb3JBbGxJbWFnZXMoKTsKIAogICAgIC8vIFNldHMg
dGhlIGNhY2hlJ3MgbWVtb3J5IGNhcGFjaXRpZXMsIGluIGJ5dGVzLiBUaGVzZSB3aWxsIGhvbGQg
b25seSBhcHByb3hpbWF0ZWx5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21h
Yy9Mb2FkZXJOU1VSTEV4dHJhcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJO
U1VSTEV4dHJhcy5oCmluZGV4IDI3NzZlMmUwMjM5ZDUwMWQ0YTgxMmYxOTVhMDkwNzc3N2FiNjI1
NzkuLjVkYjhjOTM2MWZmMDkwOTk0NmE4MDkwNjA2MDdlOWM3ZjgxMTI2NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLmgKQEAgLTI5LDUgKzI5LDUg
QEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL0Zvcndh
cmQuaD4KIAotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1J
TUVUeXBlKE5TVVJMICosIGNvbnN0IFdURjo6U3RyaW5nJiBNSU1FVHlwZSk7CitXRUJDT1JFX0VY
UE9SVCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUoTlNVUkwgKiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSk7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyAqZmlsZW5hbWVC
eUZpeGluZ0lsbGVnYWxDaGFyYWN0ZXJzKE5TU3RyaW5nICopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCA4ZTA3
Y2QxNThjYTQ5ZDJiMTgxYjU1OTM2YmExY2I4ZDBhMWRiZmY4Li5mODk3NThlOWQ2YzQwNTlmNDU1
MjdkODc1ZmEzYWZjM2U5NmViMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNzY3LDcgKzc2Nyw3IEBAIHN0
YXRpYyBTdHJpbmcgdHJhY2tEaXNwbGF5TmFtZShjb25zdCBUcmFja0Jhc2UmIHRyYWNrKQogICAg
IFN0cmluZyB0cmFja0xhbmd1YWdlSWRlbnRpZmllciA9IHRyYWNrLnZhbGlkQkNQNDdMYW5ndWFn
ZSgpOwogCiAgICAgYXV0byBwcmVmZXJyZWRMYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKFNob3VsZE1pbmltaXplTGFuZ3VhZ2VzOjpObyk7Ci0gICAgYXV0byBkZWZhdWx0TGFuZ3Vh
Z2UgPSAhcHJlZmVycmVkTGFuZ3VhZ2VzLmlzRW1wdHkoKSA/IHByZWZlcnJlZExhbmd1YWdlc1sw
XSA6IGVtcHR5U3RyaW5nKCk7IC8vIFRoaXMgbWF0Y2hlcyBgV1RGOjpkZWZhdWx0TGFuZ3VhZ2Vg
LgorICAgIGF1dG8gZGVmYXVsdExhbmd1YWdlID0gIXByZWZlcnJlZExhbmd1YWdlcy5pc0VtcHR5
KCkgPyBwcmVmZXJyZWRMYW5ndWFnZXNbMF0gOiBlbXB0eVN0cmluZygpOyAvLyBUaGlzIG1hdGNo
ZXMgYGRlZmF1bHRMYW5ndWFnZWAuCiAgICAgYXV0byBjdXJyZW50TG9jYWxlID0gYWRvcHRDRihD
RkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkZWZhdWx0TGFuZ3VhZ2UuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgIGF1dG8gbG9jYWxlSWRlbnRpZmllciA9IGFkb3B0Q0Yo
Q0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlmaWVyRnJvbVN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCB0cmFja0xhbmd1YWdlSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKSk7CiAgICAgU3RyaW5nIGxhbmd1YWdlRGlzcGxheU5hbWUgPSBhZG9wdENGKENGTG9jYWxl
Q29weURpc3BsYXlOYW1lRm9yUHJvcGVydHlWYWx1ZShjdXJyZW50TG9jYWxlLmdldCgpLCBrQ0ZM
b2NhbGVMYW5ndWFnZUNvZGUsIGxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpKS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGNjYmRmYTQ5NjNlNDAzOTZjNzllYTk2MzljYjVh
MDc5YjRmM2VkMjYuLjIzYTU4YmY4YjgzY2UyZjU2YmUwMjE2MmRiNTc4NGJhNzM4MWYzZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI5LDggKzMyOSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihjb25zdCBUZXh0SW5kaWNhdG9yRGF0
YSYpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBG
aWxlQ2hvb3NlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1NoYXJlU2hlZXQoU2hhcmVE
YXRhV2l0aFBhcnNlZFVSTCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
YWxsYmFjaykgeyBjYWxsYmFjayhmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRh
Y3RQaWNrZXIoY29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNr
KSB7IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1NoYXJl
U2hlZXQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHNo
b3dDb250YWN0UGlja2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJh
Y2spIHsgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsgfQogICAgIAogICAgIC8vIEFzeW5jaHJvbm91
cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVuYW1lcy4KICAgICB2
aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJ
Y29uTG9hZGVyJikgPSAwOwpAQCAtNDE5LDcgKzQxOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlTWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9uKE1lZGlhU2Vzc2lvbklkZW50aWZp
ZXIpIHsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlbkZv
clZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10oYm9vbCkgeyB9KSB7IGNvbXBsZXRp
b25IYW5kbGVyKHRydWUpOyB9CisgICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXShib29sKSB7IH0pIHsgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9k
ZVdpdGhvdXRBbmltYXRpb24oSFRNTFZpZGVvRWxlbWVudCYsIEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgeyB9CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzRnVs
bHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSB7IHJldHVybiBmYWxzZTsgfSAKIApAQCAtNTUyLDEz
ICs1NTIsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEljb24+IGNyZWF0ZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSA9IDA7CiAKICNp
ZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKLSAgICB2aXJ0dWFsIHZv
aWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4q
LywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIEZyYW1lJiwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZSYsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih7IFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgc2NvcGUsIFdURk1v
dmUodG9wRnJhbWVEb21haW4pLCBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSB9KTsgfQorICAgIHZp
cnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFt
ZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgRnJhbWUm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZSYsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3BlLCBXVEZNb3Zl
KHRvcEZyYW1lRG9tYWluKSwgV1RGTW92ZShzdWJGcmFtZURvbWFpbikgfSk7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaGFzUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgLyp0b3BMZXZlbERvbWFpbiovLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgLypyZXNvdXJj
ZURvbWFpbiovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
REVWSUNFX09SSUVOVEFUSU9OKQotICAgIHZpcnR1YWwgdm9pZCBzaG91bGRBbGxvd0RldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKEZyYW1lJiwgYm9vbCAvKiBtYXlQcm9tcHQgKi8sIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlz
c2lvblN0YXRlKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhEZXZpY2VPcmllbnRhdGlvbk9yTW90
aW9uUGVybWlzc2lvblN0YXRlOjpEZW5pZWQpOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3VsZEFs
bG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MoRnJhbWUmLCBib29sIC8qIG1heVBy
b21wdCAqLywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9u
UGVybWlzc2lvblN0YXRlKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhEZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uUGVybWlzc2lvblN0YXRlOjpEZW5pZWQpOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRJbnNlcnRNZW51RWxlbWVudChIVE1MTWVudUVsZW1lbnQmKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2OWM1MTk1YmI2YTBjNDZlNGU5NDMyMGVkYzM4NmY5
NTdkMjg0ZTc5Li41YjllZWEwNzUyMDE0YWVkYTNlNDI5YmVjZTgxNjFlN2JjNjIyYjg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0yNDkyLDcgKzI0OTIsNyBAQCBib29sIERPTVdp
bmRvdzo6aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgY29u
c3QgU3RyaW5nJiB1cgogICAgIHJldHVybiB0cnVlOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8
RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgaW5pdGlh
bFdpbmRvd0ZlYXR1cmVzLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZpcnN0RnJh
bWUsIEZyYW1lJiBvcGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERPTVdpbmRv
dyYpPiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4g
RE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0
b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMmIGluaXRpYWxXaW5kb3dG
ZWF0dXJlcywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIEZyYW1lJiBmaXJzdEZyYW1lLCBGcmFt
ZSYgb3BlbmVyRnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJl
RGlhbG9nRnVuY3Rpb24pCiB7CiAgICAgUmVmUHRyIGFjdGl2ZUZyYW1lID0gYWN0aXZlV2luZG93
LmZyYW1lKCk7CiAgICAgaWYgKCFhY3RpdmVGcmFtZSkKQEAgLTI2NDQsNyArMjY0NCw3IEBAIEV4
Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IERPTVdpbmRvdzo6b3BlbihET01XaW5kb3cm
IGFjdGl2ZVdpbmRvdywgRE9NV2luCiAgICAgcmV0dXJuIG5ld0ZyYW1lID8gJm5ld0ZyYW1lLT53
aW5kb3dQcm94eSgpIDogUmVmUHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIgfTsKIH0KIAotdm9p
ZCBET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3cs
IERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoRE9NV2lu
ZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pCit2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFs
RGlhbG9nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1
cmVzU3RyaW5nLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRv
dywgY29uc3QgRnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlv
bikKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA2YWJiMDM2NjJhN2NkOTNmMDkyNzY2
ZmNmZGRmMmY4Y2M2YjdlMTAyLi4yN2NlMjJlMmJlNmVmNTcxMDQzNGY3NGRlMGZmNTlmZjUwYmE0
OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJsaWM6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBv
cGVuKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBT
dHJpbmcmIHdpbmRvd0ZlYXR1cmVzU3RyaW5nKTsKIAotICAgIHZvaWQgc2hvd01vZGFsRGlhbG9n
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3Ry
aW5nLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29u
c3QgV1RGOjpGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9u
KTsKKyAgICB2b2lkIHNob3dNb2RhbERpYWxvZyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3cs
IERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IEZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+
JiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pOwogCiAgICAgdm9pZCBwcmV3YXJtTG9jYWxTdG9yYWdl
SWZOZWNlc3NhcnkoKTsKIApAQCAtNDIwLDcgKzQyMCw3IEBAIHByaXZhdGU6CiAgICAgUGFnZSog
cGFnZSgpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dlZFRvQ2hhbmdlV2luZG93R2VvbWV0cnkoKSBj
b25zdDsKIAotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBjcmVhdGVXaW5k
b3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwg
Y29uc3QgV2luZG93RmVhdHVyZXMmLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZp
cnN0RnJhbWUsIEZyYW1lJiBvcGVuZXJGcmFtZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERP
TVdpbmRvdyYpPiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uID0gbnVsbHB0cik7CisgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IGNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJl
cyYsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBGcmFtZSYgZmlyc3RGcmFtZSwgRnJhbWUmIG9w
ZW5lckZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJlcGFyZURpYWxv
Z0Z1bmN0aW9uID0gbnVsbHB0cik7CiAgICAgYm9vbCBpc0luc2VjdXJlU2NyaXB0QWNjZXNzKERP
TVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAKICNpZiBF
TkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IGY5NmMzMTI4ZWQ5ZmQzOGIzNmUwZTVkMWE0MTZmZmRlZmQzYmIzNmMuLmYxMWUzMjFm
MDUxOGYyYjNiMzYwZjdhNDdmNzAxZWRmZTQ3N2VjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTI2MjYsNyArMjYyNiw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRh
dGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIE5vZGUq
CiAgICAgICAgICAgICBpZiAoYXV0byBlbGVtZW50VW5kZXJNb3VzZSA9IG1fZWxlbWVudFVuZGVy
TW91c2UpCiAgICAgICAgICAgICAgICAgZWxlbWVudFVuZGVyTW91c2UtPmRpc3BhdGNoTW91c2VF
dmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsIGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCwgMCwg
bV9sYXN0RWxlbWVudFVuZGVyTW91c2UuZ2V0KCkpOwogCi0gICAgICAgICAgICBmb3IgKGF1dG8m
IGNoYWluIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShlbnRlcmVkRWxlbWVudHNDaGFpbikpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byYgY2hhaW4gOiBtYWtlUmV2ZXJzZWRSYW5nZShlbnRlcmVk
RWxlbWVudHNDaGFpbikpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQ2FwdHVyaW5nTW91c2VF
bnRlckxpc3RlbmVyIHx8IGNoYWluLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkucG9p
bnRlcmVudGVyRXZlbnQpIHx8IGNoYWluLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
bW91c2VlbnRlckV2ZW50KSkKICAgICAgICAgICAgICAgICAgICAgY2hhaW4tPmRpc3BhdGNoTW91
c2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsIGV2ZW50TmFtZXMoKS5tb3VzZWVudGVyRXZlbnQs
IDAsIG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlLmdldCgpKTsKICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAxNDQxOWI5NWEzYjZhZGRkNDE3MGE3MWQyY2YwYTc0
MjBjNjhkODdjLi41NzhlY2RiNjkzZGZhNTMxMGE3MTYwNmYwMzZiZmY2ZDJmYWM2MjQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yNTMxLDcgKzI1MzEsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBvbGRQb3Np
dGlvbiwgY29uc3QgUwogICAgIH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OmFwcGx5UmVjdXJzaXZl
bHlXaXRoVmlzaWJsZVJlY3QoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChGcmFtZVZpZXcmIGZy
YW1lVmlldywgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpPiYgYXBwbHkpCit2b2lkIEZyYW1l
Vmlldzo6YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBGdW5jdGlvbjx2b2lk
KEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+JiBhcHBs
eSkKIHsKICAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0ID0gdGhpcy0+d2luZG93Q2xpcFJlY3Qo
KTsKICAgICBhdXRvIHZpc2libGVSZWN0ID0gd2luZG93VG9Db250ZW50cyh3aW5kb3dDbGlwUmVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBmNGNmN2QwODE1MjhhYWFhMTBjOTI2YmU5
ZDlmMjc1ZmZlNDhmNjJmLi5kNjkzMTVkZWEwZTI2OGMyYWRkMDBhNzU2NTExN2IxN2UwZmE3OGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAg
ICAgRnJhbWVWaWV3TGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCgpIHsgcmV0dXJuIG1fbGF5
b3V0Q29udGV4dDsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkaWRGaXJzdExheW91dCgp
IGNvbnN0OwotICAgIHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2
b2lkICgpPiYmKTsKKyAgICB2b2lkIHF1ZXVlUG9zdExheW91dENhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzTGF5b3V0KCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROZWVkc0xheW91dEFmdGVyVmlld0NvbmZpZ3Vy
YXRpb25DaGFuZ2UoKTsKQEAgLTc1NCw3ICs3NTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVy
Zm9ybUZpeGVkV2lkdGhBdXRvU2l6ZSgpOwogICAgIHZvaWQgcGVyZm9ybVNpemVUb0NvbnRlbnRB
dXRvU2l6ZSgpOwogCi0gICAgdm9pZCBhcHBseVJlY3Vyc2l2ZWx5V2l0aFZpc2libGVSZWN0KGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZCAoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJl
Y3QmIHZpc2libGVSZWN0KT4mKTsKKyAgICB2b2lkIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJs
ZVJlY3QoY29uc3QgRnVuY3Rpb248dm9pZChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50
UmVjdCYgdmlzaWJsZVJlY3QpPiYpOwogICAgIHZvaWQgcmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0
aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVTY3JpcHRl
ZEFuaW1hdGlvbnNBbmRUaW1lcnNUaHJvdHRsaW5nU3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJs
ZVJlY3QpOwogCkBAIC05MTUsNyArOTE1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8RmxvYXRS
ZWN0PiBtX3RyYWNrZWRSZXBhaW50UmVjdHM7CiAgICAgCiAgICAgSW50UmVjdCogbV9jYWNoZWRX
aW5kb3dDbGlwUmVjdCB7IG51bGxwdHIgfTsKLSAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lk
ICgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9p
ZCgpPj4gbV9wb3N0TGF5b3V0Q2FsbGJhY2tRdWV1ZTsKIAogICAgIExheW91dFBvaW50IG1fbGF5
b3V0Vmlld3BvcnRPcmlnaW47CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBtX2xheW91
dFZpZXdwb3J0T3ZlcnJpZGVSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyRW50cnkuaAppbmRleCAxMTJlNDY4ZWNjMDBmMGViNzg5NDJlM2Q0NmViN2Rh
M2NhMDZiNTE0Li4xMjg2NjdmNzg2MDVmYmU2NGFkODBmNWQ2ODQ3NGYzNDdiNWUyYTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPEludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnk+IGNyZWF0ZShjb25zdCBJbml0JiBpbml0KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IFdURjo6YWRvcHRSZWYoKm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KGluaXQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeShpbml0
KSk7CiAgICAgfQogICAgIAogICAgIGRvdWJsZSB0aW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhMmIyYjVmNjA1YjM3YzExODViZjc1ZWVjM2RjOTM2
YTQyYTI2NTlmLi4xOTRmNmQ5OWU5YWVlZjc4NzMxMzY3MTU5OGQxNzYyYTJjNjU2OGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB1bnNpZ25lZCBQYWdlOjpub25VdGls
aXR5UGFnZUNvdW50KCkKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRl
ZExlYWtDb3VudGVyLCBwYWdlQ291bnRlciwgKCJQYWdlIikpOwogCi12b2lkIFBhZ2U6OmZvckVh
Y2hQYWdlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChQYWdlJik+JiBmdW5jdGlvbikKK3ZvaWQg
UGFnZTo6Zm9yRWFjaFBhZ2UoY29uc3QgRnVuY3Rpb248dm9pZChQYWdlJik+JiBmdW5jdGlvbikK
IHsKICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBhbGxQYWdlcygpKQogICAgICAgICBmdW5jdGlvbigq
cGFnZSk7CkBAIC0xNTU2LDcgKzE1NTYsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygp
CiAgICAgICAgIGluaXRpYWxEb2N1bWVudHMuYXBwZW5kKGRvY3VtZW50KTsKICAgICB9KTsKIAot
ICAgIGF1dG8gcnVuUHJvY2Vzc2luZ1N0ZXAgPSBbJl0oUmVuZGVyaW5nVXBkYXRlU3RlcCBzdGVw
LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnQmKT4mIHBlckRvY3VtZW50RnVuY3Rp
b24pIHsKKyAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0
ZXAgc3RlcCwgY29uc3QgRnVuY3Rpb248dm9pZChEb2N1bWVudCYpPiYgcGVyRG9jdW1lbnRGdW5j
dGlvbikgewogICAgICAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5y
ZW1vdmUoc3RlcCk7CiAgICAgICAgIGZvckVhY2hEb2N1bWVudChwZXJEb2N1bWVudEZ1bmN0aW9u
KTsKICAgICB9OwpAQCAtMTY1MSw3ICsxNjUxLDcgQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRl
UmVuZGVyaW5nKCkKICAgICB9CiAjZW5kaWYKIAotICAgIGF1dG8gcnVuUHJvY2Vzc2luZ1N0ZXAg
PSBbJl0oUmVuZGVyaW5nVXBkYXRlU3RlcCBzdGVwLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
RG9jdW1lbnQmKT4mIHBlckRvY3VtZW50RnVuY3Rpb24pIHsKKyAgICBhdXRvIHJ1blByb2Nlc3Np
bmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29uc3QgRnVuY3Rpb248dm9p
ZChEb2N1bWVudCYpPiYgcGVyRG9jdW1lbnRGdW5jdGlvbikgewogICAgICAgICBtX3JlbmRlcmlu
Z1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoc3RlcCk7CiAgICAgICAgIGZvckVh
Y2hEb2N1bWVudChwZXJEb2N1bWVudEZ1bmN0aW9uKTsKICAgICB9OwpAQCAtMjU2Nyw3ICsyNTY3
LDcgQEAgdm9pZCBQYWdlOjpkZWNyZW1lbnROZXN0ZWRSdW5Mb29wQ291bnQoKQogICAgIH0KIH0K
IAotdm9pZCBQYWdlOjp3aGVuVW5uZXN0ZWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJh
Y2spCit2b2lkIFBhZ2U6OndoZW5Vbm5lc3RlZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2sp
CiB7CiAgICAgQVNTRVJUKCFtX3VubmVzdENhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA5
ZjUwNDU4OTIwMWUwOTUyMmYxY2Y0MjJiNzI5NjdjNzU2MDlmNjFlLi41M2Y2MTM3N2FjNGRiYmQ5
NTI5MmEyNjZiMTdmZGEyOTE3MDFlNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMjk0LDcgKzI5NCw3
IEBAIHB1YmxpYzoKICAgICBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkmIGJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeSgpIHsgcmV0dXJuIG1fYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoUmVmPEJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeT4mJik7IC8vIE9ubHkgdXNlZCBieSBXZWJLaXRMZWdhY3kuCiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShjb25zdCBXVEY6OkZ1
bmN0aW9uPHZvaWQoUGFnZSYpPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZv
ckVhY2hQYWdlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUGFnZSYpPiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB1bnNpZ25lZCBub25VdGlsaXR5UGFnZUNvdW50KCk7CiAKICAgICB1bnNpZ25l
ZCBzdWJmcmFtZUNvdW50KCkgY29uc3Q7CkBAIC0zMDIsNyArMzAyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgaW5jcmVtZW50TmVzdGVkUnVuTG9vcENvdW50KCk7CiAgICAgdm9pZCBkZWNyZW1lbnRO
ZXN0ZWRSdW5Mb29wQ291bnQoKTsKICAgICBib29sIGluc2lkZU5lc3RlZFJ1bkxvb3AoKSBjb25z
dCB7IHJldHVybiBtX25lc3RlZFJ1bkxvb3BDb3VudCA+IDA7IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHdoZW5Vbm5lc3RlZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3aGVuVW5uZXN0ZWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVtb3RlSW5z
cGVjdGlvbkFsbG93ZWQoKSBjb25zdDsKQEAgLTg2NCw4ICs4NjQsOCBAQCBwdWJsaWM6CiAgICAg
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlciogZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ci5nZXQoKTsgfQogI2VuZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hEb2N1
bWVudChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnQmKT4mKSBjb25zdDsKLSAgICB2
b2lkIGZvckVhY2hNZWRpYUVsZW1lbnQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEhUTUxNZWRp
YUVsZW1lbnQmKT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hEb2N1bWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JikgY29uc3Q7CisgICAgdm9pZCBmb3JFYWNo
TWVkaWFFbGVtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCYpPiYpOwog
CiAgICAgYm9vbCBzaG91bGREaXNhYmxlQ29yc0ZvclJlcXVlc3RUbyhjb25zdCBVUkwmKSBjb25z
dDsKIApAQCAtOTk0LDcgKzk5NCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxGcmFt
ZXNQZXJTZWNvbmQ+IG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7CiAKICAgICBpbnQg
bV9uZXN0ZWRSdW5Mb29wQ291bnQgeyAwIH07Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1f
dW5uZXN0Q2FsbGJhY2s7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3VubmVzdENhbGxiYWNrOwog
CiAgICAgU3RyaW5nIG1fZ3JvdXBOYW1lOwogICAgIGJvb2wgbV9vcGVuZWRCeURPTSB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5j
cHAKaW5kZXggYTIyMGQwZGM5OTU5YTBkZDNjM2ExYjJiNjdiNmRjYTlkMzI2N2E1Ni4uNjI5MDQ4
MDJkZGEyYjY4ZmNkZTNiZDBmMDViM2VhMWNmN2UzMTI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBA
IHZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpkaXNwYXRjaEV2ZW50Rm9yVG91Y2hBdElu
ZGV4KEV2ZW50VGFyZ2V0JiB0YXJnZXQsCiAgICAgICAgIH0KIAogICAgICAgICBpZiAodHlwZSA9
PSBldmVudE5hbWVzKCkucG9pbnRlcmVudGVyRXZlbnQpIHsKLSAgICAgICAgICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UodGFyZ2V0Q2hhaW4pKQorICAgICAg
ICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbWFrZVJldmVyc2VkUmFuZ2UodGFyZ2V0Q2hhaW4p
KQogICAgICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoUG9pbnRlckV2ZW50OjpjcmVhdGUodHlw
ZSwgcGxhdGZvcm1Ub3VjaEV2ZW50LCBpbmRleCwgaXNQcmltYXJ5LCB2aWV3KSwgZWxlbWVudC5w
dHIoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiB0YXJnZXRDaGFpbikKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFBvaW50ZXJDYXB0dXJlQ29u
dHJvbGxlcjo6ZGlzcGF0Y2hFdmVudEZvclRvdWNoQXRJbmRleChFdmVudFRhcmdldCYgdGFyZ2V0
LAogICAgICAgICBpZiAoY3VycmVudFRhcmdldCkKICAgICAgICAgICAgIGRpc3BhdGNoT3Zlck9y
T3V0RXZlbnQoZXZlbnROYW1lcygpLnBvaW50ZXJvdmVyRXZlbnQsIGN1cnJlbnRUYXJnZXQuZ2V0
KCkpOwogCi0gICAgICAgIGZvciAoYXV0byYgY2hhaW4gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdl
KGVudGVyZWRFbGVtZW50c0NoYWluKSkgeworICAgICAgICBmb3IgKGF1dG8mIGNoYWluIDogbWFr
ZVJldmVyc2VkUmFuZ2UoZW50ZXJlZEVsZW1lbnRzQ2hhaW4pKSB7CiAgICAgICAgICAgICBpZiAo
aGFzQ2FwdHVyaW5nUG9pbnRlckVudGVyTGlzdGVuZXIgfHwgY2hhaW4tPmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5wb2ludGVyZW50ZXJFdmVudCkpCiAgICAgICAgICAgICAgICAgZGlz
cGF0Y2hFdmVudChQb2ludGVyRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucG9pbnRlcmVudGVy
RXZlbnQsIHBsYXRmb3JtVG91Y2hFdmVudCwgaW5kZXgsIGlzUHJpbWFyeSwgdmlldyksIGNoYWlu
LnB0cigpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyQ2FwdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1
cmVDb250cm9sbGVyLmgKaW5kZXggNDk1NDgxNDJmNmRiNmIyNDVjZjZiYTIzNDI3MjYxNTAyOGFh
ZDFhZS4uNDU0MzVmNzdlNGJjNzkwYWE2MGJkZWJjMjdlYTY5YjliYTg4OWMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oCkBAIC0xMTQsNyAr
MTE0LDcgQEAgcHJpdmF0ZToKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgLy8gV2hpbGUgUG9pbnRl
cklEIGlzIGRlZmluZWQgYXMgaW50MzJfdCwgd2UgdXNlIGludDY0X3QgaGVyZSBzbyB0aGF0IHdl
IG1heSB1c2UgYSB2YWx1ZSBvdXRzaWRlIG9mIHRoZSBpbnQzMl90IHJhbmdlIHRvIGhhdmUgc2Fm
ZQogICAgIC8vIGVtcHR5IGFuZCByZW1vdmVkIHZhbHVlcywgYWxsb3dpbmcgYW55IGludDMyX3Qg
dG8gYmUgcHJvdmlkZWQgdGhyb3VnaCB0aGUgQVBJIGZvciBsb29rdXAgaW4gdGhpcyBoYXNobWFw
LgotICAgIHVzaW5nIFBvaW50ZXJJZFRvQ2FwdHVyaW5nRGF0YU1hcCA9IEhhc2hNYXA8aW50NjRf
dCwgUmVmPENhcHR1cmluZ0RhdGE+LCBXVEY6OkludEhhc2g8aW50NjRfdD4sIFdURjo6U2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDY0X3Q+PjsKKyAgICB1c2luZyBQb2ludGVySWRUb0Nh
cHR1cmluZ0RhdGFNYXAgPSBIYXNoTWFwPGludDY0X3QsIFJlZjxDYXB0dXJpbmdEYXRhPiwgSW50
SGFzaDxpbnQ2NF90PiwgV1RGOjpTaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50NjRfdD4+
OwogICAgIFBvaW50ZXJJZFRvQ2FwdHVyaW5nRGF0YU1hcCBtX2FjdGl2ZVBvaW50ZXJJZHNUb0Nh
cHR1cmluZ0RhdGE7CiAgICAgYm9vbCBtX3Byb2Nlc3NpbmdQZW5kaW5nUG9pbnRlckNhcHR1cmUg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXZlQW55Q2FwdHVyaW5nRWxlbWVudCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcAppbmRleCBkYmI1
ZGNiYmFjNWNlNTQ4NTZkM2U1NjA3NTE0NTE4ZDA4MjU2YzdkLi5mZmJjOWFkMTAwNjBmNjFkOWVj
YzkyNTVlZWJkYWM2Y2ExNzAxYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
c291cmNlVXNhZ2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VV
c2FnZVRocmVhZC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFk
Ojp3YWl0VW50aWxPYnNlcnZlcnMoKQogICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fb2JzZXJ2
ZXJzTG9jayk7CiAKICAgICAgICAgLy8gV2FpdCBhIGJpdCBhZnRlciB3YWtpbmcgdXAgZm9yIHRo
ZSBmaXJzdCB0aW1lLgotICAgICAgICBXVEY6OnNsZWVwKDEwX21zKTsKKyAgICAgICAgc2xlZXAo
MTBfbXMpOwogICAgIH0KIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgUmVzb3VyY2VVc2Fn
ZVRocmVhZDo6Y3JlYXRlVGhyZWFkSWZOZWVkZWQoKQogTk9fUkVUVVJOIHZvaWQgUmVzb3VyY2VV
c2FnZVRocmVhZDo6dGhyZWFkQm9keSgpCiB7CiAgICAgLy8gV2FpdCBhIGJpdCBhZnRlciB3YWtp
bmcgdXAgZm9yIHRoZSBmaXJzdCB0aW1lLgotICAgIFdURjo6c2xlZXAoMTBfbXMpOworICAgIHNs
ZWVwKDEwX21zKTsKICAgICAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAvLyBPbmx5IGRv
IHdvcmsgaWYgd2UgaGF2ZSBvYnNlcnZlcnMuCkBAIC0xNDcsNyArMTQ3LDcgQEAgTk9fUkVUVVJO
IHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6dGhyZWFkQm9keSgpCiAgICAgICAgIC8vIHNvIGlm
IHRoaXMgaW50ZXJ2YWwgY2hhbmdlcyBXZWIgSW5zcGVjdG9yIG1heSBuZWVkIHRvIGNoYW5nZS4K
ICAgICAgICAgYXV0byBkdXJhdGlvbiA9IFdhbGxUaW1lOjpub3coKSAtIHN0YXJ0OwogICAgICAg
ICBhdXRvIGRpZmZlcmVuY2UgPSA1MDBfbXMgLSBkdXJhdGlvbjsKLSAgICAgICAgV1RGOjpzbGVl
cChkaWZmZXJlbmNlKTsKKyAgICAgICAgc2xlZXAoZGlmZmVyZW5jZSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDFmNWJk
NDMwMDZiNzI3OGEyNWQ2ZjRmMmUyMjE3MzFhZDMwMzdhNWUuLjNmZGM5NDVlNzg1ZDRhMzczOGI5
NmIwMDg1MjhlZTYzYzQyNGIyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCkBAIC00MTEsNyArNDExLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
YnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgZnJp
ZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8UnVudGltZUVuYWJsZWRGZWF0dXJlcz47Cisg
ICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmgKaW5kZXggZmM0NWZiYWExNTEwY2ExMzYxZmEwZDhhZmMxN2E5Yjg4MTkwNTg2
Ny4uZmRmYzg2NDNlYWRmMDQ2ODAxYTFlZTgwOTZjMTVlNTczZmIzNmE0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjpv
cHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXN0cnVjdCBTZWN1cml0eU9y
aWdpbkRhdGFIYXNoVHJhaXRzIDogV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U2VjdXJpdHlP
cmlnaW5EYXRhPiB7CitzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhSGFzaFRyYWl0cyA6IFNpbXBs
ZUNsYXNzSGFzaFRyYWl0czxTZWN1cml0eU9yaWdpbkRhdGE+IHsKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1
ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGRhdGEpIHsgcmV0dXJuIGRhdGEuaXNFbXB0eSgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCmluZGV4IGM1OWJiMjVlMjVk
NTlhMzdjZDY2Y2I2Yjc1Yzg3ZWRkM2IzMzhkYjAuLmUyMjU4ZTE5OWI3NjRkNzg2OGIyY2VlODc2
MzRmZDJiOGRiOTJjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFi
bGVUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCkBA
IC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgU3VzcGVuZGFibGVU
aW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24pCisgICAgU3VzcGVuZGFibGVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIDogU3Vz
cGVuZGFibGVUaW1lckJhc2UoY29udGV4dCkKICAgICAgICAgLCBtX2Z1bmN0aW9uKFdURk1vdmUo
ZnVuY3Rpb24pKQogICAgIHsKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgV1RGOjpG
dW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5j
dGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKaW5kZXggZDJmNjUzNTcyNDc0
MmMxY2VhODY0MWM2ZWE4YzY5ZjFhNWU3YjNjMC4uNjMzODdkZDg5OGMxMGMzNDA2NGFlNGI3OTlj
YWEwMTc0OWFiNTZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIERPTVdyYXBwZXJXb3JsZCYgd29ybGQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBET01XcmFwcGVyV29ybGQmIHdvcmxkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUG9zdE1lc3NhZ2UoVXNlck1lc3NhZ2VIYW5kbGVyJiwgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmlu
ZyYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdl
SGFuZGxlciYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIEZ1bmN0aW9uPHZvaWQoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYpID0gMDsKIAogcHJpdmF0ZToKICAgICBB
dG9tU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxF
dmVudFRlc3RNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RN
b25pdG9yLmNwcAppbmRleCBhZTc0NDQ5NWIxMDNhZDM0NzM1Yzk0MTZlZWRhOGYwZjlhNzU5YmIw
Li44MjdiNzRmZmQzZWRiMDU5ZWFiZWVmNTYyMjk4NGI1MThkN2UxMjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwCkBAIC02MCw3ICs2MCw3IEBA
IHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpjbGVhckFsbFRlc3REZWZlcnJhbHMoKQogICAg
IExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OmNsZWFyQWxsVGVzdERlZmVycmFsczogY2xlYXJlZCBhbGwgdGVz
dCBzdGF0ZS4iKTsKIH0KIAotdm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNldFRlc3RDYWxs
YmFja0FuZFN0YXJ0TW9uaXRvcmluZyhib29sIGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGJvb2wg
ZXhwZWN0TW9tZW50dW1FbmQsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uQ2FsbGJh
Y2spCit2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnRN
b25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCwgYm9vbCBleHBlY3RNb21lbnR1
bUVuZCwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uQ2FsbGJhY2spCiB7CiAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1do
ZWVsRXZlbnRUZXN0TW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVz
dE1vbml0b3IuaAppbmRleCA2YmQyYjAwMzI1YjZjNmUyZTIxMWQ4NjhiMmNjZDQ5ZTJlYzE2YTNh
Li5kODJkMDFiMWMzODQ0OWJkODdmMzFhMzlkNmQzNWZlNzU1NDllNzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xh
c3MgV2hlZWxFdmVudFRlc3RNb25pdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdo
ZWVsRXZlbnRUZXN0TW9uaXRvcj4KIHB1YmxpYzoKICAgICBXaGVlbEV2ZW50VGVzdE1vbml0b3Io
UGFnZSYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFy
dE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29sIGV4cGVjdE1vbWVu
dHVtRW5kLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuZE9y
Q2FuY2VsLCBib29sIGV4cGVjdE1vbWVudHVtRW5kLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGxUZXN0RGVmZXJyYWxzKCk7CiAgICAgCiAgICAg
ZW51bSBEZWZlclJlYXNvbiB7CkBAIC02NSwxMiArNjUsMTIgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgY2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzKCk7CiAKLSAgICB1c2luZyBTY3JvbGxhYmxl
QXJlYVJlYXNvbk1hcCA9IFdURjo6SGFzaE1hcDxTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIE9w
dGlvblNldDxEZWZlclJlYXNvbj4+OworICAgIHVzaW5nIFNjcm9sbGFibGVBcmVhUmVhc29uTWFw
ID0gSGFzaE1hcDxTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIE9wdGlvblNldDxEZWZlclJlYXNv
bj4+OwogCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVDYWxsYmFja0NoZWNrKCk7CiAKLSAg
ICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb21wbGV0aW9uQ2FsbGJhY2s7CisgICAgRnVuY3Rp
b248dm9pZCgpPiBtX2NvbXBsZXRpb25DYWxsYmFjazsKICAgICBQYWdlJiBtX3BhZ2U7CiAKICAg
ICBMb2NrIG1fbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVh
dHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXgg
ZGU5OWY5YzAyOWJmMDY2NGQwNmRlMTgxM2RjN2QwNzU2ODFiNmI3NS4uMGU2MTE0YzZhMTNlNTQ4
NzU1OGU0Zjg4ZWYwNTA2ZWI1MDE1MDlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgV2luZG93RmVhdHVyZXMgcGFyc2VXaW5kb3dGZWF0
dXJlcyhTdHJpbmdWaWV3IGZlYXR1cmVzU3RyaW5nKQogLy8gV2luZG93OiBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXdpbmRvdy1vcGVuLWZlYXR1cmVzLXRva2VuaXplCiAv
LyBWaWV3cG9ydDogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvY29udGVudC9k
b2N1bWVudGF0aW9uL0FwcGxlQXBwbGljYXRpb25zL1JlZmVyZW5jZS9TYWZhcmlIVE1MUmVmL0Fy
dGljbGVzL01ldGFUYWdzLmh0bWwjLy9hcHBsZV9yZWYvZG9jL3VpZC9UUDQwMDA4MTkzLVNXNgog
Ly8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlcmluZyBhbGlnbmluZyBWaWV3cG9ydCBmZWF0dXJl
IHBhcnNpbmcgd2l0aCBXaW5kb3cgZmVhdHVyZXMgcGFyc2luZy4KLXZvaWQgcHJvY2Vzc0ZlYXR1
cmVzU3RyaW5nKFN0cmluZ1ZpZXcgZmVhdHVyZXMsIEZlYXR1cmVNb2RlIG1vZGUsIGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgdmFsdWUpPiYgY2Fs
bGJhY2spCit2b2lkIHByb2Nlc3NGZWF0dXJlc1N0cmluZyhTdHJpbmdWaWV3IGZlYXR1cmVzLCBG
ZWF0dXJlTW9kZSBtb2RlLCBjb25zdCBGdW5jdGlvbjx2b2lkKFN0cmluZ1ZpZXcgdHlwZSwgU3Ry
aW5nVmlldyB2YWx1ZSk+JiBjYWxsYmFjaykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBmZWF0
dXJlcy5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyApIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaAppbmRleCA3NmMwYWYxNjkyZmMyZmI4NDgx
MDgyZDM4NmMzZjVjNGU2ZDMyNmIyLi5lOTZjNWUxOTMyYmRiNmRhODQ4ODI0Mzg4NTUxZjgyMzQy
YjM1MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oCkBAIC02NCw2ICs2NCw2
IEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlRGlhbG9nRmVhdHVyZXMoY29uc3QgU3RyaW5nJiBkaWFs
b2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxvCiBPcHRpb25TZXQ8RGlzYWJsZWRBZGFwdGF0aW9u
cz4gcGFyc2VEaXNhYmxlZEFkYXB0YXRpb25zKGNvbnN0IFN0cmluZyYpOwogCiBlbnVtIGNsYXNz
IEZlYXR1cmVNb2RlIHsgV2luZG93LCBWaWV3cG9ydCB9Owotdm9pZCBwcm9jZXNzRmVhdHVyZXNT
dHJpbmcoU3RyaW5nVmlldyBmZWF0dXJlcywgRmVhdHVyZU1vZGUsIGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZChTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgdmFsdWUpPiYgY2FsbGJhY2spOwor
dm9pZCBwcm9jZXNzRmVhdHVyZXNTdHJpbmcoU3RyaW5nVmlldyBmZWF0dXJlcywgRmVhdHVyZU1v
ZGUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IHZhbHVl
KT4mIGNhbGxiYWNrKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNjMzMTViYTVl
ZjY4OGI4NDA5YzhhNWYyYzZmZjQwZWNhZjhmY2Q1My4uYWEzMmNlZjlmZmRjNGNkMjAwNzkwYTE2
ZmRkMDU1YjBmYjQ3N2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmNoZWNrSGFzaEFuZFJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY28KICAgICByZXR1cm4gZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzIHx8IGFsbFBv
bGljaWVzV2l0aERpc3Bvc2l0aW9uQWxsb3coQ29udGVudFNlY3VyaXR5UG9saWN5OjpEaXNwb3Np
dGlvbjo6RW5mb3JjZSwgV1RGTW92ZShjYWxsYmFjayksIHZpb2xhdGVkRGlyZWN0aXZlKTsKIH0K
IAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5l
LCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGlj
eSkgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0phdmFTY3JpcHRVUkxz
KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExp
bmUsIGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KSBjb25zdAogewogICAgIGlmIChvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC00MDQsNyArNDA0LDcgQEAgYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdAogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKICAgICAgICAg
U3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3Rp
dmUsIFVSTCgpLCAiUmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMg
bm9uY2UsIG9yICd1bnNhZmUtaW5saW5lJyIpOwogICAgICAgICAvLyBGSVhNRSAocmRhcjovLzgz
MzMyODc0KSBpbXBsZW1lbnQgc2NyaXB0U3JjRWxlbSBwcm9wZXJseS4KLSAgICAgICAgcmVwb3J0
VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmNF
bGVtLCB2aW9sYXRlZERpcmVjdGl2ZSwgImlubGluZSJfcywgY29uc29sZU1lc3NhZ2UsIGNvbnRl
eHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGluZSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsK
KyAgICAgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpzY3JpcHRTcmNFbGVtLCB2aW9sYXRlZERpcmVjdGl2ZSwgImlubGluZSJfcywgY29uc29s
ZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGluZSwgT3JkaW5hbE51
bWJlcigpKSk7CiAgICAgICAgIGlmICghZGlkTm90aWZ5SW5zcGVjdG9yICYmIHZpb2xhdGVkRGly
ZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKSkgewogICAgICAgICAgICAgcmVw
b3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKHZpb2xhdGVkRGlyZWN0aXZlLnRl
eHQoKSk7CiAgICAgICAgICAgICBkaWROb3RpZnlJbnNwZWN0b3IgPSB0cnVlOwpAQCAtNDE0LDE0
ICs0MTQsMTQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SmF2YVNjcmlwdFVS
THMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdAogICAgIHJldHVybiBjaGVja0hhc2hB
bmRSZXBvcnRWaW9sYXRpb24oc291cmNlLCAmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTY3JpcHRFbGVtZW50LCAmQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNh
ZmVIYXNoU2NyaXB0LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cywgaGFuZGxlVmlv
bGF0ZWREaXJlY3RpdmUpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJ
bmxpbmVFdmVudEhhbmRsZXJzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpP
cmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgb3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwg
Y29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlLCBi
b29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAogewogICAgIGlmIChvdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgYm9v
bCBkaWROb3RpZnlJbnNwZWN0b3IgPSBmYWxzZTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGly
ZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xh
dGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
Y3JpcHRTcmMsIHZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBh
IHNjcmlwdCBmb3IgYW4gaW5saW5lIGV2ZW50IGhhbmRsZXIiLCAiJ3Vuc2FmZS1pbmxpbmUnIik7
Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lczo6c2NyaXB0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgImlubGluZSJfcywgY29uc29sZU1l
c3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGluZSwgV1RGOjpPcmRpbmFs
TnVtYmVyKCkpKTsKKyAgICAgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsIHZpb2xhdGVkRGlyZWN0aXZlLCAiaW5saW5lIl9z
LCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgVGV4dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBP
cmRpbmFsTnVtYmVyKCkpKTsKICAgICAgICAgaWYgKCFkaWROb3RpZnlJbnNwZWN0b3IgJiYgIXZp
b2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKSkgewogICAgICAg
ICAgICAgcmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKHZpb2xhdGVkRGly
ZWN0aXZlLnRleHQoKSk7CiAgICAgICAgICAgICBkaWROb3RpZnlJbnNwZWN0b3IgPSB0cnVlOwpA
QCAtNDcwLDcgKzQ3MCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd05vblBh
cnNlckluc2VydGVkU2NyaXB0cyhjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7Ci0gICAg
ICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9y
ZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKTsKKyAgICAgICAgVGV4dFBvc2l0aW9uIHNv
dXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGluYWxOdW1iZXIo
KSk7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlv
bGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsIHZp
b2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKICAgICAgICAgcmVwb3J0
VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmNF
bGVtLCB2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZSwgU3Ry
aW5nKCksIHNvdXJjZVBvc2l0aW9uKTsKICAgICB9OwpAQCAtNDc4LDE0ICs0NzgsMTQgQEAgYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Tm9uUGFyc2VySW5zZXJ0ZWRTY3JpcHRzKGNv
bnN0IFVSTCYgdXJsLCBjb25zdAogICAgIHJldHVybiBhbGxTY3JpcHRQb2xpY2llc0FsbG93KGhh
bmRsZVZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIG5vbmNlLCBzY3JpcHRDb250ZW50LCBwYXJzZXJJ
bnNlcnRlZCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVNj
cmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIFN0cmluZ1ZpZXcgc2NyaXB0Q29udGVudCwgYm9vbCBvdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeSkgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IE9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBTdHJpbmdWaWV3IHNjcmlwdENvbnRlbnQsIGJvb2wgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5IHx8IHNob3VsZFBlcmZvcm1FYXJseUNTUENoZWNrKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGJvb2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7CiAgICAgYXV0
byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29s
ZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJS
ZWZ1c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQiLCAiaXRzIGhhc2gsIGl0cyBub25jZSwgb3IgJ3Vu
c2FmZS1pbmxpbmUnIik7Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgImlubGlu
ZSJfcywgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGlu
ZSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICAgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsIHZpb2xhdGVkRGlyZWN0
aXZlLCAiaW5saW5lIl9zLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgVGV4dFBvc2l0aW9u
KGNvbnRleHRMaW5lLCBPcmRpbmFsTnVtYmVyKCkpKTsKICAgICAgICAgaWYgKCFkaWROb3RpZnlJ
bnNwZWN0b3IgJiYgIXZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9u
bHkoKSkgewogICAgICAgICAgICAgcmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVj
dG9yKHZpb2xhdGVkRGlyZWN0aXZlLnRleHQoKSk7CiAgICAgICAgICAgICBkaWROb3RpZnlJbnNw
ZWN0b3IgPSB0cnVlOwpAQCAtNDk2LDcgKzQ5Niw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdU
CiAgICAgcmV0dXJuIGNoZWNrSGFzaEFuZFJlcG9ydFZpb2xhdGlvbihzY3JpcHRDb250ZW50LnRv
U3RyaW5nKCksICZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERp
cmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdEVsZW1lbnQsICZDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclNjcmlwdEhhc2gsIG1faGFzaEFs
Z29yaXRobXNGb3JJbmxpbmVTY3JpcHRzLCBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSk7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmlu
ZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgU3Ry
aW5nVmlldyBzdHlsZUNvbnRlbnQsIENoZWNrVW5zYWZlSGFzaGVzIHNob3VsZENoZWNrVW5zYWZl
SGFzaGVzLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAorYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgU3RyaW5nVmlldyBzdHls
ZUNvbnRlbnQsIENoZWNrVW5zYWZlSGFzaGVzIHNob3VsZENoZWNrVW5zYWZlSGFzaGVzLCBib29s
IG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAogewogICAgIGlmIChvdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01MDUsNyAr
NTA1LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUoY29u
c3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEYKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVk
RGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZp
b2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIGF1dG8gbmFtZSA9IHNob3VsZENoZWNrVW5zYWZl
SGFzaGVzID09IENoZWNrVW5zYWZlSGFzaGVzOjpZZXMgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6c3R5bGVTcmNBdHRyIDogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXM6OnN0eWxlU3JjRWxlbTsKICAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0g
Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OnN0eWxlU3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGFw
cGx5IGEgc3R5bGVzaGVldCIsICJpdHMgaGFzaCwgaXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGlu
ZSciKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG5hbWUsIHZpb2xhdGVkRGlyZWN0aXZlLCAi
aW5saW5lIl9zLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgVGV4dFBvc2l0aW9uKGNvbnRl
eHRMaW5lLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgICAgICByZXBvcnRWaW9sYXRpb24o
bmFtZSwgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3MsIGNvbnNvbGVNZXNzYWdlLCBjb250
ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIE9yZGluYWxOdW1iZXIoKSkpOwogICAg
IH07CiAKICAgICBpZiAoc2hvdWxkQ2hlY2tVbnNhZmVIYXNoZXMgPT0gQ2hlY2tVbnNhZmVIYXNo
ZXM6OlllcykKQEAgLTU0MCw3ICs1NDAsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dGcmFtZUFuY2VzdG9ycyhjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdQogICAg
IGlmICgmZnJhbWUgPT0gJnRvcEZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBTdHJp
bmcgc291cmNlVVJMOwotICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihXVEY6Ok9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKTsKKyAgICBUZXh0
UG9zaXRpb24gc291cmNlUG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3Jk
aW5hbE51bWJlcigpKTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZdIChj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7
CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0
aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZUFuY2VzdG9ycywg
dmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOwogICAgICAgICByZXBv
cnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5j
ZXN0b3JzLCB2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZSwg
c291cmNlVVJMLCBzb3VyY2VQb3NpdGlvbik7CkBAIC01NjgsNyArNTY4LDcgQEAgYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RnJhbWVBbmNlc3RvcnMoY29uc3QgVmVjdG9yPFJlZlB0
cjxTZWN1cml0eU9yaWcKICAgICBpZiAoaXNUb3BMZXZlbEZyYW1lKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBTdHJpbmcgc291cmNlVVJMOwotICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3Np
dGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJl
cigpKTsKKyAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVm
b3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcigpKTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGly
ZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xh
dGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpm
cmFtZUFuY2VzdG9ycywgdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIp
OwogICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OmZyYW1lQW5jZXN0b3JzLCB2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLnN0cmluZygpLCBj
b25zb2xlTWVzc2FnZSwgc291cmNlVVJMLCBzb3VyY2VQb3NpdGlvbik7CkBAIC01ODEsNyArNTgx
LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHkKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFN0cmluZyBzb3VyY2VVUkw7
Ci0gICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVm
b3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpOworICAgIFRleHRQb3NpdGlvbiBzb3Vy
Y2VQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVyKCkp
OwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKICAgICAgICAgU3Ry
aW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnBsdWdpblR5cGVzLCB2aW9sYXRlZERpcmVjdGl2
ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIiwgIml0cyBNSU1FIHR5cGUiKTsKICAgICAgICAgcmVw
b3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpwbHVnaW5U
eXBlcywgdmlvbGF0ZWREaXJlY3RpdmUsIHVybC5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UsIHNv
dXJjZVVSTCwgc291cmNlUG9zaXRpb24pOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJl
ZGlyZWN0UmVzcG9uCiAgICAgLy8gIklmIHBsdWdpbiBjb250ZW50IGlzIGxvYWRlZCB3aXRob3V0
IGFuIGFzc29jaWF0ZWQgVVJMIChwZXJoYXBzIGFuIG9iamVjdCBlbGVtZW50IGxhY2tzIGEgZGF0
YSBhdHRyaWJ1dGUsIGJ1dCBsb2FkcyBzb21lIGRlZmF1bHQgcGx1Z2luIGJhc2VkCiAgICAgLy8g
b24gdGhlIHNwZWNpZmllZCB0eXBlKSwgaXQgTVVTVCBiZSBibG9ja2VkIGlmIG9iamVjdC1zcmMn
cyB2YWx1ZSBpcyAnbm9uZScsIGJ1dCB3aWxsIG90aGVyd2lzZSBiZSBhbGxvd2VkIi4KICAgICBT
dHJpbmcgc291cmNlVVJMOwotICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihXVEY6Ok9y
ZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKTsKKyAgICBU
ZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwg
T3JkaW5hbE51bWJlcigpKTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZd
IChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZl
KSB7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlv
bGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpvYmplY3RTcmMsIHZp
b2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKICAgICAgICAgcmVwb3J0
VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpvYmplY3RTcmMs
IHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwuc3RyaW5nKCksIGNvbnNvbGVNZXNzYWdlLCBzb3VyY2VV
UkwsIHNvdXJjZVBvc2l0aW9uKTsKQEAgLTYxMCw3ICs2MTAsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVk
aXJlY3RSZQogICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNz
Q29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlp
bmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFN0cmluZyBzb3VyY2VVUkw7Ci0gICAg
VGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmly
c3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpOworICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3Np
dGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVyKCkpOwogICAg
IGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKICAgICAgICAgY29uc3QgY2hh
ciogZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZS5uYW1lKCkg
PT0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lU3JjID8gQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lU3JjIDogQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXM6OmNoaWxkU3JjOwogICAgICAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihlZmZlY3RpdmVWaW9sYXRlZERpcmVj
dGl2ZSwgdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOwpAQCAtNjI0
LDcgKzYyNCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1Jlc291cmNlRnJv
bVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVkaXJlY3RSZXNwCiAgICAgaWYgKExlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnBy
b3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24o
V1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSk7
CisgICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZp
cnN0KCksIE9yZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2
ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERp
cmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2Fn
ZUZvclZpb2xhdGlvbihuYW1lLCB2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBs
b2FkIik7CiAgICAgICAgIHJlcG9ydFZpb2xhdGlvbihuYW1lLCB2aW9sYXRlZERpcmVjdGl2ZSwg
dXJsLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZSwgc291cmNlVVJMLCBzb3VyY2VQb3NpdGlvbik7
CkBAIC02NzcsNyArNjc3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29u
bmVjdFRvU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZWRpcmVjdFJlc3BvbnMKICAgICBpZiAoTGVn
YWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGlj
eSh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBTdHJpbmcgc291cmNlVVJMOwotICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQ
b3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51
bWJlcigpKTsKKyAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oT3JkaW5hbE51bWJlcjo6
YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcigpKTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVk
RGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZp
b2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNv
bGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
Ojpjb25uZWN0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBjb25uZWN0
IHRvIik7CiAgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6Y29ubmVjdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsIHVybC5zdHJpbmcoKSwg
Y29uc29sZU1lc3NhZ2UsIHNvdXJjZVVSTCwgc291cmNlUG9zaXRpb24sIHByZVJlZGlyZWN0VVJM
KTsKQEAgLTY5Nyw3ICs2OTcsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dC
YXNlVVJJKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlYwogICAgIGlmIChM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9s
aWN5KHVybC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIFN0cmluZyBzb3VyY2VVUkw7Ci0gICAgVGV4dFBvc2l0aW9uIHNvdXJj
ZVBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFs
TnVtYmVyKCkpOworICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihPcmRpbmFsTnVtYmVy
OjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVyKCkpOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0
ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYg
dmlvbGF0ZWREaXJlY3RpdmUpIHsKICAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29u
c29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OmJhc2VVUkksIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGNoYW5nZSB0
aGUgZG9jdW1lbnQgYmFzZSBVUkwgdG8iKTsKICAgICAgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpiYXNlVVJJLCB2aW9sYXRlZERpcmVjdGl2
ZSwgdXJsLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZSwgc291cmNlVVJMLCBzb3VyY2VQb3NpdGlv
bik7CkBAIC03MjIsMTMgKzcyMiwxMyBAQCBTdHJpbmcgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpk
ZXByZWNhdGVkVVJMRm9yUmVwb3J0aW5nKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogdm9pZCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIHZpb2xhdGVk
RGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIGVmZmVjdGl2
ZVZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmlu
ZyYgY29uc29sZU1lc3NhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBFeHRyYWN0IHNvdXJjZSBmaWxlIGFuZCBzb3VyY2UgcG9zaXRpb24gZnJv
bSBKU0M6OkV4ZWNTdGF0ZS4KLSAgICByZXR1cm4gcmVwb3J0VmlvbGF0aW9uKHZpb2xhdGVkRGly
ZWN0aXZlLCBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZS5uYW1lRm9yUmVwb3J0aW5nKCkuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUuZGlyZWN0
aXZlTGlzdCgpLCBibG9ja2VkVVJMLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3Np
dGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJl
cjo6YmVmb3JlRmlyc3QoKSksIHN0YXRlKTsKKyAgICByZXR1cm4gcmVwb3J0VmlvbGF0aW9uKHZp
b2xhdGVkRGlyZWN0aXZlLCBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZS5uYW1lRm9yUmVwb3J0
aW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3Rp
dmUuZGlyZWN0aXZlTGlzdCgpLCBibG9ja2VkVVJMLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCks
IFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVy
OjpiZWZvcmVGaXJzdCgpKSwgc3RhdGUpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3Rp
dmUsIGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QmIHZpb2xhdGVkRGlyZWN0aXZlTGlzdCwgY29uc3QgU3RyaW5n
JiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBzdGF0ZSkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogRXh0cmFjdCBzb3VyY2UgZmls
ZSBhbmQgc291cmNlIHBvc2l0aW9uIGZyb20gSlNDOjpFeGVjU3RhdGUuCi0gICAgcmV0dXJuIHJl
cG9ydFZpb2xhdGlvbihlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgdmlvbGF0ZWREaXJlY3Rp
dmUsIHZpb2xhdGVkRGlyZWN0aXZlTGlzdCwgYmxvY2tlZFVSTCwgY29uc29sZU1lc3NhZ2UsIFN0
cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBX
VEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpLCBzdGF0ZSk7CisgICAgcmV0dXJuIHJl
cG9ydFZpb2xhdGlvbihlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgdmlvbGF0ZWREaXJlY3Rp
dmUsIHZpb2xhdGVkRGlyZWN0aXZlTGlzdCwgYmxvY2tlZFVSTCwgY29uc29sZU1lc3NhZ2UsIFN0
cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5h
bE51bWJlcjo6YmVmb3JlRmlyc3QoKSksIHN0YXRlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVk
RGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVk
RGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29s
ZU1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHNv
dXJjZVBvc2l0aW9uLCBjb25zdCBVUkwmIHByZVJlZGlyZWN0VVJMLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBzdGF0ZSkgY29uc3QKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0TWlzc2luZ1JlcG9ydFVSSShjb25zdCBTdHJpbmcmIHBvbGljeSkgY29u
c3QKICAgICBsb2dUb0NvbnNvbGUoIlRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAnIiArIHBv
bGljeSArICInIHdhcyBkZWxpdmVyZWQgaW4gcmVwb3J0LW9ubHkgbW9kZSwgYnV0IGRvZXMgbm90
IHNwZWNpZnkgYSAncmVwb3J0LXVyaSc7IHRoZSBwb2xpY3kgd2lsbCBoYXZlIG5vIGVmZmVjdC4g
UGxlYXNlIGVpdGhlciBhZGQgYSAncmVwb3J0LXVyaScgZGlyZWN0aXZlLCBvciBkZWxpdmVyIHRo
ZSBwb2xpY3kgdmlhIHRoZSAnQ29udGVudC1TZWN1cml0eS1Qb2xpY3knIGhlYWRlci4iKTsKIH0K
IAotdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmxvZ1RvQ29uc29sZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVt
YmVyJiBjb250ZXh0TGluZSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0Q29sdW1u
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSkgY29uc3QKK3ZvaWQgQ29udGVudFNlY3VyaXR5
UG9saWN5Ojpsb2dUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGNvbnRleHRVUkwsIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBPcmRp
bmFsTnVtYmVyJiBjb250ZXh0Q29sdW1uLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSkgY29u
c3QKIHsKICAgICBpZiAobWVzc2FnZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggNjA3
OWMwNWFiYWNhNGY5NGZmNzA2NzAxYTc5ZmQ3ZjBlNTNiZGQzYy4uZDQxMmFkMTVkOGMwYTUyMmQ5
NGM3ZWNlYWUwNmM4YTljNjhhNDY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTk0LDExICs5NCwxMSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBhbGxvd1NjcmlwdFdpdGhOb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBib29sIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dT
dHlsZVdpdGhOb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBib29sIG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OwogCi0gICAgYm9vbCBhbGxvd0phdmFTY3JpcHRV
UkxzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBj
b250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dJbmxpbmVFdmVudEhhbmRs
ZXJzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBj
b250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dJbmxpbmVTY3JpcHQoY29u
c3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRM
aW5lLCBTdHJpbmdWaWV3IHNjcmlwdENvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJp
dHlQb2xpY3kgPSBmYWxzZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0phdmFTY3JpcHRVUkxzKGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IGNvbnN0IFN0cmluZyYgY29kZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9
IGZhbHNlKSBjb25zdDsKKyAgICBib29sIGFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25z
dCBTdHJpbmcmIGNvZGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxz
ZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRl
eHRVUkwsIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBTdHJpbmdWaWV3IHNjcmlw
dENvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29u
c3Q7CiAgICAgYm9vbCBhbGxvd05vblBhcnNlckluc2VydGVkU2NyaXB0cyhjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmdWaWV3JiwgUGFyc2VySW5zZXJ0ZWQpIGNvbnN0Owot
ICAgIGJvb2wgYWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0cmluZ1ZpZXcgc3R5bGVDb250ZW50
LCBDaGVja1Vuc2FmZUhhc2hlcywgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9
IGZhbHNlKSBjb25zdDsKKyAgICBib29sIGFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBj
b250ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgU3RyaW5nVmlldyBz
dHlsZUNvbnRlbnQsIENoZWNrVW5zYWZlSGFzaGVzLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd0V2YWwoSlNDOjpKU0ds
b2JhbE9iamVjdCosIExvZ1RvQ29uc29sZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSA9IGZhbHNlKSBjb25zdDsKIApAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICBT
YW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3M7
IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGxvZ1RvQ29uc29sZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9IFN0cmluZygpLCBjb25zdCBXVEY6Ok9yZGlu
YWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgp
LCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRDb2x1bW4gPSBXVEY6Ok9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6SlNHbG9iYWxPYmplY3QqID0gbnVsbHB0cikgY29u
c3Q7CisgICAgdm9pZCBsb2dUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmcoKSwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4
dExpbmUgPSBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBjb25zdCBPcmRpbmFsTnVtYmVy
JiBjb250ZXh0Q29sdW1uID0gT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogPSBudWxscHRyKSBjb25zdDsKICAgICB2b2lkIGFwcGx5UG9saWN5VG9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAKICAgICAvLyBJbXBsZW1lbnRzIHRoZSBkZXByZWNhdGVk
IENTUDIgInN0cmlwIHVyaSBmb3IgcmVwb3J0aW5nIiBhbGdvcml0aG0gZnJvbSA8aHR0cHM6Ly93
d3cudzMub3JnL1RSL0NTUDIvI3Zpb2xhdGlvbi1yZXBvcnRzPi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4IDBiZWI5NDZkZDg3
MjU4ZTVjZDM1NWFiZGJkN2VhNjliYzIyNDE2OGMuLmUzOGM2ODMxYzZlMzYyYTgzOWVhMGRlZTg1
ZDZlMjUzN2U0NzBlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVGhyZWFkLmNwcApAQCAtNTAsNyArNTAsNyBAQCBTY3JvbGxpbmdUaHJlYWQ6OlNj
cm9sbGluZ1RocmVhZCgpCiB7CiAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKICAgICBt
X3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBTY3JvbGxpbmciLCBbdGhpcywgJnNl
bWFwaG9yZV0gewotICAgICAgICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNlcklu
dGVyYWN0aXZlKCk7CisgICAgICAgIFRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNlckludGVy
YWN0aXZlKCk7CiAgICAgICAgIG1fcnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CiAgICAg
ICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKICAgICAgICAgbV9ydW5Mb29wLT5ydW4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCBiZTZjNDg0
NWJkNzZkNGU3ZjVjNzgxMDFiNzg4ZTRmMzJjMjdhYzI5Li4zMjAxNTdhZmMyMzUyMzIzNDYzMzNi
NzYyMjMxMjk4NDQyMDU3OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIAogICAgIFdF
QkNPUkVfRVhQT1JUIFNjcm9sbGluZ1RyZWVOb2RlKiBub2RlRm9ySUQoU2Nyb2xsaW5nTm9kZUlE
KSBjb25zdDsKIAotICAgIHVzaW5nIFZpc2l0b3JGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9p
ZCAoU2Nyb2xsaW5nTm9kZUlELCBTY3JvbGxpbmdOb2RlVHlwZSwgc3RkOjpvcHRpb25hbDxGbG9h
dFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRW
aWV3cG9ydE9yaWdpbiwgYm9vbCBzY3JvbGxlZFNpbmNlTGFzdENvbW1pdCk+OworICAgIHVzaW5n
IFZpc2l0b3JGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQoU2Nyb2xsaW5nTm9kZUlELCBTY3JvbGxp
bmdOb2RlVHlwZSwgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgc3Rk
OjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgYm9vbCBzY3JvbGxl
ZFNpbmNlTGFzdENvbW1pdCk+OwogICAgIHZvaWQgdHJhdmVyc2VTY3JvbGxpbmdUcmVlKFZpc2l0
b3JGdW5jdGlvbiYmKTsKIAogICAgIC8vIENhbGxlZCBhZnRlciBhIHNjcm9sbGluZyB0cmVlIG5v
ZGUgaGFzIGhhbmRsZWQgYSBzY3JvbGwgYW5kIHVwZGF0ZWQgaXRzIGxheWVycy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5p
Y29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlTmljb3NpYS5jcHAKaW5kZXggMmQxNGU3OTk2NzE0OTNiOTk5YjA3ZjNjMTBkZmMzMmMw
ZGJiY2ZiMi4uYWI0YjY3Y2EyYWYzNmI3MTA1ZTNjYzExYjNiZDMyZDVmOGIwZTA3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
Tmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBSZWZQdHI8U2Nyb2xs
aW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVOaWNvc2lhOjpzY3JvbGxpbmdOb2RlRm9yUG9pbnQo
RmxvYXRQb2ludAogICAgIGNvbGxlY3REZXNjZW5kYW50TGF5ZXJzQXRQb2ludChsYXllcnNBdFBv
aW50LCByb290Q29udGVudHNMYXllciwgcG9pbnQpOwogCiAgICAgU2Nyb2xsaW5nVHJlZU5vZGUq
IHJldHVybk5vZGUgPSBudWxscHRyOwotICAgIGZvciAoYXV0byBsYXllciA6IFdURjo6bWFrZVJl
dmVyc2VkUmFuZ2UobGF5ZXJzQXRQb2ludCkpIHsKKyAgICBmb3IgKGF1dG8gbGF5ZXIgOiBtYWtl
UmV2ZXJzZWRSYW5nZShsYXllcnNBdFBvaW50KSkgewogICAgICAgICBsYXllci0+YWNjZXNzQ29t
bWl0dGVkKFsmXShjb25zdCBDb21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkgewog
ICAgICAgICAgICAgYXV0byogc2Nyb2xsaW5nTm9kZSA9IG5vZGVGb3JJRChzdGF0ZS5zY3JvbGxp
bmdOb2RlSUQpOwogICAgICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
PihzY3JvbGxpbmdOb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKaW5kZXggYjNhYWJjNTBlMGRiZTBjMWYxYmU2
OWQ4MzIxNDI3Y2QzNzEzZTM3Yy4uNTM1MzYzNzJhYTUxOTBiZmQ5YjYyYTIxMDc0MzRlYzE2ODg4
N2U4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6Y3JlYXRlVGltZXIoRnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uKQogewotICAgIHJldHVybiBXVEY6Om1ha2VVbmlxdWU8U2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCBbZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKSwgcHJvdGVjdGVkTm9kZSA9IFJlZiB7IHNjcm9sbGluZ05vZGUoKSB9
XSB7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1l
cj4oUnVuTG9vcDo6Y3VycmVudCgpLCBbZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgcHJv
dGVjdGVkTm9kZSA9IFJlZiB7IHNjcm9sbGluZ05vZGUoKSB9XSB7CiAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBwcm90ZWN0ZWROb2RlLT5zY3JvbGxpbmdUcmVlKCkudHJlZUxvY2soKSB9OwogICAg
ICAgICBmdW5jdGlvbigpOwogICAgIH0pOwpAQCAtMTAzLDEwICsxMDMsMTAgQEAgc3RkOjp1bmlx
dWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWcKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OnN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIm
KQogewogICAgIGlmICghbV9hbmltYXRpb25UaW1lcikgewotICAgICAgICBtX2FuaW1hdGlvblRp
bWVyID0gV1RGOjptYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhPj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFuaW1hdGlvblRpbWVyRmlyZWQp
OworICAgICAgICBtX2FuaW1hdGlvblRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYT4+KFJ1bkxvb3A6OmN1cnJl
bnQoKSwgdGhpcywgJlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjph
bmltYXRpb25UaW1lckZpcmVkKTsKIAogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgICAg
IG1fYW5pbWF0aW9uVGltZXItPnNldFByaW9yaXR5KFdURjo6UnVuTG9vcFNvdXJjZVByaW9yaXR5
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7CisgICAgICAgIG1fYW5pbWF0aW9uVGltZXIt
PnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25pdG9y
VGltZXIpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0
YWJsZVRhc2tRdWV1ZS5oCmluZGV4IDVkZGM4MTZkNDM2YTI2NTllYjZkODM4MWJlNDY4NDk2MzZh
YzA1MTAuLmY5ZmM3MGI5YjJlMjNlOTBlOGEyODVkMTI0NmYxZWMwMDgxODAzYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCkBAIC0xMTksNyArMTE5
LDcgQEAgcHVibGljOgogCiAgICAgLy8gRW5xdWV1ZSBhIHRhc2sgdG8gYmUgcnVuIG9uIHRoZSBt
YWluIHRocmVhZC4gVGhlIHRhc2sgbWF5IGJlIGNhbmNlbGxlZCBpZiBhbiBhYm9ydCBzdGFydHMg
YmVmb3JlIGl0J3MKICAgICAvLyBoYW5kbGVkLgotICAgIHZvaWQgZW5xdWV1ZVRhc2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgbWFpblRocmVhZFRhc2tIYW5kbGVyKQorICAgIHZvaWQgZW5xdWV1
ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIG1haW5UaHJlYWRUYXNrSGFuZGxlcikKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVi
bGljOgogICAgIC8vIEl0IGlzIGFsbG93ZWQgZm9yIHRoZSBtYWluIHRocmVhZCB0YXNrIGhhbmRs
ZXIgdG8gYWJvcnQgdGhlIEFib3J0YWJsZVRhc2tRdWV1ZS4gSW4gdGhhdCBjYXNlLCB0aGUgcmV0
dXJuCiAgICAgLy8gdmFsdWUgaXMgZGlzY2FyZGVkIGFuZCB0aGUgY2FsbGVyIHJlY2VpdmVzIGFu
IGVtcHR5IG9wdGlvbmFsLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFI+Ci0gICAgc3RkOjpvcHRp
b25hbDxSPiBlbnF1ZXVlVGFza0FuZFdhaXQoV1RGOjpGdW5jdGlvbjxSKCk+JiYgbWFpblRocmVh
ZFRhc2tIYW5kbGVyKQorICAgIHN0ZDo6b3B0aW9uYWw8Uj4gZW5xdWV1ZVRhc2tBbmRXYWl0KEZ1
bmN0aW9uPFIoKT4mJiBtYWluVGhyZWFkVGFza0hhbmRsZXIpCiAgICAgewogICAgICAgICAvLyBE
b24ndCBkZWFkbG9jayB0aGUgbWFpbiB0aHJlYWQgd2l0aCBpdHNlbGYuCiAgICAgICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRChUYXNrKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8VGFzaz4gY3JlYXRl
KEFib3J0YWJsZVRhc2tRdWV1ZSogdGFza1F1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0
YXNrQ2FsbGJhY2spCisgICAgICAgIHN0YXRpYyBSZWY8VGFzaz4gY3JlYXRlKEFib3J0YWJsZVRh
c2tRdWV1ZSogdGFza1F1ZXVlLCBGdW5jdGlvbjx2b2lkKCk+JiYgdGFza0NhbGxiYWNrKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUYXNrKHRhc2tRdWV1ZSwg
V1RGTW92ZSh0YXNrQ2FsbGJhY2spKSk7CiAgICAgICAgIH0KQEAgLTIwOCwxNCArMjA4LDE0IEBA
IHByaXZhdGU6CiAKICAgICBwcml2YXRlOgogICAgICAgICBBYm9ydGFibGVUYXNrUXVldWUqIG1f
dGFza1F1ZXVlOwotICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV90YXNrQ2FsbGJhY2s7
CisgICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV90YXNrQ2FsbGJhY2s7CiAKLSAgICAgICAgVGFz
ayhBYm9ydGFibGVUYXNrUXVldWUqIHRhc2tRdWV1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
dGFza0NhbGxiYWNrKQorICAgICAgICBUYXNrKEFib3J0YWJsZVRhc2tRdWV1ZSogdGFza1F1ZXVl
LCBGdW5jdGlvbjx2b2lkKCk+JiYgdGFza0NhbGxiYWNrKQogICAgICAgICAgICAgOiBtX3Rhc2tR
dWV1ZSh0YXNrUXVldWUpLCBtX3Rhc2tDYWxsYmFjayhXVEZNb3ZlKHRhc2tDYWxsYmFjaykpCiAg
ICAgICAgIHsgfQogICAgIH07CiAKLSAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGNhbGxiYWNrKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spCisgICAgdm9pZCBwb3N0
VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spIFdURl9SRVFVSVJFU19MT0NLKG1fbG9j
aykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwogICAgICAgICBSZWY8
VGFzaz4gdGFzayA9IFRhc2s6OmNyZWF0ZSh0aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0y
MzUsNyArMjM1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWJvcnRpbmcgV1RGX0dVQVJERURf
QllfTE9DSyhtX2xvY2spIHsgZmFsc2UgfTsKICAgICBMb2NrIG1fbG9jazsKICAgICBDb25kaXRp
b24gbV9hYm9ydGVkT3JSZXNwb25zZVNldDsKLSAgICBXVEY6OkRlcXVlPFJlZjxUYXNrPj4gbV9j
aGFubmVsIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBEZXF1ZTxSZWY8VGFzaz4+
IG1fY2hhbm5lbCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25p
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKaW5kZXggNDM4ZTcy
NTE3NzJiZThlNWE0NzgxMDViNTIwY2JjNWRlZmZiNWE5My4uNTIyYzY4MTgwMWNiOGY5M2FhOGVl
ZTY3MjlmZTc2NTljMjc0MzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q1BVTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDUFVNb25pdG9yIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBFeGNlZWRl
ZENQVUxpbWl0SGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChkb3VibGUpPjsKKyAgICB1c2lu
ZyBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoZG91YmxlKT47CiAgICAg
V0VCQ09SRV9FWFBPUlQgQ1BVTW9uaXRvcihTZWNvbmRzIGNoZWNrSW50ZXJ2YWwsIEV4Y2VlZGVk
Q1BVTGltaXRIYW5kbGVyJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDUFVMaW1p
dChjb25zdCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVNb25pdG9yLmNwcAppbmRleCBmMmFmMGEyMDIzZGQ4M2Y0ODgzOWNmZTEwODM2NDJiMTNkNTI3
MWI2Li5lMzEzYmE1MzAxNjczNThkMjMzNGFiYjViNmY5NThhZGMxMDUwYThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShHTElCKQogCi1GaWxl
TW9uaXRvcjo6RmlsZU1vbml0b3IoY29uc3QgU3RyaW5nJiwgUmVmPFdvcmtRdWV1ZT4mJiwgV1RG
OjpGdW5jdGlvbjx2b2lkKEZpbGVDaGFuZ2VUeXBlKT4mJikKK0ZpbGVNb25pdG9yOjpGaWxlTW9u
aXRvcihjb25zdCBTdHJpbmcmLCBSZWY8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lkKEZpbGVD
aGFuZ2VUeXBlKT4mJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgK
aW5kZXggMzY2NDdlYmZjZTJmZWQzN2U4YmQ3MWJjOWQ0YTQ0ZWU2ZTQyZDAyMS4uNmYyY2U2YzRk
YjdmODNhZDdkNmNlNjI3ZDY1YjBmMjZiOTVhMDEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlTW9uaXRvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEZpbGVNb25pdG9yIHsKIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIEZpbGVDaGFuZ2VUeXBlIHsgTW9kaWZpY2F0aW9uLCBSZW1vdmFs
IH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBGaWxlTW9uaXRvcihjb25zdCBTdHJpbmcmLCBSZWY8
V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVDaGFuZ2VU
eXBlKT4mJiBtb2RpZmljYXRpb25IYW5kbGVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGaWxlTW9u
aXRvcihjb25zdCBTdHJpbmcmLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgRnVuY3Rp
b248dm9pZChGaWxlQ2hhbmdlVHlwZSk+JiYgbW9kaWZpY2F0aW9uSGFuZGxlcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgfkZpbGVNb25pdG9yKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb3dQb3dlck1vZGVOb3RpZmllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90aWZpZXIuaAppbmRleCA2M2I2YzRhZmZlYzZlZDA4
NTE4ZWMzMmYzNGQxNDk1Yzk2NWMxN2MyLi4wYTEzNjg2MTZiMTcyZTVjNzFjZDc0NzU3ZjNiYzA3
ZmVkOGVjODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb3dQb3dlck1v
ZGVOb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5v
dGlmaWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTG93
UG93ZXJNb2RlTm90aWZpZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHVzaW5nIExvd1Bvd2VyTW9kZUNoYW5nZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKT47CisgICAgdXNpbmcgTG93UG93ZXJNb2Rl
Q2hhbmdlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVk
KT47CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgTG93UG93ZXJNb2RlTm90aWZpZXIoTG93
UG93ZXJNb2RlQ2hhbmdlQ2FsbGJhY2smJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkxvd1Bvd2Vy
TW9kZU5vdGlmaWVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01h
aW5UaHJlYWRTaGFyZWRUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhy
ZWFkU2hhcmVkVGltZXIuY3BwCmluZGV4IDQyNTFjODdlODFmNzEwNjcyYTdiM2ZiYmE3YTg3OWM5
MGVlMjYwYzIuLmNiNjJkMTFhZmFiNjBhOWIxMzExOTIzNzYyNWU2OWNiYjNhMDczZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcApA
QCAtNzEsNyArNzEsNyBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgp
CiB9CiAjZW5kaWYKIAotdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVkRnVuY3Rp
b24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZmlyZWRGdW5jdGlvbikKK3ZvaWQgTWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKEZ1bmN0aW9uPHZvaWQoKT4mJiBmaXJlZEZ1
bmN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2ZpcmVkRnVuY3Rpb24gfHwgIWZpcmVk
RnVuY3Rpb24pOwogICAgIG1fZmlyZWRGdW5jdGlvbiA9IFdURk1vdmUoZmlyZWRGdW5jdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGlt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCmlu
ZGV4IDU3Y2I0MzU1NmRmZWQ5OGE4MzAyZDc5ZjVlNGVhZDFmODUzYTZhNDkuLjFhMWJjNjM2M2Uw
MmY1NjJhNzYxNWZmYjY4NDY5MTliMTFiMzk1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCkBAIC0zNiwxMSArMzYsMTEgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWFpblRocmVhZFNoYXJlZFRpbWVyIGZpbmFsIDogcHVi
bGljIFNoYXJlZFRpbWVyIHsKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxN
YWluVGhyZWFkU2hhcmVkVGltZXI+OworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxN
YWluVGhyZWFkU2hhcmVkVGltZXI+OwogcHVibGljOgogICAgIHN0YXRpYyBNYWluVGhyZWFkU2hh
cmVkVGltZXImIHNpbmdsZXRvbigpOwogCi0gICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24o
RnVuY3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChT
ZWNvbmRzKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKICAgICB2b2lkIGlu
dmFsaWRhdGUoKSBvdmVycmlkZTsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBNYWluVGhyZWFkU2hhcmVkVGltZXIoKTsKIAotICAgIFdURjo6RnVuY3Rpb248dm9pZCgp
PiBtX2ZpcmVkRnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2ZpcmVkRnVuY3Rpb247
CiAjaWYgIVVTRShDRikgJiYgIU9TKFdJTkRPV1MpCiAgICAgUnVuTG9vcDo6VGltZXI8TWFpblRo
cmVhZFNoYXJlZFRpbWVyPiBtX3RpbWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9E
SW50ZXJ2YWwuaAppbmRleCAzYTlmZTY2ODBjZDRmM2E3MTAwNTQ5NTk0Nzc0YjE2ZDY2ZjQ4NDZj
Li5iODg4NjMxMjNhNGZmZDljYTZmZmYzMzRhYzZlNjdlODk1ZjNjZjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BPREludGVydmFsLmgKQEAgLTEzMCwxMCArMTMwLDEwIEBAIHByaXZhdGU6CiAg
ICAgdXNpbmcgQmFzZSA9IFBPREludGVydmFsQmFzZTxULCBVc2VyRGF0YT47CiB9OwogCi10ZW1w
bGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBjbGFzcyBQT0RJbnRlcnZhbDxULCBXVEY6OldlYWtQdHI8
VT4+IDogcHVibGljIFBPREludGVydmFsQmFzZTxULCBXVEY6OldlYWtQdHI8VT4+IHsKK3RlbXBs
YXRlPGNsYXNzIFQsIGNsYXNzIFU+IGNsYXNzIFBPREludGVydmFsPFQsIFdlYWtQdHI8VT4+IDog
cHVibGljIFBPREludGVydmFsQmFzZTxULCBXZWFrUHRyPFU+PiB7CiBwdWJsaWM6Ci0gICAgUE9E
SW50ZXJ2YWwoY29uc3QgVCYgbG93LCBjb25zdCBUJiBoaWdoLCBXVEY6OldlYWtQdHI8VT4mJiBk
YXRhKQotICAgICAgICA6IFBPREludGVydmFsQmFzZTxULCBXVEY6OldlYWtQdHI8VT4+KGxvdywg
aGlnaCwgV1RGTW92ZShkYXRhKSkKKyAgICBQT0RJbnRlcnZhbChjb25zdCBUJiBsb3csIGNvbnN0
IFQmIGhpZ2gsIFdlYWtQdHI8VT4mJiBkYXRhKQorICAgICAgICA6IFBPREludGVydmFsQmFzZTxU
LCBXZWFrUHRyPFU+Pihsb3csIGhpZ2gsIFdURk1vdmUoZGF0YSkpCiAgICAgewogICAgIH0KIApA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcg
QmFzZSA9IFBPREludGVydmFsQmFzZTxULCBXVEY6OldlYWtQdHI8VT4+OworICAgIHVzaW5nIEJh
c2UgPSBQT0RJbnRlcnZhbEJhc2U8VCwgV2Vha1B0cjxVPj47CiB9OwogCiAjaWZuZGVmIE5ERUJV
RwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3Rl
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaApp
bmRleCAwZjdiMzJlYWFjYTA2M2QzMTQyMTA1MWEzMzc1ZGVmNmRjN2Y4ZDc0Li4yMjY3Y2U0YjIx
YzE3NmIwNTZlNzY5NmQ5ODdkOGQ2OTJiYzRlZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1v
dGVDb250cm9sQ29tbWFuZFR5cGUpOwogICAgIHZvaWQgcmVtb3ZlU3VwcG9ydGVkQ29tbWFuZChQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKTsKIAotICAgIHVz
aW5nIFJlbW90ZUNvbW1hbmRzU2V0ID0gSGFzaFNldDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlLCBXVEY6OkludEhhc2g8UGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4+OworICAgIHVzaW5n
IFJlbW90ZUNvbW1hbmRzU2V0ID0gSGFzaFNldDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlLCBJbnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b250cm9sQ29tbWFuZFR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+PjsKICAgICB2b2lkIHNldFN1cHBv
cnRlZENvbW1hbmRzKGNvbnN0IFJlbW90ZUNvbW1hbmRzU2V0Jik7CiAgICAgY29uc3QgUmVtb3Rl
Q29tbWFuZHNTZXQmIHN1cHBvcnRlZENvbW1hbmRzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcAppbmRleCA1NDQ5
YmFkMWI2MDExZGU3OGQ1ODcwY2Y2YWFmZjk0YWZlYjQ1NGRjLi4wODkzZjdlNzVhZWE2YmUyNGQz
OTllODZmY2E4MmI3MTY4ZDVlNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwCkBAIC0zNyw3ICszNyw3IEBAIFNjcm9sbEFu
aW1hdGlvbk1vbWVudHVtOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bShTY3JvbGxBbmltYXRpb25D
bGllbnQmIGNsaWVudCkKIAogU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06On5TY3JvbGxBbmltYXRp
b25Nb21lbnR1bSgpID0gZGVmYXVsdDsKIAotYm9vbCBTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6
c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYg
aW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBXVEY6OkZ1bmN0aW9uPEZsb2F0UG9pbnQoY29u
c3QgRmxvYXRQb2ludCYpPiYgZGVzdGluYXRpb25Nb2RpZmllcikKK2Jvb2wgU2Nyb2xsQW5pbWF0
aW9uTW9tZW50dW06OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRnVuY3Rpb248RmxvYXRQ
b2ludChjb25zdCBGbG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1vZGlmaWVyKQogewogICAgIGF1
dG8gZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRoaXMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21l
bnR1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0u
aAppbmRleCA1YzliZTkxMzQxZDY3MjRlYzUwNjk3NGIyNzNlZjE3OWNmOTcyOTc5Li42MTgwNTRi
YjRhMDk1OGM3ZGI5ZDRkMzE2NzA0ODA0MmNhYTg1ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKQEAgLTM1LDcgKzM1LDcgQEAg
cHVibGljOgogICAgIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtKFNjcm9sbEFuaW1hdGlvbkNsaWVu
dCYpOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbk1vbWVudHVtKCk7CiAKLSAgICBib29s
IHN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQm
IGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgV1RGOjpGdW5jdGlvbjxGbG9hdFBvaW50KGNv
bnN0IEZsb2F0UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIpOworICAgIGJvb2wgc3RhcnRB
bmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlh
bE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGdW5jdGlvbjxGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9p
bnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIpOwogICAgIGJvb2wgcmV0YXJnZXRBY3RpdmVBbmlt
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRpb24pIGZpbmFsOwogICAgIHZvaWQg
c3RvcCgpIGZpbmFsOwogICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBj
YzBkZWY5ZGUyZmE1MDNlOGY4MDUyOWU1MjM3N2NhMTEzMTZlMjkwLi5hYjE4YjgyNzlhZmY4ZWU4
OWE4OWMyMGU1YTAzODg1ZTUzNGQzY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwCkBAIC0zNzUsNyArMzc1LDcgQEAgZmxvYXQgU2Nyb2xsQW5pbWF0b3I6
OnBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlclRpbWVyPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlVGltZXIoRnVuY3Rpb248
dm9pZCgpPiYmIGZ1bmN0aW9uKQogewotICAgIHJldHVybiBXVEY6Om1ha2VVbmlxdWU8U2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCBbZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKSwgd2Vha1Njcm9sbGFibGVBcmVhID0gV2Vha1B0ciB7IG1fc2Ny
b2xsYWJsZUFyZWEgfV0geworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgW2Z1bmN0aW9uID0gV1RGTW92ZShm
dW5jdGlvbiksIHdlYWtTY3JvbGxhYmxlQXJlYSA9IFdlYWtQdHIgeyBtX3Njcm9sbGFibGVBcmVh
IH1dIHsKICAgICAgICAgaWYgKCF3ZWFrU2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGZ1bmN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCA5ZGRmZjgwODk5Zjg2YjFhODkx
YmU5YWJmNzRlNzZiNGU0MWVhMjA2Li5lNzlmYjgwYTU2YmZiYzVkMGQ0OTIyZDIwYjUzZmQ0NTlk
ODIzYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHN0b3BLZXlib2FyZFNjcm9sbGluZygpOwogCi0gICAgYm9vbCBzdGFydE1vbWVudHVtU2Nyb2xs
V2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVs
dGEsIGNvbnN0IFdURjo6RnVuY3Rpb248RmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50Jik+JiBk
ZXN0aW5hdGlvbk1vZGlmaWVyKTsKKyAgICBib29sIHN0YXJ0TW9tZW50dW1TY3JvbGxXaXRoSW5p
dGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29u
c3QgRnVuY3Rpb248RmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1v
ZGlmaWVyKTsKIAogICAgIHZvaWQgd2lsbEJlZ2luS2V5Ym9hcmRTY3JvbGxpbmcoKTsKICAgICB2
b2lkIGRpZFN0b3BLZXlib2FyZFNjcm9sbGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAppbmRleCBkN2FiMzE2ZTNlMjM4YzhkYTZkYWRkZWFkZjczNWYxNzFlM2I4OTk4
Li41NTVhZDBmZjgxMjlmOTA4ZTBmYzZiMzEyMzkwNWZmNzU4OTY5Y2ExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KGRhdGEpKSk7IH0KIAogICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgV1RG
OjpGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgV1RGOjpGdW5j
dGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3Qq
KCk+IGRhdGE7CisgICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKICAgICAgICAg
fTsKIAogICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBw
cm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3Zp
ZGVyKSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAppbmRleCAzM2Q4Njkz
MTE0ODRiZGFhOGU4ZWE4YWY2NWJhMmI0ZGI3ODNiZTFjLi43Mjk0NTI0ZGI3NDA3NDI5MTcyNjEz
MmQ1MjIxZTFmZWIyNDY3ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgK
QEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgU2hhcmVkVGltZXIgewogcHVibGljOgogICAgIFNoYXJl
ZFRpbWVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgflNoYXJlZFRpbWVyKCkgPSBkZWZhdWx0
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEZpcmVkRnVuY3Rpb24oRnVuY3Rpb248dm9p
ZCgpPiYmKSA9IDA7CiAKICAgICAvLyBUaGUgZmlyZSBpbnRlcnZhbCBpcyBpbiBzZWNvbmRzIHJl
bGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0aW1lLgogICAgIHZpcnR1YWwg
dm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgK
aW5kZXggYTRiYTZiMDdhM2I3MzAyNGEzNzQ1MDk4ODU5N2I3YjQ4ODg3ZTNhNy4uNTliYWNhZDdk
YWVjNWMzYmVkNWE4NjZhNmVkOGQyY2I2ODkwMWEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5o
CkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFRpbWVyIDogcHVibGljIFRpbWVy
QmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHZvaWQgc2NoZWR1bGUoU2Vjb25kcyBkZWxheSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb24pCisgICAgc3RhdGljIHZvaWQgc2NoZWR1bGUoU2Vjb25kcyBkZWxheSwgRnVuY3Rpb248
dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgYXV0byogdGltZXIgPSBuZXcgVGlt
ZXIoW10geyB9KTsKICAgICAgICAgdGltZXItPm1fZnVuY3Rpb24gPSBbdGltZXIsIGZ1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbildIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIFRpbWVyKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikK
KyAgICBUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIDogbV9mdW5j
dGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICB7CiAgICAgfQpAQCAtMTM1LDcgKzEzNSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIG1fZnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgV1RGOjpG
dW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5j
dGlvbjsKIH07CiAKIGlubGluZSBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdApAQCAt
MTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgRGVmZXJyYWJsZU9u
ZVNob3RUaW1lcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbiwgU2Vjb25kcyBkZWxh
eSkKKyAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlv
biwgU2Vjb25kcyBkZWxheSkKICAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24p
KQogICAgICAgICAsIG1fZGVsYXkoZGVsYXkpCiAgICAgICAgICwgbV9zaG91bGRSZXN0YXJ0V2hl
blRpbWVyRmlyZXMoZmFsc2UpCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
bV9mdW5jdGlvbigpOwogICAgIH0KIAotICAgIFdURjo6RnVuY3Rpb248dm9pZCAoKT4gbV9mdW5j
dGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CiAKICAgICBTZWNvbmRzIG1f
ZGVsYXk7CiAgICAgYm9vbCBtX3Nob3VsZFJlc3RhcnRXaGVuVGltZXJGaXJlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oCmluZGV4IDg0NDY4MWU2OGU2YTA4
MjAyZDIxMzFlNmVhMzIyYTM1YzNkNjI3NjAuLjI2MWI3YmI0ZWM1ZWE0OGY2NmUwMWYzZTE1NzRi
ZmMzYWQwNzNlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dlYkdMU3Rh
dGVUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNr
ZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJHTFN0
YXRlVHJhY2tlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
dXNpbmcgU3RhdGVDaGFuZ2VIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgaXNVc2lu
Z1dlYkdMKT47CisgICAgdXNpbmcgU3RhdGVDaGFuZ2VIYW5kbGVyID0gRnVuY3Rpb248dm9pZChi
b29sIGlzVXNpbmdXZWJHTCk+OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFdlYkdMU3Rh
dGVUcmFja2VyKFN0YXRlQ2hhbmdlSGFuZGxlciYmKTsKIAogICAgIGVudW0gV2ViR0xDb250ZXh0
Q291bnRlclR5cGUgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nl
c3Npb24uaAppbmRleCAxMzlkMGQ5YTI0NmUwYTgyOTZjYmJlMGE3M2MyZThkNzc0ZWRlMzY5Li4x
NjM3NDA2ZmQxM2RhMzY4ODAwNzAwYjhkYjc3OTE1ZTExOGM4OTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNTIsNyArNTIsNyBAQCBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBBdWRpb1Nlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvU2Vzc2lvbik7CiAgICAgZnJpZW5k
IGNsYXNzIFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+OwotICAgIGZyaWVuZCBVbmlxdWVSZWY8QXVk
aW9TZXNzaW9uPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEF1ZGlv
U2Vzc2lvbj4oKTsKKyAgICBmcmllbmQgVW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbj4gbWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8QXVkaW9TZXNzaW9uPigpOwogcHVibGljOgogICAg
IHN0YXRpYyBVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgdm9p
ZCBzZXRTaGFyZWRTZXNzaW9uKFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURh
dGFTb3VyY2UuaAppbmRleCBhZWEyMTY0NjU1NTlkOGNlZTU2MDE5MTFmZmU0NGFmODYwMjI3N2Jh
Li40NGE2Njk0N2RlNTFkZjY3NjUxMjFmMDkyNjE2YThkOGJjNTcwOTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURh
dGFTb3VyY2UuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9TYW1wbGVEYXRhU291cmNlLAogI2Vu
ZGlmCiAgICAgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNl
PiBjcmVhdGUoc2l6ZV90LCBXVEY6OkxvZ2dlckhlbHBlciYsIHNpemVfdCB3YWl0VG9TdGFydEZv
clB1c2hDb3VudCA9IDIpOworICAgIHN0YXRpYyBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBj
cmVhdGUoc2l6ZV90LCBMb2dnZXJIZWxwZXImLCBzaXplX3Qgd2FpdFRvU3RhcnRGb3JQdXNoQ291
bnQgPSAyKTsKIAogICAgIH5BdWRpb1NhbXBsZURhdGFTb3VyY2UoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlz
dC5jcHAKaW5kZXggMzBkZWIyZTRjNzQxZGY1NDg4YjM4ZjVlZDU5ZWViZTVhMDI4OWJlYy4uZTgx
OTcwNzUwMzNhMjIxZWMzZmY0ODNjYjI2NDc5MjIxNzAxNjIxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3Qu
Y3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBXZWJBdWRpb0J1ZmZlckxpc3Q6OnJlc2V0KCkK
ICAgICBtZW1jcHkobV9saXN0LmdldCgpLCBtX2Nhbm9uaWNhbExpc3QuZ2V0KCksIG1fbGlzdEJ1
ZmZlclNpemUpOwogfQogCi1XVEY6Okl0ZXJhdG9yUmFuZ2U8QXVkaW9CdWZmZXIqPiBXZWJBdWRp
b0J1ZmZlckxpc3Q6OmJ1ZmZlcnMoKSBjb25zdAorSXRlcmF0b3JSYW5nZTxBdWRpb0J1ZmZlcio+
IFdlYkF1ZGlvQnVmZmVyTGlzdDo6YnVmZmVycygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6
bWFrZUl0ZXJhdG9yUmFuZ2UoJm1fbGlzdC0+bUJ1ZmZlcnNbMF0sICZtX2xpc3QtPm1CdWZmZXJz
W21fbGlzdC0+bU51bWJlckJ1ZmZlcnNdKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKaW5kZXggMDcxZWJi
YzhlOTcwNDVkYWQwMGE5ZTczZjVkMzU5NDY5MjkzMjc5YS4uZDI0NDgxNTUzM2JhOTBkZTkyNWNh
MmZiZTNlZDM1MDBhYTg0ZWRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIHVpbnQzMl90IGJ1ZmZlckNvdW50KCkgY29uc3Q7CiAgICAgdWludDMyX3Qg
Y2hhbm5lbENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsQ291bnQ7IH0KICAgICBBdWRp
b0J1ZmZlciogYnVmZmVyKHVpbnQzMl90IGluZGV4KSBjb25zdDsKLSAgICBXVEY6Okl0ZXJhdG9y
UmFuZ2U8QXVkaW9CdWZmZXIqPiBidWZmZXJzKCkgY29uc3Q7CisgICAgSXRlcmF0b3JSYW5nZTxB
dWRpb0J1ZmZlcio+IGJ1ZmZlcnMoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkRGVzY3JpcHRpb24oY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiwgdWludDMyX3Qgc2FtcGxlQ291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5jcHAKaW5kZXggNWZkYTRhZjVmMzUzZjg5MjM4ZGVmZmIwMGY3NDhlYWEyN2Fm
YzAzMC4uMjQ4ZjBjMDRlOWFiNzM3M2NiMjhlNjdjMzhlNDllY2VkZWU2NTM2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGdi
b29sZWFuIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2Fn
ZSogbWVzc2FnZSkKICAgICAgICAgICAgIEdTVF9JTkZPX09CSkVDVChtX3BpcGVsaW5lLmdldCgp
LCAiU3RhdGUgY2hhbmdlZCAob2xkOiAlcywgbmV3OiAlcywgcGVuZGluZzogJXMpIiwKICAgICAg
ICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShvbGRTdGF0ZSksIGdzdF9lbGVt
ZW50X3N0YXRlX2dldF9uYW1lKG5ld1N0YXRlKSwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUo
cGVuZGluZykpOwogCi0gICAgICAgICAgICBXVEY6OlN0cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VT
dHJpbmcoR1NUX09CSkVDVF9OQU1FKG1fcGlwZWxpbmUuZ2V0KCkpLCAnXycsCisgICAgICAgICAg
ICBTdHJpbmcgZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShtX3BpcGVs
aW5lLmdldCgpKSwgJ18nLAogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9u
YW1lKG9sZFN0YXRlKSwgJ18nLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShuZXdTdGF0ZSkp
OwogCiAgICAgICAgICAgICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJ
Tl9DQVNUKG1fcGlwZWxpbmUuZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsIGRvdEZp
bGVOYW1lLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcAppbmRleCBlYmIxZWUzM2Y5M2UwM2YyMTk4NTFiY2VmOWViODdjY2U0ZjdmYjIyLi5iZWFk
MjAyZmYzMmViNjMzOTUwMTA0MGM4ZDJkOTkyNDg4ZmUxNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9G
aWxlUmVhZGVyR1N0cmVhbWVyLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgQXVkaW9GaWxl
UmVhZGVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICAg
ICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLAogICAgICAgICAgICAgICAg
IGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKIAotICAgICAgICAgICAgV1RG
OjpTdHJpbmcgZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShtX3BpcGVs
aW5lLmdldCgpKSwgJ18nLAorICAgICAgICAgICAgU3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0
cmluZyhHU1RfT0JKRUNUX05BTUUobV9waXBlbGluZS5nZXQoKSksICdfJywKICAgICAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShvbGRTdGF0ZSksICdfJywKICAgICAgICAg
ICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShuZXdTdGF0ZSkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLmgKaW5k
ZXggYWI1YjBjNDZiN2NmMWY5YTJlNTlmZTE4ZDNmNWRhOGYyNDJkZTQ4ZS4uYzA1NDk0ODA0YTFi
NzUwNTQ3YzNkYTNhYmFjMGViZDVhMTI4NmVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MuaApAQCAtNjAsNyArNjAsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgaGFuZGxl
TXV0ZWRTdGF0ZUNoYW5nZSgpIGZpbmFsOwogCi0gICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3dv
cmtRdWV1ZTsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBSZXRhaW5QdHI8
V2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXI+IG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxw
ZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmgKaW5kZXggMDcyMGNlNDcyZWIwODdlYmVm
ZTNlMTY4Y2NlZmU2MjhmOTcwZWU4Yy4uNjdkMDc0MGNhZDY4NDgwYzRhYjMzODdmZTBkNjljYWNk
ZjYyM2IzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYyA6IHB1Ymxp
YyBBdWRpb0hhcmR3YXJlTGlzdGVuZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdWRpb0hhcmR3
YXJlTGlzdGVuZXJNYWM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV1RGOjpSZWY8QXVkaW9IYXJk
d2FyZUxpc3RlbmVyTWFjPiBjcmVhdGUoQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxBdWRpb0hh
cmR3YXJlTGlzdGVuZXJNYWM+IGNyZWF0ZShDbGllbnQmKTsKIAogcHJpdmF0ZToKICAgICBBdWRp
b0hhcmR3YXJlTGlzdGVuZXJNYWMoQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oCmluZGV4
IDc5MzkzZWIwNGQyMjljMDg0YzhjZGEyNjRiOGU0NjlmZjMzNDVlZTQuLjliY2Q0MDZjYmVmMjY1
M2EwNjM5MjMzMGE1MWZmYzNiMzJlNjVmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9TaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oCkBAIC00
NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBVbmlxdWVS
ZWY8VG9rZW4+IGNyZWF0ZSgpOwogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBVbmlxdWVS
ZWY8VG9rZW4+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VG9rZW4+
KCk7CisgICAgICAgIGZyaWVuZCBVbmlxdWVSZWY8VG9rZW4+IG1ha2VVbmlxdWVSZWZXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFRva2VuPigpOwogICAgICAgICBUb2tlbigpID0gZGVmYXVsdDsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2Jz
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oCmlu
ZGV4IGUxYzQ0ODA3MWIyODk4NjRhNWQ4NDFkZGQ5OGQyZDNkMTkxYjAyY2IuLjAxZTE4YzVjMGYz
MTViMzk5YzFjMTQxZGQ4YmM3ZGU3N2M0MDcxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UnVuTG9vcE9ic2VydmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
dHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOwor
ICAgIHR5cGVkZWYgRnVuY3Rpb248dm9pZCAoKT4gUnVuTG9vcE9ic2VydmVyQ2FsbGJhY2s7CiAK
ICAgICBSdW5Mb29wT2JzZXJ2ZXIoQ0ZJbmRleCBvcmRlciwgUnVuTG9vcE9ic2VydmVyQ2FsbGJh
Y2smJiBjYWxsYmFjaykKICAgICAgICAgOiBtX29yZGVyKG9yZGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4u
OGRkZmMyNDY0ZWFiYjk5NTE4MGVlYTdmNWU5YzEwYzRiZTdkZGEzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5oCkBAIC00Miw3ICs0Miw3IEBAIE9CSkNfQ0xBU1MgTlNEYXRhOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlciBmaW5h
bCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewotICAgIGZyaWVuZCBVbmlxdWVSZWY8
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CisgICAgZnJp
ZW5kIFVuaXF1ZVJlZjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7
CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgVW5pcXVlUmVmPE5ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyPiBjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2Iz
ODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYuLjMyMmEwYzgwNzY0YmNkMjFmZWFiYjg4
YmIyMTE0NDQ4M2Q2ZmU1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtMzYsNyAr
MzYsNyBAQCBPQkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIgZmluYWwgOiBwdWJsaWMg
UGxhdGZvcm1Db250ZW50RmlsdGVyIHsKLSAgICBmcmllbmQgVW5pcXVlUmVmPFBhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpOworICAgIGZyaWVuZCBVbmlxdWVS
ZWY8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpOwogCiBwdWJsaWM6
CiAgICAgc3RhdGljIFVuaXF1ZVJlZjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4gY3Jl
YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAppbmRleCAzYjY3NDdmZmVhMWQz
NzFmODUwNWY5NzRiMzFhZjlmYjhiYTgzM2E2Li5kZmE0YWVjNTdkMGQ3YzkxZTIxZTBkZGQ5MTBj
N2I0M2I2N2Q0NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWVkaWFFbmdpbmVDaGFu
Z2VkKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWJDb3JlOjpFdmVudCYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbVN0cmluZyYpOworICAgIHZvaWQgdXBk
YXRlRm9yRXZlbnROYW1lKGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQm
KTsKQEAgLTEwOCw4ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCk7CiAKICAgICB2b2lkIHByb2dyZXNzRXZlbnRU
aW1lckZpcmVkKCk7Ci0gICAgc3RhdGljIGNvbnN0IFZlY3RvcjxXVEY6OkF0b21TdHJpbmc+JiBv
YnNlcnZlZEV2ZW50TmFtZXMoKTsKLSAgICBjb25zdCBXVEY6OkF0b21TdHJpbmcmIGV2ZW50TmFt
ZUFsbCgpOworICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIG9ic2VydmVkRXZl
bnROYW1lcygpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZUFsbCgpOwogCiAgICAg
UmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVkaWFFbGVtZW50OwogICAgIGJvb2wgbV9pc0xp
c3RlbmluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9Qb3dlclNvdXJjZU5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9Qb3dlclNvdXJjZU5vdGlmaWVyLmgKaW5kZXggYTA5NmUwNmE4MTlkOTcwMWU0ZDc2NDYzMmU0
NzYwNTY4M2QyMTZiMy4uYmVhMTU4MWQzYjI3YTBkZDNmNmViZjE3OWZkNDY4YzY1YjkyNDZlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3Rp
Zmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90
aWZpZXIuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQb3dl
clNvdXJjZU5vdGlmaWVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBvd2VyU291cmNlTm90aWZp
ZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBQ
b3dlclNvdXJjZU5vdGlmaWVyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBoYXNB
Qyk+OworICAgIHVzaW5nIFBvd2VyU291cmNlTm90aWZpZXJDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoYm9vbCBoYXNBQyk+OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFBvd2VyU291cmNl
Tm90aWZpZXIoUG93ZXJTb3VyY2VOb3RpZmllckNhbGxiYWNrJiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5Qb3dlclNvdXJjZU5vdGlmaWVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1N5c3RlbUJhdHRlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1N5c3RlbUJhdHRlcnkuaAppbmRleCA0MjA3NWMzZDJiMTNkYjczYmNlYTY1YzUwMzA1
MWMzOGZiY2RhMzUyLi41MjY3N2Y1MGUzMzQzODE5ZjRlMjU1ZjkxZWIyMmY2ODY1Njk4MjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0ZXJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5oCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBt
X2hhc0JhdHRlcnk7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2hhc0FDOwotICAgIFdURjo6
RnVuY3Rpb248dm9pZCgpPiBtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2s7CisgICAgRnVu
Y3Rpb248dm9pZCgpPiBtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2s7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCAyYzUxZDgzYjFiODc1NTFhY2ViMGMz
NDIzMDlhZGNmZDU4OTEzMDU0Li5kOTI1ZDA1ZmExZGMwYTBjZGFmZWI3YzY2YjE3Y2YzMDg5NDlj
ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTU2LDEyICs1NiwxMiBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0VsZW1lbnQoSFRNTFZp
ZGVvRWxlbWVudCopOwogICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9FbGVtZW50LmdldCgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVy
KiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1M
YXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYkNvcmU6OkV2
ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpB
dG9tU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgQXRvbVN0cmlu
ZyYpOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVu
ZXIqPih0aGlzKSA9PSAmcmhzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVu
dChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwpAQCAtODgsOCArODgsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgd2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwogCi0gICAgc3Rh
dGljIGNvbnN0IFZlY3RvcjxXVEY6OkF0b21TdHJpbmc+JiBvYnNlcnZlZEV2ZW50TmFtZXMoKTsK
LSAgICBjb25zdCBXVEY6OkF0b21TdHJpbmcmIGV2ZW50TmFtZUFsbCgpOworICAgIHN0YXRpYyBj
b25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIG9ic2VydmVkRXZlbnROYW1lcygpOworICAgIGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50TmFtZUFsbCgpOwogCiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1l
bnQ+IG1fdmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVv
RnVsbHNjcmVlbkxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXggMDI2OWZlNTdlYjFjMzFiZjE4NjNlYWEyN2Uw
NWZhNzQ1ZWRlMDU3OC4uZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJDbGllbnQoKSB7IH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZpcnR1YWwg
dm9pZCBzZXRMb2dnZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNldExvZ2dlcihMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CiAjZW5kaWYKIAogICAg
IGVudW0gY2xhc3MgSW1wbGVtZW50YXRpb25UeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5k
ZXggMTg1N2FiNjE1NzU2MmRkMGQxZWQyN2Q4ZGM1MTY1YmU2NDFmMWIyYy4uMzdjZDA3YzdiZjJk
Yzc1ZTQxZmQ1YzZjN2RlY2Y0M2UxMDM5ZTExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAg
LTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1lc3NhZ2VUeXBlID0gQ0RNTWVzc2Fn
ZVR5cGU7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TG9nZ2VyKFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRMb2dnZXIoTG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZh
dGUuaAppbmRleCA0ZDVlN2Y3MzE0OTAzZjhmMGFiYTljZTZiZGRhMGZlMmRlMzQxMzc1Li42ZDE3
YWNlZTE1NDBlZjA3NjVlYmRjNzcwYTczMmQzODBiMGVhMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5DRE1Qcml2YXRlKCk7
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TG9nZ2Vy
KFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9n
Z2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqKSB7IH07CiAjZW5kaWYKIAogICAgIGVudW0gY2xhc3Mg
TG9jYWxTdG9yYWdlQWNjZXNzIDogYm9vbCB7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgQWxsb3dlZCwKICAgICB9OwogCi0gICAgdXNpbmcgU3VwcG9ydGVkQ29uZmlndXJhdGlv
bkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbj4pPjsKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bj4pPjsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmln
dXJhdGlvbihDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlv
biwgTG9jYWxTdG9yYWdlQWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7
CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVz
KCkgY29uc3QgPSAwOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6Om9w
dGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlv
biwgQ0RNUmVzdHJpY3Rpb25zJiwgTG9jYWxTdG9yYWdlQWNjZXNzKTsKICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNG
b3JBdWRpb1ZpZGVvVHlwZShBdWRpb1ZpZGVvVHlwZSwgY29uc3QgVmVjdG9yPENETU1lZGlhQ2Fw
YWJpbGl0eT4mIHJlcXVlc3RlZENhcGFiaWxpdGllcywgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYgcGFydGlhbENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYpOwogCi0gICAg
dXNpbmcgQ29uc2VudFN0YXR1c0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENvbnNlbnRT
dGF0dXMsIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiwgQ0RNUmVzdHJpY3Rpb25zJiYpPjsK
KyAgICB1c2luZyBDb25zZW50U3RhdHVzQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKENvbnNlbnRT
dGF0dXMsIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiwgQ0RNUmVzdHJpY3Rpb25zJiYpPjsK
ICAgICB2b2lkIGdldENvbnNlbnRTdGF0dXMoQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiYsIExvY2FsU3RvcmFnZUFj
Y2VzcywgQ29uc2VudFN0YXR1c0NhbGxiYWNrJiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmluZGV4IGZjN2EzMWEy
YTE2OTQ3MjE3MTExNjc5NmJlOTQzNmMwNjMxYTU2YzkuLmYyMThmOTc5MDRmYmJhNDlmMWViZGY0
OGUyMDVmZTczZGZhZmI2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIEtleVN0
b3JlOjpjb250YWluc0tleUlEKGNvbnN0IEtleUlEVHlwZSYga2V5SUQpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fa2V5cy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZlB0cjxLZXlIYW5kbGU+JiBz
dG9yZWRLZXkpIHsKICAgICAgICAgcmV0dXJuICpzdG9yZWRLZXkgPT0ga2V5SUQ7Ci0gICAgfSkg
IT0gV1RGOjpub3RGb3VuZDsKKyAgICB9KSAhPSBub3RGb3VuZDsKIH0KIAogdm9pZCBLZXlTdG9y
ZTo6bWVyZ2UoY29uc3QgS2V5U3RvcmUmIG90aGVyKQpAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wg
S2V5U3RvcmU6OmFkZChSZWZQdHI8S2V5SGFuZGxlPiYmIGtleSkKICAgICB9KTsKIAogICAgIGFk
ZFNlc3Npb25SZWZlcmVuY2VUbyhrZXkpOwotICAgIGlmIChrZXlXaXRoTWF0Y2hpbmdLZXlJRElu
ZGV4ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICBpZiAoa2V5V2l0aE1hdGNoaW5nS2V5SURJbmRl
eCAhPSBub3RGb3VuZCkgewogICAgICAgICBhdXRvJiBrZXlXaXRoTWF0Y2hpbmdLZXlJRCA9IG1f
a2V5c1trZXlXaXRoTWF0Y2hpbmdLZXlJREluZGV4XTsKICAgICAgICAgZGlkU3RvcmVDaGFuZ2Ug
PSBrZXlXaXRoTWF0Y2hpbmdLZXlJRCAhPSBrZXk7CiAgICAgICAgIGlmIChkaWRTdG9yZUNoYW5n
ZSkKQEAgLTE5Nyw3ICsxOTcsNyBAQCBib29sIEtleVN0b3JlOjp1bnJlZihjb25zdCBSZWZQdHI8
S2V5SGFuZGxlPiYga2V5KQogICAgIHNpemVfdCBrZXlXaXRoTWF0Y2hpbmdLZXlJREluZGV4ID0g
bV9rZXlzLmZpbmQoa2V5KTsKICAgICBMT0coRU1FLCAiRU1FIC0gQ2xlYXJLZXkgLSByZXF1ZXN0
ZWQgdG8gdW5yZWYga2V5IHdpdGggSUQgJXMgYW5kICVkIHNlc3Npb24gcmVmZXJlbmNlcyIsIGtl
eS0+aWRBc1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBrZXktPm51bVNlc3Npb25SZWZlcmVuY2Vz
KCkpOwogCi0gICAgaWYgKGtleVdpdGhNYXRjaGluZ0tleUlESW5kZXggIT0gV1RGOjpub3RGb3Vu
ZCkgeworICAgIGlmIChrZXlXaXRoTWF0Y2hpbmdLZXlJREluZGV4ICE9IG5vdEZvdW5kKSB7CiAg
ICAgICAgIGF1dG8mIGtleVdpdGhNYXRjaGluZ0tleUlEID0gbV9rZXlzW2tleVdpdGhNYXRjaGlu
Z0tleUlESW5kZXhdOwogICAgICAgICByZW1vdmVTZXNzaW9uUmVmZXJlbmNlRnJvbShrZXlXaXRo
TWF0Y2hpbmdLZXlJRCk7CiAgICAgICAgIGlmICgha2V5V2l0aE1hdGNoaW5nS2V5SUQtPmhhc1Jl
ZmVyZW5jZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCA2NmEwMTFlZDRhOGFmOGQxODhiNjc4
ZTI4MTk5ZDNlZDE3ZDZiYzY1Li5jNjVmZGRkOTdhMDBjY2EwYmQxODkyNTc1NmUzMTAxZDgyMTE3
MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1SZXN0cmljdGlvbnMuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zIHsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRp
ZmllckRlbmllZCB7IGZhbHNlIH07CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVEZW5pZWQgeyBm
YWxzZSB9OwotICAgIEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUsIFdURjo6SW50SGFzaDxDRE1TZXNz
aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+PiBkZW5p
ZWRTZXNzaW9uVHlwZXM7CisgICAgSGFzaFNldDxDRE1TZXNzaW9uVHlwZSwgSW50SGFzaDxDRE1T
ZXNzaW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+PiBk
ZW5pZWRTZXNzaW9uVHlwZXM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC01OCw3ICs1OCw3IEBAIHN0cnVj
dCBDRE1SZXN0cmljdGlvbnMgewogICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgc3RkOjpvcHRpb25h
bDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25U
eXBlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBJbnRI
YXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNzaW9u
VHlwZT4+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CiAgICAgICAgIGRlY29kZXIgPj4gZGVuaWVkU2Vz
c2lvblR5cGVzOwogICAgICAgICBpZiAoIWRlbmllZFNlc3Npb25UeXBlcykKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcAppbmRleCBmYzM5NjBmMzlmNDQ2ZTM1NDI1ZjE0
NGFmODc1YTVmOTRmYjYzYzdiLi5hYWMzZWMyZGNhNDhjODM1ZDAzMGE0MDlmNzI2OTY1MTM0MDE4
NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRD
b25zdGFudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBh
ZENvbnN0YW50cy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgR2FtZXBhZEJ1dHRvblJvbGUg
bWF4aW11bUdhbWVwYWRCdXR0b24gPSBHYW1lcGFkQnV0dG9uUm9sZTo6Q2VudGVyQ2x1c3RlckMK
IGNvbnN0IHNpemVfdCBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRob3V0SG9tZUJ1
dHRvbiA9IHN0YXRpY19jYXN0PHNpemVfdD4obWF4aW11bUdhbWVwYWRCdXR0b24pOwogY29uc3Qg
c2l6ZV90IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhIb21lQnV0dG9uID0gbnVt
YmVyT2ZTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0b24gKyAxOwogCi1jb25z
dCBXVEY6OlN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCitjb25zdCBTdHJp
bmcmIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IHN0YW5kYXJkR2FtZXBhZE1hcHBpbmcgPSAic3RhbmRhcmQiOwogICAg
IHJldHVybiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nOwpAQCAtNDUsNyArNDUsNyBAQCBjb25zdCBX
VEY6OlN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCiAKICNpZiBFTkFCTEUo
V0VCWFIpCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWdhbWVwYWRz
LW1vZHVsZS8jZG9tLWdhbWVwYWRtYXBwaW5ndHlwZS14ci1zdGFuZGFyZAotY29uc3QgV1RGOjpT
dHJpbmcmIHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCitjb25zdCBTdHJpbmcmIHhy
U3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4geHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nID0gInhyLXN0YW5kYXJkIjsKICAg
ICByZXR1cm4geHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaAppbmRleCA2MzNhZmQ3M2QzNzQ3
ZmFhM2EwOGFlNzU2Y2I0MzIxNTEyNWQyNTRmLi4yNGE2ZTk5ZDk5OGI0NTVlN2VkOGU3NWY2OTAz
YjFjMWEwOTFiYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L0dhbWVwYWRDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L0dhbWVwYWRDb25zdGFudHMuaApAQCAtNjEsOSArNjEsOSBAQCBleHRlcm4gY29uc3Qgc2l6ZV90
IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhvdXRIb21lQnV0dG9uOwogZXh0ZXJu
IGNvbnN0IHNpemVfdCBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRoSG9tZUJ1dHRv
bjsKIGV4dGVybiBjb25zdCBHYW1lcGFkQnV0dG9uUm9sZSBtYXhpbXVtR2FtZXBhZEJ1dHRvbjsK
IAotY29uc3QgV1RGOjpTdHJpbmcmIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsKK2Nv
bnN0IFN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpOwogI2lmIEVOQUJMRShX
RUJYUikKLWNvbnN0IFdURjo6U3RyaW5nJiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmco
KTsKK2NvbnN0IFN0cmluZyYgeHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCmluZGV4IGE0YjFhM2NiNGE5ODBjMTQ0YWU2ZWIy
MzliNzQ0NDNjNmI1Y2RlN2MuLjVkMWNkMTZjYTQ5MTBlMjczYzg3YzAwZTZlNzlhZTA2Mjg1YTlm
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JH
TGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xp
Yi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlTW9u
aXRvcjo6RmlsZU1vbml0b3IoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhh
bmRsZXJRdWV1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVDaGFuZ2VUeXBlKT4mJiBtb2RpZmlj
YXRpb25IYW5kbGVyKQorRmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0
aCwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIEZ1bmN0aW9uPHZvaWQoRmlsZUNoYW5n
ZVR5cGUpPiYmIG1vZGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgOiBtX2hhbmRsZXJRdWV1ZShXVEZN
b3ZlKGhhbmRsZXJRdWV1ZSkpCiAgICAgLCBtX21vZGlmaWNhdGlvbkhhbmRsZXIoV1RGTW92ZSht
b2RpZmljYXRpb25IYW5kbGVyKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA2MDI3NzM0ZTE5M2I2MjU4NzQxZTBiNzBkZWE0
NTU4ZTEyYTVkYmNiLi5jOTI2YzVkMjNmMjA2ZGU2MmE5ODczMDBmOWVjZjY5OTJjN2I0ZjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
CkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6cmVzZXRBbmltYXRpb24oKQog
ICAgIGRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KHRydWUpOwogfQogCi12b2lkIEJpdG1h
cEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIEJp
dG1hcEltYWdlOjpkZWNvZGUoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGlm
ICghbV9kZWNvZGluZ0NhbGxiYWNrcykKICAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IG1h
a2VVbmlxdWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA5NjkyMDIwZDkyM2FiYjE4OGVh
ODQ1NTZhNjlhMTBmYmZkNjM2NWNmLi45ZWM1NGY2M2IzYWJjZTlkMDNlYTY2MGVmZjE1ZGEzOTk2
MjM1MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aApAQCAtMjI3LDcgKzIyNyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNv
cmU6OkZvbnREZXNjcmlwdGlvbktleT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVj
dCBIYXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gOiBXVEY6OlNpbXBsZUNs
YXNzSGFzaFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IHsKK3RlbXBsYXRlPD4g
c3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiA6IFNpbXBsZUNs
YXNzSGFzaFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IHsKIH07CiAKIH0KQEAg
LTI4MSw3ICsyODEsNyBAQCBzdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHMgOiBI
YXNoVHJhaXRzPEZvbnRDYXNjYWRlQ2FjaGVLZXk+IHsKIHVzaW5nIEZvbnRDYXNjYWRlQ2FjaGUg
PSBIYXNoTWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FzY2Fk
ZUNhY2hlRW50cnk+LCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaCwgRm9udENhc2NhZGVDYWNoZUtl
eUhhc2hUcmFpdHM+OwogCiBjbGFzcyBGb250Q2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250
Q2FjaGU+IHsKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxGb250Q2FjaGUs
IE1haW5UaHJlYWRBY2Nlc3NUcmFpdHM+OworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3ll
ZDxGb250Q2FjaGUsIE1haW5UaHJlYWRBY2Nlc3NUcmFpdHM+OwogCiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRm9udENhY2hlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAppbmRleCA3
YWJjM2MwOGZlMjE4ODZkMmFiMjE5ZWRiOTNhMDEwY2RiZGU1MWZmLi4zOWM2MGNmOTdhNWYwMzkw
OTAxOWU0NmU1MDhjZmM4NmViMDMzZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJPcGVu
R0xTaGltcy5oIgogI2VuZGlmCiAKLXVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGhyZWFkR2xvYmFsR0xDb250ZXh0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
NTZhMzc5ZjgzYzAzYzkwMjI5NmQ2ZjU1NjFiM2UxYzZmOThiNmE3MS4uYzc1ZGE1NmE4MzYxNTZj
YzBkNWU1YTdkZjFiZmIwYzRiMmIyNjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTgxMiw3ICs4MTIsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJl
Y3QpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXI6OnRyYXZlcnNlKEdyYXBoaWNzTGF5
ZXImIGxheWVyLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXImKT4mIHRy
YXZlcnNhbEZ1bmMpCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnRyYXZlcnNlKEdyYXBoaWNzTGF5ZXIm
IGxheWVyLCBjb25zdCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzTGF5ZXImKT4mIHRyYXZlcnNhbEZ1
bmMpCiB7CiAgICAgdHJhdmVyc2FsRnVuYyhsYXllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAyMTlmNzUzMGNkYmMxNDE0
OTE3MzA5ZWIxMzY3OGExMTk2ZWEzOGNmLi5iZjk1MDlmMThjY2I5NTk5MjNkZDlmNWQ1ZmIyNTJi
ZTE4Yjk4OTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oCkBAIC02NDQsNyArNjQ0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiYgYW5pbWF0aW9uRXh0ZW50KCkgY29uc3QgeyByZXR1cm4gbV9h
bmltYXRpb25FeHRlbnQ7IH0KICAgICB2b2lkIHNldEFuaW1hdGlvbkV4dGVudChzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gYW5pbWF0aW9uRXh0ZW50KSB7IG1fYW5pbWF0aW9uRXh0ZW50ID0gYW5p
bWF0aW9uRXh0ZW50OyB9CiAKLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGljc0xheWVy
JiwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+Jik7CisgICAgc3Rh
dGljIHZvaWQgdHJhdmVyc2UoR3JhcGhpY3NMYXllciYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoR3Jh
cGhpY3NMYXllciYpPiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgR3JhcGhpY3NMYXllcihUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IDUw
MTk5ZGRmYTU2YTZjYTFlNmQyNjJjOThjNDc5MTUzMjEwMGNkMTkuLjMzNjU2YTE1NjEzZGY2MzIy
NjVhOTMzMjg4MmJkMTExYTY4MGRmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0
IEdDR0xTcGFuPFQsIGdjR0xTcGFuRHluYW1pY0V4dGVudD4gewogICAgICAgICAsIGJ1ZlNpemUo
b3RoZXIuYnVmU2l6ZSkKICAgICB7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+Ci0gICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNp
dHk+JiBhcnJheSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtd
LCBUKCopW10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQorICAgIEdDR0xTcGFuKFZlY3Rv
cjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29u
dmVydGlibGVfdjxVKCopW10sIFQoKilbXT4sIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCiAg
ICAgICAgIDogZGF0YShhcnJheS5kYXRhKCkpCiAgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXpl
KCkpCiAgICAgeyB9CkBAIC0xMzgsNyArMTM4LDcgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lk
PiB7CiAgICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQogICAgIHsg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBH
Q0dMU3BhbihXVEY6OlZlY3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5KQorICAgIEdDR0xT
cGFuKFZlY3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5KQogICAgICAgICA6IGRhdGEoYXJy
YXkuZGF0YSgpKQogICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgpICogc2l6ZW9mKFUpKQog
ICAgIHsgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBO
PgogR0NHTFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci1HQ0dMU3BhbihXVEY6OlZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKK0dDR0xTcGFuKFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291bnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4
IDczNjRjY2NhMzAxY2E4N2VhN2M2ZmU5MTkyZTJjZmJhMjgzYTQxZmUuLmExYTA4YWRjMTc1ZDQ0
YmFhNDQyZTQ0YTk0YWE5NjdhMDRmNWY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC04OSw5ICs4OSw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQotICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IFdURjo6RnVu
Y3Rpb248Ym9vbChNZWRpYVR5cGUpPjsKLSAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IFdU
Rjo6RnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VE
ZWNvZGVyRnVuYyA9IFdURjo6RnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKT47CisgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChN
ZWRpYVR5cGUpPjsKKyAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nJik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5j
dGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKIAogICAgIHN0cnVjdCBJ
bWFnZURlY29kZXJGYWN0b3J5IHsKICAgICAgICAgU3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1cHBv
cnRzTWVkaWFUeXBlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNp
emVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNrKFdU
Rjo6RnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+JiYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRFbmNvZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoRW5j
b2RlZERhdGFTdGF0dXMpPiYmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxl
KCkgY29uc3QgeyByZXR1cm4gZW5jb2RlZERhdGFTdGF0dXMoKSA+PSBFbmNvZGVkRGF0YVN0YXR1
czo6U2l6ZUF2YWlsYWJsZTsgfQogICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKaW5kZXggMWM0ZDkxYzgyNDFmNTNkN2Jm
NzdkODc5N2M5ZjZjMzM4NmUxMmM3ZS4uOTlmYzA0YWVkMTM0NmM5YzUzZDg4M2E0ODZkNzEyNzY4
M2JjYmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApA
QCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplLndpZHRoKCk7IH0KICAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
LmhlaWdodCgpOyB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IFdURjo6Q3Jhc2hPbk92
ZXJmbG93PgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gQ3Jhc2hPbk92ZXJmbG93PgogICAg
IENoZWNrZWQ8dW5zaWduZWQsIFQ+IGFyZWEoKSBjb25zdCB7IHJldHVybiBtX3NpemUuYXJlYTxU
PigpOyB9CiAKICAgICB2b2lkIHNldFgoaW50IHgpIHsgbV9sb2NhdGlvbi5zZXRYKHgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKaW5kZXggMDk1ZjAzMTQ0
ZGY5NzI2N2YxMDI1NWUyNTY3NGVkOTY2MmRkZmZmNy4uNWVmODc2ZjlmMzg2OTkwNzUzM2NhYjg3
MDE0NDBmMjY1YWMwNmZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IEludFNpemUgY29uc3RyYWluZWRCZXR3ZWVuKGNvbnN0IEludFNpemUmIG1pbiwgY29uc3QgSW50
U2l6ZSYgbWF4KSBjb25zdDsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gV1RGOjpDcmFz
aE9uT3ZlcmZsb3c+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBDcmFzaE9uT3ZlcmZsb3c+
CiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgVD4gYXJlYSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gQ2hlY2tlZDx1bnNpZ25lZCwgVD4oYWJzKG1fd2lkdGgpKSAqIGFicyhtX2hlaWdodCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggNTY1ZjFjZWJkZjExNjljMzc5MTNmOTJiMGZiMzNjODY3M2QwMWU1Ny4uYTQzNmE1NThh
Nzk5YTY2NmE2ZWY2YTRmNWYzODA5NTRkMTcwNjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtODI1LDcgKzgyNSw3IEBAIFJl
dGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKQogICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVy
KCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqIGxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIqIGxheWVyLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
bV9wcml2YXRlLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihsYXllciwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgQVZQbGF5ZXIqIE1lZGlhUGxh
eWVyOjpvYmpDQVZGb3VuZGF0aW9uQVZQbGF5ZXIoKSBjb25zdAogCiAjZW5kaWYKIAotYm9vbCBN
ZWRpYVBsYXllcjo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCitib29sIE1lZGlhUGxheWVyOjpwZXJmb3Jt
VGFza0F0TWVkaWFUaW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrLCBjb25zdCBNZWRpYVRpbWUm
IHRpbWUpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cGVyZm9ybVRhc2tBdE1lZGlhVGltZShX
VEZNb3ZlKHRhc2spLCB0aW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCmluZGV4IGRiODVhMzNkODdjNTJhMzc3OWM1MmE1MDIxOWFhOGEy
NDEyNDM4ODUuLjViMWUxNzQ1MTNlMDZmYTAxZDUxOTBiNTVlNTA1MzU1NWVmZDc2MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzI1
LDcgKzMyNSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKTsKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CisgICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICAgICB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKEZsb2F0UmVjdCk7CiAgICAgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5J
bmxpbmVJbWFnZSgpOwogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTsK
QEAgLTc1NCw3ICs3NTQsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyU3Vw
cG9ydCB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwgTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKT47CisgICAgdXNpbmcgUmVnaXN0ZXJSZW1vdGVQbGF5
ZXJDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoTWVkaWFFbmdpbmVSZWdpc3RyYXIsIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik+OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIHNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQ
bGF5ZXJDYWxsYmFjayYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCBkYWU5OGY5NTRjM2VlMGYyNTQwODNi
NTdlNWQ4YWY3ZjdmZTU0NzRmLi40MDhhMDFjZjMyOWI2YzI5M2FlODFkNGMyNGY1MGJjZDRjYjky
Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllckVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJFbnVtcy5oCkBAIC0xMjksNyArMTI5LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50OwogCiB0
ZW1wbGF0ZSA8Pgogc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
OlJlYWR5U3RhdGU+IHsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSBzdGF0ZSkKKyAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUg
c3RhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
c3RhdGUpOwogICAgIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZT4gewogCiB0ZW1wbGF0ZSA8Pgogc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZT4g
ewotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpOZXR3b3JrU3RhdGUgc3RhdGUpCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGUgc3RhdGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoc3RhdGUpOwog
ICAgIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlPiB7CiAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9n
QXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5PiB7Ci0g
ICAgc3RhdGljIFdURjo6U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6OkJ1ZmZlcmluZ1BvbGljeSBwb2xpY3kpCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3kgcG9saWN5
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHBvbGlj
eSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBjNTAzYzY0YzdkNDk0OGE4ZmRlNGU5NGM2MTc5M2U4
MTFmOWIxMjAyLi5mNWE0MGFiYzhhNzlhNmNlMDY0YjcwMmNkZDBjOWE5YWE2NjNkZDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fUFJF
U0VOVEFUSU9OX01PREUpCiAgICAgdmlydHVhbCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3Jl
YXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoKTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJl
Y3QpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlh
UGxheWVyOjpWaWRlb0dyYXZpdHkpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5oCmluZGV4IDdmM2M4MTg4NjU2OTEwYjg0ZmFhNjA2NWJkNmYzMzE1OTE2Mjk0NGIuLjdi
OTg3NmFiMWM3ODU4YjU0YjgwZDkwOGU2YTgwZTU5NjIzZmJlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdHJ1Y3QgUGF0aEVs
ZW1lbnQgewogICAgIFR5cGUgdHlwZTsKIH07CiAKLXVzaW5nIFBhdGhBcHBsaWVyRnVuY3Rpb24g
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgUGF0aEVsZW1lbnQmKT47Cit1c2luZyBQYXRoQXBw
bGllckZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChjb25zdCBQYXRoRWxlbWVudCYpPjsKIAogY2xh
c3MgUGF0aCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMzcsMTMgKzEzNywx
MyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhdGggcG9seWdvblBhdGhGcm9tUG9pbnRzKGNvbnN0
IFZlY3RvcjxGbG9hdFBvaW50PiYpOwogCiAgICAgYm9vbCBjb250YWlucyhjb25zdCBGbG9hdFBv
aW50JiwgV2luZFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVybykgY29uc3Q7Ci0gICAgYm9vbCBzdHJv
a2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYgc3Ryb2tlU3R5bGVBcHBsaWVyKSBjb25zdDsKKyAgICBib29sIHN0
cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYgc3Ryb2tlU3R5bGVBcHBsaWVyKSBjb25zdDsKIAogICAgIC8vIGZhc3RC
b3VuZGluZ1JlY3QoKSBzaG91bGQgZXF1YWwgb3IgY29udGFpbiBib3VuZGluZ1JlY3QoKTsgYm91
bmRpbmdSZWN0KCkKICAgICAvLyBzaG91bGQgcGVyZmVjdGx5IGJvdW5kIHRoZSBwb2ludHMgd2l0
aGluIHRoZSBwYXRoLgogICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgZmFzdEJvdW5kaW5nUmVjdCgpIGNvbnN0OwotICAgIEZs
b2F0UmVjdCBzdHJva2VCb3VuZGluZ1JlY3QoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYgc3Ryb2tlU3R5bGVBcHBsaWVyID0geyB9KSBjb25zdDsKKyAgICBGbG9h
dFJlY3Qgc3Ryb2tlQm91bmRpbmdSZWN0KGNvbnN0IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiBzdHJva2VTdHlsZUFwcGxpZXIgPSB7IH0pIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc2l6ZV90IGVsZW1lbnRDb3VudCgpIGNvbnN0OwogICAgIGZsb2F0IGxlbmd0aCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXll
ci5oCmluZGV4IDY3ODgyYzk0Y2E2OTlhYzRmNjJkOGJmNDAxOTU2MTY0OWNmNmQ2NjkuLmQ3Mzhk
NzM5ZjRhNGUwZjI2YmY4ZWUyMTEwMmZlNjk2MGJjZjk5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKQEAgLTUyLDEwICs1MiwxMCBA
QCB1c2luZyBQbGF0Zm9ybUxheWVyID0gdm9pZCo7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci11c2luZyBQbGF0Zm9ybUxheWVyQ29udGFpbmVyID0g
V1RGOjpSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj47Cit1c2luZyBQbGF0Zm9ybUxheWVyQ29udGFp
bmVyID0gUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+OwogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQogdXNpbmcgUGxhdGZvcm1MYXllckNvbnRhaW5lciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bUxheWVyPjsKICNlbHNlCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotdXNpbmcgUGxhdGZvcm1M
YXllckNvbnRhaW5lciA9IFdURjo6UmVmUHRyPFBsYXRmb3JtTGF5ZXI+OwordXNpbmcgUGxhdGZv
cm1MYXllckNvbnRhaW5lciA9IFJlZlB0cjxQbGF0Zm9ybUxheWVyPjsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2Vz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMu
aAppbmRleCA0ZjlkMTUzNWE3OTM3Y2YxNTY0ZTRhNGM4Mzk0MmUwMGY2NDUwMjYyLi43OGY5ODZl
NTUwN2YyODVhMjdlMzJmZDNkNTNiYzNlMWYxNjI5NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtNjksNyAr
NjksNyBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVRpbWUgdG90YWxEdXJhdGlvbigpIGNvbnN0Owog
Ci0gICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVRpbWVSYW5nZXM+IGRlY29kZShEZWNvZGVyJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1Nh
bXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1w
bGUuaAppbmRleCBiNzNhNTg0NDE2NzAxZjkwMDcxMDk5Njk4N2ZjYTkzMGQyYWFmZTQ5Li5hNjE3
MGIzMjhmYzQ0YWNlNjkzZGNkYjM1ZWU0ZDNjZTY4NzMzOGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9pb1N1cmZhY2UpCiAgICAgICAgICAgICBl
bmNvZGVyIDw8IG1faW9TdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgZW5jb2RlciA8PCBXVEY6Ok1hY2hTZW5kUmlnaHQoKTsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgTWFjaFNlbmRSaWdodCgpOwogICAgICAgICBlbmNvZGVyIDw8IG1fcm90YXRp
b247CiAgICAgICAgIGVuY29kZXIgPDwgbV90aW1lOwogICAgICAgICBlbmNvZGVyIDw8IG1fdmlk
ZW9Gb3JtYXQ7CkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1faW9TdXJmYWNlOwogICAgIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBtX2ltYWdlQnVmZmVyOwotICAgIFdURjo6TWFjaFNlbmRSaWdodCBtX3Nl
bmRSaWdodDsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwogICAgIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIG1fcm90YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
Tm9uZSB9OwogICAgIE1lZGlhVGltZSBtX3RpbWU7CiAgICAgdWludDMyX3QgbV92aWRlb0Zvcm1h
dCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
aAppbmRleCAwYzk3NmI4NzUxYmQ2ZWZmMGNhN2FkMjI3ODIzNjYxMjg4YTg4OTAxLi4xNGZkODNl
ZGUxYTFiYWNmMTc3ZjMzMWVjYWQxYTQzMDI5M2Y2MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYpOwogICAgIHZvaWQgZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KTsKIAot
ICAgIHVzaW5nIERyYXdCdWZmZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmKT47Ci0gICAgdXNpbmcg
RHJhd0ltYWdlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmKT47Ci0gICAgdXNpbmcgRmlsbFJlY3RDYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYp
PjsKLSAgICB1c2luZyBGaWxsUmVjdFdpdGhIb2xlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKT47Ci0g
ICAgdXNpbmcgRHJhd1NoYWRvd0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPjsKKyAgICB1c2luZyBEcmF3QnVmZmVyQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYpPjsKKyAg
ICB1c2luZyBEcmF3SW1hZ2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmKT47CisgICAgdXNpbmcgRmlsbFJlY3RD
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKT47
CisgICAgdXNpbmcgRmlsbFJlY3RXaXRoSG9sZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpPjsKKyAgICB1c2lu
ZyBEcmF3U2hhZG93Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPjsK
IAogICAgIC8vIERyYXdCdWZmZXJDYWxsYmFjayBpcyBmb3IgZHJhd2luZyBzaGFkb3cgd2l0aG91
dCB0aWxpbmcuCiAgICAgLy8gRHJhd0ltYWdlQ2FsbGJhY2sgYW5kIEZpbGxSZWN0Q2FsbGJhY2sg
aXMgZm9yIGRyYXdpbmcgc2hhZG93IHdpdGggdGlsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCBh
OTRiMWMxOTM4ODQ5MWMwYzkwOTQ5NzNhYzNhZGJkOWE0Yjk4NDdiLi42ODdjNzhjMjgxY2EwNDU0
MDQ4NWNjYmFlMDFkODRjZDYwMzM3MjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNDUzLDcgKzQ1
Myw3IEBAIHN0YXRpYyBQbGF0Zm9ybVRpbWVSYW5nZXMgcmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1
ZmZlcihjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hCiAgICAgTWVkaWFUaW1lIGVhcmxpZXN0U2Ft
cGxlID0gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogICAgIE1lZGlhVGltZSBs
YXRlc3RTYW1wbGUgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7CiAgICAgdWludDY0X3QgYnl0ZXNS
ZW1vdmVkID0gMDsKLSAgICBhdXRvIGxvZ0lkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0
ZUlkZW50aWZpZXIoc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nQ2xhc3NOYW1lKCksIGxvZ1ByZWZp
eCwgc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIGxvZ0lk
ZW50aWZpZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKHNvdXJjZUJ1ZmZlclByaXZhdGUt
PmxvZ0NsYXNzTmFtZSgpLCBsb2dQcmVmaXgsIHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxvZ0lkZW50
aWZpZXIoKSk7CiAgICAgYXV0byYgbG9nZ2VyID0gc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nZ2Vy
KCk7CiAgICAgYXV0byB3aWxsTG9nID0gbG9nZ2VyLndpbGxMb2coc291cmNlQnVmZmVyUHJpdmF0
ZS0+bG9nQ2hhbm5lbCgpLCBXVEZMb2dMZXZlbDo6RGVidWcpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaAppbmRl
eCBhZDNjMWJiNzlhZWRjYWFlM2U3OTdmZDhmYjJkNmFhYTg2ZWQzM2NhLi5kZjdiNzhhMTU0Zjgy
OTM5YzE2NWQ1MzFhZmVlZGFjMGJlYWI4MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyKiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdl
UHRyKSA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZShQbGF0Zm9ybUltYWdlUHRyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aENhY2hlLmgKaW5kZXggNTJhN2IwODY2Y2QwNzBkMmRkZTg4NGU0NzI4ZWIz
NGQ4NTNhODczNS4uNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMTAz
LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsgLy8gRW1wdHkgYW5kIGRlbGV0ZWQgdmFsdWVz
IGhhdmUgbGVuZ3RocyB0aGF0IGFyZSBub3QgZXF1YWwgdG8gYW55IHZhbGlkIGxlbmd0aC4KICAg
ICB9OwogCi0gICAgc3RydWN0IFNtYWxsU3RyaW5nS2V5SGFzaFRyYWl0cyA6IFdURjo6U2ltcGxl
Q2xhc3NIYXNoVHJhaXRzPFNtYWxsU3RyaW5nS2V5PiB7CisgICAgc3RydWN0IFNtYWxsU3RyaW5n
S2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxTbWFsbFN0cmluZ0tleT4gewog
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7
CiAgICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTbWFsbFN0cmluZ0tleSYg
a2V5KSB7IHJldHVybiBrZXkuaXNIYXNoVGFibGVFbXB0eVZhbHVlKCk7IH0KICAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBtaW5pbXVtVGFibGVTaXplID0gMTY7CkBAIC0yMjUsNyArMjI1LDcgQEAg
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXaWR0aENhY2hlOjpTbWFsbFN0cmluZ0tleSYg
YSwgY29uc3QgV2lkdGhDYWNoZTo6U20KIHsKICAgICBpZiAoYS5sZW5ndGgoKSAhPSBiLmxlbmd0
aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFdURjo6ZXF1YWwoYS5jaGFy
YWN0ZXJzKCksIGIuY2hhcmFjdGVycygpLCBhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gZXF1YWwo
YS5jaGFyYWN0ZXJzKCksIGIuY2hhcmFjdGVycygpLCBhLmxlbmd0aCgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggZWNiOWY2YzA5MzRjNjM2
ZDZjYzE1NTY0ZTg1ZDZiZjVkODM0YTI4Yi4uMGE2MWVmYzA5NmMxY2ZlY2E5OTkzZjllY2FmMWFj
NzcyYjg1YTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1Ymxp
YzoKICAgICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYpOwor
ICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGdl
dEV4dGVuc2lvbnMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQXZhaWxhYmxlRXh0
ZW5zaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaAppbmRleCAzODM1ODVjYzE5YjM5
ZDMxYWQ0Y2Y2ZDY3NWJiMDE5MjkyMWNiOTI2Li4zMDQ3NzA5NzUzNDQ4MTI0ZThmMmRjNjllMmEw
MjNlOTc4MjljZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaApAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB2YWx1ZSB1cG9uIGRlc3RydWN0aW9uLCBtYWtp
bmcgaXQgYW4gYWx0ZXJuYXRpdmUgdG8gY2hlY2tpbmcsIGNsZWFyaW5nLCBhbmQgcmVzZXR0aW5n
IGVhY2ggZmxhZwogLy8gYXQgYWxsIG9mIGEgYmxvY2sncyBleGl0IHBvaW50cy4KIC8vCi0vLyBC
YXNlZCBvbiBXVEY6OlNldEZvclNjb3BlPD4KKy8vIEJhc2VkIG9uIFNldEZvclNjb3BlPD4KIAog
Y2xhc3MgVGVtcG9yYXJ5QU5HTEVTZXR0aW5nIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShU
ZW1wb3JhcnlBTkdMRVNldHRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuaAppbmRleCAxNDk3NDM5MGY0MGIwM2EwY2I2ZTU1OWM5ZTZjMGZlMDk4YTA0MTkxLi5iYzkz
ZjZmNmE3YmRkMDFlZmJmNTViNjJiZGI2YTRlNjZlZjkxMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIpIGZpbmFsOwogI2VuZGlmCiAKICAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODcsMTEgKzg3
LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAg
ICBXVEY6OkxvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7
IH07CisgICAgTG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQo
KTsgfTsKICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9s
b2dJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gIkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyI7IH0KIAotICAgIFJlZlB0cjxXVEY6
OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA1OTdlZmEy
Njg0OWI3NDRkYjc0M2QzNTJjZDFjMDZmMzQxMzc2ZmY5Li5jOTk4ZDlmNjQ3MGU4MGY4ZDRjZGQ1
ZTEyNjZmMDViMTJiZDYxMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29tcGxldGVkKGJvb2wgZmluaXNoZWQp
CiAKICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKIAotICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBw
ZW5kaW5nU2VlazsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IHBlbmRpbmdTZWVrOwogICAgIHN0ZDo6
c3dhcChwZW5kaW5nU2VlaywgbV9wZW5kaW5nU2Vlayk7CiAKICAgICBpZiAocGVuZGluZ1NlZWsp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaAppbmRleCA3MTNmNWMzYzMzYzhiNDA3YTE0MjEwNzMzMDA1YWQwNGUxYWFhOWVjLi42MjY3
YjgzMzIxMjk5YjEzZWE3ZWQyYTQwNWU0Y2JiODVlNDQ4ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCkBAIC0xMTYsNyArMTE2
LDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBOb3RpZmljYXRp
b24oV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQorICAgICAgICBOb3RpZmljYXRp
b24oRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICAgICAgOiBtX3R5cGUoRnVu
Y3Rpb25UeXBlKQogICAgICAgICAgICAgLCBtX2ZpbmlzaGVkKGZhbHNlKQogICAgICAgICAgICAg
LCBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQpAQCAtMTI3LDEzICsxMjcsMTMgQEAgcHVi
bGljOgogICAgICAgICBib29sIGlzVmFsaWQoKSB7IHJldHVybiBtX3R5cGUgIT0gTm9uZTsgfQog
ICAgICAgICBNZWRpYVRpbWUgdGltZSgpIHsgcmV0dXJuIG1fdGltZTsgfQogICAgICAgICBib29s
IGZpbmlzaGVkKCkgeyByZXR1cm4gbV9maW5pc2hlZDsgfQotICAgICAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQgKCk+JiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KKyAgICAgICAgRnVu
Y3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQogICAgICAg
ICAKICAgICBwcml2YXRlOgogICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgTWVkaWFUaW1l
IG1fdGltZTsKICAgICAgICAgYm9vbCBtX2ZpbmlzaGVkOwotICAgICAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQgKCk+IG1fZnVuY3Rpb247CisgICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlv
bjsKICAgICB9OwogCiAgICAgdm9pZCBzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90
aWZpY2F0aW9uJiYpOwpAQCAtMzMyLDcgKzMzMiw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyOwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1f
cGVuZGluZ1NlZWs7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdTZWVrOwogCiAgICAg
bXV0YWJsZSBMb2NrIG1fcXVldWVkTm90aWZpY2F0aW9uc0xvY2s7CiAgICAgRGVxdWU8Tm90aWZp
Y2F0aW9uPiBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3F1ZXVl
ZE5vdGlmaWNhdGlvbnNMb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IGJjNjU4N2Uy
Yzg5NjRmNzFlNWY0YTY1M2IwYmJjYjJkNTY1NDMxYmMuLjE1OWI5MGNkYjQ4ZjdmZTQ0YmI0OWJl
MmVjMWMxYzJmNDMyODY0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtNzMsNyArNzMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMoKSA9IGRlZmF1bHQ7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lk
IHNldExvZ2dlcihXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpOworICAg
IHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1BlcnNpc3RhYmxlU3RhdGUoKTsKQEAgLTEy
MSw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlVW5leHBlY3RlZFJlcXVlc3Rz
KFZlY3RvcjxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+JiYpOwogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECi0gICAgV1RGOjpMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0
dXJuIG1fbG9nZ2VyLmdldCgpOyB9OworICAgIExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH07CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0Ns
YXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQyI7IH0KICNlbmRpZgpAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPj4gbV9z
ZXNzaW9uczsKICAgICBIYXNoU2V0PFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4gbV91
bmV4cGVjdGVkS2V5UmVxdWVzdHM7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVm
UHRyPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsK
ICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CiAjZW5kaWYKIH07
CkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgdm9pZCBzZXRMb2dnZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHNldExvZ2dlcihMb2dnZXImLCBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKTsKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCkBAIC0xOTcsNyAr
MTk3LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPENETUtleVN0YXR1cz4gcHJvdGVj
dGlvblN0YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRLZXlSZXF1ZXN0ICosIHN0ZDo6b3B0aW9u
YWw8UGxhdGZvcm1EaXNwbGF5SUQ+KSBjb25zdDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgIFdURjo6TG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5n
ZXQoKTsgfTsKKyAgICBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2Vy
LmdldCgpOyB9OwogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCB7IHJldHVybiAiQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDIjsg
fQogI2VuZGlmCkBAIC0yMjYsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdmVTZXNzaW9u
RGF0YUNhbGxiYWNrIG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjazsKIAogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotICAgIFJlZlB0cjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVm
UHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsg
bnVsbHB0ciB9OwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5oCmluZGV4IGEyOGQ0YzQzMDFlNjcyNTA5Mjk4ZjUzY2U3YzdkMjk0Y2YxNzkz
OWYuLjAzMzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWltZVR5cGU7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5jb2RlZERhdGFTdGF0
dXNDaGFuZ2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiYm
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hh
bmdlQ2FsbGJhY2soRnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+JiYpIGZpbmFsOwog
ICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QgZmluYWw7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKQEAgLTExMyw3ICsxMTMs
NyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VM
b2FkZXJEZWxlZ2F0ZT4gbV9sb2FkZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRp
b25TZXNzaW9uVlQ+IG1faW1hZ2VSb3RhdGlvblNlc3Npb247CiAgICAgUmVmPFdlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbj4gbV9kZWNvbXByZXNzaW9uU2Vzc2lvbjsKLSAgICBXVEY6OkZ1bmN0
aW9uPHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiBtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdlZENh
bGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiBtX2VuY29kZWRE
YXRhU3RhdHVzQ2hhbmdlZENhbGxiYWNrOwogCiAgICAgU2FtcGxlTWFwIG1fc2FtcGxlRGF0YTsK
ICAgICBEZWNvZGVPcmRlclNhbXBsZU1hcDo6aXRlcmF0b3IgbV9jdXJzb3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oCmluZGV4IDUzZjAyYzE4MzAyZmZkM2FjZGZkYzQzYzk1ZjBiMjNiMTRiNWQ3
N2UuLmQ3MGM1MmY0YmMxYzQwMDgyYjdhMDI0MDJmZTdlOGMyZTI0MTBjNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbiogZGVjb21wcmVzc2lvblNlc3Npb24oKSBjb25zdCB7IHJldHVy
biBtX2RlY29tcHJlc3Npb25TZXNzaW9uLmdldCgpOyB9CiAKICAgICBSZXRhaW5QdHI8UGxhdGZv
cm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBvdmVycmlkZTsKLSAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZs
b2F0UmVjdCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24oKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggNGM0
YTE2Y2U1OTZlMTNiYjMyZGRjODU4NDdlOTg2OWY2NjE2ZjJjOS4uYWZlZWM3NzU5OGE1ZTFmNzQx
NWNmNTJjYzNmNmMxOWU2ODViMGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTIx
MSw3ICsyMTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVk
aWFTYW1wbGUmKSBmaW5hbDsKIAogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVW
aWRlb0Z1bGxzY3JlZW5MYXllcigpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlk
ZTsKIAogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMuaAppbmRleCA3Mjc1YWQ0ODBmZmMyNTNiZDMzYmI2MjY3NTI4MmZhMzljYTAxY2I4Li5jMjJl
NzI1Zjg1NDZmMjc4ZmY2NTdhNWY0YzU3MmI5Mjk1MTVlZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC02MCw3ICs2MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lk
IGludmFsaWRhdGUoKSBmaW5hbDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lk
IHNldExvZ2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGlkZW50aWZpZXIpIGZp
bmFsOworICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqIGlkZW50
aWZpZXIpIGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNz
ZXQoQVZBc3NldCopOwpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgV1RGOjpMb2dnZXIqIGxvZ2dlclB0cigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3QgTG9nZ2VyKiBsb2dn
ZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQq
IGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICNlbmRp
ZgogCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BhcnNlclN0YXRlV2Fz
UmVzZXQgeyBmYWxzZSB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRy
PGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBt
X2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CiAj
ZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaAppbmRleCAwMzQyMGYxMzgzNjRmYWMyMDkxZTEwNGQxMzZmZjM4YTFmYjlm
ZTIyLi5hYmQ2MTQwNDdhNDczZmM1ZWU2NDE4YjRkM2RjMmE4NDkyNDhmODEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAg
LTIxMCw3ICsyMTAsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU0Vycm9yPiBtX2hkY3BF
cnJvcjsKICAgICBCb3g8QmluYXJ5U2VtYXBob3JlPiBtX2hhc1Nlc3Npb25TZW1hcGhvcmU7CiAg
ICAgQm94PFNlbWFwaG9yZT4gbV9hYm9ydFNlbWFwaG9yZTsKLSAgICBjb25zdCBSZWY8V1RGOjpX
b3JrUXVldWU+IG1fYXBwZW5kUXVldWU7CisgICAgY29uc3QgUmVmPFdvcmtRdWV1ZT4gbV9hcHBl
bmRRdWV1ZTsKICAgICBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2RlY29t
cHJlc3Npb25TZXNzaW9uOwogCiAgICAgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogbV9tZWRp
YVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpD
LmgKaW5kZXggZGIwYzA3OTc2ZmMyMTViNjRlMmQwMmVmNzNiNjZhMTkyMjRhZDg2Yi4uMzBjY2Vj
YTA5YTI2ZWY3ZjI1MWM4NGQ5MDEzYTEwOWEyMDM5Nzg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFn
ZXJPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgZmluYWw7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3Jt
SW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRS
ZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZv
cm1JbWFnZVB0cikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyZDJmMTFhNDdkNjQ2ZGVkOTAx
MWI1YjJlOGUzZTIzZjZmNzY2MWVlLi42ZjcwNWVmYjZkZDUyMzdiNjM3ZjBiMzNiNmM2NGE1NjQw
YmEwMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMyMTcsNyArMzIxNyw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKCkKIAogICAgICAgICAgICAgTGF5ZXJQcm9wZXJ0
eUFuaW1hdGlvbiogZWFybGllc3RBbmltYXRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgVmVj
dG9yPFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPj4gY2FBbmltYXRpb25zOwotICAgICAgICAg
ICAgZm9yIChhdXRvKiBhbmltYXRpb24gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKGFuaW1hdGlv
bnMpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGFuaW1hdGlvbiA6IG1ha2VSZXZlcnNlZFJh
bmdlKGFuaW1hdGlvbnMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gYmVnaW5UaW1lID0g
YW5pbWF0aW9uLT5jb21wdXRlZEJlZ2luVGltZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghZWFybGllc3RBbmltYXRpb24gfHwgKmVhcmxpZXN0QW5pbWF0aW9uLT5jb21wdXRlZEJlZ2lu
VGltZSgpID4gKmJlZ2luVGltZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVhcmxpZXN0QW5p
bWF0aW9uID0gYW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKaW5kZXggNWQ0YWEw
YjVhNzMyOTIxMTFmMjI0MjdkYzZjMGFiYjY1YzQzMGVmZS4uNGIzMzU2YzM1NWU0ODBjODAwMjk0
NjdlMTFkN2QwMzg4Y2U1ZWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCkBAIC0xMTcs
NyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIENhaXJvU3RhdGU7CiAgICAgQ2Fpcm9T
dGF0ZSogbV9jYWlyb1N0YXRlOwotICAgIFdURjo6VmVjdG9yPENhaXJvU3RhdGU+IG1fY2Fpcm9T
dGF0ZVN0YWNrOworICAgIFZlY3RvcjxDYWlyb1N0YXRlPiBtX2NhaXJvU3RhdGVTdGFjazsKIAog
ICAgIC8vIFRyYW5zcGFyZW5jeSBsYXllcnMuCiAgICAgVmVjdG9yPGZsb2F0PiBtX2xheWVyczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCBhZjU5YTAxZTdhZmUxZjUzYThmYzdmMGFkM2Yw
YjQ5NzE1MDQ1OGJmLi45MjM4ZWE4NmRiNjQ4NTEwNTkxYTE3NWYyMDA3OWY4NmNhMWQ2NjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgU3RyaW5nIEltYWdl
QnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpv
cHRpb25hbDxkb3UKIAogc3RkOjp1bmlxdWVfcHRyPFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNo
ZXI+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjcmVhdGVGbHVzaGVyKCkKIHsKLSAgICByZXR1cm4g
V1RGOjptYWtlVW5pcXVlPFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXJDRz4oY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaHJlYWRTYWZlSW1h
Z2VCdWZmZXJGbHVzaGVyQ0c+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKIHZv
aWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnByZXBhcmVUb0RyYXdJbnRvQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCmluZGV4IGRlMTFlMzBmMWQ0YzEyNWNl
YTY4Njc0MTBjZTg4Y2RlZjExMzA4OGEuLjkxZDIzM2FjNGExNGFjZGRmODU1YmRjNGZhOTA3ZWY0
ZjRjMzIzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVi
bGljOgogICAgIHN0cnVjdCBTdWJpbWFnZUNhY2hlSGFzaCB7CiAgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goUHRySGFzaDxDR0ltYWdl
UmVmPjo6aGFzaChpbWFnZSksCisgICAgICAgICAgICByZXR1cm4gcGFpckludEhhc2goUHRySGFz
aDxDR0ltYWdlUmVmPjo6aGFzaChpbWFnZSksCiAgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlY3Qu
eSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3Vi
aW1hZ2VDYWNoZUVudHJ5JiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCmluZGV4IDVmOTI1MDY0OTIxMjA2ODQ0NjUzYjRiNWVh
NzJlNWZjODRiOGNiNGUuLjJhZDNlYjQ4YmQxMmQ1ZmFhZjU3NGY0NTM2NjhlYWUxZjAwMjcwNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXplLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6
ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9y
bWF0ID0gRm9ybWF0OjpCR1JBKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBXVEY6Ok1hY2hTZW5k
UmlnaHQmJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TZW5kUmlnaHQo
Y29uc3QgTWFjaFNlbmRSaWdodCYmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRl
RnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3Jl
YXRlRnJvbUltYWdlKENHSW1hZ2VSZWYpOwogICAgIApAQCAtMTE2LDcgKzExNiw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBtYXhpbXVtU2l6ZSgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1heGltdW1TaXplKEludFNpemUpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgV1RGOjpNYWNoU2VuZFJpZ2h0IGNyZWF0ZVNlbmRSaWdodCgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KCkg
Y29uc3Q7CiAKICAgICAvLyBBbnkgaW1hZ2VzIGNyZWF0ZWQgZnJvbSBhIHN1cmZhY2UgbmVlZCB0
byBiZSByZWxlYXNlZCBiZWZvcmUgcmVsZWFzaW5nCiAgICAgLy8gdGhlIHN1cmZhY2UsIG9yIGFu
IGV4cGVuc2l2ZSBHUFUgcmVhZGJhY2sgY2FuIHJlc3VsdC4KQEAgLTE1Niw3ICsxNTYsNyBAQCBw
dWJsaWM6CiAKICNpZiBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBhbGxvd0NvbnZlcnNpb25Gcm9tRm9ybWF0VG9Gb3JtYXQoRm9ybWF0
LCBGb3JtYXQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0Zvcm1h
dChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4p
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9Gb3JtYXQoc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4mJiBpblN1cmZhY2UsIEZvcm1hdCwgRnVu
Y3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+JiYpOwogI2Vu
ZGlmIC8vIEhBVkUoSU9TVVJGQUNFX0FDQ0VMRVJBVE9SKQogCiAjaWYgSEFWRShJT1NVUkZBQ0Vf
U0VUX09XTkVSU0hJUF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCmluZGV4IDEyMjI2MDM3Y2IxNTAzNzRmMDEwZWIz
MDA2MzFjMTQ1MTBjYjgxMmQuLjk0NDg4YTMyMTcwZWFjZDA0NTk3ZjUzNWViMzA2NTZkODU5N2Y2
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eUNvY29hLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlh
Q2FwYWJpbGl0aWVzSW5mbz4gY29tcHV0ZU1lZGlhQ2FwYWJpbGl0aWVzSW5mbyhjb25zdCBNCiAg
ICAgcmV0dXJuIGluZm87CiB9CiAKLXZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0NvbmZp
Z3VyYXRpb25Db2NvYShNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24s
IFdURjo6RnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYmKT4mJiBj
YWxsYmFjaykKK3ZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25Db2Nv
YShNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIEZ1bmN0aW9uPHZv
aWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+JiYgY2FsbGJhY2spCiB7CiAgICAg
YXV0byBpbmZvID0gY29tcHV0ZU1lZGlhQ2FwYWJpbGl0aWVzSW5mbyhjb25maWd1cmF0aW9uKTsK
ICAgICBpZiAoIWluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnlDb2NvYS5oCmluZGV4IDU1OTNmYTQ3MGJiZDA0OWYwMjc1ZDYwMWM3ZGUyZjcwYjhm
NTM4NWIuLjZkNjI5NDlhYThiZGM0ZGUxMzI0Y2VhMTM4NGZhNDgzZjAxMTg4ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBNZWRpYUNhcGFiaWxpdGll
c0RlY29kaW5nSW5mbzsKIHN0cnVjdCBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbjsKIAotZXh0
ZXJuIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25Db2NvYShNZWRp
YURlY29kaW5nQ29uZmlndXJhdGlvbiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmls
aXRpZXNEZWNvZGluZ0luZm8mJik+JiYpOworZXh0ZXJuIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25Db2NvYShNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmLCBG
dW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvJiYpPiYmKTsKIAogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IGMyMTAxYTY5MjlhYWVmOTA5NjQwYjc5MThiZjI1
YWU2NmViOTdhMzguLmE2NTY2NDljNWI2NDdhZmZhOGQxMjgzNjkxMDVmZWQwN2E5OTVmMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
PiBtX3NlZ21lbnQ7CiAgICAgfTsKIAotICAgIHVzaW5nIENhbGxPbkNsaWVudFRocmVhZENhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKT47CisgICAg
dXNpbmcgQ2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9u
PHZvaWQoKT4mJik+OwogICAgIHZvaWQgc2V0Q2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2soQ2Fs
bE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2smJik7CiAKICAgICAvLyBhcHBlbmREYXRhIHdpbGwgYmUg
Y2FsbGVkIG9uIHRoZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBkYXRhIHBhcnNlciBxdWV1
ZS4KQEAgLTk5LDQwICs5OSw0MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9u
KGZsb2F0KTsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TG9nZ2VyKGNvbnN0IFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCog
bG9nSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0
aGUgbWFpbiB0aHJlYWQuCiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNl
QnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIHVzaW5nIERp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5p
dGlhbGl6YXRpb25TZWdtZW50JiYpPjsKKyAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJik+Owog
ICAgIHZvaWQgc2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhEaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2Rp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKICAg
ICB9CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdXNp
bmcgRGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQodWludDY0X3QgZXJyb3JDb2RlKT47CisgICAgdXNpbmcgRGlkRW5jb3VudGVyRXJyb3JE
dXJpbmdQYXJzaW5nQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IGVycm9yQ29kZSk+
OwogICAgIHZvaWQgc2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soRGlk
RW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIG1fZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsKICAgICB9CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuCi0gICAgdXNpbmcgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3Ry
aW5nJiBtZWRpYVR5cGUpPjsKKyAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUpPjsKICAgICB2b2lkIHNldERpZFByb3ZpZGVNZWRpYURhdGFD
YWxsYmFjayhEaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAg
ICAgICAgIG1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7
CiAgICAgfQogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFy
c2VyIHRoZWFkLgotICAgIHVzaW5nIFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQodWludDY0
X3QgdHJhY2tJRCk+OworICAgIHVzaW5nIFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90
IHRyYWNrSUQpPjsKICAgICB2b2lkIHNldFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soV2lsbFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgbV93aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25E
YXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgfQogCiAgICAg
Ly8gV2lsbCBiZSBjYWxsZWQgc3luY2hyb25vdXNseSBvbiB0aGUgcGFyc2VyIHRoZWFkLgotICAg
IHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRy
YWNrSURDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8VWludDhBcnJheT4mJiwgdWlu
dDY0X3QgdHJhY2tJRCk+OworICAgIHVzaW5nIERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdElu
aXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPFVp
bnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKICAgICB2b2lkIHNldERpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhEaWRQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJh
Y2smJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDcyZTA5OTM4MWMzNjkw
ZGI3Y2I2ODNmNzM2ZmZkN2JjMzU4ZGZmMjcuLmJmNDczN2VmMDU0ZmRkYzI1YjQ5YWUyYzMyYTI0
OTU4MGZkOTA4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01ODks
OCArNTg5LDggQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY28KICAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICBhdXRvIGNv
bnRhaW5lclR5cGUgPSB0eXBlLmNvbnRhaW5lclR5cGUoKTsKLSAgICBib29sIGlzQXVkaW9Db250
YWluZXJUeXBlID0gV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5lclR5cGUsICJh
dWRpby93ZWJtIik7Ci0gICAgYm9vbCBpc1ZpZGVvQ29udGFpbmVyVHlwZSA9IFdURjo6ZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAidmlkZW8vd2VibSIpOworICAgIGJvb2wg
aXNBdWRpb0NvbnRhaW5lclR5cGUgPSBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5lclR5
cGUsICJhdWRpby93ZWJtIik7CisgICAgYm9vbCBpc1ZpZGVvQ29udGFpbmVyVHlwZSA9IGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UoY29udGFpbmVyVHlwZSwgInZpZGVvL3dlYm0iKTsKICAgICBpZiAo
IWlzQXVkaW9Db250YWluZXJUeXBlICYmICFpc1ZpZGVvQ29udGFpbmVyVHlwZSkKICAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiAg
ICAgCkBAIC02NzMsMTAgKzY3MywxMCBAQCBSZWZQdHI8U291cmNlQnVmZmVyUGFyc2VyV2ViTT4g
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Y3JlYXRlKGNvbnN0IENvbnRlbnRUeXBlJgogfQogCiBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkKLSAgICA6IG1f
cmVhZGVyKFdURjo6bWFrZVVuaXF1ZVJlZjxTZWdtZW50UmVhZGVyPigpKQorICAgIDogbV9yZWFk
ZXIobWFrZVVuaXF1ZVJlZjxTZWdtZW50UmVhZGVyPigpKQogewogICAgIGlmIChpc1dlYm1QYXJz
ZXJBdmFpbGFibGUoKSkKLSAgICAgICAgbV9wYXJzZXIgPSBXVEY6Om1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFdlYm1QYXJzZXI+KCk7CisgICAgICAgIG1fcGFyc2VyID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKIH0KIAogU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6flNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQpAQCAtOTIxLDcgKzkyMSw3
IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwoY29uc3QgRWxlbWVudE1l
dGFkYXRhJiBtZXRhZGF0YSwgY29uc3QgRWJtCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjpDb2RlKEVycm9yQ29kZTo6SW52YWxpZERvY1R5cGUpKTsKIAogICAgIG1faW5pdGlhbGl6YXRp
b25TZWdtZW50RW5jb3VudGVyZWQgPSB0cnVlOwotICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50
ID0gV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxJbml0aWFsaXphdGlvblNl
Z21lbnQ+KCk7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxJbml0aWFsaXphdGlvblNlZ21lbnQ+KCk7CiAgICAgLy8gVE9ETzog
U2V0dGluZyB0aGlzIHRvIGZhbHNlIGhlcmUsIHdpbGwgcHJldmVudCBhZGRpbmcgYSBuZXcgbWVk
aWEgc2VnbWVudCBzaG91bGQgYQogICAgIC8vIHBhcnRpYWwgaW5pdCBzZWdtZW50IGJlIGVuY291
bnRlcmVkIGFmdGVyIGEgY2FsbCB0byBzb3VyY2VCdWZmZXIuYWJvcnQoKS4KICAgICAvLyBJdCdz
IHByb2JhYmx5IGZpbmUgYXMgbm8tb25lIGluIHRoZWlyIHJpZ2h0IG1pbmQgc2hvdWxkIHNlbmQg
cGFydGlhbCBpbml0IHNlZ21lbnQgb25seQpAQCAtMTIwOCw3ICsxMjA4LDcgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpwcm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4gc2FtcGwKICAgICB9KTsKIH0KIAotI2RlZmluZSBQQVJTRVJfTE9HX0VSUk9SX0lG
X1BPU1NJQkxFKC4uLikgaWYgKHBhcnNlcigpLmxvZ2dlclB0cigpKSBwYXJzZXIoKS5sb2dnZXJQ
dHIoKS0+ZXJyb3IobG9nQ2hhbm5lbCgpLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIo
bG9nQ2xhc3NOYW1lKCksIF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVudGlmaWVyKCkpLCBfX1ZB
X0FSR1NfXykKKyNkZWZpbmUgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSguLi4pIGlmIChw
YXJzZXIoKS5sb2dnZXJQdHIoKSkgcGFyc2VyKCkubG9nZ2VyUHRyKCktPmVycm9yKGxvZ0NoYW5u
ZWwoKSwgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFzc05hbWUoKSwgX19mdW5jX18s
IHBhcnNlcigpLmxvZ0lkZW50aWZpZXIoKSksIF9fVkFfQVJHU19fKQogCiBSZXRhaW5QdHI8Q01C
bG9ja0J1ZmZlclJlZj4gU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1
b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDBiMmVhYjJkMDUyNWY2ZTQ4
NmRlMWMwNDYwMzQ3OThhOTQ1YTQ3NWUuLmMxOWU3ZjdkM2U5ZDYzNGRjNWI3ZDE3MGJmYzgxYjM3
Y2UyMjI1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTgzLDEwICs4Mywx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdBdWRpb0J1ZmZlcnMoKTsKICAgICB2
b2lkIHNldE1pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9uKGZsb2F0KTsKICAgICAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldExvZ2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQq
IGlkZW50aWZpZXIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nZ2VyKGNv
bnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqIGlkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgdm9pZCBw
cm92aWRlTWVkaWFEYXRhKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4sIHVpbnQ2NF90LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gYnl0ZVJhbmdlT2Zmc2V0KTsKLSAgICB1c2luZyBEaWRQYXJz
ZVRyaW1taW5nRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IHRyYWNr
SUQsIGNvbnN0IE1lZGlhVGltZSYgZGlzY2FyZFBhZGRpbmcpPjsKKyAgICB1c2luZyBEaWRQYXJz
ZVRyaW1taW5nRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lELCBj
b25zdCBNZWRpYVRpbWUmIGRpc2NhcmRQYWRkaW5nKT47CiAgICAgdm9pZCBzZXREaWRQYXJzZVRy
aW1taW5nRGF0YUNhbGxiYWNrKERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2smJiBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIG1fZGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQg
bV9taW5pbXVtU2FtcGxlRHVyYXRpb24geyAyIH07CiAgICAgfTsKIAotICAgIGNvbnN0IFdURjo6
TG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAg
IGNvbnN0IExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7
IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJ
ZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6CkBAIC0yOTMsNyArMjkzLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX3Jld2luZFRvUG9zaXRpb247CiAgICAgZmxvYXQg
bV9taW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbiB7IDIgfTsKIAotICAgIFJlZlB0cjxjb25zdCBX
VEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7
CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogICAgIHVpbnQ2
NF90IG1fbmV4dENoaWxkSWRlbnRpZmllciB7IDAgfTsKICAgICBEaWRQYXJzZVRyaW1taW5nRGF0
YUNhbGxiYWNrIG1fZGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2Nv
YS5oCmluZGV4IDc0M2JlNDU1ZjNiZjY2YjRmZmRkNDg2YzIzMTRmMjgxNWNhZjViODguLjk0MTBh
N2M0Nzk2MzQ3MDRlYjU5Yzk5OTYwMzQ4NDRiNjlhODg3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2Eu
aApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gbV9oYXJkd2FyZURlY29kZXJEaXNhYmxlZDsKICAgICBzdGQ6Om9wdGlvbmFsPFNjcmVl
bkRhdGFPdmVycmlkZXM+IG1fc2NyZWVuU2l6ZUFuZFNjYWxlOwotICAgIFdURjo6RnVuY3Rpb248
dm9pZCgpPiBtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2s7CisgICAgRnVuY3Rpb248dm9p
ZCgpPiBtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENW
QU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRS5oCmluZGV4IDU2MGVlODBiYTQ0N2M5MDVhZDQzYzU3MTRhYjc4ZTA5N2Rk
OWRlZDcuLmZiMTRkM2JiY2U5OTUxMWQ0MzAxZjEyNTFiNzA1ZjJkZTRkZDY2MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRS5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgVW5z
YWZlUG9pbnRlcjxJT1N1cmZhY2VSZWY+IG1fbGFzdFN1cmZhY2U7CiAgICAgdWludDMyX3QgbV9s
YXN0U3VyZmFjZVNlZWQgeyAwIH07CiAKLSAgICB1c2luZyBUZXh0dXJlU2VlZE1hcCA9IEhhc2hN
YXA8R0NHTHVpbnQsIHVuc2lnbmVkLCBXVEY6OkludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj47CisgICAgdXNpbmcgVGV4dHVyZVNl
ZWRNYXAgPSBIYXNoTWFwPEdDR0x1aW50LCB1bnNpZ25lZCwgSW50SGFzaDxHQ0dMdWludD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+PjsKICAgICBUZXh0dXJl
U2VlZE1hcCBtX2xhc3RUZXh0dXJlU2VlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
CmluZGV4IGRmZjQxNDQyNjE5NjdiZmU4ZGUyZGVjOTJjNmY5Mzk4MzJkZTE3ZTguLjgzZmNiODQ4
ZjQxODJjNzQzMTlmMzBiNjg1MGU1MTRhZTVjNDZkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlz
cGxheUxpc3QgewogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi1XVEY6
OkNTdHJpbmcgRGlzcGxheUxpc3Q6OmRlc2NyaXB0aW9uKCkgY29uc3QKK0NTdHJpbmcgRGlzcGxh
eUxpc3Q6OmRlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHRzOwogICAgIHRz
IDw8ICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA1Y2IxM2RkYmJiY2MxZTc2NTQw
NDY5OTNmOWRiMDJiZTlhYzk3NGE0Li4xM2NkNWU3YzRkNTk5ZmYyMzFkOGQ1OGFkNTRmYTk3NjJl
M2Q0M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9H
X0RJU0FCTEVECi0gICAgV1RGOjpDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAgQ1N0
cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHVtcCgp
IGNvbnN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oCmluZGV4IDQ2ZTlmYTg2YWFiNmJhNDQ5NWNjNDZhZGI3NmFmNDY3ZmU1YmEzNTguLjg4YjZh
OGIyNmYwNTQ1OWVkZTZkMzZkYWQzNmZkZDNiNDJkZWQ2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAg
SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2VuZCkKICAgICAgICAgOiBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlcihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGJhY2tlbmQpKQogICAg
ICAgICAsIG1fZHJhd2luZ0NvbnRleHQobG9naWNhbFNpemUoKSwgYmFzZVRyYW5zZm9ybSgpKQot
ICAgICAgICAsIG1fd3JpdGluZ0NsaWVudChXVEY6Om1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5
TGlzdDo6V3JpdGluZ0NsaWVudD4oKSkKLSAgICAgICAgLCBtX3JlYWRpbmdDbGllbnQoV1RGOjpt
YWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ+KCkpCisgICAgICAg
ICwgbV93cml0aW5nQ2xpZW50KG1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGlu
Z0NsaWVudD4oKSkKKyAgICAgICAgLCBtX3JlYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJbk1lbW9y
eURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50PigpKQogICAgIHsKICAgICAgICAgbV9kcmF3aW5n
Q29udGV4dC5kaXNwbGF5TGlzdCgpLnNldEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50KG1fd3JpdGlu
Z0NsaWVudC5nZXQoKSk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS5z
ZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudChtX3JlYWRpbmdDbGllbnQuZ2V0KCkpOwpAQCAtNjIs
OCArNjIsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBSZWNvcmRlckltcGw6OkRlbGVnYXRlKiBkZWxl
Z2F0ZSA9IG51bGxwdHIpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIocGFyYW1l
dGVycykKICAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFu
c2Zvcm0oKSwgZGVsZWdhdGUpCi0gICAgICAgICwgbV93cml0aW5nQ2xpZW50KFdURjo6bWFrZVVu
aXF1ZTxJbk1lbW9yeURpc3BsYXlMaXN0OjpXcml0aW5nQ2xpZW50PigpKQotICAgICAgICAsIG1f
cmVhZGluZ0NsaWVudChXVEY6Om1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGlu
Z0NsaWVudD4oKSkKKyAgICAgICAgLCBtX3dyaXRpbmdDbGllbnQobWFrZVVuaXF1ZTxJbk1lbW9y
eURpc3BsYXlMaXN0OjpXcml0aW5nQ2xpZW50PigpKQorICAgICAgICAsIG1fcmVhZGluZ0NsaWVu
dChtYWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ+KCkpCiAgICAg
ewogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuc2V0SXRlbUJ1ZmZlcldy
aXRpbmdDbGllbnQobV93cml0aW5nQ2xpZW50LmdldCgpKTsKICAgICAgICAgbV9kcmF3aW5nQ29u
dGV4dC5kaXNwbGF5TGlzdCgpLnNldEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KG1fcmVhZGluZ0Ns
aWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKaW5k
ZXggZWNhNTM1ODYyOWIwMjdhMzZlZDg3ZTY5ZDQzOTgwMTQ3ZTE2N2JmMy4uOGViM2IyYmMwY2Yx
OWViMjMxOGU0NWE5ZTg2YTUxOTM5NDQyMDBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9y
eURpc3BsYXlMaXN0LmNwcApAQCAtNTIsOCArNTIsOCBAQCBzdGQ6Om9wdGlvbmFsPEl0ZW1IYW5k
bGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBJbk1lbW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50
OgogfQogCiBJbk1lbW9yeURpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0KCkKLSAgICA6
IG1fd3JpdGluZ0NsaWVudChXVEY6Om1ha2VVbmlxdWU8V3JpdGluZ0NsaWVudD4oKSkKLSAgICAs
IG1fcmVhZGluZ0NsaWVudChXVEY6Om1ha2VVbmlxdWU8UmVhZGluZ0NsaWVudD4oKSkKKyAgICA6
IG1fd3JpdGluZ0NsaWVudChtYWtlVW5pcXVlPFdyaXRpbmdDbGllbnQ+KCkpCisgICAgLCBtX3Jl
YWRpbmdDbGllbnQobWFrZVVuaXF1ZTxSZWFkaW5nQ2xpZW50PigpKQogewogICAgIHNldEl0ZW1C
dWZmZXJXcml0aW5nQ2xpZW50KG1fd3JpdGluZ0NsaWVudC5nZXQoKSk7CiAgICAgc2V0SXRlbUJ1
ZmZlclJlYWRpbmdDbGllbnQobV9yZWFkaW5nQ2xpZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1
ci5jcHAKaW5kZXggMDhlODVhMDhhYTAxYjA4MTIyM2YzNmViYjZiYmI4YWIzNjM5NDM2NS4uMGY2
ZWU4N2Y5NWU3NTc1MTg2M2ZkMmU1ZjU0OWU3NGQ5NzI5ZGIxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1
ci5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCBpbmxpbmUgdm9pZCBhY2NlbGVyYXRlQm94Qmx1cihV
aW50OENsYW1wZWRBcnJheSYgaW9CdWZmZXIsIFVpbnQ4Q2xhbXBlZEFycmF5JiB0ZQogICAgIHZJ
bWFnZUJveENvbnZvbHZlX0FSR0I4ODg4KCZlZmZlY3RJbkJ1ZmZlciwgJmVmZmVjdE91dEJ1ZmZl
ciwgdG1wQnVmZmVyLCAwLCAwLCBrZXJuZWxTaXplLCBrZXJuZWxTaXplLCAwLCBrdkltYWdlRWRn
ZUV4dGVuZCk7CiAgICAgdkltYWdlQm94Q29udm9sdmVfQVJHQjg4ODgoJmVmZmVjdE91dEJ1ZmZl
ciwgJmVmZmVjdEluQnVmZmVyLCB0bXBCdWZmZXIsIDAsIDAsIGtlcm5lbFNpemUsIGtlcm5lbFNp
emUsIDAsIGt2SW1hZ2VFZGdlRXh0ZW5kKTsKICAgICB2SW1hZ2VCb3hDb252b2x2ZV9BUkdCODg4
OCgmZWZmZWN0SW5CdWZmZXIsICZlZmZlY3RPdXRCdWZmZXIsIHRtcEJ1ZmZlciwgMCwgMCwga2Vy
bmVsU2l6ZSwga2VybmVsU2l6ZSwgMCwga3ZJbWFnZUVkZ2VFeHRlbmQpOwotICAgIFdURjo6ZmFz
dEZyZWUodG1wQnVmZmVyKTsKKyAgICBmYXN0RnJlZSh0bXBCdWZmZXIpOwogCiAgICAgLy8gVGhl
IGZpbmFsIHJlc3VsdCBzaG91bGQgYmUgc3RvcmVkIGluIGlvQnVmZmVyLgogICAgIEFTU0VSVChp
b0J1ZmZlci5sZW5ndGgoKSA9PSB0ZW1wQnVmZmVyLmxlbmd0aCgpKTsKQEAgLTM5OSw3ICszOTks
NyBAQCBpbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseShVaW50OENsYW1w
ZWRBcnJheSYgaW9CdWZmZXIsIFVpbnQ4Q2xhbQogICAgIGludCBvcHRpbWFsVGhyZWFkTnVtYmVy
ID0gKHBhaW50U2l6ZS53aWR0aCgpICogcGFpbnRTaXplLmhlaWdodCgpKSAvIChzX21pbmltYWxS
ZWN0RGltZW5zaW9uICsgZXh0cmFIZWlnaHQgKiBwYWludFNpemUud2lkdGgoKSk7CiAKICAgICBp
ZiAob3B0aW1hbFRocmVhZE51bWJlciA+IDEpIHsKLSAgICAgICAgV1RGOjpQYXJhbGxlbEpvYnM8
UGxhdGZvcm1BcHBseVBhcmFtZXRlcnM+IHBhcmFsbGVsSm9icygmcGxhdGZvcm1BcHBseVdvcmtl
ciwgb3B0aW1hbFRocmVhZE51bWJlcik7CisgICAgICAgIFBhcmFsbGVsSm9iczxQbGF0Zm9ybUFw
cGx5UGFyYW1ldGVycz4gcGFyYWxsZWxKb2JzKCZwbGF0Zm9ybUFwcGx5V29ya2VyLCBvcHRpbWFs
VGhyZWFkTnVtYmVyKTsKIAogICAgICAgICBpbnQgam9icyA9IHBhcmFsbGVsSm9icy5udW1iZXJP
ZkpvYnMoKTsKICAgICAgICAgaWYgKGpvYnMgPiAxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCBkZjE3
NmY4ZTA3MGE0MThjMjA4NTE4MDkwZWU3YTZjYTExM2U1NmY1Li42NTliMTA1NWY2MWVhYWJjNWYy
OTk5MWRhMGRhMWE1ODUwNzFhZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTM0OSw3ICszNDksNyBA
QCB2b2lkIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlHZW5lcmljKGNvbnN0IExpZ2h0aW5nRGF0
YSYgZGF0YSwgY29uc3QgTGlnaHRTb3VyYwogICAgIHVuc2lnbmVkIG9wdGltYWxUaHJlYWROdW1i
ZXIgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oKChkYXRhLndpZHRoRGVjcmVhc2VkQnlPbmUgLSAxKSAq
IHJvd3NUb1Byb2Nlc3MpIC8gc19taW5pbWFsUmVjdERpbWVuc2lvbiwgbWF4TnVtVGhyZWFkcyk7
CiAgICAgaWYgKG9wdGltYWxUaHJlYWROdW1iZXIgPiAxKSB7CiAgICAgICAgIC8vIEluaXRpYWxp
emUgcGFyYWxsZWwgam9icwotICAgICAgICBXVEY6OlBhcmFsbGVsSm9iczxQbGF0Zm9ybUFwcGx5
R2VuZXJpY1BhcmFtZXRlcnM+IHBhcmFsbGVsSm9icygmcGxhdGZvcm1BcHBseUdlbmVyaWNXb3Jr
ZXIsIG9wdGltYWxUaHJlYWROdW1iZXIpOworICAgICAgICBQYXJhbGxlbEpvYnM8UGxhdGZvcm1B
cHBseUdlbmVyaWNQYXJhbWV0ZXJzPiBwYXJhbGxlbEpvYnMoJnBsYXRmb3JtQXBwbHlHZW5lcmlj
V29ya2VyLCBvcHRpbWFsVGhyZWFkTnVtYmVyKTsKIAogICAgICAgICAvLyBGaWxsIHRoZSBwYXJh
bWV0ZXIgYXJyYXkKICAgICAgICAgaW50IGpvYiA9IHBhcmFsbGVsSm9icy5udW1iZXJPZkpvYnMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUxpZ2h0aW5nLmgKaW5kZXggMGZmZmNkMDY0Mzk2ZDhmNGI2NDA4MjI2OWNjMjA3NGY3YzlkYmRi
Yy4uYjBiYjcwYTE0ZDE3NDk1MDY3MzdlODhlMDUxNGVlNzk2ODIwYTQ0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgK
QEAgLTExNyw5ICsxMTcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGlubGluZSBJbnRTaXplIGJv
dHRvbVJpZ2h0Tm9ybWFsKGludCBvZmZzZXQpIGNvbnN0OwogICAgIH07CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUeXBlPgotICAgIGZyaWVuZCBjbGFzcyBQYXJhbGxlbEpvYnM7Ci0KICAgICBz
dHJ1Y3QgUGxhdGZvcm1BcHBseUdlbmVyaWNQYXJhbWV0ZXJzIHsKICAgICAgICAgRkVMaWdodGlu
ZyogZmlsdGVyOwogICAgICAgICBMaWdodGluZ0RhdGEgZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApp
bmRleCA4YTdlNWI2NjdhYjc3M2I5MGI4OTBlMzgzODYzOTM1NjJiOWQ4ZGY1Li42YWUzZDk4OTg2
NjI2ZTA3YzA5NGM1ODZmMzE5OGM5YzU4ZGFlZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCkBAIC0y
MDUsNyArMjA1LDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHkoY29uc3QgUGFp
bnRpbmdEYXRhJiBwYWludGluZ0RhdGEpCiAgICAgdW5zaWduZWQgbWF4TnVtVGhyZWFkcyA9IHBh
aW50aW5nRGF0YS5oZWlnaHQgLyA4OwogICAgIHVuc2lnbmVkIG9wdGltYWxUaHJlYWROdW1iZXIg
PSBzdGQ6Om1pbjx1bnNpZ25lZD4oKHBhaW50aW5nRGF0YS53aWR0aCAqIHBhaW50aW5nRGF0YS5o
ZWlnaHQgKiBrZXJuZWxGYWN0b3IpIC8gbWluaW1hbEFyZWEsIG1heE51bVRocmVhZHMpOwogICAg
IGlmIChvcHRpbWFsVGhyZWFkTnVtYmVyID4gMSkgewotICAgICAgICBXVEY6OlBhcmFsbGVsSm9i
czxQbGF0Zm9ybUFwcGx5UGFyYW1ldGVycz4gcGFyYWxsZWxKb2JzKCZXZWJDb3JlOjpGRU1vcnBo
b2xvZ3k6OnBsYXRmb3JtQXBwbHlXb3JrZXIsIG9wdGltYWxUaHJlYWROdW1iZXIpOworICAgICAg
ICBQYXJhbGxlbEpvYnM8UGxhdGZvcm1BcHBseVBhcmFtZXRlcnM+IHBhcmFsbGVsSm9icygmV2Vi
Q29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5V29ya2VyLCBvcHRpbWFsVGhyZWFkTnVt
YmVyKTsKICAgICAgICAgYXV0byBudW1PZlRocmVhZHMgPSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZK
b2JzKCk7CiAgICAgICAgIGlmIChudW1PZlRocmVhZHMgPiAxKSB7CiAgICAgICAgICAgICAvLyBT
cGxpdCB0aGUgam9iIGludG8gImpvYlNpemUiLXNpemVkIGpvYnMgYnV0IHRoZXJlIGEgZmV3IGpv
YnMgdGhhdCBuZWVkIHRvIGJlIHNsaWdodGx5IGxhcmdlciBzaW5jZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
CmluZGV4IGFjMjM0NmU4YTRiYTU4YWFhOTI0YTZkNjdiZDVlNGI3N2RkMjI2OGYuLjc3NGU2ODJl
M2I0ODU5YmI2ZTIwNmExZDJiZmFlYjBjZWE5MTlmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAg
LTQyOCw3ICs0MjgsNyBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICB1bnNpZ25lZCBtYXhOdW1UaHJlYWRzID0gaGVpZ2h0IC8gODsKICAgICB1bnNpZ25l
ZCBvcHRpbWFsVGhyZWFkTnVtYmVyID0gc3RkOjptaW48dW5zaWduZWQ+KGFyZWEgLyBzX21pbmlt
YWxSZWN0RGltZW5zaW9uLCBtYXhOdW1UaHJlYWRzKTsKICAgICBpZiAob3B0aW1hbFRocmVhZE51
bWJlciA+IDEpIHsKLSAgICAgICAgV1RGOjpQYXJhbGxlbEpvYnM8RmlsbFJlZ2lvblBhcmFtZXRl
cnM+IHBhcmFsbGVsSm9icygmV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uV29ya2Vy
LCBvcHRpbWFsVGhyZWFkTnVtYmVyKTsKKyAgICAgICAgUGFyYWxsZWxKb2JzPEZpbGxSZWdpb25Q
YXJhbWV0ZXJzPiBwYXJhbGxlbEpvYnMoJldlYkNvcmU6OkZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lv
bldvcmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7CiAKICAgICAgICAgLy8gRmlsbCB0aGUgcGFy
YW1ldGVyIGFycmF5CiAgICAgICAgIGF1dG8gbnVtSm9icyA9IHBhcmFsbGVsSm9icy5udW1iZXJP
ZkpvYnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggYjlmZTliYjlhYTY4NjA2
N2MxMWZkYTU2MjgzMDRhYjQ4YmJiNmFlZS4uMDE2MDVmYzkxNDk3ZTQ2MmJhMDc3MzA0NzhlODRh
ODU1MWU2NzIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTM3Niw3ICszNzYs
NyBAQCBzdGF0aWMgdm9pZCBzaW1wbGVCdXNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVz
c2FnZSogbWVzc2FnZSwgR3N0QmluKiBwaXBlbAogICAgIGNhc2UgR1NUX01FU1NBR0VfRVJST1I6
CiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QocGlwZWxpbmUsICJHb3QgbWVzc2FnZTogJSIgR1NU
X1BUUl9GT1JNQVQsIG1lc3NhZ2UpOwogICAgICAgICB7Ci0gICAgICAgICAgICBXVEY6OlN0cmlu
ZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoR1NUX09CSkVDVF9OQU1FKHBpcGVsaW5lKSwgIl9l
cnJvciIpOworICAgICAgICAgICAgU3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0cmluZyhHU1Rf
T0JKRUNUX05BTUUocGlwZWxpbmUpLCAiX2Vycm9yIik7CiAgICAgICAgICAgICBHU1RfREVCVUdf
QklOX1RPX0RPVF9GSUxFX1dJVEhfVFMocGlwZWxpbmUsIEdTVF9ERUJVR19HUkFQSF9TSE9XX0FM
TCwgZG90RmlsZU5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CkBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIHZvaWQgc2ltcGxlQnVzTWVzc2FnZUNhbGxiYWNr
KEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEdzdEJpbiogcGlwZWwKICAgICAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShuZXdTdGF0ZSksCiAgICAgICAgICAgICAg
ICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogCi0gICAgICAgICAgICBX
VEY6OlN0cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICBTdHJpbmcg
ZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKAogICAgICAgICAgICAgICAgIEdTVF9PQkpFQ1RfTkFN
RShwaXBlbGluZSksICdfJywKICAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRf
bmFtZShvbGRTdGF0ZSksICdfJywKICAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9n
ZXRfbmFtZShuZXdTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyLmNwcAppbmRleCA4OGMxNGQzYzFlY2ZlNGM2Y2E5Mjk1ODA2YmJlYjU4ZWY2YmUyMDE1Li5j
NmEzZjI5NTBiMTVmNThjNGE5ODIxMjNkNmU3MDJkMGU2ODAyN2Y0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtNTA0LDcgKzUwNCw3IEBAIGJvb2wg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0NvZGVjU3VwcG9ydGVkKENvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbiwgY29uCiB7CiAgICAgLy8gSWYgdGhlIGNvZGVjIGlzIG5hbWVkIGxpa2Ug
YSBtaW1ldHlwZSAoZWc6IHZpZGVvL2F2YykgcmVtb3ZlIHRoZSAidmlkZW8vIiBwYXJ0LgogICAg
IHNpemVfdCBzbGFzaEluZGV4ID0gY29kZWMuZmluZCgnLycpOwotICAgIFN0cmluZyBjb2RlY05h
bWUgPSBzbGFzaEluZGV4ICE9IFdURjo6bm90Rm91bmQgPyBjb2RlYy5zdWJzdHJpbmcoc2xhc2hJ
bmRleCArIDEpIDogY29kZWM7CisgICAgU3RyaW5nIGNvZGVjTmFtZSA9IHNsYXNoSW5kZXggIT0g
bm90Rm91bmQgPyBjb2RlYy5zdWJzdHJpbmcoc2xhc2hJbmRleCArIDEpIDogY29kZWM7CiAKICAg
ICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOwogICAgIGlmIChjb2RlY05hbWUuc3RhcnRzV2l0aCgi
YXZjMSIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDUyZGE3M2Q4
YmJhY2VjZTA1ZWIyNGQ1NmM4ZGM4ZjE5NjI2YjVjMzEuLjY2ZjMzNzI4NDZhNGRmODc0ZjQyMGRi
NjU0ZTY4OWM5ZTQzYjBjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVy
bWluZVByb3BlcnRpZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGlj
IGJvb2wgY2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIHZvaWQg
c2V0RW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoRW5j
b2RlZERhdGFTdGF0dXMpPiYmIGNhbGxiYWNrKSBmaW5hbCB7IG1fZW5jb2RlZERhdGFTdGF0dXND
aGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQorICAgIHZvaWQgc2V0RW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VDYWxsYmFjayhGdW5jdGlvbjx2b2lkKEVuY29kZWREYXRhU3RhdHVz
KT4mJiBjYWxsYmFjaykgZmluYWwgeyBtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdlZENhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayk7IH0KICAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0
YVN0YXR1cygpIGNvbnN0IGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwog
ICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zYW1wbGVEYXRh
LnNpemUoKTsgfQpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBJbWFn
ZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHNhbXBsZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKIAot
ICAgIFdURjo6RnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+IG1fZW5jb2RlZERhdGFT
dGF0dXNDaGFuZ2VkQ2FsbGJhY2s7CisgICAgRnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1
cyk+IG1fZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkQ2FsbGJhY2s7CiAgICAgU2FtcGxlTWFwIG1f
c2FtcGxlRGF0YTsKICAgICBEZWNvZGVPcmRlclNhbXBsZU1hcDo6aXRlcmF0b3IgbV9jdXJzb3I7
CiAgICAgTG9jayBtX3NhbXBsZUdlbmVyYXRvckxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlm
aWVyLmgKaW5kZXggZDJjYzgxZDU4NGQ0N2MwYzMyMDcyNTkyYWVjNjE4MGFiNjM3NWE1YS4uZWJi
NDFhYmY4Y2Q0NGZmYzViNjZlMDMxOWM1Mjk2MDYzY2NlNTg4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhy
ZWFkTm90aWZpZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghYWRk
UGVuZGluZ05vdGlmaWNhdGlvbihub3RpZmljYXRpb25UeXBlKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBub3RpZmljYXRpb25UeXBlLCBjYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZCgpPihXVEZNb3ZlKGNhbGxiYWNrRnVuY3RvcikpXSB7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IG5vdGlmaWNhdGlvblR5cGUsIGNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPihXVEZNb3ZlKGNh
bGxiYWNrRnVuY3RvcikpXSB7CiAgICAgICAgICAgICBpZiAoIW1faXNWYWxpZC5sb2FkKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKHJlbW92ZVBlbmRpbmdOb3Rp
ZmljYXRpb24obm90aWZpY2F0aW9uVHlwZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5jcHAKaW5kZXggODM0
MjRiMjk4OGMzZWJkZDI3YzNiOGQ5NzJiMjE2ZTdhZGEwNGVkMS4uYTE2NGQyZjhmZjBhMWFmM2I4
MGZjNWQwNTQ4MjExNmYwNzk0NDQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcApAQCAtNDQsNyAr
NDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24m
JiBjb25maWd1cmF0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNv
ZGluZ0luZm8mJik+JiYgY2FsbGJhY2spCit2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdD
b25maWd1cmF0aW9uR1N0cmVhbWVyKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmln
dXJhdGlvbiwgRnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYmKT4m
JiBjYWxsYmFjaykKIHsKICAgICBib29sIGlzTWVkaWFTb3VyY2UgPSBjb25maWd1cmF0aW9uLnR5
cGUgPT0gTWVkaWFEZWNvZGluZ1R5cGU6Ok1lZGlhU291cmNlOwogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mCiAgICAgY2Fs
bGJhY2soV1RGTW92ZShpbmZvKSk7CiB9CiAKLXZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJFbmNvZGlu
Z0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0lu
Zm8mJik+JiYgY2FsbGJhY2spCit2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRW5jb2RpbmdDb25maWd1
cmF0aW9uR1N0cmVhbWVyKE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlv
biwgRnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbyYmKT4mJiBjYWxs
YmFjaykKIHsKICAgICBhdXRvJiBzY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpz
aW5nbGV0b24oKTsKICAgICBhdXRvIGxvb2t1cFJlc3VsdCA9IHNjYW5uZXIuaXNFbmNvZGluZ1N1
cHBvcnRlZChjb25maWd1cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5oCmluZGV4IDYwYmI2MzFkMzZk
NTE0OGY0Mjg0ODU2MWZlNTljZTU1MTM5YjRlYjcuLmM4ZWVlNzk5ZjAxMzM0MDEwM2NlNjM0N2Rl
YjcwM2M5N2NlNWNhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnlHU3RyZWFtZXIuaApAQCAtMzgsOCArMzgsOCBAQCBzdHJ1
Y3QgTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm87CiBzdHJ1Y3QgTWVkaWFEZWNvZGluZ0Nv
bmZpZ3VyYXRpb247CiBzdHJ1Y3QgTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb247CiAKLWV4dGVy
biB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKE1l
ZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYsIFdURjo6RnVuY3Rpb248dm9pZChNZWRpYUNhcGFi
aWxpdGllc0RlY29kaW5nSW5mbyYmKT4mJik7Ci1leHRlcm4gdm9pZCBjcmVhdGVNZWRpYVBsYXll
ckVuY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlv
biYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8mJik+
JiYpOworZXh0ZXJuIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25H
U3RyZWFtZXIoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRnVuY3Rpb248dm9pZChNZWRp
YUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYmKT4mJik7CitleHRlcm4gdm9pZCBjcmVhdGVNZWRp
YVBsYXllckVuY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihNZWRpYUVuY29kaW5nQ29uZmln
dXJhdGlvbiYmLCBGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYp
PiYmKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5oCmluZGV4IGZkNmNi
M2JkMjU3MzY2N2FhOGQ0ZmQzZThjY2M2MjVmNjRmMThhZTEuLjAxNGI1MGMwMmM4OGIxMmE1MjE5
M2MzMDEyNTc4Mjc3ZTBiMzEzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5oCkBAIC01
OSw3ICs1OSw3IEBAIHN0cnVjdCBfV2ViS2l0VGV4dFNpbmtDbGFzcyB7CiAgICAgR3N0QmluQ2xh
c3MgcGFyZW50Q2xhc3M7CiB9OwogCi1Hc3RFbGVtZW50KiB3ZWJraXRUZXh0U2lua05ldyhXVEY6
OldlYWtQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiYmKTsKK0dzdEVs
ZW1lbnQqIHdlYmtpdFRleHRTaW5rTmV3KFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyPiYmKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5oCmluZGV4IDMzZTdjOWFjNTk1ZDQ2ZjMwYWVlOGNmYmViODVmMTY1
MzFiMjk4YjAuLjY0OWIwZjYyZmM0ZTRkOWIwOWIyZmExZTYzNmExYzZiYTYxYzAzNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKQEAgLTUzLDcgKzUzLDcgQEAg
c3RydWN0IFdlYktpdFdlYlNyY0NsYXNzIHsKIH07CiAKIEdUeXBlIHdlYmtpdF93ZWJfc3JjX2dl
dF90eXBlKHZvaWQpOwotdm9pZCB3ZWJLaXRXZWJTcmNTZXRNZWRpYVBsYXllcihXZWJLaXRXZWJT
cmMqLCBXZWJDb3JlOjpNZWRpYVBsYXllciosIGNvbnN0IFdURjo6U3RyaW5nJik7Cit2b2lkIHdl
YktpdFdlYlNyY1NldE1lZGlhUGxheWVyKFdlYktpdFdlYlNyYyosIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyKiwgY29uc3QgU3RyaW5nJik7CiBib29sIHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVj
ayhXZWJLaXRXZWJTcmMqKTsKIGJvb2wgd2ViS2l0U3JjV291bGRUYWludE9yaWdpbihXZWJLaXRX
ZWJTcmMqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5VGh1
bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVByb3h5VGh1bmRlci5jcHAKaW5kZXggZmI5ZDJlZjcyZTVmZWU0MjYxMzU3YmIwNjA1NjA4
OTYxMDAxNDBiNi4uNWJkMDNjMWI5Nzc5MjYwZjkwMmMzNTkxNWNiNTViYWQyNjE3MDI5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1Qcm94eVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBHU1Rf
REVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdE1lZGlhVGh1bmRlckRlY3J5cHREZWJ1Z0NhdGVn
b3J5KTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTk9URTogWW91VHViZSAyMDE5IEVNRSBj
b25mb3JtYW5jZSB0ZXN0cyBleHBlY3QgdGhpcyB0byBiZSA+PTVzLgotY29uc3QgV1RGOjpTZWNv
bmRzIHNfbGljZW5zZUtleVJlc3BvbnNlVGltZW91dCA9IFdURjo6U2Vjb25kcyg2KTsKK2NvbnN0
IFNlY29uZHMgc19saWNlbnNlS2V5UmVzcG9uc2VUaW1lb3V0ID0gU2Vjb25kcyg2KTsKIAogQm94
UHRyPE9wZW5DRE1TZXNzaW9uPiBDRE1Qcm94eVRodW5kZXI6OmdldERlY3J5cHRpb25TZXNzaW9u
KERlY3J5cHRpb25Db250ZXh0JiBpbikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlv
bkRlY3J5cHRvckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIu
Y3BwCmluZGV4IGM4NGZkZjA5MGRkZDY5NGRiYTU1MmE1NzU4OTU2MWMwNmYyZmRiZjIuLjExZGYz
ZDc5N2VlOGI0N2U5YWE1NGQzZmE2ZDgyZWNmMWViMzg1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlw
dGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0
cmVhbWVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIGNvbnN0cnVjdGVkKEdP
YmplY3QqIG9iamVjdCkKIAogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQq
IHNlbGYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUKGJhc2UpOwogICAgIFdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NFTkNf
REVDUllQVF9HRVRfUFJJVkFURShzZWxmKTsKLSAgICBwcml2LT5jZG1Qcm94eURlY3J5cHRpb25D
bGllbnRJbXBsZW1lbnRhdGlvbiA9IFdURjo6bWFrZVVuaXF1ZTxDRE1Qcm94eURlY3J5cHRpb25D
bGllbnRJbXBsZW1lbnRhdGlvbj4oc2VsZik7CisgICAgcHJpdi0+Y2RtUHJveHlEZWNyeXB0aW9u
Q2xpZW50SW1wbGVtZW50YXRpb24gPSBtYWtlVW5pcXVlPENETVByb3h5RGVjcnlwdGlvbkNsaWVu
dEltcGxlbWVudGF0aW9uPihzZWxmKTsKIH0KIAogc3RhdGljIEdzdENhcHMqIHRyYW5zZm9ybUNh
cHMoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0
Q2FwcyogY2FwcywgR3N0Q2FwcyogZmlsdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5l
LmNwcAppbmRleCBmOTFmNTY5NjU0OGMyYzQ5MjQ0NGMyODAxNmExZGJkZDZjYThlZTY2Li41YzE0
Njg4YTZiZjFiYzcxM2ZhMmRmOWMyNDZmMWFkM2EwMzI2NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0Fw
cGVuZFBpcGVsaW5lLmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6
OmhhbmRsZUVycm9yU3luY01lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKIEdzdFBhZFByb2Jl
UmV0dXJuIEFwcGVuZFBpcGVsaW5lOjphcHBzcmNFbmRPZkFwcGVuZENoZWNrZXJQcm9iZShHc3RQ
YWRQcm9iZUluZm8qIHBhZFByb2JlSW5mbykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBtX3N0cmVhbWluZ1RocmVhZCA9ICZXVEY6OlRocmVhZDo6Y3VycmVudCgpOworICAg
IG1fc3RyZWFtaW5nVGhyZWFkID0gJlRocmVhZDo6Y3VycmVudCgpOwogCiAgICAgR3N0QnVmZmVy
KiBidWZmZXIgPSBHU1RfQlVGRkVSKHBhZFByb2JlSW5mby0+ZGF0YSk7CiAgICAgQVNTRVJUKEdT
VF9JU19CVUZGRVIoYnVmZmVyKSk7CkBAIC01NzYsNyArNTc2LDcgQEAgdm9pZCBBcHBlbmRQaXBl
bGluZTo6cmVzZXRQYXJzZXJTdGF0ZSgpCiAgICAgewogICAgICAgICBzdGF0aWMgdW5zaWduZWQg
aSA9IDA7CiAgICAgICAgIC8vIFRoaXMgaXMgaGVyZSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiBJ
dCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGhhdmUgaXQgYXMgY2xhc3MgbWVtYmVyLgotICAgICAg
ICBXVEY6OlN0cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoInJlc2V0LXBpcGVsaW5lLSIs
ICsraSk7CisgICAgICAgIFN0cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoInJlc2V0LXBp
cGVsaW5lLSIsICsraSk7CiAgICAgICAgIGdzdF9kZWJ1Z19iaW5fdG9fZG90X2ZpbGUoR1NUX0JJ
TihtX3BpcGVsaW5lLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCBkb3RGaWxlTmFt
ZS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTYxNiw3ICs2MTYsNyBAQCB2b2lk
IEFwcGVuZFBpcGVsaW5lOjpwdXNoTmV3QnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZl
cikKIHZvaWQgQXBwZW5kUGlwZWxpbmU6OmhhbmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tU3RyZWFt
aW5nVGhyZWFkKEdzdEVsZW1lbnQqKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwot
ICAgIGlmICgmV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKSAhPSBtX3N0cmVhbWluZ1RocmVhZCkgewor
ICAgIGlmICgmVGhyZWFkOjpjdXJyZW50KCkgIT0gbV9zdHJlYW1pbmdUaHJlYWQpIHsKICAgICAg
ICAgLy8gbV9zdHJlYW1pbmdUaHJlYWRJZCBoYXMgYmVlbiBpbml0aWFsaXplZCBpbiBhcHBzcmNF
bmRPZkFwcGVuZENoZWNrZXJQcm9iZSgpLgogICAgICAgICAvLyBGb3IgYSBidWZmZXIgdG8gcmVh
Y2ggdGhlIGFwcHNpbmssIGEgYnVmZmVyIG11c3QgaGF2ZSBwYXNzZWQgdGhyb3VnaCBhcHBzcmNF
bmRPZkFwcGVuZENoZWNrZXJQcm9iZSgpIGZpcnN0LgogICAgICAgICAvLyBUaGlzIGVycm9yIHdp
bGwgb25seSByYWlzZSBpZiBzb21lb25lIG1vZGlmaWVzIHRoZSBwaXBlbGluZSB0byBpbmNsdWRl
IG1vcmUgdGhhbiBvbmUgc3RyZWFtaW5nIHRocmVhZCBvcgpAQCAtNzE2LDcgKzcxNiw3IEBAIHN0
ZDo6cGFpcjxBcHBlbmRQaXBlbGluZTo6Q3JlYXRlVHJhY2tSZXN1bHQsIEFwcGVuZFBpcGVsaW5l
OjpUcmFjayo+IEFwcGVuZFBpcGVsCiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJDcmVhdGluZyBuZXcgQXBwZW5kUGlwZWxpbmU6OlRyYWNrIHdpdGggaWQgJyVzJyIsIHRyYWNr
SWQuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgc2l6ZV90IG5ld1RyYWNrSW5kZXggPSBt
X3RyYWNrcy5zaXplKCk7Ci0gICAgbV90cmFja3MuYXBwZW5kKFdURjo6bWFrZVVuaXF1ZTxUcmFj
az4odHJhY2tJZCwgc3RyZWFtVHlwZSwgcGFyc2VkQ2FwcywgcHJlc2VudGF0aW9uU2l6ZSkpOwor
ICAgIG1fdHJhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFRyYWNrPih0cmFja0lkLCBzdHJlYW1UeXBl
LCBwYXJzZWRDYXBzLCBwcmVzZW50YXRpb25TaXplKSk7CiAgICAgVHJhY2smIHRyYWNrID0gKm1f
dHJhY2tzLmF0KG5ld1RyYWNrSW5kZXgpOwogICAgIHRyYWNrLmluaXRpYWxpemVFbGVtZW50cyh0
aGlzLCBHU1RfQklOKG1fcGlwZWxpbmUuZ2V0KCkpKTsKICAgICB0cmFjay53ZWJLaXRUcmFjayA9
IG1ha2VXZWJLaXRUcmFjayhuZXdUcmFja0luZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxp
bmUuaAppbmRleCAyNGQyYjdhOGZlMWI4NTQxZDEzYjAwZDM2NWExYjZjNzg3N2MzNmQ1Li43Y2Iz
ZjNhZmQwNDNiY2FkM2E2MWI0NDM0OWQ2Y2YzNWUwYTdmYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZWQg
b25seSBmb3IgYXNzZXJ0aW5nIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgc3RyZWFtaW5nIHRocmVh
ZC4KICAgICAvLyBPbmx5IHRoZSBwb2ludGVycyBhcmUgY29tcGFyZWQuCi0gICAgV1RGOjpUaHJl
YWQqIG1fc3RyZWFtaW5nVGhyZWFkOworICAgIFRocmVhZCogbV9zdHJlYW1pbmdUaHJlYWQ7CiAK
ICAgICBib29sIG1faGFzUmVjZWl2ZWRGaXJzdEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNl
IH07CiAgICAgLy8gVXNlZCBvbmx5IGZvciBhc3NlcnRpbmcgRU9TIGV2ZW50cyBhcmUgb25seSBj
YXVzZWQgYnkgZGVtdXhpbmcgZXJyb3JzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCmlu
ZGV4IDliNmFjMGRiYmQ5NTllYjQxZjhhNjYyZmU5ZjdmNGRhMDQ1M2JlZmIuLjkwMDhjMTVjNDZk
MGM3ZGY1ODY1ODkzODU2MWQ5NGFkYTY1MzcyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxh
eWVyLmgKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgQ29tcG9zaXRpb25MYXllciA6IHB1YmxpYyBQ
bGF0Zm9ybUxheWVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBJbXBsIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHVzaW5nIEZhY3RvcnkgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxJbXBs
Pih1aW50NjRfdCwgQ29tcG9zaXRpb25MYXllciYpPjsKKyAgICAgICAgdXNpbmcgRmFjdG9yeSA9
IEZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxJbXBsPih1aW50NjRfdCwgQ29tcG9zaXRpb25MYXll
ciYpPjsKIAogICAgICAgICB2aXJ0dWFsIH5JbXBsKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1RleHR1cmVNYXBwZXJJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTMzMCw3ICsz
MzAsNyBAQCBjbGFzcyBDb250ZW50TGF5ZXIgOiBwdWJsaWMgUGxhdGZvcm1MYXllciB7CiBwdWJs
aWM6CiAgICAgY2xhc3MgSW1wbCB7CiAgICAgcHVibGljOgotICAgICAgICB1c2luZyBGYWN0b3J5
ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4oQ29udGVudExheWVyJik+Owor
ICAgICAgICB1c2luZyBGYWN0b3J5ID0gRnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPEltcGw+KENv
bnRlbnRMYXllciYpPjsKIAogICAgICAgICB2aXJ0dWFsIH5JbXBsKCk7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1RleHR1cmVNYXBwZXJJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTM1NSw3ICszNTUsNyBAQCBjbGFzcyBCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8QmFja2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgSW1wbCB7CiAgICAg
cHVibGljOgotICAgICAgICB1c2luZyBGYWN0b3J5ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1
ZV9wdHI8SW1wbD4oQmFja2luZ1N0b3JlJik+OworICAgICAgICB1c2luZyBGYWN0b3J5ID0gRnVu
Y3Rpb248c3RkOjp1bmlxdWVfcHRyPEltcGw+KEJhY2tpbmdTdG9yZSYpPjsKIAogICAgICAgICB2
aXJ0dWFsIH5JbXBsKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1RleHR1cmVNYXBwZXJJbXBs
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTM3OSw3ICszNzksNyBAQCBjbGFzcyBJbWFn
ZUJhY2tpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCYWNraW5nPiB7CiBw
dWJsaWM6CiAgICAgY2xhc3MgSW1wbCB7CiAgICAgcHVibGljOgotICAgICAgICB1c2luZyBGYWN0
b3J5ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4oSW1hZ2VCYWNraW5nJik+
OworICAgICAgICB1c2luZyBGYWN0b3J5ID0gRnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPEltcGw+
KEltYWdlQmFja2luZyYpPjsKIAogICAgICAgICB2aXJ0dWFsIH5JbXBsKCk7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1RleHR1cmVNYXBwZXJJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCA2NDlmOTM4M2NmNGVkNDg1NDRjYWRhMTZiNGM2
NzhiMGI3ZmQxMWJjLi5kOWYxNWY0NWJkZmI0ZTFiYmU4ZDM5MzYzNWI2MGFhZDFkMmQ5MGE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2
aXNvcikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFdURjo6U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lv
bihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZ2V0RXh0ZW5zaW9ucygpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAppbmRleCA3MWYxMmI5M2RmYTBjNmRjOTVhZDUzYzhjNmIwMmQ0MmJhZjdjMDViLi44NWRkZWY5
M2YzYzZjZmI3OTMzZGEwOThhOTVjYTllYzM4MmRlYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0CiAKICAgICBmb3IgKGNvbnN0IHN0ZDo6cGFpcjxBTkdMRVNoYWRlclN5bWJvbFR5cGUs
IHNoOjpTaGFkZXJWYXJpYWJsZT4mIHBhaXIgOiBzeW1ib2xzKSB7CiAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lID0gcGFpci5zZWNvbmQubmFtZTsKLSAgICAgICAgZW50cnkuc3ltYm9s
TWFwKHBhaXIuZmlyc3QpLnNldChTdHJpbmcobmFtZS5jX3N0cigpLCBuYW1lLmxlbmd0aCgpKSwg
V1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxzaDo6U2hhZGVyVmFyaWFi
bGU+KHBhaXIuc2Vjb25kKSk7CisgICAgICAgIGVudHJ5LnN5bWJvbE1hcChwYWlyLmZpcnN0KS5z
ZXQoU3RyaW5nKG5hbWUuY19zdHIoKSwgbmFtZS5sZW5ndGgoKSksIG1ha2VVbmlxdWVSZWZXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPHNoOjpTaGFkZXJWYXJpYWJsZT4ocGFpci5zZWNvbmQpKTsKICAg
ICB9CiAKICAgICBpZiAoIWlzVmFsaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CmluZGV4IDJlZWE1NDVkMjBjMzc2MTEyMzkzZTUwYzViODRkMTRkY2MxY2JhZWEuLjM4MjczYjA3
MmI1NmQzZmRhMmJjZGUzNDhiM2UwZjc0MmMyMDA1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIFBpeGVsQnVmZmVyOwogY2xhc3Mg
VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOwogI2VuZGlmCiAKLXR5cGVkZWYgV1RGOjpI
YXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKK3R5cGVkZWYgSGFzaE1h
cDxDU3RyaW5nLCB1aW50NjRfdD4gU2hhZGVyTmFtZUhhc2g7CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMCiB7
CkBAIC03MTMsOSArNzEzLDkgQEAgcHJpdmF0ZToKIAogICAgICAgICB1c2luZyBCb3VuZFRleHR1
cmVNYXAgPSBIYXNoTWFwPEdDR0xlbnVtLAogICAgICAgICAgICAgc3RkOjpwYWlyPEdDR0x1aW50
LCBHQ0dMZW51bT4sCi0gICAgICAgICAgICBXVEY6OkludEhhc2g8R0NHTGVudW0+LAorICAgICAg
ICAgICAgSW50SGFzaDxHQ0dMZW51bT4sCiAgICAgICAgICAgICBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50PiwKLSAgICAgICAgICAgIFdURjo6UGFpckhhc2hUcmFp
dHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4sIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+PgorICAgICAgICAgICAgUGFpckhh
c2hUcmFpdHM8V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+PgogICAgICAgICA+Owog
ICAgICAgICBCb3VuZFRleHR1cmVNYXAgYm91bmRUZXh0dXJlTWFwOwogICAgICAgICBHQ0dMdWlu
dCBjdXJyZW50Qm91bmRUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gYm91bmRUZXh0dXJlKGFjdGl2
ZVRleHR1cmVVbml0KTsgfQpAQCAtNzQxLDcgKzc0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBib3VuZFRleHR1cmVNYXAuc2V0KHRleHR1cmVVbml0LCBzdGQ6Om1ha2VfcGFpcih0ZXh0dXJl
LCB0YXJnZXQpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVzaW5nIFRleHR1cmVTZWVkQ291bnQg
PSBIYXNoQ291bnRlZFNldDxHQ0dMdWludCwgV1RGOjpJbnRIYXNoPEdDR0x1aW50PiwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+OworICAgICAgICB1c2luZyBU
ZXh0dXJlU2VlZENvdW50ID0gSGFzaENvdW50ZWRTZXQ8R0NHTHVpbnQsIEludEhhc2g8R0NHTHVp
bnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj47CiAgICAg
ICAgIFRleHR1cmVTZWVkQ291bnQgdGV4dHVyZVNlZWRDb3VudDsKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3Bl
bkdMU2V0dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1Rl
bXBvcmFyeU9wZW5HTFNldHRpbmcuaAppbmRleCAwYzEzNDE4Mzg2ODllMTJhNDdhNjc2ZDljMWZh
YmFhNmEwZWZjYzNkLi4wYWEyM2ExY2E0MTE4NDNiN2JhYmU0MjI4ZWJiODJjYmVlMjlkOTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9y
YXJ5T3BlbkdMU2V0dGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gdmFsdWUgdXBvbiBkZXN0cnVjdGlvbiwgbWFraW5nIGl0IGFuIGFs
dGVybmF0aXZlIHRvIGNoZWNraW5nLCBjbGVhcmluZywgYW5kIHJlc2V0dGluZyBlYWNoIGZsYWcK
IC8vIGF0IGFsbCBvZiBhIGJsb2NrJ3MgZXhpdCBwb2ludHMuCiAvLwotLy8gQmFzZWQgb24gV1RG
OjpTZXRGb3JTY29wZTw+CisvLyBCYXNlZCBvbiBTZXRGb3JTY29wZTw+CiAKIGNsYXNzIFRlbXBv
cmFyeU9wZW5HTFNldHRpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRlbXBvcmFyeU9w
ZW5HTFNldHRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NDRmZDdlZjdiNWQzNDlhMGIyZTY1M2Q3ODcyMTFhMzJhZmNhYjQ2Li5l
Mjg1MWMyZTNkMjIxNzcxNjk0YmRkNmYxMmYwZTVmNzg5OWM3NTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTA2LDkgKzEwNiw5IEBA
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJpYnV0ZXMu
d2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDI7CiAj
ZW5kaWYKICNpZiBVU0UoTklDT1NJQSkKLSAgICBtX25pY29zaWFMYXllciA9IFdURjo6bWFrZVVu
aXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcj4oKnRoaXMpOworICAgIG1fbmljb3NpYUxheWVy
ID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcj4oKnRoaXMpOwogI2Vsc2UKLSAg
ICBtX3RleG1hcExheWVyID0gV1RGOjptYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZv
cm1MYXllcj4oKnRoaXMpOworICAgIG1fdGV4bWFwTGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVN
YXBwZXJHQ0dMUGxhdGZvcm1MYXllcj4oKnRoaXMpOwogI2VuZGlmCiAgICAgYm9vbCBzdWNjZXNz
ID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNj
ZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAK
aW5kZXggODQ0YWI2MmYyZjhhMjM3Y2FmOTQwYzlmMDllMjYzNzNhN2ZjMmY4ZC4uMTM4NGM2YjEx
NGU3OWViYzcyZGQyNTdjZjA1NTgyMWZjNGE0NjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5jcHAKQEAgLTM1LDEzICszNSwxMyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmljPFRleHR1cmVNYXBw
ZXJDb250ZXh0QXR0cmlidXRlcz4mIHRocmVhZFNwZWNpZmljQXR0cmlidXRlcygpCitzdGF0aWMg
VGhyZWFkU3BlY2lmaWM8VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzPiYgdGhyZWFkU3Bl
Y2lmaWNBdHRyaWJ1dGVzKCkKIHsKLSAgICBzdGF0aWMgV1RGOjpUaHJlYWRTcGVjaWZpYzxUZXh0
dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM+KiBzX3RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmli
dXRlczsKKyAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8VGV4dHVyZU1hcHBlckNvbnRleHRBdHRy
aWJ1dGVzPiogc190ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIHNfb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uoc19vbmNlRmxhZywK
ICAgICAgICAgW10gewotICAgICAgICAgICAgc190ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXMgPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZpYzxUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXM+OworICAgICAgICAgICAgc190ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMgPSBuZXcg
VGhyZWFkU3BlY2lmaWM8VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzPjsKICAgICAgICAg
fSk7CiAgICAgcmV0dXJuICpzX3RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAppbmRleCAw
NDIyM2YyMDYzNDFjZjU1NTQ2OWY5NWFiZTFmNzMxMDM3YzkyYzg3Li5iMDRmOWM2Yjk3YTY5YTY4
ZWYzYThkOGEyMWFjNzY1MDllMmQxMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpkcm9wQ3VycmVudEJ1ZmZlcldoaWxlUHJlc2Vydmlu
Z1RleHR1cmUoYm8KICAgICAgICAgW3RoaXMsIHNob3VsZFdhaXRdIHsKICAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAotICAgICAgICAgICAgYXV0byBtYXliZU5vdGlmeVN5
bmNocm9ub3VzT3BlcmF0aW9uID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCBzaG91bGRXYWl0
XSgpIHsKKyAgICAgICAgICAgIGF1dG8gbWF5YmVOb3RpZnlTeW5jaHJvbm91c09wZXJhdGlvbiA9
IG1ha2VTY29wZUV4aXQoW3RoaXMsIHNob3VsZFdhaXRdKCkgewogICAgICAgICAgICAgICAgIGlm
IChzaG91bGRXYWl0KSB7CiAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3dh
c0J1ZmZlckRyb3BwZWRMb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIG1fd2FzQnVmZmVyRHJv
cHBlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oCmluZGV4
IDJkYjY2YzFiZWQyYmJlYjhmZmIyM2Q3NWFmNzMyODYyODk3ZjEwYWIuLjZlZGYzOWY4NGRlZDc2
ZmU0MGFjZGM2ZmMyYzM0NWVlZDg0NWUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbS5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBHTHVpbnQgZ2V0
TG9jYXRpb24oVmFyaWFibGVJRCwgQVNDSUlMaXRlcmFsLCBWYXJpYWJsZVR5cGUpOwogCiAgICAg
R0x1aW50IG1faWQ7Ci0gICAgSGFzaE1hcDxWYXJpYWJsZUlELCBHTHVpbnQsIFdURjo6SW50SGFz
aDxWYXJpYWJsZUlEPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxWYXJpYWJsZUlEPj4gbV92
YXJpYWJsZXM7CisgICAgSGFzaE1hcDxWYXJpYWJsZUlELCBHTHVpbnQsIEludEhhc2g8VmFyaWFi
bGVJRD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8VmFyaWFibGVJRD4+IG1fdmFyaWFibGVz
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAppbmRleCBkZjMzZjUyNWQ5ODU4MTkxYmFh
MjU1ODJiNTA3MmY5NDgzOTQ5ZGViLi41NDRhNTA3YmNiNGY3OTlmOTkzOWJlNWUyZjU3MTgyOGI3
NDU0NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0MkRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcApAQCAtNjQzLDcgKzY0Myw3IEBAIHN0YXRp
YyB2b2lkIGRyYXdXaXRoU2hhZG93SGVscGVyKElEMkQxUmVuZGVyVGFyZ2V0KiBjb250ZXh0LCBJ
RDJEMUJpdG1hcFJlbmRlclRhCiAgICAgY29udGV4dC0+RHJhd0JpdG1hcChjcm9wcGVkLmdldCgp
KTsKIH0KIAotdm9pZCBkcmF3V2l0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxh
dGZvcm1Db250ZXh0LCBGbG9hdFJlY3QgYm91bmRpbmdSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYg
c2hhZG93U3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYmIGRy
YXdDb21tYW5kcykKK3ZvaWQgZHJhd1dpdGhTaGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
IHBsYXRmb3JtQ29udGV4dCwgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCwgY29uc3QgU2hhZG93U3Rh
dGUmIHNoYWRvd1N0YXRlLCBGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiYgZHJh
d0NvbW1hbmRzKQogewogICAgIGlmICghc2hhZG93U3RhdGUuaXNWaXNpYmxlKCkpIHsKICAgICAg
ICAgZHJhd1dpdGhvdXRTaGFkb3cocGxhdGZvcm1Db250ZXh0LCBXVEZNb3ZlKGRyYXdDb21tYW5k
cykpOwpAQCAtNjk0LDcgKzY5NCw3IEBAIHZvaWQgZHJhd1dpdGhTaGFkb3coUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgRmxvYXRSZWN0IGJvdW5kaW5nCiAgICAgcGxh
dGZvcm1Db250ZXh0Lm5vdGlmeVBvc3REcmF3T2JzZXJ2ZXIoKTsKIH0KIAotdm9pZCBkcmF3V2l0
aG91dFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpCit2b2lk
IGRyYXdXaXRob3V0U2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRl
eHQsIEZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpCiB7
CiAgICAgcGxhdGZvcm1Db250ZXh0Lm5vdGlmeVByZURyYXdPYnNlcnZlcigpOwogICAgIGRyYXdD
b21tYW5kcyhwbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5o
CmluZGV4IDQ3ZTI5OTM2MDdhZDUxZmViYWE2Y2M3MmRmYzI2NTEzNzAzMjQ3N2YuLjY0YjFlYjc2
MGRhYzU0Njk3MjYzYjRhOTIwNGVkZjNkYjEyNWZhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKQEAg
LTEzMiw4ICsxMzIsOCBAQCB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiwgSUQyRDFCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmCiB2b2lkIGRyYXdQYXRoKFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgUGF0aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYs
IGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiwgQ09NUHRyPElEMkQxQml0bWFwPiYmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCi12b2lkIGRyYXdX
aXRob3V0U2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgV1RGOjpGdW5jdGlvbjx2b2lk
KElEMkQxUmVuZGVyVGFyZ2V0Kik+JiYgZHJhd0NvbW1hbmRzKTsKLXZvaWQgZHJhd1dpdGhTaGFk
b3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBGbG9hdFJlY3QgYm91bmRpbmdSZWN0LCBjb25z
dCBTaGFkb3dTdGF0ZSYsIFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYm
IGRyYXdDb21tYW5kcyk7Cit2b2lkIGRyYXdXaXRob3V0U2hhZG93KFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiwgRnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYmIGRyYXdDb21tYW5k
cyk7Cit2b2lkIGRyYXdXaXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgRmxvYXRS
ZWN0IGJvdW5kaW5nUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmLCBGdW5jdGlvbjx2b2lkKElEMkQx
UmVuZGVyVGFyZ2V0Kik+JiYgZHJhd0NvbW1hbmRzKTsKIAogdm9pZCBkcmF3UmVjdChQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBjb25zdCBDb2xvciYs
IFN0cm9rZVN0eWxlLCBjb25zdCBDb2xvciYpOwogdm9pZCBkcmF3TGluZShQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgU3Ryb2tl
U3R5bGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2lu
LmNwcAppbmRleCAwYmQ3MDdmMWM1NWYyZjY0YmEzMjYxNzM5N2NmYjFhMjcxMzM4MTkwLi5hNDMy
MmE0ZGVmZjJhZDg1YTM3NjBjMGZhNzc2ZDQ2ZDIwNDdjZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YUNHV2luLmNwcApAQCAtMTM0LDggKzEzNCw4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0
Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBoZm9udCwgQ1RGb250UmVmIGN0Rm9udCwgQ0dGCiB1
bnNpZ25lZCBGb250UGxhdGZvcm1EYXRhOjpoYXNoKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBm
b250SGFzaCA9IG1fZm9udCA/IG1fZm9udC0+aGFzaCgpIDogMDsKLSAgICBDRkhhc2hDb2RlIGNn
Rm9udEhhc2ggPSBXVEY6OnNhZmVDRkhhc2gobV9jZ0ZvbnQuZ2V0KCkpOwotICAgIENGSGFzaENv
ZGUgY3RGb250SGFzaCA9IFdURjo6c2FmZUNGSGFzaChtX2N0Rm9udC5nZXQoKSk7CisgICAgQ0ZI
YXNoQ29kZSBjZ0ZvbnRIYXNoID0gc2FmZUNGSGFzaChtX2NnRm9udC5nZXQoKSk7CisgICAgQ0ZI
YXNoQ29kZSBjdEZvbnRIYXNoID0gc2FmZUNGSGFzaChtX2N0Rm9udC5nZXQoKSk7CiAgICAgdWlu
dHB0cl90IGhhc2hDb2Rlc1tdID0geyBmb250SGFzaCwgY2dGb250SGFzaCwgY3RGb250SGFzaCwg
bV91c2VHREkgfTsKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZiho
YXNoQ29kZXMpPihoYXNoQ29kZXMpOwogfQpAQCAtMTQzLDggKzE0Myw4IEBAIHVuc2lnbmVkIEZv
bnRQbGF0Zm9ybURhdGE6Omhhc2goKSBjb25zdAogYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0
Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fZm9udCA9PSBvdGhlci5tX2ZvbnQKLSAgICAgICAgJiYgV1RGOjpzYWZlQ0ZFcXVh
bChtX2NnRm9udC5nZXQoKSwgb3RoZXIubV9jZ0ZvbnQuZ2V0KCkpCi0gICAgICAgICYmIFdURjo6
c2FmZUNGRXF1YWwobV9jdEZvbnQuZ2V0KCksIG90aGVyLm1fY3RGb250LmdldCgpKQorICAgICAg
ICAmJiBzYWZlQ0ZFcXVhbChtX2NnRm9udC5nZXQoKSwgb3RoZXIubV9jZ0ZvbnQuZ2V0KCkpCisg
ICAgICAgICYmIHNhZmVDRkVxdWFsKG1fY3RGb250LmdldCgpLCBvdGhlci5tX2N0Rm9udC5nZXQo
KSkKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IGJlMmZjNjE4YTcxN2UyN2QxYWFiOGY0NGM2ZDA2
ZjgyYzBjYTMxYWQuLjliNzdlMmFmODRiNGE1MDVlZjlmODNiYWE1YjNiMjA5OTlmZTU3NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNv
bnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgVmVjdG9yPERpcmVjdDJETGF5ZXJUeXBlPiBtX2NsaXBzOwogfTsKIAotUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4dERpcmVjdDJEKElEMkQxUmVuZGVyVGFyZ2V0
KiByZW5kZXJUYXJnZXQsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHByZURyYXdIYW5kbGVyLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwb3N0RHJhd0hhbmRsZXIpCitQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRDo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRl
clRhcmdldCwgRnVuY3Rpb248dm9pZCgpPiYmIHByZURyYXdIYW5kbGVyLCBGdW5jdGlvbjx2b2lk
KCk+JiYgcG9zdERyYXdIYW5kbGVyKQogICAgIDogbV9yZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0
KQogICAgICwgbV9wcmVEcmF3SGFuZGxlcihXVEZNb3ZlKHByZURyYXdIYW5kbGVyKSkKICAgICAs
IG1fcG9zdERyYXdIYW5kbGVyKFdURk1vdmUocG9zdERyYXdIYW5kbGVyKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29u
dGV4dERpcmVjdDJELmgKaW5kZXggNmNlNmY2ZTIxOGYwMGQ4ZDQxNjZiZGJiODA3YWU2NWYwODM2
YWM2My4uYjZlZTExY2IzMTYxM2UwYjY2OTc1ODc4NDI4MWE2ZjY2ZmI1MmQxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERp
cmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRm
b3JtQ29udGV4dERpcmVjdDJELmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKTsKIHB1YmxpYzoKLSAgICBQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRChJRDJEMVJlbmRlclRhcmdldCosIFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIHByZURyYXdIYW5kbGVyID0gW10oKSB7IH0sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IHBvc3REcmF3SGFuZGxlciA9IFtdKCkgeyB9KTsKKyAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RChJRDJEMVJlbmRlclRhcmdldCosIEZ1bmN0aW9uPHZvaWQoKT4mJiBwcmVEcmF3SGFuZGxlciA9
IFtdKCkgeyB9LCBGdW5jdGlvbjx2b2lkKCk+JiYgcG9zdERyYXdIYW5kbGVyID0gW10oKSB7IH0p
OwogICAgIH5QbGF0Zm9ybUNvbnRleHREaXJlY3QyRCgpOwogCiAgICAgSUQyRDFSZW5kZXJUYXJn
ZXQqIHJlbmRlclRhcmdldCgpIHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LmdldCgpOyB9CkBAIC0x
MzUsOCArMTM1LDggQEAgcHJpdmF0ZToKIAogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gbV9jb21w
b3NpdGVTb3VyY2U7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9wcmVEcmF3SGFuZGxl
cjsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9wb3N0RHJhd0hhbmRsZXI7CisgICAgRnVu
Y3Rpb248dm9pZCgpPiBtX3ByZURyYXdIYW5kbGVyOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9w
b3N0RHJhd0hhbmRsZXI7CiAKICAgICBjbGFzcyBTdGF0ZTsKICAgICBTdGF0ZSogbV9zdGF0ZSB7
IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9TaGFyZWRHRElPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9TaGFyZWRHRElPYmplY3QuaAppbmRleCA0Y2UzNjdiNmQ1ZjgxOWE1OWRiODI1NWIzNGJl
YmQwYWRlMmFhZThjLi4xODcwNDA5OTRjYzlmYTRiYzc1NjI3OTdhMTE0NzM0YWIxN2Q4NDJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJ
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJl
ZEdESU9iamVjdC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxUPjo6aGFzaCht
X29iamVjdC5nZXQoKSk7CisgICAgICAgIHJldHVybiBQdHJIYXNoPFQ+OjpoYXNoKG1fb2JqZWN0
LmdldCgpKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9D
dXJzb3JHdGsuY3BwCmluZGV4IGVkZWQ3ZThkZDIzYWJiMzYwZThkYWI0NDM1ZjMxMjA5MzhhNWVl
NDEuLjQ4Mzg0ZDAyYTkxZTVmY2Y4MmNmZTUyNGRkNGRmMzc2YTAyMmE3MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNpZiBVU0UoR1RLNCkKIHN0YXRpYyBHUmVmUHRyPEdka0N1cnNvcj4g
ZmFsbGJhY2tDdXJzb3IoKQogewotICAgIHN0YXRpYyBXVEY6Ok5ldmVyRGVzdHJveWVkPEdSZWZQ
dHI8R2RrQ3Vyc29yPj4gY3Vyc29yKGFkb3B0R1JlZihnZGtfY3Vyc29yX25ld19mcm9tX25hbWUo
ImRlZmF1bHQiLCBudWxscHRyKSkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHUmVmUHRy
PEdka0N1cnNvcj4+IGN1cnNvcihhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXdfZnJvbV9uYW1lKCJk
ZWZhdWx0IiwgbnVsbHB0cikpKTsKICAgICByZXR1cm4gY3Vyc29yOwogfQogI2VuZGlmIC8vIFVT
RShHVEs0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcApp
bmRleCA2YmMxZDU0N2QzMTk5ZDVmMjI4YWJiNTFkMzQ0MDhhOTg0ZTY3N2ZjLi43YjBkNmRlOThi
MzgzM2M2ZTIyYjk1OTcwYjljNTU4YzQwMzJiNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIFdhbGxUaW1lIHdh
bGxUaW1lRm9yRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50KQogICAgIC8vIFRoaXMgd29ya3Mg
aWYgYW5kIG9ubHkgaWYgdGhlIFggc2VydmVyIG9yIFdheWxhbmQgY29tcG9zaXRvciBoYXBwZW5z
IHRvCiAgICAgLy8gYmUgdXNpbmcgQ0xPQ0tfTU9OT1RPTklDIGZvciBpdHMgbW9ub3RvbmljIHRp
bWUsIGFuZCBzbyBsb25nIGFzCiAgICAgLy8gZ19nZXRfbW9ub3RvbmljX3RpbWUoKSBjb250aW51
ZXMgdG8gZG8gc28gYXMgd2VsbCwgYW5kIHNvIGxvbmcgYXMKLSAgICAvLyBXVEY6Ok1vbm90b25p
Y1RpbWUgY29udGludWVzIHRvIHVzZSBnX2dldF9tb25vdG9uaWNfdGltZSgpLgorICAgIC8vIE1v
bm90b25pY1RpbWUgY29udGludWVzIHRvIHVzZSBnX2dldF9tb25vdG9uaWNfdGltZSgpLgogI2lm
IFVTRShHVEs0KQogICAgIGF1dG8gdGltZSA9IGdka19ldmVudF9nZXRfdGltZShjb25zdF9jYXN0
PEdka0V2ZW50Kj4oZXZlbnQpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAppbmRleCA3YTNiNDcyM2Y0OGMxNzk4NjRiMmRk
NmQ1YjFlZDhkMjc0OTIzNThlLi44MDk1OGJhNTY1YTg3NzIyNGQwZWQzN2U0ZTQwNTdiNGJlMGRk
ZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3Jl
ZW5HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVl
bkd0ay5jcHAKQEAgLTE0MSw5ICsxNDEsOSBAQCBkb3VibGUgc2NyZWVuRFBJKCkKICAgICByZXR1
cm4gY2FjaGVkRHBpOwogfQogCi1zdGF0aWMgV1RGOjpIYXNoTWFwPHZvaWQqLCBGdW5jdGlvbjx2
b2lkKCk+PiYgc2NyZWVuRFBJT2JzZXJ2ZXJIYW5kbGVyc01hcCgpCitzdGF0aWMgSGFzaE1hcDx2
b2lkKiwgRnVuY3Rpb248dm9pZCgpPj4mIHNjcmVlbkRQSU9ic2VydmVySGFuZGxlcnNNYXAoKQog
ewotICAgIHN0YXRpYyBXVEY6Ok5ldmVyRGVzdHJveWVkPFdURjo6SGFzaE1hcDx2b2lkKiwgRnVu
Y3Rpb248dm9pZCgpPj4+IGhhbmRsZXJzTWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPHZvaWQqLCBGdW5jdGlvbjx2b2lkKCk+Pj4gaGFuZGxlcnNNYXA7CiAgICAgcmV0dXJu
IGhhbmRsZXJzTWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCmluZGV4IDk5MzhjZWIzODBl
MTc4YjRlNzYxZDBjZmNmNmExZGE2ZmU5YjMyYmYuLmNhMTRlN2FiMWZjZmY2ZjliYjFjNDFiYTk2
MmQ1NDg5MWRjNTc3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCkBAIC0xMzYsNyArMTM2LDcg
QEAgcHVibGljOgogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50TW9kZS5tb2RlKCk7IH0KICAgICBib29s
IGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXlB
dXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZSgpIGNvbnN0OwotICAgIHZvaWQg
cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4m
JiBjYWxsYmFjayk7CisgICAgdm9pZCBwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3AoRnVu
Y3Rpb248dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAgICAgYm9vbCB3aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUoKTsKICAgICBib29sIGluUGljdHVyZUluUGljdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZW50ZXJpbmdQaWN0dXJlSW5QaWN0dXJlIHx8IG1fY3VycmVudE1vZGUuaGFz
UGljdHVyZUluUGljdHVyZSgpOyB9CkBAIC0xODMsNyArMTgzLDcgQEAgcHJvdGVjdGVkOgogICAg
IFJldGFpblB0cjxVSVZpZXc+IG1fcGFyZW50VmlldzsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+
IG1fcGFyZW50V2luZG93OwogICAgIFJldGFpblB0cjxXZWJBVlBsYXllckxheWVyVmlldz4gbV9w
bGF5ZXJMYXllclZpZXc7Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBtX3ByZXBhcmVU
b0lubGluZUNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5s
aW5lQ2FsbGJhY2s7CiAgICAgUnVuTG9vcDo6VGltZXI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ+IG1fd2F0Y2hkb2dUaW1lcjsKICAgICBGbG9hdFJlY3QgbV9pbmxpbmVSZWN0OwogICAg
IFJvdXRlU2hhcmluZ1BvbGljeSBtX3JvdXRlU2hhcmluZ1BvbGljeSB7IFJvdXRlU2hhcmluZ1Bv
bGljeTo6RGVmYXVsdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAKaW5kZXggNzIwNDFlOWUxZmU5ZmU5ZDU2YWUyNzdiNzBm
OGRlOGJmNmEzYmY3Yy4uYTE5MTBjZTM5MTUxYTJiNWZmOGY5MmY5Y2QzN2FhMDM3NWNiODY2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
UnVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWRSdW4uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKIAogZXh0ZXJuICJDIiB7CiAK
LXR5cGVkZWYgV1RGOjpWZWN0b3I8V2ViVGhyZWFkQmxvY2s+IFdlYlRocmVhZFJ1blF1ZXVlOwor
dHlwZWRlZiBWZWN0b3I8V2ViVGhyZWFkQmxvY2s+IFdlYlRocmVhZFJ1blF1ZXVlOwogCiBzdGF0
aWMgTG9jayBydW5RdWV1ZU11dGV4Owogc3RhdGljIFdlYlRocmVhZFJ1blF1ZXVlKiBydW5RdWV1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVy
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmNw
cAppbmRleCBhNDdlMzQzZjRkY2EwMzZmZWFlZmQzYzEwZDVmMjQwZTM0YjlmMGRiLi5mNWEwZmE3
MDQ5ODlkY2EzMmEwNjk2NWMxMGY5MDJiY2ViNDU0Nzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG93ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcihXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBwb3dlck9uSGFuZGVyKQorUG93ZXJPYnNlcnZlcjo6UG93ZXJP
YnNlcnZlcihGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhhbmRlcikKICAgICA6IG1fcG93ZXJP
bkhhbmRlcihXVEZNb3ZlKHBvd2VyT25IYW5kZXIpKQogICAgICwgbV9wb3dlckNvbm5lY3Rpb24o
MCkKICAgICAsIG1fbm90aWZpY2F0aW9uUG9ydChudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKaW5kZXggYTgwYjYyMDc1YzAxZGMxNDlm
ODMxMWM3NDk0YzgxMzI5YWM2MDU5My4uMTBlNzE3YzFjOTZmZmQxMTQ3ZTA0NmVlNzBjNzJlMWRm
MGJjMTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2Jz
ZXJ2ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5oCkBAIC0zOCwxMyArMzgsMTMgQEAgY2xhc3MgUG93ZXJPYnNlcnZlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUG93ZXJPYnNlcnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogCiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgUG93ZXJPYnNlcnZlcihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBwb3dlck9uSGFuZGVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQb3dlck9i
c2VydmVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBwb3dlck9uSGFuZGVyKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB+UG93ZXJPYnNlcnZlcigpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5
c3RlbVBvd2VyTm90aWZpY2F0aW9uKGlvX3NlcnZpY2VfdCwgdWludDMyX3QgbWVzc2FnZVR5cGUs
IHZvaWQqIG1lc3NhZ2VBcmd1bWVudCk7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9w
b3dlck9uSGFuZGVyOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9wb3dlck9uSGFuZGVyOwogICAg
IGlvX2Nvbm5lY3RfdCBtX3Bvd2VyQ29ubmVjdGlvbjsKICAgICBJT05vdGlmaWNhdGlvblBvcnRS
ZWYgbV9ub3RpZmljYXRpb25Qb3J0OwogICAgIGlvX29iamVjdF90IG1fbm90aWZpZXJSZWZlcmVu
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGll
cy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgK
aW5kZXggMzE4NTlkMTlmNGE2MTdhNzRjZDk1NGNmMTI3NWFjYmY5M2VjNDkzOC4uNmE0M2NmNzZh
YjQ1Y2JhMzdjODg1ZWY5Yzk0NTQyMDhhZmVjNWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaApAQCAtMzgsOCArMzgsOCBAQCBzdHJ1Y3Qg
TWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb247CiAKIGNsYXNzIE1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnkgewogcHVibGljOgotICAgIHVzaW5nIERlY29kaW5nQ29uZmlndXJhdGlvbkNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZv
JiYpPjsKLSAgICB1c2luZyBFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbyYmKT47CisgICAgdXNpbmcg
RGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJp
bGl0aWVzRGVjb2RpbmdJbmZvJiYpPjsKKyAgICB1c2luZyBFbmNvZGluZ0NvbmZpZ3VyYXRpb25D
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8mJik+
OwogCiAgICAgc3RhdGljIGJvb2wgaGFzRGVjb2RpbmdDb25maWd1cmF0aW9uRmFjdG9yeSgpOwog
ICAgIHN0YXRpYyBib29sIGhhc0VuY29kaW5nQ29uZmlndXJhdGlvbkZhY3RvcnkoKTsKQEAgLTQ3
LDggKzQ3LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNyZWF0
ZURlY29kaW5nQ29uZmlndXJhdGlvbihNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmLCBEZWNv
ZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBjcmVhdGVFbmNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRp
b24mJiwgRW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CiAgICAgCi0gICAgdXNpbmcg
Q3JlYXRlRGVjb2RpbmdDb25maWd1cmF0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhRGVj
b2RpbmdDb25maWd1cmF0aW9uJiYsIERlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpPjsK
LSAgICB1c2luZyBDcmVhdGVFbmNvZGluZ0NvbmZpZ3VyYXRpb24gPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRW5jb2RpbmdDb25maWd1cmF0aW9uQ2Fs
bGJhY2smJik+OworICAgIHVzaW5nIENyZWF0ZURlY29kaW5nQ29uZmlndXJhdGlvbiA9IEZ1bmN0
aW9uPHZvaWQoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRGVjb2RpbmdDb25maWd1cmF0
aW9uQ2FsbGJhY2smJik+OworICAgIHVzaW5nIENyZWF0ZUVuY29kaW5nQ29uZmlndXJhdGlvbiA9
IEZ1bmN0aW9uPHZvaWQoTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRW5jb2RpbmdDb25m
aWd1cmF0aW9uQ2FsbGJhY2smJik+OwogCiAgICAgc3RydWN0IE1lZGlhRW5naW5lRmFjdG9yeSB7
CiAgICAgICAgIENyZWF0ZURlY29kaW5nQ29uZmlndXJhdGlvbiBjcmVhdGVEZWNvZGluZ0NvbmZp
Z3VyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXgg
OTcxOGE0YjY0M2RhYjY4ZTYyNzFmM2VkMThjY2RkNmUwZTRlMWQ3OC4uZjk1ZDhmMDFhZmFlYjQ4
YWViODAxYTM2MmVlNDY0MWIyNjI0NDFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlQnVmZmVy
CiAgICAgbV93cml0ZXItPmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKHNhbXBsZUJ1ZmZlcik7CiB9
CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjphdWRpb1NhbXBsZXNBdmFpbGFi
bGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmIG1lZGlhVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXpl
X3Qgc2FtcGxlQ291bnQpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIHNpemVfdCBzYW1wbGVDb3VudCkKIHsKICAgICBBU1NFUlQoaXM8V2ViQXVkaW9CdWZmZXJM
aXN0PihkYXRhKSk7CiAgICAgQVNTRVJUKGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24o
KS50eXBlID09IFBsYXRmb3JtRGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKaW5kZXggYzY1OTU1ZDNlZDgwM2Y5
YTNkOTc0YzQzMGNjN2RhNDNiNGUyYWVhNy4uMzhiOTRmOWU0ZWFjNGRmNDM1YWMwMjNkMjgzMDUw
NDNlMWI5MjcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCkBAIC01
MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJikgZmluYWw7CiAgICAgdm9pZCBm
ZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBhdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0
YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworICAgIHZv
aWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3Jt
QXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7
CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFs
OwogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IGY4MjE1YzBlMGVjOTA4OTJiZWFiNTk4YzFj
MzEwYTY0NjM1MWI0OTAuLjFlZmE3MGI5MDUxMGRiZmVhMzcxMzlkYjlmYThjNjAxNmQ0YzUzNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJikKICAgICBnZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5nKCk7CiB9CiAKLXZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVNb2NrOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpN
ZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBzaXplX3QpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkKIHsKICAgICAvLyBIZWFw
IGFsbG9jYXRpb25zIGFyZSBmb3JiaWRkZW4gb24gdGhlIGF1ZGlvIHRocmVhZCBmb3IgcGVyZm9y
bWFuY2UgcmVhc29ucyBzbyB3ZSBuZWVkIHRvCiAgICAgLy8gZXhwbGljaXRseSBhbGxvdyB0aGUg
Zm9sbG93aW5nIGFsbG9jYXRpb24ocykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaApp
bmRleCA0OWNhZGJkZmEyMTBhZDhiZDUwYmVkNTQ0ZjU4NzNmYTViMDdkMDEyLi5kNDg0YjJmY2Vh
MWU4NGFlZTliZjgxZTBkZTI2Mjc0MmZkMjI5MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZWRpYVJlY29yZGVy
UHJpdmF0ZQogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKSBmaW5h
bDsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
ZmluYWw7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwg
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
c2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHBhdXNlUmVjb3JkaW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCByZXN1bWVSZWNvcmRpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1
OGUwY2QzNDgyNTMyZDA5Zi4uYTRhZDI4NDBhMmQ2ZGE1YzMyZGM0NTEwYjY4OWE4NmZiOTk4YmE5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcigpOwogCiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihNZWRpYVNhbXBs
ZSYpOwotICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRp
b0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRp
bWUmLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxh
dGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgTWVk
aWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKICAgICB2b2lkIGZl
dGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRv
dWJsZSk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaAppbmRleCAw
OTcyNzY4ZGVmZWJlYmE4ZjAyODQ4NTkyMmFkNmIxODExZmNhMzBiLi5lYWI3NWI4NDEzYWVkNTFm
MmY1NGU0NTIwNzUwM2U3NTMwYjg4YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0gMDsKICAgICAvLyBNYXkgYmUgY2Fs
bGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuIEl0IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRl
ciBzdGFydC9iZWZvcmUgc3RvcCBpcyBjYWxsZWQuCi0gICAgdmlydHVhbCB2b2lkIHB1c2hTYW1w
bGVzKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25z
dCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHB1c2hTYW1wbGVzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwg
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgZmxvYXQgdm9sdW1lKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHMuY3BwCmluZGV4IGZlNzY5N2Y4NTdjMzU4YzkxY2EwZmZjYTViZjBjY2JjNzc0YWYyYTku
LjFmZDAyM2Q4MDQ5NDYzMTIxM2YyY2YxMDUxM2Y0MWI2YzU4ODIyYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMu
Y3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgU3Ry
aW5nJiBTdHJpbmdDb25zdHJhaW50OjpmaW5kKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25z
dCBTdHJpbmcmKT4mIGZpbHRlcikgY29uc3QKK2NvbnN0IFN0cmluZyYgU3RyaW5nQ29uc3RyYWlu
dDo6ZmluZChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgZmlsdGVyKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fZXhhY3QpIHsKICAgICAgICAgaWYg
KGZpbHRlcihjb25zdHJhaW50KSkKQEAgLTE4MCw3ICsxODAsNyBAQCBjb25zdCBNZWRpYUNvbnN0
cmFpbnQqIEZsYXR0ZW5lZENvbnN0cmFpbnQ6OmZpbmQoTWVkaWFDb25zdHJhaW50VHlwZSB0eXBl
KSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwOjpmb3JFYWNoKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBNZWRpYUNvbnN0cmFp
bnQmKT4mJiBjYWxsYmFjaykgY29uc3QKK3ZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6
OmZvckVhY2goRnVuY3Rpb248dm9pZChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKT4mJiBjYWxsYmFj
aykgY29uc3QKIHsKICAgICBmaWx0ZXIoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChj
b25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIG11dGFibGUgewogICAgICAgICBjYWxs
YmFjayhjb25zdHJhaW50KTsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIE1lZGlhVHJhY2tDb25z
dHJhaW50U2V0TWFwOjpmb3JFYWNoKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBNZWRpYUNvbnN0
cmFpbgogICAgIH0pOwogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmaWx0
ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpPiYgY2Fs
bGJhY2spIGNvbnN0Cit2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmaWx0ZXIoY29u
c3QgRnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKT4mIGNhbGxiYWNrKSBjb25z
dAogewogICAgIGlmIChtX3dpZHRoICYmICFtX3dpZHRoLT5pc0VtcHR5KCkgJiYgY2FsbGJhY2so
Km1fd2lkdGgpKQogICAgICAgICByZXR1cm47CkBAIC0zNzUsNyArMzc1LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGFkZERlZmF1bHRWaWRlb0NvbnN0cmFpbnRzKE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwJiB2aWRlb0MKICAgICB9CiB9CiAKLWJvb2wgTWVkaWFDb25zdHJhaW50czo6aXNDb25z
dHJhaW50U2V0KGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcCYpPiYgY2FsbGJhY2spCitib29sIE1lZGlhQ29uc3RyYWludHM6OmlzQ29uc3Ry
YWludFNldChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwJik+JiBjYWxsYmFjaykKIHsKICAgICBpZiAoY2FsbGJhY2sobWFuZGF0b3J5Q29uc3RyYWlu
dHMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAppbmRleCBlMmFhZjI3NzEwMjZj
YzE4Yjc4MGQ5YTc4NjFhYzMxOTE0NTQ3ZmJjLi5iYTAyOGY0ZGJkZmQxOWViMTJhNmM3ZmVjNmNh
MDQ0ODY5NjUxNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBWYWx1ZVR5cGUgZmluZChjb25zdCBX
VEY6OkZ1bmN0aW9uPGJvb2woVmFsdWVUeXBlKT4mIGZ1bmN0aW9uKSBjb25zdAorICAgIFZhbHVl
VHlwZSBmaW5kKGNvbnN0IEZ1bmN0aW9uPGJvb2woVmFsdWVUeXBlKT4mIGZ1bmN0aW9uKSBjb25z
dAogICAgIHsKICAgICAgICAgaWYgKG1fbWluICYmIGZ1bmN0aW9uKG1fbWluLnZhbHVlKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIG1fbWluLnZhbHVlKCk7CkBAIC01OTIsNyArNTkyLDcgQEAgcHVi
bGljOgogICAgIGRvdWJsZSBmaXRuZXNzRGlzdGFuY2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAg
ICAgZG91YmxlIGZpdG5lc3NEaXN0YW5jZShjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Owog
Ci0gICAgY29uc3QgU3RyaW5nJiBmaW5kKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBT
dHJpbmcmKT4mKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIGZpbmQoY29uc3QgRnVuY3Rpb248
Ym9vbChjb25zdCBTdHJpbmcmKT4mKSBjb25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXhhY3QuaXNFbXB0eSgpICYmIG1faWRlYWwuaXNFbXB0eSgpOyB9CiAgICAg
Ym9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IHsgcmV0dXJuICFtX2V4YWN0LmlzRW1wdHkoKTsgfQpA
QCAtNjQ5LDggKzY0OSw4IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2goV1RGOjpG
dW5jdGlvbjx2b2lkKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpPiYmKSBjb25zdDsKLSAgICB2b2lk
IGZpbHRlcihjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgTWVkaWFDb25zdHJhaW50Jik+
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgTWVkaWFDb25zdHJhaW50Jik+JiYpIGNvbnN0OworICAgIHZvaWQgZmlsdGVyKGNvbnN0
IEZ1bmN0aW9uPGJvb2woY29uc3QgTWVkaWFDb25zdHJhaW50Jik+JikgY29uc3Q7CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25z
dDsKIApAQCAtODk0LDcgKzg5NCw3IEBAIHByaXZhdGU6CiAKIHN0cnVjdCBNZWRpYUNvbnN0cmFp
bnRzIHsKICAgICB2b2lkIHNldERlZmF1bHRWaWRlb0NvbnN0cmFpbnRzKCk7Ci0gICAgYm9vbCBp
c0NvbnN0cmFpbnRTZXQoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwJik+Jik7CisgICAgYm9vbCBpc0NvbnN0cmFpbnRTZXQoY29uc3QgRnVu
Y3Rpb248Ym9vbChjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYpPiYpOwogCiAgICAg
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5Q29uc3RyYWludHM7CiAgICAgVmVj
dG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBhZHZhbmNlZENvbnN0cmFpbnRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCmluZGV4IDA0YTVmYmQyMGQ1ZDU5MDUxNjk2YTk0YzFkYjcyZTE0YjAyMzBh
M2MuLmRlY2Q5MDc5NjdiMzlhZTllYTY1YjI3MWU2NTM2OTNiNjRmNGViNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZShUeXBlLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkZXZpY2VJRCA9
IHsgfSwgU3RyaW5nJiYgaGFzaFNhbHQgPSB7IH0pOwogCi0gICAgdm9pZCBzY2hlZHVsZURlZmVy
cmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBzY2hlZHVsZURlZmVy
cmVkVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29u
ZmlndXJhdGlvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2Nv
YS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hLmgKaW5kZXggM2E3YjNkYzkxMzJlNmY0MTIxNGVhODQ3NWFjZWUzYzAxMWUyY2UzZC4uZDRh
ZjVmNmE5OTc5MDI1MWU4ODk1ZjQ4NDRmYjllZWJlODgxZjk2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaApAQCAtNDksNyArNDks
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIKLSAgICB2b2lkIHB1c2hTYW1wbGVzKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90
KSBmaW5hbDsKKyAgICB2b2lkIHB1c2hTYW1wbGVzKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
ZmluYWw7CiAgICAgdm9pZCBzdGFydChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHAKaW5kZXggZWVmYjFjOTE5M2JiOWM5YTAzNmJkZWZiYzUwYmU5NmE2MDk1NTM0
Zi4uZTA4YjUyOWY4MmJiY2NkNjY2YzMzNTdhYTdlNzc1NDQ3ZWQwNTZhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRp
c3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURl
dmljZU1hbmFnZXI6OmNvbXB1dGVDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGwKIHsKICAg
ICBtX2RldmljZXMuY2xlYXIoKTsKIAotICAgIENhcHR1cmVEZXZpY2Ugc2NyZWVuQ2FwdHVyZURl
dmljZShXVEY6OmNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6U2NyZWVuLCBtYWtlU3RyaW5nKCJDYXB0dXJlIFNjcmVlbiIpKTsKKyAgICBDYXB0
dXJlRGV2aWNlIHNjcmVlbkNhcHR1cmVEZXZpY2UoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
LCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VTdHJpbmcoIkNhcHR1cmUg
U2NyZWVuIikpOwogICAgIHNjcmVlbkNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZCh0cnVlKTsKICAg
ICBtX2RldmljZXMuYXBwZW5kKFdURk1vdmUoc2NyZWVuQ2FwdHVyZURldmljZSkpOwogICAgIGNh
bGxiYWNrKCk7CkBAIC03Niw4ICs3Niw4IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIEdTdHJlYW1l
ckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlRGlzcGxheUNhcHR1cmVTCiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgYXV0byB0b2tlbiA9IG1ha2VTdHJpbmcoIldl
YktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQzMigpKTsKLSAgICBhdXRvIHNlc3Npb25Ub2tlbiA9
IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQzMigpKTsKKyAgICBhdXRv
IHRva2VuID0gbWFrZVN0cmluZygiV2ViS2l0Iiwgd2Vha1JhbmRvbVVpbnQzMigpKTsKKyAgICBh
dXRvIHNlc3Npb25Ub2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIHdlYWtSYW5kb21VaW50MzIo
KSk7CiAgICAgR1ZhcmlhbnRCdWlsZGVyIG9wdGlvbnM7CiAgICAgZ192YXJpYW50X2J1aWxkZXJf
aW5pdCgmb3B0aW9ucywgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CiAgICAgZ192YXJpYW50X2J1
aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLCBnX3ZhcmlhbnRfbmV3
X3N0cmluZyh0b2tlbi5hc2NpaSgpLmRhdGEoKSkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIENhcHR1
cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3Jl
YXRlRGlzcGxheUNhcHR1cmVTCiAgICAgLy8gRklYTUU6IE1heWJlIGNoZWNrIHRoaXMgZGVwZW5k
aW5nIG9uIGRldmljZS50eXBlKCkuCiAgICAgYXV0byBvdXRwdXRUeXBlID0gR1N0cmVhbWVyRGlz
cGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpQaXBlV2lyZU91dHB1dFR5cGU6Ok1vbml0b3IgfCBH
U3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OlBpcGVXaXJlT3V0cHV0VHlwZTo6
V2luZG93OwogCi0gICAgdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5k
b21VaW50MzIoKSk7CisgICAgdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCB3ZWFrUmFuZG9t
VWludDMyKCkpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJm9wdGlvbnMsIEdfVkFSSUFO
VF9UWVBFX1ZBUkRJQ1QpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntz
dn0iLCAiaGFuZGxlX3Rva2VuIiwgZ192YXJpYW50X25ld19zdHJpbmcodG9rZW4uYXNjaWkoKS5k
YXRhKCkpKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgInR5
cGVzIiwgZ192YXJpYW50X25ld191aW50MzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG91dHB1dFR5
cGUpKSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVMKICAgICBn
X3ZhcmlhbnRfZ2V0KHJlc3VsdC5nZXQoKSwgIihvKSIsICZvYmplY3RQYXRoLm91dFB0cigpKTsK
ICAgICB3YWl0UmVzcG9uc2VTaWduYWwob2JqZWN0UGF0aC5nZXQoKSk7CiAKLSAgICB0b2tlbiA9
IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vha1JhbmRvbVVpbnQzMigpKTsKKyAgICB0b2tl
biA9IG1ha2VTdHJpbmcoIldlYktpdCIsIHdlYWtSYW5kb21VaW50MzIoKSk7CiAgICAgZ192YXJp
YW50X2J1aWxkZXJfaW5pdCgmb3B0aW9ucywgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CiAgICAg
Z192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRpb25zLCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLCBn
X3ZhcmlhbnRfbmV3X3N0cmluZyh0b2tlbi5hc2NpaSgpLmRhdGEoKSkpOwogICAgIHJlc3VsdCA9
IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKG1fcHJveHkuZ2V0KCksICJTdGFydCIs
CkBAIC0xNTQsNyArMTU0LDcgQEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVyRGlzcGxh
eUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVMKICAgICBnX3Zhcmlh
bnRfZ2V0KHJlc3VsdC5nZXQoKSwgIihoKSIsICZmZE91dCk7CiAgICAgZmQgPSBnX3VuaXhfZmRf
bGlzdF9nZXQoZmRMaXN0LmdldCgpLCBmZE91dCwgbnVsbHB0cik7CiAKLSAgICBhdXRvIHNlc3Np
b24gPSBXVEY6Om1ha2VVbmlxdWU8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpTZXNzaW9uPihmZCwgV1RGTW92ZShzZXNzaW9uUGF0aCkpOworICAgIGF1dG8gc2Vzc2lvbiA9
IG1ha2VVbmlxdWU8R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpTZXNzaW9u
PihmZCwgV1RGTW92ZShzZXNzaW9uUGF0aCkpOwogICAgIG1fc2Vzc2lvbnMuYWRkKGRldmljZS5w
ZXJzaXN0ZW50SWQoKSwgV1RGTW92ZShzZXNzaW9uKSk7CiAgICAgcmV0dXJuIEdTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlUGlwZXdpcmVTb3VyY2UoZGV2aWNlLnBlcnNpc3RlbnRJ
ZCgpLmlzb2xhdGVkQ29weSgpLCBmZCwgeyB9LCBjb25zdHJhaW50cywgZGV2aWNlLnR5cGUoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TWVkaWFTdHJlYW1UcmFja0F1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVBy
b3ZpZGVyQ29jb2EuaAppbmRleCA3NzViMTU2ZWU5NjA3Zjc5ZTFjNDE5NzI2MjgzODkyNGFiNzJl
ZGRkLi41ZjZjZjQxYWZmYjg1OTIzOTRmZmY0ZjgzNzkwNGU3ZjhmNzEyNjlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1UcmFj
a0F1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbVRyYWNrQXVkaW9Tb3VyY2VQcm92aWRlckNvY29h
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQ29jb2EKICAgICB2b2lkIGhhc05ld0NsaWVudChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50
KikgZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgV1RGOjpMb2dnZXJIZWxw
ZXImIGxvZ2dlckhlbHBlcigpIGZpbmFsIHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CisgICAg
TG9nZ2VySGVscGVyJiBsb2dnZXJIZWxwZXIoKSBmaW5hbCB7IHJldHVybiBtX3NvdXJjZS5nZXQo
KTsgfQogI2VuZGlmCiAKICAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaAppbmRleCA3ZmMwNzI1ZmJi
ZmEzZmE2ZWIyMmM3ZjRkMWEwOWVkZGE5NTc0ZjE0Li45NDNhOGRhNmUwMWE0MGJjMmI0MDMxMTU1
MmUzYjMyM2E1MTU5NDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2Nv
YS5oCkBAIC02NSw3ICs2NSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGhhc05ld0NsaWVudChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KikgPSAwOwogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZpcnR1YWwgV1RGOjpMb2dnZXJIZWxwZXImIGxvZ2dl
ckhlbHBlcigpID0gMDsKKyAgICB2aXJ0dWFsIExvZ2dlckhlbHBlciYgbG9nZ2VySGVscGVyKCkg
PSAwOwogI2VuZGlmCiAKICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaAppbmRleCBm
ZTMyNzU5NmEyZjBkYmUzNmQxZDY4MmZmYjk0NGIyNDk3MWIwMGIyLi4yZmE3NWUwNTdhNTNkN2U4
MThjY2ZhZmVlNzAyNDNkZDU0ODIxODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgUGVybWlzc2lvblN0YXRlQWxsb3dlZCwKICAgICAgICAgUGVybWlzc2lv
blN0YXRlRGVuaWVkLAogICAgIH0gbV9wZXJtaXNzaW9uU3RhdGU7Ci0gICAgdHlwZWRlZiBXVEY6
Okhhc2hTZXQ8UmVmUHRyPEdlb2xvY2F0aW9uPiA+IEdlb2xvY2F0aW9uU2V0OworICAgIHR5cGVk
ZWYgSGFzaFNldDxSZWZQdHI8R2VvbG9jYXRpb24+PiBHZW9sb2NhdGlvblNldDsKICAgICBHZW9s
b2NhdGlvblNldCBtX3BlbmRpbmdQZXJtaXNzaW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9j
ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5TW9jay5oCmluZGV4IDgxZDgyMTMwZjgzOWI5ZDEyNzc1MzI0NTQ3YmNlOWZmNzFi
MDc4N2YuLmI3OGM0NGI2NDc4NmUyMTQwZGEzNDFhNWIyNjJlMzNlYjcxYTY3N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeU1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnlNb2NrLmgKQEAgLTM3LDggKzM3LDggQEAgc3RydWN0IE1l
ZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uOwogc3RydWN0IE1lZGlhRW5jb2RpbmdDb25maWd1cmF0
aW9uOwogCiBzdHJ1Y3QgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeU1vY2sgewotICAg
IHVzaW5nIERlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvJiYpPjsKLSAgICB1c2luZyBFbmNvZGluZ0Nv
bmZpZ3VyYXRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGll
c0VuY29kaW5nSW5mbyYmKT47CisgICAgdXNpbmcgRGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvJiYpPjsKKyAg
ICB1c2luZyBFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoTWVk
aWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8mJik+OwogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRl
RGVjb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYsIERlY29k
aW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUVuY29k
aW5nQ29uZmlndXJhdGlvbihNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYmLCBFbmNvZGluZ0Nv
bmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNwcAppbmRleCBkNmNmMDI4MmJi
YWJlODkyYTdjNDAwYjc0ZGQ4ZGExNWUwZmYxM2ZiLi41OTZiZWViNjEzM2EwNmJiMzhlNTNjZjU3
N2EzODk5Y2FkY2RlM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1Njcm9sbGJhcnNDb250cm9sbGVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwCkBAIC0zNiw3ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrOjpTY3JvbGxi
YXJzQ29udHJvbGxlck1vY2soU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgbG9nZ2VyKQorU2Nyb2xsYmFyc0NvbnRyb2xs
ZXJNb2NrOjpTY3JvbGxiYXJzQ29udHJvbGxlck1vY2soU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGxvZ2dlcikKICAgICA6IFNj
cm9sbGJhcnNDb250cm9sbGVyKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9sb2dnZXIoV1RGTW92
ZShsb2dnZXIpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
Y3JvbGxiYXJzQ29udHJvbGxlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmgKaW5kZXggYTQ3MzM5MzExMmQ4NGFhNTNlZDJiNjc5
ZWZmMDg0NjczM2I4ODJiZi4uY2IzMDM2YTU4OTAyOTc0NmZmMDQyOTMzODY2YmY4YzdlZTg3MTFh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29u
dHJvbGxlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJh
cnNDb250cm9sbGVyTW9jay5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFNjcm9sbGJhcnNDb250
cm9sbGVyTW9jayBmaW5hbCA6IHB1YmxpYyBTY3JvbGxiYXJzQ29udHJvbGxlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Nyb2xsYmFy
c0NvbnRyb2xsZXJNb2NrKTsKIHB1YmxpYzoKLSAgICBTY3JvbGxiYXJzQ29udHJvbGxlck1vY2so
U2Nyb2xsYWJsZUFyZWEmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwor
ICAgIFNjcm9sbGJhcnNDb250cm9sbGVyTW9jayhTY3JvbGxhYmxlQXJlYSYsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZpcnR1YWwgflNjcm9sbGJhcnNDb250cm9sbGVy
TW9jaygpOwogCiBwcml2YXRlOgpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
bW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIqLCBib29sKSBjb25zdCBmaW5hbDsKICAg
ICBjb25zdCBjaGFyKiBzY3JvbGxiYXJQcmVmaXgoU2Nyb2xsYmFyKikgY29uc3Q7CiAKLSAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+IG1fbG9nZ2VyOworICAgIEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+IG1fbG9nZ2VyOwogICAgIFNjcm9sbGJhciogbV92ZXJ0aWNh
bFNjcm9sbGJhciB7IG51bGxwdHIgfTsKICAgICBTY3JvbGxiYXIqIG1faG9yaXpvbnRhbFNjcm9s
bGJhciB7IG51bGxwdHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCA3MDI1OTQ0NzFhZDNkODRkYTYyNDUw
NWU2YWEyZDZmZDgyYTJlMDYyLi42N2E3NjI5NWQ4NWYzOTFjODNiMjQwMGU2ZDFmZTU3OWNjZGVk
ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBib29sIEJsb2JSZWdpc3RyeUltcGw6
OnBvcHVsYXRlQmxvYnNGb3JGaWxlV3JpdGluZyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
TAogCiBzdGF0aWMgYm9vbCB3cml0ZUZpbGVQYXRoc09yRGF0YUJ1ZmZlcnNUb0ZpbGUoY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFRocmVhZFNhZmVEYXRhQnVmZmVyPj4mIGZpbGVQYXRo
c09yRGF0YUJ1ZmZlcnMsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25z
dCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVF
eGl0KFtmaWxlXSgpIG11dGFibGUgeworICAgIGF1dG8gZmlsZUNsb3NlciA9IG1ha2VTY29wZUV4
aXQoW2ZpbGVdKCkgbXV0YWJsZSB7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
KTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Db29raWVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZVN0b3JhZ2UuaAppbmRleCA3NjU2MjlkZjE4ZWY0MmI3OTU3YmZiNzAzMGY4MTFiMDExMTNjZDA0
Li5kOWEwMmE1NmE2ZDZmMjBkOTc0NTRjMzdkODEwY2E2ODhkZTM2NGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaApAQCAtMzEsNyArMzEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsK
IAotV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAppbmRleCA5NDcyODYz
YjNiMDFmMDkzMWMxYzk0NDQ1N2JiNGI0Y2ZlODRjZjVlLi5hOWIyOWQ1OWU5YWEzYjQ2NTU0MTVi
ZDhiZWYwOTg0YzU0NGI3M2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVjdCBSZXN1bHQgewog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogfTsKIAotdXNpbmcgRGVjb2RlQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVzdWx0Pik+OwordXNp
bmcgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8
UmVzdWx0Pik+Owogc3RydWN0IFNjaGVkdWxlQ29udGV4dCB7CiAjaWYgVVNFKENPQ09BX0VWRU5U
X0xPT1ApCiAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBzY2hlZHVsZWRQYWlyczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggMmZlZmQ4
MGQ5MWFkYTY1Njc1Y2Y3ZWEyOGUyOThjZmNiYzIyMDBkNC4uZjNmODdhNGY3ZTliYjhlNzc2N2E5
ZTg5MTU3YjdiMmU2M2MzZTdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gVHJ1ZSBpZiBjaGFyYWN0ZXJzIHdoaWNoIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBhcmUg
cHJlc2VudCwgaW5jcmVtZW50aW5nCiAvLyAicG9zIiB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgd2hp
Y2ggZG9lcyBub3Qgc2F0aXNmeSB0aGUgcHJlZGljYXRlLgogLy8gTm90ZTogbWlnaHQgcmV0dXJu
IHBvcyA9PSBzdHIubGVuZ3RoKCkuCi1zdGF0aWMgaW5saW5lIGJvb2wgc2tpcFdoaWxlKGNvbnN0
IFN0cmluZyYgc3RyLCB1bnNpZ25lZCYgcG9zLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29u
c3QgVUNoYXIpPiYgcHJlZGljYXRlKQorc3RhdGljIGlubGluZSBib29sIHNraXBXaGlsZShjb25z
dCBTdHJpbmcmIHN0ciwgdW5zaWduZWQmIHBvcywgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBV
Q2hhcik+JiBwcmVkaWNhdGUpCiB7CiAgICAgY29uc3QgdW5zaWduZWQgc3RhcnQgPSBwb3M7CiAg
ICAgY29uc3QgdW5zaWduZWQgbGVuID0gc3RyLmxlbmd0aCgpOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmIHZhbHVlKQogI2lmIFVTRShHTElC
KQogLy8gVHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiBzYXRpc2lm
aWVzIGEgcHJlZGljYXRlLCBpbmNyZW1lbnRpbmcgInBvcyIgYnkgb25lLgogLy8gTm90ZTogTWln
aHQgcmV0dXJuIHBvcyA9PSBzdHIubGVuZ3RoKCkKLXN0YXRpYyBpbmxpbmUgYm9vbCBza2lwQ2hh
cmFjdGVyKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkJiBwb3MsIFdURjo6RnVuY3Rpb248
Ym9vbChjb25zdCBVQ2hhcik+JiYgcHJlZGljYXRlKQorc3RhdGljIGlubGluZSBib29sIHNraXBD
aGFyYWN0ZXIoY29uc3QgU3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQmIHBvcywgRnVuY3Rpb248Ym9v
bChjb25zdCBVQ2hhcik+JiYgcHJlZGljYXRlKQogewogICAgIGlmIChwb3MgPCB2YWx1ZS5sZW5n
dGgoKSAmJiBwcmVkaWNhdGUodmFsdWVbcG9zXSkpIHsKICAgICAgICAgKytwb3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZp
ZXIuY3BwCmluZGV4IDQzYjgxMWMzOTMyZGNhNGE2MWFhZDA3Y2E5ZDUxMzVhNWRlOGZjOGQuLjdl
OTFmYWY1YzI2YWI3ZmUzMDUwMzI5MTY1NjgzNTZmMjk0YzhmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgTmV0d29ya1N0YXRlTm90aWZpZXI6Om9uTGluZSgpCiAg
ICAgcmV0dXJuIG1faXNPbkxpbmUudmFsdWVfb3IodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0
YXRlTm90aWZpZXI6OmFkZExpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBsaXN0
ZW5lcikKK3ZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZExpc3RlbmVyKEZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYgbGlzdGVuZXIpCiB7CiAgICAgQVNTRVJUKGxpc3RlbmVyKTsKICAgICBpZiAo
bV9saXN0ZW5lcnMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCmluZGV4IDNmYzI1OTg2OGI2Y2I0ODZm
NzQxNGZkYjJhMWQwZjI2ZWNmMTVjNzEuLjgzODBlMjE4ZDg3MzZhYTJkOWE5NTkyNGQxMjlkNjFl
NDRiYzk0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0YXRlTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBOZXR3b3JrU3RhdGVOb3RpZmllciYgc2luZ2xldG9uKCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9uTGluZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWRkTGlzdGVuZXIoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgaXNPbkxpbmUpPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExpc3RlbmVyKEZ1bmN0aW9uPHZvaWQoYm9vbCBpc09u
TGluZSk+JiYpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxOZXR3b3Jr
U3RhdGVOb3RpZmllcj47CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pc09uTGluZTsKLSAgICBWZWN0b3I8V1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wpPj4gbV9saXN0ZW5lcnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoYm9v
bCk+PiBtX2xpc3RlbmVyczsKICAgICBUaW1lciBtX3VwZGF0ZVN0YXRlVGltZXI7CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IGZhZmRmZTg3YzgzN2U2MTU3ZDJmMTNlOWE3Y2EwMDk2
OWQ1MGIxYzcuLjA0ZmJlYjE4MWVjMWJjNzAwYWMxNDFlZGY1ZDhkZmFkMmZkZTNmMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAg
LTEyOSw4ICsxMjksOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIHZvaWQgc2NoZWR1bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKLSAgICB2b2lkIHVuc2NoZWR1
bGUoV1RGOjpTY2hlZHVsZVBhaXImKTsKKyAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciYp
OworICAgIHZvaWQgdW5zY2hlZHVsZShTY2hlZHVsZVBhaXImKTsKICNlbmRpZgogCiAjaWYgVVNF
KENGVVJMQ09OTkVDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAppbmRleCBmM2Q3NDRmZGViNjAxYWQy
YTk5NWNiZWM2NTAzZjI4NzI2MjRhZmUxLi5kYTE3MzQ0ZTI0OTg2NGFlNzM5MTZiZDVkMWZmODZj
Yzc3YmRkOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEhhc2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwg
V1RGOjpGdW5jdGlvbjx2b2lkICgpPj4mIGNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKCkKK3N0YXRp
YyBIYXNoTWFwPENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIEZ1bmN0aW9uPHZvaWQoKT4+JiBjb29r
aWVDaGFuZ2VDYWxsYmFja01hcCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4+IG1hcDsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVm
LCBGdW5jdGlvbjx2b2lkKCk+Pj4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKQEAgLTYzLDcg
KzYzLDcgQEAgc3RhdGljIGlubGluZSBDRlJ1bkxvb3BSZWYgY29va2llU3RvcmFnZU9ic2VydmVy
UnVuTG9vcCgpCiAgICAgcmV0dXJuIGxvYWRlclJ1bkxvb3AoKTsKIH0KIAotdm9pZCBzdGFydE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lv
biwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIHN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBGdW5j
dGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29r
aWVTdG9yYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKaW5kZXggYzIyZDkzNzAzYmU0YTZjYTAxYWIzZDIy
NDhmYjczZjlhMmQwZGNmNS4uYWM1MzQ5OWU3MmE2MTFiZDU0MDkxY2IxY2FiYWVjNTlkZTk4Zjhj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29r
aWVTdG9yYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZVN0b3JhZ2U+IG1fY29va2llU3RvcmFnZTsKICAg
ICBib29sIG1faGFzUmVnaXN0ZXJlZEludGVybmFsc0Zvck5vdGlmaWNhdGlvbnMgeyBmYWxzZSB9
OwogICAgIFJldGFpblB0cjxXZWJDb29raWVPYnNlcnZlckFkYXB0ZXI+IG1fb2JzZXJ2ZXJBZGFw
dGVyOwotICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2Nvb2tpZUNoYW5nZUNhbGxiYWNrOwor
ICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jb29raWVDaGFuZ2VDYWxsYmFjazsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IDhlY2FlZGM0M2YzNTJiZTgwNWY2MWExNmYz
N2NkNTJkNmI4ZmQ0YmIuLjk1ZDc2OGFjZTA4MGIyZjY2MjU5MTUxNTQxY2FjYjg5ZDE0YmMwMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmNwcApAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgQ29va2llSmFyREI6OmNhbkFjY2Vw
dENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjCiBi
b29sIENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7CiAgICAg
YXV0byBleHBpcmVzID0gY29va2llLmV4cGlyZXMudmFsdWVfb3IoMC4wKTsKLSAgICBpZiAoIWNv
b2tpZS5zZXNzaW9uICYmIE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRzKGV4cGlyZXMgLyBX
VEY6Om1zUGVyU2Vjb25kKSA8PSBNb25vdG9uaWNUaW1lOjpub3coKSkKKyAgICBpZiAoIWNvb2tp
ZS5zZXNzaW9uICYmIE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRzKGV4cGlyZXMgLyBtc1Bl
clNlY29uZCkgPD0gTW9ub3RvbmljVGltZTo6bm93KCkpCiAgICAgICAgIHJldHVybiBkZWxldGVD
b29raWVJbnRlcm5hbChjb29raWUubmFtZSwgY29va2llLmRvbWFpbiwgY29va2llLnBhdGgpOwog
CiAgICAgYXV0byYgc3RhdGVtZW50ID0gcHJlcGFyZWRTdGF0ZW1lbnQoU0VUX0NPT0tJRV9TUUwp
OwpAQCAtNTUzLDcgKzU1Myw3IEBAIGJvb2wgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKGNh
cHBlZExpZmV0aW1lICYmIGNvb2tpZS0+ZXhwaXJlcykgewogICAgICAgICBBU1NFUlQoKmNhcHBl
ZExpZmV0aW1lID49IDBfcyk7CiAgICAgICAgIGF1dG8gY2FwcGVkRXhwaXJlcyA9IFdhbGxUaW1l
Ojpub3coKSArICpjYXBwZWRMaWZldGltZTsKLSAgICAgICAgaWYgKGNhcHBlZEV4cGlyZXMgPCBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoKmNvb2tpZS0+ZXhwaXJlcyAvIFdURjo6bXNQZXJTZWNv
bmQpKQorICAgICAgICBpZiAoY2FwcGVkRXhwaXJlcyA8IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25k
cygqY29va2llLT5leHBpcmVzIC8gbXNQZXJTZWNvbmQpKQogICAgICAgICAgICAgY29va2llLT5l
eHBpcmVzID0gY2FwcGVkRXhwaXJlcy5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZVN0b3JhZ2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVTdG9yYWdlQ3VybC5jcHAKaW5kZXggZTJlZmE1NGQ2YTRiN2I3MzdiNTUx
NGQ5OGU2NmM4OTlmM2FiNmZmNS4uNWUzYWRmMGE3MDUzNDgyYzNiMzlkYTVjOTZlZDdhZWUyZjM5
ZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVN0b3JhZ2VDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llU3RvcmFnZUN1cmwuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpCit2b2lkIHN0YXJ0T2JzZXJ2
aW5nQ29va2llQ2hhbmdlcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBGdW5jdGlvbjx2b2lkKCk+
JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCAxYWUzODkwOWZjMTY3
ODQxNzU4ZjhkMjUzYTMyNmMwNDY1NWRmODdkLi4zNjVmNzY2YTJhMDllNWM1MTgwMTk0NjAyZmY1
YjMzMDRhZDk2YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgZG9tYWluTWF0Y2go
Y29uc3QgU3RyaW5nJiBjb29raWVEb21haW4sIGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKICAgICBz
aXplX3QgaW5kZXggPSBob3N0LmZpbmQoY29va2llRG9tYWluKTsKIAotICAgIGJvb2wgdGFpbE1h
dGNoID0gKGluZGV4ICE9IFdURjo6bm90Rm91bmQgJiYgaW5kZXggKyBjb29raWVEb21haW4ubGVu
Z3RoKCkgPT0gaG9zdC5sZW5ndGgoKSk7CisgICAgYm9vbCB0YWlsTWF0Y2ggPSAoaW5kZXggIT0g
bm90Rm91bmQgJiYgaW5kZXggKyBjb29raWVEb21haW4ubGVuZ3RoKCkgPT0gaG9zdC5sZW5ndGgo
KSk7CiAKICAgICAvLyBDaGVjayBpZiBob3N0IGVxdWFscyBjb29raWUgZG9tYWluLgogICAgIGlm
ICh0YWlsTWF0Y2ggJiYgIWluZGV4KQpAQCAtODIsNyArODIsNyBAQCBib29sIGRvbWFpbk1hdGNo
KGNvbnN0IFN0cmluZyYgY29va2llRG9tYWluLCBjb25zdCBTdHJpbmcmIGhvc3QpCiAKIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VFeHBpcmVzTVMoY29uc3QgY2hhciogZXhwaXJl
cykKIHsKLSAgICBkb3VibGUgdG1wID0gV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRD
aGFyYWN0ZXJzKGV4cGlyZXMpOworICAgIGRvdWJsZSB0bXAgPSBwYXJzZURhdGVGcm9tTnVsbFRl
cm1pbmF0ZWRDaGFyYWN0ZXJzKGV4cGlyZXMpOwogICAgIGlmIChpc25hbih0bXApKQogICAgICAg
ICByZXR1cm4geyB9OwogCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VDb29r
aWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2UsIENv
b2sKIAogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVOYW1l
LCAibWF4LWFnZSIpKSB7CiAgICAgICAgIGlmIChhdXRvIG1heEFnZVNlY29uZHMgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ2NF90PihhdHRyaWJ1dGVWYWx1ZSkpIHsKLSAg
ICAgICAgICAgIHJlc3VsdC5leHBpcmVzID0gKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VF
cG9jaCgpLnZhbHVlKCkgKyAqbWF4QWdlU2Vjb25kcykgKiBXVEY6Om1zUGVyU2Vjb25kOworICAg
ICAgICAgICAgcmVzdWx0LmV4cGlyZXMgPSAoV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVw
b2NoKCkudmFsdWUoKSArICptYXhBZ2VTZWNvbmRzKSAqIG1zUGVyU2Vjb25kOwogICAgICAgICAg
ICAgcmVzdWx0LnNlc3Npb24gPSBmYWxzZTsKIAogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMg
YSBtYXgtYWdlIGF0dHJpYnV0ZSBhcyB3ZWxsIGFzIGFuIGV4cGlyZXMgYXR0cmlidXRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmNwcAppbmRleCAwZDQ4NjA5OTlhMDMwNjc1MTcwNzc3NGY2ODY3NzJj
MGYzNTU3NjUyLi4yNDU3YmI0ZDdjMmJjYzE3MTg3NWE5MjllNGI3OGY0ZjhiMThjNzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDdXJsUmVxdWVz
dFNjaGVkdWxlcjo6Y2FuY2VsKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpCiAg
ICAgY2FuY2VsVHJhbnNmZXIoY2xpZW50KTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxl
cjo6Y2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit2b2lk
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgp
PiYmIHRhc2spCiB7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwpA
QCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmV4ZWN1dGVUYXNr
cygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBWZWN0b3I8V1RGOjpG
dW5jdGlvbjx2b2lkKCk+PiB0YXNrUXVldWU7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+
IHRhc2tRdWV1ZTsKIAogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0U2NoZWR1bGVyLmgKaW5kZXggMjM4OTlkNGRkZDYxMTY4YzY5OGJlNGQ0MzM0NTUx
NTVjNDNjNThiMC4uZGJjMGJmOTlkNGY3NTZlZTI0NzRkNGYxMTk2OGMyNTIwZDI2MDI4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0U2NoZWR1bGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGJvb2wg
YWRkKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kik7CiAgICAgdm9pZCBjYW5jZWwoQ3VybFJl
cXVlc3RTY2hlZHVsZXJDbGllbnQqKTsKIAotICAgIHZvaWQgY2FsbE9uV29ya2VyVGhyZWFkKFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNhbGxPbldvcmtlclRocmVhZChGdW5j
dGlvbjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRPcldha2VVcFRocmVh
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
dHJlYW0uY3BwCmluZGV4IDI5MTkwYzc4OTg5MTNlYjQwODFhNWJmODJlYWJhMzIwMWQwNDQ2ZjUu
LmMwNzA0ZjBjZGQ2NDQyMzczZjdiNzBiZmU2MTUzOWJmNWIzN2Q2MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgQ3VybFN0cmVhbTo6Q3VybFN0cmVhbShDdXJsU3RyZWFtU2NoZWR1bGVyJiBz
Y2hlZHVsZXIsIEN1cmxTdHJlYW1JRCBzdHJlYW1JRCwgVVIKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKIAotICAgIG1fY3VybEhhbmRsZSA9IFdURjo6bWFrZVVuaXF1ZTxDdXJsSGFu
ZGxlPigpOworICAgIG1fY3VybEhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybEhhbmRsZT4oKTsKIAog
ICAgIHVybC5zZXRQcm90b2NvbCh1cmwucHJvdG9jb2xJcygid3NzIikgPyAiaHR0cHMiIDogImh0
dHAiKTsKICAgICBtX2N1cmxIYW5kbGUtPnNldFVybChXVEZNb3ZlKHVybCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKaW5kZXggZTY0
NjI5ZmMyMmEyMDk3YTJhZjBiMGMwMTM5YjIzZDc5MDhjZjNkYy4uNGY1OWIyMGU4ZGIyNzkwMzk5
NGIzMzE1NGNlNjRiMDk5NGYzYTBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3VybFN0cmVhbT4gY3JlYXRlKEN1cmxTdHJlYW1T
Y2hlZHVsZXImIHNjaGVkdWxlciwgQ3VybFN0cmVhbUlEIHN0cmVhbUlELCBVUkwmJiB1cmwpCiAg
ICAgewotICAgICAgICByZXR1cm4gV1RGOjptYWtlVW5pcXVlPEN1cmxTdHJlYW0+KHNjaGVkdWxl
ciwgc3RyZWFtSUQsIFdURk1vdmUodXJsKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEN1
cmxTdHJlYW0+KHNjaGVkdWxlciwgc3RyZWFtSUQsIFdURk1vdmUodXJsKSk7CiAgICAgfQogCiAg
ICAgQ3VybFN0cmVhbShDdXJsU3RyZWFtU2NoZWR1bGVyJiwgQ3VybFN0cmVhbUlELCBVUkwmJik7
CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VybEhh
bmRsZT4gbV9jdXJsSGFuZGxlOwogCi0gICAgV1RGOjpWZWN0b3I8c3RkOjpwYWlyPFVuaXF1ZUFy
cmF5PHVpbnQ4X3Q+LCBzaXplX3Q+PiBtX3NlbmRCdWZmZXJzOworICAgIFZlY3RvcjxzdGQ6OnBh
aXI8VW5pcXVlQXJyYXk8dWludDhfdD4sIHNpemVfdD4+IG1fc2VuZEJ1ZmZlcnM7CiAgICAgc2l6
ZV90IG1fc2VuZEJ1ZmZlck9mZnNldCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNw
cAppbmRleCBiNGE5YWJkNDUzMDdlMTRiMWIwMDgwYzVmZDg0OTBhY2FmN2JiNTk5Li5kOTRmZjRm
OTE2OWE2YzBiNWFkYjk3MTlmNTUwNmQwZmI4MGU2Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6c2VuZChDdXJs
U3RyZWFtSUQgc3RyZWFtSUQsIFVuaXF1ZUFycmF5PHVpbnQ4X3Q+JiYgZGF0CiAgICAgfSk7CiB9
CiAKLXZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6Y2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCit2b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxPbldv
cmtlclRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6
Y2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgc3Rh
cnRUaHJlYWRJZk5lZWRlZCgpOwogfQogCi12b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxD
bGllbnRPbk1haW5UaHJlYWQoQ3VybFN0cmVhbUlEIHN0cmVhbUlELCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQ3VybFN0cmVhbTo6Q2xpZW50Jik+JiYgdGFzaykKK3ZvaWQgQ3VybFN0cmVhbVNjaGVkdWxl
cjo6Y2FsbENsaWVudE9uTWFpblRocmVhZChDdXJsU3RyZWFtSUQgc3RyZWFtSUQsIEZ1bmN0aW9u
PHZvaWQoQ3VybFN0cmVhbTo6Q2xpZW50Jik+JiYgdGFzaykKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxl
cjo6ZXhlY3V0ZVRhc2tzKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAg
IFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IHRhc2tRdWV1ZTsKKyAgICBWZWN0b3I8RnVu
Y3Rpb248dm9pZCgpPj4gdGFza1F1ZXVlOwogCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmgKaW5kZXggN2Q4ODEyMDZjOTY4OWY0MzMy
Mjc5NjljOWI3ZjlmZjI2OGJkYWFlZC4uMGMzOWM5MGFhYzg4NGZjYTQ4ODQ5Mzg4YWNjMWI0MmJh
ZDE2ZDYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTdHJlYW1TY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlc3Ryb3lTdHJlYW0oQ3VybFN0cmVhbUlEKTsKICAgICB2b2lkIHNlbmQoQ3Vy
bFN0cmVhbUlELCBVbmlxdWVBcnJheTx1aW50OF90PiYmLCBzaXplX3QpOwogCi0gICAgdm9pZCBj
YWxsT25Xb3JrZXJUaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY2Fs
bENsaWVudE9uTWFpblRocmVhZChDdXJsU3RyZWFtSUQsIFdURjo6RnVuY3Rpb248dm9pZChDdXJs
U3RyZWFtOjpDbGllbnQmKT4mJik7CisgICAgdm9pZCBjYWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rp
b248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNhbGxDbGllbnRPbk1haW5UaHJlYWQoQ3VybFN0cmVh
bUlELCBGdW5jdGlvbjx2b2lkKEN1cmxTdHJlYW06OkNsaWVudCYpPiYmKTsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIHN0YXJ0VGhyZWFkSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5oCmluZGV4IDNkZTU0NTE1Y2VmMDU5YjQ3NmNhOGFh
ZTI3MGIxOWZlNzJmMTRiMTMuLjY0YjYyMDM1MjM1YjUyZjU1ZGIxZjdjYWJjYjQwNWZhNWZlM2M5
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxT
b3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAu
aApAQCAtMzQsMTAgKzM0LDEwIEBAIGNsYXNzIFVSTDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
I2lmIFVTRShTT1VQMikKLVdURjo6VVJMIHNvdXBVUklUb1VSTChTb3VwVVJJKik7Ci1HVW5pcXVl
UHRyPFNvdXBVUkk+IHVybFRvU291cFVSSShjb25zdCBXVEY6OlVSTCYpOworVVJMIHNvdXBVUklU
b1VSTChTb3VwVVJJKik7CitHVW5pcXVlUHRyPFNvdXBVUkk+IHVybFRvU291cFVSSShjb25zdCBV
UkwmKTsKICNlbHNlCi1XVEY6OlVSTCBzb3VwVVJJVG9VUkwoR1VyaSopOwotR1JlZlB0cjxHVXJp
PiB1cmxUb1NvdXBVUkkoY29uc3QgV1RGOjpVUkwmKTsKK1VSTCBzb3VwVVJJVG9VUkwoR1VyaSop
OworR1JlZlB0cjxHVXJpPiB1cmxUb1NvdXBVUkkoY29uc3QgVVJMJik7CiAjZW5kaWYKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuY3BwCmluZGV4IDQ3MzNmOTk4Yjc1MDdhZTMxNWJhYTMxMjZkMTg2MDFkZTYyZTMw
ODguLjUwMDMwYjUyYzE4M2IxNzNlNjlmZGEyMTM2YWU2NjFlZmU0Y2EyZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtNjUzLDE5ICs2
NTMsMTkgQEAgYm9vbCBTUUxpdGVEYXRhYmFzZTo6dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVt
KCkKIAogc3RhdGljIHZvaWQgZGVzdHJveUNvbGxhdGlvbkZ1bmN0aW9uKHZvaWQqIGFyZykKIHsK
LSAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxXVEY6OkZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZv
aWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOworICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0
PEZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcp
OwogICAgIGRlbGV0ZSBmOwogfQogCiBzdGF0aWMgaW50IGNhbGxDb2xsYXRpb25GdW5jdGlvbih2
b2lkKiBhcmcsIGludCBhTGVuZ3RoLCBjb25zdCB2b2lkKiBhLCBpbnQgYkxlbmd0aCwgY29uc3Qg
dm9pZCogYikKIHsKLSAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxXVEY6OkZ1bmN0aW9uPGludChp
bnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOworICAgIGF1dG8gZiA9
IHN0YXRpY19jYXN0PEZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZv
aWQqKT4qPihhcmcpOwogICAgIHJldHVybiAoKmYpKGFMZW5ndGgsIGEsIGJMZW5ndGgsIGIpOwog
fQogCi12b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJp
bmcmIGNvbGxhdGlvbk5hbWUsIFdURjo6RnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGlu
dCwgY29uc3Qgdm9pZCopPiYmIGNvbGxhdGlvbkZ1bmN0aW9uKQordm9pZCBTUUxpdGVEYXRhYmFz
ZTo6c2V0Q29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lLCBGdW5j
dGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+JiYgY29sbGF0aW9u
RnVuY3Rpb24pCiB7Ci0gICAgYXV0byBmdW5jdGlvbk9iamVjdCA9IG5ldyBXVEY6OkZ1bmN0aW9u
PGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4oV1RGTW92ZShjb2xsYXRp
b25GdW5jdGlvbikpOworICAgIGF1dG8gZnVuY3Rpb25PYmplY3QgPSBuZXcgRnVuY3Rpb248aW50
KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPihXVEZNb3ZlKGNvbGxhdGlvbkZ1
bmN0aW9uKSk7CiAgICAgc3FsaXRlM19jcmVhdGVfY29sbGF0aW9uX3YyKG1fZGIsIGNvbGxhdGlv
bk5hbWUudXRmOCgpLmRhdGEoKSwgU1FMSVRFX1VURjgsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsQ29s
bGF0aW9uRnVuY3Rpb24sIGRlc3Ryb3lDb2xsYXRpb25GdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggOGVmN2JhOTBmMzdl
MzNlZTI1YjMzMDA4YTA5Y2Y1YTVjMDNhMjY2OC4uMzJiODEyNmVkMjJjZDE1ZWNkOTUwNmFkMjk4
NWYxN2U1YTk3NjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBBdXRvVmFjdXVt
UHJhZ21hIHsgQXV0b1ZhY3V1bU5vbmUgPSAwLCBBdXRvVmFjdXVtRnVsbCA9IDEsIEF1dG9WYWN1
dW1JbmNyZW1lbnRhbCA9IDIgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHR1cm5PbkluY3Jl
bWVudGFsQXV0b1ZhY3V1bSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRp
b25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIFdURjo6RnVuY3Rpb248aW50
KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFt
ZSwgRnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPiYmKTsK
ICAgICB2b2lkIHJlbW92ZUNvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9u
TmFtZSk7CiAKICAgICAvLyBTZXQgdGhpcyBmbGFnIHRvIGFsbG93IGFjY2VzcyBmcm9tIG11bHRp
cGxlIHRocmVhZHMuICBOb3QgYWxsIG11bHRpLXRocmVhZGVkIGFjY2Vzc2VzIGFyZSBzYWZlIQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjLmgKaW5kZXggZmI3MDE2YjNjMTAx
MGRlMGU4ZmM0NDVkNTNlYjJkMGYxMDBhMTExOS4uNGZjMGFjZjJkNGQzNjcwODIwOWRhYTI0NzI2
ZDMwMzgwZTg0NzM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5o
CkBAIC02MCw3ICs2MCw3IEBAIEZ1bmN0aW9uPHZvaWQoVUNoYXIzMiwgVmVjdG9yPHVpbnQ4X3Q+
Jik+IHVuZW5jb2RhYmxlSGFuZGxlcihVbmVuY29kYWJsZUhhbmRsaW5nCiAKIHVzaW5nIEVuY29k
aW5nTmFtZVJlZ2lzdHJhciA9IHZvaWQgKCopKGNvbnN0IGNoYXIqIGFsaWFzLCBjb25zdCBjaGFy
KiBuYW1lKTsKIAotdXNpbmcgTmV3VGV4dENvZGVjRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHN0
ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+KCk+OwordXNpbmcgTmV3VGV4dENvZGVjRnVuY3Rpb24g
PSBGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPigpPjsKIHVzaW5nIFRleHRDb2Rl
Y1JlZ2lzdHJhciA9IHZvaWQgKCopKGNvbnN0IGNoYXIqIG5hbWUsIE5ld1RleHRDb2RlY0Z1bmN0
aW9uJiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1NpbmdsZUJ5dGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNTaW5nbGVCeXRlLmNwcAppbmRleCA4OTA2NGM4MGIx
M2VmNzAwY2NlOGI4YzkxODA5MmJkYTQ1Mjg1ZjZjLi5mOTQyNmYzM2NmMjg0MDliMjJiMmI0ZWU0
MmYxMGMyMjNjYTUyNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1NpbmdsZUJ5dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjU2luZ2xlQnl0ZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgZW51bSBjbGFzcyBU
ZXh0Q29kZWNTaW5nbGVCeXRlOjpFbmNvZGluZyA6IHVpbnQ4X3QgewogCiB1c2luZyBTaW5nbGVC
eXRlRGVjb2RlVGFibGUgPSBzdGQ6OmFycmF5PFVDaGFyLCAxMjg+OwogdXNpbmcgU2luZ2xlQnl0
ZUVuY29kZVRhYmxlRW50cnkgPSBzdGQ6OnBhaXI8VUNoYXIsIHVpbnQ4X3Q+OwotdXNpbmcgU2lu
Z2xlQnl0ZUVuY29kZVRhYmxlID0gV1RGOjpJdGVyYXRvclJhbmdlPGNvbnN0IFNpbmdsZUJ5dGVF
bmNvZGVUYWJsZUVudHJ5Kj47Cit1c2luZyBTaW5nbGVCeXRlRW5jb2RlVGFibGUgPSBJdGVyYXRv
clJhbmdlPGNvbnN0IFNpbmdsZUJ5dGVFbmNvZGVUYWJsZUVudHJ5Kj47CiAKIC8vIEZyb20gaHR0
cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvaW5kZXgtaXNvLTg4NTktMy50eHQgd2l0aCAw
eEZGRkQgZmlsbGluZyB0aGUgZ2Fwcwogc3RhdGljIGNvbnN0ZXhwciBTaW5nbGVCeXRlRGVjb2Rl
VGFibGUgaXNvODg1OTMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5oCmluZGV4IDg0MTNkZjVmNjUyMjExNjlk
ZGYwNDhiZDQ0M2FkNDcwNjgyOWM2N2IuLjI4YWU0YWU4MzY2MjM2NTc3OGU5YTM5ZmFmOWI4ZDdj
NGJkZjI0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFu
dC9UZXh0Q2hlY2tlckVuY2hhbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBUZXh0Q2hlY2tlckVuY2hhbnQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFRleHRDaGVja2VyRW5jaGFudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
ICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFRleHRDaGVja2VyRW5jaGFudD47
CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFRleHRDaGVja2VyRW5jaGFudD47CiBw
dWJsaWM6CiAgICAgc3RhdGljIFRleHRDaGVja2VyRW5jaGFudCYgc2luZ2xldG9uKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9u
TGliSHlwaGVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhl
bmF0aW9uTGliSHlwaGVuLmNwcAppbmRleCBmMGIxN2IyMTEzYzJlNWNlYWY0NmZmYWY0YzI5MmJj
MDk2NzJkMWE1Li5hNTRiNjVjNTExODIwNmI3MTcxMWI0OTc3M2NhMjFkNjZjMjA5MWE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxp
Ykh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlw
aGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgc2l6ZV90IGxhc3RIeXBo
ZW5Mb2NhdGlvbihTdHJpbmdWaWV3IHN0cmluZywgc2l6ZV90IGJlZm9yZUluZGV4LCBjb25zdCBB
dG9tU3RyaW4KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGRpY3Rp
b25hcnlQYXRoIDogYXZhaWxhYmxlTG9jYWxlcygpLmdldChsb3dlcmNhc2VMb2NhbGVJZGVudGlm
aWVyKSkgewotICAgICAgICBSZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5
ID0gV1RGOjpUaW55TFJVQ2FjaGVQb2xpY3k8QXRvbVN0cmluZywgUmVmUHRyPEh5cGhlbmF0aW9u
RGljdGlvbmFyeT4+OjpjYWNoZSgpLmdldChBdG9tU3RyaW5nKGRpY3Rpb25hcnlQYXRoKSk7Cisg
ICAgICAgIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGRpY3Rpb25hcnkgPSBUaW55TFJV
Q2FjaGVQb2xpY3k8QXRvbVN0cmluZywgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4+Ojpj
YWNoZSgpLmdldChBdG9tU3RyaW5nKGRpY3Rpb25hcnlQYXRoKSk7CiAKICAgICAgICAgY2hhcioq
IHJlcGxhY2VtZW50cyA9IG51bGxwdHI7CiAgICAgICAgIGludCogcG9zaXRpb25zID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCAyOTM1M2RjNTUy
NTVhMGFhOTI5ZjExMzE5Y2RjYjY0ZDU3NTdhZjZkLi41MGZkNDViMDU5YTBhODEzMTE1ODEwZmRl
NmMwMGMxYjIxYjJkNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9Q
bGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5o
CkBAIC0yOTQsNyArMjk0LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHIvI3hyLWRldmljZS1jb25jZXB0CiAgICAgLy8gRWFjaCBYUiBk
ZXZpY2UgaGFzIGEgbGlzdCBvZiBlbmFibGVkIGZlYXR1cmVzIGZvciBlYWNoIFhSU2Vzc2lvbk1v
ZGUgaW4gaXRzIGxpc3Qgb2Ygc3VwcG9ydGVkIG1vZGVzLAogICAgIC8vIHdoaWNoIGlzIGEgbGlz
dCBvZiBmZWF0dXJlIGRlc2NyaXB0b3JzIHdoaWNoIE1VU1QgYmUgaW5pdGlhbGx5IGFuIGVtcHR5
IGxpc3QuCi0gICAgdXNpbmcgRmVhdHVyZXNQZXJNb2RlTWFwID0gV1RGOjpIYXNoTWFwPFNlc3Np
b25Nb2RlLCBGZWF0dXJlTGlzdCwgV1RGOjpJbnRIYXNoPFNlc3Npb25Nb2RlPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxTZXNzaW9uTW9kZT4+OworICAgIHVzaW5nIEZlYXR1cmVzUGVyTW9k
ZU1hcCA9IEhhc2hNYXA8U2Vzc2lvbk1vZGUsIEZlYXR1cmVMaXN0LCBJbnRIYXNoPFNlc3Npb25N
b2RlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxTZXNzaW9uTW9kZT4+OwogICAgIEZlYXR1
cmVzUGVyTW9kZU1hcCBtX2VuYWJsZWRGZWF0dXJlc01hcDsKICAgICBGZWF0dXJlc1Blck1vZGVN
YXAgbV9zdXBwb3J0ZWRGZWF0dXJlc01hcDsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogI2lmIFVTRShJT1NVUkZBQ0VfRk9SX1hSX0xB
WUVSX0RBVEEpCi0gICAgV1RGOjpNYWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQgPSBzdXJm
YWNlID8gc3VyZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCkgOiBXVEY6Ok1hY2hTZW5kUmlnaHQoKTsK
KyAgICBNYWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQgPSBzdXJmYWNlID8gc3VyZmFjZS0+
Y3JlYXRlU2VuZFJpZ2h0KCkgOiBNYWNoU2VuZFJpZ2h0KCk7CiAgICAgZW5jb2RlciA8PCBzdXJm
YWNlU2VuZFJpZ2h0OwogICAgIGVuY29kZXIgPDwgaXNTaGFyZWQ7CiAjZWxzZQpAQCAtNDkwLDcg
KzQ5MCw3IEBAIHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gRGV2
aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2RlCiB7CiAgICAgUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YSBsYXllckRhdGE7CiAjaWYgVVNFKElPU1VSRkFDRV9G
T1JfWFJfTEFZRVJfREFUQSkKLSAgICBXVEY6Ok1hY2hTZW5kUmlnaHQgc3VyZmFjZVNlbmRSaWdo
dDsKKyAgICBNYWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdXJmYWNlU2VuZFJpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNwcAppbmRleCAxMDVjZjI4MGMwMDc2MWMxMDcx
M2MwZDAxNjMwOTZhMzliOGNlNjQyLi5mMmNjMDM5MGZjNTAyNWM0NWU1Y2RhZWYxNzEyMzViYmMw
OTBmMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJBbmNlc3Rv
ckNsaXBwaW5nU3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllckFu
Y2VzdG9yQ2xpcHBpbmdTdGFjay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgR3JhcGhpY3NMYXllciog
TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s6Omxhc3RDbGlwcGluZ0xheWVyKCkgY29uc3QKIAog
U2Nyb2xsaW5nTm9kZUlEIExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrOjpsYXN0T3ZlcmZsb3dT
Y3JvbGxQcm94eU5vZGVJRCgpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiBlbnRyeSA6IFdURjo6
bWFrZVJldmVyc2VkUmFuZ2UobV9zdGFjaykpIHsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbWFr
ZVJldmVyc2VkUmFuZ2UobV9zdGFjaykpIHsKICAgICAgICAgaWYgKGVudHJ5Lm92ZXJmbG93U2Ny
b2xsUHJveHlOb2RlSUQpCiAgICAgICAgICAgICByZXR1cm4gZW50cnkub3ZlcmZsb3dTY3JvbGxQ
cm94eU5vZGVJRDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
SW5saW5lVGV4dEJveC5jcHAKaW5kZXggYTcyMzRiZTRlYmFlYWE1MDkyOWJmZjAyYjBkY2MxZTRl
YTU1MWYxMy4uYzgzMzZmMDdkM2UwNGQ3NDkxMmNkY2JmMTFiZTQ5MDI0ZWNjMmI0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcApAQCAt
NzYsNyArNzYsNyBAQCBzdHJ1Y3QgU2FtZVNpemVBc0xlZ2FjeUlubGluZVRleHRCb3ggOiBwdWJs
aWMgTGVnYWN5SW5saW5lQm94IHsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKExlZ2FjeUlubGlu
ZVRleHRCb3gpID09IHNpemVvZihTYW1lU2l6ZUFzTGVnYWN5SW5saW5lVGV4dEJveCksIExlZ2Fj
eUlubGluZVRleHRCb3hfc2hvdWxkX3N0YXlfc21hbGwpOwogCi10eXBlZGVmIFdURjo6SGFzaE1h
cDxjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiwgTGF5b3V0UmVjdD4gTGVnYWN5SW5saW5lVGV4
dEJveE92ZXJmbG93TWFwOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IExlZ2FjeUlubGluZVRleHRC
b3gqLCBMYXlvdXRSZWN0PiBMZWdhY3lJbmxpbmVUZXh0Qm94T3ZlcmZsb3dNYXA7CiBzdGF0aWMg
TGVnYWN5SW5saW5lVGV4dEJveE92ZXJmbG93TWFwKiBnVGV4dEJveGVzV2l0aE92ZXJmbG93Owog
CiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojp+TGVnYWN5SW5saW5lVGV4dEJveCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKaW5kZXggZWRkMjk4
N2QyM2QwNDU3OGEyMmQzOGQ0YTU3Njk3NWFlNmExNmJlMS4uZmFlNDFkYmQ0N2U3NWU0MTE3ODE2
MGM5ZTE4MTViOWU2YTNhZGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lSb290SW5saW5lQm94LmNwcApAQCAtNTYsNyArNTYsNyBAQCBDT01QSUxFX0FTU0VSVChz
aXplb2YoTGVnYWN5Um9vdElubGluZUJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNMZWdhY3lSb290
SW5saW5lQgogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFdlYWtQdHI8UmVuZGVyT2JqZWN0PikgPT0g
c2l6ZW9mKHZvaWQqKSwgV2Vha1B0cl9zaG91bGRfYmVfc2FtZV9zaXplX2FzX3Jhd19wb2ludGVy
KTsKICNlbmRpZgogCi10eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBMZWdhY3lSb290SW5saW5l
Qm94Kiwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUVsbGlwc2lzQm94Pj4gRWxsaXBzaXNCb3hNYXA7
Cit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgTGVnYWN5Um9vdElubGluZUJveCosIHN0ZDo6dW5pcXVl
X3B0cjxMZWdhY3lFbGxpcHNpc0JveD4+IEVsbGlwc2lzQm94TWFwOwogc3RhdGljIEVsbGlwc2lz
Qm94TWFwKiBnRWxsaXBzaXNCb3hNYXA7CiAKIHN0YXRpYyBDb250YWluaW5nRnJhZ21lbnRNYXAm
IGNvbnRhaW5pbmdGcmFnbWVudE1hcChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwCmluZGV4
IGZhMDFjNzg2NTdkNzAyMWFjZTczNGFlMzNhMDE2YzRiYTg2NmIyOWQuLjlkMmJjOGE2ODJjNmM4
NjU0YmNiOTAwMWEzNzkxZWQwZjFiNWYyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUmVm
ZXJlbmNlZFNWR1Jlc291cmNlczo6flJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKQogdm9pZCBSZWZl
cmVuY2VkU1ZHUmVzb3VyY2VzOjphZGRDbGllbnRGb3JUYXJnZXQoU1ZHRWxlbWVudCYgdGFyZ2V0
RWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgdGFyZ2V0SUQpCiB7CiAgICAgbV9lbGVtZW50Q2xp
ZW50cy5lbnN1cmUodGFyZ2V0SUQsIFsmXSB7Ci0gICAgICAgIGF1dG8gY2xpZW50ID0gV1RGOjpt
YWtlVW5pcXVlPENTU1NWR1Jlc291cmNlRWxlbWVudENsaWVudD4obV9yZW5kZXJlcik7CisgICAg
ICAgIGF1dG8gY2xpZW50ID0gbWFrZVVuaXF1ZTxDU1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ+
KG1fcmVuZGVyZXIpOwogICAgICAgICB0YXJnZXRFbGVtZW50LmFkZFJlZmVyZW5jaW5nQ1NTQ2xp
ZW50KCpjbGllbnQpOwogICAgICAgICByZXR1cm4gY2xpZW50OwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBlOGRhYjQ3ODdkNjAyYjkwOTA3YzQ4NGU3
YWQxMzg4MDE4NDM0MGY2Li4yMWU2MjEwZTU5YzMyN2E4Yzc0MjVhZDQwZjA3MWJkMzMxNzczZTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBSZW5kZXJUZXh0Owogc3RydWN0IEJpZGlSdW47CiBzdHJ1Y3QgUGFpbnRJbmZvOwog
Ci10eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVuZGVyQm94Kj4gVHJhY2tlZFJlbmRlcmVyTGlz
dEhhc2hTZXQ7Cit0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlckJveCo+IFRyYWNrZWRSZW5kZXJl
ckxpc3RIYXNoU2V0OwogCiBlbnVtIENhcmV0VHlwZSB7IEN1cnNvckNhcmV0LCBEcmFnQ2FyZXQg
fTsKIGVudW0gQ29udGFpbmluZ0Jsb2NrU3RhdGUgeyBOZXdDb250YWluaW5nQmxvY2ssIFNhbWVD
b250YWluaW5nQmxvY2sgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5k
ZXggZDE3YmJiYmIxZTFkZDU2MDVhNzdkZjg0OTBkYjU0Nzg1MDljMjkwYi4uNTVhNmYxMDViYzkw
NTgzNDkxNTk5N2MzZDgzYzgwODJkNzk1NmE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKQEAgLTEwMiwxMiArMTAyLDEyIEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihS
ZW5kZXJCb3gpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyQm94KSwgUmVuZGVyQm94X3Nob3Vs
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXR5cGVkZWYgV1RGOjpIYXNoTWFwPGNv
bnN0IFJlbmRlckJveCosIExheW91dFVuaXQ+IE92ZXJyaWRlU2l6ZU1hcDsKK3R5cGVkZWYgSGFz
aE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBPdmVycmlkZVNpemVNYXA7CiBzdGF0
aWMgT3ZlcnJpZGVTaXplTWFwKiBnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRNYXAgPSBudWxscHRy
Owogc3RhdGljIE92ZXJyaWRlU2l6ZU1hcCogZ092ZXJyaWRpbmdMb2dpY2FsV2lkdGhNYXAgPSBu
dWxscHRyOwogCiAvLyBGSVhNRTogV2Ugc2hvdWxkIHN0b3JlIHRoZXNlIGJhc2VkIG9uIHBoeXNp
Y2FsIGRpcmVjdGlvbi4KLXR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4+IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwordHlwZWRl
ZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4+IE92
ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwogc3RhdGljIE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwKiBn
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0TWFwID0gbnVsbHB0
cjsKIHN0YXRpYyBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcCogZ092ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDE0NzUyMjY4NWVmYjEwOGMyNTI5MDA2
YjkwN2MyMGMyOTY4NzM3NTcuLmRiNmExZGM1OWI0MmE5ZDY2ZmJlZDRmOTcwYTBiNTMxYzhiMjA0
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTIy
ODksNyArMjI4OSw3IEBAIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXMmIFJlbmRlckVsZW1lbnQ6OmVu
c3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKQogewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5z
dXJlUmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLnJlZmVyZW5jZWRTVkdSZXNvdXJjZXMp
Ci0gICAgICAgIHJhcmVEYXRhLnJlZmVyZW5jZWRTVkdSZXNvdXJjZXMgPSBXVEY6Om1ha2VVbmlx
dWU8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4oKnRoaXMpOworICAgICAgICByYXJlRGF0YS5yZWZl
cmVuY2VkU1ZHUmVzb3VyY2VzID0gbWFrZVVuaXF1ZTxSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzPigq
dGhpcyk7CiAKICAgICByZXR1cm4gKnJhcmVEYXRhLnJlZmVyZW5jZWRTVkdSZXNvdXJjZXM7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySXRlcmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJdGVyYXRvci5oCmluZGV4IGI1YTk0ZjQ3
YmM3NTgwNTg5YjE1MzBlNzUxOTVmOWU5ZmM0NjM5MmUuLjViOWYyNTdkYTYxYzEwZTBiNjcyM2Zm
ODgyNDBhYmRjOTk1OTQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJdGVy
YXRvci5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgVCogbV9jdXJyZW50
OwogfTsKIAotLy8gU2ltaWxhciB0byBXVEY6OmlzPD4oKSBidXQgd2l0aG91dCB0aGUgc3RhdGlj
X2Fzc2VydCgpIG1ha2luZyBzdXJlIHRoZSBjaGVjayBpcyBuZWNlc3NhcnkuCisvLyBTaW1pbGFy
IHRvIGlzPD4oKSBidXQgd2l0aG91dCB0aGUgc3RhdGljX2Fzc2VydCgpIG1ha2luZyBzdXJlIHRo
ZSBjaGVjayBpcyBuZWNlc3NhcnkuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
IGlubGluZSBib29sIGlzUmVuZGVyZXJPZlR5cGUoY29uc3QgVSYgcmVuZGVyZXIpIHsgcmV0dXJu
IFR5cGVDYXN0VHJhaXRzPGNvbnN0IFQsIGNvbnN0IFU+Ojppc09mVHlwZShyZW5kZXJlcik7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZThjMDM4M2Nl
OWUxMTA0Y2VkMzUxOGJjNjI4NmI0MmZiZGM1NDA2Mi4uMGMyNjY5NjI5OTE3NGJkNmZkODljNjJi
MWEwMjI5NmZhODllNGJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC01NzM1LDcgKzU3MzUsNyBAQCB2b2lkIHNob3dMYXllclRyZWUoY29uc3QgV2ViQ29y
ZTo6UmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIGlmICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdURjo6U3RyaW5nIG91dHB1dCA9IGV4dGVybmFsUmVwcmVzZW50YXRpb24oJmxheWVy
LT5yZW5kZXJlcigpLmZyYW1lKCksIHsKKyAgICBTdHJpbmcgb3V0cHV0ID0gZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbigmbGF5ZXItPnJlbmRlcmVyKCkuZnJhbWUoKSwgewogICAgICAgICBXZWJDb3Jl
OjpSZW5kZXJBc1RleHRGbGFnOjpTaG93QWxsTGF5ZXJzLAogICAgICAgICBXZWJDb3JlOjpSZW5k
ZXJBc1RleHRGbGFnOjpTaG93TGF5ZXJOZXN0aW5nLAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJB
c1RleHRGbGFnOjpTaG93Q29tcG9zaXRlZExheWVycywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZjM1NDE3Y2M1YTg1MDE2Y2VhZmYw
NTk1YjQxOGZjMDk0MDUzMTRlZS4uYmQ5ZjIyYTUxNDVjZTlhNTRjMDI2NmZiNTgzY2FmYTA1YWUx
ZTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKQEAgLTI3NDMsNyArMjc0Myw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjppc1Np
bXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoUGFpbnRlZENvbnRlbnRzSW5mbyYKIC8vIFJl
dHVybmluZyB0cnVlIHN0b3BzIHRoZSB0cmF2ZXJzYWwuCiBlbnVtIGNsYXNzIExheWVyVHJhdmVy
c2FsIHsgQ29udGludWUsIFN0b3AgfTsKIAotc3RhdGljIExheWVyVHJhdmVyc2FsIHRyYXZlcnNl
VmlzaWJsZU5vbkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKFJlbmRlckxheWVyJiBwYXJlbnQs
IGNvbnN0IFdURjo6RnVuY3Rpb248TGF5ZXJUcmF2ZXJzYWwgKGNvbnN0IFJlbmRlckxheWVyJik+
JiBsYXllckZ1bmMpCitzdGF0aWMgTGF5ZXJUcmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxlTm9uQ29t
cG9zaXRlZERlc2NlbmRhbnRMYXllcnMoUmVuZGVyTGF5ZXImIHBhcmVudCwgY29uc3QgRnVuY3Rp
b248TGF5ZXJUcmF2ZXJzYWwoY29uc3QgUmVuZGVyTGF5ZXImKT4mIGxheWVyRnVuYykKIHsKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIGEgc3RhbGUgei1vcmRlciBs
aXN0cy4gU2VlIGJ1ZyA4NTUxMi4KICAgICBwYXJlbnQudXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggY2Fi
NjNmNWIxNGNlNWViODdlZTRkODdhODBiMzg2NWRmYjZlOWIxZi4uNjM4NmZiYTJmNDk4YjVkNmI4
MDIyZGIxODQyYjQ5NWYwZTU4YTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6dXBk
YXRlRnJvbUVsZW1lbnQoKQogICAgICAgICBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlPiBib2xk
Rm9udDsKICAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogc2VsZWN0RWxlbWVudCgpLmxpc3RJ
dGVtcygpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGV4dDsKLSAgICAgICAgICAgIFdURjo6RnVu
Y3Rpb248Y29uc3QgRm9udENhc2NhZGUmKCk+IHNlbGVjdEZvbnQgPSBbJm5vcm1hbEZvbnRdICgp
IC0+IGNvbnN0IEZvbnRDYXNjYWRlJiB7CisgICAgICAgICAgICBGdW5jdGlvbjxjb25zdCBGb250
Q2FzY2FkZSYoKT4gc2VsZWN0Rm9udCA9IFsmbm9ybWFsRm9udF0gKCkgLT4gY29uc3QgRm9udENh
c2NhZGUmIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsRm9udDsKICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IDA2MzMwOWJlMGI3YzA4
NzhhM2U2N2QzZWRlN2M5NDg3NDRlZjhlODkuLjJhN2ZlMzA3NTcwN2I0YjE1ZDY5NzI1Njc4MGQz
YTE1NTgwYTY5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApA
QCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25s
eSBiZSBjYWxsZWQgYnkgdGhlIG92ZXJyaWRkZW4gc2V0U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xs
YWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQgbmV3T2Zmc2V0KTsKIAotICAgIHVzaW5n
IFBhaW50RnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmLCBpbnQgbGlzdEl0ZW1JbmRleCk+OworICAgIHVzaW5nIFBhaW50RnVuY3Rpb24g
PSBGdW5jdGlvbjx2b2lkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJ
dGVtSW5kZXgpPjsKICAgICB2b2lkIHBhaW50SXRlbShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYsIGNvbnN0IFBhaW50RnVuY3Rpb24mKTsKIAogICAgIHZvaWQgc2V0SGFzVmVydGljYWxT
Y3JvbGxiYXIoYm9vbCBoYXNTY3JvbGxiYXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck92ZXJmbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT3ZlcmZsb3cuaAppbmRleCBjMzk0Y2I0OTZlYmE0MTZmZTZiYzRiYmJmYTBkNzc4OTgyYWM0
OTU2Li4xMTIyYjg2MjcxMjEyZWFlODcyOTJiZWQxNjYyZDYwNGZkMmEwZjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT3ZlcmZsb3cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT3ZlcmZsb3cuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogLy8gRXhhbXBsZXMgb2YgdmlzdWFsIG92ZXJmbG93IGFyZSBzaGFkb3dz
LCB0ZXh0IHN0cm9rZSwgb3V0bGluZSAoYW5kIGV2ZW50dWFsbHkgYm9yZGVyLWltYWdlKS4KIAog
Ly8gVGhpcyBvYmplY3QgaXMgYWxsb2NhdGVkIG9ubHkgd2hlbiBzb21lIG9mIHRoZXNlIGZpZWxk
cyBoYXZlIG5vbi1kZWZhdWx0IHZhbHVlcyBpbiB0aGUgb3duaW5nIGJveC4KLWNsYXNzIFJlbmRl
ck92ZXJmbG93IDogcHVibGljIFdURjo6UmVmQ291bnRlZDxSZW5kZXJPdmVyZmxvdz4geworY2xh
c3MgUmVuZGVyT3ZlcmZsb3cgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJPdmVyZmxvdz4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlck92ZXJmbG93KTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVuZGVyT3ZlcmZsb3coY29uc3QgTGF5b3V0UmVjdCYg
bGF5b3V0UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgdmlzdWFsUmVjdCkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAppbmRleCBjNjc3ZDA3OTg2N2Mx
MjY1MmQ5OTJlZmVkNTIwNGJlMGU5MjRkM2U4Li40M2RlMzg2MGQ1YTk2ZTJhM2VmNmQxZGY2ZTQw
MWYyMGE5YTE1MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVHcmlkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWREYXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVuc2lnbmVkPj4gTmFtZWRHcmlkTGluZXNNYXA7
Ci10eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFZlY3RvcjxTdHJpbmc+LCBXVEY6OkludEhhc2g8
dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4g
T3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwOwordHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBWZWN0
b3I8U3RyaW5nPiwgSW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8dW5zaWduZWQ+PiBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXA7CiAKIGNsYXNzIFN0
eWxlR3JpZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUdyaWREYXRhPiB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAppbmRleCA2ZTVjYzgxMTkwNGQ5MDQwOTAwOTlh
MjVlMDA2MjFjOGM1MzM4ZjZlLi42MjExOGM3MDBkZjU1NDQ4YWQzOWI5MmI3M2ZhNTRlYTFjMjQ5
NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTc3LDEwICs3NywxMCBAQCBz
dHJ1Y3QgUnVsZUZlYXR1cmVTZXQgewogICAgIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPFJ1bGVGZWF0dXJlVmVjdG9yPj4gY2xhc3NSdWxlczsKICAgICBIYXNoTWFw
PEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmVXaXRoSW52YWxp
ZGF0aW9uU2VsZWN0b3I+Pj4gYXR0cmlidXRlUnVsZXM7Ci0gICAgSGFzaE1hcDxDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZUZlYXR1cmVWZWN0b3I+LCBX
VEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzUnVs
ZXM7CisgICAgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1
ZV9wdHI8UnVsZUZlYXR1cmVWZWN0b3I+LCBJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1R5cGU+PiBwc2V1ZG9DbGFzc1J1bGVzOwogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gY2xhc3Nl
c0FmZmVjdGluZ0hvc3Q7CiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVzQWZmZWN0
aW5nSG9zdDsKLSAgICBIYXNoU2V0PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIFdURjo6
SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFz
aFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gcHNldWRvQ2xhc3Nlc0FmZmVj
dGluZ0hvc3Q7CisgICAgSGFzaFNldDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBJbnRI
YXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJh
aXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5n
SG9zdDsKIAogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBib29s
IHVzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
SW52YWxpZGF0b3IuaAppbmRleCBmZmUxNTYxZmE0NGFmNDNlYTFiMmRiMTRjM2VhY2YzNTRiMWIx
NjY0Li4xMTcxNDY5ZTNmYzc0MTc5NzdjYjNjYTU4YTFhY2NkYzBjNDJlMGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVTaGFkb3dQYXJ0cyhTaGFkb3dSb290Jik7CiAK
LSAgICB1c2luZyBNYXRjaEVsZW1lbnRSdWxlU2V0cyA9IEhhc2hNYXA8TWF0Y2hFbGVtZW50LCBJ
bnZhbGlkYXRpb25SdWxlU2V0VmVjdG9yLCBXVEY6OkludEhhc2g8TWF0Y2hFbGVtZW50PiwgV1RG
OjpTdHJvbmdFbnVtSGFzaFRyYWl0czxNYXRjaEVsZW1lbnQ+PjsKKyAgICB1c2luZyBNYXRjaEVs
ZW1lbnRSdWxlU2V0cyA9IEhhc2hNYXA8TWF0Y2hFbGVtZW50LCBJbnZhbGlkYXRpb25SdWxlU2V0
VmVjdG9yLCBJbnRIYXNoPE1hdGNoRWxlbWVudD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8
TWF0Y2hFbGVtZW50Pj47CiAgICAgc3RhdGljIHZvaWQgYWRkVG9NYXRjaEVsZW1lbnRSdWxlU2V0
cyhJbnZhbGlkYXRvcjo6TWF0Y2hFbGVtZW50UnVsZVNldHMmLCBjb25zdCBJbnZhbGlkYXRpb25S
dWxlU2V0Jik7CiAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZVdpdGhNYXRjaEVsZW1lbnRSdWxl
U2V0cyhFbGVtZW50JiwgY29uc3QgTWF0Y2hFbGVtZW50UnVsZVNldHMmKTsKICAgICBzdGF0aWMg
dm9pZCBpbnZhbGlkYXRlQWxsU3R5bGUoU2NvcGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZVJ1bGVTZXRzLmgKaW5kZXggODdhNzg5ZWZiYjk0Nzk2ZTgxMGU3YWEzNmI0YzkxZmJj
NGM0MjRiZS4uNDU0ZjVjMDc5NGQyMzlhNzNmZDhhMDU0NWY0NTVlNjc0OWE3MmQ3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTEwMCw3ICsxMDAsNyBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1
dGVSdWxlU2V0OwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9jbGFzc0ludmFsaWRhdGlvblJ1bGVT
ZXRzOwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0
czsKLSAgICBtdXRhYmxlIEhhc2hNYXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4sIFdURjo6SW50SGFzaDxD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gbV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1
bGVTZXRzOworICAgIG11dGFibGUgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBl
LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PiwgSW50SGFzaDxD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gbV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1
bGVTZXRzOwogCiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY2FjaGVkSGFzQ29t
cGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRh
dGUuaAppbmRleCAwMmM2NTMzODNjZDQ4ZWRmN2RhMDI5MDJmNDJhN2Q0NWVlZDJiZmNiLi43Zjlk
N2ExNzdjY2ZmNTllYTgyNzYxNjU4MjRhZTNhY2Q1ODJiOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVXBkYXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IEVsZW1lbnRVcGRhdGUgewogCiBl
bnVtIGNsYXNzIERlc2NlbmRhbnRzVG9SZXNvbHZlIHsgTm9uZSwgQ2hpbGRyZW5XaXRoRXhwbGlj
aXRJbmhlcml0LCBDaGlsZHJlbiwgQWxsIH07CiAKLXVzaW5nIFBzZXVkb0lkVG9FbGVtZW50VXBk
YXRlTWFwID0gSGFzaE1hcDxQc2V1ZG9JZCwgRWxlbWVudFVwZGF0ZSwgV1RGOjpJbnRIYXNoPFBz
ZXVkb0lkPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+OwordXNpbmcgUHNl
dWRvSWRUb0VsZW1lbnRVcGRhdGVNYXAgPSBIYXNoTWFwPFBzZXVkb0lkLCBFbGVtZW50VXBkYXRl
LCBJbnRIYXNoPFBzZXVkb0lkPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+
OwogCiBzdHJ1Y3QgRWxlbWVudFVwZGF0ZXMgewogICAgIEVsZW1lbnRVcGRhdGUgdXBkYXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ0YWY3OGQ3NjU2YmY1M2FjMDQ1
YzNkMzU1MmM3MWI5Y2I4MGJiMDguLmRjNTIxMTM5ZGM2MDYyNjhmYTIxNmQxYjg2ZWM0Yjc4NjU3
ZWE0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIyNjEsNyArMjI2
MSw3IEBAIHZvaWQgSW50ZXJuYWxzOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKQogCiBWZWN0
b3I8U3RyaW5nPiBJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdAogewot
ICAgIHJldHVybiBXVEY6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICByZXR1cm4gdXNl
clByZWZlcnJlZExhbmd1YWdlcygpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0VXNlclByZWZl
cnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDQxMWEzMDA5NDdiNTM5ZTI2
YWE2YzY0YTAwOTMyOTJlOWZmYmU2YjkuLmJiYmZiYTY1NGRlYTA1ZjkzMmMyNGYyZGNiMTc3YmU5
ZTUyNDE4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgK
QEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9ja0NvbnRl
bnRGaWx0ZXIgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKLSAgICBmcmll
bmQgVW5pcXVlUmVmPE1vY2tDb250ZW50RmlsdGVyPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPE1vY2tDb250ZW50RmlsdGVyPigpOworICAgIGZyaWVuZCBVbmlxdWVS
ZWY8TW9ja0NvbnRlbnRGaWx0ZXI+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PE1vY2tDb250ZW50RmlsdGVyPigpOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZW5zdXJl
SW5zdGFsbGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252
ZXJzaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaAppbmRl
eCA5NWUyYWM5ZjY1ZDU0NWIzNzlhM2E2ZjlkMGM5Y2UyN2Y4Y2MyNzQ1Li4xMWE5YTVmMDkwODY1
ZDk0ZDQyMDYzNGIyNTQyYTBhODk2Yzc1Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlw
ZUNvbnZlcnNpb25zLmgKQEAgLTExOSwxMiArMTE5LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIHRlc3RUcmVhdE51bGxBc0VtcHR5U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV90cmVh
dE51bGxBc0VtcHR5U3RyaW5nOyB9CiAgICAgdm9pZCBzZXRUZXN0VHJlYXROdWxsQXNFbXB0eVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyBtX3RyZWF0TnVsbEFzRW1wdHlTdHJpbmcgPSBz
dHJpbmc7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIGlu
dD4+JiB0ZXN0TG9uZ1JlY29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ1JlY29yZDsgfQotICAg
IHZvaWQgc2V0VGVzdExvbmdSZWNvcmQoY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0
cmluZywgaW50Pj4mIHZhbHVlKSB7IG1fbG9uZ1JlY29yZCA9IHZhbHVlOyB9Ci0gICAgY29uc3Qg
VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmUHRyPE5vZGU+Pj4mIHRlc3ROb2Rl
UmVjb3JkKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlUmVjb3JkOyB9Ci0gICAgdm9pZCBzZXRUZXN0
Tm9kZVJlY29yZChjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWZQdHI8
Tm9kZT4+PiYgdmFsdWUpIHsgbV9ub2RlUmVjb3JkID0gdmFsdWU7IH0KLSAgICBjb25zdCBWZWN0
b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+JiB0ZXN0U2VxdWVu
Y2VSZWNvcmQoKSBjb25zdCB7IHJldHVybiBtX3NlcXVlbmNlUmVjb3JkOyB9Ci0gICAgdm9pZCBz
ZXRUZXN0U2VxdWVuY2VSZWNvcmQoY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmlu
ZywgVmVjdG9yPFN0cmluZz4+PiYgdmFsdWUpIHsgbV9zZXF1ZW5jZVJlY29yZCA9IHZhbHVlOyB9
CisgICAgY29uc3QgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIGludD4+JiB0ZXN0TG9uZ1Jl
Y29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ1JlY29yZDsgfQorICAgIHZvaWQgc2V0VGVzdExv
bmdSZWNvcmQoY29uc3QgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIGludD4+JiB2YWx1ZSkg
eyBtX2xvbmdSZWNvcmQgPSB2YWx1ZTsgfQorICAgIGNvbnN0IFZlY3RvcjxLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBSZWZQdHI8Tm9kZT4+PiYgdGVzdE5vZGVSZWNvcmQoKSBjb25zdCB7IHJldHVybiBt
X25vZGVSZWNvcmQ7IH0KKyAgICB2b2lkIHNldFRlc3ROb2RlUmVjb3JkKGNvbnN0IFZlY3RvcjxL
ZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWZQdHI8Tm9kZT4+PiYgdmFsdWUpIHsgbV9ub2RlUmVjb3Jk
ID0gdmFsdWU7IH0KKyAgICBjb25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgVmVjdG9y
PFN0cmluZz4+PiYgdGVzdFNlcXVlbmNlUmVjb3JkKCkgY29uc3QgeyByZXR1cm4gbV9zZXF1ZW5j
ZVJlY29yZDsgfQorICAgIHZvaWQgc2V0VGVzdFNlcXVlbmNlUmVjb3JkKGNvbnN0IFZlY3RvcjxL
ZXlWYWx1ZVBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+JiB2YWx1ZSkgeyBtX3NlcXVlbmNl
UmVjb3JkID0gdmFsdWU7IH0KIAogICAgIHVzaW5nIFRlc3RVbmlvbiA9IHN0ZDo6dmFyaWFudDxT
dHJpbmcsIGludCwgYm9vbCwgUmVmUHRyPE5vZGU+LCBWZWN0b3I8aW50Pj47CiAgICAgY29uc3Qg
VGVzdFVuaW9uJiB0ZXN0VW5pb24oKSBjb25zdCB7IHJldHVybiBtX3VuaW9uOyB9CkBAIC0xNjgs
OSArMTY4LDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV91c3ZzdHJpbmc7CiAgICAgU3RyaW5n
IG1fYnl0ZVN0cmluZzsKICAgICBTdHJpbmcgbV90cmVhdE51bGxBc0VtcHR5U3RyaW5nOwotICAg
IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIGludD4+IG1fbG9uZ1JlY29yZDsKLSAg
ICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWZQdHI8Tm9kZT4+PiBtX25vZGVS
ZWNvcmQ7Ci0gICAgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgVmVjdG9yPFN0cmlu
Zz4+PiBtX3NlcXVlbmNlUmVjb3JkOworICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBp
bnQ+PiBtX2xvbmdSZWNvcmQ7CisgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0
cjxOb2RlPj4+IG1fbm9kZVJlY29yZDsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywg
VmVjdG9yPFN0cmluZz4+PiBtX3NlcXVlbmNlUmVjb3JkOwogCiAgICAgRGljdGlvbmFyeSBtX3Rl
c3REaWN0aW9uYXJ5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXIuaAppbmRleCBjYjRkMTM2N2UxZjE5MzQ0ODY3NDVkYjA3NDE0NWU1NGJj
MzFkZDYzLi40ZDY5MGZhNzNlNTFlZDI2NWI5OTY5OTlhYWY3Yzg3NmQ1OTdhYzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKQEAg
LTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX3Byb2ZpbGVzOwog
ICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2UgbV9wb2lu
dGVyT3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlUG9zZT4gbV9ncmlwT3JpZ2luOwotICAgIEhhc2hNYXA8RmFrZVhSQnV0
dG9uU3RhdGVJbml0OjpUeXBlLCBGYWtlWFJCdXR0b25TdGF0ZUluaXQsIFdURjo6SW50SGFzaDxG
YWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEZh
a2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZT4+IG1fYnV0dG9uczsKKyAgICBIYXNoTWFwPEZha2VY
UkJ1dHRvblN0YXRlSW5pdDo6VHlwZSwgRmFrZVhSQnV0dG9uU3RhdGVJbml0LCBJbnRIYXNoPEZh
a2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8RmFr
ZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlPj4gbV9idXR0b25zOwogICAgIGJvb2wgbV9jb25uZWN0
ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3ByaW1hcnlTZWxlY3RlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3NpbXVsYXRlU2VsZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAppbmRleCBhNTMzYWEzZjlkY2FkOTFmMGZm
NDVkMTRlZmU3OGYyZWQwZjExYjAwLi41MWI3MTg2YjA4OWMyY2ZmMGY0ZmFjNGE0YWRhM2ZlYzMw
MGY4ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0
U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBkaXNjb25uZWN0TW9ja0dhbWVwYWQo
dW5zaWduZWQgZ2FtZXBhZEluZGV4KQogI2VuZGlmCiB9CiAKLXZvaWQgc2V0TW9ja0dhbWVwYWRE
ZXRhaWxzKHVuc2lnbmVkIGdhbWVwYWRJbmRleCwgY29uc3QgV1RGOjpTdHJpbmcmIGdhbWVwYWRJ
RCwgY29uc3QgV1RGOjpTdHJpbmcmIG1hcHBpbmcsIHVuc2lnbmVkIGF4aXNDb3VudCwgdW5zaWdu
ZWQgYnV0dG9uQ291bnQpCit2b2lkIHNldE1vY2tHYW1lcGFkRGV0YWlscyh1bnNpZ25lZCBnYW1l
cGFkSW5kZXgsIGNvbnN0IFN0cmluZyYgZ2FtZXBhZElELCBjb25zdCBTdHJpbmcmIG1hcHBpbmcs
IHVuc2lnbmVkIGF4aXNDb3VudCwgdW5zaWduZWQgYnV0dG9uQ291bnQpCiB7CiAjaWYgRU5BQkxF
KEdBTUVQQUQpCiAgICAgTW9ja0dhbWVwYWRQcm92aWRlcjo6c2luZ2xldG9uKCkuc2V0TW9ja0dh
bWVwYWREZXRhaWxzKGdhbWVwYWRJbmRleCwgZ2FtZXBhZElELCBtYXBwaW5nLCBheGlzQ291bnQs
IGJ1dHRvbkNvdW50KTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIHNldHVwTmV3bHlDcmVhdGVk
U2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIH0KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotdm9pZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0Zv
clRlc3RpbmcoY29uc3QgV1RGOjpTdHJpbmcmIGltYWdlVHlwZXMpCit2b2lkIHNldEFkZGl0aW9u
YWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGltYWdlVHlwZXMp
CiB7CiAgICAgV2ViQ29yZTo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0
aW5nKGltYWdlVHlwZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9XZWJDb3JlVGVzdFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29y
ZVRlc3RTdXBwb3J0LmgKaW5kZXggYzAxMWRlZTk1ZGY2ZGI5ZmEyM2IxY2M1ZmZhYTUxOTQ2MTU1
MjQwMS4uYzRkYTNjMDE2ODNhYjhlOWY5MTJhMTA3MmFkZjQyYTNkZjJjNDI0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCkBAIC01MCw3ICs1
MCw3IEBAIHZvaWQgbW9uaXRvcldoZWVsRXZlbnRzKFdlYkNvcmU6OkZyYW1lJiwgYm9vbCBjbGVh
ckxhdGNoaW5nU3RhdGUpIFRFU1RfU1VQUE9SVF9FCiB2b2lkIHNldFdoZWVsRXZlbnRNb25pdG9y
VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNl
bCwgYm9vbCBleHBlY3RNb21lbnR1bUVuZCwgV2ViQ29yZTo6RnJhbWUmLCBKU0NvbnRleHRSZWYs
IEpTT2JqZWN0UmVmKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBjbGVhcldoZWVsRXZlbnRU
ZXN0TW9uaXRvcihXZWJDb3JlOjpGcmFtZSYpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiAKLXZvaWQg
c2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBXVEY6OlN0cmluZyYgbmFtZSkgVEVTVF9T
VVBQT1JUX0VYUE9SVDsKK3ZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBTdHJp
bmcmIG5hbWUpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGNsZWFyQWxsTG9nQ2hhbm5lbHNU
b0FjY3VtdWxhdGUoKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBpbml0aWFsaXplTG9nQ2hh
bm5lbHNJZk5lY2Vzc2FyeSgpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIHNldEFsbG93c0Fu
eVNTTENlcnRpZmljYXRlKGJvb2wpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CkBAIC01OSwxMyArNTks
MTMgQEAgdm9pZCBzZXRMaW5rZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nRm9yVGVzdGluZygpIFRFU1Rf
U1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGluc3RhbGxNb2NrR2FtZXBhZFByb3ZpZGVyKCkgVEVTVF9T
VVBQT1JUX0VYUE9SVDsKIHZvaWQgY29ubmVjdE1vY2tHYW1lcGFkKHVuc2lnbmVkIGluZGV4KSBU
RVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBkaXNjb25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQg
aW5kZXgpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7Ci12b2lkIHNldE1vY2tHYW1lcGFkRGV0YWlscyh1
bnNpZ25lZCBpbmRleCwgY29uc3QgV1RGOjpTdHJpbmcmIGdhbWVwYWRJRCwgY29uc3QgV1RGOjpT
dHJpbmcmIG1hcHBpbmcsIHVuc2lnbmVkIGF4aXNDb3VudCwgdW5zaWduZWQgYnV0dG9uQ291bnQp
IFRFU1RfU1VQUE9SVF9FWFBPUlQ7Cit2b2lkIHNldE1vY2tHYW1lcGFkRGV0YWlscyh1bnNpZ25l
ZCBpbmRleCwgY29uc3QgU3RyaW5nJiBnYW1lcGFkSUQsIGNvbnN0IFN0cmluZyYgbWFwcGluZywg
dW5zaWduZWQgYXhpc0NvdW50LCB1bnNpZ25lZCBidXR0b25Db3VudCkgVEVTVF9TVVBQT1JUX0VY
UE9SVDsKIHZvaWQgc2V0TW9ja0dhbWVwYWRBeGlzVmFsdWUodW5zaWduZWQgaW5kZXgsIHVuc2ln
bmVkIGF4aXNJbmRleCwgZG91YmxlIHZhbHVlKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBz
ZXRNb2NrR2FtZXBhZEJ1dHRvblZhbHVlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBidXR0b25J
bmRleCwgZG91YmxlIHZhbHVlKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogCiB2b2lkIHNldHVwTmV3
bHlDcmVhdGVkU2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikg
VEVTVF9TVVBQT1JUX0VYUE9SVDsKICAgICAKLXZvaWQgc2V0QWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXNGb3JUZXN0aW5nKGNvbnN0IFdURjo6U3RyaW5nJikgVEVTVF9TVVBQT1JUX0VYUE9S
VDsKK3ZvaWQgc2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKGNvbnN0
IFN0cmluZyYpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiAKICNpZiBFTkFCTEUoSklUX09QRVJBVElP
Tl9WQUxJREFUSU9OKQogdm9pZCBwb3B1bGF0ZUpJVE9wZXJhdGlvbnMoKSBURVNUX1NVUFBPUlRf
RVhQT1JUOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJl
YWQuY3BwCmluZGV4IGEzYmRkYmI0YzkzYTljMzE0MGVkNmVhYWEzNGRkMGI0MjRjNDQ1OWMuLjIz
NzhhNDM4N2Q2MGQzYjk3OTM4MGQzYmVmZjYzZDBkMWMxZjE5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAKQEAgLTIwOSw3ICsyMDks
NyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkK
ICAgICAvLyBXZSBjYW5ub3QgbGV0IGFueSBvYmplY3RzIHN1cnZpdmUgcGFzdCB0aHJlYWQgZXhp
dCwgYmVjYXVzZSBubyBvdGhlciB0aHJlYWQgd2lsbCBydW4gR0Mgb3Igb3RoZXJ3aXNlIGRlc3Ry
b3kgdGhlbS4KICAgICB3b3JrZXJHbG9iYWxTY29wZVRvRGVsZXRlID0gbnVsbHB0cjsKIAotICAg
IC8vIENsZWFuIHVwIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGEgYmVmb3JlIFdURjo6VGhyZWFk
IGdvZXMgYXdheSEKKyAgICAvLyBDbGVhbiB1cCBXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhIGJl
Zm9yZSBUaHJlYWQgZ29lcyBhd2F5IQogICAgIHRocmVhZEdsb2JhbERhdGEoKS5kZXN0cm95KCk7
CiAKICAgICAvLyBTZW5kIHRoZSBsYXN0IFdvcmtlclRocmVhZCBSZWYgdG8gYmUgRGVyZWYnZWQg
b24gdGhlIG1haW4gdGhyZWFkLgpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgV29ya2VyT3JXb3Jr
bGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWQoKQogICAgIHByb3RlY3Rvci0+ZGV0YWNo
KCk7CiB9CiAKLXZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpzdGFydChXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgZXZhbHVhdGVDYWxsYmFjaykKK3ZvaWQgV29ya2VyT3JX
b3JrbGV0VGhyZWFkOjpzdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGV2YWx1
YXRlQ2FsbGJhY2spCiB7CiAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgdG8g
ZW5zdXJlIHRoYXQgbV90aHJlYWQgaXMgaW5pdGlhbGl6ZWQgd2hlbiB0aGUgdGhyZWFkIHN0YXJ0
cy4KICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aHJlYWRDcmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9j
ayB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgK
aW5kZXggYmIzYmI3NTJkYjRiYTIwZGFlMmVjZmRkYWE4YmU1NDk5ZDAyOTNkZi4uZDY0YWM2YTll
ZjhjNGUwZjNhNDQwMDY1MjI3OGZjNWIyYzI2MzdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFdv
cmtlck9yV29ya2xldFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJP
cldvcmtsZXRUaHJlYWQ+CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0VGhy
ZWFkKCk7CiAKLSAgICBXVEY6OlRocmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJl
YWQuZ2V0KCk7IH0KKyAgICBUaHJlYWQqIHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFk
LmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIFdvcmtlckRlYnVnZ2VyUHJveHkqIHdvcmtlckRlYnVn
Z2VyUHJveHkoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXb3JrZXJMb2FkZXJQcm94eSYgd29y
a2VyTG9hZGVyUHJveHkoKSA9IDA7CkBAIC03Nyw3ICs3Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgcnVuRXZlbnRMb29wKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZWY8
V1RGOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxUaHJlYWQ+
IGNyZWF0ZVRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZT4gY3JlYXRlR2xvYmFsU2NvcGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV2
YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFdhaXRGb3JXZWJJbnNwZWN0b3JPblN0YXJ0dXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAg
ICAgTG9jayBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2NrOwogICAgIFJlZlB0cjxX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4gbV9nbG9iYWxTY29wZTsKLSAgICBSZWZQdHI8V1RG
OjpUaHJlYWQ+IG1fdGhyZWFkOworICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhyZWFkOwogICAgIFVu
aXF1ZVJlZjxXb3JrZXJSdW5Mb29wPiBtX3J1bkxvb3A7CiAgICAgRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4gbV9ldmFsdWF0ZUNhbGxiYWNrOwogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9z
dG9wcGVkQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApp
bmRleCA2YzAyZjEzMmRmZTlmOThiOTg3NGM2YzI0MWMyOWQzMmJiZThlZDhmLi5mY2U1Y2UxMzI5
M2JiNWJmOTZkNjAzZWRhYzJlMGU1ZjY5NjUzYTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyUnVuTG9vcC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgV29ya2VyU2hhcmVkVGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogcHVi
bGljOgogICAgIC8vIFNoYXJlZFRpbWVyIGludGVyZmFjZS4KLSAgICB2b2lkIHNldEZpcmVkRnVu
Y3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pIGZpbmFsIHsgbV9zaGFyZWRU
aW1lckZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7IH0KKyAgICB2b2lkIHNldEZpcmVkRnVu
Y3Rpb24oRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKSBmaW5hbCB7IG1fc2hhcmVkVGltZXJG
dW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOyB9CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwo
U2Vjb25kcyBpbnRlcnZhbCkgZmluYWwgeyBtX25leHRGaXJlVGltZSA9IE1vbm90b25pY1RpbWU6
Om5vdygpICsgaW50ZXJ2YWw7IH0KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IG1fbmV4dEZpcmVU
aW1lID0gTW9ub3RvbmljVGltZSB7IH07IH0KIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBmaXJlKCkgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24oKTsgfQogCiBwcml2YXRlOgot
ICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CisgICAgRnVu
Y3Rpb248dm9pZCgpPiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CiAgICAgTW9ub3RvbmljVGltZSBt
X25leHRGaXJlVGltZTsKIH07CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBNZXNzYWdlUXVldWVXYWl0
UmVzdWx0IFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTYwogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQoY29udGV4dC0+d29ya2Vy
T3JXb3JrbGV0VGhyZWFkKCktPnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAg
ICBKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrIHRpbWVyQWRk
ZWRUYXNrID0gV1RGOjpjcmVhdGVTaGFyZWRUYXNrPEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVy
Tm90aWZpY2F0aW9uVHlwZT4oW3RoaXNdIHsKKyAgICBKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1l
ck5vdGlmaWNhdGlvbkNhbGxiYWNrIHRpbWVyQWRkZWRUYXNrID0gY3JlYXRlU2hhcmVkVGFzazxK
U0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvblR5cGU+KFt0aGlzXSB7CiAgICAg
ICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIGhlcmUsIHdlIGp1c3Qgd2FudCB0
byBsb29wIGFyb3VuZCBydW5Jbk1vZGUKICAgICAgICAgLy8gdG8gYm90aCByZWNhbGN1bGF0ZSBv
dXIgZGVhZGxpbmUgYW5kIHRvIHBvdGVudGlhbGx5IHJ1biB0aGUgcnVuIGxvb3AuCiAgICAgICAg
IHRoaXMtPnBvc3RUYXNrKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7IH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggZWE1MzgwZmJlZWY4
NzU0MDMxNmE2ZmE5Mjc4Y2MyMTdjODkzMTRlMC4uZWFhYmUxZWE1ZDEzYjMzZjljM2NjNjZkZDQ5
NTU3ZWI2OWUzN2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVzb3VyY2VFcnJvciB2YWxpZGF0ZVdvcmtlclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj47CisgICAgZnJpZW5k
IGNsYXNzIFJlZkNvdW50ZWQ8V29ya2VyU2NyaXB0TG9hZGVyPjsKICAgICBmcmllbmQgc3RydWN0
IHN0ZDo6ZGVmYXVsdF9kZWxldGU8V29ya2VyU2NyaXB0TG9hZGVyPjsKIAogICAgIFdvcmtlclNj
cmlwdExvYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggMTE4
YTUxOThmZTdlNTUwOGM2NGM5ZmRkYzk5ZWYwYjE4NzUzMDVhNi4uYjQzNTBjNDdhZmY4MzgxMjY3
YTlmNmY5ODI3MDlhMzdiYjM3YzJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
ZWRFdmFsdWF0aW5nU2NyaXB0KCkgeyB9CiAKICAgICAvLyBXb3JrZXJPcldvcmtsZXRUaHJlYWQu
Ci0gICAgUmVmPFdURjo6VGhyZWFkPiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKKyAgICBSZWY8VGhy
ZWFkPiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKICAgICBSZWZQdHI8V29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU+IGNyZWF0ZUdsb2JhbFNjb3BlKCkgZmluYWw7CiAgICAgdm9pZCBldmFsdWF0ZVNj
cmlwdElmTmVjZXNzYXJ5KFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CiAgICAgYm9v
bCBzaG91bGRXYWl0Rm9yV2ViSW5zcGVjdG9yT25TdGFydHVwKCkgY29uc3QgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCmlu
ZGV4IDY2OWU4YmM1MWJhYzVhYzM2MjI0OGVmYTAzNDkxOTIzYjEwNjJhMDkuLjIxMWIyNTk4ZTIw
YmZjZTc0OGY4MjdhYzE0NTA5ODM0YTIwZDMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAg
dm9pZCBFeHRlbmRhYmxlRXZlbnQ6OmFkZEV4dGVuZExpZmV0aW1lUHJvbWlzZShSZWY8RE9NUHJv
bWlzZT4mJiBwcm9taXNlKQogICAgICsrbV9wZW5kaW5nUHJvbWlzZUNvdW50OwogfQogCi12b2lk
IEV4dGVuZGFibGVFdmVudDo6d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVk
KFdURjo6RnVuY3Rpb248dm9pZChIYXNoU2V0PFJlZjxET01Qcm9taXNlPj4mJik+JiYgaGFuZGxl
cikKK3ZvaWQgRXh0ZW5kYWJsZUV2ZW50Ojp3aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0Fy
ZVNldHRsZWQoRnVuY3Rpb248dm9pZChIYXNoU2V0PFJlZjxET01Qcm9taXNlPj4mJik+JiYgaGFu
ZGxlcikKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHRhcmdldCgpLCAiRXZlbnQgaGFzIG5v
dCBiZWVuIGRpc3BhdGNoZWQgeWV0Iik7CiAgICAgQVNTRVJUKCFtX3doZW5BbGxFeHRlbmRMaWZl
dGltZVByb21pc2VzQXJlU2V0dGxlZEhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5oCmluZGV4IDFjMmQ5YjdlNDM1NDliODg1Nzc5
YTk2ZTBjMjAyMWQ4MTZiNDk5N2YuLjgxYTMzOGY5Y2Y3Mjc3ZjAxYzQ1ZDNlOTkyMzhlZTVlNjk5
MWExZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRh
YmxlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJs
ZUV2ZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHdhaXRVbnRpbChSZWY8RE9NUHJvbWlzZT4mJik7CiAgICAgdW5zaWduZWQgcGVuZGluZ1Byb21p
c2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1Byb21pc2VDb3VudDsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRs
ZWQoV1RGOjpGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKT4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNl
dHRsZWQoRnVuY3Rpb248dm9pZChIYXNoU2V0PFJlZjxET01Qcm9taXNlPj4mJik+JiYpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRXh0ZW5kYWJsZUV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBFeHRlbmRhYmxlRXZlbnRJbml0JiwgSXNUcnVzdGVkKTsKQEAgLTYxLDcg
KzYxLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdQcm9t
aXNlQ291bnQgeyAwIH07CiAgICAgSGFzaFNldDxSZWY8RE9NUHJvbWlzZT4+IG1fZXh0ZW5kTGlm
ZXRpbWVQcm9taXNlczsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoSGFzaFNldDxSZWY8RE9NUHJv
bWlzZT4+JiYpPiBtX3doZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZEhhbmRs
ZXI7CisgICAgRnVuY3Rpb248dm9pZChIYXNoU2V0PFJlZjxET01Qcm9taXNlPj4mJik+IG1fd2hl
bkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkSGFuZGxlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggZjk1M2NhZTMyNzAxNTE0MWQzNDBkZjM3
NWE4YjY1ZmZlMzU2NGYwMS4uZmU4MjYwZWM3MTk3ZTE2YmVmZjNkOTMxMWRkZDkyOTY2MDYxMWM4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50
Q29ubmVjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgYm9vbCBkaXNwYXRjaFRvQ29udGV4dFRocmVhZElmTmVjZXNzYXJ5KGNvbnN0IERv
Y3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiBjb250ZXh0SWRlbnRpZmllciwgV1RGOjpGdW5jdGlv
bjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQorc3RhdGljIGJvb2wgZGlz
cGF0Y2hUb0NvbnRleHRUaHJlYWRJZk5lY2Vzc2FyeShjb25zdCBEb2N1bWVudE9yV29ya2VySWRl
bnRpZmllciYgY29udGV4dElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiYmIHRhc2spCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGJvb2wgd2FzUG9zdGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4IDU3YzI4
OGEwYWYxNmMwZjJhODljYWE3ZTVhNjkyMWRiYzE5ODY0M2YuLjBmNGY2MWI3MDM1YTVhNjc3MTM5
MGMwMjdjMDFmYWFjZDZlNDUwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCkBAIC05MSw3ICs5MSw3IEBA
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZp
ZXIpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwg
V1RGTW92ZSgqbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpIH0gfTsKIH0KIAotdXNpbmcg
U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+OwordXNpbmcgU2Vy
dmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPjsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggNmM1OWU4ZDg1MWNjNDI5ZjRmYzc0Njli
NmU0ZDljM2YxYzhhMDE2Mi4uZGM3OTIyMjczODBjOWMwMzQyZGNkODlmMWRkNzA4MWU3OTUxN2Jm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiBq
b2IsIGNvbnN0CiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5oYXNQcm9taXNlKCkgfHwg
am9iLmRhdGEoKS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNv
ZnQgdXBkYXRlcyBoYXZlIG5vIHByb21pc2UiKTsKIAotICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1h
a2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKKyAgICBhdXRvIGd1YXJkID0gbWFrZVNjb3BlRXhp
dChbdGhpcywgJmpvYl0gewogICAgICAgICBkZXN0cm95Sm9iKGpvYik7CiAgICAgfSk7CiAKQEAg
LTM4MSwxMSArMzgxLDExIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2
ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICAgICAgICAgQ09OVEFJ
TkVSX1JFTEVBU0VfTE9HKCJqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb246IFVwZGF0ZSBqb2Ig
JSIgUFJJdTY0ICIgc3VjY2VlZGVkIiwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAg
ICB9CiAKLSAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7
CisgICAgYXV0byBndWFyZCA9IG1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKICAgICAgICAg
ZGVzdHJveUpvYihqb2IpOwogICAgIH0pOwogCi0gICAgYXV0byBub3RpZnlJZkV4aXRFYXJseSA9
IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGtleSA9IGRhdGEua2V5LCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWRdIHsKKyAgICBhdXRvIG5v
dGlmeUlmRXhpdEVhcmx5ID0gbWFrZVNjb3BlRXhpdChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGtleSA9IGRhdGEua2V5LCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWRdIHsK
ICAgICAgICAgaWYgKHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCA9PSBTaG91bGROb3RpZnlXaGVu
UmVzb2x2ZWQ6OlllcykKICAgICAgICAgICAgIG5vdGlmeVJlZ2lzdHJhdGlvbklzU2V0dGxlZChr
ZXkpOwogICAgIH0pOwpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpv
CiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKICAgICBBU1NFUlQoam9iLmhhc1Byb21pc2UoKSk7CiAKLSAgICBhdXRvIGd1YXJkID0gV1RG
OjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CisgICAgYXV0byBndWFyZCA9IG1ha2VTY29w
ZUV4aXQoW3RoaXMsICZqb2JdIHsKICAgICAgICAgZGVzdHJveUpvYihqb2IpOwogICAgIH0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDI3NDQ1YjViZDczOGYzNjkxZTNhODBkYjgxNzU2
MmQwMTczMWU0OTEuLjUxMDQ1MzRlNTVmOTFlYWFjNjI0MTE3MmM4YTgyMTE4YjNmOGE0ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0xNjEsMTMgKzE2MSwxMyBAQCB2b2lkIFNXQ29udGV4
dE1hbmFnZXI6OnN0b3BXb3JrZXIoU2VydmljZVdvcmtlclRocmVhZFByb3h5JiBzZXJ2aWNlV29y
a2VyLCBTZWNvbgogICAgIH0pOwogfQogCi12b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZvckVhY2hT
ZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkmKT4mIGFwcGx5KQordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmb3JFYWNoU2Vy
dmljZVdvcmtlclRocmVhZChjb25zdCBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSYpPiYgYXBwbHkpCiB7CiAgICAgZm9yIChhdXRvJiB3b3JrZXJUaHJlYWQgOiBtX3dvcmtl
ck1hcC52YWx1ZXMoKSkKICAgICAgICAgYXBwbHkod29ya2VyVGhyZWFkKTsKIH0KIAotYm9vbCBT
V0NvbnRleHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlJik+JiYgdGFzaykKK2Jvb2wgU1dDb250ZXh0TWFuYWdlcjo6cG9zdFRhc2tUb1NlcnZp
Y2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgRnVuY3Rpb248dm9p
ZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmKT4mJiB0YXNrKQogewogICAgIGF1dG8qIHNlcnZp
Y2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNl
V29ya2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGVhMzcwYjk3YWM3ZDc2MThiMDExYTRiY2M3
ZjEyM2I3YTkzNjI3YjcuLmM3NjVjNTdkMjAyM2YxNGNhYmJiZGJiOTBiNjgzZWE2NTQ1NzA3Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTk1LDkgKzk1LDkgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
ZWNvbmRzIHRpbWVvdXQsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2NyaXB0
QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsK
IAotICAgIHZvaWQgZm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYpPiYpOworICAgIHZvaWQgZm9yRWFjaFNl
cnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkmKT4mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcG9zdFRhc2tUb1NlcnZpY2VX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3N0VGFz
a1RvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmKT4mJik7CiAKICAgICB1c2luZyBTZXJ2aWNlV29ya2Vy
Q3JlYXRpb25DYWxsYmFjayA9IHZvaWQodWludDY0X3QpOwogICAgIHZvaWQgc2V0U2VydmljZVdv
cmtlckNyZWF0aW9uQ2FsbGJhY2soU2VydmljZVdvcmtlckNyZWF0aW9uQ2FsbGJhY2sqIGNhbGxi
YWNrKSB7IG1fc2VydmljZVdvcmtlckNyZWF0aW9uQ2FsbGJhY2sgPSBjYWxsYmFjazsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApp
bmRleCBmZWY3NTExMDUyZjgxMjUwYWU4MzA1MzQwZWY1YTkwM2IwOGM0ODY2Li5hZTYxYjc5YzFh
ODY1MTU3ODY0N2UxM2M5MDY1Yzc2OWJjN2EyMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjA0LDcgKzYwNCw3IEBA
IHZvaWQgU1dTZXJ2ZXI6Om1hdGNoQWxsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wCiAgICAgY2FsbGJhY2soV1RGTW92ZShtYXRjaGluZ0Ns
aWVudHMpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Zm9yRWFjaENsaWVudEZvck9yaWdpbihjb25z
dCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhJik+JiBhcHBseSkKK3ZvaWQgU1dTZXJ2ZXI6OmZvckVhY2hDbGllbnRG
b3JPcmlnaW4oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
U2VydmljZVdvcmtlckNsaWVudERhdGEmKT4mIGFwcGx5KQogewogICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmZpbmQob3JpZ2luKTsKICAgICBpZiAoaXRl
cmF0b3IgPT0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5lbmQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAwYWMzMTY3
MjJhZDhmODFlM2JlMjU0ZTBhYTQ3NDA4ZjU5YWU4NzBlLi5hOGVhYTYwYWUwMjk0NTVmZWNhNzk0
ZDA4MzdiOGQ3MWMyYmU1NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgflNXU2VydmVyKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyQWxsKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
cihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydFN1c3BlbnNpb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZFN1c3BlbnNpb24o
KTsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXI+JiwgU3RyaW5nJiYgdXNlckFnZW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYsIFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAotICAgIHVzaW5nIFJ1blNlcnZpY2VXb3Jr
ZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24qKT47CisgICAgdXNpbmcgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJ1
blNlcnZpY2VXb3JrZXJDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlv
blJlYWR5UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKQEAgLTI0NSw3ICsyNDUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYpOwogCiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlv
bkZyb21TZXJ2aWNlV29ya2VySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBmb3JFYWNoQ2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYpPiYpOworICAgIHZv
aWQgZm9yRWFjaENsaWVudEZvck9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBGdW5j
dGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJik+Jik7CiAKICAgICB2b2lkIHBlcmZv
cm1HZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnNDYWxsYmFja3MoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKaW5kZXggNzhjNzczODU0NTdkNjE5NjZkMWUxMjRhZjMzZWRkMzM4OTE4ZWZhNy4uZDYw
ZmYwMDk5YmExYzhjMDhjYTFlN2E2MjJkNmY4NzQxYWZmYWM5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpmaW5pc2hDdXJy
ZW50Sm9iKCkKICAgICAgICAgcnVuTmV4dEpvYigpOwogfQogCi12b2lkIFNXU2VydmVySm9iUXVl
dWU6OnJlbW92ZUFsbEpvYnNNYXRjaGluZyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woU2Vydmlj
ZVdvcmtlckpvYkRhdGEmKT4mIG1hdGNoZXMpCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlbW92
ZUFsbEpvYnNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFNlcnZpY2VXb3JrZXJKb2JEYXRh
Jik+JiBtYXRjaGVzKQogewogICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7CiAgICAgYm9vbCBkaWRS
ZW1vdmVGaXJzdEpvYiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAppbmRleCBlYjkzMWUwNDE0NzAw
ZWQ1OTY3YWFiNjFkNjQ4Mjc1ODEyNTljNDM3Li40ZmQ1ZTYxODlkNzE5ZDBiODNmZmFkOTk2NTk0
NzI1ZTY3NjcyMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVySm9iUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBpbnN0YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogCi0gICAgdm9pZCByZW1vdmVBbGxKb2JzTWF0Y2hpbmcoY29uc3QgV1RG
OjpGdW5jdGlvbjxib29sKFNlcnZpY2VXb3JrZXJKb2JEYXRhJik+Jik7CisgICAgdm9pZCByZW1v
dmVBbGxKb2JzTWF0Y2hpbmcoY29uc3QgRnVuY3Rpb248Ym9vbChTZXJ2aWNlV29ya2VySm9iRGF0
YSYpPiYpOwogCiAgICAgRGVxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fam9iUXVldWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggYWY5NWExYTA2MWY1NzAwYjA5YjhjMTdl
YjJkZGIyNjA2MmJmNzgxNS4uODZiNTgyNjQxNGQ5YzU4MmI2ZWIwZmQzZDQxOWI5OWYyMDY3Nzhh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lk
IFNXU2VydmVyUmVnaXN0cmF0aW9uOjpmaXJlVXBkYXRlRm91bmRFdmVudCgpCiAgICAgfSk7CiB9
CiAKLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmZvckVhY2hDb25uZWN0aW9uKGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYgYXBwbHkpCit2b2lkIFNX
U2VydmVyUmVnaXN0cmF0aW9uOjpmb3JFYWNoQ29ubmVjdGlvbihjb25zdCBGdW5jdGlvbjx2b2lk
KFNXU2VydmVyOjpDb25uZWN0aW9uJik+JiBhcHBseSkKIHsKICAgICBmb3IgKGF1dG8gY29ubmVj
dGlvbklkZW50aWZpZXJXaXRoQ2xpZW50cyA6IG1fY29ubmVjdGlvbnNXaXRoQ2xpZW50UmVnaXN0
cmF0aW9ucy52YWx1ZXMoKSkgewogICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc2Vy
dmVyLmNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXJXaXRoQ2xpZW50cykpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmgKaW5kZXggNWQxZTkyYjkxNDdjNWEzMzBiNmQ1ZGMyMTAzYzNmM2VkMDY3
NjRjNS4uMmMxNjRlNDQ0YjQ1Y2U2OTBiNWUzNjhmZjhhYmZlZDY5MDc4YjdlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9v
bCBpc1VucmVnaXN0ZXJlZCgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNoQ29ubmVjdGlvbihj
b25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mKTsKKyAgICB2
b2lkIGZvckVhY2hDb25uZWN0aW9uKGNvbnN0IEZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mKT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkU29mdFVwZGF0ZShj
b25zdCBGZXRjaE9wdGlvbnMmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVk
dWxlU29mdFVwZGF0ZShJc0FwcEluaXRpYXRlZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442339</attachid>
            <date>2021-10-24 23:26:52 -0700</date>
            <delta_ts>2021-10-25 00:18:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232226-20211025152650.patch</filename>
            <type>text/plain</type>
            <size>519294</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYwZWFjOTIyYTRlNWQx
NDhiYjQ2ODg5MjI3ZGI3NTRkZWViMzRjYy4uMzMwZTQ1MjYxNzRkOWFhODQzNmQxNjBkZDE0NTNk
MWQ2ZTJmNmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1NyBAQAorMjAyMS0xMC0yNCAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAgICAgICBbV2ViQ29y
ZV0gUmVtb3ZlIHVubmVlZGVkIFdURjo6IG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjIyNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb25FcnJvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6Y2Fu
TWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENv
b3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVy
YXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6dHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmg6CisgICAgICAgICogTW9kdWxl
cy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxIZWFkZXJN
YXApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hIZWFkZXJzOjpJdGVyYXRvcjo6bmV4dCk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
U3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAqIE1vZHVs
ZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmg6CisgICAgICAg
ICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rp
dmVET01PYmplY3Q6OmNhbGxGdW5jdGlvbk9uT3JpZ2luVGhyZWFkKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9P
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb09wZW5LZXlDdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRvR2V0QWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4Ojpkb0dldEFsbEtleXMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvT3BlbkN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9PcGVuS2V5Q3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0RlbGV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6ZG9HZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmRvR2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djFSZWNvcmRz
VGFibGVTY2hlbWEpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2MVJlY29yZHNUYWJs
ZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYyUmVjb3Jk
c1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djJSZWNvcmRzVGFi
bGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2MUluZGV4
UmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djFJbmRl
eFJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OnYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjp2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlOjpsb2dnZXJQdHIgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNvbnRy
b2xsZXI6OmFkZERldmljZUNoYW5nZU9ic2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpleGlzdGluZ1Ry
YW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
c2hvdyk6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNlOjpyZXRyeSk6CisgICAgICAg
ICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlB1c2hTdWJzY3JpcHRpb246OnRvSlNPTiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9w
dXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSlNPTi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxl
U3RyZWFtU291cmNlOjpwdWxsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXplQXVkaW9QYXJhbWV0
ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPZmZsaW5lQXVkaW9Db250ZXh0OjpmaW5pc2hlZFJlbmRlcmluZyk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OnNlbmRGcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTb3VyY2VB
cnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0QWNjZXNzaWJsZU9i
amVjdEZyb21Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk6OmFwcGVuZENo
aWxkcmVuVG9BcnJheSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cmVtb3ZlQ2hp
bGRTY3JvbGxiYXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGUuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldEluZGV4SW5QYXJlbnQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNw
cDoKKyAgICAgICAgKG51bWJlck9mUmVwbGFjZWRFbGVtZW50c0JlZm9yZU9mZnNldCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAg
ICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFRpbWVsaW5lOjphbmltYXRpb25DYW5CZVJlbW92ZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL0lETFR5cGVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5Lmg6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6aW52b2tlQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjppbnZva2VDYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Y2Fj
aGVkUHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5oOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6Q29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKToKKyAgICAgICAg
KiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6
Zm9yRWFjaCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNE
ZWJ1Z2dpbmcuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQ29tYmluZXI6OmNvbWJp
bmVERkFzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5oOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmg6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oOgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL1Rlcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJt
OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hPcGVyYXRpb25JbldvcmtR
dWV1ZSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oOgorICAgICAgICAqIGNy
eXB0by9rZXlzL0NyeXB0b0tleVJTQS5oOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6dHJhdmVyc2VTdWJy
ZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAg
ICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlckltYWdlVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzIGNvbnN0KToKKyAgICAgICAg
KiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OnRyYXZl
cnNlU3VicmVzb3VyY2VzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvQ1NT
SW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjp0
cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFs
dWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6CisgICAgICAgICog
Y3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzIGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6dHJhdmVyc2VTdWJyZXNvdXJjZXMgY29uc3Qp
OgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6dHJhdmVyc2VT
dWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAg
ICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRy
YXZlcnNlUnVsZXNJblZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVu
dHM6OnRyYXZlcnNlUnVsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENv
bnRlbnRzOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6CisgICAgICAgICogY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAgICAgICAgKiBj
c3MvbWFrZXZhbHVlcy5wbDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRo
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybVRyYW5zbGF0ZUFyZ3VtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybUFuZ2xlQXJndW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VUcmFuc2Zvcm1OdW1iZXJBcmd1bWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6dHJhbnNmb3JtQ2FuTGlrZWx5VXNlRmFzdFBhdGgpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNBcHBsZUxl
Z2FjeUNzc1ZhbHVlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NWYWx1ZUtleXdvcmRJ
RCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRm9udEZh
bWlseVJhdyk6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OnJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNo
ZWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6cXVlcnlTZWxlY3Rv
clNpbXBsZVNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBp
bGVyOjpydWxlQ29sbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpxdWVyeVNlbGVjdG9yU2VsZWN0b3JD
aGVja2VyV2l0aENoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NDb2xvclNjaGVtZVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6bWF0Y2hpbmdBbmltYXRpb25zKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBk
b20vSW5saW5lU3R5bGVTaGVldE93bmVyLmg6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6U2NyaXB0RWxlbWVudCk6Cisg
ICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzazo6VGFzayk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6c3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJHZXN0
dXJlVG9rZW46OmFkZERlc3RydWN0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9WaWV3cG9y
dEFyZ3VtZW50cy5jcHA6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0QWN0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3Rh
cnQpOgorICAgICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldFNtYXJ0U2V0KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpwYXJzZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5o
OgorICAgICAgICAqIGVkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVTdWJyZXNvdXJjZVVS
TEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXApOgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmg6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBc3luY0ZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
RmlsZVN0cmVhbTo6cmVhZCk6CisgICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoK
KyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6bGFz
dE1vZGlmaWVkIGNvbnN0KToKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0
cnkuY3BwOgorICAgICAgICAqIGh0bWwvQXV0b2ZpbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9ET01Ub2tlbkxpc3QuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6SFRNTEltYWdlRWxlbWVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6Cisg
ICAgICAgICogaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNsb3RFbGVtZW50Ojphc3NpZ25lZE5vZGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTbG90RWxlbWVudDo6YXNzaWduZWRFbGVtZW50cyBjb25zdCk6CisgICAgICAgICogaHRtbC9M
aW5rSWNvblR5cGUuaDoKKyAgICAgICAgKiBodG1sL1N1Ym1pdEV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN1Ym1pdEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNo
UGFyYW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNo
UGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6SXRlcmF0b3I6Om5leHQpOgorICAgICAg
ICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxTZWFyY2hQ
YXJhbXM6OnBhaXJzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xPYmpl
Y3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFF1ZXJ5Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJidWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVu
c3VyZU5vdE51bGwgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMU2hhcmVkT2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRl
eEFycmF5T2JqZWN0QmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUzo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb3JlaWduQXR0cmlidXRlc01hcCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvUGFyc2luZ1V0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6c2tpcEV4YWN0bHlJZ25vcmluZ0FTQ0lJQ2FzZSk6CisgICAgICAgICogaHRtbC90cmFjay9W
VFRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFNjYW5uZXI6OnNjYW4pOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUU2Nhbm5lcjo6c2NhblJ1bik6CisgICAgICAgICogaHRtbC90cmFj
ay9XZWJWVFRUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXF1YWxMaXRlcmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFRva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0RP
TVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6Omlu
bmVyUGF0Y2hDaGlsZHJlbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aGFzVHJhaWxpbmdUZXh0Q29udGVudCk6Cisg
ICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnZpc3VhbGx5Q29sbGFwc2VIYW5naW5n
T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRUZXh0Q29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFkZFRyYWlsaW5nSHlwaGVu
KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppbml0
aWFsaXplKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
R3JpZC5oOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpkaXN0cmlidXRlQXZhaWxhYmxl
U3BhY2UpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2lj
YWxPcmRlclRyYXZlcnNhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6
bWFrZVRleHRMb2dpY2FsT3JkZXJDYWNoZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yOjptYWtlTGluZUxvZ2ljYWxPcmRlckNhY2hlKToKKyAgICAgICAgKiBsYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Y2FuVXNlRm9yTGluZUxheW91dFdpdGhSZWFzb24p
OgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmg6CisgICAgICAg
ICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNv
bnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhcik6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzSGFkUmVjZW50VXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNo
ZTo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvbkZhaWxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6Zm9yRWFjaFJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeUNhY2hlOjpmb3JFYWNoU2Vzc2lvblJlc291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oOgorICAgICAgICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMuaDoKKyAgICAg
ICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRyYWNrRGlzcGxheU5hbWUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNob3dTaGFyZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2hvd0NvbnRhY3RQaWNrZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzcyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZSk6CisgICAgICAgICogcGFnZS9G
cmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphcHBseVJlY3Vyc2l2
ZWx5V2l0aFZpc2libGVSZWN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAg
ICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1BhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Zm9yRWFjaFBhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRv
QWZ0ZXJVcGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6d2hlblVubmVz
dGVkKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJDYXB0
dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNvbnRy
b2xsZXI6OmRpc3BhdGNoRXZlbnRGb3JUb3VjaEF0SW5kZXgpOgorICAgICAgICAqIHBhZ2UvUG9p
bnRlckNhcHR1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhy
ZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6OndhaXRVbnRp
bE9ic2VydmVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjp0aHJl
YWRCb2R5KToKKyAgICAgICAgKiBwYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU3VzcGVuZGFi
bGVUaW1lci5oOgorICAgICAgICAqIHBhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5o
OgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25p
dG9yaW5nKToKKyAgICAgICAgKiBwYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oOgorICAgICAg
ICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc0Zl
YXR1cmVzU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1cmVzLmg6CisgICAgICAg
ICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2NyaXB0VVJMcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lRXZlbnRIYW5k
bGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93Tm9uUGFyc2VySW5zZXJ0ZWRTY3JpcHRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTY3JpcHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGcmFtZUFuY2Vz
dG9ycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93UGx1Z2luVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93T2JqZWN0RnJvbVNvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1Jlc291cmNlRnJv
bVNvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93Q29ubmVjdFRvU291cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsb3dCYXNlVVJJIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6bG9nVG9Db25zb2xlIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VGhyZWFkOjpTY3JvbGxpbmdUaHJlYWQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOaWNvc2lhOjpz
Y3JvbGxpbmdOb2RlRm9yUG9pbnQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0
ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhOjpzdGFydEFuaW1hdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9BYm9ydGFibGVUYXNrUXVldWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9DUFVNb25pdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRv
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUE9ESW50
ZXJ2YWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJ
bml0aWFsVmVsb2NpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVu
dHVtLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZVRpbWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZFRpbWVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vVGltZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyOjpzY2hlZHVsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaW1lcjo6VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
YWJsZU9uZVNob3RUaW1lcjo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcik6CisgICAgICAgICogcGxh
dGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2Nv
YS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVh
ZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6aGFu
ZGxlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklP
Uy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0hhcmR3YXJlTGlzdGVuZXJN
YWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0ZXJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6d2Fp
dEZvclByZXBhcmVkRm9ySW5saW5lVGhlbik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlOjpzZXRM
b2dnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpzZXRMb2dnZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVByaXZhdGU6OnNldExvZ2dlcik6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5U3RvcmU6
OmNvbnRhaW5zS2V5SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6S2V5U3RvcmU6OmFkZCk6
CisgICAgICAgIChXZWJDb3JlOjpLZXlTdG9yZTo6dW5yZWYpOgorICAgICAgICAqIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
UmVzdHJpY3Rpb25zOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvR2FtZXBh
ZENvbnN0YW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFuZGFyZEdhbWVwYWRNYXBwaW5n
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
dHJhdmVyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaDoKKyAgICAgICAg
KEdDR0xTcGFuPEdDR0x2b2lkPjo6R0NHTFNwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRF
bmNvZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllckVudW1zLmg6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU+Ojp0b1N0cmluZyk6CisgICAgICAgIChX
VEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZT46
OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5Pjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6c3Ry
b2tlQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxh
eWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNh
bXBsZXNGcm9tVHJhY2tCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5o
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6c2Vla0NvbXBsZXRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok5v
dGlmaWNhdGlvbjo6RnVuY3Rpb248dm9pZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6V1RGOjpGdW5jdGlvbjx2b2lkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckNHQmFja2VuZDo6Y3JlYXRlRmx1c2hlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VD
YWNoZVdpdGhUaW1lcjo6U3ViaW1hZ2VDYWNoZUhhc2g6Omhhc2gpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29h
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5Q29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkVibWwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmxvZ2dlclB0ciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpkZXNjcmlwdGlvbiBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFjY2VsZXJhdGVCb3hCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3Np
YW5CbHVyOjpwbGF0Zm9ybUFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6cGxhdGZv
cm1BcHBseUdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVM
aWdodGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2ltcGxlQnVzTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNDb2RlY1N1
cHBvcnRlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NYWluVGhyZWFkTm90aWZpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkdT
dHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZWRpYVBsYXllckVuY29kaW5nQ29u
ZmlndXJhdGlvbkdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlHU3RyZWFtZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eVRo
dW5kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2Vi
S2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAgICAgIChjb25z
dHJ1Y3RlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6YXBwc3Jj
RW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxp
bmU6OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kUGlwZWxpbmU6
OmhhbmRsZUFwcHNpbmtOZXdTYW1wbGVGcm9tU3RyZWFtaW5nVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckNvbnRleHRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRocmVhZFNwZWNpZmlj
QXR0cmlidXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6ZHJvcEN1cnJlbnRCdWZmZXJXaGlsZVByZXNlcnZpbmdU
ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0
MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3V2l0aFNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd1dpdGhvdXRTaGFkb3cpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Omhhc2ggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OlBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dERpcmVj
dDJEOjpQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1NoYXJlZEdESU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR0RJT2Jq
ZWN0OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmZhbGxiYWNrQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvR3RrVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndhbGxUaW1lRm9yRXZlbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzY3JlZW5EUElPYnNlcnZlckhhbmRsZXJzTWFwKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9Qb3dlck9ic2VydmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvd2VyT2JzZXJ2ZXI6
OlBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFj
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbDo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6YXVkaW9TYW1w
bGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Ry
aW5nQ29uc3RyYWludDo6ZmluZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVRyYWNr
Q29uc3RyYWludFNldE1hcDo6Zm9yRWFjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDo6ZmlsdGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29uc3RyYWludHM6OmlzQ29uc3RyYWludFNldCk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJp
Y0NvbnN0cmFpbnQ6OmZpbmQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0
ZUNhcHR1cmVEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckRpc3BsYXlDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlRGlzcGxheUNhcHR1cmVTb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVhbVRyYWNrQXVkaW9Tb3VyY2VQcm92
aWRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlv
U291cmNlUHJvdmlkZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svR2VvbG9jYXRp
b25DbGllbnRNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5TW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFy
c0NvbnRyb2xsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcnNDb250cm9s
bGVyTW9jazo6U2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVQYXRo
c09yRGF0YUJ1ZmZlcnNUb0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ29va2ll
U3RvcmFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNraXBXaGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpza2lwQ2hhcmFjdGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjphZGRMaXN0ZW5lcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvb2tpZUNoYW5nZUNhbGxiYWNrTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9D
b29raWVTdG9yYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNldENvb2tp
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVN0b3JhZ2VDdXJsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llVXRpbDo6ZG9tYWluTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2ll
VXRpbDo6cGFyc2VFeHBpcmVzTVMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFy
c2VDb29raWVBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hl
ZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dFNjaGVkdWxlcjo6ZXhlY3V0ZVRhc2tzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtOjpDdXJsU3Ry
ZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybFN0cmVhbVNjaGVkdWxlcjo6Y2FsbENsaWVudE9uTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpleGVjdXRlVGFza3MpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVzdHJveUNvbGxhdGlvbkZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxDb2xsYXRpb25GdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6c2V0Q29sbGF0aW9uRnVuY3Rpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNTaW5n
bGVCeXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJF
bmNoYW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJI
eXBoZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGFzdEh5cGhlbkxvY2F0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s6Omxhc3RPdmVyZmxvd1Njcm9sbFByb3h5Tm9k
ZUlEIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OmFkZENsaWVudEZvclRhcmdldCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5j
cHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6ZW5zdXJlUmVmZXJlbmNlZFNWR1Jlc291cmNlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckl0ZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3dMYXllclRyZWUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPdmVyZmxvdy5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6CisgICAgICAgICogc3R5bGUvUnVsZUZl
YXR1cmUuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmg6CisgICAgICAgICog
c3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVVcGRhdGUu
aDoKKyAgICAgICAgKiB0ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwZUNvbnZlcnNpb25zOjp0ZXN0TG9uZ1JlY29yZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBlQ29udmVyc2lvbnM6OnNldFRlc3RMb25nUmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OlR5cGVDb252ZXJzaW9uczo6dGVzdE5vZGVSZWNvcmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VHlwZUNvbnZlcnNpb25zOjpzZXRUZXN0Tm9kZVJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBlQ29udmVyc2lvbnM6OnRlc3RTZXF1ZW5jZVJlY29yZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpUeXBlQ29udmVyc2lvbnM6OnNldFRlc3RTZXF1ZW5jZVJlY29yZCk6CisgICAg
ICAgICogdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBv
cnQ6OnNldE1vY2tHYW1lcGFkRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6
OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyk6CisgICAgICAgICog
dGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ck9yV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRU
aHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJP
cldvcmtsZXRUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xl
dFRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjp0aHJl
YWQgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpydW5Jbk1vZGUpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuZGFibGVFdmVudDo6d2hlbkFsbEV4dGVuZExpZmV0aW1l
UHJvbWlzZXNBcmVTZXR0bGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJs
ZUV2ZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaFRvQ29udGV4dFRocmVhZElmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaDoK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJl
c29sdmVkV2l0aFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdv
cmtlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmZvckVhY2hDbGllbnRGb3JPcmlnaW4pOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXJKb2JRdWV1ZTo6cmVtb3ZlQWxsSm9ic01hdGNoaW5nKToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpmb3JFYWNoQ29ubmVjdGlvbik6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oOgorCiAyMDIxLTEw
LTI0ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBS
RUdSRVNTSU9OKHIyODQ2NzApOiBUZW50YXRpdmUgTFRTIGJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKaW5kZXggZjdhY2IzYjE2NzQ3MjdjYTdiMWM3YjYzYWE4OTVlNTk4NTUyNjc4ZS4uNTNkMzU2
ODEzYWM4YTI4YmNkZWUwYTIxOTFkMDc4YzljYzlkOWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMjQgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVq
aWlAc29ueS5jb20+CisKKyAgICAgICAgW1dlYkNvcmVdIFJlbW92ZSB1bm5lZWRlZCBXVEY6OiBu
YW1lc3BhY2UgcHJlZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzIyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAgICAgICAgKFBBTDo6SHlzdGVy
ZXNpc0FjdGl2aXR5OjpIeXN0ZXJlc2lzQWN0aXZpdHkpOgorICAgICAgICAqIHBhbC9Mb2dnaW5n
LmNwcDoKKyAgICAgICAgKFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjayk6CisgICAgICAgICog
cGFsL0xvZ2dpbmcuaDoKKwogMjAyMS0xMC0yMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBVbmlmeSBzcGVlY2ggc3ludGhlc2l6ZXIgcGxhdGZv
cm0gdXNhZ2UgZm9yIE1hYy9pT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uRXJyb3IuaAppbmRleCAxZDY0ZTg1Y2IyZGNmNThiYzFj
NTYwMGY3YTkyYTQyYzMzNGI1Zjc5Li40OGI0Mzc4YWVhYTFhYjY1YWY4OGUzNTFkMGVjNWUxNzNi
M2FlMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2Vzc2lvbkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNlc3Npb25FcnJvci5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBBcHBsZVBheVNlc3Npb25FcnJvciB7Ci0gICAgdXNpbmcgSW5mb1JlY29y
ZCA9IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+OworICAgIHVzaW5n
IEluZm9SZWNvcmQgPSBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj47CiAgICAg
U3RyaW5nIGNvZGU7CiAgICAgSW5mb1JlY29yZCBpbmZvOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCBl
NmYwMTBlZmI1NWRhYjhlYzNjZWNlMzY3NGIyODhmZjcxYTUwOGY1Li42MWQ0M2YzOTg5NzdmODk1
YTJjNDcwMzllMzhjYmFkMDQzMTk5ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IGJvb2wgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5NYWtlUGF5bWVudHMoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Y2Fu
TWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIG1lcmNoYW50SWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dp
dGhBY3RpdmVDYXJkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgbV9jbGllbnQuY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQobWVyY2hhbnRJZGVudGlm
aWVyLCBkb2N1bWVudC5kb21haW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGRvY3VtZW50ID0gV2Vha1B0ciB7IGRvY3VtZW50IH0sIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgY2FuTWFrZVBheW1lbnRzKSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMpCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUGF5bWVudENvb3JkaW5h
dG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0CiAgICAgfSk7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNl
dHVwKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIs
IFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGF5
bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUEFZTUVOVF9DT09SRElOQVRPUl9SRUxFQVNFX0xPRygi
b3BlblBheW1lbnRTZXR1cCgpIik7CiAgICAgbV9jbGllbnQub3BlblBheW1lbnRTZXR1cChtZXJj
aGFudElkZW50aWZpZXIsIGRvY3VtZW50LmRvbWFpbigpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29vcmRpbmF0b3IuaAppbmRleCA5YmZmZDRjMGQ5MjhjMDg4MmJmYWU5ZGI4YTUxNmFlNTc0NjAz
ZjQ3Li4yNjdiNTg2ZWUwNTBlZjJhYTcwODRmM2JiMDJhZTlkNzJkZDk4ZjgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgK
QEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBwb3J0c1ZlcnNpb24oRG9j
dW1lbnQmLCB1bnNpZ25lZCB2ZXJzaW9uKSBjb25zdDsKICAgICBib29sIGNhbk1ha2VQYXltZW50
cyhEb2N1bWVudCYpOwotICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRG9j
dW1lbnQmLCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIG9wZW5QYXltZW50U2V0
dXAoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGNhbk1ha2VQ
YXltZW50c1dpdGhBY3RpdmVDYXJkKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAg
IHZvaWQgb3BlblBheW1lbnRTZXR1cChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJ
ZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAog
ICAgIGJvb2wgaGFzQWN0aXZlU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU2Vzc2lv
bjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1l
bnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oCmluZGV4
IGQ0YWVhZjY2YTRlYjhiZWM3MjE0OGViMTVlN2I4MmQyNWFlMTQwNTMuLjdiZmVjZmU5NTVlMDhj
NTlhN2M4YjJkOGVjNDE4OTM3YTlhM2RlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlQYXltZW50SGFuZGxlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gY29udmVydERhdGEoSlNDOjpKU1ZhbHVlKSBmaW5hbDsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzaG93KERvY3VtZW50JikgZmluYWw7CiAgICAgdm9pZCBoaWRlKCkgZmluYWw7
Ci0gICAgdm9pZCBjYW5NYWtlUGF5bWVudChEb2N1bWVudCYsIFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCBjYW5NYWtlUGF5bWVu
dChEb2N1bWVudCYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0
OjpVcGRhdGVSZWFzb24sIFN0cmluZyYmIGVycm9yLCBBZGRyZXNzRXJyb3JzJiYsIFBheWVyRXJy
b3JGaWVsZHMmJiwgSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykgZmluYWw7CiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gbWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVkKEpTQzo6SlNW
YWx1ZSYmKSBmaW5hbDsKICAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5bWVudENv
bXBsZXRlPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oCmluZGV4IDEwM2RkYzBjMGFjYWFkYzZmMmM2YjFjMTE0OThjOTZhNmYzZTQ5MjAuLmQ4
YTRiM2FmMTJmMWE3OTIzZDg4NzA1ZDViOTU4MWQzNmYxMDI3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxDRE0+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKTsKICAgICB+Q0RNKCk7CiAKLSAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9u
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxNZWRpYUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24+KT47CisgICAgdXNpbmcgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxi
YWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4pPjsKICAgICB2b2lkIGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgU3VwcG9ydGVkQ29uZmln
dXJhdGlvbkNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogICAg
IENETShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIAogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotICAgIFJlZjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmPExv
Z2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlm
CiAgICAgU3RyaW5nIG1fa2V5U3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggODIxNzkwMzg1N2Vi
ODIxNGEwMjlkMzM1ZGY4Yjg5ODQ0NmE0NDIwNy4uM2Q5NmY4ODAyZTc0Nzg0MWM0ZWZkYTgxZGNi
OTQxZWE2ZTRhNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0xMTksMTIgKzExOSwxMiBAQCBwcml2
YXRlOgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLy8gTG9nZ2VySGVscGVyCi0g
ICAgY29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9
CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQog
ICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJNZWRpYUtleVNl
c3Npb24iOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OwogICAgIGNv
bnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7
IH0KIAotICAgIFJlZjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmPExvZ2dlcj4gbV9s
b2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKaW5kZXggMzY5ZjFmY2NhNDIyOTAxZTZiNGFmYmI4OTk2MDViYmY1N2M4
ZDExNi4uNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3OTdhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJh
dG9yOjpJdGVyYXRvcihNZWRpYUtleVN0YXR1c01hcCYgbWFwKQogewogfQogCi1zdGQ6Om9wdGlv
bmFsPFdURjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5
U3RhdHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9u
YWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVz
Pj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkKIHsKICAgICBpZiAoIW1fbWFw
LT5tX3Nlc3Npb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMDQsNyArMTA0
LDcgQEAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlh
bnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGkKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNl
c1ttX2luZGV4KytdOwogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWly
LmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7Ci0gICAgcmV0dXJuIFdURjo6S2V5
VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJl
ZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKKyAgICBy
ZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3Rh
dHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQg
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCmluZGV4IDhm
ZmQ0Y2Y3ZDlmYmE5ZWE0Y2M1NGZlYzY4MTI3NjcyMzYxZWFlMGEuLmMyMTExMTNhMmM2ZGFjNzk3
OTI0YTk5ZDJkMmRmOTdjMmU2NWY4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IGV4cGxpY2l0IEl0ZXJhdG9yKE1lZGlhS2V5U3RhdHVzTWFwJik7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFL
ZXlTdGF0dXM+PiBuZXh0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1
ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gbmV4dCgpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVmPE1lZGlhS2V5U3RhdHVzTWFwPiBtX21hcDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IDJm
MzEzNWZkMzRiMzJiZDc4ZmJmNjM3M2EzZjZhYTJlMDgxNGY0NzkuLjdiNTlhM2JjNmQyMjU2ZmM2
NTZmMDhjYmYyNjg5MTg1MTA5ODNhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtODksNyArODksNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0
cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECi0gICAgY29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bG9nZ2VyOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xv
Z2dlcjsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2xvZ0lkZW50aWZpZXI7IH0KICNlbmRpZgogCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVjdGVk
OgogICAgIFdlYWtIYXNoU2V0PENETUNsaWVudD4gbV9jZG1DbGllbnRzOwogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECi0gICAgUmVmPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWY8
TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAgICAg
bXV0YWJsZSB1aW50NjRfdCBtX2NoaWxkSWRlbnRpZmllclNlZWQgeyAwIH07CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9y
RU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9y
RU1FLmNwcAppbmRleCA2MzdkNDM1MjA1NTg2NzBjZjU0ODQ1MDFmNjRjYzUyNWI3OWMxY2NhLi45
NWRmZjkwYmRjN2YyNzMzYzBmM2QxZGM2NTg4NDYwMTI0OTNjNTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCkBA
IC04MCwxMyArODAsMTMgQEAgaW5saW5lIHZvaWQgaW5mb0xvZyhMb2dnZXImIGxvZ2dlciwgY29u
c3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpCiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQgdHJ5
TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBsZW1lbnRhdGlvbiwg
VmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0
aW9ucywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiwgUmVmPExvZ2dlcj4mJiwgV1RGOjpMb2dn
ZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYpOworc3RhdGljIHZvaWQgdHJ5TmV4dFN1cHBvcnRlZENv
bmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgVmVjdG9yPE1lZGlhS2V5
U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucywgUmVmUHRyPERl
ZmVycmVkUHJvbWlzZT4mJiwgUmVmPExvZ2dlcj4mJiwgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmll
ciYmKTsKIAogdm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2VzcyhO
YXZpZ2F0b3ImIG5hdmlnYXRvciwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0ZWRD
b25maWd1cmF0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1uYXZpZ2F0b3ItcmVx
dWVzdG1lZGlha2V5c3lzdGVtYWNjZXNzCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5v
dmVtYmVyIDIwMTYKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlk
ZW50aWZpZXIoIk5hdmlnYXRvckVNRSIsIF9fZnVuY19fLCAmbmF2aWdhdG9yKTsKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJOYXZpZ2F0b3JFTUUiLCBf
X2Z1bmNfXywgJm5hdmlnYXRvcik7CiAgICAgUmVmPExvZ2dlcj4gbG9nZ2VyID0gZG9jdW1lbnQu
bG9nZ2VyKCk7CiAKICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgImtleVN5c3RlbSgi
LCBrZXlTeXN0ZW0sICIpLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucygiLCBzdXBwb3J0ZWRDb25m
aWd1cmF0aW9ucywgIikiKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIE5hdmlnYXRvckVNRTo6
cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKE5hdmlnYXRvciYgbmF2aWdhdG9yLCBEb2N1bWVu
dCYgZAogICAgIHJlcXVlc3QtPnN0YXJ0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHRyeU5leHRTdXBw
b3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFZlY3RvcjxN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+JiYgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMsIFJl
ZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVmPExvZ2dlcj4mJiBsb2dnZXIsIFdU
Rjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllciYmIGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCB0
cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVudGF0aW9u
LCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlZjxMb2dnZXI+JiYg
bG9nZ2VyLCBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKIHsKICAgICAv
LyA2LjMuIEZvciBlYWNoIHZhbHVlIGluIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zOgogICAgIGlm
ICghc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCmlu
ZGV4IGNmMjc2ZTUxZTFkNTFkNzE1ODdlNmU2ZjU2MWQ4ZjdmMDRhODU5YzMuLmIyZjJhZWQ3MzVl
OWVjZjljMTkxNmQzYjFhOTNmY2UzOTRlOTc5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCkBAIC0zOCw5
ICszOCw5IEBAIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIENETVByaXZhdGVJbnRlcmZhY2U7CiBj
bGFzcyBNZWRpYVBsYXllcjsKIAotdXNpbmcgQ3JlYXRlQ0RNID0gV1RGOjpGdW5jdGlvbjxzdGQ6
OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4oTGVnYWN5Q0RNKik+OwotdXNpbmcgQ0RN
U3VwcG9ydHNLZXlTeXN0ZW0gPSBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+Owot
dXNpbmcgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSA9IFdURjo6RnVuY3Rpb248Ym9v
bChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKT47Cit1c2luZyBDcmVhdGVDRE0gPSBGdW5j
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4oTGVnYWN5Q0RNKik+Owor
dXNpbmcgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gPSBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYp
PjsKK3VzaW5nIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgPSBGdW5jdGlvbjxib29s
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpPjsKIAogY2xhc3MgTGVnYWN5Q0RNQ2xpZW50
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9N
RmlsZVN5c3RlbS5oCmluZGV4IDM4MzZiODc3YTY3ZDZiZDRjMzk4Mjg5NTdkNWY1NDZhNDhmYjYz
NjYuLjU2NjcyY2FmM2M5NWNmODk4YzE4ZjI4MWJiODEyYzA4Y2Y1YjkyMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtNTMs
MTYgKzUzLDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWU7IH0KICAgICBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5PiByb290KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIHVzaW5nIERpcmVjdG9yeUxpc3RpbmdDYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0
ZW1FbnRyeT4+PiYmKT47CisgICAgdXNpbmcgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+PiYmKT47
CiAgICAgdm9pZCBsaXN0RGlyZWN0b3J5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnkmLCBEaXJlY3RvcnlMaXN0aW5nQ2FsbGJhY2smJik7CiAKLSAgICB1
c2luZyBHZXRQYXJlbnRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxS
ZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Pj4mJik+OworICAgIHVzaW5nIEdldFBhcmVudENh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5Pj4mJik+OwogICAgIHZvaWQgZ2V0UGFyZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBGaWxlU3lzdGVtRW50cnkmLCBHZXRQYXJlbnRDYWxsYmFjayYmKTsKIAotICAgIHVzaW5nIEdl
dEVudHJ5Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGVT
eXN0ZW1FbnRyeT4+JiYpPjsKKyAgICB1c2luZyBHZXRFbnRyeUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4mJik+OwogICAgIHZvaWQgZ2V0
RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYs
IGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCi0gICAgdXNpbmcgR2V0RmlsZUNhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlPj4mJik+OworICAg
IHVzaW5nIEdldEZpbGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZp
bGU+PiYmKT47CiAgICAgdm9pZCBnZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxl
U3lzdGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxiYWNrJiYpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeS5oCmluZGV4IDk4NGY1ZGFhYTE4Njk4OTNmNmIzYzIzNjBkYjA5ZGQwYTYz
ZDYxMzQuLjk3NjQ4YzRiMjg5ZjUyMzkxYzk2MTU3YWZhZTk2ZWFjYzcyMWYyMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bURpcmVjdG9yeUVudHJ5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dXNpbmcgRW50cnlNYXRjaGluZ0Z1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IEZp
bGVTeXN0ZW1FbnRyeSYpPjsKKyAgICB1c2luZyBFbnRyeU1hdGNoaW5nRnVuY3Rpb24gPSBGdW5j
dGlvbjxib29sKGNvbnN0IEZpbGVTeXN0ZW1FbnRyeSYpPjsKICAgICB2b2lkIGdldEVudHJ5KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZsYWdzJiBv
cHRpb25zLCBFbnRyeU1hdGNoaW5nRnVuY3Rpb24mJiwgUmVmUHRyPEZpbGVTeXN0ZW1FbnRyeUNh
bGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7CiAKICAgICBGaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERPTUZpbGVTeXN0ZW0mLCBjb25z
dCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmNwcAppbmRleCAyMDg0ZTAyZGRlMTYwN2M2MzVjYmQ3Y2M2NjhhNjFkYWZj
OGMzMGFjLi4wOTBmNWNmNGQwZmYxMTVkODRiZjczM2I3YTdiMTViMzRmMmUzYTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCkBAIC0xMDgsNyAr
MTA4LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGZpbGxIZWFkZXJNYXAoSFRUUEhlYWRl
ck1hcCYgaGVhZGVycywgY29uc3QgRmV0Y2hIZWFkZXIKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGF1dG8mIHJlY29yZCA9IHN0ZDo6Z2V0PFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJp
bmcsIFN0cmluZz4+PihoZWFkZXJzSW5pdCk7CisgICAgICAgIGF1dG8mIHJlY29yZCA9IHN0ZDo6
Z2V0PFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+Pj4oaGVhZGVyc0luaXQpOwog
ICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IHJlY29yZCkgewogICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBhcHBlbmRUb0hlYWRlck1hcChoZWFkZXIua2V5LCBoZWFkZXIudmFsdWUsIGhlYWRl
cnMsIGd1YXJkKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0y
MjIsMTMgKzIyMiwxMyBAQCB2b2lkIEZldGNoSGVhZGVyczo6ZmlsdGVyQW5kRmlsbChjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBHdWFyZCBndWFyZCkKICAgICB9CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBGZXRjaEhlYWRlcnM6Okl0
ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5n
Pj4gRmV0Y2hIZWFkZXJzOjpJdGVyYXRvcjo6bmV4dCgpCiB7CiAgICAgd2hpbGUgKG1fY3VycmVu
dEluZGV4IDwgbV9rZXlzLnNpemUoKSkgewogICAgICAgICBhdXRvIGtleSA9IG1fa2V5c1ttX2N1
cnJlbnRJbmRleCsrXTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1faGVhZGVycy0+bV9oZWFkZXJz
LmdldChrZXkpOwogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPiB7IFdURk1vdmUoa2V5KSwgV1RG
TW92ZSh2YWx1ZSkgfTsKKyAgICAgICAgICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8U3RyaW5nLCBT
dHJpbmc+IHsgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHZhbHVlKSB9OwogICAgIH0KICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hI
ZWFkZXJzLmgKaW5kZXggYzUwNTcwMDE1MmMzMTE1MTA3ZTU2OWU4Y2RlMDk2MzIyNzczNmI2OS4u
OGEyODEyYzBlNjdlNWNlNDIxN2U0MjUyYTRlNTY4MmRmNDZjNzM0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUmVzcG9uc2UKICAgICB9OwogCi0gICAgdXNpbmcgSW5pdCA9IHN0ZDo6dmFy
aWFudDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3Ry
aW5nLCBTdHJpbmc+Pj47CisgICAgdXNpbmcgSW5pdCA9IHN0ZDo6dmFyaWFudDxWZWN0b3I8VmVj
dG9yPFN0cmluZz4+LCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4+OwogICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0Y2hIZWFkZXJzPj4gY3JlYXRlKHN0ZDo6b3B0aW9u
YWw8SW5pdD4mJik7CiAKICAgICBzdGF0aWMgUmVmPEZldGNoSGVhZGVycz4gY3JlYXRlKEd1YXJk
IGd1YXJkID0gR3VhcmQ6Ok5vbmUsIEhUVFBIZWFkZXJNYXAmJiBoZWFkZXJzID0geyB9KSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IEZldGNoSGVhZGVycyB7IGd1YXJkLCBXVEZNb3ZlKGhlYWRlcnMp
IH0pOyB9CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvciB7CiAg
ICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5l
eHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+
PiBuZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBtX2hl
YWRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmlu
ZGV4IGEzNTg1YzczMzY0ODg3Y2EzNDhhMjNmMjNiYjNmZDVkZjk5ZDMyYzQuLmJjNTg1NGY5Yjk2
NmZiNjMyOWQxNmZkZTYxOGNjZWIxZDhjOTRjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsK
ICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiByZWRpcmVjdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGF0dXMpOwogCi0g
ICAgdXNpbmcgTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0
aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYpPjsKKyAgICB1c2luZyBOb3RpZmljYXRpb25DYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYpPjsKICAgICBz
dGF0aWMgdm9pZCBmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hSZXF1ZXN0Jiwg
Tm90aWZpY2F0aW9uQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHN0YXJ0Q29uc3VtaW5nU3RyZWFt
KHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmNwcAppbmRl
eCA2YmRjN2ZjNzQ0YWYyMzFkNjgxZTg3YTU4ZTI2ZmQ0Njc1MTU2NGYzLi41ZTcyZjZjOWJiZWZm
YWVlN2E1ZjY5YjkxMzM0YTRlNGQ0MzdhZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1EaXJl
Y3RvcnlIYW5kbGUuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBGaWxlU3lzdGVtRGlyZWN0
b3J5SGFuZGxlSXRlcmF0b3I6OmFkdmFuY2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b24KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlc3VsdCByZXN1bHRWYWx1ZSA9IFdU
Rjo6S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmPEZpbGVTeXN0ZW1IYW5kbGU+PiB7IFdURk1vdmUo
a2V5KSwgcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CisgICAgICAgIFJlc3VsdCByZXN1
bHRWYWx1ZSA9IEtleVZhbHVlUGFpcjxTdHJpbmcsIFJlZjxGaWxlU3lzdGVtSGFuZGxlPj4geyBX
VEZNb3ZlKGtleSksIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdFZhbHVlKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURp
cmVjdG9yeUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNz
L0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUuaAppbmRleCA2OGExZGVjMzYxMDNkYzg4YWI4OTQx
ZWIyMjE5ODk0YWRiMjA1OTFkLi44ODY5ZWE0NjcyMzIzM2RjMDllNDRkZGEyZTE4YzE5MzA1MWU0
ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmgKQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogICAgIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8Rmls
ZVN5c3RlbURpcmVjdG9yeUhhbmRsZTo6SXRlcmF0b3I+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBSZWY8SXRlcmF0b3I+IGNyZWF0ZShGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlJik7
Ci0gICAgICAgIHVzaW5nIFJlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBSZWY8RmlsZVN5c3RlbUhhbmRsZT4+PjsKKyAgICAgICAgdXNpbmcgUmVzdWx0ID0g
c3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWY8RmlsZVN5c3RlbUhhbmRsZT4+
PjsKICAgICAgICAgdm9pZCBuZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
UmVzdWx0PiYmKT4mJik7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgSXRlcmF0b3Io
RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dhbWVwYWQvR2FtZXBhZE1hbmFnZXIuaAppbmRleCA4MzQzN2RhMWJiZjM1MDZjOWIw
NGYzMzFiZDI3YjE3MDM2YTdhYWQ3Li4wMzhkMjhiMDEzMDdiOGU4YTk4YWU2OTAxNzEzNzc5NzI1
YjBiNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBh
ZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZE1h
bmFnZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIEdhbWVwYWRNYW5hZ2VyKCk7
CiAKICAgICB2b2lkIG1ha2VHYW1lcGFkVmlzaWJsZShQbGF0Zm9ybUdhbWVwYWQmLCBIYXNoU2V0
PE5hdmlnYXRvckdhbWVwYWQqPiYsIEhhc2hTZXQ8RE9NV2luZG93Kj4mKTsKLSAgICB2b2lkIGRp
c3BhdGNoR2FtZXBhZEV2ZW50KGNvbnN0IFdURjo6QXRvbVN0cmluZyYgZXZlbnROYW1lLCBQbGF0
Zm9ybUdhbWVwYWQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2FtZXBhZEV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50TmFtZSwgUGxhdGZvcm1HYW1lcGFkJik7CiAKICAgICB2b2lkIG1heWJlU3Rh
cnRNb25pdG9yaW5nR2FtZXBhZHMoKTsKICAgICB2b2lkIG1heWJlU3RvcE1vbml0b3JpbmdHYW1l
cGFkcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJB
Y3RpdmVET01PYmplY3QuaAppbmRleCBlYjY4NDA4ZGM0MWI1ZmFkMzI3YTI3Y2Q1YjAzYTUzMjIz
YTlkN2UwLi40NGRjMzQzNDg2YzQyZjYyZTVkYWEyNGQwOTNiYzE1NzY1ZjUyODliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmpl
Y3QuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnRleHQtPnBvc3RDcm9z
c1RocmVhZFRhc2sob2JqZWN0LCBtZXRob2QsIGFyZ3VtZW50cy4uLik7CiAgICAgfQogCi0gICAg
dm9pZCBjYWxsRnVuY3Rpb25Pbk9yaWdpblRocmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYg
ZnVuY3Rpb24pCisgICAgdm9pZCBjYWxsRnVuY3Rpb25Pbk9yaWdpblRocmVhZChGdW5jdGlvbjx2
b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgewogICAgICAgICBpZiAoY2FuQ3VycmVudFRocmVhZEFj
Y2Vzc1RocmVhZExvY2FsRGF0YShvcmlnaW5UaHJlYWQoKSkpIHsKICAgICAgICAgICAgIGZ1bmN0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDYyYTAwOTBkYTA2M2NiNjJhMDNhNTJkNjVhNzMw
NTdhZTJiMzcyNjMuLjZjMGIxYjRmMmFiMGMwMzMwNzY2NTRlYTRiMjc2NTU5NDQ1ODk1MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RydWN0IElEQkRhdGFiYXNlSWRl
bnRpZmllckhhc2ggewogICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gZmFsc2U7CiB9OwogCi1zdHJ1Y3QgSURCRGF0YWJhc2VJZGVudGlmaWVySGFz
aFRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPElEQkRhdGFiYXNlSWRlbnRpZmll
cj4geworc3RydWN0IElEQkRhdGFiYXNlSWRlbnRpZmllckhhc2hUcmFpdHMgOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8SURCRGF0YWJhc2VJZGVudGlmaWVyPiB7CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBib29s
IGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpbmZvKSB7IHJldHVybiBpbmZvLmlzRW1wdHko
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmlu
ZGV4IGY5NmRiNzQ2YjkyYWE2NTU4NjlkODVjZmJkNTc3MTdiYWE5MzEzNGMuLjE2N2QzODA0ZWY5
MGQwNzE3NzE4ZTNkMTlkZTAyODcxZWJiOWViZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIElEQklu
ZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9uQ2hhbmdlQWJvcnQoKQogICAgIG1fZGVsZXRlZCA9
IGZhbHNlOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb09w
ZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNl
cHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+
JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVuQ3Vyc29y
Iik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9v
YmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAg
LTE4Nyw3ICsxODcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpv
cGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVgogICAgIH0pOwogfQogCi1F
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb09wZW5LZXlDdXJzb3IoSURC
Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQ
dHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJJbmRleDo6ZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rp
b24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yIik7CiAg
ICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9vYmplY3RT
dG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTMzNyw3
ICszMzcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEtl
eShFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+IHJhbgogICAgIHJldHVybiB0cmFuc2FjdGlv
bi5yZXF1ZXN0R2V0S2V5KCp0aGlzLCBrZXlSYW5nZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYg
ZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFs
bChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVm
UHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCSW5kZXg6OmdldEFsbCIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhy
ZWFkTG9jYWxEYXRhKG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZCgpKSk7CkBAIC0zNzQsNyArMzc0LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJJbmRleDo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVmFsdWUK
ICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9H
ZXRBbGxLZXlzKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4
Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbEtleXMoc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+
KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXRBbGxL
ZXlzIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEo
bV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IDlmM2Zi
Y2FkOTY0NmFhYjJmMGM3OTgwZWNhM2E5NDVjN2YwMTQ3MGUuLjdmOGI2ODE5OTFiM2Y1YzA3OTI1
MjUxMDhlN2EwOWMxYTAyNjEyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguaApAQCAtODgsMTAgKzg4LDEwIEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBkb0NvdW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXQoRXhjZXB0aW9uT3I8SURCS2V5UmFu
Z2VEYXRhPik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEtleShFeGNl
cHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGRvT3BlbkN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0
aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgV1RGOjpGdW5j
dGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7Ci0gICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAm
Jik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbEtleXMoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRy
PElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
ZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVm
UHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9u
T3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZG9HZXRBbGwoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEZ1bmN0aW9u
PEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwog
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCAxZjA0YWMzYTUxYzE2ZTlhNDM0NjdlYTMx
MGQwMDNjZGQ5ZDg5YWNmLi5hMTAzMDkxZTU3ZWU2YjFhODY0YTdjOGIxYzhlNDhhZTAzZTEwZTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBJREJPYmplY3RTdG9yZTo6YXV0b0lu
Y3JlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5mby5hdXRvSW5jcmVtZW50KCk7CiB9CiAK
LUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvT3BlbkN1cnNv
cihJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9u
IGRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4m
JiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9wZW5D
dXJzb3IiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0
YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTE4Myw3ICsx
ODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpvcGVu
Q3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdAogICAgIH0pOwogfQogCi1FeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5LZXlDdXJzb3IoSURCQ3Vy
c29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8
SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6ZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiBkaXJl
Y3Rpb24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpvcGVuS2V5Q3Vy
c29yIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEo
bV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0zOTQsNyArMzk0
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRl
RnVuY3Rpb24oSURCS2V5UmFuZ2UqIGtleVJhbmcKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUoV1RGOjpGdW5jdGlvbjxF
eGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUoRnVuY3Rpb248RXhj
ZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uIik7CiAgICAgQVNTRVJU
KGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC02MDMsNyArNjAzLDcgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9Db3VudChjb25zdCBJREJLZXlSYW5n
ZURhdGEmIHJhbmcKICAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0Q291bnQoKnRoaXMs
IHJhbmdlKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9y
ZTo6ZG9HZXRBbGwoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248
RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50LCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFu
Z2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9y
ZTo6Z2V0QWxsIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2Nh
bERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC02NDAs
NyArNjQwLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEoKICAgICB9KTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9HZXRBbGxLZXlzKHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0
cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQk9iamVjdFN0b3JlOjpkb0dldEFsbEtleXMoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVu
Y3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlz
Iik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90
cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBkNjU0N2Y3ZjNi
YmExNjg2ZjlmZDczNTY2YTU5ODM4MWIyMDAzZjJkLi4zNmFiMzg0NTNiNmE1YjZmYTU2M2I4ZDc3
NzY1Mzc0ZjY1NzA3NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTExNiwxMSArMTE2LDExIEBAIHByaXZhdGU6CiAgICAg
ZW51bSBjbGFzcyBJbmxpbmVLZXlDaGVjayB7IFBlcmZvcm0sIERvTm90UGVyZm9ybSB9OwogICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gcHV0T3JBZGQoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPElEQktleT4sIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVP
dmVyd3JpdGVNb2RlLCBJbmxpbmVLZXlDaGVjaywgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiA9IG51bGxwdHIpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9Db3Vu
dChjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGRvRGVsZXRlKFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdl
Pj4oKT4gJiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29y
KElEQkN1cnNvckRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURC
S2V5UmFuZ2U+PigpPiYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3Bl
bktleUN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBkb0dldEFsbChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlv
bjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7Ci0gICAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbEtleXMoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4g
JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9EZWxldGUoRnVuY3Rpb248
RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgRnVuY3Rp
b248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJik7CisgICAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5LZXlDdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uLCBG
dW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50LCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7
CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbEtleXMoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlS
YW5nZT4+KCk+ICYmKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFy
KiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCmluZGV4IGIzZmZhNjFjYzM2NmJiMzczMzYxZDYyMzI0ZGJjNzUwMGEyNWVl
YWMuLjBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMDUsMTMgKzEwNSwxMyBAQCBzdGF0aWMgY29u
c3QgU3RyaW5nIHYxUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQog
CiBzdGF0aWMgY29uc3QgU3RyaW5nJiB2MVJlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2MVJlY29yZHNUYWJsZVNjaGVtYVN0cmlu
Zyh2MVJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiB2MVJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MVJlY29yZHNUYWJsZVNj
aGVtYSgiUmVjb3JkcyIpKTsKICAgICByZXR1cm4gdjFSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRl
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYxUmVjb3Jkc1Rh
YmxlU2NoZW1hU3RyaW5nKHYxUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJlY29yZHNcIiIpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MVJlY29yZHNUYWJsZVNjaGVtYVN0cmlu
Zyh2MVJlY29yZHNUYWJsZVNjaGVtYSgiXCJSZWNvcmRzXCIiKSk7CiAgICAgcmV0dXJuIHYxUmVj
b3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCkBAIC0xMjIsMTMgKzEyMiwxMyBAQCBzdGF0aWMg
Y29uc3QgU3RyaW5nIHYyUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
KQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiB2MlJlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2MlJlY29yZHNUYWJsZVNjaGVtYVN0
cmluZyh2MlJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiB2MlJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MlJlY29yZHNUYWJs
ZVNjaGVtYSgiUmVjb3JkcyIpKTsKICAgICByZXR1cm4gdjJSZWNvcmRzVGFibGVTY2hlbWFTdHJp
bmc7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYyUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJu
YXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYyUmVjb3Jk
c1RhYmxlU2NoZW1hU3RyaW5nKHYyUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJlY29yZHNcIiIpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MlJlY29yZHNUYWJsZVNjaGVtYVN0
cmluZyh2MlJlY29yZHNUYWJsZVNjaGVtYSgiXCJSZWNvcmRzXCIiKSk7CiAgICAgcmV0dXJuIHYy
UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCkBAIC0xNTQsMTMgKzE1NCwxMyBAQCBzdGF0
aWMgY29uc3QgU3RyaW5nIHYxSW5kZXhSZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0
YWJsZU5hbWUpCiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxSW5kZXhSZWNvcmRzVGFibGVTY2hl
bWEoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gdjFJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJbmRleFJl
Y29yZHMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdjFJbmRleFJlY29y
ZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJbmRleFJlY29y
ZHMiKSk7CiAgICAgcmV0dXJuIHYxSW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7CiB9CiAK
IHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxSW5kZXhSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUo
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gdjFJbmRleFJlY29y
ZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJcIkluZGV4UmVj
b3Jkc1wiIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHYxSW5kZXhSZWNv
cmRzVGFibGVTY2hlbWFTdHJpbmcodjFJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiXCJJbmRleFJl
Y29yZHNcIiIpKTsKICAgICByZXR1cm4gdjFJbmRleFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZzsK
IH0KIApAQCAtMTcxLDEzICsxNzEsMTMgQEAgc3RhdGljIGNvbnN0IFN0cmluZyB2MkluZGV4UmVj
b3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogCiBzdGF0aWMgY29uc3Qg
U3RyaW5nJiB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcodjJJ
bmRleFJlY29yZHNUYWJsZVNjaGVtYSgiSW5kZXhSZWNvcmRzIikpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcodjJJbmRl
eFJlY29yZHNUYWJsZVNjaGVtYSgiSW5kZXhSZWNvcmRzIikpOwogICAgIHJldHVybiB2MkluZGV4
UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiB2Mklu
ZGV4UmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8V1RGOjpTdHJpbmc+IHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcodjJJbmRl
eFJlY29yZHNUYWJsZVNjaGVtYSgiXCJJbmRleFJlY29yZHNcIiIpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYySW5k
ZXhSZWNvcmRzVGFibGVTY2hlbWEoIlwiSW5kZXhSZWNvcmRzXCIiKSk7CiAgICAgcmV0dXJuIHYy
SW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCmluZGV4IDU3ODI1YmQzZTlkYjNiMzA5Mjk0YjBiY2Y3YzVjNDljMGNkZGNjMjUuLjJiMWVh
ZGI5ZWE1YzQ2NGQwMjc1ZWQyMjNmNTAwM2I3YmVmMTU3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcApAQCAtNzIzLDcgKzcyMyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9y
QWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAgICAg
Ym9vbCB1c2VkS2V5SXNHZW5lcmF0ZWQgPSBmYWxzZTsKICAgICB1aW50NjRfdCBrZXlOdW1iZXI7
CiAgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKTsKLSAgICBhdXRvIGdlbmVyYXRlZEtleVJlc2V0dGVyID0gV1RGOjptYWtl
U2NvcGVFeGl0KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgJmtleU51bWJlciwgJnVzZWRLZXlJc0dlbmVyYXRlZF0oKSB7CisgICAgYXV0byBnZW5l
cmF0ZWRLZXlSZXNldHRlciA9IG1ha2VTY29wZUV4aXQoW3RoaXMsIHRyYW5zYWN0aW9uSWRlbnRp
Zmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCAma2V5TnVtYmVyLCAmdXNlZEtleUlzR2VuZXJh
dGVkXSgpIHsKICAgICAgICAgaWYgKHVzZWRLZXlJc0dlbmVyYXRlZCkKICAgICAgICAgICAgIG1f
YmFja2luZ1N0b3JlLT5yZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIodHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcApp
bmRleCBmYWU4ZTMzMGM1YmFkYmY2MTE4ODI0OGI1YThkNGJkYjlkNTQ4ZGMwLi4zOWNjYzE0ZTIx
YjhmN2FhNjY4MjM5NWZmYzEwZjJjYzgwZGE2ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTY2LDcgKzY2LDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpCiBzdGF0aWMgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRp
YVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikKIHsKICAgICBzdGF0aWMg
Y29uc3QgYXV0byBjb21tYW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAg
dXNpbmcgQWN0aW9uVG9Db21tYW5kTWFwID0gSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6SW50SGFz
aDxNZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vz
c2lvbkFjdGlvbj4+OworICAgICAgICB1c2luZyBBY3Rpb25Ub0NvbW1hbmRNYXAgPSBIYXNoTWFw
PE1lZGlhU2Vzc2lvbkFjdGlvbiwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZSwgSW50SGFzaDxNZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+OwogCiAgICAgICAgIHJldHVybiBBY3Rpb25U
b0NvbW1hbmRNYXAgewogICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlBsYXksIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAppbmRleCBhMWRlN2NkMzE1MDAw
ZTMwOGE0ZjQ4ODU0MTgwMTIxYWE0MWZlYmEzLi5mYjFiMjEwZDA4YmZmMzYwYzA0MGRhZjhlNDA1
ZDc2MjljZjUwYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYVNlc3Npb24uaApAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpvcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+IG1fcG9zaXRpb25TdGF0ZTsKICAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gbV9sYXN0UmVwb3J0ZWRQb3NpdGlvbjsKICAgICBNb25vdG9uaWNU
aW1lIG1fdGltZUF0TGFzdFBvc2l0aW9uVXBkYXRlOwotICAgIEhhc2hNYXA8TWVkaWFTZXNzaW9u
QWN0aW9uLCBSZWZQdHI8TWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj4sIFdURjo6SW50SGFzaDxN
ZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lv
bkFjdGlvbj4+IG1fYWN0aW9uSGFuZGxlcnM7CisgICAgSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rp
b24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiwgSW50SGFzaDxNZWRpYVNlc3Np
b25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+
IG1fYWN0aW9uSGFuZGxlcnM7CiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAg
ICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZS5oCmluZGV4IDM3Yzk5ZDdlOGY3MDA2N2FkYjFjNjE3MDhhNjkwZTljMWVl
NjcyMmMuLjA2NzFlZjk5MGVjZGQ0OTQwMTFhYWY5MGViODM4YjNjMWQ2MWM5NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oCkBAIC03MSwxOSArNzEsMTkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0YXRlQ2hhbmdlZChNZWRpYVNlc3Npb25Q
bGF5YmFja1N0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYWNrSWRlbnRpZmllckNoYW5n
ZWQoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgV1RGOjpM
b2dnZXImLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwg
Y29uc3Qgdm9pZCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxNZWRpYVNl
c3Npb25Db29yZGluYXRvckNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50O30KIAog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZSgp
ID0gZGVmYXVsdDsKIAotICAgIGNvbnN0IFdURjo6TG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7
IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IExvZ2dlciogbG9nZ2VyUHRyKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAKICAgICBXZWFrUHRy
PE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50PiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBt
X2NsaWVudDsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9s
b2dnZXI7CisgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JD
bGllbnQ+IG1fY2xpZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDEzMTcxMTljM2E3NjdiYzZm
ZDkzNzg1MjBjMzgxZmNjNzFiNzVlMzkuLjdiYzIxZTU2YWVjYzY1MWFkODg3MGUxNGY1YjdjNTc1
YjQxYTE4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBNZWRp
YUNvbnN0cmFpbnRzIGNyZWF0ZU1lZGlhQ29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxN
ZWRpYVRyYWNrQ29uCiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhj
b25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50cz4mIGNvbnN0cmFpbnRzLCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewotICAgIG1fcHJvbWlzZSA9IFdU
Rjo6bWFrZVVuaXF1ZTxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+KFdURk1vdmUocHJvbWlzZSkp
OworICAgIG1fcHJvbWlzZSA9IG1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihX
VEZNb3ZlKHByb21pc2UpKTsKIAogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnN0cmFpbnRzXShhdXRvJiYgZXJyb3Ip
IG11dGFibGUgewogICAgICAgICBpZiAoIW1fcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5kZXggN2VlZDU3
Yzk3ZjRlMjFhMzU0ZWNmYzBmYjQ2MWZhZDQ5Y2JkYmExNi4uYTY3OWIxZTJjZTMyNTM4ODc3ZWM2
YzMxNzQyYzMyNWZkYzQxYjc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotI2RlZmluZSBMT0dJ
REVOVElGSUVSX1JFQ0VJVkVSIFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFz
c05hbWUoKSwgX19mdW5jX18sIG1fY29ubmVjdGlvbi0+bG9nSWRlbnRpZmllcigpKQorI2RlZmlu
ZSBMT0dJREVOVElGSUVSX1JFQ0VJVkVSIExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIobG9nQ2xh
c3NOYW1lKCksIF9fZnVuY19fLCBtX2Nvbm5lY3Rpb24tPmxvZ0lkZW50aWZpZXIoKSkKICNlbHNl
CiAjZGVmaW5lIExPR0lERU5USUZJRVJfUkVDRUlWRVIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmluZGV4IGIwMDlj
OWNmM2RlZjI0YzJhOTJjNWJlNDgxN2M3MDJjYTczYTM3MjMuLjk1NTA0NDlkN2NlZmU4ZmVkNGUz
MzkwNGY3NDFhMGM0MTFjZDIwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotI2RlZmluZSBMT0dJREVO
VElGSUVSX1NFTkRFUiBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIobG9nQ2xhc3NOYW1l
KCksIF9fZnVuY19fLCBtX2Nvbm5lY3Rpb24tPmxvZ0lkZW50aWZpZXIoKSkKKyNkZWZpbmUgTE9H
SURFTlRJRklFUl9TRU5ERVIgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFzc05hbWUo
KSwgX19mdW5jX18sIG1fY29ubmVjdGlvbi0+bG9nSWRlbnRpZmllcigpKQogI2Vsc2UKICNkZWZp
bmUgTE9HSURFTlRJRklFUl9TRU5ERVIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggY2I5YjdlZGJlMmFk
MTU3ODljMTMxMGNlOGZiMmI0Y2QxMjU4ZDRmNC4uZjU2OTU5NzMyOTQwZDY0MjQwMmQzZDQxYmZj
MzRmZmFlOGFmZWM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAg
IGVudW0gRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGUgeyB9OwogICAgIHVzaW5nIERldmlj
ZUNoYW5nZU9ic2VydmVyVG9rZW4gPSBPYmplY3RJZGVudGlmaWVyPERldmljZUNoYW5nZU9ic2Vy
dmVyVG9rZW5UeXBlPjsKLSAgICB2aXJ0dWFsIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRk
RGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIo
RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZURldmljZUNo
YW5nZU9ic2VydmVyKERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4pID0gMDsKIAogcHJvdGVjdGVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNvbnRyb2xsZXIuaAppbmRleCA3NTFlYzFlY2ViYjhmYmMyMTBlZDdjMzA1NjU4MzQ0NzVk
ZDJlOWNmLi40M2NjODNhY2I1YzgyYzVlYTRkYmFmYmQ2ZTFmOTUxNTY1YjljOWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNv
bnRyb2xsZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVudW1lcmF0
ZU1lZGlhRGV2aWNlcyhEb2N1bWVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPENhcHR1cmVEZXZpY2U+JiwgY29uc3QgU3RyaW5nJik+JiYpOwogCi0gICAgVXNlck1lZGlh
Q2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIGFkZERldmljZUNoYW5nZU9ic2VydmVy
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNo
YW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRnVuY3Rpb248dm9pZCgp
PiYmKTsKICAgICB2b2lkIHJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKFVzZXJNZWRpYUNsaWVu
dDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbik7CiAKICAgICB2b2lkIGxvZ0dldFVzZXJNZWRp
YURlbmlhbChEb2N1bWVudCYpOwpAQCAtNzksNyArNzksNyBAQCBpbmxpbmUgdm9pZCBVc2VyTWVk
aWFDb250cm9sbGVyOjplbnVtZXJhdGVNZWRpYURldmljZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBD
b21wbAogfQogCiAKLWlubGluZSBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVy
VG9rZW4gVXNlck1lZGlhQ29udHJvbGxlcjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgb2JzZXJ2ZXIpCitpbmxpbmUgVXNlck1lZGlhQ2xpZW50OjpEZXZp
Y2VDaGFuZ2VPYnNlcnZlclRva2VuIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNoYW5n
ZU9ic2VydmVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikKIHsKICAgICByZXR1cm4gbV9j
bGllbnQtPmFkZERldmljZUNoYW5nZU9ic2VydmVyKFdURk1vdmUob2JzZXJ2ZXIpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CmluZGV4IDM5NDcyYmUyZjA4YWM2YTA2YTJhNGZlZTk5ODQ1NGZjZTZiYzk1MmIuLjM2YzhiNTBk
NDAxNTY3MWMyMzdlMzA2ZDljMzIzZjA5YWUxNmQ5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzc3LDcgKzM3Nyw3
IEBAIHN0YXRpYyBpbmxpbmUgTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kJiBiYWNrZW5k
RnJvbVJUUFRyYW5zY2VpdmVyKFJUQ1J0cFRyCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZCY+KCp0cmFuc2NlaXZlci5iYWNrZW5kKCkpOwogfQog
Ci1SVENSdHBUcmFuc2NlaXZlciogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpleGlz
dGluZ1RyYW5zY2VpdmVyKFdURjo6RnVuY3Rpb248Ym9vbChMaWJXZWJSVENSdHBUcmFuc2NlaXZl
ckJhY2tlbmQmKT4mJiBtYXRjaGluZ0Z1bmN0aW9uKQorUlRDUnRwVHJhbnNjZWl2ZXIqIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZXhpc3RpbmdUcmFuc2NlaXZlcihGdW5jdGlvbjxi
b29sKExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZCYpPiYmIG1hdGNoaW5nRnVuY3Rpb24p
CiB7CiAgICAgZm9yIChhdXRvJiB0cmFuc2NlaXZlciA6IG1fcGVlckNvbm5lY3Rpb24uY3VycmVu
dFRyYW5zY2VpdmVycygpKSB7CiAgICAgICAgIGlmIChtYXRjaGluZ0Z1bmN0aW9uKGJhY2tlbmRG
cm9tUlRQVHJhbnNjZWl2ZXIoKnRyYW5zY2VpdmVyKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IDM2NTcyZjBlZDk4MGY3NGRh
MDE3MTQ1OGEwMTVhOThhOWQ1YzczMjcuLmI0ZDBlNGEzOWFhZDljNjdhODhlOWUyZGI3MmQzOWE3
YmFlNWVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8
UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOwogICAgIHZvaWQgc2V0
U2VuZGVyU291cmNlRnJvbVRyYWNrKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmLCBNZWRpYVN0
cmVhbVRyYWNrJik7CiAKLSAgICBSVENSdHBUcmFuc2NlaXZlciogZXhpc3RpbmdUcmFuc2NlaXZl
cihXVEY6OkZ1bmN0aW9uPGJvb2woTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kJik+JiYp
OworICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiBleGlzdGluZ1RyYW5zY2VpdmVyKEZ1bmN0aW9uPGJv
b2woTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kJik+JiYpOwogICAgIFJUQ1J0cFRyYW5z
Y2VpdmVyJiBuZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kPiYmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKIAogICAg
IHZvaWQgY29sbGVjdFRyYW5zY2VpdmVycygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oCmluZGV4IDk1NWUz
OWE3MjI4NTJjMjIwZjJiZTk0NjlkZGI1MTdjNjBmODlkZDcuLjdmODZlYmQwZjI3MGZhNjMzNmMw
MmQ4N2Q1ZjQ0Yzg3NTI2NjlhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydERhdGEoSlNDOjpKU1Zh
bHVlKSA9IDA7CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBzaG93KERvY3VtZW50Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYW5N
YWtlUGF5bWVudChEb2N1bWVudCYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5NYWtlUGF5bWVudChEb2N1bWVu
dCYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpID0gMDsKICAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0OjpV
cGRhdGVSZWFzb24sIFN0cmluZyYmIGVycm9yLCBBZGRyZXNzRXJyb3JzJiYsIFBheWVyRXJyb3JG
aWVsZHMmJiwgSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykgPSAwOwogICAgIHZp
cnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gbWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVkKEpTQzo6
SlNWYWx1ZSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8
UGF5bWVudENvbXBsZXRlPiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IGU0NGIzMWMxZTRi
MDc4YjAzMzE4YzgyMTk2YjNlZWY4NzAzMThlZDUuLjA2M2NmZjdlMDkwN2I1ZTM3YzRmZjI0MTQw
NGQ4ZDNiOTM4MTJiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0zOTAsNyArMzkwLDcgQEAgdm9p
ZCBQYXltZW50UmVxdWVzdDo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxET01Qcm9t
aXNlPiYmIGRldGFpbHNQcm9taXMKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6SW50ZXJhY3RpdmU7
CiAgICAgQVNTRVJUKCFtX3Nob3dQcm9taXNlKTsKLSAgICBtX3Nob3dQcm9taXNlID0gV1RGOjpt
YWtlVW5pcXVlPFNob3dQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX3Nob3dQcm9t
aXNlID0gbWFrZVVuaXF1ZTxTaG93UHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSk7CiAKICAgICBS
ZWZQdHI8UGF5bWVudEhhbmRsZXI+IHNlbGVjdGVkUGF5bWVudEhhbmRsZXI7CiAgICAgZm9yIChh
dXRvJiBwYXltZW50TWV0aG9kIDogbV9zZXJpYWxpemVkTWV0aG9kRGF0YSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVzcG9u
c2UuY3BwCmluZGV4IDE2MDBhOTI2MjZiNDk5NTQ0ZTk0YjFmM2U0MjkwMjA0ZDdjOThlNDguLmIy
NzE4ODYwNmFjZDczZmE2YThlOWM5ZGNhNjBlODUxNGY0MWUwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5j
cHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFBheW1lbnRSZXNwb25zZTo6cmV0cnkoUGF5bWVu
dFZhbGlkYXRpb25FcnJvcnMmJiBlcnJvcnMsIERPTVByb21pc2VEZWZlcnJlZAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXRyeVByb21pc2UgPSBXVEY6Om1ha2VVbmlxdWU8RE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX3JldHJ5UHJv
bWlzZSA9IG1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3ZlKHByb21p
c2UpKTsKIH0KIAogdm9pZCBQYXltZW50UmVzcG9uc2U6OmFib3J0V2l0aEV4Y2VwdGlvbihFeGNl
cHRpb24mJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1
c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNo
LWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcAppbmRleCA1OTQzYzgzZDJlZTJhMjJjOGRjMDViYzU3
MzU5YjI5OGVhZGM0NGM0Li5lMDUwNDRkZDI3Yzk4YTE5OTM5MDI5YmIzOTMyNzI4MDNjY2VlMjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3Jp
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNj
cmlwdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgUHVzaFN1YnNjcmlwdGlvbkpTT04gUHVzaFN1
YnNjcmlwdGlvbjo6dG9KU09OKCkgY29uc3QKICAgICByZXR1cm4gUHVzaFN1YnNjcmlwdGlvbkpT
T04gewogICAgICAgICBtX2VuZHBvaW50LAogICAgICAgICBtX2V4cGlyYXRpb25UaW1lLAotICAg
ICAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiB7CisgICAgICAg
IFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiB7CiAgICAgICAgICAgICB7ICJw
MjU2ZGgiX3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKG1fY2xpZW50RUNESFB1YmxpY0tleSkg
fSwKICAgICAgICAgICAgIHsgImF1dGgiX3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKG1fc2hh
cmVkQXV0aGVudGljYXRpb25TZWNyZXQpIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSlNPTi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSlNPTi5oCmluZGV4IGZm
MGYyMjA2YmZiZDY3YWQyNWRmZDI4M2Y5NmM5MTYzZDUzMDU5ZTIuLjliZWYyYzM2MmMwZTg2MDdl
NWJhYTZhMDYzODYzZDVlY2IwMDc0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkpTT04uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25KU09OLmgKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFB1c2hTdWJzY3JpcHRpb25KU09OIHsKICAgICBT
dHJpbmcgZW5kcG9pbnQ7CiAgICAgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4gZXhwaXJh
dGlvblRpbWU7Ci0gICAgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4g
a2V5czsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4ga2V5czsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgKaW5k
ZXggODQ0MDYwZGFkZmEzZjU5NDA0MzkyYjRiMjc3OWNjZDViM2Y3MDljMS4uY2E5MDNiMTJiN2Yy
MjE5MzVmNWRmYTE5OGRiYjFhOGM0Yzc5ZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNl
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbXV0
ZSgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB1c2luZyBEYXRhQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRp
b0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT47CisgICAgdXNp
bmcgRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3Qp
PjsKICAgICB1c2luZyBTdGF0ZVVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPjsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVT
b3VyY2UoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgRGF0YUNh
bGxiYWNrJiYsIFN0YXRlVXBkYXRlQ2FsbGJhY2smJiwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNh
cHR1cmVEZXZpY2U+IGZpbmRDYXB0dXJlRGV2aWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVT
b3VyY2VJbXBsLmgKaW5kZXggYjE0MDhiNjVlMTA4ZTYyZmIxZjUxODdkMWVjZDFmYTQwZmZmZjk4
ZC4uNTg0YjcxZGQ5ZjA2ODg1ODEwOWIxODAzMzc4NTU0YjZhY2FjZDkwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291
cmNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBTcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsCiAgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgdXNpbmcgRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBX
VEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYsIHNpemVfdCk+OworICAgIHVzaW5nIERhdGFDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25z
dCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT47CiAgICAgdXNpbmcgU3RhdGVVcGRh
dGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUm
KT47CiAgICAgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbChTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBEYXRhQ2FsbGJhY2smJiwgU3RhdGVVcGRh
dGVDYWxsYmFjayYmLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CiAgICAgflNwZWVjaFJl
Y29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDg4OWJhYmI0
Y2NjOTZlY2UyYWZmYTMyODdmMGJiNTc1NGU1MTFkY2UuLmZhYTQ2YzAzYmIyN2U3NDFiNGQ1NGMx
NDJiMWRjODhjYzNjZTYxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmNwcApAQCAtMzQsNyArMzQsNyBAQCBSZWFk
YWJsZVN0cmVhbVNvdXJjZTo6flJlYWRhYmxlU3RyZWFtU291cmNlKCkgPSBkZWZhdWx0Owogdm9p
ZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlciYmIGNvbnRyb2xsZXIsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7
CiAgICAgQVNTRVJUKCFtX3Byb21pc2UpOwotICAgIG1fcHJvbWlzZSA9IFdURjo6bWFrZVVuaXF1
ZTxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+KFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fcHJv
bWlzZSA9IG1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3ZlKHByb21p
c2UpKTsKICAgICBtX2NvbnRyb2xsZXIgPSBXVEZNb3ZlKGNvbnRyb2xsZXIpOwogCiAgICAgc2V0
QWN0aXZlKCk7CkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1
bGwoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICBBU1NFUlQoIW1fcHJv
bWlzZSk7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKLSAgICBtX3Byb21pc2UgPSBXVEY6
Om1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3ZlKHByb21pc2UpKTsK
KyAgICBtX3Byb21pc2UgPSBtYWtlVW5pcXVlPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4oV1RG
TW92ZShwcm9taXNlKSk7CiAKICAgICBzZXRBY3RpdmUoKTsKICAgICBkb1B1bGwoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IGViYjNkYzBhZmM1
OWY3MzAzOGVmMTAyMzhlODVlZDY4NmQ3ZDlmOWEuLmY0ZTdlMDUxZTJhMjZhNDZjYmUzOTczMTYx
ZGZlM2Q3MDQ4NzEwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuaApAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbGFzdE5v
blNpbGVudFRpbWUgeyAtMSB9OwogCiAgICAgLy8gUmVmLWNvdW50aW5nCi0gICAgLy8gc3RhcnQg
b3V0IHdpdGggbm9ybWFsIHJlZkNvdW50ID09IDEgKGxpa2UgV1RGOjpSZWZDb3VudGVkIGNsYXNz
KS4KKyAgICAvLyBzdGFydCBvdXQgd2l0aCBub3JtYWwgcmVmQ291bnQgPT0gMSAobGlrZSBSZWZD
b3VudGVkIGNsYXNzKS4KICAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fbm9ybWFsUmVmQ291bnQgeyAx
IH07CiAgICAgc3RkOjphdG9taWM8aW50PiBtX2Nvbm5lY3Rpb25SZWZDb3VudCB7IDAgfTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE5vZGUuY3BwCmluZGV4IGUzYzFjODY4MWVmNGE4YTFhYzBkMTY0YWUwNjc3NmEzNDY2Njg4ODMu
LjhjZWViMzBkOTBlZTZiNDgzM2I0MmUwY2M0NDVkNjVmZGJjN2Q5MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcApAQCAt
MTUzLDcgKzE1Myw3IEBAIEF1ZGlvV29ya2xldE5vZGU6On5BdWRpb1dvcmtsZXROb2RlKCkKICAg
ICB1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXpl
QXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4mIGRlc2Ny
aXB0b3JzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJp
bmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpCit2b2lkIEF1ZGlvV29ya2xldE5vZGU6OmluaXRp
YWxpemVBdWRpb1BhcmFtZXRlcnMoY29uc3QgVmVjdG9yPEF1ZGlvUGFyYW1EZXNjcmlwdG9yPiYg
ZGVzY3JpcHRvcnMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJp
bmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLT5tYXAoKS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAppbmRleCBj
NTRmYzhiNzRlNzMxZjZkNWY0ODg1OWE0NTc4ZGY4Y2E4ZDI1NWY3Li5kNWI1YTYzMzFmZTFhMmI3
ZjkzNmFjZjlmYmYwZDNlNWIyNmJjMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KIAogICAg
IHZvaWQgc2V0UHJvY2Vzc29yKFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYpOwotICAg
IHZvaWQgaW5pdGlhbGl6ZUF1ZGlvUGFyYW1ldGVycyhjb25zdCBWZWN0b3I8QXVkaW9QYXJhbURl
c2NyaXB0b3I+JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBkb3VibGU+Pj4mIHBhcmFtVmFsdWVzKTsKKyAgICB2b2lkIGluaXRpYWxpemVBdWRp
b1BhcmFtZXRlcnMoY29uc3QgVmVjdG9yPEF1ZGlvUGFyYW1EZXNjcmlwdG9yPiYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1W
YWx1ZXMpOwogCiBwcml2YXRlOgogICAgIEF1ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlvQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiwgUmVmPE1l
c3NhZ2VQb3J0PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaAppbmRleCA2NmUwMGZlNjBkODQ4MTZhZDNk
MWZlNDk3MmE3MWJlMmY1NjA1NTgwLi5iMjY1N2NkMzgyOTA2ZTU1ZGY1ZDMwMTIzMzgyMWM0ZTUz
MzlkOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldE5vZGVPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBBdWRp
b1dvcmtsZXROb2RlT3B0aW9ucyA6IEF1ZGlvTm9kZU9wdGlvbnMgewogICAgIHVuc2lnbmVkIG51
bWJlck9mSW5wdXRzID0gMTsKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMgPSAxOwogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVuc2lnbmVkPj4gb3V0cHV0Q2hhbm5lbENvdW50OwotICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgZG91YmxlPj4+
IHBhcmFtZXRlckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8S2V5VmFsdWVQYWlyPFN0
cmluZywgZG91YmxlPj4+IHBhcmFtZXRlckRhdGE7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09i
amVjdD4gcHJvY2Vzc29yT3B0aW9uczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCmluZGV4IDFiYjQ5NTQxY2IyNjQx
MzUzODg4NjM4NWFlZGUyNjM1MjY0MDc2NmMuLmY2ZTcxNTU2Y2UwYzk0ZmFkNGQyNjk3NTMyNjg2
NTgyMDQxMzUyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRUaHJlYWQuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIEF1
ZGlvV29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYsIGNvbnN0IFdvcmts
ZXRQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBXb3JrZXJPcldvcmtsZXRUaHJlYWQuCi0gICAgUmVm
PFdURjo6VGhyZWFkPiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKKyAgICBSZWY8VGhyZWFkPiBjcmVh
dGVUaHJlYWQoKSBmaW5hbDsKICAgICBSZWZQdHI8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+
IGNyZWF0ZUdsb2JhbFNjb3BlKCkgZmluYWw7CiAKICAgICBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eSYgbV9tZXNzYWdpbmdQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcAppbmRl
eCBmMWMyYWYzM2M1ZmEyYWI2ZmM1MTY2OTk4M2ZhNzBlNzY5NjQwMjgwLi5iYzg0NGZmYjY2OGI5
M2IzY2Y3NjQ5YjM0YmU4Yzc4ODAyYzc1NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2Eu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3Vt
ZUF1ZGlvKEF1ZGlvQnVzJiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKICAgICAgICAgLy8g
SGVhcCBhbGxvY2F0aW9ucyBhcmUgZm9yYmlkZGVuIG9uIHRoZSBhdWRpbyB0aHJlYWQgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMgc28gd2UgbmVlZCB0bwogICAgICAgICAvLyBleHBsaWNpdGx5IGFs
bG93IHRoZSBmb2xsb3dpbmcgYWxsb2NhdGlvbihzKS4KICAgICAgICAgRGlzYWJsZU1hbGxvY1Jl
c3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25z
OwotICAgICAgICBtX2F1ZGlvQnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+
KGRlc2NyaXB0aW9uLCBXVEY6OnNhZmVDYXN0PHVpbnQzMl90PihudW1iZXJPZkZyYW1lcykpOwor
ICAgICAgICBtX2F1ZGlvQnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRl
c2NyaXB0aW9uLCBzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpKTsKICAgICAgICAg
YXVkaW9CdWZmZXIgPSAmZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PigqbV9hdWRpb0J1ZmZl
cik7CiAgICAgfSBlbHNlCiAgICAgICAgIGF1ZGlvQnVmZmVyLT5zZXRTYW1wbGVDb3VudChudW1i
ZXJPZkZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcAppbmRleCBkZTUyNGQyZjRmNDkwODEzODZkMWVjM2Y4
ZWNkMjJmN2Y2ZWQ4ZTAzLi5iMWU1NDNkYzAzNmE4NDMzZTUzN2MxZTMzZmJkOTU0ZDhkMTYyMWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIE9mZmxpbmVBdWRpb0Nv
bnRleHQ6OmZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKQogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIGF1
dG8gdW5pbml0aWFsaXplT25FeGl0ID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzXSB7CisgICAg
YXV0byB1bmluaXRpYWxpemVPbkV4aXQgPSBtYWtlU2NvcGVFeGl0KFt0aGlzXSB7CiAgICAgICAg
IHVuaW5pdGlhbGl6ZSgpOwogICAgICAgICBjbGVhcigpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaAppbmRl
eCAwNjVhNDUyMzA5ZmUxNWQxODI2MTM1ZjdlMmMzNmM4NjU3ZDExNmE1Li5iYTc2Njg2MDkwMTBm
Yzc2NWE1Yjk3YmE0MGJkNjQyYzIwNDI3NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaApAQCAtNjgsNyArNjgsNyBA
QCBwcml2YXRlOgogCiAgICAgVW5pcXVlUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4g
bV9kZXN0aW5hdGlvbk5vZGU7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9wZW5kaW5n
UmVuZGVyaW5nUHJvbWlzZTsKLSAgICBIYXNoTWFwPHVuc2lnbmVkIC8qIGZyYW1lICovLCBSZWZQ
dHI8RGVmZXJyZWRQcm9taXNlPiwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IG1fc3VzcGVuZFJlcXVlc3RzOworICAg
IEhhc2hNYXA8dW5zaWduZWQgLyogZnJhbWUgKi8sIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+LCBJ
bnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+IG1fc3VzcGVuZFJlcXVlc3RzOwogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogICAgIGJv
b2wgbV9kaWRTdGFydFJlbmRlcmluZyB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5jcHAK
aW5kZXggNDE4NjU5M2UyOWRmNmQ5MDhlNGU3Y2ZhNzc0ODcxODE5NDhlNjMyMC4uMTQ3YTFlMjAz
NjkxZjBkNDFiMGIwMTJiZjMwMzZjODY1OGE2MjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwCkBA
IC00MSwxMiArNDEsMTIgQEAgdW5zaWduZWQgU1FMUmVzdWx0U2V0Um93TGlzdDo6bGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gbV9yZXN1bHQuc2l6ZSgpIC8gbV9jb2x1bW5zLnNpemUoKTsKIH0K
IAotRXhjZXB0aW9uT3I8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU1FMVmFsdWU+
Pj4gU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK0V4Y2Vw
dGlvbk9yPFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTUUxWYWx1ZT4+PiBTUUxSZXN1bHRT
ZXRSb3dMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIGlmIChpbmRleCA+
PSBsZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07
CiAKLSAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTUUxWYWx1ZT4+IHJlc3Vs
dDsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU1FMVmFsdWU+PiByZXN1bHQ7CiAK
ICAgICB1bnNpZ25lZCBudW1iZXJPZkNvbHVtbnMgPSBtX2NvbHVtbnMuc2l6ZSgpOwogICAgIHVu
c2lnbmVkIHZhbHVlc0luZGV4ID0gaW5kZXggKiBudW1iZXJPZkNvbHVtbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlz
dC5oCmluZGV4IDE0YzQ0NDgzYWZiODc5YTI5OTU1MTljNmY2MTIwYTMwZDJhOGE5NGIuLmJmZjVm
ZjRlMGRjOWNjOGQ1Njg2ODIyZTU3NGI4ZmVlNGIxYTBhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oCkBA
IC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlc3VsdChjb25zdCBTUUxWYWx1
ZSYgcmVzdWx0KSB7IG1fcmVzdWx0LmFwcGVuZChyZXN1bHQpOyB9CiAKICAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdDsKLSAgICBFeGNlcHRpb25PcjxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBTUUxWYWx1ZT4+PiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBFeGNl
cHRpb25PcjxWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU1FMVmFsdWU+Pj4gaXRlbSh1bnNp
Z25lZCBpbmRleCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IGFhZWI2NjE0ZjY2YzdjOWNmNTZiODRhZWJlY2U5YTYwZDA4
MzU4ODguLjJiYTcyMTJhMjcxMzkxZDMzMTY1MWFkNjVlNjY2NTNmYWFmZDQ3NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTgyMSw3ICs4MjEsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmFib3J0T3V0
Z29pbmdGcmFtZVF1ZXVlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1l
OjpPcENvZGUgb3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
RnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1f
aGFuZGxlKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGNhNzE5Yzdi
ZTZlNTE5NmIzOWRlY2EwYzZkZjQxMzg2OTA0NWM4NDMuLmM5MjZiNDFmYTRkYTI1OWNiMjU3YzBj
OTVkOGVkMWEyNDVmNzYzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBJZiB5b3UgYXJlIGdvaW5nIHRvIHNlbmQgYSBoeWJpLTEwIGZyYW1lLCB5b3Ug
bmVlZCB0byB1c2UgdGhlIG91dGdvaW5nIGZyYW1lIHF1ZXVlCiAgICAgLy8gaW5zdGVhZCBvZiBj
YWxsIHNlbmRGcmFtZSgpIGRpcmVjdGx5LgotICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNlbmRG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpOwogCiAg
ICAgZW51bSBCbG9iTG9hZGVyU3RhdHVzIHsKICAgICAgICAgQmxvYkxvYWRlck5vdFN0YXJ0ZWQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKaW5kZXggZjIxNjIz
MTIxZWUyYjY0OTc1YTU0ZmYyYjBiYTllZWJhMjNkNTJhMi4uZjUzZTQxYmZkMmVmNWFkNTk5NzJi
MzRlZDdhNmYzMzU1OWMxYzM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkhhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJIYW5kLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpJdGVyYXRv
cihXZWJYUkhhbmQmIGhhbmQpCiB7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBh
aXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+Pj4gV2ViWFJIYW5kOjpJdGVy
YXRvcjo6bmV4dCgpCitzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxYUkhhbmRKb2ludCwgUmVm
UHRyPFdlYlhSSm9pbnRTcGFjZT4+PiBXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpuZXh0KCkKIHsKICAg
ICBpZiAobV9pbmRleCA+IG1faGFuZC0+bV9qb2ludHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkhhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmgKaW5k
ZXggNGM5MmJmMTkzODc0MGQ2MjA0Y2NiODkzY2ZhZjVhMDk5NmE5MTk2NC4uZGJlMTE0MzI1M2Q1
NzA3OTFhZmM3YmQ4Njg4Yzk5MmRjM2ZiYmFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSGFuZC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBJdGVy
YXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihXZWJYUkhhbmQm
KTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxYUkhhbmRKb2ludCwg
UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+PiBuZXh0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
S2V5VmFsdWVQYWlyPFhSSGFuZEpvaW50LCBSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4+IG5leHQo
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZjxXZWJYUkhhbmQ+IG1faGFuZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5
LmNwcAppbmRleCA1NjBkMDNhYjdmYjljM2VjYTVjMTExODZjNDE2NDg5ZmI5OTJjMDA0Li4xMGY2
MDgyYWJlNDRkZjk1ZjU1NTBkMmY0ZGI0ZTI4NTIwNDc3M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3BwCkBAIC0x
NDMsNyArMTQzLDcgQEAgdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JV
cGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1lc3RhbXAsIGMKIAogICAgIGZvciAoYXV0byYg
aW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpIHsKICAgICAgICAgYXV0byBpbmRleCA9IG1faW5w
dXRTb3VyY2VzLmZpbmRNYXRjaGluZyhbJmlucHV0U291cmNlXShhdXRvJiBpdGVtKSB7IHJldHVy
biBpdGVtLT5oYW5kbGUoKSA9PSBpbnB1dFNvdXJjZS5oYW5kbGU7IH0pOwotICAgICAgICBpZiAo
aW5kZXggPT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
IHsKICAgICAgICAgICAgIC8vIFdoZW4gbmV3IFhSIGlucHV0IHNvdXJjZXMgYmVjb21lIGF2YWls
YWJsZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1VU1QgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CiAgICAgICAgICAgICAvLyAxLiBJZiBzZXNzaW9uJ3MgcHJvbWlzZSBy
ZXNvbHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAgICAg
Ly8gMi4gTGV0IGFkZGVkIGJlIGEgbmV3IGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9I
eXN0ZXJlc2lzQWN0aXZpdHkuaAppbmRleCA1NjM2MDBlYThlNjg0YjJlNjBjZGE2NDM1YzFkZTlj
NjM5MTQ3NjIzLi45MjQ5YTlhZjc1MmUzMDE2NTEyODQ0MzQ5ZWVlM2I1ZGE1YzQzMTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvSHlzdGVyZXNpc0FjdGl2aXR5LmgKQEAgLTM5LDcgKzM5
LDcgQEAgZW51bSBjbGFzcyBIeXN0ZXJlc2lzU3RhdGUgewogCiBjbGFzcyBIeXN0ZXJlc2lzQWN0
aXZpdHkgewogcHVibGljOgotICAgIGV4cGxpY2l0IEh5c3RlcmVzaXNBY3Rpdml0eShXVEY6OkZ1
bmN0aW9uPHZvaWQoSHlzdGVyZXNpc1N0YXRlKT4mJiBjYWxsYmFjayA9IFtdKEh5c3RlcmVzaXNT
dGF0ZSkgeyB9LCBTZWNvbmRzIGh5c3RlcmVzaXNTZWNvbmRzID0gZGVmYXVsdEh5c3RlcmVzaXNE
dXJhdGlvbikKKyAgICBleHBsaWNpdCBIeXN0ZXJlc2lzQWN0aXZpdHkoRnVuY3Rpb248dm9pZChI
eXN0ZXJlc2lzU3RhdGUpPiYmIGNhbGxiYWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIFNl
Y29uZHMgaHlzdGVyZXNpc1NlY29uZHMgPSBkZWZhdWx0SHlzdGVyZXNpc0R1cmF0aW9uKQogICAg
ICAgICA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCiAgICAgICAgICwgbV9oeXN0ZXJl
c2lzU2Vjb25kcyhoeXN0ZXJlc2lzU2Vjb25kcykKICAgICAgICAgLCBtX2FjdGl2ZShmYWxzZSkK
QEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9jYWxsYmFjayhIeXN0ZXJlc2lz
U3RhdGU6OlN0b3BwZWQpOwogICAgIH0KIAotICAgIFdURjo6RnVuY3Rpb248dm9pZChIeXN0ZXJl
c2lzU3RhdGUpPiBtX2NhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoSHlzdGVyZXNpc1N0YXRl
KT4gbV9jYWxsYmFjazsKICAgICBTZWNvbmRzIG1faHlzdGVyZXNpc1NlY29uZHM7CiAgICAgYm9v
bCBtX2FjdGl2ZTsKICAgICBSdW5Mb29wOjpUaW1lcjxIeXN0ZXJlc2lzQWN0aXZpdHk+IG1fdGlt
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcAppbmRleCA4ZTZmYTIzMGZjNDVlNmIyZjA0
NmMxMWRmYWQyNzE0MzE4YzA2NTYwLi4wMGI3ZWQ4NDU4YjdmM2VhODU0YzFlYmFhYmM2YTM0NjQ2
ZTgwYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFBBTCB7CiAKLXZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBT
dHJpbmcmIG5vdGlmeUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3ZvaWQg
cmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBGdW5jdGlvbjx2
b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IHRva2Vu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaAppbmRleCA2Y2FhZWRiMzVhMDUxZDlkNTNlMmJhMzI0
MWNhOTAwM2EzYjAxYTcyLi4zMGE4ZTVlMTMxZDZiMzhkNGE4ZWQ2M2ViNWRjOWQ1NGQzOTg4NGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3Bh
Y2UgUEFMIHsKIAotUEFMX0VYUE9SVCB2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3Qg
U3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworUEFMX0VYUE9SVCB2b2lkIHJlZ2lz
dGVyTm90aWZ5Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKIAog
fSAvLyBuYW1lc3BhY2UgUEFMCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCmluZGV4IDE4MzdkZjAyZTM3MWEyOWQxNjEzMTY5NjRmN2NlYjBhNGI4
MjAyYjAuLmY4Njc4NGExNGU3ZjM1NjlmYmYzZGQ3MTYyZTUwNTEyN2I0MzczZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzI4NSw3
ICszMjg1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGkKICAgICAgICAgdXBkYXRlSXNvbGF0
ZWRUcmVlKCpvYmplY3QsIG5vdGlmaWNhdGlvbik7CiB9CiAKLS8vIEZJWE1FOiBzaG91bGQgYmUg
YWRkZWQgdG8gV1RGOjpWZWN0b3IuCisvLyBGSVhNRTogc2hvdWxkIGJlIGFkZGVkIHRvIFZlY3Rv
ci4KIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+CiBzdGF0aWMgYm9vbCBhcHBlbmRJ
Zk5vdENvbnRhaW5zTWF0Y2hpbmcoVmVjdG9yPFQ+JiB2ZWN0b3IsIGNvbnN0IFQmIHZhbHVlLCBG
IG1hdGNoZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAwOGUwZTRmNWI5NzQwNmZmODkzMjA0OWNkNjFkMzY2
MGE4MzlkZjRhLi4xMzJlZmJjZmZjNDRhMWM3M2I4YzA2MTdiZTAzZjM2NmUyMmFhMDU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKQEAgLTQzMyw3ICs0MzMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBObwogICAgIH0p
OwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9k
ZShjb25zdCBOb2RlKiBub2RlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgQWNjZXNz
aWJpbGl0eU9iamVjdCYpPiYgaXNBY2Nlc3NpYmxlKQorQWNjZXNzaWJpbGl0eU9iamVjdCogZmly
c3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgRnVuY3Rp
b248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik+JiBpc0FjY2Vzc2libGUpCiB7CiAg
ICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM5MTYsOSArMzkxNiw5
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJheShBWENvcmVPYmplY3QqIG9iamVj
dCwgYm9vbCBpc0ZvcndhcmQsIEFYQ29yZU9iCiAgICAgICAgICAgICBzdGFydE9iamVjdCA9IGlz
Rm9yd2FyZCA/IHN0YXJ0T2JqZWN0LT5wcmV2aW91c1NpYmxpbmcoKSA6IHN0YXJ0T2JqZWN0LT5u
ZXh0U2libGluZygpOwogICAgIH0KIAotICAgIHNpemVfdCBzZWFyY2hQb3NpdGlvbiA9IHN0YXJ0
T2JqZWN0ID8gc2VhcmNoQ2hpbGRyZW4uZmluZChzdGFydE9iamVjdCkgOiBXVEY6Om5vdEZvdW5k
OworICAgIHNpemVfdCBzZWFyY2hQb3NpdGlvbiA9IHN0YXJ0T2JqZWN0ID8gc2VhcmNoQ2hpbGRy
ZW4uZmluZChzdGFydE9iamVjdCkgOiBub3RGb3VuZDsKIAotICAgIGlmIChzZWFyY2hQb3NpdGlv
biAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYgKHNlYXJjaFBvc2l0aW9uICE9IG5vdEZvdW5k
KSB7CiAgICAgICAgIGlmIChpc0ZvcndhcmQpCiAgICAgICAgICAgICBlbmRJbmRleCA9IHNlYXJj
aFBvc2l0aW9uICsgMTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBjOWMyODZmNGU2YzY0NTZmMmM3
YTY5NTBlZDMzYmI1N2I1YTliMDk0Li42YzViYTVkYzI5Mzk5YzdlM2MxNDAzYTQ1ZDlmNGQwNTYw
OGZhN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaApAQCAtODM4LDcgKzgzOCw3IEBAIGlubGluZSBib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFsbG93c1RleHRSYW5nZXMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiBpbmxp
bmUgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0TGVuZ3RoRm9yVGV4dFJhbmdlKCkg
Y29uc3QgeyByZXR1cm4gdGV4dCgpLmxlbmd0aCgpOyB9CiAjZW5kaWYKIAotQWNjZXNzaWJpbGl0
eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSosIGNvbnN0
IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik+JiBpc0FjY2Vz
c2libGUpOworQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5v
ZGUoY29uc3QgTm9kZSosIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCYpPiYgaXNBY2Nlc3NpYmxlKTsKIAogbmFtZXNwYWNlIEFjY2Vzc2liaWxpdHkgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDdmOTU2OTZmYTBiYjIxMmZkNTI3Y2JiYjRhMzQzNDEy
OThjM2M0ZWUuLjFiNTQxNmVhNzg2N2FhNTJkZjI5YzgyMTRhYTMyMjBiOTcyZWE3NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oCkBAIC0yNTAsNyArMjUwLDcgQEAgZW51bSBjbGFzcyBBY2Nlc3Np
YmlsaXR5Um9sZSB7CiAgICAgV2luZG93LAogfTsKIAotdXNpbmcgQWNjZXNzaWJpbGl0eVJvbGVT
ZXQgPSBXVEY6Okhhc2hTZXQ8QWNjZXNzaWJpbGl0eVJvbGUsIFdURjo6SW50SGFzaDxBY2Nlc3Np
YmlsaXR5Um9sZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8QWNjZXNzaWJpbGl0eVJvbGU+
PjsKK3VzaW5nIEFjY2Vzc2liaWxpdHlSb2xlU2V0ID0gSGFzaFNldDxBY2Nlc3NpYmlsaXR5Um9s
ZSwgSW50SGFzaDxBY2Nlc3NpYmlsaXR5Um9sZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8
QWNjZXNzaWJpbGl0eVJvbGU+PjsKIAogQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNzaWJpbGl0
eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApp
bmRleCA3NDQ1NjQ4ZTRjNmVjMjliMjg5MTlhYTNmOGU5ZjJiOWE3YmRkYzUxLi42MGMyNjEyN2Rm
ODViYzE5ZGFjNjkzNDAyODgyNGY0YWZkYTUyN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMTQ2
LDcgKzE0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJh
cnMoKQogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGRTY3JvbGxiYXIo
QWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsYmFyKQogewogICAgIHNpemVfdCBwb3MgPSBtX2No
aWxkcmVuLmZpbmQoc2Nyb2xsYmFyKTsKLSAgICBpZiAocG9zICE9IFdURjo6bm90Rm91bmQpIHsK
KyAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIG1fY2hpbGRyZW5bcG9zXS0+ZGV0
YWNoRnJvbVBhcmVudCgpOwogICAgICAgICBtX2NoaWxkcmVuLnJlbW92ZShwb3MpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZS5jcHAKaW5kZXggNWMzMjI3YTdiMTVkYzllZDQ5Mzc2ZTU2NTQwZGJiMGI4NWE3YWZlYi4u
MTZjNGY1ODEzZGE4ZGZkYWQ1MzBlZDQyY2YwYjdlZmJhMTA1Yzk0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKQEAg
LTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBh
cmVudChBdGtPYmplY3QqIG9iamVjdCkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgc2l6ZV90
IGluZGV4ID0gcGFyZW50LT5jaGlsZHJlbigpLmZpbmQoY29yZU9iamVjdCk7Ci0gICAgcmV0dXJu
IChpbmRleCA9PSBXVEY6Om5vdEZvdW5kKSA/IC0xIDogaW5kZXg7CisgICAgcmV0dXJuIChpbmRl
eCA9PSBub3RGb3VuZCkgPyAtMSA6IGluZGV4OwogfQogCiBzdGF0aWMgQXRrQXR0cmlidXRlU2V0
KiB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhBdGtPYmplY3QqIG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAwYTg2ZDQ0M2Q1MDdlNzE0YWE2NjUz
YzdhMThhNjg0NTljYjgxYTNjLi44YTg3YWMzYjFiMjBkN2U3M2QxMzYwM2UxMjI3YjNlYjExYWI1
OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC02MDQsNyArNjA0
LDcgQEAgc3RhdGljIGludCBudW1iZXJPZlJlcGxhY2VkRWxlbWVudHNCZWZvcmVPZmZzZXQoQXRr
VGV4dCogdGV4dCwgdW5zaWduZWQgb2Zmc2V0KQogCiAgICAgaW50IGNvdW50ID0gMDsKICAgICBz
aXplX3QgaW5kZXggPSB0ZXh0QmVmb3JlT2Zmc2V0LmZpbmQob2JqZWN0UmVwbGFjZW1lbnRDaGFy
YWN0ZXIsIDApOwotICAgIHdoaWxlIChpbmRleCA8IG9mZnNldCAmJiBpbmRleCAhPSBXVEY6Om5v
dEZvdW5kKSB7CisgICAgd2hpbGUgKGluZGV4IDwgb2Zmc2V0ICYmIGluZGV4ICE9IG5vdEZvdW5k
KSB7CiAgICAgICAgIGluZGV4ID0gdGV4dEJlZm9yZU9mZnNldC5maW5kKG9iamVjdFJlcGxhY2Vt
ZW50Q2hhcmFjdGVyLCBpbmRleCArIDEpOwogICAgICAgICBjb3VudCsrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oCmluZGV4IDc5MWZhZjUzMjMwMzBkNjA0YjA0YjI3N2VlZWIwZTUzMTU4OGY1
NzkuLmJmNmNlYTEyM2NiZjU4MTg3NDAyOWVlYWM1OGY4MDA4NTg0ZTQ2NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaApAQCAtMzE4LDcgKzMxOCw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUg
OiB1aW50MTZfdCB7CiB9OwogCiB1c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0gc3RkOjp2
YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJs
ZSwgZmxvYXQsIHVpbnQ2NF90LCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9hdFJlY3QsIFBB
TDo6U2Vzc2lvbklELCBJbnRQb2ludCwgT3B0aW9uU2V0PFNwZWFrQXM+LCBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiwgVmVjdG9yPEFYSUQ+
LCBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmluZz4sIFBhdGg+Owot
dXNpbmcgQVhQcm9wZXJ0eU1hcCA9IEhhc2hNYXA8QVhQcm9wZXJ0eU5hbWUsIEFYUHJvcGVydHlW
YWx1ZVZhcmlhbnQsIFdURjo6SW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8QVhQcm9wZXJ0eU5hbWU+PjsKK3VzaW5nIEFYUHJvcGVydHlNYXAgPSBIYXNo
TWFwPEFYUHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWYXJpYW50LCBJbnRIYXNoPEFYUHJv
cGVydHlOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxBWFByb3BlcnR5TmFtZT4+Owog
CiBzdHJ1Y3QgQVhQcm9wZXJ0eUNoYW5nZSB7CiAgICAgQVhJRCBheElEIHsgSW52YWxpZEFYSUQg
fTsgLy8gSUQgb2YgdGhlIG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGNoYW5nZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKaW5kZXggZWRjMDJlYjRi
NzY4NGIxODI4YTBjMDhhMTE2ZjYxNWFjMjgzZDQ1MC4uMDVjMTkxZjNkODJkZDhlY2Q2ZDY3OTlh
YWYxZGFhMTRmNzY4MzA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Rv
Y3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6
YW5pbWF0aW9uQ2FuQmVSZW1vdmVkKFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBhbmltYXRpb25XaXRoSGlnaGVyQ29tcG9zaXRlT3Jk
ZXIgOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKGFuaW1hdGlvbnMpKSB7CisgICAgZm9yIChhdXRv
JiBhbmltYXRpb25XaXRoSGlnaGVyQ29tcG9zaXRlT3JkZXIgOiBtYWtlUmV2ZXJzZWRSYW5nZShh
bmltYXRpb25zKSkgewogICAgICAgICBpZiAoJmFuaW1hdGlvbiA9PSBhbmltYXRpb25XaXRoSGln
aGVyQ29tcG9zaXRlT3JkZXIpCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L0lETFR5cGVzLmgKaW5kZXggM2I1YTk0OTFiOWFmMDVkNGZiYmU5ZjBkMzA2MjBlOTg0Yjk5Mzk0
MS4uZmQwOTlmNTQzNzhhMTk5NWQzZjE0Nzg4OTk3NTgwY2NjOGVmOWM1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9JRExUeXBlcy5oCkBAIC0yMjAsMTIgKzIyMCwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSURMRnJvemVuQXJyYXkgOiBJRExUeXBlPFZlY3Rvcjx0eXBlbmFtZSBUOjpJ
bXBsZW1lbgogICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9uVHlwZT4+JjsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+IHN0cnVjdCBJRExSZWNvcmQgOiBJRExUeXBl
PFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUs
IHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4+PiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBL
LCB0eXBlbmFtZSBWPiBzdHJ1Y3QgSURMUmVjb3JkIDogSURMVHlwZTxWZWN0b3I8S2V5VmFsdWVQ
YWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50
YXRpb25UeXBlPj4+IHsKICAgICB1c2luZyBLZXlUeXBlID0gSzsKICAgICB1c2luZyBWYWx1ZVR5
cGUgPSBWOwogCi0gICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IGNvbnN0IFZlY3RvcjxXVEY6Oktl
eVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6Oklt
cGxlbWVudGF0aW9uVHlwZT4+JjsKLSAgICB1c2luZyBOdWxsYWJsZVBhcmFtZXRlclR5cGUgPSBj
b25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJ
bXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4+PiY7Cisg
ICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IGNvbnN0IFZlY3RvcjxLZXlWYWx1ZVBhaXI8dHlwZW5h
bWUgSzo6SW1wbGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+
PiY7CisgICAgdXNpbmcgTnVsbGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpvcHRpb25h
bDxWZWN0b3I8S2V5VmFsdWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlw
ZW5hbWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4+JjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBJRExQcm9taXNlIDogSURMV3JhcHBlcjxET01Qcm9taXNlPiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCmluZGV4IDNiZDUwYWVhNWU4
Nzk4MGNiZDY1OTg2MTE0MzRmMmJhNjY0MDA4YTEuLjgwMjQ5MDUzZDU4OTdiNjY2ZGFmNTA4MWU2
MjMxNmM5OGY2YmQ4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVByb21pc2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21p
c2VQcm94eS5oCkBAIC04Niw3ICs4Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiBj
bGFzcyBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBSZXNvbHZlQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgKCk+OworICAgIHVzaW5n
IFJlc29sdmVDYWxsYmFjayA9IEZ1bmN0aW9uPHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5
cGUoKT47CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3MsIHR5cGVuYW1lIEJhc2VDbGFz
cz4KICAgICBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrKENsYXNzJiwgdHlwZW5h
bWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSAoQmFzZUNsYXNzOjoqKSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3Bw
CmluZGV4IGE5OGE5NzcwN2M2NDhkM2U4MDhiOGQyNGY2N2I2ZmFjZDY2MjU0NjguLjgyMzQ1ZDJl
NGEzZmUxNzhkZDRjZDJhNmNmNmJkNDJlY2ZjNDZlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtMjMw
LDcgKzIzMCw3IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVu
dChFbGVtZW50JiBlbGVtZW50KQogICAgIGVsZW1lbnQuc2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVu
dCgqdGhpcyk7CiB9CiAKLXZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjppbnZva2VDYWxs
YmFjayhFbGVtZW50JiBlbGVtZW50LCBKU09iamVjdCogY2FsbGJhY2ssIGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZChKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgTWFya2VkQXJn
dW1lbnRCdWZmZXImKT4mIGFkZEFyZ3VtZW50cykKK3ZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlOjppbnZva2VDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50LCBKU09iamVjdCogY2FsbGJhY2ss
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoSlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCos
IE1hcmtlZEFyZ3VtZW50QnVmZmVyJik+JiBhZGRBcmd1bWVudHMpCiB7CiAgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCmluZGV4IDM5OWYyYzIw
NTJmN2ZmMzc1NGMzNzk0ZGI5YWE2MjgyNTQ0YWIyOGUuLjQ2ZmViODdjNTM2Zjc2MmQ2NTY1YTgy
MGEzNjM0Yjk3ZTVhMmE3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8RWxlbWVudD4gdHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KERvY3Vt
ZW50JiwgY29uc3QgQXRvbVN0cmluZyYpOwogCi0gICAgdm9pZCBpbnZva2VDYWxsYmFjayhFbGVt
ZW50JiwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Ok1hcmtlZEFyZ3Vt
ZW50QnVmZmVyJik+JiBhZGRBcmd1bWVudHMgPSBbXShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJikgeyB9KTsKKyAgICB2
b2lkIGludm9rZUNhbGxiYWNrKEVsZW1lbnQmLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgY29u
c3QgRnVuY3Rpb248dm9pZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
LCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJik+JiBhZGRBcmd1bWVudHMgPSBbXShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVm
ZmVyJikgeyB9KTsKIAogICAgIFF1YWxpZmllZE5hbWUgbV9uYW1lOwogICAgIEpTQzo6V2VhazxK
U0M6OkpTT2JqZWN0PiBtX2NvbnN0cnVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCBiYmMxY2NmMjQ3MWRiMmU0OTI4NjYzOGE1Y2MzMTFi
MWY0MzRkZDJlLi41MjVkZDk5ZmE0OWE2NDM5MmU1MTY3YjE4NDM0OGMyNDM3Y2FhNGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtMTAwLDcg
KzEwMCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SlNDOjpXYXRjaHBvaW50U2V0PiBtX3dp
bmRvd0Nsb3NlV2F0Y2hwb2ludHM7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVzcG9uc2VDYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBjaGFyKiwgc2l6ZV90KT47CisgICAgdXNp
bmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgY2hhciosIHNpemVfdCk+
OwogCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93cmFwcGVkOwogICAgIFJlZlB0cjxFdmVudD4g
bV9jdXJyZW50RXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0LmgKaW5kZXggZDkwYzBkZWM1ZDIxMDVkNmFjZWNjMzBmMWVmZGVj
YmM2NmRiNTY5Yy4uNzk3MDJlYmFlY2YzZGY1OGRhMDJiMDZiMGQwZGM5ZDU1NzBhZmJiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmFsdWVJbldyYXBwZWRPYmpl
Y3QuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIFZhbHVlIG1fdmFsdWU7CiB9Owog
Ci1KU0M6OkpTVmFsdWUgY2FjaGVkUHJvcGVydHlWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
Y29uc3QgSlNET01PYmplY3QmIG93bmVyLCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBjYWNoZVNs
b3QsIGNvbnN0IFdURjo6RnVuY3Rpb248SlNDOjpKU1ZhbHVlKCk+Jik7CitKU0M6OkpTVmFsdWUg
Y2FjaGVkUHJvcGVydHlWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSlNET01PYmpl
Y3QmIG93bmVyLCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBjYWNoZVNsb3QsIGNvbnN0IEZ1bmN0
aW9uPEpTQzo6SlNWYWx1ZSgpPiYpOwogCiBpbmxpbmUgYXV0byBKU1ZhbHVlSW5XcmFwcGVkT2Jq
ZWN0OjptYWtlVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKSAtPiBWYWx1ZQogewpAQCAtMTE4LDcg
KzExOCw3IEBAIGlubGluZSB2b2lkIEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OmNsZWFyKCkKICAg
ICB9LCBbXSAoYXV0byYpIHsgfSk7CiB9CiAKLWlubGluZSBKU0M6OkpTVmFsdWUgY2FjaGVkUHJv
cGVydHlWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25z
dCBKU0RPTU9iamVjdCYgb3duZXIsIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGNhY2hlZFZhbHVl
LCBjb25zdCBXVEY6OkZ1bmN0aW9uPEpTQzo6SlNWYWx1ZSgpPiYgZnVuY3Rpb24pCitpbmxpbmUg
SlNDOjpKU1ZhbHVlIGNhY2hlZFByb3BlcnR5VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNET01PYmplY3QmIG93bmVyLCBKU1ZhbHVlSW5XcmFw
cGVkT2JqZWN0JiBjYWNoZWRWYWx1ZSwgY29uc3QgRnVuY3Rpb248SlNDOjpKU1ZhbHVlKCk+JiBm
dW5jdGlvbikKIHsKICAgICBpZiAoY2FjaGVkVmFsdWUgJiYgaXNXb3JsZENvbXBhdGlibGUobGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FjaGVkVmFsdWUpKQogICAgICAgICByZXR1cm4gY2FjaGVkVmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5k
ZXggYmY1ZDU1ZmFiMzRjNzk3Zjk0YWI4YTVjY2QwOWIxNWVjYzk5YTA2MC4uZGFmOWVhZDIxY2Q4
M2NjZjA1MzFlYWZhNjEzN2ZmMDcxODhmNjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAg
ICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01vZHVsZVJl
Y29yZCYsIERPTVdyYXBwZXJXb3JsZCYsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6
SlNWYWx1ZSByZXN1bWVNb2RlKTsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoY29u
c3QgVVJMJiwgSlNDOjpKU01vZHVsZVJlY29yZCYsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUs
IEpTQzo6SlNWYWx1ZSByZXN1bWVNb2RlKTsKIAotICAgIFdURjo6VGV4dFBvc2l0aW9uIGV2ZW50
SGFuZGxlclBvc2l0aW9uKCkgY29uc3Q7CisgICAgVGV4dFBvc2l0aW9uIGV2ZW50SGFuZGxlclBv
c2l0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIGVuYWJsZUV2YWwoKTsKICAgICB2b2lkIGVuYWJs
ZVdlYkFzc2VtYmx5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0
aWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oCmluZGV4IDdiMTJm
ZWJjMjBhZDRiNWEwYjcwNDNhMGEwNmEwNjQ5NWY1ZGUwYTguLmJmOWEzNzQxNGM2YjJhMjk1MmZi
Yzg4ZjEwOGNiZmExNmNjNDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfdXRpbGl0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oCkBA
IC00NCw3ICs0NCw3IEBAIGNsYXNzIFJvb3RPYmplY3Q7CiAgICAgCiB0eXBlZGVmIHVpbnQxNl90
IE5QVVRGMTY7CiAKLVdURjo6U3RyaW5nIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoY29uc3QgTlBT
dHJpbmcgKnN0cmluZyk7CitTdHJpbmcgY29udmVydE5QU3RyaW5nVG9VVEYxNihjb25zdCBOUFN0
cmluZyAqKTsKIHZvaWQgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlLCBOUFZhcmlhbnQqIHJlc3VsdCk7CiBKU1ZhbHVlIGNvbnZlcnROUFZhcmlhbnRUb1Zh
bHVlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgTlBWYXJpYW50KiwgUm9vdE9iamVjdCopOwogSWRl
bnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihKU0dsb2JhbE9iamVjdCosIGNvbnN0
IE5QVVRGOCogbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAppbmRleCAwMWNmMTk0N2QzMTQ4ZjFhMGQ3ZDlk
MzEyNzA4ZTJkMGIzMzRjZTAzLi40ZGE5ODhjNTIxZDEyOWI3NWI0OTgwNWNlZWI1ZmIwNGVmYTZl
NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5l
ZFVSTEZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bWJpbmVkVVJMRmlsdGVycy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IFByZWZpeFRyZWVF
ZGdlIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlZml4VHJlZVZlcnRleD4gY2hpbGQ7CiB9Owog
ICAgIAotdHlwZWRlZiBWZWN0b3I8UHJlZml4VHJlZUVkZ2UsIDAsIFdURjo6Q3Jhc2hPbk92ZXJm
bG93LCAxPiBQcmVmaXhUcmVlRWRnZXM7Cit0eXBlZGVmIFZlY3RvcjxQcmVmaXhUcmVlRWRnZSwg
MCwgQ3Jhc2hPbk92ZXJmbG93LCAxPiBQcmVmaXhUcmVlRWRnZXM7CiAKIHN0cnVjdCBQcmVmaXhU
cmVlVmVydGV4IHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3
ICs1Niw3IEBAIHN0cnVjdCBSZXZlcnNlU3VmZml4VHJlZUVkZ2UgewogICAgIGNvbnN0IFRlcm0q
IHRlcm07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJldmVyc2VTdWZmaXhUcmVlVmVydGV4PiBjaGls
ZDsKIH07Ci10eXBlZGVmIFZlY3RvcjxSZXZlcnNlU3VmZml4VHJlZUVkZ2UsIDAsIFdURjo6Q3Jh
c2hPbk92ZXJmbG93LCAxPiBSZXZlcnNlU3VmZml4VHJlZUVkZ2VzOwordHlwZWRlZiBWZWN0b3I8
UmV2ZXJzZVN1ZmZpeFRyZWVFZGdlLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDE+IFJldmVyc2VTdWZm
aXhUcmVlRWRnZXM7CiAKIHN0cnVjdCBSZXZlcnNlU3VmZml4VHJlZVZlcnRleCB7CiAgICAgUmV2
ZXJzZVN1ZmZpeFRyZWVFZGdlcyBlZGdlczsKQEAgLTE5NSwxNCArMTk1LDE0IEBAIHZvaWQgQ29t
YmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25zdCBWZWN0
b3I8VGVybT4mIHBhdHRlCiAgICAgUHJlZml4VHJlZVZlcnRleCogbGFzdFByZWZpeFRyZWUgPSBt
X3ByZWZpeFRyZWVSb290LmdldCgpOwogCiAgICAgZm9yIChjb25zdCBUZXJtJiB0ZXJtIDogcGF0
dGVybikgewotICAgICAgICBzaXplX3QgbmV4dEVudHJ5SW5kZXggPSBXVEY6Om5vdEZvdW5kOwor
ICAgICAgICBzaXplX3QgbmV4dEVudHJ5SW5kZXggPSBub3RGb3VuZDsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsYXN0UHJlZml4VHJlZS0+ZWRnZXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgICAgIGlmICgqbGFzdFByZWZpeFRyZWUtPmVkZ2VzW2ldLnRlcm0gPT0gdGVybSkgewog
ICAgICAgICAgICAgICAgIG5leHRFbnRyeUluZGV4ID0gaTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAobmV4dEVudHJ5SW5kZXgg
IT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgaWYgKG5leHRFbnRyeUluZGV4ICE9IG5vdEZvdW5k
KQogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+ZWRnZXNbbmV4
dEVudHJ5SW5kZXhdLmNoaWxkLmdldCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGxh
c3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50
ZXJuZWQodGVybSksIG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKQEAgLTIxMiw3
ICsyMTIsNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybih1aW50NjRfdCBh
Y3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZQogCiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2FjdGlvbnMuYWRkKGxhc3RQcmVmaXhUcmVlLCBBY3Rpb25MaXN0KCkpOwogICAgIEFjdGlv
bkxpc3QmIGFjdGlvbnMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmIChhY3Rp
b25zLmZpbmQoYWN0aW9uSWQpID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKGFjdGlvbnMuZmlu
ZChhY3Rpb25JZCkgPT0gbm90Rm91bmQpCiAgICAgICAgIGFjdGlvbnMuYXBwZW5kKGFjdGlvbklk
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggMGI0MDI3MjcwNWYxMTJkNTg1
ZGQ1ZjgyMjBkZjBiNWY4YjMxMjI0NC4uMjUxMWU4ZWY1NWI3OGZkZjk4NTE1M2EyZThlNmY1YTQ0
NmY1NTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAg
YXV0byBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoY29u
c3QgUmVzb3VyY2VMb2FkSW5mbyYgcmUKICAgICByZXR1cm4gYWN0aW9uc1ZlY3RvcjsKIH0KIAot
dm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmZvckVhY2goY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb24mKT4mIGFwcGx5KQordm9pZCBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmZvckVhY2goY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmLCBDb250ZW50RXh0ZW5zaW9uJik+JiBhcHBseSkKIHsKICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBtX2NvbnRlbnRFeHRlbnNpb25zKQogICAgICAgICBhcHBseShwYWlyLmtleSwgcGFp
ci52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaAppbmRleCA2YmIxOTI4Y2FlMTljODdh
ZjU2ZjY0OGVmZGNmMDk5M2ZjMjc0ZGJjLi5kZTRhNTBiNjEzMjM1NmYwZWY0OWQ3YTlhODMxMDU4
MWRkMjc1MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5nLmgKQEAgLTM0LDcgKzM0LDcgQEAK
ICNkZWZpbmUgQ09OVEVOVF9FWFRFTlNJT05TX1BFUkZPUk1BTkNFX1JFUE9SVElORyAwCiAKICNp
ZiBDT05URU5UX0VYVEVOU0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKLXR5cGVkZWYgV1RG
OjpDcmFzaE9uT3ZlcmZsb3cgQ29udGVudEV4dGVuc2lvbnNPdmVyZmxvd0hhbmRsZXI7Cit0eXBl
ZGVmIENyYXNoT25PdmVyZmxvdyBDb250ZW50RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxlcjsKICNl
bHNlCiB0eXBlZGVmIFVuc2FmZVZlY3Rvck92ZXJmbG93IENvbnRlbnRFeHRlbnNpb25zT3ZlcmZs
b3dIYW5kbGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ERkFDb21iaW5lci5jcHAKaW5kZXggNzJlNzYxODE1ZDEzYzc5NjI0ZWE2OWMzOWNhNzVhOTgx
Mzg0YTYxOS4uODg3NTU5Njg0YmI1NGY2ZjY4NmY0MDkxYmUyMDIxNjA5ZTBlNjExMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcApAQCAt
MTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ2NF90LCAwLCBDb250ZW50
RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxlcj4gbV91bnByb2Nlc3NlZE5vZGVzOwogfTsKIAotdm9p
ZCBERkFDb21iaW5lcjo6Y29tYmluZURGQXModW5zaWduZWQgbWluaW11bVNpemUsIGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChERkEmJik+JiBoYW5kbGVyKQordm9pZCBERkFDb21iaW5lcjo6Y29t
YmluZURGQXModW5zaWduZWQgbWluaW11bVNpemUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoREZBJiYp
PiYgaGFuZGxlcikKIHsKICAgICBpZiAobV9kZmFzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmgKaW5k
ZXggYTI3YTg3YWU0MzVjODAxZGM3NmMwNGUxZjdiYmUwYThjNTFlMWVmOS4uNDdjZGJiNWYxY2Iz
NTFiOTM4M2Y3NjVhMTY1ZDE3MGEyNTIyZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBD
b250ZW50RXh0ZW5zaW9ucyB7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBERkFDb21iaW5lciB7CiBw
dWJsaWM6CiAgICAgdm9pZCBhZGRERkEoREZBJiYpOwotICAgIHZvaWQgY29tYmluZURGQXModW5z
aWduZWQgbWluaW11bVNpemUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChERkEmJik+JiBoYW5k
bGVyKTsKKyAgICB2b2lkIGNvbWJpbmVERkFzKHVuc2lnbmVkIG1pbmltdW1TaXplLCBjb25zdCBG
dW5jdGlvbjx2b2lkKERGQSYmKT4mIGhhbmRsZXIpOwogCiBwcml2YXRlOgogICAgIFZlY3RvcjxE
RkE+IG1fZGZhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCmluZGV4IDkyNDhhYzA4Mjc0ZTgzMjYxMmM5
NmJjZjBjNGM1NTE5ZmFjYzk2OGMuLjcyYjg2NzdhY2QzMzYxZTc5NjU1NjQ0NjczMzlmOWNlZTNk
M2VkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0
YWJsZU5GQU5vZGVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaApAQCAtMjE4LDcgKzIxOCw3IEBAIHByaXZhdGU6
CiAgICAgVHlwZWRJbW11dGFibGVORkEqIG1faW1tdXRhYmxlTkZBIHsgbnVsbHB0ciB9OwogICAg
IE11dGFibGVSYW5nZUxpc3Q8Q2hhcmFjdGVyVHlwZSwgVGFyZ2V0U2V0PiBtX3JhbmdlczsKICAg
ICBUYXJnZXRTZXQgbV9lcHNpbG9uVHJhbnNpdGlvblRhcmdldHM7Ci0gICAgSGFzaFNldDxBY3Rp
b25UeXBlLCBXVEY6OkludEhhc2g8QWN0aW9uVHlwZT4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8QWN0aW9uVHlwZT4+IG1fYWN0aW9uczsKKyAgICBIYXNoU2V0PEFjdGlvblR5
cGUsIEludEhhc2g8QWN0aW9uVHlwZT4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8QWN0aW9uVHlwZT4+IG1fYWN0aW9uczsKICAgICB1aW50MzJfdCBtX25vZGVJZDsKICAgICBi
b29sIG1fZmluYWxpemVkIHsgdHJ1ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL05GQU5vZGUuaAppbmRleCBhYWFlZDMxMTQwMzNiNDMzM2JiMTA1MTQ1OThkMzllNDYw
YjljM2IyLi41ZWQ5ZmY0MmNmNDI1ZTMxMmVhODNjMmQwMDA2MWYxY2MwNTE3MzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKIC8vIEEgTkZBTm9kZSBhYnN0cmFjdCB0
aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBORkEgc3RhdGUuCiAKLXR5cGVkZWYgVmVjdG9y
PHVpbnQ2NF90LCAwLCBXVEY6OkNyYXNoT25PdmVyZmxvdywgMT4gQWN0aW9uTGlzdDsKK3R5cGVk
ZWYgVmVjdG9yPHVpbnQ2NF90LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDE+IEFjdGlvbkxpc3Q7CiB0
eXBlZGVmIEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNp
Z25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IE5GQU5vZGVJbmRleFNldDsKIHR5
cGVkZWYgSGFzaE1hcDx1aW50MTZfdCwgTkZBTm9kZUluZGV4U2V0LCBEZWZhdWx0SGFzaDx1aW50
MTZfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDE2X3Q+PiBORkFO
b2RlVHJhbnNpdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL1Rlcm0uaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaApp
bmRleCA0OTMwZjQ2N2ZkOTUxMDg1N2Q4NDE4ZmYzN2FhNWRjZWJiNmIwYWU4Li5mMDYyZWZjZTcy
ZTMyZmViZjg2YmIyM2M0YmNlNmI3OGMyZGE4MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvVGVybS5oCkBAIC01NTcsNyArNTU3LDcgQEAgaW5saW5lIHVuc2lnbmVkIFRlcm06
Omhhc2goKSBjb25zdAogICAgICAgICBzZWNvbmRhcnkgPSBtX2F0b21EYXRhLmdyb3VwLmhhc2go
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6OnBhaXJJbnRIYXNoKHBy
aW1hcnksIHNlY29uZGFyeSk7CisgICAgcmV0dXJuIHBhaXJJbnRIYXNoKHByaW1hcnksIHNlY29u
ZGFyeSk7CiB9CiAKIGlubGluZSBib29sIFRlcm06OmlzRW1wdHlWYWx1ZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCmluZGV4IGIxNjhhZGEzNGNmZDUw
OGE5N2MxMTY5ZjhiMzg1N2UwMGZkNmNhYWIuLjQ4MWJiZjFjOWY2ZTc4ZWE0YmIyZDczMTY1MjAz
OTM4NGU2YTA3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdv
cml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3Bw
CkBAIC0xMDgsMTIgKzEwOCwxMiBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaEFsZ29yaXRobU9wZXJh
dGlvbihXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udAogICAgICAgICB9
KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OmRpc3BhdGNoT3BlcmF0aW9uSW5Xb3JrUXVl
dWUoV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9u
Q2FsbGJhY2ssIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PigpPiYm
IG9wZXJhdGlvbikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaXNwYXRjaE9wZXJhdGlvbkluV29y
a1F1ZXVlKFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBGdW5jdGlvbjxFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+KCk+JiYg
b3BlcmF0aW9uKQogewogICAgIGRpc3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKHdvcmtRdWV1ZSwg
Y29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBX
VEZNb3ZlKG9wZXJhdGlvbikpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hP
cGVyYXRpb25JbldvcmtRdWV1ZShXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8Ym9vbD4o
KT4mJiBvcGVyYXRpb24pCit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hPcGVyYXRpb25J
bldvcmtRdWV1ZShXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhj
ZXB0aW9uQ2FsbGJhY2ssIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPGJvb2w+KCk+JiYgb3BlcmF0aW9u
KQogewogICAgIGRpc3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwg
V1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBXVEZNb3ZlKG9w
ZXJhdGlvbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCmluZGV4
IGI5YzRkNGJlNGMyZDFiODIxMjVlYzRhZmJhNmIyNDJkZDkwNDhiM2UuLjQwZGJiMGFkNjFiMGY3
YWY2M2FmZjRhOTYwODcyODBhZGQyZmY0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
QWxnb3JpdGhtLmgKQEAgLTU0LDE0ICs1NCwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAotICAgIHVz
aW5nIEJvb2xDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChib29sKT47Ci0gICAgdXNpbmcg
S2V5Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ3J5cHRvS2V5Jik+OwotICAgIHVzaW5n
IEtleU9yS2V5UGFpckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEtleU9yS2V5UGFpciYm
KT47CisgICAgdXNpbmcgQm9vbENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sKT47CisgICAg
dXNpbmcgS2V5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKENyeXB0b0tleSYpPjsKKyAgICB1c2lu
ZyBLZXlPcktleVBhaXJDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoS2V5T3JLZXlQYWlyJiYpPjsK
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTM5NQotICAgIHVzaW5nIFZlY3RvckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYpPjsKLSAgICB1c2luZyBWb2lkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT47Ci0gICAgdXNpbmcgRXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoRXhjZXB0aW9uQ29kZSk+OwotICAgIHVzaW5nIEtleURhdGFDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJik+OworICAgIHVzaW5nIFZl
Y3RvckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8dWludDhfdD4mKT47Cisg
ICAgdXNpbmcgVm9pZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKKyAgICB1c2luZyBFeGNl
cHRpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uQ29kZSk+OworICAgIHVzaW5n
IEtleURhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRh
JiYpPjsKIAogICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdv
cmtRdWV1ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9y
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFdvcmtRdWV1ZSYpOwpAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHVud3JhcEtleShSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJik7CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjxz
aXplX3Q+IGdldEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJik7CiAK
LSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaE9wZXJhdGlvbkluV29ya1F1ZXVlKFdvcmtRdWV1ZSYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4oKT4mJik7
Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hPcGVyYXRpb25JbldvcmtRdWV1ZShXb3JrUXVldWUm
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxi
YWNrJiYsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8Ym9vbD4oKT4mJik7CisgICAgc3RhdGlj
IHZvaWQgZGlzcGF0Y2hPcGVyYXRpb25JbldvcmtRdWV1ZShXb3JrUXVldWUmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgRnVu
Y3Rpb248RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PigpPiYmKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaE9wZXJhdGlvbkluV29ya1F1ZXVlKFdvcmtRdWV1ZSYsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgRnVuY3Rpb248
RXhjZXB0aW9uT3I8Ym9vbD4oKT4mJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCmluZGV4IDBiYjBhYWU3MmIx
YmQ3YWQ0NTdiMDI5NDYwN2VmY2FmMjIwMzc0MTEuLjdlMTRlZTUyZDU2MzM5YWE3ZGYwNDYzYzQx
MjY4M2U3ZGM5ZWI4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0Ny
eXB0b0tleVJTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJT
QS5oCkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBrZXlTaXplSW5CaXRz
KCkgY29uc3Q7CiAKLSAgICB1c2luZyBLZXlQYWlyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoQ3J5cHRvS2V5UGFpciYmKT47Ci0gICAgdXNpbmcgVm9pZENhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKCk+OworICAgIHVzaW5nIEtleVBhaXJDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
Q3J5cHRvS2V5UGFpciYmKT47CisgICAgdXNpbmcgVm9pZENhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZCgpPjsKICAgICBzdGF0aWMgdm9pZCBnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIHVuc2ln
bmVkIG1vZHVsdXNMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHVibGljRXhwb25lbnQs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlQYWlyQ2FsbGJhY2sm
JiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlSU0E+IGltcG9ydEp3ayhDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+
IGhhc2gsIEpzb25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXApOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBpbXBvcnRTcGtpKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4
IDJkZmY1YjE1MTVjMjlhNjA3ZGQwODE4ZjAxODBlODNjZWRiNzc3MzIuLjc3YTFhMjA4Yzc1MjJl
NmZmNzIxZmY2MTVkZjNmY2Y5YmM1MDc1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIGlubGluZSB2b2lkIENTU0Nyb3NzZmFk
ZVZhbHVlOjpjcm9zc2ZhZGVDaGFuZ2VkKCkKICAgICAgICAgY2xpZW50LmtleS0+aW1hZ2VDaGFu
Z2VkKHRoaXMpOwogfQogCi1ib29sIENTU0Nyb3NzZmFkZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291
cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBo
YW5kbGVyKSBjb25zdAorYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJj
ZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikg
Y29uc3QKIHsKICAgICBpZiAobV9jYWNoZWRGcm9tSW1hZ2UgJiYgaGFuZGxlcigqbV9jYWNoZWRG
cm9tSW1hZ2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmgKaW5kZXggOTQ5ZWQ0MWEwNDVhZTdhZjk5YWFkNmJkMGE3YjNmYjFkNjJmNjEw
OS4uODQyYmVjM2E0ODlkYmIyY2EyMjI5ZGUxYWYzMDFmYTQ0ZmJkZGQ2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJik7CiAKLSAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0
IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNv
bnN0OworICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChj
b25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICBSZWZQdHI8Q1NT
Q3Jvc3NmYWRlVmFsdWU+IGJsZW5kKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJiwgY29uc3QgQmxl
bmRpbmdDb250ZXh0JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcAppbmRleCA4Y2Y5MDlhZTllNTM3MjRiOTFkYjRhY2UxNGFlMjg1NzFkZDk1NTI2
Li5jNjdhMzViMDcxNWI3MjFlZDg5OTJkZWNkNDlmYThkMGI4MDY0NzcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9p
ZCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpGaWx0ZXJTdWJpbWFnZU9ic2VydmVyUHJveHk6OmltYWdl
Q2hhbmdlZChDYWNoZWRJbWFnZSoKICAgICAgICAgbV9vd25lclZhbHVlLT5maWx0ZXJJbWFnZUNo
YW5nZWQoKnJlY3QpOwogfQogCi1ib29sIENTU0ZpbHRlckltYWdlVmFsdWU6OnRyYXZlcnNlU3Vi
cmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2Um
KT4mIGhhbmRsZXIpIGNvbnN0Citib29sIENTU0ZpbHRlckltYWdlVmFsdWU6OnRyYXZlcnNlU3Vi
cmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhY2hlZEltYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAppbmRleCA1MDRj
MmFkOGQxNWNiNGM1M2UyNDI5MzEwM2QyMWQ2YTNjMDI2ODY4Li4zM2MyMjAwODZjOThmZjcyMjlm
MDZmMzFlODA2MWZkYzAyY2ZmNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkU3ViaW1h
Z2VzKENhY2hlZFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7
CiAKLSAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9v
bCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OworICAgIGJvb2wgdHJh
dmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJj
ZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NGaWx0ZXJJ
bWFnZVZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmNwcAppbmRleCA1NjQyNDRmNzkwNWEyNzViZjE1NDYzNDU2OGNmM2ZmYzA0YWNlNmE5Li4z
MDVjMzJlYTgwY2NlNTkwYjRiNjFkMDVkOWE1MGMyZjYyZTlkNmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFN0cmluZyBD
U1NGb250RmFjZVNyY1ZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gbWFr
ZVN0cmluZyhwcmVmaXgsIHNlcmlhbGl6ZVN0cmluZyhtX3Jlc291cmNlKSwgIikiLCAiIGZvcm1h
dCgiLCBzZXJpYWxpemVTdHJpbmcobV9mb3JtYXQpLCAiKSIpOwogfQogCi1ib29sIENTU0ZvbnRG
YWNlU3JjVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9v
bCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0Citib29sIENTU0ZvbnRG
YWNlU3JjVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29u
c3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhY2hl
ZEZvbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5oCmluZGV4IGNiZTE0MTFlNDZjNGVkNzZlNzExYmMzNDFlNjU5OTAzZjUwZmFi
Y2IuLmQzNGRhZmNmNWFmNTg0ZjAzMmIxN2ZiYjc4MmYyZTU0MzU1YjgwZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgYm9vbCB0cmF2ZXJz
ZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291
cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNv
bnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlhdGluZ0Vs
ZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmgKaW5kZXggZjk3OGExNGU0NTUxYjIwZmI5NzgxYmYxZjY4MDFiZTRmZTIzOWEwNS4uMTRh
MDQ1NDlkNDEwOGNlNTMyOTI1ODNiMzhlNDcwMzI3ZjE5NGJhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuaApAQCAtMTI4LDE1ICsxMjgsMTUgQEAgcHJpdmF0ZToKICAgICBSZWY8
Q1NTRm9udEZhY2VTZXQ+IG1fY3NzRm9udEZhY2VTZXQ7CiAgICAgSGFzaFNldDxGb250U2VsZWN0
b3JDbGllbnQqPiBtX2NsaWVudHM7CiAKLSAgICBzdHJ1Y3QgUGFsZXR0ZU1hcEhhc2ggOiBXVEY6
OkRlZmF1bHRIYXNoPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4geworICAgIHN0
cnVjdCBQYWxldHRlTWFwSGFzaCA6IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBB
dG9tU3RyaW5nPj4gewogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBzdGQ6OnBh
aXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4mIGtleSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHBhaXJJbnRIYXNoKEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaDo6aGFzaChrZXkuZmly
c3QpLCBXVEY6OkRlZmF1bHRIYXNoPEF0b21TdHJpbmc+OjpoYXNoKGtleS5zZWNvbmQpKTsKKyAg
ICAgICAgICAgIHJldHVybiBwYWlySW50SGFzaChBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g6Omhh
c2goa2V5LmZpcnN0KSwgRGVmYXVsdEhhc2g8QXRvbVN0cmluZz46Omhhc2goa2V5LnNlY29uZCkp
OwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qgc3RkOjpwYWly
PEF0b21TdHJpbmcsIEF0b21TdHJpbmc+JiBhLCBjb25zdCBzdGQ6OnBhaXI8QXRvbVN0cmluZywg
QXRvbVN0cmluZz4mIGIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g6OmVxdWFsKGEuZmlyc3QsIGIuZmlyc3QpICYmIFdURjo6RGVmYXVsdEhh
c2g8QXRvbVN0cmluZz46OmVxdWFsKGEuc2Vjb25kLCBiLnNlY29uZCk7CisgICAgICAgICAgICBy
ZXR1cm4gQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOjplcXVhbChhLmZpcnN0LCBiLmZpcnN0KSAm
JiBEZWZhdWx0SGFzaDxBdG9tU3RyaW5nPjo6ZXF1YWwoYS5zZWNvbmQsIGIuc2Vjb25kKTsKICAg
ICAgICAgfQogICAgIH07CiAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0
cmluZz4sIEZvbnRQYWxldHRlVmFsdWVzLCBQYWxldHRlTWFwSGFzaD4gbV9wYWxldHRlTWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IDE1NTEwMTI4M2M2MjZj
YTE4YTMzYjAyYmFiMTI3OGU5NmI4YjBmMzguLjllYzQ3OGJkYjFiZjM4MDg2ZTMwYzhkZTc0ODhk
NWZmOGE1MzRkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAg
LTEzNyw3ICsxMzcsNyBAQCBTdHJpbmcgQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCi1ib29sIENTU0ltYWdl
U2V0VmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAo
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0Citib29sIENTU0ltYWdlU2V0
VmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2VsZWN0ZWRJ
bWFnZVZhbHVlICYmIG1fc2VsZWN0ZWRJbWFnZVZhbHVlLT50cmF2ZXJzZVN1YnJlc291cmNlcyho
YW5kbGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCmluZGV4IDk1MDIx
N2Q0MDRiZjE0OTA1MjcwNzI1NDA2MTE5NjE5MGYxN2JlOTYuLmY0M2MzOWIyYjA2YjkzYjQ2OGM0
MzMzYjY1YTRkZmEyZDE3MDNiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZVNldFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUu
aApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgp
IGNvbnN0OwogCi0gICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0
aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBi
b29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVk
UmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVEZXZpY2VTY2Fs
ZUZhY3Rvcihjb25zdCBEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5j
cHAKaW5kZXggZTk4ZTI4MjdjZTAyMThhZDI0NWJmMzExNWFhZGQ4N2RkNGUxNTdhMC4uNmUyZWEw
YjhlMzNhYzkzOTJjNjI0NTE3OGZjZmZiMmRkN2NmZGQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZVZhbHVlLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZVZh
bHVlOjpsb2FkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3Vy
CiAgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2UudmFsdWUoKS5nZXQoKTsKIH0KIAotYm9vbCBDU1NJ
bWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wg
KGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBDU1NJbWFnZVZh
bHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hl
ZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAgIHJldHVybiBtX2NhY2hlZEltYWdl
LnZhbHVlX29yKG51bGxwdHIpICYmIGhhbmRsZXIoKiptX2NhY2hlZEltYWdlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IDAyMDA1NmQ4NGZjNzE5N2EzNjVhNzg4NTE1MTM2
NDc2YTllYTFmMjAuLmY0OTM3Yjg2MTVjNmYwYzAwNDkyYzJkZDg4MjYwYTI4MzNhMDAyZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAK
ICAgICBSZWY8RGVwcmVjYXRlZENTU09NVmFsdWU+IGNyZWF0ZURlcHJlY2F0ZWRDU1NPTVdyYXBw
ZXIoQ1NTU3R5bGVEZWNsYXJhdGlvbiYpIGNvbnN0OwogCi0gICAgYm9vbCB0cmF2ZXJzZVN1YnJl
c291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+
JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1
bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCiAg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTSW1hZ2VWYWx1ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmNwcAppbmRleCAxZWRlMThjNjI3NWUyMGQzZWUyOGY4MTBiYWJhNjJiYjIwMmVhYzE3
Li42MWFjNzExYTczNTFmZGRkZGQ3ZjI2ZjY5MDI4MGQzZDgxYTYxZjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBDU1NWYWx1ZTo6VHlwZSBDU1NWYWx1ZTo6
Y3NzVmFsdWVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gQ1NTX0NVU1RPTTsKIH0KIAotYm9vbCBD
U1NWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChj
b25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKK2Jvb2wgQ1NTVmFsdWU6OnRy
YXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4oKnRoaXMp
KQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdGhpcykudHJhdmVyc2VT
dWJyZXNvdXJjZXMoaGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDVjZmU2MGRlYWI3
Y2JjMzg5NDE0NmU1ZDEzZmI0NTM2YmFlN2Q3MzMuLmFlNTA2ZWY3Yzk5NzI3MTI4YTFkODEzYzVk
MjI2NGI1MGM3ZjMxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAg
cHVibGljOgogCiAgICAgUmVmPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBjcmVhdGVEZXByZWNhdGVk
Q1NTT01XcmFwcGVyKENTU1N0eWxlRGVjbGFyYXRpb24mKSBjb25zdDsKIAotICAgIGJvb2wgdHJh
dmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRS
ZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CisgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNl
cyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBj
b25zdDsKIAogICAgIC8vIFdoYXQgcHJvcGVydGllcyBkb2VzIHRoaXMgdmFsdWUgcmVseSBvbiAo
ZWcsIGZvbnQtc2l6ZSBmb3IgZW0gdW5pdHMpCiAgICAgdm9pZCBjb2xsZWN0RGlyZWN0Q29tcHV0
YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCmluZGV4IDA1ODYxOTY1MmQ4M2Q3ZmU3YjhmNmYzM2Ix
YTg3ZWNhZGYzZGUyZWMuLjJiMjQzM2Y3MjYxMjAzYjY2YTk1ZGI3NWIyNDk1MGM3ZTBmZDhhZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9v
bCBDU1NWYWx1ZUxpc3Q6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAg
cmV0dXJuIG1fdmFsdWVzWzBdLmdldCgpLmVxdWFscyhvdGhlcik7CiB9CiAKLWJvb2wgQ1NTVmFs
dWVMaXN0Ojp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNv
bnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBDU1NWYWx1ZUxpc3Q6
OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVz
b3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fdmFsdWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtX3ZhbHVlc1tpXS5nZXQoKS50
cmF2ZXJzZVN1YnJlc291cmNlcyhoYW5kbGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaApp
bmRleCA2MWM4Njk2NGQzNTkwYjFjNzNjYzdhOTkwYThjNzA2YTBlMTU2MGIwLi5iYjEyNzNhNWZk
M2VlOGU2ODgwYmE3NjdhZjkyOTE3ZWJkZGE3NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlz
dC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NW
YWx1ZUxpc3QmKSBjb25zdDsKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYWx1ZSYpIGNvbnN0
OwogCi0gICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRy
YXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgc2VwYXJhdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZVNlcGFyYXRvcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuY3BwCmluZGV4IDkxYmZiMmE0ZWZkN2NiODgxN2E4NzMwOGVjNTY0MzQ0MGY5YWEyY2Iu
LmM2YmUwZmJhNjg4YzhjYTMwYjdjMmYxM2IzZmJmYjJmOWExOTU0NTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0xMzg4LDcgKzEzODgsNyBAQCB2b2lkIE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6Om1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGNvbnN0IFN0eWxl
UHJvcGVydGllcyYgbwogICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eShvdGhlci5wcm9wZXJ0eUF0
KGkpLnRvQ1NTUHJvcGVydHkoKSk7CiB9CiAKLWJvb2wgU3R5bGVQcm9wZXJ0aWVzOjp0cmF2ZXJz
ZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291
cmNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBTdHlsZVByb3BlcnRpZXM6OnRyYXZlcnNlU3Vi
cmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHByb3BlcnR5Q291bnQoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0aWVzLmgKaW5kZXggNmNkNmJjMDdkMmMyMWRkNWIwNzQxNzE1ZTI2ZGM2YTlmNzU3
OWM1My4uZjQ4OWU3ZTMyOWE2MjcxNzZhOTI1NGMxNGYyZTE4MDIzM2RhNzkwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0NTU09NV3JhcHBlcigpIGNvbnN0OwogICAgIGJvb2wgaXNNdXRhYmxlKCkgY29u
c3QgeyByZXR1cm4gdHlwZSgpID09IE11dGFibGVQcm9wZXJ0aWVzVHlwZTsgfQogCi0gICAgYm9v
bCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENh
Y2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVz
b3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRs
ZXIpIGNvbnN0OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGF2ZXJhZ2VTaXplSW5CeXRlcygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCmluZGV4IGJhNDM2NTNh
MGExNmJjYTk2MDIxNjc5Mjc5NTAxMmMzYTdjMmUxODEuLjY5YjMwOTM5MmEwNWNlNGU2MmM3ZGM1
NjUzYzAyN2M3ODRjNGU5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVu
dHMuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgRG9jdW1lbnQqIFN0eWxlU2hlZXRDb250ZW50czo6
c2luZ2xlT3duZXJEb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG93bmVyTm9kZSA/ICZvd25l
ck5vZGUtPmRvY3VtZW50KCkgOiBudWxscHRyOwogfQogCi1zdGF0aWMgYm9vbCB0cmF2ZXJzZVJ1
bGVzSW5WZWN0b3IoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBj
b25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IFN0eWxlUnVsZUJhc2UmKT4mIGhhbmRsZXIp
CitzdGF0aWMgYm9vbCB0cmF2ZXJzZVJ1bGVzSW5WZWN0b3IoY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0eWxlUnVs
ZUJhc2UmKT4mIGhhbmRsZXIpCiB7CiAgICAgZm9yIChhdXRvJiBydWxlIDogcnVsZXMpIHsKICAg
ICAgICAgaWYgKGhhbmRsZXIoKnJ1bGUpKQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHN0YXRpYyBib29s
IHRyYXZlcnNlUnVsZXNJblZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYgcnVsZXMsIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFN0eWxlU2hlZXRDb250
ZW50czo6dHJhdmVyc2VSdWxlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IFN0eWxl
UnVsZUJhc2UmKT4mIGhhbmRsZXIpIGNvbnN0Citib29sIFN0eWxlU2hlZXRDb250ZW50czo6dHJh
dmVyc2VSdWxlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0eWxlUnVsZUJhc2UmKT4mIGhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBpbXBvcnRSdWxlIDogbV9pbXBvcnRSdWxl
cykgewogICAgICAgICBpZiAoaGFuZGxlcigqaW1wb3J0UnVsZSkpCkBAIC00OTUsNyArNDk1LDcg
QEAgYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6OnRyYXZlcnNlUnVsZXMoY29uc3QgV1RGOjpGdW5j
dGlvbjxib29sIChjb25zdCBTdHlsZVJ1bGUKICAgICByZXR1cm4gdHJhdmVyc2VSdWxlc0luVmVj
dG9yKG1fY2hpbGRSdWxlcywgaGFuZGxlcik7CiB9CiAKLWJvb2wgU3R5bGVTaGVldENvbnRlbnRz
Ojp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENh
Y2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6
OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVz
b3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRyYXZlcnNlUnVsZXMoWyZd
IChjb25zdCBTdHlsZVJ1bGVCYXNlJiBydWxlKSB7CiAgICAgICAgIHN3aXRjaCAocnVsZS50eXBl
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCAzYmMyYmUy
ODcwN2QxYmM3MGJlMWZjNmQ1MTRiYTQyOGY0MzVhNDljLi41MzAwMjUyMzY0YTY2NTAwZGRhZDc2
Y2ExZmE5NzJlNGFlNjc2YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5oCkBAIC04Nyw4ICs4Nyw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbG9hZENvbXBsZXRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZENvbXBsZXRlZDsgfQogCi0gICAgYm9vbCB0cmF2ZXJzZVJ1
bGVzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgU3R5bGVSdWxlQmFzZSYpPiYgaGFu
ZGxlcikgY29uc3Q7Ci0gICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1
bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAg
ICBib29sIHRyYXZlcnNlUnVsZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHlsZVJ1bGVC
YXNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNv
bnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0KGJvb2wgYikgeyBtX2lzVXNlclN0eWxl
U2hlZXQgPSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4g
bV9pc1VzZXJTdHlsZVNoZWV0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFr
ZXByb3AucGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKaW5kZXggMGM3ODhiODll
OTUzZTBkNjQ1MzUzNzk1OTE4NDUyZjliMzRmNmIxOC4uZjk0MTkxNzRmNWEwOWU1ZDBmYTlmZTVk
NmRlNmViYWM1MDQyYmI4MCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9w
LnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtNTY3LDcgKzU2Nyw3
IEBAIFN0cmluZyBnZXRKU1Byb3BlcnR5TmFtZShDU1NQcm9wZXJ0eUlEIGlkKQogICAgICAgICAq
cmVzdWx0UG9pbnRlcisrID0gY2hhcmFjdGVyOwogICAgIH0KICAgICAqcmVzdWx0UG9pbnRlciA9
ICdcXDAnOwotICAgIHJldHVybiBXVEY6OlN0cmluZyhyZXN1bHQpOworICAgIHJldHVybiBTdHJp
bmcocmVzdWx0KTsKIH0KIAogc3RhdGljIGNvbnN0IGJvb2wgaXNJbmhlcml0ZWRQcm9wZXJ0eVRh
YmxlW251bUNTU1Byb3BlcnRpZXMgKyAkbnVtUHJlZGVmaW5lZFByb3BlcnRpZXNdID0gewpAQCAt
ODQ2LDkgKzg0Niw5IEBAIGJvb2wgaXNJbnRlcm5hbENTU1Byb3BlcnR5KGNvbnN0IENTU1Byb3Bl
cnR5SUQpOwogYm9vbCBpc0VuYWJsZWRDU1NQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eUlEKTsK
IGJvb2wgaXNDU1NQcm9wZXJ0eUVuYWJsZWRCeVNldHRpbmdzKGNvbnN0IENTU1Byb3BlcnR5SUQs
IGNvbnN0IFNldHRpbmdzKiA9IG51bGxwdHIpOwogY29uc3QgY2hhciogZ2V0UHJvcGVydHlOYW1l
KENTU1Byb3BlcnR5SUQpOwotY29uc3QgV1RGOjpBdG9tU3RyaW5nJiBnZXRQcm9wZXJ0eU5hbWVB
dG9tU3RyaW5nKENTU1Byb3BlcnR5SUQgaWQpOwotV1RGOjpTdHJpbmcgZ2V0UHJvcGVydHlOYW1l
U3RyaW5nKENTU1Byb3BlcnR5SUQgaWQpOwotV1RGOjpTdHJpbmcgZ2V0SlNQcm9wZXJ0eU5hbWUo
Q1NTUHJvcGVydHlJRCk7Citjb25zdCBBdG9tU3RyaW5nJiBnZXRQcm9wZXJ0eU5hbWVBdG9tU3Ry
aW5nKENTU1Byb3BlcnR5SUQgaWQpOworU3RyaW5nIGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQ
cm9wZXJ0eUlEIGlkKTsKK1N0cmluZyBnZXRKU1Byb3BlcnR5TmFtZShDU1NQcm9wZXJ0eUlEKTsK
IENTU1Byb3BlcnR5SUQgZ2V0UmVsYXRlZFByb3BlcnR5SWQoQ1NTUHJvcGVydHlJRCBpZCk7CiAK
IGlubGluZSBDU1NQcm9wZXJ0eUlEIGNvbnZlcnRUb0NTU1Byb3BlcnR5SUQoaW50IHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2V2YWx1ZXMucGwgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZXZhbHVlcy5wbAppbmRleCAxMTNmMTYyOGVkYzRlYWViMzUyNjVhYzBiZjk3
ZjYzMjYwMzE2YTMwLi4wZjgyMTlkNGNjYjUxZWNhNTI1ZDgyOWE3NjA2YjI3YjBmYTI3MzAzIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbApAQCAtMjA0LDggKzIwNCw4IEBAIHByaW50IEhFQURF
UiAiY29uc3Qgc2l6ZV90IG1heENTU1ZhbHVlS2V5d29yZExlbmd0aCA9ICIgLiAkbWF4TGVuIC4g
IjtcbiI7CiBwcmludCBIRUFERVIgPDwgIkVPRiI7CiAKIGNvbnN0IGNoYXIqIGdldFZhbHVlTmFt
ZSh1bnNpZ25lZCBzaG9ydCBpZCk7Ci1jb25zdCBXVEY6OkF0b21TdHJpbmcmIGdldFZhbHVlTmFt
ZUF0b21TdHJpbmcoQ1NTVmFsdWVJRCBpZCk7Ci1XVEY6OlN0cmluZyBnZXRWYWx1ZU5hbWVTdHJp
bmcoQ1NTVmFsdWVJRCBpZCk7Citjb25zdCBBdG9tU3RyaW5nJiBnZXRWYWx1ZU5hbWVBdG9tU3Ry
aW5nKENTU1ZhbHVlSUQgaWQpOworU3RyaW5nIGdldFZhbHVlTmFtZVN0cmluZyhDU1NWYWx1ZUlE
IGlkKTsKIAogaW5saW5lIENTU1ZhbHVlSUQgY29udmVydFRvQ1NTVmFsdWVJRChpbnQgdmFsdWUp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQ
YXRocy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5j
cHAKaW5kZXggMGRhMWZiMDZjMjhiMTc3OGFlMWU1NTU2Nzg0YWM5OGRhOGNhOTQ0Ny4uMzdhMTE1
MWFkYTJlOTc1YjRjYzQ3ZDdiNmU0Nzk2ODNkMWMxNjNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcApAQCAtMTEzNSw3ICsxMTM1LDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zv
cm1UcmFuc2xhdGVBcmd1bWVudHMoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2ln
bmVkIGV4cGVjdGVkQ291bnQsIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlKQogewog
ICAgIHdoaWxlIChleHBlY3RlZENvdW50KSB7Ci0gICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBX
VEY6OmZpbmQocG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6ICcsJyk7
CisgICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3Rl
ZENvdW50ID09IDEgPyAnKScgOiAnLCcpOwogICAgICAgICBpZiAoZGVsaW1pdGVyID09IG5vdEZv
dW5kKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVu
dExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxpbWl0ZXIpOwpAQCAtMTE1Nyw3ICsx
MTU3LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1UcmFuc2xhdGVBcmd1bWVudHMoQ2hh
clR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2kKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4KIHN0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtQW5nbGVBcmd1bWVudChDaGFyVHlwZSom
IHBvcywgQ2hhclR5cGUqIGVuZCwgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUpCiB7
Ci0gICAgc2l6ZV90IGRlbGltaXRlciA9IFdURjo6ZmluZChwb3MsIGVuZCAtIHBvcywgJyknKTsK
KyAgICBzaXplX3QgZGVsaW1pdGVyID0gZmluZChwb3MsIGVuZCAtIHBvcywgJyknKTsKICAgICBp
ZiAoZGVsaW1pdGVyID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEx
NzksNyArMTE3OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIHN0YXRpYyBib29s
IHBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKENoYXJUeXBlKiYgcG9zLCBDaGFyVHlwZSog
ZW5kLCB1bnNpZ25lZCBleHBlY3RlZENvdW50LCBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1W
YWx1ZSkKIHsKICAgICB3aGlsZSAoZXhwZWN0ZWRDb3VudCkgewotICAgICAgICBzaXplX3QgZGVs
aW1pdGVyID0gV1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3RlZENvdW50ID09IDEgPyAn
KScgOiAnLCcpOworICAgICAgICBzaXplX3QgZGVsaW1pdGVyID0gZmluZChwb3MsIGVuZCAtIHBv
cywgZXhwZWN0ZWRDb3VudCA9PSAxID8gJyknIDogJywnKTsKICAgICAgICAgaWYgKGRlbGltaXRl
ciA9PSBub3RGb3VuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgdW5zaWdu
ZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVsaW1pdGVyKTsKQEAg
LTEzNTMsNyArMTM1Myw3IEBAIHN0YXRpYyBib29sIHRyYW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQ
YXRoKGNvbnN0IENoYXJUeXBlKiBjaGFycywgdW5zaWduZWQgbGVuZ3RoCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgc2l6ZV90
IGFyZ3VtZW50c0VuZCA9IFdURjo6ZmluZChjaGFycywgbGVuZ3RoLCAnKScsIGkpOworICAgICAg
ICBzaXplX3QgYXJndW1lbnRzRW5kID0gZmluZChjaGFycywgbGVuZ3RoLCAnKScsIGkpOwogICAg
ICAgICBpZiAoYXJndW1lbnRzRW5kID09IG5vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXgg
ODU5MThlNWE3Y2ZjNWJjNTUxMDFkMjkxZGIzOTQxZTYzMThmZGI3MS4uNWZiOTQwN2ZmZmI2NDUw
Y2U3ZDYwMmU5ZDNhZDJlZjE3MTU5YjU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgYm9v
bCBpc0FwcGxlTGVnYWN5Q3NzVmFsdWVLZXl3b3JkKGNvbnN0IGNoYXIqIHZhbHVlS2V5d29yZCwg
dW5zaWduZWQgbGVuZwogICAgICYmICFoYXNQcmVmaXgodmFsdWVLZXl3b3JkLCBsZW5ndGgsIGFw
cGxlU3lzdGVtUHJlZml4KQogICAgICYmICFoYXNQcmVmaXgodmFsdWVLZXl3b3JkLCBsZW5ndGgs
IGFwcGxlUGF5UHJlZml4KQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICYmICFXVEY6OmVxdWFs
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPih2YWx1ZUtleXdvcmQpLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oYXBwbGVXaXJlbGVzc1BsYXliYWNrVGFyZ2V0QWN0aXZlKSwg
bGVuZ3RoKQorICAgICYmICFlcXVhbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odmFs
dWVLZXl3b3JkKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGFwcGxlV2lyZWxlc3NQ
bGF5YmFja1RhcmdldEFjdGl2ZSksIGxlbmd0aCkKICNlbmRpZgogICAgIDsKIH0KQEAgLTE0Niw3
ICsxNDYsNyBAQCBzdGF0aWMgQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChjb25zdCBDaGFy
YWN0ZXJUeXBlKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkCiAgICAgICAgIENoYXJhY3RlclR5cGUg
YyA9IHZhbHVlS2V5d29yZFtpXTsKICAgICAgICAgaWYgKCFjIHx8IGMgPj0gMHg3RikKICAgICAg
ICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7IC8vIGlsbGVnYWwga2V5d29yZC4KLSAgICAg
ICAgYnVmZmVyW2ldID0gV1RGOjp0b0FTQ0lJTG93ZXIoYyk7CisgICAgICAgIGJ1ZmZlcltpXSA9
IHRvQVNDSUlMb3dlcihjKTsKICAgICB9CiAgICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwCmluZGV4IDA0ZTFjODRjYjVmYWI2ODM4ZDRlNzY0MTk5MGVlNTQ3NTgwMzFh
OWYuLjNkNGZmOTQwZTRjZDU0ZTE2ZTBiNTFkNzE4NjIyM2Y3OTA0ZTYzY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5j
cHAKQEAgLTM3NDQsOSArMzc0NCw5IEBAIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3Vt
ZUdlbmVyaWNGYW1pbHlSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudFJhbmdlUmF3KHJhbmdlLCBDU1NWYWx1ZVNlcmlmLCBDU1NWYWx1ZVdlYmtp
dEJvZHkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFdURjo6VmVjdG9yPEZvbnRGYW1pbHlSYXc+PiBj
b25zdW1lRm9udEZhbWlseVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPEZvbnRGYW1pbHlSYXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKLSAgICBXVEY6OlZlY3RvcjxGb250RmFtaWx5UmF3PiBs
aXN0OworICAgIFZlY3RvcjxGb250RmFtaWx5UmF3PiBsaXN0OwogICAgIGRvIHsKICAgICAgICAg
aWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lR2VuZXJpY0ZhbWlseVJhdyhyYW5nZSkpCiAgICAgICAg
ICAgICBsaXN0LmFwcGVuZCh7ICppZGVudCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0
b3JDb21waWxlci5oCmluZGV4IDA0ZTFjMDA3ZTk5YTJhZmRjNTRiOTE2ZThmODI4NTU5MGZmOWMw
YjguLjFiM2Q3ZjE0MDM1MWU3MDE3NGU0ZjFjODg5NTE4NWE1YTNmNDA2NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuaApAQCAtNjEsNyArNjEsNyBAQCBpbmxpbmUg
dW5zaWduZWQgcnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcihDb21waWxlZFNlbGVj
dG9yJiBjb21waWxlZFNlbAogICAgICAgICByZXR1cm4gdm1FbnRyeVRvQ1NTSklUKGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGVsZW1lbnQpLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSks
IDAsIGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
CiAjZW5kaWYKICAgICB1c2luZyBSdWxlQ29sbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2VyID0g
dW5zaWduZWQoKikoY29uc3QgRWxlbWVudCosIHVuc2lnbmVkKik7Ci0gICAgcmV0dXJuIFdURjo6
dW50YWdDRnVuY3Rpb25QdHI8UnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlciwgSlND
OjpDU1NTZWxlY3RvclB0clRhZz4oY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpKShlbGVtZW50LCB2YWx1ZSk7CisgICAgcmV0dXJuIHVudGFnQ0Z1bmN0
aW9uUHRyPFJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIsIEpTQzo6Q1NTU2VsZWN0
b3JQdHJUYWc+KGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSkoZWxlbWVudCwgdmFsdWUpOwogfQogCiBpbmxpbmUgdW5zaWduZWQgcXVlcnlTZWxlY3Rv
clNpbXBsZVNlbGVjdG9yQ2hlY2tlcihDb21waWxlZFNlbGVjdG9yJiBjb21waWxlZFNlbGVjdG9y
LCBjb25zdCBFbGVtZW50KiBlbGVtZW50KQpAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgdW5zaWdu
ZWQgcXVlcnlTZWxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcihDb21waWxlZFNlbGVjdG9yJiBj
b21waWxlZFNlbAogICAgICAgICByZXR1cm4gdm1FbnRyeVRvQ1NTSklUKGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGVsZW1lbnQpLCAwLCAwLCBjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogI2VuZGlmCiAgICAgdXNpbmcgUXVlcnlTZWxlY3RvclNp
bXBsZVNlbGVjdG9yQ2hlY2tlciA9IHVuc2lnbmVkKCopKGNvbnN0IEVsZW1lbnQqKTsKLSAgICBy
ZXR1cm4gV1RGOjp1bnRhZ0NGdW5jdGlvblB0cjxRdWVyeVNlbGVjdG9yU2ltcGxlU2VsZWN0b3JD
aGVja2VyLCBKU0M6OkNTU1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYu
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGVsZW1lbnQpOworICAgIHJldHVybiB1bnRhZ0NG
dW5jdGlvblB0cjxRdWVyeVNlbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2VyLCBKU0M6OkNTU1Nl
bGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKGVsZW1lbnQpOwogfQogCiBpbmxpbmUgdW5zaWduZWQgcnVsZUNvbGxlY3RvclNl
bGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQoQ29tcGlsZWRTZWxlY3RvciYgY29tcGls
ZWRTZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCwgU2VsZWN0b3JDaGVja2VyOjpDaGVj
a2luZ0NvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkKiB2YWx1ZSkKQEAgLTgzLDcgKzgzLDcgQEAg
aW5saW5lIHVuc2lnbmVkIHJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdD
b250ZXh0KENvbXBpbGVkU2VsZWN0b3IKICAgICAgICAgcmV0dXJuIHZtRW50cnlUb0NTU0pJVChi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbGVtZW50KSwgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
Y29udGV4dCksIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSwgY29tcGlsZWRTZWxlY3Rv
ci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICNlbmRpZgogICAgIHVzaW5n
IFJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0ID0gdW5zaWdu
ZWQoKikoY29uc3QgRWxlbWVudCosIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0Kiwg
dW5zaWduZWQqKTsKLSAgICByZXR1cm4gV1RGOjp1bnRhZ0NGdW5jdGlvblB0cjxSdWxlQ29sbGVj
dG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCwgSlNDOjpDU1NTZWxlY3RvclB0
clRhZz4oY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KShlbGVtZW50LCBjb250ZXh0LCB2YWx1ZSk7CisgICAgcmV0dXJuIHVudGFnQ0Z1bmN0aW9uUHRy
PFJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0LCBKU0M6OkNT
U1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpKGVsZW1lbnQsIGNvbnRleHQsIHZhbHVlKTsKIH0KIAogaW5saW5lIHVuc2ln
bmVkIHF1ZXJ5U2VsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0KENvbXBp
bGVkU2VsZWN0b3ImIGNvbXBpbGVkU2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiBjb250ZXh0KQpAQCAtOTQsNyAr
OTQsNyBAQCBpbmxpbmUgdW5zaWduZWQgcXVlcnlTZWxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhD
aGVja2luZ0NvbnRleHQoQ29tcGlsZWRTZWxlY3RvcgogICAgICAgICByZXR1cm4gdm1FbnRyeVRv
Q1NTSklUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVsZW1lbnQpLCBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pihjb250ZXh0KSwgMCwgY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpKTsKICNlbmRpZgogICAgIHVzaW5nIFF1ZXJ5U2VsZWN0b3JTZWxlY3Rv
ckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0ID0gdW5zaWduZWQoKikoY29uc3QgRWxlbWVudCos
IGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0Kik7Ci0gICAgcmV0dXJuIFdU
Rjo6dW50YWdDRnVuY3Rpb25QdHI8UXVlcnlTZWxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVj
a2luZ0NvbnRleHQsIEpTQzo6Q1NTU2VsZWN0b3JQdHJUYWc+KGNvbXBpbGVkU2VsZWN0b3IuY29k
ZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoZWxlbWVudCwgY29udGV4dCk7CisgICAg
cmV0dXJuIHVudGFnQ0Z1bmN0aW9uUHRyPFF1ZXJ5U2VsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRo
Q2hlY2tpbmdDb250ZXh0LCBKU0M6OkNTU1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVjdG9y
LmNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGVsZW1lbnQsIGNvbnRleHQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBTZWxlY3RvckNvbXBpbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCA1YWY3NzZlNTlhYWU3MTBhMzFjYzRjYzM0MWQyOTc3OTA0OTdiOTk0Li45OTQ5Y2I1
Yjc2Y2NhN2FiNGM3ZDczMDRkNTdhNDYxMTcwMjZjZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTM5NjMsNyArMzk2Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JDaGFuZ2Vk
KCkKIH0KIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotc3RhdGljIHZvaWQgcHJvY2Vzc0Nv
bG9yU2NoZW1lU3RyaW5nKFN0cmluZ1ZpZXcgY29sb3JTY2hlbWUsIGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZChTdHJpbmdWaWV3IGtleSk+JiBjYWxsYmFjaykKK3N0YXRpYyB2b2lkIHByb2Nlc3ND
b2xvclNjaGVtZVN0cmluZyhTdHJpbmdWaWV3IGNvbG9yU2NoZW1lLCBjb25zdCBGdW5jdGlvbjx2
b2lkKFN0cmluZ1ZpZXcga2V5KT4mIGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGNvbG9yU2NoZW1lLmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICkgewpAQCAtODUxMyw3ICs4NTEzLDcgQEAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+
PiBEb2N1bWVudDo6Z2V0QW5pbWF0aW9ucygpCiAgICAgfSk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8
V2ViQW5pbWF0aW9uPj4gRG9jdW1lbnQ6Om1hdGNoaW5nQW5pbWF0aW9ucyhjb25zdCBXVEY6OkZ1
bmN0aW9uPGJvb2woRWxlbWVudCYpPiYgZnVuY3Rpb24pCitWZWN0b3I8UmVmUHRyPFdlYkFuaW1h
dGlvbj4+IERvY3VtZW50OjptYXRjaGluZ0FuaW1hdGlvbnMoY29uc3QgRnVuY3Rpb248Ym9vbChF
bGVtZW50Jik+JiBmdW5jdGlvbikKIHsKICAgICAvLyBGb3IgdGhlIGxpc3Qgb2YgYW5pbWF0aW9u
cyB0byBiZSBjdXJyZW50LCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIGFueSBwZW5kaW5nIENTUyBj
aGFuZ2VzLAogICAgIC8vIHN1Y2ggYXMgdXBkYXRlcyB0byBDU1MgQW5pbWF0aW9ucyBhbmQgQ1NT
IFRyYW5zaXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4NzJjMDVhNWRjYmRjMzZjYTA5
Y2IzNTM3ZDQ4MzcxNTE3NzUzOGUyLi41OTI1NzRiZTNjZmUyZjI4ZGFlNzY5MzhmYzE2Y2IxNDUz
Yjk1M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTUzMSw3ICsxNTMxLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VGltZWxpbmUmIHRpbWVsaW5lKCk7CiAgICAg
RG9jdW1lbnRUaW1lbGluZSogZXhpc3RpbmdUaW1lbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZWxpbmUuZ2V0KCk7IH0KICAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IGdldEFuaW1h
dGlvbnMoKTsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IG1hdGNoaW5nQW5pbWF0
aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woRWxlbWVudCYpPiYpOworICAgIFZlY3RvcjxS
ZWZQdHI8V2ViQW5pbWF0aW9uPj4gbWF0Y2hpbmdBbmltYXRpb25zKGNvbnN0IEZ1bmN0aW9uPGJv
b2woRWxlbWVudCYpPiYpOwogICAgIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciogdGltZWxp
bmVzQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmVzQ29udHJvbGxlci5nZXQo
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciYgZW5z
dXJlVGltZWxpbmVzQ29udHJvbGxlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFu
YWdlci5oCmluZGV4IDViZmUzOGRhNjRlNGVkYWVmZWRjYzNkYWQ4MzFmYmYzOGMxZDMxYWIuLjZl
NWFjOTkxMDhiYTljMjlmZDZiM2FkZmEzNzZjMjhjOGQyMDNkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJvdGVjdGVkOgogCiBw
cml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFdURjo6TG9nZ2Vy
JiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmxvZ2dlcigpOyB9CisgICAgY29u
c3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmxvZ2dlcigpOyB9
CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRl
bnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJGdWxsc2NyZWVuTWFuYWdlciI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmgKaW5kZXgg
NGJhMGZhOWNiODhjNGViOGJkM2ZmMTNkZjc2YTg3ZjkwN2EwM2RmZi4uYTBlMTZmZDQwOGZjZWNj
M2IyZjU4M2JiMjdmODJkNDQxODE5ZGI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVT
dHlsZVNoZWV0T3duZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBt
X2lzUGFyc2luZ0NoaWxkcmVuOwogICAgIGJvb2wgbV9sb2FkaW5nOwotICAgIFdURjo6VGV4dFBv
c2l0aW9uIG1fc3RhcnRUZXh0UG9zaXRpb247CisgICAgVGV4dFBvc2l0aW9uIG1fc3RhcnRUZXh0
UG9zaXRpb247CiAgICAgQXRvbVN0cmluZyBtX2NvbnRlbnRUeXBlOwogICAgIEF0b21TdHJpbmcg
bV9tZWRpYTsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBjNGYyOTU5OTkzOWVjMTY4MzJjNmRmNmMwY2VjMDIw
YmNkNDI1MGI0Li5mYmFhMTUzMjk0ZGFmY2E3MWVjZjU2ODYxMjI0ZWJmYjIyZGExZGZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBj
b25zdCBhdXRvIG1heFVzZXJHZXN0dXJlUHJvcGFnYXRpb25UaW1lID0gMV9zOwogCiBTY3JpcHRF
bGVtZW50OjpTY3JpcHRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgcGFyc2VySW5zZXJ0
ZWQsIGJvb2wgYWxyZWFkeVN0YXJ0ZWQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICAs
IG1fc3RhcnRMaW5lTnVtYmVyKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSkKKyAg
ICAsIG1fc3RhcnRMaW5lTnVtYmVyKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpCiAgICAg
LCBtX3BhcnNlckluc2VydGVkKHBhcnNlckluc2VydGVkID8gUGFyc2VySW5zZXJ0ZWQ6OlllcyA6
IFBhcnNlckluc2VydGVkOjpObykKICAgICAsIG1faXNFeHRlcm5hbFNjcmlwdChmYWxzZSkKICAg
ICAsIG1fYWxyZWFkeVN0YXJ0ZWQoYWxyZWFkeVN0YXJ0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuaAppbmRleCA4ZTA1MWY4M2M1YmQ3ZmNiYTliYjAyZTUxNTRiNjU5YmNhM2ZmZDVmLi4w
ZTczOTcxNDNkYzU2MzgwMjYzOWE3NWJlYTNkODE5YjE1ZDk4ZTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCA9IDA7CiAKICAgICBFbGVtZW50
JiBtX2VsZW1lbnQ7Ci0gICAgV1RGOjpPcmRpbmFsTnVtYmVyIG1fc3RhcnRMaW5lTnVtYmVyOwor
ICAgIE9yZGluYWxOdW1iZXIgbV9zdGFydExpbmVOdW1iZXI7CiAgICAgUGFyc2VySW5zZXJ0ZWQg
bV9wYXJzZXJJbnNlcnRlZDsKICAgICBib29sIG1faXNFeHRlcm5hbFNjcmlwdCA6IDE7CiAgICAg
Ym9vbCBtX2FscmVhZHlTdGFydGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IDI1ZmIwMGU2MTMyM2U5ODI5NjBhMjg1MGQ3ZTEzN2JmNTI2
YmE2ZDkuLmY3OWMzZWRjODhkM2VmZjExNmE1YTY1ODM2NDhjZDhhZmMxZWEzOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTg1LDIwICsxODUs
MjAgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDbGVhbnVwVGFza1RhZyB7
IENsZWFudXBUYXNrIH07CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIFdURjo6RnVuY3Rpb248dm9pZCAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19iYXNlX29m
PFRhc2ssIFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIEZ1bmN0aW9uPHZvaWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KICAgICAgICAgVGFzayhU
IHRhc2spCiAgICAgICAgICAgICA6IG1fdGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAgICAg
LCBtX2lzQ2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCisgICAgICAgIFRhc2soRnVuY3Rp
b248dm9pZCgpPiYmIHRhc2spCiAgICAgICAgICAgICA6IG1fdGFzayhbdGFzayA9IFdURk1vdmUo
dGFzayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7IHRhc2soKTsgfSkKICAgICAgICAgICAg
ICwgbV9pc0NsZWFudXBUYXNrKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfY29udmVydGlibGU8VCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8
VCwgRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBl
PgogICAgICAgICBUYXNrKENsZWFudXBUYXNrVGFnLCBUIHRhc2spCiAgICAgICAgICAgICA6IG1f
dGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51cFRhc2sodHJ1ZSkK
QEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNDbGVhbnVwVGFzaygp
IGNvbnN0IHsgcmV0dXJuIG1faXNDbGVhbnVwVGFzazsgfQogCiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4gbV90YXNr
OworICAgICAgICBGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4gbV90YXNr
OwogICAgICAgICBib29sIG1faXNDbGVhbnVwVGFzazsKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5jcHAKaW5kZXggMjU0ZDNhZjRhYWYwYmIyMGEzMzI5YzNiYzdhZWQ0Njhi
MThiY2RhNy4uNzliODRiZWQ4NDIxNTM5MDY0YjAyY2E0NTU4YmQ3NjMyNWQzNmQ5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgU3R5
bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVGcm9tU3RyaW5nKGNvbnN0IEF0b21TdHJpbmcmIG5l
d1N0eWxlU3RyaW5nKQogCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OnN0eWxlQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBBdG9tU3RyaW5nJiBuZXdTdHlsZVN0cmluZywgQXR0cmlidXRlTW9kaWZpY2F0aW9u
UmVhc29uIHJlYXNvbikKIHsKLSAgICBhdXRvIHN0YXJ0TGluZU51bWJlciA9IFdURjo6T3JkaW5h
bE51bWJlcjo6YmVmb3JlRmlyc3QoKTsKKyAgICBhdXRvIHN0YXJ0TGluZU51bWJlciA9IE9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCk7CiAgICAgaWYgKGRvY3VtZW50KCkuc2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKCkgJiYgIWRvY3VtZW50KCkuaXNJbkRvY3VtZW50V3JpdGUoKSkKICAgICAg
ICAgc3RhcnRMaW5lTnVtYmVyID0gZG9jdW1lbnQoKS5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIo
KS0+dGV4dFBvc2l0aW9uKCkubV9saW5lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVy
ZUluZGljYXRvci5oCmluZGV4IGExYTQ1MDQ1NGMwYmRkYzQxYWI3M2EzZmNmNTBjZjU2YmI5NDQ4
NmEuLjFjODc1OWMwMmFmMzUxODA4OTNmNjczMDJkMTAyN2FlM2FhMmE4MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZSA9PSBQcm9jZXNzaW5nVXNlckdlc3R1cmUgfHwgbV9zdGF0ZSA9PSBQcm9jZXNz
aW5nUG90ZW50aWFsVXNlckdlc3R1cmU7IH0KICAgICBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2dlc3R1cmVUeXBlOyB9CiAKLSAgICB2b2lkIGFkZERlc3Ry
dWN0aW9uT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkIChVc2VyR2VzdHVyZVRva2VuJik+JiYg
b2JzZXJ2ZXIpCisgICAgdm9pZCBhZGREZXN0cnVjdGlvbk9ic2VydmVyKEZ1bmN0aW9uPHZvaWQo
VXNlckdlc3R1cmVUb2tlbiYpPiYmIG9ic2VydmVyKQogICAgIHsKICAgICAgICAgbV9kZXN0cnVj
dGlvbk9ic2VydmVycy5hcHBlbmQoV1RGTW92ZShvYnNlcnZlcikpOwogICAgIH0KQEAgLTEwOCw3
ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIFVzZXJHZXN0dXJlVG9rZW4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlU3RhdGUsIFVzZXJHZXN0dXJlVHlwZSwgRG9jdW1lbnQqKTsKIAogICAgIFByb2Nlc3Np
bmdVc2VyR2VzdHVyZVN0YXRlIG1fc3RhdGUgPSBOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmU7Ci0g
ICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCAoVXNlckdlc3R1cmVUb2tlbiYpPj4gbV9kZXN0
cnVjdGlvbk9ic2VydmVyczsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChVc2VyR2VzdHVyZVRv
a2VuJik+PiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOwogICAgIFVzZXJHZXN0dXJlVHlwZSBtX2dl
c3R1cmVUeXBlOwogICAgIFdlYWtIYXNoU2V0PERvY3VtZW50PiBtX2RvY3VtZW50c0ltcGFjdGVk
QnlVc2VyR2VzdHVyZTsKICAgICBET01QYXN0ZUFjY2Vzc1BvbGljeSBtX2RvbVBhc3RlQWNjZXNz
UG9saWN5IHsgRE9NUGFzdGVBY2Nlc3NQb2xpY3k6Ok5vdFJlcXVlc3RlZFlldCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKaW5kZXggNzNkZjk0YzQ2NGY5ZWU0Y2Ni
ZjM1OTEyNjg1YzllMGMwNzliMGE2Yi4uZDQ2M2RlMDNhNDJkZTE0OGFiNmViNzc1NDA2N2VmN2Vk
NTY0YmE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0z
Nyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBXVEY6OkZ1bmN0
aW9uPHZvaWQoVmlld3BvcnRFcnJvckNvZGUsIFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpPiBJbnRl
cm5hbFZpZXdwb3J0RXJyb3JIYW5kbGVyOwordHlwZWRlZiBGdW5jdGlvbjx2b2lkKFZpZXdwb3J0
RXJyb3JDb2RlLCBTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KT4gSW50ZXJuYWxWaWV3cG9ydEVycm9y
SGFuZGxlcjsKIAogI2lmIFBMQVRGT1JNKEdUSykKIGNvbnN0IGZsb2F0IFZpZXdwb3J0QXJndW1l
bnRzOjpkZXByZWNhdGVkVGFyZ2V0RFBJID0gMTYwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRB
cmd1bWVudHMuaAppbmRleCA5OTU0YmRjMWEwNzYyNWU5NjljMmM0NjdiMGFlZTZhZjZlMWM1ZDcy
Li5kYzcxODczYmY5YTQwYWE3ZDI4OTc4YmIxNjVjYWM0Yjk5OTA0N2Y0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApAQCAtMTQzLDcgKzE0Myw3IEBAIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShWaWV3cG9y
dEF0dHJpYnV0ZXMmCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RyaWN0U2NhbGVGYWN0b3JUb0lu
aXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzdWx0KTsK
IFdFQkNPUkVfRVhQT1JUIGZsb2F0IGNvbXB1dGVNaW5pbXVtU2NhbGVGYWN0b3JGb3JDb250ZW50
Q29udGFpbmVkKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzdWx0LCBjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplKTsKIAotdHlwZWRlZiBX
VEY6OkZ1bmN0aW9uPHZvaWQoVmlld3BvcnRFcnJvckNvZGUsIGNvbnN0IFN0cmluZyYpPiBWaWV3
cG9ydEVycm9ySGFuZGxlcjsKK3R5cGVkZWYgRnVuY3Rpb248dm9pZChWaWV3cG9ydEVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJik+IFZpZXdwb3J0RXJyb3JIYW5kbGVyOwogdm9pZCBzZXRWaWV3cG9y
dEZlYXR1cmUoVmlld3BvcnRBcmd1bWVudHMmLCBEb2N1bWVudCYsIFN0cmluZ1ZpZXcga2V5LCBT
dHJpbmdWaWV3IHZhbHVlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRGZWF0dXJl
KFZpZXdwb3J0QXJndW1lbnRzJiwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGJv
b2wgdmlld3BvcnRGaXRFbmFibGVkLCBjb25zdCBWaWV3cG9ydEVycm9ySGFuZGxlciYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMDdhNGYxYmY4MjI0M2VjNmE2OTU1N2E5NTU2
ZTM0ODBkMWVhOTVlNy4uYzY3MTAyMjdkZGQxNGY1MDZkOGY1MjBjMGU4OTZjYzljZDRlNjlkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDAxMCw3ICs0MDEwLDcgQEAgc3RhdGlj
IFZlY3RvcjxUZXh0TGlzdD4gZWRpdGFibGVUZXh0TGlzdHNBdFBvc2l0aW9uSW5EZXNjZW5kaW5n
T3JkZXIoY29uc3QgUG9zaXQKIEZvbnRBdHRyaWJ1dGVzIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNB
dFNlbGVjdGlvblN0YXJ0KCkKIHsKICAgICBSZWZQdHI8Tm9kZT4gbm9kZVRvUmVtb3ZlOwotICAg
IGF1dG8gbm9kZVJlbW92YWxTY29wZSA9IFdURjo6bWFrZVNjb3BlRXhpdChbJm5vZGVUb1JlbW92
ZV0oKSB7CisgICAgYXV0byBub2RlUmVtb3ZhbFNjb3BlID0gbWFrZVNjb3BlRXhpdChbJm5vZGVU
b1JlbW92ZV0oKSB7CiAgICAgICAgIGlmIChub2RlVG9SZW1vdmUpCiAgICAgICAgICAgICBub2Rl
VG9SZW1vdmUtPnJlbW92ZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TbWFydFJlcGxhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJl
cGxhY2UuY3BwCmluZGV4IGRlNTNjYzBmZmJmMTRjNGFiMmVkYTAyNDI4ODgyMzBjOThmZTQwOTgu
LjVjOTRkZmI4ZDA0ZDkzNWNiNTVjN2RmMmE2NmY2NDA3OTYzNWE0NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZS5jcHAKQEAgLTcyLDExICs3MiwxMSBAQCBzdGF0aWMgVVNl
dCogZ2V0U21hcnRTZXQoYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQogICAgICAgICB1c2V0X2Fk
ZFJhbmdlKHNtYXJ0U2V0LCAweDJGODAwLCAweDJGODAwICsgMHgwMjFFKTsgLy8gQ0pLIENvbXBh
dGliaWxpdHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQpCiAKICAgICAgICAgaWYgKGlz
UHJldmlvdXNDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBTaWxseSB0byBjb252
ZXJ0IHRoaXMgdG8gYSBXVEY6OlN0cmluZyBqdXN0IHRvIGxvb3AgdGhyb3VnaCB0aGUgY2hhcmFj
dGVycy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaWxseSB0byBjb252ZXJ0IHRoaXMgdG8gYSBT
dHJpbmcganVzdCB0byBsb29wIHRocm91Z2ggdGhlIGNoYXJhY3RlcnMuCiAgICAgICAgICAgICBh
ZGRBbGxDb2RlUG9pbnRzKHNtYXJ0U2V0LCAiKFtcIlwnIyQvLWB7Il9zKTsKICAgICAgICAgICAg
IHByZVNtYXJ0U2V0ID0gc21hcnRTZXQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogU2lsbHkgdG8gY29udmVydCB0aGlzIHRvIGEgV1RGOjpTdHJpbmcganVzdCB0byBs
b29wIHRocm91Z2ggdGhlIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAvLyBGSVhNRTogU2lsbHkg
dG8gY29udmVydCB0aGlzIHRvIGEgU3RyaW5nIGp1c3QgdG8gbG9vcCB0aHJvdWdoIHRoZSBjaGFy
YWN0ZXJzLgogICAgICAgICAgICAgYWRkQWxsQ29kZVBvaW50cyhzbWFydFNldCwgIildLiw7Oj9c
JyFcIiUqLS99Il9zKTsKIAogICAgICAgICAgICAgLy8gUHVuY3R1YXRpb24gKGtDRkNoYXJhY3Rl
clNldFB1bmN0dWF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBiNGUxNWZlYjBjYTUzODY1YTE5Mjk2MDA5
ODRjMTNkYmY4ZWE1ZWQwLi40NzQyOWQ1OTE3YTIzYTJlZGFlMTZkMGY3N2Y5NDEyY2E4ZjU2YTBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyLmNwcApAQCAtMzg4LDEzICszODgsMTMgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6cGFyc2UoTWFuaXB1bGF0aW9uVW5pdCYgdW5pdCwgY29uc3QgU3RyaW5nJiB0
ZXgKIHsKICAgICBFeGNsdXNpb25SdWxlTWF0Y2hlciBleGNsdXNpb25SdWxlTWF0Y2hlcihtX2V4
Y2x1c2lvblJ1bGVzKTsKICAgICBib29sIGlzTm9kZUV4Y2x1ZGVkID0gZXhjbHVzaW9uUnVsZU1h
dGNoZXIuaXNFeGNsdWRlZCgmdGV4dE5vZGUpIHx8IHNob3VsZEV4Y2x1ZGVOb2RlQmFzZWRPblN0
eWxlKHRleHROb2RlKTsKLSAgICBzaXplX3QgcG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UgPSBX
VEY6Om5vdEZvdW5kOworICAgIHNpemVfdCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSA9IG5v
dEZvdW5kOwogICAgIHNpemVfdCBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPSAwOwogICAg
IHNpemVfdCBpbmRleCA9IDA7CiAgICAgZm9yICg7IGluZGV4IDwgdGV4dC5sZW5ndGgoKTsgKytp
bmRleCkgewogICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHRleHRbaW5kZXhdOwogICAgICAgICBp
ZiAoaXNUb2tlbkRlbGltaXRlcihjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBpZiAocG9zaXRp
b25PZkxhc3ROb25IVE1MU3BhY2UgIT0gV1RGOjpub3RGb3VuZCAmJiBzdGFydFBvc2l0aW9uT2ZD
dXJyZW50VG9rZW4gPD0gcG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UpIHsKKyAgICAgICAgICAg
IGlmIChwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSAhPSBub3RGb3VuZCAmJiBzdGFydFBvc2l0
aW9uT2ZDdXJyZW50VG9rZW4gPD0gcG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UpIHsKICAgICAg
ICAgICAgICAgICBhdXRvIHN0cmluZ0ZvclRva2VuID0gdGV4dC5zdWJzdHJpbmcoc3RhcnRQb3Np
dGlvbk9mQ3VycmVudFRva2VuLCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSArIDEgLSBzdGFy
dFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4pOwogICAgICAgICAgICAgICAgIHVuaXQudG9rZW5zLmFw
cGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksIHN0
cmluZ0ZvclRva2VuLCB0b2tlbkluZm8oJnRleHROb2RlKSwgaXNOb2RlRXhjbHVkZWQgfSk7CiAg
ICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuID0gcG9zaXRpb25PZkxh
c3ROb25IVE1MU3BhY2UgKyAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCmluZGV4IDBkOTc1YjM2ODk2Mjk3MzYxMTE2Zjg0NzA5
YTMyMTg1MzZlMzg5YmYuLmVlNjc4MDgwZjE3ZmE2NzU1ZDQ5MThhNGNlZjFmZTlhZTM4YmM4MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2x1c2lvblJ1bGU+IGRlY29kZShE
ZWNvZGVyJik7CiAgICAgfTsKIAotICAgIHVzaW5nIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRpb25J
dGVtPiYpPjsKKyAgICB1c2luZyBNYW5pcHVsYXRpb25JdGVtQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKERvY3VtZW50JiwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvbkl0ZW0+Jik+OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdQYXJhZ3JhcGhzKE1hbmlwdWxhdGlvbkl0
ZW1DYWxsYmFjayYmLCBWZWN0b3I8RXhjbHVzaW9uUnVsZT4mJiA9IHsgfSk7CiAKICAgICB2b2lk
IGRpZENyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmgKaW5kZXggMTEwYjhmODI2Zjg0MTc1ZGQ5
MmFhNDBlODdlYzJhM2FmYzdkNDcxZS4uZGViZjBmNzYxOWJmNzIxZWZlMzZjYzcxZmVhNjY2ZjRh
ZmIwZmQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXAuaApAQCAtNjEsMTEgKzYxLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBTaG91bGQg
bW92ZS91bmlmeSBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UgaGVyZSB0b28uCiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzaG93UG9wdXAoY29uc3QgRGljdGlvbmFyeVBvcHVw
SW5mbyYsIENvY29hVmlldyAqLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoVGV4dEluZGljYXRv
ciYpPiYgdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrLCBjb25zdCBXVEY6OkZ1bmN0
aW9uPEZsb2F0UmVjdChGbG9hdFJlY3QpPiYgcm9vdFZpZXdUb1ZpZXdDb252ZXJzaW9uQ2FsbGJh
Y2sgPSBudWxscHRyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjbGVhclRleHRJbmRpY2F0b3Ig
PSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzaG93UG9wdXAoY29u
c3QgRGljdGlvbmFyeVBvcHVwSW5mbyYsIENvY29hVmlldyAqLCBjb25zdCBGdW5jdGlvbjx2b2lk
KFRleHRJbmRpY2F0b3ImKT4mIHRleHRJbmRpY2F0b3JJbnN0YWxsYXRpb25DYWxsYmFjaywgY29u
c3QgRnVuY3Rpb248RmxvYXRSZWN0KEZsb2F0UmVjdCk+JiByb290Vmlld1RvVmlld0NvbnZlcnNp
b25DYWxsYmFjayA9IG51bGxwdHIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjbGVhclRleHRJbmRpY2F0
b3IgPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBoaWRlUG9wdXAo
KTsKICAgICAKICNpZiBQTEFURk9STShNQUMpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdL
UmV2ZWFsQ29udHJvbGxlciBhbmltYXRpb25Db250cm9sbGVyRm9yUG9wdXAoY29uc3QgRGljdGlv
bmFyeVBvcHVwSW5mbyYsIE5TVmlldyAqLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoVGV4dElu
ZGljYXRvciYpPiYgdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrLCBjb25zdCBXVEY6
OkZ1bmN0aW9uPEZsb2F0UmVjdChGbG9hdFJlY3QpPiYgcm9vdFZpZXdUb1ZpZXdDb252ZXJzaW9u
Q2FsbGJhY2sgPSBudWxscHRyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjbGVhclRleHRJbmRp
Y2F0b3IgPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV0tSZXZlYWxDb250
cm9sbGVyIGFuaW1hdGlvbkNvbnRyb2xsZXJGb3JQb3B1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvJiwgTlNWaWV3ICosIGNvbnN0IEZ1bmN0aW9uPHZvaWQoVGV4dEluZGljYXRvciYpPiYgdGV4
dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjxGbG9hdFJlY3Qo
RmxvYXRSZWN0KT4mIHJvb3RWaWV3VG9WaWV3Q29udmVyc2lvbkNhbGxiYWNrID0gbnVsbHB0ciwg
RnVuY3Rpb248dm9pZCgpPiYmIGNsZWFyVGV4dEluZGljYXRvciA9IG51bGxwdHIpOwogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKICAgICAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5k
ZXggZGM2YzgwMzA0YTgzOWVhZWFjNjI5NTQ3ODI4N2UwMGFhOGIwNDA1OS4uMjVmNGQ5NWU2MDM1
YTMwN2VhODYxYTQwMTNkMjgwNWY2OTgzMjFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cApAQCAtMTU5LDcgKzE1OSw3IEBAIHN0cnVjdCBFbGVtZW50QXR0cmlidXRlIHsKICAgICBRdWFs
aWZpZWROYW1lIGF0dHJpYnV0ZU5hbWU7CiB9OwogCi12b2lkIHJlbW92ZVN1YnJlc291cmNlVVJM
QXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFnbWVudCwgV1RGOjpGdW5jdGlv
bjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwpCit2b2lkIHJlbW92ZVN1YnJlc291
cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFnbWVudCwgRnVuY3Rp
b248Ym9vbChjb25zdCBVUkwmKT4gc2hvdWxkUmVtb3ZlVVJMKQogewogICAgIFZlY3RvcjxFbGVt
ZW50QXR0cmlidXRlPiBhdHRyaWJ1dGVzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0yMDgsNyArMjA4
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29u
dGVudCgpCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVN0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25z
dCBTdHJpbmcmIHJhd0hUTUwsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgc3RkOjpvcHRp
b25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5p
dGl6ZXIpCitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBNU09M
aXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIHN0ZDo6b3B0aW9uYWw8RnVuY3Rpb248dm9pZChEb2N1
bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXplcikKIHsKICAgICBhdXRvIHBhZ2UgPSBj
cmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKICAgICBEb2N1bWVudCogc3RhZ2lu
Z0RvY3VtZW50ID0gcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5oCmluZGV4IGJiNzU5NjQzOGVlMDI4NmE4YzE4ODY4NTk4OGU5Zjg1YzI2ZGQ1MGQuLjky
NTExYTkzNDY2YmE5NDg0MTI0MWJhZmQ2NGUwZmNkMTNlMTFhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuaApAQCAtNTEsMTEgKzUxLDExIEBAIHN0cnVjdCBQcmVzZW50YXRpb25TaXplOwogc3Ry
dWN0IFNpbXBsZVJhbmdlOwogCiB2b2lkIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHMoUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+JiYsIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4mJik7Ci12b2lk
IHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwg
V1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwpOwordm9pZCBy
ZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIEZ1
bmN0aW9uPGJvb2woY29uc3QgVVJMJik+IHNob3VsZFJlbW92ZVVSTCk7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKIGVudW0gY2xh
c3MgTVNPTGlzdFF1aXJrcyA6IGJvb2wgeyBDaGVja0lmTmVlZGVkLCBEaXNhYmxlZCB9OwotU3Ry
aW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYsIE1TT0xpc3RRdWlya3MgPSBNU09MaXN0
UXVpcmtzOjpEaXNhYmxlZCwgc3RkOjpvcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1l
bnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIgPSBzdGQ6Om51bGxvcHQpOworU3RyaW5n
IHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYsIE1TT0xpc3RRdWlya3MgPSBNU09MaXN0UXVp
cmtzOjpEaXNhYmxlZCwgc3RkOjpvcHRpb25hbDxGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21l
bnQmKT4+IGZyYWdtZW50U2FuaXRpemVyID0gc3RkOjpudWxsb3B0KTsKIFN0cmluZyBzYW5pdGl6
ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIERv
Y3VtZW50JiwgTVNPTGlzdFF1aXJrcywgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1hcmt1cCk7CiAK
IFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21U
ZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IGE4MzUwNTViYWMy
OGMyYjc1OWNlZDA5ZGU2ODc0YjliZGY3Nzc3ODQuLmExOWRkM2I2NWYxZjNkZmQ1MDFkNmM3ZGFi
NzljMzUyZWE5YTVkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBBc3luY0ZpbGVTdHJlYW06On5Bc3luY0ZpbGVTdHJl
YW0oKQogICAgIH0pOwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShXVEY6OkZ1
bmN0aW9uPFdURjo6RnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0m
KT4mJiBvcGVyYXRpb24pCit2b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShGdW5jdGlvbjxG
dW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9wZXJhdGlv
bikKIHsKICAgICBhdXRvJiBpbnRlcm5hbHMgPSAqbV9pbnRlcm5hbHM7CiAgICAgY2FsbE9uRmls
ZVRocmVhZChbJmludGVybmFscywgb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24pXSB7CkBA
IC0xNDAsNyArMTQwLDcgQEAgdm9pZCBBc3luY0ZpbGVTdHJlYW06OmdldFNpemUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3QKIHsKICAgICAvLyBGSVhN
RTogRXhwbGljaXQgcmV0dXJuIHR5cGUgaGVyZSBhbmQgaW4gYWxsIHRoZSBvdGhlciBjYXNlcyBs
aWtlIHRoaXMgYmVsb3cgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGRlZmljaWVuY3kKICAgICAvLyBp
biB0aGUgV2luZG93cyBjb21waWxlciBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuIENvdWxk
IHJlbW92ZSBpdCBpZiB0aGF0IGlzIHJlc29sdmVkLgotICAgIHBlcmZvcm0oW3BhdGggPSBwYXRo
Lmlzb2xhdGVkQ29weSgpLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWVdKEZpbGVTdHJlYW0mIHN0
cmVhbSkgLT4gV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4geworICAgIHBl
cmZvcm0oW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWVdKEZpbGVTdHJlYW0mIHN0cmVhbSkgLT4gRnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50
Jik+IHsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSBzdHJlYW0uZ2V0U2l6ZShwYXRoLCBleHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICByZXR1cm4gW3NpemVdKEZpbGVTdHJlYW1D
bGllbnQmIGNsaWVudCkgewogICAgICAgICAgICAgY2xpZW50LmRpZEdldFNpemUoc2l6ZSk7CkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBBc3luY0ZpbGVTdHJlYW06OmdldFNpemUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3QKIHZvaWQgQXN5bmNGaWxl
U3RyZWFtOjpvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQs
IGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAgICAgLy8gRklYTUU6IEV4cGxpY2l0IHJldHVybiB0eXBl
IGhlcmUgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGRlZmljaWVuY3kgaW4gdGhlIFdpbmRvd3MgY29t
cGlsZXIgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgotICAgIHBlcmZvcm0oW3BhdGggPSBw
YXRoLmlzb2xhdGVkQ29weSgpLCBvZmZzZXQsIGxlbmd0aF0oRmlsZVN0cmVhbSYgc3RyZWFtKSAt
PiBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPiB7CisgICAgcGVyZm9ybShb
cGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIG9mZnNldCwgbGVuZ3RoXShGaWxlU3RyZWFtJiBz
dHJlYW0pIC0+IEZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPiB7CiAgICAgICAgIGJv
b2wgc3VjY2VzcyA9IHN0cmVhbS5vcGVuRm9yUmVhZChwYXRoLCBvZmZzZXQsIGxlbmd0aCk7CiAg
ICAgICAgIHJldHVybiBbc3VjY2Vzc10oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KSB7CiAgICAg
ICAgICAgICBjbGllbnQuZGlkT3BlbihzdWNjZXNzKTsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lk
IEFzeW5jRmlsZVN0cmVhbTo6Y2xvc2UoKQogCiB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6cmVhZCh2
b2lkKiBidWZmZXIsIGludCBsZW5ndGgpCiB7Ci0gICAgcGVyZm9ybShbYnVmZmVyLCBsZW5ndGhd
KEZpbGVTdHJlYW0mIHN0cmVhbSkgLT4gV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGll
bnQmKT4geworICAgIHBlcmZvcm0oW2J1ZmZlciwgbGVuZ3RoXShGaWxlU3RyZWFtJiBzdHJlYW0p
IC0+IEZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPiB7CiAgICAgICAgIGludCBieXRl
c1JlYWQgPSBzdHJlYW0ucmVhZChidWZmZXIsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybiBbYnl0
ZXNSZWFkXShGaWxlU3RyZWFtQ2xpZW50JiBjbGllbnQpIHsKICAgICAgICAgICAgIGNsaWVudC5k
aWRSZWFkKGJ5dGVzUmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Fz
eW5jRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
aAppbmRleCBlYmJhN2YyMmMzYmFkM2IzNDNhOGYxOGU1ZjU4MzBjOWQ2Mzg0ZDA4Li42NDUyOGUz
OTQ4MDM2ZmZkYTM4ZTE5MzIzZWZiZjZiNmUzYTgxZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2b2lkIHBlcmZvcm0oV1RGOjpGdW5jdGlvbjxXVEY6
OkZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+JiYpOworICAg
IHZvaWQgcGVyZm9ybShGdW5jdGlvbjxGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4o
RmlsZVN0cmVhbSYpPiYmKTsKIAogICAgIHN0cnVjdCBJbnRlcm5hbHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEludGVybmFscz4gbV9pbnRlcm5hbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRl
eCA4YmY3NGNlMzMxZmNhOGNjOGI0NmE1MzM0YjI2MDUwZTNkYmEwM2U3Li45NzQ0YjAxNTdhZTEx
YzExMGNkOGMyODllNTI3Y2JmYTAyYzEwZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmllZCgpIGNvbnN0CiAgICAg
ZWxzZQogICAgICAgICByZXN1bHQgPSBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2go
KS5taWxsaXNlY29uZHNBczxpbnQ2NF90PigpOwogCi0gICAgcmV0dXJuIFdURjo6dGltZUNsaXAo
cmVzdWx0KTsKKyAgICByZXR1cm4gdGltZUNsaXAocmVzdWx0KTsKIH0KIAogdm9pZCBGaWxlOjpj
b21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZlY3RpdmVD
b250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwCmluZGV4IDE1N2ExZTc4N2M5NjUzMjEyNmQ5MWU1YjM3YmU2NDU3OGVlMzQ3
YzkuLjEyZGRlZmVkNGY2MGU3NGMxNjFjNjA5MTUyMjRkZWU4YjRlNjZmNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNDks
OCArNDksNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAotdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZp
YzsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiBCbG9iVXJsT3JpZ2luTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxs
LmNwcAppbmRleCA1YWUyMGNjNTRkZTcyMzQzYmEzYjM3N2YyYTNjZjA4ZWY3M2Y0NmZjLi4wZTcz
ZDI5YTIzNTIzNjllMWQ5NTlmZjllY2NlOTU3ODRlZjkyNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9m
aWxsLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIEF1dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNy
ZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAKICAg
ICAgICAgLy8gNC4gTGV0IElETCB2YWx1ZSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBjb250YWN0
LCBhIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXIsIGFuZCB0aGUgcHJldmlvdXMKICAgICAgICAgLy8g
dmFsdWUgb2YgSURMIHZhbHVlICh3aGljaCBhdCB0aGlzIHBvaW50IHdpbGwgYWx3YXlzIGJlIGZp
ZWxkKS4KLSAgICAgICAgaWRsVmFsdWUgPSBXVEY6Om1ha2VTdHJpbmcoY29udGFjdCwgIiAiLCBp
ZGxWYWx1ZSk7CisgICAgICAgIGlkbFZhbHVlID0gbWFrZVN0cmluZyhjb250YWN0LCAiICIsIGlk
bFZhbHVlKTsKIAogICAgICAgICAvLyA1LiBJZiB0aGUgaW5kZXh0aCBlbnRyeSBpbiB0b2tlbnMg
aXMgdGhlIGZpcnN0IGVudHJ5LCB0aGVuIHNraXAgdG8gdGhlIHN0ZXAgbGFiZWxlZCBkb25lLgog
ICAgICAgICBpZiAoaW5kZXggPT0gMCkKQEAgLTI4OSw3ICsyODksNyBAQCBBdXRvZmlsbERhdGEg
QXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1M
Rm9ybUNvbnRybwogICAgICAgICAvLyA0LiBMZXQgSURMIHZhbHVlIGJlIHRoZSBjb25jYXRlbmF0
aW9uIG9mIG1vZGUsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwgYW5kIHRoZSBwcmV2aW91cwog
ICAgICAgICAvLyB2YWx1ZSBvZiBJREwgdmFsdWUgKHdoaWNoIGF0IHRoaXMgcG9pbnQgd2lsbCBl
aXRoZXIgYmUgZmllbGQgb3IgdGhlIGNvbmNhdGVuYXRpb24gb2YgY29udGFjdCwKICAgICAgICAg
Ly8gYSBzcGFjZSwgYW5kIGZpZWxkKS4KLSAgICAgICAgaWRsVmFsdWUgPSBXVEY6Om1ha2VTdHJp
bmcobW9kZSwgIiAiLCBpZGxWYWx1ZSk7CisgICAgICAgIGlkbFZhbHVlID0gbWFrZVN0cmluZyht
b2RlLCAiICIsIGlkbFZhbHVlKTsKIAogICAgICAgICAvLyA1LiBJZiB0aGUgaW5kZXh0aCBlbnRy
eSBpbiB0b2tlbnMgaXMgdGhlIGZpcnN0IGVudHJ5LCB0aGVuIHNraXAgdG8gdGhlIHN0ZXAgbGFi
ZWxlZCBkb25lLgogICAgICAgICBpZiAoaW5kZXggPT0gMCkKQEAgLTMxOCw3ICszMTgsNyBAQCBB
dXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9sRWxlbWVu
dChjb25zdCBIVE1MRm9ybUNvbnRybwogCiAgICAgLy8gMjAuIExldCBJREwgdmFsdWUgYmUgdGhl
IGNvbmNhdGVuYXRpb24gb2Ygc2VjdGlvbiwgYSBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVyLCBhbmQg
dGhlIHByZXZpb3VzCiAgICAgLy8gdmFsdWUgb2YgSURMIHZhbHVlLgotICAgIGlkbFZhbHVlID0g
V1RGOjptYWtlU3RyaW5nKHNlY3Rpb24sICIgIiwgaWRsVmFsdWUpOworICAgIGlkbFZhbHVlID0g
bWFrZVN0cmluZyhzZWN0aW9uLCAiICIsIGlkbFZhbHVlKTsKIAogICAgIHJldHVybiB7IGZpZWxk
LCBpZGxWYWx1ZSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tl
bkxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKaW5kZXggNDZiODU5
ODk5ZjEyNDk1MjM1MTNjZTc0ZmVkNDk5OWYzNGIwZGQ2OC4uNmI3OGM2ODdjYWI3OTVjYzA4MmZj
MjY2YjU2MzU2ODVlYTI0MzBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01U
b2tlbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVRva2VuTGlzdCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNpbmcgSXNTdXBwb3J0
ZWRUb2tlbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjxib29sKERvY3VtZW50JiwgU3RyaW5nVmll
dyk+OworICAgIHVzaW5nIElzU3VwcG9ydGVkVG9rZW5GdW5jdGlvbiA9IEZ1bmN0aW9uPGJvb2wo
RG9jdW1lbnQmLCBTdHJpbmdWaWV3KT47CiAgICAgRE9NVG9rZW5MaXN0KEVsZW1lbnQmLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBJc1N1cHBvcnRlZFRva2VuRnVuY3Rpb24m
JiBpc1N1cHBvcnRlZFRva2VuID0geyB9KTsKIAogICAgIHZvaWQgYXNzb2NpYXRlZEF0dHJpYnV0
ZVZhbHVlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAppbmRleCBlNmFiMGVjNmM1OTA2YWQ3YmI2M2YyODk1MmY2MzBlODlm
NmZiN2ZhLi4xZTg1YmQ3M2E2ODc1NzllNzMzNmRlNGQ1N2IwZWFhMmVjMTExMjc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTEltYWdlRWxlbWVudDo6SFRNTEltYWdlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIEhU
TUxGb3JtRWxlbWVudCogZm9ybSkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQotICAgICwgbV9pbWFnZUxvYWRlcihXVEY6Om1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigq
dGhpcykpCisgICAgLCBtX2ltYWdlTG9hZGVyKG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigq
dGhpcykpCiAgICAgLCBtX2Zvcm0obnVsbHB0cikKICAgICAsIG1fZm9ybVNldEJ5UGFyc2VyKGZv
cm0pCiAgICAgLCBtX2NvbXBvc2l0ZU9wZXJhdG9yKENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VP
dmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggY2I3YjY5
ZjU5YzUwZWE1NDdjNDdhMjgyNDNkMDJlZTA0N2Q0ZGY0Ni4uZmYzNDZmMjVmNzVlNGM1OGViYThl
NmY3Y2U4YWQxYTA3Yjc1ZmYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC02NDc5LDcgKzY0NzksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBy
ZXBhcmVkVG9SZXR1cm5WaWRlb0xheWVyVG9JbmxpbmUoYm9vbCB2YWx1ZSkKICAgICB9CiB9CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgQVNT
RVJUKCFtX3ByZXBhcmVkRm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXIpOwpAQCAtNjUxMSw3ICs2
NTExLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0
ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllciwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogICAgIG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXIgPSBwbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAppbmRleCA2MTJlZmM1OGMyYTc5YTIwZDFmMmFlOWEzNTNiMGYzMDQ4NzgxMmNmLi45NjA4NGEy
NzA3MGQ5YzBjY2E5ZDUxZTY3N2E5NzM2YjAxYjRmNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaApAQCAtMTgwLDEwICsxODAsMTAgQEAgcHVibGljOgogICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICBib29sIGlzVmlkZW9MYXllcklu
bGluZSgpOwogICAgIHZvaWQgc2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShi
b29sKTsKLSAgICB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworICAgIHZvaWQgd2FpdEZv
clByZXBhcmVkRm9ySW5saW5lVGhlbihGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIgPSBbXSB7IH0pOwogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBS
ZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9y
bUxheWVyKiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsK
ICNpZmRlZiBfX09CSkNfXwogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQogI2VuZGlm
CkBAIC05MjYsNyArOTI2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNhcHRpb25Db250
YWluZXIoKTsKICAgICB2b2lkIGVuc3VyZU1lZGlhQ29udHJvbHNTaGFkb3dSb290KCk7CiAKLSAg
ICB1c2luZyBKU1NldHVwRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPGJvb2woSlNET01HbG9iYWxP
YmplY3QmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgU2NyaXB0Q29udHJvbGxlciYsIERPTVdyYXBw
ZXJXb3JsZCYpPjsKKyAgICB1c2luZyBKU1NldHVwRnVuY3Rpb24gPSBGdW5jdGlvbjxib29sKEpT
RE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIFNjcmlwdENvbnRyb2xsZXIm
LCBET01XcmFwcGVyV29ybGQmKT47CiAgICAgYm9vbCBzZXR1cEFuZENhbGxKUyhjb25zdCBKU1Nl
dHVwRnVuY3Rpb24mKTsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBA
IC0xMDQzLDcgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGUgbV92
aWRlb0Z1bGxzY3JlZW5Nb2RlIHsgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKICAgICBib29s
IG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3ByZXBhcmVk
Rm9ySW5saW5lOwotICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3ByZXBhcmVkRm9ySW5saW5l
Q29tcGxldGlvbkhhbmRsZXI7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3ByZXBhcmVkRm9ySW5s
aW5lQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBib29sIG1fdGVtcG9yYXJpbHlBbGxvd2luZ0lu
bGluZVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2xvdEVsZW1lbnQuY3BwCmluZGV4IDJjODE3NWI3ZDNjZDZkYTk0MGVhYzg0ZTM4NTNh
YThkMmFjYzFmZTQuLjMyNDE4ODk3MWVhMjMyODI1NjE4NWIyMmM3Yjc5NGIwOTJhMGJmZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBA
QCBWZWN0b3I8UmVmPE5vZGU+PiBIVE1MU2xvdEVsZW1lbnQ6OmFzc2lnbmVkTm9kZXMoY29uc3Qg
QXNzaWduZWROb2Rlc09wdGlvbnMmIG9wdAogICAgIH0KIAogICAgIGlmIChhdXRvKiBub2RlcyA9
IGFzc2lnbmVkTm9kZXMoKTsgbm9kZXMpIHsKLSAgICAgICAgcmV0dXJuIFdURjo6Y29tcGFjdE1h
cCgqbm9kZXMsIFtdKGF1dG8mIG5vZGVXZWFrUHRyKSAtPiBSZWZQdHI8Tm9kZT4geworICAgICAg
ICByZXR1cm4gY29tcGFjdE1hcCgqbm9kZXMsIFtdKGF1dG8mIG5vZGVXZWFrUHRyKSAtPiBSZWZQ
dHI8Tm9kZT4gewogICAgICAgICAgICAgcmV0dXJuIG5vZGVXZWFrUHRyLmdldCgpOwogICAgICAg
ICB9KTsKICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgVmVjdG9yPFJlZjxOb2RlPj4gSFRNTFNs
b3RFbGVtZW50Ojphc3NpZ25lZE5vZGVzKGNvbnN0IEFzc2lnbmVkTm9kZXNPcHRpb25zJiBvcHQK
IAogVmVjdG9yPFJlZjxFbGVtZW50Pj4gSFRNTFNsb3RFbGVtZW50Ojphc3NpZ25lZEVsZW1lbnRz
KGNvbnN0IEFzc2lnbmVkTm9kZXNPcHRpb25zJiBvcHRpb25zKSBjb25zdAogewotICAgIHJldHVy
biBXVEY6OmNvbXBhY3RNYXAoYXNzaWduZWROb2RlcyhvcHRpb25zKSwgW10oYXV0byYmIG5vZGUp
IC0+IFJlZlB0cjxFbGVtZW50PiB7CisgICAgcmV0dXJuIGNvbXBhY3RNYXAoYXNzaWduZWROb2Rl
cyhvcHRpb25zKSwgW10oYXV0byYmIG5vZGUpIC0+IFJlZlB0cjxFbGVtZW50PiB7CiAgICAgICAg
IGlmICghaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxFbGVtZW50PihXVEZNb3ZlKG5vZGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25UeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0xpbmtJY29uVHlwZS5oCmluZGV4IGNiZjcyNTM1NDMxOGI3ZjA1Yzg3
ZTU4NGJhMWZmZDM1M2ExNTM1ZDIuLmU1MDFmYmQyYmYwZWU0ZmI0OTk4ODcwMDk2MTM5NzI4OWIz
MDY4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25UeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvblR5cGUuaApAQCAtMjksNyArMjksNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoZXNlIHZhbHVlcyBhcmUgYXJyYW5nZWQgc28g
dGhhdCB0aGV5IGNhbiBiZSB1c2VkIHdpdGggV1RGOjpPcHRpb25TZXQuCisvLyBUaGVzZSB2YWx1
ZXMgYXJlIGFycmFuZ2VkIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCB3aXRoIE9wdGlvblNldC4K
IC8vIEFuZCB1c2luZyBpdCB3aXRoIE1hcmthYmxlIHZpYSBFbnVtTWFya2FibGVUcmFpdHMuCiAv
LyBTZWUgV0tMaW5rSWNvblR5cGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U3VibWl0RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRFdmVudC5jcHAKaW5k
ZXggM2E1NjhlYzYzNGQxMjM5OTQ3YTNmYmFjNzI5ODdjZGRkZmQwYmU4Ni4uYjkwYjBkNDc5MzMw
YjBlOTIyZTNjN2Q2YjY4OGIyMGQ1NzczMWY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9TdWJtaXRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRFdmVu
dC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoU3VibWl0RXZlbnQpOwogCi1SZWY8U3VibWl0RXZlbnQ+IFN1Ym1p
dEV2ZW50OjpjcmVhdGUoY29uc3QgV1RGOjpBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdCkK
K1JlZjxTdWJtaXRFdmVudD4gU3VibWl0RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBJbml0JiYgaW5pdCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdWJtaXRFdmVu
dCh0eXBlLCBXVEZNb3ZlKGluaXQpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBh
cmFtcy5jcHAKaW5kZXggMDYwNThhNWE2OGVkZjRlMWQzMDQ0ODkwMTU5MDU0NWYxZDc2ODM4NS4u
ZDRmYmMxZjA2YWJlYWVjMTEyZGFiZGJjMmQ4NTI5MTUyNDgxN2NkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcApAQCAtMzYsMjIgKzM2LDIyIEBAIFVSTFNlYXJjaFBh
cmFtczo6VVJMU2VhcmNoUGFyYW1zKGNvbnN0IFN0cmluZyYgaW5pdCwgRE9NVVJMKiBhc3NvY2lh
dGVkVVJMKQogewogfQogCi1VUkxTZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBW
ZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFpcnMpCitVUkxTZWFy
Y2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmlu
ZywgU3RyaW5nPj4mIHBhaXJzKQogICAgIDogbV9wYWlycyhwYWlycykKIHsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IFVSTFNlYXJjaFBhcmFtczo6Y3JlYXRlKHN0ZDo6
dmFyaWFudDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBTdHJpbmc+PiwgU3RyaW5nPiYmIHZhcmlhbnQpCitFeGNlcHRpb25PcjxSZWY8VVJM
U2VhcmNoUGFyYW1zPj4gVVJMU2VhcmNoUGFyYW1zOjpjcmVhdGUoc3RkOjp2YXJpYW50PFZlY3Rv
cjxWZWN0b3I8U3RyaW5nPj4sIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+Piwg
U3RyaW5nPiYmIHZhcmlhbnQpCiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRv
cihbJl0oY29uc3QgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYgdmVjdG9yKSAtPiBFeGNlcHRpb25P
cjxSZWY8VVJMU2VhcmNoUGFyYW1zPj4gewotICAgICAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBwYWlyczsKKyAgICAgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxT
dHJpbmcsIFN0cmluZz4+IHBhaXJzOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB2
ZWN0b3IpIHsKICAgICAgICAgICAgIGlmIChwYWlyLnNpemUoKSAhPSAyKQogICAgICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKICAgICAgICAgICAgIHBhaXJzLmFw
cGVuZCh7cGFpclswXSwgcGFpclsxXX0pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFVSTFNlYXJjaFBhcmFtcyhXVEZNb3ZlKHBhaXJzKSkpOwotICAgIH0sIFsmXShj
b25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFpcnMpIC0+
IEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiB7CisgICAgfSwgWyZdKGNvbnN0IFZl
Y3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFpcnMpIC0+IEV4Y2VwdGlvbk9y
PFJlZjxVUkxTZWFyY2hQYXJhbXM+PiB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVS
TFNlYXJjaFBhcmFtcyhwYWlycykpOwogICAgIH0sIFsmXShjb25zdCBTdHJpbmcmIHN0cmluZykg
LT4gRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVVJMU2VhcmNoUGFyYW1zKHN0cmluZywgbnVsbHB0cikpOwpAQCAtMTUxLDE0
ICsxNTEsMTQgQEAgdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVwZGF0ZUZyb21Bc3NvY2lhdGVkVVJM
KCkKICAgICBtX3BhaXJzID0gc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFdURjo6VVJMUGFyc2Vy
OjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcoc2VhcmNoKS5zdWJzdHJpbmcoMSkpIDog
V1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oc2VhcmNoKTsKIH0KIAotc3RkOjpv
cHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IFVSTFNlYXJjaFBhcmFt
czo6SXRlcmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBT
dHJpbmc+PiBVUkxTZWFyY2hQYXJhbXM6Okl0ZXJhdG9yOjpuZXh0KCkKIHsKICAgICBhdXRvJiBw
YWlycyA9IG1fdGFyZ2V0LT5wYWlycygpOwogICAgIGlmIChtX2luZGV4ID49IHBhaXJzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBwYWly
c1ttX2luZGV4KytdOwotICAgIHJldHVybiBXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmlu
Zz4geyBwYWlyLmtleSwgcGFpci52YWx1ZSB9OworICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8U3Ry
aW5nLCBTdHJpbmc+IHsgcGFpci5rZXksIHBhaXIudmFsdWUgfTsKIH0KIAogVVJMU2VhcmNoUGFy
YW1zOjpJdGVyYXRvcjo6SXRlcmF0b3IoVVJMU2VhcmNoUGFyYW1zJiBwYXJhbXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuaAppbmRleCAyZDA2YWRjYzBlMmRiNmQ3MWZkYzRjNThh
Yzg4MDQyM2UzZGE0OTc0Li45NTkxNTgzZTA4ZTIwYTRlMjk1OTRiZTg5YzI3YzZiZWZkYzlkMjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmgKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgRE9NVVJMOwogCiBjbGFzcyBVUkxTZWFyY2hQYXJhbXMgOiBwdWJsaWMgUmVmQ291bnRl
ZDxVUkxTZWFyY2hQYXJhbXM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PFVSTFNlYXJjaFBhcmFtcz4+IGNyZWF0ZShzdGQ6OnZhcmlhbnQ8VmVjdG9yPFZlY3RvcjxTdHJp
bmc+PiwgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4sIFN0cmluZz4m
Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiBjcmVhdGUo
c3RkOjp2YXJpYW50PFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4sIFZlY3RvcjxLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBTdHJpbmc+PiwgU3RyaW5nPiYmKTsKICAgICBzdGF0aWMgUmVmPFVSTFNlYXJjaFBh
cmFtcz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBET01VUkwqIGFzc29jaWF0ZWRVUkwp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMoc3Ry
aW5nLCBhc3NvY2lhdGVkVVJMKSk7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBjbGFz
cyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihVUkxT
ZWFyY2hQYXJhbXMmKTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxT
dHJpbmcsIFN0cmluZz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWY8
VVJMU2VhcmNoUGFyYW1zPiBtX3RhcmdldDsKQEAgLTY0LDEzICs2NCwxMyBAQCBwdWJsaWM6CiAg
ICAgSXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJldHVybiBJdGVyYXRvciB7ICp0aGlzIH07
IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5n
LCBTdHJpbmc+PiYgcGFpcnMoKSBjb25zdCB7IHJldHVybiBtX3BhaXJzOyB9CisgICAgY29uc3Qg
VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYWlycygpIGNvbnN0IHsgcmV0
dXJuIG1fcGFpcnM7IH0KICAgICBVUkxTZWFyY2hQYXJhbXMoY29uc3QgU3RyaW5nJiwgRE9NVVJM
Kik7Ci0gICAgVVJMU2VhcmNoUGFyYW1zKGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxT
dHJpbmcsIFN0cmluZz4+Jik7CisgICAgVVJMU2VhcmNoUGFyYW1zKGNvbnN0IFZlY3RvcjxLZXlW
YWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpOwogICAgIHZvaWQgdXBkYXRlVVJMKCk7CiAKICAg
ICBXZWFrUHRyPERPTVVSTD4gbV9hc3NvY2lhdGVkVVJMOwotICAgIFZlY3RvcjxXVEY6OktleVZh
bHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fcGFpcnM7CisgICAgVmVjdG9yPEtleVZhbHVlUGFp
cjxTdHJpbmcsIFN0cmluZz4+IG1fcGFpcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmgKaW5kZXggMjdmOGIzMjhhMzMzMjAzYzRjMTFhYjIzZTk4ODU4MGMxMWUxMjc4YS4uMWQ3
ZDI0MWQ5NzdhZGI4NzA1NDhmNGQ5ZTI3Nzc0ZWFmYjliNDY0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjg3LDcg
KzI4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWxpZGF0ZUJ1ZmZlclRhcmdldENvbXBhdGli
aWxpdHkoY29uc3QgY2hhciosIEdDR0xlbnVtLCBXZWJHTEJ1ZmZlciopOwogICAgIFdlYkdMQnVm
ZmVyKiB2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CiAgICAgV2ViR0xCdWZm
ZXIqIHZhbGlkYXRlQnVmZmVyRGF0YVRhcmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xlbnVtIHRhcmdldCkgZmluYWw7Ci0gICAgYm9vbCB2YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmlu
ZGluZyhjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
LCBHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKikgZmluYWw7CisgICAgYm9vbCB2YWxpZGF0
ZUFuZENhY2hlQnVmZmVyQmluZGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciopIGZpbmFsOwogICAg
IEdDR0xpbnQgZ2V0TWF4RHJhd0J1ZmZlcnMoKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldE1heENv
bG9yQXR0YWNobWVudHMoKSBmaW5hbDsKICAgICBib29sIHZhbGlkYXRlSW5kZXhBcnJheUNvbnNl
cnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNpZ25lZCYgbnVtRWxlbWVudHNSZXF1aXJlZCkgZmlu
YWw7CkBAIC0zMjYsNyArMzI2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHZhbGlkYXRlVGV4U3Rv
cmFnZUZ1bmNQYXJhbWV0ZXJzKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKICNlbmRpZgogCi0gICAgdm9pZCB1bmNhY2hlRGVs
ZXRlZEJ1ZmZlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xCdWZmZXIqKSBmaW5h
bDsKKyAgICB2b2lkIHVuY2FjaGVEZWxldGVkQnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
V2ViR0xCdWZmZXIqKSBmaW5hbDsKIAogICAgIGVudW0gY2xhc3MgQ2xlYXJCdWZmZXJDYWxsZXIg
OiB1aW50OF90IHsKICAgICAgICAgQ2xlYXJCdWZmZXJpdiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IGJkOWI3MjdkY2ZkOGE0ZTgwOTNjMWNhOGZiMmQ1NGE2
ZjA5NzFkMzkuLjdjZTAyNzIwM2YxYjJkY2IwOTMzMWViNTNhNTMxMDYxZmY4NDJjZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtNjcsNyArNjcsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0Nv
bnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgR0NHTGVudW0gbV90
YXJnZXQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250
ZXh0T2JqZWN0LmgKaW5kZXggZTJkODk2YmYzYjVkMjg0ZmE1YmNkNjU2NTk1ZTA0M2U2MzQyYTQ4
ZC4uNzkwMDhlZjliOWZlMWUzNWQwNTg4ZDFjOTdhMmY3ZDUzYmUzM2M1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJmNvbnRleHQgPT0gbV9jb250ZXh0OwogICAg
IH0KIAotICAgIHZvaWQgZGV0YWNoQ29udGV4dChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJik7
CisgICAgdm9pZCBkZXRhY2hDb250ZXh0KGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CiAKICAgICBM
b2NrJiBvYmplY3RHcmFwaExvY2tGb3JDb250ZXh0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAppbmRleCBjNTM4OTM5MTA5YTk4
MDg0MGE3MjE0OGQyM2Y4NzIxMDNlMmJmZWZiLi42ODEyYjQxYjllNTIwNGU5YmI2MzlkN2MwNDQw
NzUwOGM0NDI4NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5oCkBAIC02MiwxMCArNjIsMTAgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNWYWxpZCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6
ZWQoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbml0aWFsaXplZCgpID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIG9uRGV0YWNoZWQoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgb25E
ZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1
bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0
YWNobWVudCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVlUm9v
dHMoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJikgPSAwOwogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBXZWJHTEF0dGFjaG1lbnQoKTsKQEAgLTgxLDkgKzgxLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QXR0YWNobWVudEZvckJvdW5kRnJhbWVidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXhUYXJnZXQsIFdlYkdM
VGV4dHVyZSosIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpOwogICAgIHZvaWQgc2V0QXR0
YWNobWVudEZvckJvdW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRh
Y2htZW50LCBXZWJHTFJlbmRlcmJ1ZmZlciopOwogICAgIC8vIElmIGFuIG9iamVjdCBpcyBhdHRh
Y2hlZCB0byB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyLCByZW1vdmUgaXQuCi0gICAg
dm9pZCByZW1vdmVBdHRhY2htZW50RnJvbUJvdW5kRnJhbWVidWZmZXIoY29uc3QgV1RGOjpBYnN0
cmFjdExvY2tlciYsIEdDR0xlbnVtIHRhcmdldCwgV2ViR0xTaGFyZWRPYmplY3QqKTsKKyAgICB2
b2lkIHJlbW92ZUF0dGFjaG1lbnRGcm9tQm91bmRGcmFtZWJ1ZmZlcihjb25zdCBBYnN0cmFjdExv
Y2tlciYsIEdDR0xlbnVtIHRhcmdldCwgV2ViR0xTaGFyZWRPYmplY3QqKTsKICAgICAvLyBJZiBh
IGdpdmVuIGF0dGFjaG1lbnQgcG9pbnQgZm9yIHRoZSBjdXJyZW50bHkgYm91bmQgZnJhbWVidWZm
ZXIgaXMgbm90IG51bGwsIHJlbW92ZSB0aGUgYXR0YWNoZWQgb2JqZWN0LgotICAgIHZvaWQgcmVt
b3ZlQXR0YWNobWVudEZyb21Cb3VuZEZyYW1lYnVmZmVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2Nr
ZXImLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpOworICAgIHZvaWQgcmVt
b3ZlQXR0YWNobWVudEZyb21Cb3VuZEZyYW1lYnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KTsKICAgICBXZWJHTFNoYXJlZE9i
amVjdCogZ2V0QXR0YWNobWVudE9iamVjdChHQ0dMZW51bSkgY29uc3Q7CiAKICNpZiAhVVNFKEFO
R0xFKQpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAgIEdDR0xlbnVtIGdldERyYXdC
dWZmZXIoR0NHTGVudW0pOwogCi0gICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJik7CisgICAg
dm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIEpTQzo6
QWJzdHJhY3RTbG90VmlzaXRvciYpOwogCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgIGJvb2wgaXNP
cGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xGcmFtZWJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFj
dExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhp
Y3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIFdlYkdMQXR0
YWNobWVudCogZ2V0QXR0YWNobWVudChHQ0dMZW51bSkgY29uc3Q7CiAKQEAgLTE0OSw5ICsxNDks
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QXR0YWNobWVudEludGVybmFsKEdDR0xlbnVtIGF0
dGFjaG1lbnQsIFdlYkdMUmVuZGVyYnVmZmVyKik7CiAgICAgLy8gSWYgYSBnaXZlbiBhdHRhY2ht
ZW50IHBvaW50IGZvciB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyIGlzIG5vdAogICAg
IC8vIG51bGwsIHJlbW92ZSB0aGUgYXR0YWNoZWQgb2JqZWN0LgotICAgIHZvaWQgcmVtb3ZlQXR0
YWNobWVudEludGVybmFsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHQ0dMZW51bSBhdHRh
Y2htZW50KTsKKyAgICB2b2lkIHJlbW92ZUF0dGFjaG1lbnRJbnRlcm5hbChjb25zdCBBYnN0cmFj
dExvY2tlciYsIEdDR0xlbnVtIGF0dGFjaG1lbnQpOwogCi0gICAgdHlwZWRlZiBXVEY6Okhhc2hN
YXA8R0NHTGVudW0sIFJlZlB0cjxXZWJHTEF0dGFjaG1lbnQ+PiBBdHRhY2htZW50TWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxHQ0dMZW51bSwgUmVmUHRyPFdlYkdMQXR0YWNobWVudD4+IEF0dGFj
aG1lbnRNYXA7CiAKICAgICBBdHRhY2htZW50TWFwIG1fYXR0YWNobWVudHM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCmluZGV4IGQ2NzIwZTcyNzZlYTJhZTk0MmM5
ZGI4YTQzMGUxYmJhNWU4MjRmM2IuLjYyYjhmNzQwNzllZGFmNWE2ODgzNmUzMGJjODI4NThkZmE1
NGIwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaApAQCAtNDks
MTAgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgQWJzdHJhY3RMb2NrZXIgYXJndW1lbnQg
ZW5mb3JjZXMgYXQgY29tcGlsZSB0aW1lIHRoYXQgdGhlIG9iamVjdEdyYXBoTG9jawogICAgIC8v
IGlzIGhlbGQuIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5IGZvciBhbGwgb2JqZWN0IHR5cGVzLCBidXQg
ZW5vdWdoIG9mIHRoZW0gdGhhdAogICAgIC8vIGl0J3MgZG9uZSBmb3IgYWxsIG9mIHRoZW0uCi0g
ICAgdm9pZCBkZWxldGVPYmplY3QoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNz
Q29udGV4dEdMKik7CisgICAgdm9pZCBkZWxldGVPYmplY3QoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTCopOwogCiAgICAgdm9pZCBvbkF0dGFjaGVkKCkgeyArK21fYXR0
YWNobWVudENvdW50OyB9Ci0gICAgdm9pZCBvbkRldGFjaGVkKGNvbnN0IFdURjo6QWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCopOworICAgIHZvaWQgb25EZXRhY2hlZChjb25zdCBB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKik7CiAKICAgICAvLyBUaGlzIGluZGlj
YXRlcyB3aGV0aGVyIHRoZSBjbGllbnQgc2lkZSBpc3N1ZSBhIGRlbGV0ZSBjYWxsIGFscmVhZHks
IG5vdAogICAgIC8vIHdoZXRoZXIgdGhlIE9wZW5HTCByZXNvdXJjZSBpcyBkZWxldGVkLgpAQCAt
NzgsNyArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5EZXN0cnVjdG9yKCk7CiAKICAg
ICAvLyBkZWxldGVPYmplY3RJbXBsIHNob3VsZCBiZSBvbmx5IGNhbGxlZCBvbmNlIHRvIGRlbGV0
ZSB0aGUgT3BlbkdMIHJlc291cmNlLgotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RJbXBs
KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3Jt
R0xPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgPSAw
OwogCiAgICAgdmlydHVhbCBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3QgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IDk2ODVhOGNiY2U1
NjhlOTU5ODFkNDdmYmYwNzRiMDk1ZGU2NTZlNTAuLjdiOGViN2QwM2IzNDIxNzFmNmRlZDkzYzNm
OWRlYTdjMDk5ZDhlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3Jh
bS5oCkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGluY3JlYXNlTGlua0NvdW50
KCk7CiAKICAgICBXZWJHTFNoYWRlciogZ2V0QXR0YWNoZWRTaGFkZXIoR0NHTGVudW0pOwotICAg
IGJvb2wgYXR0YWNoU2hhZGVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBXZWJHTFNoYWRl
ciopOwotICAgIGJvb2wgZGV0YWNoU2hhZGVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBX
ZWJHTFNoYWRlciopOworICAgIGJvb2wgYXR0YWNoU2hhZGVyKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiwgV2ViR0xTaGFkZXIqKTsKKyAgICBib29sIGRldGFjaFNoYWRlcihjb25zdCBBYnN0cmFjdExv
Y2tlciYsIFdlYkdMU2hhZGVyKik7CiAgICAgCiAgICAgdm9pZCBzZXRSZXF1aXJlZFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVyQ291bnQoaW50IGNvdW50KQogICAgIHsKQEAgLTg4LDEyICs4OCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3JlcXVpcmVkVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJDb3VudDsKICAgICB9CiAKLSAgICB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKTsKKyAgICB2
b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpB
YnN0cmFjdFNsb3RWaXNpdG9yJik7CiAKIHByaXZhdGU6CiAgICAgV2ViR0xQcm9ncmFtKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRHTCop
OwogICAgIHZvaWQgY2FjaGVJbmZvSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUXVlcnkuaAppbmRleCA5OTJmN2M4NzhlODgwODhlNDNhZGMxN2RmOTIxNmQ5NTJhZjE5
Nzk2Li45NmFmMzgxYmMwZDY4YjhmMzE5NTdjYmU2N2E3NzU3YThkYTc3MTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3ND
b250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9pc1Jl
c3VsdEF2YWlsYWJsZSB7IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV90YXJnZXQgeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAppbmRleCAx
MjRiNDM4Y2M1OWNmZGVjZjNjYzk0ZGY1MmIxNjgzYjEwY2Y0OWRkLi4xYzAyNjc2ZjgwMzdmMDg2
ZmU0YzI3MDJlOGY1NGMxMjY4MmI2NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAK
LSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wq
LCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSZW5kZXJidWZmZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXgg
OWZmMGE5N2M5M2NlYTc3NWY5M2M4MGZkZDlhNDFiZDAzNThlNzIzYi4uZWNmZjU5MWNjNjcxMDY2
NzE0MWRlY2ViNzM3MDE4NWFiYTIzYzJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTI5Myw3ICsy
OTMsNyBAQCBuYW1lc3BhY2UgewogICAgICAgICBVQ2hhciB0ZW1wID0gMDsKICAgICAgICAgc3dp
dGNoIChtX3BhcnNlU3RhdGUpIHsKICAgICAgICAgY2FzZSBCZWdpbm5pbmdPZkxpbmU6Ci0gICAg
ICAgICAgICBpZiAoV1RGOjppc0FTQ0lJU3BhY2UoYykpIHsKKyAgICAgICAgICAgIGlmIChpc0FT
Q0lJU3BhY2UoYykpIHsKICAgICAgICAgICAgICAgICBlbWl0KGMpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNzc4Miw3ICs3NzgyLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVu
dEZvclRlc3RpbmcKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbnN1cmVOb3RO
dWxsKGNvbnN0IFN0cmluZyYgdGV4dCkgY29uc3QKIHsKICAgICBpZiAodGV4dC5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6ZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBmMDk4ODU3
N2IyY2JiMjM0MzhhODczNTcwNTBlZmVkMzUyNzg5Mjg1Li42NTI0YzkxNzM3NTcwOWEyYzY1MGUy
YWI4MTYxMzlkZjUwNTgxNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC01MzcsNyArNTM3LDcgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBl
eHRlbnNpb25OYW1lTGl0ZXJhbCk7CiAgICAgdm9pZCBsb3NlRXh0ZW5zaW9ucyhMb3N0Q29udGV4
dE1vZGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHVuY2FjaGVEZWxldGVkQnVmZmVyKGNvbnN0IFdU
Rjo6QWJzdHJhY3RMb2NrZXImLCBXZWJHTEJ1ZmZlciopOworICAgIHZpcnR1YWwgdm9pZCB1bmNh
Y2hlRGVsZXRlZEJ1ZmZlcihjb25zdCBBYnN0cmFjdExvY2tlciYsIFdlYkdMQnVmZmVyKik7CiAK
ICAgICBib29sIGNvbXBvc2l0aW5nUmVzdWx0c05lZWRVcGRhdGluZygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fY29tcG9zaXRpbmdSZXN1bHRzTmVlZFVwZGF0aW5nOyB9CiAgICAgYm9vbCBuZWVk
c1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAg
LTU2MCw3ICs1NjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlP
YmplY3RCYXNlPiBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdDsKICAgICBSZWZQdHI8V2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdEJhc2U+IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdDsKIAotICAgIHZv
aWQgc2V0Qm91bmRWZXJ0ZXhBcnJheU9iamVjdChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UqKTsKKyAgICB2b2lkIHNldEJvdW5kVmVydGV4QXJy
YXlPYmplY3QoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFz
ZSopOwogICAgIAogICAgIGNsYXNzIFZlcnRleEF0dHJpYlZhbHVlIHsKICAgICBwdWJsaWM6CkBA
IC0xMDYxLDcgKzEwNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24g
Zm9yIGRlbGV0ZSogKGRlbGV0ZUJ1ZmZlciwgZGVsZXRlUHJvZ3JhbSwgZXRjKSBmdW5jdGlvbnMu
CiAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIGNhbGxlciBzaG91bGQgcmV0dXJuIHdpdGhvdXQgZnVy
dGhlciBwcm9jZXNzaW5nLgotICAgIGJvb2wgZGVsZXRlT2JqZWN0KGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBXZWJHTE9iamVjdCopOworICAgIGJvb2wgZGVsZXRlT2JqZWN0KGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiwgV2ViR0xPYmplY3QqKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiBm
b3IgQVBJcyB3aGljaCBjYW4gbGVnYWxseSByZWNlaXZlIG51bGwgb2JqZWN0cywgaW5jbHVkaW5n
CiAgICAgLy8gdGhlIGJpbmQqIGNhbGxzIChiaW5kQnVmZmVyLCBiaW5kVGV4dHVyZSwgZXRjLikg
YW5kIHVzZVByb2dyYW0uIENoZWNrcyB0aGF0CkBAIC0xMDc5LDcgKzEwNzksNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IGJvdW5kIGJ1ZmZlciB0byB0YXJnZXQsIG9y
IDAgaWYgdGhlIHRhcmdldCBpcyBpbnZhbGlkLgogICAgIHZpcnR1YWwgV2ViR0xCdWZmZXIqIHZh
bGlkYXRlQnVmZmVyRGF0YVRhcmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVt
IHRhcmdldCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRp
bmcoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciopOworICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0
ZUFuZENhY2hlQnVmZmVyQmluZGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciopOwogCiAjaWYgIVVT
RShBTkdMRSkKICAgICAvLyBIZWxwZXJzIGZvciBzaW11bGF0aW5nIHZlcnRleEF0dHJpYjAuCkBA
IC0xMTA4LDcgKzExMDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBHQ0dMaW50IGdldE1h
eENvbG9yQXR0YWNobWVudHMoKSA9IDA7CiAKICAgICB2b2lkIHNldEJhY2tEcmF3QnVmZmVyKEdD
R0xlbnVtKTsKLSAgICB2b2lkIHNldEZyYW1lYnVmZmVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2Nr
ZXImLCBHQ0dMZW51bSwgV2ViR0xGcmFtZWJ1ZmZlciopOworICAgIHZvaWQgc2V0RnJhbWVidWZm
ZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHQ0dMZW51bSwgV2ViR0xGcmFtZWJ1ZmZlciopOwog
CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVDdXJyZW50RnJhbWVidWZmZXIoKTsKICAgICB2b2lk
IHJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU2FtcGxlci5oCmluZGV4IDRlMTBkNzcxNzM1MDEwOWM4OGExOTljNTFlN2YyMWFkODA1YTgy
YTMuLjg3NTQ5NWZkZTIyNGNiNzZiZTY3ZWNmYWFmOWQ4YTkyOGE2NmE3NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJHTFNhbXBsZXIoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3Ry
YWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGlj
c0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
aGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKaW5kZXgg
OTM0YjNkYzE4YWYzNDdjM2Q1MGZhZTRiMDY1Yzk4MjlmMGJkOTliNi4uZTk0MTEzOTk4OWVkZmJh
M2UzODBmNWQ5OGY4ODk1MTg3M2Q2MmExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNoYWRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2Vi
R0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEdDR0xlbnVtKTsKIAotICAgIHZv
aWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3ND
b250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVj
dEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3Jt
R0xPYmplY3QpIGZpbmFsOwogCiAgICAgR0NHTGVudW0gbV90eXBlOwogICAgIFN0cmluZyBtX3Nv
dXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVk
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5o
CmluZGV4IDBjYjkzNTRhMjIzYmNmOTc0YzQzOTZkZjQ4YWVmNWQ4YjQyMmE4MmIuLmEyZTdjYzUy
OWM4OGExNjQ3NDI3YWMwOWY3ZTc0ZWNlM2MwOGM2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBjb250ZXh0R3JvdXAgPT0gbV9jb250ZXh0R3JvdXA7CiAgICAgfQog
Ci0gICAgdm9pZCBkZXRhY2hDb250ZXh0R3JvdXAoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYp
OworICAgIHZvaWQgZGV0YWNoQ29udGV4dEdyb3VwKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CiAK
ICAgICB2b2lkIGRldGFjaENvbnRleHRHcm91cFdpdGhvdXREZWxldGluZ09iamVjdCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCmluZGV4IDYwYWIwNmE5MjNmNWUwOTI2
Y2M5YmY4NWIwYTA1MWYyZTRkYTgwMWYuLjUwYmUwNDRiYWU2Y2Q5MjdjYmE3Y2UzNjQ3NmU5ZTJk
NDUzMWU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3lu
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCkBAIC01MCw3
ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgR0NHTGludCBtX3N5bmNTdGF0dXMgPSB7IEdyYXBoaWNz
Q29udGV4dEdMOjpVTlNJR05BTEVEIH07CiAgICAgR0NHTHN5bmMgbV9zeW5jOwogCi0gICAgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0Nv
bnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCmluZGV4IGE4NWFjNzg4ZTdmMTc5
NzZiZWE1NDY3YzNkMjAxZGM4OGZmZDZlZmUuLjk5NDg2ZWU1MmQ0ODE4NThhNzgzODg5NjE1ZDFh
YmNjOThlNzdmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5o
CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xUZXh0dXJlKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdM
T2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJh
Y3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
OwogCiAgICAgYm9vbCBpc1RleHR1cmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3Jt
RmVlZGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVl
ZGJhY2suaAppbmRleCA2MDUxZWRkMGI1ZGI3ODdjNmZmYTRmZDVkZWRmODNlYzliOTJlZjc5Li4z
Njk3NjZiNDU4YzE4NzY4NDgxMWFmNjE1ZjgxMDAyZTA2ODZmMmVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBhcmUgdGhlIGluZGV4ZWQgYmluZCBwb2lu
dHMgZm9yIHRyYW5zZm9ybSBmZWVkYmFjayBidWZmZXJzLgogICAgIC8vIFJldHVybnMgZmFsc2Ug
aWYgaW5kZXggaXMgb3V0IG9mIHJhbmdlIGFuZCB0aGUgY2FsbGVyIHNob3VsZAogICAgIC8vIHN5
bnRoZXNpemUgYSBHTCBlcnJvci4KLSAgICB2b2lkIHNldEJvdW5kSW5kZXhlZFRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHQ0dMdWludCBpbmRleCwg
V2ViR0xCdWZmZXIqKTsKKyAgICB2b2lkIHNldEJvdW5kSW5kZXhlZFRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVy
Kik7CiAgICAgYm9vbCBnZXRCb3VuZEluZGV4ZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihHQ0dM
dWludCBpbmRleCwgV2ViR0xCdWZmZXIqKiBvdXRCdWZmZXIpOwogICAgIAogICAgIGJvb2wgdmFs
aWRhdGVQcm9ncmFtRm9yUmVzdW1lKFdlYkdMUHJvZ3JhbSopIGNvbnN0OwpAQCAtNjcsNyArNjcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFdmVyQmVlbkJvdW5kKCkgeyBtX2hhc0V2ZXJC
ZWVuQm91bmQgPSB0cnVlOyB9CiAgICAgCiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9ncmFtLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcm9ncmFtKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBXZWJHTFByb2dyYW0mKTsKKyAgICB2b2lkIHNldFByb2dy
YW0oY29uc3QgQWJzdHJhY3RMb2NrZXImLCBXZWJHTFByb2dyYW0mKTsKICAgICAKICAgICB2b2lk
IHVuYmluZEJ1ZmZlcihjb25zdCBBYnN0cmFjdExvY2tlciYsIFdlYkdMQnVmZmVyJik7CiAgICAg
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjayhXZWJHTDJSZW5kZXJpbmdDb250ZXh0Jik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVj
dEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxh
dGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKICAgICAKICAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
cGF1c2VkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3QuaAppbmRleCBmN2IzNmE5Zjk4ZjJlZDRkZjE1MmY3Y2NhMzhh
NmNkYzcwYmNiYTA0Li44ZDdhZmZjOThiNmMwM2M5NGIzZjUzYzg2NGI1OWM1MDYxN2ZiMTYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRl
eEFycmF5T2JqZWN0KCk7CiBwcml2YXRlOgogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFR5cGUpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1w
bChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9y
bUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJh
Y3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmgKaW5kZXggYzYxMzhiYmU2
NWU3ZDM5MDRmZmE2MzU1ZTZjY2M2YzU3NzhjODQwNC4uYTMyYzc3YTg1OTlmNzdiMWM0ODJkY2Yz
MDhjNTFhYzBiYWZlOTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCkBAIC03MCwyMSArNzAsMjEgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SGFzRXZlckJlZW5Cb3VuZCgpIHsgbV9oYXNFdmVyQmVlbkJvdW5k
ID0gdHJ1ZTsgfQogCiAgICAgV2ViR0xCdWZmZXIqIGdldEVsZW1lbnRBcnJheUJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lk
IHNldEVsZW1lbnRBcnJheUJ1ZmZlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xC
dWZmZXIqKTsKKyAgICB2b2lkIHNldEVsZW1lbnRBcnJheUJ1ZmZlcihjb25zdCBBYnN0cmFjdExv
Y2tlciYsIFdlYkdMQnVmZmVyKik7CiAKICAgICB2b2lkIHNldFZlcnRleEF0dHJpYkVuYWJsZWQo
aW50IGluZGV4LCBib29sIGZsYWcpOwogICAgIGNvbnN0IFZlcnRleEF0dHJpYlN0YXRlJiBnZXRW
ZXJ0ZXhBdHRyaWJTdGF0ZShpbnQgaW5kZXgpIHsgcmV0dXJuIG1fdmVydGV4QXR0cmliU3RhdGVb
aW5kZXhdOyB9Ci0gICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJTdGF0ZShjb25zdCBXVEY6OkFic3Ry
YWN0TG9ja2VyJiwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xi
b29sZWFuLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIsIGJvb2wsIFdlYkdMQnVmZmVyKik7Ci0gICAg
dm9pZCB1bmJpbmRCdWZmZXIoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIFdlYkdMQnVmZmVy
Jik7CisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJTdGF0ZShjb25zdCBBYnN0cmFjdExvY2tlciYs
IEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMYm9vbGVhbiwgR0NH
THNpemVpLCBHQ0dMaW50cHRyLCBib29sLCBXZWJHTEJ1ZmZlciopOworICAgIHZvaWQgdW5iaW5k
QnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgV2ViR0xCdWZmZXImKTsKIAogICAgIHZvaWQg
c2V0VmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcik7
CiAKLSAgICB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0IFdURjo6QWJzdHJhY3RM
b2NrZXImLCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIGFkZE1lbWJlcnNU
b09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpBYnN0cmFjdFNsb3RWaXNp
dG9yJik7CiAKICAgICBib29sIGFyZUFsbEVuYWJsZWRBdHRyaWJCdWZmZXJzQm91bmQoKTsKIHBy
b3RlY3RlZDoKICAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiwgVHlwZSk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlID0gMDsK
ICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgdXBkYXRlVmVydGV4QXR0cmliMCgpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuY3BwCmluZGV4IDExMGNjNzc1YTRmZDc4ZWEzMjkzNGE1NjAxYjQ5NWIyZDll
MGQ1ZjIuLjcyYjk2ODhlNmY5NWVmYzJjMDA5OWVlYmQ1ZGVjZDQzM2VkNjlhY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6On5X
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkKICAgICBydW5EZXN0cnVjdG9yKCk7CiB9CiAKLXZv
aWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBs
YXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpk
ZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29u
dGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpEZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCmluZGV4IDYy
YzhmN2MzMmZlNTY1YjZiNTcyYjdmMGRlMTIxZjgzZDZhMzkzMjcuLjFiN2YzYTJhYmYzZWM2Y2M0
NTg0YTIwMTk5Y2Q2MzQzN2QxYjM1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKTsKIHByaXZh
dGU6CiAgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiwgVHlwZSk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNz
Q29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcAppbmRleCAzODRiMDAyNjE0ZmI1N2IwMjljNzhlZmY4MjA4YTczMjE5MTA4NTUxLi41ZjI2
NDc5MmI4NzhhNGZjNmI2YzA5MDk1YmVlZTRjMDYwNGQxZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCBz
dGF0aWMgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcs
IFF1YWxpZmllZE5hbWU+IGNyZWF0ZQogICAgIGFkZE5hbWVzV2l0aFByZWZpeChtYXAsIHhsaW5r
TmFtZSwgWExpbmtOYW1lczo6Z2V0WExpbmtBdHRycygpLCBYTGlua05hbWVzOjpYTGlua0F0dHJz
Q291bnQpOwogICAgIGFkZE5hbWVzV2l0aFByZWZpeChtYXAsIHhtbEF0b20oKSwgWE1MTmFtZXM6
OmdldFhNTEF0dHJzKCksIFhNTE5hbWVzOjpYTUxBdHRyc0NvdW50KTsKIAotICAgIG1hcC5hZGQo
V1RGOjp4bWxuc0F0b20oKSwgWE1MTlNOYW1lczo6eG1sbnNBdHRyKTsKKyAgICBtYXAuYWRkKHht
bG5zQXRvbSgpLCBYTUxOU05hbWVzOjp4bWxuc0F0dHIpOwogICAgIG1hcC5hZGQoInhtbG5zOnhs
aW5rIiwgUXVhbGlmaWVkTmFtZSh4bWxuc0F0b20oKSwgeGxpbmtOYW1lLCBYTUxOU05hbWVzOjp4
bWxuc05hbWVzcGFjZVVSSSkpOwogCiAgICAgcmV0dXJuIG1hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAppbmRleCBlNzgzYTMzMWM3YzExNGM0Nzk3
ODU0YTFiMjg2MzE3ODZlOTI1NTM2Li5mNmNhZmI3MGY1N2Y5YzUxMjZiMmM1ZjU2MTEwMTAzMWIy
NTFlZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5nVXRp
bGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvUGFyc2luZ1V0aWxpdGll
cy5oCkBAIC0xNzQsNyArMTc0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
dW5zaWduZWQgbG93ZXJjYXNlTGV0dGVyc0FycmF5U2l6ZT4gYm9vbCBza2lwRXgKICAgICAKICAg
ICBpZiAocG9zaXRpb24gKyBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoID4gZW5kKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFXVEY6OmVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHBvc2l0aW9uLCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoLCBsb3dlcmNhc2VMZXR0ZXJzKSkKKyAg
ICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvc2l0aW9uLCBsb3dlcmNhc2VM
ZXR0ZXJzTGVuZ3RoLCBsb3dlcmNhc2VMZXR0ZXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHBvc2l0aW9uICs9IGxvd2VyY2FzZUxldHRlcnNMZW5ndGg7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xODYsNyArMTg2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdW5z
aWduZWQgbG93ZXJjYXNlTGV0dGVyc0FycmF5U2l6ZT4gYm9vbCBza2lwRXgKIAogICAgIGlmIChi
dWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFXVEY6OmVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGJ1ZmZlci5wb3NpdGlvbigpLCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoLCBsb3dlcmNhc2VM
ZXR0ZXJzKSkKKyAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGJ1ZmZlci5w
b3NpdGlvbigpLCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoLCBsb3dlcmNhc2VMZXR0ZXJzKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJ1ZmZlciArPSBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3Ro
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5j
cHAKaW5kZXggYTEyMGE5YmZkZTc1ODMyNzdkYzgzMGEyZWJjNGE0Njg3ZWY3NDZiZC4uNDI3MDdl
NjhmMzRjOGE0ZWQ3NjJjNmY1M2VhNTc5MTZiYjcyMmYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVFNjYW5uZXIuY3BwCkBAIC02MSw5ICs2MSw5IEBAIGJvb2wgVlRUU2Nhbm5lcjo6
c2Nhbihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGNoYXJhY3RlcnNDb3VudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgbWF0Y2hlZDsKICAgICBpZiAobV9pczhCaXQp
Ci0gICAgICAgIG1hdGNoZWQgPSBXVEY6OmVxdWFsKG1fZGF0YS5jaGFyYWN0ZXJzOCwgY2hhcmFj
dGVycywgY2hhcmFjdGVyc0NvdW50KTsKKyAgICAgICAgbWF0Y2hlZCA9IGVxdWFsKG1fZGF0YS5j
aGFyYWN0ZXJzOCwgY2hhcmFjdGVycywgY2hhcmFjdGVyc0NvdW50KTsKICAgICBlbHNlCi0gICAg
ICAgIG1hdGNoZWQgPSBXVEY6OmVxdWFsKG1fZGF0YS5jaGFyYWN0ZXJzMTYsIGNoYXJhY3RlcnMs
IGNoYXJhY3RlcnNDb3VudCk7CisgICAgICAgIG1hdGNoZWQgPSBlcXVhbChtX2RhdGEuY2hhcmFj
dGVyczE2LCBjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzQ291bnQpOwogICAgIGlmIChtYXRjaGVkKQog
ICAgICAgICBhZHZhbmNlKGNoYXJhY3RlcnNDb3VudCk7CiAgICAgcmV0dXJuIG1hdGNoZWQ7CkBA
IC04MCw5ICs4MCw5IEBAIGJvb2wgVlRUU2Nhbm5lcjo6c2NhblJ1bihjb25zdCBSdW4mIHJ1biwg
Y29uc3QgU3RyaW5nJiB0b01hdGNoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBt
YXRjaGVkOwogICAgIGlmIChtX2lzOEJpdCkKLSAgICAgICAgbWF0Y2hlZCA9IFdURjo6ZXF1YWwo
dG9NYXRjaC5pbXBsKCksIG1fZGF0YS5jaGFyYWN0ZXJzOCwgbWF0Y2hMZW5ndGgpOworICAgICAg
ICBtYXRjaGVkID0gZXF1YWwodG9NYXRjaC5pbXBsKCksIG1fZGF0YS5jaGFyYWN0ZXJzOCwgbWF0
Y2hMZW5ndGgpOwogICAgIGVsc2UKLSAgICAgICAgbWF0Y2hlZCA9IFdURjo6ZXF1YWwodG9NYXRj
aC5pbXBsKCksIG1fZGF0YS5jaGFyYWN0ZXJzMTYsIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgbWF0
Y2hlZCA9IGVxdWFsKHRvTWF0Y2guaW1wbCgpLCBtX2RhdGEuY2hhcmFjdGVyczE2LCBtYXRjaExl
bmd0aCk7CiAgICAgaWYgKG1hdGNoZWQpCiAgICAgICAgIHNlZWtUbyhydW4uZW5kKCkpOwogICAg
IHJldHVybiBtYXRjaGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tl
bml6ZXIuY3BwCmluZGV4IDU3ZGY2NTMwZTU3NjMyZGM3OTU4OTk0YTRkZTQ5NDcxNWZmODUwMWUu
LmFhNjE1N2NiYjNjZDIwZGFjZWNmYmMxYWY0OTY2MGM0NTI1NWUxOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+
IEFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbExpdGVyYWwoY29uc3QgU3RyaW5nQnVpbGRlciYgcywg
Y29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCiB7Ci0gICAgcmV0dXJu
IFdURjo6ZXF1YWwocywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMp
LCBjaGFyYWN0ZXJzQ291bnQgLSAxKTsKKyAgICByZXR1cm4gZXF1YWwocywgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBjaGFyYWN0ZXJzQ291bnQgLSAxKTsKIH0K
IAogc3RhdGljIHZvaWQgYWRkTmV3Q2xhc3MoU3RyaW5nQnVpbGRlciYgY2xhc3NlcywgY29uc3Qg
U3RyaW5nQnVpbGRlciYgbmV3Q2xhc3MpCkBAIC0xNjcsNyArMTY3LDcgQEAgVGFnU3RhdGU6CiAg
ICAgICAgIFdFQlZUVF9BRFZBTkNFX1RPKFN0YXJ0VGFnQ2xhc3NTdGF0ZSk7CiAgICAgfSBlbHNl
IGlmIChjaGFyYWN0ZXIgPT0gJy8nKSB7CiAgICAgICAgIFdFQlZUVF9BRFZBTkNFX1RPKEVuZFRh
Z1N0YXRlKTsKLSAgICB9IGVsc2UgaWYgKFdURjo6aXNBU0NJSURpZ2l0KGNoYXJhY3RlcikpIHsK
KyAgICB9IGVsc2UgaWYgKGlzQVNDSUlEaWdpdChjaGFyYWN0ZXIpKSB7CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoY2hhcmFjdGVyKTsKICAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oVGltZXN0YW1w
VGFnU3RhdGUpOwogICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICc+JyB8fCBjaGFyYWN0ZXIg
PT0ga0VuZE9mRmlsZU1hcmtlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5oCmluZGV4IDM1NzMyYjE5ODkzN2Y1MDc1MjdmNmFmNjhhOWQzNDc4YTkw
MjY0NGYuLjQwNDFhZGU1ZDA3NjUyZTNkOGU4ZGM3NWI2NDFlMjc4YTMxY2ZkOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmgKQEAgLTgwLDcgKzgw
LDcgQEAgcHVibGljOgogICAgICAgICBib29sIG9uY2U7CiAgICAgfTsKIAotICAgIHVzaW5nIEV2
ZW50TGlzdGVuZXJzUmVjb3JkID0gVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgVmVj
dG9yPExpc3RlbmVyRW50cnk+Pj47CisgICAgdXNpbmcgRXZlbnRMaXN0ZW5lcnNSZWNvcmQgPSBW
ZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgVmVjdG9yPExpc3RlbmVyRW50cnk+Pj47CiAgICAg
RXZlbnRMaXN0ZW5lcnNSZWNvcmQgZ2V0RXZlbnRMaXN0ZW5lcnMoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEV2ZW50VGFyZ2V0Jik7CiAKICAgICBTdHJpbmcgZGF0YWJhc2VJZChEYXRhYmFzZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA2YWY0
YThjMGNmMzE3YTQ1NDEyYjEwY2ZkZmQ4MDllMDRmYjdhOWEyLi4zNzJiOTc0OTI5OWRlMDhjZmZl
OWFiNGIzMmNjZWE5ZjkzYWRmMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERP
TVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUmIHBhcmVudE5v
ZGUsCiAKICAgICAvLyAxLiBGaXJzdCBzdHJpcCBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgdGhlIG5v
ZGVzIHRoYXQgcmV0YWluLiBDb2xsZWN0IHBlbmRpbmcgbWVyZ2VzLgogICAgIEhhc2hNYXA8RGln
ZXN0KiwgRGlnZXN0Kj4gbWVyZ2VzOwotICAgIEhhc2hTZXQ8c2l6ZV90LCBXVEY6OkludEhhc2g8
c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+PiB1c2Vk
TmV3T3JkaW5hbHM7CisgICAgSGFzaFNldDxzaXplX3QsIEludEhhc2g8c2l6ZV90PiwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+PiB1c2VkTmV3T3JkaW5hbHM7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvbGRMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChvbGRNYXBbaV0uZmlyc3QpIHsKICAgICAgICAgICAgIGlmICghdXNlZE5ld09yZGluYWxz
LmNvbnRhaW5zKG9sZE1hcFtpXS5zZWNvbmQpKSB7CkBAIC0zMzYsNyArMzM2LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4oQ29udGFpbmVy
Tm9kZSYgcGFyZW50Tm9kZSwKICAgICB9CiAKICAgICAvLyBNYXJrIHJldGFpbmVkIG5vZGVzIGFz
IHVzZWQsIGRvIG5vdCByZXVzZSBub2RlIG1vcmUgdGhhbiBvbmNlLgotICAgIEhhc2hTZXQ8c2l6
ZV90LCBXVEY6OkludEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czxzaXplX3Q+PiB1c2VkT2xkT3JkaW5hbHM7CisgICAgSGFzaFNldDxzaXplX3QsIEludEhh
c2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+PiB1
c2VkT2xkT3JkaW5hbHM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdMaXN0LnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGlmICghbmV3TWFwW2ldLmZpcnN0KQogICAgICAgICAgICAgY29u
dGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCA3ODRiZjQ4MmZkNjhkYTY4ZTFmMzhmZDVjZDZiY2VkYzg5NzFkZmRhLi4xMWMyNmNj
ZmQ4MzZjMjNlYzg1YTUyMDgyZTRlYjRmNGExZmZkZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJs
aWM6CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIGZ1bmN0aW9u
Q2FsbEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckV2
YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IGZyb250ZW5kSW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKLSAgICBXVEY6OlN0b3B3YXRjaCYgZXhl
Y3V0aW9uU3RvcHdhdGNoKCkgY29uc3QgZmluYWw7CisgICAgU3RvcHdhdGNoJiBleGVjdXRpb25T
dG9wd2F0Y2goKSBjb25zdCBmaW5hbDsKICAgICBQYWdlRGVidWdnZXImIGRlYnVnZ2VyKCkgb3Zl
cnJpZGU7CiAgICAgSlNDOjpWTSYgdm0oKSBvdmVycmlkZTsKIApAQCAtMTM1LDcgKzEzNSw3IEBA
IHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1fZnJvbnRlbmRS
b3V0ZXI7CiAgICAgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvck92ZXJsYXk+IG1fb3Zlcmxh
eTsKLSAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOworICAgIFJl
ZjxTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFBhZ2VEZWJ1Z2dlciBtX2Rl
YnVnZ2VyOwogICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAppbmRl
eCAxMWIzNTFlODUzNjcyOGMxYTQ2NDM3NmUzYTg5ZWQzYTcxOGZiMzY3Li4yNjc4ODNkOTkyNTFl
MmViNWVlYjQ5MjBjNmMwMDYwNjY1YjZjOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaApAQCAtNDEsOCArNDEsOCBAQAogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogbmFtZXNwYWNlIEluc3BlY3RvciB7Ci11
c2luZyBFeHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOwotdXNpbmcgRXh0ZW5zaW9uVGFiSUQgPSBX
VEY6OlN0cmluZzsKK3VzaW5nIEV4dGVuc2lvbklEID0gU3RyaW5nOwordXNpbmcgRXh0ZW5zaW9u
VGFiSUQgPSBTdHJpbmc7CiB9CiAjZW5kaWYKIApAQCAtMTA2LDggKzEwNiw4IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBvcGVuVVJMRXh0ZXJuYWxseShjb25z
dCBTdHJpbmcmIHVybCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjb250ZW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmUoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29s
IGZvcmNlU2F2ZUFzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5z
cGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA1
MmZmYTI2Nzk2YWYwMjU2MDAwNGZjZTk1ZTZmZmQyZjU1ZmVmN2RhLi4zODUxYmRiM2VlZjRiMjdh
MzEzNDRhYjM5YmI3NWI0YmVkZGM2ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVi
bGljOgogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnVuY3Rpb25DYWxsSGFuZGxlciBmdW5jdGlv
bkNhbGxIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JF
dmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmcm9udGVuZEluaXRpYWxpemVkKCkgb3ZlcnJpZGUgeyB9Ci0gICAgV1RGOjpTdG9wd2F0Y2gm
IGV4ZWN1dGlvblN0b3B3YXRjaCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXhlY3V0aW9uU3Rv
cHdhdGNoOyB9CisgICAgU3RvcHdhdGNoJiBleGVjdXRpb25TdG9wd2F0Y2goKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsgfQogICAgIFdvcmtlckRlYnVnZ2VyJiBk
ZWJ1Z2dlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KICAgICBKU0M6OlZNJiB2
bSgpIG92ZXJyaWRlOwogCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CiAgICAgUmVmPEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1fZnJvbnRlbmRSb3V0ZXI7CiAg
ICAgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
Ci0gICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKKyAgICBSZWY8
U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBXb3JrZXJEZWJ1Z2dlciBtX2Rl
YnVnZ2VyOwogICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV9nbG9iYWxTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRC
cmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAppbmRleCAxZGJiMzAzZjFlZDkxZDE2N2UxMGE4
ZDRjNTY1OWI1MmI4ZWE3ODljLi5iMWYyNTNiNjdhMDI4YTMzYmUxMjE5ZmM4MTk5Njc5OTVjYjE5
MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBA
IC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogI2lmIEFTU0VSVF9FTkFCTEVECiBz
dGF0aWMgaW5saW5lIGJvb2wgaGFzVHJhaWxpbmdUZXh0Q29udGVudChjb25zdCBJbmxpbmVDb250
ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQmIGNvbnRpbnVvdXNDb250ZW50KQogewotICAg
IGZvciAoYXV0byYgcnVuIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShjb250aW51b3VzQ29udGVu
dC5ydW5zKCkpKSB7CisgICAgZm9yIChhdXRvJiBydW4gOiBtYWtlUmV2ZXJzZWRSYW5nZShjb250
aW51b3VzQ29udGVudC5ydW5zKCkpKSB7CiAgICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBydW4u
aW5saW5lSXRlbTsKICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8
IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCAzNjdkNmQ3NmU5MGI0NmMzNWRkNjBkMWFlNTBi
NjAxMzg3Y2YxZTdjLi4wN2FkMWIyM2U5NTc4YWJiYjZmNTM3M2M2OTg0ZjA3ZGU4NGYzN2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgTGlu
ZTo6dmlzdWFsbHlDb2xsYXBzZUhhbmdpbmdPdmVyZmxvdyhJbmxpbmVMYXlvdXRVbml0IGhvcml6
b250YWxBdmFpbGFibGVTCiAgICAgLy8gTGV0J3MganVzdCBmaW5kIHRoZSB0cmFpbGluZyBwcmUt
d3JhcCB3aGl0ZXNwYWNlIGNvbnRlbnQgZm9yIG5vdyAoZS5nIGNoZWNrIGlmIHRoZXJlIGFyZSBt
dWx0aXBsZSB0cmFpbGluZyBydW5zIHdpdGgKICAgICAvLyBkaWZmZXJlbnQgc2V0IG9mIHdoaXRl
LXNwYWNlIHZhbHVlcyBhbmQgZGVjaWRlIGlmIHRoZSBpbi1iZXR3ZWVuIHByZS13cmFwIGNvbnRl
bnQgc2hvdWxkIGJlIGNvbGxhcHNlZCBhcyB3ZWxsLikKICAgICBhdXRvIHRyaW1tZWRDb250ZW50
V2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICBmb3IgKGF1dG8mIHJ1biA6IFdURjo6
bWFrZVJldmVyc2VkUmFuZ2UobV9ydW5zKSkgeworICAgIGZvciAoYXV0byYgcnVuIDogbWFrZVJl
dmVyc2VkUmFuZ2UobV9ydW5zKSkgewogICAgICAgICBpZiAoIXJ1bi5zaG91bGRUcmFpbGluZ1do
aXRlc3BhY2VIYW5nKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYXV0byB2aXN1YWxs
eUNvbGxhcHNpYmxlSW5saW5lSXRlbSA9IHJ1bi5pc0xpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0
KCkgfHwgcnVuLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxpbmVCb3hFbmQoKSB8fCBy
dW4uaGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCk7CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBMaW5l
OjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lVGV4dEl0ZW0s
IGNvbnN0IFJlbmRlclMKICAgICAgICAgaWYgKElubGluZVRleHRJdGVtOjpzaG91bGRQcmVzZXJ2
ZVNwYWNlc0FuZFRhYnMoaW5saW5lVGV4dEl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAvLyBUaGlzIGNvbnRlbnQgaXMgY29sbGFwc2libGUuIExldCdzIGNoZWNrIGlm
IHRoZSBsYXN0IGl0ZW0gaXMgY29sbGFwc2VkLgotICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IFdU
Rjo6bWFrZVJldmVyc2VkUmFuZ2UobV9ydW5zKSkgeworICAgICAgICBmb3IgKGF1dG8mIHJ1biA6
IG1ha2VSZXZlcnNlZFJhbmdlKG1fcnVucykpIHsKICAgICAgICAgICAgIGlmIChydW4uaXNCb3go
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQtMy8jd2hpdGUtc3BhY2UtcGhhc2UtMQpAQCAtNDM5
LDcgKzQzOSw3IEBAIElubGluZUxheW91dFVuaXQgTGluZTo6cmVtb3ZlQm9yZGVyQW5kUGFkZGlu
Z0VuZEZvcklubGluZUJveERlY29yYXRpb25DbG9uZShjb25zCiAKIHZvaWQgTGluZTo6YWRkVHJh
aWxpbmdIeXBoZW4oSW5saW5lTGF5b3V0VW5pdCBoeXBoZW5Mb2dpY2FsV2lkdGgpCiB7Ci0gICAg
Zm9yIChhdXRvJiBydW4gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKG1fcnVucykpIHsKKyAgICBm
b3IgKGF1dG8mIHJ1biA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fcnVucykpIHsKICAgICAgICAgaWYg
KCFydW4uaXNUZXh0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcnVuLnNldE5l
ZWRzSHlwaGVuKGh5cGhlbkxvZ2ljYWxXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQnVpbGRlci5jcHAKaW5kZXggNmU0Mzg4MGVkYTllNDM0NmE3OTgwMTIxYmVkZmMxNDgwNTZh
MWRjMi4uNTJmYjQ1NmQ4Mjc0NTQxODdiZGNmZTBmODI1MmNlMGQ2OTAxMTZmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIHZv
aWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgVXNlZENvbnN0cmFpbnRzJiBsaW5lQ29u
c3RyYWludHMsIGJvb2wgaXNGaXJzCiAgICAgICAgICAgICBzcGFubmluZ0xheW91dEJveExpc3Qu
YXBwZW5kKGFuY2VzdG9yKTsKICAgICAgICAgICAgIGFuY2VzdG9yID0gJmFuY2VzdG9yLT5wYXJl
bnQoKTsKICAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8qIHNwYW5uaW5nSW5saW5lQm94IDog
V1RGOjptYWtlUmV2ZXJzZWRSYW5nZShzcGFubmluZ0xheW91dEJveExpc3QpKQorICAgICAgICBm
b3IgKGF1dG8qIHNwYW5uaW5nSW5saW5lQm94IDogbWFrZVJldmVyc2VkUmFuZ2Uoc3Bhbm5pbmdM
YXlvdXRCb3hMaXN0KSkKICAgICAgICAgICAgIG1fbGluZVNwYW5uaW5nSW5saW5lQm94ZXMuYXBw
ZW5kKHsgKnNwYW5uaW5nSW5saW5lQm94LCBJbmxpbmVJdGVtOjpUeXBlOjpJbmxpbmVCb3hTdGFy
dCB9KTsKICAgICB9OwogICAgIGNyZWF0ZUxpbmVTcGFubmluZ0lubGluZUJveGVzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1Rh
YmxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJs
ZS9UYWJsZUdyaWQuaAppbmRleCA2OTFmMjI5NTdkODU0YWU2YmI0OGUzNzYxYTk3NjdjY2NjN2Zi
ZTUzLi4xNWVhYTI2ZTI4ZTNhMzQ4YzJjMDA0YWM3MDg1MDZiYzI2NGEzYTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3Jp
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVHcmlkLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUm93cyYg
cm93cygpIGNvbnN0IHsgcmV0dXJuIG1fcm93czsgfQogICAgIFJvd3MmIHJvd3MoKSB7IHJldHVy
biBtX3Jvd3M7IH0KIAotICAgIHVzaW5nIENlbGxzID0gV1RGOjpMaXN0SGFzaFNldDxzdGQ6OnVu
aXF1ZV9wdHI8Q2VsbD4+OworICAgIHVzaW5nIENlbGxzID0gTGlzdEhhc2hTZXQ8c3RkOjp1bmlx
dWVfcHRyPENlbGw+PjsKICAgICBDZWxscyYgY2VsbHMoKSB7IHJldHVybiBtX2NlbGxzOyB9CiAK
ICAgICBTbG90KiBzbG90KFNsb3RQb3NpdGlvbik7CkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNTcGFubmVkKFNsb3RQb3NpdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgdXNp
bmcgU2xvdE1hcCA9IFdURjo6SGFzaE1hcDxTbG90UG9zaXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxT
bG90Pj47CisgICAgdXNpbmcgU2xvdE1hcCA9IEhhc2hNYXA8U2xvdFBvc2l0aW9uLCBzdGQ6OnVu
aXF1ZV9wdHI8U2xvdD4+OwogCiAgICAgQ29sdW1ucyBtX2NvbHVtbnM7CiAgICAgUm93cyBtX3Jv
d3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L3RhYmxlL1RhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwCmluZGV4IDMzYmE1NzEzNjY5ZWU0ODI5MzQy
NWY0M2U2ZjFmODg0MTA0MmVlMDIuLjAyOTYwMGIzMzUyYjNmZWIzZmEwZTliOTAzODkxOWI2MjQ2
YzNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAg
aW5saW5lIHN0YXRpYyBHcmlkU3BhY2UmIG9wZXJhdG9yLyhHcmlkU3BhY2UmIGEsIHVuc2lnbmVk
IHZhbHVlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3BhblR5cGU+Ci1zdGF0aWMgVmVjdG9y
PExheW91dFVuaXQ+IGRpc3RyaWJ1dGVBdmFpbGFibGVTcGFjZShjb25zdCBUYWJsZUdyaWQmIGdy
aWQsIExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UsIGNvbnN0IFdURjo6RnVuY3Rpb248R3JpZFNw
YWNlKGNvbnN0IFRhYmxlR3JpZDo6U2xvdCYsIHNpemVfdCk+JiBzbG90U3BhY2UpCitzdGF0aWMg
VmVjdG9yPExheW91dFVuaXQ+IGRpc3RyaWJ1dGVBdmFpbGFibGVTcGFjZShjb25zdCBUYWJsZUdy
aWQmIGdyaWQsIExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UsIGNvbnN0IEZ1bmN0aW9uPEdyaWRT
cGFjZShjb25zdCBUYWJsZUdyaWQ6OlNsb3QmLCBzaXplX3QpPiYgc2xvdFNwYWNlKQogewogICAg
IGF1dG8mIGNvbHVtbnMgPSBncmlkLmNvbHVtbnMoKTsKICAgICBhdXRvJiByb3dzID0gZ3JpZC5y
b3dzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcApp
bmRleCA2OWY1NzQ2MTAzNmNlM2YyZjM2OTM3NTNiZDdjZDZiMzg2MjljZTcxLi40YzQ0Yzk2YjA0
YTFmOWRiNDA4YWE1OWE4YWMyYmNmMDgxY2JkMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgc3RhdGljIFRleHRM
b2dpY2FsT3JkZXJDYWNoZSBtYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQoY29uc3Qg
UmVuZGVyVGV4dCYKICAgICBpZiAoIXRleHQuY29udGFpbnNSZXZlcnNlZFRleHQoKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gY2FjaGUgPSBXVEY6Om1ha2VVbmlxdWU8VGV4dExv
Z2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxUZXh0
TG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOwogICAgIGZvciAoYXV0byB0ZXh0Qm94IDogdGV4dEJv
eGVzRm9yKHRleHQpKQogICAgICAgICBjYWNoZS0+Ym94ZXMuYXBwZW5kKHRleHRCb3gpOwogCkBA
IC05MSw3ICs5MSw3IEBAIFRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNhbE9yZGVy
KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgVGV4dExvCiAKIHN0YXRpYyBMaW5lTG9n
aWNhbE9yZGVyQ2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShjb25zdCBMaW5lSXRlcmF0
b3ImIGxpbmUpCiB7Ci0gICAgYXV0byBjYWNoZSA9IFdURjo6bWFrZVVuaXF1ZTxMaW5lTG9naWNh
bE9yZGVyQ2FjaGVEYXRhPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPExpbmVMb2dp
Y2FsT3JkZXJDYWNoZURhdGE+KCk7CiAKICAgICBjYWNoZS0+bGluZSA9IGxpbmU7CiAgICAgY2Fj
aGUtPmJveGVzID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGluZSwgW10oYXV0byBmaXJzdCwg
YXV0byBsYXN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggMmNjYjU3NjAz
MDhiNDJiNjU3ZDY3MTA3ZGZmMWFkZmU5ZDE5MWQ1Ny4uNDY5MzQ0NTRmNmQ3ODVhMDg3YWZhZWRh
OTE2ZThjYmZkODg0NjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNTc2
LDggKzU3Niw4IEBAIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckxpbmVMYXlv
dXRXaXRoUmVhc29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYKICNpZm5kZWYgTkRFQlVHCiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7Ci0gICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxl
LldlYktpdC5zaG93TW9kZXJuTGluZUxheW91dENvdmVyYWdlIiwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+IHsgcHJpbnRNb2Rlcm5MaW5lTGF5b3V0Q292ZXJhZ2UgfSk7Ci0gICAgICAgIFBBTDo6cmVn
aXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5zaG93TW9kZXJuTGluZUxheW91
dFJlYXNvbnMiLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4geyBwcmludE1vZGVybkxpbmVMYXlvdXRC
bG9ja0xpc3QgfSk7CisgICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFw
cGxlLldlYktpdC5zaG93TW9kZXJuTGluZUxheW91dENvdmVyYWdlIiwgRnVuY3Rpb248dm9pZCgp
PiB7IHByaW50TW9kZXJuTGluZUxheW91dENvdmVyYWdlIH0pOworICAgICAgICBQQUw6OnJlZ2lz
dGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVybkxpbmVMYXlvdXRS
ZWFzb25zIiwgRnVuY3Rpb248dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dEJsb2NrTGlz
dCB9KTsKICAgICB9KTsKICNlbmRpZgogICAgIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IHJl
YXNvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SXRl
cmF0b3IuaAppbmRleCA2MWMwZDYxZDZmMTgzZTZkMjZjY2U2MWE2NGRlMGNmM2E2YjIzODIwLi4w
ZWIwYmYyMjk5NDkwZTlmZTY4YWFiYzg4MjkyZGE5MDFlZTI3NGZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJdGVyYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBUKiBtX2N1cnJlbnQ7CiB9OwogCi0vLyBTaW1pbGFy
IHRvIFdURjo6aXM8PigpIGJ1dCB3aXRob3V0IHRoZSBzdGF0aWNfYXNzZXJ0KCkgbWFraW5nIHN1
cmUgdGhlIGNoZWNrIGlzIG5lY2Vzc2FyeS4KKy8vIFNpbWlsYXIgdG8gaXM8PigpIGJ1dCB3aXRo
b3V0IHRoZSBzdGF0aWNfYXNzZXJ0KCkgbWFraW5nIHN1cmUgdGhlIGNoZWNrIGlzIG5lY2Vzc2Fy
eS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogaW5saW5lIGJvb2wgaXNMYXlv
dXRCb3hPZlR5cGUoY29uc3QgVSYgbGF5b3V0Qm94KSB7IHJldHVybiBUeXBlQ2FzdFRyYWl0czxj
b25zdCBULCBjb25zdCBVPjo6aXNPZlR5cGUobGF5b3V0Qm94KTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaAppbmRleCBkNWY3NDZh
YWIxNWRiYzIxMjQ4Y2UyNDgxNmM5ZWVmNDkzZTA2Y2Y0Li4xYTI3MzZjMWI5YTQ4NmY4YWJkM2Y3
MzU0MDVhYTc3NzdjNDg1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBw
bGljYXRpb25NYW5pZmVzdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnRM
b2FkZXI7CiBjbGFzcyBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBD
YWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiBXVEZfTUFLRV9OT05DT1BZQUJMRShBcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
dHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q+KT4gQ29tcGxldGlvbkhhbmRsZXJUeXBlOworICAgIHR5cGVkZWYg
RnVuY3Rpb248dm9pZCAoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdD4pPiBDb21wbGV0aW9uSGFuZGxlclR5cGU7CiAKICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyKERvY3VtZW50TG9hZGVyJiwgY29uc3QgVVJMJiwgYm9vbCk7CiAgICAgdmlydHVhbCB+
QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKaW5kZXggNDYwMDYwYzE4OTdlZTE2OTdiOGRjN2ViYzMyZGY4ODU2YmNmYThl
MS4uYTQzZDRiZmEzZWMyZmIzNTI3ZjVkZmI2MzFjYzUxYWRmNWU0ZTQwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yNDE5LDcgKzI0MTksNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXIoY29uc3QgVVJMJiBibAogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVx
dWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAKLVJl
c291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFdURjo6U3RyaW5nJiYgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpCitSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5k
bGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKICAgICB1bmJsb2Nr
SGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiOTI3MzZjY2RjNGUzZDY1NzRjZmJkNmQxMDY0
YzFhNDBhYmJmZGM4Li5lNWE2Y2MzMDFhOTljZDkwNDBiMDNhYjM3YTU1Yzk2MmIwOTY4NGNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTYzNCw3ICs2MzQsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQ2xlYXJXaW5kb3dOYW1lKGNvbnN0IEZyYW1lJiBmcmFt
ZSwgY29uc3QgRG9jdW1lbnQmIG5ldwogICAgIHJldHVybiAhbmV3RG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKS5pc1NhbWVPcmlnaW5BcyhmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBi
b29sIGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbCBjbGVhclNjcmlwdE9iamVjdHMsIGJvb2wg
Y2xlYXJGcmFtZVZpZXcsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZURPTVdpbmRvd0Ny
ZWF0aW9uKQordm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBi
b29sIGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbCBjbGVhclNjcmlwdE9iamVjdHMsIGJvb2wg
Y2xlYXJGcmFtZVZpZXcsIEZ1bmN0aW9uPHZvaWQoKT4mJiBoYW5kbGVET01XaW5kb3dDcmVhdGlv
bikKIHsKICAgICBib29sIG5lZWRlZENsZWFyID0gbV9uZWVkc0NsZWFyOwogICAgIG1fbmVlZHND
bGVhciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBhZTNmNmQ2
MDZhOTFiOTA5OWRjOTA0YjlkNWM2ODIzMjg2MjE0YjllLi4wNzZjMzM1OGI4Y2FhNmMwMzQ4YzA1
Y2ZjNWFlZTJmMjZjY2I3Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAt
OTIsNyArOTIsNyBAQCBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiBXRUJDT1JFX0VYUE9SVCBib29s
IGlzQmFja0ZvcndhcmRMb2FkVHlwZShGcmFtZUxvYWRUeXBlKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNSZWxvYWQoRnJhbWVMb2FkVHlwZSk7CiAKLXVzaW5nIENvbnRlbnRQb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJ
ZGVudGlmaWVyKT47Cit1c2luZyBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IEZ1bmN0
aW9uPHZvaWQoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPjsKIAogY2xhc3Mg
RnJhbWVMb2FkZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTUy
LDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9s
aWN5KTsKICAgICB2b2lkIGNsb3NlVVJMKCk7CiAgICAgLy8gRklYTUU6IGNsZWFyKCkgaXMgdHJ5
aW5nIHRvIGRvIHRvbyBtYW55IHRoaW5ncy4gV2Ugc2hvdWxkIGJyZWFrIGl0IGRvd24gaW50byBz
bWFsbGVyIGZ1bmN0aW9ucyAoaWRlYWxseSB3aXRoIGZld2VyIHJhdyBCb29sZWFuIHBhcmFtZXRl
cnMpLgotICAgIHZvaWQgY2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNsZWFyV2lu
ZG93UHJvcGVydGllcyA9IHRydWUsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3RzID0gdHJ1ZSwgYm9v
bCBjbGVhckZyYW1lVmlldyA9IHRydWUsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZURP
TVdpbmRvd0NyZWF0aW9uID0gbnVsbHB0cik7CisgICAgdm9pZCBjbGVhcihEb2N1bWVudCogbmV3
RG9jdW1lbnQsIGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzID0gdHJ1ZSwgYm9vbCBjbGVhclNj
cmlwdE9iamVjdHMgPSB0cnVlLCBib29sIGNsZWFyRnJhbWVWaWV3ID0gdHJ1ZSwgRnVuY3Rpb248
dm9pZCgpPiYmIGhhbmRsZURPTVdpbmRvd0NyZWF0aW9uID0gbnVsbHB0cik7CiAKICAgICBib29s
IGlzTG9hZGluZygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZnJhbWVIYXNMb2Fk
ZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZTc1ODJkODk1ZmRhYTlhNjc1N2Q5ZjIxNjJlY2M1MmQxZTE2NDEwOC4uNGZkNjM3YTkwMTRh
NWQ0MWEyMjZlZTQ1OTE3YjZiM2U5YTc5MGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBlbnVtIGNsYXNzIFVzZWRMZWdh
Y3lUTFMgOiBib29sOwogCiBzdHJ1Y3QgU3RyaW5nV2l0aERpcmVjdGlvbjsKIAotdHlwZWRlZiBX
VEY6OkZ1bmN0aW9uPHZvaWQgKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyKT4g
RnJhbWVQb2xpY3lGdW5jdGlvbjsKK3R5cGVkZWYgRnVuY3Rpb248dm9pZCAoUG9saWN5QWN0aW9u
LCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPiBGcmFtZVBvbGljeUZ1bmN0aW9uOwogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGUyZWNkMWFm
YzM1YmE2ZDMxMjM4OGM4MjhlYTRjZTFkZGMyM2FjZmMuLmIwY2I1NmVjMDE3ZTljN2YxNzZiZjU3
YzJmOGYyOGFjMDFhYTEzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5o
CkBAIC03NSwxNiArNzUsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmlvcml0aXpl
UmVzb3VyY2VMb2Fkcyhjb25zdCBWZWN0b3I8U3VicmVzb3VyY2VMb2FkZXIqPiYpOwogCiAgICAg
dmlydHVhbCBib29sIHVzZVBpbmdMb2FkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHVz
aW5nIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKT47CisgICAgdXNpbmcgUGlu
Z0xvYWRDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKT47CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGlu
Z0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBGZXRjaE9wdGlvbnMmLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lJbXBvc2l0aW9uLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7IH0pID0gMDsK
IAotICAgIHVzaW5nIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJik+OworICAgIHVzaW5nIFByZWNvbm5lY3RDb21wbGV0
aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYpPjsKICAgICB2
aXJ0dWFsIHZvaWQgcHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxl
ZChib29sKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPbkxpbmUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoV1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE9ubGluZVN0YXRlQ2hh
bmdlTGlzdGVuZXIoRnVuY3Rpb248dm9pZChib29sKT4mJikgPSAwOwogCiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGhhdmVQZXJmb3JtZWRTZWN1cml0eUNoZWNrcyhjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAppbmRleCA0ZjIyODgzMzYzYTBj
ZTM1YWY1MmE0YjViN2ZlMWYwMWYzNWUzNzg1Li5lNTU1YjI3OTdkOGM1Y2Y3Mjk4ZTc3MDk5NWQ2
YmZkMDBkYWIzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIFNlY29uZHMgdGltZXN0YW1wUmVzb2x1dGlvbiB7IDVfcyB9OwogCi10eXBlZGVmIFdU
Rjo6SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgdW5zaWduZWQsIFJlZ2lzdHJhYmxlRG9tYWlu
OjpSZWdpc3RyYWJsZURvbWFpbkhhc2gsIEhhc2hUcmFpdHM8UmVnaXN0cmFibGVEb21haW4+LCBI
YXNoVHJhaXRzPHVuc2lnbmVkPj46OktleVZhbHVlUGFpclR5cGUgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1ZhbHVlOwordHlwZWRlZiBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCB1bnNpZ25lZCwg
UmVnaXN0cmFibGVEb21haW46OlJlZ2lzdHJhYmxlRG9tYWluSGFzaCwgSGFzaFRyYWl0czxSZWdp
c3RyYWJsZURvbWFpbj4sIEhhc2hUcmFpdHM8dW5zaWduZWQ+Pjo6S2V5VmFsdWVQYWlyVHlwZSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVmFsdWU7CiAKIHN0YXRpYyB2b2lkIGVuY29kZUhhc2hTZXQo
S2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCAgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBoYXNoU2V0KQogewpAQCAt
NDM5LDcgKzQzOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNjcmVlbkFQSU9wdGlvblNldChTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBPcHRpb25TZXQ8UmVzCiB9CiAjZW5kaWYKIAotc3Rh
dGljIGJvb2wgaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFdURjo6U2Vjb25kcyBpbnRlcmFj
dGlvblRpbWVTZWNvbmRzKQorc3RhdGljIGJvb2wgaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9u
KFNlY29uZHMgaW50ZXJhY3Rpb25UaW1lU2Vjb25kcykKIHsKICAgICByZXR1cm4gaW50ZXJhY3Rp
b25UaW1lU2Vjb25kcyA+IFNlY29uZHMoMCkgJiYgV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5j
ZUVwb2NoKCkgLSBpbnRlcmFjdGlvblRpbWVTZWNvbmRzIDwgMjRfaDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmgKaW5kZXggMTdiOGYwN2ExZDNjNzljMTI3N2U1Y2EwODEyODRiOWEzODIxNTIwZi4uOWE5NTMw
MDg3NjZhODg4NTU2MWIzNDg4ODliOGNlZGEyYjJlYjMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAg
LTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEhhc2hNYXA8U3RyaW5nLCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqPiBtX2NhY2hlc0luTWVtb3J5OyAvLyBFeGNsdWRlcyBvYnNvbGV0
ZSBjYWNoZSBncm91cHMuCiAKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZT47CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVk
PEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKaW5kZXggNjA5ZWQxMTE0ZmQxOTk2Y2U4OTczYjc0Yzc5YmM3ZmUwNTI2ZWQ3Mi4u
ZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAg
LTQxMCw3ICs0MTAsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihjb25zdCBSZQogCiAjZW5kaWYKIAotUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShOb2RlJiBub2Rl
LCBXVEY6OkZ1bmN0aW9uPGJvb2wgKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIpCitSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUmIG5vZGUsIEZ1bmN0
aW9uPGJvb2woRnJhbWUmKT4mJiBmcmFtZUZpbHRlcikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBu
b2RlLmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtNTAyLDcgKzUwMiw3
IEBAIHN0YXRpYyB2b2lkIGFkZFN1YnJlc291cmNlc0ZvckF0dGFjaG1lbnRFbGVtZW50c0lmTmVj
ZXNzYXJ5KEZyYW1lJiBmcmFtZSwgY29uc3QKIAogI2VuZGlmCiAKLVJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJp
bmcsIEZyYW1lJiBmcmFtZSwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMsIFdURjo6RnVuY3Rp
b248Ym9vbCAoRnJhbWUmKT4mJiBmcmFtZUZpbHRlcikKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZy
YW1lJiBmcmFtZSwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMsIEZ1bmN0aW9uPGJvb2woRnJh
bWUmKT4mJiBmcmFtZUZpbHRlcikKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0g
cmVzcG9uc2UudXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXggNjdhZmE4M2RjN2E5YmYyMmY4ZTg5NjUxZWU5ZWM0
MzkzMmYwNjVlMC4uZDA5ZWM5Zjc1YWJhMTM2YTg2MzM5ZWI0ZDg2YWJkODI3N2M0ZmYwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVkQnVmZmVyJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3Qg
VVJMJiwgU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2Us
IFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8
TGVnYWN5V2ViQXJjaGl2ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIFdURjo6RnVu
Y3Rpb248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlJiwgRnVuY3Rp
b248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlRnJvbVNl
bGVjdGlvbihGcmFtZSopOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFNpbXBsZVJhbmdlJik7CkBAIC02MSw3ICs2MSw3IEBA
IHByaXZhdGU6CiAKICAgICBlbnVtIE1haW5SZXNvdXJjZVN0YXR1cyB7IFN1YnJlc291cmNlLCBN
YWluUmVzb3VyY2UgfTsKIAotICAgIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcmFtZSYsIGNvbnN0IFZlY3RvcjxOb2Rl
Kj4mIG5vZGVzLCBXVEY6OkZ1bmN0aW9uPGJvb2wgKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIpOwor
ICAgIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bWFya3VwU3RyaW5nLCBGcmFtZSYsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBGdW5jdGlv
bjxib29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIpOwogICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBjcmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYpOwogICAgIHN0YXRpYyBS
ZXNvdXJjZVJlc3BvbnNlIGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tTWFjQXJjaGl2ZWREYXRh
KENGRGF0YVJlZik7CiAgICAgc3RhdGljIFJlc291cmNlUmVzcG9uc2UgY3JlYXRlUmVzb3VyY2VS
ZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKENGRGF0YVJlZiwgQ0ZTdHJpbmdSZWYgcmVzcG9u
c2VEYXRhVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cAppbmRleCBkMTllOGExMTQzOGU4Zjk1NDM3NGZjM2EwOTNlYTk3NjA3OWI2ZWQ4Li5jZThhMDkz
OWE1NjNmODlmMzllOWYxYjE2OTMzNGFhZTUwZWNhM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIGNvbnN0
IGZsb2F0IGNUYXJnZXRQcnVuZVBlcmNlbnRhZ2UgPSAuOTVmOyAvLyBQZXJjZW50YWdlIG9mIGNh
cGFjaXR5IHRvd2EKIAogTWVtb3J5Q2FjaGUmIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKQogewot
ICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlDYWNoZT4gbWVtb3J5Q2FjaGU7
CiAgICAgcmV0dXJuIG1lbW9yeUNhY2hlOwogfQpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgTWVt
b3J5Q2FjaGU6OmFkZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgaWYgKHJlc291cmNl
LnJlc291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKSAhPSAiR0VUIikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHJlc291cmNl
LnVybCgpLCByZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpKTsKIApAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvblN1Y2NlZWRlZChDYWNoZWRSZXNvdXJjZSYg
cmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlv
bkZhaWxlZChDYWNoZWRSZXNvdXJjZSYgcmV2YWxpZGF0aW5nUmVzb3VyY2UpCiB7Ci0gICAgQVNT
RVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJldmFsaWRhdGlvbiBmYWlsZWQgZm9yICVwIiwgJnJl
dmFsaWRhdGluZ1Jlc291cmNlKTsKICAgICBBU1NFUlQocmV2YWxpZGF0aW5nUmVzb3VyY2UucmVz
b3VyY2VUb1JldmFsaWRhdGUoKSk7CiAgICAgcmV2YWxpZGF0aW5nUmVzb3VyY2UuY2xlYXJSZXNv
dXJjZVRvUmV2YWxpZGF0ZSgpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIENhY2hlZFJlc291cmNlKiBN
ZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwKIAogQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUZvclJlcXVlc3RJ
bXBsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVkUmVzb3VyY2VNYXAmIHJl
c291cmNlcykKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBVUkwgdXJsID0gcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
SWZOZWVkZWQocmVxdWVzdC51cmwoKSk7CiAKICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWly
KHVybCwgcmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lk
IE1lbW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXMoYm9vbCBzaG91bGREZXN0cm95RGVjb2Rl
ZERhdGFGb3JBbGxMaXZlUmVzbwogICAgIHBydW5lTGl2ZVJlc291cmNlc1RvU2l6ZSh0YXJnZXRT
aXplLCBzaG91bGREZXN0cm95RGVjb2RlZERhdGFGb3JBbGxMaXZlUmVzb3VyY2VzKTsKIH0KIAot
dm9pZCBNZW1vcnlDYWNoZTo6Zm9yRWFjaFJlc291cmNlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9p
ZChDYWNoZWRSZXNvdXJjZSYpPiYgZnVuY3Rpb24pCit2b2lkIE1lbW9yeUNhY2hlOjpmb3JFYWNo
UmVzb3VyY2UoY29uc3QgRnVuY3Rpb248dm9pZChDYWNoZWRSZXNvdXJjZSYpPiYgZnVuY3Rpb24p
CiB7CiAgICAgZm9yIChhdXRvJiB1bnByb3RlY3RlZExSVUxpc3QgOiBtX2FsbFJlc291cmNlcykg
ewogICAgICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogY29weVRvVmVjdG9yKCp1bnByb3RlY3Rl
ZExSVUxpc3QpKQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OmZvckVhY2hS
ZXNvdXJjZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVkUmVzb3VyY2UmKT4mIGZ1CiAg
ICAgfQogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpmb3JFYWNoU2Vzc2lvblJlc291cmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWNoZWRSZXNv
dXJjZSYpPiYgZnVuY3Rpb24pCit2b2lkIE1lbW9yeUNhY2hlOjpmb3JFYWNoU2Vzc2lvblJlc291
cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgRnVuY3Rpb248dm9pZChDYWNoZWRS
ZXNvdXJjZSYpPiYgZnVuY3Rpb24pCiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvblJlc291cmNl
cy5maW5kKHNlc3Npb25JRCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvblJlc291cmNlcy5lbmQo
KSkKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpzZXRDYXBhY2l0aWVzKHVu
c2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVhZEJ5dGVzLCB1bgogCiB2b2lkIE1l
bW9yeUNhY2hlOjpyZW1vdmUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAgIEFTU0VS
VChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhSZXNvdXJjZUxvYWRpbmcsICJFdmljdGluZyByZXNvdXJjZSAlcCBmb3IgJyUuMjU1cycg
ZnJvbSBjYWNoZSIsICZyZXNvdXJjZSwgcmVzb3VyY2UudXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKICAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92
ZWQgYnkgc29tZW9uZSBvdGhlciB0aGFuIG91ciBjYWxsZXIsCiAgICAgLy8gd2hvIG5lZWRlZCBh
IGZyZXNoIGNvcHkgZm9yIGEgcmVsb2FkLiBTZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNDc5I2M2Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmgKaW5kZXggNTc0NDdmZjFhZjA0NmM2NDhlODRkOTc2YWJmMDA2MTBiZjAwMjhkYi4u
MTg2MTY2YTE1ZGUxYmUzMjA5MmE4ZTIwMmFkMzg2YTRkMWExNWQ0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTEwMiw4ICsxMDIsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXZhbGlkYXRpb25TdWNjZWVkZWQoQ2FjaGVkUmVzb3VyY2UmIHJldmFsaWRh
dGluZ1Jlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCByZXZhbGlk
YXRpb25GYWlsZWQoQ2FjaGVkUmVzb3VyY2UmIHJldmFsaWRhdGluZ1Jlc291cmNlKTsKIAotICAg
IHZvaWQgZm9yRWFjaFJlc291cmNlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChDYWNoZWRSZXNv
dXJjZSYpPiYpOwotICAgIHZvaWQgZm9yRWFjaFNlc3Npb25SZXNvdXJjZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlZFJlc291cmNlJik+Jik7CisgICAgdm9p
ZCBmb3JFYWNoUmVzb3VyY2UoY29uc3QgRnVuY3Rpb248dm9pZChDYWNoZWRSZXNvdXJjZSYpPiYp
OworICAgIHZvaWQgZm9yRWFjaFNlc3Npb25SZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
RnVuY3Rpb248dm9pZChDYWNoZWRSZXNvdXJjZSYpPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGVzdHJveURlY29kZWREYXRhRm9yQWxsSW1hZ2VzKCk7CiAKICAgICAvLyBTZXRzIHRoZSBj
YWNoZSdzIG1lbW9yeSBjYXBhY2l0aWVzLCBpbiBieXRlcy4gVGhlc2Ugd2lsbCBob2xkIG9ubHkg
YXBwcm94aW1hdGVseSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9h
ZGVyTlNVUkxFeHRyYXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxF
eHRyYXMuaAppbmRleCAyNzc2ZTJlMDIzOWQ1MDFkNGE4MTJmMTk1YTA5MDc3NzdhYjYyNTc5Li41
ZGI4YzkzNjFmZjA5MDk5NDZhODA5MDYwNjA3ZTljN2Y4MTEyNjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5oCkBAIC0yOSw1ICsyOSw1IEBACiAj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+
CiAKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlw
ZShOU1VSTCAqLCBjb25zdCBXVEY6OlN0cmluZyYgTUlNRVR5cGUpOworV0VCQ09SRV9FWFBPUlQg
TlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKE5TVVJMICosIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUpOwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmZpbGVuYW1lQnlGaXhp
bmdJbGxlZ2FsQ2hhcmFjdGVycyhOU1N0cmluZyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggOGUwN2NkMTU4
Y2E0OWQyYjE4MWI1NTkzNmJhMWNiOGQwYTFkYmZmOC4uZjg5NzU4ZTlkNmM0MDU5ZjQ1NTI3ZDg3
NWZhM2FmYzNlOTZlYjExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTc2Nyw3ICs3NjcsNyBAQCBzdGF0aWMg
U3RyaW5nIHRyYWNrRGlzcGxheU5hbWUoY29uc3QgVHJhY2tCYXNlJiB0cmFjaykKICAgICBTdHJp
bmcgdHJhY2tMYW5ndWFnZUlkZW50aWZpZXIgPSB0cmFjay52YWxpZEJDUDQ3TGFuZ3VhZ2UoKTsK
IAogICAgIGF1dG8gcHJlZmVycmVkTGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlcyhT
aG91bGRNaW5pbWl6ZUxhbmd1YWdlczo6Tm8pOwotICAgIGF1dG8gZGVmYXVsdExhbmd1YWdlID0g
IXByZWZlcnJlZExhbmd1YWdlcy5pc0VtcHR5KCkgPyBwcmVmZXJyZWRMYW5ndWFnZXNbMF0gOiBl
bXB0eVN0cmluZygpOyAvLyBUaGlzIG1hdGNoZXMgYFdURjo6ZGVmYXVsdExhbmd1YWdlYC4KKyAg
ICBhdXRvIGRlZmF1bHRMYW5ndWFnZSA9ICFwcmVmZXJyZWRMYW5ndWFnZXMuaXNFbXB0eSgpID8g
cHJlZmVycmVkTGFuZ3VhZ2VzWzBdIDogZW1wdHlTdHJpbmcoKTsgLy8gVGhpcyBtYXRjaGVzIGBk
ZWZhdWx0TGFuZ3VhZ2VgLgogICAgIGF1dG8gY3VycmVudExvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2Nh
bGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGVmYXVsdExhbmd1YWdlLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpKTsKICAgICBhdXRvIGxvY2FsZUlkZW50aWZpZXIgPSBhZG9wdENGKENGTG9j
YWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgdHJhY2tMYW5ndWFnZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkp
OwogICAgIFN0cmluZyBsYW5ndWFnZURpc3BsYXlOYW1lID0gYWRvcHRDRihDRkxvY2FsZUNvcHlE
aXNwbGF5TmFtZUZvclByb3BlcnR5VmFsdWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NGTG9jYWxl
TGFuZ3VhZ2VDb2RlLCBsb2NhbGVJZGVudGlmaWVyLmdldCgpKSkuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAppbmRleCBjY2JkZmE0OTYzZTQwMzk2Yzc5ZWE5NjM5Y2I1YTA3OWI0
ZjNlZDI2Li4yM2E1OGJmOGI4M2NlMmY1NmJlMDIxNjJkYjU3ODRiYTczODFmM2UwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTMyOSw4ICszMjksOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoY29uc3QgVGV4dEluZGljYXRvckRhdGEmKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNo
b29zZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdp
dGhQYXJzZWRVUkwmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spIHsgY2FsbGJhY2soZmFsc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb250YWN0UGlj
a2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29udGFjdEluZm8+PiYmKT4mJiBjYWxsYmFjaykgeyBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dTaGFyZVNoZWV0
KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKSB7IGNhbGxiYWNrKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29u
dGFjdFBpY2tlcihjb25zdCBDb250YWN0c1JlcXVlc3REYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxiYWNrKSB7
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7IH0KICAgICAKICAgICAvLyBBc3luY2hyb25vdXMgcmVx
dWVzdCB0byBsb2FkIGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFtZXMuCiAgICAgdmlydHVh
bCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxv
YWRlciYpID0gMDsKQEAgLTQxOSw3ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlmaWVyKSB7
IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdKGJvb2wpIHsgfSkgeyBjb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlk
ZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10oYm9vbCkgeyB9KSB7IGNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRo
b3V0QW5pbWF0aW9uKEhUTUxWaWRlb0VsZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0Z1bGxzY3Jl
ZW5Gb3JWaWRlb1BsYXliYWNrKCkgeyByZXR1cm4gZmFsc2U7IH0gCiAKQEAgLTU1MiwxMyArNTUy
LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgPSAwOwogCiAjaWYgRU5B
QkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCi0gICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCBGcmFtZSYsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgRnJhbWUmLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3BlLCBXVEZNb3ZlKHRv
cEZyYW1lRG9tYWluKSwgV1RGTW92ZShzdWJGcmFtZURvbWFpbikgfSk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21h
aW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIEZyYW1lJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4m
JiB0b3BGcmFtZURvbWFpbiwgRnJhbWUmLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBzY29wZSwgV1RGTW92ZSh0b3BG
cmFtZURvbWFpbiksIFdURk1vdmUoc3ViRnJhbWVEb21haW4pIH0pOyB9CiAgICAgdmlydHVhbCBi
b29sIGhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIC8q
dG9wTGV2ZWxEb21haW4qLywgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIC8qcmVzb3VyY2VEb21h
aW4qLykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2VzcyhGcmFtZSYsIGJvb2wgLyogbWF5UHJvbXB0ICovLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25T
dGF0ZSk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBl
cm1pc3Npb25TdGF0ZTo6RGVuaWVkKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG91bGRBbGxvd0Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKEZyYW1lJiwgYm9vbCAvKiBtYXlQcm9tcHQg
Ki8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1p
c3Npb25TdGF0ZSk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRGV2aWNlT3JpZW50YXRpb25Pck1v
dGlvblBlcm1pc3Npb25TdGF0ZTo6RGVuaWVkKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkSW5zZXJ0TWVudUVsZW1lbnQoSFRNTE1lbnVFbGVtZW50JikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggNjljNTE5NWJiNmEwYzQ2ZTRlOTQzMjBlZGMzODZmOTU3ZDI4
NGU3OS4uNWI5ZWVhMDc1MjAxNGFlZGEzZTQyOWJlY2U4MTYxZTdiYzYyMmI4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMjQ5Miw3ICsyNDkyLDcgQEAgYm9vbCBET01XaW5kb3c6
OmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIGNvbnN0IFN0
cmluZyYgdXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1l
Pj4gRE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMmIGluaXRpYWxXaW5k
b3dGZWF0dXJlcywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIEZyYW1lJiBmaXJzdEZyYW1lLCBG
cmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4m
IHByZXBhcmVEaWFsb2dGdW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdp
bmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9tU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBpbml0aWFsV2luZG93RmVhdHVy
ZXMsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBGcmFtZSYgZmlyc3RGcmFtZSwgRnJhbWUmIG9w
ZW5lckZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJlcGFyZURpYWxv
Z0Z1bmN0aW9uKQogewogICAgIFJlZlB0ciBhY3RpdmVGcmFtZSA9IGFjdGl2ZVdpbmRvdy5mcmFt
ZSgpOwogICAgIGlmICghYWN0aXZlRnJhbWUpCkBAIC0yNjQ0LDcgKzI2NDQsNyBAQCBFeGNlcHRp
b25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9NV2luZG93JiBhY3Rp
dmVXaW5kb3csIERPTVdpbgogICAgIHJldHVybiBuZXdGcmFtZSA/ICZuZXdGcmFtZS0+d2luZG93
UHJveHkoKSA6IFJlZlB0cjxXaW5kb3dQcm94eT4geyBudWxscHRyIH07CiB9CiAKLXZvaWQgRE9N
V2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERPTVdpbmRvdyYp
PiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKQordm9pZCBET01XaW5kb3c6OnNob3dNb2RhbERpYWxv
Zyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0
cmluZywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNv
bnN0IEZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pCiB7
CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggNmFiYjAzNjYyYTdjZDkzZjA5Mjc2NmZjZmRk
ZjJmOGNjNmI3ZTEwMi4uMjdjZTIyZTJiZTZlZjU3MTA0MzRmNzRkZTBmZjU5ZmY1MGJhNDk2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4gb3BlbihE
T01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5n
JiB3aW5kb3dGZWF0dXJlc1N0cmluZyk7CiAKLSAgICB2b2lkIHNob3dNb2RhbERpYWxvZyhjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywg
RE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbik7Cisg
ICAgdm9pZCBzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJl
cGFyZURpYWxvZ0Z1bmN0aW9uKTsKIAogICAgIHZvaWQgcHJld2FybUxvY2FsU3RvcmFnZUlmTmVj
ZXNzYXJ5KCk7CiAKQEAgLTQyMCw3ICs0MjAsNyBAQCBwcml2YXRlOgogICAgIFBhZ2UqIHBhZ2Uo
KSBjb25zdDsKICAgICBib29sIGFsbG93ZWRUb0NoYW5nZVdpbmRvd0dlb21ldHJ5KCkgY29uc3Q7
CiAKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4gY3JlYXRlV2luZG93KGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFdpbmRvd0ZlYXR1cmVzJiwgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIEZyYW1lJiBmaXJzdEZy
YW1lLCBGcmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChET01XaW5k
b3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWZQdHI8RnJhbWU+PiBjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBE
T01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1lJiBvcGVuZXJG
cmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5j
dGlvbiA9IG51bGxwdHIpOwogICAgIGJvb2wgaXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCiAjaWYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRl
eCBmOTZjMzEyOGVkOWZkMzhiMzZlMGU1ZDFhNDE2ZmZkZWZkM2JiMzZjLi5mMTFlMzIxZjA1MThm
MmIzYjM2MGY3YTQ3ZjcwMWVkZmU0NzdlY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91
c2VFdmVudFRhcmdldE5vZGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBOb2RlKgogICAg
ICAgICAgICAgaWYgKGF1dG8gZWxlbWVudFVuZGVyTW91c2UgPSBtX2VsZW1lbnRVbmRlck1vdXNl
KQogICAgICAgICAgICAgICAgIGVsZW1lbnRVbmRlck1vdXNlLT5kaXNwYXRjaE1vdXNlRXZlbnQo
cGxhdGZvcm1Nb3VzZUV2ZW50LCBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQsIDAsIG1fbGFz
dEVsZW1lbnRVbmRlck1vdXNlLmdldCgpKTsKIAotICAgICAgICAgICAgZm9yIChhdXRvJiBjaGFp
biA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UoZW50ZXJlZEVsZW1lbnRzQ2hhaW4pKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIGNoYWluIDogbWFrZVJldmVyc2VkUmFuZ2UoZW50ZXJlZEVsZW1l
bnRzQ2hhaW4pKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0NhcHR1cmluZ01vdXNlRW50ZXJM
aXN0ZW5lciB8fCBjaGFpbi0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnBvaW50ZXJl
bnRlckV2ZW50KSB8fCBjaGFpbi0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNl
ZW50ZXJFdmVudCkpCiAgICAgICAgICAgICAgICAgICAgIGNoYWluLT5kaXNwYXRjaE1vdXNlRXZl
bnQocGxhdGZvcm1Nb3VzZUV2ZW50LCBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50LCAwLCBt
X2xhc3RFbGVtZW50VW5kZXJNb3VzZS5nZXQoKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKaW5kZXggMTQ0MTliOTVhM2I2YWRkZDQxNzBhNzFkMmNmMGE3NDIwYzY4
ZDg3Yy4uNTc4ZWNkYjY5M2RmYTUzMTBhNzE2MDZmMDM2YmZmNmQyZmFjNjI0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjUzMSw3ICsyNTMxLDcgQEAgdm9pZCBGcmFtZVZpZXc6
OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQb3NpdGlvbiYgb2xkUG9zaXRpb24s
IGNvbnN0IFMKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjphcHBseVJlY3Vyc2l2ZWx5V2l0
aFZpc2libGVSZWN0KGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoRnJhbWVWaWV3JiBmcmFtZVZp
ZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KT4mIGFwcGx5KQordm9pZCBGcmFtZVZpZXc6
OmFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoY29uc3QgRnVuY3Rpb248dm9pZChGcmFt
ZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpPiYgYXBwbHkpCiB7
CiAgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCA9IHRoaXMtPndpbmRvd0NsaXBSZWN0KCk7CiAg
ICAgYXV0byB2aXNpYmxlUmVjdCA9IHdpbmRvd1RvQ29udGVudHMod2luZG93Q2xpcFJlY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZjRjZjdkMDgxNTI4YWFhYTEwYzkyNmJlOWQ5ZjI3
NWZmZTQ4ZjYyZi4uZDY5MzE1ZGVhMGUyNjhjMmFkZDAwYTc1NjUxMTdiMTdlMGZhNzhjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIEZy
YW1lVmlld0xheW91dENvbnRleHQmIGxheW91dENvbnRleHQoKSB7IHJldHVybiBtX2xheW91dENv
bnRleHQ7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGlkRmlyc3RMYXlvdXQoKSBjb25z
dDsKLSAgICB2b2lkIHF1ZXVlUG9zdExheW91dENhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCAo
KT4mJik7CisgICAgdm9pZCBxdWV1ZVBvc3RMYXlvdXRDYWxsYmFjayhGdW5jdGlvbjx2b2lkKCk+
JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc0xheW91dCgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TmVlZHNMYXlvdXRBZnRlclZpZXdDb25maWd1cmF0aW9u
Q2hhbmdlKCk7CkBAIC03NTQsNyArNzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1G
aXhlZFdpZHRoQXV0b1NpemUoKTsKICAgICB2b2lkIHBlcmZvcm1TaXplVG9Db250ZW50QXV0b1Np
emUoKTsKIAotICAgIHZvaWQgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2
aXNpYmxlUmVjdCk+Jik7CisgICAgdm9pZCBhcHBseVJlY3Vyc2l2ZWx5V2l0aFZpc2libGVSZWN0
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KT4mKTsKICAgICB2b2lkIHJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnMo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwogICAgIHZvaWQgdXBkYXRlU2NyaXB0ZWRBbmlt
YXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0YXRlKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
KTsKIApAQCAtOTE1LDcgKzkxNSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEZsb2F0UmVjdD4g
bV90cmFja2VkUmVwYWludFJlY3RzOwogICAgIAogICAgIEludFJlY3QqIG1fY2FjaGVkV2luZG93
Q2xpcFJlY3QgeyBudWxscHRyIH07Ci0gICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCAoKT4+
IG1fcG9zdExheW91dENhbGxiYWNrUXVldWU7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+
IG1fcG9zdExheW91dENhbGxiYWNrUXVldWU7CiAKICAgICBMYXlvdXRQb2ludCBtX2xheW91dFZp
ZXdwb3J0T3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gbV9sYXlvdXRWaWV3
cG9ydE92ZXJyaWRlUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25P
YnNlcnZlckVudHJ5LmgKaW5kZXggMTEyZTQ2OGVjYzAwZjBlYjc4OTQyZTNkNDZlYjdkYTNjYTA2
YjUxNC4uMTI4NjY3Zjc4NjA1ZmJlNjRhZDgwZjVkNjg0NzRmMzQ3YjVlMmE5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVu
dHJ5PiBjcmVhdGUoY29uc3QgSW5pdCYgaW5pdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6
OmFkb3B0UmVmKCpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeShpbml0KSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkoaW5pdCkpOwog
ICAgIH0KICAgICAKICAgICBkb3VibGUgdGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggYTJiMmI1ZjYwNWIzN2MxMTg1YmY3NWVlYzNkYzkzNmE0MmEy
NjU5Zi4uMTk0ZjZkOTllOWFlZWY3ODczMTM2NzE1OThkMTc2MmEyYzY1NjhjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdW5zaWduZWQgUGFnZTo6bm9uVXRpbGl0eVBh
Z2VDb3VudCgpCiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFr
Q291bnRlciwgcGFnZUNvdW50ZXIsICgiUGFnZSIpKTsKIAotdm9pZCBQYWdlOjpmb3JFYWNoUGFn
ZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoUGFnZSYpPiYgZnVuY3Rpb24pCit2b2lkIFBhZ2U6
OmZvckVhY2hQYWdlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUGFnZSYpPiYgZnVuY3Rpb24pCiB7CiAg
ICAgZm9yIChhdXRvKiBwYWdlIDogYWxsUGFnZXMoKSkKICAgICAgICAgZnVuY3Rpb24oKnBhZ2Up
OwpAQCAtMTU1Niw3ICsxNTU2LDcgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogICAg
ICAgICBpbml0aWFsRG9jdW1lbnRzLmFwcGVuZChkb2N1bWVudCk7CiAgICAgfSk7CiAKLSAgICBh
dXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29u
c3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7
CisgICAgYXV0byBydW5Qcm9jZXNzaW5nU3RlcCA9IFsmXShSZW5kZXJpbmdVcGRhdGVTdGVwIHN0
ZXAsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoRG9jdW1lbnQmKT4mIHBlckRvY3VtZW50RnVuY3Rpb24p
IHsKICAgICAgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3Zl
KHN0ZXApOwogICAgICAgICBmb3JFYWNoRG9jdW1lbnQocGVyRG9jdW1lbnRGdW5jdGlvbik7CiAg
ICAgfTsKQEAgLTE2NTEsNyArMTY1MSw3IEBAIHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRl
cmluZygpCiAgICAgfQogI2VuZGlmCiAKLSAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZd
KFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3Vt
ZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7CisgICAgYXV0byBydW5Qcm9jZXNzaW5nU3Rl
cCA9IFsmXShSZW5kZXJpbmdVcGRhdGVTdGVwIHN0ZXAsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoRG9j
dW1lbnQmKT4mIHBlckRvY3VtZW50RnVuY3Rpb24pIHsKICAgICAgICAgbV9yZW5kZXJpbmdVcGRh
dGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKHN0ZXApOwogICAgICAgICBmb3JFYWNoRG9j
dW1lbnQocGVyRG9jdW1lbnRGdW5jdGlvbik7CiAgICAgfTsKQEAgLTI1NjcsNyArMjU2Nyw3IEBA
IHZvaWQgUGFnZTo6ZGVjcmVtZW50TmVzdGVkUnVuTG9vcENvdW50KCkKICAgICB9CiB9CiAKLXZv
aWQgUGFnZTo6d2hlblVubmVzdGVkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQor
dm9pZCBQYWdlOjp3aGVuVW5uZXN0ZWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewog
ICAgIEFTU0VSVCghbV91bm5lc3RDYWxsYmFjayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOWY1MDQ1
ODkyMDFlMDk1MjJmMWNmNDIyYjcyOTY3Yzc1NjA5ZjYxZS4uNTNmNjEzNzdhYzRkYmJkOTUyOTJh
MjY2YjE3ZmRhMjkxNzAxZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI5NCw3ICsyOTQsNyBAQCBw
dWJsaWM6CiAgICAgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5JiBicm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkoKSB7IHJldHVybiBtX2Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KFJlZjxCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnk+JiYpOyAvLyBPbmx5IHVzZWQgYnkgV2ViS2l0TGVnYWN5LgogCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaFBhZ2UoY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKFBhZ2UmKT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBmb3JFYWNo
UGFnZShjb25zdCBGdW5jdGlvbjx2b2lkKFBhZ2UmKT4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdW5zaWduZWQgbm9uVXRpbGl0eVBhZ2VDb3VudCgpOwogCiAgICAgdW5zaWduZWQgc3Vi
ZnJhbWVDb3VudCgpIGNvbnN0OwpAQCAtMzAyLDcgKzMwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGluY3JlbWVudE5lc3RlZFJ1bkxvb3BDb3VudCgpOwogICAgIHZvaWQgZGVjcmVtZW50TmVzdGVk
UnVuTG9vcENvdW50KCk7CiAgICAgYm9vbCBpbnNpZGVOZXN0ZWRSdW5Mb29wKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZXN0ZWRSdW5Mb29wQ291bnQgPiAwOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3aGVuVW5uZXN0ZWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgd2hlblVubmVzdGVkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlbW90ZUluc3BlY3Rp
b25BbGxvd2VkKCkgY29uc3Q7CkBAIC04NjQsOCArODY0LDggQEAgcHVibGljOgogICAgIERldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIqIGRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuZ2V0
KCk7IH0KICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoRG9jdW1lbnQo
Y29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JikgY29uc3Q7Ci0gICAgdm9pZCBm
b3JFYWNoTWVkaWFFbGVtZW50KGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChIVE1MTWVkaWFFbGVt
ZW50Jik+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoRG9jdW1lbnQoY29uc3Qg
RnVuY3Rpb248dm9pZChEb2N1bWVudCYpPiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFjaE1lZGlh
RWxlbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKEhUTUxNZWRpYUVsZW1lbnQmKT4mKTsKIAogICAg
IGJvb2wgc2hvdWxkRGlzYWJsZUNvcnNGb3JSZXF1ZXN0VG8oY29uc3QgVVJMJikgY29uc3Q7CiAK
QEAgLTk5NCw3ICs5OTQsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kOwogCiAgICAgaW50IG1fbmVz
dGVkUnVuTG9vcENvdW50IHsgMCB9OwotICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3VubmVz
dENhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV91bm5lc3RDYWxsYmFjazsKIAogICAg
IFN0cmluZyBtX2dyb3VwTmFtZTsKICAgICBib29sIG1fb3BlbmVkQnlET00geyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGEyMjBkMGRjOTk1OWEwZGQzYzNhMWIyYjY3YjZkY2E5ZDMyNjdhNTYuLjYyOTA0ODAyZGRh
MmI2OGZjZGUzYmQwZjA1YjNlYTFjZjdlMzEyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lk
IFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6ZGlzcGF0Y2hFdmVudEZvclRvdWNoQXRJbmRleChF
dmVudFRhcmdldCYgdGFyZ2V0LAogICAgICAgICB9CiAKICAgICAgICAgaWYgKHR5cGUgPT0gZXZl
bnROYW1lcygpLnBvaW50ZXJlbnRlckV2ZW50KSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKHRhcmdldENoYWluKSkKKyAgICAgICAgICAg
IGZvciAoYXV0byYgZWxlbWVudCA6IG1ha2VSZXZlcnNlZFJhbmdlKHRhcmdldENoYWluKSkKICAg
ICAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KFBvaW50ZXJFdmVudDo6Y3JlYXRlKHR5cGUsIHBs
YXRmb3JtVG91Y2hFdmVudCwgaW5kZXgsIGlzUHJpbWFyeSwgdmlldyksIGVsZW1lbnQucHRyKCkp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogdGFy
Z2V0Q2hhaW4pCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBQb2ludGVyQ2FwdHVyZUNvbnRyb2xs
ZXI6OmRpc3BhdGNoRXZlbnRGb3JUb3VjaEF0SW5kZXgoRXZlbnRUYXJnZXQmIHRhcmdldCwKICAg
ICAgICAgaWYgKGN1cnJlbnRUYXJnZXQpCiAgICAgICAgICAgICBkaXNwYXRjaE92ZXJPck91dEV2
ZW50KGV2ZW50TmFtZXMoKS5wb2ludGVyb3ZlckV2ZW50LCBjdXJyZW50VGFyZ2V0LmdldCgpKTsK
IAotICAgICAgICBmb3IgKGF1dG8mIGNoYWluIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShlbnRl
cmVkRWxlbWVudHNDaGFpbikpIHsKKyAgICAgICAgZm9yIChhdXRvJiBjaGFpbiA6IG1ha2VSZXZl
cnNlZFJhbmdlKGVudGVyZWRFbGVtZW50c0NoYWluKSkgewogICAgICAgICAgICAgaWYgKGhhc0Nh
cHR1cmluZ1BvaW50ZXJFbnRlckxpc3RlbmVyIHx8IGNoYWluLT5oYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkucG9pbnRlcmVudGVyRXZlbnQpKQogICAgICAgICAgICAgICAgIGRpc3BhdGNo
RXZlbnQoUG9pbnRlckV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnBvaW50ZXJlbnRlckV2ZW50
LCBwbGF0Zm9ybVRvdWNoRXZlbnQsIGluZGV4LCBpc1ByaW1hcnksIHZpZXcpLCBjaGFpbi5wdHIo
KSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNh
cHR1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29u
dHJvbGxlci5oCmluZGV4IDQ5NTQ4MTQyZjZkYjZiMjQ1Y2Y2YmEyMzQyNzI2MTUwMjhhYWQxYWUu
LjQ1NDM1Zjc3ZTRiYzc5MGFhNjBiZGViYzI3ZWE2OWI5YmE4ODljMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaApAQCAtMTE0LDcgKzExNCw3
IEBAIHByaXZhdGU6CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIC8vIFdoaWxlIFBvaW50ZXJJRCBp
cyBkZWZpbmVkIGFzIGludDMyX3QsIHdlIHVzZSBpbnQ2NF90IGhlcmUgc28gdGhhdCB3ZSBtYXkg
dXNlIGEgdmFsdWUgb3V0c2lkZSBvZiB0aGUgaW50MzJfdCByYW5nZSB0byBoYXZlIHNhZmUKICAg
ICAvLyBlbXB0eSBhbmQgcmVtb3ZlZCB2YWx1ZXMsIGFsbG93aW5nIGFueSBpbnQzMl90IHRvIGJl
IHByb3ZpZGVkIHRocm91Z2ggdGhlIEFQSSBmb3IgbG9va3VwIGluIHRoaXMgaGFzaG1hcC4KLSAg
ICB1c2luZyBQb2ludGVySWRUb0NhcHR1cmluZ0RhdGFNYXAgPSBIYXNoTWFwPGludDY0X3QsIFJl
ZjxDYXB0dXJpbmdEYXRhPiwgV1RGOjpJbnRIYXNoPGludDY0X3Q+LCBXVEY6OlNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czxpbnQ2NF90Pj47CisgICAgdXNpbmcgUG9pbnRlcklkVG9DYXB0dXJp
bmdEYXRhTWFwID0gSGFzaE1hcDxpbnQ2NF90LCBSZWY8Q2FwdHVyaW5nRGF0YT4sIEludEhhc2g8
aW50NjRfdD4sIFdURjo6U2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDY0X3Q+PjsKICAg
ICBQb2ludGVySWRUb0NhcHR1cmluZ0RhdGFNYXAgbV9hY3RpdmVQb2ludGVySWRzVG9DYXB0dXJp
bmdEYXRhOwogICAgIGJvb2wgbV9wcm9jZXNzaW5nUGVuZGluZ1BvaW50ZXJDYXB0dXJlIHsgZmFs
c2UgfTsKICAgICBib29sIG1faGF2ZUFueUNhcHR1cmluZ0VsZW1lbnQgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAKaW5kZXggZGJiNWRjYmJh
YzVjZTU0ODU2ZDNlNTYwNzUxNDUxOGQwODI1NmM3ZC4uZmZiYzlhZDEwMDYwZjYxZDllY2M5MjU1
ZWViZGFjNmNhMTcwMWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJj
ZVVzYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VU
aHJlYWQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6d2Fp
dFVudGlsT2JzZXJ2ZXJzKCkKICAgICAgICAgbV9jb25kaXRpb24ud2FpdChtX29ic2VydmVyc0xv
Y2spOwogCiAgICAgICAgIC8vIFdhaXQgYSBiaXQgYWZ0ZXIgd2FraW5nIHVwIGZvciB0aGUgZmly
c3QgdGltZS4KLSAgICAgICAgV1RGOjpzbGVlcCgxMF9tcyk7CisgICAgICAgIHNsZWVwKDEwX21z
KTsKICAgICB9CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJl
YWQ6OmNyZWF0ZVRocmVhZElmTmVlZGVkKCkKIE5PX1JFVFVSTiB2b2lkIFJlc291cmNlVXNhZ2VU
aHJlYWQ6OnRocmVhZEJvZHkoKQogewogICAgIC8vIFdhaXQgYSBiaXQgYWZ0ZXIgd2FraW5nIHVw
IGZvciB0aGUgZmlyc3QgdGltZS4KLSAgICBXVEY6OnNsZWVwKDEwX21zKTsKKyAgICBzbGVlcCgx
MF9tcyk7CiAgICAgCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgLy8gT25seSBkbyB3b3Jr
IGlmIHdlIGhhdmUgb2JzZXJ2ZXJzLgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIE5PX1JFVFVSTiB2b2lk
IFJlc291cmNlVXNhZ2VUaHJlYWQ6OnRocmVhZEJvZHkoKQogICAgICAgICAvLyBzbyBpZiB0aGlz
IGludGVydmFsIGNoYW5nZXMgV2ViIEluc3BlY3RvciBtYXkgbmVlZCB0byBjaGFuZ2UuCiAgICAg
ICAgIGF1dG8gZHVyYXRpb24gPSBXYWxsVGltZTo6bm93KCkgLSBzdGFydDsKICAgICAgICAgYXV0
byBkaWZmZXJlbmNlID0gNTAwX21zIC0gZHVyYXRpb247Ci0gICAgICAgIFdURjo6c2xlZXAoZGlm
ZmVyZW5jZSk7CisgICAgICAgIHNsZWVwKGRpZmZlcmVuY2UpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCAxZjViZDQzMDA2
YjcyNzhhMjVkNmY0ZjJlMjIxNzMxYWQzMDM3YTVlLi4zZmRjOTQ1ZTc4NWQ0YTM3MzhiOTZiMDA4
NTI4ZWU2M2M0MjRiMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaApAQCAtNDExLDcgKzQxMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2J1aWx0
SW5Ob3RpZmljYXRpb25zRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIGZyaWVuZCBj
bGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+OworICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxSdW50aW1lRW5hYmxlZEZlYXR1cmVzPjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCmluZGV4IGZjNDVmYmFhMTUxMGNhMTM2MWZhMGQ4YWZjMTdhOWI4ODE5MDU4NjcuLmZk
ZmM4NjQzZWFkZjA0NjgwMWExZWU4MDk2YzE1ZTU3M2ZiMzZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0ZDo6b3B0aW9u
YWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIHJldHVybiBkYXRhOwogfQogCi1zdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhSGFzaFRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNlY3VyaXR5T3JpZ2lu
RGF0YT4geworc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8U2VjdXJpdHlPcmlnaW5EYXRhPiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBib29sIGVt
cHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLmlzRW1wdHkoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRleCBjNTliYjI1ZTI1ZDU5YTM3
Y2Q2NmNiNmI3NWM4N2VkZDNiMzM4ZGIwLi5lMjI1OGUxOTliNzY0ZDc4NjhiMmNlZTg3NjM0ZmQy
YjhkYjkyY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGlt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApAQCAtODcs
NyArODcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFN1c3BlbmRhYmxlVGltZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYm
IGZ1bmN0aW9uKQorICAgIFN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IFN1c3BlbmRh
YmxlVGltZXJCYXNlKGNvbnRleHQpCiAgICAgICAgICwgbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0
aW9uKSkKICAgICB7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIFdURjo6RnVuY3Rp
b248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oCmluZGV4IGQyZjY1MzU3MjQ3NDJjMWNl
YTg2NDFjNmVhOGM2OWYxYTVlN2IzYzAuLjYzMzg3ZGQ4OThjMTBjMzQwNjRhZTRiNzk5Y2FhMDE3
NDlhYjU2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBET01XcmFwcGVyV29ybGQmIHdvcmxkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFBv
c3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIFdU
Rjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJpbmcmKT4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShVc2VyTWVzc2FnZUhhbmRs
ZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBGdW5jdGlvbjx2b2lkKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmKSA9IDA7CiAKIHByaXZhdGU6CiAgICAgQXRvbVN0
cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRU
ZXN0TW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRv
ci5jcHAKaW5kZXggYWU3NDQ0OTViMTAzYWQzNDczNWM5NDE2ZWVkYThmMGY5YTc1OWJiMC4uODI3
Yjc0ZmZkM2VkYjA1OWVhYmVlZjU2MjI5ODRiNTE4ZDdlMTI1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lk
IFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2xlYXJBbGxUZXN0RGVmZXJyYWxzKCkKICAgICBMT0df
V0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpjbGVhckFsbFRlc3REZWZlcnJhbHM6IGNsZWFyZWQgYWxsIHRlc3Qgc3Rh
dGUuIik7CiB9CiAKLXZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tB
bmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29sIGV4cGVj
dE1vbWVudHVtRW5kLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbkNhbGxiYWNrKQor
dm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0TW9uaXRv
cmluZyhib29sIGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGJvb2wgZXhwZWN0TW9tZW50dW1FbmQs
IEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbkNhbGxiYWNrKQogewogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2
ZW50VGVzdE1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmgKaW5kZXggNmJkMmIwMDMyNWI2YzZlMmUyMTFkODY4YjJjY2Q0OWUyZWMxNmEzYS4uZDgy
ZDAxYjFjMzg0NDliZDg3ZjMxYTM5ZDZkMzVmZTc1NTQ5ZTcwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFdo
ZWVsRXZlbnRUZXN0TW9uaXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXaGVlbEV2
ZW50VGVzdE1vbml0b3I+CiBwdWJsaWM6CiAgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yKFBhZ2Um
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25p
dG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCwgYm9vbCBleHBlY3RNb21lbnR1bUVu
ZCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNl
bCwgYm9vbCBleHBlY3RNb21lbnR1bUVuZCwgRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsVGVzdERlZmVycmFscygpOwogICAgIAogICAgIGVudW0g
RGVmZXJSZWFzb24gewpAQCAtNjUsMTIgKzY1LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lk
IGNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcygpOwogCi0gICAgdXNpbmcgU2Nyb2xsYWJsZUFyZWFS
ZWFzb25NYXAgPSBXVEY6Okhhc2hNYXA8U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBPcHRpb25T
ZXQ8RGVmZXJSZWFzb24+PjsKKyAgICB1c2luZyBTY3JvbGxhYmxlQXJlYVJlYXNvbk1hcCA9IEhh
c2hNYXA8U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBPcHRpb25TZXQ8RGVmZXJSZWFzb24+PjsK
IAogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ2FsbGJhY2tDaGVjaygpOwogCi0gICAgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+IG1fY29tcGxldGlvbkNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZv
aWQoKT4gbV9jb21wbGV0aW9uQ2FsbGJhY2s7CiAgICAgUGFnZSYgbV9wYWdlOwogCiAgICAgTG9j
ayBtX2xvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmluZGV4IGRlOTlm
OWMwMjliZjA2NjRkMDZkZTE4MTNkYzdkMDc1NjgxYjZiNzUuLjBlNjExNGM2YTEzZTU0ODc1NThl
NGY4OGVmMDUwNmViNTAxNTA5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2lu
ZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlV2luZG93RmVhdHVyZXMo
U3RyaW5nVmlldyBmZWF0dXJlc1N0cmluZykKIC8vIFdpbmRvdzogaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy8jY29uY2VwdC13aW5kb3ctb3Blbi1mZWF0dXJlcy10b2tlbml6ZQogLy8gVmll
d3BvcnQ6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2NvbnRlbnQvZG9jdW1l
bnRhdGlvbi9BcHBsZUFwcGxpY2F0aW9ucy9SZWZlcmVuY2UvU2FmYXJpSFRNTFJlZi9BcnRpY2xl
cy9NZXRhVGFncy5odG1sIy8vYXBwbGVfcmVmL2RvYy91aWQvVFA0MDAwODE5My1TVzYKIC8vIEZJ
WE1FOiBXZSBzaG91bGQgY29uc2lkZXJpbmcgYWxpZ25pbmcgVmlld3BvcnQgZmVhdHVyZSBwYXJz
aW5nIHdpdGggV2luZG93IGZlYXR1cmVzIHBhcnNpbmcuCi12b2lkIHByb2Nlc3NGZWF0dXJlc1N0
cmluZyhTdHJpbmdWaWV3IGZlYXR1cmVzLCBGZWF0dXJlTW9kZSBtb2RlLCBjb25zdCBXVEY6OkZ1
bmN0aW9uPHZvaWQoU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlKT4mIGNhbGxiYWNr
KQordm9pZCBwcm9jZXNzRmVhdHVyZXNTdHJpbmcoU3RyaW5nVmlldyBmZWF0dXJlcywgRmVhdHVy
ZU1vZGUgbW9kZSwgY29uc3QgRnVuY3Rpb248dm9pZChTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1Zp
ZXcgdmFsdWUpPiYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZmVhdHVyZXMu
bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgKaW5kZXggNzZjMGFmMTY5MmZjMmZiODQ4MTA4MmQz
ODZjM2Y1YzRlNmQzMjZiMi4uZTk2YzVlMTkzMmJkYjZkYTg0ODgyNDM4ODU1MWY4MjM0MmIzNTM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaApAQCAtNjQsNiArNjQsNiBAQCBX
aW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVh
dHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+IHBh
cnNlRGlzYWJsZWRBZGFwdGF0aW9ucyhjb25zdCBTdHJpbmcmKTsKIAogZW51bSBjbGFzcyBGZWF0
dXJlTW9kZSB7IFdpbmRvdywgVmlld3BvcnQgfTsKLXZvaWQgcHJvY2Vzc0ZlYXR1cmVzU3RyaW5n
KFN0cmluZ1ZpZXcgZmVhdHVyZXMsIEZlYXR1cmVNb2RlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZv
aWQoU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlKT4mIGNhbGxiYWNrKTsKK3ZvaWQg
cHJvY2Vzc0ZlYXR1cmVzU3RyaW5nKFN0cmluZ1ZpZXcgZmVhdHVyZXMsIEZlYXR1cmVNb2RlLCBj
b25zdCBGdW5jdGlvbjx2b2lkKFN0cmluZ1ZpZXcgdHlwZSwgU3RyaW5nVmlldyB2YWx1ZSk+JiBj
YWxsYmFjayk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDYzMzE1YmE1ZWY2ODhi
ODQwOWM4YTVmMmM2ZmY0MGVjYWY4ZmNkNTMuLmFhMzJjZWY5ZmZkYzRjZDIwMDc5MGExNmZkZDA1
NWIwZmI0NzdmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpjaGVja0hhc2hBbmRSZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBzb3VyY2Us
IGNvCiAgICAgcmV0dXJuIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyB8fCBhbGxQb2xpY2ll
c1dpdGhEaXNwb3NpdGlvbkFsbG93KENvbnRlbnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246
OkVuZm9yY2UsIFdURk1vdmUoY2FsbGJhY2spLCB2aW9sYXRlZERpcmVjdGl2ZSk7CiB9CiAKLWJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmlu
ZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNv
bnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25z
dCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBj
b25zdCBTdHJpbmcmIHNvdXJjZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkg
Y29uc3QKIHsKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNDA0LDcgKzQwNCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QK
ICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmlu
ZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsIHZpb2xhdGVkRGlyZWN0aXZlLCBV
UkwoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJpdHMgaGFzaCwgaXRzIG5vbmNl
LCBvciAndW5zYWZlLWlubGluZSciKTsKICAgICAgICAgLy8gRklYTUUgKHJkYXI6Ly84MzMzMjg3
NCkgaW1wbGVtZW50IHNjcmlwdFNyY0VsZW0gcHJvcGVybHkuCi0gICAgICAgIHJlcG9ydFZpb2xh
dGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjRWxlbSwg
dmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3MsIGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJM
LCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAg
ICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
c2NyaXB0U3JjRWxlbSwgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3MsIGNvbnNvbGVNZXNz
YWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIE9yZGluYWxOdW1iZXIo
KSkpOwogICAgICAgICBpZiAoIWRpZE5vdGlmeUluc3BlY3RvciAmJiB2aW9sYXRlZERpcmVjdGl2
ZS5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkpIHsKICAgICAgICAgICAgIHJlcG9ydEJs
b2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2aW9sYXRlZERpcmVjdGl2ZS50ZXh0KCkp
OwogICAgICAgICAgICAgZGlkTm90aWZ5SW5zcGVjdG9yID0gdHJ1ZTsKQEAgLTQxNCwxNCArNDE0
LDE0IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0phdmFTY3JpcHRVUkxzKGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QKICAgICByZXR1cm4gY2hlY2tIYXNoQW5kUmVw
b3J0VmlvbGF0aW9uKHNvdXJjZSwgJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlSW5saW5lU2NyaXB0RWxlbWVudCwgJkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlSGFz
aFNjcmlwdCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMsIGhhbmRsZVZpb2xhdGVk
RGlyZWN0aXZlKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5l
RXZlbnRIYW5kbGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5h
bE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIG92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgYm9vbCBv
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAob3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGJvb2wgZGlk
Tm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2
ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERp
cmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2Fn
ZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0
U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBzY3Jp
cHQgZm9yIGFuIGlubGluZSBldmVudCBoYW5kbGVyIiwgIid1bnNhZmUtaW5saW5lJyIpOwotICAg
ICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6
OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3MsIGNvbnNvbGVNZXNzYWdl
LCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdURjo6T3JkaW5hbE51bWJl
cigpKSk7CisgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgImlubGluZSJfcywgY29u
c29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGluZSwgT3JkaW5h
bE51bWJlcigpKSk7CiAgICAgICAgIGlmICghZGlkTm90aWZ5SW5zcGVjdG9yICYmICF2aW9sYXRl
ZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkpIHsKICAgICAgICAgICAg
IHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2aW9sYXRlZERpcmVjdGl2
ZS50ZXh0KCkpOwogICAgICAgICAgICAgZGlkTm90aWZ5SW5zcGVjdG9yID0gdHJ1ZTsKQEAgLTQ3
MCw3ICs0NzAsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dOb25QYXJzZXJJ
bnNlcnRlZFNjcmlwdHMoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkgewotICAgICAgICBU
ZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJz
dCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSk7CisgICAgICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQ
b3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVyKCkpOwog
ICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlv
bihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2aW9sYXRl
ZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CiAgICAgICAgIHJlcG9ydFZpb2xh
dGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjRWxlbSwg
dmlvbGF0ZWREaXJlY3RpdmUsIHVybC5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygp
LCBzb3VyY2VQb3NpdGlvbik7CiAgICAgfTsKQEAgLTQ3OCwxNCArNDc4LDE0IEBAIGJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd05vblBhcnNlckluc2VydGVkU2NyaXB0cyhjb25zdCBV
UkwmIHVybCwgY29uc3QKICAgICByZXR1cm4gYWxsU2NyaXB0UG9saWNpZXNBbGxvdyhoYW5kbGVW
aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBub25jZSwgc2NyaXB0Q29udGVudCwgcGFyc2VySW5zZXJ0
ZWQpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTY3JpcHQo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRl
eHRMaW5lLCBTdHJpbmdWaWV3IHNjcmlwdENvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxp
bmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBj
b250ZXh0TGluZSwgU3RyaW5nVmlldyBzY3JpcHRDb250ZW50LCBib29sIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5KSBjb25zdAogewogICAgIGlmIChvdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeSB8fCBzaG91bGRQZXJmb3JtRWFybHlDU1BDaGVjaygpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBib29sIGRpZE5vdGlmeUluc3BlY3RvciA9IGZhbHNlOwogICAgIGF1dG8gaGFu
ZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKICAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNz
YWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCAiUmVmdXNl
ZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUt
aW5saW5lJyIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3Ms
IGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdU
Rjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwg
ImlubGluZSJfcywgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250
ZXh0TGluZSwgT3JkaW5hbE51bWJlcigpKSk7CiAgICAgICAgIGlmICghZGlkTm90aWZ5SW5zcGVj
dG9yICYmICF2aW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkp
IHsKICAgICAgICAgICAgIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2
aW9sYXRlZERpcmVjdGl2ZS50ZXh0KCkpOwogICAgICAgICAgICAgZGlkTm90aWZ5SW5zcGVjdG9y
ID0gdHJ1ZTsKQEAgLTQ5Niw3ICs0OTYsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVAogICAg
IHJldHVybiBjaGVja0hhc2hBbmRSZXBvcnRWaW9sYXRpb24oc2NyaXB0Q29udGVudC50b1N0cmlu
ZygpLCAmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3Rp
dmVGb3JVbnNhZmVJbmxpbmVTY3JpcHRFbGVtZW50LCAmQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRIYXNoLCBtX2hhc2hBbGdvcml0
aG1zRm9ySW5saW5lU2NyaXB0cywgaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUpOwogfQogCi1ib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNv
bnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0cmluZ1Zp
ZXcgc3R5bGVDb250ZW50LCBDaGVja1Vuc2FmZUhhc2hlcyBzaG91bGRDaGVja1Vuc2FmZUhhc2hl
cywgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKK2Jvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVS
TCwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0cmluZ1ZpZXcgc3R5bGVDb250
ZW50LCBDaGVja1Vuc2FmZUhhc2hlcyBzaG91bGRDaGVja1Vuc2FmZUhhc2hlcywgYm9vbCBvdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAob3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTA1LDcgKzUwNSw3
IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0
cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGCiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVj
dGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRl
ZERpcmVjdGl2ZSkgewogICAgICAgICBhdXRvIG5hbWUgPSBzaG91bGRDaGVja1Vuc2FmZUhhc2hl
cyA9PSBDaGVja1Vuc2FmZUhhc2hlczo6WWVzID8gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXM6OnN0eWxlU3JjQXR0ciA6IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpzdHlsZVNyY0VsZW07CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNv
bGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
OjpzdHlsZVNyYywgdmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCAiUmVmdXNlZCB0byBhcHBseSBh
IHN0eWxlc2hlZXQiLCAiaXRzIGhhc2gsIGl0cyBub25jZSwgb3IgJ3Vuc2FmZS1pbmxpbmUnIik7
Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbihuYW1lLCB2aW9sYXRlZERpcmVjdGl2ZSwgImlubGlu
ZSJfcywgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGlu
ZSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG5hbWUs
IHZpb2xhdGVkRGlyZWN0aXZlLCAiaW5saW5lIl9zLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVS
TCwgVGV4dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBPcmRpbmFsTnVtYmVyKCkpKTsKICAgICB9Owog
CiAgICAgaWYgKHNob3VsZENoZWNrVW5zYWZlSGFzaGVzID09IENoZWNrVW5zYWZlSGFzaGVzOjpZ
ZXMpCkBAIC01NDAsNyArNTQwLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
RnJhbWVBbmNlc3RvcnMoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHUKICAgICBpZiAo
JmZyYW1lID09ICZ0b3BGcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgU3RyaW5nIHNv
dXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oV1RGOjpPcmRpbmFsTnVt
YmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSk7CisgICAgVGV4dFBvc2l0
aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGluYWxO
dW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAoY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkgewogICAg
ICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVBbmNlc3RvcnMsIHZpb2xh
dGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKICAgICAgICAgcmVwb3J0Vmlv
bGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZUFuY2VzdG9y
cywgdmlvbGF0ZWREaXJlY3RpdmUsIHVybC5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UsIHNvdXJj
ZVVSTCwgc291cmNlUG9zaXRpb24pOwpAQCAtNTY4LDcgKzU2OCw3IEBAIGJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5jZXN0b3JzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnCiAgICAgaWYgKGlzVG9wTGV2ZWxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24o
V1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSk7
CisgICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZp
cnN0KCksIE9yZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2
ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERp
cmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2Fn
ZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVB
bmNlc3RvcnMsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKICAg
ICAgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
OjpmcmFtZUFuY2VzdG9ycywgdmlvbGF0ZWREaXJlY3RpdmUsIHVybC5zdHJpbmcoKSwgY29uc29s
ZU1lc3NhZ2UsIHNvdXJjZVVSTCwgc291cmNlUG9zaXRpb24pOwpAQCAtNTgxLDcgKzU4MSw3IEBA
IGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBTdHJpbmcgc291cmNlVVJMOwotICAg
IFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZp
cnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKTsKKyAgICBUZXh0UG9zaXRpb24gc291cmNlUG9z
aXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcigpKTsKICAg
ICBhdXRvIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmluZyBj
b25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpwbHVnaW5UeXBlcywgdmlvbGF0ZWREaXJlY3RpdmUsIHVy
bCwgIlJlZnVzZWQgdG8gbG9hZCIsICJpdHMgTUlNRSB0eXBlIik7CiAgICAgICAgIHJlcG9ydFZp
b2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cGx1Z2luVHlwZXMs
IHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwuc3RyaW5nKCksIGNvbnNvbGVNZXNzYWdlLCBzb3VyY2VV
UkwsIHNvdXJjZVBvc2l0aW9uKTsKQEAgLTU5Nyw3ICs1OTcsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZWRpcmVj
dFJlc3BvbgogICAgIC8vICJJZiBwbHVnaW4gY29udGVudCBpcyBsb2FkZWQgd2l0aG91dCBhbiBh
c3NvY2lhdGVkIFVSTCAocGVyaGFwcyBhbiBvYmplY3QgZWxlbWVudCBsYWNrcyBhIGRhdGEgYXR0
cmlidXRlLCBidXQgbG9hZHMgc29tZSBkZWZhdWx0IHBsdWdpbiBiYXNlZAogICAgIC8vIG9uIHRo
ZSBzcGVjaWZpZWQgdHlwZSksIGl0IE1VU1QgYmUgYmxvY2tlZCBpZiBvYmplY3Qtc3JjJ3MgdmFs
dWUgaXMgJ25vbmUnLCBidXQgd2lsbCBvdGhlcndpc2UgYmUgYWxsb3dlZCIuCiAgICAgU3RyaW5n
IHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oV1RGOjpPcmRpbmFs
TnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSk7CisgICAgVGV4dFBv
c2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGlu
YWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAoY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkgewog
ICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlv
bihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6b2JqZWN0U3JjLCB2aW9sYXRl
ZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CiAgICAgICAgIHJlcG9ydFZpb2xh
dGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6b2JqZWN0U3JjLCB2aW9s
YXRlZERpcmVjdGl2ZSwgdXJsLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZSwgc291cmNlVVJMLCBz
b3VyY2VQb3NpdGlvbik7CkBAIC02MTAsNyArNjEwLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlZGlyZWN0
UmUKICAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRl
bnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBTdHJpbmcgc291cmNlVVJMOwotICAgIFRleHRQ
b3NpdGlvbiBzb3VyY2VQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCks
IFdURjo6T3JkaW5hbE51bWJlcigpKTsKKyAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24o
T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcigpKTsKICAgICBhdXRv
IGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGVm
ZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmUubmFtZSgpID09IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZVNyYyA/IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZVNyYyA6IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzOjpjaGlsZFNyYzsKICAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdl
ID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUs
IHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKQEAgLTYyNCw3ICs2
MjQsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dSZXNvdXJjZUZyb21Tb3Vy
Y2UoY29uc3QgVVJMJiB1cmwsIFJlZGlyZWN0UmVzcAogICAgIGlmIChMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2Nv
bCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IFN0cmluZyBzb3VyY2VVUkw7Ci0gICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKFdURjo6
T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpOworICAg
IFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgp
LCBPcmRpbmFsTnVtYmVyKCkpOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBb
Jl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3Rp
dmUpIHsKICAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JW
aW9sYXRpb24obmFtZSwgdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIp
OwogICAgICAgICByZXBvcnRWaW9sYXRpb24obmFtZSwgdmlvbGF0ZWREaXJlY3RpdmUsIHVybC5z
dHJpbmcoKSwgY29uc29sZU1lc3NhZ2UsIHNvdXJjZVVSTCwgc291cmNlUG9zaXRpb24pOwpAQCAt
Njc3LDcgKzY3Nyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RU
b1NvdXJjZShjb25zdCBVUkwmIHVybCwgUmVkaXJlY3RSZXNwb25zCiAgICAgaWYgKExlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJs
LnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRp
b24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIo
KSk7CisgICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9y
ZUZpcnN0KCksIE9yZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVj
dGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRl
ZERpcmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVz
c2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Y29u
bmVjdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gY29ubmVjdCB0byIp
OwogICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OmNvbm5lY3RTcmMsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwuc3RyaW5nKCksIGNvbnNv
bGVNZXNzYWdlLCBzb3VyY2VVUkwsIHNvdXJjZVBvc2l0aW9uLCBwcmVSZWRpcmVjdFVSTCk7CkBA
IC02OTcsNyArNjk3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93QmFzZVVS
SShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWMKICAgICBpZiAoTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1
cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBTdHJpbmcgc291cmNlVVJMOwotICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3Np
dGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJl
cigpKTsKKyAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVm
b3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcigpKTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGly
ZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xh
dGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpi
YXNlVVJJLCB2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBjaGFuZ2UgdGhlIGRv
Y3VtZW50IGJhc2UgVVJMIHRvIik7CiAgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmFzZVVSSSwgdmlvbGF0ZWREaXJlY3RpdmUsIHVy
bC5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UsIHNvdXJjZVVSTCwgc291cmNlUG9zaXRpb24pOwpA
QCAtNzIyLDEzICs3MjIsMTMgQEAgU3RyaW5nIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGVwcmVj
YXRlZFVSTEZvclJlcG9ydGluZyhjb25zdCBVUkwmIHVybCkgY29uc3QKIHZvaWQgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiB2aW9sYXRlZERpcmVj
dGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiBlZmZlY3RpdmVWaW9s
YXRlZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNv
bnNvbGVNZXNzYWdlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSkgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogRXh0cmFjdCBzb3VyY2UgZmlsZSBhbmQgc291cmNlIHBvc2l0aW9uIGZyb20gSlND
OjpFeGVjU3RhdGUuCi0gICAgcmV0dXJuIHJlcG9ydFZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2
ZSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpLmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCksIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxp
c3QoKSwgYmxvY2tlZFVSTCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24o
V1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXI6OmJl
Zm9yZUZpcnN0KCkpLCBzdGF0ZSk7CisgICAgcmV0dXJuIHJlcG9ydFZpb2xhdGlvbih2aW9sYXRl
ZERpcmVjdGl2ZSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLmRp
cmVjdGl2ZUxpc3QoKSwgYmxvY2tlZFVSTCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0
UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcjo6YmVm
b3JlRmlyc3QoKSksIHN0YXRlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJl
cG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCBj
b25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0JiB2aW9sYXRlZERpcmVjdGl2ZUxpc3QsIGNvbnN0IFN0cmluZyYgYmxv
Y2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogc3RhdGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEV4dHJhY3Qgc291cmNlIGZpbGUgYW5k
IHNvdXJjZSBwb3NpdGlvbiBmcm9tIEpTQzo6RXhlY1N0YXRlLgotICAgIHJldHVybiByZXBvcnRW
aW9sYXRpb24oZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIHZpb2xhdGVkRGlyZWN0aXZlLCB2
aW9sYXRlZERpcmVjdGl2ZUxpc3QsIGJsb2NrZWRVUkwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmco
KSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpP
cmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpKSwgc3RhdGUpOworICAgIHJldHVybiByZXBvcnRW
aW9sYXRpb24oZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIHZpb2xhdGVkRGlyZWN0aXZlLCB2
aW9sYXRlZERpcmVjdGl2ZUxpc3QsIGJsb2NrZWRVUkwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmco
KSwgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGluYWxOdW1i
ZXI6OmJlZm9yZUZpcnN0KCkpLCBzdGF0ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVj
dGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVj
dGl2ZSwgY29uc3QgU3RyaW5nJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzb3VyY2VQ
b3NpdGlvbiwgY29uc3QgVVJMJiBwcmVSZWRpcmVjdFVSTCwgSlNDOjpKU0dsb2JhbE9iamVjdCog
c3RhdGUpIGNvbnN0CkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnJlcG9ydE1pc3NpbmdSZXBvcnRVUkkoY29uc3QgU3RyaW5nJiBwb2xpY3kpIGNvbnN0CiAg
ICAgbG9nVG9Db25zb2xlKCJUaGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgJyIgKyBwb2xpY3kg
KyAiJyB3YXMgZGVsaXZlcmVkIGluIHJlcG9ydC1vbmx5IG1vZGUsIGJ1dCBkb2VzIG5vdCBzcGVj
aWZ5IGEgJ3JlcG9ydC11cmknOyB0aGUgcG9saWN5IHdpbGwgaGF2ZSBubyBlZmZlY3QuIFBsZWFz
ZSBlaXRoZXIgYWRkIGEgJ3JlcG9ydC11cmknIGRpcmVjdGl2ZSwgb3IgZGVsaXZlciB0aGUgcG9s
aWN5IHZpYSB0aGUgJ0NvbnRlbnQtU2VjdXJpdHktUG9saWN5JyBoZWFkZXIuIik7CiB9CiAKLXZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpsb2dUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dENvbHVtbiwgSlND
OjpKU0dsb2JhbE9iamVjdCogc3RhdGUpIGNvbnN0Cit2b2lkIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6bG9nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgT3JkaW5hbE51
bWJlciYgY29udGV4dENvbHVtbiwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUpIGNvbnN0CiB7
CiAgICAgaWYgKG1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDYwNzljMDVh
YmFjYTRmOTRmZjcwNjcwMWE3OWZkN2YwZTUzYmRkM2MuLmQ0MTJhZDE1ZDhjMGE1MjJkOTRjN2Vj
ZWFlMDZjOGE5YzY4YTQ2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oCkBAIC05NCwxMSArOTQsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
YWxsb3dTY3JpcHRXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgYm9vbCBvdmVycmlkZUNv
bnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKICAgICBib29sIGFsbG93U3R5bGVX
aXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKIAotICAgIGJvb2wgYWxsb3dKYXZhU2NyaXB0VVJMcyhj
b25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4
dExpbmUsIGNvbnN0IFN0cmluZyYgY29kZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSA9IGZhbHNlKSBjb25zdDsKLSAgICBib29sIGFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhj
b25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4
dExpbmUsIGNvbnN0IFN0cmluZyYgY29kZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSA9IGZhbHNlKSBjb25zdDsKLSAgICBib29sIGFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0
cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwg
U3RyaW5nVmlldyBzY3JpcHRDb250ZW50LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5ID0gZmFsc2UpIGNvbnN0OworICAgIGJvb2wgYWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25z
dCBTdHJpbmcmIGNvZGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxz
ZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3Ry
aW5nJiBjb2RlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNv
bnN0OworICAgIGJvb2wgYWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJM
LCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgU3RyaW5nVmlldyBzY3JpcHRDb250
ZW50LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0Owog
ICAgIGJvb2wgYWxsb3dOb25QYXJzZXJJbnNlcnRlZFNjcmlwdHMoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nVmlldyYsIFBhcnNlckluc2VydGVkKSBjb25zdDsKLSAgICBi
b29sIGFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBTdHJpbmdWaWV3IHN0eWxlQ29udGVudCwgQ2hl
Y2tVbnNhZmVIYXNoZXMsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxz
ZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0cmluZ1ZpZXcgc3R5bGVD
b250ZW50LCBDaGVja1Vuc2FmZUhhc2hlcywgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSA9IGZhbHNlKSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dFdmFsKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBMb2dUb0NvbnNvbGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kg
PSBmYWxzZSkgY29uc3Q7CiAKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgU2FuZGJv
eEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBsb2dUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVt
YmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgY29u
c3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0Q29sdW1uID0gV1RGOjpPcmRpbmFsTnVtYmVy
OjpiZWZvcmVGaXJzdCgpLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiA9IG51bGxwdHIpIGNvbnN0Owor
ICAgIHZvaWQgbG9nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5l
ID0gT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgY29uc3QgT3JkaW5hbE51bWJlciYgY29u
dGV4dENvbHVtbiA9IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6SlNHbG9iYWxP
YmplY3QqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgdm9pZCBhcHBseVBvbGljeVRvU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogCiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZGVwcmVjYXRlZCBDU1Ay
ICJzdHJpcCB1cmkgZm9yIHJlcG9ydGluZyIgYWxnb3JpdGhtIGZyb20gPGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi9DU1AyLyN2aW9sYXRpb24tcmVwb3J0cz4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCAwYmViOTQ2ZGQ4NzI1OGU1
Y2QzNTVhYmRiZDdlYTY5YmMyMjQxNjhjLi5lMzhjNjgzMWM2ZTM2MmE4MzllYTBkZWU4NWQ2ZTI1
MzdlNDcwZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RocmVhZC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgU2Nyb2xsaW5nVGhyZWFkOjpTY3JvbGxp
bmdUaHJlYWQoKQogewogICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CiAgICAgbV90aHJl
YWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogU2Nyb2xsaW5nIiwgW3RoaXMsICZzZW1hcGhv
cmVdIHsKLSAgICAgICAgV1RGOjpUaHJlYWQ6OnNldEN1cnJlbnRUaHJlYWRJc1VzZXJJbnRlcmFj
dGl2ZSgpOworICAgICAgICBUaHJlYWQ6OnNldEN1cnJlbnRUaHJlYWRJc1VzZXJJbnRlcmFjdGl2
ZSgpOwogICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOwogICAgICAgICBz
ZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIG1fcnVuTG9vcC0+cnVuKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXggYmU2YzQ4NDViZDc2
ZDRlN2Y1Yzc4MTAxYjc4OGU0ZjMyYzI3YWMyOS4uMzIwMTU3YWZjMjM1MjMyMzQ2MzMzYjc2MjIz
MTI5ODQ0MjA1NzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JF
X0VYUE9SVCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZUZvcklEKFNjcm9sbGluZ05vZGVJRCkgY29u
c3Q7CiAKLSAgICB1c2luZyBWaXNpdG9yRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNj
cm9sbGluZ05vZGVJRCwgU2Nyb2xsaW5nTm9kZVR5cGUsIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2lu
dD4gc2Nyb2xsUG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3Bv
cnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRTaW5jZUxhc3RDb21taXQpPjsKKyAgICB1c2luZyBWaXNp
dG9yRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFNjcm9sbGluZ05vZGVJRCwgU2Nyb2xsaW5nTm9k
ZVR5cGUsIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIHN0ZDo6b3B0
aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRTaW5j
ZUxhc3RDb21taXQpPjsKICAgICB2b2lkIHRyYXZlcnNlU2Nyb2xsaW5nVHJlZShWaXNpdG9yRnVu
Y3Rpb24mJik7CiAKICAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBzY3JvbGxpbmcgdHJlZSBub2RlIGhh
cyBoYW5kbGVkIGEgc2Nyb2xsIGFuZCB1cGRhdGVkIGl0cyBsYXllcnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZU5pY29zaWEuY3BwCmluZGV4IDJkMTRlNzk5NjcxNDkzYjk5OWIwN2YzYzEwZGZjMzJjMGRiYmNm
YjIuLmFiNGI2N2NhMmFmMzZiNzEwNWUzY2MxMWIzYmQzMmQ1ZjhiMGUwNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29z
aWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZU5pY29zaWEuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgUmVmUHRyPFNjcm9sbGluZ1Ry
ZWVOb2RlPiBTY3JvbGxpbmdUcmVlTmljb3NpYTo6c2Nyb2xsaW5nTm9kZUZvclBvaW50KEZsb2F0
UG9pbnQKICAgICBjb2xsZWN0RGVzY2VuZGFudExheWVyc0F0UG9pbnQobGF5ZXJzQXRQb2ludCwg
cm9vdENvbnRlbnRzTGF5ZXIsIHBvaW50KTsKIAogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByZXR1
cm5Ob2RlID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8gbGF5ZXIgOiBXVEY6Om1ha2VSZXZlcnNl
ZFJhbmdlKGxheWVyc0F0UG9pbnQpKSB7CisgICAgZm9yIChhdXRvIGxheWVyIDogbWFrZVJldmVy
c2VkUmFuZ2UobGF5ZXJzQXRQb2ludCkpIHsKICAgICAgICAgbGF5ZXItPmFjY2Vzc0NvbW1pdHRl
ZChbJl0oY29uc3QgQ29tcG9zaXRpb25MYXllcjo6TGF5ZXJTdGF0ZSYgc3RhdGUpIHsKICAgICAg
ICAgICAgIGF1dG8qIHNjcm9sbGluZ05vZGUgPSBub2RlRm9ySUQoc3RhdGUuc2Nyb2xsaW5nTm9k
ZUlEKTsKICAgICAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZT4oc2Ny
b2xsaW5nTm9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCmluZGV4IGIzYWFiYzUwZTBkYmUwYzFmMWJlNjlkODMy
MTQyN2NkMzcxM2UzN2MuLjUzNTM2MzcyYWE1MTkwYmZkOWI2MmEyMTA3NDM0ZWMxNjg4ODdlODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWEuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4gU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVRpbWVyKEZ1bmN0aW9uPHZvaWQoKT4m
JiBmdW5jdGlvbikKIHsKLSAgICByZXR1cm4gV1RGOjptYWtlVW5pcXVlPFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgW2Z1bmN0aW9uID0gV1RGTW92
ZShmdW5jdGlvbiksIHByb3RlY3RlZE5vZGUgPSBSZWYgeyBzY3JvbGxpbmdOb2RlKCkgfV0gewor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+KFJ1
bkxvb3A6OmN1cnJlbnQoKSwgW2Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHByb3RlY3Rl
ZE5vZGUgPSBSZWYgeyBzY3JvbGxpbmdOb2RlKCkgfV0gewogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgcHJvdGVjdGVkTm9kZS0+c2Nyb2xsaW5nVHJlZSgpLnRyZWVMb2NrKCkgfTsKICAgICAgICAg
ZnVuY3Rpb24oKTsKICAgICB9KTsKQEAgLTEwMywxMCArMTAzLDEwIEBAIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
OjpzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikKIHsK
ICAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIpIHsKLSAgICAgICAgbV9hbmltYXRpb25UaW1lciA9
IFdURjo6bWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZpcmVkKTsKKyAg
ICAgICAgbV9hbmltYXRpb25UaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE+PihSdW5Mb29wOjpjdXJyZW50KCks
IHRoaXMsICZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YW5pbWF0
aW9uVGltZXJGaXJlZCk7CiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQotICAgICAgICBtX2Fu
aW1hdGlvblRpbWVyLT5zZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yVGltZXIpOworICAgICAgICBtX2FuaW1hdGlvblRpbWVyLT5zZXRQ
cmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc3BsYXlSZWZyZXNoTW9uaXRvclRpbWVy
KTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QWJvcnRhYmxlVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVU
YXNrUXVldWUuaAppbmRleCA1ZGRjODE2ZDQzNmEyNjU5ZWI2ZDgzODFiZTQ2ODQ5NjM2YWMwNTEw
Li5mOWZjNzBiOWIyZTIzZTkwZThhMjg1ZDEyNDZmMWVjMDA4MTgwM2E0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAtMTE5LDcgKzExOSw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIEVucXVldWUgYSB0YXNrIHRvIGJlIHJ1biBvbiB0aGUgbWFpbiB0
aHJlYWQuIFRoZSB0YXNrIG1heSBiZSBjYW5jZWxsZWQgaWYgYW4gYWJvcnQgc3RhcnRzIGJlZm9y
ZSBpdCdzCiAgICAgLy8gaGFuZGxlZC4KLSAgICB2b2lkIGVucXVldWVUYXNrKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIG1haW5UaHJlYWRUYXNrSGFuZGxlcikKKyAgICB2b2lkIGVucXVldWVUYXNr
KEZ1bmN0aW9uPHZvaWQoKT4mJiBtYWluVGhyZWFkVGFza0hhbmRsZXIpCiAgICAgewogICAgICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBJdCBpcyBhbGxvd2VkIGZvciB0aGUgbWFpbiB0aHJlYWQgdGFzayBoYW5kbGVyIHRv
IGFib3J0IHRoZSBBYm9ydGFibGVUYXNrUXVldWUuIEluIHRoYXQgY2FzZSwgdGhlIHJldHVybgog
ICAgIC8vIHZhbHVlIGlzIGRpc2NhcmRlZCBhbmQgdGhlIGNhbGxlciByZWNlaXZlcyBhbiBlbXB0
eSBvcHRpb25hbC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSPgotICAgIHN0ZDo6b3B0aW9uYWw8
Uj4gZW5xdWV1ZVRhc2tBbmRXYWl0KFdURjo6RnVuY3Rpb248UigpPiYmIG1haW5UaHJlYWRUYXNr
SGFuZGxlcikKKyAgICBzdGQ6Om9wdGlvbmFsPFI+IGVucXVldWVUYXNrQW5kV2FpdChGdW5jdGlv
bjxSKCk+JiYgbWFpblRocmVhZFRhc2tIYW5kbGVyKQogICAgIHsKICAgICAgICAgLy8gRG9uJ3Qg
ZGVhZGxvY2sgdGhlIG1haW4gdGhyZWFkIHdpdGggaXRzZWxmLgogICAgICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUYXNrKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQo
VGFzayk7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFRhc2s+IGNyZWF0ZShBYm9y
dGFibGVUYXNrUXVldWUqIHRhc2tRdWV1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFza0Nh
bGxiYWNrKQorICAgICAgICBzdGF0aWMgUmVmPFRhc2s+IGNyZWF0ZShBYm9ydGFibGVUYXNrUXVl
dWUqIHRhc2tRdWV1ZSwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2tDYWxsYmFjaykKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzayh0YXNrUXVldWUsIFdURk1v
dmUodGFza0NhbGxiYWNrKSkpOwogICAgICAgICB9CkBAIC0yMDgsMTQgKzIwOCwxNCBAQCBwcml2
YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQWJvcnRhYmxlVGFza1F1ZXVlKiBtX3Rhc2tR
dWV1ZTsKLSAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fdGFza0NhbGxiYWNrOworICAg
ICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fdGFza0NhbGxiYWNrOwogCi0gICAgICAgIFRhc2soQWJv
cnRhYmxlVGFza1F1ZXVlKiB0YXNrUXVldWUsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2tD
YWxsYmFjaykKKyAgICAgICAgVGFzayhBYm9ydGFibGVUYXNrUXVldWUqIHRhc2tRdWV1ZSwgRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2tDYWxsYmFjaykKICAgICAgICAgICAgIDogbV90YXNrUXVldWUo
dGFza1F1ZXVlKSwgbV90YXNrQ2FsbGJhY2soV1RGTW92ZSh0YXNrQ2FsbGJhY2spKQogICAgICAg
ICB7IH0KICAgICB9OwogCi0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjYWxsYmFjaykgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKQorICAgIHZvaWQgcG9zdFRhc2so
RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spCiAg
ICAgewogICAgICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKICAgICAgICAgUmVmPFRhc2s+
IHRhc2sgPSBUYXNrOjpjcmVhdGUodGhpcywgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMjM1LDcg
KzIzNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Fib3J0aW5nIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9sb2NrKSB7IGZhbHNlIH07CiAgICAgTG9jayBtX2xvY2s7CiAgICAgQ29uZGl0aW9uIG1f
YWJvcnRlZE9yUmVzcG9uc2VTZXQ7Ci0gICAgV1RGOjpEZXF1ZTxSZWY8VGFzaz4+IG1fY2hhbm5l
bCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAgRGVxdWU8UmVmPFRhc2s+PiBtX2No
YW5uZWwgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCmluZGV4IDQzOGU3MjUxNzcy
YmU4ZTVhNDc4MTA1YjUyMGNiYzVkZWZmYjVhOTMuLjUyMmM2ODE4MDFjYjhmOTNhYThlZWU2NzI5
ZmU3NjU5YzI3NDM2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1v
bml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1BVTW9uaXRvciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNpbmcgRXhjZWVkZWRDUFVM
aW1pdEhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoZG91YmxlKT47CisgICAgdXNpbmcgRXhj
ZWVkZWRDUFVMaW1pdEhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKGRvdWJsZSk+OwogICAgIFdFQkNP
UkVfRVhQT1JUIENQVU1vbml0b3IoU2Vjb25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxp
bWl0SGFuZGxlciYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q1BVTGltaXQoY29u
c3Qgc3RkOjpvcHRpb25hbDxkb3VibGU+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9u
aXRvci5jcHAKaW5kZXggZjJhZjBhMjAyM2RkODNmNDg4MzljZmUxMDgzNjQyYjEzZDUyNzFiNi4u
ZTMxM2JhNTMwMTY3MzU4ZDIzMzRhYmI1YjZmOTU4YWRjMTA1MGE4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoR0xJQikKIAotRmlsZU1vbml0
b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYsIFJlZjxXb3JrUXVldWU+JiYsIFdURjo6RnVu
Y3Rpb248dm9pZChGaWxlQ2hhbmdlVHlwZSk+JiYpCitGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiwgUmVmPFdvcmtRdWV1ZT4mJiwgRnVuY3Rpb248dm9pZChGaWxlQ2hhbmdl
VHlwZSk+JiYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCmluZGV4
IDM2NjQ3ZWJmY2UyZmVkMzdlOGJkNzFiYzlkNGE0NGVlNmU0MmQwMjEuLjZmMmNlNmM0ZGI3Zjgz
YWQ3ZDZjZTYyN2Q2NWIwZjI2Yjk1YTAxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1v
bml0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBGaWxlTW9uaXRvciB7CiBwdWJsaWM6CiAg
ICAgZW51bSBjbGFzcyBGaWxlQ2hhbmdlVHlwZSB7IE1vZGlmaWNhdGlvbiwgUmVtb3ZhbCB9Owog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmlsZU1vbml0b3IoY29uc3QgU3RyaW5nJiwgUmVmPFdvcmtR
dWV1ZT4mJiBoYW5kbGVyUXVldWUsIFdURjo6RnVuY3Rpb248dm9pZChGaWxlQ2hhbmdlVHlwZSk+
JiYgbW9kaWZpY2F0aW9uSGFuZGxlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgRmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIEZ1bmN0aW9uPHZv
aWQoRmlsZUNoYW5nZVR5cGUpPiYmIG1vZGlmaWNhdGlvbkhhbmRsZXIpOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5GaWxlTW9uaXRvcigpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmgKaW5kZXggNjNiNmM0YWZmZWM2ZWQwODUxOGVj
MzJmMzRkMTQ5NWM5NjVjMTdjMi4uMGExMzY4NjE2YjE3MmU1YzcxY2Q3NDc1N2YzYmMwN2ZlZDhl
Yzg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb3dQb3dlck1vZGVOb3RpZmll
ci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvd1Bvd2Vy
TW9kZU5vdGlmaWVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICB1c2luZyBMb3dQb3dlck1vZGVDaGFuZ2VDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChi
b29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCk+OworICAgIHVzaW5nIExvd1Bvd2VyTW9kZUNoYW5n
ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCk+Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IExvd1Bvd2VyTW9kZU5vdGlmaWVyKExvd1Bvd2Vy
TW9kZUNoYW5nZUNhbGxiYWNrJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Mb3dQb3dlck1vZGVO
b3RpZmllcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhy
ZWFkU2hhcmVkVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNo
YXJlZFRpbWVyLmNwcAppbmRleCA0MjUxYzg3ZTgxZjcxMDY3MmE3YjNmYmJhN2E4NzljOTBlZTI2
MGMyLi5jYjYyZDExYWZhYjYwYTliMTMxMTkyMzc2MjVlNjljYmIzYTA3M2Q4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKQEAgLTcx
LDcgKzcxLDcgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQogfQog
I2VuZGlmCiAKLXZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24pCit2b2lkIE1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihGdW5jdGlvbjx2b2lkKCk+JiYgZmlyZWRGdW5jdGlv
bikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9maXJlZEZ1bmN0aW9uIHx8ICFmaXJlZEZ1bmN0
aW9uKTsKICAgICBtX2ZpcmVkRnVuY3Rpb24gPSBXVEZNb3ZlKGZpcmVkRnVuY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaAppbmRleCA1
N2NiNDM1NTZkZmVkOThhODMwMmQ3OWY1ZTRlYWQxZjg1M2E2YTQ5Li4xYTFiYzYzNjNlMDJmNTYy
YTc2MTVmZmI2ODQ2OTE5YjExYjM5NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaApAQCAtMzYsMTEgKzM2LDExIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBT
aGFyZWRUaW1lciB7Ci0gICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8TWFpblRo
cmVhZFNoYXJlZFRpbWVyPjsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TWFpblRo
cmVhZFNoYXJlZFRpbWVyPjsKIHB1YmxpYzoKICAgICBzdGF0aWMgTWFpblRocmVhZFNoYXJlZFRp
bWVyJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKEZ1bmN0
aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25k
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlk
YXRlKCkgb3ZlcnJpZGU7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
TWFpblRocmVhZFNoYXJlZFRpbWVyKCk7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9m
aXJlZEZ1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9maXJlZEZ1bmN0aW9uOwogI2lm
ICFVU0UoQ0YpICYmICFPUyhXSU5ET1dTKQogICAgIFJ1bkxvb3A6OlRpbWVyPE1haW5UaHJlYWRT
aGFyZWRUaW1lcj4gbV90aW1lcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUE9ESW50ZXJ2YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVy
dmFsLmgKaW5kZXggM2E5ZmU2NjgwY2Q0ZjNhNzEwMDU0OTU5NDc3NGIxNmQ2NmY0ODQ2Yy4uYjg4
ODYzMTIzYTRmZmQ5Y2E2ZmZmMzM0YWM2ZTY3ZTg5NWYzY2YzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QT0RJbnRlcnZhbC5oCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCBwcml2YXRlOgogICAgIHVz
aW5nIEJhc2UgPSBQT0RJbnRlcnZhbEJhc2U8VCwgVXNlckRhdGE+OwogfTsKIAotdGVtcGxhdGU8
Y2xhc3MgVCwgY2xhc3MgVT4gY2xhc3MgUE9ESW50ZXJ2YWw8VCwgV1RGOjpXZWFrUHRyPFU+PiA6
IHB1YmxpYyBQT0RJbnRlcnZhbEJhc2U8VCwgV1RGOjpXZWFrUHRyPFU+PiB7Cit0ZW1wbGF0ZTxj
bGFzcyBULCBjbGFzcyBVPiBjbGFzcyBQT0RJbnRlcnZhbDxULCBXZWFrUHRyPFU+PiA6IHB1Ymxp
YyBQT0RJbnRlcnZhbEJhc2U8VCwgV2Vha1B0cjxVPj4gewogcHVibGljOgotICAgIFBPREludGVy
dmFsKGNvbnN0IFQmIGxvdywgY29uc3QgVCYgaGlnaCwgV1RGOjpXZWFrUHRyPFU+JiYgZGF0YSkK
LSAgICAgICAgOiBQT0RJbnRlcnZhbEJhc2U8VCwgV1RGOjpXZWFrUHRyPFU+Pihsb3csIGhpZ2gs
IFdURk1vdmUoZGF0YSkpCisgICAgUE9ESW50ZXJ2YWwoY29uc3QgVCYgbG93LCBjb25zdCBUJiBo
aWdoLCBXZWFrUHRyPFU+JiYgZGF0YSkKKyAgICAgICAgOiBQT0RJbnRlcnZhbEJhc2U8VCwgV2Vh
a1B0cjxVPj4obG93LCBoaWdoLCBXVEZNb3ZlKGRhdGEpKQogICAgIHsKICAgICB9CiAKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHVzaW5nIEJhc2Ug
PSBQT0RJbnRlcnZhbEJhc2U8VCwgV1RGOjpXZWFrUHRyPFU+PjsKKyAgICB1c2luZyBCYXNlID0g
UE9ESW50ZXJ2YWxCYXNlPFQsIFdlYWtQdHI8VT4+OwogfTsKIAogI2lmbmRlZiBOREVCVUcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKaW5kZXgg
MGY3YjMyZWFhY2EwNjNkMzE0MjEwNTFhMzM3NWRlZjZkYzdmOGQ3NC4uMjI2N2NlNGIyMWMxNzZi
MDU2ZTc2OTZkOTg3ZDhkNjkyYmM0ZWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlKTsKICAgICB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1hbmQoUGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CiAKLSAgICB1c2luZyBS
ZW1vdGVDb21tYW5kc1NldCA9IEhhc2hTZXQ8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSwgV1RGOjpJbnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1v
dGVDb250cm9sQ29tbWFuZFR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+PjsKKyAgICB1c2luZyBSZW1v
dGVDb21tYW5kc1NldCA9IEhhc2hTZXQ8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSwgSW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj47CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRD
b21tYW5kcyhjb25zdCBSZW1vdGVDb21tYW5kc1NldCYpOwogICAgIGNvbnN0IFJlbW90ZUNvbW1h
bmRzU2V0JiBzdXBwb3J0ZWRDb21tYW5kcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAKaW5kZXggNTQ0OWJhZDFi
NjAxMWRlNzhkNTg3MGNmNmFhZmY5NGFmZWI0NTRkYy4uMDg5M2Y3ZTc1YWVhNmJlMjRkMzk5ZTg2
ZmNhODJiNzE2OGQ1ZTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcApAQCAtMzcsNyArMzcsNyBAQCBTY3JvbGxBbmltYXRp
b25Nb21lbnR1bTo6U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0oU2Nyb2xsQW5pbWF0aW9uQ2xpZW50
JiBjbGllbnQpCiAKIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjp+U2Nyb2xsQW5pbWF0aW9uTW9t
ZW50dW0oKSA9IGRlZmF1bHQ7CiAKLWJvb2wgU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06OnN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxEZWx0YSwgY29uc3QgV1RGOjpGdW5jdGlvbjxGbG9hdFBvaW50KGNvbnN0IEZs
b2F0UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIpCitib29sIFNjcm9sbEFuaW1hdGlvbk1v
bWVudHVtOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZ1bmN0aW9uPEZsb2F0UG9pbnQo
Y29uc3QgRmxvYXRQb2ludCYpPiYgZGVzdGluYXRpb25Nb2RpZmllcikKIHsKICAgICBhdXRvIGV4
dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKaW5k
ZXggNWM5YmU5MTM0MWQ2NzI0ZWM1MDY5NzRiMjczZWYxNzljZjk3Mjk3OS4uNjE4MDU0YmI0YTA5
NThjN2RiOWQ0ZDMxNjcwNDgwNDJjYWE4NWUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKICAgICBTY3JvbGxBbmltYXRpb25Nb21lbnR1bShTY3JvbGxBbmltYXRpb25DbGllbnQmKTsK
ICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25Nb21lbnR1bSgpOwogCi0gICAgYm9vbCBzdGFy
dEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IFdURjo6RnVuY3Rpb248RmxvYXRQb2ludChjb25zdCBG
bG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1vZGlmaWVyKTsKKyAgICBib29sIHN0YXJ0QW5pbWF0
ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZz
ZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxEZWx0YSwgY29uc3QgRnVuY3Rpb248RmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50Jik+
JiBkZXN0aW5hdGlvbk1vZGlmaWVyKTsKICAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHN0b3Ao
KSBmaW5hbDsKICAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggY2MwZGVm
OWRlMmZhNTAzZThmODA1MjllNTIzNzdjYTExMzE2ZTI5MC4uYWIxOGI4Mjc5YWZmOGVlODlhODlj
MjBlNWEwMzg4NWU1MzRkM2NkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcApAQCAtMzc1LDcgKzM3NSw3IEBAIGZsb2F0IFNjcm9sbEFuaW1hdG9yOjpwYWdl
U2NhbGVGYWN0b3IoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXJUaW1lcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZVRpbWVyKEZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKIHsKLSAgICByZXR1cm4gV1RGOjptYWtlVW5pcXVlPFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgW2Z1bmN0aW9uID0gV1RG
TW92ZShmdW5jdGlvbiksIHdlYWtTY3JvbGxhYmxlQXJlYSA9IFdlYWtQdHIgeyBtX3Njcm9sbGFi
bGVBcmVhIH1dIHsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlclRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rp
b24pLCB3ZWFrU2Nyb2xsYWJsZUFyZWEgPSBXZWFrUHRyIHsgbV9zY3JvbGxhYmxlQXJlYSB9XSB7
CiAgICAgICAgIGlmICghd2Vha1Njcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKaW5kZXggOWRkZmY4MDg5OWY4NmIxYTg5MWJlOWFi
Zjc0ZTc2YjRlNDFlYTIwNi4uZTc5ZmI4MGE1NmJmYmM1ZDBkNDkyMmQyMGI1M2ZkNDU5ZDgyM2Mx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9w
S2V5Ym9hcmRTY3JvbGxpbmcoKTsKIAotICAgIGJvb2wgc3RhcnRNb21lbnR1bVNjcm9sbFdpdGhJ
bml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxv
YXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBj
b25zdCBXVEY6OkZ1bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYpPiYgZGVzdGlu
YXRpb25Nb2RpZmllcik7CisgICAgYm9vbCBzdGFydE1vbWVudHVtU2Nyb2xsV2l0aEluaXRpYWxW
ZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUm
IGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZ1
bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYpPiYgZGVzdGluYXRpb25Nb2RpZmll
cik7CiAKICAgICB2b2lkIHdpbGxCZWdpbktleWJvYXJkU2Nyb2xsaW5nKCk7CiAgICAgdm9pZCBk
aWRTdG9wS2V5Ym9hcmRTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggZDdhYjMxNmUzZTIzOGM4ZGE2ZGFkZGVhZGY3MzVmMTcxZTNiODk5OC4uNTU1
YWQwZmY4MTI5ZjkwOGUwZmM2YjMxMjM5MDVmZjc1ODk2OWNhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE1MCw4ICsxNTAsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9CiAKICAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIFdURjo6RnVu
Y3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIFdURjo6RnVuY3Rpb248
c2l6ZV90KCk+IHNpemU7CisgICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBk
YXRhOworICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CiAgICAgICAgIH07CiAK
ICAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlk
ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikp
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKaW5kZXggMzNkODY5MzExNDg0
YmRhYThlOGVhOGFmNjViYTJiNGRiNzgzYmUxYy4uNzI5NDUyNGRiNzQwNzQyOTE3MjYxMzJkNTIy
MWUxZmViMjQ2N2RmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
VGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCkBAIC00
MSw3ICs0MSw3IEBAIGNsYXNzIFNoYXJlZFRpbWVyIHsKIHB1YmxpYzoKICAgICBTaGFyZWRUaW1l
cigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5TaGFyZWRUaW1lcigpID0gZGVmYXVsdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKEZ1bmN0aW9uPHZvaWQoKT4m
JikgPSAwOwogCiAgICAgLy8gVGhlIGZpcmUgaW50ZXJ2YWwgaXMgaW4gc2Vjb25kcyByZWxhdGl2
ZSB0byB0aGUgY3VycmVudCBtb25vdG9uaWMgY2xvY2sgdGltZS4KICAgICB2aXJ0dWFsIHZvaWQg
c2V0RmlyZUludGVydmFsKFNlY29uZHMpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4
IGE0YmE2YjA3YTNiNzMwMjRhMzc0NTA5ODg1OTdiN2I0ODg4N2UzYTcuLjU5YmFjYWQ3ZGFlYzVj
M2JlZDVhODY2YTZlZDhkMmNiNjg5MDFhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAt
MTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiBjbGFzcyBUaW1lciA6IHB1YmxpYyBUaW1lckJhc2Ug
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyB2b2lk
IHNjaGVkdWxlKFNlY29uZHMgZGVsYXksIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9u
KQorICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlKFNlY29uZHMgZGVsYXksIEZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8qIHRpbWVyID0gbmV3IFRpbWVyKFtd
IHsgfSk7CiAgICAgICAgIHRpbWVyLT5tX2Z1bmN0aW9uID0gW3RpbWVyLCBmdW5jdGlvbiA9IFdU
Rk1vdmUoZnVuY3Rpb24pXSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICBUaW1lcihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCisgICAg
VGltZXIoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2
YXRlOgogICAgICAgICBtX2Z1bmN0aW9uKCk7CiAgICAgfQogICAgIAotICAgIFdURjo6RnVuY3Rp
b248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247
CiB9OwogCiBpbmxpbmUgYm9vbCBUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKQEAgLTE1OCw3
ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIERlZmVycmFibGVPbmVTaG90
VGltZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24sIFNlY29uZHMgZGVsYXkpCisg
ICAgRGVmZXJyYWJsZU9uZVNob3RUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24sIFNl
Y29uZHMgZGVsYXkpCiAgICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKICAg
ICAgICAgLCBtX2RlbGF5KGRlbGF5KQogICAgICAgICAsIG1fc2hvdWxkUmVzdGFydFdoZW5UaW1l
ckZpcmVzKGZhbHNlKQpAQCAtMTk4LDcgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZnVu
Y3Rpb24oKTsKICAgICB9CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVuY3Rpb247
CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOwogCiAgICAgU2Vjb25kcyBtX2RlbGF5
OwogICAgIGJvb2wgbV9zaG91bGRSZXN0YXJ0V2hlblRpbWVyRmlyZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuaAppbmRleCA4NDQ2ODFlNjhlNmEwODIwMmQy
MTMxZTZlYTMyMmEzNWMzZDYyNzYwLi4yNjFiN2JiNGVjNWVhNDhmNjZlMDFmM2UxNTc0YmZjM2Fk
MDczZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XZWJHTFN0YXRlVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dlYkdMU3RhdGVUcmFja2VyLmgK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2ViR0xTdGF0ZVRy
YWNrZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHVzaW5n
IFN0YXRlQ2hhbmdlSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChib29sIGlzVXNpbmdXZWJH
TCk+OworICAgIHVzaW5nIFN0YXRlQ2hhbmdlSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoYm9vbCBp
c1VzaW5nV2ViR0wpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBXZWJHTFN0YXRlVHJh
Y2tlcihTdGF0ZUNoYW5nZUhhbmRsZXImJik7CiAKICAgICBlbnVtIFdlYkdMQ29udGV4dENvdW50
ZXJUeXBlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5kZXggYWVhMjE2NDY1NTU5ZDhjZWU1
NjAxOTExZmZlNDRhZjg2MDIyNzdiYS4uNDRhNjY5NDdkZTUxZGY2NzY1MTIxZjA5MjYxNmE4ZDhi
YzU3MDkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9TYW1wbGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
QXVkaW9TYW1wbGVEYXRhU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZSwKICNlbmRpZgogICAgIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gY3JlYXRlKHNpemVfdCwgV1RGOjpMb2dnZXJIZWxwZXIm
LCBzaXplX3Qgd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQgPSAyKTsKKyAgICBzdGF0aWMgUmVmPEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZT4gY3JlYXRlKHNpemVfdCwgTG9nZ2VySGVscGVyJiwgc2l6ZV90
IHdhaXRUb1N0YXJ0Rm9yUHVzaENvdW50ID0gMik7CiAKICAgICB+QXVkaW9TYW1wbGVEYXRhU291
cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCmluZGV4IDMwZGViMmU0Yzc0MWRmNTQ4OGIzOGY1
ZWQ1OWVlYmU1YTAyODliZWMuLmU4MTk3MDc1MDMzYTIyMWVjM2ZmNDgzY2IyNjQ3OTIyMTcwMTYy
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1
ZGlvQnVmZmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgV2ViQXVk
aW9CdWZmZXJMaXN0OjpyZXNldCgpCiAgICAgbWVtY3B5KG1fbGlzdC5nZXQoKSwgbV9jYW5vbmlj
YWxMaXN0LmdldCgpLCBtX2xpc3RCdWZmZXJTaXplKTsKIH0KIAotV1RGOjpJdGVyYXRvclJhbmdl
PEF1ZGlvQnVmZmVyKj4gV2ViQXVkaW9CdWZmZXJMaXN0OjpidWZmZXJzKCkgY29uc3QKK0l0ZXJh
dG9yUmFuZ2U8QXVkaW9CdWZmZXIqPiBXZWJBdWRpb0J1ZmZlckxpc3Q6OmJ1ZmZlcnMoKSBjb25z
dAogewogICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKCZtX2xpc3QtPm1CdWZmZXJz
WzBdLCAmbV9saXN0LT5tQnVmZmVyc1ttX2xpc3QtPm1OdW1iZXJCdWZmZXJzXSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZl
ckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oCmluZGV4IDA3MWViYmM4ZTk3MDQ1ZGFkMDBhOWU3M2Y1ZDM1OTQ2OTI5MzI3OWEu
LmQyNDQ4MTU1MzNiYTkwZGU5MjVjYTJmYmUzZWQzNTAwYWE4NGVkYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlz
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBidWZmZXJDb3VudCgp
IGNvbnN0OwogICAgIHVpbnQzMl90IGNoYW5uZWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hh
bm5lbENvdW50OyB9CiAgICAgQXVkaW9CdWZmZXIqIGJ1ZmZlcih1aW50MzJfdCBpbmRleCkgY29u
c3Q7Ci0gICAgV1RGOjpJdGVyYXRvclJhbmdlPEF1ZGlvQnVmZmVyKj4gYnVmZmVycygpIGNvbnN0
OworICAgIEl0ZXJhdG9yUmFuZ2U8QXVkaW9CdWZmZXIqPiBidWZmZXJzKCkgY29uc3Q7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZERlc2NyaXB0aW9uKGNvbnN0
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IDVmZGE0YWY1ZjM1M2Y4
OTIzOGRlZmZiMDBmNzQ4ZWFhMjdhZmMwMzAuLjI0OGYwYzA0ZTlhYjczNzNjYjI4ZTY3YzM4ZTQ5
ZWNlZGVlNjUzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAK
QEAgLTIxMCw3ICsyMTAsNyBAQCBnYm9vbGVhbiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpo
YW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBHU1RfSU5GT19P
QkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlN0YXRlIGNoYW5nZWQgKG9sZDogJXMsIG5ldzogJXMs
IHBlbmRpbmc6ICVzKSIsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25h
bWUob2xkU3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShuZXdTdGF0ZSksIGdzdF9l
bGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKIAotICAgICAgICAgICAgV1RGOjpTdHJp
bmcgZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShtX3BpcGVsaW5lLmdl
dCgpKSwgJ18nLAorICAgICAgICAgICAgU3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0cmluZyhH
U1RfT0JKRUNUX05BTUUobV9waXBlbGluZS5nZXQoKSksICdfJywKICAgICAgICAgICAgICAgICBn
c3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShvbGRTdGF0ZSksICdfJywgZ3N0X2VsZW1lbnRfc3Rh
dGVfZ2V0X25hbWUobmV3U3RhdGUpKTsKIAogICAgICAgICAgICAgR1NUX0RFQlVHX0JJTl9UT19E
T1RfRklMRV9XSVRIX1RTKEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdldCgpKSwgR1NUX0RFQlVH
X0dSQVBIX1NIT1dfQUxMLCBkb3RGaWxlTmFtZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggZWJiMWVlMzNmOTNlMDNmMjE5ODUxYmNl
ZjllYjg3Y2NlNGY3ZmIyMi4uYmVhZDIwMmZmMzJlYjYzMzk1MDEwNDBjOGQyZDk5MjQ4OGZlMTRh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTIzMCw3ICsy
MzAsNyBAQCB2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG5ld1N0
YXRlKSwKICAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5n
KSk7CiAKLSAgICAgICAgICAgIFdURjo6U3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0cmluZyhH
U1RfT0JKRUNUX05BTUUobV9waXBlbGluZS5nZXQoKSksICdfJywKKyAgICAgICAgICAgIFN0cmlu
ZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoR1NUX09CSkVDVF9OQU1FKG1fcGlwZWxpbmUuZ2V0
KCkpLCAnXycsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUob2xk
U3RhdGUpLCAnXycsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUo
bmV3U3RhdGUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oCmluZGV4IDA3MjBjZTQ3MmViMDg3
ZWJlZmUzZTE2OGNjZWZlNjI4Zjk3MGVlOGMuLjY3ZDA3NDBjYWQ2ODQ4MGM0YWIzMzg3ZmUwZDY5
Y2FjZGY2MjNiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmgKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMgOiBw
dWJsaWMgQXVkaW9IYXJkd2FyZUxpc3RlbmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXVkaW9I
YXJkd2FyZUxpc3RlbmVyTWFjPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdURjo6UmVmPEF1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYz4gY3JlYXRlKENsaWVudCYpOworICAgIHN0YXRpYyBSZWY8QXVk
aW9IYXJkd2FyZUxpc3RlbmVyTWFjPiBjcmVhdGUoQ2xpZW50Jik7CiAKIHByaXZhdGU6CiAgICAg
QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjKENsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaAppbmRleCBlMWM0NDgwNzFiMjg5ODY0YTVkODQxZGRk
OThkMmQzZDE5MWIwMmNiLi4wMWUxOGM1YzBmMzE1YjM5OWMxYzE0MWRkOGJjN2RlNzdjNDA3MWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaApAQCAt
MzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJ1bkxvb3BPYnNlcnZlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkICgp
PiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjazsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQgKCk+
IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOwogCiAgICAgUnVuTG9vcE9ic2VydmVyKENGSW5kZXgg
b3JkZXIsIFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgIDogbV9v
cmRlcihvcmRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCmluZGV4IDNiNjc0N2Zm
ZWExZDM3MWY4NTA1Zjk3NGIzMWFmOWZiOGJhODMzYTYuLmRmYTRhZWM1N2QwZDdjOTFlMjFlMGRk
ZDkxMGM3YjQzYjY3ZDQ0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApAQCAt
NTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtZWRpYUVuZ2lu
ZUNoYW5nZWQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYkNvcmU6OkV2ZW50JikgZmluYWw7Ci0gICAg
dm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9tU3RyaW5nJik7CisgICAgdm9p
ZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChQbGF5YmFja1Nlc3Npb25Nb2RlbENs
aWVudCYpOwpAQCAtMTA4LDggKzEwOCw4IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQg
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQoKTsKIAogICAgIHZvaWQgcHJvZ3Jlc3NF
dmVudFRpbWVyRmlyZWQoKTsKLSAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFdURjo6QXRvbVN0cmlu
Zz4mIG9ic2VydmVkRXZlbnROYW1lcygpOwotICAgIGNvbnN0IFdURjo6QXRvbVN0cmluZyYgZXZl
bnROYW1lQWxsKCk7CisgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgb2JzZXJ2
ZWRFdmVudE5hbWVzKCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAK
ICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVsZW1lbnQ7CiAgICAgYm9vbCBt
X2lzTGlzdGVuaW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIuaAppbmRleCBhMDk2ZTA2YTgxOWQ5NzAxZTRkNzY0
NjMyZTQ3NjA1NjgzZDIxNmIzLi5iZWExNTgxZDNiMjdhMGRkM2Y2ZWJmMTc5ZmQ0NjhjNjViOTI0
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Qb3dlclNvdXJj
ZU5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUG93ZXJTb3Vy
Y2VOb3RpZmllci5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFBvd2VyU291cmNlTm90aWZpZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UG93ZXJTb3VyY2VO
b3RpZmllcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHVz
aW5nIFBvd2VyU291cmNlTm90aWZpZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChib29s
IGhhc0FDKT47CisgICAgdXNpbmcgUG93ZXJTb3VyY2VOb3RpZmllckNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChib29sIGhhc0FDKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUG93ZXJT
b3VyY2VOb3RpZmllcihQb3dlclNvdXJjZU5vdGlmaWVyQ2FsbGJhY2smJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflBvd2VyU291cmNlTm90aWZpZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5oCmluZGV4IDQyMDc1YzNkMmIxM2RiNzNiY2VhNjVj
NTAzMDUxYzM4ZmJjZGEzNTIuLjUyNjc3ZjUwZTMzNDM4MTlmNGUyNTVmOTFlYjIyZjY4NjU2OTgy
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3RlbUJhdHRl
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0ZXJ5LmgK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1faGFzQmF0dGVyeTsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFzQUM7Ci0gICAg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fY29uZmlndXJhdGlvbkNoYW5nZWRDYWxsYmFjazsKKyAg
ICBGdW5jdGlvbjx2b2lkKCk+IG1fY29uZmlndXJhdGlvbkNoYW5nZWRDYWxsYmFjazsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IDJjNTFkODNiMWI4NzU1MWFj
ZWIwYzM0MjMwOWFkY2ZkNTg5MTMwNTQuLmQ5MjVkMDVmYTFkYzBhMGNkYWZlYjdjNjZiMTdjZjMw
ODk0OWNmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtNTYsMTIgKzU2
LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRWxlbWVudChI
VE1MVmlkZW9FbGVtZW50Kik7CiAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV92aWRlb0VsZW1lbnQuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3Jt
TGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsg
fSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViQ29y
ZTo6RXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBX
VEY6OkF0b21TdHJpbmcmKTsKKyAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBBdG9t
U3RyaW5nJik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6RXZlbnRM
aXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
Q2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CkBAIC04OCw4ICs4
OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgb3ZlcnJpZGU7CiAKLSAg
ICBzdGF0aWMgY29uc3QgVmVjdG9yPFdURjo6QXRvbVN0cmluZz4mIG9ic2VydmVkRXZlbnROYW1l
cygpOwotICAgIGNvbnN0IFdURjo6QXRvbVN0cmluZyYgZXZlbnROYW1lQWxsKCk7CisgICAgc3Rh
dGljIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgb2JzZXJ2ZWRFdmVudE5hbWVzKCk7CisgICAg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAKICAgICBSZWZQdHI8SFRNTFZpZGVv
RWxlbWVudD4gbV92aWRlb0VsZW1lbnQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAwMjY5ZmU1N2ViMWMzMWJmMTg2M2Vh
YTI3ZTA1ZmE3NDVlZGUwNTc4Li5mYmMyODNmYmMzMzY5YmY4MjdlMzE2OTk0YzRjOTRlMDYzNjNj
YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckNsaWVudCgpIHsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdmly
dHVhbCB2b2lkIHNldExvZ2dlcihXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqKSB7IH0KICNlbmRpZgog
CiAgICAgZW51bSBjbGFzcyBJbXBsZW1lbnRhdGlvblR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24u
aAppbmRleCAxODU3YWI2MTU3NTYyZGQwZDFlZDI3ZDhkYzUxNjViZTY0MWYxYjJjLi4zN2NkMDdj
N2JmMmRjNzVlNDFmZDVjNmM3ZGVjZjQzZTEwMzllMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24u
aApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWVzc2FnZVR5cGUgPSBDRE1N
ZXNzYWdlVHlwZTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRMb2dnZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNldExvZ2dlcihMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCmluZGV4IDRkNWU3ZjczMTQ5MDNmOGYwYWJhOWNlNmJkZGEwZmUyZGUzNDEzNzUu
LjZkMTdhY2VlMTU0MGVmMDc2NWViZGM3NzBhNzMyZDM4MGIwZWEzNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkNETVByaXZh
dGUoKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZpcnR1YWwgdm9pZCBzZXRM
b2dnZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBz
ZXRMb2dnZXIoTG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfTsKICNlbmRpZgogCiAgICAgZW51bSBj
bGFzcyBMb2NhbFN0b3JhZ2VBY2Nlc3MgOiBib29sIHsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgICAgICBBbGxvd2VkLAogICAgIH07CiAKLSAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1
cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uPik+OworICAgIHVzaW5nIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25D
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uPik+OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRD
b25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1
cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFj
ayYmKTsKIAogICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRh
VHlwZXMoKSBjb25zdCA9IDA7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0
ZDo6b3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gZ2V0U3VwcG9ydGVkQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjYW5kaWRhdGVDb25maWd1
cmF0aW9uLCBDRE1SZXN0cmljdGlvbnMmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MpOwogICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IGdldFN1cHBvcnRlZENhcGFiaWxp
dGllc0ZvckF1ZGlvVmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlLCBjb25zdCBWZWN0b3I8Q0RNTWVk
aWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJik7CiAK
LSAgICB1c2luZyBDb25zZW50U3RhdHVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ29u
c2VudFN0YXR1cywgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBDRE1SZXN0cmljdGlvbnMm
Jik+OworICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ29u
c2VudFN0YXR1cywgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBDRE1SZXN0cmljdGlvbnMm
Jik+OwogICAgIHZvaWQgZ2V0Q29uc2VudFN0YXR1cyhDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiYgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCBDRE1SZXN0cmljdGlvbnMmJiwgTG9jYWxTdG9y
YWdlQWNjZXNzLCBDb25zZW50U3RhdHVzQ2FsbGJhY2smJik7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5kZXggZmM3
YTMxYTJhMTY5NDcyMTcxMTE2Nzk2YmU5NDM2YzA2MzFhNTZjOS4uZjIxOGY5NzkwNGZiYmE0OWYx
ZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wg
S2V5U3RvcmU6OmNvbnRhaW5zS2V5SUQoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9rZXlzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmUHRyPEtleUhhbmRs
ZT4mIHN0b3JlZEtleSkgewogICAgICAgICByZXR1cm4gKnN0b3JlZEtleSA9PSBrZXlJRDsKLSAg
ICB9KSAhPSBXVEY6Om5vdEZvdW5kOworICAgIH0pICE9IG5vdEZvdW5kOwogfQogCiB2b2lkIEtl
eVN0b3JlOjptZXJnZShjb25zdCBLZXlTdG9yZSYgb3RoZXIpCkBAIC0xNTQsNyArMTU0LDcgQEAg
Ym9vbCBLZXlTdG9yZTo6YWRkKFJlZlB0cjxLZXlIYW5kbGU+JiYga2V5KQogICAgIH0pOwogCiAg
ICAgYWRkU2Vzc2lvblJlZmVyZW5jZVRvKGtleSk7Ci0gICAgaWYgKGtleVdpdGhNYXRjaGluZ0tl
eUlESW5kZXggIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChrZXlXaXRoTWF0Y2hpbmdLZXlJ
REluZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIGF1dG8mIGtleVdpdGhNYXRjaGluZ0tleUlE
ID0gbV9rZXlzW2tleVdpdGhNYXRjaGluZ0tleUlESW5kZXhdOwogICAgICAgICBkaWRTdG9yZUNo
YW5nZSA9IGtleVdpdGhNYXRjaGluZ0tleUlEICE9IGtleTsKICAgICAgICAgaWYgKGRpZFN0b3Jl
Q2hhbmdlKQpAQCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgS2V5U3RvcmU6OnVucmVmKGNvbnN0IFJl
ZlB0cjxLZXlIYW5kbGU+JiBrZXkpCiAgICAgc2l6ZV90IGtleVdpdGhNYXRjaGluZ0tleUlESW5k
ZXggPSBtX2tleXMuZmluZChrZXkpOwogICAgIExPRyhFTUUsICJFTUUgLSBDbGVhcktleSAtIHJl
cXVlc3RlZCB0byB1bnJlZiBrZXkgd2l0aCBJRCAlcyBhbmQgJWQgc2Vzc2lvbiByZWZlcmVuY2Vz
Iiwga2V5LT5pZEFzU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIGtleS0+bnVtU2Vzc2lvblJlZmVy
ZW5jZXMoKSk7CiAKLSAgICBpZiAoa2V5V2l0aE1hdGNoaW5nS2V5SURJbmRleCAhPSBXVEY6Om5v
dEZvdW5kKSB7CisgICAgaWYgKGtleVdpdGhNYXRjaGluZ0tleUlESW5kZXggIT0gbm90Rm91bmQp
IHsKICAgICAgICAgYXV0byYga2V5V2l0aE1hdGNoaW5nS2V5SUQgPSBtX2tleXNba2V5V2l0aE1h
dGNoaW5nS2V5SURJbmRleF07CiAgICAgICAgIHJlbW92ZVNlc3Npb25SZWZlcmVuY2VGcm9tKGtl
eVdpdGhNYXRjaGluZ0tleUlEKTsKICAgICAgICAgaWYgKCFrZXlXaXRoTWF0Y2hpbmdLZXlJRC0+
aGFzUmVmZXJlbmNlcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCmluZGV4IDY2YTAxMWVkNGE4YWY4ZDE4
OGI2NzhlMjgxOTlkM2VkMTdkNmJjNjUuLmM2NWZkZGQ5N2EwMGNjYTBiZDE4OTI1NzU2ZTMxMDFk
ODIxMTcxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVJlc3RyaWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0cnVjdCBDRE1SZXN0cmljdGlvbnMgewogICAgIGJvb2wgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyRGVuaWVkIHsgZmFsc2UgfTsKICAgICBib29sIHBlcnNpc3RlbnRTdGF0ZURlbmll
ZCB7IGZhbHNlIH07Ci0gICAgSGFzaFNldDxDRE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRIYXNoPENE
TVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+
IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICBIYXNoU2V0PENETVNlc3Npb25UeXBlLCBJbnRIYXNo
PENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlw
ZT4+IGRlbmllZFNlc3Npb25UeXBlczsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiAg
ICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTU4LDcgKzU4LDcgQEAg
c3RydWN0IENETVJlc3RyaWN0aW9ucyB7CiAgICAgICAgIGlmICghcGVyc2lzdGVudFN0YXRlRGVu
aWVkKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBzdGQ6Om9w
dGlvbmFsPEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUsIFdURjo6SW50SGFzaDxDRE1TZXNzaW9uVHlw
ZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+Pj4gZGVuaWVkU2Vz
c2lvblR5cGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUs
IEludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNl
c3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKICAgICAgICAgZGVjb2RlciA+PiBkZW5p
ZWRTZXNzaW9uVHlwZXM7CiAgICAgICAgIGlmICghZGVuaWVkU2Vzc2lvblR5cGVzKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwCmluZGV4IGZjMzk2MGYzOWY0NDZlMzU0
MjVmMTQ0YWY4NzVhNWY5NGZiNjNjN2IuLmFhYzNlYzJkY2E0OGM4MzVkMDMwYTQwOWY3MjY5NjUx
MzQwMTg3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2Ft
ZXBhZENvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9H
YW1lcGFkQ29uc3RhbnRzLmNwcApAQCAtMzcsNyArMzcsNyBAQCBjb25zdCBHYW1lcGFkQnV0dG9u
Um9sZSBtYXhpbXVtR2FtZXBhZEJ1dHRvbiA9IEdhbWVwYWRCdXR0b25Sb2xlOjpDZW50ZXJDbHVz
dGVyQwogY29uc3Qgc2l6ZV90IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhvdXRI
b21lQnV0dG9uID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhpbXVtR2FtZXBhZEJ1dHRvbik7CiBj
b25zdCBzaXplX3QgbnVtYmVyT2ZTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aEhvbWVCdXR0b24g
PSBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRob3V0SG9tZUJ1dHRvbiArIDE7CiAK
LWNvbnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKK2NvbnN0
IFN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gc3RhbmRhcmRHYW1lcGFkTWFwcGluZyA9ICJzdGFuZGFyZCI7
CiAgICAgcmV0dXJuIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmc7CkBAIC00NSw3ICs0NSw3IEBAIGNv
bnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKIAogI2lmIEVO
QUJMRShXRUJYUikKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItZ2Ft
ZXBhZHMtbW9kdWxlLyNkb20tZ2FtZXBhZG1hcHBpbmd0eXBlLXhyLXN0YW5kYXJkCi1jb25zdCBX
VEY6OlN0cmluZyYgeHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKK2NvbnN0IFN0cmlu
ZyYgeHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmcgPSAieHItc3RhbmRhcmQi
OwogICAgIHJldHVybiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCmluZGV4IDYzM2FmZDcz
ZDM3NDdmYWEzYTA4YWU3NTZjYjQzMjE1MTI1ZDI1NGYuLjI0YTZlOTlkOTk4YjQ1NWU3ZWQ4ZTc1
ZjY5MDNiMWMxYTA5MWJhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCkBAIC02MSw5ICs2MSw5IEBAIGV4dGVybiBjb25zdCBz
aXplX3QgbnVtYmVyT2ZTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0b247CiBl
eHRlcm4gY29uc3Qgc2l6ZV90IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhIb21l
QnV0dG9uOwogZXh0ZXJuIGNvbnN0IEdhbWVwYWRCdXR0b25Sb2xlIG1heGltdW1HYW1lcGFkQnV0
dG9uOwogCi1jb25zdCBXVEY6OlN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygp
OworY29uc3QgU3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CiAjaWYgRU5B
QkxFKFdFQlhSKQotY29uc3QgV1RGOjpTdHJpbmcmIHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0
cmluZygpOworY29uc3QgU3RyaW5nJiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsK
ICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKaW5kZXggYTRiMWEzY2I0YTk4MGMxNDRh
ZTZlYjIzOWI3NDQ0M2M2YjVjZGU3Yy4uNWQxY2QxNmNhNDkxMGUyNzNjODdjMDBlNmU3OWFlMDYy
ODVhOWZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9u
aXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0
b3JHTGliLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZp
bGVNb25pdG9yOjpGaWxlTW9uaXRvcihjb25zdCBTdHJpbmcmIHBhdGgsIFJlZjxXb3JrUXVldWU+
JiYgaGFuZGxlclF1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZUNoYW5nZVR5cGUpPiYmIG1v
ZGlmaWNhdGlvbkhhbmRsZXIpCitGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3IoY29uc3QgU3RyaW5n
JiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgRnVuY3Rpb248dm9pZChGaWxl
Q2hhbmdlVHlwZSk+JiYgbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICA6IG1faGFuZGxlclF1ZXVl
KFdURk1vdmUoaGFuZGxlclF1ZXVlKSkKICAgICAsIG1fbW9kaWZpY2F0aW9uSGFuZGxlcihXVEZN
b3ZlKG1vZGlmaWNhdGlvbkhhbmRsZXIpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDYwMjc3MzRlMTkzYjYyNTg3NDFlMGI3
MGRlYTQ1NThlMTJhNWRiY2IuLmM5MjZjNWQyM2YyMDZkZTYyYTk4NzMwMGY5ZWNmNjk5MmM3YjRm
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlv
bigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9CiAKLXZvaWQg
Qml0bWFwSW1hZ2U6OmRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3Zv
aWQgQml0bWFwSW1hZ2U6OmRlY29kZShGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFtX2RlY29kaW5nQ2FsbGJhY2tzKQogICAgICAgICBtX2RlY29kaW5nQ2FsbGJhY2tz
ID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDk2OTIwMjBkOTIzYWJi
MTg4ZWE4NDU1NmE2OWExMGZiZmQ2MzY1Y2YuLjllYzU0ZjYzYjNhYmNlOWQwM2VhNjYwZWZmMTVk
YTM5OTYyMzUyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oCkBAIC0yMjcsNyArMjI3LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKIH07CiAKLXRlbXBsYXRlPD4g
c3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiA6IFdURjo6U2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gewordGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gewogfTsKIAog
fQpAQCAtMjgxLDcgKzI4MSw3IEBAIHN0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaFRyYWl0
cyA6IEhhc2hUcmFpdHM8Rm9udENhc2NhZGVDYWNoZUtleT4gewogdXNpbmcgRm9udENhc2NhZGVD
YWNoZSA9IEhhc2hNYXA8Rm9udENhc2NhZGVDYWNoZUtleSwgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
YXNjYWRlQ2FjaGVFbnRyeT4sIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoLCBGb250Q2FzY2FkZUNh
Y2hlS2V5SGFzaFRyYWl0cz47CiAKIGNsYXNzIEZvbnRDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEZvbnRDYWNoZT4gewotICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPEZvbnRD
YWNoZSwgTWFpblRocmVhZEFjY2Vzc1RyYWl0cz47CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVz
dHJveWVkPEZvbnRDYWNoZSwgTWFpblRocmVhZEFjY2Vzc1RyYWl0cz47CiAKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShGb250Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCmlu
ZGV4IDdhYmMzYzA4ZmUyMTg4NmQyYWIyMTllZGI5M2EwMTBjZGJkZTUxZmYuLjM5YzYwY2Y5N2E1
ZjAzOTA5MDE5ZTQ2ZTUwOGNmYzg2ZWIwMzNmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUg
Ik9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAotdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZpYzsKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaHJlYWRHbG9iYWxHTENvbnRleHQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApp
bmRleCA1NmEzNzlmODNjMDNjOTAyMjk2ZDZmNTU2MWIzZTFjNmY5OGI2YTcxLi5jNzVkYTU2YTgz
NjE1NmNjMGQ1ZTVhN2RmMWJmYjBjNGIyYjI2MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtODEyLDcgKzgxMiw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZXBh
aW50UmVjdCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhp
Y3NMYXllciYgbGF5ZXIsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NMYXllciYp
PiYgdHJhdmVyc2FsRnVuYykKK3ZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3JhcGhpY3NM
YXllciYgbGF5ZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NMYXllciYpPiYgdHJhdmVy
c2FsRnVuYykKIHsKICAgICB0cmF2ZXJzYWxGdW5jKGxheWVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDIxOWY3NTMwY2Ri
YzE0MTQ5MTczMDllYjEzNjc4YTExOTZlYTM4Y2YuLmJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVm
YjI1MmJlMThiOTg5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKQEAgLTY0NCw3ICs2NDQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBhbmltYXRpb25FeHRlbnQoKSBjb25zdCB7IHJldHVy
biBtX2FuaW1hdGlvbkV4dGVudDsgfQogICAgIHZvaWQgc2V0QW5pbWF0aW9uRXh0ZW50KHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiBhbmltYXRpb25FeHRlbnQpIHsgbV9hbmltYXRpb25FeHRlbnQg
PSBhbmltYXRpb25FeHRlbnQ7IH0KIAotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlKEdyYXBoaWNz
TGF5ZXImLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXImKT4mKTsKKyAg
ICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGljc0xheWVyJiwgY29uc3QgRnVuY3Rpb248dm9p
ZChHcmFwaGljc0xheWVyJik+Jik7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBHcmFwaGljc0xheWVyKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKaW5k
ZXggNTAxOTlkZGZhNTZhNmNhMWU2ZDI2MmM5OGM0NzkxNTMyMTAwY2QxOS4uMzM2NTZhMTU2MTNk
ZjYzMjI2NWE5MzMyODgyYmQxMTFhNjgwZGY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBz
dHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50PiB7CiAgICAgICAgICwgYnVm
U2l6ZShvdGhlci5idWZTaXplKQogICAgIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxVLCBpbmxpbmVD
YXBhY2l0eT4mIGFycmF5LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGlibGVfdjxV
KCopW10sIFQoKilbXT4sIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgR0NHTFNwYW4o
VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXksIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0gbnVsbHB0
cikKICAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKICAgICAgICAgLCBidWZTaXplKGFycmF5
LnNpemUoKSkKICAgICB7IH0KQEAgLTEzOCw3ICsxMzgsNyBAQCBzdHJ1Y3QgR0NHTFNwYW48R0NH
THZvaWQ+IHsKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2YoVSkpCiAg
ICAgeyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pgot
ICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCisgICAg
R0NHTFNwYW4oVmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCiAgICAgICAgIDogZGF0
YShhcnJheS5kYXRhKCkpCiAgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBzaXplb2Yo
VSkpCiAgICAgeyB9CkBAIC0xNzcsNyArMTc3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IE4+CiBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+JikgLT4gR0NHTFNwYW48VCwgTj47CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLUdDR0xTcGFuKFdU
Rjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdDR0xTcGFuPFQ+OworR0NHTFNwYW4o
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdDR0xTcGFuPFQ+OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdDR0xTcGFuKFQqIGRhdGEsIHNpemVfdCBjb3Vu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgK
aW5kZXggNzM2NGNjY2EzMDFjYTg3ZWE3YzZmZTkxOTJlMmNmYmEyODNhNDFmZS4uYTFhMDhhZGMx
NzVkNDRiYWE0NDJlNDRhOTRhYTk2N2EwNGY1ZjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTg5LDkgKzg5LDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCi0gICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0gV1RG
OjpGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwotICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5j
ID0gV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsKLSAgICB1c2luZyBDcmVhdGVJ
bWFnZURlY29kZXJGdW5jID0gV1RGOjpGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pPjsKKyAgICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxi
b29sKE1lZGlhVHlwZSk+OworICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0gRnVuY3Rpb248
Ym9vbChjb25zdCBTdHJpbmcmKT47CisgICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9
IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3Ry
dWN0IEltYWdlRGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMg
c3VwcG9ydHNNZWRpYVR5cGU7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hhbmdlQ2FsbGJh
Y2soV1RGOjpGdW5jdGlvbjx2b2lkKEVuY29kZWREYXRhU3RhdHVzKT4mJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hhbmdlQ2FsbGJhY2soRnVuY3Rpb248dm9p
ZChFbmNvZGVkRGF0YVN0YXR1cyk+JiYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NpemVBdmFp
bGFibGUoKSBjb25zdCB7IHJldHVybiBlbmNvZGVkRGF0YVN0YXR1cygpID49IEVuY29kZWREYXRh
U3RhdHVzOjpTaXplQXZhaWxhYmxlOyB9CiAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0ID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAppbmRleCAxYzRkOTFjODI0MWY1
M2Q3YmY3N2Q4Nzk3YzlmNmMzMzg2ZTEyYzdlLi45OWZjMDRhZWQxMzQ2YzljNTNkODgzYTQ4NmQ3
MTI3NjgzYmNiZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dC5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3NpemUud2lkdGgoKTsgfQogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3NpemUuaGVpZ2h0KCk7IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gV1RGOjpDcmFz
aE9uT3ZlcmZsb3c+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBDcmFzaE9uT3ZlcmZsb3c+
CiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgVD4gYXJlYSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZS5h
cmVhPFQ+KCk7IH0KIAogICAgIHZvaWQgc2V0WChpbnQgeCkgeyBtX2xvY2F0aW9uLnNldFgoeCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAppbmRleCAwOTVm
MDMxNDRkZjk3MjY3ZjEwMjU1ZTI1Njc0ZWQ5NjYyZGRmZmY3Li41ZWY4NzZmOWYzODY5OTA3NTMz
Y2FiODcwMTQ0MGYyNjVhYzA2ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgSW50U2l6ZSBjb25zdHJhaW5lZEJldHdlZW4oY29uc3QgSW50U2l6ZSYgbWluLCBjb25z
dCBJbnRTaXplJiBtYXgpIGNvbnN0OwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBXVEY6
OkNyYXNoT25PdmVyZmxvdz4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IENyYXNoT25PdmVy
Zmxvdz4KICAgICBDaGVja2VkPHVuc2lnbmVkLCBUPiBhcmVhKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBDaGVja2VkPHVuc2lnbmVkLCBUPihhYnMobV93aWR0aCkpICogYWJzKG1faGVp
Z2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCA1NjVmMWNlYmRmMTE2OWMzNzkxM2Y5MmIwZmIzM2M4NjczZDAxZTU3Li5hNDM2
YTU1OGE3OTlhNjY2YTZlZjZhNGY1ZjM4MDk1NGQxNzA2NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC04MjUsNyArODI1LDcg
QEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVWaWRlb0Z1bGxz
Y3JlZW5MYXllcigpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciogbGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciogbGF5ZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBtX3ByaXZhdGUtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKGxheWVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC0xNjgwLDcgKzE2ODAsNyBAQCBBVlBsYXllciogTWVk
aWFQbGF5ZXI6Om9iakNBVkZvdW5kYXRpb25BVlBsYXllcigpIGNvbnN0CiAKICNlbmRpZgogCi1i
b29sIE1lZGlhUGxheWVyOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIHRhc2ssIGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK2Jvb2wgTWVkaWFQbGF5ZXI6OnBl
cmZvcm1UYXNrQXRNZWRpYVRpbWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2ssIGNvbnN0IE1lZGlh
VGltZSYgdGltZSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5wZXJmb3JtVGFza0F0TWVkaWFU
aW1lKFdURk1vdmUodGFzayksIHRpbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggZGI4NWEzM2Q4N2M1MmEzNzc5YzUyYTUwMjE5
YWE4YTI0MTI0Mzg4NS4uNWIxZTE3NDUxM2UwNmZhMDFkNTE5MGI1NWU1MDUzNTU1ZWZkNzYzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBA
IC0zMjUsNyArMzI1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKQogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3Jl
ZW5MYXllcigpOwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsK
KyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNj
cmVlbklubGluZUltYWdlKCk7CiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2
aXR5OwpAQCAtNzU0LDcgKzc1NCw3IEBAIHB1YmxpYzoKIAogY2xhc3MgUmVtb3RlTWVkaWFQbGF5
ZXJTdXBwb3J0IHsKIHB1YmxpYzoKLSAgICB1c2luZyBSZWdpc3RlclJlbW90ZVBsYXllckNhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhRW5naW5lUmVnaXN0cmFyLCBNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpPjsKKyAgICB1c2luZyBSZWdpc3RlclJlbW90
ZVBsYXllckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwgTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKT47CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdpc3RlclJl
bW90ZVBsYXllckNhbGxiYWNrJiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCmluZGV4IGRhZTk4Zjk1NGMzZWUwZjI1
NDA4M2I1N2U1ZDhhZjdmN2ZlNTQ3NGYuLjQwOGEwMWNmMzI5YjZjMjkzYWU4MWQ0YzI0ZjUwYmNk
NGNiOTJjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyRW51bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllckVudW1zLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ7
CiAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6UmVhZHlTdGF0ZT4gewotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB0b1N0cmluZyhjb25z
dCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlIHN0YXRlKQorICAgIHN0YXRp
YyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlT
dGF0ZSBzdGF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhzdGF0ZSk7CiAgICAgfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0cnVjdCBMb2dBcmd1bWVu
dDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlPiB7CiAKIHRlbXBsYXRlIDw+
CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0
YXRlPiB7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZSBzdGF0ZSkKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZSBzdGF0
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0
ZSk7CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU+IHsKIAogdGVtcGxhdGUgPD4KIHN0cnVj
dCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k+
IHsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5IHBvbGljeSkKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1BvbGljeSBw
b2xpY3kpCiAgICAgewogICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
cG9saWN5KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGM1MDNjNjRjN2Q0OTQ4YThmZGU0ZTk0YzYx
NzkzZTgxMWY5YjEyMDIuLmY1YTQwYWJjOGE3OWE2Y2UwNjRiNzAyY2RkMGM5YTlhYTY2M2RkMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkKICAgICB2aXJ0dWFsIFJldGFpblB0cjxQbGF0Zm9ybUxheWVy
PiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1M
YXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGlu
ZUltYWdlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZs
b2F0UmVjdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHko
TWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgKaW5kZXggN2YzYzgxODg2NTY5MTBiODRmYWE2MDY1YmQ2ZjMzMTU5MTYyOTQ0
Yi4uN2I5ODc2YWIxYzc4NThiNTRiODBkOTA4ZTZhODBlNTk2MjNmYmUyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0cnVjdCBQ
YXRoRWxlbWVudCB7CiAgICAgVHlwZSB0eXBlOwogfTsKIAotdXNpbmcgUGF0aEFwcGxpZXJGdW5j
dGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBQYXRoRWxlbWVudCYpPjsKK3VzaW5nIFBh
dGhBcHBsaWVyRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFBhdGhFbGVtZW50Jik+Owog
CiBjbGFzcyBQYXRoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEzNywxMyAr
MTM3LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGF0aCBwb2x5Z29uUGF0aEZyb21Qb2ludHMo
Y29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+Jik7CiAKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEZs
b2F0UG9pbnQmLCBXaW5kUnVsZSA9IFdpbmRSdWxlOjpOb25aZXJvKSBjb25zdDsKLSAgICBib29s
IHN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiBzdHJva2VTdHlsZUFwcGxpZXIpIGNvbnN0OworICAgIGJv
b2wgc3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiBzdHJva2VTdHlsZUFwcGxpZXIpIGNvbnN0OwogCiAgICAgLy8g
ZmFzdEJvdW5kaW5nUmVjdCgpIHNob3VsZCBlcXVhbCBvciBjb250YWluIGJvdW5kaW5nUmVjdCgp
OyBib3VuZGluZ1JlY3QoKQogICAgIC8vIHNob3VsZCBwZXJmZWN0bHkgYm91bmQgdGhlIHBvaW50
cyB3aXRoaW4gdGhlIHBhdGguCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBmYXN0Qm91bmRpbmdSZWN0KCkgY29uc3Q7Ci0g
ICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nUmVjdChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiBzdHJva2VTdHlsZUFwcGxpZXIgPSB7IH0pIGNvbnN0OworICAg
IEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ1JlY3QoY29uc3QgRnVuY3Rpb248dm9pZChHcmFwaGlj
c0NvbnRleHQmKT4mIHN0cm9rZVN0eWxlQXBwbGllciA9IHsgfSkgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBzaXplX3QgZWxlbWVudENvdW50KCkgY29uc3Q7CiAgICAgZmxvYXQgbGVuZ3Ro
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKaW5kZXggNjc4ODJjOTRjYTY5OWFjNGY2MmQ4YmY0MDE5NTYxNjQ5Y2Y2ZDY2OS4u
ZDczOGQ3MzlmNGE0ZTBmMjZiZjhlZTIxMTAyZmU2OTYwYmNmOTk1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaApAQCAtNTIsMTAgKzUy
LDEwIEBAIHVzaW5nIFBsYXRmb3JtTGF5ZXIgPSB2b2lkKjsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXVzaW5nIFBsYXRmb3JtTGF5ZXJDb250YWlu
ZXIgPSBXVEY6OlJldGFpblB0cjxQbGF0Zm9ybUxheWVyPjsKK3VzaW5nIFBsYXRmb3JtTGF5ZXJD
b250YWluZXIgPSBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj47CiAjZWxpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCiB1c2luZyBQbGF0Zm9ybUxheWVyQ29udGFpbmVyID0gc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtTGF5ZXI+OwogI2Vsc2UKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci11c2luZyBQbGF0
Zm9ybUxheWVyQ29udGFpbmVyID0gV1RGOjpSZWZQdHI8UGxhdGZvcm1MYXllcj47Cit1c2luZyBQ
bGF0Zm9ybUxheWVyQ29udGFpbmVyID0gUmVmUHRyPFBsYXRmb3JtTGF5ZXI+OwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVS
YW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJh
bmdlcy5oCmluZGV4IDRmOWQxNTM1YTc5MzdjZjE1NjRlNGE0YzgzOTQyZTAwZjY0NTAyNjIuLjc4
Zjk4NmU1NTA3ZjI4NWEyN2UzMmZkM2Q1M2JjM2UxZjE2Mjk1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCkBAIC02
OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIE1lZGlhVGltZSB0b3RhbER1cmF0aW9uKCkgY29u
c3Q7CiAKLSAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVGltZVJhbmdlcz4gZGVjb2RlKERlY29kZXIm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZp
ZGVvU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oCmluZGV4IGI3M2E1ODQ0MTY3MDFmOTAwNzEwOTk2OTg3ZmNhOTMwZDJhYWZlNDku
LmE2MTcwYjMyOGZjNDRhY2U2OTNkY2RiMzVlZTRkM2NlNjg3MzM4YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaApAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2lvU3VyZmFjZSkKICAgICAgICAg
ICAgIGVuY29kZXIgPDwgbV9pb1N1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBlbmNvZGVyIDw8IFdURjo6TWFjaFNlbmRSaWdodCgpOworICAgICAg
ICAgICAgZW5jb2RlciA8PCBNYWNoU2VuZFJpZ2h0KCk7CiAgICAgICAgIGVuY29kZXIgPDwgbV9y
b3RhdGlvbjsKICAgICAgICAgZW5jb2RlciA8PCBtX3RpbWU7CiAgICAgICAgIGVuY29kZXIgPDwg
bV92aWRlb0Zvcm1hdDsKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IG1faW1hZ2VCdWZmZXI7Ci0gICAgV1RGOjpNYWNoU2VuZFJpZ2h0
IG1fc2VuZFJpZ2h0OworICAgIE1hY2hTZW5kUmlnaHQgbV9zZW5kUmlnaHQ7CiAgICAgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gbV9yb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uOjpOb25lIH07CiAgICAgTWVkaWFUaW1lIG1fdGltZTsKICAgICB1aW50MzJfdCBtX3ZpZGVv
Rm9ybWF0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5oCmluZGV4IDBjOTc2Yjg3NTFiZDZlZmYwY2E3YWQyMjc4MjM2NjEyODhhODg5MDEuLjE0
ZmQ4M2VkZTFhMWJhY2YxNzdmMzMxZWNhZDFhNDMwMjkzZjYwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKQEAgLTYyLDExICs2MiwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3Qp
OwogCi0gICAgdXNpbmcgRHJhd0J1ZmZlckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKElt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYpPjsKLSAgICB1
c2luZyBEcmF3SW1hZ2VDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChJbWFnZUJ1ZmZlciYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYpPjsKLSAgICB1c2luZyBGaWxsUmVj
dENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJik+OwotICAgIHVzaW5nIEZpbGxSZWN0V2l0aEhvbGVDYWxsYmFjayA9IFdURjo6RnVuY3Rp
b248dm9pZChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYp
PjsKLSAgICB1c2luZyBEcmF3U2hhZG93Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jh
cGhpY3NDb250ZXh0Jik+OworICAgIHVzaW5nIERyYXdCdWZmZXJDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJik+
OworICAgIHVzaW5nIERyYXdJbWFnZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYpPjsKKyAgICB1c2luZyBGaWxs
UmVjdENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xv
ciYpPjsKKyAgICB1c2luZyBGaWxsUmVjdFdpdGhIb2xlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJik+OworICAg
IHVzaW5nIERyYXdTaGFkb3dDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+OwogCiAgICAgLy8gRHJhd0J1ZmZlckNhbGxiYWNrIGlzIGZvciBkcmF3aW5nIHNoYWRvdyB3
aXRob3V0IHRpbGluZy4KICAgICAvLyBEcmF3SW1hZ2VDYWxsYmFjayBhbmQgRmlsbFJlY3RDYWxs
YmFjayBpcyBmb3IgZHJhd2luZyBzaGFkb3cgd2l0aCB0aWxpbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmlu
ZGV4IGE5NGIxYzE5Mzg4NDkxYzBjOTA5NDk3M2FjM2FkYmQ5YTRiOTg0N2IuLjY4N2M3OGMyODFj
YTA0NTQwNDg1Y2NiYWUwMWQ4NGNkNjAzMzcyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC00NTMs
NyArNDUzLDcgQEAgc3RhdGljIFBsYXRmb3JtVGltZVJhbmdlcyByZW1vdmVTYW1wbGVzRnJvbVRy
YWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWEKICAgICBNZWRpYVRpbWUgZWFybGll
c3RTYW1wbGUgPSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgTWVkaWFU
aW1lIGxhdGVzdFNhbXBsZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKICAgICB1aW50NjRfdCBi
eXRlc1JlbW92ZWQgPSAwOwotICAgIGF1dG8gbG9nSWRlbnRpZmllciA9IFdURjo6TG9nZ2VyOjpM
b2dTaXRlSWRlbnRpZmllcihzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dDbGFzc05hbWUoKSwgbG9n
UHJlZml4LCBzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dJZGVudGlmaWVyKCkpOworICAgIGF1dG8g
bG9nSWRlbnRpZmllciA9IExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoc291cmNlQnVmZmVyUHJp
dmF0ZS0+bG9nQ2xhc3NOYW1lKCksIGxvZ1ByZWZpeCwgc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9n
SWRlbnRpZmllcigpKTsKICAgICBhdXRvJiBsb2dnZXIgPSBzb3VyY2VCdWZmZXJQcml2YXRlLT5s
b2dnZXIoKTsKICAgICBhdXRvIHdpbGxMb2cgPSBsb2dnZXIud2lsbExvZyhzb3VyY2VCdWZmZXJQ
cml2YXRlLT5sb2dDaGFubmVsKCksIFdURkxvZ0xldmVsOjpEZWJ1Zyk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5o
CmluZGV4IGFkM2MxYmI3OWFlZGNhYWUzZTc5N2ZkOGZiMmQ2YWFhODZlZDMzY2EuLmRmN2I3OGEx
NTRmODI5MzljMTY1ZDUzMWFmZWVkYWMwYmVhYjgxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdl
UHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3Jt
SW1hZ2VQdHIpID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFt
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
RmxvYXRSZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklu
bGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAppbmRleCA1MmE3YjA4NjZjZDA3MGQyZGRlODg0ZTQ3
MjhlYjM0ZDg1M2E4NzM1Li40ZTYyMjM5M2MyYWRkMWZlOGQzOWZmYmY0MDRmNTdkMzg5M2JlNjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCkBA
IC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOyAvLyBFbXB0eSBhbmQgZGVsZXRlZCB2
YWx1ZXMgaGF2ZSBsZW5ndGhzIHRoYXQgYXJlIG5vdCBlcXVhbCB0byBhbnkgdmFsaWQgbGVuZ3Ro
LgogICAgIH07CiAKLSAgICBzdHJ1Y3QgU21hbGxTdHJpbmdLZXlIYXNoVHJhaXRzIDogV1RGOjpT
aW1wbGVDbGFzc0hhc2hUcmFpdHM8U21hbGxTdHJpbmdLZXk+IHsKKyAgICBzdHJ1Y3QgU21hbGxT
dHJpbmdLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNtYWxsU3RyaW5nS2V5
PiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0g
dHJ1ZTsKICAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNtYWxsU3RyaW5n
S2V5JiBrZXkpIHsgcmV0dXJuIGtleS5pc0hhc2hUYWJsZUVtcHR5VmFsdWUoKTsgfQogICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1UYWJsZVNpemUgPSAxNjsKQEAgLTIyNSw3ICsyMjUs
NyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdpZHRoQ2FjaGU6OlNtYWxsU3RyaW5n
S2V5JiBhLCBjb25zdCBXaWR0aENhY2hlOjpTbQogewogICAgIGlmIChhLmxlbmd0aCgpICE9IGIu
bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gV1RGOjplcXVhbChh
LmNoYXJhY3RlcnMoKSwgYi5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOworICAgIHJldHVybiBl
cXVhbChhLmNoYXJhY3RlcnMoKSwgYi5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBlY2I5ZjZjMDkz
NGM2MzZkNmNjMTU1NjRlODVkNmJmNWQ4MzRhMjhiLi4wYTYxZWZjMDk2YzFjZmVjYTk5OTNmOWVj
YWYxYWM3NzJiODVhNjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZvcm1hdChH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlKTsK
IAogcHJpdmF0ZToKLSAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5n
Jik7CisgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsKICAgICBTdHJp
bmcgZ2V0RXh0ZW5zaW9ucygpOwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVBdmFpbGFi
bGVFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5oCmluZGV4IDM4MzU4NWNj
MTliMzlkMzFhZDRjZjZkNjc1YmIwMTkyOTIxY2I5MjYuLjMwNDc3MDk3NTM0NDgxMjRlOGYyZGM2
OWUyYTAyM2U5NzgyOWNmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5oCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHZhbHVlIHVwb24gZGVzdHJ1Y3Rpb24s
IG1ha2luZyBpdCBhbiBhbHRlcm5hdGl2ZSB0byBjaGVja2luZywgY2xlYXJpbmcsIGFuZCByZXNl
dHRpbmcgZWFjaCBmbGFnCiAvLyBhdCBhbGwgb2YgYSBibG9jaydzIGV4aXQgcG9pbnRzLgogLy8K
LS8vIEJhc2VkIG9uIFdURjo6U2V0Rm9yU2NvcGU8PgorLy8gQmFzZWQgb24gU2V0Rm9yU2NvcGU8
PgogCiBjbGFzcyBUZW1wb3JhcnlBTkdMRVNldHRpbmcgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRlbXBvcmFyeUFOR0xFU2V0dGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oCmluZGV4IDE0OTc0MzkwZjQwYjAzYTBjYjZlNTU5YzllNmMwZmUwOThhMDQxOTEu
LmJjOTNmNmY2YTdiZGQwMWVmYmY1NWI2MmJkYjZhNGU2NmVmOTEyYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKIAogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotICAgIHZvaWQgc2V0TG9nZ2VyKFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9p
ZCogbG9nSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBzZXRMb2dnZXIoTG9nZ2VyJiwgY29u
c3Qgdm9pZCogbG9nSWRlbnRpZmllcikgZmluYWw7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxBdG9t
U3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04Nywx
MSArODcsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgIFdURjo6TG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5n
ZXQoKTsgfTsKKyAgICBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2Vy
LmdldCgpOyB9OwogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCB7IHJldHVybiAiQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nIjsgfQogCi0gICAgUmVmUHRy
PFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKICAg
ICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDU5
N2VmYTI2ODQ5Yjc0NGRiNzQzZDM1MmNkMWMwNmYzNDEzNzZmZjkuLmM5OThkOWY2NDcwZTgwZjhk
NGNkZDVlMTI2NmYwNWIxMmJkNjEwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC02NTcsNyArNjU3LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQoYm9vbCBmaW5p
c2hlZCkKIAogICAgIG1fc2Vla2luZyA9IGZhbHNlOwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+IHBlbmRpbmdTZWVrOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gcGVuZGluZ1NlZWs7CiAgICAg
c3RkOjpzd2FwKHBlbmRpbmdTZWVrLCBtX3BlbmRpbmdTZWVrKTsKIAogICAgIGlmIChwZW5kaW5n
U2VlaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oCmluZGV4IDcxM2Y1YzNjMzNjOGI0MDdhMTQyMTA3MzMwMDVhZDA0ZTFhYWE5ZWMu
LjYyNjdiODMzMjEyOTliMTNlYTdlZDJhNDA1ZTRjYmI4NWU0NDg4M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTExNiw3
ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIE5vdGlm
aWNhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCisgICAgICAgIE5vdGlm
aWNhdGlvbihGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgICAgICA6IG1fdHlw
ZShGdW5jdGlvblR5cGUpCiAgICAgICAgICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCkBAIC0xMjcsMTMgKzEyNywxMyBA
QCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIHsgcmV0dXJuIG1fdHlwZSAhPSBOb25l
OyB9CiAgICAgICAgIE1lZGlhVGltZSB0aW1lKCkgeyByZXR1cm4gbV90aW1lOyB9CiAgICAgICAg
IGJvb2wgZmluaXNoZWQoKSB7IHJldHVybiBtX2ZpbmlzaGVkOyB9Ci0gICAgICAgIFdURjo6RnVu
Y3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQorICAgICAg
ICBGdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CiAg
ICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIFR5cGUgbV90eXBlOwogICAgICAgICBNZWRp
YVRpbWUgbV90aW1lOwogICAgICAgICBib29sIG1fZmluaXNoZWQ7Ci0gICAgICAgIFdURjo6RnVu
Y3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICAgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1
bmN0aW9uOwogICAgIH07CiAKICAgICB2b2lkIHNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlv
bihOb3RpZmljYXRpb24mJik7CkBAIC0zMzIsNyArMzMyLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0
ZToKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4gbV9wZW5kaW5nU2VlazsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fcGVuZGluZ1NlZWs7CiAK
ICAgICBtdXRhYmxlIExvY2sgbV9xdWV1ZWROb3RpZmljYXRpb25zTG9jazsKICAgICBEZXF1ZTxO
b3RpZmljYXRpb24+IG1fcXVldWVkTm90aWZpY2F0aW9ucyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
cXVldWVkTm90aWZpY2F0aW9uc0xvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggYmM2
NTg3ZTJjODk2NGY3MWU1ZjRhNjUzYjBiYmNiMmQ1NjU0MzFiYy4uMTU5YjkwY2RiNDhmN2ZlNDRi
YjQ5YmUyZWMxYzFjMmY0MzI4NjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC03Myw3
ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQygpID0gZGVmYXVsdDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
IHZvaWQgc2V0TG9nZ2VyKFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcik7
CisgICAgdm9pZCBzZXRMb2dnZXIoTG9nZ2VyJiwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcik7
CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUGVyc2lzdGFibGVTdGF0ZSgpOwpA
QCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVVbmV4cGVjdGVkUmVx
dWVzdHMoVmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7CiAKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBXVEY6OkxvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH07CisgICAgTG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25z
dCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfTsKICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDIjsgfQogI2VuZGlmCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+
PiBtX3Nlc3Npb25zOwogICAgIEhhc2hTZXQ8UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+
PiBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0czsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAg
ICBSZWZQdHI8V1RGOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZlB0cjxMb2dnZXI+IG1fbG9n
Z2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKICNlbmRp
ZgogfTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCk7CiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIpOworICAgIHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KQEAgLTE5
Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3RhdHVzPiBw
cm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxheUlEKEFWQ29udGVudEtleVJlcXVlc3QgKiwgc3RkOjpv
cHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4pIGNvbnN0OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECi0gICAgV1RGOjpMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
Z2VyLmdldCgpOyB9OworICAgIExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4gbV9s
b2dnZXIuZ2V0KCk7IH07CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgp
IGNvbnN0IHsgcmV0dXJuICJDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMiOyB9CiAjZW5kaWYKQEAgLTIyNiw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2sgbV9yZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrOwogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRyPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAg
ICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZp
ZXIgeyBudWxscHRyIH07CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLmgKaW5kZXggYTI4ZDRjNDMwMWU2NzI1MDkyOThmNTNjZTdjN2QyOTRj
ZjE3OTM5Zi4uMDMzNGQ2MjNiMmE3NjA1YzliZTEyMjEzYjVhYmRiYmFjMmIwM2YxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9taW1lVHlwZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFbmNvZGVkRGF0
YVN0YXR1c0NoYW5nZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1
cyk+JiYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5jb2RlZERhdGFTdGF0
dXNDaGFuZ2VDYWxsYmFjayhGdW5jdGlvbjx2b2lkKEVuY29kZWREYXRhU3RhdHVzKT4mJikgZmlu
YWw7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdCBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwpAQCAtMTEzLDcg
KzExMyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdlYkNvcmVTaGFyZWRCdWZmZXJSZXNv
dXJjZUxvYWRlckRlbGVnYXRlPiBtX2xvYWRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VS
b3RhdGlvblNlc3Npb25WVD4gbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbjsKICAgICBSZWY8V2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNzaW9uOwotICAgIFdURjo6
RnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+IG1fZW5jb2RlZERhdGFTdGF0dXNDaGFu
Z2VkQ2FsbGJhY2s7CisgICAgRnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+IG1fZW5j
b2RlZERhdGFTdGF0dXNDaGFuZ2VkQ2FsbGJhY2s7CiAKICAgICBTYW1wbGVNYXAgbV9zYW1wbGVE
YXRhOwogICAgIERlY29kZU9yZGVyU2FtcGxlTWFwOjppdGVyYXRvciBtX2N1cnNvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggNTNmMDJjMTgzMDJmZmQzYWNkZmRjNDNjOTVmMGIyM2Ix
NGI1ZDc3ZS4uZDcwYzUyZjRiYzFjNDAwODJiN2EwMjQwMmZlN2U4YzJlMjQxMGM1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uKiBkZWNvbXByZXNzaW9uU2Vzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVjb21wcmVzc2lvblNlc3Npb24uZ2V0KCk7IH0KIAogICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRl
eCA0YzRhMTZjZTU5NmUxM2JiMzJkZGM4NTg0N2U5ODY5ZjY2MTZmMmM5Li5hZmVlYzc3NTk4YTVl
MWY3NDE1Y2Y1MmNjM2Y2YzE5ZTY4NWIwYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApA
QCAtMjExLDcgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJs
ZShNZWRpYVNhbXBsZSYpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNy
ZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92
ZXJyaWRlOwogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5oCmluZGV4IDcyNzVhZDQ4MGZmYzI1M2JkMzNiYjYyNjc1MjgyZmEzOWNhMDFjYjgu
LmMyMmU3MjVmODU0NmYyNzhmZjY1N2E1ZjRjNTcyYjkyOTUxNWVkNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAg
IHZvaWQgaW52YWxpZGF0ZSgpIGZpbmFsOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
IHZvaWQgc2V0TG9nZ2VyKGNvbnN0IFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCogaWRlbnRpZmll
cikgZmluYWw7CisgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCog
aWRlbnRpZmllcikgZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkUGFyc2VTdHJlYW1EYXRh
QXNBc3NldChBVkFzc2V0Kik7CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBXVEY6OkxvZ2dlciogbG9nZ2Vy
UHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBMb2dnZXIq
IGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qg
dm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQog
I2VuZGlmCiAKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFyc2VyU3Rh
dGVXYXNSZXNldCB7IGZhbHNlIH07CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBS
ZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZlB0cjxjb25zdCBMb2dn
ZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIg
fTsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFn
ZXJPYmpDLmgKaW5kZXggZGIwYzA3OTc2ZmMyMTViNjRlMmQwMmVmNzNiNjZhMTkyMjRhZDg2Yi4u
MzBjY2VjYTA5YTI2ZWY3ZjI1MWM4NGQ5MDEzYTEwOWEyMDM5Nzg1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXll
ck1hbmFnZXJPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgZmlu
YWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0
Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBs
YXRmb3JtSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQg
RmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZpbmFsOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2Uo
UGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyZDJmMTFhNDdkNjQ2
ZGVkOTAxMWI1YjJlOGUzZTIzZjZmNzY2MWVlLi42ZjcwNWVmYjZkZDUyMzdiNjM3ZjBiMzNiNmM2
NGE1NjQwYmEwMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMyMTcsNyArMzIxNyw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKCkKIAogICAgICAgICAgICAgTGF5ZXJQ
cm9wZXJ0eUFuaW1hdGlvbiogZWFybGllc3RBbmltYXRpb24gPSBudWxscHRyOwogICAgICAgICAg
ICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPj4gY2FBbmltYXRpb25zOwotICAg
ICAgICAgICAgZm9yIChhdXRvKiBhbmltYXRpb24gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKGFu
aW1hdGlvbnMpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGFuaW1hdGlvbiA6IG1ha2VSZXZl
cnNlZFJhbmdlKGFuaW1hdGlvbnMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gYmVnaW5U
aW1lID0gYW5pbWF0aW9uLT5jb21wdXRlZEJlZ2luVGltZSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghZWFybGllc3RBbmltYXRpb24gfHwgKmVhcmxpZXN0QW5pbWF0aW9uLT5jb21wdXRl
ZEJlZ2luVGltZSgpID4gKmJlZ2luVGltZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVhcmxp
ZXN0QW5pbWF0aW9uID0gYW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKaW5kZXgg
NWQ0YWEwYjVhNzMyOTIxMTFmMjI0MjdkYzZjMGFiYjY1YzQzMGVmZS4uNGIzMzU2YzM1NWU0ODBj
ODAwMjk0NjdlMTFkN2QwMzg4Y2U1ZWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCkBA
IC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIENhaXJvU3RhdGU7CiAgICAg
Q2Fpcm9TdGF0ZSogbV9jYWlyb1N0YXRlOwotICAgIFdURjo6VmVjdG9yPENhaXJvU3RhdGU+IG1f
Y2Fpcm9TdGF0ZVN0YWNrOworICAgIFZlY3RvcjxDYWlyb1N0YXRlPiBtX2NhaXJvU3RhdGVTdGFj
azsKIAogICAgIC8vIFRyYW5zcGFyZW5jeSBsYXllcnMuCiAgICAgVmVjdG9yPGZsb2F0PiBtX2xh
eWVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCBhZjU5YTAxZTdhZmUxZjUzYThmYzdm
MGFkM2YwYjQ5NzE1MDQ1OGJmLi45MjM4ZWE4NmRiNjQ4NTEwNTkxYTE3NWYyMDA3OWY4NmNhMWQ2
NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
c3RkOjpvcHRpb25hbDxkb3UKIAogc3RkOjp1bmlxdWVfcHRyPFRocmVhZFNhZmVJbWFnZUJ1ZmZl
ckZsdXNoZXI+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjcmVhdGVGbHVzaGVyKCkKIHsKLSAgICBy
ZXR1cm4gV1RGOjptYWtlVW5pcXVlPFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXJDRz4oY29u
dGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaHJlYWRT
YWZlSW1hZ2VCdWZmZXJGbHVzaGVyQ0c+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnByZXBhcmVUb0RyYXdJbnRvQ29udGV4dChH
cmFwaGljc0NvbnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCmluZGV4IGRlMTFlMzBmMWQ0
YzEyNWNlYTY4Njc0MTBjZTg4Y2RlZjExMzA4OGEuLjkxZDIzM2FjNGExNGFjZGRmODU1YmRjNGZh
OTA3ZWY0ZjRjMzIzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKQEAgLTY4LDcgKzY4LDcg
QEAgcHVibGljOgogICAgIHN0cnVjdCBTdWJpbWFnZUNhY2hlSGFzaCB7CiAgICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goUHRySGFzaDxD
R0ltYWdlUmVmPjo6aGFzaChpbWFnZSksCisgICAgICAgICAgICByZXR1cm4gcGFpckludEhhc2go
UHRySGFzaDxDR0ltYWdlUmVmPjo6aGFzaChpbWFnZSksCiAgICAgICAgICAgICAgICAgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHJlY3QueSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCmluZGV4IDVmOTI1MDY0OTIxMjA2ODQ0NjUz
YjRiNWVhNzJlNWZjODRiOGNiNGUuLjU2NTI0NzgyMmRiYTI5Zjc2MDBiOTQwN2U2ZjRhY2I4YzFh
MDZhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogCiAjaWYgSEFWRShJT1NV
UkZBQ0VfQUNDRUxFUkFUT1IpCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgYWxsb3dD
b252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KEZvcm1hdCwgRm9ybWF0KTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9Gb3JtYXQoc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OklPU3VyZmFjZT4mJiBpblN1cmZhY2UsIEZvcm1hdCwgV1RGOjpGdW5jdGlvbjx2b2lkKHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgY29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
T1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQsIEZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiYmKTsKICNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRV9B
Q0NFTEVSQVRPUikKIAogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBfSURFTlRJVFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29h
LmNwcAppbmRleCAxMjIyNjAzN2NiMTUwMzc0ZjAxMGViMzAwNjMxYzE0NTEwY2I4MTJkLi45NDQ4
OGEzMjE3MGVhY2QwNDU5N2Y1MzVlYjMwNjU2ZDg1OTdmNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKQEAgLTE2MCw3ICsx
NjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IGNvbXB1
dGVNZWRpYUNhcGFiaWxpdGllc0luZm8oY29uc3QgTQogICAgIHJldHVybiBpbmZvOwogfQogCi12
b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EoTWVkaWFEZWNv
ZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVk
aWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+JiYgY2FsbGJhY2spCit2b2lkIGNyZWF0ZU1l
ZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EoTWVkaWFEZWNvZGluZ0NvbmZpZ3Vy
YXRpb24mJiBjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVj
b2RpbmdJbmZvJiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8gaW5mbyA9IGNvbXB1dGVNZWRp
YUNhcGFiaWxpdGllc0luZm8oY29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFpbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaAppbmRleCA1
NTkzZmE0NzBiYmQwNDlmMDI3NWQ2MDFjN2RlMmY3MGI4ZjUzODViLi42ZDYyOTQ5YWE4YmRjNGRl
MTMyNGNlYTEzODRmYTQ4M2YwMTE4OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm87CiBzdHJ1Y3Qg
TWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb247CiAKLWV4dGVybiB2b2lkIGNyZWF0ZU1lZGlhUGxh
eWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24m
JiwgV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvJiYpPiYm
KTsKK2V4dGVybiB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29j
b2EoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRnVuY3Rpb248dm9pZChNZWRpYUNhcGFi
aWxpdGllc0RlY29kaW5nSW5mbyYmKT4mJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApp
bmRleCBjMjEwMWE2OTI5YWFlZjkwOTY0MGI3OTE4YmYyNWFlNjZlYjk3YTM4Li5hNjU2NjQ5YzVi
NjQ3YWZmYThkMTI4MzY5MTA1ZmVkMDdhOTk1ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApA
QCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgID4gbV9zZWdtZW50OwogICAgIH07CiAK
LSAgICB1c2luZyBDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9p
ZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik+OworICAgIHVzaW5nIENhbGxPbkNsaWVudFRocmVh
ZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPjsKICAgICB2b2lk
IHNldENhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKENhbGxPbkNsaWVudFRocmVhZENhbGxiYWNr
JiYpOwogCiAgICAgLy8gYXBwZW5kRGF0YSB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMgZGF0YSBwYXJzZXIgcXVldWUuCkBAIC05OSw0MCArOTksNDAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihmbG9hdCk7CiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihjb25zdCBXVEY6OkxvZ2dl
ciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpID0gMDsKICNl
bmRpZgogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHVz
aW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6Oklu
aXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKT47
CisgICAgdXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpPjsKICAgICB2b2lkIHNldERpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFj
ayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgfQogCiAgICAgLy8gV2lsbCBiZSBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHVzaW5nIERpZEVuY291bnRlckVycm9yRHVy
aW5nUGFyc2luZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IGVycm9yQ29k
ZSk+OworICAgIHVzaW5nIERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrID0g
RnVuY3Rpb248dm9pZCh1aW50NjRfdCBlcnJvckNvZGUpPjsKICAgICB2b2lkIHNldERpZEVuY291
bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKERpZEVuY291bnRlckVycm9yRHVyaW5nUGFy
c2luZ0NhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2RpZEVuY291bnRlckVy
cm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgfQogCiAg
ICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHVzaW5nIERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8TWVkaWFTYW1w
bGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47CisgICAg
dXNpbmcgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWY8TWVk
aWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47
CiAgICAgdm9pZCBzZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soRGlkUHJvdmlkZU1lZGlh
RGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2RpZFByb3ZpZGVNZWRp
YURhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFdpbGwg
YmUgY2FsbGVkIHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KLSAgICB1c2luZyBX
aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAgICB1c2lu
ZyBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJ
RENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lEKT47CiAgICAgdm9pZCBz
ZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJ
RENhbGxiYWNrKFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fd2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFdpbGwgYmUgY2FsbGVkIHN5bmNo
cm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KLSAgICB1c2luZyBEaWRQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAgICB1
c2luZyBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxVaW50OEFycmF5PiYmLCB1aW50NjRfdCB0
cmFja0lEKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFs
aXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewog
ICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZv
clRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcAppbmRleCA3MmUwOTkzODFjMzY5MGRiN2NiNjgzZjczNmZmZDdiYzM1OGRm
ZjI3Li5iZjQ3MzdlZjA1NGZkZGMyNWI0OWFlMmMzMmEyNDk1ODBmZDkwODllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNTg5LDggKzU4OSw4IEBAIE1lZGlhUGxheWVy
RW51bXM6OlN1cHBvcnRzVHlwZSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBl
U3VwcG9ydGVkKGNvCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAgYXV0byBjb250YWluZXJUeXBlID0gdHlwZS5jb250
YWluZXJUeXBlKCk7Ci0gICAgYm9vbCBpc0F1ZGlvQ29udGFpbmVyVHlwZSA9IFdURjo6ZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAiYXVkaW8vd2VibSIpOwotICAgIGJvb2wg
aXNWaWRlb0NvbnRhaW5lclR5cGUgPSBXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29udGFp
bmVyVHlwZSwgInZpZGVvL3dlYm0iKTsKKyAgICBib29sIGlzQXVkaW9Db250YWluZXJUeXBlID0g
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAiYXVkaW8vd2VibSIpOworICAg
IGJvb2wgaXNWaWRlb0NvbnRhaW5lclR5cGUgPSBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnRh
aW5lclR5cGUsICJ2aWRlby93ZWJtIik7CiAgICAgaWYgKCFpc0F1ZGlvQ29udGFpbmVyVHlwZSAm
JiAhaXNWaWRlb0NvbnRhaW5lclR5cGUpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1z
OjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogICAgIApAQCAtNjczLDEwICs2NzMsMTAg
QEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0KIAogU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAgOiBtX3JlYWRlcihXVEY6Om1ha2VVbmlxdWVS
ZWY8U2VnbWVudFJlYWRlcj4oKSkKKyAgICA6IG1fcmVhZGVyKG1ha2VVbmlxdWVSZWY8U2VnbWVu
dFJlYWRlcj4oKSkKIHsKICAgICBpZiAoaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkpCi0gICAgICAg
IG1fcGFyc2VyID0gV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXZWJtUGFy
c2VyPigpOworICAgICAgICBtX3BhcnNlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPFdlYm1QYXJzZXI+KCk7CiB9CiAKIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06On5Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNKCkKQEAgLTkyMSw3ICs5MjEsNyBAQCBTdGF0dXMgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbnN0
IEVibQogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OkludmFs
aWREb2NUeXBlKSk7CiAKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0g
dHJ1ZTsKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURjo6bWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8SW5pdGlhbGl6YXRpb25TZWdtZW50PigpOworICAgIG1faW5pdGlh
bGl6YXRpb25TZWdtZW50ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SW5pdGlh
bGl6YXRpb25TZWdtZW50PigpOwogICAgIC8vIFRPRE86IFNldHRpbmcgdGhpcyB0byBmYWxzZSBo
ZXJlLCB3aWxsIHByZXZlbnQgYWRkaW5nIGEgbmV3IG1lZGlhIHNlZ21lbnQgc2hvdWxkIGEKICAg
ICAvLyBwYXJ0aWFsIGluaXQgc2VnbWVudCBiZSBlbmNvdW50ZXJlZCBhZnRlciBhIGNhbGwgdG8g
c291cmNlQnVmZmVyLmFib3J0KCkuCiAgICAgLy8gSXQncyBwcm9iYWJseSBmaW5lIGFzIG5vLW9u
ZSBpbiB0aGVpciByaWdodCBtaW5kIHNob3VsZCBzZW5kIHBhcnRpYWwgaW5pdCBzZWdtZW50IG9u
bHkKQEAgLTEyMDgsNyArMTIwOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cHJv
dmlkZU1lZGlhRGF0YShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsCiAgICAgfSk7
CiB9CiAKLSNkZWZpbmUgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSguLi4pIGlmIChwYXJz
ZXIoKS5sb2dnZXJQdHIoKSkgcGFyc2VyKCkubG9nZ2VyUHRyKCktPmVycm9yKGxvZ0NoYW5uZWwo
KSwgV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKGxvZ0NsYXNzTmFtZSgpLCBfX2Z1bmNf
XywgcGFyc2VyKCkubG9nSWRlbnRpZmllcigpKSwgX19WQV9BUkdTX18pCisjZGVmaW5lIFBBUlNF
Ul9MT0dfRVJST1JfSUZfUE9TU0lCTEUoLi4uKSBpZiAocGFyc2VyKCkubG9nZ2VyUHRyKCkpIHBh
cnNlcigpLmxvZ2dlclB0cigpLT5lcnJvcihsb2dDaGFubmVsKCksIExvZ2dlcjo6TG9nU2l0ZUlk
ZW50aWZpZXIobG9nQ2xhc3NOYW1lKCksIF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVudGlmaWVy
KCkpLCBfX1ZBX0FSR1NfXykKIAogUmV0YWluUHRyPENNQmxvY2tCdWZmZXJSZWY+IFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6Y29udGlndW91c0NvbXBsZXRlQmxvY2tCdWZmZXIo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaAppbmRleCAwYjJlYWIyZDA1MjVmNmU0ODZkZTFjMDQ2MDM0Nzk4YTk0NWE0NzVl
Li5jMTllN2Y3ZDNlOWQ2MzRkYzViN2QxNzBiZmM4MWIzN2NlMjIyNWM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oCkBAIC04MywxMCArODMsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
Zmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKCk7CiAgICAgdm9pZCBzZXRNaW5pbXVtQXVkaW9TYW1w
bGVEdXJhdGlvbihmbG9hdCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dn
ZXIoY29uc3QgV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lk
KiBpZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcHJvdmlkZU1lZGlhRGF0YShSZXRhaW5Q
dHI8Q01TYW1wbGVCdWZmZXJSZWY+LCB1aW50NjRfdCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGJ5
dGVSYW5nZU9mZnNldCk7Ci0gICAgdXNpbmcgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUmIGRp
c2NhcmRQYWRkaW5nKT47CisgICAgdXNpbmcgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQodWludDY0X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFUaW1lJiBkaXNjYXJk
UGFkZGluZyk+OwogICAgIHZvaWQgc2V0RGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayhEaWRQ
YXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2Rp
ZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKQEAgLTI0OCw3
ICsyNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZsb2F0IG1fbWluaW11bVNhbXBsZUR1cmF0aW9u
IHsgMiB9OwogICAgIH07CiAKLSAgICBjb25zdCBXVEY6OkxvZ2dlciogbG9nZ2VyUHRyKCkgY29u
c3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBMb2dnZXIqIGxvZ2dlclB0
cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qgdm9pZCogbG9n
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogCiBwcml2YXRl
OgpAQCAtMjkzLDcgKzI5Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwogICAgIGZsb2F0IG1fbWluaW11bUF1ZGlvU2FtcGxlRHVy
YXRpb24geyAyIH07CiAKLSAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwor
ICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9n
SWRlbnRpZmllciB7IG51bGxwdHIgfTsKICAgICB1aW50NjRfdCBtX25leHRDaGlsZElkZW50aWZp
ZXIgeyAwIH07CiAgICAgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayBtX2RpZFBhcnNlVHJp
bW1pbmdEYXRhQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaAppbmRleCA3NDNiZTQ1NWYzYmY2
NmI0ZmZkZDQ4NmMyMzE0ZjI4MTVjYWY1Yjg4Li45NDEwYTdjNDc5NjM0NzA0ZWI1OWM5OTk2MDM0
ODQ0YjY5YTg4NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFyZHdhcmVEZWNvZGVy
RGlzYWJsZWQ7CiAgICAgc3RkOjpvcHRpb25hbDxTY3JlZW5EYXRhT3ZlcnJpZGVzPiBtX3NjcmVl
blNpemVBbmRTY2FsZTsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb25maWd1cmF0aW9u
Q2hhbmdlZENhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jb25maWd1cmF0aW9uQ2hh
bmdlZENhbGxiYWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaAppbmRleCA1
NjBlZTgwYmE0NDdjOTA1YWQ0M2M1NzE0YWI3OGUwOTdkZDlkZWQ3Li5mYjE0ZDNiYmNlOTk1MTFk
NDMwMWYxMjUxYjcwNWYyZGU0ZGQ2NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaApA
QCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIFVuc2FmZVBvaW50ZXI8SU9TdXJmYWNlUmVm
PiBtX2xhc3RTdXJmYWNlOwogICAgIHVpbnQzMl90IG1fbGFzdFN1cmZhY2VTZWVkIHsgMCB9Owog
Ci0gICAgdXNpbmcgVGV4dHVyZVNlZWRNYXAgPSBIYXNoTWFwPEdDR0x1aW50LCB1bnNpZ25lZCwg
V1RGOjpJbnRIYXNoPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czxHQ0dMdWludD4+OworICAgIHVzaW5nIFRleHR1cmVTZWVkTWFwID0gSGFzaE1hcDxHQ0dMdWlu
dCwgdW5zaWduZWQsIEludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPEdDR0x1aW50Pj47CiAgICAgVGV4dHVyZVNlZWRNYXAgbV9sYXN0VGV4dHVyZVNl
ZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCBkZmY0MTQ0MjYxOTY3YmZl
OGRlMmRlYzkyYzZmOTM5ODMyZGUxN2U4Li44M2ZjYjg0OGY0MTgyYzc0MzE5ZjMwYjY4NTBlNTE0
YWU1YzQ2ZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogI2lmICFkZWZp
bmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAotV1RGOjpDU3RyaW5nIERpc3BsYXlMaXN0Ojpk
ZXNjcmlwdGlvbigpIGNvbnN0CitDU3RyaW5nIERpc3BsYXlMaXN0OjpkZXNjcmlwdGlvbigpIGNv
bnN0CiB7CiAgICAgVGV4dFN0cmVhbSB0czsKICAgICB0cyA8PCAqdGhpczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmgKaW5kZXggNWNiMTNkZGJiYmNjMWU3NjU0MDQ2OTkzZjlkYjAyYmU5YWM5NzRhNC4u
MTNjZDVlN2M0ZDU5OWZmMjMxZDhkNThhZDU0ZmE5NzYyZTNkNDNhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hyaW5rVG9GaXQo
KTsKIAogI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAotICAgIFdURjo6Q1N0
cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIENTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoKSBjb25zdDsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAppbmRleCA0NmU5ZmE4NmFhYjZi
YTQ0OTVjYzQ2YWRiNzZhZjQ2N2ZlNWJhMzU4Li44OGI2YThiMjZmMDU0NTllZGU2ZDM2ZGFkMzZm
ZGQzYjQyZGVkNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPEJh
Y2tlbmRUeXBlPiYmIGJhY2tlbmQpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIo
cGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSkKICAgICAgICAgLCBtX2RyYXdpbmdDb250ZXh0
KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSkKLSAgICAgICAgLCBtX3dyaXRpbmdDbGll
bnQoV1RGOjptYWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OldyaXRpbmdDbGllbnQ+KCkp
Ci0gICAgICAgICwgbV9yZWFkaW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxJbk1lbW9yeURpc3Bs
YXlMaXN0OjpSZWFkaW5nQ2xpZW50PigpKQorICAgICAgICAsIG1fd3JpdGluZ0NsaWVudChtYWtl
VW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OldyaXRpbmdDbGllbnQ+KCkpCisgICAgICAgICwg
bV9yZWFkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0Ns
aWVudD4oKSkKICAgICB7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS5z
ZXRJdGVtQnVmZmVyV3JpdGluZ0NsaWVudChtX3dyaXRpbmdDbGllbnQuZ2V0KCkpOwogICAgICAg
ICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuc2V0SXRlbUJ1ZmZlclJlYWRpbmdDbGll
bnQobV9yZWFkaW5nQ2xpZW50LmdldCgpKTsKQEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogICAg
IEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1l
dGVycywgUmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQogICAgICAg
ICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMpCiAgICAgICAgICwgbV9kcmF3
aW5nQ29udGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCksIGRlbGVnYXRlKQotICAg
ICAgICAsIG1fd3JpdGluZ0NsaWVudChXVEY6Om1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlz
dDo6V3JpdGluZ0NsaWVudD4oKSkKLSAgICAgICAgLCBtX3JlYWRpbmdDbGllbnQoV1RGOjptYWtl
VW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ+KCkpCisgICAgICAgICwg
bV93cml0aW5nQ2xpZW50KG1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGluZ0Ns
aWVudD4oKSkKKyAgICAgICAgLCBtX3JlYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJbk1lbW9yeURp
c3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50PigpKQogICAgIHsKICAgICAgICAgbV9kcmF3aW5nQ29u
dGV4dC5kaXNwbGF5TGlzdCgpLnNldEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50KG1fd3JpdGluZ0Ns
aWVudC5nZXQoKSk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS5zZXRJ
dGVtQnVmZmVyUmVhZGluZ0NsaWVudChtX3JlYWRpbmdDbGllbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5
RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IGVjYTUzNTg2MjliMDI3YTM2ZWQ4
N2U2OWQ0Mzk4MDE0N2UxNjdiZjMuLjhlYjNiMmJjMGNmMTllYjIzMThlNDVhOWU4NmE1MTkzOTQ0
MjAwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKQEAgLTUy
LDggKzUyLDggQEAgc3RkOjpvcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4g
SW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudDoKIH0KIAogSW5NZW1vcnlEaXNwbGF5
TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdCgpCi0gICAgOiBtX3dyaXRpbmdDbGllbnQoV1RGOjpt
YWtlVW5pcXVlPFdyaXRpbmdDbGllbnQ+KCkpCi0gICAgLCBtX3JlYWRpbmdDbGllbnQoV1RGOjpt
YWtlVW5pcXVlPFJlYWRpbmdDbGllbnQ+KCkpCisgICAgOiBtX3dyaXRpbmdDbGllbnQobWFrZVVu
aXF1ZTxXcml0aW5nQ2xpZW50PigpKQorICAgICwgbV9yZWFkaW5nQ2xpZW50KG1ha2VVbmlxdWU8
UmVhZGluZ0NsaWVudD4oKSkKIHsKICAgICBzZXRJdGVtQnVmZmVyV3JpdGluZ0NsaWVudChtX3dy
aXRpbmdDbGllbnQuZ2V0KCkpOwogICAgIHNldEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KG1fcmVh
ZGluZ0NsaWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4IDA4ZTg1YTA4YWEw
MWIwODEyMjNmMzZlYmI2YmJiOGFiMzYzOTQzNjUuLjBmNmVlODdmOTVlNzU3NTE4NjNmZDJlNWY1
NDllNzRkOTcyOWRiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC0zMTgsNyArMzE4LDcg
QEAgaW5saW5lIHZvaWQgYWNjZWxlcmF0ZUJveEJsdXIoVWludDhDbGFtcGVkQXJyYXkmIGlvQnVm
ZmVyLCBVaW50OENsYW1wZWRBcnJheSYgdGUKICAgICB2SW1hZ2VCb3hDb252b2x2ZV9BUkdCODg4
OCgmZWZmZWN0SW5CdWZmZXIsICZlZmZlY3RPdXRCdWZmZXIsIHRtcEJ1ZmZlciwgMCwgMCwga2Vy
bmVsU2l6ZSwga2VybmVsU2l6ZSwgMCwga3ZJbWFnZUVkZ2VFeHRlbmQpOwogICAgIHZJbWFnZUJv
eENvbnZvbHZlX0FSR0I4ODg4KCZlZmZlY3RPdXRCdWZmZXIsICZlZmZlY3RJbkJ1ZmZlciwgdG1w
QnVmZmVyLCAwLCAwLCBrZXJuZWxTaXplLCBrZXJuZWxTaXplLCAwLCBrdkltYWdlRWRnZUV4dGVu
ZCk7CiAgICAgdkltYWdlQm94Q29udm9sdmVfQVJHQjg4ODgoJmVmZmVjdEluQnVmZmVyLCAmZWZm
ZWN0T3V0QnVmZmVyLCB0bXBCdWZmZXIsIDAsIDAsIGtlcm5lbFNpemUsIGtlcm5lbFNpemUsIDAs
IGt2SW1hZ2VFZGdlRXh0ZW5kKTsKLSAgICBXVEY6OmZhc3RGcmVlKHRtcEJ1ZmZlcik7CisgICAg
ZmFzdEZyZWUodG1wQnVmZmVyKTsKIAogICAgIC8vIFRoZSBmaW5hbCByZXN1bHQgc2hvdWxkIGJl
IHN0b3JlZCBpbiBpb0J1ZmZlci4KICAgICBBU1NFUlQoaW9CdWZmZXIubGVuZ3RoKCkgPT0gdGVt
cEJ1ZmZlci5sZW5ndGgoKSk7CkBAIC0zOTksNyArMzk5LDcgQEAgaW5saW5lIHZvaWQgRkVHYXVz
c2lhbkJsdXI6OnBsYXRmb3JtQXBwbHkoVWludDhDbGFtcGVkQXJyYXkmIGlvQnVmZmVyLCBVaW50
OENsYW0KICAgICBpbnQgb3B0aW1hbFRocmVhZE51bWJlciA9IChwYWludFNpemUud2lkdGgoKSAq
IHBhaW50U2l6ZS5oZWlnaHQoKSkgLyAoc19taW5pbWFsUmVjdERpbWVuc2lvbiArIGV4dHJhSGVp
Z2h0ICogcGFpbnRTaXplLndpZHRoKCkpOwogCiAgICAgaWYgKG9wdGltYWxUaHJlYWROdW1iZXIg
PiAxKSB7Ci0gICAgICAgIFdURjo6UGFyYWxsZWxKb2JzPFBsYXRmb3JtQXBwbHlQYXJhbWV0ZXJz
PiBwYXJhbGxlbEpvYnMoJnBsYXRmb3JtQXBwbHlXb3JrZXIsIG9wdGltYWxUaHJlYWROdW1iZXIp
OworICAgICAgICBQYXJhbGxlbEpvYnM8UGxhdGZvcm1BcHBseVBhcmFtZXRlcnM+IHBhcmFsbGVs
Sm9icygmcGxhdGZvcm1BcHBseVdvcmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7CiAKICAgICAg
ICAgaW50IGpvYnMgPSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZKb2JzKCk7CiAgICAgICAgIGlmIChq
b2JzID4gMSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKaW5kZXggZGYxNzZmOGUwNzBhNDE4YzIwODUxODA5MGVl
N2E2Y2ExMTNlNTZmNS4uNjU5YjEwNTVmNjFlYWFiYzVmMjk5OTFkYTBkYTFhNTg1MDcxYWU5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxp
Z2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTGlnaHRpbmcuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBGRUxpZ2h0aW5nOjpwbGF0
Zm9ybUFwcGx5R2VuZXJpYyhjb25zdCBMaWdodGluZ0RhdGEmIGRhdGEsIGNvbnN0IExpZ2h0U291
cmMKICAgICB1bnNpZ25lZCBvcHRpbWFsVGhyZWFkTnVtYmVyID0gc3RkOjptaW48dW5zaWduZWQ+
KCgoZGF0YS53aWR0aERlY3JlYXNlZEJ5T25lIC0gMSkgKiByb3dzVG9Qcm9jZXNzKSAvIHNfbWlu
aW1hbFJlY3REaW1lbnNpb24sIG1heE51bVRocmVhZHMpOwogICAgIGlmIChvcHRpbWFsVGhyZWFk
TnVtYmVyID4gMSkgewogICAgICAgICAvLyBJbml0aWFsaXplIHBhcmFsbGVsIGpvYnMKLSAgICAg
ICAgV1RGOjpQYXJhbGxlbEpvYnM8UGxhdGZvcm1BcHBseUdlbmVyaWNQYXJhbWV0ZXJzPiBwYXJh
bGxlbEpvYnMoJnBsYXRmb3JtQXBwbHlHZW5lcmljV29ya2VyLCBvcHRpbWFsVGhyZWFkTnVtYmVy
KTsKKyAgICAgICAgUGFyYWxsZWxKb2JzPFBsYXRmb3JtQXBwbHlHZW5lcmljUGFyYW1ldGVycz4g
cGFyYWxsZWxKb2JzKCZwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlciwgb3B0aW1hbFRocmVhZE51
bWJlcik7CiAKICAgICAgICAgLy8gRmlsbCB0aGUgcGFyYW1ldGVyIGFycmF5CiAgICAgICAgIGlu
dCBqb2IgPSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZKb2JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IDBmZmZj
ZDA2NDM5NmQ4ZjRiNjQwODIyNjljYzIwNzRmN2M5ZGJkYmMuLmIwYmI3MGExNGQxNzQ5NTA2NzM3
ZTg4ZTA1MTRlZTc5NjgyMGE0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC0xMTcsOSArMTE3LDYgQEAgcHJv
dGVjdGVkOgogICAgICAgICBpbmxpbmUgSW50U2l6ZSBib3R0b21SaWdodE5vcm1hbChpbnQgb2Zm
c2V0KSBjb25zdDsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLSAgICBm
cmllbmQgY2xhc3MgUGFyYWxsZWxKb2JzOwotCiAgICAgc3RydWN0IFBsYXRmb3JtQXBwbHlHZW5l
cmljUGFyYW1ldGVycyB7CiAgICAgICAgIEZFTGlnaHRpbmcqIGZpbHRlcjsKICAgICAgICAgTGln
aHRpbmdEYXRhIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggOGE3ZTViNjY3YWI3NzNiOTBi
ODkwZTM4Mzg2MzkzNTYyYjlkOGRmNS4uNmFlM2Q5ODk4NjYyNmUwN2MwOTRjNTg2ZjMxOThjOWM1
OGRhZWQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgRkVN
b3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5KGNvbnN0IFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRh
KQogICAgIHVuc2lnbmVkIG1heE51bVRocmVhZHMgPSBwYWludGluZ0RhdGEuaGVpZ2h0IC8gODsK
ICAgICB1bnNpZ25lZCBvcHRpbWFsVGhyZWFkTnVtYmVyID0gc3RkOjptaW48dW5zaWduZWQ+KChw
YWludGluZ0RhdGEud2lkdGggKiBwYWludGluZ0RhdGEuaGVpZ2h0ICoga2VybmVsRmFjdG9yKSAv
IG1pbmltYWxBcmVhLCBtYXhOdW1UaHJlYWRzKTsKICAgICBpZiAob3B0aW1hbFRocmVhZE51bWJl
ciA+IDEpIHsKLSAgICAgICAgV1RGOjpQYXJhbGxlbEpvYnM8UGxhdGZvcm1BcHBseVBhcmFtZXRl
cnM+IHBhcmFsbGVsSm9icygmV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5V29y
a2VyLCBvcHRpbWFsVGhyZWFkTnVtYmVyKTsKKyAgICAgICAgUGFyYWxsZWxKb2JzPFBsYXRmb3Jt
QXBwbHlQYXJhbWV0ZXJzPiBwYXJhbGxlbEpvYnMoJldlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxh
dGZvcm1BcHBseVdvcmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7CiAgICAgICAgIGF1dG8gbnVt
T2ZUaHJlYWRzID0gcGFyYWxsZWxKb2JzLm51bWJlck9mSm9icygpOwogICAgICAgICBpZiAobnVt
T2ZUaHJlYWRzID4gMSkgewogICAgICAgICAgICAgLy8gU3BsaXQgdGhlIGpvYiBpbnRvICJqb2JT
aXplIi1zaXplZCBqb2JzIGJ1dCB0aGVyZSBhIGZldyBqb2JzIHRoYXQgbmVlZCB0byBiZSBzbGln
aHRseSBsYXJnZXIgc2luY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCBhYzIzNDZlOGE0YmE1OGFh
YTkyNGE2ZDY3YmQ1ZTRiNzdkZDIyNjhmLi43NzRlNjgyZTNiNDg1OWJiNmUyMDZhMWQyYmZhZWIw
Y2VhOTE5ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBG
RVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgdW5zaWduZWQgbWF4TnVt
VGhyZWFkcyA9IGhlaWdodCAvIDg7CiAgICAgdW5zaWduZWQgb3B0aW1hbFRocmVhZE51bWJlciA9
IHN0ZDo6bWluPHVuc2lnbmVkPihhcmVhIC8gc19taW5pbWFsUmVjdERpbWVuc2lvbiwgbWF4TnVt
VGhyZWFkcyk7CiAgICAgaWYgKG9wdGltYWxUaHJlYWROdW1iZXIgPiAxKSB7Ci0gICAgICAgIFdU
Rjo6UGFyYWxsZWxKb2JzPEZpbGxSZWdpb25QYXJhbWV0ZXJzPiBwYXJhbGxlbEpvYnMoJldlYkNv
cmU6OkZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbldvcmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7
CisgICAgICAgIFBhcmFsbGVsSm9iczxGaWxsUmVnaW9uUGFyYW1ldGVycz4gcGFyYWxsZWxKb2Jz
KCZXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb25Xb3JrZXIsIG9wdGltYWxUaHJlYWRO
dW1iZXIpOwogCiAgICAgICAgIC8vIEZpbGwgdGhlIHBhcmFtZXRlciBhcnJheQogICAgICAgICBh
dXRvIG51bUpvYnMgPSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZKb2JzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwCmluZGV4IGI5ZmU5YmI5YWE2ODYwNjdjMTFmZGE1NjI4MzA0YWI0OGJiYjZh
ZWUuLjAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFlNjcyM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RhdGljIHZvaWQgc2ltcGxl
QnVzTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEdzdEJpbiog
cGlwZWwKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VSUk9SOgogICAgICAgICBHU1RfRVJST1JfT0JK
RUNUKHBpcGVsaW5lLCAiR290IG1lc3NhZ2U6ICUiIEdTVF9QVFJfRk9STUFULCBtZXNzYWdlKTsK
ICAgICAgICAgewotICAgICAgICAgICAgV1RGOjpTdHJpbmcgZG90RmlsZU5hbWUgPSBtYWtlU3Ry
aW5nKEdTVF9PQkpFQ1RfTkFNRShwaXBlbGluZSksICJfZXJyb3IiKTsKKyAgICAgICAgICAgIFN0
cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoR1NUX09CSkVDVF9OQU1FKHBpcGVsaW5lKSwg
Il9lcnJvciIpOwogICAgICAgICAgICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRIX1RT
KHBpcGVsaW5lLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsIGRvdEZpbGVOYW1lLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHN0
YXRpYyB2b2lkIHNpbXBsZUJ1c01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBt
ZXNzYWdlLCBHc3RCaW4qIHBpcGVsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVf
Z2V0X25hbWUobmV3U3RhdGUpLAogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dl
dF9uYW1lKHBlbmRpbmcpKTsKIAotICAgICAgICAgICAgV1RGOjpTdHJpbmcgZG90RmlsZU5hbWUg
PSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgU3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0cmlu
ZygKICAgICAgICAgICAgICAgICBHU1RfT0JKRUNUX05BTUUocGlwZWxpbmUpLCAnXycsCiAgICAg
ICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUob2xkU3RhdGUpLCAnXycsCiAg
ICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggODhjMTRkM2Mx
ZWNmZTRjNmNhOTI5NTgwNmJiZWI1OGVmNmJlMjAxNS4uYzZhM2YyOTUwYjE1ZjU4YzRhOTgyMTIz
ZDZlNzAyZDBlNjgwMjdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lci5jcHAKQEAgLTUwNCw3ICs1MDQsNyBAQCBib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6aXNDb2RlY1N1cHBvcnRlZChDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGNvbgogewog
ICAgIC8vIElmIHRoZSBjb2RlYyBpcyBuYW1lZCBsaWtlIGEgbWltZXR5cGUgKGVnOiB2aWRlby9h
dmMpIHJlbW92ZSB0aGUgInZpZGVvLyIgcGFydC4KICAgICBzaXplX3Qgc2xhc2hJbmRleCA9IGNv
ZGVjLmZpbmQoJy8nKTsKLSAgICBTdHJpbmcgY29kZWNOYW1lID0gc2xhc2hJbmRleCAhPSBXVEY6
Om5vdEZvdW5kID8gY29kZWMuc3Vic3RyaW5nKHNsYXNoSW5kZXggKyAxKSA6IGNvZGVjOworICAg
IFN0cmluZyBjb2RlY05hbWUgPSBzbGFzaEluZGV4ICE9IG5vdEZvdW5kID8gY29kZWMuc3Vic3Ry
aW5nKHNsYXNoSW5kZXggKyAxKSA6IGNvZGVjOwogCiAgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxz
ZTsKICAgICBpZiAoY29kZWNOYW1lLnN0YXJ0c1dpdGgoImF2YzEiKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA1MmRhNzNkOGJiYWNlY2UwNWViMjRkNTZjOGRjOGYx
OTYyNmI1YzMxLi42NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBib29sIGNhbkRlY29kZVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICB2b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hh
bmdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKEVuY29kZWREYXRhU3RhdHVzKT4mJiBjYWxs
YmFjaykgZmluYWwgeyBtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdlZENhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7IH0KKyAgICB2b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hhbmdlQ2FsbGJh
Y2soRnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+JiYgY2FsbGJhY2spIGZpbmFsIHsg
bV9lbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9
CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdCBmaW5hbDsK
ICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2FtcGxlRGF0YS5zaXplKCk7IH0KQEAgLTEyNiw3ICsx
MjYsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxl
KiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
RW5jb2RlZERhdGFTdGF0dXMpPiBtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdlZENhbGxiYWNrOwor
ICAgIEZ1bmN0aW9uPHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiBtX2VuY29kZWREYXRhU3RhdHVz
Q2hhbmdlZENhbGxiYWNrOwogICAgIFNhbXBsZU1hcCBtX3NhbXBsZURhdGE7CiAgICAgRGVjb2Rl
T3JkZXJTYW1wbGVNYXA6Oml0ZXJhdG9yIG1fY3Vyc29yOwogICAgIExvY2sgbV9zYW1wbGVHZW5l
cmF0b3JMb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCmluZGV4IGQyY2M4MWQ1ODRk
NDdjMGMzMjA3MjU5MmFlYzYxODBhYjYzNzVhNWEuLmViYjQxYWJmOGNkNDRmZmM1YjY2ZTAzMTlj
NTI5NjA2M2NjZTU4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmgKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWFkZFBlbmRpbmdOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uVHlwZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbm90
aWZpY2F0aW9uVHlwZSwgY2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4oV1RGTW92ZShj
YWxsYmFja0Z1bmN0b3IpKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBub3RpZmljYXRpb25UeXBlLCBjYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoKT4oV1RGTW92ZShjYWxsYmFja0Z1bmN0b3IpKV0gewogICAg
ICAgICAgICAgaWYgKCFtX2lzVmFsaWQubG9hZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGlmIChyZW1vdmVQZW5kaW5nTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvblR5
cGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlHU3RyZWFtZXIuY3BwCmluZGV4IDgzNDI0YjI5ODhjM2ViZGQyN2MzYjhkOTcy
YjIxNmU3YWRhMDRlZDEuLmExNjRkMmY4ZmYwYTFhZjNiODBmYzVkMDU0ODIxMTZmMDc5NDQ0ODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUdTdHJlYW1lci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0
cmVhbWVyKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV1RGOjpG
dW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvJiYpPiYmIGNhbGxiYWNr
KQordm9pZCBjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihN
ZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIEZ1bmN0aW9uPHZvaWQo
TWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgYm9v
bCBpc01lZGlhU291cmNlID0gY29uZmlndXJhdGlvbi50eXBlID09IE1lZGlhRGVjb2RpbmdUeXBl
OjpNZWRpYVNvdXJjZTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKE1l
ZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJgogICAgIGNhbGxiYWNrKFdURk1vdmUoaW5mbykpOwog
fQogCi12b2lkIGNyZWF0ZU1lZGlhUGxheWVyRW5jb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVy
KE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV1RGOjpGdW5jdGlv
bjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPiYmIGNhbGxiYWNrKQordm9p
ZCBjcmVhdGVNZWRpYVBsYXllckVuY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihNZWRpYUVu
Y29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIEZ1bmN0aW9uPHZvaWQoTWVkaWFD
YXBhYmlsaXRpZXNFbmNvZGluZ0luZm8mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byYgc2Nh
bm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCk7CiAgICAgYXV0byBs
b29rdXBSZXN1bHQgPSBzY2FubmVyLmlzRW5jb2RpbmdTdXBwb3J0ZWQoY29uZmlndXJhdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3RvcnlHU3RyZWFtZXIuaAppbmRleCA2MGJiNjMxZDM2ZDUxNDhmNDI4NDg1NjFmZTU5Y2U1NTEz
OWI0ZWI3Li5jOGVlZTc5OWYwMTMzNDAxMDNjZTYzNDdkZWI3MDNjOTdjZTVjYTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
R1N0cmVhbWVyLmgKQEAgLTM4LDggKzM4LDggQEAgc3RydWN0IE1lZGlhQ2FwYWJpbGl0aWVzRW5j
b2RpbmdJbmZvOwogc3RydWN0IE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uOwogc3RydWN0IE1l
ZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uOwogCi1leHRlcm4gdm9pZCBjcmVhdGVNZWRpYVBsYXll
ckRlY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
biYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+
JiYpOwotZXh0ZXJuIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJFbmNvZGluZ0NvbmZpZ3VyYXRpb25H
U3RyZWFtZXIoTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgV1RGOjpGdW5jdGlvbjx2b2lk
KE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPiYmKTsKK2V4dGVybiB2b2lkIGNyZWF0
ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKE1lZGlhRGVjb2RpbmdD
b25maWd1cmF0aW9uJiYsIEZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0lu
Zm8mJik+JiYpOworZXh0ZXJuIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJFbmNvZGluZ0NvbmZpZ3Vy
YXRpb25HU3RyZWFtZXIoTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRnVuY3Rpb248dm9p
ZChNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbyYmKT4mJik7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRT
aW5rR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVGV4dFNpbmtHU3RyZWFtZXIuaAppbmRleCBmZDZjYjNiZDI1NzM2NjdhYThkNGZkM2U4Y2Nj
NjI1ZjY0ZjE4YWUxLi4wMTRiNTBjMDJjODhiMTJhNTIxOTNjMzAxMjU3ODI3N2UwYjMxMzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4
dFNpbmtHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuaApAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgX1dl
YktpdFRleHRTaW5rQ2xhc3MgewogICAgIEdzdEJpbkNsYXNzIHBhcmVudENsYXNzOwogfTsKIAot
R3N0RWxlbWVudCogd2Via2l0VGV4dFNpbmtOZXcoV1RGOjpXZWFrUHRyPFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4mJik7CitHc3RFbGVtZW50KiB3ZWJraXRUZXh0U2lua05l
dyhXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4mJik7CiAKIEdf
RU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaAppbmRl
eCAzM2U3YzlhYzU5NWQ0NmYzMGFlZThjZmJlYjg1ZjE2NTMxYjI5OGIwLi42NDliMGY2MmZjNGU0
ZDliMDliMmZhMWU2MzZhMWM2YmE2MWMwMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5oCkBAIC01Myw3ICs1Myw3IEBAIHN0cnVjdCBXZWJLaXRXZWJTcmNDbGFz
cyB7CiB9OwogCiBHVHlwZSB3ZWJraXRfd2ViX3NyY19nZXRfdHlwZSh2b2lkKTsKLXZvaWQgd2Vi
S2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIoV2ViS2l0V2ViU3JjKiwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXIqLCBjb25zdCBXVEY6OlN0cmluZyYpOwordm9pZCB3ZWJLaXRXZWJTcmNTZXRNZWRpYVBsYXll
cihXZWJLaXRXZWJTcmMqLCBXZWJDb3JlOjpNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYpOwog
Ym9vbCB3ZWJLaXRTcmNQYXNzZWRDT1JTQWNjZXNzQ2hlY2soV2ViS2l0V2ViU3JjKik7CiBib29s
IHdlYktpdFNyY1dvdWxkVGFpbnRPcmlnaW4oV2ViS2l0V2ViU3JjKiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuY3BwCmlu
ZGV4IGZiOWQyZWY3MmU1ZmVlNDI2MTM1N2JiMDYwNTYwODk2MTAwMTQwYjYuLjViZDAzYzFiOTc3
OTI2MGY5MDJjMzU5MTVjYjU1YmFkMjYxNzAyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5
VGh1bmRlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3
ZWJraXRNZWRpYVRodW5kZXJEZWNyeXB0RGVidWdDYXRlZ29yeSk7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIE5PVEU6IFlvdVR1YmUgMjAxOSBFTUUgY29uZm9ybWFuY2UgdGVzdHMgZXhwZWN0
IHRoaXMgdG8gYmUgPj01cy4KLWNvbnN0IFdURjo6U2Vjb25kcyBzX2xpY2Vuc2VLZXlSZXNwb25z
ZVRpbWVvdXQgPSBXVEY6OlNlY29uZHMoNik7Citjb25zdCBTZWNvbmRzIHNfbGljZW5zZUtleVJl
c3BvbnNlVGltZW91dCA9IFNlY29uZHMoNik7CiAKIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gQ0RN
UHJveHlUaHVuZGVyOjpnZXREZWNyeXB0aW9uU2Vzc2lvbihEZWNyeXB0aW9uQ29udGV4dCYgaW4p
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRD
b21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcAppbmRleCBjODRmZGYwOTBkZGQ2
OTRkYmE1NTJhNTc1ODk1NjFjMDZmMmZkYmYyLi4xMWRmM2Q3OTdlZThiNDdlOWFhNTRkM2ZhNmQ4
MmVjZjFlYjM4NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
V2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKQEAgLTEwNyw3ICsx
MDcsNyBAQCBzdGF0aWMgdm9pZCBjb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBX
ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmID0gV0VCS0lUX01FRElBX0NF
TkNfREVDUllQVChiYXNlKTsKICAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZBVEUoc2Vs
Zik7Ci0gICAgcHJpdi0+Y2RtUHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb24gPSBX
VEY6Om1ha2VVbmlxdWU8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb24+KHNl
bGYpOworICAgIHByaXYtPmNkbVByb3h5RGVjcnlwdGlvbkNsaWVudEltcGxlbWVudGF0aW9uID0g
bWFrZVVuaXF1ZTxDRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbj4oc2VsZik7
CiB9CiAKIHN0YXRpYyBHc3RDYXBzKiB0cmFuc2Zvcm1DYXBzKEdzdEJhc2VUcmFuc2Zvcm0qIGJh
c2UsIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMqIGNhcHMsIEdzdENhcHMqIGZp
bHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZjkxZjU2OTY1NDhj
MmM0OTI0NDRjMjgwMTZhMWRiZGQ2Y2E4ZWU2Ni4uNWMxNDY4OGE2YmYxYmM3MTNmYTJkZjljMjQ2
ZjFhZDNhMDMyNjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTI2
Niw3ICsyNjYsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpoYW5kbGVFcnJvclN5bmNNZXNzYWdl
KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiBHc3RQYWRQcm9iZVJldHVybiBBcHBlbmRQaXBlbGluZTo6
YXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJvYmVJbmZvKiBwYWRQcm9iZUlu
Zm8pCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9zdHJlYW1pbmdUaHJl
YWQgPSAmV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBtX3N0cmVhbWluZ1RocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKIAogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gR1NUX0JVRkZFUihw
YWRQcm9iZUluZm8tPmRhdGEpOwogICAgIEFTU0VSVChHU1RfSVNfQlVGRkVSKGJ1ZmZlcikpOwpA
QCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OnJlc2V0UGFyc2VyU3RhdGUo
KQogICAgIHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICAvLyBUaGlz
IGlzIGhlcmUgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gSXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0
byBoYXZlIGl0IGFzIGNsYXNzIG1lbWJlci4KLSAgICAgICAgV1RGOjpTdHJpbmcgZG90RmlsZU5h
bWUgPSBtYWtlU3RyaW5nKCJyZXNldC1waXBlbGluZS0iLCArK2kpOworICAgICAgICBTdHJpbmcg
ZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKCJyZXNldC1waXBlbGluZS0iLCArK2kpOwogICAgICAg
ICBnc3RfZGVidWdfYmluX3RvX2RvdF9maWxlKEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSksIEdT
VF9ERUJVR19HUkFQSF9TSE9XX0FMTCwgZG90RmlsZU5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAg
fQogI2VuZGlmCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6cHVzaE5l
d0J1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCiB2b2lkIEFwcGVuZFBpcGVsaW5l
OjpoYW5kbGVBcHBzaW5rTmV3U2FtcGxlRnJvbVN0cmVhbWluZ1RocmVhZChHc3RFbGVtZW50KikK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoJldURjo6VGhyZWFkOjpj
dXJyZW50KCkgIT0gbV9zdHJlYW1pbmdUaHJlYWQpIHsKKyAgICBpZiAoJlRocmVhZDo6Y3VycmVu
dCgpICE9IG1fc3RyZWFtaW5nVGhyZWFkKSB7CiAgICAgICAgIC8vIG1fc3RyZWFtaW5nVGhyZWFk
SWQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgaW4gYXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUo
KS4KICAgICAgICAgLy8gRm9yIGEgYnVmZmVyIHRvIHJlYWNoIHRoZSBhcHBzaW5rLCBhIGJ1ZmZl
ciBtdXN0IGhhdmUgcGFzc2VkIHRocm91Z2ggYXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUo
KSBmaXJzdC4KICAgICAgICAgLy8gVGhpcyBlcnJvciB3aWxsIG9ubHkgcmFpc2UgaWYgc29tZW9u
ZSBtb2RpZmllcyB0aGUgcGlwZWxpbmUgdG8gaW5jbHVkZSBtb3JlIHRoYW4gb25lIHN0cmVhbWlu
ZyB0aHJlYWQgb3IKQEAgLTcxNiw3ICs3MTYsNyBAQCBzdGQ6OnBhaXI8QXBwZW5kUGlwZWxpbmU6
OkNyZWF0ZVRyYWNrUmVzdWx0LCBBcHBlbmRQaXBlbGluZTo6VHJhY2sqPiBBcHBlbmRQaXBlbAog
CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiQ3JlYXRpbmcgbmV3IEFwcGVuZFBp
cGVsaW5lOjpUcmFjayB3aXRoIGlkICclcyciLCB0cmFja0lkLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgIHNpemVfdCBuZXdUcmFja0luZGV4ID0gbV90cmFja3Muc2l6ZSgpOwotICAgIG1f
dHJhY2tzLmFwcGVuZChXVEY6Om1ha2VVbmlxdWU8VHJhY2s+KHRyYWNrSWQsIHN0cmVhbVR5cGUs
IHBhcnNlZENhcHMsIHByZXNlbnRhdGlvblNpemUpKTsKKyAgICBtX3RyYWNrcy5hcHBlbmQobWFr
ZVVuaXF1ZTxUcmFjaz4odHJhY2tJZCwgc3RyZWFtVHlwZSwgcGFyc2VkQ2FwcywgcHJlc2VudGF0
aW9uU2l6ZSkpOwogICAgIFRyYWNrJiB0cmFjayA9ICptX3RyYWNrcy5hdChuZXdUcmFja0luZGV4
KTsKICAgICB0cmFjay5pbml0aWFsaXplRWxlbWVudHModGhpcywgR1NUX0JJTihtX3BpcGVsaW5l
LmdldCgpKSk7CiAgICAgdHJhY2sud2ViS2l0VHJhY2sgPSBtYWtlV2ViS2l0VHJhY2sobmV3VHJh
Y2tJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgKaW5kZXggMjRkMmI3YThmZTFi
ODU0MWQxM2IwMGQzNjVhMWI2Yzc4NzdjMzZkNS4uN2NiM2YzYWZkMDQzYmNhZDNhNjFiNDQzNDlk
NmNmMzVlMGE3ZmEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaApAQCAtMTQwLDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBVc2VkIG9ubHkgZm9yIGFzc2VydGluZyB0aGF0
IHRoZXJlIGlzIG9ubHkgb25lIHN0cmVhbWluZyB0aHJlYWQuCiAgICAgLy8gT25seSB0aGUgcG9p
bnRlcnMgYXJlIGNvbXBhcmVkLgotICAgIFdURjo6VGhyZWFkKiBtX3N0cmVhbWluZ1RocmVhZDsK
KyAgICBUaHJlYWQqIG1fc3RyZWFtaW5nVGhyZWFkOwogCiAgICAgYm9vbCBtX2hhc1JlY2VpdmVk
Rmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9OwogICAgIC8vIFVzZWQgb25seSBm
b3IgYXNzZXJ0aW5nIEVPUyBldmVudHMgYXJlIG9ubHkgY2F1c2VkIGJ5IGRlbXV4aW5nIGVycm9y
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaAppbmRleCA5YjZhYzBkYmJkOTU5ZWI0MWY4
YTY2MmZlOWY3ZjRkYTA0NTNiZWZiLi45MDA4YzE1YzQ2ZDBjN2RmNTg2NTg5Mzg1NjFkOTRhZGE2
NTM3MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCkBAIC04OSw3ICs4OSw3IEBA
IGNsYXNzIENvbXBvc2l0aW9uTGF5ZXIgOiBwdWJsaWMgUGxhdGZvcm1MYXllciB7CiBwdWJsaWM6
CiAgICAgY2xhc3MgSW1wbCB7CiAgICAgcHVibGljOgotICAgICAgICB1c2luZyBGYWN0b3J5ID0g
V1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4odWludDY0X3QsIENvbXBvc2l0aW9u
TGF5ZXImKT47CisgICAgICAgIHVzaW5nIEZhY3RvcnkgPSBGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9w
dHI8SW1wbD4odWludDY0X3QsIENvbXBvc2l0aW9uTGF5ZXImKT47CiAKICAgICAgICAgdmlydHVh
bCB+SW1wbCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJlTWFwcGVySW1wbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zMzAsNyArMzMwLDcgQEAgY2xhc3MgQ29udGVudExh
eWVyIDogcHVibGljIFBsYXRmb3JtTGF5ZXIgewogcHVibGljOgogICAgIGNsYXNzIEltcGwgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgdXNpbmcgRmFjdG9yeSA9IFdURjo6RnVuY3Rpb248c3RkOjp1
bmlxdWVfcHRyPEltcGw+KENvbnRlbnRMYXllciYpPjsKKyAgICAgICAgdXNpbmcgRmFjdG9yeSA9
IEZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxJbXBsPihDb250ZW50TGF5ZXImKT47CiAKICAgICAg
ICAgdmlydHVhbCB+SW1wbCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJlTWFwcGVy
SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zNTUsNyArMzU1LDcgQEAgY2xhc3Mg
QmFja2luZ1N0b3JlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEJhY2tpbmdTdG9yZT4g
ewogcHVibGljOgogICAgIGNsYXNzIEltcGwgewogICAgIHB1YmxpYzoKLSAgICAgICAgdXNpbmcg
RmFjdG9yeSA9IFdURjo6RnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPEltcGw+KEJhY2tpbmdTdG9y
ZSYpPjsKKyAgICAgICAgdXNpbmcgRmFjdG9yeSA9IEZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxJ
bXBsPihCYWNraW5nU3RvcmUmKT47CiAKICAgICAgICAgdmlydHVhbCB+SW1wbCgpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJlTWFwcGVySW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CkBAIC0zNzksNyArMzc5LDcgQEAgY2xhc3MgSW1hZ2VCYWNraW5nIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEltYWdlQmFja2luZz4gewogcHVibGljOgogICAgIGNsYXNzIEltcGwg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgdXNpbmcgRmFjdG9yeSA9IFdURjo6RnVuY3Rpb248c3Rk
Ojp1bmlxdWVfcHRyPEltcGw+KEltYWdlQmFja2luZyYpPjsKKyAgICAgICAgdXNpbmcgRmFjdG9y
eSA9IEZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxJbXBsPihJbWFnZUJhY2tpbmcmKT47CiAKICAg
ICAgICAgdmlydHVhbCB+SW1wbCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJlTWFw
cGVySW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgK
aW5kZXggNjQ5ZjkzODNjZjRlZDQ4NTQ0Y2FkYTE2YjRjNjc4YjBiN2ZkMTFiYy4uZDlmMTVmNDVi
ZGZiNGUxYmJlOGQzOTM2MzViNjBhYWQxZDJkOTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYpIG92
ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgU3RyaW5nIGdldEV4dGVuc2lvbnMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNzFmMTJiOTNkZmEwYzZk
Yzk1YWQ1M2M4YzZiMDJkNDJiYWY3YzA1Yi4uODVkZGVmOTNmM2M2Y2ZiNzkzM2RhMDk4YTk1Y2E5
ZWMzODJkZWIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAg
LTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogCiAgICAgZm9yIChjb25z
dCBzdGQ6OnBhaXI8QU5HTEVTaGFkZXJTeW1ib2xUeXBlLCBzaDo6U2hhZGVyVmFyaWFibGU+JiBw
YWlyIDogc3ltYm9scykgewogICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSA9IHBhaXIu
c2Vjb25kLm5hbWU7Ci0gICAgICAgIGVudHJ5LnN5bWJvbE1hcChwYWlyLmZpcnN0KS5zZXQoU3Ry
aW5nKG5hbWUuY19zdHIoKSwgbmFtZS5sZW5ndGgoKSksIFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8c2g6OlNoYWRlclZhcmlhYmxlPihwYWlyLnNlY29uZCkpOworICAg
ICAgICBlbnRyeS5zeW1ib2xNYXAocGFpci5maXJzdCkuc2V0KFN0cmluZyhuYW1lLmNfc3RyKCks
IG5hbWUubGVuZ3RoKCkpLCBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxzaDo6
U2hhZGVyVmFyaWFibGU+KHBhaXIuc2Vjb25kKSk7CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAyZWVhNTQ1ZDIwYzM3NjEx
MjM5M2U1MGM1Yjg0ZDE0ZGNjMWNiYWVhLi4zODI3M2IwNzJiNTZkM2ZkYTJiY2RlMzQ4YjNlMGY3
NDJjMjAwNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtOTUsNyAr
OTUsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIGNsYXNzIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZv
cm1MYXllcjsKICNlbmRpZgogCi10eXBlZGVmIFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1aW50NjRf
dD4gU2hhZGVyTmFtZUhhc2g7Cit0eXBlZGVmIEhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNo
YWRlck5hbWVIYXNoOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAogewpAQCAtNzEzLDkgKzcxMyw5IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgdXNpbmcgQm91bmRUZXh0dXJlTWFwID0gSGFzaE1hcDxHQ0dMZW51
bSwKICAgICAgICAgICAgIHN0ZDo6cGFpcjxHQ0dMdWludCwgR0NHTGVudW0+LAotICAgICAgICAg
ICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwKKyAgICAgICAgICAgIEludEhhc2g8R0NHTGVudW0+
LAogICAgICAgICAgICAgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWlu
dD4sCi0gICAgICAgICAgICBXVEY6OlBhaXJIYXNoVHJhaXRzPFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPEdDR0x1aW50Pj4KKyAgICAgICAgICAgIFBhaXJIYXNoVHJhaXRzPFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPEdDR0x1aW50Pj4KICAgICAgICAgPjsKICAgICAgICAgQm91bmRUZXh0dXJlTWFw
IGJvdW5kVGV4dHVyZU1hcDsKICAgICAgICAgR0NHTHVpbnQgY3VycmVudEJvdW5kVGV4dHVyZSgp
IGNvbnN0IHsgcmV0dXJuIGJvdW5kVGV4dHVyZShhY3RpdmVUZXh0dXJlVW5pdCk7IH0KQEAgLTc0
MSw3ICs3NDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYm91bmRUZXh0dXJlTWFwLnNldCh0
ZXh0dXJlVW5pdCwgc3RkOjptYWtlX3BhaXIodGV4dHVyZSwgdGFyZ2V0KSk7CiAgICAgICAgIH0K
IAotICAgICAgICB1c2luZyBUZXh0dXJlU2VlZENvdW50ID0gSGFzaENvdW50ZWRTZXQ8R0NHTHVp
bnQsIFdURjo6SW50SGFzaDxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8R0NHTHVpbnQ+PjsKKyAgICAgICAgdXNpbmcgVGV4dHVyZVNlZWRDb3VudCA9IEhhc2hD
b3VudGVkU2V0PEdDR0x1aW50LCBJbnRIYXNoPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+OwogICAgICAgICBUZXh0dXJlU2VlZENvdW50IHRl
eHR1cmVTZWVkQ291bnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmgK
aW5kZXggMGMxMzQxODM4Njg5ZTEyYTQ3YTY3NmQ5YzFmYWJhYTZhMGVmY2MzZC4uMGFhMjNhMWNh
NDExODQzYjdiYWJlNDIyOGViYjgyY2JlZTI5ZDk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdM
U2V0dGluZy5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHZhbHVl
IHVwb24gZGVzdHJ1Y3Rpb24sIG1ha2luZyBpdCBhbiBhbHRlcm5hdGl2ZSB0byBjaGVja2luZywg
Y2xlYXJpbmcsIGFuZCByZXNldHRpbmcgZWFjaCBmbGFnCiAvLyBhdCBhbGwgb2YgYSBibG9jaydz
IGV4aXQgcG9pbnRzLgogLy8KLS8vIEJhc2VkIG9uIFdURjo6U2V0Rm9yU2NvcGU8PgorLy8gQmFz
ZWQgb24gU2V0Rm9yU2NvcGU8PgogCiBjbGFzcyBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZW1wb3JhcnlPcGVuR0xTZXR0aW5nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggOTQ0ZmQ3ZWY3
YjVkMzQ5YTBiMmU2NTNkNzg3MjExYTMyYWZjYWI0Ni4uZTI4NTFjMmUzZDIyMTc3MTY5NGJkZDZm
MTJmMGU1Zjc4OTljNzU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHAKQEAgLTEwNiw5ICsxMDYsOSBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dAogICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBHcmFwaGlj
c0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwogI2VuZGlmCiAjaWYgVVNFKE5JQ09TSUEp
Ci0gICAgbV9uaWNvc2lhTGF5ZXIgPSBXVEY6Om1ha2VVbmlxdWU8Tmljb3NpYTo6R0NHTEFOR0xF
TGF5ZXI+KCp0aGlzKTsKKyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6
R0NHTEFOR0xFTGF5ZXI+KCp0aGlzKTsKICNlbHNlCi0gICAgbV90ZXhtYXBMYXllciA9IFdURjo6
bWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI+KCp0aGlzKTsKKyAgICBt
X3RleG1hcExheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI+
KCp0aGlzKTsKICNlbmRpZgogICAgIGJvb2wgc3VjY2VzcyA9IG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRB
dHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCmluZGV4IDg0NGFiNjJmMmY4YTIzN2Nh
Zjk0MGM5ZjA5ZTI2MzczYTdmYzJmOGQuLjEzODRjNmIxMTRlNzllYmM3MmRkMjU3Y2YwNTU4MjFm
YzRhNDYzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXMuY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgV1RGOjpUaHJlYWRTcGVjaWZpYzxUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM+JiB0
aHJlYWRTcGVjaWZpY0F0dHJpYnV0ZXMoKQorc3RhdGljIFRocmVhZFNwZWNpZmljPFRleHR1cmVN
YXBwZXJDb250ZXh0QXR0cmlidXRlcz4mIHRocmVhZFNwZWNpZmljQXR0cmlidXRlcygpCiB7Ci0g
ICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWM8VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1
dGVzPiogc190ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM7CisgICAgc3RhdGljIFRocmVh
ZFNwZWNpZmljPFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcz4qIHNfdGV4dHVyZU1hcHBl
ckNvbnRleHRBdHRyaWJ1dGVzOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29uY2VGbGFn
OwogICAgIHN0ZDo6Y2FsbF9vbmNlKHNfb25jZUZsYWcsCiAgICAgICAgIFtdIHsKLSAgICAgICAg
ICAgIHNfdGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzID0gbmV3IFdURjo6VGhyZWFkU3Bl
Y2lmaWM8VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzPjsKKyAgICAgICAgICAgIHNfdGV4
dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzID0gbmV3IFRocmVhZFNwZWNpZmljPFRleHR1cmVN
YXBwZXJDb250ZXh0QXR0cmlidXRlcz47CiAgICAgICAgIH0pOwogICAgIHJldHVybiAqc190ZXh0
dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggMDQyMjNmMjA2MzQxY2Y1NTU0NjlmOTVh
YmUxZjczMTAzN2M5MmM4Ny4uYjA0ZjljNmI5N2E2OWE2OGVmM2E4ZDhhMjFhYzc2NTA5ZTJkMTBj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNw
cApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6ZHJvcEN1cnJlbnRCdWZmZXJXaGlsZVByZXNlcnZpbmdUZXh0dXJlKGJvCiAgICAgICAgIFt0
aGlzLCBzaG91bGRXYWl0XSB7CiAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAKLSAgICAgICAgICAgIGF1dG8gbWF5YmVOb3RpZnlTeW5jaHJvbm91c09wZXJhdGlvbiA9IFdU
Rjo6bWFrZVNjb3BlRXhpdChbdGhpcywgc2hvdWxkV2FpdF0oKSB7CisgICAgICAgICAgICBhdXRv
IG1heWJlTm90aWZ5U3luY2hyb25vdXNPcGVyYXRpb24gPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCBz
aG91bGRXYWl0XSgpIHsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkV2FpdCkgewogICAgICAg
ICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV93YXNCdWZmZXJEcm9wcGVkTG9jayB9Owog
ICAgICAgICAgICAgICAgICAgICBtX3dhc0J1ZmZlckRyb3BwZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCAyZGI2NmMxYmVkMmJiZWI4ZmZiMjNk
NzVhZjczMjg2Mjg5N2YxMGFiLi42ZWRmMzlmODRkZWQ3NmZlNDBhY2RjNmZjMmMzNDVlZWQ4NDVl
MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaApAQCAtMTM2LDcg
KzEzNiw3IEBAIHByaXZhdGU6CiAgICAgR0x1aW50IGdldExvY2F0aW9uKFZhcmlhYmxlSUQsIEFT
Q0lJTGl0ZXJhbCwgVmFyaWFibGVUeXBlKTsKIAogICAgIEdMdWludCBtX2lkOwotICAgIEhhc2hN
YXA8VmFyaWFibGVJRCwgR0x1aW50LCBXVEY6OkludEhhc2g8VmFyaWFibGVJRD4sIFdURjo6U3Ry
b25nRW51bUhhc2hUcmFpdHM8VmFyaWFibGVJRD4+IG1fdmFyaWFibGVzOworICAgIEhhc2hNYXA8
VmFyaWFibGVJRCwgR0x1aW50LCBJbnRIYXNoPFZhcmlhYmxlSUQ+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPFZhcmlhYmxlSUQ+PiBtX3ZhcmlhYmxlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0
aW9ucy5jcHAKaW5kZXggZGYzM2Y1MjVkOTg1ODE5MWJhYTI1NTgyYjUwNzJmOTQ4Mzk0OWRlYi4u
NTQ0YTUwN2JjYjRmNzk5Zjk5MzliZTVlMmY1NzE4MjhiNzQ1NDcyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0
aW9ucy5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCBzdGF0aWMgdm9pZCBkcmF3V2l0aFNoYWRvd0hl
bHBlcihJRDJEMVJlbmRlclRhcmdldCogY29udGV4dCwgSUQyRDFCaXRtYXBSZW5kZXJUYQogICAg
IGNvbnRleHQtPkRyYXdCaXRtYXAoY3JvcHBlZC5nZXQoKSk7CiB9CiAKLXZvaWQgZHJhd1dpdGhT
aGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgRmxvYXRSZWN0
IGJvdW5kaW5nUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpCit2b2lkIGRyYXdX
aXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIEZsb2F0
UmVjdCBib3VuZGluZ1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwgRnVuY3Rp
b248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYmIGRyYXdDb21tYW5kcykKIHsKICAgICBpZiAo
IXNoYWRvd1N0YXRlLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgIGRyYXdXaXRob3V0U2hhZG93KHBs
YXRmb3JtQ29udGV4dCwgV1RGTW92ZShkcmF3Q29tbWFuZHMpKTsKQEAgLTY5NCw3ICs2OTQsNyBA
QCB2b2lkIGRyYXdXaXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNv
bnRleHQsIEZsb2F0UmVjdCBib3VuZGluZwogICAgIHBsYXRmb3JtQ29udGV4dC5ub3RpZnlQb3N0
RHJhd09ic2VydmVyKCk7CiB9CiAKLXZvaWQgZHJhd1dpdGhvdXRTaGFkb3coUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVu
ZGVyVGFyZ2V0Kik+JiYgZHJhd0NvbW1hbmRzKQordm9pZCBkcmF3V2l0aG91dFNoYWRvdyhQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBGdW5jdGlvbjx2b2lkKElEMkQx
UmVuZGVyVGFyZ2V0Kik+JiYgZHJhd0NvbW1hbmRzKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5u
b3RpZnlQcmVEcmF3T2JzZXJ2ZXIoKTsKICAgICBkcmF3Q29tbWFuZHMocGxhdGZvcm1Db250ZXh0
LnJlbmRlclRhcmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAppbmRleCA0N2UyOTkzNjA3YWQ1MWZl
YmFhNmNjNzJkZmMyNjUxMzcwMzI0NzdmLi42NGIxZWI3NjBkYWM1NDY5NzI2M2I0YTkyMDRlZGYz
ZGIxMjVmYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCkBAIC0xMzIsOCArMTMyLDggQEAgdm9pZCBk
cmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0bWFwKiwg
Y29uc3QgRmxvYXRTaXplJgogdm9pZCBkcmF3UGF0aChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYs
IGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwog
dm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIENPTVB0cjxJRDJEMUJp
dG1hcD4mJiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlKTsKIAotdm9pZCBkcmF3V2l0aG91dFNoYWRvdyhQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCYsIFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYm
IGRyYXdDb21tYW5kcyk7Ci12b2lkIGRyYXdXaXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVj
dDJEJiwgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpOwordm9pZCBk
cmF3V2l0aG91dFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIEZ1bmN0aW9uPHZvaWQo
SUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpOwordm9pZCBkcmF3V2l0aFNoYWRv
dyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QsIGNvbnN0
IFNoYWRvd1N0YXRlJiwgRnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYmIGRyYXdD
b21tYW5kcyk7CiAKIHZvaWQgZHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25z
dCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29uc3QgQ29s
b3ImKTsKIHZvaWQgZHJhd0xpbmUoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFN0cm9rZVN0eWxlLCBjb25zdCBDb2xvciYsIGZs
b2F0LCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAKaW5kZXggMGJkNzA3ZjFjNTVm
MmY2NGJhMzI2MTczOTdjZmIxYTI3MTMzODE5MC4uYTQzMjJhNGRlZmYyYWQ4NWEzNzYwYzBmYTc3
NmQ0NmQyMDQ3Y2ZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAKQEAgLTEzNCw4ICsx
MzQsOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9O
VD4gaGZvbnQsIENURm9udFJlZiBjdEZvbnQsIENHRgogdW5zaWduZWQgRm9udFBsYXRmb3JtRGF0
YTo6aGFzaCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZm9udEhhc2ggPSBtX2ZvbnQgPyBtX2Zv
bnQtPmhhc2goKSA6IDA7Ci0gICAgQ0ZIYXNoQ29kZSBjZ0ZvbnRIYXNoID0gV1RGOjpzYWZlQ0ZI
YXNoKG1fY2dGb250LmdldCgpKTsKLSAgICBDRkhhc2hDb2RlIGN0Rm9udEhhc2ggPSBXVEY6OnNh
ZmVDRkhhc2gobV9jdEZvbnQuZ2V0KCkpOworICAgIENGSGFzaENvZGUgY2dGb250SGFzaCA9IHNh
ZmVDRkhhc2gobV9jZ0ZvbnQuZ2V0KCkpOworICAgIENGSGFzaENvZGUgY3RGb250SGFzaCA9IHNh
ZmVDRkhhc2gobV9jdEZvbnQuZ2V0KCkpOwogICAgIHVpbnRwdHJfdCBoYXNoQ29kZXNbXSA9IHsg
Zm9udEhhc2gsIGNnRm9udEhhc2gsIGN0Rm9udEhhc2gsIG1fdXNlR0RJIH07CiAgICAgcmV0dXJu
IFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsK
IH0KQEAgLTE0Myw4ICsxNDMsOCBAQCB1bnNpZ25lZCBGb250UGxhdGZvcm1EYXRhOjpoYXNoKCkg
Y29uc3QKIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBtX2ZvbnQgPT0gb3RoZXIu
bV9mb250Ci0gICAgICAgICYmIFdURjo6c2FmZUNGRXF1YWwobV9jZ0ZvbnQuZ2V0KCksIG90aGVy
Lm1fY2dGb250LmdldCgpKQotICAgICAgICAmJiBXVEY6OnNhZmVDRkVxdWFsKG1fY3RGb250Lmdl
dCgpLCBvdGhlci5tX2N0Rm9udC5nZXQoKSkKKyAgICAgICAgJiYgc2FmZUNGRXF1YWwobV9jZ0Zv
bnQuZ2V0KCksIG90aGVyLm1fY2dGb250LmdldCgpKQorICAgICAgICAmJiBzYWZlQ0ZFcXVhbCht
X2N0Rm9udC5nZXQoKSwgb3RoZXIubV9jdEZvbnQuZ2V0KCkpCiAgICAgICAgICYmIG1fdXNlR0RJ
ID09IG90aGVyLm1fdXNlR0RJOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcApp
bmRleCBiZTJmYzYxOGE3MTdlMjdkMWFhYjhmNDRjNmQwNmY4MmMwY2EzMWFkLi45Yjc3ZTJhZjg0
YjRhNTA1ZWY5ZjgzYmFhNWIzYjIwOTk5ZmU1NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxEaXJlY3QyRExh
eWVyVHlwZT4gbV9jbGlwczsKIH07CiAKLVBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBwcmVEcmF3SGFuZGxlciwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
cG9zdERyYXdIYW5kbGVyKQorUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4
dERpcmVjdDJEKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIEZ1bmN0aW9uPHZvaWQo
KT4mJiBwcmVEcmF3SGFuZGxlciwgRnVuY3Rpb248dm9pZCgpPiYmIHBvc3REcmF3SGFuZGxlcikK
ICAgICA6IG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKICAgICAsIG1fcHJlRHJhd0hhbmRs
ZXIoV1RGTW92ZShwcmVEcmF3SGFuZGxlcikpCiAgICAgLCBtX3Bvc3REcmF3SGFuZGxlcihXVEZN
b3ZlKHBvc3REcmF3SGFuZGxlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCmluZGV4IDZj
ZTZmNmUyMThmMDBkOGQ0MTY2YmRiYjgwN2FlNjVmMDgzNmFjNjMuLmI2ZWUxMWNiMzE2MTNlMGI2
Njk3NTg3ODQyODFhNmY2NmZiNTJkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCkBA
IC00OSw3ICs0OSw3IEBAIGNsYXNzIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCk7CiBwdWJsaWM6Ci0gICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQoSUQy
RDFSZW5kZXJUYXJnZXQqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwcmVEcmF3SGFuZGxlciA9
IFtdKCkgeyB9LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwb3N0RHJhd0hhbmRsZXIgPSBbXSgp
IHsgfSk7CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQoSUQyRDFSZW5kZXJUYXJnZXQqLCBG
dW5jdGlvbjx2b2lkKCk+JiYgcHJlRHJhd0hhbmRsZXIgPSBbXSgpIHsgfSwgRnVuY3Rpb248dm9p
ZCgpPiYmIHBvc3REcmF3SGFuZGxlciA9IFtdKCkgeyB9KTsKICAgICB+UGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQoKTsKIAogICAgIElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQoKSB7IHJl
dHVybiBtX3JlbmRlclRhcmdldC5nZXQoKTsgfQpAQCAtMTM1LDggKzEzNSw4IEBAIHByaXZhdGU6
CiAKICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IG1fY29tcG9zaXRlU291cmNlOwogCi0gICAgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+IG1fcHJlRHJhd0hhbmRsZXI7Ci0gICAgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+IG1fcG9zdERyYXdIYW5kbGVyOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9wcmVEcmF3
SGFuZGxlcjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fcG9zdERyYXdIYW5kbGVyOwogCiAgICAg
Y2xhc3MgU3RhdGU7CiAgICAgU3RhdGUqIG1fc3RhdGUgeyBudWxscHRyIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0LmgK
aW5kZXggNGNlMzY3YjZkNWY4MTlhNTlkYjgyNTViMzRiZWJkMGFkZTJhYWU4Yy4uMTg3MDQwOTk0
Y2M5ZmE0YmM3NTYyNzk3YTExNDczNGFiMTdkODQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBXVEY6OlB0ckhhc2g8VD46Omhhc2gobV9vYmplY3QuZ2V0KCkpOworICAgICAg
ICByZXR1cm4gUHRySGFzaDxUPjo6aGFzaChtX29iamVjdC5nZXQoKSk7CiAgICAgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAppbmRleCBlZGVk
N2U4ZGQyM2FiYjM2MGU4ZGFiNDQzNWYzMTIwOTM4YTVlZTQxLi40ODM4NGQwMmE5MWU1ZmNmODJj
ZmU1MjRkZDRkZjM3NmEwMjJhNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ3Vyc29yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vy
c29yR3RrLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNF
KEdUSzQpCiBzdGF0aWMgR1JlZlB0cjxHZGtDdXJzb3I+IGZhbGxiYWNrQ3Vyc29yKCkKIHsKLSAg
ICBzdGF0aWMgV1RGOjpOZXZlckRlc3Ryb3llZDxHUmVmUHRyPEdka0N1cnNvcj4+IGN1cnNvcihh
ZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXdfZnJvbV9uYW1lKCJkZWZhdWx0IiwgbnVsbHB0cikpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1JlZlB0cjxHZGtDdXJzb3I+PiBjdXJzb3IoYWRv
cHRHUmVmKGdka19jdXJzb3JfbmV3X2Zyb21fbmFtZSgiZGVmYXVsdCIsIG51bGxwdHIpKSk7CiAg
ICAgcmV0dXJuIGN1cnNvcjsKIH0KICNlbmRpZiAvLyBVU0UoR1RLNCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKaW5kZXggNmJjMWQ1NDdkMzE5OWQ1ZjIy
OGFiYjUxZDM0NDA4YTk4NGU2NzdmYy4uN2IwZDZkZTk4YjM4MzNjNmUyMmI5NTk3MGI5YzU1OGM0
MDMyYjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5j
cHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBXYWxsVGltZSB3YWxsVGltZUZvckV2ZW50KGNvbnN0IEdk
a0V2ZW50KiBldmVudCkKICAgICAvLyBUaGlzIHdvcmtzIGlmIGFuZCBvbmx5IGlmIHRoZSBYIHNl
cnZlciBvciBXYXlsYW5kIGNvbXBvc2l0b3IgaGFwcGVucyB0bwogICAgIC8vIGJlIHVzaW5nIENM
T0NLX01PTk9UT05JQyBmb3IgaXRzIG1vbm90b25pYyB0aW1lLCBhbmQgc28gbG9uZyBhcwogICAg
IC8vIGdfZ2V0X21vbm90b25pY190aW1lKCkgY29udGludWVzIHRvIGRvIHNvIGFzIHdlbGwsIGFu
ZCBzbyBsb25nIGFzCi0gICAgLy8gV1RGOjpNb25vdG9uaWNUaW1lIGNvbnRpbnVlcyB0byB1c2Ug
Z19nZXRfbW9ub3RvbmljX3RpbWUoKS4KKyAgICAvLyBNb25vdG9uaWNUaW1lIGNvbnRpbnVlcyB0
byB1c2UgZ19nZXRfbW9ub3RvbmljX3RpbWUoKS4KICNpZiBVU0UoR1RLNCkKICAgICBhdXRvIHRp
bWUgPSBnZGtfZXZlbnRfZ2V0X3RpbWUoY29uc3RfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSk7CiAj
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2Ny
ZWVuR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHAKaW5kZXggN2EzYjQ3MjNmNDhjMTc5ODY0YjJkZDZkNWIxZWQ4ZDI3NDkyMzU4ZS4uODA5
NThiYTU2NWE4NzcyMjRkMGVkMzdlNGU0MDU3YjRiZTBkZGUyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCkBAIC0xNDEsOSArMTQx
LDkgQEAgZG91YmxlIHNjcmVlbkRQSSgpCiAgICAgcmV0dXJuIGNhY2hlZERwaTsKIH0KIAotc3Rh
dGljIFdURjo6SGFzaE1hcDx2b2lkKiwgRnVuY3Rpb248dm9pZCgpPj4mIHNjcmVlbkRQSU9ic2Vy
dmVySGFuZGxlcnNNYXAoKQorc3RhdGljIEhhc2hNYXA8dm9pZCosIEZ1bmN0aW9uPHZvaWQoKT4+
JiBzY3JlZW5EUElPYnNlcnZlckhhbmRsZXJzTWFwKCkKIHsKLSAgICBzdGF0aWMgV1RGOjpOZXZl
ckRlc3Ryb3llZDxXVEY6Okhhc2hNYXA8dm9pZCosIEZ1bmN0aW9uPHZvaWQoKT4+PiBoYW5kbGVy
c01hcDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDx2b2lkKiwgRnVuY3Rpb248
dm9pZCgpPj4+IGhhbmRsZXJzTWFwOwogICAgIHJldHVybiBoYW5kbGVyc01hcDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaAppbmRleCA5OTM4Y2ViMzgwZTE3OGI0ZTc2MWQwY2ZjZjZhMWRhNmZl
OWIzMmJmLi5jYTE0ZTdhYjFmY2ZmNmY5YmIxYzQxYmE5NjJkNTQ4OTFkYzU3N2UwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudE1vZGUubW9kZSgpOyB9CiAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJl
UGxheWJhY2soKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFj
azsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dWaWRlb1Bp
Y3R1cmVJblBpY3R1cmUoKSBjb25zdDsKLSAgICB2b2lkIHByZXBhcmVGb3JQaWN0dXJlSW5QaWN0
dXJlU3RvcChXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQg
cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wKEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2Fs
bGJhY2spOwogICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAg
ICAgYm9vbCBpblBpY3R1cmVJblBpY3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2VudGVyaW5nUGlj
dHVyZUluUGljdHVyZSB8fCBtX2N1cnJlbnRNb2RlLmhhc1BpY3R1cmVJblBpY3R1cmUoKTsgfQpA
QCAtMTgzLDcgKzE4Myw3IEBAIHByb3RlY3RlZDoKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBtX3Bh
cmVudFZpZXc7CiAgICAgUmV0YWluUHRyPFVJV2luZG93PiBtX3BhcmVudFdpbmRvdzsKICAgICBS
ZXRhaW5QdHI8V2ViQVZQbGF5ZXJMYXllclZpZXc+IG1fcGxheWVyTGF5ZXJWaWV3OwotICAgIFdU
Rjo6RnVuY3Rpb248dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKKyAgICBG
dW5jdGlvbjx2b2lkKGJvb2wpPiBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrOwogICAgIFJ1bkxv
b3A6OlRpbWVyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX3dhdGNoZG9nVGltZXI7
CiAgICAgRmxvYXRSZWN0IG1faW5saW5lUmVjdDsKICAgICBSb3V0ZVNoYXJpbmdQb2xpY3kgbV9y
b3V0ZVNoYXJpbmdQb2xpY3kgeyBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3Bw
CmluZGV4IDcyMDQxZTllMWZlOWZlOWQ1NmFlMjc3YjcwZjhkZThiZjZhM2JmN2MuLmExOTEwY2Uz
OTE1MWEyYjVmZjhmOTJmOWNkMzdhYTAzNzVjYjg2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIHByaXZhdGU6CiAKIGV4dGVybiAiQyIgewogCi10eXBlZGVmIFdURjo6VmVjdG9yPFdl
YlRocmVhZEJsb2NrPiBXZWJUaHJlYWRSdW5RdWV1ZTsKK3R5cGVkZWYgVmVjdG9yPFdlYlRocmVh
ZEJsb2NrPiBXZWJUaHJlYWRSdW5RdWV1ZTsKIAogc3RhdGljIExvY2sgcnVuUXVldWVNdXRleDsK
IHN0YXRpYyBXZWJUaHJlYWRSdW5RdWV1ZSogcnVuUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKaW5kZXggYTQ3ZTM0M2Y0ZGNhMDM2
ZmVhZWZkM2MxMGQ1ZjI0MGUzNGI5ZjBkYi4uZjVhMGZhNzA0OTg5ZGNhMzJhMDY5NjVjMTBmOTAy
YmNlYjQ1NDc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2Vy
T2JzZXJ2ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9i
c2VydmVyTWFjLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93
ZXJPbkhhbmRlcikKK1Bvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoRnVuY3Rpb248dm9pZCgp
PiYmIHBvd2VyT25IYW5kZXIpCiAgICAgOiBtX3Bvd2VyT25IYW5kZXIoV1RGTW92ZShwb3dlck9u
SGFuZGVyKSkKICAgICAsIG1fcG93ZXJDb25uZWN0aW9uKDApCiAgICAgLCBtX25vdGlmaWNhdGlv
blBvcnQobnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNl
cnZlck1hYy5oCmluZGV4IGE4MGI2MjA3NWMwMWRjMTQ5ZjgzMTFjNzQ5NGM4MTMyOWFjNjA1OTMu
LjEwZTcxN2MxYzk2ZmZkMTE0N2UwNDZlZTcwYzcyZTFkZjBiYzE2MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaApAQCAtMzgsMTMgKzM4LDEz
IEBAIGNsYXNzIFBvd2VyT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvd2Vy
T2JzZXJ2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIFBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93ZXJPbkhh
bmRlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgUG93ZXJPYnNlcnZlcihGdW5jdGlvbjx2b2lkKCk+
JiYgcG93ZXJPbkhhbmRlcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBvd2VyT2JzZXJ2ZXIoKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeXN0ZW1Qb3dlck5vdGlmaWNhdGlvbihp
b19zZXJ2aWNlX3QsIHVpbnQzMl90IG1lc3NhZ2VUeXBlLCB2b2lkKiBtZXNzYWdlQXJndW1lbnQp
OwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRlcjsKKyAgICBGdW5j
dGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRlcjsKICAgICBpb19jb25uZWN0X3QgbV9wb3dlckNv
bm5lY3Rpb247CiAgICAgSU9Ob3RpZmljYXRpb25Qb3J0UmVmIG1fbm90aWZpY2F0aW9uUG9ydDsK
ICAgICBpb19vYmplY3RfdCBtX25vdGlmaWVyUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMv
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oCmluZGV4IDMxODU5ZDE5ZjRhNjE3YTc0
Y2Q5NTRjZjEyNzVhY2JmOTNlYzQ5MzguLjZhNDNjZjc2YWI0NWNiYTM3Yzg4NWVmOWM5NDU0MjA4
YWZlYzVkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJp
bGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5LmgKQEAgLTM4LDggKzM4LDggQEAgc3RydWN0IE1lZGlhRW5jb2RpbmdDb25maWd1cmF0
aW9uOwogCiBjbGFzcyBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5IHsKIHB1YmxpYzoK
LSAgICB1c2luZyBEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYmKT47Ci0gICAgdXNpbmcgRW5jb2Rp
bmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmls
aXRpZXNFbmNvZGluZ0luZm8mJik+OworICAgIHVzaW5nIERlY29kaW5nQ29uZmlndXJhdGlvbkNh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYmKT47
CisgICAgdXNpbmcgRW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPjsKIAogICAgIHN0YXRpYyBib29sIGhh
c0RlY29kaW5nQ29uZmlndXJhdGlvbkZhY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBoYXNFbmNv
ZGluZ0NvbmZpZ3VyYXRpb25GYWN0b3J5KCk7CkBAIC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24o
TWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJh
Y2smJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY3JlYXRlRW5jb2RpbmdDb25m
aWd1cmF0aW9uKE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYsIEVuY29kaW5nQ29uZmlndXJh
dGlvbkNhbGxiYWNrJiYpOwogICAgIAotICAgIHVzaW5nIENyZWF0ZURlY29kaW5nQ29uZmlndXJh
dGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmLCBE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYmKT47Ci0gICAgdXNpbmcgQ3JlYXRlRW5jb2Rp
bmdDb25maWd1cmF0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhRW5jb2RpbmdDb25maWd1
cmF0aW9uJiYsIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpPjsKKyAgICB1c2luZyBD
cmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24gPSBGdW5jdGlvbjx2b2lkKE1lZGlhRGVjb2RpbmdD
b25maWd1cmF0aW9uJiYsIERlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpPjsKKyAgICB1
c2luZyBDcmVhdGVFbmNvZGluZ0NvbmZpZ3VyYXRpb24gPSBGdW5jdGlvbjx2b2lkKE1lZGlhRW5j
b2RpbmdDb25maWd1cmF0aW9uJiYsIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpPjsK
IAogICAgIHN0cnVjdCBNZWRpYUVuZ2luZUZhY3RvcnkgewogICAgICAgICBDcmVhdGVEZWNvZGlu
Z0NvbmZpZ3VyYXRpb24gY3JlYXRlRGVjb2RpbmdDb25maWd1cmF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDk3MThhNGI2NDNkYWI2OGU2MjcxZjNl
ZDE4Y2NkZDZlMGU0ZTFkNzguLmY5NWQ4ZjAxYWZhZWI0OGFlYjgwMWEzNjJlZTQ2NDFiMjYyNDQx
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAgLTExOSw3
ICsxMTksNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZUJ1ZmZlcgogICAgIG1fd3JpdGVyLT5hcHBlbmRW
aWRlb1NhbXBsZUJ1ZmZlcihzYW1wbGVCdWZmZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbDo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1l
JiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUmIG1lZGlhVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQp
CiB7CiAgICAgQVNTRVJUKGlzPFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkpOwogICAgIEFTU0VS
VChkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkudHlwZSA9PSBQbGF0Zm9ybURlc2Ny
aXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oCmluZGV4IGM2NTk1NWQzZWQ4MDNmOWEzZDk3NGM0MzBjYzdkYTQzYjRlMmFl
YTcuLjM4Yjk0ZjllNGVhYzRkZjQzNWFjMDIzZDI4MzA1MDQzZTFiOTI3MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgog
ICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJs
ZShNZWRpYVNhbXBsZSYpIGZpbmFsOwogICAgIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6
TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRSZWNvcmRp
bmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNw
cAppbmRleCBmODIxNWMwZTBlYzkwODkyYmVhYjU5OGMxYzMxMGE2NDYzNTFiNDkwLi4xZWZhNzBi
OTA1MTBkYmZlYTM3MTM5ZGI5ZmE4YzYwMTZkNGM1MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZU1vY2suY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpCiAgICAgZ2VuZXJhdGVN
b2NrQ291bnRlclN0cmluZygpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KQordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBzaXplX3QpCiB7CiAgICAgLy8gSGVhcCBhbGxvY2F0aW9ucyBhcmUgZm9yYmlk
ZGVuIG9uIHRoZSBhdWRpbyB0aHJlYWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgc28gd2UgbmVl
ZCB0bwogICAgIC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZvbGxvd2luZyBhbGxvY2F0aW9uKHMp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmgKaW5kZXggNDljYWRiZGZhMjEwYWQ4YmQ1
MGJlZDU0NGY1ODczZmE1YjA3ZDAxMi4uZDQ4NGIyZmNlYTFlODRhZWU5YmY4MWUwZGUyNjI3NDJm
ZDIyOTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5oCkBAIC00NCw3ICs0NCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gTWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJikgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEo
RmV0Y2hEYXRhQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFi
bGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAg
dm9pZCBwYXVzZVJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVzdW1lUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLmE0YWQy
ODQwYTJkNmRhNWMzMmRjNDUxMGI2ODlhODZmYjk5OGJhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICB+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKTsKIAogICAgIHZvaWQg
YXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmKTsKLSAgICB2b2lkIGFwcGVuZEF1
ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKKyAgICB2b2lk
IGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IE1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAg
dm9pZCBzdG9wUmVjb3JkaW5nKCk7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
LmNwcAppbmRleCBmZTc2OTdmODU3YzM1OGM5MWNhMGZmY2E1YmYwY2NiYzc3NGFmMmE5Li4xZmQw
MjNkODA0OTQ2MzEyMTNmMmNmMTA1MTNmNDFiNmM1ODgyMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcApA
QCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IFN0cmluZyYg
U3RyaW5nQ29uc3RyYWludDo6ZmluZChjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgU3Ry
aW5nJik+JiBmaWx0ZXIpIGNvbnN0Citjb25zdCBTdHJpbmcmIFN0cmluZ0NvbnN0cmFpbnQ6OmZp
bmQoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGZpbHRlcikgY29uc3QKIHsK
ICAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtX2V4YWN0KSB7CiAgICAgICAgIGlmIChmaWx0
ZXIoY29uc3RyYWludCkpCkBAIC0xODAsNyArMTgwLDcgQEAgY29uc3QgTWVkaWFDb25zdHJhaW50
KiBGbGF0dGVuZWRDb25zdHJhaW50OjpmaW5kKE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSkgY29u
c3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcDo6Zm9yRWFjaChXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFDb25zdHJhaW50Jik+
JiYgY2FsbGJhY2spIGNvbnN0Cit2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmb3JF
YWNoKEZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFDb25zdHJhaW50Jik+JiYgY2FsbGJhY2spIGNv
bnN0CiB7CiAgICAgZmlsdGVyKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qg
TWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2so
Y29uc3RyYWludCk7CkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcDo6Zm9yRWFjaChXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFDb25zdHJhaW4K
ICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6ZmlsdGVyKGNv
bnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKT4mIGNhbGxiYWNr
KSBjb25zdAordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6ZmlsdGVyKGNvbnN0IEZ1
bmN0aW9uPGJvb2woY29uc3QgTWVkaWFDb25zdHJhaW50Jik+JiBjYWxsYmFjaykgY29uc3QKIHsK
ICAgICBpZiAobV93aWR0aCAmJiAhbV93aWR0aC0+aXNFbXB0eSgpICYmIGNhbGxiYWNrKCptX3dp
ZHRoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhZGREZWZhdWx0VmlkZW9Db25zdHJhaW50cyhNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cCYgdmlkZW9DCiAgICAgfQogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHM6OmlzQ29uc3RyYWlu
dFNldChjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRT
ZXRNYXAmKT4mIGNhbGxiYWNrKQorYm9vbCBNZWRpYUNvbnN0cmFpbnRzOjppc0NvbnN0cmFpbnRT
ZXQoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYp
PiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGNhbGxiYWNrKG1hbmRhdG9yeUNvbnN0cmFpbnRzKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKaW5kZXggZTJhYWYyNzcxMDI2Y2MxOGI3
ODBkOWE3ODYxYWMzMTkxNDU0N2ZiYy4uYmEwMjhmNGRiZGZkMTllYjEyYTZjN2ZlYzZjYTA0NDg2
OTY1MTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFDb25zdHJhaW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHMuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgVmFsdWVUeXBlIGZpbmQoY29uc3QgV1RGOjpG
dW5jdGlvbjxib29sKFZhbHVlVHlwZSk+JiBmdW5jdGlvbikgY29uc3QKKyAgICBWYWx1ZVR5cGUg
ZmluZChjb25zdCBGdW5jdGlvbjxib29sKFZhbHVlVHlwZSk+JiBmdW5jdGlvbikgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmIChtX21pbiAmJiBmdW5jdGlvbihtX21pbi52YWx1ZSgpKSkKICAgICAg
ICAgICAgIHJldHVybiBtX21pbi52YWx1ZSgpOwpAQCAtNTkyLDcgKzU5Miw3IEBAIHB1YmxpYzoK
ICAgICBkb3VibGUgZml0bmVzc0Rpc3RhbmNlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGRv
dWJsZSBmaXRuZXNzRGlzdGFuY2UoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKIAotICAg
IGNvbnN0IFN0cmluZyYgZmluZChjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5n
Jik+JikgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBmaW5kKGNvbnN0IEZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nJik+JikgY29uc3Q7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX2V4YWN0LmlzRW1wdHkoKSAmJiBtX2lkZWFsLmlzRW1wdHkoKTsgfQogICAgIGJvb2wg
aXNNYW5kYXRvcnkoKSBjb25zdCB7IHJldHVybiAhbV9leGFjdC5pc0VtcHR5KCk7IH0KQEAgLTY0
OSw4ICs2NDksOCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoKFdURjo6RnVuY3Rp
b248dm9pZChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKT4mJikgY29uc3Q7Ci0gICAgdm9pZCBmaWx0
ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpPiYpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaChGdW5jdGlvbjx2b2lkKGNvbnN0
IE1lZGlhQ29uc3RyYWludCYpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZpbHRlcihjb25zdCBGdW5j
dGlvbjxib29sKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpPiYpIGNvbnN0OwogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAK
QEAgLTg5NCw3ICs4OTQsNyBAQCBwcml2YXRlOgogCiBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50cyB7
CiAgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Db25zdHJhaW50cygpOwotICAgIGJvb2wgaXNDb25z
dHJhaW50U2V0KGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcCYpPiYpOworICAgIGJvb2wgaXNDb25zdHJhaW50U2V0KGNvbnN0IEZ1bmN0aW9u
PGJvb2woY29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmKT4mKTsKIAogICAgIE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeUNvbnN0cmFpbnRzOwogICAgIFZlY3RvcjxN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRDb25zdHJhaW50czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuaAppbmRleCAwNGE1ZmJkMjBkNWQ1OTA1MTY5NmE5NGMxZGI3MmUxNGIwMjMwYTNjLi5k
ZWNkOTA3OTY3YjM5YWU5ZWE2NWIyNzFlNjUzNjkzYjY0ZjRlYjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oCkBAIC0yMjIsNyArMjIyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2UoVHlwZSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGV2aWNlSUQgPSB7IH0s
IFN0cmluZyYmIGhhc2hTYWx0ID0geyB9KTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRh
c2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJlZFRh
c2soRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbmZpZ3Vy
YXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcAppbmRleCBlZWZiMWM5MTkzYmI5YzlhMDM2YmRlZmJjNTBiZTk2YTYw
OTU1MzRmLi5lMDhiNTI5ZjgyYmJjY2Q2NjZjMzM1N2FhN2U3NzU0NDdlZDA1NmEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEdTdHJlYW1lckRpc3BsYXlDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbAog
ewogICAgIG1fZGV2aWNlcy5jbGVhcigpOwogCi0gICAgQ2FwdHVyZURldmljZSBzY3JlZW5DYXB0
dXJlRGV2aWNlKFdURjo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VTdHJpbmcoIkNhcHR1cmUgU2NyZWVuIikpOworICAg
IENhcHR1cmVEZXZpY2Ugc2NyZWVuQ2FwdHVyZURldmljZShjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2Fw
dHVyZSBTY3JlZW4iKSk7CiAgICAgc2NyZWVuQ2FwdHVyZURldmljZS5zZXRFbmFibGVkKHRydWUp
OwogICAgIG1fZGV2aWNlcy5hcHBlbmQoV1RGTW92ZShzY3JlZW5DYXB0dXJlRGV2aWNlKSk7CiAg
ICAgY2FsbGJhY2soKTsKQEAgLTc2LDggKzc2LDggQEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgR1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVMK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBhdXRvIHRva2VuID0gbWFrZVN0cmlu
ZygiV2ViS2l0IiwgV1RGOjp3ZWFrUmFuZG9tVWludDMyKCkpOwotICAgIGF1dG8gc2Vzc2lvblRv
a2VuID0gbWFrZVN0cmluZygiV2ViS2l0IiwgV1RGOjp3ZWFrUmFuZG9tVWludDMyKCkpOworICAg
IGF1dG8gdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCB3ZWFrUmFuZG9tVWludDMyKCkpOwor
ICAgIGF1dG8gc2Vzc2lvblRva2VuID0gbWFrZVN0cmluZygiV2ViS2l0Iiwgd2Vha1JhbmRvbVVp
bnQzMigpKTsKICAgICBHVmFyaWFudEJ1aWxkZXIgb3B0aW9uczsKICAgICBnX3ZhcmlhbnRfYnVp
bGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKICAgICBnX3Zhcmlh
bnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsIGdfdmFyaWFu
dF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7CkBAIC0xMDAsNyArMTAwLDcgQEAg
Q2FwdHVyZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVMKICAgICAvLyBGSVhNRTogTWF5YmUgY2hlY2sgdGhpcyBk
ZXBlbmRpbmcgb24gZGV2aWNlLnR5cGUoKS4KICAgICBhdXRvIG91dHB1dFR5cGUgPSBHU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OlBpcGVXaXJlT3V0cHV0VHlwZTo6TW9uaXRv
ciB8IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6UGlwZVdpcmVPdXRwdXRU
eXBlOjpXaW5kb3c7CiAKLSAgICB0b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6d2Vh
a1JhbmRvbVVpbnQzMigpKTsKKyAgICB0b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIHdlYWtS
YW5kb21VaW50MzIoKSk7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmb3B0aW9ucywgR19W
QVJJQU5UX1RZUEVfVkFSRElDVCk7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRpb25z
LCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyh0b2tlbi5hc2Np
aSgpLmRhdGEoKSkpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntzdn0i
LCAidHlwZXMiLCBnX3ZhcmlhbnRfbmV3X3VpbnQzMihzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3V0
cHV0VHlwZSkpKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBHU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZURpc3BsYXlDYXB0dXJlUwog
ICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKG8pIiwgJm9iamVjdFBhdGgub3V0UHRy
KCkpOwogICAgIHdhaXRSZXNwb25zZVNpZ25hbChvYmplY3RQYXRoLmdldCgpKTsKIAotICAgIHRv
a2VuID0gbWFrZVN0cmluZygiV2ViS2l0IiwgV1RGOjp3ZWFrUmFuZG9tVWludDMyKCkpOworICAg
IHRva2VuID0gbWFrZVN0cmluZygiV2ViS2l0Iiwgd2Vha1JhbmRvbVVpbnQzMigpKTsKICAgICBn
X3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsK
ICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90b2tl
biIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7CiAgICAgcmVz
dWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMobV9wcm94eS5nZXQoKSwgIlN0
YXJ0IiwKQEAgLTE1NCw3ICsxNTQsNyBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJE
aXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZURpc3BsYXlDYXB0dXJlUwogICAgIGdf
dmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKGgpIiwgJmZkT3V0KTsKICAgICBmZCA9IGdfdW5p
eF9mZF9saXN0X2dldChmZExpc3QuZ2V0KCksIGZkT3V0LCBudWxscHRyKTsKIAotICAgIGF1dG8g
c2Vzc2lvbiA9IFdURjo6bWFrZVVuaXF1ZTxHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1h
bmFnZXI6OlNlc3Npb24+KGZkLCBXVEZNb3ZlKHNlc3Npb25QYXRoKSk7CisgICAgYXV0byBzZXNz
aW9uID0gbWFrZVVuaXF1ZTxHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OlNl
c3Npb24+KGZkLCBXVEZNb3ZlKHNlc3Npb25QYXRoKSk7CiAgICAgbV9zZXNzaW9ucy5hZGQoZGV2
aWNlLnBlcnNpc3RlbnRJZCgpLCBXVEZNb3ZlKHNlc3Npb24pKTsKICAgICByZXR1cm4gR1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZpY2UucGVyc2lz
dGVudElkKCkuaXNvbGF0ZWRDb3B5KCksIGZkLCB7IH0sIGNvbnN0cmFpbnRzLCBkZXZpY2UudHlw
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9NZWRpYVN0cmVhbVRyYWNrQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1UcmFja0F1ZGlvU291
cmNlUHJvdmlkZXJDb2NvYS5oCmluZGV4IDc3NWIxNTZlZTk2MDdmNzllMWM0MTk3MjYyODM4OTI0
YWI3MmVkZGQuLjVmNmNmNDFhZmZiODU5MjM5NGZmZjRmODM3OTA0ZTdmOGY3MTI2OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRpYVN0cmVh
bVRyYWNrQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVy
Q29jb2EuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIC8vIFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJDb2NvYQogICAgIHZvaWQgaGFzTmV3Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJD
bGllbnQqKSBmaW5hbDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBXVEY6OkxvZ2dl
ckhlbHBlciYgbG9nZ2VySGVscGVyKCkgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0K
KyAgICBMb2dnZXJIZWxwZXImIGxvZ2dlckhlbHBlcigpIGZpbmFsIHsgcmV0dXJuIG1fc291cmNl
LmdldCgpOyB9CiAjZW5kaWYKIAogICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNl
cnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5oCmluZGV4IDdmYzA3
MjVmYmJmYTNmYTZlYjIyYzdmNGQxYTA5ZWRkYTk1NzRmMTQuLjk0M2E4ZGE2ZTAxYTQwYmMyYjQw
MzExNTUyZTNiMzIzYTUxNTk0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckNvY29hLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgaGFzTmV3Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqKSA9IDA7CiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdmlydHVhbCBXVEY6OkxvZ2dlckhlbHBlciYg
bG9nZ2VySGVscGVyKCkgPSAwOworICAgIHZpcnR1YWwgTG9nZ2VySGVscGVyJiBsb2dnZXJIZWxw
ZXIoKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEF1ZGlvU291cmNlUHJvdmlkZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmlu
ZGV4IGZlMzI3NTk2YTJmMGRiZTM2ZDFkNjgyZmZiOTQ0YjI0OTcxYjAwYjIuLjJmYTc1ZTA1N2E1
M2Q3ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtODgsNyArODgsNyBA
QCBwcml2YXRlOgogICAgICAgICBQZXJtaXNzaW9uU3RhdGVBbGxvd2VkLAogICAgICAgICBQZXJt
aXNzaW9uU3RhdGVEZW5pZWQsCiAgICAgfSBtX3Blcm1pc3Npb25TdGF0ZTsKLSAgICB0eXBlZGVm
IFdURjo6SGFzaFNldDxSZWZQdHI8R2VvbG9jYXRpb24+ID4gR2VvbG9jYXRpb25TZXQ7CisgICAg
dHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4+IEdlb2xvY2F0aW9uU2V0OwogICAg
IEdlb2xvY2F0aW9uU2V0IG1fcGVuZGluZ1Blcm1pc3Npb247CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnlNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lQ29uZmln
dXJhdGlvbkZhY3RvcnlNb2NrLmgKaW5kZXggODFkODIxMzBmODM5YjlkMTI3NzUzMjQ1NDdiY2U5
ZmY3MWIwNzg3Zi4uYjc4YzQ0YjY0Nzg2ZTIxNDBkYTM0MWE1YjI2MmUzM2ViNzFhNjc3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeU1vY2suaApAQCAtMzcsOCArMzcsOCBAQCBzdHJ1
Y3QgTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgTWVkaWFFbmNvZGluZ0NvbmZp
Z3VyYXRpb247CiAKIHN0cnVjdCBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jayB7
Ci0gICAgdXNpbmcgRGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+OwotICAgIHVzaW5nIEVuY29k
aW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJp
bGl0aWVzRW5jb2RpbmdJbmZvJiYpPjsKKyAgICB1c2luZyBEZWNvZGluZ0NvbmZpZ3VyYXRpb25D
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+
OworICAgIHVzaW5nIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbyYmKT47CiAKICAgICBzdGF0aWMgdm9pZCBj
cmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiwg
RGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CiAgICAgc3RhdGljIHZvaWQgY3JlYXRl
RW5jb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYsIEVuY29k
aW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwCmluZGV4IGQ2Y2Yw
MjgyYmJhYmU4OTJhN2M0MDBiNzRkZDhkYTE1ZTBmZjEzZmIuLjU5NmJlZWI2MTMzYTA2YmIzOGU1
M2NmNTc3YTM4OTljYWRjZGUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9jay5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6OlNj
cm9sbGJhcnNDb250cm9sbGVyTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIFdU
Rjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBsb2dnZXIpCitTY3JvbGxiYXJzQ29u
dHJvbGxlck1vY2s6OlNjcm9sbGJhcnNDb250cm9sbGVyTW9jayhTY3JvbGxhYmxlQXJlYSYgc2Ny
b2xsYWJsZUFyZWEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgbG9nZ2VyKQogICAg
IDogU2Nyb2xsYmFyc0NvbnRyb2xsZXIoc2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX2xvZ2dlcihX
VEZNb3ZlKGxvZ2dlcikpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suaAppbmRleCBhNDczMzkzMTEyZDg0YWE1M2Vk
MmI2NzllZmYwODQ2NzMzYjg4MmJmLi5jYjMwMzZhNTg5MDI5NzQ2ZmYwNDI5MzM4NjZiZjhjN2Vl
ODcxMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJh
cnNDb250cm9sbGVyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Ny
b2xsYmFyc0NvbnRyb2xsZXJNb2NrLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU2Nyb2xsYmFy
c0NvbnRyb2xsZXJNb2NrIGZpbmFsIDogcHVibGljIFNjcm9sbGJhcnNDb250cm9sbGVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3Jv
bGxiYXJzQ29udHJvbGxlck1vY2spOwogcHVibGljOgotICAgIFNjcm9sbGJhcnNDb250cm9sbGVy
TW9jayhTY3JvbGxhYmxlQXJlYSYsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4m
Jik7CisgICAgU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrKFNjcm9sbGFibGVBcmVhJiwgRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyc0NvbnRy
b2xsZXJNb2NrKCk7CiAKIHByaXZhdGU6CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBtb3VzZUlzRG93bkluU2Nyb2xsYmFyKFNjcm9sbGJhciosIGJvb2wpIGNvbnN0IGZpbmFs
OwogICAgIGNvbnN0IGNoYXIqIHNjcm9sbGJhclByZWZpeChTY3JvbGxiYXIqKSBjb25zdDsKIAot
ICAgIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9sb2dnZXI7CisgICAgRnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9sb2dnZXI7CiAgICAgU2Nyb2xsYmFyKiBtX3Zl
cnRpY2FsU2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogICAgIFNjcm9sbGJhciogbV9ob3Jpem9udGFs
U2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDcwMjU5NDQ3MWFkM2Q4NGRh
NjI0NTA1ZTZhYTJkNmZkODJhMmUwNjIuLjY3YTc2Mjk1ZDg1ZjM5MWM4M2IyNDAwZTZkMWZlNTc5
Y2NkZWQ4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIGJvb2wgQmxvYlJlZ2lzdHJ5
SW1wbDo6cG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bG9iVVJMCiAKIHN0YXRpYyBib29sIHdyaXRlRmlsZVBhdGhzT3JEYXRhQnVmZmVyc1RvRmlsZShj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgVGhyZWFkU2FmZURhdGFCdWZmZXI+PiYgZmls
ZVBhdGhzT3JEYXRhQnVmZmVycywgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUs
IGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VT
Y29wZUV4aXQoW2ZpbGVdKCkgbXV0YWJsZSB7CisgICAgYXV0byBmaWxlQ2xvc2VyID0gbWFrZVNj
b3BlRXhpdChbZmlsZV0oKSBtdXRhYmxlIHsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGUpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q29va2llU3RvcmFnZS5oCmluZGV4IDc2NTYyOWRmMThlZjQyYjc5NTdiZmI3MDMwZjgxMWIwMTEx
M2NkMDQuLmQ5YTAyYTU2YTZkNmYyMGQ5NzQ1NGMzN2Q4MTBjYTY4OGRlMzY0YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oCkBAIC0zMSw3
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOwogCi1XRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wT2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmluZGV4IDk0
NzI4NjNiM2IwMWYwOTMxYzFjOTQ0NDU3YmI0YjRjZmU4NGNmNWUuLmE5YjI5ZDU5ZTlhYTNiNDY1
NTQxNWJkOGJlZjA5ODRjNTQ0YjczZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0IFJlc3Vs
dCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiB9OwogCi11c2luZyBEZWNvZGVDb21wbGV0
aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxSZXN1bHQ+KT47
Cit1c2luZyBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRp
b25hbDxSZXN1bHQ+KT47CiBzdHJ1Y3QgU2NoZWR1bGVDb250ZXh0IHsKICNpZiBVU0UoQ09DT0Ff
RVZFTlRfTE9PUCkKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVkdWxlZFBhaXJzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCAy
ZmVmZDgwZDkxYWRhNjU2NzVjZjdlYTI4ZTI5OGNmY2JjMjIwMGQ0Li5mM2Y4N2E0ZjdlOWJiOGU3
NzY3YTllODkxNTdiN2IyZTYzYzNlN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBUcnVlIGlmIGNoYXJhY3RlcnMgd2hpY2ggc2F0aXNmeSB0aGUgcHJlZGljYXRl
IGFyZSBwcmVzZW50LCBpbmNyZW1lbnRpbmcKIC8vICJwb3MiIHRvIHRoZSBuZXh0IGNoYXJhY3Rl
ciB3aGljaCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUuCiAvLyBOb3RlOiBtaWdodCBy
ZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKS4KLXN0YXRpYyBpbmxpbmUgYm9vbCBza2lwV2hpbGUo
Y29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3MsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9v
bChjb25zdCBVQ2hhcik+JiBwcmVkaWNhdGUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2tpcFdoaWxl
KGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCYgcG9zLCBjb25zdCBGdW5jdGlvbjxib29sKGNv
bnN0IFVDaGFyKT4mIHByZWRpY2F0ZSkKIHsKICAgICBjb25zdCB1bnNpZ25lZCBzdGFydCA9IHBv
czsKICAgICBjb25zdCB1bnNpZ25lZCBsZW4gPSBzdHIubGVuZ3RoKCk7CkBAIC0yMDQsNyArMjA0
LDcgQEAgYm9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAjaWYgVVNF
KEdMSUIpCiAvLyBUcnVlIGlmIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIHNh
dGlzaWZpZXMgYSBwcmVkaWNhdGUsIGluY3JlbWVudGluZyAicG9zIiBieSBvbmUuCiAvLyBOb3Rl
OiBNaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKQotc3RhdGljIGlubGluZSBib29sIHNr
aXBDaGFyYWN0ZXIoY29uc3QgU3RyaW5nJiB2YWx1ZSwgdW5zaWduZWQmIHBvcywgV1RGOjpGdW5j
dGlvbjxib29sKGNvbnN0IFVDaGFyKT4mJiBwcmVkaWNhdGUpCitzdGF0aWMgaW5saW5lIGJvb2wg
c2tpcENoYXJhY3Rlcihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNpZ25lZCYgcG9zLCBGdW5jdGlv
bjxib29sKGNvbnN0IFVDaGFyKT4mJiBwcmVkaWNhdGUpCiB7CiAgICAgaWYgKHBvcyA8IHZhbHVl
Lmxlbmd0aCgpICYmIHByZWRpY2F0ZSh2YWx1ZVtwb3NdKSkgewogICAgICAgICArK3BvczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90
aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5jcHAKaW5kZXggNDNiODExYzM5MzJkY2E0YTYxYWFkMDdjYTlkNTEzNWE1ZGU4ZmM4
ZC4uN2U5MWZhZjVjMjZhYjdmZTMwNTAzMjkxNjU2ODM1NmYyOTRjOGZiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmll
ci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6b25MaW5l
KCkKICAgICByZXR1cm4gbV9pc09uTGluZS52YWx1ZV9vcih0cnVlKTsKIH0KIAotdm9pZCBOZXR3
b3JrU3RhdGVOb3RpZmllcjo6YWRkTGlzdGVuZXIoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGxpc3RlbmVyKQordm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTGlzdGVuZXIoRnVuY3Rp
b248dm9pZChib29sKT4mJiBsaXN0ZW5lcikKIHsKICAgICBBU1NFUlQobGlzdGVuZXIpOwogICAg
IGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKaW5kZXggM2ZjMjU5ODY4YjZj
YjQ4NmY3NDE0ZmRiMmExZDBmMjZlY2YxNWM3MS4uODM4MGUyMThkODczNmFhMmQ5YTk1OTI0ZDEy
OWQ2MWU0NGJjOTQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5ldHdvcmtTdGF0ZU5vdGlmaWVyJiBzaW5nbGV0b24o
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb25MaW5lKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRMaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBpc09uTGluZSk+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTGlzdGVuZXIoRnVuY3Rpb248dm9pZChib29s
IGlzT25MaW5lKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE5l
dHdvcmtTdGF0ZU5vdGlmaWVyPjsKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2lzT25MaW5lOwotICAgIFZlY3RvcjxXVEY6OkZ1
bmN0aW9uPHZvaWQoYm9vbCk+PiBtX2xpc3RlbmVyczsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9p
ZChib29sKT4+IG1fbGlzdGVuZXJzOwogICAgIFRpbWVyIG1fdXBkYXRlU3RhdGVUaW1lcjsKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKaW5kZXggZjNkNzQ0ZmRl
YjYwMWFkMmE5OTVjYmVjNjUwM2YyODcyNjI0YWZlMS4uZGExNzM0NGUyNDk4NjRhZTczOTE2YmQ1
ZDFmZjg2Y2M3N2JkZDllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcApAQCAtMzcsOSArMzcsOSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBIYXNoTWFwPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+JiBjb29raWVDaGFuZ2VDYWxsYmFja01hcCgp
CitzdGF0aWMgSGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBGdW5jdGlvbjx2b2lkKCk+
PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+
PiBtYXA7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZiwgRnVuY3Rpb248dm9pZCgpPj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCkBA
IC02Myw3ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZSdW5Mb29wUmVmIGNvb2tpZVN0b3JhZ2VP
YnNlcnZlclJ1bkxvb3AoKQogICAgIHJldHVybiBsb2FkZXJSdW5Mb29wKCk7CiB9CiAKLXZvaWQg
c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFn
ZVNlc3Npb24sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBzdGFydE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lv
biwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCmluZGV4IGMyMmQ5MzcwM2JlNGE2Y2Ew
MWFiM2QyMjQ4ZmI3M2Y5YTJkMGRjZjUuLmFjNTM0OTllNzJhNjExYmQ1NDA5MWNiMWNhYmFlYzU5
ZGU5OGY4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaApAQCAtNTIsNyArNTIsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxOU0hUVFBDb29raWVTdG9yYWdlPiBtX2Nvb2tpZVN0b3Jh
Z2U7CiAgICAgYm9vbCBtX2hhc1JlZ2lzdGVyZWRJbnRlcm5hbHNGb3JOb3RpZmljYXRpb25zIHsg
ZmFsc2UgfTsKICAgICBSZXRhaW5QdHI8V2ViQ29va2llT2JzZXJ2ZXJBZGFwdGVyPiBtX29ic2Vy
dmVyQWRhcHRlcjsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb29raWVDaGFuZ2VDYWxs
YmFjazsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fY29va2llQ2hhbmdlQ2FsbGJhY2s7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCA4ZWNhZWRjNDNmMzUyYmU4MDVm
NjFhMTZmMzdjZDUyZDZiOGZkNGJiLi45NWQ3NjhhY2UwODBiMmY2NjI1OTE1MTU0MWNhY2I4OWQx
NGJjMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5jcHAKQEAgLTUxMSw3ICs1MTEsNyBAQCBib29sIENvb2tpZUphckRCOjpj
YW5BY2NlcHRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgYwogYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQog
ewogICAgIGF1dG8gZXhwaXJlcyA9IGNvb2tpZS5leHBpcmVzLnZhbHVlX29yKDAuMCk7Ci0gICAg
aWYgKCFjb29raWUuc2Vzc2lvbiAmJiBNb25vdG9uaWNUaW1lOjpmcm9tUmF3U2Vjb25kcyhleHBp
cmVzIC8gV1RGOjptc1BlclNlY29uZCkgPD0gTW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgaWYg
KCFjb29raWUuc2Vzc2lvbiAmJiBNb25vdG9uaWNUaW1lOjpmcm9tUmF3U2Vjb25kcyhleHBpcmVz
IC8gbXNQZXJTZWNvbmQpIDw9IE1vbm90b25pY1RpbWU6Om5vdygpKQogICAgICAgICByZXR1cm4g
ZGVsZXRlQ29va2llSW50ZXJuYWwoY29va2llLm5hbWUsIGNvb2tpZS5kb21haW4sIGNvb2tpZS5w
YXRoKTsKIAogICAgIGF1dG8mIHN0YXRlbWVudCA9IHByZXBhcmVkU3RhdGVtZW50KFNFVF9DT09L
SUVfU1FMKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCBib29sIENvb2tpZUphckRCOjpzZXRDb29raWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJgogICAg
IGlmIChjYXBwZWRMaWZldGltZSAmJiBjb29raWUtPmV4cGlyZXMpIHsKICAgICAgICAgQVNTRVJU
KCpjYXBwZWRMaWZldGltZSA+PSAwX3MpOwogICAgICAgICBhdXRvIGNhcHBlZEV4cGlyZXMgPSBX
YWxsVGltZTo6bm93KCkgKyAqY2FwcGVkTGlmZXRpbWU7Ci0gICAgICAgIGlmIChjYXBwZWRFeHBp
cmVzIDwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCpjb29raWUtPmV4cGlyZXMgLyBXVEY6Om1z
UGVyU2Vjb25kKSkKKyAgICAgICAgaWYgKGNhcHBlZEV4cGlyZXMgPCBXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHMoKmNvb2tpZS0+ZXhwaXJlcyAvIG1zUGVyU2Vjb25kKSkKICAgICAgICAgICAgIGNv
b2tpZS0+ZXhwaXJlcyA9IGNhcHBlZEV4cGlyZXMuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNl
Y29uZHMoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVTdG9yYWdlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llU3RvcmFnZUN1cmwuY3BwCmluZGV4IGUyZWZhNTRkNmE0Yjdi
NzM3YjU1MTRkOThlNjZjODk5ZjNhYjZmZjUuLjVlM2FkZjBhNzA1MzQ4MmMzYjM5ZGE1Yzk2ZWQ3
YWVlMmYzOWYxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVTdG9yYWdlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVN0b3JhZ2VDdXJsLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKQordm9pZCBzdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgRnVuY3Rpb248
dm9pZCgpPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKaW5kZXggMWFlMzg5
MDlmYzE2Nzg0MTc1OGY4ZDI1M2EzMjZjMDQ2NTVkZjg3ZC4uMzY1Zjc2NmEyYTA5ZTVjNTE4MDE5
NDYwMmZmNWIzMzA0YWQ5NmM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApAQCAtNjEsNyArNjEsNyBAQCBib29sIGRvbWFp
bk1hdGNoKGNvbnN0IFN0cmluZyYgY29va2llRG9tYWluLCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7
CiAgICAgc2l6ZV90IGluZGV4ID0gaG9zdC5maW5kKGNvb2tpZURvbWFpbik7CiAKLSAgICBib29s
IHRhaWxNYXRjaCA9IChpbmRleCAhPSBXVEY6Om5vdEZvdW5kICYmIGluZGV4ICsgY29va2llRG9t
YWluLmxlbmd0aCgpID09IGhvc3QubGVuZ3RoKCkpOworICAgIGJvb2wgdGFpbE1hdGNoID0gKGlu
ZGV4ICE9IG5vdEZvdW5kICYmIGluZGV4ICsgY29va2llRG9tYWluLmxlbmd0aCgpID09IGhvc3Qu
bGVuZ3RoKCkpOwogCiAgICAgLy8gQ2hlY2sgaWYgaG9zdCBlcXVhbHMgY29va2llIGRvbWFpbi4K
ICAgICBpZiAodGFpbE1hdGNoICYmICFpbmRleCkKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBkb21h
aW5NYXRjaChjb25zdCBTdHJpbmcmIGNvb2tpZURvbWFpbiwgY29uc3QgU3RyaW5nJiBob3N0KQog
CiBzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNlRXhwaXJlc01TKGNvbnN0IGNoYXIq
IGV4cGlyZXMpCiB7Ci0gICAgZG91YmxlIHRtcCA9IFdURjo6cGFyc2VEYXRlRnJvbU51bGxUZXJt
aW5hdGVkQ2hhcmFjdGVycyhleHBpcmVzKTsKKyAgICBkb3VibGUgdG1wID0gcGFyc2VEYXRlRnJv
bU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhleHBpcmVzKTsKICAgICBpZiAoaXNuYW4odG1wKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyB2b2lkIHBh
cnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCYgaGFzTWF4
QWdlLCBDb29rCiAKICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmli
dXRlTmFtZSwgIm1heC1hZ2UiKSkgewogICAgICAgICBpZiAoYXV0byBtYXhBZ2VTZWNvbmRzID0g
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50NjRfdD4oYXR0cmlidXRlVmFsdWUp
KSB7Ci0gICAgICAgICAgICByZXN1bHQuZXhwaXJlcyA9IChXYWxsVGltZTo6bm93KCkuc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpICsgKm1heEFnZVNlY29uZHMpICogV1RGOjptc1BlclNlY29u
ZDsKKyAgICAgICAgICAgIHJlc3VsdC5leHBpcmVzID0gKFdhbGxUaW1lOjpub3coKS5zZWNvbmRz
U2luY2VFcG9jaCgpLnZhbHVlKCkgKyAqbWF4QWdlU2Vjb25kcykgKiBtc1BlclNlY29uZDsKICAg
ICAgICAgICAgIHJlc3VsdC5zZXNzaW9uID0gZmFsc2U7CiAKICAgICAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIGEgbWF4LWFnZSBhdHRyaWJ1dGUgYXMgd2VsbCBhcyBhbiBleHBpcmVzIGF0dHJpYnV0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKaW5kZXggMGQ0ODYwOTk5YTAzMDY3NTE3MDc3NzRm
Njg2NzcyYzBmMzU1NzY1Mi4uMjQ1N2JiNGQ3YzJiY2MxNzE4NzVhOTI5ZTRiNzhmNGY4YjE4Yzcx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbChDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCogY2xp
ZW50KQogICAgIGNhbmNlbFRyYW5zZmVyKGNsaWVudCk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3RT
Y2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNr
KQordm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9u
PHZvaWQoKT4mJiB0YXNrKQogewogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0
ZXggfTsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpleGVj
dXRlVGFza3MoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgVmVjdG9y
PFdURjo6RnVuY3Rpb248dm9pZCgpPj4gdGFza1F1ZXVlOworICAgIFZlY3RvcjxGdW5jdGlvbjx2
b2lkKCk+PiB0YXNrUXVldWU7CiAKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211
dGV4IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3RTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCmluZGV4IDIzODk5ZDRkZGQ2MTE2OGM2OThiZTRk
NDMzNDU1MTU1YzQzYzU4YjAuLmRiYzBiZjk5ZDRmNzU2ZWUyNDc0ZDRmMTE5NjhjMjUyMGQyNjAy
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGFkZChDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCopOwogICAgIHZvaWQgY2FuY2Vs
KEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGNhbGxPbldvcmtlclRo
cmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBjYWxsT25Xb3JrZXJUaHJl
YWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0T3JXYWtl
VXBUaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU3RyZWFtLmNwcAppbmRleCAyOTE5MGM3ODk4OTEzZWI0MDgxYTViZjgyZWFiYTMyMDFk
MDQ0NmY1Li5jMDcwNGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdkNjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIEN1cmxTdHJlYW06OkN1cmxTdHJlYW0oQ3VybFN0cmVhbVNjaGVk
dWxlciYgc2NoZWR1bGVyLCBDdXJsU3RyZWFtSUQgc3RyZWFtSUQsIFVSCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2N1cmxIYW5kbGUgPSBXVEY6Om1ha2VVbmlxdWU8
Q3VybEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUgPSBtYWtlVW5pcXVlPEN1cmxIYW5kbGU+
KCk7CiAKICAgICB1cmwuc2V0UHJvdG9jb2wodXJsLnByb3RvY29sSXMoIndzcyIpID8gImh0dHBz
IiA6ICJodHRwIik7CiAgICAgbV9jdXJsSGFuZGxlLT5zZXRVcmwoV1RGTW92ZSh1cmwpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCmlu
ZGV4IGU2NDYyOWZjMjJhMjA5N2EyYWYwYjBjMDEzOWIyM2Q3OTA4Y2YzZGMuLjRmNTliMjBlOGRi
Mjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRmM2EwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEN1cmxTdHJlYW0+IGNyZWF0ZShDdXJs
U3RyZWFtU2NoZWR1bGVyJiBzY2hlZHVsZXIsIEN1cmxTdHJlYW1JRCBzdHJlYW1JRCwgVVJMJiYg
dXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxDdXJsU3RyZWFtPihz
Y2hlZHVsZXIsIHN0cmVhbUlELCBXVEZNb3ZlKHVybCkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDdXJsU3RyZWFtPihzY2hlZHVsZXIsIHN0cmVhbUlELCBXVEZNb3ZlKHVybCkpOwogICAg
IH0KIAogICAgIEN1cmxTdHJlYW0oQ3VybFN0cmVhbVNjaGVkdWxlciYsIEN1cmxTdHJlYW1JRCwg
VVJMJiYpOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEN1cmxIYW5kbGU+IG1fY3VybEhhbmRsZTsKIAotICAgIFdURjo6VmVjdG9yPHN0ZDo6cGFpcjxV
bmlxdWVBcnJheTx1aW50OF90Piwgc2l6ZV90Pj4gbV9zZW5kQnVmZmVyczsKKyAgICBWZWN0b3I8
c3RkOjpwYWlyPFVuaXF1ZUFycmF5PHVpbnQ4X3Q+LCBzaXplX3Q+PiBtX3NlbmRCdWZmZXJzOwog
ICAgIHNpemVfdCBtX3NlbmRCdWZmZXJPZmZzZXQgeyAwIH07CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVk
dWxlci5jcHAKaW5kZXggYjRhOWFiZDQ1MzA3ZTE0YjFiMDA4MGM1ZmQ4NDkwYWNhZjdiYjU5OS4u
ZDk0ZmY0ZjkxNjlhNmMwYjVhZGI5NzE5ZjU1MDZkMGZiODBlNmY4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2No
ZWR1bGVyLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OnNl
bmQoQ3VybFN0cmVhbUlEIHN0cmVhbUlELCBVbmlxdWVBcnJheTx1aW50OF90PiYmIGRhdAogICAg
IH0pOwogfQogCi12b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZChX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQordm9pZCBDdXJsU3RyZWFtU2NoZWR1bGVyOjpj
YWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEN1cmxTdHJlYW1TY2hl
ZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQog
ICAgIHN0YXJ0VGhyZWFkSWZOZWVkZWQoKTsKIH0KIAotdm9pZCBDdXJsU3RyZWFtU2NoZWR1bGVy
OjpjYWxsQ2xpZW50T25NYWluVGhyZWFkKEN1cmxTdHJlYW1JRCBzdHJlYW1JRCwgV1RGOjpGdW5j
dGlvbjx2b2lkKEN1cmxTdHJlYW06OkNsaWVudCYpPiYmIHRhc2spCit2b2lkIEN1cmxTdHJlYW1T
Y2hlZHVsZXI6OmNhbGxDbGllbnRPbk1haW5UaHJlYWQoQ3VybFN0cmVhbUlEIHN0cmVhbUlELCBG
dW5jdGlvbjx2b2lkKEN1cmxTdHJlYW06OkNsaWVudCYpPiYmIHRhc2spCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEN1cmxTdHJlYW1T
Y2hlZHVsZXI6OmV4ZWN1dGVUYXNrcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAKLSAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiB0YXNrUXVldWU7CisgICAgVmVj
dG9yPEZ1bmN0aW9uPHZvaWQoKT4+IHRhc2tRdWV1ZTsKIAogICAgIHsKICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5oCmluZGV4IDdkODgxMjA2Yzk2
ODlmNDMzMjI3OTY5YzliN2Y5ZmYyNjhiZGFhZWQuLjBjMzljOTBhYWM4ODRmY2E0ODg0OTM4OGFj
YzFiNDJiYWQxNmQ2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuaApAQCAtNDIsOCArNDIsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkZXN0cm95U3RyZWFtKEN1cmxTdHJlYW1JRCk7CiAgICAgdm9pZCBz
ZW5kKEN1cmxTdHJlYW1JRCwgVW5pcXVlQXJyYXk8dWludDhfdD4mJiwgc2l6ZV90KTsKIAotICAg
IHZvaWQgY2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICB2
b2lkIGNhbGxDbGllbnRPbk1haW5UaHJlYWQoQ3VybFN0cmVhbUlELCBXVEY6OkZ1bmN0aW9uPHZv
aWQoQ3VybFN0cmVhbTo6Q2xpZW50Jik+JiYpOworICAgIHZvaWQgY2FsbE9uV29ya2VyVGhyZWFk
KEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBjYWxsQ2xpZW50T25NYWluVGhyZWFkKEN1
cmxTdHJlYW1JRCwgRnVuY3Rpb248dm9pZChDdXJsU3RyZWFtOjpDbGllbnQmKT4mJik7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBzdGFydFRocmVhZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuaAppbmRleCAzZGU1NDUxNWNlZjA1OWI0
NzZjYThhYWUyNzBiMTlmZTcyZjE0YjEzLi42NGI2MjAzNTIzNWI1MmY1NWRiMWY3Y2FiY2I0MDVm
YTVmZTNjOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvVVJMU291cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9V
UkxTb3VwLmgKQEAgLTM0LDEwICszNCwxMCBAQCBjbGFzcyBVUkw7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiBVU0UoU09VUDIpCi1XVEY6OlVSTCBzb3VwVVJJVG9VUkwoU291cFVSSSopOwot
R1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmxUb1NvdXBVUkkoY29uc3QgV1RGOjpVUkwmKTsKK1VSTCBz
b3VwVVJJVG9VUkwoU291cFVSSSopOworR1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmxUb1NvdXBVUkko
Y29uc3QgVVJMJik7CiAjZWxzZQotV1RGOjpVUkwgc291cFVSSVRvVVJMKEdVcmkqKTsKLUdSZWZQ
dHI8R1VyaT4gdXJsVG9Tb3VwVVJJKGNvbnN0IFdURjo6VVJMJik7CitVUkwgc291cFVSSVRvVVJM
KEdVcmkqKTsKK0dSZWZQdHI8R1VyaT4gdXJsVG9Tb3VwVVJJKGNvbnN0IFVSTCYpOwogI2VuZGlm
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcAppbmRleCA0NzMzZjk5OGI3NTA3YWUzMTViYWEzMTI2ZDE4NjAx
ZGU2MmUzMDg4Li41MDAzMGI1MmMxODNiMTczZTY5ZmRhMjEzNmFlNjYxZWZlNGNhMmVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTY1
MywxOSArNjUzLDE5IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6OnR1cm5PbkluY3JlbWVudGFsQXV0
b1ZhY3V1bSgpCiAKIHN0YXRpYyB2b2lkIGRlc3Ryb3lDb2xsYXRpb25GdW5jdGlvbih2b2lkKiBh
cmcpCiB7Ci0gICAgYXV0byBmID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjxpbnQoaW50LCBj
b25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKKyAgICBhdXRvIGYgPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+
Kj4oYXJnKTsKICAgICBkZWxldGUgZjsKIH0KIAogc3RhdGljIGludCBjYWxsQ29sbGF0aW9uRnVu
Y3Rpb24odm9pZCogYXJnLCBpbnQgYUxlbmd0aCwgY29uc3Qgdm9pZCogYSwgaW50IGJMZW5ndGgs
IGNvbnN0IHZvaWQqIGIpCiB7Ci0gICAgYXV0byBmID0gc3RhdGljX2Nhc3Q8V1RGOjpGdW5jdGlv
bjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKKyAgICBh
dXRvIGYgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBj
b25zdCB2b2lkKik+Kj4oYXJnKTsKICAgICByZXR1cm4gKCpmKShhTGVuZ3RoLCBhLCBiTGVuZ3Ro
LCBiKTsKIH0KIAotdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0Q29sbGF0aW9uRnVuY3Rpb24oY29u
c3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lLCBXVEY6OkZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZv
aWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4mJiBjb2xsYXRpb25GdW5jdGlvbikKK3ZvaWQgU1FMaXRl
RGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFt
ZSwgRnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPiYmIGNv
bGxhdGlvbkZ1bmN0aW9uKQogewotICAgIGF1dG8gZnVuY3Rpb25PYmplY3QgPSBuZXcgV1RGOjpG
dW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+KFdURk1vdmUo
Y29sbGF0aW9uRnVuY3Rpb24pKTsKKyAgICBhdXRvIGZ1bmN0aW9uT2JqZWN0ID0gbmV3IEZ1bmN0
aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4oV1RGTW92ZShjb2xs
YXRpb25GdW5jdGlvbikpOwogICAgIHNxbGl0ZTNfY3JlYXRlX2NvbGxhdGlvbl92MihtX2RiLCBj
b2xsYXRpb25OYW1lLnV0ZjgoKS5kYXRhKCksIFNRTElURV9VVEY4LCBmdW5jdGlvbk9iamVjdCwg
Y2FsbENvbGxhdGlvbkZ1bmN0aW9uLCBkZXN0cm95Q29sbGF0aW9uRnVuY3Rpb24pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDhlZjdi
YTkwZjM3ZTMzZWUyNWIzMzAwOGEwOWNmNWE1YzAzYTI2NjguLjMyYjgxMjZlZDIyY2QxNWVjZDk1
MDZhZDI5ODVmMTdlNWE5NzY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIGVudW0gQXV0
b1ZhY3V1bVByYWdtYSB7IEF1dG9WYWN1dW1Ob25lID0gMCwgQXV0b1ZhY3V1bUZ1bGwgPSAxLCBB
dXRvVmFjdXVtSW5jcmVtZW50YWwgPSAyIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB0dXJu
T25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lLCBXVEY6OkZ1bmN0
aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxh
dGlvbk5hbWUsIEZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQq
KT4mJik7CiAgICAgdm9pZCByZW1vdmVDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNv
bGxhdGlvbk5hbWUpOwogCiAgICAgLy8gU2V0IHRoaXMgZmxhZyB0byBhbGxvdyBhY2Nlc3MgZnJv
bSBtdWx0aXBsZSB0aHJlYWRzLiAgTm90IGFsbCBtdWx0aS10aHJlYWRlZCBhY2Nlc3NlcyBhcmUg
c2FmZSEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5oCmluZGV4IGZiNzAx
NmIzYzEwMTBkZTBlOGZjNDQ1ZDUzZWIyZDBmMTAwYTExMTkuLjRmYzBhY2YyZDRkMzY3MDgyMDlk
YWEyNDcyNmQzMDM4MGU4NDczOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWMuaApAQCAtNjAsNyArNjAsNyBAQCBGdW5jdGlvbjx2b2lkKFVDaGFyMzIsIFZlY3Rvcjx1
aW50OF90PiYpPiB1bmVuY29kYWJsZUhhbmRsZXIoVW5lbmNvZGFibGVIYW5kbGluZwogCiB1c2lu
ZyBFbmNvZGluZ05hbWVSZWdpc3RyYXIgPSB2b2lkICgqKShjb25zdCBjaGFyKiBhbGlhcywgY29u
c3QgY2hhciogbmFtZSk7CiAKLXVzaW5nIE5ld1RleHRDb2RlY0Z1bmN0aW9uID0gV1RGOjpGdW5j
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPigpPjsKK3VzaW5nIE5ld1RleHRDb2RlY0Z1
bmN0aW9uID0gRnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4oKT47CiB1c2luZyBU
ZXh0Q29kZWNSZWdpc3RyYXIgPSB2b2lkICgqKShjb25zdCBjaGFyKiBuYW1lLCBOZXdUZXh0Q29k
ZWNGdW5jdGlvbiYmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNTaW5nbGVCeXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjU2luZ2xlQnl0ZS5jcHAKaW5kZXggODkw
NjRjODBiMTNlZjcwMGNjZThiOGM5MTgwOTJiZGE0NTI4NWY2Yy4uZjk0MjZmMzNjZjI4NDA5YjIy
YjJiNGVlNDJmMTBjMjIzY2E1MjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNTaW5nbGVCeXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1NpbmdsZUJ5dGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGVudW0g
Y2xhc3MgVGV4dENvZGVjU2luZ2xlQnl0ZTo6RW5jb2RpbmcgOiB1aW50OF90IHsKIAogdXNpbmcg
U2luZ2xlQnl0ZURlY29kZVRhYmxlID0gc3RkOjphcnJheTxVQ2hhciwgMTI4PjsKIHVzaW5nIFNp
bmdsZUJ5dGVFbmNvZGVUYWJsZUVudHJ5ID0gc3RkOjpwYWlyPFVDaGFyLCB1aW50OF90PjsKLXVz
aW5nIFNpbmdsZUJ5dGVFbmNvZGVUYWJsZSA9IFdURjo6SXRlcmF0b3JSYW5nZTxjb25zdCBTaW5n
bGVCeXRlRW5jb2RlVGFibGVFbnRyeSo+OwordXNpbmcgU2luZ2xlQnl0ZUVuY29kZVRhYmxlID0g
SXRlcmF0b3JSYW5nZTxjb25zdCBTaW5nbGVCeXRlRW5jb2RlVGFibGVFbnRyeSo+OwogCiAvLyBG
cm9tIGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnL2luZGV4LWlzby04ODU5LTMudHh0
IHdpdGggMHhGRkZEIGZpbGxpbmcgdGhlIGdhcHMKIHN0YXRpYyBjb25zdGV4cHIgU2luZ2xlQnl0
ZURlY29kZVRhYmxlIGlzbzg4NTkzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuaAppbmRleCA4NDEzZGY1ZjY1
MjIxMTY5ZGRmMDQ4YmQ0NDNhZDQ3MDY4MjljNjdiLi4yOGFlNGFlODM2NjIzNjU3NzhlOWEzOWZh
ZjliOGQ3YzRiZGYyNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5oCkBAIC0yOSw3ICsyOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dENoZWNrZXJFbmNoYW50IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUZXh0Q2hlY2tlckVuY2hhbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxUZXh0Q2hlY2tlckVu
Y2hhbnQ+OworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxUZXh0Q2hlY2tlckVuY2hh
bnQ+OwogcHVibGljOgogICAgIHN0YXRpYyBUZXh0Q2hlY2tlckVuY2hhbnQmIHNpbmdsZXRvbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhl
bi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggZjBiMTdiMjExM2MyZTVjZWFmNDZmZmFm
NGMyOTJiYzA5NjcyZDFhNS4uYTU0YjY1YzUxMTgyMDZiNzE3MTFiNDk3NzNjYTIxZDY2YzIwOTFh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVu
YXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlw
aGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMjk4LDcgKzI5OCw3IEBAIHNpemVfdCBs
YXN0SHlwaGVuTG9jYXRpb24oU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBiZWZvcmVJbmRleCwg
Y29uc3QgQXRvbVN0cmluCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgZm9yIChjb25zdCBhdXRv
JiBkaWN0aW9uYXJ5UGF0aCA6IGF2YWlsYWJsZUxvY2FsZXMoKS5nZXQobG93ZXJjYXNlTG9jYWxl
SWRlbnRpZmllcikpIHsKLSAgICAgICAgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4gZGlj
dGlvbmFyeSA9IFdURjo6VGlueUxSVUNhY2hlUG9saWN5PEF0b21TdHJpbmcsIFJlZlB0cjxIeXBo
ZW5hdGlvbkRpY3Rpb25hcnk+Pjo6Y2FjaGUoKS5nZXQoQXRvbVN0cmluZyhkaWN0aW9uYXJ5UGF0
aCkpOworICAgICAgICBSZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5ID0g
VGlueUxSVUNhY2hlUG9saWN5PEF0b21TdHJpbmcsIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25h
cnk+Pjo6Y2FjaGUoKS5nZXQoQXRvbVN0cmluZyhkaWN0aW9uYXJ5UGF0aCkpOwogCiAgICAgICAg
IGNoYXIqKiByZXBsYWNlbWVudHMgPSBudWxscHRyOwogICAgICAgICBpbnQqIHBvc2l0aW9ucyA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9y
bVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKaW5kZXggMjkz
NTNkYzU1MjU1YTBhYTkyOWYxMTMxOWNkY2I2NGQ1NzU3YWY2ZC4uNTBmZDQ1YjA1OWEwYTgxMzEx
NTgxMGZkZTZjMDBjMWIyMWIyZDU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRm
b3JtWFIuaApAQCAtMjk0LDcgKzI5NCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4ci1kZXZpY2UtY29uY2VwdAogICAgIC8vIEVh
Y2ggWFIgZGV2aWNlIGhhcyBhIGxpc3Qgb2YgZW5hYmxlZCBmZWF0dXJlcyBmb3IgZWFjaCBYUlNl
c3Npb25Nb2RlIGluIGl0cyBsaXN0IG9mIHN1cHBvcnRlZCBtb2RlcywKICAgICAvLyB3aGljaCBp
cyBhIGxpc3Qgb2YgZmVhdHVyZSBkZXNjcmlwdG9ycyB3aGljaCBNVVNUIGJlIGluaXRpYWxseSBh
biBlbXB0eSBsaXN0LgotICAgIHVzaW5nIEZlYXR1cmVzUGVyTW9kZU1hcCA9IFdURjo6SGFzaE1h
cDxTZXNzaW9uTW9kZSwgRmVhdHVyZUxpc3QsIFdURjo6SW50SGFzaDxTZXNzaW9uTW9kZT4sIFdU
Rjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8U2Vzc2lvbk1vZGU+PjsKKyAgICB1c2luZyBGZWF0dXJl
c1Blck1vZGVNYXAgPSBIYXNoTWFwPFNlc3Npb25Nb2RlLCBGZWF0dXJlTGlzdCwgSW50SGFzaDxT
ZXNzaW9uTW9kZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8U2Vzc2lvbk1vZGU+PjsKICAg
ICBGZWF0dXJlc1Blck1vZGVNYXAgbV9lbmFibGVkRmVhdHVyZXNNYXA7CiAgICAgRmVhdHVyZXNQ
ZXJNb2RlTWFwIG1fc3VwcG9ydGVkRmVhdHVyZXNNYXA7CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0ZP
Ul9YUl9MQVlFUl9EQVRBKQotICAgIFdURjo6TWFjaFNlbmRSaWdodCBzdXJmYWNlU2VuZFJpZ2h0
ID0gc3VyZmFjZSA/IHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpIDogV1RGOjpNYWNoU2VuZFJp
Z2h0KCk7CisgICAgTWFjaFNlbmRSaWdodCBzdXJmYWNlU2VuZFJpZ2h0ID0gc3VyZmFjZSA/IHN1
cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpIDogTWFjaFNlbmRSaWdodCgpOwogICAgIGVuY29kZXIg
PDwgc3VyZmFjZVNlbmRSaWdodDsKICAgICBlbmNvZGVyIDw8IGlzU2hhcmVkOwogI2Vsc2UKQEAg
LTQ5MCw3ICs0OTAsNyBAQCBzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXllckRh
dGE+IERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29kZQogewogICAgIFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGEgbGF5ZXJEYXRhOwogI2lmIFVTRShJT1NV
UkZBQ0VfRk9SX1hSX0xBWUVSX0RBVEEpCi0gICAgV1RGOjpNYWNoU2VuZFJpZ2h0IHN1cmZhY2VT
ZW5kUmlnaHQ7CisgICAgTWFjaFNlbmRSaWdodCBzdXJmYWNlU2VuZFJpZ2h0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3VyZmFjZVNlbmRSaWdodCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5jcHAKaW5kZXggMTA1Y2YyODBjMDA3
NjFjMTA3MTNjMGQwMTYzMDk2YTM5YjhjZTY0Mi4uZjJjYzAzOTBmYzUwMjVjNDVlNWNkYWVmMTcx
MjM1YmJjMDkwZjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVy
QW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suY3BwCkBAIC05OCw3ICs5OCw3IEBAIEdyYXBoaWNz
TGF5ZXIqIExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrOjpsYXN0Q2xpcHBpbmdMYXllcigpIGNv
bnN0CiAKIFNjcm9sbGluZ05vZGVJRCBMYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjazo6bGFzdE92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlSUQoKSBjb25zdAogewotICAgIGZvciAoYXV0byYgZW50cnkg
OiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKG1fc3RhY2spKSB7CisgICAgZm9yIChhdXRvJiBlbnRy
eSA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fc3RhY2spKSB7CiAgICAgICAgIGlmIChlbnRyeS5vdmVy
Zmxvd1Njcm9sbFByb3h5Tm9kZUlEKQogICAgICAgICAgICAgcmV0dXJuIGVudHJ5Lm92ZXJmbG93
U2Nyb2xsUHJveHlOb2RlSUQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeUlubGluZVRleHRCb3guY3BwCmluZGV4IGE3MjM0YmU0ZWJhZWFhNTA5MjliZmYwMmIw
ZGNjMWU0ZWE1NTFmMTMuLmM4MzM2ZjA3ZDNlMDRkNzQ5MTJjZGNiZjExYmU0OTAyNGVjYzJiNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgc3RydWN0IFNhbWVTaXplQXNMZWdhY3lJbmxpbmVUZXh0Qm94
IDogcHVibGljIExlZ2FjeUlubGluZUJveCB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihMZWdh
Y3lJbmxpbmVUZXh0Qm94KSA9PSBzaXplb2YoU2FtZVNpemVBc0xlZ2FjeUlubGluZVRleHRCb3gp
LCBMZWdhY3lJbmxpbmVUZXh0Qm94X3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotdHlwZWRlZiBXVEY6
Okhhc2hNYXA8Y29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCosIExheW91dFJlY3Q+IExlZ2FjeUlu
bGluZVRleHRCb3hPdmVyZmxvd01hcDsKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBMZWdhY3lJbmxp
bmVUZXh0Qm94KiwgTGF5b3V0UmVjdD4gTGVnYWN5SW5saW5lVGV4dEJveE92ZXJmbG93TWFwOwog
c3RhdGljIExlZ2FjeUlubGluZVRleHRCb3hPdmVyZmxvd01hcCogZ1RleHRCb3hlc1dpdGhPdmVy
ZmxvdzsKIAogTGVnYWN5SW5saW5lVGV4dEJveDo6fkxlZ2FjeUlubGluZVRleHRCb3goKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwCmluZGV4
IGVkZDI5ODdkMjNkMDQ1NzhhMjJkMzhkNGE1NzY5NzVhZTZhMTZiZTEuLmZhZTQxZGJkNDdlNzVl
NDExNzgxNjBjOWUxODE1YjllNmEzYWRlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKExlZ2FjeVJvb3RJbmxpbmVCb3gpID09IHNpemVvZihTYW1lU2l6ZUFzTGVn
YWN5Um9vdElubGluZUIKIENPTVBJTEVfQVNTRVJUKHNpemVvZihXZWFrUHRyPFJlbmRlck9iamVj
dD4pID09IHNpemVvZih2b2lkKiksIFdlYWtQdHJfc2hvdWxkX2JlX3NhbWVfc2l6ZV9hc19yYXdf
cG9pbnRlcik7CiAjZW5kaWYKIAotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgTGVnYWN5Um9v
dElubGluZUJveCosIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lFbGxpcHNpc0JveD4+IEVsbGlwc2lz
Qm94TWFwOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gqLCBzdGQ6
OnVuaXF1ZV9wdHI8TGVnYWN5RWxsaXBzaXNCb3g+PiBFbGxpcHNpc0JveE1hcDsKIHN0YXRpYyBF
bGxpcHNpc0JveE1hcCogZ0VsbGlwc2lzQm94TWFwOwogCiBzdGF0aWMgQ29udGFpbmluZ0ZyYWdt
ZW50TWFwJiBjb250YWluaW5nRnJhZ21lbnRNYXAoUmVuZGVyQmxvY2tGbG93JiBibG9jaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2Vz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNw
cAppbmRleCBmYTAxYzc4NjU3ZDcwMjFhY2U3MzRhZTMzYTAxNmM0YmE4NjZiMjlkLi45ZDJiYzhh
NjgyYzZjODY1NGJjYjkwMDFhMzc5MWVkMGYxYjVmMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6On5SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkKIHZv
aWQgUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6YWRkQ2xpZW50Rm9yVGFyZ2V0KFNWR0VsZW1lbnQm
IHRhcmdldEVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIHRhcmdldElEKQogewogICAgIG1fZWxl
bWVudENsaWVudHMuZW5zdXJlKHRhcmdldElELCBbJl0gewotICAgICAgICBhdXRvIGNsaWVudCA9
IFdURjo6bWFrZVVuaXF1ZTxDU1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ+KG1fcmVuZGVyZXIp
OworICAgICAgICBhdXRvIGNsaWVudCA9IG1ha2VVbmlxdWU8Q1NTU1ZHUmVzb3VyY2VFbGVtZW50
Q2xpZW50PihtX3JlbmRlcmVyKTsKICAgICAgICAgdGFyZ2V0RWxlbWVudC5hZGRSZWZlcmVuY2lu
Z0NTU0NsaWVudCgqY2xpZW50KTsKICAgICAgICAgcmV0dXJuIGNsaWVudDsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZThkYWI0Nzg3ZDYwMmI5MDkw
N2M0ODRlN2FkMTM4ODAxODQzNDBmNi4uMjFlNjIxMGU1OWMzMjdhOGM3NDI1YWQ0MGYwNzFiZDMz
MTc3M2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgUmVuZGVyVGV4dDsKIHN0cnVjdCBCaWRpUnVuOwogc3RydWN0IFBhaW50
SW5mbzsKIAotdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlbmRlckJveCo+IFRyYWNrZWRSZW5k
ZXJlckxpc3RIYXNoU2V0OwordHlwZWRlZiBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiBUcmFja2Vk
UmVuZGVyZXJMaXN0SGFzaFNldDsKIAogZW51bSBDYXJldFR5cGUgeyBDdXJzb3JDYXJldCwgRHJh
Z0NhcmV0IH07CiBlbnVtIENvbnRhaW5pbmdCbG9ja1N0YXRlIHsgTmV3Q29udGFpbmluZ0Jsb2Nr
LCBTYW1lQ29udGFpbmluZ0Jsb2NrIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCmluZGV4IGQxN2JiYmJiMWUxZGQ1NjA1YTc3ZGY4NDkwZGI1NDc4NTA5YzI5MGIuLjU1YTZm
MTA1YmM5MDU4MzQ5MTU5OTdjM2Q4M2M4MDgyZDc5NTZhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBDT01QSUxFX0FTU0VSVChz
aXplb2YoUmVuZGVyQm94KSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlckJveCksIFJlbmRlckJv
eF9zaG91bAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi10eXBlZGVmIFdURjo6SGFz
aE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBPdmVycmlkZVNpemVNYXA7Cit0eXBl
ZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgTGF5b3V0VW5pdD4gT3ZlcnJpZGVTaXplTWFw
Owogc3RhdGljIE92ZXJyaWRlU2l6ZU1hcCogZ092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0TWFwID0g
bnVsbHB0cjsKIHN0YXRpYyBPdmVycmlkZVNpemVNYXAqIGdPdmVycmlkaW5nTG9naWNhbFdpZHRo
TWFwID0gbnVsbHB0cjsKIAogLy8gRklYTUU6IFdlIHNob3VsZCBzdG9yZSB0aGVzZSBiYXNlZCBv
biBwaHlzaWNhbCBkaXJlY3Rpb24uCi10eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJC
b3gqLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+PiBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsK
K3R5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+PiBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKIHN0YXRpYyBPdmVycmlkZU9wdGlvbmFsU2l6
ZU1hcCogZ092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodE1hcCA9
IG51bGxwdHI7CiBzdGF0aWMgT3ZlcnJpZGVPcHRpb25hbFNpemVNYXAqIGdPdmVycmlkaW5nQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aE1hcCA9IG51bGxwdHI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAxNDc1MjI2ODVlZmIxMDhj
MjUyOTAwNmI5MDdjMjBjMjk2ODczNzU3Li5kYjZhMWRjNTliNDJhOWQ2NmZiZWQ0Zjk3MGEwYjUz
MWM4YjIwNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CkBAIC0yMjg5LDcgKzIyODksNyBAQCBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzJiBSZW5kZXJFbGVt
ZW50OjplbnN1cmVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkKIHsKICAgICBhdXRvJiByYXJlRGF0
YSA9IGVuc3VyZVJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS5yZWZlcmVuY2VkU1ZHUmVz
b3VyY2VzKQotICAgICAgICByYXJlRGF0YS5yZWZlcmVuY2VkU1ZHUmVzb3VyY2VzID0gV1RGOjpt
YWtlVW5pcXVlPFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM+KCp0aGlzKTsKKyAgICAgICAgcmFyZURh
dGEucmVmZXJlbmNlZFNWR1Jlc291cmNlcyA9IG1ha2VVbmlxdWU8UmVmZXJlbmNlZFNWR1Jlc291
cmNlcz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICpyYXJlRGF0YS5yZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckl0ZXJh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySXRlcmF0b3IuaAppbmRleCBi
NWE5NGY0N2JjNzU4MDU4OWIxNTMwZTc1MTk1ZjllOWZjNDYzOTJlLi41YjlmMjU3ZGE2MWMxMGUw
YjY3MjNmZjg4MjQwYWJkYzk5NTk0MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySXRlcmF0b3IuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFQqIG1f
Y3VycmVudDsKIH07CiAKLS8vIFNpbWlsYXIgdG8gV1RGOjppczw+KCkgYnV0IHdpdGhvdXQgdGhl
IHN0YXRpY19hc3NlcnQoKSBtYWtpbmcgc3VyZSB0aGUgY2hlY2sgaXMgbmVjZXNzYXJ5LgorLy8g
U2ltaWxhciB0byBpczw+KCkgYnV0IHdpdGhvdXQgdGhlIHN0YXRpY19hc3NlcnQoKSBtYWtpbmcg
c3VyZSB0aGUgY2hlY2sgaXMgbmVjZXNzYXJ5LgogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CiBpbmxpbmUgYm9vbCBpc1JlbmRlcmVyT2ZUeXBlKGNvbnN0IFUmIHJlbmRlcmVyKSB7
IHJldHVybiBUeXBlQ2FzdFRyYWl0czxjb25zdCBULCBjb25zdCBVPjo6aXNPZlR5cGUocmVuZGVy
ZXIpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGU4
YzAzODNjZTllMTEwNGNlZDM1MThiYzYyODZiNDJmYmRjNTQwNjIuLjBjMjY2OTYyOTkxNzRiZDZm
ZDg5YzYyYjFhMDIyOTZmYTg5ZTRiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcApAQCAtNTczNSw3ICs1NzM1LDcgQEAgdm9pZCBzaG93TGF5ZXJUcmVlKGNvbnN0
IFdlYkNvcmU6OlJlbmRlckxheWVyKiBsYXllcikKICAgICBpZiAoIWxheWVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBXVEY6OlN0cmluZyBvdXRwdXQgPSBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KCZsYXllci0+cmVuZGVyZXIoKS5mcmFtZSgpLCB7CisgICAgU3RyaW5nIG91dHB1dCA9IGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oJmxheWVyLT5yZW5kZXJlcigpLmZyYW1lKCksIHsKICAgICAgICAg
V2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZzo6U2hvd0FsbExheWVycywKICAgICAgICAgV2ViQ29y
ZTo6UmVuZGVyQXNUZXh0RmxhZzo6U2hvd0xheWVyTmVzdGluZywKICAgICAgICAgV2ViQ29yZTo6
UmVuZGVyQXNUZXh0RmxhZzo6U2hvd0NvbXBvc2l0ZWRMYXllcnMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGYzNTQxN2NjNWE4NTAx
NmNlYWZmMDU5NWI0MThmYzA5NDA1MzE0ZWUuLmJkOWYyMmE1MTQ1Y2U5YTU0YzAyNjZmYjU4M2Nh
ZmEwNWFlMWUxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0yNzQzLDcgKzI3NDMsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6aXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyKFBhaW50ZWRDb250ZW50c0luZm8m
CiAvLyBSZXR1cm5pbmcgdHJ1ZSBzdG9wcyB0aGUgdHJhdmVyc2FsLgogZW51bSBjbGFzcyBMYXll
clRyYXZlcnNhbCB7IENvbnRpbnVlLCBTdG9wIH07CiAKLXN0YXRpYyBMYXllclRyYXZlcnNhbCB0
cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVkRGVzY2VuZGFudExheWVycyhSZW5kZXJMYXllciYg
cGFyZW50LCBjb25zdCBXVEY6OkZ1bmN0aW9uPExheWVyVHJhdmVyc2FsIChjb25zdCBSZW5kZXJM
YXllciYpPiYgbGF5ZXJGdW5jKQorc3RhdGljIExheWVyVHJhdmVyc2FsIHRyYXZlcnNlVmlzaWJs
ZU5vbkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKFJlbmRlckxheWVyJiBwYXJlbnQsIGNvbnN0
IEZ1bmN0aW9uPExheWVyVHJhdmVyc2FsKGNvbnN0IFJlbmRlckxheWVyJik+JiBsYXllckZ1bmMp
CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBjYWxsZWQgd2l0aCBhIHN0YWxlIHot
b3JkZXIgbGlzdHMuIFNlZSBidWcgODU1MTIuCiAgICAgcGFyZW50LnVwZGF0ZUxheWVyTGlzdHNJ
Zk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmlu
ZGV4IGNhYjYzZjViMTRjZTVlYjg3ZWU0ZDg3YTgwYjM4NjVkZmI2ZTliMWYuLjYzODZmYmEyZjQ5
OGI1ZDZiODAyMmRiMTg0MmI0OTVmMGU1OGEwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFJlbmRlckxpc3RC
b3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2Fk
ZT4gYm9sZEZvbnQ7CiAgICAgICAgIGZvciAoYXV0byogZWxlbWVudCA6IHNlbGVjdEVsZW1lbnQo
KS5saXN0SXRlbXMoKSkgewogICAgICAgICAgICAgU3RyaW5nIHRleHQ7Ci0gICAgICAgICAgICBX
VEY6OkZ1bmN0aW9uPGNvbnN0IEZvbnRDYXNjYWRlJigpPiBzZWxlY3RGb250ID0gWyZub3JtYWxG
b250XSAoKSAtPiBjb25zdCBGb250Q2FzY2FkZSYgeworICAgICAgICAgICAgRnVuY3Rpb248Y29u
c3QgRm9udENhc2NhZGUmKCk+IHNlbGVjdEZvbnQgPSBbJm5vcm1hbEZvbnRdICgpIC0+IGNvbnN0
IEZvbnRDYXNjYWRlJiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbEZvbnQ7CiAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVu
dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCAwNjMzMDli
ZTBiN2MwODc4YTNlNjdkM2VkZTdjOTQ4NzQ0ZWY4ZTg5Li4yYTdmZTMwNzU3MDdiNGIxNWQ2OTcy
NTY3ODBkM2ExNTU4MGE2OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIC8vIE5PVEU6IFRoaXMgc2hv
dWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZGVuIHNldFNjcm9sbE9mZnNldCBmcm9t
IFNjcm9sbGFibGVBcmVhLgogICAgIHZvaWQgc2Nyb2xsVG8oaW50IG5ld09mZnNldCk7CiAKLSAg
ICB1c2luZyBQYWludEZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJdGVtSW5kZXgpPjsKKyAgICB1c2luZyBQYWludEZ1
bmN0aW9uID0gRnVuY3Rpb248dm9pZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIGlu
dCBsaXN0SXRlbUluZGV4KT47CiAgICAgdm9pZCBwYWludEl0ZW0oUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBQYWludEZ1bmN0aW9uJik7CiAKICAgICB2b2lkIHNldEhhc1Zl
cnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xsYmFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPdmVyZmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck92ZXJmbG93LmgKaW5kZXggYzM5NGNiNDk2ZWJhNDE2ZmU2YmM0YmJiZmEwZDc3
ODk4MmFjNDk1Ni4uMTEyMmI4NjI3MTIxMmVhZTg3MjkyYmVkMTY2MmQ2MDRmZDJhMGY2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck92ZXJmbG93LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck92ZXJmbG93LmgKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKIC8vIEV4YW1wbGVzIG9mIHZpc3VhbCBvdmVyZmxvdyBhcmUg
c2hhZG93cywgdGV4dCBzdHJva2UsIG91dGxpbmUgKGFuZCBldmVudHVhbGx5IGJvcmRlci1pbWFn
ZSkuCiAKIC8vIFRoaXMgb2JqZWN0IGlzIGFsbG9jYXRlZCBvbmx5IHdoZW4gc29tZSBvZiB0aGVz
ZSBmaWVsZHMgaGF2ZSBub24tZGVmYXVsdCB2YWx1ZXMgaW4gdGhlIG93bmluZyBib3guCi1jbGFz
cyBSZW5kZXJPdmVyZmxvdyA6IHB1YmxpYyBXVEY6OlJlZkNvdW50ZWQ8UmVuZGVyT3ZlcmZsb3c+
IHsKK2NsYXNzIFJlbmRlck92ZXJmbG93IDogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyT3ZlcmZs
b3c+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW5kZXJPdmVyZmxvdyk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbmRlck92ZXJmbG93KGNvbnN0IExheW91
dFJlY3QmIGxheW91dFJlY3QsIGNvbnN0IExheW91dFJlY3QmIHZpc3VhbFJlY3QpIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKaW5kZXggYzY3N2Qw
Nzk4NjdjMTI2NTJkOTkyZWZlZDUyMDRiZTBlOTI0ZDNlOC4uNDNkZTM4NjBkNWE5NmUyYTNlZjZk
MWRmNmU0MDFmMjBhOWExNTFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlR3JpZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHcmlkRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1bnNpZ25lZD4+IE5hbWVkR3JpZExp
bmVzTWFwOwotdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBWZWN0b3I8U3RyaW5nPiwgV1RGOjpJ
bnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcDsKK3R5cGVkZWYgSGFzaE1hcDx1bnNpZ25l
ZCwgVmVjdG9yPFN0cmluZz4sIEludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwOwogCiBj
bGFzcyBTdHlsZUdyaWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVHcmlkRGF0YT4gewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKaW5kZXggNmU1Y2M4MTE5MDRkOTA0
MDkwMDk5YTI1ZTAwNjIxYzhjNTMzOGY2ZS4uNjIxMThjNzAwZGY1NTQ0OGFkMzliOTJiNzNmYTU0
ZWExYzI0OTU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCkBAIC03NywxMCArNzcs
MTAgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICAKICAgICBIYXNoTWFwPEF0b21TdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlRmVhdHVyZVZlY3Rvcj4+IGNsYXNzUnVsZXM7CiAgICAg
SGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlV2l0
aEludmFsaWRhdGlvblNlbGVjdG9yPj4+IGF0dHJpYnV0ZVJ1bGVzOwotICAgIEhhc2hNYXA8Q1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFJ1bGVGZWF0dXJlVmVj
dG9yPiwgV1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBXVEY6OlN0
cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBwc2V1ZG9D
bGFzc1J1bGVzOworICAgIEhhc2hNYXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3Rk
Ojp1bmlxdWVfcHRyPFJ1bGVGZWF0dXJlVmVjdG9yPiwgSW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUeXBlPj4gcHNldWRvQ2xhc3NSdWxlczsKICAgICBIYXNoU2V0PEF0b21TdHJpbmc+
IGNsYXNzZXNBZmZlY3RpbmdIb3N0OwogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRl
c0FmZmVjdGluZ0hvc3Q7Ci0gICAgSGFzaFNldDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBl
LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25n
RW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNz
ZXNBZmZlY3RpbmdIb3N0OworICAgIEhhc2hTZXQ8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlw
ZSwgSW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gcHNldWRvQ2xhc3Nlc0Fm
ZmVjdGluZ0hvc3Q7CiAKICAgICBib29sIHVzZXNGaXJzdExpbmVSdWxlcyB7IGZhbHNlIH07CiAg
ICAgYm9vbCB1c2VzRmlyc3RMZXR0ZXJSdWxlcyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUludmFsaWRhdG9yLmgKaW5kZXggZmZlMTU2MWZhNDRhZjQzZWExYjJkYjE0YzNlYWNm
MzU0YjFiMTY2NC4uMTE3MTQ2OWUzZmM3NDE3OTc3Y2IzY2E1OGExYWNjZGMwYzQyZTBiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaApAQCAtNjAsNyArNjAsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlU2hhZG93UGFydHMoU2hhZG93Um9v
dCYpOwogCi0gICAgdXNpbmcgTWF0Y2hFbGVtZW50UnVsZVNldHMgPSBIYXNoTWFwPE1hdGNoRWxl
bWVudCwgSW52YWxpZGF0aW9uUnVsZVNldFZlY3RvciwgV1RGOjpJbnRIYXNoPE1hdGNoRWxlbWVu
dD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWF0Y2hFbGVtZW50Pj47CisgICAgdXNpbmcg
TWF0Y2hFbGVtZW50UnVsZVNldHMgPSBIYXNoTWFwPE1hdGNoRWxlbWVudCwgSW52YWxpZGF0aW9u
UnVsZVNldFZlY3RvciwgSW50SGFzaDxNYXRjaEVsZW1lbnQ+LCBXVEY6OlN0cm9uZ0VudW1IYXNo
VHJhaXRzPE1hdGNoRWxlbWVudD4+OwogICAgIHN0YXRpYyB2b2lkIGFkZFRvTWF0Y2hFbGVtZW50
UnVsZVNldHMoSW52YWxpZGF0b3I6Ok1hdGNoRWxlbWVudFJ1bGVTZXRzJiwgY29uc3QgSW52YWxp
ZGF0aW9uUnVsZVNldCYpOwogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVXaXRoTWF0Y2hFbGVt
ZW50UnVsZVNldHMoRWxlbWVudCYsIGNvbnN0IE1hdGNoRWxlbWVudFJ1bGVTZXRzJik7CiAgICAg
c3RhdGljIHZvaWQgaW52YWxpZGF0ZUFsbFN0eWxlKFNjb3BlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCmluZGV4IDg3YTc4OWVmYmI5NDc5NmU4MTBlN2FhMzZi
NGM5MWZiYzRjNDI0YmUuLjQ1NGY1YzA3OTRkMjM5YTczZmQ4YTA1NDVmNDU1ZTY3NDlhNzJkN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCkBAIC0xMDAsNyAr
MTAwLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxSdWxlU2V0PiBtX3VuY29tbW9u
QXR0cmlidXRlUnVsZVNldDsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fY2xhc3NJbnZhbGlkYXRp
b25SdWxlU2V0czsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fYXR0cmlidXRlSW52YWxpZGF0aW9u
UnVsZVNldHM7Ci0gICAgbXV0YWJsZSBIYXNoTWFwPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5
cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+LCBXVEY6Oklu
dEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IG1fcHNldWRvQ2xhc3NJbnZhbGlk
YXRpb25SdWxlU2V0czsKKyAgICBtdXRhYmxlIEhhc2hNYXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4sIElu
dEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+IG1fcHNldWRvQ2xhc3NJbnZhbGlk
YXRpb25SdWxlU2V0czsKIAogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NhY2hl
ZEhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVXBkYXRlLmgKaW5kZXggMDJjNjUzMzgzY2Q0OGVkZjdkYTAyOTAyZjQyYTdkNDVlZWQyYmZj
Yi4uN2Y5ZDdhMTc3Y2NmZjU5ZWE4Mjc2MTY1ODI0YWUzYWNkNTgyYjlhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVVwZGF0ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBFbGVtZW50VXBkYXRl
IHsKIAogZW51bSBjbGFzcyBEZXNjZW5kYW50c1RvUmVzb2x2ZSB7IE5vbmUsIENoaWxkcmVuV2l0
aEV4cGxpY2l0SW5oZXJpdCwgQ2hpbGRyZW4sIEFsbCB9OwogCi11c2luZyBQc2V1ZG9JZFRvRWxl
bWVudFVwZGF0ZU1hcCA9IEhhc2hNYXA8UHNldWRvSWQsIEVsZW1lbnRVcGRhdGUsIFdURjo6SW50
SGFzaDxQc2V1ZG9JZD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UHNldWRvSWQ+PjsKK3Vz
aW5nIFBzZXVkb0lkVG9FbGVtZW50VXBkYXRlTWFwID0gSGFzaE1hcDxQc2V1ZG9JZCwgRWxlbWVu
dFVwZGF0ZSwgSW50SGFzaDxQc2V1ZG9JZD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UHNl
dWRvSWQ+PjsKIAogc3RydWN0IEVsZW1lbnRVcGRhdGVzIHsKICAgICBFbGVtZW50VXBkYXRlIHVw
ZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oCmluZGV4IDk1ZTJh
YzlmNjVkNTQ1YjM3OWEzYTZmOWQwYzljZTI3ZjhjYzI3NDUuLjExYTlhNWYwOTA4NjVkOTRkNDIw
NjM0YjI1NDJhMGE4OTZjNzVjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
VHlwZUNvbnZlcnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVy
c2lvbnMuaApAQCAtMTE5LDEyICsxMTksMTIgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYg
dGVzdFRyZWF0TnVsbEFzRW1wdHlTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3RyZWF0TnVsbEFz
RW1wdHlTdHJpbmc7IH0KICAgICB2b2lkIHNldFRlc3RUcmVhdE51bGxBc0VtcHR5U3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fdHJlYXROdWxsQXNFbXB0eVN0cmluZyA9IHN0cmluZzsg
fQogCi0gICAgY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgaW50Pj4mIHRl
c3RMb25nUmVjb3JkKCkgY29uc3QgeyByZXR1cm4gbV9sb25nUmVjb3JkOyB9Ci0gICAgdm9pZCBz
ZXRUZXN0TG9uZ1JlY29yZChjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBp
bnQ+PiYgdmFsdWUpIHsgbV9sb25nUmVjb3JkID0gdmFsdWU7IH0KLSAgICBjb25zdCBWZWN0b3I8
V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWZQdHI8Tm9kZT4+PiYgdGVzdE5vZGVSZWNvcmQo
KSBjb25zdCB7IHJldHVybiBtX25vZGVSZWNvcmQ7IH0KLSAgICB2b2lkIHNldFRlc3ROb2RlUmVj
b3JkKGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0cjxOb2RlPj4+
JiB2YWx1ZSkgeyBtX25vZGVSZWNvcmQgPSB2YWx1ZTsgfQotICAgIGNvbnN0IFZlY3RvcjxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4mIHRlc3RTZXF1ZW5jZVJlY29y
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VxdWVuY2VSZWNvcmQ7IH0KLSAgICB2b2lkIHNldFRlc3RT
ZXF1ZW5jZVJlY29yZChjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBWZWN0
b3I8U3RyaW5nPj4+JiB2YWx1ZSkgeyBtX3NlcXVlbmNlUmVjb3JkID0gdmFsdWU7IH0KKyAgICBj
b25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgaW50Pj4mIHRlc3RMb25nUmVjb3JkKCkg
Y29uc3QgeyByZXR1cm4gbV9sb25nUmVjb3JkOyB9CisgICAgdm9pZCBzZXRUZXN0TG9uZ1JlY29y
ZChjb25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgaW50Pj4mIHZhbHVlKSB7IG1fbG9u
Z1JlY29yZCA9IHZhbHVlOyB9CisgICAgY29uc3QgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcs
IFJlZlB0cjxOb2RlPj4+JiB0ZXN0Tm9kZVJlY29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZVJl
Y29yZDsgfQorICAgIHZvaWQgc2V0VGVzdE5vZGVSZWNvcmQoY29uc3QgVmVjdG9yPEtleVZhbHVl
UGFpcjxTdHJpbmcsIFJlZlB0cjxOb2RlPj4+JiB2YWx1ZSkgeyBtX25vZGVSZWNvcmQgPSB2YWx1
ZTsgfQorICAgIGNvbnN0IFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5n
Pj4+JiB0ZXN0U2VxdWVuY2VSZWNvcmQoKSBjb25zdCB7IHJldHVybiBtX3NlcXVlbmNlUmVjb3Jk
OyB9CisgICAgdm9pZCBzZXRUZXN0U2VxdWVuY2VSZWNvcmQoY29uc3QgVmVjdG9yPEtleVZhbHVl
UGFpcjxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4mIHZhbHVlKSB7IG1fc2VxdWVuY2VSZWNvcmQg
PSB2YWx1ZTsgfQogCiAgICAgdXNpbmcgVGVzdFVuaW9uID0gc3RkOjp2YXJpYW50PFN0cmluZywg
aW50LCBib29sLCBSZWZQdHI8Tm9kZT4sIFZlY3RvcjxpbnQ+PjsKICAgICBjb25zdCBUZXN0VW5p
b24mIHRlc3RVbmlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5pb247IH0KQEAgLTE2OCw5ICsxNjgs
OSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VzdnN0cmluZzsKICAgICBTdHJpbmcgbV9ieXRl
U3RyaW5nOwogICAgIFN0cmluZyBtX3RyZWF0TnVsbEFzRW1wdHlTdHJpbmc7Ci0gICAgVmVjdG9y
PFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgaW50Pj4gbV9sb25nUmVjb3JkOwotICAgIFZlY3Rv
cjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0cjxOb2RlPj4+IG1fbm9kZVJlY29yZDsK
LSAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+IG1f
c2VxdWVuY2VSZWNvcmQ7CisgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIGludD4+IG1f
bG9uZ1JlY29yZDsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmUHRyPE5vZGU+
Pj4gbV9ub2RlUmVjb3JkOworICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBWZWN0b3I8
U3RyaW5nPj4+IG1fc2VxdWVuY2VSZWNvcmQ7CiAKICAgICBEaWN0aW9uYXJ5IG1fdGVzdERpY3Rp
b25hcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29u
dHJvbGxlci5oCmluZGV4IGNiNGQxMzY3ZTFmMTkzNDQ4Njc0NWRiMDc0MTQ1ZTU0YmMzMWRkNjMu
LjRkNjkwZmE3M2U1MWVkMjY1Yjk5Njk5OWFhZjdjODc2ZDU5N2FjM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaApAQCAtNzUsNyAr
NzUsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fcHJvZmlsZXM7CiAgICAgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSBtX3BvaW50ZXJPcmln
aW47CiAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2VQb3NlPiBtX2dyaXBPcmlnaW47Ci0gICAgSGFzaE1hcDxGYWtlWFJCdXR0b25TdGF0
ZUluaXQ6OlR5cGUsIEZha2VYUkJ1dHRvblN0YXRlSW5pdCwgV1RGOjpJbnRIYXNoPEZha2VYUkJ1
dHRvblN0YXRlSW5pdDo6VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8RmFrZVhSQnV0
dG9uU3RhdGVJbml0OjpUeXBlPj4gbV9idXR0b25zOworICAgIEhhc2hNYXA8RmFrZVhSQnV0dG9u
U3RhdGVJbml0OjpUeXBlLCBGYWtlWFJCdXR0b25TdGF0ZUluaXQsIEludEhhc2g8RmFrZVhSQnV0
dG9uU3RhdGVJbml0OjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxGYWtlWFJCdXR0
b25TdGF0ZUluaXQ6OlR5cGU+PiBtX2J1dHRvbnM7CiAgICAgYm9vbCBtX2Nvbm5lY3RlZCB7IHRy
dWUgfTsKICAgICBib29sIG1fcHJpbWFyeVNlbGVjdGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1f
c2ltdWxhdGVTZWxlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGE1MzNhYTNmOWRjYWQ5MWYwZmY0NWQxNGVm
ZTc4ZjJlZDBmMTFiMDAuLjUxYjcxODZiMDg5YzJjZmYwZjRmYWM0YTRhZGEzZmVjMzAwZjg4NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5j
cHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIGRpc2Nvbm5lY3RNb2NrR2FtZXBhZCh1bnNpZ25l
ZCBnYW1lcGFkSW5kZXgpCiAjZW5kaWYKIH0KIAotdm9pZCBzZXRNb2NrR2FtZXBhZERldGFpbHMo
dW5zaWduZWQgZ2FtZXBhZEluZGV4LCBjb25zdCBXVEY6OlN0cmluZyYgZ2FtZXBhZElELCBjb25z
dCBXVEY6OlN0cmluZyYgbWFwcGluZywgdW5zaWduZWQgYXhpc0NvdW50LCB1bnNpZ25lZCBidXR0
b25Db3VudCkKK3ZvaWQgc2V0TW9ja0dhbWVwYWREZXRhaWxzKHVuc2lnbmVkIGdhbWVwYWRJbmRl
eCwgY29uc3QgU3RyaW5nJiBnYW1lcGFkSUQsIGNvbnN0IFN0cmluZyYgbWFwcGluZywgdW5zaWdu
ZWQgYXhpc0NvdW50LCB1bnNpZ25lZCBidXR0b25Db3VudCkKIHsKICNpZiBFTkFCTEUoR0FNRVBB
RCkKICAgICBNb2NrR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXRNb2NrR2FtZXBhZERl
dGFpbHMoZ2FtZXBhZEluZGV4LCBnYW1lcGFkSUQsIG1hcHBpbmcsIGF4aXNDb3VudCwgYnV0dG9u
Q291bnQpOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgc2V0dXBOZXdseUNyZWF0ZWRTZXJ2aWNl
V29ya2VyKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogfQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi12b2lkIHNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGlu
Zyhjb25zdCBXVEY6OlN0cmluZyYgaW1hZ2VUeXBlcykKK3ZvaWQgc2V0QWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgaW1hZ2VUeXBlcykKIHsKICAg
ICBXZWJDb3JlOjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3RpbmcoaW1h
Z2VUeXBlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNv
cmVUZXN0U3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuaAppbmRleCBjMDExZGVlOTVkZjZkYjlmYTIzYjFjYzVmZmFhNTE5NDYxNTUyNDAxLi5j
NGRhM2MwMTY4M2FiOGU5ZjkxMmExMDcyYWRmNDJhM2RmMmM0MjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmgKQEAgLTUwLDcgKzUwLDcgQEAg
dm9pZCBtb25pdG9yV2hlZWxFdmVudHMoV2ViQ29yZTo6RnJhbWUmLCBib29sIGNsZWFyTGF0Y2hp
bmdTdGF0ZSkgVEVTVF9TVVBQT1JUX0UKIHZvaWQgc2V0V2hlZWxFdmVudE1vbml0b3JUZXN0Q2Fs
bGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29s
IGV4cGVjdE1vbWVudHVtRW5kLCBXZWJDb3JlOjpGcmFtZSYsIEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RNb25p
dG9yKFdlYkNvcmU6OkZyYW1lJikgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIAotdm9pZCBzZXRMb2dD
aGFubmVsVG9BY2N1bXVsYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKSBURVNUX1NVUFBPUlRf
RVhQT1JUOwordm9pZCBzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIHZvaWQgY2xlYXJBbGxMb2dDaGFubmVsc1RvQWNjdW11
bGF0ZSgpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGluaXRpYWxpemVMb2dDaGFubmVsc0lm
TmVjZXNzYXJ5KCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGUoYm9vbCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKQEAgLTU5LDEzICs1OSwxMyBAQCB2
b2lkIHNldExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmdGb3JUZXN0aW5nKCkgVEVTVF9TVVBQT1JU
X0VYUE9SVDsKIHZvaWQgaW5zdGFsbE1vY2tHYW1lcGFkUHJvdmlkZXIoKSBURVNUX1NVUFBPUlRf
RVhQT1JUOwogdm9pZCBjb25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQgaW5kZXgpIFRFU1RfU1VQ
UE9SVF9FWFBPUlQ7CiB2b2lkIGRpc2Nvbm5lY3RNb2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkg
VEVTVF9TVVBQT1JUX0VYUE9SVDsKLXZvaWQgc2V0TW9ja0dhbWVwYWREZXRhaWxzKHVuc2lnbmVk
IGluZGV4LCBjb25zdCBXVEY6OlN0cmluZyYgZ2FtZXBhZElELCBjb25zdCBXVEY6OlN0cmluZyYg
bWFwcGluZywgdW5zaWduZWQgYXhpc0NvdW50LCB1bnNpZ25lZCBidXR0b25Db3VudCkgVEVTVF9T
VVBQT1JUX0VYUE9SVDsKK3ZvaWQgc2V0TW9ja0dhbWVwYWREZXRhaWxzKHVuc2lnbmVkIGluZGV4
LCBjb25zdCBTdHJpbmcmIGdhbWVwYWRJRCwgY29uc3QgU3RyaW5nJiBtYXBwaW5nLCB1bnNpZ25l
ZCBheGlzQ291bnQsIHVuc2lnbmVkIGJ1dHRvbkNvdW50KSBURVNUX1NVUFBPUlRfRVhQT1JUOwog
dm9pZCBzZXRNb2NrR2FtZXBhZEF4aXNWYWx1ZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgYXhp
c0luZGV4LCBkb3VibGUgdmFsdWUpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIHNldE1vY2tH
YW1lcGFkQnV0dG9uVmFsdWUodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGJ1dHRvbkluZGV4LCBk
b3VibGUgdmFsdWUpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiAKIHZvaWQgc2V0dXBOZXdseUNyZWF0
ZWRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBURVNUX1NV
UFBPUlRfRVhQT1JUOwogICAgIAotdm9pZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBl
c0ZvclRlc3RpbmcoY29uc3QgV1RGOjpTdHJpbmcmKSBURVNUX1NVUFBPUlRfRVhQT1JUOwordm9p
ZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3RpbmcoY29uc3QgU3RyaW5n
JikgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIAogI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElE
QVRJT04pCiB2b2lkIHBvcHVsYXRlSklUT3BlcmF0aW9ucygpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAK
aW5kZXggYTNiZGRiYjRjOTNhOWMzMTQwZWQ2ZWFhYTM0ZGQwYjQyNGM0NDU5Yy4uMjM3OGE0Mzg3
ZDYwZDNiOTc5MzgwZDNiZWZmNjNkMGQxYzFmMTk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZv
aWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWQoKQogICAgIC8v
IFdlIGNhbm5vdCBsZXQgYW55IG9iamVjdHMgc3Vydml2ZSBwYXN0IHRocmVhZCBleGl0LCBiZWNh
dXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIHJ1biBHQyBvciBvdGhlcndpc2UgZGVzdHJveSB0aGVt
LgogICAgIHdvcmtlckdsb2JhbFNjb3BlVG9EZWxldGUgPSBudWxscHRyOwogCi0gICAgLy8gQ2xl
YW4gdXAgV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YSBiZWZvcmUgV1RGOjpUaHJlYWQgZ29lcyBh
d2F5IQorICAgIC8vIENsZWFuIHVwIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGEgYmVmb3JlIFRo
cmVhZCBnb2VzIGF3YXkhCiAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLmRlc3Ryb3koKTsKIAogICAg
IC8vIFNlbmQgdGhlIGxhc3QgV29ya2VyVGhyZWFkIFJlZiB0byBiZSBEZXJlZidlZCBvbiB0aGUg
bWFpbiB0aHJlYWQuCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJl
YWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCgpCiAgICAgcHJvdGVjdG9yLT5kZXRhY2goKTsKIH0K
IAotdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0YXJ0KFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBldmFsdWF0ZUNhbGxiYWNrKQordm9pZCBXb3JrZXJPcldvcmtsZXRU
aHJlYWQ6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgZXZhbHVhdGVDYWxs
YmFjaykKIHsKICAgICAvLyBNdXRleCBwcm90ZWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUg
dGhhdCBtX3RocmVhZCBpcyBpbml0aWFsaXplZCB3aGVuIHRoZSB0aHJlYWQgc3RhcnRzLgogICAg
IExvY2tlciBsb2NrZXIgeyBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2NrIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAppbmRleCBi
YjNiYjc1MmRiNGJhMjBkYWUyZWNmZGRhYThiZTU0OTlkMDI5M2RmLi5kNjRhYzZhOWVmOGM0ZTBm
M2E0NDAwNjUyMjc4ZmM1YjJjMjYzN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV29ya2VyT3JX
b3JrbGV0VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlck9yV29ya2xl
dFRocmVhZD4KIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRUaHJlYWQoKTsK
IAotICAgIFdURjo6VGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQo
KTsgfQorICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7
IH0KIAogICAgIHZpcnR1YWwgV29ya2VyRGVidWdnZXJQcm94eSogd29ya2VyRGVidWdnZXJQcm94
eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2Fk
ZXJQcm94eSgpID0gMDsKQEAgLTc3LDcgKzc3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBydW5FdmVudExvb3AoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFJlZjxXVEY6OlRo
cmVhZD4gY3JlYXRlVGhyZWFkKCkgPSAwOworICAgIHZpcnR1YWwgUmVmPFRocmVhZD4gY3JlYXRl
VGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlPiBjcmVhdGVHbG9iYWxTY29wZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVT
Y3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkV2Fp
dEZvcldlYkluc3BlY3Rvck9uU3RhcnR1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04
Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBMb2Nr
IG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9iYWxTY29wZUxvY2s7CiAgICAgUmVmUHRyPFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlPiBtX2dsb2JhbFNjb3BlOwotICAgIFJlZlB0cjxXVEY6OlRocmVh
ZD4gbV90aHJlYWQ7CisgICAgUmVmUHRyPFRocmVhZD4gbV90aHJlYWQ7CiAgICAgVW5pcXVlUmVm
PFdvcmtlclJ1bkxvb3A+IG1fcnVuTG9vcDsKICAgICBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiBtX2V2YWx1YXRlQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZCgpPiBtX3N0b3BwZWRD
YWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IDZj
MDJmMTMyZGZlOWY5OGI5ODc0YzZjMjQxYzI5ZDMyYmJlOGVkOGYuLmZjZTVjZTEzMjkzYmI1YmY5
NmQ2MDNlZGFjMmUwZTVmNjk2NTNhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBX
b3JrZXJTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7CiBwdWJsaWM6CiAg
ICAgLy8gU2hhcmVkVGltZXIgaW50ZXJmYWNlLgotICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgZmluYWwgeyBtX3NoYXJlZFRpbWVyRnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQorICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pIGZpbmFsIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbik7IH0KICAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChTZWNvbmRz
IGludGVydmFsKSBmaW5hbCB7IG1fbmV4dEZpcmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkg
KyBpbnRlcnZhbDsgfQogICAgIHZvaWQgc3RvcCgpIGZpbmFsIHsgbV9uZXh0RmlyZVRpbWUgPSBN
b25vdG9uaWNUaW1lIHsgfTsgfQogCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGZpcmUoKSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbigpOyB9CiAKIHByaXZhdGU6Ci0gICAgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+IG1fc2hhcmVkVGltZXJGdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2
b2lkKCk+IG1fc2hhcmVkVGltZXJGdW5jdGlvbjsKICAgICBNb25vdG9uaWNUaW1lIG1fbmV4dEZp
cmVUaW1lOwogfTsKIApAQCAtMTY0LDcgKzE2NCw3IEBAIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQg
V29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEFTU0VSVChjb250ZXh0LT53b3JrZXJPcldvcmts
ZXRUaHJlYWQoKS0+dGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAotICAgIEpTQzo6
SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGltZXJBZGRlZFRhc2sg
PSBXVEY6OmNyZWF0ZVNoYXJlZFRhc2s8SlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmlj
YXRpb25UeXBlPihbdGhpc10geworICAgIEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZp
Y2F0aW9uQ2FsbGJhY2sgdGltZXJBZGRlZFRhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPEpTQzo6SlNS
dW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uVHlwZT4oW3RoaXNdIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgaGVyZSwgd2UganVzdCB3YW50IHRvIGxvb3Ag
YXJvdW5kIHJ1bkluTW9kZQogICAgICAgICAvLyB0byBib3RoIHJlY2FsY3VsYXRlIG91ciBkZWFk
bGluZSBhbmQgdG8gcG90ZW50aWFsbHkgcnVuIHRoZSBydW4gbG9vcC4KICAgICAgICAgdGhpcy0+
cG9zdFRhc2soW10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBlYTUzODBmYmVlZjg3NTQwMzE2
YTZmYTkyNzhjYzIxN2M4OTMxNGUwLi5lYWFiZTFlYTVkMTNiMzNmOWMzY2M2NmRkNDk1NTdlYjY5
ZTM3ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
QEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXNv
dXJjZUVycm9yIHZhbGlkYXRlV29ya2VyUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24pOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBXVEY6OlJlZkNvdW50ZWQ8V29ya2VyU2NyaXB0TG9hZGVyPjsKKyAgICBmcmllbmQgY2xhc3Mg
UmVmQ291bnRlZDxXb3JrZXJTY3JpcHRMb2FkZXI+OwogICAgIGZyaWVuZCBzdHJ1Y3Qgc3RkOjpk
ZWZhdWx0X2RlbGV0ZTxXb3JrZXJTY3JpcHRMb2FkZXI+OwogCiAgICAgV29ya2VyU2NyaXB0TG9h
ZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCAxMThhNTE5OGZl
N2U1NTA4YzY0YzlmZGRjOTllZjBiMTg3NTMwNWE2Li5iNDM1MGM0N2FmZjgzODEyNjdhOWY2Zjk4
MjcwOWEzN2JiMzdjMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAg
LTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEV2YWx1
YXRpbmdTY3JpcHQoKSB7IH0KIAogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KLSAgICBS
ZWY8V1RGOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpIGZpbmFsOworICAgIFJlZjxUaHJlYWQ+IGNy
ZWF0ZVRocmVhZCgpIGZpbmFsOwogICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZT4gY3JlYXRlR2xvYmFsU2NvcGUoKSBmaW5hbDsKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SWZO
ZWNlc3NhcnkoU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKICAgICBib29sIHNob3Vs
ZFdhaXRGb3JXZWJJbnNwZWN0b3JPblN0YXJ0dXAoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5jcHAKaW5kZXggNjY5
ZThiYzUxYmFjNWFjMzYyMjQ4ZWZhMDM0OTE5MjNiMTA2MmEwOS4uMjExYjI1OThlMjBiZmNlNzQ4
ZjgyN2FjMTQ1MDk4MzRhMjBkMzA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVudC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEV4
dGVuZGFibGVFdmVudDo6YWRkRXh0ZW5kTGlmZXRpbWVQcm9taXNlKFJlZjxET01Qcm9taXNlPiYm
IHByb21pc2UpCiAgICAgKyttX3BlbmRpbmdQcm9taXNlQ291bnQ7CiB9CiAKLXZvaWQgRXh0ZW5k
YWJsZUV2ZW50Ojp3aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoV1RGOjpG
dW5jdGlvbjx2b2lkKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKT4mJiBoYW5kbGVyKQordm9p
ZCBFeHRlbmRhYmxlRXZlbnQ6OndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxl
ZChGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKT4mJiBoYW5kbGVyKQog
ewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodGFyZ2V0KCksICJFdmVudCBoYXMgbm90IGJlZW4g
ZGlzcGF0Y2hlZCB5ZXQiKTsKICAgICBBU1NFUlQoIW1fd2hlbkFsbEV4dGVuZExpZmV0aW1lUHJv
bWlzZXNBcmVTZXR0bGVkSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmgKaW5kZXggMWMyZDliN2U0MzU0OWI4ODU3NzlhOTZlMGMy
MDIxZDgxNmI0OTk3Zi4uODFhMzM4ZjljZjcyNzdmMDFjNDVkM2U5OTIzOGVlNWU2OTkxYTFmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQu
aApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gd2FpdFVu
dGlsKFJlZjxET01Qcm9taXNlPiYmKTsKICAgICB1bnNpZ25lZCBwZW5kaW5nUHJvbWlzZUNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nUHJvbWlzZUNvdW50OyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChXVEY6
OkZ1bmN0aW9uPHZvaWQoSGFzaFNldDxSZWY8RE9NUHJvbWlzZT4+JiYpPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChG
dW5jdGlvbjx2b2lkKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKT4mJik7CiAKIHByb3RlY3Rl
ZDoKICAgICBXRUJDT1JFX0VYUE9SVCBFeHRlbmRhYmxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IEV4dGVuZGFibGVFdmVudEluaXQmLCBJc1RydXN0ZWQpOwpAQCAtNjEsNyArNjEsNyBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGVuZGluZ1Byb21pc2VDb3Vu
dCB7IDAgfTsKICAgICBIYXNoU2V0PFJlZjxET01Qcm9taXNlPj4gbV9leHRlbmRMaWZldGltZVBy
b21pc2VzOwotICAgIFdURjo6RnVuY3Rpb248dm9pZChIYXNoU2V0PFJlZjxET01Qcm9taXNlPj4m
Jik+IG1fd2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkSGFuZGxlcjsKKyAg
ICBGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKT4gbV93aGVuQWxsRXh0
ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWRIYW5kbGVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dD
bGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBmOTUzY2FlMzI3MDE1MTQxZDM0MGRmMzc1YThiNjVm
ZmUzNTY0ZjAxLi5mZTgyNjBlYzcxOTdlMTZiZWZmM2Q5MzExZGRkOTI5NjYwNjExYzg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0
aW9uLmNwcApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBib29sIGRpc3BhdGNoVG9Db250ZXh0VGhyZWFkSWZOZWNlc3NhcnkoY29uc3QgRG9jdW1lbnRP
cldvcmtlcklkZW50aWZpZXImIGNvbnRleHRJZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCitzdGF0aWMgYm9vbCBkaXNwYXRjaFRv
Q29udGV4dFRocmVhZElmTmVjZXNzYXJ5KGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVy
JiBjb250ZXh0SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik+JiYgdGFzaykKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
Ym9vbCB3YXNQb3N0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKaW5kZXggNTdjMjg4YTBhZjE2
YzBmMmE4OWNhYTdlNWE2OTIxZGJjMTk4NjQzZi4uMGY0ZjYxYjcwMzVhNWE2NzcxMzkwYzAyN2Mw
MWZhYWNkNmU0NTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKQEAgLTkxLDcgKzkxLDcgQEAgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6
OmRlY29kZShEZWNvZGVyJgogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdU
Rk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBXVEZNb3Zl
KCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgfSB9OwogfQogCi11c2luZyBTZXJ2aWNl
V29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47Cit1c2luZyBTZXJ2aWNlV29y
a2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcAppbmRleCA2YzU5ZThkODUxY2M0MjlmNGZjNzQ2OWI2ZTRkOWMz
ZjFjOGEwMTYyLi5kYzc5MjIyNzM4MGM5YzAzNDJkY2Q4OWYxZGQ3MDgxZTc5NTE3YmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29u
c3QKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLmhhc1Byb21pc2UoKSB8fCBqb2IuZGF0
YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRh
dGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCi0gICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3Bl
RXhpdChbdGhpcywgJmpvYl0geworICAgIGF1dG8gZ3VhcmQgPSBtYWtlU2NvcGVFeGl0KFt0aGlz
LCAmam9iXSB7CiAgICAgICAgIGRlc3Ryb3lKb2Ioam9iKTsKICAgICB9KTsKIApAQCAtMzgxLDEx
ICszODEsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhS
ZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLAogICAgICAgICBDT05UQUlORVJfUkVM
RUFTRV9MT0coImpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbjogVXBkYXRlIGpvYiAlIiBQUkl1
NjQgIiBzdWNjZWVkZWQiLCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIH0KIAot
ICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKKyAgICBh
dXRvIGd1YXJkID0gbWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewogICAgICAgICBkZXN0cm95
Sm9iKGpvYik7CiAgICAgfSk7CiAKLSAgICBhdXRvIG5vdGlmeUlmRXhpdEVhcmx5ID0gV1RGOjpt
YWtlU2NvcGVFeGl0KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwga2V5ID0g
ZGF0YS5rZXksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZF0geworICAgIGF1dG8gbm90aWZ5SWZF
eGl0RWFybHkgPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwga2V5ID0gZGF0YS5rZXksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZF0gewogICAgICAg
ICBpZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZl
ZDo6WWVzKQogICAgICAgICAgICAgbm90aWZ5UmVnaXN0cmF0aW9uSXNTZXR0bGVkKGtleSk7CiAg
ICAgfSk7CkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpq
b2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm8KICAgICBB
U1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
IEFTU0VSVChqb2IuaGFzUHJvbWlzZSgpKTsKIAotICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VT
Y29wZUV4aXQoW3RoaXMsICZqb2JdIHsKKyAgICBhdXRvIGd1YXJkID0gbWFrZVNjb3BlRXhpdChb
dGhpcywgJmpvYl0gewogICAgICAgICBkZXN0cm95Sm9iKGpvYik7CiAgICAgfSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAKaW5kZXggMjc0NDViNWJkNzM4ZjM2OTFlM2E4MGRiODE3NTYyZDAxNzMx
ZTQ5MS4uNTEwNDUzNGU1NWY5MWVhYWM2MjQxMTcyYzhhODIxMThiM2Y4YTRkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAKQEAgLTE2MSwxMyArMTYxLDEzIEBAIHZvaWQgU1dDb250ZXh0TWFuYWdl
cjo6c3RvcFdvcmtlcihTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkmIHNlcnZpY2VXb3JrZXIsIFNl
Y29uCiAgICAgfSk7CiB9CiAKLXZvaWQgU1dDb250ZXh0TWFuYWdlcjo6Zm9yRWFjaFNlcnZpY2VX
b3JrZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSYpPiYgYXBwbHkpCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZvckVhY2hTZXJ2aWNlV29y
a2VyVGhyZWFkKGNvbnN0IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlclRocmVhZFByb3h5Jik+
JiBhcHBseSkKIHsKICAgICBmb3IgKGF1dG8mIHdvcmtlclRocmVhZCA6IG1fd29ya2VyTWFwLnZh
bHVlcygpKQogICAgICAgICBhcHBseSh3b3JrZXJUaHJlYWQpOwogfQogCi1ib29sIFNXQ29udGV4
dE1hbmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUm
KT4mJiB0YXNrKQorYm9vbCBTV0NvbnRleHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtl
cihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSYpPiYmIHRhc2spCiB7CiAgICAgYXV0byogc2VydmljZVdvcmtl
ciA9IG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggZWEzNzBiOTdhYzdkNzYxOGIwMTFhNGJjYzdmMTIzYjdh
OTM2MjdiNy4uYzc2NWM1N2QyMDIzZjE0Y2FiYmJkYmI5MGI2ODNlYTY1NDU3MDdjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuaApAQCAtOTUsOSArOTUsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMg
dGltZW91dCwgRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRCdWZmZXIm
JiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogCi0gICAg
dm9pZCBmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U2VydmljZVdvcmtlclRocmVhZFByb3h5Jik+Jik7CisgICAgdm9pZCBmb3JFYWNoU2VydmljZVdv
cmtlclRocmVhZChjb25zdCBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYp
PiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3N0VGFza1RvU2VydmljZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBvc3RUYXNrVG9TZXJ2
aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSYpPiYmKTsKIAogICAgIHVzaW5nIFNlcnZpY2VXb3JrZXJDcmVhdGlv
bkNhbGxiYWNrID0gdm9pZCh1aW50NjRfdCk7CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyQ3Jl
YXRpb25DYWxsYmFjayhTZXJ2aWNlV29ya2VyQ3JlYXRpb25DYWxsYmFjayogY2FsbGJhY2spIHsg
bV9zZXJ2aWNlV29ya2VyQ3JlYXRpb25DYWxsYmFjayA9IGNhbGxiYWNrOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGZl
Zjc1MTEwNTJmODEyNTBhZTgzMDUzNDBlZjVhOTAzYjA4YzQ4NjYuLmFlNjFiNzljMWE4NjUxNTc4
NjQ3ZTEzYzkwNjVjNzY5YmM3YTIyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBT
V1NlcnZlcjo6bWF0Y2hBbGwoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgY29uc3QgU2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3AKICAgICBjYWxsYmFjayhXVEZNb3ZlKG1hdGNoaW5nQ2xpZW50cykp
OwogfQogCi12b2lkIFNXU2VydmVyOjpmb3JFYWNoQ2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVu
dE9yaWdpbiYgb3JpZ2luLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckNs
aWVudERhdGEmKT4mIGFwcGx5KQordm9pZCBTV1NlcnZlcjo6Zm9yRWFjaENsaWVudEZvck9yaWdp
bihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgRnVuY3Rpb248dm9pZChTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSYpPiYgYXBwbHkpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fY2xp
ZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZmluZChvcmlnaW4pOwogICAgIGlmIChpdGVyYXRvciA9
PSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDBhYzMxNjcyMmFkOGY4
MWUzYmUyNTRlMGFhNDc0MDhmNTlhZTg3MGUuLmE4ZWFhNjBhZTAyOTQ1NWZlY2E3OTRkMDgzN2I4
ZDcxYzJiZTU3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB+U1dTZXJ2ZXIoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGwo
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJBbGwoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0U3VzcGVuc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kU3VzcGVuc2lvbigpOwpAQCAt
MTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4mJiwgU2VydmljZVdvcmtlckNsaWVudERh
dGEmJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcj4mLCBTdHJpbmcmJiB1c2VyQWdlbnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiwgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXIpOwogCi0gICAgdXNpbmcgUnVuU2VydmljZVdvcmtlckNhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiopPjsK
KyAgICB1c2luZyBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiopPjsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJ1blNl
cnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUnVuU2Vydmlj
ZVdvcmtlckNhbGxiYWNrJiYpOwogCiAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uUmVhZHlS
ZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBpbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJik7CiAKICAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uRnJvbVNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lk
IGZvckVhY2hDbGllbnRGb3JPcmlnaW4oY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJik+Jik7CisgICAgdm9pZCBmb3JF
YWNoQ2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoU2VydmljZVdvcmtlckNsaWVudERhdGEmKT4mKTsKIAogICAgIHZvaWQgcGVyZm9ybUdldE9y
aWdpbnNXaXRoUmVnaXN0cmF0aW9uc0NhbGxiYWNrcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApp
bmRleCA3OGM3NzM4NTQ1N2Q2MTk2NmQxZTEyNGFmMzNlZGQzMzg5MThlZmE3Li5kNjBmZjAwOTli
YTFjOGMwOGNhMWU3YTYyMmQ2Zjg3NDFhZmZhYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAg
LTM3Miw3ICszNzIsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OmZpbmlzaEN1cnJlbnRKb2Io
KQogICAgICAgICBydW5OZXh0Sm9iKCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVt
b3ZlQWxsSm9ic01hdGNoaW5nKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYpPiYgbWF0Y2hlcykKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVtb3ZlQWxsSm9i
c01hdGNoaW5nKGNvbnN0IEZ1bmN0aW9uPGJvb2woU2VydmljZVdvcmtlckpvYkRhdGEmKT4mIG1h
dGNoZXMpCiB7CiAgICAgYm9vbCBpc0ZpcnN0ID0gdHJ1ZTsKICAgICBib29sIGRpZFJlbW92ZUZp
cnN0Sm9iID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCmluZGV4IGViOTMxZTA0MTQ3MDBlZDU5Njdh
YWI2MWQ2NDgyNzU4MTI1OWM0MzcuLjRmZDVlNjE4OWQ3MTlkMGI4M2ZmYWQ5OTY1OTQ3MjVlNjc2
NzIyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGluc3RhbGwoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAKLSAgICB2b2lkIHJlbW92ZUFsbEpvYnNNYXRjaGluZyhjb25zdCBXVEY6OkZ1bmN0
aW9uPGJvb2woU2VydmljZVdvcmtlckpvYkRhdGEmKT4mKTsKKyAgICB2b2lkIHJlbW92ZUFsbEpv
YnNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFNlcnZpY2VXb3JrZXJKb2JEYXRhJik+Jik7
CiAKICAgICBEZXF1ZTxTZXJ2aWNlV29ya2VySm9iRGF0YT4gbV9qb2JRdWV1ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBhZjk1YTFhMDYxZjU3MDBiMDliOGMxN2ViMmRkYjI2
MDYyYmY3ODE1Li44NmI1ODI2NDE0ZDljNTgyYjZlYjBmZDNkNDE5Yjk5ZjIwNjc3OGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OmZpcmVVcGRhdGVGb3VuZEV2ZW50KCkKICAgICB9KTsKIH0KIAotdm9p
ZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Zm9yRWFjaENvbm5lY3Rpb24oY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKFNXU2VydmVyOjpDb25uZWN0aW9uJik+JiBhcHBseSkKK3ZvaWQgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb246OmZvckVhY2hDb25uZWN0aW9uKGNvbnN0IEZ1bmN0aW9uPHZvaWQoU1dTZXJ2
ZXI6OkNvbm5lY3Rpb24mKT4mIGFwcGx5KQogewogICAgIGZvciAoYXV0byBjb25uZWN0aW9uSWRl
bnRpZmllcldpdGhDbGllbnRzIDogbV9jb25uZWN0aW9uc1dpdGhDbGllbnRSZWdpc3RyYXRpb25z
LnZhbHVlcygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zZXJ2ZXIuY29u
bmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllcldpdGhDbGllbnRzKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uaAppbmRleCA1ZDFlOTJiOTE0N2M1YTMzMGI2ZDVkYzIxMDNjM2YzZWQwNjc2NGM1Li4y
YzE2NGU0NDRiNDVjZTY5MGI1ZTM2OGZmOGFiZmVkNjkwNzhiN2U0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGlzVW5y
ZWdpc3RlcmVkKCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9uKGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYpOworICAgIHZvaWQgZm9y
RWFjaENvbm5lY3Rpb24oY29uc3QgRnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYp
PiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZl
dGNoT3B0aW9ucyYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0
VXBkYXRlKElzQXBwSW5pdGlhdGVkKTsK
</data>
<flag name="commit-queue"
          id="466807"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442341</attachid>
            <date>2021-10-25 00:06:45 -0700</date>
            <delta_ts>2021-10-25 13:58:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232226-20211025160642.patch</filename>
            <type>text/plain</type>
            <size>519371</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdiZDg5ZTg4NjViZmVmZTdkYmZkYzZi
ZTBkNGRjODBlZWJhODBjYWMuLjU3ZGJmNGZjNmQ3NjAxYmY5MWUwYjA2OGQ3ZGI0ZTU1NjhjYWJk
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMjUgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW1dlYkNvcmVdIFJlbW92ZSB1bm5lZWRl
ZCBXVEY6OiBuYW1lc3BhY2UgcHJlZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzIyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9Gb3J3YXJkLmg6CisKIDIwMjEtMTAtMjQgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRvcHQgYnJpZGdlX2Nh
c3QgYW5kIG1ha2VWZWN0b3IgaW4gYSBmZXcgbW9yZSBwbGFjZXMsIGluY2x1ZGluZyBjYXNlcyB3
aGVyZSBhZG9wdENGL05TIHdhcyB1c2VkIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE5ZGE1
NGNjNTU3OTk2YTNjMTk1OTdmZjQ2MzFmYmRmZjU3YTlmMi4uN2Y3Yzg1MzMzZGQ5OTMwNzgwZGRj
YWUxZDM2ZjRiOTg4YzM0ZDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1NCBAQAorMjAyMS0x
MC0yNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAgICAg
ICBbV2ViQ29yZV0gUmVtb3ZlIHVubmVlZGVkIFdURjo6IG5hbWVzcGFjZSBwcmVmaXgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjIyNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVNlc3Npb25FcnJvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGlu
YXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAoV2ViQ29yZTo6
UGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKToKKyAgICAgICAgKiBNb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVw
YXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVz
TWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0
ZW1BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6dHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRp
b24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5o
OgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmg6CisgICAgICAg
ICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bGxIZWFkZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hIZWFkZXJzOjpJdGVyYXRvcjo6
bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAg
ICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmg6
CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJBY3RpdmVET01PYmplY3Q6OmNhbGxGdW5jdGlvbk9uT3JpZ2luVGhyZWFkKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJ
bmRleDo6ZG9PcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb09wZW5L
ZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRvR2V0QWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldEFsbEtleXMpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvT3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9PcGVuS2V5Q3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0RlbGV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9HZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
djFSZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2MVJl
Y29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OnYyUmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djJS
ZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
Ojp2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6djFJbmRleFJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OnYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjp2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlOjpsb2dnZXJQdHIgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJN
ZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNoYW5nZU9ic2VydmVyKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpl
eGlzdGluZ1RyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50
UmVxdWVzdDo6c2hvdyk6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNlOjpyZXRyeSk6
CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb246OnRvSlNPTiBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSlNPTi5oOgorICAgICAgICAqIE1vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWRhYmxlU3RyZWFtU291cmNlOjpwdWxsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXplQXVk
aW9QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5v
ZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGVPcHRpb25z
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8p
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpPZmZsaW5lQXVkaW9Db250ZXh0OjpmaW5pc2hlZFJlbmRlcmluZyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0Lmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpuZXh0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJJbnB1dFNvdXJjZUFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5w
dXRTb3VyY2VBcnJheTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0QWNj
ZXNzaWJsZU9iamVjdEZyb21Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk6
OmFwcGVuZENoaWxkcmVuVG9BcnJheSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6
cmVtb3ZlQ2hpbGRTY3JvbGxiYXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGUuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldEluZGV4SW5QYXJl
bnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcDoKKyAgICAgICAgKG51bWJlck9mUmVwbGFjZWRFbGVtZW50c0JlZm9yZU9mZnNl
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aDoKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjphbmltYXRpb25DYW5CZVJlbW92ZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL0lETFR5cGVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NUHJvbWlz
ZVByb3h5Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6aW52b2tl
Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjppbnZva2VD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FjaGVkUHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAqIGJyaWRnZS9jL2NfdXRpbGl0eS5oOgorICAgICAgICAq
IGNvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25z
QmFja2VuZDo6Zm9yRWFjaCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbnNEZWJ1Z2dpbmcuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21i
aW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQ29tYmlu
ZXI6OmNvbWJpbmVERkFzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5l
ci5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVy
Lmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oOgorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL1Rlcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpUZXJtOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGht
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hPcGVyYXRp
b25JbldvcmtRdWV1ZSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oOgorICAg
ICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oOgorICAgICAgICAqIGNzcy9DU1NDcm9z
c2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6dHJh
dmVyc2VTdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5oOgorICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzIGNvbnN0KToK
KyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFs
dWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAg
KiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNl
dFZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0lt
YWdlU2V0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6Cisg
ICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzIGNvbnN0
KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6dHJhdmVyc2VTdWJyZXNvdXJj
ZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKiBjc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6
dHJhdmVyc2VTdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRp
ZXMuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRyYXZlcnNlUnVsZXNJblZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNo
ZWV0Q29udGVudHM6OnRyYXZlcnNlUnVsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVTaGVldENvbnRlbnRzOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6CisgICAgICAgICog
Y3NzL1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAg
ICAgICAgKiBjc3MvbWFrZXZhbHVlcy5wbDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNl
ckZhc3RQYXRocy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybVRyYW5zbGF0
ZUFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybUFuZ2xlQXJndW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VUcmFuc2Zvcm1OdW1iZXJBcmd1bWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQ2FuTGlrZWx5VXNlRmFzdFBhdGgpOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aXNBcHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NWYWx1
ZUtleXdvcmRJRCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25z
dW1lRm9udEZhbWlseVJhdyk6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OnJ1bGVDb2xsZWN0b3JTaW1wbGVT
ZWxlY3RvckNoZWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6cXVl
cnlTZWxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3RvckNvbXBpbGVyOjpydWxlQ29sbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpxdWVyeVNlbGVjdG9y
U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NDb2xvclNjaGVtZVN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWF0Y2hpbmdBbmltYXRpb25zKToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAg
ICAgICAgKiBkb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmg6CisgICAgICAgICogZG9tL1Njcmlw
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6U2NyaXB0RWxl
bWVudCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzazo6VGFzayk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6c3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJHZXN0dXJlVG9rZW46OmFkZERlc3RydWN0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRv
bS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRz
Lmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcv
U21hcnRSZXBsYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFNtYXJ0U2V0KToKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpwYXJzZSk6CisgICAgICAgICogZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIGVkaXRpbmcvbWFj
L0RpY3Rpb25hcnlMb29rdXAuaDoKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6c2FuaXRpemVNYXJrdXApOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmg6Cisg
ICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0
cmVhbTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06Om9wZW5G
b3JSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6cmVhZCk6CisgICAg
ICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6bGFzdE1vZGlmaWVkIGNvbnN0KToKKyAgICAg
ICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAqIGh0bWwv
QXV0b2ZpbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9t
SFRNTEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudDo6SFRNTEltYWdlRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Ondh
aXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2FpdEZv
clByZXBhcmVkRm9ySW5saW5lVGhlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgICogaHRtbC9IVE1MU2xvdEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50Ojphc3NpZ25lZE5v
ZGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6YXNzaWduZWRF
bGVtZW50cyBjb25zdCk6CisgICAgICAgICogaHRtbC9MaW5rSWNvblR5cGUuaDoKKyAgICAgICAg
KiBodG1sL1N1Ym1pdEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1Ym1pdEV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlVSTFNlYXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKToKKyAgICAgICAgKFdlYkNv
cmU6OlVSTFNlYXJjaFBhcmFtczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFNlYXJj
aFBhcmFtczo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIGh0bWwvVVJMU2VhcmNoUGFyYW1z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxTZWFyY2hQYXJhbXM6OnBhaXJzIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENv
bnRleHRPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFByb2dyYW0uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuc3VyZU5vdE51bGwgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFNoYWRlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjay5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1wbCk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb3JlaWduQXR0cmlidXRlc01hcCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvUGFy
c2luZ1V0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6c2tpcEV4YWN0bHlJZ25vcmluZ0FT
Q0lJQ2FzZSk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZUVFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAoV2ViQ29yZTo6VlRUU2Nhbm5l
cjo6c2NhblJ1bik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZXF1YWxMaXRlcmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZU
VFRva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbik6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6aGFzVHJhaWxpbmdUZXh0Q29udGVudCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmU6OnZpc3VhbGx5Q29sbGFwc2VIYW5naW5nT3ZlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmU6OmFkZFRyYWlsaW5nSHlwaGVuKToKKyAgICAgICAgKiBsYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5oOgorICAgICAgICAqIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpkaXN0cmlidXRlQXZhaWxhYmxlU3BhY2UpOgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bWFrZVRleHRMb2dpY2FsT3JkZXJDYWNo
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjptYWtlTGluZUxv
Z2ljYWxPcmRlckNhY2hlKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Db3ZlcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6Y2FuVXNlRm9yTGluZUxheW91dFdpdGhSZWFzb24pOgorICAgICAgICAqIGxheW91dC9sYXlv
dXR0cmVlL0xheW91dEl0ZXJhdG9yLmg6CisgICAgICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpjbGVhcik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0
cmF0ZWd5Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2Fj
aGU6OnJldmFsaWRhdGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
cmVzb3VyY2VGb3JSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
Zm9yRWFjaFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpmb3JFYWNo
U2Vzc2lvblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmUp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAqIGxvYWRl
ci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMuaDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYWNrRGlzcGxheU5hbWUp
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnQ6OnNob3dTaGFyZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6c2hvd0NvbnRhY3RQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojpl
eGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudDo6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzcyk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpj
cmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzaG93TW9kYWxEaWFs
b2cpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2
ZW50VGFyZ2V0Tm9kZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjphcHBseVJlY3Vyc2l2ZWx5V2l0aFZpc2libGVSZWN0KToKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXJFbnRyeS5oOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRy
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6Zm9yRWFjaFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlUmVuZGVy
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6d2hlblVubmVzdGVkKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OmRpc3BhdGNoRXZlbnRGb3JU
b3VjaEF0SW5kZXgpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmg6
CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6OndhaXRVbnRpbE9ic2VydmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjp0aHJlYWRCb2R5KToKKyAgICAgICAgKiBwYWdl
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oOgorICAgICAgICAqIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5oOgorICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oOgorICAgICAgICAqIHBhZ2UvV2hlZWxF
dmVudFRlc3RNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9u
aXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKToKKyAgICAgICAgKiBwYWdl
L1doZWVsRXZlbnRUZXN0TW9uaXRvci5oOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc0ZlYXR1cmVzU3RyaW5nKToKKyAgICAgICAg
KiBwYWdlL1dpbmRvd0ZlYXR1cmVzLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dKYXZhU2NyaXB0VVJMcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Tm9uUGFyc2VySW5zZXJ0ZWRTY3Jp
cHRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxs
b3dJbmxpbmVTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd0lubGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dGcmFtZUFuY2VzdG9ycyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0RnJvbVNv
dXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd1Jlc291cmNlRnJvbVNvdXJjZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29ubmVjdFRvU291cmNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNl
VVJJIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VmlvbGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6bG9nVG9Db25zb2xlIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpTY3JvbGxpbmdUaHJlYWQp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOaWNvc2lhOjpzY3JvbGxpbmdOb2RlRm9yUG9pbnQpOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdGFydEFuaW1h
dGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9DUFVNb25pdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vRmls
ZU1vbml0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZU1vbml0b3I6OkZpbGVNb25pdG9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vTWFpblRocmVhZFNo
YXJlZFRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
c2V0RmlyZWRGdW5jdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRp
bWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25Nb21lbnR1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25N
b21lbnR1bTo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6
OmNyZWF0ZVRpbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVyOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lcjo6
VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcjo6RGVmZXJy
YWJsZU9uZVNob3RUaW1lcik6CisgICAgICAgICogcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1N5
c3RlbUJhdHRlcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJ
bmxpbmVUaGVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OnNldExvZ2dlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OnNldExvZ2dlcik6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
UHJpdmF0ZTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlTdG9yZTo6Y29udGFpbnNLZXlJRCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlTdG9yZTo6YWRkKToKKyAgICAgICAgKFdlYkNv
cmU6OktleVN0b3JlOjp1bnJlZik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUmVzdHJpY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6eHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
bGliL0ZpbGVNb25pdG9yR0xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlTW9uaXRvcjo6
RmlsZU1vbml0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dMQ29udGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjp0cmF2ZXJzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAoR0NHTFNwYW48R0NHTHZv
aWQ+OjpHQ0dMU3Bhbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldEVuY29kZWREYXRhU3RhdHVz
Q2hhbmdlQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
RW51bXMuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6UmVhZHlTdGF0ZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlPjo6dG9TdHJpbmcpOgorICAg
ICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJp
bmdQb2xpY3k+Ojp0b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpzdHJva2VCb3VuZGluZ1JlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlVmlkZW9TYW1wbGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmg6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBv
cmFyeUFOR0xFU2V0dGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29tcGxldGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZpY2F0aW9uOjpGdW5j
dGlvbjx2b2lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6Tm90aWZpY2F0aW9uOjpXVEY6OkZ1bmN0aW9uPHZvaWQpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVy
TWFuYWdlck9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmlt
YXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjcmVh
dGVGbHVzaGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hl
V2l0aFRpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpT
dWJpbWFnZUNhY2hlSGFzaDo6aGFzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2Nv
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXND
b250ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06Ok9uRWJtbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6bG9nZ2VyUHRyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlz
cGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlz
cGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjZWxl
cmF0ZUJveEJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3Jt
QXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaW1wbGVCdXNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0NvZGVjU3VwcG9ydGVkIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWRO
b3RpZmllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhUGxheWVyRW5jb2RpbmdDb25maWd1cmF0aW9uR1N0cmVh
bWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5VGh1bmRlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0
aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKGNvbnN0cnVjdGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzcmNFbmRPZkFwcGVuZENoZWNr
ZXJQcm9iZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cmVzZXRQYXJzZXJT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6aGFuZGxlQXBwc2lua05l
d1NhbXBsZUZyb21TdHJlYW1pbmdUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1w
b3JhcnlPcGVuR0xTZXR0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFkU3BlY2lmaWNBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5Ojpkcm9wQ3VycmVudEJ1ZmZlcldoaWxlUHJlc2VydmluZ1RleHR1cmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdXaXRoU2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3V2l0aG91dFNoYWRvdyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YTo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5o
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OlBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJ
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRHRElPYmplY3Q6Omhhc2ggY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZmFsbGJhY2tDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6d2FsbFRpbWVGb3JFdmVudCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVl
bkRQSU9ic2VydmVySGFuZGxlcnNNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJN
YWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2Nr
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpmaW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmb3JFYWNoIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmaWx0ZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50czo6aXNDb25zdHJhaW50U2V0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6ZmluZCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2Fw
dHVyZVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3Ry
ZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmg6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlNb2NrLmg6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrOjpTY3JvbGxiYXJzQ29udHJvbGxlck1vY2sp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OndyaXRlRmlsZVBhdGhzT3JEYXRhQnVmZmVyc1RvRmlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFdoaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNraXBDaGFyYWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXI6
OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5v
dGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llQ2hhbmdlQ2FsbGJhY2tNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVKYXJEQjo6c2V0Q29va2llKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llU3RvcmFnZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZp
bmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
VXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpkb21haW5NYXRjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpwYXJzZUV4cGlyZXNNUyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb29raWVVdGlsOjpwYXJzZUNvb2tpZUF0dHJpYnV0ZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpleGVjdXRlVGFza3MpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxTdHJlYW06OkN1cmxTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxPbldvcmtlclRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsQ2xpZW50
T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1TY2hlZHVsZXI6OmV4
ZWN1dGVUYXNrcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1T
Y2hlZHVsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkZXN0cm95Q29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbENv
bGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzZXRD
b2xsYXRpb25GdW5jdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1NpbmdsZUJ5dGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsYXN0
SHlwaGVuTG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDoKKyAg
ICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjazo6bGFz
dE92ZXJmbG93U2Nyb2xsUHJveHlOb2RlSUQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9M
ZWdhY3lJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5Um9vdElu
bGluZUJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlZFNWR1Jlc291cmNlczo6YWRkQ2xpZW50
Rm9yVGFyZ2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjplbnN1cmVSZWZlcmVu
Y2VkU1ZHUmVzb3VyY2VzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySXRlcmF0b3IuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hvd0xheWVyVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVkRGVzY2Vu
ZGFudExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck92ZXJmbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaDoK
KyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlSW52
YWxpZGF0b3IuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaDoKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5oOgorICAgICAgICAqIHRlc3RpbmcvVHlwZUNvbnZlcnNp
b25zLmg6CisgICAgICAgIChXZWJDb3JlOjpUeXBlQ29udmVyc2lvbnM6OnRlc3RMb25nUmVjb3Jk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGVDb252ZXJzaW9uczo6c2V0VGVzdExvbmdS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUNvbnZlcnNpb25zOjp0ZXN0Tm9kZVJlY29y
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBlQ29udmVyc2lvbnM6OnNldFRlc3ROb2Rl
UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGVDb252ZXJzaW9uczo6dGVzdFNlcXVlbmNl
UmVjb3JkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGVDb252ZXJzaW9uczo6c2V0VGVz
dFNlcXVlbmNlUmVjb3JkKToKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJv
bGxlci5oOgorICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKToKKyAgICAg
ICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNG
b3JUZXN0aW5nKToKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6c3RhcnQpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQ6OnRocmVhZCBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlZGljYXRlZFJ1bkxvb3A6
OnJ1bkluTW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaDoKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9FeHRlbmRhYmxlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kYWJsZUV2ZW50
Ojp3aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoVG9D
b250ZXh0VGhyZWFkSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OmZvckVh
Y2hTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFn
ZXI6OnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Zm9yRWFjaENs
aWVudEZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpyZW1vdmVBbGxKb2JzTWF0
Y2hpbmcpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OmZvckVhY2hD
b25uZWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmg6CisKIDIwMjEtMTAtMjQgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbWFnZUJpdG1hcCBzaG91bGQgcmVwb3J0IGl0cyBtZW1vcnkg
Y29zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZjdhY2IzYjE2NzQ3MjdjYTdiMWM3YjYzYWE4OTVl
NTk4NTUyNjc4ZS4uODE3NWFiMjBhNjJlODJiYTk5M2YxOWJjYjM5ZmMzN2ZkNWUwZDUyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMjUgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW1dlYkNvcmVdIFJlbW92
ZSB1bm5lZWRlZCBXVEY6OiBuYW1lc3BhY2UgcHJlZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaDoKKyAg
ICAgICAgKFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5OjpIeXN0ZXJlc2lzQWN0aXZpdHkpOgorICAg
ICAgICAqIHBhbC9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxs
YmFjayk6CisgICAgICAgICogcGFsL0xvZ2dpbmcuaDoKKwogMjAyMS0xMC0yMyAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBVbmlmeSBzcGVlY2gg
c3ludGhlc2l6ZXIgcGxhdGZvcm0gdXNhZ2UgZm9yIE1hYy9pT1MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCBmMDBj
ZTM5NjA5OWVmYmNmOTBkM2VhMWNiMThjNDVlNDg3YTcyMjUwLi5jYWVhOGFlYWQzNmZhNTliM2Rk
MDE0MzdlN2UxMTcyOTVlZjVmZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJk
LmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0xNTcsNiArMTU3LDcgQEAgdXNp
bmcgV1RGOjpUZXh0U3RyZWFtOwogdXNpbmcgV1RGOjpVUkw7CiB1c2luZyBXVEY6OlVuaXF1ZVJl
ZjsKIHVzaW5nIFdURjo6VmVjdG9yOwordXNpbmcgV1RGOjpXZWFrUHRyOwogCiB0ZW1wbGF0ZTxj
bGFzcyBULCBjbGFzcyBFPiB1c2luZyBFeHBlY3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjpleHBl
Y3RlZDxULCBFPjsKIHRlbXBsYXRlPGNsYXNzIEU+IHVzaW5nIFVuZXhwZWN0ZWQgPSBzdGQ6OmV4
cGVyaW1lbnRhbDo6dW5leHBlY3RlZDxFPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uRXJyb3IuaAppbmRleCAxZDY0ZTg1Y2IyZGNm
NThiYzFjNTYwMGY3YTkyYTQyYzMzNGI1Zjc5Li40OGI0Mzc4YWVhYTFhYjY1YWY4OGUzNTFkMGVj
NWUxNzNiM2FlMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVNlc3Npb25FcnJvci5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBBcHBsZVBheVNlc3Npb25FcnJvciB7Ci0gICAgdXNpbmcgSW5m
b1JlY29yZCA9IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+OworICAg
IHVzaW5nIEluZm9SZWNvcmQgPSBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj47
CiAgICAgU3RyaW5nIGNvZGU7CiAgICAgSW5mb1JlY29yZCBpbmZvOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcApp
bmRleCBlNmYwMTBlZmI1NWRhYjhlYzNjZWNlMzY3NGIyODhmZjcxYTUwOGY1Li42MWQ0M2YzOTg5
NzdmODk1YTJjNDcwMzllMzhjYmFkMDQzMTk5ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC04MCw3ICs4
MCw3IEBAIGJvb2wgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5NYWtlUGF5bWVudHMoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBheW1lbnRDb29yZGluYXRv
cjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXlt
ZW50c1dpdGhBY3RpdmVDYXJkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtZXJj
aGFudElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgbV9jbGllbnQuY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQobWVyY2hhbnRJ
ZGVudGlmaWVyLCBkb2N1bWVudC5kb21haW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGRvY3VtZW50ID0gV2Vha1B0ciB7IGRvY3VtZW50IH0sIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgY2FuTWFrZVBheW1lbnRzKSB7
CiAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUGF5bWVudENv
b3JkaW5hdG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0CiAgICAgfSk7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5
bWVudFNldHVwKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50
aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUEFZTUVOVF9DT09SRElOQVRPUl9SRUxFQVNF
X0xPRygib3BlblBheW1lbnRTZXR1cCgpIik7CiAgICAgbV9jbGllbnQub3BlblBheW1lbnRTZXR1
cChtZXJjaGFudElkZW50aWZpZXIsIGRvY3VtZW50LmRvbWFpbigpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50Q29vcmRpbmF0b3IuaAppbmRleCA5YmZmZDRjMGQ5MjhjMDg4MmJmYWU5ZGI4YTUxNmFl
NTc0NjAzZjQ3Li4yNjdiNTg2ZWUwNTBlZjJhYTcwODRmM2JiMDJhZTlkNzJkZDk4ZjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yLmgKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzdXBwb3J0c1ZlcnNp
b24oRG9jdW1lbnQmLCB1bnNpZ25lZCB2ZXJzaW9uKSBjb25zdDsKICAgICBib29sIGNhbk1ha2VQ
YXltZW50cyhEb2N1bWVudCYpOwotICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNh
cmQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIG9wZW5QYXlt
ZW50U2V0dXAoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGNh
bk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBtZXJj
aGFudElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KTsKIAogICAgIGJvb2wgaGFzQWN0aXZlU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
U2Vzc2lvbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5o
CmluZGV4IGQ0YWVhZjY2YTRlYjhiZWM3MjE0OGViMTVlN2I4MmQyNWFlMTQwNTMuLjdiZmVjZmU5
NTVlMDhjNTlhN2M4YjJkOGVjNDE4OTM3YTlhM2RlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3Qv
QXBwbGVQYXlQYXltZW50SGFuZGxlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gY29udmVydERhdGEoSlNDOjpKU1ZhbHVlKSBmaW5hbDsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzaG93KERvY3VtZW50JikgZmluYWw7CiAgICAgdm9pZCBoaWRlKCkg
ZmluYWw7Ci0gICAgdm9pZCBjYW5NYWtlUGF5bWVudChEb2N1bWVudCYsIFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCBjYW5NYWtl
UGF5bWVudChEb2N1bWVudCYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRldGFpbHNVcGRhdGVkKFBheW1lbnRS
ZXF1ZXN0OjpVcGRhdGVSZWFzb24sIFN0cmluZyYmIGVycm9yLCBBZGRyZXNzRXJyb3JzJiYsIFBh
eWVyRXJyb3JGaWVsZHMmJiwgSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykgZmlu
YWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gbWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVkKEpT
Qzo6SlNWYWx1ZSYmKSBmaW5hbDsKICAgICB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0aW9uYWw8UGF5
bWVudENvbXBsZXRlPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oCmluZGV4IDEwM2RkYzBjMGFjYWFkYzZmMmM2YjFjMTE0OThjOTZhNmYzZTQ5
MjAuLmQ4YTRiM2FmMTJmMWE3OTIzZDg4NzA1ZDViOTU4MWQzNmYxMDI3MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNjIsNyArNjIsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxDRE0+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKTsKICAgICB+Q0RNKCk7CiAKLSAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1
cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxNZWRpYUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24+KT47CisgICAgdXNpbmcgU3VwcG9ydGVkQ29uZmlndXJhdGlv
bkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbj4pPjsKICAgICB2b2lkIGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgU3VwcG9ydGVk
Q29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0o
KSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQpAQCAtODYsNyArODYsNyBAQCBwcml2YXRl
OgogICAgIENETShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIAogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJlZjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAg
UmVmPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwog
I2VuZGlmCiAgICAgU3RyaW5nIG1fa2V5U3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggODIxNzkw
Mzg1N2ViODIxNGEwMjlkMzM1ZGY4Yjg5ODQ0NmE0NDIwNy4uM2Q5NmY4ODAyZTc0Nzg0MWM0ZWZk
YTgxZGNiOTQxZWE2ZTRhNzVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC0xMTksMTIgKzExOSwxMiBA
QCBwcml2YXRlOgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLy8gTG9nZ2VySGVs
cGVyCi0gICAgY29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
Z2VyOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dl
cjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJNZWRp
YUtleVNlc3Npb24iOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0Owog
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50
aWZpZXI7IH0KIAotICAgIFJlZjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmPExvZ2dl
cj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggMzY5ZjFmY2NhNDIyOTAxZTZiNGFmYmI4OTk2MDVi
YmY1N2M4ZDExNi4uNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3OTdhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgTWVkaWFLZXlTdGF0dXNNYXA6
Okl0ZXJhdG9yOjpJdGVyYXRvcihNZWRpYUtleVN0YXR1c01hcCYgbWFwKQogewogfQogCi1zdGQ6
Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1l
ZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6
b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5
U3RhdHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkKIHsKICAgICBpZiAo
IW1fbWFwLT5tX3Nlc3Npb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMDQs
NyArMTA0LDcgQEAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6
OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGkKIAogICAgIGF1dG8mIHBhaXIgPSBz
dGF0dXNlc1ttX2luZGV4KytdOwogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7Ci0gICAgcmV0dXJuIFdU
Rjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVz
PiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsK
KyAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlh
S2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5z
ZWNvbmQgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCmlu
ZGV4IDhmZmQ0Y2Y3ZDlmYmE5ZWE0Y2M1NGZlYzY4MTI3NjcyMzYxZWFlMGEuLmMyMTExMTNhMmM2
ZGFjNzk3OTI0YTk5ZDJkMmRmOTdjMmU2NWY4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIGV4cGxpY2l0IEl0ZXJhdG9yKE1lZGlhS2V5U3RhdHVzTWFwJik7Ci0gICAgICAgIHN0
ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwg
TWVkaWFLZXlTdGF0dXM+PiBuZXh0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQ
YWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gbmV4dCgpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmPE1lZGlhS2V5U3RhdHVzTWFwPiBtX21hcDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmlu
ZGV4IDJmMzEzNWZkMzRiMzJiZDc4ZmJmNjM3M2EzZjZhYTJlMDgxNGY0NzkuLjdiNTlhM2JjNmQy
MjU2ZmM2NTZmMDhjYmYyNjg5MTg1MTA5ODNhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtODksNyArODksNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgY29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0
dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVy
biBtX2xvZ2dlcjsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICNlbmRpZgogCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJv
dGVjdGVkOgogICAgIFdlYWtIYXNoU2V0PENETUNsaWVudD4gbV9jZG1DbGllbnRzOwogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAg
ICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CiAgICAgbXV0YWJsZSB1aW50NjRfdCBtX2NoaWxkSWRlbnRpZmllclNlZWQgeyAwIH07CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2
aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2
aWdhdG9yRU1FLmNwcAppbmRleCA2MzdkNDM1MjA1NTg2NzBjZjU0ODQ1MDFmNjRjYzUyNWI3OWMx
Y2NhLi45NWRmZjkwYmRjN2YyNzMzYzBmM2QxZGM2NTg4NDYwMTI0OTNjNTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUu
Y3BwCkBAIC04MCwxMyArODAsMTMgQEAgaW5saW5lIHZvaWQgaW5mb0xvZyhMb2dnZXImIGxvZ2dl
ciwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpCiAjZW5kaWYKIH0KIAotc3RhdGljIHZv
aWQgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBsZW1lbnRh
dGlvbiwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0ZWRDb25m
aWd1cmF0aW9ucywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiwgUmVmPExvZ2dlcj4mJiwgV1RG
OjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYpOworc3RhdGljIHZvaWQgdHJ5TmV4dFN1cHBv
cnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgVmVjdG9yPE1l
ZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucywgUmVm
UHRyPERlZmVycmVkUHJvbWlzZT4mJiwgUmVmPExvZ2dlcj4mJiwgTG9nZ2VyOjpMb2dTaXRlSWRl
bnRpZmllciYmKTsKIAogdm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFj
Y2VzcyhOYXZpZ2F0b3ImIG5hdmlnYXRvciwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBw
b3J0ZWRDb25maWd1cmF0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1uYXZpZ2F0
b3ItcmVxdWVzdG1lZGlha2V5c3lzdGVtYWNjZXNzCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0
IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9n
U2l0ZUlkZW50aWZpZXIoIk5hdmlnYXRvckVNRSIsIF9fZnVuY19fLCAmbmF2aWdhdG9yKTsKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJOYXZpZ2F0b3JF
TUUiLCBfX2Z1bmNfXywgJm5hdmlnYXRvcik7CiAgICAgUmVmPExvZ2dlcj4gbG9nZ2VyID0gZG9j
dW1lbnQubG9nZ2VyKCk7CiAKICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgImtleVN5
c3RlbSgiLCBrZXlTeXN0ZW0sICIpLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucygiLCBzdXBwb3J0
ZWRDb25maWd1cmF0aW9ucywgIikiKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIE5hdmlnYXRv
ckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKE5hdmlnYXRvciYgbmF2aWdhdG9yLCBE
b2N1bWVudCYgZAogICAgIHJlcXVlc3QtPnN0YXJ0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHRyeU5l
eHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFZl
Y3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+JiYgc3VwcG9ydGVkQ29uZmlndXJhdGlv
bnMsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVmPExvZ2dlcj4mJiBsb2dn
ZXIsIFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllciYmIGlkZW50aWZpZXIpCitzdGF0aWMg
dm9pZCB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVu
dGF0aW9uLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENv
bmZpZ3VyYXRpb25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlZjxMb2dn
ZXI+JiYgbG9nZ2VyLCBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKIHsK
ICAgICAvLyA2LjMuIEZvciBlYWNoIHZhbHVlIGluIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zOgog
ICAgIGlmICghc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TS5oCmluZGV4IGNmMjc2ZTUxZTFkNTFkNzE1ODdlNmU2ZjU2MWQ4ZjdmMDRhODU5YzMuLmIyZjJh
ZWQ3MzVlOWVjZjljMTkxNmQzYjFhOTNmY2UzOTRlOTc5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCkBA
IC0zOCw5ICszOCw5IEBAIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIENETVByaXZhdGVJbnRlcmZh
Y2U7CiBjbGFzcyBNZWRpYVBsYXllcjsKIAotdXNpbmcgQ3JlYXRlQ0RNID0gV1RGOjpGdW5jdGlv
bjxzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4oTGVnYWN5Q0RNKik+OwotdXNp
bmcgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gPSBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5n
Jik+OwotdXNpbmcgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSA9IFdURjo6RnVuY3Rp
b248Ym9vbChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKT47Cit1c2luZyBDcmVhdGVDRE0g
PSBGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4oTGVnYWN5Q0RN
Kik+OwordXNpbmcgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gPSBGdW5jdGlvbjxib29sKGNvbnN0IFN0
cmluZyYpPjsKK3VzaW5nIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgPSBGdW5jdGlv
bjxib29sKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpPjsKIAogY2xhc3MgTGVnYWN5Q0RN
Q2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDM4MzZiODc3YTY3ZDZiZDRjMzk4Mjg5NTdkNWY1NDZh
NDhmYjYzNjYuLjU2NjcyY2FmM2M5NWNmODk4YzE4ZjI4MWJiODEyYzA4Y2Y1YjkyMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaApA
QCAtNTMsMTYgKzUzLDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25z
dCB7IHJldHVybiBtX25hbWU7IH0KICAgICBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5PiBy
b290KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIHVzaW5nIERpcmVjdG9yeUxpc3Rp
bmdDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZp
bGVTeXN0ZW1FbnRyeT4+PiYmKT47CisgICAgdXNpbmcgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+
PiYmKT47CiAgICAgdm9pZCBsaXN0RGlyZWN0b3J5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmLCBEaXJlY3RvcnlMaXN0aW5nQ2FsbGJhY2smJik7CiAK
LSAgICB1c2luZyBHZXRQYXJlbnRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRp
b25PcjxSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Pj4mJik+OworICAgIHVzaW5nIEdldFBh
cmVudENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5Pj4mJik+OwogICAgIHZvaWQgZ2V0UGFyZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBGaWxlU3lzdGVtRW50cnkmLCBHZXRQYXJlbnRDYWxsYmFjayYmKTsKIAotICAgIHVz
aW5nIEdldEVudHJ5Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVm
PEZpbGVTeXN0ZW1FbnRyeT4+JiYpPjsKKyAgICB1c2luZyBHZXRFbnRyeUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4mJik+OwogICAgIHZv
aWQgZ2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCi0gICAgdXNpbmcgR2V0Rmls
ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlPj4mJik+
OworICAgIHVzaW5nIEdldEZpbGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
UmVmPEZpbGU+PiYmKT47CiAgICAgdm9pZCBnZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBGaWxlU3lzdGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxiYWNrJiYpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeS5oCmluZGV4IDk4NGY1ZGFhYTE4Njk4OTNmNmIzYzIzNjBkYjA5
ZGQwYTYzZDYxMzQuLjk3NjQ4YzRiMjg5ZjUyMzkxYzk2MTU3YWZhZTk2ZWFjYzcyMWYyMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdXNpbmcgRW50cnlNYXRjaGluZ0Z1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjxib29sKGNv
bnN0IEZpbGVTeXN0ZW1FbnRyeSYpPjsKKyAgICB1c2luZyBFbnRyeU1hdGNoaW5nRnVuY3Rpb24g
PSBGdW5jdGlvbjxib29sKGNvbnN0IEZpbGVTeXN0ZW1FbnRyeSYpPjsKICAgICB2b2lkIGdldEVu
dHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZs
YWdzJiBvcHRpb25zLCBFbnRyeU1hdGNoaW5nRnVuY3Rpb24mJiwgUmVmUHRyPEZpbGVTeXN0ZW1F
bnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJik7CiAKICAgICBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIERPTUZpbGVTeXN0ZW0m
LCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAppbmRleCAyMDg0ZTAyZGRlMTYwN2M2MzVjYmQ3Y2M2Njhh
NjFkYWZjOGMzMGFjLi4wOTBmNWNmNGQwZmYxMTVkODRiZjczM2I3YTdiMTViMzRmMmUzYTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCkBAIC0x
MDgsNyArMTA4LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGZpbGxIZWFkZXJNYXAoSFRU
UEhlYWRlck1hcCYgaGVhZGVycywgY29uc3QgRmV0Y2hIZWFkZXIKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
Ci0gICAgICAgIGF1dG8mIHJlY29yZCA9IHN0ZDo6Z2V0PFZlY3RvcjxXVEY6OktleVZhbHVlUGFp
cjxTdHJpbmcsIFN0cmluZz4+PihoZWFkZXJzSW5pdCk7CisgICAgICAgIGF1dG8mIHJlY29yZCA9
IHN0ZDo6Z2V0PFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+Pj4oaGVhZGVyc0lu
aXQpOwogICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IHJlY29yZCkgewogICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBhcHBlbmRUb0hlYWRlck1hcChoZWFkZXIua2V5LCBoZWFkZXIudmFsdWUs
IGhlYWRlcnMsIGd1YXJkKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CkBAIC0yMjIsMTMgKzIyMiwxMyBAQCB2b2lkIEZldGNoSGVhZGVyczo6ZmlsdGVyQW5kRmlsbChj
b25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBHdWFyZCBndWFyZCkKICAgICB9CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBGZXRjaEhlYWRl
cnM6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPFN0cmluZywg
U3RyaW5nPj4gRmV0Y2hIZWFkZXJzOjpJdGVyYXRvcjo6bmV4dCgpCiB7CiAgICAgd2hpbGUgKG1f
Y3VycmVudEluZGV4IDwgbV9rZXlzLnNpemUoKSkgewogICAgICAgICBhdXRvIGtleSA9IG1fa2V5
c1ttX2N1cnJlbnRJbmRleCsrXTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1faGVhZGVycy0+bV9o
ZWFkZXJzLmdldChrZXkpOwogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPiB7IFdURk1vdmUoa2V5
KSwgV1RGTW92ZSh2YWx1ZSkgfTsKKyAgICAgICAgICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8U3Ry
aW5nLCBTdHJpbmc+IHsgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHZhbHVlKSB9OwogICAgIH0KICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmgKaW5kZXggYzUwNTcwMDE1MmMzMTE1MTA3ZTU2OWU4Y2RlMDk2MzIyNzcz
NmI2OS4uOGEyODEyYzBlNjdlNWNlNDIxN2U0MjUyYTRlNTY4MmRmNDZjNzM0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgUmVzcG9uc2UKICAgICB9OwogCi0gICAgdXNpbmcgSW5pdCA9IHN0
ZDo6dmFyaWFudDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+Pj47CisgICAgdXNpbmcgSW5pdCA9IHN0ZDo6dmFyaWFudDxWZWN0
b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4+
OwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0Y2hIZWFkZXJzPj4gY3JlYXRlKHN0ZDo6
b3B0aW9uYWw8SW5pdD4mJik7CiAKICAgICBzdGF0aWMgUmVmPEZldGNoSGVhZGVycz4gY3JlYXRl
KEd1YXJkIGd1YXJkID0gR3VhcmQ6Ok5vbmUsIEhUVFBIZWFkZXJNYXAmJiBoZWFkZXJzID0geyB9
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoSGVhZGVycyB7IGd1YXJkLCBXVEZNb3ZlKGhl
YWRlcnMpIH0pOyB9CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRv
ciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMm
KTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmlu
Zz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBT
dHJpbmc+PiBuZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWY8RmV0Y2hIZWFkZXJz
PiBtX2hlYWRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCmluZGV4IGEzNTg1YzczMzY0ODg3Y2EzNDhhMjNmMjNiYjNmZDVkZjk5ZDMyYzQuLmJjNTg1
NGY5Yjk2NmZiNjMyOWQxNmZkZTYxOGNjZWIxZDhjOTRjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiByZWRpcmVj
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGF0dXMp
OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
RXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYpPjsKKyAgICB1c2luZyBOb3RpZmljYXRpb25D
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYpPjsK
ICAgICBzdGF0aWMgdm9pZCBmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hSZXF1
ZXN0JiwgTm90aWZpY2F0aW9uQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHN0YXJ0Q29uc3VtaW5n
U3RyZWFtKHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmNw
cAppbmRleCA2YmRjN2ZjNzQ0YWYyMzFkNjgxZTg3YTU4ZTI2ZmQ0Njc1MTU2NGYzLi41ZTcyZjZj
OWJiZWZmYWVlN2E1ZjY5YjkxMzM0YTRlNGQ0MzdhZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1EaXJlY3RvcnlIYW5kbGUuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBGaWxlU3lzdGVt
RGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6OmFkdmFuY2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb24KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlc3VsdCByZXN1bHRWYWx1
ZSA9IFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmPEZpbGVTeXN0ZW1IYW5kbGU+PiB7IFdU
Rk1vdmUoa2V5KSwgcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CisgICAgICAgIFJlc3Vs
dCByZXN1bHRWYWx1ZSA9IEtleVZhbHVlUGFpcjxTdHJpbmcsIFJlZjxGaWxlU3lzdGVtSGFuZGxl
Pj4geyBXVEZNb3ZlKGtleSksIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdFZhbHVlKSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5
c3RlbURpcmVjdG9yeUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUuaAppbmRleCA2OGExZGVjMzYxMDNkYzg4
YWI4OTQxZWIyMjE5ODk0YWRiMjA1OTFkLi44ODY5ZWE0NjcyMzIzM2RjMDllNDRkZGEyZTE4YzE5
MzA1MWU0ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFJlZkNvdW50
ZWQ8RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZTo6SXRlcmF0b3I+IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBSZWY8SXRlcmF0b3I+IGNyZWF0ZShGaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlJik7Ci0gICAgICAgIHVzaW5nIFJlc3VsdCA9IHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1
ZVBhaXI8U3RyaW5nLCBSZWY8RmlsZVN5c3RlbUhhbmRsZT4+PjsKKyAgICAgICAgdXNpbmcgUmVz
dWx0ID0gc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWY8RmlsZVN5c3RlbUhh
bmRsZT4+PjsKICAgICAgICAgdm9pZCBuZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0
aW9uT3I8UmVzdWx0PiYmKT4mJik7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgSXRl
cmF0b3IoRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZE1hbmFnZXIuaAppbmRleCA4MzQzN2RhMWJiZjM1
MDZjOWIwNGYzMzFiZDI3YjE3MDM2YTdhYWQ3Li4wMzhkMjhiMDEzMDdiOGU4YTk4YWU2OTAxNzEz
Nzc5NzI1YjBiNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQv
R2FtZXBhZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2Ft
ZXBhZE1hbmFnZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIEdhbWVwYWRNYW5h
Z2VyKCk7CiAKICAgICB2b2lkIG1ha2VHYW1lcGFkVmlzaWJsZShQbGF0Zm9ybUdhbWVwYWQmLCBI
YXNoU2V0PE5hdmlnYXRvckdhbWVwYWQqPiYsIEhhc2hTZXQ8RE9NV2luZG93Kj4mKTsKLSAgICB2
b2lkIGRpc3BhdGNoR2FtZXBhZEV2ZW50KGNvbnN0IFdURjo6QXRvbVN0cmluZyYgZXZlbnROYW1l
LCBQbGF0Zm9ybUdhbWVwYWQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2FtZXBhZEV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50TmFtZSwgUGxhdGZvcm1HYW1lcGFkJik7CiAKICAgICB2b2lkIG1h
eWJlU3RhcnRNb25pdG9yaW5nR2FtZXBhZHMoKTsKICAgICB2b2lkIG1heWJlU3RvcE1vbml0b3Jp
bmdHYW1lcGFkcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJBY3RpdmVET01PYmplY3QuaAppbmRleCBlYjY4NDA4ZGM0MWI1ZmFkMzI3YTI3Y2Q1YjAz
YTUzMjIzYTlkN2UwLi40NGRjMzQzNDg2YzQyZjYyZTVkYWEyNGQwOTNiYzE1NzY1ZjUyODliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01P
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVE
T01PYmplY3QuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnRleHQtPnBv
c3RDcm9zc1RocmVhZFRhc2sob2JqZWN0LCBtZXRob2QsIGFyZ3VtZW50cy4uLik7CiAgICAgfQog
Ci0gICAgdm9pZCBjYWxsRnVuY3Rpb25Pbk9yaWdpblRocmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQg
KCk+JiYgZnVuY3Rpb24pCisgICAgdm9pZCBjYWxsRnVuY3Rpb25Pbk9yaWdpblRocmVhZChGdW5j
dGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgewogICAgICAgICBpZiAoY2FuQ3VycmVudFRo
cmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShvcmlnaW5UaHJlYWQoKSkpIHsKICAgICAgICAgICAg
IGZ1bmN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDYyYTAwOTBkYTA2M2NiNjJhMDNhNTJk
NjVhNzMwNTdhZTJiMzcyNjMuLjZjMGIxYjRmMmFiMGMwMzMwNzY2NTRlYTRiMjc2NTU5NDQ1ODk1
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RydWN0IElEQkRhdGFi
YXNlSWRlbnRpZmllckhhc2ggewogICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CiB9OwogCi1zdHJ1Y3QgSURCRGF0YWJhc2VJZGVudGlm
aWVySGFzaFRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPElEQkRhdGFiYXNlSWRl
bnRpZmllcj4geworc3RydWN0IElEQkRhdGFiYXNlSWRlbnRpZmllckhhc2hUcmFpdHMgOiBTaW1w
bGVDbGFzc0hhc2hUcmFpdHM8SURCRGF0YWJhc2VJZGVudGlmaWVyPiB7CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBjb25z
dCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5
VmFsdWUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpbmZvKSB7IHJldHVybiBpbmZvLmlz
RW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXgu
Y3BwCmluZGV4IGY5NmRiNzQ2YjkyYWE2NTU4NjlkODVjZmJkNTc3MTdiYWE5MzEzNGMuLjE2N2Qz
ODA0ZWY5MGQwNzE3NzE4ZTNkMTlkZTAyODcxZWJiOWViZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lk
IElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9uQ2hhbmdlQWJvcnQoKQogICAgIG1fZGVs
ZXRlZCA9IGZhbHNlOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4
Ojpkb09wZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlv
bjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRp
cmVjdGlvbiBkaXJlY3Rpb24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5n
ZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVu
Q3Vyc29yIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERh
dGEobV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkp
KTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQklu
ZGV4OjpvcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpTVgogICAgIH0pOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb09wZW5LZXlDdXJz
b3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25P
cjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiBk
aXJlY3Rpb24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYg
ZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVuS2V5Q3Vyc29y
Iik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9v
YmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAg
LTMzNyw3ICszMzcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpk
b0dldEtleShFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+IHJhbgogICAgIHJldHVybiB0cmFu
c2FjdGlvbi5yZXF1ZXN0R2V0S2V5KCp0aGlzLCBrZXlSYW5nZSk7CiB9CiAKLUV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+
KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpk
b0dldEFsbChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgRnVuY3Rpb248RXhjZXB0aW9u
T3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCSW5kZXg6OmdldEFsbCIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNj
ZXNzVGhyZWFkTG9jYWxEYXRhKG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpKSk7CkBAIC0zNzQsNyArMzc0LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEpT
VmFsdWUKICAgICB9KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRl
eDo6ZG9HZXRBbGxLZXlzKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0
aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbEtleXMoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlS
YW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4Ojpn
ZXRBbGxLZXlzIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2Nh
bERhdGEobV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4
IDlmM2ZiY2FkOTY0NmFhYjJmMGM3OTgwZWNhM2E5NDVjN2YwMTQ3MGUuLjdmOGI2ODE5OTFiM2Y1
YzA3OTI1MjUxMDhlN2EwOWMxYTAyNjEyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguaApAQCAtODgsMTAgKzg4LDEwIEBAIHByaXZhdGU6CiAgICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0NvdW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYp
OwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXQoRXhjZXB0aW9uT3I8SURC
S2V5UmFuZ2VEYXRhPik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEtl
eShFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IGRvT3BlbkN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248
RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwotICAgIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgV1RG
OjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7Ci0gICAg
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+
PigpPiAmJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbEtleXMo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9u
T3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgRnVuY3Rpb248RXhj
ZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGwoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEZ1
bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4g
JiYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCAxZjA0YWMzYTUxYzE2ZTlhNDM0
NjdlYTMxMGQwMDNjZGQ5ZDg5YWNmLi5hMTAzMDkxZTU3ZWU2YjFhODY0YTdjOGIxYzhlNDhhZTAz
ZTEwZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBJREJPYmplY3RTdG9yZTo6
YXV0b0luY3JlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5mby5hdXRvSW5jcmVtZW50KCk7
CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvT3Bl
bkN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2Vw
dGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5DdXJzb3IoSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdl
Pj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6
Om9wZW5DdXJzb3IiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExv
Y2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTE4
Myw3ICsxODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
OjpvcGVuQ3Vyc29yKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdAogICAgIH0pOwogfQogCi1FeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5LZXlDdXJzb3Io
SURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxS
ZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+
JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpvcGVu
S2V5Q3Vyc29yIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2Nh
bERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0zOTQs
NyArMzk0LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
ZGVsZXRlRnVuY3Rpb24oSURCS2V5UmFuZ2UqIGtleVJhbmcKICAgICB9KTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUoV1RGOjpGdW5j
dGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQorRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUoRnVuY3Rp
b248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uIik7CiAgICAg
QVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90cmFuc2FjdGlv
bi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC02MDMsNyArNjAzLDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9Db3VudChjb25zdCBJREJL
ZXlSYW5nZURhdGEmIHJhbmcKICAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0Q291bnQo
KnRoaXMsIHJhbmdlKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmpl
Y3RTdG9yZTo6ZG9HZXRBbGwoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVu
Y3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsKHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURC
S2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmpl
Y3RTdG9yZTo6Z2V0QWxsIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJl
YWRMb2NhbERhdGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBA
IC02NDAsNyArNjQwLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RT
dG9yZTo6Z2V0QWxsKEpTR2xvYmFsT2JqZWN0JiBleGVjU3RhdGUsIEoKICAgICB9KTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZG9HZXRBbGxLZXlz
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0dldEFsbEtleXMoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+
JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRB
bGxLZXlzIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERh
dGEobV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBkNjU0
N2Y3ZjNiYmExNjg2ZjlmZDczNTY2YTU5ODM4MWIyMDAzZjJkLi4zNmFiMzg0NTNiNmE1YjZmYTU2
M2I4ZDc3NzY1Mzc0ZjY1NzA3NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTExNiwxMSArMTE2LDExIEBAIHByaXZhdGU6
CiAgICAgZW51bSBjbGFzcyBJbmxpbmVLZXlDaGVjayB7IFBlcmZvcm0sIERvTm90UGVyZm9ybSB9
OwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gcHV0T3JBZGQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPElEQktleT4sIEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlLCBJbmxpbmVLZXlDaGVjaywgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiA9IG51bGxwdHIpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
ZG9Db3VudChjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IGRvRGVsZXRlKFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktl
eVJhbmdlPj4oKT4gJiYpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVu
Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQ
dHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGRvT3BlbktleUN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24sIFdURjo6RnVuY3Rpb248RXhjZXB0
aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBkb0dldEFsbChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpG
dW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7Ci0gICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbEtleXMoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdl
Pj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9EZWxldGUoRnVu
Y3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwg
RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJik7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5LZXlDdXJzb3IoSURCQ3Vyc29yRGlyZWN0
aW9uLCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGNvdW50LCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+Pigp
PiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbEtleXMoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJ
REJLZXlSYW5nZT4+KCk+ICYmKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGIzZmZhNjFjYzM2NmJiMzczMzYxZDYyMzI0ZGJjNzUw
MGEyNWVlYWMuLjBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMDUsMTMgKzEwNSwxMyBAQCBzdGF0
aWMgY29uc3QgU3RyaW5nIHYxUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lKQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiB2MVJlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2MVJlY29yZHNUYWJsZVNjaGVt
YVN0cmluZyh2MVJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MVJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MVJlY29yZHNU
YWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKICAgICByZXR1cm4gdjFSZWNvcmRzVGFibGVTY2hlbWFT
dHJpbmc7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxUmVjb3Jkc1RhYmxlU2NoZW1hQWx0
ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYxUmVj
b3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYxUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJlY29yZHNcIiIp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MVJlY29yZHNUYWJsZVNjaGVt
YVN0cmluZyh2MVJlY29yZHNUYWJsZVNjaGVtYSgiXCJSZWNvcmRzXCIiKSk7CiAgICAgcmV0dXJu
IHYxUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCkBAIC0xMjIsMTMgKzEyMiwxMyBAQCBz
dGF0aWMgY29uc3QgU3RyaW5nIHYyUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFi
bGVOYW1lKQogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiB2MlJlY29yZHNUYWJsZVNjaGVtYSgpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6U3RyaW5nPiB2MlJlY29yZHNUYWJsZVNj
aGVtYVN0cmluZyh2MlJlY29yZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MlJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MlJlY29y
ZHNUYWJsZVNjaGVtYSgiUmVjb3JkcyIpKTsKICAgICByZXR1cm4gdjJSZWNvcmRzVGFibGVTY2hl
bWFTdHJpbmc7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYyUmVjb3Jkc1RhYmxlU2NoZW1h
QWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYy
UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYyUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJlY29yZHNc
IiIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MlJlY29yZHNUYWJsZVNj
aGVtYVN0cmluZyh2MlJlY29yZHNUYWJsZVNjaGVtYSgiXCJSZWNvcmRzXCIiKSk7CiAgICAgcmV0
dXJuIHYyUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCkBAIC0xNTQsMTMgKzE1NCwxMyBA
QCBzdGF0aWMgY29uc3QgU3RyaW5nIHYxSW5kZXhSZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3Ry
aW5nJiB0YWJsZU5hbWUpCiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxSW5kZXhSZWNvcmRzVGFi
bGVTY2hlbWEoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gdjFJ
bmRleFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJ
bmRleFJlY29yZHMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdjFJbmRl
eFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJbmRl
eFJlY29yZHMiKSk7CiAgICAgcmV0dXJuIHYxSW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7
CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxSW5kZXhSZWNvcmRzVGFibGVTY2hlbWFBbHRl
cm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gdjFJbmRl
eFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJcIklu
ZGV4UmVjb3Jkc1wiIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHYxSW5k
ZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcodjFJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiXCJJ
bmRleFJlY29yZHNcIiIpKTsKICAgICByZXR1cm4gdjFJbmRleFJlY29yZHNUYWJsZVNjaGVtYVN0
cmluZzsKIH0KIApAQCAtMTcxLDEzICsxNzEsMTMgQEAgc3RhdGljIGNvbnN0IFN0cmluZyB2Mklu
ZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogCiBzdGF0aWMg
Y29uc3QgU3RyaW5nJiB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCkKIHsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJp
bmcodjJJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiSW5kZXhSZWNvcmRzIikpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmco
djJJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiSW5kZXhSZWNvcmRzIikpOwogICAgIHJldHVybiB2
MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCiBzdGF0aWMgY29uc3QgU3RyaW5n
JiB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+IHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmco
djJJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiXCJJbmRleFJlY29yZHNcIiIpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5n
KHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWEoIlwiSW5kZXhSZWNvcmRzXCIiKSk7CiAgICAgcmV0
dXJuIHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwCmluZGV4IDU3ODI1YmQzZTlkYjNiMzA5Mjk0YjBiY2Y3YzVjNDljMGNkZGNjMjUu
LjJiMWVhZGI5ZWE1YzQ2NGQwMjc1ZWQyMjNmNTAwM2I3YmVmMTU3MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcApAQCAtNzIzLDcgKzcyMyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5
CiAgICAgYm9vbCB1c2VkS2V5SXNHZW5lcmF0ZWQgPSBmYWxzZTsKICAgICB1aW50NjRfdCBrZXlO
dW1iZXI7CiAgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFu
c2FjdGlvbklkZW50aWZpZXIoKTsKLSAgICBhdXRvIGdlbmVyYXRlZEtleVJlc2V0dGVyID0gV1RG
OjptYWtlU2NvcGVFeGl0KFt0aGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgJmtleU51bWJlciwgJnVzZWRLZXlJc0dlbmVyYXRlZF0oKSB7CisgICAgYXV0
byBnZW5lcmF0ZWRLZXlSZXNldHRlciA9IG1ha2VTY29wZUV4aXQoW3RoaXMsIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCAma2V5TnVtYmVyLCAmdXNlZEtleUlz
R2VuZXJhdGVkXSgpIHsKICAgICAgICAgaWYgKHVzZWRLZXlJc0dlbmVyYXRlZCkKICAgICAgICAg
ICAgIG1fYmFja2luZ1N0b3JlLT5yZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIodHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGtleU51bWJlcik7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
LmNwcAppbmRleCBmYWU4ZTMzMGM1YmFkYmY2MTE4ODI0OGI1YThkNGJkYjlkNTQ4ZGMwLi4zOWNj
YzE0ZTIxYjhmN2FhNjY4MjM5NWZmYzEwZjJjYzgwZGE2ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTY2LDcg
KzY2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpCiBzdGF0aWMgUGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmRG
b3JNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikKIHsKICAgICBz
dGF0aWMgY29uc3QgYXV0byBjb21tYW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAg
ICAgICAgdXNpbmcgQWN0aW9uVG9Db21tYW5kTWFwID0gSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rp
b24sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFdURjo6
SW50SGFzaDxNZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1l
ZGlhU2Vzc2lvbkFjdGlvbj4+OworICAgICAgICB1c2luZyBBY3Rpb25Ub0NvbW1hbmRNYXAgPSBI
YXNoTWFwPE1lZGlhU2Vzc2lvbkFjdGlvbiwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSwgSW50SGFzaDxNZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9u
Z0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFjdGlvbj4+OwogCiAgICAgICAgIHJldHVybiBB
Y3Rpb25Ub0NvbW1hbmRNYXAgewogICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlBs
YXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAppbmRleCBhMWRlN2Nk
MzE1MDAwZTMwOGE0ZjQ4ODU0MTgwMTIxYWE0MWZlYmEzLi5mYjFiMjEwZDA4YmZmMzYwYzA0MGRh
ZjhlNDA1ZDc2MjljZjUwYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaApAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+IG1fcG9zaXRpb25TdGF0ZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9sYXN0UmVwb3J0ZWRQb3NpdGlvbjsKICAgICBNb25v
dG9uaWNUaW1lIG1fdGltZUF0TGFzdFBvc2l0aW9uVXBkYXRlOwotICAgIEhhc2hNYXA8TWVkaWFT
ZXNzaW9uQWN0aW9uLCBSZWZQdHI8TWVkaWFTZXNzaW9uQWN0aW9uSGFuZGxlcj4sIFdURjo6SW50
SGFzaDxNZWRpYVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlh
U2Vzc2lvbkFjdGlvbj4+IG1fYWN0aW9uSGFuZGxlcnM7CisgICAgSGFzaE1hcDxNZWRpYVNlc3Np
b25BY3Rpb24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rpb25IYW5kbGVyPiwgSW50SGFzaDxNZWRp
YVNlc3Npb25BY3Rpb24+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1lZGlhU2Vzc2lvbkFj
dGlvbj4+IG1fYWN0aW9uSGFuZGxlcnM7CiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dn
ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb25Db29yZGluYXRvclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZS5oCmluZGV4IDM3Yzk5ZDdlOGY3MDA2N2FkYjFjNjE3MDhhNjkw
ZTljMWVlNjcyMmMuLjA2NzFlZjk5MGVjZGQ0OTQwMTFhYWY5MGViODM4YjNjMWQ2MWM5NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oCkBAIC03MSwxOSArNzEsMTkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0YXRlQ2hhbmdlZChNZWRpYVNl
c3Npb25QbGF5YmFja1N0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYWNrSWRlbnRpZmll
ckNoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdm9pZCBzZXRMb2dnZXIoY29uc3Qg
V1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9n
Z2VyJiwgY29uc3Qgdm9pZCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxN
ZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50
O30KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJp
dmF0ZSgpID0gZGVmYXVsdDsKIAotICAgIGNvbnN0IFdURjo6TG9nZ2VyKiBsb2dnZXJQdHIoKSBj
b25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IExvZ2dlciogbG9nZ2Vy
UHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBs
b2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAKICAgICBX
ZWFrUHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50PiBjbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX2NsaWVudDsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dl
cj4gbV9sb2dnZXI7CisgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8TWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JDbGllbnQ+IG1fY2xpZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDEzMTcxMTljM2E3
NjdiYzZmZDkzNzg1MjBjMzgxZmNjNzFiNzVlMzkuLjdiYzIxZTU2YWVjYzY1MWFkODg3MGUxNGY1
YjdjNTc1YjQxYTE4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRp
YyBNZWRpYUNvbnN0cmFpbnRzIGNyZWF0ZU1lZGlhQ29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRp
b25hbDxNZWRpYVRyYWNrQ29uCiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJh
aW50cyhjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50cz4mIGNvbnN0cmFp
bnRzLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewotICAgIG1fcHJvbWlz
ZSA9IFdURjo6bWFrZVVuaXF1ZTxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+KFdURk1vdmUocHJv
bWlzZSkpOworICAgIG1fcHJvbWlzZSA9IG1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+PihXVEZNb3ZlKHByb21pc2UpKTsKIAogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbnN0cmFpbnRzXShhdXRvJiYg
ZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoIW1fcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5kZXgg
N2VlZDU3Yzk3ZjRlMjFhMzU0ZWNmYzBmYjQ2MWZhZDQ5Y2JkYmExNi4uYTY3OWIxZTJjZTMyNTM4
ODc3ZWM2YzMxNzQyYzMyNWZkYzQxYjc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotI2RlZmlu
ZSBMT0dJREVOVElGSUVSX1JFQ0VJVkVSIFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihs
b2dDbGFzc05hbWUoKSwgX19mdW5jX18sIG1fY29ubmVjdGlvbi0+bG9nSWRlbnRpZmllcigpKQor
I2RlZmluZSBMT0dJREVOVElGSUVSX1JFQ0VJVkVSIExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIo
bG9nQ2xhc3NOYW1lKCksIF9fZnVuY19fLCBtX2Nvbm5lY3Rpb24tPmxvZ0lkZW50aWZpZXIoKSkK
ICNlbHNlCiAjZGVmaW5lIExPR0lERU5USUZJRVJfUkVDRUlWRVIKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmluZGV4
IGIwMDljOWNmM2RlZjI0YzJhOTJjNWJlNDgxN2M3MDJjYTczYTM3MjMuLjk1NTA0NDlkN2NlZmU4
ZmVkNGUzMzkwNGY3NDFhMGM0MTFjZDIwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotI2RlZmluZSBM
T0dJREVOVElGSUVSX1NFTkRFUiBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIobG9nQ2xh
c3NOYW1lKCksIF9fZnVuY19fLCBtX2Nvbm5lY3Rpb24tPmxvZ0lkZW50aWZpZXIoKSkKKyNkZWZp
bmUgTE9HSURFTlRJRklFUl9TRU5ERVIgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFz
c05hbWUoKSwgX19mdW5jX18sIG1fY29ubmVjdGlvbi0+bG9nSWRlbnRpZmllcigpKQogI2Vsc2UK
ICNkZWZpbmUgTE9HSURFTlRJRklFUl9TRU5ERVIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggY2I5Yjdl
ZGJlMmFkMTU3ODljMTMxMGNlOGZiMmI0Y2QxMjU4ZDRmNC4uZjU2OTU5NzMyOTQwZDY0MjQwMmQz
ZDQxYmZjMzRmZmFlOGFmZWM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoK
IAogICAgIGVudW0gRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGUgeyB9OwogICAgIHVzaW5n
IERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gPSBPYmplY3RJZGVudGlmaWVyPERldmljZUNoYW5n
ZU9ic2VydmVyVG9rZW5UeXBlPjsKLSAgICB2aXJ0dWFsIERldmljZUNoYW5nZU9ic2VydmVyVG9r
ZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2Jz
ZXJ2ZXIoRnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZURl
dmljZUNoYW5nZU9ic2VydmVyKERldmljZUNoYW5nZU9ic2VydmVyVG9rZW4pID0gMDsKIAogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuaAppbmRleCA3NTFlYzFlY2ViYjhmYmMyMTBlZDdjMzA1NjU4
MzQ0NzVkZDJlOWNmLi40M2NjODNhY2I1YzgyYzVlYTRkYmFmYmQ2ZTFmOTUxNTY1YjljOWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNvbnRyb2xsZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVu
dW1lcmF0ZU1lZGlhRGV2aWNlcyhEb2N1bWVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiwgY29uc3QgU3RyaW5nJik+JiYpOwogCi0gICAgVXNl
ck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIGFkZERldmljZUNoYW5nZU9i
c2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBVc2VyTWVkaWFDbGllbnQ6OkRl
dmljZUNoYW5nZU9ic2VydmVyVG9rZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRnVuY3Rpb248
dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZURldmljZUNoYW5nZU9ic2VydmVyKFVzZXJNZWRp
YUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbik7CiAKICAgICB2b2lkIGxvZ0dldFVz
ZXJNZWRpYURlbmlhbChEb2N1bWVudCYpOwpAQCAtNzksNyArNzksNyBAQCBpbmxpbmUgdm9pZCBV
c2VyTWVkaWFDb250cm9sbGVyOjplbnVtZXJhdGVNZWRpYURldmljZXMoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBDb21wbAogfQogCiAKLWlubGluZSBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9i
c2VydmVyVG9rZW4gVXNlck1lZGlhQ29udHJvbGxlcjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgb2JzZXJ2ZXIpCitpbmxpbmUgVXNlck1lZGlhQ2xpZW50
OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmlj
ZUNoYW5nZU9ic2VydmVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikKIHsKICAgICByZXR1
cm4gbV9jbGllbnQtPmFkZERldmljZUNoYW5nZU9ic2VydmVyKFdURk1vdmUob2JzZXJ2ZXIpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwCmluZGV4IDM5NDcyYmUyZjA4YWM2YTA2YTJhNGZlZTk5ODQ1NGZjZTZiYzk1MmIuLjM2
YzhiNTBkNDAxNTY3MWMyMzdlMzA2ZDljMzIzZjA5YWUxNmQ5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzc3LDcg
KzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kJiBi
YWNrZW5kRnJvbVJUUFRyYW5zY2VpdmVyKFJUQ1J0cFRyCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZCY+KCp0cmFuc2NlaXZlci5iYWNrZW5kKCkp
OwogfQogCi1SVENSdHBUcmFuc2NlaXZlciogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpleGlzdGluZ1RyYW5zY2VpdmVyKFdURjo6RnVuY3Rpb248Ym9vbChMaWJXZWJSVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQmKT4mJiBtYXRjaGluZ0Z1bmN0aW9uKQorUlRDUnRwVHJhbnNjZWl2ZXIq
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZXhpc3RpbmdUcmFuc2NlaXZlcihGdW5j
dGlvbjxib29sKExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZCYpPiYmIG1hdGNoaW5nRnVu
Y3Rpb24pCiB7CiAgICAgZm9yIChhdXRvJiB0cmFuc2NlaXZlciA6IG1fcGVlckNvbm5lY3Rpb24u
Y3VycmVudFRyYW5zY2VpdmVycygpKSB7CiAgICAgICAgIGlmIChtYXRjaGluZ0Z1bmN0aW9uKGJh
Y2tlbmRGcm9tUlRQVHJhbnNjZWl2ZXIoKnRyYW5zY2VpdmVyKSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IDM2NTcyZjBlZDk4
MGY3NGRhMDE3MTQ1OGEwMTVhOThhOWQ1YzczMjcuLmI0ZDBlNGEzOWFhZDljNjdhODhlOWUyZGI3
MmQzOWE3YmFlNWVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOwogICAgIHZv
aWQgc2V0U2VuZGVyU291cmNlRnJvbVRyYWNrKExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmLCBN
ZWRpYVN0cmVhbVRyYWNrJik7CiAKLSAgICBSVENSdHBUcmFuc2NlaXZlciogZXhpc3RpbmdUcmFu
c2NlaXZlcihXVEY6OkZ1bmN0aW9uPGJvb2woTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
Jik+JiYpOworICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiBleGlzdGluZ1RyYW5zY2VpdmVyKEZ1bmN0
aW9uPGJvb2woTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kJik+JiYpOwogICAgIFJUQ1J0
cFRyYW5zY2VpdmVyJiBuZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8TGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPiYmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsK
IAogICAgIHZvaWQgY29sbGVjdFRyYW5zY2VpdmVycygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5oCmluZGV4
IDk1NWUzOWE3MjI4NTJjMjIwZjJiZTk0NjlkZGI1MTdjNjBmODlkZDcuLjdmODZlYmQwZjI3MGZh
NjMzNmMwMmQ4N2Q1ZjQ0Yzg3NTI2NjlhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmgKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydERhdGEoSlND
OjpKU1ZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBzaG93KERvY3Vt
ZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBjYW5NYWtlUGF5bWVudChEb2N1bWVudCYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5NYWtlUGF5bWVudChE
b2N1bWVudCYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpID0gMDsK
ICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1
ZXN0OjpVcGRhdGVSZWFzb24sIFN0cmluZyYmIGVycm9yLCBBZGRyZXNzRXJyb3JzJiYsIFBheWVy
RXJyb3JGaWVsZHMmJiwgSlNDOjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykgPSAwOwog
ICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gbWVyY2hhbnRWYWxpZGF0aW9uQ29tcGxldGVk
KEpTQzo6SlNWYWx1ZSYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlKHN0ZDo6b3B0
aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCmluZGV4IGU0NGIz
MWMxZTRiMDc4YjAzMzE4YzgyMTk2YjNlZWY4NzAzMThlZDUuLjA2M2NmZjdlMDkwN2I1ZTM3YzRm
ZjI0MTQwNGQ4ZDNiOTM4MTJiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCkBAIC0zOTAsNyArMzkwLDcg
QEAgdm9pZCBQYXltZW50UmVxdWVzdDo6c2hvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxE
T01Qcm9taXNlPiYmIGRldGFpbHNQcm9taXMKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6SW50ZXJh
Y3RpdmU7CiAgICAgQVNTRVJUKCFtX3Nob3dQcm9taXNlKTsKLSAgICBtX3Nob3dQcm9taXNlID0g
V1RGOjptYWtlVW5pcXVlPFNob3dQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX3No
b3dQcm9taXNlID0gbWFrZVVuaXF1ZTxTaG93UHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSk7CiAK
ICAgICBSZWZQdHI8UGF5bWVudEhhbmRsZXI+IHNlbGVjdGVkUGF5bWVudEhhbmRsZXI7CiAgICAg
Zm9yIChhdXRvJiBwYXltZW50TWV0aG9kIDogbV9zZXJpYWxpemVkTWV0aG9kRGF0YSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVz
cG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVzcG9uc2UuY3BwCmluZGV4IDE2MDBhOTI2MjZiNDk5NTQ0ZTk0YjFmM2U0MjkwMjA0ZDdjOThl
NDguLmIyNzE4ODYwNmFjZDczZmE2YThlOWM5ZGNhNjBlODUxNGY0MWUwZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNw
b25zZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFBheW1lbnRSZXNwb25zZTo6cmV0cnko
UGF5bWVudFZhbGlkYXRpb25FcnJvcnMmJiBlcnJvcnMsIERPTVByb21pc2VEZWZlcnJlZAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXRyeVByb21pc2UgPSBXVEY6Om1ha2VVbmlx
dWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX3Jl
dHJ5UHJvbWlzZSA9IG1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAogdm9pZCBQYXltZW50UmVzcG9uc2U6OmFib3J0V2l0aEV4Y2VwdGlv
bihFeGNlcHRpb24mJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcAppbmRleCA1OTQzYzgzZDJlZTJhMjJjOGRj
MDViYzU3MzU5YjI5OGVhZGM0NGM0Li5lMDUwNDRkZDI3Yzk4YTE5OTM5MDI5YmIzOTMyNzI4MDNj
Y2VlMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hT
dWJzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVz
aFN1YnNjcmlwdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgUHVzaFN1YnNjcmlwdGlvbkpTT04g
UHVzaFN1YnNjcmlwdGlvbjo6dG9KU09OKCkgY29uc3QKICAgICByZXR1cm4gUHVzaFN1YnNjcmlw
dGlvbkpTT04gewogICAgICAgICBtX2VuZHBvaW50LAogICAgICAgICBtX2V4cGlyYXRpb25UaW1l
LAotICAgICAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiB7Cisg
ICAgICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiB7CiAgICAgICAgICAg
ICB7ICJwMjU2ZGgiX3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKG1fY2xpZW50RUNESFB1Ymxp
Y0tleSkgfSwKICAgICAgICAgICAgIHsgImF1dGgiX3MsIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5n
KG1fc2hhcmVkQXV0aGVudGljYXRpb25TZWNyZXQpIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSlNPTi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSlNPTi5oCmlu
ZGV4IGZmMGYyMjA2YmZiZDY3YWQyNWRmZDI4M2Y5NmM5MTYzZDUzMDU5ZTIuLjliZWYyYzM2MmMw
ZTg2MDdlNWJhYTZhMDYzODYzZDVlY2IwMDc0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbkpTT04uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb25KU09OLmgKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFB1c2hTdWJzY3JpcHRpb25KU09OIHsK
ICAgICBTdHJpbmcgZW5kcG9pbnQ7CiAgICAgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFtcD4g
ZXhwaXJhdGlvblRpbWU7Ci0gICAgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3Ry
aW5nPj4ga2V5czsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4ga2V5
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNl
LmgKaW5kZXggODQ0MDYwZGFkZmEzZjU5NDA0MzkyYjRiMjc3OWNjZDViM2Y3MDljMS4uY2E5MDNi
MTJiN2YyMjE5MzVmNWRmYTE5OGRiYjFhOGM0Yzc5ZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgbXV0ZSgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB1c2luZyBEYXRhQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT47Cisg
ICAgdXNpbmcgRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBz
aXplX3QpPjsKICAgICB1c2luZyBTdGF0ZVVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChj
b25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPjsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNh
cHR1cmVTb3VyY2UoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwg
RGF0YUNhbGxiYWNrJiYsIFN0YXRlVXBkYXRlQ2FsbGJhY2smJiwgUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNhcHR1cmVEZXZpY2U+IGZpbmRDYXB0dXJlRGV2aWNlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNh
cHR1cmVTb3VyY2VJbXBsLmgKaW5kZXggYjE0MDhiNjVlMTA4ZTYyZmIxZjUxODdkMWVjZDFmYTQw
ZmZmZjk4ZC4uNTg0YjcxZGQ5ZjA2ODg1ODEwOWIxODAzMzc4NTU0YjZhY2FjZDkwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0
dXJlU291cmNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBT
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsCiAgICAgLCBwdWJsaWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNpbmcgRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChj
b25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk+OworICAgIHVzaW5nIERhdGFDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEm
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT47CiAgICAgdXNpbmcgU3Rh
dGVVcGRhdGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUmKT47CiAgICAgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbChTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBEYXRhQ2FsbGJhY2smJiwgU3Rh
dGVVcGRhdGVDYWxsYmFjayYmLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CiAgICAgflNw
ZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDg4
OWJhYmI0Y2NjOTZlY2UyYWZmYTMyODdmMGJiNTc1NGU1MTFkY2UuLmZhYTQ2YzAzYmIyN2U3NDFi
NGQ1NGMxNDJiMWRjODhjYzNjZTYxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmNwcApAQCAtMzQsNyArMzQsNyBA
QCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6flJlYWRhYmxlU3RyZWFtU291cmNlKCkgPSBkZWZhdWx0
Owogdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlciYmIGNvbnRyb2xsZXIsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCiB7CiAgICAgQVNTRVJUKCFtX3Byb21pc2UpOwotICAgIG1fcHJvbWlzZSA9IFdURjo6bWFr
ZVVuaXF1ZTxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+KFdURk1vdmUocHJvbWlzZSkpOworICAg
IG1fcHJvbWlzZSA9IG1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3Zl
KHByb21pc2UpKTsKICAgICBtX2NvbnRyb2xsZXIgPSBXVEZNb3ZlKGNvbnRyb2xsZXIpOwogCiAg
ICAgc2V0QWN0aXZlKCk7CkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3Vy
Y2U6OnB1bGwoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICBBU1NFUlQo
IW1fcHJvbWlzZSk7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKLSAgICBtX3Byb21pc2Ug
PSBXVEY6Om1ha2VVbmlxdWU8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3ZlKHByb21p
c2UpKTsKKyAgICBtX3Byb21pc2UgPSBtYWtlVW5pcXVlPERPTVByb21pc2VEZWZlcnJlZDx2b2lk
Pj4oV1RGTW92ZShwcm9taXNlKSk7CiAKICAgICBzZXRBY3RpdmUoKTsKICAgICBkb1B1bGwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IGViYjNk
YzBhZmM1OWY3MzAzOGVmMTAyMzhlODVlZDY4NmQ3ZDlmOWEuLmY0ZTdlMDUxZTJhMjZhNDZjYmUz
OTczMTYxZGZlM2Q3MDQ4NzEwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuaApAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1f
bGFzdE5vblNpbGVudFRpbWUgeyAtMSB9OwogCiAgICAgLy8gUmVmLWNvdW50aW5nCi0gICAgLy8g
c3RhcnQgb3V0IHdpdGggbm9ybWFsIHJlZkNvdW50ID09IDEgKGxpa2UgV1RGOjpSZWZDb3VudGVk
IGNsYXNzKS4KKyAgICAvLyBzdGFydCBvdXQgd2l0aCBub3JtYWwgcmVmQ291bnQgPT0gMSAobGlr
ZSBSZWZDb3VudGVkIGNsYXNzKS4KICAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fbm9ybWFsUmVmQ291
bnQgeyAxIH07CiAgICAgc3RkOjphdG9taWM8aW50PiBtX2Nvbm5lY3Rpb25SZWZDb3VudCB7IDAg
fTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldE5vZGUuY3BwCmluZGV4IGUzYzFjODY4MWVmNGE4YTFhYzBkMTY0YWUwNjc3NmEzNDY2
Njg4ODMuLjhjZWViMzBkOTBlZTZiNDgzM2I0MmUwY2M0NDVkNjVmZGJjN2Q5MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNw
cApAQCAtMTUzLDcgKzE1Myw3IEBAIEF1ZGlvV29ya2xldE5vZGU6On5BdWRpb1dvcmtsZXROb2Rl
KCkKICAgICB1bmluaXRpYWxpemUoKTsKIH0KIAotdm9pZCBBdWRpb1dvcmtsZXROb2RlOjppbml0
aWFsaXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4m
IGRlc2NyaXB0b3JzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFp
cjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpCit2b2lkIEF1ZGlvV29ya2xldE5vZGU6
OmluaXRpYWxpemVBdWRpb1BhcmFtZXRlcnMoY29uc3QgVmVjdG9yPEF1ZGlvUGFyYW1EZXNjcmlw
dG9yPiYgZGVzY3JpcHRvcnMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEtleVZhbHVlUGFp
cjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQobV9wYXJhbWV0ZXJzLT5tYXAoKS5pc0VtcHR5KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaApp
bmRleCBjNTRmYzhiNzRlNzMxZjZkNWY0ODg1OWE0NTc4ZGY4Y2E4ZDI1NWY3Li5kNWI1YTYzMzFm
ZTFhMmI3ZjkzNmFjZjlmYmYwZDNlNWIyNmJjMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuaApAQCAtNjAsNyArNjAsNyBAQCBw
dWJsaWM6CiAgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0K
IAogICAgIHZvaWQgc2V0UHJvY2Vzc29yKFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYp
OwotICAgIHZvaWQgaW5pdGlhbGl6ZUF1ZGlvUGFyYW1ldGVycyhjb25zdCBWZWN0b3I8QXVkaW9Q
YXJhbURlc2NyaXB0b3I+JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V1RGOjpLZXlWYWx1
ZVBhaXI8U3RyaW5nLCBkb3VibGU+Pj4mIHBhcmFtVmFsdWVzKTsKKyAgICB2b2lkIGluaXRpYWxp
emVBdWRpb1BhcmFtZXRlcnMoY29uc3QgVmVjdG9yPEF1ZGlvUGFyYW1EZXNjcmlwdG9yPiYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYg
cGFyYW1WYWx1ZXMpOwogCiBwcml2YXRlOgogICAgIEF1ZGlvV29ya2xldE5vZGUoQmFzZUF1ZGlv
Q29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMmJiwg
UmVmPE1lc3NhZ2VQb3J0PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaAppbmRleCA2NmUwMGZlNjBkODQ4
MTZhZDNkMWZlNDk3MmE3MWJlMmY1NjA1NTgwLi5iMjY1N2NkMzgyOTA2ZTU1ZGY1ZDMwMTIzMzgy
MWM0ZTUzMzlkOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVj
dCBBdWRpb1dvcmtsZXROb2RlT3B0aW9ucyA6IEF1ZGlvTm9kZU9wdGlvbnMgewogICAgIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRzID0gMTsKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMgPSAx
OwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVuc2lnbmVkPj4gb3V0cHV0Q2hhbm5lbENvdW50
OwotICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgZG91
YmxlPj4+IHBhcmFtZXRlckRhdGE7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8S2V5VmFsdWVQ
YWlyPFN0cmluZywgZG91YmxlPj4+IHBhcmFtZXRlckRhdGE7CiAgICAgSlNDOjpTdHJvbmc8SlND
OjpKU09iamVjdD4gcHJvY2Vzc29yT3B0aW9uczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCmluZGV4IDFiYjQ5NTQx
Y2IyNjQxMzUzODg4NjM4NWFlZGUyNjM1MjY0MDc2NmMuLmY2ZTcxNTU2Y2UwYzk0ZmFkNGQyNjk3
NTMyNjg2NTgyMDQxMzUyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgog
ICAgIEF1ZGlvV29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYsIGNvbnN0
IFdvcmtsZXRQYXJhbWV0ZXJzJik7CiAKICAgICAvLyBXb3JrZXJPcldvcmtsZXRUaHJlYWQuCi0g
ICAgUmVmPFdURjo6VGhyZWFkPiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKKyAgICBSZWY8VGhyZWFk
PiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKICAgICBSZWZQdHI8V29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU+IGNyZWF0ZUdsb2JhbFNjb3BlKCkgZmluYWw7CiAKICAgICBBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eSYgbV9tZXNzYWdpbmdQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNw
cAppbmRleCBmMWMyYWYzM2M1ZmEyYWI2ZmM1MTY2OTk4M2ZhNzBlNzY5NjQwMjgwLi5iYzg0NGZm
YjY2OGI5M2IzY2Y3NjQ5YjM0YmU4Yzc4ODAyYzc1NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
Q29jb2EuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6
Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzJiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKICAgICAg
ICAgLy8gSGVhcCBhbGxvY2F0aW9ucyBhcmUgZm9yYmlkZGVuIG9uIHRoZSBhdWRpbyB0aHJlYWQg
Zm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgc28gd2UgbmVlZCB0bwogICAgICAgICAvLyBleHBsaWNp
dGx5IGFsbG93IHRoZSBmb2xsb3dpbmcgYWxsb2NhdGlvbihzKS4KICAgICAgICAgRGlzYWJsZU1h
bGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJp
Y3Rpb25zOwotICAgICAgICBtX2F1ZGlvQnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZl
ckxpc3Q+KGRlc2NyaXB0aW9uLCBXVEY6OnNhZmVDYXN0PHVpbnQzMl90PihudW1iZXJPZkZyYW1l
cykpOworICAgICAgICBtX2F1ZGlvQnVmZmVyID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxp
c3Q+KGRlc2NyaXB0aW9uLCBzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpKTsKICAg
ICAgICAgYXVkaW9CdWZmZXIgPSAmZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PigqbV9hdWRp
b0J1ZmZlcik7CiAgICAgfSBlbHNlCiAgICAgICAgIGF1ZGlvQnVmZmVyLT5zZXRTYW1wbGVDb3Vu
dChudW1iZXJPZkZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcAppbmRleCBkZTUyNGQyZjRmNDkwODEzODZk
MWVjM2Y4ZWNkMjJmN2Y2ZWQ4ZTAzLi5iMWU1NDNkYzAzNmE4NDMzZTUzN2MxZTMzZmJkOTU0ZDhk
MTYyMWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIE9mZmxpbmVB
dWRpb0NvbnRleHQ6OmZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKQogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAot
ICAgIGF1dG8gdW5pbml0aWFsaXplT25FeGl0ID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzXSB7
CisgICAgYXV0byB1bmluaXRpYWxpemVPbkV4aXQgPSBtYWtlU2NvcGVFeGl0KFt0aGlzXSB7CiAg
ICAgICAgIHVuaW5pdGlhbGl6ZSgpOwogICAgICAgICBjbGVhcigpOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aAppbmRleCAwNjVhNDUyMzA5ZmUxNWQxODI2MTM1ZjdlMmMzNmM4NjU3ZDExNmE1Li5iYTc2Njg2
MDkwMTBmYzc2NWE1Yjk3YmE0MGJkNjQyYzIwNDI3NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaApAQCAtNjgsNyAr
NjgsNyBAQCBwcml2YXRlOgogCiAgICAgVW5pcXVlUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9w
ZW5kaW5nUmVuZGVyaW5nUHJvbWlzZTsKLSAgICBIYXNoTWFwPHVuc2lnbmVkIC8qIGZyYW1lICov
LCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IG1fc3VzcGVuZFJlcXVlc3Rz
OworICAgIEhhc2hNYXA8dW5zaWduZWQgLyogZnJhbWUgKi8sIFJlZlB0cjxEZWZlcnJlZFByb21p
c2U+LCBJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+IG1fc3VzcGVuZFJlcXVlc3RzOwogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwog
ICAgIGJvb2wgbV9kaWRTdGFydFJlbmRlcmluZyB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlz
dC5jcHAKaW5kZXggNDE4NjU5M2UyOWRmNmQ5MDhlNGU3Y2ZhNzc0ODcxODE5NDhlNjMyMC4uMTQ3
YTFlMjAzNjkxZjBkNDFiMGIwMTJiZjMwMzZjODY1OGE2MjUxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3Qu
Y3BwCkBAIC00MSwxMiArNDEsMTIgQEAgdW5zaWduZWQgU1FMUmVzdWx0U2V0Um93TGlzdDo6bGVu
Z3RoKCkgY29uc3QKICAgICByZXR1cm4gbV9yZXN1bHQuc2l6ZSgpIC8gbV9jb2x1bW5zLnNpemUo
KTsKIH0KIAotRXhjZXB0aW9uT3I8VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU1FM
VmFsdWU+Pj4gU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QK
K0V4Y2VwdGlvbk9yPFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTUUxWYWx1ZT4+PiBTUUxS
ZXN1bHRTZXRSb3dMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIGlmIChp
bmRleCA+PSBsZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVy
cm9yIH07CiAKLSAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTUUxWYWx1ZT4+
IHJlc3VsdDsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU1FMVmFsdWU+PiByZXN1
bHQ7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkNvbHVtbnMgPSBtX2NvbHVtbnMuc2l6ZSgpOwog
ICAgIHVuc2lnbmVkIHZhbHVlc0luZGV4ID0gaW5kZXggKiBudW1iZXJPZkNvbHVtbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJv
d0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0
Um93TGlzdC5oCmluZGV4IDE0YzQ0NDgzYWZiODc5YTI5OTU1MTljNmY2MTIwYTMwZDJhOGE5NGIu
LmJmZjVmZjRlMGRjOWNjOGQ1Njg2ODIyZTU3NGI4ZmVlNGIxYTBhYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlz
dC5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlc3VsdChjb25zdCBT
UUxWYWx1ZSYgcmVzdWx0KSB7IG1fcmVzdWx0LmFwcGVuZChyZXN1bHQpOyB9CiAKICAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBFeGNlcHRpb25PcjxWZWN0b3I8V1RGOjpLZXlWYWx1
ZVBhaXI8U3RyaW5nLCBTUUxWYWx1ZT4+PiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAg
ICBFeGNlcHRpb25PcjxWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU1FMVmFsdWU+Pj4gaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU1FMUmVzdWx0U2V0Um93
TGlzdCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGFhZWI2NjE0ZjY2YzdjOWNmNTZiODRhZWJlY2U5
YTYwZDA4MzU4ODguLjJiYTcyMTJhMjcxMzkxZDMzMTY1MWFkNjVlNjY2NTNmYWFmZDQ3NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKQEAgLTgyMSw3ICs4MjEsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmFi
b3J0T3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKG1faGFuZGxlKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGNh
NzE5YzdiZTZlNTE5NmIzOWRlY2EwYzZkZjQxMzg2OTA0NWM4NDMuLmM5MjZiNDFmYTRkYTI1OWNi
MjU3YzBjOTVkOGVkMWEyNDVmNzYzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBJZiB5b3UgYXJlIGdvaW5nIHRvIHNlbmQgYSBoeWJpLTEwIGZyYW1l
LCB5b3UgbmVlZCB0byB1c2UgdGhlIG91dGdvaW5nIGZyYW1lIHF1ZXVlCiAgICAgLy8gaW5zdGVh
ZCBvZiBjYWxsIHNlbmRGcmFtZSgpIGRpcmVjdGx5LgotICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNv
Y2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lk
IHNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIp
OwogCiAgICAgZW51bSBCbG9iTG9hZGVyU3RhdHVzIHsKICAgICAgICAgQmxvYkxvYWRlck5vdFN0
YXJ0ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKaW5kZXgg
ZjIxNjIzMTIxZWUyYjY0OTc1YTU0ZmYyYjBiYTllZWJhMjNkNTJhMi4uZjUzZTQxYmZkMmVmNWFk
NTk5NzJiMzRlZDdhNmYzMzU1OWMxYzM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJIYW5kLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpJ
dGVyYXRvcihXZWJYUkhhbmQmIGhhbmQpCiB7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlW
YWx1ZVBhaXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+Pj4gV2ViWFJIYW5k
OjpJdGVyYXRvcjo6bmV4dCgpCitzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxYUkhhbmRKb2lu
dCwgUmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+PiBXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpuZXh0KCkK
IHsKICAgICBpZiAobV9pbmRleCA+IG1faGFuZC0+bV9qb2ludHMuc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkhhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5k
LmgKaW5kZXggNGM5MmJmMTkzODc0MGQ2MjA0Y2NiODkzY2ZhZjVhMDk5NmE5MTk2NC4uZGJlMTE0
MzI1M2Q1NzA3OTFhZmM3YmQ4Njg4Yzk5MmRjM2ZiYmFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSGFuZC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBjbGFz
cyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihXZWJY
UkhhbmQmKTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxYUkhhbmRK
b2ludCwgUmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+PiBuZXh0KCk7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8S2V5VmFsdWVQYWlyPFhSSGFuZEpvaW50LCBSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4+
IG5leHQoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZjxXZWJYUkhhbmQ+IG1faGFuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJj
ZUFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJj
ZUFycmF5LmNwcAppbmRleCA1NjBkMDNhYjdmYjljM2VjYTVjMTExODZjNDE2NDg5ZmI5OTJjMDA0
Li4xMGY2MDgyYWJlNDRkZjk1ZjU1NTBkMmY0ZGI0ZTI4NTIwNDc3M2RhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlQXJyYXkuY3Bw
CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZUFk
ZGVkT3JVcGRhdGVkSW5wdXRTb3VyY2VzKGRvdWJsZSB0aW1lc3RhbXAsIGMKIAogICAgIGZvciAo
YXV0byYgaW5wdXRTb3VyY2UgOiBpbnB1dFNvdXJjZXMpIHsKICAgICAgICAgYXV0byBpbmRleCA9
IG1faW5wdXRTb3VyY2VzLmZpbmRNYXRjaGluZyhbJmlucHV0U291cmNlXShhdXRvJiBpdGVtKSB7
IHJldHVybiBpdGVtLT5oYW5kbGUoKSA9PSBpbnB1dFNvdXJjZS5oYW5kbGU7IH0pOwotICAgICAg
ICBpZiAoaW5kZXggPT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBpZiAoaW5kZXggPT0gbm90
Rm91bmQpIHsKICAgICAgICAgICAgIC8vIFdoZW4gbmV3IFhSIGlucHV0IHNvdXJjZXMgYmVjb21l
IGF2YWlsYWJsZSBmb3IgWFJTZXNzaW9uIHNlc3Npb24sIHRoZSB1c2VyIGFnZW50IE1VU1QgcnVu
IHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgICAgICAgICAvLyAxLiBJZiBzZXNzaW9uJ3MgcHJv
bWlzZSByZXNvbHZlZCBmbGFnIGlzIG5vdCBzZXQsIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAg
ICAgICAgLy8gMi4gTGV0IGFkZGVkIGJlIGEgbmV3IGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaAppbmRleCA1NjM2MDBlYThlNjg0YjJlNjBjZGE2NDM1
YzFkZTljNjM5MTQ3NjIzLi45MjQ5YTlhZjc1MmUzMDE2NTEyODQ0MzQ5ZWVlM2I1ZGE1YzQzMTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvSHlzdGVyZXNpc0FjdGl2aXR5LmgKQEAgLTM5
LDcgKzM5LDcgQEAgZW51bSBjbGFzcyBIeXN0ZXJlc2lzU3RhdGUgewogCiBjbGFzcyBIeXN0ZXJl
c2lzQWN0aXZpdHkgewogcHVibGljOgotICAgIGV4cGxpY2l0IEh5c3RlcmVzaXNBY3Rpdml0eShX
VEY6OkZ1bmN0aW9uPHZvaWQoSHlzdGVyZXNpc1N0YXRlKT4mJiBjYWxsYmFjayA9IFtdKEh5c3Rl
cmVzaXNTdGF0ZSkgeyB9LCBTZWNvbmRzIGh5c3RlcmVzaXNTZWNvbmRzID0gZGVmYXVsdEh5c3Rl
cmVzaXNEdXJhdGlvbikKKyAgICBleHBsaWNpdCBIeXN0ZXJlc2lzQWN0aXZpdHkoRnVuY3Rpb248
dm9pZChIeXN0ZXJlc2lzU3RhdGUpPiYmIGNhbGxiYWNrID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7
IH0sIFNlY29uZHMgaHlzdGVyZXNpc1NlY29uZHMgPSBkZWZhdWx0SHlzdGVyZXNpc0R1cmF0aW9u
KQogICAgICAgICA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCiAgICAgICAgICwgbV9o
eXN0ZXJlc2lzU2Vjb25kcyhoeXN0ZXJlc2lzU2Vjb25kcykKICAgICAgICAgLCBtX2FjdGl2ZShm
YWxzZSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9jYWxsYmFjayhIeXN0
ZXJlc2lzU3RhdGU6OlN0b3BwZWQpOwogICAgIH0KIAotICAgIFdURjo6RnVuY3Rpb248dm9pZChI
eXN0ZXJlc2lzU3RhdGUpPiBtX2NhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoSHlzdGVyZXNp
c1N0YXRlKT4gbV9jYWxsYmFjazsKICAgICBTZWNvbmRzIG1faHlzdGVyZXNpc1NlY29uZHM7CiAg
ICAgYm9vbCBtX2FjdGl2ZTsKICAgICBSdW5Mb29wOjpUaW1lcjxIeXN0ZXJlc2lzQWN0aXZpdHk+
IG1fdGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcAppbmRleCA4ZTZmYTIzMGZjNDVl
NmIyZjA0NmMxMWRmYWQyNzE0MzE4YzA2NTYwLi4wMGI3ZWQ4NDU4YjdmM2VhODU0YzFlYmFhYmM2
YTM0NjQ2ZTgwYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLXZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhj
b25zdCBTdHJpbmcmIG5vdGlmeUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykK
K3ZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmIG5vdGlmeUlELCBGdW5j
dGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50
IHRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaAppbmRleCA2Y2FhZWRiMzVhMDUxZDlkNTNl
MmJhMzI0MWNhOTAwM2EzYjAxYTcyLi4zMGE4ZTVlMTMxZDZiMzhkNGE4ZWQ2M2ViNWRjOWQ1NGQz
OTg4NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuaApAQCAtMjksNyArMjksNyBAQAogCiBu
YW1lc3BhY2UgUEFMIHsKIAotUEFMX0VYUE9SVCB2b2lkIHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2so
Y29uc3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworUEFMX0VYUE9SVCB2b2lk
IHJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZCgpPiYm
KTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDE4MzdkZjAyZTM3MWEyOWQxNjEzMTY5NjRmN2Nl
YjBhNGI4MjAyYjAuLmY4Njc4NGExNGU3ZjM1NjlmYmYzZGQ3MTYyZTUwNTEyN2I0MzczZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAt
MzI4NSw3ICszMjg1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUo
QVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGkKICAgICAgICAgdXBkYXRl
SXNvbGF0ZWRUcmVlKCpvYmplY3QsIG5vdGlmaWNhdGlvbik7CiB9CiAKLS8vIEZJWE1FOiBzaG91
bGQgYmUgYWRkZWQgdG8gV1RGOjpWZWN0b3IuCisvLyBGSVhNRTogc2hvdWxkIGJlIGFkZGVkIHRv
IFZlY3Rvci4KIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+CiBzdGF0aWMgYm9vbCBh
cHBlbmRJZk5vdENvbnRhaW5zTWF0Y2hpbmcoVmVjdG9yPFQ+JiB2ZWN0b3IsIGNvbnN0IFQmIHZh
bHVlLCBGIG1hdGNoZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAwOGUwZTRmNWI5NzQwNmZmODkzMjA0OWNk
NjFkMzY2MGE4MzlkZjRhLi4xMzJlZmJjZmZjNDRhMWM3M2I4YzA2MTdiZTAzZjM2NmUyMmFhMDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKQEAgLTQzMyw3ICs0MzMsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjb25zdCBObwog
ICAgIH0pOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdEFjY2Vzc2libGVPYmplY3RG
cm9tTm9kZShjb25zdCBOb2RlKiBub2RlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYpPiYgaXNBY2Nlc3NpYmxlKQorQWNjZXNzaWJpbGl0eU9iamVj
dCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3Qg
RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik+JiBpc0FjY2Vzc2libGUp
CiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM5MTYsOSAr
MzkxNiw5IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkcmVuVG9BcnJheShBWENvcmVPYmplY3Qq
IG9iamVjdCwgYm9vbCBpc0ZvcndhcmQsIEFYQ29yZU9iCiAgICAgICAgICAgICBzdGFydE9iamVj
dCA9IGlzRm9yd2FyZCA/IHN0YXJ0T2JqZWN0LT5wcmV2aW91c1NpYmxpbmcoKSA6IHN0YXJ0T2Jq
ZWN0LT5uZXh0U2libGluZygpOwogICAgIH0KIAotICAgIHNpemVfdCBzZWFyY2hQb3NpdGlvbiA9
IHN0YXJ0T2JqZWN0ID8gc2VhcmNoQ2hpbGRyZW4uZmluZChzdGFydE9iamVjdCkgOiBXVEY6Om5v
dEZvdW5kOworICAgIHNpemVfdCBzZWFyY2hQb3NpdGlvbiA9IHN0YXJ0T2JqZWN0ID8gc2VhcmNo
Q2hpbGRyZW4uZmluZChzdGFydE9iamVjdCkgOiBub3RGb3VuZDsKIAotICAgIGlmIChzZWFyY2hQ
b3NpdGlvbiAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYgKHNlYXJjaFBvc2l0aW9uICE9IG5v
dEZvdW5kKSB7CiAgICAgICAgIGlmIChpc0ZvcndhcmQpCiAgICAgICAgICAgICBlbmRJbmRleCA9
IHNlYXJjaFBvc2l0aW9uICsgMTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBjOWMyODZmNGU2YzY0
NTZmMmM3YTY5NTBlZDMzYmI1N2I1YTliMDk0Li42YzViYTVkYzI5Mzk5YzdlM2MxNDAzYTQ1ZDlm
NGQwNTYwOGZhN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaApAQCAtODM4LDcgKzgzOCw3IEBAIGlubGluZSBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFsbG93c1RleHRSYW5nZXMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiBpbmxpbmUgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0TGVuZ3RoRm9yVGV4dFJh
bmdlKCkgY29uc3QgeyByZXR1cm4gdGV4dCgpLmxlbmd0aCgpOyB9CiAjZW5kaWYKIAotQWNjZXNz
aWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSos
IGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Jik+JiBp
c0FjY2Vzc2libGUpOworQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0
RnJvbU5vZGUoY29uc3QgTm9kZSosIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCYpPiYgaXNBY2Nlc3NpYmxlKTsKIAogbmFtZXNwYWNlIEFjY2Vzc2liaWxpdHkg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDdmOTU2OTZmYTBiYjIxMmZkNTI3Y2JiYjRh
MzQzNDEyOThjM2M0ZWUuLjFiNTQxNmVhNzg2N2FhNTJkZjI5YzgyMTRhYTMyMjBiOTcyZWE3NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0yNTAsNyArMjUwLDcgQEAgZW51bSBjbGFzcyBB
Y2Nlc3NpYmlsaXR5Um9sZSB7CiAgICAgV2luZG93LAogfTsKIAotdXNpbmcgQWNjZXNzaWJpbGl0
eVJvbGVTZXQgPSBXVEY6Okhhc2hTZXQ8QWNjZXNzaWJpbGl0eVJvbGUsIFdURjo6SW50SGFzaDxB
Y2Nlc3NpYmlsaXR5Um9sZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8QWNjZXNzaWJpbGl0
eVJvbGU+PjsKK3VzaW5nIEFjY2Vzc2liaWxpdHlSb2xlU2V0ID0gSGFzaFNldDxBY2Nlc3NpYmls
aXR5Um9sZSwgSW50SGFzaDxBY2Nlc3NpYmlsaXR5Um9sZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8QWNjZXNzaWJpbGl0eVJvbGU+PjsKIAogQUxXQVlTX0lOTElORSBTdHJpbmcgYWNjZXNz
aWJpbGl0eVJvbGVUb1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcAppbmRleCA3NDQ1NjQ4ZTRjNmVjMjliMjg5MTlhYTNmOGU5ZjJiOWE3YmRkYzUxLi42MGMy
NjEyN2RmODViYzE5ZGFjNjkzNDAyODgyNGY0YWZkYTUyN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApA
QCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnVwZGF0ZVNj
cm9sbGJhcnMoKQogdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cmVtb3ZlQ2hpbGRTY3Jv
bGxiYXIoQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsYmFyKQogewogICAgIHNpemVfdCBwb3Mg
PSBtX2NoaWxkcmVuLmZpbmQoc2Nyb2xsYmFyKTsKLSAgICBpZiAocG9zICE9IFdURjo6bm90Rm91
bmQpIHsKKyAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIG1fY2hpbGRyZW5bcG9z
XS0+ZGV0YWNoRnJvbVBhcmVudCgpOwogICAgICAgICBtX2NoaWxkcmVuLnJlbW92ZShwb3MpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZS5jcHAKaW5kZXggNWMzMjI3YTdiMTVkYzllZDQ5Mzc2ZTU2NTQwZGJiMGI4NWE3
YWZlYi4uMTZjNGY1ODEzZGE4ZGZkYWQ1MzBlZDQyY2YwYjdlZmJhMTA1Yzk0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5j
cHAKQEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlR2V0SW5k
ZXhJblBhcmVudChBdGtPYmplY3QqIG9iamVjdCkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAg
c2l6ZV90IGluZGV4ID0gcGFyZW50LT5jaGlsZHJlbigpLmZpbmQoY29yZU9iamVjdCk7Ci0gICAg
cmV0dXJuIChpbmRleCA9PSBXVEY6Om5vdEZvdW5kKSA/IC0xIDogaW5kZXg7CisgICAgcmV0dXJu
IChpbmRleCA9PSBub3RGb3VuZCkgPyAtMSA6IGluZGV4OwogfQogCiBzdGF0aWMgQXRrQXR0cmli
dXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhBdGtPYmplY3QqIG9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCAwYTg2ZDQ0M2Q1MDdlNzE0
YWE2NjUzYzdhMThhNjg0NTljYjgxYTNjLi44YTg3YWMzYjFiMjBkN2U3M2QxMzYwM2UxMjI3YjNl
YjExYWI1OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC02MDQs
NyArNjA0LDcgQEAgc3RhdGljIGludCBudW1iZXJPZlJlcGxhY2VkRWxlbWVudHNCZWZvcmVPZmZz
ZXQoQXRrVGV4dCogdGV4dCwgdW5zaWduZWQgb2Zmc2V0KQogCiAgICAgaW50IGNvdW50ID0gMDsK
ICAgICBzaXplX3QgaW5kZXggPSB0ZXh0QmVmb3JlT2Zmc2V0LmZpbmQob2JqZWN0UmVwbGFjZW1l
bnRDaGFyYWN0ZXIsIDApOwotICAgIHdoaWxlIChpbmRleCA8IG9mZnNldCAmJiBpbmRleCAhPSBX
VEY6Om5vdEZvdW5kKSB7CisgICAgd2hpbGUgKGluZGV4IDwgb2Zmc2V0ICYmIGluZGV4ICE9IG5v
dEZvdW5kKSB7CiAgICAgICAgIGluZGV4ID0gdGV4dEJlZm9yZU9mZnNldC5maW5kKG9iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVyLCBpbmRleCArIDEpOwogICAgICAgICBjb3VudCsrOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDc5MWZhZjUzMjMwMzBkNjA0YjA0YjI3N2VlZWIwZTUz
MTU4OGY1NzkuLmJmNmNlYTEyM2NiZjU4MTg3NDAyOWVlYWM1OGY4MDA4NTg0ZTQ2NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaApAQCAtMzE4LDcgKzMxOCw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0
eU5hbWUgOiB1aW50MTZfdCB7CiB9OwogCiB1c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0g
c3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQs
IGRvdWJsZSwgZmxvYXQsIHVpbnQ2NF90LCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9hdFJl
Y3QsIFBBTDo6U2Vzc2lvbklELCBJbnRQb2ludCwgT3B0aW9uU2V0PFNwZWFrQXM+LCBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiwgVmVjdG9y
PEFYSUQ+LCBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmluZz4sIFBh
dGg+OwotdXNpbmcgQVhQcm9wZXJ0eU1hcCA9IEhhc2hNYXA8QVhQcm9wZXJ0eU5hbWUsIEFYUHJv
cGVydHlWYWx1ZVZhcmlhbnQsIFdURjo6SW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6U3Ry
b25nRW51bUhhc2hUcmFpdHM8QVhQcm9wZXJ0eU5hbWU+PjsKK3VzaW5nIEFYUHJvcGVydHlNYXAg
PSBIYXNoTWFwPEFYUHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWYXJpYW50LCBJbnRIYXNo
PEFYUHJvcGVydHlOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxBWFByb3BlcnR5TmFt
ZT4+OwogCiBzdHJ1Y3QgQVhQcm9wZXJ0eUNoYW5nZSB7CiAgICAgQVhJRCBheElEIHsgSW52YWxp
ZEFYSUQgfTsgLy8gSUQgb2YgdGhlIG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGNoYW5nZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKaW5kZXggZWRj
MDJlYjRiNzY4NGIxODI4YTBjMDhhMTE2ZjYxNWFjMjgzZDQ1MC4uMDVjMTkxZjNkODJkZDhlY2Q2
ZDY3OTlhYWYxZGFhMTRmNzY4MzA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIGJvb2wgRG9jdW1lbnRUaW1l
bGluZTo6YW5pbWF0aW9uQ2FuQmVSZW1vdmVkKFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uKQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBhbmltYXRpb25XaXRoSGlnaGVyQ29tcG9z
aXRlT3JkZXIgOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKGFuaW1hdGlvbnMpKSB7CisgICAgZm9y
IChhdXRvJiBhbmltYXRpb25XaXRoSGlnaGVyQ29tcG9zaXRlT3JkZXIgOiBtYWtlUmV2ZXJzZWRS
YW5nZShhbmltYXRpb25zKSkgewogICAgICAgICBpZiAoJmFuaW1hdGlvbiA9PSBhbmltYXRpb25X
aXRoSGlnaGVyQ29tcG9zaXRlT3JkZXIpCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL0lETFR5cGVzLmgKaW5kZXggM2I1YTk0OTFiOWFmMDVkNGZiYmU5ZjBkMzA2MjBlOTg0
Yjk5Mzk0MS4uZmQwOTlmNTQzNzhhMTk5NWQzZjE0Nzg4OTk3NTgwY2NjOGVmOWM1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC0yMjAsMTIgKzIyMCwxMiBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSURMRnJvemVuQXJyYXkgOiBJRExUeXBlPFZlY3Rvcjx0eXBlbmFt
ZSBUOjpJbXBsZW1lbgogICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9uVHlwZT4+JjsKIH07
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+IHN0cnVjdCBJRExSZWNvcmQgOiBJ
RExUeXBlPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlv
blR5cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4+PiB7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBLLCB0eXBlbmFtZSBWPiBzdHJ1Y3QgSURMUmVjb3JkIDogSURMVHlwZTxWZWN0b3I8S2V5
VmFsdWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5hbWUgVjo6SW1w
bGVtZW50YXRpb25UeXBlPj4+IHsKICAgICB1c2luZyBLZXlUeXBlID0gSzsKICAgICB1c2luZyBW
YWx1ZVR5cGUgPSBWOwogCi0gICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IGNvbnN0IFZlY3RvcjxX
VEY6OktleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1l
IFY6OkltcGxlbWVudGF0aW9uVHlwZT4+JjsKLSAgICB1c2luZyBOdWxsYWJsZVBhcmFtZXRlclR5
cGUgPSBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjx0eXBlbmFt
ZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4+
PiY7CisgICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IGNvbnN0IFZlY3RvcjxLZXlWYWx1ZVBhaXI8
dHlwZW5hbWUgSzo6SW1wbGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlv
blR5cGU+PiY7CisgICAgdXNpbmcgTnVsbGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpv
cHRpb25hbDxWZWN0b3I8S2V5VmFsdWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlw
ZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4+JjsKIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBJRExQcm9taXNlIDogSURMV3JhcHBlcjxET01Qcm9taXNlPiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCmluZGV4IDNiZDUw
YWVhNWU4Nzk4MGNiZDY1OTg2MTE0MzRmMmJhNjY0MDA4YTEuLjgwMjQ5MDUzZDU4OTdiNjY2ZGFm
NTA4MWU2MjMxNmM5OGY2YmQ4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTVByb21pc2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVByb21pc2VQcm94eS5oCkBAIC04Niw3ICs4Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5
cGU+CiBjbGFzcyBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBSZXNvbHZlQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgKCk+OworICAg
IHVzaW5nIFJlc29sdmVDYWxsYmFjayA9IEZ1bmN0aW9uPHR5cGVuYW1lIElETFR5cGU6OlBhcmFt
ZXRlclR5cGUoKT47CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3MsIHR5cGVuYW1lIEJh
c2VDbGFzcz4KICAgICBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrKENsYXNzJiwg
dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSAoQmFzZUNsYXNzOjoqKSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuY3BwCmluZGV4IGE5OGE5NzcwN2M2NDhkM2U4MDhiOGQyNGY2N2I2ZmFjZDY2MjU0NjguLjgy
MzQ1ZDJlNGEzZmUxNzhkZDRjZDJhNmNmNmJkNDJlY2ZjNDZlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApA
QCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRl
RWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgIGVsZW1lbnQuc2V0SXNEZWZpbmVkQ3VzdG9t
RWxlbWVudCgqdGhpcyk7CiB9CiAKLXZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjppbnZv
a2VDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50LCBKU09iamVjdCogY2FsbGJhY2ssIGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgTWFy
a2VkQXJndW1lbnRCdWZmZXImKT4mIGFkZEFyZ3VtZW50cykKK3ZvaWQgSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlOjppbnZva2VDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50LCBKU09iamVjdCogY2Fs
bGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCosIE1hcmtlZEFyZ3VtZW50QnVmZmVyJik+JiBhZGRBcmd1bWVudHMpCiB7CiAgICAgaWYg
KCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCmluZGV4IDM5
OWYyYzIwNTJmN2ZmMzc1NGMzNzk0ZGI5YWE2MjgyNTQ0YWIyOGUuLjQ2ZmViODdjNTM2Zjc2MmQ2
NTY1YTgyMGEzNjM0Yjk3ZTVhMmE3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCkBAIC05NCw3ICs5NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZWZQdHI8RWxlbWVudD4gdHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50
KERvY3VtZW50JiwgY29uc3QgQXRvbVN0cmluZyYpOwogCi0gICAgdm9pZCBpbnZva2VDYWxsYmFj
ayhFbGVtZW50JiwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIGNvbnN0IFdURjo6RnVuY3Rpb248
dm9pZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Ok1hcmtl
ZEFyZ3VtZW50QnVmZmVyJik+JiBhZGRBcmd1bWVudHMgPSBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJikgeyB9KTsK
KyAgICB2b2lkIGludm9rZUNhbGxiYWNrKEVsZW1lbnQmLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFj
aywgY29uc3QgRnVuY3Rpb248dm9pZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxP
YmplY3QqLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJik+JiBhZGRBcmd1bWVudHMgPSBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Ok1hcmtlZEFyZ3Vt
ZW50QnVmZmVyJikgeyB9KTsKIAogICAgIFF1YWxpZmllZE5hbWUgbV9uYW1lOwogICAgIEpTQzo6
V2VhazxKU0M6OkpTT2JqZWN0PiBtX2NvbnN0cnVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCBiYmMxY2NmMjQ3MWRiMmU0OTI4NjYzOGE1
Y2MzMTFiMWY0MzRkZDJlLi41MjVkZDk5ZmE0OWE2NDM5MmU1MTY3YjE4NDM0OGMyNDM3Y2FhNGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAt
MTAwLDcgKzEwMCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SlNDOjpXYXRjaHBvaW50U2V0
PiBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHM7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVzcG9u
c2VDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBjaGFyKiwgc2l6ZV90KT47Cisg
ICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgY2hhciosIHNp
emVfdCk+OwogCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93cmFwcGVkOwogICAgIFJlZlB0cjxF
dmVudD4gbV9jdXJyZW50RXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgKaW5kZXggZDkwYzBkZWM1ZDIxMDVkNmFjZWNjMzBm
MWVmZGVjYmM2NmRiNTY5Yy4uNzk3MDJlYmFlY2YzZGY1OGRhMDJiMDZiMGQwZGM5ZDU1NzBhZmJi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBl
ZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVmFsdWVJbldyYXBw
ZWRPYmplY3QuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIFZhbHVlIG1fdmFsdWU7
CiB9OwogCi1KU0M6OkpTVmFsdWUgY2FjaGVkUHJvcGVydHlWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgY29uc3QgSlNET01PYmplY3QmIG93bmVyLCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBj
YWNoZVNsb3QsIGNvbnN0IFdURjo6RnVuY3Rpb248SlNDOjpKU1ZhbHVlKCk+Jik7CitKU0M6OkpT
VmFsdWUgY2FjaGVkUHJvcGVydHlWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSlNE
T01PYmplY3QmIG93bmVyLCBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBjYWNoZVNsb3QsIGNvbnN0
IEZ1bmN0aW9uPEpTQzo6SlNWYWx1ZSgpPiYpOwogCiBpbmxpbmUgYXV0byBKU1ZhbHVlSW5XcmFw
cGVkT2JqZWN0OjptYWtlVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKSAtPiBWYWx1ZQogewpAQCAt
MTE4LDcgKzExOCw3IEBAIGlubGluZSB2b2lkIEpTVmFsdWVJbldyYXBwZWRPYmplY3Q6OmNsZWFy
KCkKICAgICB9LCBbXSAoYXV0byYpIHsgfSk7CiB9CiAKLWlubGluZSBKU0M6OkpTVmFsdWUgY2Fj
aGVkUHJvcGVydHlWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjb25zdCBKU0RPTU9iamVjdCYgb3duZXIsIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGNhY2hl
ZFZhbHVlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPEpTQzo6SlNWYWx1ZSgpPiYgZnVuY3Rpb24pCitp
bmxpbmUgSlNDOjpKU1ZhbHVlIGNhY2hlZFByb3BlcnR5VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNET01PYmplY3QmIG93bmVyLCBKU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0JiBjYWNoZWRWYWx1ZSwgY29uc3QgRnVuY3Rpb248SlNDOjpKU1ZhbHVl
KCk+JiBmdW5jdGlvbikKIHsKICAgICBpZiAoY2FjaGVkVmFsdWUgJiYgaXNXb3JsZENvbXBhdGli
bGUobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FjaGVkVmFsdWUpKQogICAgICAgICByZXR1cm4gY2Fj
aGVkVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmgKaW5kZXggYmY1ZDU1ZmFiMzRjNzk3Zjk0YWI4YTVjY2QwOWIxNWVjYzk5YTA2MC4uZGFmOWVh
ZDIxY2Q4M2NjZjA1MzFlYWZhNjEzN2ZmMDcxODhmNjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHB1Ymxp
YzoKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01v
ZHVsZVJlY29yZCYsIERPTVdyYXBwZXJXb3JsZCYsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUs
IEpTQzo6SlNWYWx1ZSByZXN1bWVNb2RlKTsKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1
bGUoY29uc3QgVVJMJiwgSlNDOjpKU01vZHVsZVJlY29yZCYsIEpTQzo6SlNWYWx1ZSBhd2FpdGVk
VmFsdWUsIEpTQzo6SlNWYWx1ZSByZXN1bWVNb2RlKTsKIAotICAgIFdURjo6VGV4dFBvc2l0aW9u
IGV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3Q7CisgICAgVGV4dFBvc2l0aW9uIGV2ZW50SGFu
ZGxlclBvc2l0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIGVuYWJsZUV2YWwoKTsKICAgICB2b2lk
IGVuYWJsZVdlYkFzc2VtYmx5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX3V0aWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5oCmluZGV4
IDdiMTJmZWJjMjBhZDRiNWEwYjcwNDNhMGEwNmEwNjQ5NWY1ZGUwYTguLmJmOWEzNzQxNGM2YjJh
Mjk1MmZiYzg4ZjEwOGNiZmExNmNjNDYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfdXRpbGl0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0
eS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJvb3RPYmplY3Q7CiAgICAgCiB0eXBlZGVmIHVp
bnQxNl90IE5QVVRGMTY7CiAKLVdURjo6U3RyaW5nIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoY29u
c3QgTlBTdHJpbmcgKnN0cmluZyk7CitTdHJpbmcgY29udmVydE5QU3RyaW5nVG9VVEYxNihjb25z
dCBOUFN0cmluZyAqKTsKIHZvaWQgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlLCBOUFZhcmlhbnQqIHJlc3VsdCk7CiBKU1ZhbHVlIGNvbnZlcnROUFZhcmlh
bnRUb1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgTlBWYXJpYW50KiwgUm9vdE9iamVjdCop
OwogSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihKU0dsb2JhbE9iamVjdCos
IGNvbnN0IE5QVVRGOCogbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAppbmRleCAwMWNmMTk0N2QzMTQ4ZjFh
MGQ3ZDlkMzEyNzA4ZTJkMGIzMzRjZTAzLi40ZGE5ODhjNTIxZDEyOWI3NWI0OTgwNWNlZWI1ZmIw
NGVmYTZlNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b21iaW5lZFVSTEZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IFByZWZp
eFRyZWVFZGdlIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlZml4VHJlZVZlcnRleD4gY2hpbGQ7
CiB9OwogICAgIAotdHlwZWRlZiBWZWN0b3I8UHJlZml4VHJlZUVkZ2UsIDAsIFdURjo6Q3Jhc2hP
bk92ZXJmbG93LCAxPiBQcmVmaXhUcmVlRWRnZXM7Cit0eXBlZGVmIFZlY3RvcjxQcmVmaXhUcmVl
RWRnZSwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAxPiBQcmVmaXhUcmVlRWRnZXM7CiAKIHN0cnVjdCBQ
cmVmaXhUcmVlVmVydGV4IHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CkBA
IC01Niw3ICs1Niw3IEBAIHN0cnVjdCBSZXZlcnNlU3VmZml4VHJlZUVkZ2UgewogICAgIGNvbnN0
IFRlcm0qIHRlcm07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJldmVyc2VTdWZmaXhUcmVlVmVydGV4
PiBjaGlsZDsKIH07Ci10eXBlZGVmIFZlY3RvcjxSZXZlcnNlU3VmZml4VHJlZUVkZ2UsIDAsIFdU
Rjo6Q3Jhc2hPbk92ZXJmbG93LCAxPiBSZXZlcnNlU3VmZml4VHJlZUVkZ2VzOwordHlwZWRlZiBW
ZWN0b3I8UmV2ZXJzZVN1ZmZpeFRyZWVFZGdlLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDE+IFJldmVy
c2VTdWZmaXhUcmVlRWRnZXM7CiAKIHN0cnVjdCBSZXZlcnNlU3VmZml4VHJlZVZlcnRleCB7CiAg
ICAgUmV2ZXJzZVN1ZmZpeFRyZWVFZGdlcyBlZGdlczsKQEAgLTE5NSwxNCArMTk1LDE0IEBAIHZv
aWQgQ29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25z
dCBWZWN0b3I8VGVybT4mIHBhdHRlCiAgICAgUHJlZml4VHJlZVZlcnRleCogbGFzdFByZWZpeFRy
ZWUgPSBtX3ByZWZpeFRyZWVSb290LmdldCgpOwogCiAgICAgZm9yIChjb25zdCBUZXJtJiB0ZXJt
IDogcGF0dGVybikgewotICAgICAgICBzaXplX3QgbmV4dEVudHJ5SW5kZXggPSBXVEY6Om5vdEZv
dW5kOworICAgICAgICBzaXplX3QgbmV4dEVudHJ5SW5kZXggPSBub3RGb3VuZDsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXN0UHJlZml4VHJlZS0+ZWRnZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGlmICgqbGFzdFByZWZpeFRyZWUtPmVkZ2VzW2ldLnRlcm0gPT0gdGVy
bSkgewogICAgICAgICAgICAgICAgIG5leHRFbnRyeUluZGV4ID0gaTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAobmV4dEVudHJ5
SW5kZXggIT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgaWYgKG5leHRFbnRyeUluZGV4ICE9IG5v
dEZvdW5kKQogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+ZWRn
ZXNbbmV4dEVudHJ5SW5kZXhdLmNoaWxkLmdldCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFi
ZXQuaW50ZXJuZWQodGVybSksIG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKQEAg
LTIxMiw3ICsyMTIsNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybih1aW50
NjRfdCBhY3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZQogCiAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2FjdGlvbnMuYWRkKGxhc3RQcmVmaXhUcmVlLCBBY3Rpb25MaXN0KCkpOwogICAg
IEFjdGlvbkxpc3QmIGFjdGlvbnMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlm
IChhY3Rpb25zLmZpbmQoYWN0aW9uSWQpID09IFdURjo6bm90Rm91bmQpCisgICAgaWYgKGFjdGlv
bnMuZmluZChhY3Rpb25JZCkgPT0gbm90Rm91bmQpCiAgICAgICAgIGFjdGlvbnMuYXBwZW5kKGFj
dGlvbklkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggMGI0MDI3MjcwNWYx
MTJkNTg1ZGQ1ZjgyMjBkZjBiNWY4YjMxMjI0NC4uMjUxMWU4ZWY1NWI3OGZkZjk4NTE1M2EyZThl
NmY1YTQ0NmY1NTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC0xNjUsNyArMTY1
LDcgQEAgYXV0byBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxv
YWQoY29uc3QgUmVzb3VyY2VMb2FkSW5mbyYgcmUKICAgICByZXR1cm4gYWN0aW9uc1ZlY3RvcjsK
IH0KIAotdm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmZvckVhY2goY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb24mKT4mIGFwcGx5KQor
dm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmZvckVhY2goY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmLCBDb250ZW50RXh0ZW5zaW9uJik+JiBhcHBseSkKIHsKICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBtX2NvbnRlbnRFeHRlbnNpb25zKQogICAgICAgICBhcHBseShwYWlyLmtl
eSwgcGFpci52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaAppbmRleCA2YmIxOTI4Y2Fl
MTljODdhZjU2ZjY0OGVmZGNmMDk5M2ZjMjc0ZGJjLi5kZTRhNTBiNjEzMjM1NmYwZWY0OWQ3YTlh
ODMxMDU4MWRkMjc1MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5nLmgKQEAgLTM0LDcgKzM0
LDcgQEAKICNkZWZpbmUgQ09OVEVOVF9FWFRFTlNJT05TX1BFUkZPUk1BTkNFX1JFUE9SVElORyAw
CiAKICNpZiBDT05URU5UX0VYVEVOU0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKLXR5cGVk
ZWYgV1RGOjpDcmFzaE9uT3ZlcmZsb3cgQ29udGVudEV4dGVuc2lvbnNPdmVyZmxvd0hhbmRsZXI7
Cit0eXBlZGVmIENyYXNoT25PdmVyZmxvdyBDb250ZW50RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxl
cjsKICNlbHNlCiB0eXBlZGVmIFVuc2FmZVZlY3Rvck92ZXJmbG93IENvbnRlbnRFeHRlbnNpb25z
T3ZlcmZsb3dIYW5kbGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAKaW5kZXggNzJlNzYxODE1ZDEzYzc5NjI0ZWE2OWMzOWNh
NzVhOTgxMzg0YTYxOS4uODg3NTU5Njg0YmI1NGY2ZjY4NmY0MDkxYmUyMDIxNjA5ZTBlNjExMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNw
cApAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ2NF90LCAwLCBD
b250ZW50RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxlcj4gbV91bnByb2Nlc3NlZE5vZGVzOwogfTsK
IAotdm9pZCBERkFDb21iaW5lcjo6Y29tYmluZURGQXModW5zaWduZWQgbWluaW11bVNpemUsIGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChERkEmJik+JiBoYW5kbGVyKQordm9pZCBERkFDb21iaW5l
cjo6Y29tYmluZURGQXModW5zaWduZWQgbWluaW11bVNpemUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
REZBJiYpPiYgaGFuZGxlcikKIHsKICAgICBpZiAobV9kZmFzLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZB
Q29tYmluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVy
LmgKaW5kZXggYTI3YTg3YWU0MzVjODAxZGM3NmMwNGUxZjdiYmUwYThjNTFlMWVmOS4uNDdjZGJi
NWYxY2IzNTFiOTM4M2Y3NjVhMTY1ZDE3MGEyNTIyZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBERkFDb21iaW5l
ciB7CiBwdWJsaWM6CiAgICAgdm9pZCBhZGRERkEoREZBJiYpOwotICAgIHZvaWQgY29tYmluZURG
QXModW5zaWduZWQgbWluaW11bVNpemUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChERkEmJik+
JiBoYW5kbGVyKTsKKyAgICB2b2lkIGNvbWJpbmVERkFzKHVuc2lnbmVkIG1pbmltdW1TaXplLCBj
b25zdCBGdW5jdGlvbjx2b2lkKERGQSYmKT4mIGhhbmRsZXIpOwogCiBwcml2YXRlOgogICAgIFZl
Y3RvcjxERkE+IG1fZGZhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCmluZGV4IDkyNDhhYzA4Mjc0ZTgz
MjYxMmM5NmJjZjBjNGM1NTE5ZmFjYzk2OGMuLjcyYjg2NzdhY2QzMzYxZTc5NjU1NjQ0NjczMzlm
OWNlZTNkM2VkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaApAQCAtMjE4LDcgKzIxOCw3IEBAIHBy
aXZhdGU6CiAgICAgVHlwZWRJbW11dGFibGVORkEqIG1faW1tdXRhYmxlTkZBIHsgbnVsbHB0ciB9
OwogICAgIE11dGFibGVSYW5nZUxpc3Q8Q2hhcmFjdGVyVHlwZSwgVGFyZ2V0U2V0PiBtX3Jhbmdl
czsKICAgICBUYXJnZXRTZXQgbV9lcHNpbG9uVHJhbnNpdGlvblRhcmdldHM7Ci0gICAgSGFzaFNl
dDxBY3Rpb25UeXBlLCBXVEY6OkludEhhc2g8QWN0aW9uVHlwZT4sIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8QWN0aW9uVHlwZT4+IG1fYWN0aW9uczsKKyAgICBIYXNoU2V0PEFj
dGlvblR5cGUsIEludEhhc2g8QWN0aW9uVHlwZT4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8QWN0aW9uVHlwZT4+IG1fYWN0aW9uczsKICAgICB1aW50MzJfdCBtX25vZGVJZDsK
ICAgICBib29sIG1fZmluYWxpemVkIHsgdHJ1ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL05GQU5vZGUuaAppbmRleCBhYWFlZDMxMTQwMzNiNDMzM2JiMTA1MTQ1OThk
MzllNDYwYjljM2IyLi41ZWQ5ZmY0MmNmNDI1ZTMxMmVhODNjMmQwMDA2MWYxY2MwNTE3MzYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBTm9kZS5oCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKIC8vIEEgTkZBTm9kZSBhYnN0
cmFjdCB0aGUgdHJhbnNpdGlvbiB0YWJsZSBvdXQgb2YgYSBORkEgc3RhdGUuCiAKLXR5cGVkZWYg
VmVjdG9yPHVpbnQ2NF90LCAwLCBXVEY6OkNyYXNoT25PdmVyZmxvdywgMT4gQWN0aW9uTGlzdDsK
K3R5cGVkZWYgVmVjdG9yPHVpbnQ2NF90LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDE+IEFjdGlvbkxp
c3Q7CiB0eXBlZGVmIEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPiwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IE5GQU5vZGVJbmRleFNl
dDsKIHR5cGVkZWYgSGFzaE1hcDx1aW50MTZfdCwgTkZBTm9kZUluZGV4U2V0LCBEZWZhdWx0SGFz
aDx1aW50MTZfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDE2X3Q+
PiBORkFOb2RlVHJhbnNpdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL1Rlcm0uaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rl
cm0uaAppbmRleCA0OTMwZjQ2N2ZkOTUxMDg1N2Q4NDE4ZmYzN2FhNWRjZWJiNmIwYWU4Li5mMDYy
ZWZjZTcyZTMyZmViZjg2YmIyM2M0YmNlNmI3OGMyZGE4MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvVGVybS5oCkBAIC01NTcsNyArNTU3LDcgQEAgaW5saW5lIHVuc2lnbmVk
IFRlcm06Omhhc2goKSBjb25zdAogICAgICAgICBzZWNvbmRhcnkgPSBtX2F0b21EYXRhLmdyb3Vw
Lmhhc2goKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6OnBhaXJJbnRI
YXNoKHByaW1hcnksIHNlY29uZGFyeSk7CisgICAgcmV0dXJuIHBhaXJJbnRIYXNoKHByaW1hcnks
IHNlY29uZGFyeSk7CiB9CiAKIGlubGluZSBib29sIFRlcm06OmlzRW1wdHlWYWx1ZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwCmluZGV4IGIxNjhhZGEz
NGNmZDUwOGE5N2MxMTY5ZjhiMzg1N2UwMGZkNmNhYWIuLjQ4MWJiZjFjOWY2ZTc4ZWE0YmIyZDcz
MTY1MjAzOTM4NGU2YTA3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0
aG0uY3BwCkBAIC0xMDgsMTIgKzEwOCwxMiBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaEFsZ29yaXRo
bU9wZXJhdGlvbihXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udAogICAg
ICAgICB9KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG06OmRpc3BhdGNoT3BlcmF0aW9uSW5X
b3JrUXVldWUoV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhj
ZXB0aW9uQ2FsbGJhY2ssIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PigpPiYmIG9wZXJhdGlvbikKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkaXNwYXRjaE9wZXJhdGlv
bkluV29ya1F1ZXVlKFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYm
IGV4Y2VwdGlvbkNhbGxiYWNrLCBGdW5jdGlvbjxFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
KCk+JiYgb3BlcmF0aW9uKQogewogICAgIGRpc3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKHdvcmtR
dWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spLCBXVEZNb3ZlKG9wZXJhdGlvbikpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlz
cGF0Y2hPcGVyYXRpb25JbldvcmtRdWV1ZShXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlv
bkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
Ym9vbD4oKT4mJiBvcGVyYXRpb24pCit2b2lkIENyeXB0b0FsZ29yaXRobTo6ZGlzcGF0Y2hPcGVy
YXRpb25JbldvcmtRdWV1ZShXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPGJvb2w+KCk+JiYgb3Bl
cmF0aW9uKQogewogICAgIGRpc3BhdGNoQWxnb3JpdGhtT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29u
dGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBXVEZN
b3ZlKG9wZXJhdGlvbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5o
CmluZGV4IGI5YzRkNGJlNGMyZDFiODIxMjVlYzRhZmJhNmIyNDJkZDkwNDhiM2UuLjQwZGJiMGFk
NjFiMGY3YWY2M2FmZjRhOTYwODcyODBhZGQyZmY0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Q3J5cHRvQWxnb3JpdGhtLmgKQEAgLTU0LDE0ICs1NCwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAot
ICAgIHVzaW5nIEJvb2xDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChib29sKT47Ci0gICAg
dXNpbmcgS2V5Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ3J5cHRvS2V5Jik+OwotICAg
IHVzaW5nIEtleU9yS2V5UGFpckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEtleU9yS2V5
UGFpciYmKT47CisgICAgdXNpbmcgQm9vbENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sKT47
CisgICAgdXNpbmcgS2V5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKENyeXB0b0tleSYpPjsKKyAg
ICB1c2luZyBLZXlPcktleVBhaXJDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoS2V5T3JLZXlQYWly
JiYpPjsKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTM5NQotICAgIHVzaW5nIFZlY3RvckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpPjsKLSAgICB1c2luZyBWb2lkQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNpbmcgRXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoRXhjZXB0aW9uQ29kZSk+OwotICAgIHVzaW5nIEtleURhdGFDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJik+OworICAgIHVz
aW5nIFZlY3RvckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8dWludDhfdD4m
KT47CisgICAgdXNpbmcgVm9pZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKKyAgICB1c2lu
ZyBFeGNlcHRpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uQ29kZSk+OworICAg
IHVzaW5nIEtleURhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ3J5cHRvS2V5Rm9ybWF0LCBL
ZXlEYXRhJiYpPjsKIAogICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVj
dG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFdvcmtRdWV1ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwg
VmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFdvcmtRdWV1ZSYpOwpAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHVud3JhcEtleShSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVj
dG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJik7CiAgICAgdmlydHVhbCBFeGNlcHRp
b25PcjxzaXplX3Q+IGdldEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaE9wZXJhdGlvbkluV29ya1F1ZXVlKFdvcmtR
dWV1ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRp
b25DYWxsYmFjayYmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4o
KT4mJik7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hPcGVyYXRpb25JbldvcmtRdWV1ZShXb3Jr
UXVldWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNhbGxiYWNrJiYsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8Ym9vbD4oKT4mJik7CisgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hPcGVyYXRpb25JbldvcmtRdWV1ZShXb3JrUXVldWUmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2sm
JiwgRnVuY3Rpb248RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PigpPiYmKTsKKyAgICBzdGF0
aWMgdm9pZCBkaXNwYXRjaE9wZXJhdGlvbkluV29ya1F1ZXVlKFdvcmtRdWV1ZSYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgRnVu
Y3Rpb248RXhjZXB0aW9uT3I8Ym9vbD4oKT4mJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0Eu
aCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCmluZGV4IDBiYjBh
YWU3MmIxYmQ3YWQ0NTdiMDI5NDYwN2VmY2FmMjIwMzc0MTEuLjdlMTRlZTUyZDU2MzM5YWE3ZGYw
NDYzYzQxMjY4M2U3ZGM5ZWI4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9r
ZXlzL0NyeXB0b0tleVJTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleVJTQS5oCkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBrZXlTaXpl
SW5CaXRzKCkgY29uc3Q7CiAKLSAgICB1c2luZyBLZXlQYWlyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoQ3J5cHRvS2V5UGFpciYmKT47Ci0gICAgdXNpbmcgVm9pZENhbGxiYWNrID0gV1RG
OjpGdW5jdGlvbjx2b2lkKCk+OworICAgIHVzaW5nIEtleVBhaXJDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoQ3J5cHRvS2V5UGFpciYmKT47CisgICAgdXNpbmcgVm9pZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZCgpPjsKICAgICBzdGF0aWMgdm9pZCBnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gs
IHVuc2lnbmVkIG1vZHVsdXNMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHVibGljRXhw
b25lbnQsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlQYWlyQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlSU0E+IGltcG9ydEp3ayhDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI+IGhhc2gsIEpzb25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBpbXBvcnRTcGtpKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9z
c2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3Bw
CmluZGV4IDJkZmY1YjE1MTVjMjlhNjA3ZGQwODE4ZjAxODBlODNjZWRiNzc3MzIuLjc3YTFhMjA4
Yzc1MjJlNmZmNzIxZmY2MTVkZjNmY2Y5YmM1MDc1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIGlubGluZSB2b2lkIENTU0Ny
b3NzZmFkZVZhbHVlOjpjcm9zc2ZhZGVDaGFuZ2VkKCkKICAgICAgICAgY2xpZW50LmtleS0+aW1h
Z2VDaGFuZ2VkKHRoaXMpOwogfQogCi1ib29sIENTU0Nyb3NzZmFkZVZhbHVlOjp0cmF2ZXJzZVN1
YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNl
Jik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6dHJhdmVyc2VTdWJy
ZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFu
ZGxlcikgY29uc3QKIHsKICAgICBpZiAobV9jYWNoZWRGcm9tSW1hZ2UgJiYgaGFuZGxlcigqbV9j
YWNoZWRGcm9tSW1hZ2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmgKaW5kZXggOTQ5ZWQ0MWEwNDVhZTdhZjk5YWFkNmJkMGE3YjNmYjFk
NjJmNjEwOS4uODQyYmVjM2E0ODlkYmIyY2EyMjI5ZGUxYWYzMDFmYTQ0ZmJkZGQ2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyJiwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAKLSAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2Vz
KGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRs
ZXIpIGNvbnN0OworICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248
Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICBSZWZQ
dHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGJsZW5kKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJiwgY29u
c3QgQmxlbmRpbmdDb250ZXh0JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0
ZXJJbWFnZVZhbHVlLmNwcAppbmRleCA4Y2Y5MDlhZTllNTM3MjRiOTFkYjRhY2UxNGFlMjg1NzFk
ZDk1NTI2Li5jNjdhMzViMDcxNWI3MjFlZDg5OTJkZWNkNDlmYThkMGI4MDY0NzcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0xNTYsNyArMTU2LDcg
QEAgdm9pZCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpGaWx0ZXJTdWJpbWFnZU9ic2VydmVyUHJveHk6
OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSoKICAgICAgICAgbV9vd25lclZhbHVlLT5maWx0ZXJJ
bWFnZUNoYW5nZWQoKnJlY3QpOwogfQogCi1ib29sIENTU0ZpbHRlckltYWdlVmFsdWU6OnRyYXZl
cnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVz
b3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0Citib29sIENTU0ZpbHRlckltYWdlVmFsdWU6OnRyYXZl
cnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2Um
KT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhY2hlZEltYWdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAppbmRl
eCA1MDRjMmFkOGQxNWNiNGM1M2UyNDI5MzEwM2QyMWQ2YTNjMDI2ODY4Li4zM2MyMjAwODZjOThm
ZjcyMjlmMDZmMzFlODA2MWZkYzAyY2ZmNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0
ZXJJbWFnZVZhbHVlLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2Fk
U3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJik7CiAKLSAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rp
b248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OworICAgIGJv
b2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRS
ZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NG
aWx0ZXJJbWFnZVZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNyY1ZhbHVlLmNwcAppbmRleCA1NjQyNDRmNzkwNWEyNzViZjE1NDYzNDU2OGNmM2ZmYzA0YWNl
NmE5Li4zMDVjMzJlYTgwY2NlNTkwYjRiNjFkMDVkOWE1MGMyZjYyZTlkNmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFN0
cmluZyBDU1NGb250RmFjZVNyY1ZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gbWFrZVN0cmluZyhwcmVmaXgsIHNlcmlhbGl6ZVN0cmluZyhtX3Jlc291cmNlKSwgIikiLCAi
IGZvcm1hdCgiLCBzZXJpYWxpemVTdHJpbmcobV9mb3JtYXQpLCAiKSIpOwogfQogCi1ib29sIENT
U0ZvbnRGYWNlU3JjVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rp
b248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0Citib29sIENT
U0ZvbnRGYWNlU3JjVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJv
b2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NhY2hlZEZvbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IGNiZTE0MTFlNDZjNGVkNzZlNzExYmMzNDFlNjU5OTAz
ZjUwZmFiY2IuLmQzNGRhZmNmNWFmNTg0ZjAzMmIxN2ZiYjc4MmYyZTU0MzU1YjgwZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApAQCAtNjUsNyArNjUsNyBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgYm9vbCB0
cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hl
ZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3Vy
Y2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIp
IGNvbnN0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gZm9udExvYWRS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBib29sIGlzU1ZHLCBib29sIGlzSW5pdGlh
dGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmgKaW5kZXggZjk3OGExNGU0NTUxYjIwZmI5NzgxYmYxZjY4MDFiZTRmZTIzOWEw
NS4uMTRhMDQ1NDlkNDEwOGNlNTMyOTI1ODNiMzhlNDcwMzI3ZjE5NGJhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtMTI4LDE1ICsxMjgsMTUgQEAgcHJpdmF0ZToKICAg
ICBSZWY8Q1NTRm9udEZhY2VTZXQ+IG1fY3NzRm9udEZhY2VTZXQ7CiAgICAgSGFzaFNldDxGb250
U2VsZWN0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAKLSAgICBzdHJ1Y3QgUGFsZXR0ZU1hcEhhc2gg
OiBXVEY6OkRlZmF1bHRIYXNoPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4gewor
ICAgIHN0cnVjdCBQYWxldHRlTWFwSGFzaCA6IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxBdG9tU3Ry
aW5nLCBBdG9tU3RyaW5nPj4gewogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBz
dGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4mIGtleSkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHBhaXJJbnRIYXNoKEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaDo6aGFzaChr
ZXkuZmlyc3QpLCBXVEY6OkRlZmF1bHRIYXNoPEF0b21TdHJpbmc+OjpoYXNoKGtleS5zZWNvbmQp
KTsKKyAgICAgICAgICAgIHJldHVybiBwYWlySW50SGFzaChBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g6Omhhc2goa2V5LmZpcnN0KSwgRGVmYXVsdEhhc2g8QXRvbVN0cmluZz46Omhhc2goa2V5LnNl
Y29uZCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qgc3Rk
OjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+JiBhLCBjb25zdCBzdGQ6OnBhaXI8QXRvbVN0
cmluZywgQXRvbVN0cmluZz4mIGIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g6OmVxdWFsKGEuZmlyc3QsIGIuZmlyc3QpICYmIFdURjo6RGVm
YXVsdEhhc2g8QXRvbVN0cmluZz46OmVxdWFsKGEuc2Vjb25kLCBiLnNlY29uZCk7CisgICAgICAg
ICAgICByZXR1cm4gQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOjplcXVhbChhLmZpcnN0LCBiLmZp
cnN0KSAmJiBEZWZhdWx0SGFzaDxBdG9tU3RyaW5nPjo6ZXF1YWwoYS5zZWNvbmQsIGIuc2Vjb25k
KTsKICAgICAgICAgfQogICAgIH07CiAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8QXRvbVN0cmluZywg
QXRvbVN0cmluZz4sIEZvbnRQYWxldHRlVmFsdWVzLCBQYWxldHRlTWFwSGFzaD4gbV9wYWxldHRl
TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IDE1NTEwMTI4
M2M2MjZjYTE4YTMzYjAyYmFiMTI3OGU5NmI4YjBmMzguLjllYzQ3OGJkYjFiZjM4MDg2ZTMwYzhk
ZTc0ODhkNWZmOGE1MzRkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBTdHJpbmcgQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3VzdG9tQ1NT
VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCi1ib29sIENT
U0ltYWdlU2V0VmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVuY3Rpb248
Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0Citib29sIENTU0lt
YWdlU2V0VmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29u
c3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Vs
ZWN0ZWRJbWFnZVZhbHVlICYmIG1fc2VsZWN0ZWRJbWFnZVZhbHVlLT50cmF2ZXJzZVN1YnJlc291
cmNlcyhoYW5kbGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVNldFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCmluZGV4
IDk1MDIxN2Q0MDRiZjE0OTA1MjcwNzI1NDA2MTE5NjE5MGYxN2JlOTYuLmY0M2MzOWIyYjA2Yjkz
YjQ2OGM0MzMzYjY1YTRkZmEyZDE3MDNiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVNldFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NT
VGV4dCgpIGNvbnN0OwogCi0gICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6
OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsK
KyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVEZXZp
Y2VTY2FsZUZhY3Rvcihjb25zdCBEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHAKaW5kZXggZTk4ZTI4MjdjZTAyMThhZDI0NWJmMzExNWFhZGQ4N2RkNGUxNTdhMC4u
NmUyZWEwYjhlMzNhYzkzOTJjNjI0NTE3OGZjZmZiMmRkN2NmZGQ3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIENhY2hlZEltYWdlKiBDU1NJ
bWFnZVZhbHVlOjpsb2FkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3Qg
UmVzb3VyCiAgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2UudmFsdWUoKS5nZXQoKTsKIH0KIAotYm9v
bCBDU1NJbWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9u
PGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBDU1NJ
bWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0
IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAgIHJldHVybiBtX2NhY2hl
ZEltYWdlLnZhbHVlX29yKG51bGxwdHIpICYmIGhhbmRsZXIoKiptX2NhY2hlZEltYWdlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IDAyMDA1NmQ4NGZjNzE5N2EzNjVhNzg4
NTE1MTM2NDc2YTllYTFmMjAuLmY0OTM3Yjg2MTVjNmYwYzAwNDkyYzJkZDg4MjYwYTI4MzNhMDAy
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAKICAgICBSZWY8RGVwcmVjYXRlZENTU09NVmFsdWU+IGNyZWF0ZURlcHJlY2F0ZWRDU1NP
TVdyYXBwZXIoQ1NTU3R5bGVEZWNsYXJhdGlvbiYpIGNvbnN0OwogCi0gICAgYm9vbCB0cmF2ZXJz
ZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291
cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNv
bnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0
OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTSW1hZ2VWYWx1ZSYpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmNwcAppbmRleCAxZWRlMThjNjI3NWUyMGQzZWUyOGY4MTBiYWJhNjJiYjIw
MmVhYzE3Li42MWFjNzExYTczNTFmZGRkZGQ3ZjI2ZjY5MDI4MGQzZDgxYTYxZjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBDU1NWYWx1ZTo6VHlwZSBDU1NW
YWx1ZTo6Y3NzVmFsdWVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gQ1NTX0NVU1RPTTsKIH0KIAot
Ym9vbCBDU1NWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxi
b29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKK2Jvb2wgQ1NTVmFs
dWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVk
UmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4o
KnRoaXMpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdGhpcykudHJh
dmVyc2VTdWJyZXNvdXJjZXMoaGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDVjZmU2
MGRlYWI3Y2JjMzg5NDE0NmU1ZDEzZmI0NTM2YmFlN2Q3MzMuLmFlNTA2ZWY3Yzk5NzI3MTI4YTFk
ODEzYzVkMjI2NGI1MGM3ZjMxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xNDIsNyArMTQy
LDcgQEAgcHVibGljOgogCiAgICAgUmVmPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBjcmVhdGVEZXBy
ZWNhdGVkQ1NTT01XcmFwcGVyKENTU1N0eWxlRGVjbGFyYXRpb24mKSBjb25zdDsKIAotICAgIGJv
b2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBD
YWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CisgICAgYm9vbCB0cmF2ZXJzZVN1YnJl
c291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5k
bGVyKSBjb25zdDsKIAogICAgIC8vIFdoYXQgcHJvcGVydGllcyBkb2VzIHRoaXMgdmFsdWUgcmVs
eSBvbiAoZWcsIGZvbnQtc2l6ZSBmb3IgZW0gdW5pdHMpCiAgICAgdm9pZCBjb2xsZWN0RGlyZWN0
Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCmluZGV4IDA1ODYxOTY1MmQ4M2Q3ZmU3Yjhm
NmYzM2IxYTg3ZWNhZGYzZGUyZWMuLjJiMjQzM2Y3MjYxMjAzYjY2YTk1ZGI3NWIyNDk1MGM3ZTBm
ZDhhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCkBAIC0xMTUsNyArMTE1LDcg
QEAgYm9vbCBDU1NWYWx1ZUxpc3Q6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYgb3RoZXIpIGNvbnN0
CiAgICAgcmV0dXJuIG1fdmFsdWVzWzBdLmdldCgpLmVxdWFscyhvdGhlcik7CiB9CiAKLWJvb2wg
Q1NTVmFsdWVMaXN0Ojp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBDU1NWYWx1
ZUxpc3Q6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtX3ZhbHVlc1tpXS5n
ZXQoKS50cmF2ZXJzZVN1YnJlc291cmNlcyhoYW5kbGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuaAppbmRleCA2MWM4Njk2NGQzNTkwYjFjNzNjYzdhOTkwYThjNzA2YTBlMTU2MGIwLi5iYjEy
NzNhNWZkM2VlOGU2ODgwYmE3NjdhZjkyOTE3ZWJkZGE3NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlTGlzdC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGVxdWFscyhjb25z
dCBDU1NWYWx1ZUxpc3QmKSBjb25zdDsKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYWx1ZSYp
IGNvbnN0OwogCi0gICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0
aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBi
b29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVk
UmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgc2VwYXJhdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZVNlcGFyYXRvcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnRpZXMuY3BwCmluZGV4IDkxYmZiMmE0ZWZkN2NiODgxN2E4NzMwOGVjNTY0MzQ0MGY5
YWEyY2IuLmM2YmUwZmJhNjg4YzhjYTMwYjdjMmYxM2IzZmJmYjJmOWExOTU0NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0xMzg4LDcgKzEzODgsNyBAQCB2b2lk
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6Om1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGNvbnN0
IFN0eWxlUHJvcGVydGllcyYgbwogICAgICAgICBhZGRQYXJzZWRQcm9wZXJ0eShvdGhlci5wcm9w
ZXJ0eUF0KGkpLnRvQ1NTUHJvcGVydHkoKSk7CiB9CiAKLWJvb2wgU3R5bGVQcm9wZXJ0aWVzOjp0
cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hl
ZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBTdHlsZVByb3BlcnRpZXM6OnRyYXZl
cnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2Um
KT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHByb3BlcnR5Q291bnQo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0aWVzLmgKaW5kZXggNmNkNmJjMDdkMmMyMWRkNWIwNzQxNzE1ZTI2ZGM2
YTlmNzU3OWM1My4uZjQ4OWU3ZTMyOWE2MjcxNzZhOTI1NGMxNGYyZTE4MDIzM2RhNzkwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0NTU09NV3JhcHBlcigpIGNvbnN0OwogICAgIGJvb2wgaXNNdXRhYmxl
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IE11dGFibGVQcm9wZXJ0aWVzVHlwZTsgfQogCi0g
ICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNv
bnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNl
U3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4m
IGhhbmRsZXIpIGNvbnN0OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGF2ZXJhZ2VTaXplSW5CeXRl
cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCmluZGV4IGJh
NDM2NTNhMGExNmJjYTk2MDIxNjc5Mjc5NTAxMmMzYTdjMmUxODEuLjY5YjMwOTM5MmEwNWNlNGU2
MmM3ZGM1NjUzYzAyN2M3ODRjNGU5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgRG9jdW1lbnQqIFN0eWxlU2hlZXRDb250
ZW50czo6c2luZ2xlT3duZXJEb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG93bmVyTm9kZSA/
ICZvd25lck5vZGUtPmRvY3VtZW50KCkgOiBudWxscHRyOwogfQogCi1zdGF0aWMgYm9vbCB0cmF2
ZXJzZVJ1bGVzSW5WZWN0b3IoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1
bGVzLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IFN0eWxlUnVsZUJhc2UmKT4mIGhh
bmRsZXIpCitzdGF0aWMgYm9vbCB0cmF2ZXJzZVJ1bGVzSW5WZWN0b3IoY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0
eWxlUnVsZUJhc2UmKT4mIGhhbmRsZXIpCiB7CiAgICAgZm9yIChhdXRvJiBydWxlIDogcnVsZXMp
IHsKICAgICAgICAgaWYgKGhhbmRsZXIoKnJ1bGUpKQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHN0YXRp
YyBib29sIHRyYXZlcnNlUnVsZXNJblZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZUJhc2U+PiYgcnVsZXMsIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFN0eWxlU2hl
ZXRDb250ZW50czo6dHJhdmVyc2VSdWxlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0
IFN0eWxlUnVsZUJhc2UmKT4mIGhhbmRsZXIpIGNvbnN0Citib29sIFN0eWxlU2hlZXRDb250ZW50
czo6dHJhdmVyc2VSdWxlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0eWxlUnVsZUJhc2Um
KT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBpbXBvcnRSdWxlIDogbV9pbXBv
cnRSdWxlcykgewogICAgICAgICBpZiAoaGFuZGxlcigqaW1wb3J0UnVsZSkpCkBAIC00OTUsNyAr
NDk1LDcgQEAgYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6OnRyYXZlcnNlUnVsZXMoY29uc3QgV1RG
OjpGdW5jdGlvbjxib29sIChjb25zdCBTdHlsZVJ1bGUKICAgICByZXR1cm4gdHJhdmVyc2VSdWxl
c0luVmVjdG9yKG1fY2hpbGRSdWxlcywgaGFuZGxlcik7CiB9CiAKLWJvb2wgU3R5bGVTaGVldENv
bnRlbnRzOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNv
bnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBTdHlsZVNoZWV0Q29u
dGVudHM6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRyYXZlcnNlUnVs
ZXMoWyZdIChjb25zdCBTdHlsZVJ1bGVCYXNlJiBydWxlKSB7CiAgICAgICAgIHN3aXRjaCAocnVs
ZS50eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29u
dGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCAz
YmMyYmUyODcwN2QxYmM3MGJlMWZjNmQ1MTRiYTQyOGY0MzVhNDljLi41MzAwMjUyMzY0YTY2NTAw
ZGRhZDc2Y2ExZmE5NzJlNGFlNjc2YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oCkBAIC04Nyw4ICs4Nyw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbG9hZENvbXBs
ZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZENvbXBsZXRlZDsgfQogCi0gICAgYm9vbCB0cmF2
ZXJzZVJ1bGVzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgU3R5bGVSdWxlQmFzZSYp
PiYgaGFuZGxlcikgY29uc3Q7Ci0gICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBX
VEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25z
dDsKKyAgICBib29sIHRyYXZlcnNlUnVsZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHls
ZVJ1bGVCYXNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3Vy
Y2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0KGJvb2wgYikgeyBtX2lzVXNl
clN0eWxlU2hlZXQgPSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHlsZVNoZWV0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1VzZXJTdHlsZVNoZWV0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvbWFrZXByb3AucGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKaW5kZXggMGM3
ODhiODllOTUzZTBkNjQ1MzUzNzk1OTE4NDUyZjliMzRmNmIxOC4uZjk0MTkxNzRmNWEwOWU1ZDBm
YTlmZTVkNmRlNmViYWM1MDQyYmI4MCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21h
a2Vwcm9wLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtNTY3LDcg
KzU2Nyw3IEBAIFN0cmluZyBnZXRKU1Byb3BlcnR5TmFtZShDU1NQcm9wZXJ0eUlEIGlkKQogICAg
ICAgICAqcmVzdWx0UG9pbnRlcisrID0gY2hhcmFjdGVyOwogICAgIH0KICAgICAqcmVzdWx0UG9p
bnRlciA9ICdcXDAnOwotICAgIHJldHVybiBXVEY6OlN0cmluZyhyZXN1bHQpOworICAgIHJldHVy
biBTdHJpbmcocmVzdWx0KTsKIH0KIAogc3RhdGljIGNvbnN0IGJvb2wgaXNJbmhlcml0ZWRQcm9w
ZXJ0eVRhYmxlW251bUNTU1Byb3BlcnRpZXMgKyAkbnVtUHJlZGVmaW5lZFByb3BlcnRpZXNdID0g
ewpAQCAtODQ2LDkgKzg0Niw5IEBAIGJvb2wgaXNJbnRlcm5hbENTU1Byb3BlcnR5KGNvbnN0IENT
U1Byb3BlcnR5SUQpOwogYm9vbCBpc0VuYWJsZWRDU1NQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0
eUlEKTsKIGJvb2wgaXNDU1NQcm9wZXJ0eUVuYWJsZWRCeVNldHRpbmdzKGNvbnN0IENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFNldHRpbmdzKiA9IG51bGxwdHIpOwogY29uc3QgY2hhciogZ2V0UHJvcGVy
dHlOYW1lKENTU1Byb3BlcnR5SUQpOwotY29uc3QgV1RGOjpBdG9tU3RyaW5nJiBnZXRQcm9wZXJ0
eU5hbWVBdG9tU3RyaW5nKENTU1Byb3BlcnR5SUQgaWQpOwotV1RGOjpTdHJpbmcgZ2V0UHJvcGVy
dHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5SUQgaWQpOwotV1RGOjpTdHJpbmcgZ2V0SlNQcm9wZXJ0
eU5hbWUoQ1NTUHJvcGVydHlJRCk7Citjb25zdCBBdG9tU3RyaW5nJiBnZXRQcm9wZXJ0eU5hbWVB
dG9tU3RyaW5nKENTU1Byb3BlcnR5SUQgaWQpOworU3RyaW5nIGdldFByb3BlcnR5TmFtZVN0cmlu
ZyhDU1NQcm9wZXJ0eUlEIGlkKTsKK1N0cmluZyBnZXRKU1Byb3BlcnR5TmFtZShDU1NQcm9wZXJ0
eUlEKTsKIENTU1Byb3BlcnR5SUQgZ2V0UmVsYXRlZFByb3BlcnR5SWQoQ1NTUHJvcGVydHlJRCBp
ZCk7CiAKIGlubGluZSBDU1NQcm9wZXJ0eUlEIGNvbnZlcnRUb0NTU1Byb3BlcnR5SUQoaW50IHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2V2YWx1ZXMucGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbAppbmRleCAxMTNmMTYyOGVkYzRlYWViMzUyNjVh
YzBiZjk3ZjYzMjYwMzE2YTMwLi4wZjgyMTlkNGNjYjUxZWNhNTI1ZDgyOWE3NjA2YjI3YjBmYTI3
MzAzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvbWFrZXZhbHVlcy5wbApAQCAtMjA0LDggKzIwNCw4IEBAIHByaW50
IEhFQURFUiAiY29uc3Qgc2l6ZV90IG1heENTU1ZhbHVlS2V5d29yZExlbmd0aCA9ICIgLiAkbWF4
TGVuIC4gIjtcbiI7CiBwcmludCBIRUFERVIgPDwgIkVPRiI7CiAKIGNvbnN0IGNoYXIqIGdldFZh
bHVlTmFtZSh1bnNpZ25lZCBzaG9ydCBpZCk7Ci1jb25zdCBXVEY6OkF0b21TdHJpbmcmIGdldFZh
bHVlTmFtZUF0b21TdHJpbmcoQ1NTVmFsdWVJRCBpZCk7Ci1XVEY6OlN0cmluZyBnZXRWYWx1ZU5h
bWVTdHJpbmcoQ1NTVmFsdWVJRCBpZCk7Citjb25zdCBBdG9tU3RyaW5nJiBnZXRWYWx1ZU5hbWVB
dG9tU3RyaW5nKENTU1ZhbHVlSUQgaWQpOworU3RyaW5nIGdldFZhbHVlTmFtZVN0cmluZyhDU1NW
YWx1ZUlEIGlkKTsKIAogaW5saW5lIENTU1ZhbHVlSUQgY29udmVydFRvQ1NTVmFsdWVJRChpbnQg
dmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ckZhc3RQYXRocy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQ
YXRocy5jcHAKaW5kZXggMGRhMWZiMDZjMjhiMTc3OGFlMWU1NTU2Nzg0YWM5OGRhOGNhOTQ0Ny4u
MzdhMTE1MWFkYTJlOTc1YjRjYzQ3ZDdiNmU0Nzk2ODNkMWMxNjNmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcApAQCAtMTEzNSw3ICsx
MTM1LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogc3RhdGljIGJvb2wgcGFyc2VU
cmFuc2Zvcm1UcmFuc2xhdGVBcmd1bWVudHMoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQs
IHVuc2lnbmVkIGV4cGVjdGVkQ291bnQsIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVl
KQogewogICAgIHdoaWxlIChleHBlY3RlZENvdW50KSB7Ci0gICAgICAgIHNpemVfdCBkZWxpbWl0
ZXIgPSBXVEY6OmZpbmQocG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6
ICcsJyk7CisgICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBmaW5kKHBvcywgZW5kIC0gcG9zLCBl
eHBlY3RlZENvdW50ID09IDEgPyAnKScgOiAnLCcpOwogICAgICAgICBpZiAoZGVsaW1pdGVyID09
IG5vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB1bnNpZ25lZCBh
cmd1bWVudExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxpbWl0ZXIpOwpAQCAtMTE1
Nyw3ICsxMTU3LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1UcmFuc2xhdGVBcmd1bWVu
dHMoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2kKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KIHN0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtQW5nbGVBcmd1bWVudChDaGFy
VHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCwgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFs
dWUpCiB7Ci0gICAgc2l6ZV90IGRlbGltaXRlciA9IFdURjo6ZmluZChwb3MsIGVuZCAtIHBvcywg
JyknKTsKKyAgICBzaXplX3QgZGVsaW1pdGVyID0gZmluZChwb3MsIGVuZCAtIHBvcywgJyknKTsK
ICAgICBpZiAoZGVsaW1pdGVyID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTExNzksNyArMTE3OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIHN0YXRp
YyBib29sIHBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKENoYXJUeXBlKiYgcG9zLCBDaGFy
VHlwZSogZW5kLCB1bnNpZ25lZCBleHBlY3RlZENvdW50LCBDU1NGdW5jdGlvblZhbHVlKiB0cmFu
c2Zvcm1WYWx1ZSkKIHsKICAgICB3aGlsZSAoZXhwZWN0ZWRDb3VudCkgewotICAgICAgICBzaXpl
X3QgZGVsaW1pdGVyID0gV1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3RlZENvdW50ID09
IDEgPyAnKScgOiAnLCcpOworICAgICAgICBzaXplX3QgZGVsaW1pdGVyID0gZmluZChwb3MsIGVu
ZCAtIHBvcywgZXhwZWN0ZWRDb3VudCA9PSAxID8gJyknIDogJywnKTsKICAgICAgICAgaWYgKGRl
bGltaXRlciA9PSBub3RGb3VuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
dW5zaWduZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVsaW1pdGVy
KTsKQEAgLTEzNTMsNyArMTM1Myw3IEBAIHN0YXRpYyBib29sIHRyYW5zZm9ybUNhbkxpa2VseVVz
ZUZhc3RQYXRoKGNvbnN0IENoYXJUeXBlKiBjaGFycywgdW5zaWduZWQgbGVuZ3RoCiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAg
c2l6ZV90IGFyZ3VtZW50c0VuZCA9IFdURjo6ZmluZChjaGFycywgbGVuZ3RoLCAnKScsIGkpOwor
ICAgICAgICBzaXplX3QgYXJndW1lbnRzRW5kID0gZmluZChjaGFycywgbGVuZ3RoLCAnKScsIGkp
OwogICAgICAgICBpZiAoYXJndW1lbnRzRW5kID09IG5vdEZvdW5kKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAK
aW5kZXggODU5MThlNWE3Y2ZjNWJjNTUxMDFkMjkxZGIzOTQxZTYzMThmZGI3MS4uNWZiOTQwN2Zm
ZmI2NDUwY2U3ZDYwMmU5ZDNhZDJlZjE3MTU5YjU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0
aWMgYm9vbCBpc0FwcGxlTGVnYWN5Q3NzVmFsdWVLZXl3b3JkKGNvbnN0IGNoYXIqIHZhbHVlS2V5
d29yZCwgdW5zaWduZWQgbGVuZwogICAgICYmICFoYXNQcmVmaXgodmFsdWVLZXl3b3JkLCBsZW5n
dGgsIGFwcGxlU3lzdGVtUHJlZml4KQogICAgICYmICFoYXNQcmVmaXgodmFsdWVLZXl3b3JkLCBs
ZW5ndGgsIGFwcGxlUGF5UHJlZml4KQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICYmICFXVEY6
OmVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPih2YWx1ZUtleXdvcmQpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYXBwbGVXaXJlbGVzc1BsYXliYWNrVGFyZ2V0QWN0
aXZlKSwgbGVuZ3RoKQorICAgICYmICFlcXVhbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4odmFsdWVLZXl3b3JkKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGFwcGxlV2ly
ZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSksIGxlbmd0aCkKICNlbmRpZgogICAgIDsKIH0KQEAg
LTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChjb25z
dCBDaGFyYWN0ZXJUeXBlKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkCiAgICAgICAgIENoYXJhY3Rl
clR5cGUgYyA9IHZhbHVlS2V5d29yZFtpXTsKICAgICAgICAgaWYgKCFjIHx8IGMgPj0gMHg3RikK
ICAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7IC8vIGlsbGVnYWwga2V5d29yZC4K
LSAgICAgICAgYnVmZmVyW2ldID0gV1RGOjp0b0FTQ0lJTG93ZXIoYyk7CisgICAgICAgIGJ1ZmZl
cltpXSA9IHRvQVNDSUlMb3dlcihjKTsKICAgICB9CiAgICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAn
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCmluZGV4IDA0ZTFjODRjYjVmYWI2ODM4ZDRlNzY0MTk5MGVlNTQ3
NTgwMzFhOWYuLjNkNGZmOTQwZTRjZDU0ZTE2ZTBiNTFkNzE4NjIyM2Y3OTA0ZTYzY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5jcHAKQEAgLTM3NDQsOSArMzc0NCw5IEBAIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4g
Y29uc3VtZUdlbmVyaWNGYW1pbHlSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudFJhbmdlUmF3KHJhbmdlLCBDU1NWYWx1ZVNlcmlmLCBDU1NWYWx1
ZVdlYmtpdEJvZHkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFdURjo6VmVjdG9yPEZvbnRGYW1pbHlS
YXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3N0
ZDo6b3B0aW9uYWw8VmVjdG9yPEZvbnRGYW1pbHlSYXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKLSAgICBXVEY6OlZlY3RvcjxGb250RmFtaWx5
UmF3PiBsaXN0OworICAgIFZlY3RvcjxGb250RmFtaWx5UmF3PiBsaXN0OwogICAgIGRvIHsKICAg
ICAgICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lR2VuZXJpY0ZhbWlseVJhdyhyYW5nZSkpCiAg
ICAgICAgICAgICBsaXN0LmFwcGVuZCh7ICppZGVudCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQv
U2VsZWN0b3JDb21waWxlci5oCmluZGV4IDA0ZTFjMDA3ZTk5YTJhZmRjNTRiOTE2ZThmODI4NTU5
MGZmOWMwYjguLjFiM2Q3ZjE0MDM1MWU3MDE3NGU0ZjFjODg5NTE4NWE1YTNmNDA2NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuaApAQCAtNjEsNyArNjEsNyBAQCBp
bmxpbmUgdW5zaWduZWQgcnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcihDb21waWxl
ZFNlbGVjdG9yJiBjb21waWxlZFNlbAogICAgICAgICByZXR1cm4gdm1FbnRyeVRvQ1NTSklUKGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVsZW1lbnQpLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSksIDAsIGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7CiAjZW5kaWYKICAgICB1c2luZyBSdWxlQ29sbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVj
a2VyID0gdW5zaWduZWQoKikoY29uc3QgRWxlbWVudCosIHVuc2lnbmVkKik7Ci0gICAgcmV0dXJu
IFdURjo6dW50YWdDRnVuY3Rpb25QdHI8UnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tl
ciwgSlNDOjpDU1NTZWxlY3RvclB0clRhZz4oY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpKShlbGVtZW50LCB2YWx1ZSk7CisgICAgcmV0dXJuIHVudGFn
Q0Z1bmN0aW9uUHRyPFJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIsIEpTQzo6Q1NT
U2VsZWN0b3JQdHJUYWc+KGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkoZWxlbWVudCwgdmFsdWUpOwogfQogCiBpbmxpbmUgdW5zaWduZWQgcXVlcnlT
ZWxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcihDb21waWxlZFNlbGVjdG9yJiBjb21waWxlZFNl
bGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50KQpAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUg
dW5zaWduZWQgcXVlcnlTZWxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcihDb21waWxlZFNlbGVj
dG9yJiBjb21waWxlZFNlbAogICAgICAgICByZXR1cm4gdm1FbnRyeVRvQ1NTSklUKGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGVsZW1lbnQpLCAwLCAwLCBjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYu
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogI2VuZGlmCiAgICAgdXNpbmcgUXVlcnlTZWxl
Y3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlciA9IHVuc2lnbmVkKCopKGNvbnN0IEVsZW1lbnQqKTsK
LSAgICByZXR1cm4gV1RGOjp1bnRhZ0NGdW5jdGlvblB0cjxRdWVyeVNlbGVjdG9yU2ltcGxlU2Vs
ZWN0b3JDaGVja2VyLCBKU0M6OkNTU1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVjdG9yLmNv
ZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGVsZW1lbnQpOworICAgIHJldHVybiB1
bnRhZ0NGdW5jdGlvblB0cjxRdWVyeVNlbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2VyLCBKU0M6
OkNTU1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKGVsZW1lbnQpOwogfQogCiBpbmxpbmUgdW5zaWduZWQgcnVsZUNvbGxl
Y3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQoQ29tcGlsZWRTZWxlY3RvciYg
Y29tcGlsZWRTZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCwgU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkKiB2YWx1ZSkKQEAgLTgzLDcgKzgz
LDcgQEAgaW5saW5lIHVuc2lnbmVkIHJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hl
Y2tpbmdDb250ZXh0KENvbXBpbGVkU2VsZWN0b3IKICAgICAgICAgcmV0dXJuIHZtRW50cnlUb0NT
U0pJVChiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbGVtZW50KSwgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4oY29udGV4dCksIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSwgY29tcGlsZWRT
ZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICNlbmRpZgogICAg
IHVzaW5nIFJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0ID0g
dW5zaWduZWQoKikoY29uc3QgRWxlbWVudCosIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250
ZXh0KiwgdW5zaWduZWQqKTsKLSAgICByZXR1cm4gV1RGOjp1bnRhZ0NGdW5jdGlvblB0cjxSdWxl
Q29sbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCwgSlNDOjpDU1NTZWxl
Y3RvclB0clRhZz4oY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpKShlbGVtZW50LCBjb250ZXh0LCB2YWx1ZSk7CisgICAgcmV0dXJuIHVudGFnQ0Z1bmN0
aW9uUHRyPFJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0LCBK
U0M6OkNTU1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKGVsZW1lbnQsIGNvbnRleHQsIHZhbHVlKTsKIH0KIAogaW5saW5l
IHVuc2lnbmVkIHF1ZXJ5U2VsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0
KENvbXBpbGVkU2VsZWN0b3ImIGNvbXBpbGVkU2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiBjb250ZXh0KQpAQCAt
OTQsNyArOTQsNyBAQCBpbmxpbmUgdW5zaWduZWQgcXVlcnlTZWxlY3RvclNlbGVjdG9yQ2hlY2tl
cldpdGhDaGVja2luZ0NvbnRleHQoQ29tcGlsZWRTZWxlY3RvcgogICAgICAgICByZXR1cm4gdm1F
bnRyeVRvQ1NTSklUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVsZW1lbnQpLCBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90Pihjb250ZXh0KSwgMCwgY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICNlbmRpZgogICAgIHVzaW5nIFF1ZXJ5U2VsZWN0b3JT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0ID0gdW5zaWduZWQoKikoY29uc3QgRWxl
bWVudCosIGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0Kik7Ci0gICAgcmV0
dXJuIFdURjo6dW50YWdDRnVuY3Rpb25QdHI8UXVlcnlTZWxlY3RvclNlbGVjdG9yQ2hlY2tlcldp
dGhDaGVja2luZ0NvbnRleHQsIEpTQzo6Q1NTU2VsZWN0b3JQdHJUYWc+KGNvbXBpbGVkU2VsZWN0
b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoZWxlbWVudCwgY29udGV4dCk7
CisgICAgcmV0dXJuIHVudGFnQ0Z1bmN0aW9uUHRyPFF1ZXJ5U2VsZWN0b3JTZWxlY3RvckNoZWNr
ZXJXaXRoQ2hlY2tpbmdDb250ZXh0LCBKU0M6OkNTU1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNl
bGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGVsZW1lbnQsIGNvbnRl
eHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBTZWxlY3RvckNvbXBpbGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA1YWY3NzZlNTlhYWU3MTBhMzFjYzRjYzM0MWQyOTc3OTA0OTdiOTk0Li45
OTQ5Y2I1Yjc2Y2NhN2FiNGM3ZDczMDRkNTdhNDYxMTcwMjZjZWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTM5NjMsNyArMzk2Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OnRoZW1lQ29sb3JD
aGFuZ2VkKCkKIH0KIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotc3RhdGljIHZvaWQgcHJv
Y2Vzc0NvbG9yU2NoZW1lU3RyaW5nKFN0cmluZ1ZpZXcgY29sb3JTY2hlbWUsIGNvbnN0IFdURjo6
RnVuY3Rpb248dm9pZChTdHJpbmdWaWV3IGtleSk+JiBjYWxsYmFjaykKK3N0YXRpYyB2b2lkIHBy
b2Nlc3NDb2xvclNjaGVtZVN0cmluZyhTdHJpbmdWaWV3IGNvbG9yU2NoZW1lLCBjb25zdCBGdW5j
dGlvbjx2b2lkKFN0cmluZ1ZpZXcga2V5KT4mIGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGNvbG9yU2NoZW1lLmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICkgewpAQCAtODUxMyw3ICs4NTEzLDcgQEAgVmVjdG9yPFJlZlB0cjxXZWJBbmlt
YXRpb24+PiBEb2N1bWVudDo6Z2V0QW5pbWF0aW9ucygpCiAgICAgfSk7CiB9CiAKLVZlY3RvcjxS
ZWZQdHI8V2ViQW5pbWF0aW9uPj4gRG9jdW1lbnQ6Om1hdGNoaW5nQW5pbWF0aW9ucyhjb25zdCBX
VEY6OkZ1bmN0aW9uPGJvb2woRWxlbWVudCYpPiYgZnVuY3Rpb24pCitWZWN0b3I8UmVmUHRyPFdl
YkFuaW1hdGlvbj4+IERvY3VtZW50OjptYXRjaGluZ0FuaW1hdGlvbnMoY29uc3QgRnVuY3Rpb248
Ym9vbChFbGVtZW50Jik+JiBmdW5jdGlvbikKIHsKICAgICAvLyBGb3IgdGhlIGxpc3Qgb2YgYW5p
bWF0aW9ucyB0byBiZSBjdXJyZW50LCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yIGFueSBwZW5kaW5n
IENTUyBjaGFuZ2VzLAogICAgIC8vIHN1Y2ggYXMgdXBkYXRlcyB0byBDU1MgQW5pbWF0aW9ucyBh
bmQgQ1NTIFRyYW5zaXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4NzJjMDVhNWRjYmRj
MzZjYTA5Y2IzNTM3ZDQ4MzcxNTE3NzUzOGUyLi41OTI1NzRiZTNjZmUyZjI4ZGFlNzY5MzhmYzE2
Y2IxNDUzYjk1M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTUzMSw3ICsxNTMxLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VGltZWxpbmUmIHRpbWVsaW5lKCk7
CiAgICAgRG9jdW1lbnRUaW1lbGluZSogZXhpc3RpbmdUaW1lbGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGltZWxpbmUuZ2V0KCk7IH0KICAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IGdl
dEFuaW1hdGlvbnMoKTsKLSAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IG1hdGNoaW5n
QW5pbWF0aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woRWxlbWVudCYpPiYpOworICAgIFZl
Y3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gbWF0Y2hpbmdBbmltYXRpb25zKGNvbnN0IEZ1bmN0
aW9uPGJvb2woRWxlbWVudCYpPiYpOwogICAgIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciog
dGltZWxpbmVzQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmVzQ29udHJvbGxl
ci5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
ciYgZW5zdXJlVGltZWxpbmVzQ29udHJvbGxlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2Ny
ZWVuTWFuYWdlci5oCmluZGV4IDViZmUzOGRhNjRlNGVkYWVmZWRjYzNkYWQ4MzFmYmYzOGMxZDMx
YWIuLjZlNWFjOTkxMDhiYTljMjlmZDZiM2FkZmEzNzZjMjhjOGQyMDNkNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJvdGVjdGVk
OgogCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFdURjo6
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmxvZ2dlcigpOyB9Cisg
ICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmxvZ2dl
cigpOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
bG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJGdWxsc2NyZWVuTWFuYWdlciI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFu
bmVsKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmgK
aW5kZXggNGJhMGZhOWNiODhjNGViOGJkM2ZmMTNkZjc2YTg3ZjkwN2EwM2RmZi4uYTBlMTZmZDQw
OGZjZWNjM2IyZjU4M2JiMjdmODJkNDQxODE5ZGI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9J
bmxpbmVTdHlsZVNoZWV0T3duZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX2lzUGFyc2luZ0NoaWxkcmVuOwogICAgIGJvb2wgbV9sb2FkaW5nOwotICAgIFdURjo6
VGV4dFBvc2l0aW9uIG1fc3RhcnRUZXh0UG9zaXRpb247CisgICAgVGV4dFBvc2l0aW9uIG1fc3Rh
cnRUZXh0UG9zaXRpb247CiAgICAgQXRvbVN0cmluZyBtX2NvbnRlbnRUeXBlOwogICAgIEF0b21T
dHJpbmcgbV9tZWRpYTsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9zaGVldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBjNGYyOTU5OTkzOWVjMTY4MzJjNmRmNmMw
Y2VjMDIwYmNkNDI1MGI0Li5mYmFhMTUzMjk0ZGFmY2E3MWVjZjU2ODYxMjI0ZWJmYjIyZGExZGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHN0
YXRpYyBjb25zdCBhdXRvIG1heFVzZXJHZXN0dXJlUHJvcGFnYXRpb25UaW1lID0gMV9zOwogCiBT
Y3JpcHRFbGVtZW50OjpTY3JpcHRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgcGFyc2Vy
SW5zZXJ0ZWQsIGJvb2wgYWxyZWFkeVN0YXJ0ZWQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkK
LSAgICAsIG1fc3RhcnRMaW5lTnVtYmVyKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3Qo
KSkKKyAgICAsIG1fc3RhcnRMaW5lTnVtYmVyKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkp
CiAgICAgLCBtX3BhcnNlckluc2VydGVkKHBhcnNlckluc2VydGVkID8gUGFyc2VySW5zZXJ0ZWQ6
OlllcyA6IFBhcnNlckluc2VydGVkOjpObykKICAgICAsIG1faXNFeHRlcm5hbFNjcmlwdChmYWxz
ZSkKICAgICAsIG1fYWxyZWFkeVN0YXJ0ZWQoYWxyZWFkeVN0YXJ0ZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuaAppbmRleCA4ZTA1MWY4M2M1YmQ3ZmNiYTliYjAyZTUxNTRiNjU5YmNhM2Zm
ZDVmLi4wZTczOTcxNDNkYzU2MzgwMjYzOWE3NWJlYTNkODE5YjE1ZDk4ZTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCA9IDA7CiAKICAgICBF
bGVtZW50JiBtX2VsZW1lbnQ7Ci0gICAgV1RGOjpPcmRpbmFsTnVtYmVyIG1fc3RhcnRMaW5lTnVt
YmVyOworICAgIE9yZGluYWxOdW1iZXIgbV9zdGFydExpbmVOdW1iZXI7CiAgICAgUGFyc2VySW5z
ZXJ0ZWQgbV9wYXJzZXJJbnNlcnRlZDsKICAgICBib29sIG1faXNFeHRlcm5hbFNjcmlwdCA6IDE7
CiAgICAgYm9vbCBtX2FscmVhZHlTdGFydGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDI1ZmIwMGU2MTMyM2U5ODI5NjBhMjg1MGQ3ZTEz
N2JmNTI2YmE2ZDkuLmY3OWMzZWRjODhkM2VmZjExNmE1YTY1ODM2NDhjZDhhZmMxZWEzOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTg1LDIw
ICsxODUsMjAgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDbGVhbnVwVGFz
a1RhZyB7IENsZWFudXBUYXNrIH07CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19iYXNlX29mPFRhc2ssIFQ+
Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIFdURjo6RnVuY3Rpb248dm9pZCAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19i
YXNlX29mPFRhc2ssIFQ+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIEZ1bmN0aW9u
PHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KICAgICAgICAg
VGFzayhUIHRhc2spCiAgICAgICAgICAgICA6IG1fdGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAg
ICAgICAgLCBtX2lzQ2xlYW51cFRhc2soZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCisgICAgICAgIFRhc2so
RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgICAgICAgICA6IG1fdGFzayhbdGFzayA9IFdU
Rk1vdmUodGFzayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7IHRhc2soKTsgfSkKICAgICAg
ICAgICAgICwgbV9pc0NsZWFudXBUYXNrKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8VCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgorICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVy
dGlibGU8VCwgRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+
Ojp0eXBlPgogICAgICAgICBUYXNrKENsZWFudXBUYXNrVGFnLCBUIHRhc2spCiAgICAgICAgICAg
ICA6IG1fdGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAgICAgLCBtX2lzQ2xlYW51cFRhc2so
dHJ1ZSkKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNDbGVhbnVw
VGFzaygpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGVhbnVwVGFzazsgfQogCiAgICAgcHJvdGVjdGVk
OgotICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4g
bV90YXNrOworICAgICAgICBGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4g
bV90YXNrOwogICAgICAgICBib29sIG1faXNDbGVhbnVwVGFzazsKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggMjU0ZDNhZjRhYWYwYmIyMGEzMzI5YzNiYzdh
ZWQ0NjhiMThiY2RhNy4uNzliODRiZWQ4NDIxNTM5MDY0YjAyY2E0NTU4YmQ3NjMyNWQzNmQ5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZv
aWQgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVGcm9tU3RyaW5nKGNvbnN0IEF0b21TdHJp
bmcmIG5ld1N0eWxlU3RyaW5nKQogCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OnN0eWxlQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBuZXdTdHlsZVN0cmluZywgQXR0cmlidXRlTW9kaWZp
Y2F0aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBhdXRvIHN0YXJ0TGluZU51bWJlciA9IFdURjo6
T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKTsKKyAgICBhdXRvIHN0YXJ0TGluZU51bWJlciA9
IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCk7CiAgICAgaWYgKGRvY3VtZW50KCkuc2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKCkgJiYgIWRvY3VtZW50KCkuaXNJbkRvY3VtZW50V3JpdGUoKSkK
ICAgICAgICAgc3RhcnRMaW5lTnVtYmVyID0gZG9jdW1lbnQoKS5zY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIoKS0+dGV4dFBvc2l0aW9uKCkubV9saW5lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5oCmluZGV4IGExYTQ1MDQ1NGMwYmRkYzQxYWI3M2EzZmNmNTBjZjU2
YmI5NDQ4NmEuLjFjODc1OWMwMmFmMzUxODA4OTNmNjczMDJkMTAyN2FlM2FhMmE4MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZSA9PSBQcm9jZXNzaW5nVXNlckdlc3R1cmUgfHwgbV9zdGF0ZSA9PSBQ
cm9jZXNzaW5nUG90ZW50aWFsVXNlckdlc3R1cmU7IH0KICAgICBVc2VyR2VzdHVyZVR5cGUgZ2Vz
dHVyZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlc3R1cmVUeXBlOyB9CiAKLSAgICB2b2lkIGFk
ZERlc3RydWN0aW9uT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkIChVc2VyR2VzdHVyZVRva2Vu
Jik+JiYgb2JzZXJ2ZXIpCisgICAgdm9pZCBhZGREZXN0cnVjdGlvbk9ic2VydmVyKEZ1bmN0aW9u
PHZvaWQoVXNlckdlc3R1cmVUb2tlbiYpPiYmIG9ic2VydmVyKQogICAgIHsKICAgICAgICAgbV9k
ZXN0cnVjdGlvbk9ic2VydmVycy5hcHBlbmQoV1RGTW92ZShvYnNlcnZlcikpOwogICAgIH0KQEAg
LTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIFVzZXJHZXN0dXJlVG9rZW4oUHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlU3RhdGUsIFVzZXJHZXN0dXJlVHlwZSwgRG9jdW1lbnQqKTsKIAogICAgIFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIG1fc3RhdGUgPSBOb3RQcm9jZXNzaW5nVXNlckdlc3R1
cmU7Ci0gICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCAoVXNlckdlc3R1cmVUb2tlbiYpPj4g
bV9kZXN0cnVjdGlvbk9ic2VydmVyczsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChVc2VyR2Vz
dHVyZVRva2VuJik+PiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOwogICAgIFVzZXJHZXN0dXJlVHlw
ZSBtX2dlc3R1cmVUeXBlOwogICAgIFdlYWtIYXNoU2V0PERvY3VtZW50PiBtX2RvY3VtZW50c0lt
cGFjdGVkQnlVc2VyR2VzdHVyZTsKICAgICBET01QYXN0ZUFjY2Vzc1BvbGljeSBtX2RvbVBhc3Rl
QWNjZXNzUG9saWN5IHsgRE9NUGFzdGVBY2Nlc3NQb2xpY3k6Ok5vdFJlcXVlc3RlZFlldCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKaW5kZXggNzNkZjk0YzQ2NGY5
ZWU0Y2NiZjM1OTEyNjg1YzllMGMwNzliMGE2Yi4uZDQ2M2RlMDNhNDJkZTE0OGFiNmViNzc1NDA2
N2VmN2VkNTY0YmE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJn
dW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3Bw
CkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBXVEY6
OkZ1bmN0aW9uPHZvaWQoVmlld3BvcnRFcnJvckNvZGUsIFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcp
PiBJbnRlcm5hbFZpZXdwb3J0RXJyb3JIYW5kbGVyOwordHlwZWRlZiBGdW5jdGlvbjx2b2lkKFZp
ZXdwb3J0RXJyb3JDb2RlLCBTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KT4gSW50ZXJuYWxWaWV3cG9y
dEVycm9ySGFuZGxlcjsKIAogI2lmIFBMQVRGT1JNKEdUSykKIGNvbnN0IGZsb2F0IFZpZXdwb3J0
QXJndW1lbnRzOjpkZXByZWNhdGVkVGFyZ2V0RFBJID0gMTYwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmll
d3BvcnRBcmd1bWVudHMuaAppbmRleCA5OTU0YmRjMWEwNzYyNWU5NjljMmM0NjdiMGFlZTZhZjZl
MWM1ZDcyLi5kYzcxODczYmY5YTQwYWE3ZDI4OTc4YmIxNjVjYWM0Yjk5OTA0N2Y0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApAQCAtMTQzLDcgKzE0Myw3IEBAIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShW
aWV3cG9ydEF0dHJpYnV0ZXMmCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RyaWN0U2NhbGVGYWN0
b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKFZpZXdwb3J0QXR0cmlidXRlcyYgcmVz
dWx0KTsKIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGNvbXB1dGVNaW5pbXVtU2NhbGVGYWN0b3JGb3JD
b250ZW50Q29udGFpbmVkKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzdWx0LCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplKTsKIAotdHlw
ZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQoVmlld3BvcnRFcnJvckNvZGUsIGNvbnN0IFN0cmluZyYp
PiBWaWV3cG9ydEVycm9ySGFuZGxlcjsKK3R5cGVkZWYgRnVuY3Rpb248dm9pZChWaWV3cG9ydEVy
cm9yQ29kZSwgY29uc3QgU3RyaW5nJik+IFZpZXdwb3J0RXJyb3JIYW5kbGVyOwogdm9pZCBzZXRW
aWV3cG9ydEZlYXR1cmUoVmlld3BvcnRBcmd1bWVudHMmLCBEb2N1bWVudCYsIFN0cmluZ1ZpZXcg
a2V5LCBTdHJpbmdWaWV3IHZhbHVlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRG
ZWF0dXJlKFZpZXdwb3J0QXJndW1lbnRzJiwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFs
dWUsIGJvb2wgdmlld3BvcnRGaXRFbmFibGVkLCBjb25zdCBWaWV3cG9ydEVycm9ySGFuZGxlciYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMDdhNGYxYmY4MjI0M2VjNmE2OTU1
N2E5NTU2ZTM0ODBkMWVhOTVlNy4uYzY3MTAyMjdkZGQxNGY1MDZkOGY1MjBjMGU4OTZjYzljZDRl
NjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDAxMCw3ICs0MDEwLDcgQEAg
c3RhdGljIFZlY3RvcjxUZXh0TGlzdD4gZWRpdGFibGVUZXh0TGlzdHNBdFBvc2l0aW9uSW5EZXNj
ZW5kaW5nT3JkZXIoY29uc3QgUG9zaXQKIEZvbnRBdHRyaWJ1dGVzIEVkaXRvcjo6Zm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkKIHsKICAgICBSZWZQdHI8Tm9kZT4gbm9kZVRvUmVtb3Zl
OwotICAgIGF1dG8gbm9kZVJlbW92YWxTY29wZSA9IFdURjo6bWFrZVNjb3BlRXhpdChbJm5vZGVU
b1JlbW92ZV0oKSB7CisgICAgYXV0byBub2RlUmVtb3ZhbFNjb3BlID0gbWFrZVNjb3BlRXhpdChb
Jm5vZGVUb1JlbW92ZV0oKSB7CiAgICAgICAgIGlmIChub2RlVG9SZW1vdmUpCiAgICAgICAgICAg
ICBub2RlVG9SZW1vdmUtPnJlbW92ZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
bWFydFJlcGxhY2UuY3BwCmluZGV4IGRlNTNjYzBmZmJmMTRjNGFiMmVkYTAyNDI4ODgyMzBjOThm
ZTQwOTguLjVjOTRkZmI4ZDA0ZDkzNWNiNTVjN2RmMmE2NmY2NDA3OTYzNWE0NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZS5jcHAKQEAgLTcyLDExICs3MiwxMSBAQCBzdGF0
aWMgVVNldCogZ2V0U21hcnRTZXQoYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQogICAgICAgICB1
c2V0X2FkZFJhbmdlKHNtYXJ0U2V0LCAweDJGODAwLCAweDJGODAwICsgMHgwMjFFKTsgLy8gQ0pL
IENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAoMHgyRjgwMCAtIDB4MkZBMUQpCiAKICAgICAgICAg
aWYgKGlzUHJldmlvdXNDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBTaWxseSB0
byBjb252ZXJ0IHRoaXMgdG8gYSBXVEY6OlN0cmluZyBqdXN0IHRvIGxvb3AgdGhyb3VnaCB0aGUg
Y2hhcmFjdGVycy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaWxseSB0byBjb252ZXJ0IHRoaXMg
dG8gYSBTdHJpbmcganVzdCB0byBsb29wIHRocm91Z2ggdGhlIGNoYXJhY3RlcnMuCiAgICAgICAg
ICAgICBhZGRBbGxDb2RlUG9pbnRzKHNtYXJ0U2V0LCAiKFtcIlwnIyQvLWB7Il9zKTsKICAgICAg
ICAgICAgIHByZVNtYXJ0U2V0ID0gc21hcnRTZXQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogU2lsbHkgdG8gY29udmVydCB0aGlzIHRvIGEgV1RGOjpTdHJpbmcganVz
dCB0byBsb29wIHRocm91Z2ggdGhlIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAvLyBGSVhNRTog
U2lsbHkgdG8gY29udmVydCB0aGlzIHRvIGEgU3RyaW5nIGp1c3QgdG8gbG9vcCB0aHJvdWdoIHRo
ZSBjaGFyYWN0ZXJzLgogICAgICAgICAgICAgYWRkQWxsQ29kZVBvaW50cyhzbWFydFNldCwgIild
Liw7Oj9cJyFcIiUqLS99Il9zKTsKIAogICAgICAgICAgICAgLy8gUHVuY3R1YXRpb24gKGtDRkNo
YXJhY3RlclNldFB1bmN0dWF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBiNGUxNWZlYjBjYTUzODY1YTE5
Mjk2MDA5ODRjMTNkYmY4ZWE1ZWQwLi40NzQyOWQ1OTE3YTIzYTJlZGFlMTZkMGY3N2Y5NDEyY2E4
ZjU2YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyLmNwcApAQCAtMzg4LDEzICszODgsMTMgQEAgdm9pZCBUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6cGFyc2UoTWFuaXB1bGF0aW9uVW5pdCYgdW5pdCwgY29uc3QgU3Ry
aW5nJiB0ZXgKIHsKICAgICBFeGNsdXNpb25SdWxlTWF0Y2hlciBleGNsdXNpb25SdWxlTWF0Y2hl
cihtX2V4Y2x1c2lvblJ1bGVzKTsKICAgICBib29sIGlzTm9kZUV4Y2x1ZGVkID0gZXhjbHVzaW9u
UnVsZU1hdGNoZXIuaXNFeGNsdWRlZCgmdGV4dE5vZGUpIHx8IHNob3VsZEV4Y2x1ZGVOb2RlQmFz
ZWRPblN0eWxlKHRleHROb2RlKTsKLSAgICBzaXplX3QgcG9zaXRpb25PZkxhc3ROb25IVE1MU3Bh
Y2UgPSBXVEY6Om5vdEZvdW5kOworICAgIHNpemVfdCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFj
ZSA9IG5vdEZvdW5kOwogICAgIHNpemVfdCBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPSAw
OwogICAgIHNpemVfdCBpbmRleCA9IDA7CiAgICAgZm9yICg7IGluZGV4IDwgdGV4dC5sZW5ndGgo
KTsgKytpbmRleCkgewogICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHRleHRbaW5kZXhdOwogICAg
ICAgICBpZiAoaXNUb2tlbkRlbGltaXRlcihjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBpZiAo
cG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UgIT0gV1RGOjpub3RGb3VuZCAmJiBzdGFydFBvc2l0
aW9uT2ZDdXJyZW50VG9rZW4gPD0gcG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UpIHsKKyAgICAg
ICAgICAgIGlmIChwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSAhPSBub3RGb3VuZCAmJiBzdGFy
dFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPD0gcG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UpIHsK
ICAgICAgICAgICAgICAgICBhdXRvIHN0cmluZ0ZvclRva2VuID0gdGV4dC5zdWJzdHJpbmcoc3Rh
cnRQb3NpdGlvbk9mQ3VycmVudFRva2VuLCBwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSArIDEg
LSBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4pOwogICAgICAgICAgICAgICAgIHVuaXQudG9r
ZW5zLmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRl
KCksIHN0cmluZ0ZvclRva2VuLCB0b2tlbkluZm8oJnRleHROb2RlKSwgaXNOb2RlRXhjbHVkZWQg
fSk7CiAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuID0gcG9zaXRp
b25PZkxhc3ROb25IVE1MU3BhY2UgKyAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCmluZGV4IDBkOTc1YjM2ODk2Mjk3MzYxMTE2
Zjg0NzA5YTMyMTg1MzZlMzg5YmYuLmVlNjc4MDgwZjE3ZmE2NzU1ZDQ5MThhNGNlZjFmZTlhZTM4
YmM4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2x1c2lvblJ1bGU+IGRl
Y29kZShEZWNvZGVyJik7CiAgICAgfTsKIAotICAgIHVzaW5nIE1hbmlwdWxhdGlvbkl0ZW1DYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxNYW5pcHVs
YXRpb25JdGVtPiYpPjsKKyAgICB1c2luZyBNYW5pcHVsYXRpb25JdGVtQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKERvY3VtZW50JiwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvbkl0ZW0+Jik+Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdQYXJhZ3JhcGhzKE1hbmlwdWxh
dGlvbkl0ZW1DYWxsYmFjayYmLCBWZWN0b3I8RXhjbHVzaW9uUnVsZT4mJiA9IHsgfSk7CiAKICAg
ICB2b2lkIGRpZENyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmgKaW5kZXggMTEwYjhmODI2Zjg0
MTc1ZGQ5MmFhNDBlODdlYzJhM2FmYzdkNDcxZS4uZGViZjBmNzYxOWJmNzIxZWZlMzZjYzcxZmVh
NjY2ZjRhZmIwZmQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGlj
dGlvbmFyeUxvb2t1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25h
cnlMb29rdXAuaApAQCAtNjEsMTEgKzYxLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBT
aG91bGQgbW92ZS91bmlmeSBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UgaGVyZSB0b28uCiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzaG93UG9wdXAoY29uc3QgRGljdGlvbmFy
eVBvcHVwSW5mbyYsIENvY29hVmlldyAqLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoVGV4dElu
ZGljYXRvciYpPiYgdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrLCBjb25zdCBXVEY6
OkZ1bmN0aW9uPEZsb2F0UmVjdChGbG9hdFJlY3QpPiYgcm9vdFZpZXdUb1ZpZXdDb252ZXJzaW9u
Q2FsbGJhY2sgPSBudWxscHRyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjbGVhclRleHRJbmRp
Y2F0b3IgPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzaG93UG9w
dXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYsIENvY29hVmlldyAqLCBjb25zdCBGdW5jdGlv
bjx2b2lkKFRleHRJbmRpY2F0b3ImKT4mIHRleHRJbmRpY2F0b3JJbnN0YWxsYXRpb25DYWxsYmFj
aywgY29uc3QgRnVuY3Rpb248RmxvYXRSZWN0KEZsb2F0UmVjdCk+JiByb290Vmlld1RvVmlld0Nv
bnZlcnNpb25DYWxsYmFjayA9IG51bGxwdHIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjbGVhclRleHRJ
bmRpY2F0b3IgPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBoaWRl
UG9wdXAoKTsKICAgICAKICNpZiBQTEFURk9STShNQUMpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFdLUmV2ZWFsQ29udHJvbGxlciBhbmltYXRpb25Db250cm9sbGVyRm9yUG9wdXAoY29uc3Qg
RGljdGlvbmFyeVBvcHVwSW5mbyYsIE5TVmlldyAqLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
VGV4dEluZGljYXRvciYpPiYgdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrLCBjb25z
dCBXVEY6OkZ1bmN0aW9uPEZsb2F0UmVjdChGbG9hdFJlY3QpPiYgcm9vdFZpZXdUb1ZpZXdDb252
ZXJzaW9uQ2FsbGJhY2sgPSBudWxscHRyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjbGVhclRl
eHRJbmRpY2F0b3IgPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV0tSZXZl
YWxDb250cm9sbGVyIGFuaW1hdGlvbkNvbnRyb2xsZXJGb3JQb3B1cChjb25zdCBEaWN0aW9uYXJ5
UG9wdXBJbmZvJiwgTlNWaWV3ICosIGNvbnN0IEZ1bmN0aW9uPHZvaWQoVGV4dEluZGljYXRvciYp
PiYgdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjxGbG9h
dFJlY3QoRmxvYXRSZWN0KT4mIHJvb3RWaWV3VG9WaWV3Q29udmVyc2lvbkNhbGxiYWNrID0gbnVs
bHB0ciwgRnVuY3Rpb248dm9pZCgpPiYmIGNsZWFyVGV4dEluZGljYXRvciA9IG51bGxwdHIpOwog
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKICAgICAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKaW5kZXggZGM2YzgwMzA0YTgzOWVhZWFjNjI5NTQ3ODI4N2UwMGFhOGIwNDA1OS4uMjVmNGQ5
NWU2MDM1YTMwN2VhODYxYTQwMTNkMjgwNWY2OTgzMjFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIHN0cnVjdCBFbGVtZW50QXR0cmlidXRlIHsKICAg
ICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5hbWU7CiB9OwogCi12b2lkIHJlbW92ZVN1YnJlc291
cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFnbWVudCwgV1RGOjpG
dW5jdGlvbjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwpCit2b2lkIHJlbW92ZVN1
YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFnbWVudCwg
RnVuY3Rpb248Ym9vbChjb25zdCBVUkwmKT4gc2hvdWxkUmVtb3ZlVVJMKQogewogICAgIFZlY3Rv
cjxFbGVtZW50QXR0cmlidXRlPiBhdHRyaWJ1dGVzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0yMDgs
NyArMjA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5n
V2ViQ29udGVudCgpCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVN0cmluZyBzYW5pdGl6ZU1hcmt1
cChjb25zdCBTdHJpbmcmIHJhd0hUTUwsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgc3Rk
OjpvcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21l
bnRTYW5pdGl6ZXIpCitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1M
LCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIHN0ZDo6b3B0aW9uYWw8RnVuY3Rpb248dm9p
ZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXplcikKIHsKICAgICBhdXRvIHBh
Z2UgPSBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKICAgICBEb2N1bWVudCog
c3RhZ2luZ0RvY3VtZW50ID0gcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCmluZGV4IGJiNzU5NjQzOGVlMDI4NmE4YzE4ODY4NTk4OGU5Zjg1YzI2ZGQ1
MGQuLjkyNTExYTkzNDY2YmE5NDg0MTI0MWJhZmQ2NGUwZmNkMTNlMTFhZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaApAQCAtNTEsMTEgKzUxLDExIEBAIHN0cnVjdCBQcmVzZW50YXRpb25TaXpl
Owogc3RydWN0IFNpbXBsZVJhbmdlOwogCiB2b2lkIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHMoUmVm
PERvY3VtZW50RnJhZ21lbnQ+JiYsIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4mJik7
Ci12b2lkIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVu
dD4mJiwgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwpOwor
dm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoUmVmPERvY3VtZW50RnJhZ21lbnQ+
JiYsIEZ1bmN0aW9uPGJvb2woY29uc3QgVVJMJik+IHNob3VsZFJlbW92ZVVSTCk7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKIGVu
dW0gY2xhc3MgTVNPTGlzdFF1aXJrcyA6IGJvb2wgeyBDaGVja0lmTmVlZGVkLCBEaXNhYmxlZCB9
OwotU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYsIE1TT0xpc3RRdWlya3MgPSBN
U09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgc3RkOjpvcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQo
RG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIgPSBzdGQ6Om51bGxvcHQpOwor
U3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYsIE1TT0xpc3RRdWlya3MgPSBNU09M
aXN0UXVpcmtzOjpEaXNhYmxlZCwgc3RkOjpvcHRpb25hbDxGdW5jdGlvbjx2b2lkKERvY3VtZW50
RnJhZ21lbnQmKT4+IGZyYWdtZW50U2FuaXRpemVyID0gc3RkOjpudWxsb3B0KTsKIFN0cmluZyBz
YW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+
JiYsIERvY3VtZW50JiwgTVNPTGlzdFF1aXJrcywgY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1hcmt1
cCk7CiAKIFdFQkNPUkVfRVhQT1JUIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZyb21UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IGE4MzUw
NTViYWMyOGMyYjc1OWNlZDA5ZGU2ODc0YjliZGY3Nzc3ODQuLmExOWRkM2I2NWYxZjNkZmQ1MDFk
NmM3ZGFiNzljMzUyZWE5YTVkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBBc3luY0ZpbGVTdHJlYW06On5Bc3luY0Zp
bGVTdHJlYW0oKQogICAgIH0pOwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShX
VEY6OkZ1bmN0aW9uPFdURjo6RnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVT
dHJlYW0mKT4mJiBvcGVyYXRpb24pCit2b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShGdW5j
dGlvbjxGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4oRmlsZVN0cmVhbSYpPiYmIG9w
ZXJhdGlvbikKIHsKICAgICBhdXRvJiBpbnRlcm5hbHMgPSAqbV9pbnRlcm5hbHM7CiAgICAgY2Fs
bE9uRmlsZVRocmVhZChbJmludGVybmFscywgb3BlcmF0aW9uID0gV1RGTW92ZShvcGVyYXRpb24p
XSB7CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBBc3luY0ZpbGVTdHJlYW06OmdldFNpemUoY29u
c3QgU3RyaW5nJiBwYXRoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3QKIHsKICAgICAv
LyBGSVhNRTogRXhwbGljaXQgcmV0dXJuIHR5cGUgaGVyZSBhbmQgaW4gYWxsIHRoZSBvdGhlciBj
YXNlcyBsaWtlIHRoaXMgYmVsb3cgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGRlZmljaWVuY3kKICAg
ICAvLyBpbiB0aGUgV2luZG93cyBjb21waWxlciBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcu
IENvdWxkIHJlbW92ZSBpdCBpZiB0aGF0IGlzIHJlc29sdmVkLgotICAgIHBlcmZvcm0oW3BhdGgg
PSBwYXRoLmlzb2xhdGVkQ29weSgpLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWVdKEZpbGVTdHJl
YW0mIHN0cmVhbSkgLT4gV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmKT4gewor
ICAgIHBlcmZvcm0oW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWVdKEZpbGVTdHJlYW0mIHN0cmVhbSkgLT4gRnVuY3Rpb248dm9pZChGaWxlU3RyZWFt
Q2xpZW50Jik+IHsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSBzdHJlYW0uZ2V0U2l6ZShwYXRo
LCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICByZXR1cm4gW3NpemVdKEZpbGVT
dHJlYW1DbGllbnQmIGNsaWVudCkgewogICAgICAgICAgICAgY2xpZW50LmRpZEdldFNpemUoc2l6
ZSk7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBBc3luY0ZpbGVTdHJlYW06OmdldFNpemUoY29u
c3QgU3RyaW5nJiBwYXRoLCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3QKIHZvaWQgQXN5
bmNGaWxlU3RyZWFtOjpvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBv
ZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAgICAgLy8gRklYTUU6IEV4cGxpY2l0IHJldHVy
biB0eXBlIGhlcmUgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGRlZmljaWVuY3kgaW4gdGhlIFdpbmRv
d3MgY29tcGlsZXIgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgotICAgIHBlcmZvcm0oW3Bh
dGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBvZmZzZXQsIGxlbmd0aF0oRmlsZVN0cmVhbSYgc3Ry
ZWFtKSAtPiBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPiB7CisgICAgcGVy
Zm9ybShbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIG9mZnNldCwgbGVuZ3RoXShGaWxlU3Ry
ZWFtJiBzdHJlYW0pIC0+IEZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPiB7CiAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IHN0cmVhbS5vcGVuRm9yUmVhZChwYXRoLCBvZmZzZXQsIGxlbmd0
aCk7CiAgICAgICAgIHJldHVybiBbc3VjY2Vzc10oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KSB7
CiAgICAgICAgICAgICBjbGllbnQuZGlkT3BlbihzdWNjZXNzKTsKQEAgLTE2OSw3ICsxNjksNyBA
QCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6Y2xvc2UoKQogCiB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6
cmVhZCh2b2lkKiBidWZmZXIsIGludCBsZW5ndGgpCiB7Ci0gICAgcGVyZm9ybShbYnVmZmVyLCBs
ZW5ndGhdKEZpbGVTdHJlYW0mIHN0cmVhbSkgLT4gV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVTdHJl
YW1DbGllbnQmKT4geworICAgIHBlcmZvcm0oW2J1ZmZlciwgbGVuZ3RoXShGaWxlU3RyZWFtJiBz
dHJlYW0pIC0+IEZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPiB7CiAgICAgICAgIGlu
dCBieXRlc1JlYWQgPSBzdHJlYW0ucmVhZChidWZmZXIsIGxlbmd0aCk7CiAgICAgICAgIHJldHVy
biBbYnl0ZXNSZWFkXShGaWxlU3RyZWFtQ2xpZW50JiBjbGllbnQpIHsKICAgICAgICAgICAgIGNs
aWVudC5kaWRSZWFkKGJ5dGVzUmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0FzeW5jRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uaAppbmRleCBlYmJhN2YyMmMzYmFkM2IzNDNhOGYxOGU1ZjU4MzBjOWQ2Mzg0ZDA4Li42
NDUyOGUzOTQ4MDM2ZmZkYTM4ZTE5MzIzZWZiZjZiNmUzYTgxZTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2b2lkIHBlcmZvcm0oV1RGOjpGdW5jdGlv
bjxXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+JiYp
OworICAgIHZvaWQgcGVyZm9ybShGdW5jdGlvbjxGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGll
bnQmKT4oRmlsZVN0cmVhbSYpPiYmKTsKIAogICAgIHN0cnVjdCBJbnRlcm5hbHM7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEludGVybmFscz4gbV9pbnRlcm5hbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNw
cAppbmRleCA4YmY3NGNlMzMxZmNhOGNjOGI0NmE1MzM0YjI2MDUwZTNkYmEwM2U3Li45NzQ0YjAx
NTdhZTExYzExMGNkOGMyODllNTI3Y2JmYTAyYzEwZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKQEAgLTExNSw3ICsxMTUsNyBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmllZCgpIGNvbnN0
CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNl
RXBvY2goKS5taWxsaXNlY29uZHNBczxpbnQ2NF90PigpOwogCi0gICAgcmV0dXJuIFdURjo6dGlt
ZUNsaXAocmVzdWx0KTsKKyAgICByZXR1cm4gdGltZUNsaXAocmVzdWx0KTsKIH0KIAogdm9pZCBG
aWxlOjpjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5nJiBlZmZl
Y3RpdmVDb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDE1N2ExZTc4N2M5NjUzMjEyNmQ5MWU1YjM3YmU2NDU3
OGVlMzQ3YzkuLjEyZGRlZmVkNGY2MGU3NGMxNjFjNjA5MTUyMjRkZWU4YjRlNjZmNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApA
QCAtNDksOCArNDksNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAotdXNpbmcgV1RGOjpUaHJlYWRT
cGVjaWZpYzsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBCbG9iVXJsT3JpZ2luTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1
dG9maWxsLmNwcAppbmRleCA1YWUyMGNjNTRkZTcyMzQzYmEzYjM3N2YyYTNjZjA4ZWY3M2Y0NmZj
Li4wZTczZDI5YTIzNTIzNjllMWQ5NTlmZjllY2NlOTU3ODRlZjkyNjVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0F1dG9maWxsLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIEF1dG9maWxsRGF0YSBBdXRvZmlsbERh
dGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJv
CiAKICAgICAgICAgLy8gNC4gTGV0IElETCB2YWx1ZSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBj
b250YWN0LCBhIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXIsIGFuZCB0aGUgcHJldmlvdXMKICAgICAg
ICAgLy8gdmFsdWUgb2YgSURMIHZhbHVlICh3aGljaCBhdCB0aGlzIHBvaW50IHdpbGwgYWx3YXlz
IGJlIGZpZWxkKS4KLSAgICAgICAgaWRsVmFsdWUgPSBXVEY6Om1ha2VTdHJpbmcoY29udGFjdCwg
IiAiLCBpZGxWYWx1ZSk7CisgICAgICAgIGlkbFZhbHVlID0gbWFrZVN0cmluZyhjb250YWN0LCAi
ICIsIGlkbFZhbHVlKTsKIAogICAgICAgICAvLyA1LiBJZiB0aGUgaW5kZXh0aCBlbnRyeSBpbiB0
b2tlbnMgaXMgdGhlIGZpcnN0IGVudHJ5LCB0aGVuIHNraXAgdG8gdGhlIHN0ZXAgbGFiZWxlZCBk
b25lLgogICAgICAgICBpZiAoaW5kZXggPT0gMCkKQEAgLTI4OSw3ICsyODksNyBAQCBBdXRvZmls
bERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25z
dCBIVE1MRm9ybUNvbnRybwogICAgICAgICAvLyA0LiBMZXQgSURMIHZhbHVlIGJlIHRoZSBjb25j
YXRlbmF0aW9uIG9mIG1vZGUsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwgYW5kIHRoZSBwcmV2
aW91cwogICAgICAgICAvLyB2YWx1ZSBvZiBJREwgdmFsdWUgKHdoaWNoIGF0IHRoaXMgcG9pbnQg
d2lsbCBlaXRoZXIgYmUgZmllbGQgb3IgdGhlIGNvbmNhdGVuYXRpb24gb2YgY29udGFjdCwKICAg
ICAgICAgLy8gYSBzcGFjZSwgYW5kIGZpZWxkKS4KLSAgICAgICAgaWRsVmFsdWUgPSBXVEY6Om1h
a2VTdHJpbmcobW9kZSwgIiAiLCBpZGxWYWx1ZSk7CisgICAgICAgIGlkbFZhbHVlID0gbWFrZVN0
cmluZyhtb2RlLCAiICIsIGlkbFZhbHVlKTsKIAogICAgICAgICAvLyA1LiBJZiB0aGUgaW5kZXh0
aCBlbnRyeSBpbiB0b2tlbnMgaXMgdGhlIGZpcnN0IGVudHJ5LCB0aGVuIHNraXAgdG8gdGhlIHN0
ZXAgbGFiZWxlZCBkb25lLgogICAgICAgICBpZiAoaW5kZXggPT0gMCkKQEAgLTMxOCw3ICszMTgs
NyBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9s
RWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogCiAgICAgLy8gMjAuIExldCBJREwgdmFsdWUg
YmUgdGhlIGNvbmNhdGVuYXRpb24gb2Ygc2VjdGlvbiwgYSBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVy
LCBhbmQgdGhlIHByZXZpb3VzCiAgICAgLy8gdmFsdWUgb2YgSURMIHZhbHVlLgotICAgIGlkbFZh
bHVlID0gV1RGOjptYWtlU3RyaW5nKHNlY3Rpb24sICIgIiwgaWRsVmFsdWUpOworICAgIGlkbFZh
bHVlID0gbWFrZVN0cmluZyhzZWN0aW9uLCAiICIsIGlkbFZhbHVlKTsKIAogICAgIHJldHVybiB7
IGZpZWxkLCBpZGxWYWx1ZSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Ub2tlbkxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKaW5kZXgg
NDZiODU5ODk5ZjEyNDk1MjM1MTNjZTc0ZmVkNDk5OWYzNGIwZGQ2OC4uNmI3OGM2ODdjYWI3OTVj
YzA4MmZjMjY2YjU2MzU2ODVlYTI0MzBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01Ub2tlbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5o
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVRva2VuTGlz
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNpbmcgSXNT
dXBwb3J0ZWRUb2tlbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjxib29sKERvY3VtZW50JiwgU3Ry
aW5nVmlldyk+OworICAgIHVzaW5nIElzU3VwcG9ydGVkVG9rZW5GdW5jdGlvbiA9IEZ1bmN0aW9u
PGJvb2woRG9jdW1lbnQmLCBTdHJpbmdWaWV3KT47CiAgICAgRE9NVG9rZW5MaXN0KEVsZW1lbnQm
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBJc1N1cHBvcnRlZFRva2VuRnVu
Y3Rpb24mJiBpc1N1cHBvcnRlZFRva2VuID0geyB9KTsKIAogICAgIHZvaWQgYXNzb2NpYXRlZEF0
dHJpYnV0ZVZhbHVlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBlNmFiMGVjNmM1OTA2YWQ3YmI2M2YyODk1MmY2
MzBlODlmNmZiN2ZhLi4xZTg1YmQ3M2E2ODc1NzllNzMzNmRlNGQ1N2IwZWFhMmVjMTExMjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTY4LDcgKzY4LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTEltYWdlRWxlbWVudDo6SFRNTElt
YWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQotICAgICwgbV9pbWFnZUxvYWRlcihXVEY6Om1ha2VVbmlxdWU8SFRNTEltYWdlTG9h
ZGVyPigqdGhpcykpCisgICAgLCBtX2ltYWdlTG9hZGVyKG1ha2VVbmlxdWU8SFRNTEltYWdlTG9h
ZGVyPigqdGhpcykpCiAgICAgLCBtX2Zvcm0obnVsbHB0cikKICAgICAsIG1fZm9ybVNldEJ5UGFy
c2VyKGZvcm0pCiAgICAgLCBtX2NvbXBvc2l0ZU9wZXJhdG9yKENvbXBvc2l0ZU9wZXJhdG9yOjpT
b3VyY2VPdmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
Y2I3YjY5ZjU5YzUwZWE1NDdjNDdhMjgyNDNkMDJlZTA0N2Q0ZGY0Ni4uZmYzNDZmMjVmNzVlNGM1
OGViYThlNmY3Y2U4YWQxYTA3Yjc1ZmYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC02NDc5LDcgKzY0NzksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldFByZXBhcmVkVG9SZXR1cm5WaWRlb0xheWVyVG9JbmxpbmUoYm9vbCB2YWx1ZSkKICAgICB9
CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhl
bihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAg
ICAgQVNTRVJUKCFtX3ByZXBhcmVkRm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXIpOwpAQCAtNjUx
MSw3ICs2NTExLDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6
OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogICAgIG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCA2MTJlZmM1OGMyYTc5YTIwZDFmMmFlOWEzNTNiMGYzMDQ4NzgxMmNmLi45
NjA4NGEyNzA3MGQ5YzBjY2E5ZDUxZTY3N2E5NzM2YjAxYjRmNDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTgwLDEwICsxODAsMTAgQEAgcHVibGljOgogICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICBib29sIGlzVmlkZW9M
YXllcklubGluZSgpOwogICAgIHZvaWQgc2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lu
bGluZShib29sKTsKLSAgICB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworICAgIHZvaWQg
d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIgPSBbXSB7IH0pOwogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkK
ICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIo
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtd
IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10g
eyB9KTsKICNpZmRlZiBfX09CSkNfXwogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVl
bkxheWVyKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQog
I2VuZGlmCkBAIC05MjYsNyArOTI2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNhcHRp
b25Db250YWluZXIoKTsKICAgICB2b2lkIGVuc3VyZU1lZGlhQ29udHJvbHNTaGFkb3dSb290KCk7
CiAKLSAgICB1c2luZyBKU1NldHVwRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPGJvb2woSlNET01H
bG9iYWxPYmplY3QmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgU2NyaXB0Q29udHJvbGxlciYsIERP
TVdyYXBwZXJXb3JsZCYpPjsKKyAgICB1c2luZyBKU1NldHVwRnVuY3Rpb24gPSBGdW5jdGlvbjxi
b29sKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIFNjcmlwdENvbnRy
b2xsZXImLCBET01XcmFwcGVyV29ybGQmKT47CiAgICAgYm9vbCBzZXR1cEFuZENhbGxKUyhjb25z
dCBKU1NldHVwRnVuY3Rpb24mKTsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCkBAIC0xMDQzLDcgKzEwNDMsNyBAQCBwcml2YXRlOgogICAgIFZpZGVvRnVsbHNjcmVlbk1v
ZGUgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlIHsgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKICAg
ICBib29sIG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3By
ZXBhcmVkRm9ySW5saW5lOwotICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3ByZXBhcmVkRm9y
SW5saW5lQ29tcGxldGlvbkhhbmRsZXI7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3ByZXBhcmVk
Rm9ySW5saW5lQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBib29sIG1fdGVtcG9yYXJpbHlBbGxv
d2luZ0lubGluZVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCmluZGV4IDJjODE3NWI3ZDNjZDZkYTk0MGVhYzg0
ZTM4NTNhYThkMmFjYzFmZTQuLjMyNDE4ODk3MWVhMjMyODI1NjE4NWIyMmM3Yjc5NGIwOTJhMGJm
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBWZWN0b3I8UmVmPE5vZGU+PiBIVE1MU2xvdEVsZW1lbnQ6OmFzc2lnbmVkTm9kZXMo
Y29uc3QgQXNzaWduZWROb2Rlc09wdGlvbnMmIG9wdAogICAgIH0KIAogICAgIGlmIChhdXRvKiBu
b2RlcyA9IGFzc2lnbmVkTm9kZXMoKTsgbm9kZXMpIHsKLSAgICAgICAgcmV0dXJuIFdURjo6Y29t
cGFjdE1hcCgqbm9kZXMsIFtdKGF1dG8mIG5vZGVXZWFrUHRyKSAtPiBSZWZQdHI8Tm9kZT4gewor
ICAgICAgICByZXR1cm4gY29tcGFjdE1hcCgqbm9kZXMsIFtdKGF1dG8mIG5vZGVXZWFrUHRyKSAt
PiBSZWZQdHI8Tm9kZT4gewogICAgICAgICAgICAgcmV0dXJuIG5vZGVXZWFrUHRyLmdldCgpOwog
ICAgICAgICB9KTsKICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgVmVjdG9yPFJlZjxOb2RlPj4g
SFRNTFNsb3RFbGVtZW50Ojphc3NpZ25lZE5vZGVzKGNvbnN0IEFzc2lnbmVkTm9kZXNPcHRpb25z
JiBvcHQKIAogVmVjdG9yPFJlZjxFbGVtZW50Pj4gSFRNTFNsb3RFbGVtZW50Ojphc3NpZ25lZEVs
ZW1lbnRzKGNvbnN0IEFzc2lnbmVkTm9kZXNPcHRpb25zJiBvcHRpb25zKSBjb25zdAogewotICAg
IHJldHVybiBXVEY6OmNvbXBhY3RNYXAoYXNzaWduZWROb2RlcyhvcHRpb25zKSwgW10oYXV0byYm
IG5vZGUpIC0+IFJlZlB0cjxFbGVtZW50PiB7CisgICAgcmV0dXJuIGNvbXBhY3RNYXAoYXNzaWdu
ZWROb2RlcyhvcHRpb25zKSwgW10oYXV0byYmIG5vZGUpIC0+IFJlZlB0cjxFbGVtZW50PiB7CiAg
ICAgICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxFbGVtZW50PihXVEZNb3Zl
KG5vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25UeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uVHlwZS5oCmluZGV4IGNiZjcyNTM1NDMxOGI3
ZjA1Yzg3ZTU4NGJhMWZmZDM1M2ExNTM1ZDIuLmU1MDFmYmQyYmYwZWU0ZmI0OTk4ODcwMDk2MTM5
NzI4OWIzMDY4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25UeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvblR5cGUuaApAQCAtMjksNyArMjks
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoZXNlIHZhbHVlcyBhcmUgYXJyYW5n
ZWQgc28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkIHdpdGggV1RGOjpPcHRpb25TZXQuCisvLyBUaGVz
ZSB2YWx1ZXMgYXJlIGFycmFuZ2VkIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCB3aXRoIE9wdGlv
blNldC4KIC8vIEFuZCB1c2luZyBpdCB3aXRoIE1hcmthYmxlIHZpYSBFbnVtTWFya2FibGVUcmFp
dHMuCiAvLyBTZWUgV0tMaW5rSWNvblR5cGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU3VibWl0RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRFdmVudC5j
cHAKaW5kZXggM2E1NjhlYzYzNGQxMjM5OTQ3YTNmYmFjNzI5ODdjZGRkZmQwYmU4Ni4uYjkwYjBk
NDc5MzMwYjBlOTIyZTNjN2Q2YjY4OGIyMGQ1NzczMWY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9TdWJtaXRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJt
aXRFdmVudC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU3VibWl0RXZlbnQpOwogCi1SZWY8U3VibWl0RXZlbnQ+
IFN1Ym1pdEV2ZW50OjpjcmVhdGUoY29uc3QgV1RGOjpBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYg
aW5pdCkKK1JlZjxTdWJtaXRFdmVudD4gU3VibWl0RXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBJbml0JiYgaW5pdCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdWJt
aXRFdmVudCh0eXBlLCBXVEZNb3ZlKGluaXQpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNl
YXJjaFBhcmFtcy5jcHAKaW5kZXggMDYwNThhNWE2OGVkZjRlMWQzMDQ0ODkwMTU5MDU0NWYxZDc2
ODM4NS4uZDRmYmMxZjA2YWJlYWVjMTEyZGFiZGJjMmQ4NTI5MTUyNDgxN2NkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcApAQCAtMzYsMjIgKzM2LDIyIEBAIFVSTFNl
YXJjaFBhcmFtczo6VVJMU2VhcmNoUGFyYW1zKGNvbnN0IFN0cmluZyYgaW5pdCwgRE9NVVJMKiBh
c3NvY2lhdGVkVVJMKQogewogfQogCi1VUkxTZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhj
b25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFpcnMpCitV
UkxTZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBWZWN0b3I8S2V5VmFsdWVQYWly
PFN0cmluZywgU3RyaW5nPj4mIHBhaXJzKQogICAgIDogbV9wYWlycyhwYWlycykKIHsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IFVSTFNlYXJjaFBhcmFtczo6Y3JlYXRl
KHN0ZDo6dmFyaWFudDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8V1RGOjpLZXlWYWx1
ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiwgU3RyaW5nPiYmIHZhcmlhbnQpCitFeGNlcHRpb25PcjxS
ZWY8VVJMU2VhcmNoUGFyYW1zPj4gVVJMU2VhcmNoUGFyYW1zOjpjcmVhdGUoc3RkOjp2YXJpYW50
PFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4sIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJp
bmc+PiwgU3RyaW5nPiYmIHZhcmlhbnQpCiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtl
VmlzaXRvcihbJl0oY29uc3QgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYgdmVjdG9yKSAtPiBFeGNl
cHRpb25PcjxSZWY8VVJMU2VhcmNoUGFyYW1zPj4gewotICAgICAgICBWZWN0b3I8V1RGOjpLZXlW
YWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYWlyczsKKyAgICAgICAgVmVjdG9yPEtleVZhbHVl
UGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhaXJzOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiB2ZWN0b3IpIHsKICAgICAgICAgICAgIGlmIChwYWlyLnNpemUoKSAhPSAyKQogICAgICAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKICAgICAgICAgICAgIHBh
aXJzLmFwcGVuZCh7cGFpclswXSwgcGFpclsxXX0pOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFVSTFNlYXJjaFBhcmFtcyhXVEZNb3ZlKHBhaXJzKSkpOwotICAgIH0s
IFsmXShjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFp
cnMpIC0+IEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiB7CisgICAgfSwgWyZdKGNv
bnN0IFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcGFpcnMpIC0+IEV4Y2Vw
dGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFVSTFNlYXJjaFBhcmFtcyhwYWlycykpOwogICAgIH0sIFsmXShjb25zdCBTdHJpbmcmIHN0
cmluZykgLT4gRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVVJMU2VhcmNoUGFyYW1zKHN0cmluZywgbnVsbHB0cikpOwpAQCAt
MTUxLDE0ICsxNTEsMTQgQEAgdm9pZCBVUkxTZWFyY2hQYXJhbXM6OnVwZGF0ZUZyb21Bc3NvY2lh
dGVkVVJMKCkKICAgICBtX3BhaXJzID0gc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSA/IFdURjo6VVJM
UGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcoc2VhcmNoKS5zdWJzdHJpbmco
MSkpIDogV1RGOjpVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oc2VhcmNoKTsKIH0KIAot
c3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IFVSTFNlYXJj
aFBhcmFtczo6SXRlcmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiBVUkxTZWFyY2hQYXJhbXM6Okl0ZXJhdG9yOjpuZXh0KCkKIHsKICAgICBh
dXRvJiBwYWlycyA9IG1fdGFyZ2V0LT5wYWlycygpOwogICAgIGlmIChtX2luZGV4ID49IHBhaXJz
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIg
PSBwYWlyc1ttX2luZGV4KytdOwotICAgIHJldHVybiBXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcs
IFN0cmluZz4geyBwYWlyLmtleSwgcGFpci52YWx1ZSB9OworICAgIHJldHVybiBLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+IHsgcGFpci5rZXksIHBhaXIudmFsdWUgfTsKIH0KIAogVVJMU2Vh
cmNoUGFyYW1zOjpJdGVyYXRvcjo6SXRlcmF0b3IoVVJMU2VhcmNoUGFyYW1zJiBwYXJhbXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuaAppbmRleCAyZDA2YWRjYzBlMmRiNmQ3MWZk
YzRjNThhYzg4MDQyM2UzZGE0OTc0Li45NTkxNTgzZTA4ZTIwYTRlMjk1OTRiZTg5YzI3YzZiZWZk
YzlkMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmgKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgRE9NVVJMOwogCiBjbGFzcyBVUkxTZWFyY2hQYXJhbXMgOiBwdWJsaWMgUmVm
Q291bnRlZDxVUkxTZWFyY2hQYXJhbXM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IGNyZWF0ZShzdGQ6OnZhcmlhbnQ8VmVjdG9yPFZlY3Rv
cjxTdHJpbmc+PiwgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4sIFN0
cmluZz4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiBj
cmVhdGUoc3RkOjp2YXJpYW50PFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4sIFZlY3RvcjxLZXlWYWx1
ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiwgU3RyaW5nPiYmKTsKICAgICBzdGF0aWMgUmVmPFVSTFNl
YXJjaFBhcmFtcz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBET01VUkwqIGFzc29jaWF0
ZWRVUkwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJh
bXMoc3RyaW5nLCBhc3NvY2lhdGVkVVJMKSk7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAg
ICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRv
cihVUkxTZWFyY2hQYXJhbXMmKTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVl
UGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxLZXlW
YWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBSZWY8VVJMU2VhcmNoUGFyYW1zPiBtX3RhcmdldDsKQEAgLTY0LDEzICs2NCwxMyBAQCBwdWJs
aWM6CiAgICAgSXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJldHVybiBJdGVyYXRvciB7ICp0
aGlzIH07IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYgcGFpcnMoKSBjb25zdCB7IHJldHVybiBtX3BhaXJzOyB9CisgICAg
Y29uc3QgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYWlycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFpcnM7IH0KICAgICBVUkxTZWFyY2hQYXJhbXMoY29uc3QgU3RyaW5nJiwg
RE9NVVJMKik7Ci0gICAgVVJMU2VhcmNoUGFyYW1zKGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVl
UGFpcjxTdHJpbmcsIFN0cmluZz4+Jik7CisgICAgVVJMU2VhcmNoUGFyYW1zKGNvbnN0IFZlY3Rv
cjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpOwogICAgIHZvaWQgdXBkYXRlVVJMKCk7
CiAKICAgICBXZWFrUHRyPERPTVVSTD4gbV9hc3NvY2lhdGVkVVJMOwotICAgIFZlY3RvcjxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fcGFpcnM7CisgICAgVmVjdG9yPEtleVZh
bHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fcGFpcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmgKaW5kZXggMjdmOGIzMjhhMzMzMjAzYzRjMTFhYjIzZTk4ODU4MGMxMWUxMjc4
YS4uMWQ3ZDI0MWQ5NzdhZGI4NzA1NDhmNGQ5ZTI3Nzc0ZWFmYjliNDY0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaApAQCAt
Mjg3LDcgKzI4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWxpZGF0ZUJ1ZmZlclRhcmdldENv
bXBhdGliaWxpdHkoY29uc3QgY2hhciosIEdDR0xlbnVtLCBXZWJHTEJ1ZmZlciopOwogICAgIFdl
YkdMQnVmZmVyKiB2YWxpZGF0ZUJ1ZmZlckRhdGFQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSB1c2FnZSkgZmluYWw7CiAgICAgV2Vi
R0xCdWZmZXIqIHZhbGlkYXRlQnVmZmVyRGF0YVRhcmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDR0xlbnVtIHRhcmdldCkgZmluYWw7Ci0gICAgYm9vbCB2YWxpZGF0ZUFuZENhY2hlQnVm
ZmVyQmluZGluZyhjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKikgZmluYWw7CisgICAgYm9vbCB2
YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciopIGZpbmFs
OwogICAgIEdDR0xpbnQgZ2V0TWF4RHJhd0J1ZmZlcnMoKSBmaW5hbDsKICAgICBHQ0dMaW50IGdl
dE1heENvbG9yQXR0YWNobWVudHMoKSBmaW5hbDsKICAgICBib29sIHZhbGlkYXRlSW5kZXhBcnJh
eUNvbnNlcnZhdGl2ZShHQ0dMZW51bSB0eXBlLCB1bnNpZ25lZCYgbnVtRWxlbWVudHNSZXF1aXJl
ZCkgZmluYWw7CkBAIC0zMjYsNyArMzI2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHZhbGlkYXRl
VGV4U3RvcmFnZUZ1bmNQYXJhbWV0ZXJzKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVs
cywgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKICNlbmRpZgogCi0gICAgdm9pZCB1bmNh
Y2hlRGVsZXRlZEJ1ZmZlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xCdWZmZXIq
KSBmaW5hbDsKKyAgICB2b2lkIHVuY2FjaGVEZWxldGVkQnVmZmVyKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiwgV2ViR0xCdWZmZXIqKSBmaW5hbDsKIAogICAgIGVudW0gY2xhc3MgQ2xlYXJCdWZmZXJD
YWxsZXIgOiB1aW50OF90IHsKICAgICAgICAgQ2xlYXJCdWZmZXJpdiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IGJkOWI3MjdkY2ZkOGE0ZTgwOTNjMWNhOGZi
MmQ1NGE2ZjA5NzFkMzkuLjdjZTAyNzIwM2YxYjJkY2IwOTMzMWViNTNhNTMxMDYxZmY4NDJjZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtNjcsNyArNjcs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3Ry
YWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFw
aGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogCiAgICAgR0NHTGVu
dW0gbV90YXJnZXQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0T2JqZWN0LmgKaW5kZXggZTJkODk2YmYzYjVkMjg0ZmE1YmNkNjU2NTk1ZTA0M2U2
MzQyYTQ4ZC4uNzkwMDhlZjliOWZlMWUzNWQwNTg4ZDFjOTdhMmY3ZDUzYmUzM2M1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJmNvbnRleHQgPT0gbV9jb250ZXh0
OwogICAgIH0KIAotICAgIHZvaWQgZGV0YWNoQ29udGV4dChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJik7CisgICAgdm9pZCBkZXRhY2hDb250ZXh0KGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CiAK
ICAgICBMb2NrJiBvYmplY3RHcmFwaExvY2tGb3JDb250ZXh0KCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAppbmRleCBjNTM4OTM5
MTA5YTk4MDg0MGE3MjE0OGQyM2Y4NzIxMDNlMmJmZWZiLi42ODEyYjQxYjllNTIwNGU5YmI2Mzlk
N2MwNDQwNzUwOGM0NDI4NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5oCkBAIC02MiwxMCArNjIsMTAgQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSW5p
dGlhbGl6ZWQoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbml0aWFsaXpl
ZCgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIG9uRGV0YWNoZWQoY29uc3QgV1RGOjpBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgb25EZXRhY2hlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKikg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dEdMKiwgR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gYXR0YWNobWVudCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVtYmVyc1RvT3Bh
cXVlUm9vdHMoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEpTQzo6QWJzdHJhY3RTbG90Vmlz
aXRvciYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3Rz
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJikgPSAwOwog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTEF0dGFjaG1lbnQoKTsKQEAgLTgxLDkgKzgx
LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXR0YWNobWVudEZvckJvdW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXhUYXJnZXQs
IFdlYkdMVGV4dHVyZSosIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpOwogICAgIHZvaWQg
c2V0QXR0YWNobWVudEZvckJvdW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50LCBXZWJHTFJlbmRlcmJ1ZmZlciopOwogICAgIC8vIElmIGFuIG9iamVjdCBp
cyBhdHRhY2hlZCB0byB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyLCByZW1vdmUgaXQu
Ci0gICAgdm9pZCByZW1vdmVBdHRhY2htZW50RnJvbUJvdW5kRnJhbWVidWZmZXIoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIEdDR0xlbnVtIHRhcmdldCwgV2ViR0xTaGFyZWRPYmplY3QqKTsK
KyAgICB2b2lkIHJlbW92ZUF0dGFjaG1lbnRGcm9tQm91bmRGcmFtZWJ1ZmZlcihjb25zdCBBYnN0
cmFjdExvY2tlciYsIEdDR0xlbnVtIHRhcmdldCwgV2ViR0xTaGFyZWRPYmplY3QqKTsKICAgICAv
LyBJZiBhIGdpdmVuIGF0dGFjaG1lbnQgcG9pbnQgZm9yIHRoZSBjdXJyZW50bHkgYm91bmQgZnJh
bWVidWZmZXIgaXMgbm90IG51bGwsIHJlbW92ZSB0aGUgYXR0YWNoZWQgb2JqZWN0LgotICAgIHZv
aWQgcmVtb3ZlQXR0YWNobWVudEZyb21Cb3VuZEZyYW1lYnVmZmVyKGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpOworICAgIHZv
aWQgcmVtb3ZlQXR0YWNobWVudEZyb21Cb3VuZEZyYW1lYnVmZmVyKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50KTsKICAgICBXZWJHTFNo
YXJlZE9iamVjdCogZ2V0QXR0YWNobWVudE9iamVjdChHQ0dMZW51bSkgY29uc3Q7CiAKICNpZiAh
VVNFKEFOR0xFKQpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAgIEdDR0xlbnVtIGdl
dERyYXdCdWZmZXIoR0NHTGVudW0pOwogCi0gICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290
cyhjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJik7
CisgICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFjdExvY2tlciYs
IEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYpOwogCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgIGJv
b2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQpAQCAtMTI3LDcgKzEyNyw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xGcmFtZWJ1ZmZlcihXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
R3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIFdl
YkdMQXR0YWNobWVudCogZ2V0QXR0YWNobWVudChHQ0dMZW51bSkgY29uc3Q7CiAKQEAgLTE0OSw5
ICsxNDksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QXR0YWNobWVudEludGVybmFsKEdDR0xl
bnVtIGF0dGFjaG1lbnQsIFdlYkdMUmVuZGVyYnVmZmVyKik7CiAgICAgLy8gSWYgYSBnaXZlbiBh
dHRhY2htZW50IHBvaW50IGZvciB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyIGlzIG5v
dAogICAgIC8vIG51bGwsIHJlbW92ZSB0aGUgYXR0YWNoZWQgb2JqZWN0LgotICAgIHZvaWQgcmVt
b3ZlQXR0YWNobWVudEludGVybmFsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHQ0dMZW51
bSBhdHRhY2htZW50KTsKKyAgICB2b2lkIHJlbW92ZUF0dGFjaG1lbnRJbnRlcm5hbChjb25zdCBB
YnN0cmFjdExvY2tlciYsIEdDR0xlbnVtIGF0dGFjaG1lbnQpOwogCi0gICAgdHlwZWRlZiBXVEY6
Okhhc2hNYXA8R0NHTGVudW0sIFJlZlB0cjxXZWJHTEF0dGFjaG1lbnQ+PiBBdHRhY2htZW50TWFw
OworICAgIHR5cGVkZWYgSGFzaE1hcDxHQ0dMZW51bSwgUmVmUHRyPFdlYkdMQXR0YWNobWVudD4+
IEF0dGFjaG1lbnRNYXA7CiAKICAgICBBdHRhY2htZW50TWFwIG1fYXR0YWNobWVudHM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCmluZGV4IGQ2NzIwZTcyNzZlYTJh
ZTk0MmM5ZGI4YTQzMGUxYmJhNWU4MjRmM2IuLjYyYjhmNzQwNzllZGFmNWE2ODgzNmUzMGJjODI4
NThkZmE1NGIwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaApA
QCAtNDksMTAgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgQWJzdHJhY3RMb2NrZXIgYXJn
dW1lbnQgZW5mb3JjZXMgYXQgY29tcGlsZSB0aW1lIHRoYXQgdGhlIG9iamVjdEdyYXBoTG9jawog
ICAgIC8vIGlzIGhlbGQuIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5IGZvciBhbGwgb2JqZWN0IHR5cGVz
LCBidXQgZW5vdWdoIG9mIHRoZW0gdGhhdAogICAgIC8vIGl0J3MgZG9uZSBmb3IgYWxsIG9mIHRo
ZW0uCi0gICAgdm9pZCBkZWxldGVPYmplY3QoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMKik7CisgICAgdm9pZCBkZWxldGVPYmplY3QoY29uc3QgQWJzdHJhY3RM
b2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCopOwogCiAgICAgdm9pZCBvbkF0dGFjaGVkKCkgeyAr
K21fYXR0YWNobWVudENvdW50OyB9Ci0gICAgdm9pZCBvbkRldGFjaGVkKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCopOworICAgIHZvaWQgb25EZXRhY2hlZChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKik7CiAKICAgICAvLyBUaGlz
IGluZGljYXRlcyB3aGV0aGVyIHRoZSBjbGllbnQgc2lkZSBpc3N1ZSBhIGRlbGV0ZSBjYWxsIGFs
cmVhZHksIG5vdAogICAgIC8vIHdoZXRoZXIgdGhlIE9wZW5HTCByZXNvdXJjZSBpcyBkZWxldGVk
LgpAQCAtNzgsNyArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5EZXN0cnVjdG9yKCk7
CiAKICAgICAvLyBkZWxldGVPYmplY3RJbXBsIHNob3VsZCBiZSBvbmx5IGNhbGxlZCBvbmNlIHRv
IGRlbGV0ZSB0aGUgT3BlbkdMIHJlc291cmNlLgotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBs
YXRmb3JtR0xPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVj
dCkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3QgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IDk2ODVh
OGNiY2U1NjhlOTU5ODFkNDdmYmYwNzRiMDk1ZGU2NTZlNTAuLjdiOGViN2QwM2IzNDIxNzFmNmRl
ZDkzYzNmOWRlYTdjMDk5ZDhlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UHJvZ3JhbS5oCkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGluY3JlYXNlTGlu
a0NvdW50KCk7CiAKICAgICBXZWJHTFNoYWRlciogZ2V0QXR0YWNoZWRTaGFkZXIoR0NHTGVudW0p
OwotICAgIGJvb2wgYXR0YWNoU2hhZGVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBXZWJH
TFNoYWRlciopOwotICAgIGJvb2wgZGV0YWNoU2hhZGVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2Nr
ZXImLCBXZWJHTFNoYWRlciopOworICAgIGJvb2wgYXR0YWNoU2hhZGVyKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiwgV2ViR0xTaGFkZXIqKTsKKyAgICBib29sIGRldGFjaFNoYWRlcihjb25zdCBBYnN0
cmFjdExvY2tlciYsIFdlYkdMU2hhZGVyKik7CiAgICAgCiAgICAgdm9pZCBzZXRSZXF1aXJlZFRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoaW50IGNvdW50KQogICAgIHsKQEAgLTg4LDEyICs4
OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3JlcXVpcmVkVHJhbnNmb3JtRmVlZGJh
Y2tCdWZmZXJDb3VudDsKICAgICB9CiAKLSAgICB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3Rz
KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKTsK
KyAgICB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
SlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJik7CiAKIHByaXZhdGU6CiAgICAgV2ViR0xQcm9ncmFt
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1w
bChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRl
eHRHTCopOwogICAgIHZvaWQgY2FjaGVJbmZvSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUXVlcnkuaAppbmRleCA5OTJmN2M4NzhlODgwODhlNDNhZGMxN2RmOTIxNmQ5
NTJhZjE5Nzk2Li45NmFmMzgxYmMwZDY4YjhmMzE5NTdjYmU2N2E3NzU3YThkYTc3MTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0
cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3Jh
cGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wg
bV9pc1Jlc3VsdEF2YWlsYWJsZSB7IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV90YXJnZXQgeyAw
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaApp
bmRleCAxMjRiNDM4Y2M1OWNmZGVjZjNjYzk0ZGY1MmIxNjgzYjEwY2Y0OWRkLi4xYzAyNjc2Zjgw
MzdmMDg2ZmU0YzI3MDJlOGY1NGMxMjY4MmI2NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Jik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tl
ciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250
ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSZW5kZXJi
dWZmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
aW5kZXggOWZmMGE5N2M5M2NlYTc3NWY5M2M4MGZkZDlhNDFiZDAzNThlNzIzYi4uZWNmZjU5MWNj
NjcxMDY2NzE0MWRlY2ViNzM3MDE4NWFiYTIzYzJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTI5
Myw3ICsyOTMsNyBAQCBuYW1lc3BhY2UgewogICAgICAgICBVQ2hhciB0ZW1wID0gMDsKICAgICAg
ICAgc3dpdGNoIChtX3BhcnNlU3RhdGUpIHsKICAgICAgICAgY2FzZSBCZWdpbm5pbmdPZkxpbmU6
Ci0gICAgICAgICAgICBpZiAoV1RGOjppc0FTQ0lJU3BhY2UoYykpIHsKKyAgICAgICAgICAgIGlm
IChpc0FTQ0lJU3BhY2UoYykpIHsKICAgICAgICAgICAgICAgICBlbWl0KGMpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNzc4Miw3ICs3NzgyLDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0
ZWRFdmVudEZvclRlc3RpbmcKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbnN1
cmVOb3ROdWxsKGNvbnN0IFN0cmluZyYgdGV4dCkgY29uc3QKIHsKICAgICBpZiAodGV4dC5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6ZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBm
MDk4ODU3N2IyY2JiMjM0MzhhODczNTcwNTBlZmVkMzUyNzg5Mjg1Li42NTI0YzkxNzM3NTcwOWEy
YzY1MGUyYWI4MTYxMzlkZjUwNTgxNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC01MzcsNyArNTM3LDcg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKEFTQ0lJTGl0
ZXJhbCBleHRlbnNpb25OYW1lTGl0ZXJhbCk7CiAgICAgdm9pZCBsb3NlRXh0ZW5zaW9ucyhMb3N0
Q29udGV4dE1vZGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHVuY2FjaGVEZWxldGVkQnVmZmVyKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBXZWJHTEJ1ZmZlciopOworICAgIHZpcnR1YWwgdm9p
ZCB1bmNhY2hlRGVsZXRlZEJ1ZmZlcihjb25zdCBBYnN0cmFjdExvY2tlciYsIFdlYkdMQnVmZmVy
Kik7CiAKICAgICBib29sIGNvbXBvc2l0aW5nUmVzdWx0c05lZWRVcGRhdGluZygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fY29tcG9zaXRpbmdSZXN1bHRzTmVlZFVwZGF0aW5nOyB9CiAgICAgYm9v
bCBuZWVkc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KQEAgLTU2MCw3ICs1NjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFdlYkdMVmVydGV4
QXJyYXlPYmplY3RCYXNlPiBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdDsKICAgICBSZWZQdHI8
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2U+IG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdDsKIAot
ICAgIHZvaWQgc2V0Qm91bmRWZXJ0ZXhBcnJheU9iamVjdChjb25zdCBXVEY6OkFic3RyYWN0TG9j
a2VyJiwgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UqKTsKKyAgICB2b2lkIHNldEJvdW5kVmVy
dGV4QXJyYXlPYmplY3QoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0QmFzZSopOwogICAgIAogICAgIGNsYXNzIFZlcnRleEF0dHJpYlZhbHVlIHsKICAgICBwdWJs
aWM6CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBIZWxwZXIgZnVu
Y3Rpb24gZm9yIGRlbGV0ZSogKGRlbGV0ZUJ1ZmZlciwgZGVsZXRlUHJvZ3JhbSwgZXRjKSBmdW5j
dGlvbnMuCiAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIGNhbGxlciBzaG91bGQgcmV0dXJuIHdpdGhv
dXQgZnVydGhlciBwcm9jZXNzaW5nLgotICAgIGJvb2wgZGVsZXRlT2JqZWN0KGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBXZWJHTE9iamVjdCopOworICAgIGJvb2wgZGVsZXRlT2JqZWN0KGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgV2ViR0xPYmplY3QqKTsKIAogICAgIC8vIEhlbHBlciBmdW5j
dGlvbiBmb3IgQVBJcyB3aGljaCBjYW4gbGVnYWxseSByZWNlaXZlIG51bGwgb2JqZWN0cywgaW5j
bHVkaW5nCiAgICAgLy8gdGhlIGJpbmQqIGNhbGxzIChiaW5kQnVmZmVyLCBiaW5kVGV4dHVyZSwg
ZXRjLikgYW5kIHVzZVByb2dyYW0uIENoZWNrcyB0aGF0CkBAIC0xMDc5LDcgKzEwNzksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IGJvdW5kIGJ1ZmZlciB0byB0YXJn
ZXQsIG9yIDAgaWYgdGhlIHRhcmdldCBpcyBpbnZhbGlkLgogICAgIHZpcnR1YWwgV2ViR0xCdWZm
ZXIqIHZhbGlkYXRlQnVmZmVyRGF0YVRhcmdldChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xlbnVtIHRhcmdldCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGVBbmRDYWNoZUJ1ZmZl
ckJpbmRpbmcoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciopOworICAgIHZpcnR1YWwgYm9vbCB2
YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciopOwogCiAj
aWYgIVVTRShBTkdMRSkKICAgICAvLyBIZWxwZXJzIGZvciBzaW11bGF0aW5nIHZlcnRleEF0dHJp
YjAuCkBAIC0xMTA4LDcgKzExMDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBHQ0dMaW50
IGdldE1heENvbG9yQXR0YWNobWVudHMoKSA9IDA7CiAKICAgICB2b2lkIHNldEJhY2tEcmF3QnVm
ZmVyKEdDR0xlbnVtKTsKLSAgICB2b2lkIHNldEZyYW1lYnVmZmVyKGNvbnN0IFdURjo6QWJzdHJh
Y3RMb2NrZXImLCBHQ0dMZW51bSwgV2ViR0xGcmFtZWJ1ZmZlciopOworICAgIHZvaWQgc2V0RnJh
bWVidWZmZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHQ0dMZW51bSwgV2ViR0xGcmFtZWJ1ZmZl
ciopOwogCiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVDdXJyZW50RnJhbWVidWZmZXIoKTsKICAg
ICB2b2lkIHJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMU2FtcGxlci5oCmluZGV4IDRlMTBkNzcxNzM1MDEwOWM4OGExOTljNTFlN2YyMWFk
ODA1YTgyYTMuLjg3NTQ5NWZkZTIyNGNiNzZiZTY3ZWNmYWFmOWQ4YTkyOGE2NmE3NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJHTFNhbXBsZXIoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOwotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBH
cmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgK
aW5kZXggOTM0YjNkYzE4YWYzNDdjM2Q1MGZhZTRiMDY1Yzk4MjlmMGJkOTliNi4uZTk0MTEzOTk4
OWVkZmJhM2UzODBmNWQ5OGY4ODk1MTg3M2Q2MmExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFNoYWRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgV2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEdDR0xlbnVtKTsKIAot
ICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3Jh
cGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0
ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBs
YXRmb3JtR0xPYmplY3QpIGZpbmFsOwogCiAgICAgR0NHTGVudW0gbV90eXBlOwogICAgIFN0cmlu
ZyBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U2hhcmVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9i
amVjdC5oCmluZGV4IDBjYjkzNTRhMjIzYmNmOTc0YzQzOTZkZjQ4YWVmNWQ4YjQyMmE4MmIuLmEy
ZTdjYzUyOWM4OGExNjQ3NDI3YWMwOWY3ZTc0ZWNlM2MwOGM2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaApAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBjb250ZXh0R3JvdXAgPT0gbV9jb250ZXh0R3JvdXA7CiAg
ICAgfQogCi0gICAgdm9pZCBkZXRhY2hDb250ZXh0R3JvdXAoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYpOworICAgIHZvaWQgZGV0YWNoQ29udGV4dEdyb3VwKGNvbnN0IEFic3RyYWN0TG9ja2Vy
Jik7CiAKICAgICB2b2lkIGRldGFjaENvbnRleHRHcm91cFdpdGhvdXREZWxldGluZ09iamVjdCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCmluZGV4IDYwYWIwNmE5MjNm
NWUwOTI2Y2M5YmY4NWIwYTA1MWYyZTRkYTgwMWYuLjUwYmUwNDRiYWU2Y2Q5MjdjYmE3Y2UzNjQ3
NmU5ZTJkNDUzMWU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCkBA
IC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgR0NHTGludCBtX3N5bmNTdGF0dXMgPSB7IEdy
YXBoaWNzQ29udGV4dEdMOjpVTlNJR05BTEVEIH07CiAgICAgR0NHTHN5bmMgbV9zeW5jOwogCi0g
ICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFw
aGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVs
ZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwg
UGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCmluZGV4IGE4NWFjNzg4
ZTdmMTc5NzZiZWE1NDY3YzNkMjAxZGM4OGZmZDZlZmUuLjk5NDg2ZWU1MmQ0ODE4NThhNzgzODg5
NjE1ZDFhYmNjOThlNzdmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4
dHVyZS5oCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xUZXh0
dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0
SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3Qg
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBpc1RleHR1cmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJh
bnNmb3JtRmVlZGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2suaAppbmRleCA2MDUxZWRkMGI1ZGI3ODdjNmZmYTRmZDVkZWRmODNlYzliOTJl
Zjc5Li4zNjk3NjZiNDU4YzE4NzY4NDgxMWFmNjE1ZjgxMDAyZTA2ODZmMmVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBhcmUgdGhlIGluZGV4ZWQgYmlu
ZCBwb2ludHMgZm9yIHRyYW5zZm9ybSBmZWVkYmFjayBidWZmZXJzLgogICAgIC8vIFJldHVybnMg
ZmFsc2UgaWYgaW5kZXggaXMgb3V0IG9mIHJhbmdlIGFuZCB0aGUgY2FsbGVyIHNob3VsZAogICAg
IC8vIHN5bnRoZXNpemUgYSBHTCBlcnJvci4KLSAgICB2b2lkIHNldEJvdW5kSW5kZXhlZFRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHQ0dMdWludCBp
bmRleCwgV2ViR0xCdWZmZXIqKTsKKyAgICB2b2lkIHNldEJvdW5kSW5kZXhlZFRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR0NHTHVpbnQgaW5kZXgsIFdlYkdM
QnVmZmVyKik7CiAgICAgYm9vbCBnZXRCb3VuZEluZGV4ZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
cihHQ0dMdWludCBpbmRleCwgV2ViR0xCdWZmZXIqKiBvdXRCdWZmZXIpOwogICAgIAogICAgIGJv
b2wgdmFsaWRhdGVQcm9ncmFtRm9yUmVzdW1lKFdlYkdMUHJvZ3JhbSopIGNvbnN0OwpAQCAtNjcs
NyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFdmVyQmVlbkJvdW5kKCkgeyBtX2hh
c0V2ZXJCZWVuQm91bmQgPSB0cnVlOyB9CiAgICAgCiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFt
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcm9ncmFt
KGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBXZWJHTFByb2dyYW0mKTsKKyAgICB2b2lkIHNl
dFByb2dyYW0oY29uc3QgQWJzdHJhY3RMb2NrZXImLCBXZWJHTFByb2dyYW0mKTsKICAgICAKICAg
ICB2b2lkIHVuYmluZEJ1ZmZlcihjb25zdCBBYnN0cmFjdExvY2tlciYsIFdlYkdMQnVmZmVyJik7
CiAgICAgCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjayhXZWJHTDJSZW5kZXJpbmdDb250ZXh0Jik7CiAKLSAgICB2b2lkIGRlbGV0
ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdM
KiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0KSBvdmVycmlkZTsKICAgICAKICAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fcGF1c2VkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaAppbmRleCBmN2IzNmE5Zjk4ZjJlZDRkZjE1MmY3
Y2NhMzhhNmNkYzcwYmNiYTA0Li44ZDdhZmZjOThiNmMwM2M5NGIzZjUzYzg2NGI1OWM1MDYxN2Zi
MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFy
cmF5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJH
TFZlcnRleEFycmF5T2JqZWN0KCk7CiBwcml2YXRlOgogICAgIFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFR5cGUpOwotICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3Qg
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZp
bmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmgKaW5kZXggYzYx
MzhiYmU2NWU3ZDM5MDRmZmE2MzU1ZTZjY2M2YzU3NzhjODQwNC4uYTMyYzc3YTg1OTlmNzdiMWM0
ODJkY2YzMDhjNTFhYzBiYWZlOTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCkBAIC03MCwyMSArNzAsMjEg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRXZlckJlZW5Cb3VuZCgpIHsgbV9oYXNFdmVyQmVl
bkJvdW5kID0gdHJ1ZTsgfQogCiAgICAgV2ViR0xCdWZmZXIqIGdldEVsZW1lbnRBcnJheUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCk7IH0KLSAg
ICB2b2lkIHNldEVsZW1lbnRBcnJheUJ1ZmZlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwg
V2ViR0xCdWZmZXIqKTsKKyAgICB2b2lkIHNldEVsZW1lbnRBcnJheUJ1ZmZlcihjb25zdCBBYnN0
cmFjdExvY2tlciYsIFdlYkdMQnVmZmVyKik7CiAKICAgICB2b2lkIHNldFZlcnRleEF0dHJpYkVu
YWJsZWQoaW50IGluZGV4LCBib29sIGZsYWcpOwogICAgIGNvbnN0IFZlcnRleEF0dHJpYlN0YXRl
JiBnZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbnQgaW5kZXgpIHsgcmV0dXJuIG1fdmVydGV4QXR0cmli
U3RhdGVbaW5kZXhdOyB9Ci0gICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJTdGF0ZShjb25zdCBXVEY6
OkFic3RyYWN0TG9ja2VyJiwgR0NHTHVpbnQsIEdDR0xzaXplaSwgR0NHTGludCwgR0NHTGVudW0s
IEdDR0xib29sZWFuLCBHQ0dMc2l6ZWksIEdDR0xpbnRwdHIsIGJvb2wsIFdlYkdMQnVmZmVyKik7
Ci0gICAgdm9pZCB1bmJpbmRCdWZmZXIoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIFdlYkdM
QnVmZmVyJik7CisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJTdGF0ZShjb25zdCBBYnN0cmFjdExv
Y2tlciYsIEdDR0x1aW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMYm9vbGVh
biwgR0NHTHNpemVpLCBHQ0dMaW50cHRyLCBib29sLCBXZWJHTEJ1ZmZlciopOworICAgIHZvaWQg
dW5iaW5kQnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgV2ViR0xCdWZmZXImKTsKIAogICAg
IHZvaWQgc2V0VmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2
aXNvcik7CiAKLSAgICB2b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIGFkZE1l
bWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgSlNDOjpBYnN0cmFjdFNs
b3RWaXNpdG9yJik7CiAKICAgICBib29sIGFyZUFsbEVuYWJsZWRBdHRyaWJCdWZmZXJzQm91bmQo
KTsKIHByb3RlY3RlZDoKICAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZShXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiwgVHlwZSk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJh
Y3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRl
ID0gMDsKICNpZiAhVVNFKEFOR0xFKQogICAgIHZvaWQgdXBkYXRlVmVydGV4QXR0cmliMCgpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuY3BwCmluZGV4IDExMGNjNzc1YTRmZDc4ZWEzMjkzNGE1NjAxYjQ5
NWIyZDllMGQ1ZjIuLjcyYjk2ODhlNmY5NWVmYzJjMDA5OWVlYmQ1ZGVjZDQzM2VkNjlhY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM6On5XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkKICAgICBydW5EZXN0cnVjdG9yKCk7CiB9
CiAKLXZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0
M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQordm9pZCBXZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTOjpkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0M2QsIFBsYXRmb3JtR0xPYmplY3Qgb2JqZWN0KQogewogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpEZWZhdWx0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCmlu
ZGV4IDYyYzhmN2MzMmZlNTY1YjZiNTcyYjdmMGRlMTIxZjgzZDZhMzkzMjcuLjFiN2YzYTJhYmYz
ZWM2Y2M0NTg0YTIwMTk5Y2Q2MzQzN2QxYjM1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKQEAgLTM3LDcgKzM3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKTsK
IHByaXZhdGU6CiAgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiwgVHlwZSk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcAppbmRleCAzODRiMDAyNjE0ZmI1N2IwMjljNzhlZmY4MjA4YTczMjE5MTA4NTUx
Li41ZjI2NDc5MmI4NzhhNGZjNmI2YzA5MDk1YmVlZTRjMDYwNGQxZmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTU0Myw3ICs1NDMs
NyBAQCBzdGF0aWMgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21T
dHJpbmcsIFF1YWxpZmllZE5hbWU+IGNyZWF0ZQogICAgIGFkZE5hbWVzV2l0aFByZWZpeChtYXAs
IHhsaW5rTmFtZSwgWExpbmtOYW1lczo6Z2V0WExpbmtBdHRycygpLCBYTGlua05hbWVzOjpYTGlu
a0F0dHJzQ291bnQpOwogICAgIGFkZE5hbWVzV2l0aFByZWZpeChtYXAsIHhtbEF0b20oKSwgWE1M
TmFtZXM6OmdldFhNTEF0dHJzKCksIFhNTE5hbWVzOjpYTUxBdHRyc0NvdW50KTsKIAotICAgIG1h
cC5hZGQoV1RGOjp4bWxuc0F0b20oKSwgWE1MTlNOYW1lczo6eG1sbnNBdHRyKTsKKyAgICBtYXAu
YWRkKHhtbG5zQXRvbSgpLCBYTUxOU05hbWVzOjp4bWxuc0F0dHIpOwogICAgIG1hcC5hZGQoInht
bG5zOnhsaW5rIiwgUXVhbGlmaWVkTmFtZSh4bWxuc0F0b20oKSwgeGxpbmtOYW1lLCBYTUxOU05h
bWVzOjp4bWxuc05hbWVzcGFjZVVSSSkpOwogCiAgICAgcmV0dXJuIG1hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAppbmRleCBlNzgzYTMzMWM3YzEx
NGM0Nzk3ODU0YTFiMjg2MzE3ODZlOTI1NTM2Li5mNmNhZmI3MGY1N2Y5YzUxMjZiMmM1ZjU2MTEw
MTAzMWIyNTFlZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJz
aW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvUGFyc2luZ1V0
aWxpdGllcy5oCkBAIC0xNzQsNyArMTc0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgdW5zaWduZWQgbG93ZXJjYXNlTGV0dGVyc0FycmF5U2l6ZT4gYm9vbCBza2lwRXgKICAg
ICAKICAgICBpZiAocG9zaXRpb24gKyBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoID4gZW5kKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFXVEY6OmVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHBvc2l0aW9uLCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoLCBsb3dlcmNhc2VMZXR0ZXJz
KSkKKyAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvc2l0aW9uLCBsb3dl
cmNhc2VMZXR0ZXJzTGVuZ3RoLCBsb3dlcmNhc2VMZXR0ZXJzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHBvc2l0aW9uICs9IGxvd2VyY2FzZUxldHRlcnNMZW5ndGg7CiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xODYsNyArMTg2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZSwgdW5zaWduZWQgbG93ZXJjYXNlTGV0dGVyc0FycmF5U2l6ZT4gYm9vbCBza2lwRXgKIAogICAg
IGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFXVEY6OmVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGJ1ZmZlci5wb3NpdGlvbigpLCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoLCBsb3dl
cmNhc2VMZXR0ZXJzKSkKKyAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGJ1
ZmZlci5wb3NpdGlvbigpLCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoLCBsb3dlcmNhc2VMZXR0ZXJz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJ1ZmZlciArPSBsb3dlcmNhc2VMZXR0ZXJz
TGVuZ3RoOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WVFRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nh
bm5lci5jcHAKaW5kZXggYTEyMGE5YmZkZTc1ODMyNzdkYzgzMGEyZWJjNGE0Njg3ZWY3NDZiZC4u
NDI3MDdlNjhmMzRjOGE0ZWQ3NjJjNmY1M2VhNTc5MTZiYjcyMmYxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVFNjYW5uZXIuY3BwCkBAIC02MSw5ICs2MSw5IEBAIGJvb2wgVlRUU2Nh
bm5lcjo6c2Nhbihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGNoYXJhY3RlcnNDb3Vu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgbWF0Y2hlZDsKICAgICBpZiAobV9p
czhCaXQpCi0gICAgICAgIG1hdGNoZWQgPSBXVEY6OmVxdWFsKG1fZGF0YS5jaGFyYWN0ZXJzOCwg
Y2hhcmFjdGVycywgY2hhcmFjdGVyc0NvdW50KTsKKyAgICAgICAgbWF0Y2hlZCA9IGVxdWFsKG1f
ZGF0YS5jaGFyYWN0ZXJzOCwgY2hhcmFjdGVycywgY2hhcmFjdGVyc0NvdW50KTsKICAgICBlbHNl
Ci0gICAgICAgIG1hdGNoZWQgPSBXVEY6OmVxdWFsKG1fZGF0YS5jaGFyYWN0ZXJzMTYsIGNoYXJh
Y3RlcnMsIGNoYXJhY3RlcnNDb3VudCk7CisgICAgICAgIG1hdGNoZWQgPSBlcXVhbChtX2RhdGEu
Y2hhcmFjdGVyczE2LCBjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzQ291bnQpOwogICAgIGlmIChtYXRj
aGVkKQogICAgICAgICBhZHZhbmNlKGNoYXJhY3RlcnNDb3VudCk7CiAgICAgcmV0dXJuIG1hdGNo
ZWQ7CkBAIC04MCw5ICs4MCw5IEBAIGJvb2wgVlRUU2Nhbm5lcjo6c2NhblJ1bihjb25zdCBSdW4m
IHJ1biwgY29uc3QgU3RyaW5nJiB0b01hdGNoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ym9vbCBtYXRjaGVkOwogICAgIGlmIChtX2lzOEJpdCkKLSAgICAgICAgbWF0Y2hlZCA9IFdURjo6
ZXF1YWwodG9NYXRjaC5pbXBsKCksIG1fZGF0YS5jaGFyYWN0ZXJzOCwgbWF0Y2hMZW5ndGgpOwor
ICAgICAgICBtYXRjaGVkID0gZXF1YWwodG9NYXRjaC5pbXBsKCksIG1fZGF0YS5jaGFyYWN0ZXJz
OCwgbWF0Y2hMZW5ndGgpOwogICAgIGVsc2UKLSAgICAgICAgbWF0Y2hlZCA9IFdURjo6ZXF1YWwo
dG9NYXRjaC5pbXBsKCksIG1fZGF0YS5jaGFyYWN0ZXJzMTYsIG1hdGNoTGVuZ3RoKTsKKyAgICAg
ICAgbWF0Y2hlZCA9IGVxdWFsKHRvTWF0Y2guaW1wbCgpLCBtX2RhdGEuY2hhcmFjdGVyczE2LCBt
YXRjaExlbmd0aCk7CiAgICAgaWYgKG1hdGNoZWQpCiAgICAgICAgIHNlZWtUbyhydW4uZW5kKCkp
OwogICAgIHJldHVybiBtYXRjaGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRUb2tlbml6ZXIuY3BwCmluZGV4IDU3ZGY2NTMwZTU3NjMyZGM3OTU4OTk0YTRkZTQ5NDcxNWZm
ODUwMWUuLmFhNjE1N2NiYjNjZDIwZGFjZWNmYmMxYWY0OTY2MGM0NTI1NWUxOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJz
Q291bnQ+IEFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbExpdGVyYWwoY29uc3QgU3RyaW5nQnVpbGRl
ciYgcywgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCiB7Ci0gICAg
cmV0dXJuIFdURjo6ZXF1YWwocywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJh
Y3RlcnMpLCBjaGFyYWN0ZXJzQ291bnQgLSAxKTsKKyAgICByZXR1cm4gZXF1YWwocywgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBjaGFyYWN0ZXJzQ291bnQgLSAx
KTsKIH0KIAogc3RhdGljIHZvaWQgYWRkTmV3Q2xhc3MoU3RyaW5nQnVpbGRlciYgY2xhc3Nlcywg
Y29uc3QgU3RyaW5nQnVpbGRlciYgbmV3Q2xhc3MpCkBAIC0xNjcsNyArMTY3LDcgQEAgVGFnU3Rh
dGU6CiAgICAgICAgIFdFQlZUVF9BRFZBTkNFX1RPKFN0YXJ0VGFnQ2xhc3NTdGF0ZSk7CiAgICAg
fSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJy8nKSB7CiAgICAgICAgIFdFQlZUVF9BRFZBTkNFX1RP
KEVuZFRhZ1N0YXRlKTsKLSAgICB9IGVsc2UgaWYgKFdURjo6aXNBU0NJSURpZ2l0KGNoYXJhY3Rl
cikpIHsKKyAgICB9IGVsc2UgaWYgKGlzQVNDSUlEaWdpdChjaGFyYWN0ZXIpKSB7CiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKICAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oVGlt
ZXN0YW1wVGFnU3RhdGUpOwogICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICc+JyB8fCBjaGFy
YWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5oCmluZGV4IDM1NzMyYjE5ODkzN2Y1MDc1MjdmNmFmNjhhOWQz
NDc4YTkwMjY0NGYuLjQwNDFhZGU1ZDA3NjUyZTNkOGU4ZGM3NWI2NDFlMjc4YTMxY2ZkOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmgKQEAgLTgw
LDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICBib29sIG9uY2U7CiAgICAgfTsKIAotICAgIHVz
aW5nIEV2ZW50TGlzdGVuZXJzUmVjb3JkID0gVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmlu
ZywgVmVjdG9yPExpc3RlbmVyRW50cnk+Pj47CisgICAgdXNpbmcgRXZlbnRMaXN0ZW5lcnNSZWNv
cmQgPSBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgVmVjdG9yPExpc3RlbmVyRW50cnk+Pj47
CiAgICAgRXZlbnRMaXN0ZW5lcnNSZWNvcmQgZ2V0RXZlbnRMaXN0ZW5lcnMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEV2ZW50VGFyZ2V0Jik7CiAKICAgICBTdHJpbmcgZGF0YWJhc2VJZChEYXRhYmFz
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRl
eCA2YWY0YThjMGNmMzE3YTQ1NDEyYjEwY2ZkZmQ4MDllMDRmYjdhOWEyLi4zNzJiOTc0OTI5OWRl
MDhjZmZlOWFiNGIzMmNjZWE5ZjkzYWRmMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUmIHBh
cmVudE5vZGUsCiAKICAgICAvLyAxLiBGaXJzdCBzdHJpcCBldmVyeXRoaW5nIGV4Y2VwdCBmb3Ig
dGhlIG5vZGVzIHRoYXQgcmV0YWluLiBDb2xsZWN0IHBlbmRpbmcgbWVyZ2VzLgogICAgIEhhc2hN
YXA8RGlnZXN0KiwgRGlnZXN0Kj4gbWVyZ2VzOwotICAgIEhhc2hTZXQ8c2l6ZV90LCBXVEY6Oklu
dEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+
PiB1c2VkTmV3T3JkaW5hbHM7CisgICAgSGFzaFNldDxzaXplX3QsIEludEhhc2g8c2l6ZV90Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXplX3Q+PiB1c2VkTmV3T3JkaW5h
bHM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvbGRMaXN0LnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGlmIChvbGRNYXBbaV0uZmlyc3QpIHsKICAgICAgICAgICAgIGlmICghdXNlZE5ld09y
ZGluYWxzLmNvbnRhaW5zKG9sZE1hcFtpXS5zZWNvbmQpKSB7CkBAIC0zMzYsNyArMzM2LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4oQ29u
dGFpbmVyTm9kZSYgcGFyZW50Tm9kZSwKICAgICB9CiAKICAgICAvLyBNYXJrIHJldGFpbmVkIG5v
ZGVzIGFzIHVzZWQsIGRvIG5vdCByZXVzZSBub2RlIG1vcmUgdGhhbiBvbmNlLgotICAgIEhhc2hT
ZXQ8c2l6ZV90LCBXVEY6OkludEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czxzaXplX3Q+PiB1c2VkT2xkT3JkaW5hbHM7CisgICAgSGFzaFNldDxzaXplX3Qs
IEludEhhc2g8c2l6ZV90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxzaXpl
X3Q+PiB1c2VkT2xkT3JkaW5hbHM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdMaXN0
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICghbmV3TWFwW2ldLmZpcnN0KQogICAgICAgICAg
ICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaAppbmRleCA3ODRiZjQ4MmZkNjhkYTY4ZTFmMzhmZDVjZDZiY2VkYzg5NzFkZmRhLi4x
MWMyNmNjZmQ4MzZjMjNlYzg1YTUyMDgyZTRlYjRmNGExZmZkZTI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEyMCw3ICsxMjAsNyBA
QCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIGZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBJbnNwZWN0b3I6Okluc3Bl
Y3RvckV2YWx1YXRlSGFuZGxlciBldmFsdWF0ZUhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGZyb250ZW5kSW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKLSAgICBXVEY6OlN0b3B3YXRj
aCYgZXhlY3V0aW9uU3RvcHdhdGNoKCkgY29uc3QgZmluYWw7CisgICAgU3RvcHdhdGNoJiBleGVj
dXRpb25TdG9wd2F0Y2goKSBjb25zdCBmaW5hbDsKICAgICBQYWdlRGVidWdnZXImIGRlYnVnZ2Vy
KCkgb3ZlcnJpZGU7CiAgICAgSlNDOjpWTSYgdm0oKSBvdmVycmlkZTsKIApAQCAtMTM1LDcgKzEz
NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1fZnJv
bnRlbmRSb3V0ZXI7CiAgICAgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvck92ZXJsYXk+IG1f
b3ZlcmxheTsKLSAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwor
ICAgIFJlZjxTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFBhZ2VEZWJ1Z2dl
ciBtX2RlYnVnZ2VyOwogICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aAppbmRleCAxMWIzNTFlODUzNjcyOGMxYTQ2NDM3NmUzYTg5ZWQzYTcxOGZiMzY3Li4yNjc4ODNk
OTkyNTFlMmViNWVlYjQ5MjBjNmMwMDYwNjY1YjZjOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaApAQCAtNDEsOCArNDEsOCBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7Ci11c2luZyBFeHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOwotdXNpbmcgRXh0ZW5zaW9uVGFi
SUQgPSBXVEY6OlN0cmluZzsKK3VzaW5nIEV4dGVuc2lvbklEID0gU3RyaW5nOwordXNpbmcgRXh0
ZW5zaW9uVGFiSUQgPSBTdHJpbmc7CiB9CiAjZW5kaWYKIApAQCAtMTA2LDggKzEwNiw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBvcGVuVVJMRXh0ZXJuYWxs
eShjb25zdCBTdHJpbmcmIHVybCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIGNv
bnN0IFdURjo6U3RyaW5nJiBjb250ZW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmUoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVk
LCBib29sIGZvcmNlU2F2ZUFzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNob3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApp
bmRleCA1MmZmYTI2Nzk2YWYwMjU2MDAwNGZjZTk1ZTZmZmQyZjU1ZmVmN2RhLi4zODUxYmRiM2Vl
ZjRiMjdhMzEzNDRhYjM5YmI3NWI0YmVkZGM2ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnVuY3Rpb25DYWxsSGFuZGxlciBm
dW5jdGlvbkNhbGxIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBmcm9udGVuZEluaXRpYWxpemVkKCkgb3ZlcnJpZGUgeyB9Ci0gICAgV1RGOjpTdG9w
d2F0Y2gmIGV4ZWN1dGlvblN0b3B3YXRjaCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXhlY3V0
aW9uU3RvcHdhdGNoOyB9CisgICAgU3RvcHdhdGNoJiBleGVjdXRpb25TdG9wd2F0Y2goKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsgfQogICAgIFdvcmtlckRlYnVn
Z2VyJiBkZWJ1Z2dlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KICAgICBKU0M6
OlZNJiB2bSgpIG92ZXJyaWRlOwogCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXI7CiAgICAgUmVmPEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1fZnJvbnRlbmRSb3V0
ZXI7CiAgICAgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7Ci0gICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKKyAg
ICBSZWY8U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBXb3JrZXJEZWJ1Z2dl
ciBtX2RlYnVnZ2VyOwogICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAg
ICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV9nbG9iYWxTY29wZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNv
bnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAppbmRleCAxZGJiMzAzZjFlZDkxZDE2
N2UxMGE4ZDRjNTY1OWI1MmI4ZWE3ODljLi5iMWYyNTNiNjdhMDI4YTMzYmUxMjE5ZmM4MTk5Njc5
OTVjYjE5MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIu
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogI2lmIEFTU0VSVF9FTkFC
TEVECiBzdGF0aWMgaW5saW5lIGJvb2wgaGFzVHJhaWxpbmdUZXh0Q29udGVudChjb25zdCBJbmxp
bmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQmIGNvbnRpbnVvdXNDb250ZW50KQog
ewotICAgIGZvciAoYXV0byYgcnVuIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShjb250aW51b3Vz
Q29udGVudC5ydW5zKCkpKSB7CisgICAgZm9yIChhdXRvJiBydW4gOiBtYWtlUmV2ZXJzZWRSYW5n
ZShjb250aW51b3VzQ29udGVudC5ydW5zKCkpKSB7CiAgICAgICAgIGF1dG8mIGlubGluZUl0ZW0g
PSBydW4uaW5saW5lSXRlbTsKICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFy
dCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCAzNjdkNmQ3NmU5MGI0NmMzNWRkNjBk
MWFlNTBiNjAxMzg3Y2YxZTdjLi4wN2FkMWIyM2U5NTc4YWJiYjZmNTM3M2M2OTg0ZjA3ZGU4NGYz
N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZv
aWQgTGluZTo6dmlzdWFsbHlDb2xsYXBzZUhhbmdpbmdPdmVyZmxvdyhJbmxpbmVMYXlvdXRVbml0
IGhvcml6b250YWxBdmFpbGFibGVTCiAgICAgLy8gTGV0J3MganVzdCBmaW5kIHRoZSB0cmFpbGlu
ZyBwcmUtd3JhcCB3aGl0ZXNwYWNlIGNvbnRlbnQgZm9yIG5vdyAoZS5nIGNoZWNrIGlmIHRoZXJl
IGFyZSBtdWx0aXBsZSB0cmFpbGluZyBydW5zIHdpdGgKICAgICAvLyBkaWZmZXJlbnQgc2V0IG9m
IHdoaXRlLXNwYWNlIHZhbHVlcyBhbmQgZGVjaWRlIGlmIHRoZSBpbi1iZXR3ZWVuIHByZS13cmFw
IGNvbnRlbnQgc2hvdWxkIGJlIGNvbGxhcHNlZCBhcyB3ZWxsLikKICAgICBhdXRvIHRyaW1tZWRD
b250ZW50V2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICBmb3IgKGF1dG8mIHJ1biA6
IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UobV9ydW5zKSkgeworICAgIGZvciAoYXV0byYgcnVuIDog
bWFrZVJldmVyc2VkUmFuZ2UobV9ydW5zKSkgewogICAgICAgICBpZiAoIXJ1bi5zaG91bGRUcmFp
bGluZ1doaXRlc3BhY2VIYW5nKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYXV0byB2
aXN1YWxseUNvbGxhcHNpYmxlSW5saW5lSXRlbSA9IHJ1bi5pc0xpbmVTcGFubmluZ0lubGluZUJv
eFN0YXJ0KCkgfHwgcnVuLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxpbmVCb3hFbmQo
KSB8fCBydW4uaGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCk7CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9p
ZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lVGV4
dEl0ZW0sIGNvbnN0IFJlbmRlclMKICAgICAgICAgaWYgKElubGluZVRleHRJdGVtOjpzaG91bGRQ
cmVzZXJ2ZVNwYWNlc0FuZFRhYnMoaW5saW5lVGV4dEl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAvLyBUaGlzIGNvbnRlbnQgaXMgY29sbGFwc2libGUuIExldCdzIGNo
ZWNrIGlmIHRoZSBsYXN0IGl0ZW0gaXMgY29sbGFwc2VkLgotICAgICAgICBmb3IgKGF1dG8mIHJ1
biA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UobV9ydW5zKSkgeworICAgICAgICBmb3IgKGF1dG8m
IHJ1biA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fcnVucykpIHsKICAgICAgICAgICAgIGlmIChydW4u
aXNCb3goKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQtMy8jd2hpdGUtc3BhY2UtcGhhc2UtMQpA
QCAtNDM5LDcgKzQzOSw3IEBAIElubGluZUxheW91dFVuaXQgTGluZTo6cmVtb3ZlQm9yZGVyQW5k
UGFkZGluZ0VuZEZvcklubGluZUJveERlY29yYXRpb25DbG9uZShjb25zCiAKIHZvaWQgTGluZTo6
YWRkVHJhaWxpbmdIeXBoZW4oSW5saW5lTGF5b3V0VW5pdCBoeXBoZW5Mb2dpY2FsV2lkdGgpCiB7
Ci0gICAgZm9yIChhdXRvJiBydW4gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKG1fcnVucykpIHsK
KyAgICBmb3IgKGF1dG8mIHJ1biA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fcnVucykpIHsKICAgICAg
ICAgaWYgKCFydW4uaXNUZXh0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcnVu
LnNldE5lZWRzSHlwaGVuKGh5cGhlbkxvZ2ljYWxXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNmU0Mzg4MGVkYTllNDM0NmE3OTgwMTIxYmVkZmMx
NDgwNTZhMWRjMi4uNTJmYjQ1NmQ4Mjc0NTQxODdiZGNmZTBmODI1MmNlMGQ2OTAxMTZmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMzM1LDcgKzMzNSw3
IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgVXNlZENvbnN0cmFpbnRzJiBs
aW5lQ29uc3RyYWludHMsIGJvb2wgaXNGaXJzCiAgICAgICAgICAgICBzcGFubmluZ0xheW91dEJv
eExpc3QuYXBwZW5kKGFuY2VzdG9yKTsKICAgICAgICAgICAgIGFuY2VzdG9yID0gJmFuY2VzdG9y
LT5wYXJlbnQoKTsKICAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8qIHNwYW5uaW5nSW5saW5l
Qm94IDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShzcGFubmluZ0xheW91dEJveExpc3QpKQorICAg
ICAgICBmb3IgKGF1dG8qIHNwYW5uaW5nSW5saW5lQm94IDogbWFrZVJldmVyc2VkUmFuZ2Uoc3Bh
bm5pbmdMYXlvdXRCb3hMaXN0KSkKICAgICAgICAgICAgIG1fbGluZVNwYW5uaW5nSW5saW5lQm94
ZXMuYXBwZW5kKHsgKnNwYW5uaW5nSW5saW5lQm94LCBJbmxpbmVJdGVtOjpUeXBlOjpJbmxpbmVC
b3hTdGFydCB9KTsKICAgICB9OwogICAgIGNyZWF0ZUxpbmVTcGFubmluZ0lubGluZUJveGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy90YWJsZS9UYWJsZUdyaWQuaAppbmRleCA2OTFmMjI5NTdkODU0YWU2YmI0OGUzNzYxYTk3Njdj
Y2NjN2ZiZTUzLi4xNWVhYTI2ZTI4ZTNhMzQ4YzJjMDA0YWM3MDg1MDZiYzI2NGEzYTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1Rh
YmxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
dGFibGUvVGFibGVHcmlkLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
Um93cyYgcm93cygpIGNvbnN0IHsgcmV0dXJuIG1fcm93czsgfQogICAgIFJvd3MmIHJvd3MoKSB7
IHJldHVybiBtX3Jvd3M7IH0KIAotICAgIHVzaW5nIENlbGxzID0gV1RGOjpMaXN0SGFzaFNldDxz
dGQ6OnVuaXF1ZV9wdHI8Q2VsbD4+OworICAgIHVzaW5nIENlbGxzID0gTGlzdEhhc2hTZXQ8c3Rk
Ojp1bmlxdWVfcHRyPENlbGw+PjsKICAgICBDZWxscyYgY2VsbHMoKSB7IHJldHVybiBtX2NlbGxz
OyB9CiAKICAgICBTbG90KiBzbG90KFNsb3RQb3NpdGlvbik7CkBAIC0yMTcsNyArMjE3LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNTcGFubmVkKFNsb3RQb3NpdGlvbik7CiAKIHByaXZhdGU6Ci0g
ICAgdXNpbmcgU2xvdE1hcCA9IFdURjo6SGFzaE1hcDxTbG90UG9zaXRpb24sIHN0ZDo6dW5pcXVl
X3B0cjxTbG90Pj47CisgICAgdXNpbmcgU2xvdE1hcCA9IEhhc2hNYXA8U2xvdFBvc2l0aW9uLCBz
dGQ6OnVuaXF1ZV9wdHI8U2xvdD4+OwogCiAgICAgQ29sdW1ucyBtX2NvbHVtbnM7CiAgICAgUm93
cyBtX3Jvd3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL3RhYmxlL1RhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwCmluZGV4IDMzYmE1NzEzNjY5ZWU0
ODI5MzQyNWY0M2U2ZjFmODg0MTA0MmVlMDIuLjAyOTYwMGIzMzUyYjNmZWIzZmEwZTliOTAzODkx
OWI2MjQ2YzNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwCkBAIC0xMTUsNyArMTE1
LDcgQEAgaW5saW5lIHN0YXRpYyBHcmlkU3BhY2UmIG9wZXJhdG9yLyhHcmlkU3BhY2UmIGEsIHVu
c2lnbmVkIHZhbHVlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3BhblR5cGU+Ci1zdGF0aWMg
VmVjdG9yPExheW91dFVuaXQ+IGRpc3RyaWJ1dGVBdmFpbGFibGVTcGFjZShjb25zdCBUYWJsZUdy
aWQmIGdyaWQsIExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UsIGNvbnN0IFdURjo6RnVuY3Rpb248
R3JpZFNwYWNlKGNvbnN0IFRhYmxlR3JpZDo6U2xvdCYsIHNpemVfdCk+JiBzbG90U3BhY2UpCitz
dGF0aWMgVmVjdG9yPExheW91dFVuaXQ+IGRpc3RyaWJ1dGVBdmFpbGFibGVTcGFjZShjb25zdCBU
YWJsZUdyaWQmIGdyaWQsIExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UsIGNvbnN0IEZ1bmN0aW9u
PEdyaWRTcGFjZShjb25zdCBUYWJsZUdyaWQ6OlNsb3QmLCBzaXplX3QpPiYgc2xvdFNwYWNlKQog
ewogICAgIGF1dG8mIGNvbHVtbnMgPSBncmlkLmNvbHVtbnMoKTsKICAgICBhdXRvJiByb3dzID0g
Z3JpZC5yb3dzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2Fs
LmNwcAppbmRleCA2OWY1NzQ2MTAzNmNlM2YyZjM2OTM3NTNiZDdjZDZiMzg2MjljZTcxLi40YzQ0
Yzk2YjA0YTFmOWRiNDA4YWE1OWE4YWMyYmNmMDgxY2JkMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2
ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJ
dGVyYXRvckxvZ2ljYWxPcmRlclRyYXZlcnNhbC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgc3RhdGlj
IFRleHRMb2dpY2FsT3JkZXJDYWNoZSBtYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQo
Y29uc3QgUmVuZGVyVGV4dCYKICAgICBpZiAoIXRleHQuY29udGFpbnNSZXZlcnNlZFRleHQoKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gY2FjaGUgPSBXVEY6Om1ha2VVbmlxdWU8
VGV4dExvZ2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1
ZTxUZXh0TG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOwogICAgIGZvciAoYXV0byB0ZXh0Qm94IDog
dGV4dEJveGVzRm9yKHRleHQpKQogICAgICAgICBjYWNoZS0+Ym94ZXMuYXBwZW5kKHRleHRCb3gp
OwogCkBAIC05MSw3ICs5MSw3IEBAIFRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveEluTG9naWNh
bE9yZGVyKGNvbnN0IFRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgVGV4dExvCiAKIHN0YXRpYyBM
aW5lTG9naWNhbE9yZGVyQ2FjaGUgbWFrZUxpbmVMb2dpY2FsT3JkZXJDYWNoZShjb25zdCBMaW5l
SXRlcmF0b3ImIGxpbmUpCiB7Ci0gICAgYXV0byBjYWNoZSA9IFdURjo6bWFrZVVuaXF1ZTxMaW5l
TG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPExp
bmVMb2dpY2FsT3JkZXJDYWNoZURhdGE+KCk7CiAKICAgICBjYWNoZS0+bGluZSA9IGxpbmU7CiAg
ICAgY2FjaGUtPmJveGVzID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGluZSwgW10oYXV0byBm
aXJzdCwgYXV0byBsYXN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggMmNj
YjU3NjAzMDhiNDJiNjU3ZDY3MTA3ZGZmMWFkZmU5ZDE5MWQ1Ny4uNDY5MzQ0NTRmNmQ3ODVhMDg3
YWZhZWRhOTE2ZThjYmZkODg0NjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApA
QCAtNTc2LDggKzU3Niw4IEBAIE9wdGlvblNldDxBdm9pZGFuY2VSZWFzb24+IGNhblVzZUZvckxp
bmVMYXlvdXRXaXRoUmVhc29uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYKICNpZm5kZWYgTkRFQlVH
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29t
LmFwcGxlLldlYktpdC5zaG93TW9kZXJuTGluZUxheW91dENvdmVyYWdlIiwgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+IHsgcHJpbnRNb2Rlcm5MaW5lTGF5b3V0Q292ZXJhZ2UgfSk7Ci0gICAgICAgIFBB
TDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygiY29tLmFwcGxlLldlYktpdC5zaG93TW9kZXJuTGlu
ZUxheW91dFJlYXNvbnMiLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4geyBwcmludE1vZGVybkxpbmVM
YXlvdXRCbG9ja0xpc3QgfSk7CisgICAgICAgIFBBTDo6cmVnaXN0ZXJOb3RpZnlDYWxsYmFjaygi
Y29tLmFwcGxlLldlYktpdC5zaG93TW9kZXJuTGluZUxheW91dENvdmVyYWdlIiwgRnVuY3Rpb248
dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dENvdmVyYWdlIH0pOworICAgICAgICBQQUw6
OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVybkxpbmVM
YXlvdXRSZWFzb25zIiwgRnVuY3Rpb248dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dEJs
b2NrTGlzdCB9KTsKICAgICB9KTsKICNlbmRpZgogICAgIE9wdGlvblNldDxBdm9pZGFuY2VSZWFz
b24+IHJlYXNvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0SXRlcmF0b3IuaAppbmRleCA2MWMwZDYxZDZmMTgzZTZkMjZjY2U2MWE2NGRlMGNmM2E2YjIz
ODIwLi4wZWIwYmYyMjk5NDkwZTlmZTY4YWFiYzg4MjkyZGE5MDFlZTI3NGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmgKQEAgLTUy
LDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBUKiBtX2N1cnJlbnQ7CiB9OwogCi0vLyBT
aW1pbGFyIHRvIFdURjo6aXM8PigpIGJ1dCB3aXRob3V0IHRoZSBzdGF0aWNfYXNzZXJ0KCkgbWFr
aW5nIHN1cmUgdGhlIGNoZWNrIGlzIG5lY2Vzc2FyeS4KKy8vIFNpbWlsYXIgdG8gaXM8PigpIGJ1
dCB3aXRob3V0IHRoZSBzdGF0aWNfYXNzZXJ0KCkgbWFraW5nIHN1cmUgdGhlIGNoZWNrIGlzIG5l
Y2Vzc2FyeS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogaW5saW5lIGJvb2wg
aXNMYXlvdXRCb3hPZlR5cGUoY29uc3QgVSYgbGF5b3V0Qm94KSB7IHJldHVybiBUeXBlQ2FzdFRy
YWl0czxjb25zdCBULCBjb25zdCBVPjo6aXNPZlR5cGUobGF5b3V0Qm94KTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaAppbmRleCBk
NWY3NDZhYWIxNWRiYzIxMjQ4Y2UyNDgxNmM5ZWVmNDkzZTA2Y2Y0Li4xYTI3MzZjMWI5YTQ4NmY4
YWJkM2Y3MzU0MDVhYTc3NzdjNDg1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRG9j
dW1lbnRMb2FkZXI7CiBjbGFzcyBBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyIGZpbmFsIDogcHJp
dmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiBXVEZfTUFLRV9OT05DT1BZQUJMRShBcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgdHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q+KT4gQ29tcGxldGlvbkhhbmRsZXJUeXBlOworICAgIHR5
cGVkZWYgRnVuY3Rpb248dm9pZCAoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdD4pPiBDb21wbGV0aW9uSGFuZGxlclR5cGU7CiAKICAgICBBcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyKERvY3VtZW50TG9hZGVyJiwgY29uc3QgVVJMJiwgYm9vbCk7CiAgICAgdmly
dHVhbCB+QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggNDYwMDYwYzE4OTdlZTE2OTdiOGRjN2ViYzMyZGY4ODU2
YmNmYThlMS4uYTQzZDRiZmEzZWMyZmIzNTI3ZjVkZmI2MzFjYzUxYWRmNWU0ZTQwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yNDE5LDcgKzI0MTksNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNv
bnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibAogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVM
b2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9
CiAKLVJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFdURjo6U3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCitSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxv
Y2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKICAgICB1
bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAo
IXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiOTI3MzZjY2RjNGUzZDY1NzRjZmJk
NmQxMDY0YzFhNDBhYmJmZGM4Li5lNWE2Y2MzMDFhOTljZDkwNDBiMDNhYjM3YTU1Yzk2MmIwOTY4
NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTYzNCw3ICs2MzQs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQ2xlYXJXaW5kb3dOYW1lKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgRG9jdW1lbnQmIG5ldwogICAgIHJldHVybiAhbmV3RG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5BcyhmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQqIG5ld0RvY3Vt
ZW50LCBib29sIGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbCBjbGVhclNjcmlwdE9iamVjdHMs
IGJvb2wgY2xlYXJGcmFtZVZpZXcsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGhhbmRsZURPTVdp
bmRvd0NyZWF0aW9uKQordm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQqIG5ld0RvY3Vt
ZW50LCBib29sIGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbCBjbGVhclNjcmlwdE9iamVjdHMs
IGJvb2wgY2xlYXJGcmFtZVZpZXcsIEZ1bmN0aW9uPHZvaWQoKT4mJiBoYW5kbGVET01XaW5kb3dD
cmVhdGlvbikKIHsKICAgICBib29sIG5lZWRlZENsZWFyID0gbV9uZWVkc0NsZWFyOwogICAgIG1f
bmVlZHNDbGVhciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBh
ZTNmNmQ2MDZhOTFiOTA5OWRjOTA0YjlkNWM2ODIzMjg2MjE0YjllLi4wNzZjMzM1OGI4Y2FhNmMw
MzQ4YzA1Y2ZjNWFlZTJmMjZjY2I3Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aApAQCAtOTIsNyArOTIsNyBAQCBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiBXRUJDT1JFX0VYUE9S
VCBib29sIGlzQmFja0ZvcndhcmRMb2FkVHlwZShGcmFtZUxvYWRUeXBlKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNSZWxvYWQoRnJhbWVMb2FkVHlwZSk7CiAKLXVzaW5nIENvbnRlbnRQb2xpY3lE
ZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBvbGljeUFjdGlvbiwgUG9saWN5
Q2hlY2tJZGVudGlmaWVyKT47Cit1c2luZyBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9
IEZ1bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPjsKIAog
Y2xhc3MgRnJhbWVMb2FkZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BMb2FkaW5nKFVubG9hZEV2
ZW50UG9saWN5KTsKICAgICB2b2lkIGNsb3NlVVJMKCk7CiAgICAgLy8gRklYTUU6IGNsZWFyKCkg
aXMgdHJ5aW5nIHRvIGRvIHRvbyBtYW55IHRoaW5ncy4gV2Ugc2hvdWxkIGJyZWFrIGl0IGRvd24g
aW50byBzbWFsbGVyIGZ1bmN0aW9ucyAoaWRlYWxseSB3aXRoIGZld2VyIHJhdyBCb29sZWFuIHBh
cmFtZXRlcnMpLgotICAgIHZvaWQgY2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNs
ZWFyV2luZG93UHJvcGVydGllcyA9IHRydWUsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3RzID0gdHJ1
ZSwgYm9vbCBjbGVhckZyYW1lVmlldyA9IHRydWUsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGhh
bmRsZURPTVdpbmRvd0NyZWF0aW9uID0gbnVsbHB0cik7CisgICAgdm9pZCBjbGVhcihEb2N1bWVu
dCogbmV3RG9jdW1lbnQsIGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzID0gdHJ1ZSwgYm9vbCBj
bGVhclNjcmlwdE9iamVjdHMgPSB0cnVlLCBib29sIGNsZWFyRnJhbWVWaWV3ID0gdHJ1ZSwgRnVu
Y3Rpb248dm9pZCgpPiYmIGhhbmRsZURPTVdpbmRvd0NyZWF0aW9uID0gbnVsbHB0cik7CiAKICAg
ICBib29sIGlzTG9hZGluZygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZnJhbWVI
YXNMb2FkZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKaW5kZXggZTc1ODJkODk1ZmRhYTlhNjc1N2Q5ZjIxNjJlY2M1MmQxZTE2NDEwOC4uNGZkNjM3
YTkwMTRhNWQ0MWEyMjZlZTQ1OTE3YjZiM2U5YTc5MGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBlbnVtIGNsYXNzIFVz
ZWRMZWdhY3lUTFMgOiBib29sOwogCiBzdHJ1Y3QgU3RyaW5nV2l0aERpcmVjdGlvbjsKIAotdHlw
ZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlm
aWVyKT4gRnJhbWVQb2xpY3lGdW5jdGlvbjsKK3R5cGVkZWYgRnVuY3Rpb248dm9pZCAoUG9saWN5
QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPiBGcmFtZVBvbGljeUZ1bmN0aW9uOwogCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGUy
ZWNkMWFmYzM1YmE2ZDMxMjM4OGM4MjhlYTRjZTFkZGMyM2FjZmMuLmIwY2I1NmVjMDE3ZTljN2Yx
NzZiZjU3YzJmOGYyOGFjMDFhYTEzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJh
dGVneS5oCkBAIC03NSwxNiArNzUsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmlv
cml0aXplUmVzb3VyY2VMb2Fkcyhjb25zdCBWZWN0b3I8U3VicmVzb3VyY2VMb2FkZXIqPiYpOwog
CiAgICAgdmlydHVhbCBib29sIHVzZVBpbmdMb2FkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHVzaW5nIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKT47CisgICAgdXNp
bmcgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKT47CiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBGZXRjaE9wdGlvbnMmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lJbXBvc2l0aW9uLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7IH0p
ID0gMDsKIAotICAgIHVzaW5nIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJik+OworICAgIHVzaW5nIFByZWNvbm5lY3RD
b21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYpPjsK
ICAgICB2aXJ0dWFsIHZvaWQgcHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwg
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
RW5hYmxlZChib29sKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPbkxpbmUoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoV1RGOjpG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE9ubGluZVN0
YXRlQ2hhbmdlTGlzdGVuZXIoRnVuY3Rpb248dm9pZChib29sKT4mJikgPSAwOwogCiAgICAgdmly
dHVhbCBib29sIHNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGhhdmVQZXJmb3JtZWRTZWN1cml0eUNoZWNrcyhjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAppbmRleCA0ZjIyODgz
MzYzYTBjZTM1YWY1MmE0YjViN2ZlMWYwMWYzNWUzNzg1Li5lNTU1YjI3OTdkOGM1Y2Y3Mjk4ZTc3
MDk5NWQ2YmZkMDBkYWIzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIFNlY29uZHMgdGltZXN0YW1wUmVzb2x1dGlvbiB7IDVfcyB9OwogCi10eXBl
ZGVmIFdURjo6SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgdW5zaWduZWQsIFJlZ2lzdHJhYmxl
RG9tYWluOjpSZWdpc3RyYWJsZURvbWFpbkhhc2gsIEhhc2hUcmFpdHM8UmVnaXN0cmFibGVEb21h
aW4+LCBIYXNoVHJhaXRzPHVuc2lnbmVkPj46OktleVZhbHVlUGFpclR5cGUgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1ZhbHVlOwordHlwZWRlZiBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCB1bnNp
Z25lZCwgUmVnaXN0cmFibGVEb21haW46OlJlZ2lzdHJhYmxlRG9tYWluSGFzaCwgSGFzaFRyYWl0
czxSZWdpc3RyYWJsZURvbWFpbj4sIEhhc2hUcmFpdHM8dW5zaWduZWQ+Pjo6S2V5VmFsdWVQYWly
VHlwZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVmFsdWU7CiAKIHN0YXRpYyB2b2lkIGVuY29kZUhh
c2hTZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCAgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBoYXNoU2V0KQog
ewpAQCAtNDM5LDcgKzQzOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNjcmVlbkFQSU9wdGlvblNl
dChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBPcHRpb25TZXQ8UmVzCiB9CiAjZW5kaWYK
IAotc3RhdGljIGJvb2wgaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFdURjo6U2Vjb25kcyBp
bnRlcmFjdGlvblRpbWVTZWNvbmRzKQorc3RhdGljIGJvb2wgaGFzSGFkUmVjZW50VXNlckludGVy
YWN0aW9uKFNlY29uZHMgaW50ZXJhY3Rpb25UaW1lU2Vjb25kcykKIHsKICAgICByZXR1cm4gaW50
ZXJhY3Rpb25UaW1lU2Vjb25kcyA+IFNlY29uZHMoMCkgJiYgV2FsbFRpbWU6Om5vdygpLnNlY29u
ZHNTaW5jZUVwb2NoKCkgLSBpbnRlcmFjdGlvblRpbWVTZWNvbmRzIDwgMjRfaDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmgKaW5kZXggMTdiOGYwN2ExZDNjNzljMTI3N2U1Y2EwODEyODRiOWEzODIxNTIwZi4u
OWE5NTMwMDg3NjZhODg4NTU2MWIzNDg4ODliOGNlZGEyYjJlYjMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEhhc2hNYXA8U3RyaW5n
LCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqPiBtX2NhY2hlc0luTWVtb3J5OyAvLyBFeGNsdWRlcyBv
YnNvbGV0ZSBjYWNoZSBncm91cHMuCiAKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ry
b3llZDxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT47CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVz
dHJveWVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKaW5kZXggNjA5ZWQxMTE0ZmQxOTk2Y2U4OTczYjc0Yzc5YmM3ZmUwNTI2
ZWQ3Mi4uZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKQEAgLTQxMCw3ICs0MTAsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihjb25zdCBSZQogCiAjZW5kaWYK
IAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShOb2Rl
JiBub2RlLCBXVEY6OkZ1bmN0aW9uPGJvb2wgKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIpCitSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUmIG5vZGUs
IEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4mJiBmcmFtZUZpbHRlcikKIHsKICAgICBGcmFtZSogZnJh
bWUgPSBub2RlLmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtNTAyLDcg
KzUwMiw3IEBAIHN0YXRpYyB2b2lkIGFkZFN1YnJlc291cmNlc0ZvckF0dGFjaG1lbnRFbGVtZW50
c0lmTmVjZXNzYXJ5KEZyYW1lJiBmcmFtZSwgY29uc3QKIAogI2VuZGlmCiAKLVJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcsIEZyYW1lJiBmcmFtZSwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMsIFdURjo6
RnVuY3Rpb248Ym9vbCAoRnJhbWUmKT4mJiBmcmFtZUZpbHRlcikKK1JlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJp
bmcsIEZyYW1lJiBmcmFtZSwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMsIEZ1bmN0aW9uPGJv
b2woRnJhbWUmKT4mJiBmcmFtZUZpbHRlcikKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1l
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNl
VVJMID0gcmVzcG9uc2UudXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXggNjdhZmE4M2RjN2E5YmYyMmY4ZTg5NjUx
ZWU5ZWM0MzkzMmYwNjVlMC4uZDA5ZWM5Zjc1YWJhMTM2YTg2MzM5ZWI0ZDg2YWJkODI3N2M0ZmYw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVkQnVmZmVyJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVz
b3VyY2UsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3Rv
cjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIFdU
Rjo6RnVuY3Rpb248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlJiwg
RnVuY3Rpb248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
RnJvbVNlbGVjdGlvbihGcmFtZSopOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFNpbXBsZVJhbmdlJik7CkBAIC02MSw3ICs2
MSw3IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIE1haW5SZXNvdXJjZVN0YXR1cyB7IFN1YnJlc291
cmNlLCBNYWluUmVzb3VyY2UgfTsKIAotICAgIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcmFtZSYsIGNvbnN0IFZlY3Rv
cjxOb2RlKj4mIG5vZGVzLCBXVEY6OkZ1bmN0aW9uPGJvb2wgKEZyYW1lJik+JiYgZnJhbWVGaWx0
ZXIpOworICAgIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgbWFya3VwU3RyaW5nLCBGcmFtZSYsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBG
dW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIpOwogICAgIHN0YXRpYyBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBjcmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYpOwogICAgIHN0
YXRpYyBSZXNvdXJjZVJlc3BvbnNlIGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tTWFjQXJjaGl2
ZWREYXRhKENGRGF0YVJlZik7CiAgICAgc3RhdGljIFJlc291cmNlUmVzcG9uc2UgY3JlYXRlUmVz
b3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKENGRGF0YVJlZiwgQ0ZTdHJpbmdSZWYg
cmVzcG9uc2VEYXRhVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcAppbmRleCBkMTllOGExMTQzOGU4Zjk1NDM3NGZjM2EwOTNlYTk3NjA3OWI2ZWQ4Li5j
ZThhMDkzOWE1NjNmODlmMzllOWYxYjE2OTMzNGFhZTUwZWNhM2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGlj
IGNvbnN0IGZsb2F0IGNUYXJnZXRQcnVuZVBlcmNlbnRhZ2UgPSAuOTVmOyAvLyBQZXJjZW50YWdl
IG9mIGNhcGFjaXR5IHRvd2EKIAogTWVtb3J5Q2FjaGUmIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24o
KQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlDYWNoZT4gbWVtb3J5
Q2FjaGU7CiAgICAgcmV0dXJuIG1lbW9yeUNhY2hlOwogfQpAQCAtMTE3LDcgKzExNyw3IEBAIGJv
b2wgTWVtb3J5Q2FjaGU6OmFkZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgaWYgKHJl
c291cmNlLnJlc291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKSAhPSAiR0VUIikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHJl
c291cmNlLnVybCgpLCByZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpKTsKIApAQCAtMTY3LDcgKzE2
Nyw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvblN1Y2NlZWRlZChDYWNoZWRSZXNv
dXJjZSYgcmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFs
aWRhdGlvbkZhaWxlZChDYWNoZWRSZXNvdXJjZSYgcmV2YWxpZGF0aW5nUmVzb3VyY2UpCiB7Ci0g
ICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJldmFsaWRhdGlvbiBmYWlsZWQgZm9yICVw
IiwgJnJldmFsaWRhdGluZ1Jlc291cmNlKTsKICAgICBBU1NFUlQocmV2YWxpZGF0aW5nUmVzb3Vy
Y2UucmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7CiAgICAgcmV2YWxpZGF0aW5nUmVzb3VyY2UuY2xl
YXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIENhY2hlZFJlc291
cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwKIAogQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUZvclJl
cXVlc3RJbXBsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVkUmVzb3VyY2VN
YXAmIHJlc291cmNlcykKIHsKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBVUkwgdXJsID0gcmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVySWZOZWVkZWQocmVxdWVzdC51cmwoKSk7CiAKICAgICBhdXRvIGtleSA9IHN0ZDo6bWFr
ZV9wYWlyKHVybCwgcmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpKTsKQEAgLTIxOCw3ICsyMTgsNyBA
QCB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXMoYm9vbCBzaG91bGREZXN0cm95
RGVjb2RlZERhdGFGb3JBbGxMaXZlUmVzbwogICAgIHBydW5lTGl2ZVJlc291cmNlc1RvU2l6ZSh0
YXJnZXRTaXplLCBzaG91bGREZXN0cm95RGVjb2RlZERhdGFGb3JBbGxMaXZlUmVzb3VyY2VzKTsK
IH0KIAotdm9pZCBNZW1vcnlDYWNoZTo6Zm9yRWFjaFJlc291cmNlKGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZChDYWNoZWRSZXNvdXJjZSYpPiYgZnVuY3Rpb24pCit2b2lkIE1lbW9yeUNhY2hlOjpm
b3JFYWNoUmVzb3VyY2UoY29uc3QgRnVuY3Rpb248dm9pZChDYWNoZWRSZXNvdXJjZSYpPiYgZnVu
Y3Rpb24pCiB7CiAgICAgZm9yIChhdXRvJiB1bnByb3RlY3RlZExSVUxpc3QgOiBtX2FsbFJlc291
cmNlcykgewogICAgICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogY29weVRvVmVjdG9yKCp1bnBy
b3RlY3RlZExSVUxpc3QpKQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OmZv
ckVhY2hSZXNvdXJjZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVkUmVzb3VyY2UmKT4m
IGZ1CiAgICAgfQogfQogCi12b2lkIE1lbW9yeUNhY2hlOjpmb3JFYWNoU2Vzc2lvblJlc291cmNl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWNo
ZWRSZXNvdXJjZSYpPiYgZnVuY3Rpb24pCit2b2lkIE1lbW9yeUNhY2hlOjpmb3JFYWNoU2Vzc2lv
blJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgRnVuY3Rpb248dm9pZChD
YWNoZWRSZXNvdXJjZSYpPiYgZnVuY3Rpb24pCiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvblJl
c291cmNlcy5maW5kKHNlc3Npb25JRCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvblJlc291cmNl
cy5lbmQoKSkKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpzZXRDYXBhY2l0
aWVzKHVuc2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVhZEJ5dGVzLCB1bgogCiB2
b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogewotICAg
IEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJFdmljdGluZyByZXNvdXJjZSAlcCBmb3IgJyUu
MjU1cycgZnJvbSBjYWNoZSIsICZyZXNvdXJjZSwgcmVzb3VyY2UudXJsKCkuc3RyaW5nKCkubGF0
aW4xKCkuZGF0YSgpKTsKICAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhhdmUgYWxyZWFkeSBiZWVu
IHJlbW92ZWQgYnkgc29tZW9uZSBvdGhlciB0aGFuIG91ciBjYWxsZXIsCiAgICAgLy8gd2hvIG5l
ZWRlZCBhIGZyZXNoIGNvcHkgZm9yIGEgcmVsb2FkLiBTZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNDc5I2M2Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmgKaW5kZXggNTc0NDdmZjFhZjA0NmM2NDhlODRkOTc2YWJmMDA2MTBiZjAw
MjhkYi4uMTg2MTY2YTE1ZGUxYmUzMjA5MmE4ZTIwMmFkMzg2YTRkMWExNWQ0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTEwMiw4ICsxMDIsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXZhbGlkYXRpb25TdWNjZWVkZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
dmFsaWRhdGluZ1Jlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBy
ZXZhbGlkYXRpb25GYWlsZWQoQ2FjaGVkUmVzb3VyY2UmIHJldmFsaWRhdGluZ1Jlc291cmNlKTsK
IAotICAgIHZvaWQgZm9yRWFjaFJlc291cmNlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChDYWNo
ZWRSZXNvdXJjZSYpPiYpOwotICAgIHZvaWQgZm9yRWFjaFNlc3Npb25SZXNvdXJjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlZFJlc291cmNlJik+Jik7Cisg
ICAgdm9pZCBmb3JFYWNoUmVzb3VyY2UoY29uc3QgRnVuY3Rpb248dm9pZChDYWNoZWRSZXNvdXJj
ZSYpPiYpOworICAgIHZvaWQgZm9yRWFjaFNlc3Npb25SZXNvdXJjZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgRnVuY3Rpb248dm9pZChDYWNoZWRSZXNvdXJjZSYpPiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGVzdHJveURlY29kZWREYXRhRm9yQWxsSW1hZ2VzKCk7CiAKICAgICAvLyBTZXRz
IHRoZSBjYWNoZSdzIG1lbW9yeSBjYXBhY2l0aWVzLCBpbiBieXRlcy4gVGhlc2Ugd2lsbCBob2xk
IG9ubHkgYXBwcm94aW1hdGVseSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9t
YWMvTG9hZGVyTlNVUkxFeHRyYXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVy
TlNVUkxFeHRyYXMuaAppbmRleCAyNzc2ZTJlMDIzOWQ1MDFkNGE4MTJmMTk1YTA5MDc3NzdhYjYy
NTc5Li41ZGI4YzkzNjFmZjA5MDk5NDZhODA5MDYwNjA3ZTljN2Y4MTEyNjQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5oCkBAIC0yOSw1ICsyOSw1
IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9Gb3J3
YXJkLmg+CiAKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhN
SU1FVHlwZShOU1VSTCAqLCBjb25zdCBXVEY6OlN0cmluZyYgTUlNRVR5cGUpOworV0VCQ09SRV9F
WFBPUlQgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKE5TVVJMICosIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUpOwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmZpbGVuYW1l
QnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycyhOU1N0cmluZyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggOGUw
N2NkMTU4Y2E0OWQyYjE4MWI1NTkzNmJhMWNiOGQwYTFkYmZmOC4uZjg5NzU4ZTlkNmM0MDU5ZjQ1
NTI3ZDg3NWZhM2FmYzNlOTZlYjExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTc2Nyw3ICs3NjcsNyBAQCBz
dGF0aWMgU3RyaW5nIHRyYWNrRGlzcGxheU5hbWUoY29uc3QgVHJhY2tCYXNlJiB0cmFjaykKICAg
ICBTdHJpbmcgdHJhY2tMYW5ndWFnZUlkZW50aWZpZXIgPSB0cmFjay52YWxpZEJDUDQ3TGFuZ3Vh
Z2UoKTsKIAogICAgIGF1dG8gcHJlZmVycmVkTGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1
YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1YWdlczo6Tm8pOwotICAgIGF1dG8gZGVmYXVsdExhbmd1
YWdlID0gIXByZWZlcnJlZExhbmd1YWdlcy5pc0VtcHR5KCkgPyBwcmVmZXJyZWRMYW5ndWFnZXNb
MF0gOiBlbXB0eVN0cmluZygpOyAvLyBUaGlzIG1hdGNoZXMgYFdURjo6ZGVmYXVsdExhbmd1YWdl
YC4KKyAgICBhdXRvIGRlZmF1bHRMYW5ndWFnZSA9ICFwcmVmZXJyZWRMYW5ndWFnZXMuaXNFbXB0
eSgpID8gcHJlZmVycmVkTGFuZ3VhZ2VzWzBdIDogZW1wdHlTdHJpbmcoKTsgLy8gVGhpcyBtYXRj
aGVzIGBkZWZhdWx0TGFuZ3VhZ2VgLgogICAgIGF1dG8gY3VycmVudExvY2FsZSA9IGFkb3B0Q0Yo
Q0ZMb2NhbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGVmYXVsdExhbmd1YWdlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICBhdXRvIGxvY2FsZUlkZW50aWZpZXIgPSBhZG9wdENG
KENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdHJhY2tMYW5ndWFnZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSkpOwogICAgIFN0cmluZyBsYW5ndWFnZURpc3BsYXlOYW1lID0gYWRvcHRDRihDRkxvY2Fs
ZUNvcHlEaXNwbGF5TmFtZUZvclByb3BlcnR5VmFsdWUoY3VycmVudExvY2FsZS5nZXQoKSwga0NG
TG9jYWxlTGFuZ3VhZ2VDb2RlLCBsb2NhbGVJZGVudGlmaWVyLmdldCgpKSkuZ2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBjY2JkZmE0OTYzZTQwMzk2Yzc5ZWE5NjM5Y2I1
YTA3OWI0ZjNlZDI2Li4yM2E1OGJmOGI4M2NlMmY1NmJlMDIxNjJkYjU3ODRiYTczODFmM2UwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTMyOSw4ICszMjksOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoY29uc3QgVGV4dEluZGljYXRvckRh
dGEmKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lJiwg
RmlsZUNob29zZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dTaGFyZVNoZWV0KFNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y2FsbGJhY2spIHsgY2FsbGJhY2soZmFsc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb250
YWN0UGlja2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29udGFjdEluZm8+PiYmKT4mJiBjYWxsYmFj
aykgeyBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dTaGFy
ZVNoZWV0KFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29udGFjdFBpY2tlcihjb25zdCBDb250YWN0c1JlcXVlc3REYXRhJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb250YWN0SW5mbz4+JiYpPiYmIGNhbGxi
YWNrKSB7IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7IH0KICAgICAKICAgICAvLyBBc3luY2hyb25v
dXMgcmVxdWVzdCB0byBsb2FkIGFuIGljb24gZm9yIHNwZWNpZmllZCBmaWxlbmFtZXMuCiAgICAg
dmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxl
SWNvbkxvYWRlciYpID0gMDsKQEAgLTQxOSw3ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihNZWRpYVNlc3Npb25JZGVudGlm
aWVyKSB7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdKGJvb2wpIHsgfSkgeyBjb21wbGV0
aW9uSGFuZGxlcih0cnVlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10oYm9vbCkgeyB9KSB7IGNvbXBsZXRpb25I
YW5kbGVyKHRydWUpOyB9CiAgICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01v
ZGVXaXRob3V0QW5pbWF0aW9uKEhUTUxWaWRlb0VsZW1lbnQmLCBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0Z1
bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkgeyByZXR1cm4gZmFsc2U7IH0gCiAKQEAgLTU1Miwx
MyArNTUyLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVhdGVJY29u
Rm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgPSAwOwogCiAj
aWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCi0gICAgdmlydHVhbCB2
b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWlu
Ki8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCBGcmFtZSYsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgRnJhbWUmLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3BlLCBXVEZN
b3ZlKHRvcEZyYW1lRG9tYWluKSwgV1RGTW92ZShzdWJGcmFtZURvbWFpbikgfSk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJh
bWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIEZyYW1l
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgRnJhbWUmLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBzY29wZSwgV1RGTW92
ZSh0b3BGcmFtZURvbWFpbiksIFdURk1vdmUoc3ViRnJhbWVEb21haW4pIH0pOyB9CiAgICAgdmly
dHVhbCBib29sIGhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIC8qdG9wTGV2ZWxEb21haW4qLywgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIC8qcmVzb3Vy
Y2VEb21haW4qLykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhGcmFtZSYsIGJvb2wgLyogbWF5UHJvbXB0ICovLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1p
c3Npb25TdGF0ZSk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRGV2aWNlT3JpZW50YXRpb25Pck1v
dGlvblBlcm1pc3Npb25TdGF0ZTo6RGVuaWVkKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG91bGRB
bGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKEZyYW1lJiwgYm9vbCAvKiBtYXlQ
cm9tcHQgKi8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGV2aWNlT3JpZW50YXRpb25Pck1vdGlv
blBlcm1pc3Npb25TdGF0ZSk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRGV2aWNlT3JpZW50YXRp
b25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZTo6RGVuaWVkKTsgfQogI2VuZGlmCiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkSW5zZXJ0TWVudUVsZW1lbnQoSFRNTE1lbnVFbGVtZW50JikgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNjljNTE5NWJiNmEwYzQ2ZTRlOTQzMjBlZGMzODZm
OTU3ZDI4NGU3OS4uNWI5ZWVhMDc1MjAxNGFlZGEzZTQyOWJlY2U4MTYxZTdiYzYyMmI4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMjQ5Miw3ICsyNDkyLDcgQEAgYm9vbCBET01X
aW5kb3c6OmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIGNv
bnN0IFN0cmluZyYgdXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmUHRy
PEZyYW1lPj4gRE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVyZXMmIGluaXRp
YWxXaW5kb3dGZWF0dXJlcywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIEZyYW1lJiBmaXJzdEZy
YW1lLCBGcmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChET01XaW5k
b3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+
IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBB
dG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBpbml0aWFsV2luZG93
RmVhdHVyZXMsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBGcmFtZSYgZmlyc3RGcmFtZSwgRnJh
bWUmIG9wZW5lckZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYpPiYgcHJlcGFy
ZURpYWxvZ0Z1bmN0aW9uKQogewogICAgIFJlZlB0ciBhY3RpdmVGcmFtZSA9IGFjdGl2ZVdpbmRv
dy5mcmFtZSgpOwogICAgIGlmICghYWN0aXZlRnJhbWUpCkBAIC0yNjQ0LDcgKzI2NDQsNyBAQCBF
eGNlcHRpb25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbgogICAgIHJldHVybiBuZXdGcmFtZSA/ICZuZXdGcmFtZS0+
d2luZG93UHJveHkoKSA6IFJlZlB0cjxXaW5kb3dQcm94eT4geyBudWxscHRyIH07CiB9CiAKLXZv
aWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93
LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKERPTVdp
bmRvdyYpPiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKQordm9pZCBET01XaW5kb3c6OnNob3dNb2Rh
bERpYWxvZyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0
dXJlc1N0cmluZywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5k
b3csIGNvbnN0IEZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rp
b24pCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggNmFiYjAzNjYyYTdjZDkzZjA5Mjc2
NmZjZmRkZjJmOGNjNmI3ZTEwMi4uMjdjZTIyZTJiZTZlZjU3MTA0MzRmNzRkZTBmZjU5ZmY1MGJh
NDk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4g
b3BlbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3Qg
U3RyaW5nJiB3aW5kb3dGZWF0dXJlc1N0cmluZyk7CiAKLSAgICB2b2lkIHNob3dNb2RhbERpYWxv
Zyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0
cmluZywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlv
bik7CisgICAgdm9pZCBzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93
LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBGdW5jdGlvbjx2b2lkKERPTVdpbmRvdyYp
PiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKTsKIAogICAgIHZvaWQgcHJld2FybUxvY2FsU3RvcmFn
ZUlmTmVjZXNzYXJ5KCk7CiAKQEAgLTQyMCw3ICs0MjAsNyBAQCBwcml2YXRlOgogICAgIFBhZ2Uq
IHBhZ2UoKSBjb25zdDsKICAgICBib29sIGFsbG93ZWRUb0NoYW5nZVdpbmRvd0dlb21ldHJ5KCkg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4gY3JlYXRlV2lu
ZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUs
IGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIEZyYW1lJiBm
aXJzdEZyYW1lLCBGcmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChE
T01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbiA9IG51bGxwdHIpOworICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgV2luZG93RmVhdHVy
ZXMmLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1lJiBv
cGVuZXJGcmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFs
b2dGdW5jdGlvbiA9IG51bGxwdHIpOwogICAgIGJvb2wgaXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhE
T01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogCiAjaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCBmOTZjMzEyOGVkOWZkMzhiMzZlMGU1ZDFhNDE2ZmZkZWZkM2JiMzZjLi5mMTFlMzIx
ZjA1MThmMmIzYjM2MGY3YTQ3ZjcwMWVkZmU0NzdlY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBk
YXRlTW91c2VFdmVudFRhcmdldE5vZGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBOb2Rl
KgogICAgICAgICAgICAgaWYgKGF1dG8gZWxlbWVudFVuZGVyTW91c2UgPSBtX2VsZW1lbnRVbmRl
ck1vdXNlKQogICAgICAgICAgICAgICAgIGVsZW1lbnRVbmRlck1vdXNlLT5kaXNwYXRjaE1vdXNl
RXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50LCBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQsIDAs
IG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlLmdldCgpKTsKIAotICAgICAgICAgICAgZm9yIChhdXRv
JiBjaGFpbiA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UoZW50ZXJlZEVsZW1lbnRzQ2hhaW4pKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNoYWluIDogbWFrZVJldmVyc2VkUmFuZ2UoZW50ZXJl
ZEVsZW1lbnRzQ2hhaW4pKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0NhcHR1cmluZ01vdXNl
RW50ZXJMaXN0ZW5lciB8fCBjaGFpbi0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnBv
aW50ZXJlbnRlckV2ZW50KSB8fCBjaGFpbi0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygp
Lm1vdXNlZW50ZXJFdmVudCkpCiAgICAgICAgICAgICAgICAgICAgIGNoYWluLT5kaXNwYXRjaE1v
dXNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2ZW50LCBldmVudE5hbWVzKCkubW91c2VlbnRlckV2ZW50
LCAwLCBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS5nZXQoKSk7CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMTQ0MTliOTVhM2I2YWRkZDQxNzBhNzFkMmNmMGE3
NDIwYzY4ZDg3Yy4uNTc4ZWNkYjY5M2RmYTUzMTBhNzE2MDZmMDM2YmZmNmQyZmFjNjI0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjUzMSw3ICsyNTMxLDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQb3NpdGlvbiYgb2xkUG9z
aXRpb24sIGNvbnN0IFMKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjphcHBseVJlY3Vyc2l2
ZWx5V2l0aFZpc2libGVSZWN0KGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoRnJhbWVWaWV3JiBm
cmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KT4mIGFwcGx5KQordm9pZCBGcmFt
ZVZpZXc6OmFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoY29uc3QgRnVuY3Rpb248dm9p
ZChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpPiYgYXBw
bHkpCiB7CiAgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCA9IHRoaXMtPndpbmRvd0NsaXBSZWN0
KCk7CiAgICAgYXV0byB2aXNpYmxlUmVjdCA9IHdpbmRvd1RvQ29udGVudHMod2luZG93Q2xpcFJl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZjRjZjdkMDgxNTI4YWFhYTEwYzkyNmJl
OWQ5ZjI3NWZmZTQ4ZjYyZi4uZDY5MzE1ZGVhMGUyNjhjMmFkZDAwYTc1NjUxMTdiMTdlMGZhNzhj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgog
ICAgIEZyYW1lVmlld0xheW91dENvbnRleHQmIGxheW91dENvbnRleHQoKSB7IHJldHVybiBtX2xh
eW91dENvbnRleHQ7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGlkRmlyc3RMYXlvdXQo
KSBjb25zdDsKLSAgICB2b2lkIHF1ZXVlUG9zdExheW91dENhbGxiYWNrKFdURjo6RnVuY3Rpb248
dm9pZCAoKT4mJik7CisgICAgdm9pZCBxdWV1ZVBvc3RMYXlvdXRDYWxsYmFjayhGdW5jdGlvbjx2
b2lkKCk+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBuZWVkc0xheW91dCgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TmVlZHNMYXlvdXRBZnRlclZpZXdDb25maWd1
cmF0aW9uQ2hhbmdlKCk7CkBAIC03NTQsNyArNzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBl
cmZvcm1GaXhlZFdpZHRoQXV0b1NpemUoKTsKICAgICB2b2lkIHBlcmZvcm1TaXplVG9Db250ZW50
QXV0b1NpemUoKTsKIAotICAgIHZvaWQgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChj
b25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlUmVjdCk+Jik7CisgICAgdm9pZCBhcHBseVJlY3Vyc2l2ZWx5V2l0aFZpc2li
bGVSZWN0KGNvbnN0IEZ1bmN0aW9uPHZvaWQoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IElu
dFJlY3QmIHZpc2libGVSZWN0KT4mKTsKICAgICB2b2lkIHJlc3VtZVZpc2libGVJbWFnZUFuaW1h
dGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOwogICAgIHZvaWQgdXBkYXRlU2NyaXB0
ZWRBbmltYXRpb25zQW5kVGltZXJzVGhyb3R0bGluZ1N0YXRlKGNvbnN0IEludFJlY3QmIHZpc2li
bGVSZWN0KTsKIApAQCAtOTE1LDcgKzkxNSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEZsb2F0
UmVjdD4gbV90cmFja2VkUmVwYWludFJlY3RzOwogICAgIAogICAgIEludFJlY3QqIG1fY2FjaGVk
V2luZG93Q2xpcFJlY3QgeyBudWxscHRyIH07Ci0gICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9p
ZCAoKT4+IG1fcG9zdExheW91dENhbGxiYWNrUXVldWU7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZv
aWQoKT4+IG1fcG9zdExheW91dENhbGxiYWNrUXVldWU7CiAKICAgICBMYXlvdXRQb2ludCBtX2xh
eW91dFZpZXdwb3J0T3JpZ2luOwogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gbV9sYXlv
dXRWaWV3cG9ydE92ZXJyaWRlUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlckVudHJ5LmgKaW5kZXggMTEyZTQ2OGVjYzAwZjBlYjc4OTQyZTNkNDZlYjdk
YTNjYTA2YjUxNC4uMTI4NjY3Zjc4NjA1ZmJlNjRhZDgwZjVkNjg0NzRmMzQ3YjVlMmE5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxJbnRlcnNlY3Rpb25PYnNl
cnZlckVudHJ5PiBjcmVhdGUoY29uc3QgSW5pdCYgaW5pdCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBXVEY6OmFkb3B0UmVmKCpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeShpbml0KSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkoaW5p
dCkpOwogICAgIH0KICAgICAKICAgICBkb3VibGUgdGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTJiMmI1ZjYwNWIzN2MxMTg1YmY3NWVlYzNkYzkz
NmE0MmEyNjU5Zi4uMTk0ZjZkOTllOWFlZWY3ODczMTM2NzE1OThkMTc2MmEyYzY1NjhjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdW5zaWduZWQgUGFnZTo6bm9uVXRp
bGl0eVBhZ2VDb3VudCgpCiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50
ZWRMZWFrQ291bnRlciwgcGFnZUNvdW50ZXIsICgiUGFnZSIpKTsKIAotdm9pZCBQYWdlOjpmb3JF
YWNoUGFnZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoUGFnZSYpPiYgZnVuY3Rpb24pCit2b2lk
IFBhZ2U6OmZvckVhY2hQYWdlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUGFnZSYpPiYgZnVuY3Rpb24p
CiB7CiAgICAgZm9yIChhdXRvKiBwYWdlIDogYWxsUGFnZXMoKSkKICAgICAgICAgZnVuY3Rpb24o
KnBhZ2UpOwpAQCAtMTU1Niw3ICsxNTU2LDcgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmco
KQogICAgICAgICBpbml0aWFsRG9jdW1lbnRzLmFwcGVuZChkb2N1bWVudCk7CiAgICAgfSk7CiAK
LSAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3Rl
cCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0
aW9uKSB7CisgICAgYXV0byBydW5Qcm9jZXNzaW5nU3RlcCA9IFsmXShSZW5kZXJpbmdVcGRhdGVT
dGVwIHN0ZXAsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoRG9jdW1lbnQmKT4mIHBlckRvY3VtZW50RnVu
Y3Rpb24pIHsKICAgICAgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCku
cmVtb3ZlKHN0ZXApOwogICAgICAgICBmb3JFYWNoRG9jdW1lbnQocGVyRG9jdW1lbnRGdW5jdGlv
bik7CiAgICAgfTsKQEAgLTE2NTEsNyArMTY1MSw3IEBAIHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0
ZVJlbmRlcmluZygpCiAgICAgfQogI2VuZGlmCiAKLSAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVw
ID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7CisgICAgYXV0byBydW5Qcm9jZXNz
aW5nU3RlcCA9IFsmXShSZW5kZXJpbmdVcGRhdGVTdGVwIHN0ZXAsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoRG9jdW1lbnQmKT4mIHBlckRvY3VtZW50RnVuY3Rpb24pIHsKICAgICAgICAgbV9yZW5kZXJp
bmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKHN0ZXApOwogICAgICAgICBmb3JF
YWNoRG9jdW1lbnQocGVyRG9jdW1lbnRGdW5jdGlvbik7CiAgICAgfTsKQEAgLTI1NjcsNyArMjU2
Nyw3IEBAIHZvaWQgUGFnZTo6ZGVjcmVtZW50TmVzdGVkUnVuTG9vcENvdW50KCkKICAgICB9CiB9
CiAKLXZvaWQgUGFnZTo6d2hlblVubmVzdGVkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxi
YWNrKQordm9pZCBQYWdlOjp3aGVuVW5uZXN0ZWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNr
KQogewogICAgIEFTU0VSVCghbV91bm5lc3RDYWxsYmFjayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXgg
OWY1MDQ1ODkyMDFlMDk1MjJmMWNmNDIyYjcyOTY3Yzc1NjA5ZjYxZS4uNTNmNjEzNzdhYzRkYmJk
OTUyOTJhMjY2YjE3ZmRhMjkxNzAxZTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI5NCw3ICsyOTQs
NyBAQCBwdWJsaWM6CiAgICAgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5JiBicm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkoKSB7IHJldHVybiBtX2Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KFJlZjxCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnk+JiYpOyAvLyBPbmx5IHVzZWQgYnkgV2ViS2l0TGVnYWN5Lgog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaFBhZ2UoY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKFBhZ2UmKT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBm
b3JFYWNoUGFnZShjb25zdCBGdW5jdGlvbjx2b2lkKFBhZ2UmKT4mKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdW5zaWduZWQgbm9uVXRpbGl0eVBhZ2VDb3VudCgpOwogCiAgICAgdW5zaWdu
ZWQgc3ViZnJhbWVDb3VudCgpIGNvbnN0OwpAQCAtMzAyLDcgKzMwMiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGluY3JlbWVudE5lc3RlZFJ1bkxvb3BDb3VudCgpOwogICAgIHZvaWQgZGVjcmVtZW50
TmVzdGVkUnVuTG9vcENvdW50KCk7CiAgICAgYm9vbCBpbnNpZGVOZXN0ZWRSdW5Mb29wKCkgY29u
c3QgeyByZXR1cm4gbV9uZXN0ZWRSdW5Mb29wQ291bnQgPiAwOyB9Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3aGVuVW5uZXN0ZWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgd2hlblVubmVzdGVkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlbW90ZUlu
c3BlY3Rpb25BbGxvd2VkKCkgY29uc3Q7CkBAIC04NjQsOCArODY0LDggQEAgcHVibGljOgogICAg
IERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIqIGRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuZ2V0KCk7IH0KICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoRG9j
dW1lbnQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JikgY29uc3Q7Ci0gICAg
dm9pZCBmb3JFYWNoTWVkaWFFbGVtZW50KGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChIVE1MTWVk
aWFFbGVtZW50Jik+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoRG9jdW1lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChEb2N1bWVudCYpPiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFj
aE1lZGlhRWxlbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKEhUTUxNZWRpYUVsZW1lbnQmKT4mKTsK
IAogICAgIGJvb2wgc2hvdWxkRGlzYWJsZUNvcnNGb3JSZXF1ZXN0VG8oY29uc3QgVVJMJikgY29u
c3Q7CiAKQEAgLTk5NCw3ICs5OTQsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8RnJh
bWVzUGVyU2Vjb25kPiBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kOwogCiAgICAgaW50
IG1fbmVzdGVkUnVuTG9vcENvdW50IHsgMCB9OwotICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBt
X3VubmVzdENhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV91bm5lc3RDYWxsYmFjazsK
IAogICAgIFN0cmluZyBtX2dyb3VwTmFtZTsKICAgICBib29sIG1fb3BlbmVkQnlET00geyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIu
Y3BwCmluZGV4IGEyMjBkMGRjOTk1OWEwZGQzYzNhMWIyYjY3YjZkY2E5ZDMyNjdhNTYuLjYyOTA0
ODAyZGRhMmI2OGZjZGUzYmQwZjA1YjNlYTFjZjdlMzEyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAKQEAgLTIzMCw3ICsyMzAsNyBA
QCB2b2lkIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6ZGlzcGF0Y2hFdmVudEZvclRvdWNoQXRJ
bmRleChFdmVudFRhcmdldCYgdGFyZ2V0LAogICAgICAgICB9CiAKICAgICAgICAgaWYgKHR5cGUg
PT0gZXZlbnROYW1lcygpLnBvaW50ZXJlbnRlckV2ZW50KSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKHRhcmdldENoYWluKSkKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1ha2VSZXZlcnNlZFJhbmdlKHRhcmdldENoYWlu
KSkKICAgICAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KFBvaW50ZXJFdmVudDo6Y3JlYXRlKHR5
cGUsIHBsYXRmb3JtVG91Y2hFdmVudCwgaW5kZXgsIGlzUHJpbWFyeSwgdmlldyksIGVsZW1lbnQu
cHRyKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogdGFyZ2V0Q2hhaW4pCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBQb2ludGVyQ2FwdHVyZUNv
bnRyb2xsZXI6OmRpc3BhdGNoRXZlbnRGb3JUb3VjaEF0SW5kZXgoRXZlbnRUYXJnZXQmIHRhcmdl
dCwKICAgICAgICAgaWYgKGN1cnJlbnRUYXJnZXQpCiAgICAgICAgICAgICBkaXNwYXRjaE92ZXJP
ck91dEV2ZW50KGV2ZW50TmFtZXMoKS5wb2ludGVyb3ZlckV2ZW50LCBjdXJyZW50VGFyZ2V0Lmdl
dCgpKTsKIAotICAgICAgICBmb3IgKGF1dG8mIGNoYWluIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5n
ZShlbnRlcmVkRWxlbWVudHNDaGFpbikpIHsKKyAgICAgICAgZm9yIChhdXRvJiBjaGFpbiA6IG1h
a2VSZXZlcnNlZFJhbmdlKGVudGVyZWRFbGVtZW50c0NoYWluKSkgewogICAgICAgICAgICAgaWYg
KGhhc0NhcHR1cmluZ1BvaW50ZXJFbnRlckxpc3RlbmVyIHx8IGNoYWluLT5oYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkucG9pbnRlcmVudGVyRXZlbnQpKQogICAgICAgICAgICAgICAgIGRp
c3BhdGNoRXZlbnQoUG9pbnRlckV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnBvaW50ZXJlbnRl
ckV2ZW50LCBwbGF0Zm9ybVRvdWNoRXZlbnQsIGluZGV4LCBpc1ByaW1hcnksIHZpZXcpLCBjaGFp
bi5wdHIoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9p
bnRlckNhcHR1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0
dXJlQ29udHJvbGxlci5oCmluZGV4IDQ5NTQ4MTQyZjZkYjZiMjQ1Y2Y2YmEyMzQyNzI2MTUwMjhh
YWQxYWUuLjQ1NDM1Zjc3ZTRiYzc5MGFhNjBiZGViYzI3ZWE2OWI5YmE4ODljMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaApAQCAtMTE0LDcg
KzExNCw3IEBAIHByaXZhdGU6CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIC8vIFdoaWxlIFBvaW50
ZXJJRCBpcyBkZWZpbmVkIGFzIGludDMyX3QsIHdlIHVzZSBpbnQ2NF90IGhlcmUgc28gdGhhdCB3
ZSBtYXkgdXNlIGEgdmFsdWUgb3V0c2lkZSBvZiB0aGUgaW50MzJfdCByYW5nZSB0byBoYXZlIHNh
ZmUKICAgICAvLyBlbXB0eSBhbmQgcmVtb3ZlZCB2YWx1ZXMsIGFsbG93aW5nIGFueSBpbnQzMl90
IHRvIGJlIHByb3ZpZGVkIHRocm91Z2ggdGhlIEFQSSBmb3IgbG9va3VwIGluIHRoaXMgaGFzaG1h
cC4KLSAgICB1c2luZyBQb2ludGVySWRUb0NhcHR1cmluZ0RhdGFNYXAgPSBIYXNoTWFwPGludDY0
X3QsIFJlZjxDYXB0dXJpbmdEYXRhPiwgV1RGOjpJbnRIYXNoPGludDY0X3Q+LCBXVEY6OlNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ2NF90Pj47CisgICAgdXNpbmcgUG9pbnRlcklkVG9D
YXB0dXJpbmdEYXRhTWFwID0gSGFzaE1hcDxpbnQ2NF90LCBSZWY8Q2FwdHVyaW5nRGF0YT4sIElu
dEhhc2g8aW50NjRfdD4sIFdURjo6U2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDY0X3Q+
PjsKICAgICBQb2ludGVySWRUb0NhcHR1cmluZ0RhdGFNYXAgbV9hY3RpdmVQb2ludGVySWRzVG9D
YXB0dXJpbmdEYXRhOwogICAgIGJvb2wgbV9wcm9jZXNzaW5nUGVuZGluZ1BvaW50ZXJDYXB0dXJl
IHsgZmFsc2UgfTsKICAgICBib29sIG1faGF2ZUFueUNhcHR1cmluZ0VsZW1lbnQgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAKaW5kZXggZGJi
NWRjYmJhYzVjZTU0ODU2ZDNlNTYwNzUxNDUxOGQwODI1NmM3ZC4uZmZiYzlhZDEwMDYwZjYxZDll
Y2M5MjU1ZWViZGFjNmNhMTcwMWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZXNvdXJjZVVzYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNl
VXNhZ2VUaHJlYWQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVh
ZDo6d2FpdFVudGlsT2JzZXJ2ZXJzKCkKICAgICAgICAgbV9jb25kaXRpb24ud2FpdChtX29ic2Vy
dmVyc0xvY2spOwogCiAgICAgICAgIC8vIFdhaXQgYSBiaXQgYWZ0ZXIgd2FraW5nIHVwIGZvciB0
aGUgZmlyc3QgdGltZS4KLSAgICAgICAgV1RGOjpzbGVlcCgxMF9tcyk7CisgICAgICAgIHNsZWVw
KDEwX21zKTsKICAgICB9CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFJlc291cmNlVXNh
Z2VUaHJlYWQ6OmNyZWF0ZVRocmVhZElmTmVlZGVkKCkKIE5PX1JFVFVSTiB2b2lkIFJlc291cmNl
VXNhZ2VUaHJlYWQ6OnRocmVhZEJvZHkoKQogewogICAgIC8vIFdhaXQgYSBiaXQgYWZ0ZXIgd2Fr
aW5nIHVwIGZvciB0aGUgZmlyc3QgdGltZS4KLSAgICBXVEY6OnNsZWVwKDEwX21zKTsKKyAgICBz
bGVlcCgxMF9tcyk7CiAgICAgCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgLy8gT25seSBk
byB3b3JrIGlmIHdlIGhhdmUgb2JzZXJ2ZXJzLgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIE5PX1JFVFVS
TiB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnRocmVhZEJvZHkoKQogICAgICAgICAvLyBzbyBp
ZiB0aGlzIGludGVydmFsIGNoYW5nZXMgV2ViIEluc3BlY3RvciBtYXkgbmVlZCB0byBjaGFuZ2Uu
CiAgICAgICAgIGF1dG8gZHVyYXRpb24gPSBXYWxsVGltZTo6bm93KCkgLSBzdGFydDsKICAgICAg
ICAgYXV0byBkaWZmZXJlbmNlID0gNTAwX21zIC0gZHVyYXRpb247Ci0gICAgICAgIFdURjo6c2xl
ZXAoZGlmZmVyZW5jZSk7CisgICAgICAgIHNsZWVwKGRpZmZlcmVuY2UpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCAxZjVi
ZDQzMDA2YjcyNzhhMjVkNmY0ZjJlMjIxNzMxYWQzMDM3YTVlLi4zZmRjOTQ1ZTc4NWQ0YTM3Mzhi
OTZiMDA4NTI4ZWU2M2M0MjRiMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaApAQCAtNDExLDcgKzQxMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2J1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIGZy
aWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+Owor
ICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxSdW50aW1lRW5hYmxlZEZlYXR1cmVzPjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oCmluZGV4IGZjNDVmYmFhMTUxMGNhMTM2MWZhMGQ4YWZjMTdhOWI4ODE5MDU4
NjcuLmZkZmM4NjQzZWFkZjA0NjgwMWExZWU4MDk2YzE1ZTU3M2ZiMzZhNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0ZDo6
b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiBkYXRhOwogfQogCi1zdHJ1Y3QgU2VjdXJpdHlP
cmlnaW5EYXRhSGFzaFRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNlY3VyaXR5
T3JpZ2luRGF0YT4geworc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YUhhc2hUcmFpdHMgOiBTaW1w
bGVDbGFzc0hhc2hUcmFpdHM8U2VjdXJpdHlPcmlnaW5EYXRhPiB7CiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBi
b29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFs
dWUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLmlzRW1wdHko
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRleCBjNTliYjI1ZTI1
ZDU5YTM3Y2Q2NmNiNmI3NWM4N2VkZDNiMzM4ZGIwLi5lMjI1OGUxOTliNzY0ZDc4NjhiMmNlZTg3
NjM0ZmQyYjhkYjkyY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRh
YmxlVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApA
QCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFN1c3BlbmRhYmxl
VGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lk
ICgpPiYmIGZ1bmN0aW9uKQorICAgIFN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IFN1
c3BlbmRhYmxlVGltZXJCYXNlKGNvbnRleHQpCiAgICAgICAgICwgbV9mdW5jdGlvbihXVEZNb3Zl
KGZ1bmN0aW9uKSkKICAgICB7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKIAogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIFdURjo6
RnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVu
Y3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oCmluZGV4IGQyZjY1MzU3MjQ3
NDJjMWNlYTg2NDFjNmVhOGM2OWYxYTVlN2IzYzAuLjYzMzg3ZGQ4OThjMTBjMzQwNjRhZTRiNzk5
Y2FhMDE3NDlhYjU2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBET01XcmFwcGVyV29ybGQmIHdvcmxkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZFBvc3RNZXNzYWdlKFVzZXJNZXNzYWdlSGFuZGxlciYsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIFdURjo6RnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJp
bmcmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShVc2VyTWVzc2Fn
ZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBGdW5jdGlvbjx2b2lkKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IFN0cmluZyYpPiYmKSA9IDA7CiAKIHByaXZhdGU6CiAgICAg
QXRvbVN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVs
RXZlbnRUZXN0TW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0
TW9uaXRvci5jcHAKaW5kZXggYWU3NDQ0OTViMTAzYWQzNDczNWM5NDE2ZWVkYThmMGY5YTc1OWJi
MC4uODI3Yjc0ZmZkM2VkYjA1OWVhYmVlZjU2MjI5ODRiNTE4ZDdlMTI1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcApAQCAtNjAsNyArNjAsNyBA
QCB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2xlYXJBbGxUZXN0RGVmZXJyYWxzKCkKICAg
ICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpjbGVhckFsbFRlc3REZWZlcnJhbHM6IGNsZWFyZWQgYWxsIHRl
c3Qgc3RhdGUuIik7CiB9CiAKLXZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2Fs
bGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29s
IGV4cGVjdE1vbWVudHVtRW5kLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbkNhbGxi
YWNrKQordm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0
TW9uaXRvcmluZyhib29sIGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGJvb2wgZXhwZWN0TW9tZW50
dW1FbmQsIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbkNhbGxiYWNrKQogewogICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9X
aGVlbEV2ZW50VGVzdE1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRl
c3RNb25pdG9yLmgKaW5kZXggNmJkMmIwMDMyNWI2YzZlMmUyMTFkODY4YjJjY2Q0OWUyZWMxNmEz
YS4uZDgyZDAxYjFjMzg0NDliZDg3ZjMxYTM5ZDZkMzVmZTc1NTQ5ZTcwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oCkBAIC00NCw3ICs0NCw3IEBAIGNs
YXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxX
aGVlbEV2ZW50VGVzdE1vbml0b3I+CiBwdWJsaWM6CiAgICAgV2hlZWxFdmVudFRlc3RNb25pdG9y
KFBhZ2UmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGVzdENhbGxiYWNrQW5kU3Rh
cnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCwgYm9vbCBleHBlY3RNb21l
bnR1bUVuZCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRP
ckNhbmNlbCwgYm9vbCBleHBlY3RNb21lbnR1bUVuZCwgRnVuY3Rpb248dm9pZCgpPiYmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsVGVzdERlZmVycmFscygpOwogICAgIAogICAg
IGVudW0gRGVmZXJSZWFzb24gewpAQCAtNjUsMTIgKzY1LDEyIEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIGNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcygpOwogCi0gICAgdXNpbmcgU2Nyb2xsYWJs
ZUFyZWFSZWFzb25NYXAgPSBXVEY6Okhhc2hNYXA8U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBP
cHRpb25TZXQ8RGVmZXJSZWFzb24+PjsKKyAgICB1c2luZyBTY3JvbGxhYmxlQXJlYVJlYXNvbk1h
cCA9IEhhc2hNYXA8U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBPcHRpb25TZXQ8RGVmZXJSZWFz
b24+PjsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ2FsbGJhY2tDaGVjaygpOwogCi0g
ICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fY29tcGxldGlvbkNhbGxiYWNrOworICAgIEZ1bmN0
aW9uPHZvaWQoKT4gbV9jb21wbGV0aW9uQ2FsbGJhY2s7CiAgICAgUGFnZSYgbV9wYWdlOwogCiAg
ICAgTG9jayBtX2xvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0Zl
YXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmluZGV4
IGRlOTlmOWMwMjliZjA2NjRkMDZkZTE4MTNkYzdkMDc1NjgxYjZiNzUuLjBlNjExNGM2YTEzZTU0
ODc1NThlNGY4OGVmMDUwNmViNTAxNTA5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVh
dHVyZXMuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlV2luZG93RmVh
dHVyZXMoU3RyaW5nVmlldyBmZWF0dXJlc1N0cmluZykKIC8vIFdpbmRvdzogaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC13aW5kb3ctb3Blbi1mZWF0dXJlcy10b2tlbml6ZQog
Ly8gVmlld3BvcnQ6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2NvbnRlbnQv
ZG9jdW1lbnRhdGlvbi9BcHBsZUFwcGxpY2F0aW9ucy9SZWZlcmVuY2UvU2FmYXJpSFRNTFJlZi9B
cnRpY2xlcy9NZXRhVGFncy5odG1sIy8vYXBwbGVfcmVmL2RvYy91aWQvVFA0MDAwODE5My1TVzYK
IC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXJpbmcgYWxpZ25pbmcgVmlld3BvcnQgZmVhdHVy
ZSBwYXJzaW5nIHdpdGggV2luZG93IGZlYXR1cmVzIHBhcnNpbmcuCi12b2lkIHByb2Nlc3NGZWF0
dXJlc1N0cmluZyhTdHJpbmdWaWV3IGZlYXR1cmVzLCBGZWF0dXJlTW9kZSBtb2RlLCBjb25zdCBX
VEY6OkZ1bmN0aW9uPHZvaWQoU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlKT4mIGNh
bGxiYWNrKQordm9pZCBwcm9jZXNzRmVhdHVyZXNTdHJpbmcoU3RyaW5nVmlldyBmZWF0dXJlcywg
RmVhdHVyZU1vZGUgbW9kZSwgY29uc3QgRnVuY3Rpb248dm9pZChTdHJpbmdWaWV3IHR5cGUsIFN0
cmluZ1ZpZXcgdmFsdWUpPiYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZmVh
dHVyZXMubGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgKaW5kZXggNzZjMGFmMTY5MmZjMmZiODQ4
MTA4MmQzODZjM2Y1YzRlNmQzMjZiMi4uZTk2YzVlMTkzMmJkYjZkYTg0ODgyNDM4ODU1MWY4MjM0
MmIzNTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaApAQCAtNjQsNiArNjQs
NiBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlh
bG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlv
bnM+IHBhcnNlRGlzYWJsZWRBZGFwdGF0aW9ucyhjb25zdCBTdHJpbmcmKTsKIAogZW51bSBjbGFz
cyBGZWF0dXJlTW9kZSB7IFdpbmRvdywgVmlld3BvcnQgfTsKLXZvaWQgcHJvY2Vzc0ZlYXR1cmVz
U3RyaW5nKFN0cmluZ1ZpZXcgZmVhdHVyZXMsIEZlYXR1cmVNb2RlLCBjb25zdCBXVEY6OkZ1bmN0
aW9uPHZvaWQoU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlKT4mIGNhbGxiYWNrKTsK
K3ZvaWQgcHJvY2Vzc0ZlYXR1cmVzU3RyaW5nKFN0cmluZ1ZpZXcgZmVhdHVyZXMsIEZlYXR1cmVN
b2RlLCBjb25zdCBGdW5jdGlvbjx2b2lkKFN0cmluZ1ZpZXcgdHlwZSwgU3RyaW5nVmlldyB2YWx1
ZSk+JiBjYWxsYmFjayk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDYzMzE1YmE1
ZWY2ODhiODQwOWM4YTVmMmM2ZmY0MGVjYWY4ZmNkNTMuLmFhMzJjZWY5ZmZkYzRjZDIwMDc5MGEx
NmZkZDA1NWIwZmI0NzdmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpjaGVja0hhc2hBbmRSZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvCiAgICAgcmV0dXJuIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyB8fCBhbGxQ
b2xpY2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KENvbnRlbnRTZWN1cml0eVBvbGljeTo6RGlzcG9z
aXRpb246OkVuZm9yY2UsIFdURk1vdmUoY2FsbGJhY2spLCB2aW9sYXRlZERpcmVjdGl2ZSk7CiB9
CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGlu
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2NyaXB0VVJM
cyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRM
aW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSkgY29uc3QKIHsKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDA0LDcgKzQwNCw3IEBAIGJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwg
Y29uc3QKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAg
IFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsIHZpb2xhdGVkRGlyZWN0
aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJpdHMgaGFzaCwgaXRz
IG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKICAgICAgICAgLy8gRklYTUUgKHJkYXI6Ly84
MzMzMjg3NCkgaW1wbGVtZW50IHNjcmlwdFNyY0VsZW0gcHJvcGVybHkuCi0gICAgICAgIHJlcG9y
dFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3Jj
RWxlbSwgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3MsIGNvbnNvbGVNZXNzYWdlLCBjb250
ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdURjo6T3JkaW5hbE51bWJlcigpKSk7
CisgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lczo6c2NyaXB0U3JjRWxlbSwgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3MsIGNvbnNv
bGVNZXNzYWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIE9yZGluYWxO
dW1iZXIoKSkpOwogICAgICAgICBpZiAoIWRpZE5vdGlmeUluc3BlY3RvciAmJiB2aW9sYXRlZERp
cmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkpIHsKICAgICAgICAgICAgIHJl
cG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2aW9sYXRlZERpcmVjdGl2ZS50
ZXh0KCkpOwogICAgICAgICAgICAgZGlkTm90aWZ5SW5zcGVjdG9yID0gdHJ1ZTsKQEAgLTQxNCwx
NCArNDE0LDE0IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0phdmFTY3JpcHRV
UkxzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QKICAgICByZXR1cm4gY2hlY2tIYXNo
QW5kUmVwb3J0VmlvbGF0aW9uKHNvdXJjZSwgJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlSW5saW5lU2NyaXB0RWxlbWVudCwgJkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5z
YWZlSGFzaFNjcmlwdCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMsIGhhbmRsZVZp
b2xhdGVkRGlyZWN0aXZlKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6
T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIG92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkws
IGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Ym9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAob3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGJv
b2wgZGlkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERp
cmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9s
YXRlZERpcmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
c2NyaXB0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUg
YSBzY3JpcHQgZm9yIGFuIGlubGluZSBldmVudCBoYW5kbGVyIiwgIid1bnNhZmUtaW5saW5lJyIp
OwotICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3MsIGNvbnNvbGVN
ZXNzYWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdURjo6T3JkaW5h
bE51bWJlcigpKSk7CisgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgImlubGluZSJf
cywgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGluZSwg
T3JkaW5hbE51bWJlcigpKSk7CiAgICAgICAgIGlmICghZGlkTm90aWZ5SW5zcGVjdG9yICYmICF2
aW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkpIHsKICAgICAg
ICAgICAgIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2aW9sYXRlZERp
cmVjdGl2ZS50ZXh0KCkpOwogICAgICAgICAgICAgZGlkTm90aWZ5SW5zcGVjdG9yID0gdHJ1ZTsK
QEAgLTQ3MCw3ICs0NzAsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dOb25Q
YXJzZXJJbnNlcnRlZFNjcmlwdHMoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAoY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkgewotICAg
ICAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZv
cmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSk7CisgICAgICAgIFRleHRQb3NpdGlvbiBz
b3VyY2VQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVy
KCkpOwogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZp
b2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2
aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CiAgICAgICAgIHJlcG9y
dFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3Jj
RWxlbSwgdmlvbGF0ZWREaXJlY3RpdmUsIHVybC5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UsIFN0
cmluZygpLCBzb3VyY2VQb3NpdGlvbik7CiAgICAgfTsKQEAgLTQ3OCwxNCArNDc4LDE0IEBAIGJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd05vblBhcnNlckluc2VydGVkU2NyaXB0cyhj
b25zdCBVUkwmIHVybCwgY29uc3QKICAgICByZXR1cm4gYWxsU2NyaXB0UG9saWNpZXNBbGxvdyho
YW5kbGVWaW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBub25jZSwgc2NyaXB0Q29udGVudCwgcGFyc2Vy
SW5zZXJ0ZWQpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVT
Y3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXIm
IGNvbnRleHRMaW5lLCBTdHJpbmdWaWV3IHNjcmlwdENvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxs
b3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVt
YmVyJiBjb250ZXh0TGluZSwgU3RyaW5nVmlldyBzY3JpcHRDb250ZW50LCBib29sIG92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAogewogICAgIGlmIChvdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeSB8fCBzaG91bGRQZXJmb3JtRWFybHlDU1BDaGVjaygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBib29sIGRpZE5vdGlmeUluc3BlY3RvciA9IGZhbHNlOwogICAgIGF1
dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKICAgICAgICAgU3RyaW5nIGNvbnNv
bGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCAi
UmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1
bnNhZmUtaW5saW5lJyIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxp
bmUiX3MsIGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExp
bmUsIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2aW9sYXRlZERpcmVj
dGl2ZSwgImlubGluZSJfcywgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlv
bihjb250ZXh0TGluZSwgT3JkaW5hbE51bWJlcigpKSk7CiAgICAgICAgIGlmICghZGlkTm90aWZ5
SW5zcGVjdG9yICYmICF2aW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRP
bmx5KCkpIHsKICAgICAgICAgICAgIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3Bl
Y3Rvcih2aW9sYXRlZERpcmVjdGl2ZS50ZXh0KCkpOwogICAgICAgICAgICAgZGlkTm90aWZ5SW5z
cGVjdG9yID0gdHJ1ZTsKQEAgLTQ5Niw3ICs0OTYsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBX
VAogICAgIHJldHVybiBjaGVja0hhc2hBbmRSZXBvcnRWaW9sYXRpb24oc2NyaXB0Q29udGVudC50
b1N0cmluZygpLCAmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWRE
aXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTY3JpcHRFbGVtZW50LCAmQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRIYXNoLCBtX2hhc2hB
bGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cywgaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUpOwogfQog
Ci1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJp
bmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0
cmluZ1ZpZXcgc3R5bGVDb250ZW50LCBDaGVja1Vuc2FmZUhhc2hlcyBzaG91bGRDaGVja1Vuc2Fm
ZUhhc2hlcywgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKK2Jvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29u
dGV4dFVSTCwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0cmluZ1ZpZXcgc3R5
bGVDb250ZW50LCBDaGVja1Vuc2FmZUhhc2hlcyBzaG91bGRDaGVja1Vuc2FmZUhhc2hlcywgYm9v
bCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAob3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTA1LDcg
KzUwNSw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGCiAgICAgYXV0byBoYW5kbGVWaW9sYXRl
ZERpcmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2
aW9sYXRlZERpcmVjdGl2ZSkgewogICAgICAgICBhdXRvIG5hbWUgPSBzaG91bGRDaGVja1Vuc2Fm
ZUhhc2hlcyA9PSBDaGVja1Vuc2FmZUhhc2hlczo6WWVzID8gQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OnN0eWxlU3JjQXR0ciA6IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzOjpzdHlsZVNyY0VsZW07CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9
IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpzdHlsZVNyYywgdmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCAiUmVmdXNlZCB0byBh
cHBseSBhIHN0eWxlc2hlZXQiLCAiaXRzIGhhc2gsIGl0cyBub25jZSwgb3IgJ3Vuc2FmZS1pbmxp
bmUnIik7Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbihuYW1lLCB2aW9sYXRlZERpcmVjdGl2ZSwg
ImlubGluZSJfcywgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250
ZXh0TGluZSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICAgICAgcmVwb3J0VmlvbGF0aW9u
KG5hbWUsIHZpb2xhdGVkRGlyZWN0aXZlLCAiaW5saW5lIl9zLCBjb25zb2xlTWVzc2FnZSwgY29u
dGV4dFVSTCwgVGV4dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBPcmRpbmFsTnVtYmVyKCkpKTsKICAg
ICB9OwogCiAgICAgaWYgKHNob3VsZENoZWNrVW5zYWZlSGFzaGVzID09IENoZWNrVW5zYWZlSGFz
aGVzOjpZZXMpCkBAIC01NDAsNyArNTQwLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93RnJhbWVBbmNlc3RvcnMoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHUKICAg
ICBpZiAoJmZyYW1lID09ICZ0b3BGcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgU3Ry
aW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oV1RGOjpPcmRp
bmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSk7CisgICAgVGV4
dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9y
ZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAo
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkg
ewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xh
dGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVBbmNlc3RvcnMs
IHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKICAgICAgICAgcmVw
b3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZUFu
Y2VzdG9ycywgdmlvbGF0ZWREaXJlY3RpdmUsIHVybC5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2Us
IHNvdXJjZVVSTCwgc291cmNlUG9zaXRpb24pOwpAQCAtNTY4LDcgKzU2OCw3IEBAIGJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5jZXN0b3JzKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnCiAgICAgaWYgKGlzVG9wTGV2ZWxGcmFtZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNlUG9z
aXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1i
ZXIoKSk7CisgICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJl
Zm9yZUZpcnN0KCksIE9yZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERp
cmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9s
YXRlZERpcmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
ZnJhbWVBbmNlc3RvcnMsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQi
KTsKICAgICAgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpmcmFtZUFuY2VzdG9ycywgdmlvbGF0ZWREaXJlY3RpdmUsIHVybC5zdHJpbmcoKSwg
Y29uc29sZU1lc3NhZ2UsIHNvdXJjZVVSTCwgc291cmNlUG9zaXRpb24pOwpAQCAtNTgxLDcgKzU4
MSw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1BsdWdpblR5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBTdHJpbmcgc291cmNlVVJM
OwotICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJl
Zm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKTsKKyAgICBUZXh0UG9zaXRpb24gc291
cmNlUG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcigp
KTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0
cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpwbHVnaW5UeXBlcywgdmlvbGF0ZWREaXJlY3Rp
dmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIsICJpdHMgTUlNRSB0eXBlIik7CiAgICAgICAgIHJl
cG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cGx1Z2lu
VHlwZXMsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwuc3RyaW5nKCksIGNvbnNvbGVNZXNzYWdlLCBz
b3VyY2VVUkwsIHNvdXJjZVBvc2l0aW9uKTsKQEAgLTU5Nyw3ICs1OTcsNyBAQCBib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBS
ZWRpcmVjdFJlc3BvbgogICAgIC8vICJJZiBwbHVnaW4gY29udGVudCBpcyBsb2FkZWQgd2l0aG91
dCBhbiBhc3NvY2lhdGVkIFVSTCAocGVyaGFwcyBhbiBvYmplY3QgZWxlbWVudCBsYWNrcyBhIGRh
dGEgYXR0cmlidXRlLCBidXQgbG9hZHMgc29tZSBkZWZhdWx0IHBsdWdpbiBiYXNlZAogICAgIC8v
IG9uIHRoZSBzcGVjaWZpZWQgdHlwZSksIGl0IE1VU1QgYmUgYmxvY2tlZCBpZiBvYmplY3Qtc3Jj
J3MgdmFsdWUgaXMgJ25vbmUnLCBidXQgd2lsbCBvdGhlcndpc2UgYmUgYWxsb3dlZCIuCiAgICAg
U3RyaW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oV1RGOjpP
cmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSk7CisgICAg
VGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCks
IE9yZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsm
XSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2
ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZp
b2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6b2JqZWN0U3JjLCB2
aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CiAgICAgICAgIHJlcG9y
dFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6b2JqZWN0U3Jj
LCB2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZSwgc291cmNl
VVJMLCBzb3VyY2VQb3NpdGlvbik7CkBAIC02MTAsNyArNjEwLDcgQEAgYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJl
ZGlyZWN0UmUKICAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFz
c0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBTdHJpbmcgc291cmNlVVJMOwotICAg
IFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZp
cnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKTsKKyAgICBUZXh0UG9zaXRpb24gc291cmNlUG9z
aXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcigpKTsKICAg
ICBhdXRvIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIGNvbnN0IGNo
YXIqIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmUubmFtZSgp
ID09IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZVNyYyA/IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZVNyYyA6IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpjaGlsZFNyYzsKICAgICAgICAgU3RyaW5nIGNvbnNvbGVN
ZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oZWZmZWN0aXZlVmlvbGF0ZWREaXJl
Y3RpdmUsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKQEAgLTYy
NCw3ICs2MjQsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dSZXNvdXJjZUZy
b21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlZGlyZWN0UmVzcAogICAgIGlmIChMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5w
cm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIFN0cmluZyBzb3VyY2VVUkw7Ci0gICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9u
KFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkp
OworICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVG
aXJzdCgpLCBPcmRpbmFsTnVtYmVyKCkpOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3Rp
dmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWRE
aXJlY3RpdmUpIHsKICAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3Nh
Z2VGb3JWaW9sYXRpb24obmFtZSwgdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8g
bG9hZCIpOwogICAgICAgICByZXBvcnRWaW9sYXRpb24obmFtZSwgdmlvbGF0ZWREaXJlY3RpdmUs
IHVybC5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UsIHNvdXJjZVVSTCwgc291cmNlUG9zaXRpb24p
OwpAQCAtNjc3LDcgKzY3Nyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nv
bm5lY3RUb1NvdXJjZShjb25zdCBVUkwmIHVybCwgUmVkaXJlY3RSZXNwb25zCiAgICAgaWYgKExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xp
Y3kodXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNl
UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxO
dW1iZXIoKSk7CisgICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6
OmJlZm9yZUZpcnN0KCksIE9yZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRl
ZERpcmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2
aW9sYXRlZERpcmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25z
b2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
czo6Y29ubmVjdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gY29ubmVj
dCB0byIpOwogICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXM6OmNvbm5lY3RTcmMsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwuc3RyaW5nKCks
IGNvbnNvbGVNZXNzYWdlLCBzb3VyY2VVUkwsIHNvdXJjZVBvc2l0aW9uLCBwcmVSZWRpcmVjdFVS
TCk7CkBAIC02OTcsNyArNjk3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
QmFzZVVSSShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWMKICAgICBpZiAo
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBv
bGljeSh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBTdHJpbmcgc291cmNlVVJMOwotICAgIFRleHRQb3NpdGlvbiBzb3Vy
Y2VQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5h
bE51bWJlcigpKTsKKyAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oT3JkaW5hbE51bWJl
cjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcigpKTsKICAgICBhdXRvIGhhbmRsZVZpb2xh
dGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUm
IHZpb2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNv
bnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpiYXNlVVJJLCB2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBjaGFuZ2Ug
dGhlIGRvY3VtZW50IGJhc2UgVVJMIHRvIik7CiAgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmFzZVVSSSwgdmlvbGF0ZWREaXJlY3Rp
dmUsIHVybC5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UsIHNvdXJjZVVSTCwgc291cmNlUG9zaXRp
b24pOwpAQCAtNzIyLDEzICs3MjIsMTMgQEAgU3RyaW5nIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
ZGVwcmVjYXRlZFVSTEZvclJlcG9ydGluZyhjb25zdCBVUkwmIHVybCkgY29uc3QKIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiB2aW9sYXRl
ZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiBlZmZlY3Rp
dmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBibG9ja2VkVVJMLCBjb25zdCBTdHJp
bmcmIGNvbnNvbGVNZXNzYWdlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogRXh0cmFjdCBzb3VyY2UgZmlsZSBhbmQgc291cmNlIHBvc2l0aW9uIGZy
b20gSlNDOjpFeGVjU3RhdGUuCi0gICAgcmV0dXJuIHJlcG9ydFZpb2xhdGlvbih2aW9sYXRlZERp
cmVjdGl2ZSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpLmNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLmRpcmVj
dGl2ZUxpc3QoKSwgYmxvY2tlZFVSTCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9z
aXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1i
ZXI6OmJlZm9yZUZpcnN0KCkpLCBzdGF0ZSk7CisgICAgcmV0dXJuIHJlcG9ydFZpb2xhdGlvbih2
aW9sYXRlZERpcmVjdGl2ZSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9y
dGluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0
aXZlLmRpcmVjdGl2ZUxpc3QoKSwgYmxvY2tlZFVSTCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygp
LCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJl
cjo6YmVmb3JlRmlyc3QoKSksIHN0YXRlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0
aXZlLCBjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0JiB2aW9sYXRlZERpcmVjdGl2ZUxpc3QsIGNvbnN0IFN0cmlu
ZyYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogc3RhdGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEV4dHJhY3Qgc291cmNlIGZp
bGUgYW5kIHNvdXJjZSBwb3NpdGlvbiBmcm9tIEpTQzo6RXhlY1N0YXRlLgotICAgIHJldHVybiBy
ZXBvcnRWaW9sYXRpb24oZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIHZpb2xhdGVkRGlyZWN0
aXZlLCB2aW9sYXRlZERpcmVjdGl2ZUxpc3QsIGJsb2NrZWRVUkwsIGNvbnNvbGVNZXNzYWdlLCBT
dHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwg
V1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpKSwgc3RhdGUpOworICAgIHJldHVybiBy
ZXBvcnRWaW9sYXRpb24oZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIHZpb2xhdGVkRGlyZWN0
aXZlLCB2aW9sYXRlZERpcmVjdGl2ZUxpc3QsIGJsb2NrZWRVUkwsIGNvbnNvbGVNZXNzYWdlLCBT
dHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpLCBzdGF0ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRl
ZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRl
ZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnNv
bGVNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
b3VyY2VQb3NpdGlvbiwgY29uc3QgVVJMJiBwcmVSZWRpcmVjdFVSTCwgSlNDOjpKU0dsb2JhbE9i
amVjdCogc3RhdGUpIGNvbnN0CkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnJlcG9ydE1pc3NpbmdSZXBvcnRVUkkoY29uc3QgU3RyaW5nJiBwb2xpY3kpIGNv
bnN0CiAgICAgbG9nVG9Db25zb2xlKCJUaGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgJyIgKyBw
b2xpY3kgKyAiJyB3YXMgZGVsaXZlcmVkIGluIHJlcG9ydC1vbmx5IG1vZGUsIGJ1dCBkb2VzIG5v
dCBzcGVjaWZ5IGEgJ3JlcG9ydC11cmknOyB0aGUgcG9saWN5IHdpbGwgaGF2ZSBubyBlZmZlY3Qu
IFBsZWFzZSBlaXRoZXIgYWRkIGEgJ3JlcG9ydC11cmknIGRpcmVjdGl2ZSwgb3IgZGVsaXZlciB0
aGUgcG9saWN5IHZpYSB0aGUgJ0NvbnRlbnQtU2VjdXJpdHktUG9saWN5JyBoZWFkZXIuIik7CiB9
CiAKLXZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpsb2dUb0NvbnNvbGUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51
bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dENvbHVt
biwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUpIGNvbnN0Cit2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6bG9nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgT3Jk
aW5hbE51bWJlciYgY29udGV4dENvbHVtbiwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUpIGNv
bnN0CiB7CiAgICAgaWYgKG1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDYw
NzljMDVhYmFjYTRmOTRmZjcwNjcwMWE3OWZkN2YwZTUzYmRkM2MuLmQ0MTJhZDE1ZDhjMGE1MjJk
OTRjN2VjZWFlMDZjOGE5YzY4YTQ2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBAIC05NCwxMSArOTQsMTEgQEAgcHVibGljOgogICAg
IGJvb2wgYWxsb3dTY3JpcHRXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgYm9vbCBvdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKICAgICBib29sIGFsbG93
U3R5bGVXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKIAotICAgIGJvb2wgYWxsb3dKYXZhU2NyaXB0
VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgY29kZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKLSAgICBib29sIGFsbG93SW5saW5lRXZlbnRIYW5k
bGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgY29kZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKLSAgICBib29sIGFsbG93SW5saW5lU2NyaXB0KGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0
TGluZSwgU3RyaW5nVmlldyBzY3JpcHRDb250ZW50LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OworICAgIGJvb2wgYWxsb3dKYXZhU2NyaXB0VVJMcyhj
b25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5l
LCBjb25zdCBTdHJpbmcmIGNvZGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kg
PSBmYWxzZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29u
c3QgU3RyaW5nJiBjb2RlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFs
c2UpIGNvbnN0OworICAgIGJvb2wgYWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgU3RyaW5nVmlldyBzY3Jp
cHRDb250ZW50LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNv
bnN0OwogICAgIGJvb2wgYWxsb3dOb25QYXJzZXJJbnNlcnRlZFNjcmlwdHMoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nVmlldyYsIFBhcnNlckluc2VydGVkKSBjb25zdDsK
LSAgICBib29sIGFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBTdHJpbmdWaWV3IHN0eWxlQ29udGVu
dCwgQ2hlY2tVbnNhZmVIYXNoZXMsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kg
PSBmYWxzZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYg
Y29udGV4dFVSTCwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0cmluZ1ZpZXcg
c3R5bGVDb250ZW50LCBDaGVja1Vuc2FmZUhhc2hlcywgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dFdmFsKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBMb2dUb0NvbnNvbGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSBmYWxzZSkgY29uc3Q7CiAKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAg
U2FuZGJveEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdz
OyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBsb2dUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRp
bmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3Qo
KSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0Q29sdW1uID0gV1RGOjpPcmRpbmFs
TnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiA9IG51bGxwdHIpIGNv
bnN0OworICAgIHZvaWQgbG9nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRl
eHRMaW5lID0gT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgY29uc3QgT3JkaW5hbE51bWJl
ciYgY29udGV4dENvbHVtbiA9IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6SlNH
bG9iYWxPYmplY3QqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgdm9pZCBhcHBseVBvbGljeVRvU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCiAgICAgLy8gSW1wbGVtZW50cyB0aGUgZGVwcmVjYXRl
ZCBDU1AyICJzdHJpcCB1cmkgZm9yIHJlcG9ydGluZyIgYWxnb3JpdGhtIGZyb20gPGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9DU1AyLyN2aW9sYXRpb24tcmVwb3J0cz4uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCAwYmViOTQ2ZGQ4
NzI1OGU1Y2QzNTVhYmRiZDdlYTY5YmMyMjQxNjhjLi5lMzhjNjgzMWM2ZTM2MmE4MzllYTBkZWU4
NWQ2ZTI1MzdlNDcwZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgU2Nyb2xsaW5nVGhyZWFkOjpT
Y3JvbGxpbmdUaHJlYWQoKQogewogICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CiAgICAg
bV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogU2Nyb2xsaW5nIiwgW3RoaXMsICZz
ZW1hcGhvcmVdIHsKLSAgICAgICAgV1RGOjpUaHJlYWQ6OnNldEN1cnJlbnRUaHJlYWRJc1VzZXJJ
bnRlcmFjdGl2ZSgpOworICAgICAgICBUaHJlYWQ6OnNldEN1cnJlbnRUaHJlYWRJc1VzZXJJbnRl
cmFjdGl2ZSgpOwogICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOwogICAg
ICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIG1fcnVuTG9vcC0+cnVuKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXggYmU2YzQ4
NDViZDc2ZDRlN2Y1Yzc4MTAxYjc4OGU0ZjMyYzI3YWMyOS4uMzIwMTU3YWZjMjM1MjMyMzQ2MzMz
Yjc2MjIzMTI5ODQ0MjA1NzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICAKICAgICBX
RUJDT1JFX0VYUE9SVCBTY3JvbGxpbmdUcmVlTm9kZSogbm9kZUZvcklEKFNjcm9sbGluZ05vZGVJ
RCkgY29uc3Q7CiAKLSAgICB1c2luZyBWaXNpdG9yRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZv
aWQgKFNjcm9sbGluZ05vZGVJRCwgU2Nyb2xsaW5nTm9kZVR5cGUsIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0
Vmlld3BvcnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRTaW5jZUxhc3RDb21taXQpPjsKKyAgICB1c2lu
ZyBWaXNpdG9yRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFNjcm9sbGluZ05vZGVJRCwgU2Nyb2xs
aW5nTm9kZVR5cGUsIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsUG9zaXRpb24sIHN0
ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgc2Nyb2xs
ZWRTaW5jZUxhc3RDb21taXQpPjsKICAgICB2b2lkIHRyYXZlcnNlU2Nyb2xsaW5nVHJlZShWaXNp
dG9yRnVuY3Rpb24mJik7CiAKICAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBzY3JvbGxpbmcgdHJlZSBu
b2RlIGhhcyBoYW5kbGVkIGEgc2Nyb2xsIGFuZCB1cGRhdGVkIGl0cyBsYXllcnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVO
aWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZU5pY29zaWEuY3BwCmluZGV4IDJkMTRlNzk5NjcxNDkzYjk5OWIwN2YzYzEwZGZjMzJj
MGRiYmNmYjIuLmFiNGI2N2NhMmFmMzZiNzEwNWUzY2MxMWIzYmQzMmQ1ZjhiMGUwNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgUmVmUHRyPFNjcm9s
bGluZ1RyZWVOb2RlPiBTY3JvbGxpbmdUcmVlTmljb3NpYTo6c2Nyb2xsaW5nTm9kZUZvclBvaW50
KEZsb2F0UG9pbnQKICAgICBjb2xsZWN0RGVzY2VuZGFudExheWVyc0F0UG9pbnQobGF5ZXJzQXRQ
b2ludCwgcm9vdENvbnRlbnRzTGF5ZXIsIHBvaW50KTsKIAogICAgIFNjcm9sbGluZ1RyZWVOb2Rl
KiByZXR1cm5Ob2RlID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8gbGF5ZXIgOiBXVEY6Om1ha2VS
ZXZlcnNlZFJhbmdlKGxheWVyc0F0UG9pbnQpKSB7CisgICAgZm9yIChhdXRvIGxheWVyIDogbWFr
ZVJldmVyc2VkUmFuZ2UobGF5ZXJzQXRQb2ludCkpIHsKICAgICAgICAgbGF5ZXItPmFjY2Vzc0Nv
bW1pdHRlZChbJl0oY29uc3QgQ29tcG9zaXRpb25MYXllcjo6TGF5ZXJTdGF0ZSYgc3RhdGUpIHsK
ICAgICAgICAgICAgIGF1dG8qIHNjcm9sbGluZ05vZGUgPSBub2RlRm9ySUQoc3RhdGUuc2Nyb2xs
aW5nTm9kZUlEKTsKICAgICAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZT4oc2Nyb2xsaW5nTm9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCmluZGV4IGIzYWFiYzUwZTBkYmUwYzFmMWJl
NjlkODMyMTQyN2NkMzcxM2UzN2MuLjUzNTM2MzcyYWE1MTkwYmZkOWI2MmEyMTA3NDM0ZWMxNjg4
ODdlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4gU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVRpbWVyKEZ1bmN0aW9uPHZv
aWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICByZXR1cm4gV1RGOjptYWtlVW5pcXVlPFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgW2Z1bmN0aW9uID0g
V1RGTW92ZShmdW5jdGlvbiksIHByb3RlY3RlZE5vZGUgPSBSZWYgeyBzY3JvbGxpbmdOb2RlKCkg
fV0geworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGlt
ZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgW2Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHBy
b3RlY3RlZE5vZGUgPSBSZWYgeyBzY3JvbGxpbmdOb2RlKCkgfV0gewogICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgcHJvdGVjdGVkTm9kZS0+c2Nyb2xsaW5nVHJlZSgpLnRyZWVMb2NrKCkgfTsKICAg
ICAgICAgZnVuY3Rpb24oKTsKICAgICB9KTsKQEAgLTEwMywxMCArMTAzLDEwIEBAIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhOjpzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
JikKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIpIHsKLSAgICAgICAgbV9hbmltYXRpb25U
aW1lciA9IFdURjo6bWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZpcmVk
KTsKKyAgICAgICAgbV9hbmltYXRpb25UaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE+PihSdW5Mb29wOjpjdXJy
ZW50KCksIHRoaXMsICZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
YW5pbWF0aW9uVGltZXJGaXJlZCk7CiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQotICAgICAg
ICBtX2FuaW1hdGlvblRpbWVyLT5zZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0
eTo6RGlzcGxheVJlZnJlc2hNb25pdG9yVGltZXIpOworICAgICAgICBtX2FuaW1hdGlvblRpbWVy
LT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
clRpbWVyKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9y
dGFibGVUYXNrUXVldWUuaAppbmRleCA1ZGRjODE2ZDQzNmEyNjU5ZWI2ZDgzODFiZTQ2ODQ5NjM2
YWMwNTEwLi5mOWZjNzBiOWIyZTIzZTkwZThhMjg1ZDEyNDZmMWVjMDA4MTgwM2E0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAtMTE5LDcgKzEx
OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEVucXVldWUgYSB0YXNrIHRvIGJlIHJ1biBvbiB0aGUg
bWFpbiB0aHJlYWQuIFRoZSB0YXNrIG1heSBiZSBjYW5jZWxsZWQgaWYgYW4gYWJvcnQgc3RhcnRz
IGJlZm9yZSBpdCdzCiAgICAgLy8gaGFuZGxlZC4KLSAgICB2b2lkIGVucXVldWVUYXNrKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIG1haW5UaHJlYWRUYXNrSGFuZGxlcikKKyAgICB2b2lkIGVucXVl
dWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiBtYWluVGhyZWFkVGFza0hhbmRsZXIpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHB1
YmxpYzoKICAgICAvLyBJdCBpcyBhbGxvd2VkIGZvciB0aGUgbWFpbiB0aHJlYWQgdGFzayBoYW5k
bGVyIHRvIGFib3J0IHRoZSBBYm9ydGFibGVUYXNrUXVldWUuIEluIHRoYXQgY2FzZSwgdGhlIHJl
dHVybgogICAgIC8vIHZhbHVlIGlzIGRpc2NhcmRlZCBhbmQgdGhlIGNhbGxlciByZWNlaXZlcyBh
biBlbXB0eSBvcHRpb25hbC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSPgotICAgIHN0ZDo6b3B0
aW9uYWw8Uj4gZW5xdWV1ZVRhc2tBbmRXYWl0KFdURjo6RnVuY3Rpb248UigpPiYmIG1haW5UaHJl
YWRUYXNrSGFuZGxlcikKKyAgICBzdGQ6Om9wdGlvbmFsPFI+IGVucXVldWVUYXNrQW5kV2FpdChG
dW5jdGlvbjxSKCk+JiYgbWFpblRocmVhZFRhc2tIYW5kbGVyKQogICAgIHsKICAgICAgICAgLy8g
RG9uJ3QgZGVhZGxvY2sgdGhlIG1haW4gdGhyZWFkIHdpdGggaXRzZWxmLgogICAgICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUYXNrKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQoVGFzayk7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFRhc2s+IGNyZWF0
ZShBYm9ydGFibGVUYXNrUXVldWUqIHRhc2tRdWV1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
dGFza0NhbGxiYWNrKQorICAgICAgICBzdGF0aWMgUmVmPFRhc2s+IGNyZWF0ZShBYm9ydGFibGVU
YXNrUXVldWUqIHRhc2tRdWV1ZSwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2tDYWxsYmFjaykKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzayh0YXNrUXVldWUs
IFdURk1vdmUodGFza0NhbGxiYWNrKSkpOwogICAgICAgICB9CkBAIC0yMDgsMTQgKzIwOCwxNCBA
QCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQWJvcnRhYmxlVGFza1F1ZXVlKiBt
X3Rhc2tRdWV1ZTsKLSAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fdGFza0NhbGxiYWNr
OworICAgICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fdGFza0NhbGxiYWNrOwogCi0gICAgICAgIFRh
c2soQWJvcnRhYmxlVGFza1F1ZXVlKiB0YXNrUXVldWUsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IHRhc2tDYWxsYmFjaykKKyAgICAgICAgVGFzayhBYm9ydGFibGVUYXNrUXVldWUqIHRhc2tRdWV1
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIHRhc2tDYWxsYmFjaykKICAgICAgICAgICAgIDogbV90YXNr
UXVldWUodGFza1F1ZXVlKSwgbV90YXNrQ2FsbGJhY2soV1RGTW92ZSh0YXNrQ2FsbGJhY2spKQog
ICAgICAgICB7IH0KICAgICB9OwogCi0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKQorICAgIHZvaWQgcG9z
dFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xv
Y2spCiAgICAgewogICAgICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKICAgICAgICAgUmVm
PFRhc2s+IHRhc2sgPSBUYXNrOjpjcmVhdGUodGhpcywgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAt
MjM1LDcgKzIzNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Fib3J0aW5nIFdURl9HVUFSREVE
X0JZX0xPQ0sobV9sb2NrKSB7IGZhbHNlIH07CiAgICAgTG9jayBtX2xvY2s7CiAgICAgQ29uZGl0
aW9uIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQ7Ci0gICAgV1RGOjpEZXF1ZTxSZWY8VGFzaz4+IG1f
Y2hhbm5lbCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAgRGVxdWU8UmVmPFRhc2s+
PiBtX2NoYW5uZWwgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9u
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCmluZGV4IDQzOGU3
MjUxNzcyYmU4ZTVhNDc4MTA1YjUyMGNiYzVkZWZmYjVhOTMuLjUyMmM2ODE4MDFjYjhmOTNhYThl
ZWU2NzI5ZmU3NjU5YzI3NDM2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NQVU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1BVTW9uaXRvciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNpbmcgRXhjZWVk
ZWRDUFVMaW1pdEhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoZG91YmxlKT47CisgICAgdXNp
bmcgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKGRvdWJsZSk+OwogICAg
IFdFQkNPUkVfRVhQT1JUIENQVU1vbml0b3IoU2Vjb25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRl
ZENQVUxpbWl0SGFuZGxlciYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q1BVTGlt
aXQoY29uc3Qgc3RkOjpvcHRpb25hbDxkb3VibGU+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlTW9uaXRvci5jcHAKaW5kZXggZjJhZjBhMjAyM2RkODNmNDg4MzljZmUxMDgzNjQyYjEzZDUy
NzFiNi4uZTMxM2JhNTMwMTY3MzU4ZDIzMzRhYmI1YjZmOTU4YWRjMTA1MGE4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoR0xJQikKIAotRmls
ZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYsIFJlZjxXb3JrUXVldWU+JiYsIFdU
Rjo6RnVuY3Rpb248dm9pZChGaWxlQ2hhbmdlVHlwZSk+JiYpCitGaWxlTW9uaXRvcjo6RmlsZU1v
bml0b3IoY29uc3QgU3RyaW5nJiwgUmVmPFdvcmtRdWV1ZT4mJiwgRnVuY3Rpb248dm9pZChGaWxl
Q2hhbmdlVHlwZSk+JiYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5o
CmluZGV4IDM2NjQ3ZWJmY2UyZmVkMzdlOGJkNzFiYzlkNGE0NGVlNmU0MmQwMjEuLjZmMmNlNmM0
ZGI3ZjgzYWQ3ZDZjZTYyN2Q2NWIwZjI2Yjk1YTAxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZU1vbml0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBGaWxlTW9uaXRvciB7CiBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBGaWxlQ2hhbmdlVHlwZSB7IE1vZGlmaWNhdGlvbiwgUmVtb3Zh
bCB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRmlsZU1vbml0b3IoY29uc3QgU3RyaW5nJiwgUmVm
PFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIFdURjo6RnVuY3Rpb248dm9pZChGaWxlQ2hhbmdl
VHlwZSk+JiYgbW9kaWZpY2F0aW9uSGFuZGxlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgRmlsZU1v
bml0b3IoY29uc3QgU3RyaW5nJiwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIEZ1bmN0
aW9uPHZvaWQoRmlsZUNoYW5nZVR5cGUpPiYmIG1vZGlmaWNhdGlvbkhhbmRsZXIpOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5GaWxlTW9uaXRvcigpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmgKaW5kZXggNjNiNmM0YWZmZWM2ZWQw
ODUxOGVjMzJmMzRkMTQ5NWM5NjVjMTdjMi4uMGExMzY4NjE2YjE3MmU1YzcxY2Q3NDc1N2YzYmMw
N2ZlZDhlYzg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG93UG93ZXJN
b2RlTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb3dQb3dlck1vZGVO
b3RpZmllci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExv
d1Bvd2VyTW9kZU5vdGlmaWVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICB1c2luZyBMb3dQb3dlck1vZGVDaGFuZ2VDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCk+OworICAgIHVzaW5nIExvd1Bvd2VyTW9k
ZUNoYW5nZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sIGlzTG93UG93ZXJNb2RlRW5hYmxl
ZCk+OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IExvd1Bvd2VyTW9kZU5vdGlmaWVyKExv
d1Bvd2VyTW9kZUNoYW5nZUNhbGxiYWNrJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Mb3dQb3dl
ck1vZGVOb3RpZmllcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
YWluVGhyZWFkU2hhcmVkVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRo
cmVhZFNoYXJlZFRpbWVyLmNwcAppbmRleCA0MjUxYzg3ZTgxZjcxMDY3MmE3YjNmYmJhN2E4Nzlj
OTBlZTI2MGMyLi5jYjYyZDExYWZhYjYwYTliMTMxMTkyMzc2MjVlNjljYmIzYTA3M2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUo
KQogfQogI2VuZGlmCiAKLXZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0
aW9uKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24pCit2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihGdW5jdGlvbjx2b2lkKCk+JiYgZmlyZWRG
dW5jdGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9maXJlZEZ1bmN0aW9uIHx8ICFmaXJl
ZEZ1bmN0aW9uKTsKICAgICBtX2ZpcmVkRnVuY3Rpb24gPSBXVEZNb3ZlKGZpcmVkRnVuY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRp
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaApp
bmRleCA1N2NiNDM1NTZkZmVkOThhODMwMmQ3OWY1ZTRlYWQxZjg1M2E2YTQ5Li4xYTFiYzYzNjNl
MDJmNTYyYTc2MTVmZmI2ODQ2OTE5YjExYjM5NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaApAQCAtMzYsMTEgKzM2LDExIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciBmaW5hbCA6IHB1
YmxpYyBTaGFyZWRUaW1lciB7Ci0gICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8
TWFpblRocmVhZFNoYXJlZFRpbWVyPjsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8
TWFpblRocmVhZFNoYXJlZFRpbWVyPjsKIHB1YmxpYzoKICAgICBzdGF0aWMgTWFpblRocmVhZFNo
YXJlZFRpbWVyJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9u
KEZ1bmN0aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwo
U2Vjb25kcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBp
bnZhbGlkYXRlKCkgb3ZlcnJpZGU7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyKCk7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4gbV9maXJlZEZ1bmN0aW9uOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9maXJlZEZ1bmN0aW9u
OwogI2lmICFVU0UoQ0YpICYmICFPUyhXSU5ET1dTKQogICAgIFJ1bkxvb3A6OlRpbWVyPE1haW5U
aHJlYWRTaGFyZWRUaW1lcj4gbV90aW1lcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BP
REludGVydmFsLmgKaW5kZXggM2E5ZmU2NjgwY2Q0ZjNhNzEwMDU0OTU5NDc3NGIxNmQ2NmY0ODQ2
Yy4uYjg4ODYzMTIzYTRmZmQ5Y2E2ZmZmMzM0YWM2ZTY3ZTg5NWYzY2YzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5oCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCBwcml2YXRlOgog
ICAgIHVzaW5nIEJhc2UgPSBQT0RJbnRlcnZhbEJhc2U8VCwgVXNlckRhdGE+OwogfTsKIAotdGVt
cGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gY2xhc3MgUE9ESW50ZXJ2YWw8VCwgV1RGOjpXZWFrUHRy
PFU+PiA6IHB1YmxpYyBQT0RJbnRlcnZhbEJhc2U8VCwgV1RGOjpXZWFrUHRyPFU+PiB7Cit0ZW1w
bGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBjbGFzcyBQT0RJbnRlcnZhbDxULCBXZWFrUHRyPFU+PiA6
IHB1YmxpYyBQT0RJbnRlcnZhbEJhc2U8VCwgV2Vha1B0cjxVPj4gewogcHVibGljOgotICAgIFBP
REludGVydmFsKGNvbnN0IFQmIGxvdywgY29uc3QgVCYgaGlnaCwgV1RGOjpXZWFrUHRyPFU+JiYg
ZGF0YSkKLSAgICAgICAgOiBQT0RJbnRlcnZhbEJhc2U8VCwgV1RGOjpXZWFrUHRyPFU+Pihsb3cs
IGhpZ2gsIFdURk1vdmUoZGF0YSkpCisgICAgUE9ESW50ZXJ2YWwoY29uc3QgVCYgbG93LCBjb25z
dCBUJiBoaWdoLCBXZWFrUHRyPFU+JiYgZGF0YSkKKyAgICAgICAgOiBQT0RJbnRlcnZhbEJhc2U8
VCwgV2Vha1B0cjxVPj4obG93LCBoaWdoLCBXVEZNb3ZlKGRhdGEpKQogICAgIHsKICAgICB9CiAK
QEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHVzaW5n
IEJhc2UgPSBQT0RJbnRlcnZhbEJhc2U8VCwgV1RGOjpXZWFrUHRyPFU+PjsKKyAgICB1c2luZyBC
YXNlID0gUE9ESW50ZXJ2YWxCYXNlPFQsIFdlYWtQdHI8VT4+OwogfTsKIAogI2lmbmRlZiBOREVC
VUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgK
aW5kZXggMGY3YjMyZWFhY2EwNjNkMzE0MjEwNTFhMzM3NWRlZjZkYzdmOGQ3NC4uMjI2N2NlNGIy
MWMxNzZiMDU2ZTc2OTZkOTg3ZDhkNjkyYmM0ZWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkU3VwcG9ydGVkQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlKTsKICAgICB2b2lkIHJlbW92ZVN1cHBvcnRlZENvbW1hbmQo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSk7CiAKLSAgICB1
c2luZyBSZW1vdGVDb21tYW5kc1NldCA9IEhhc2hTZXQ8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgV1RGOjpJbnRIYXNoPFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+PjsKKyAgICB1c2lu
ZyBSZW1vdGVDb21tYW5kc1NldCA9IEhhc2hTZXQ8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZSwgSW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj47CiAgICAgdm9pZCBzZXRTdXBw
b3J0ZWRDb21tYW5kcyhjb25zdCBSZW1vdGVDb21tYW5kc1NldCYpOwogICAgIGNvbnN0IFJlbW90
ZUNvbW1hbmRzU2V0JiBzdXBwb3J0ZWRDb21tYW5kcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAKaW5kZXggNTQ0
OWJhZDFiNjAxMWRlNzhkNTg3MGNmNmFhZmY5NGFmZWI0NTRkYy4uMDg5M2Y3ZTc1YWVhNmJlMjRk
Mzk5ZTg2ZmNhODJiNzE2OGQ1ZTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcApAQCAtMzcsNyArMzcsNyBAQCBTY3JvbGxB
bmltYXRpb25Nb21lbnR1bTo6U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0oU2Nyb2xsQW5pbWF0aW9u
Q2xpZW50JiBjbGllbnQpCiAKIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjp+U2Nyb2xsQW5pbWF0
aW9uTW9tZW50dW0oKSA9IGRlZmF1bHQ7CiAKLWJvb2wgU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06
OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQm
IGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgV1RGOjpGdW5jdGlvbjxGbG9hdFBvaW50KGNv
bnN0IEZsb2F0UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIpCitib29sIFNjcm9sbEFuaW1h
dGlvbk1vbWVudHVtOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZ1bmN0aW9uPEZsb2F0
UG9pbnQoY29uc3QgRmxvYXRQb2ludCYpPiYgZGVzdGluYXRpb25Nb2RpZmllcikKIHsKICAgICBh
dXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9t
ZW50dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVt
LmgKaW5kZXggNWM5YmU5MTM0MWQ2NzI0ZWM1MDY5NzRiMjczZWYxNzljZjk3Mjk3OS4uNjE4MDU0
YmI0YTA5NThjN2RiOWQ0ZDMxNjcwNDgwNDJjYWE4NWUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oCkBAIC0zNSw3ICszNSw3IEBA
IHB1YmxpYzoKICAgICBTY3JvbGxBbmltYXRpb25Nb21lbnR1bShTY3JvbGxBbmltYXRpb25DbGll
bnQmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25Nb21lbnR1bSgpOwogCi0gICAgYm9v
bCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50
JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IFdURjo6RnVuY3Rpb248RmxvYXRQb2ludChj
b25zdCBGbG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1vZGlmaWVyKTsKKyAgICBib29sIHN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxEZWx0YSwgY29uc3QgRnVuY3Rpb248RmxvYXRQb2ludChjb25zdCBGbG9hdFBv
aW50Jik+JiBkZXN0aW5hdGlvbk1vZGlmaWVyKTsKICAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5p
bWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSBmaW5hbDsKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKICAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXgg
Y2MwZGVmOWRlMmZhNTAzZThmODA1MjllNTIzNzdjYTExMzE2ZTI5MC4uYWIxOGI4Mjc5YWZmOGVl
ODlhODljMjBlNWEwMzg4NWU1MzRkM2NkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmNwcApAQCAtMzc1LDcgKzM3NSw3IEBAIGZsb2F0IFNjcm9sbEFuaW1hdG9y
OjpwYWdlU2NhbGVGYWN0b3IoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXJUaW1lcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZVRpbWVyKEZ1bmN0aW9u
PHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICByZXR1cm4gV1RGOjptYWtlVW5pcXVlPFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgW2Z1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbiksIHdlYWtTY3JvbGxhYmxlQXJlYSA9IFdlYWtQdHIgeyBtX3Nj
cm9sbGFibGVBcmVhIH1dIHsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlclRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIFtmdW5jdGlvbiA9IFdURk1vdmUo
ZnVuY3Rpb24pLCB3ZWFrU2Nyb2xsYWJsZUFyZWEgPSBXZWFrUHRyIHsgbV9zY3JvbGxhYmxlQXJl
YSB9XSB7CiAgICAgICAgIGlmICghd2Vha1Njcm9sbGFibGVBcmVhKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKaW5kZXggOWRkZmY4MDg5OWY4NmIxYTg5
MWJlOWFiZjc0ZTc2YjRlNDFlYTIwNi4uZTc5ZmI4MGE1NmJmYmM1ZDBkNDkyMmQyMGI1M2ZkNDU5
ZDgyM2MxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzdG9wS2V5Ym9hcmRTY3JvbGxpbmcoKTsKIAotICAgIGJvb2wgc3RhcnRNb21lbnR1bVNjcm9s
bFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBXVEY6OkZ1bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYpPiYg
ZGVzdGluYXRpb25Nb2RpZmllcik7CisgICAgYm9vbCBzdGFydE1vbWVudHVtU2Nyb2xsV2l0aElu
aXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNv
bnN0IEZ1bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYpPiYgZGVzdGluYXRpb25N
b2RpZmllcik7CiAKICAgICB2b2lkIHdpbGxCZWdpbktleWJvYXJkU2Nyb2xsaW5nKCk7CiAgICAg
dm9pZCBkaWRTdG9wS2V5Ym9hcmRTY3JvbGxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKaW5kZXggZDdhYjMxNmUzZTIzOGM4ZGE2ZGFkZGVhZGY3MzVmMTcxZTNiODk5
OC4uNTU1YWQwZmY4MTI5ZjkwOGUwZmM2YjMxMjM5MDVmZjc1ODk2OWNhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE1MCw4ICsxNTAsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CiAKICAgICAgICAgc3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIFdU
Rjo6RnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIFdURjo6RnVu
Y3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90
KigpPiBkYXRhOworICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CiAgICAgICAg
IH07CiAKICAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYg
cHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92
aWRlcikpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGlt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKaW5kZXggMzNkODY5
MzExNDg0YmRhYThlOGVhOGFmNjViYTJiNGRiNzgzYmUxYy4uNzI5NDUyNGRiNzQwNzQyOTE3MjYx
MzJkNTIyMWUxZmViMjQ2N2RmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5o
CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFNoYXJlZFRpbWVyIHsKIHB1YmxpYzoKICAgICBTaGFy
ZWRUaW1lcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5TaGFyZWRUaW1lcigpID0gZGVmYXVs
dDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKEZ1bmN0aW9uPHZv
aWQoKT4mJikgPSAwOwogCiAgICAgLy8gVGhlIGZpcmUgaW50ZXJ2YWwgaXMgaW4gc2Vjb25kcyBy
ZWxhdGl2ZSB0byB0aGUgY3VycmVudCBtb25vdG9uaWMgY2xvY2sgdGltZS4KICAgICB2aXJ0dWFs
IHZvaWQgc2V0RmlyZUludGVydmFsKFNlY29uZHMpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5o
CmluZGV4IGE0YmE2YjA3YTNiNzMwMjRhMzc0NTA5ODg1OTdiN2I0ODg4N2UzYTcuLjU5YmFjYWQ3
ZGFlYzVjM2JlZDVhODY2YTZlZDhkMmNiNjg5MDFhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIu
aApAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiBjbGFzcyBUaW1lciA6IHB1YmxpYyBUaW1l
ckJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyB2b2lkIHNjaGVkdWxlKFNlY29uZHMgZGVsYXksIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1
bmN0aW9uKQorICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlKFNlY29uZHMgZGVsYXksIEZ1bmN0aW9u
PHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8qIHRpbWVyID0gbmV3IFRp
bWVyKFtdIHsgfSk7CiAgICAgICAgIHRpbWVyLT5tX2Z1bmN0aW9uID0gW3RpbWVyLCBmdW5jdGlv
biA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICBUaW1lcihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24p
CisgICAgVGltZXIoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICA6IG1fZnVu
Y3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KQEAgLTEzNSw3ICsxMzUsNyBA
QCBwcml2YXRlOgogICAgICAgICBtX2Z1bmN0aW9uKCk7CiAgICAgfQogICAgIAotICAgIFdURjo6
RnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVu
Y3Rpb247CiB9OwogCiBpbmxpbmUgYm9vbCBUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKQEAg
LTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIERlZmVycmFibGVP
bmVTaG90VGltZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24sIFNlY29uZHMgZGVs
YXkpCisgICAgRGVmZXJyYWJsZU9uZVNob3RUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24sIFNlY29uZHMgZGVsYXkpCiAgICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9u
KSkKICAgICAgICAgLCBtX2RlbGF5KGRlbGF5KQogICAgICAgICAsIG1fc2hvdWxkUmVzdGFydFdo
ZW5UaW1lckZpcmVzKGZhbHNlKQpAQCAtMTk4LDcgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IG1fZnVuY3Rpb24oKTsKICAgICB9CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IG1fZnVu
Y3Rpb247CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOwogCiAgICAgU2Vjb25kcyBt
X2RlbGF5OwogICAgIGJvb2wgbV9zaG91bGRSZXN0YXJ0V2hlblRpbWVyRmlyZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuaAppbmRleCA4NDQ2ODFlNjhlNmEw
ODIwMmQyMTMxZTZlYTMyMmEzNWMzZDYyNzYwLi4yNjFiN2JiNGVjNWVhNDhmNjZlMDFmM2UxNTc0
YmZjM2FkMDczZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XZWJHTFN0
YXRlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dlYkdMU3RhdGVUcmFj
a2VyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2ViR0xT
dGF0ZVRyYWNrZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHVzaW5nIFN0YXRlQ2hhbmdlSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChib29sIGlzVXNp
bmdXZWJHTCk+OworICAgIHVzaW5nIFN0YXRlQ2hhbmdlSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQo
Ym9vbCBpc1VzaW5nV2ViR0wpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBXZWJHTFN0
YXRlVHJhY2tlcihTdGF0ZUNoYW5nZUhhbmRsZXImJik7CiAKICAgICBlbnVtIFdlYkdMQ29udGV4
dENvdW50ZXJUeXBlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5kZXggYWVhMjE2NDY1NTU5
ZDhjZWU1NjAxOTExZmZlNDRhZjg2MDIyNzdiYS4uNDRhNjY5NDdkZTUxZGY2NzY1MTIxZjA5MjYx
NmE4ZDhiYzU3MDkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
Y2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSwKICNlbmRpZgogICAgIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gY3JlYXRlKHNpemVfdCwgV1RGOjpMb2dnZXJI
ZWxwZXImLCBzaXplX3Qgd2FpdFRvU3RhcnRGb3JQdXNoQ291bnQgPSAyKTsKKyAgICBzdGF0aWMg
UmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gY3JlYXRlKHNpemVfdCwgTG9nZ2VySGVscGVyJiwg
c2l6ZV90IHdhaXRUb1N0YXJ0Rm9yUHVzaENvdW50ID0gMik7CiAKICAgICB+QXVkaW9TYW1wbGVE
YXRhU291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCmluZGV4IDMwZGViMmU0Yzc0MWRmNTQ4
OGIzOGY1ZWQ1OWVlYmU1YTAyODliZWMuLmU4MTk3MDc1MDMzYTIyMWVjM2ZmNDgzY2IyNjQ3OTIy
MTcwMTYyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQg
V2ViQXVkaW9CdWZmZXJMaXN0OjpyZXNldCgpCiAgICAgbWVtY3B5KG1fbGlzdC5nZXQoKSwgbV9j
YW5vbmljYWxMaXN0LmdldCgpLCBtX2xpc3RCdWZmZXJTaXplKTsKIH0KIAotV1RGOjpJdGVyYXRv
clJhbmdlPEF1ZGlvQnVmZmVyKj4gV2ViQXVkaW9CdWZmZXJMaXN0OjpidWZmZXJzKCkgY29uc3QK
K0l0ZXJhdG9yUmFuZ2U8QXVkaW9CdWZmZXIqPiBXZWJBdWRpb0J1ZmZlckxpc3Q6OmJ1ZmZlcnMo
KSBjb25zdAogewogICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKCZtX2xpc3QtPm1C
dWZmZXJzWzBdLCAmbV9saXN0LT5tQnVmZmVyc1ttX2xpc3QtPm1OdW1iZXJCdWZmZXJzXSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRp
b0J1ZmZlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1
ZGlvQnVmZmVyTGlzdC5oCmluZGV4IDA3MWViYmM4ZTk3MDQ1ZGFkMDBhOWU3M2Y1ZDM1OTQ2OTI5
MzI3OWEuLmQyNDQ4MTU1MzNiYTkwZGU5MjVjYTJmYmUzZWQzNTAwYWE4NGVkYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB1aW50MzJfdCBidWZmZXJD
b3VudCgpIGNvbnN0OwogICAgIHVpbnQzMl90IGNoYW5uZWxDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2hhbm5lbENvdW50OyB9CiAgICAgQXVkaW9CdWZmZXIqIGJ1ZmZlcih1aW50MzJfdCBpbmRl
eCkgY29uc3Q7Ci0gICAgV1RGOjpJdGVyYXRvclJhbmdlPEF1ZGlvQnVmZmVyKj4gYnVmZmVycygp
IGNvbnN0OworICAgIEl0ZXJhdG9yUmFuZ2U8QXVkaW9CdWZmZXIqPiBidWZmZXJzKCkgY29uc3Q7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZERlc2NyaXB0aW9u
KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IDVmZGE0YWY1
ZjM1M2Y4OTIzOGRlZmZiMDBmNzQ4ZWFhMjdhZmMwMzAuLjI0OGYwYzA0ZTlhYjczNzNjYjI4ZTY3
YzM4ZTQ5ZWNlZGVlNjUzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
ci5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBnYm9vbGVhbiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBHU1Rf
SU5GT19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgIlN0YXRlIGNoYW5nZWQgKG9sZDogJXMsIG5l
dzogJXMsIHBlbmRpbmc6ICVzKSIsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVf
Z2V0X25hbWUob2xkU3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShuZXdTdGF0ZSks
IGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKIAotICAgICAgICAgICAgV1RG
OjpTdHJpbmcgZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShtX3BpcGVs
aW5lLmdldCgpKSwgJ18nLAorICAgICAgICAgICAgU3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0
cmluZyhHU1RfT0JKRUNUX05BTUUobV9waXBlbGluZS5nZXQoKSksICdfJywKICAgICAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShvbGRTdGF0ZSksICdfJywgZ3N0X2VsZW1l
bnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpKTsKIAogICAgICAgICAgICAgR1NUX0RFQlVHX0JJ
Tl9UT19ET1RfRklMRV9XSVRIX1RTKEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdldCgpKSwgR1NU
X0RFQlVHX0dSQVBIX1NIT1dfQUxMLCBkb3RGaWxlTmFtZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVS
ZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggZWJiMWVlMzNmOTNlMDNmMjE5
ODUxYmNlZjllYjg3Y2NlNGY3ZmIyMi4uYmVhZDIwMmZmMzJlYjYzMzk1MDEwNDBjOGQyZDk5MjQ4
OGZlMTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTIz
MCw3ICsyMzAsNyBAQCB2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNz
YWdlKiBtZXNzYWdlKQogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1l
KG5ld1N0YXRlKSwKICAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShw
ZW5kaW5nKSk7CiAKLSAgICAgICAgICAgIFdURjo6U3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0
cmluZyhHU1RfT0JKRUNUX05BTUUobV9waXBlbGluZS5nZXQoKSksICdfJywKKyAgICAgICAgICAg
IFN0cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoR1NUX09CSkVDVF9OQU1FKG1fcGlwZWxp
bmUuZ2V0KCkpLCAnXycsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25h
bWUob2xkU3RhdGUpLCAnXycsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0
X25hbWUobmV3U3RhdGUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oCmluZGV4IDA3MjBjZTQ3
MmViMDg3ZWJlZmUzZTE2OGNjZWZlNjI4Zjk3MGVlOGMuLjY3ZDA3NDBjYWQ2ODQ4MGM0YWIzMzg3
ZmUwZDY5Y2FjZGY2MjNiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmgKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0hhcmR3YXJlTGlzdGVuZXJN
YWMgOiBwdWJsaWMgQXVkaW9IYXJkd2FyZUxpc3RlbmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdURjo6UmVm
PEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYz4gY3JlYXRlKENsaWVudCYpOworICAgIHN0YXRpYyBS
ZWY8QXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjPiBjcmVhdGUoQ2xpZW50Jik7CiAKIHByaXZhdGU6
CiAgICAgQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjKENsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaAppbmRleCBlMWM0NDgwNzFiMjg5ODY0YTVk
ODQxZGRkOThkMmQzZDE5MWIwMmNiLi4wMWUxOGM1YzBmMzE1YjM5OWMxYzE0MWRkOGJjN2RlNzdj
NDA3MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2Jz
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIu
aApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSdW5Mb29wT2Jz
ZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJ1bkxvb3BPYnNlcnZlcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2
b2lkICgpPiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjazsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uPHZv
aWQgKCk+IFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrOwogCiAgICAgUnVuTG9vcE9ic2VydmVyKENG
SW5kZXggb3JkZXIsIFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAg
IDogbV9vcmRlcihvcmRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCmluZGV4IDNi
Njc0N2ZmZWExZDM3MWY4NTA1Zjk3NGIzMWFmOWZiOGJhODMzYTYuLmRmYTRhZWM1N2QwZDdjOTFl
MjFlMGRkZDkxMGM3YjQzYjY3ZDQ0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
aApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtZWRp
YUVuZ2luZUNoYW5nZWQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYkNvcmU6OkV2ZW50JikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9tU3RyaW5nJik7Cisg
ICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhz
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChQbGF5YmFja1Nlc3Npb25N
b2RlbENsaWVudCYpOwpAQCAtMTA4LDggKzEwOCw4IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9F
WFBPUlQgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQoKTsKIAogICAgIHZvaWQgcHJv
Z3Jlc3NFdmVudFRpbWVyRmlyZWQoKTsKLSAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFdURjo6QXRv
bVN0cmluZz4mIG9ic2VydmVkRXZlbnROYW1lcygpOwotICAgIGNvbnN0IFdURjo6QXRvbVN0cmlu
ZyYgZXZlbnROYW1lQWxsKCk7CisgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYg
b2JzZXJ2ZWRFdmVudE5hbWVzKCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lQWxs
KCk7CiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVsZW1lbnQ7CiAgICAg
Ym9vbCBtX2lzTGlzdGVuaW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIuaAppbmRleCBhMDk2ZTA2YTgxOWQ5NzAx
ZTRkNzY0NjMyZTQ3NjA1NjgzZDIxNmIzLi5iZWExNTgxZDNiMjdhMGRkM2Y2ZWJmMTc5ZmQ0Njhj
NjViOTI0NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Qb3dl
clNvdXJjZU5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUG93
ZXJTb3VyY2VOb3RpZmllci5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFBvd2VyU291cmNlTm90aWZpZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UG93ZXJT
b3VyY2VOb3RpZmllcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHVzaW5nIFBvd2VyU291cmNlTm90aWZpZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9p
ZChib29sIGhhc0FDKT47CisgICAgdXNpbmcgUG93ZXJTb3VyY2VOb3RpZmllckNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChib29sIGhhc0FDKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
UG93ZXJTb3VyY2VOb3RpZmllcihQb3dlclNvdXJjZU5vdGlmaWVyQ2FsbGJhY2smJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgflBvd2VyU291cmNlTm90aWZpZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5oCmluZGV4IDQyMDc1YzNkMmIxM2RiNzNi
Y2VhNjVjNTAzMDUxYzM4ZmJjZGEzNTIuLjUyNjc3ZjUwZTMzNDM4MTlmNGUyNTVmOTFlYjIyZjY4
NjU2OTgyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1N5c3Rl
bUJhdHRlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0
ZXJ5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IG1faGFzQmF0dGVyeTsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFzQUM7
Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fY29uZmlndXJhdGlvbkNoYW5nZWRDYWxsYmFj
azsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fY29uZmlndXJhdGlvbkNoYW5nZWRDYWxsYmFjazsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IDJjNTFkODNiMWI4
NzU1MWFjZWIwYzM0MjMwOWFkY2ZkNTg5MTMwNTQuLmQ5MjVkMDVmYTFkYzBhMGNkYWZlYjdjNjZi
MTdjZjMwODk0OWNmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtNTYs
MTIgKzU2LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRWxl
bWVudChIVE1MVmlkZW9FbGVtZW50Kik7CiAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW9FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0VsZW1lbnQuZ2V0KCk7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9
IFtdIHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0g
W10geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKEZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
V2ViQ29yZTo6RXZlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShj
b25zdCBXVEY6OkF0b21TdHJpbmcmKTsKKyAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25z
dCBBdG9tU3RyaW5nJik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IHJocykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6
RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWRkQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CkBAIC04
OCw4ICs4OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUo
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgb3ZlcnJpZGU7
CiAKLSAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFdURjo6QXRvbVN0cmluZz4mIG9ic2VydmVkRXZl
bnROYW1lcygpOwotICAgIGNvbnN0IFdURjo6QXRvbVN0cmluZyYgZXZlbnROYW1lQWxsKCk7Cisg
ICAgc3RhdGljIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgb2JzZXJ2ZWRFdmVudE5hbWVzKCk7
CisgICAgY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAKICAgICBSZWZQdHI8SFRN
TFZpZGVvRWxlbWVudD4gbV92aWRlb0VsZW1lbnQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAwMjY5ZmU1N2ViMWMzMWJm
MTg2M2VhYTI3ZTA1ZmE3NDVlZGUwNTc4Li5mYmMyODNmYmMzMzY5YmY4MjdlMzE2OTk0YzRjOTRl
MDYzNjNjYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjbGVhckNsaWVudCgpIHsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0g
ICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqKSB7IH0KICNl
bmRpZgogCiAgICAgZW51bSBjbGFzcyBJbXBsZW1lbnRhdGlvblR5cGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNl
c3Npb24uaAppbmRleCAxODU3YWI2MTU3NTYyZGQwZDFlZDI3ZDhkYzUxNjViZTY0MWYxYjJjLi4z
N2NkMDdjN2JmMmRjNzVlNDFmZDVjNmM3ZGVjZjQzZTEwMzllMTE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNl
c3Npb24uaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWVzc2FnZVR5cGUg
PSBDRE1NZXNzYWdlVHlwZTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZpcnR1
YWwgdm9pZCBzZXRMb2dnZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHNldExvZ2dlcihMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CiAjZW5kaWYKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGll
bnQ+JiYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJpdmF0ZS5oCmluZGV4IDRkNWU3ZjczMTQ5MDNmOGYwYWJhOWNlNmJkZGEwZmUyZGUz
NDEzNzUuLjZkMTdhY2VlMTU0MGVmMDc2NWViZGM3NzBhNzMyZDM4MGIwZWEzNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkNE
TVByaXZhdGUoKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRMb2dnZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9OworICAgIHZpcnR1YWwg
dm9pZCBzZXRMb2dnZXIoTG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfTsKICNlbmRpZgogCiAgICAg
ZW51bSBjbGFzcyBMb2NhbFN0b3JhZ2VBY2Nlc3MgOiBib29sIHsKQEAgLTU4LDcgKzU4LDcgQEAg
cHVibGljOgogICAgICAgICBBbGxvd2VkLAogICAgIH07CiAKLSAgICB1c2luZyBTdXBwb3J0ZWRD
b25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPik+OworICAgIHVzaW5nIFN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uPik+OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBnZXRTdXBw
b3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVD
b25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25D
YWxsYmFjayYmKTsKIAogICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZElu
aXREYXRhVHlwZXMoKSBjb25zdCA9IDA7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgog
ICAgIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gZ2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjYW5kaWRhdGVD
b25maWd1cmF0aW9uLCBDRE1SZXN0cmljdGlvbnMmLCBMb2NhbFN0b3JhZ2VBY2Nlc3MpOwogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0eT4+IGdldFN1cHBvcnRlZENh
cGFiaWxpdGllc0ZvckF1ZGlvVmlkZW9UeXBlKEF1ZGlvVmlkZW9UeXBlLCBjb25zdCBWZWN0b3I8
Q0RNTWVkaWFDYXBhYmlsaXR5PiYgcmVxdWVzdGVkQ2FwYWJpbGl0aWVzLCBjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiBwYXJ0aWFsQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25z
Jik7CiAKLSAgICB1c2luZyBDb25zZW50U3RhdHVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoQ29uc2VudFN0YXR1cywgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBDRE1SZXN0cmlj
dGlvbnMmJik+OworICAgIHVzaW5nIENvbnNlbnRTdGF0dXNDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoQ29uc2VudFN0YXR1cywgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBDRE1SZXN0cmlj
dGlvbnMmJik+OwogICAgIHZvaWQgZ2V0Q29uc2VudFN0YXR1cyhDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiYgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCBDRE1SZXN0cmljdGlvbnMmJiwgTG9j
YWxTdG9yYWdlQWNjZXNzLCBDb25zZW50U3RhdHVzQ2FsbGJhY2smJik7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5k
ZXggZmM3YTMxYTJhMTY5NDcyMTcxMTE2Nzk2YmU5NDM2YzA2MzFhNTZjOS4uZjIxOGY5NzkwNGZi
YmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IGJvb2wgS2V5U3RvcmU6OmNvbnRhaW5zS2V5SUQoY29uc3QgS2V5SURUeXBlJiBrZXlJRCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9rZXlzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmUHRyPEtl
eUhhbmRsZT4mIHN0b3JlZEtleSkgewogICAgICAgICByZXR1cm4gKnN0b3JlZEtleSA9PSBrZXlJ
RDsKLSAgICB9KSAhPSBXVEY6Om5vdEZvdW5kOworICAgIH0pICE9IG5vdEZvdW5kOwogfQogCiB2
b2lkIEtleVN0b3JlOjptZXJnZShjb25zdCBLZXlTdG9yZSYgb3RoZXIpCkBAIC0xNTQsNyArMTU0
LDcgQEAgYm9vbCBLZXlTdG9yZTo6YWRkKFJlZlB0cjxLZXlIYW5kbGU+JiYga2V5KQogICAgIH0p
OwogCiAgICAgYWRkU2Vzc2lvblJlZmVyZW5jZVRvKGtleSk7Ci0gICAgaWYgKGtleVdpdGhNYXRj
aGluZ0tleUlESW5kZXggIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChrZXlXaXRoTWF0Y2hp
bmdLZXlJREluZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIGF1dG8mIGtleVdpdGhNYXRjaGlu
Z0tleUlEID0gbV9rZXlzW2tleVdpdGhNYXRjaGluZ0tleUlESW5kZXhdOwogICAgICAgICBkaWRT
dG9yZUNoYW5nZSA9IGtleVdpdGhNYXRjaGluZ0tleUlEICE9IGtleTsKICAgICAgICAgaWYgKGRp
ZFN0b3JlQ2hhbmdlKQpAQCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgS2V5U3RvcmU6OnVucmVmKGNv
bnN0IFJlZlB0cjxLZXlIYW5kbGU+JiBrZXkpCiAgICAgc2l6ZV90IGtleVdpdGhNYXRjaGluZ0tl
eUlESW5kZXggPSBtX2tleXMuZmluZChrZXkpOwogICAgIExPRyhFTUUsICJFTUUgLSBDbGVhcktl
eSAtIHJlcXVlc3RlZCB0byB1bnJlZiBrZXkgd2l0aCBJRCAlcyBhbmQgJWQgc2Vzc2lvbiByZWZl
cmVuY2VzIiwga2V5LT5pZEFzU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIGtleS0+bnVtU2Vzc2lv
blJlZmVyZW5jZXMoKSk7CiAKLSAgICBpZiAoa2V5V2l0aE1hdGNoaW5nS2V5SURJbmRleCAhPSBX
VEY6Om5vdEZvdW5kKSB7CisgICAgaWYgKGtleVdpdGhNYXRjaGluZ0tleUlESW5kZXggIT0gbm90
Rm91bmQpIHsKICAgICAgICAgYXV0byYga2V5V2l0aE1hdGNoaW5nS2V5SUQgPSBtX2tleXNba2V5
V2l0aE1hdGNoaW5nS2V5SURJbmRleF07CiAgICAgICAgIHJlbW92ZVNlc3Npb25SZWZlcmVuY2VG
cm9tKGtleVdpdGhNYXRjaGluZ0tleUlEKTsKICAgICAgICAgaWYgKCFrZXlXaXRoTWF0Y2hpbmdL
ZXlJRC0+aGFzUmVmZXJlbmNlcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCmluZGV4IDY2YTAxMWVkNGE4
YWY4ZDE4OGI2NzhlMjgxOTlkM2VkMTdkNmJjNjUuLmM2NWZkZGQ5N2EwMGNjYTBiZDE4OTI1NzU2
ZTMxMDFkODIxMTcxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBDRE1SZXN0cmljdGlvbnMgewogICAgIGJvb2wgZGlzdGlu
Y3RpdmVJZGVudGlmaWVyRGVuaWVkIHsgZmFsc2UgfTsKICAgICBib29sIHBlcnNpc3RlbnRTdGF0
ZURlbmllZCB7IGZhbHNlIH07Ci0gICAgSGFzaFNldDxDRE1TZXNzaW9uVHlwZSwgV1RGOjpJbnRI
YXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNzaW9u
VHlwZT4+IGRlbmllZFNlc3Npb25UeXBlczsKKyAgICBIYXNoU2V0PENETVNlc3Npb25UeXBlLCBJ
bnRIYXNoPENETVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNz
aW9uVHlwZT4+IGRlbmllZFNlc3Npb25UeXBlczsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTU4LDcgKzU4
LDcgQEAgc3RydWN0IENETVJlc3RyaWN0aW9ucyB7CiAgICAgICAgIGlmICghcGVyc2lzdGVudFN0
YXRlRGVuaWVkKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBz
dGQ6Om9wdGlvbmFsPEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUsIFdURjo6SW50SGFzaDxDRE1TZXNz
aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+Pj4gZGVu
aWVkU2Vzc2lvblR5cGVzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8Q0RNU2Vzc2lv
blR5cGUsIEludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKICAgICAgICAgZGVjb2RlciA+
PiBkZW5pZWRTZXNzaW9uVHlwZXM7CiAgICAgICAgIGlmICghZGVuaWVkU2Vzc2lvblR5cGVzKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwCmluZGV4IGZjMzk2MGYzOWY0
NDZlMzU0MjVmMTQ0YWY4NzVhNWY5NGZiNjNjN2IuLmFhYzNlYzJkY2E0OGM4MzVkMDMwYTQwOWY3
MjY5NjUxMzQwMTg3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvR2FtZXBhZENvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcApAQCAtMzcsNyArMzcsNyBAQCBjb25zdCBHYW1lcGFk
QnV0dG9uUm9sZSBtYXhpbXVtR2FtZXBhZEJ1dHRvbiA9IEdhbWVwYWRCdXR0b25Sb2xlOjpDZW50
ZXJDbHVzdGVyQwogY29uc3Qgc2l6ZV90IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dp
dGhvdXRIb21lQnV0dG9uID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhpbXVtR2FtZXBhZEJ1dHRv
bik7CiBjb25zdCBzaXplX3QgbnVtYmVyT2ZTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aEhvbWVC
dXR0b24gPSBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRob3V0SG9tZUJ1dHRvbiAr
IDE7CiAKLWNvbnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkK
K2NvbnN0IFN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3RhbmRhcmRHYW1lcGFkTWFwcGluZyA9ICJzdGFu
ZGFyZCI7CiAgICAgcmV0dXJuIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmc7CkBAIC00NSw3ICs0NSw3
IEBAIGNvbnN0IFdURjo6U3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKIAog
I2lmIEVOQUJMRShXRUJYUikKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHItZ2FtZXBhZHMtbW9kdWxlLyNkb20tZ2FtZXBhZG1hcHBpbmd0eXBlLXhyLXN0YW5kYXJkCi1j
b25zdCBXVEY6OlN0cmluZyYgeHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKK2NvbnN0
IFN0cmluZyYgeHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCkKIHsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmcgPSAieHItc3Rh
bmRhcmQiOwogICAgIHJldHVybiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCmluZGV4IDYz
M2FmZDczZDM3NDdmYWEzYTA4YWU3NTZjYjQzMjE1MTI1ZDI1NGYuLjI0YTZlOTlkOTk4YjQ1NWU3
ZWQ4ZTc1ZjY5MDNiMWMxYTA5MWJhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0YW50cy5oCkBAIC02MSw5ICs2MSw5IEBAIGV4dGVybiBj
b25zdCBzaXplX3QgbnVtYmVyT2ZTdGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0
b247CiBleHRlcm4gY29uc3Qgc2l6ZV90IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dp
dGhIb21lQnV0dG9uOwogZXh0ZXJuIGNvbnN0IEdhbWVwYWRCdXR0b25Sb2xlIG1heGltdW1HYW1l
cGFkQnV0dG9uOwogCi1jb25zdCBXVEY6OlN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0
cmluZygpOworY29uc3QgU3RyaW5nJiBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CiAj
aWYgRU5BQkxFKFdFQlhSKQotY29uc3QgV1RGOjpTdHJpbmcmIHhyU3RhbmRhcmRHYW1lcGFkTWFw
cGluZ1N0cmluZygpOworY29uc3QgU3RyaW5nJiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJp
bmcoKTsKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKaW5kZXggYTRiMWEzY2I0YTk4
MGMxNDRhZTZlYjIzOWI3NDQ0M2M2YjVjZGU3Yy4uNWQxY2QxNmNhNDkxMGUyNzNjODdjMDBlNmU3
OWFlMDYyODVhOWZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9G
aWxlTW9uaXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmls
ZU1vbml0b3JHTGliLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZpbGVNb25pdG9yOjpGaWxlTW9uaXRvcihjb25zdCBTdHJpbmcmIHBhdGgsIFJlZjxXb3Jr
UXVldWU+JiYgaGFuZGxlclF1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZUNoYW5nZVR5cGUp
PiYmIG1vZGlmaWNhdGlvbkhhbmRsZXIpCitGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3IoY29uc3Qg
U3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgRnVuY3Rpb248dm9p
ZChGaWxlQ2hhbmdlVHlwZSk+JiYgbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICA6IG1faGFuZGxl
clF1ZXVlKFdURk1vdmUoaGFuZGxlclF1ZXVlKSkKICAgICAsIG1fbW9kaWZpY2F0aW9uSGFuZGxl
cihXVEZNb3ZlKG1vZGlmaWNhdGlvbkhhbmRsZXIpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDYwMjc3MzRlMTkzYjYyNTg3
NDFlMGI3MGRlYTQ1NThlMTJhNWRiY2IuLmM5MjZjNWQyM2YyMDZkZTYyYTk4NzMwMGY5ZWNmNjk5
MmM3YjRmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFu
aW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9CiAK
LXZvaWQgQml0bWFwSW1hZ2U6OmRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFj
aykKK3ZvaWQgQml0bWFwSW1hZ2U6OmRlY29kZShGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2sp
CiB7CiAgICAgaWYgKCFtX2RlY29kaW5nQ2FsbGJhY2tzKQogICAgICAgICBtX2RlY29kaW5nQ2Fs
bGJhY2tzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDk2OTIwMjBk
OTIzYWJiMTg4ZWE4NDU1NmE2OWExMGZiZmQ2MzY1Y2YuLjllYzU0ZjYzYjNhYmNlOWQwM2VhNjYw
ZWZmMTVkYTM5OTYyMzUyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCkBAIC0yMjcsNyArMjI3LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKIH07CiAKLXRlbXBs
YXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiA6IFdU
Rjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gewor
dGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+
IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gewog
fTsKIAogfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHN0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5SGFz
aFRyYWl0cyA6IEhhc2hUcmFpdHM8Rm9udENhc2NhZGVDYWNoZUtleT4gewogdXNpbmcgRm9udENh
c2NhZGVDYWNoZSA9IEhhc2hNYXA8Rm9udENhc2NhZGVDYWNoZUtleSwgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4sIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoLCBGb250Q2Fz
Y2FkZUNhY2hlS2V5SGFzaFRyYWl0cz47CiAKIGNsYXNzIEZvbnRDYWNoZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEZvbnRDYWNoZT4gewotICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVk
PEZvbnRDYWNoZSwgTWFpblRocmVhZEFjY2Vzc1RyYWl0cz47CisgICAgZnJpZW5kIGNsYXNzIE5l
dmVyRGVzdHJveWVkPEZvbnRDYWNoZSwgTWFpblRocmVhZEFjY2Vzc1RyYWl0cz47CiAKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShGb250Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dM
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
Y3BwCmluZGV4IDdhYmMzYzA4ZmUyMTg4NmQyYWIyMTllZGI5M2EwMTBjZGJkZTUxZmYuLjM5YzYw
Y2Y5N2E1ZjAzOTA5MDE5ZTQ2ZTUwOGNmYzg2ZWIwMzNmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2lu
Y2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAotdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZp
YzsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaHJlYWRHbG9iYWxHTENvbnRleHQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmNwcAppbmRleCA1NmEzNzlmODNjMDNjOTAyMjk2ZDZmNTU2MWIzZTFjNmY5OGI2YTcxLi5jNzVk
YTU2YTgzNjE1NmNjMGQ1ZTVhN2RmMWJmYjBjNGIyYjI2MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtODEyLDcgKzgx
Miw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVyc2Uo
R3JhcGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoR3JhcGhpY3NM
YXllciYpPiYgdHJhdmVyc2FsRnVuYykKK3ZvaWQgR3JhcGhpY3NMYXllcjo6dHJhdmVyc2UoR3Jh
cGhpY3NMYXllciYgbGF5ZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NMYXllciYpPiYg
dHJhdmVyc2FsRnVuYykKIHsKICAgICB0cmF2ZXJzYWxGdW5jKGxheWVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDIxOWY3
NTMwY2RiYzE0MTQ5MTczMDllYjEzNjc4YTExOTZlYTM4Y2YuLmJmOTUwOWYxOGNjYjk1OTkyM2Rk
OWY1ZDVmYjI1MmJlMThiOTg5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTY0NCw3ICs2NDQsNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBhbmltYXRpb25FeHRlbnQoKSBjb25zdCB7
IHJldHVybiBtX2FuaW1hdGlvbkV4dGVudDsgfQogICAgIHZvaWQgc2V0QW5pbWF0aW9uRXh0ZW50
KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBhbmltYXRpb25FeHRlbnQpIHsgbV9hbmltYXRpb25F
eHRlbnQgPSBhbmltYXRpb25FeHRlbnQ7IH0KIAotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlKEdy
YXBoaWNzTGF5ZXImLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXImKT4m
KTsKKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGljc0xheWVyJiwgY29uc3QgRnVuY3Rp
b248dm9pZChHcmFwaGljc0xheWVyJik+Jik7CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBHcmFwaGljc0xheWVyKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXNHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dM
LmgKaW5kZXggNTAxOTlkZGZhNTZhNmNhMWU2ZDI2MmM5OGM0NzkxNTMyMTAwY2QxOS4uMzM2NTZh
MTU2MTNkZjYzMjI2NWE5MzMyODgyYmQxMTFhNjgwZGY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlc0dMLmgKQEAgLTExMSw3ICsxMTEs
NyBAQCBzdHJ1Y3QgR0NHTFNwYW48VCwgZ2NHTFNwYW5EeW5hbWljRXh0ZW50PiB7CiAgICAgICAg
ICwgYnVmU2l6ZShvdGhlci5idWZTaXplKQogICAgIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBHQ0dMU3BhbihXVEY6OlZlY3RvcjxVLCBp
bmxpbmVDYXBhY2l0eT4mIGFycmF5LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGli
bGVfdjxVKCopW10sIFQoKilbXT4sIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCisgICAgR0NH
TFNwYW4oVmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXksIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19jb252ZXJ0aWJsZV92PFUoKilbXSwgVCgqKVtdPiwgc3RkOjpudWxscHRyX3Q+ID0g
bnVsbHB0cikKICAgICAgICAgOiBkYXRhKGFycmF5LmRhdGEoKSkKICAgICAgICAgLCBidWZTaXpl
KGFycmF5LnNpemUoKSkKICAgICB7IH0KQEAgLTEzOCw3ICsxMzgsNyBAQCBzdHJ1Y3QgR0NHTFNw
YW48R0NHTHZvaWQ+IHsKICAgICAgICAgLCBidWZTaXplKG90aGVyLmJ1ZlNpemUgKiBzaXplb2Yo
VSkpCiAgICAgeyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgotICAgIEdDR0xTcGFuKFdURjo6VmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkp
CisgICAgR0NHTFNwYW4oVmVjdG9yPFUsIGlubGluZUNhcGFjaXR5PiYgYXJyYXkpCiAgICAgICAg
IDogZGF0YShhcnJheS5kYXRhKCkpCiAgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkgKiBz
aXplb2YoVSkpCiAgICAgeyB9CkBAIC0xNzcsNyArMTc3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IE4+CiBHQ0dMU3BhbihzdGQ6OmFycmF5PFQsIE4+JikgLT4gR0NHTFNwYW48VCwg
Tj47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLUdDR0xT
cGFuKFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdDR0xTcGFuPFQ+OworR0NH
TFNwYW4oVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEdDR0xTcGFuPFQ+OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogR0NHTFNwYW48VD4gbWFrZUdDR0xTcGFuKFQqIGRhdGEsIHNpemVf
dCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggNzM2NGNjY2EzMDFjYTg3ZWE3YzZmZTkxOTJlMmNmYmEyODNhNDFmZS4uYTFh
MDhhZGMxNzVkNDRiYWE0NDJlNDRhOTRhYTk2N2EwNGY1ZjYwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTg5LDkgKzg5LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5j
ID0gV1RGOjpGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwotICAgIHVzaW5nIENhbkRlY29kZVR5
cGVGdW5jID0gV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsKLSAgICB1c2luZyBD
cmVhdGVJbWFnZURlY29kZXJGdW5jID0gV1RGOjpGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVy
PihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pPjsKKyAgICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBGdW5j
dGlvbjxib29sKE1lZGlhVHlwZSk+OworICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0gRnVu
Y3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47CisgICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVy
RnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAg
ICAgc3RydWN0IEltYWdlRGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlw
ZUZ1bmMgc3VwcG9ydHNNZWRpYVR5cGU7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hhbmdl
Q2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKEVuY29kZWREYXRhU3RhdHVzKT4mJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hhbmdlQ2FsbGJhY2soRnVuY3Rp
b248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+JiYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Np
emVBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBlbmNvZGVkRGF0YVN0YXR1cygpID49IEVuY29k
ZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlOyB9CiAgICAgdmlydHVhbCBJbnRTaXplIHNpemUo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAppbmRleCAxYzRkOTFj
ODI0MWY1M2Q3YmY3N2Q4Nzk3YzlmNmMzMzg2ZTEyYzdlLi45OWZjMDRhZWQxMzQ2YzljNTNkODgz
YTQ4NmQ3MTI3NjgzYmNiZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbnRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UmVjdC5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBpbnQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gV1RG
OjpDcmFzaE9uT3ZlcmZsb3c+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBDcmFzaE9uT3Zl
cmZsb3c+CiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgVD4gYXJlYSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZS5hcmVhPFQ+KCk7IH0KIAogICAgIHZvaWQgc2V0WChpbnQgeCkgeyBtX2xvY2F0aW9uLnNl
dFgoeCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAppbmRl
eCAwOTVmMDMxNDRkZjk3MjY3ZjEwMjU1ZTI1Njc0ZWQ5NjYyZGRmZmY3Li41ZWY4NzZmOWYzODY5
OTA3NTMzY2FiODcwMTQ0MGYyNjVhYzA2ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgSW50U2l6ZSBjb25zdHJhaW5lZEJldHdlZW4oY29uc3QgSW50U2l6ZSYgbWlu
LCBjb25zdCBJbnRTaXplJiBtYXgpIGNvbnN0OwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQg
PSBXVEY6OkNyYXNoT25PdmVyZmxvdz4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IENyYXNo
T25PdmVyZmxvdz4KICAgICBDaGVja2VkPHVuc2lnbmVkLCBUPiBhcmVhKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBDaGVja2VkPHVuc2lnbmVkLCBUPihhYnMobV93aWR0aCkpICogYWJz
KG1faGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAppbmRleCA1NjVmMWNlYmRmMTE2OWMzNzkxM2Y5MmIwZmIzM2M4NjczZDAxZTU3
Li5hNDM2YTU1OGE3OTlhNjY2YTZlZjZhNGY1ZjM4MDk1NGQxNzA2NTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC04MjUsNyAr
ODI1LDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGVWaWRl
b0Z1bGxzY3JlZW5MYXllcigpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlVmlkZW9GdWxs
c2NyZWVuTGF5ZXIoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIoUGxhdGZvcm1MYXllciogbGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVBsYXllcjo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciogbGF5ZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBtX3ByaXZhdGUtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKGxheWVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC0xNjgwLDcgKzE2ODAsNyBAQCBBVlBsYXll
ciogTWVkaWFQbGF5ZXI6Om9iakNBVkZvdW5kYXRpb25BVlBsYXllcigpIGNvbnN0CiAKICNlbmRp
ZgogCi1ib29sIE1lZGlhUGxheWVyOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIHRhc2ssIGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK2Jvb2wgTWVkaWFQbGF5
ZXI6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2ssIGNvbnN0
IE1lZGlhVGltZSYgdGltZSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5wZXJmb3JtVGFza0F0
TWVkaWFUaW1lKFdURk1vdmUodGFzayksIHRpbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggZGI4NWEzM2Q4N2M1MmEzNzc5YzUy
YTUwMjE5YWE4YTI0MTI0Mzg4NS4uNWIxZTE3NDUxM2UwNmZhMDFkNTE5MGI1NWU1MDUzNTU1ZWZk
NzYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oCkBAIC0zMjUsNyArMzI1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKQogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1
bGxzY3JlZW5MYXllcigpOwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10g
eyB9KTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVZpZGVv
RnVsbHNjcmVlbklubGluZUltYWdlKCk7CiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6Vmlk
ZW9HcmF2aXR5OwpAQCAtNzU0LDcgKzc1NCw3IEBAIHB1YmxpYzoKIAogY2xhc3MgUmVtb3RlTWVk
aWFQbGF5ZXJTdXBwb3J0IHsKIHB1YmxpYzoKLSAgICB1c2luZyBSZWdpc3RlclJlbW90ZVBsYXll
ckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhRW5naW5lUmVnaXN0cmFyLCBNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpPjsKKyAgICB1c2luZyBSZWdpc3Rl
clJlbW90ZVBsYXllckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJh
ciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKT47CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdp
c3RlclJlbW90ZVBsYXllckNhbGxiYWNrJiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCmluZGV4IGRhZTk4Zjk1NGMz
ZWUwZjI1NDA4M2I1N2U1ZDhhZjdmN2ZlNTQ3NGYuLjQwOGEwMWNmMzI5YjZjMjkzYWU4MWQ0YzI0
ZjUwYmNkNGNiOTJjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyRW51bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllckVudW1zLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBzdHJ1Y3QgTG9nQXJn
dW1lbnQ7CiAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6UmVhZHlTdGF0ZT4gewotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlIHN0YXRlKQorICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UmVhZHlTdGF0ZSBzdGF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhzdGF0ZSk7CiAgICAgfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0cnVjdCBMb2dB
cmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlPiB7CiAKIHRlbXBs
YXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0
d29ya1N0YXRlPiB7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZSBzdGF0ZSkKKyAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0
ZSBzdGF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhzdGF0ZSk7CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU+IHsKIAogdGVtcGxhdGUgPD4K
IHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQ
b2xpY3k+IHsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5IHBvbGljeSkKKyAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OkJ1ZmZlcmluZ1Bv
bGljeSBwb2xpY3kpCiAgICAgewogICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9T
dHJpbmcocG9saWN5KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGM1MDNjNjRjN2Q0OTQ4YThmZGU0
ZTk0YzYxNzkzZTgxMWY5YjEyMDIuLmY1YTQwYWJjOGE3OWE2Y2UwNjRiNzAyY2RkMGM5YTlhYTY2
M2RkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICB2aXJ0dWFsIFJldGFpblB0cjxQbGF0Zm9y
bUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIHsgcmV0dXJuIG51bGxwdHI7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25I
YW5kbGVyKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxh
dGZvcm1MYXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVl
bklubGluZUltYWdlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZy
YW1lKEZsb2F0UmVjdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmgKaW5kZXggN2YzYzgxODg2NTY5MTBiODRmYWE2MDY1YmQ2ZjMzMTU5
MTYyOTQ0Yi4uN2I5ODc2YWIxYzc4NThiNTRiODBkOTA4ZTZhODBlNTk2MjNmYmUyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0
cnVjdCBQYXRoRWxlbWVudCB7CiAgICAgVHlwZSB0eXBlOwogfTsKIAotdXNpbmcgUGF0aEFwcGxp
ZXJGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBQYXRoRWxlbWVudCYpPjsKK3Vz
aW5nIFBhdGhBcHBsaWVyRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFBhdGhFbGVtZW50
Jik+OwogCiBjbGFzcyBQYXRoIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEz
NywxMyArMTM3LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGF0aCBwb2x5Z29uUGF0aEZyb21Q
b2ludHMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+Jik7CiAKICAgICBib29sIGNvbnRhaW5zKGNv
bnN0IEZsb2F0UG9pbnQmLCBXaW5kUnVsZSA9IFdpbmRSdWxlOjpOb25aZXJvKSBjb25zdDsKLSAg
ICBib29sIHN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXVEY6OkZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiBzdHJva2VTdHlsZUFwcGxpZXIpIGNvbnN0Owor
ICAgIGJvb2wgc3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiBzdHJva2VTdHlsZUFwcGxpZXIpIGNvbnN0OwogCiAg
ICAgLy8gZmFzdEJvdW5kaW5nUmVjdCgpIHNob3VsZCBlcXVhbCBvciBjb250YWluIGJvdW5kaW5n
UmVjdCgpOyBib3VuZGluZ1JlY3QoKQogICAgIC8vIHNob3VsZCBwZXJmZWN0bHkgYm91bmQgdGhl
IHBvaW50cyB3aXRoaW4gdGhlIHBhdGguCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBmYXN0Qm91bmRpbmdSZWN0KCkgY29u
c3Q7Ci0gICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nUmVjdChjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiBzdHJva2VTdHlsZUFwcGxpZXIgPSB7IH0pIGNvbnN0
OworICAgIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ1JlY3QoY29uc3QgRnVuY3Rpb248dm9pZChH
cmFwaGljc0NvbnRleHQmKT4mIHN0cm9rZVN0eWxlQXBwbGllciA9IHsgfSkgY29uc3Q7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBzaXplX3QgZWxlbWVudENvdW50KCkgY29uc3Q7CiAgICAgZmxvYXQg
bGVuZ3RoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUxheWVyLmgKaW5kZXggNjc4ODJjOTRjYTY5OWFjNGY2MmQ4YmY0MDE5NTYxNjQ5Y2Y2
ZDY2OS4uZDczOGQ3MzlmNGE0ZTBmMjZiZjhlZTIxMTAyZmU2OTYwYmNmOTk1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaApAQCAtNTIs
MTAgKzUyLDEwIEBAIHVzaW5nIFBsYXRmb3JtTGF5ZXIgPSB2b2lkKjsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLXVzaW5nIFBsYXRmb3JtTGF5ZXJD
b250YWluZXIgPSBXVEY6OlJldGFpblB0cjxQbGF0Zm9ybUxheWVyPjsKK3VzaW5nIFBsYXRmb3Jt
TGF5ZXJDb250YWluZXIgPSBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj47CiAjZWxpZiBVU0UoVEVY
VFVSRV9NQVBQRVIpCiB1c2luZyBQbGF0Zm9ybUxheWVyQ29udGFpbmVyID0gc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtTGF5ZXI+OwogI2Vsc2UKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci11c2lu
ZyBQbGF0Zm9ybUxheWVyQ29udGFpbmVyID0gV1RGOjpSZWZQdHI8UGxhdGZvcm1MYXllcj47Cit1
c2luZyBQbGF0Zm9ybUxheWVyQ29udGFpbmVyID0gUmVmUHRyPFBsYXRmb3JtTGF5ZXI+OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bVRpbWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
VGltZVJhbmdlcy5oCmluZGV4IDRmOWQxNTM1YTc5MzdjZjE1NjRlNGE0YzgzOTQyZTAwZjY0NTAy
NjIuLjc4Zjk4NmU1NTA3ZjI4NWEyN2UzMmZkM2Q1M2JjM2UxZjE2Mjk1ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5o
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIE1lZGlhVGltZSB0b3RhbER1cmF0aW9u
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNvbnN0OworICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVGltZVJhbmdlcz4gZGVjb2RlKERl
Y29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZVZpZGVvU2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVWaWRlb1NhbXBsZS5oCmluZGV4IGI3M2E1ODQ0MTY3MDFmOTAwNzEwOTk2OTg3ZmNhOTMwZDJh
YWZlNDkuLmE2MTcwYjMyOGZjNDRhY2U2OTNkY2RiMzVlZTRkM2NlNjg3MzM4YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUu
aApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2lvU3VyZmFjZSkKICAg
ICAgICAgICAgIGVuY29kZXIgPDwgbV9pb1N1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBlbmNvZGVyIDw8IFdURjo6TWFjaFNlbmRSaWdodCgpOwor
ICAgICAgICAgICAgZW5jb2RlciA8PCBNYWNoU2VuZFJpZ2h0KCk7CiAgICAgICAgIGVuY29kZXIg
PDwgbV9yb3RhdGlvbjsKICAgICAgICAgZW5jb2RlciA8PCBtX3RpbWU7CiAgICAgICAgIGVuY29k
ZXIgPDwgbV92aWRlb0Zvcm1hdDsKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1faW1hZ2VCdWZmZXI7Ci0gICAgV1RGOjpNYWNoU2Vu
ZFJpZ2h0IG1fc2VuZFJpZ2h0OworICAgIE1hY2hTZW5kUmlnaHQgbV9zZW5kUmlnaHQ7CiAgICAg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV9yb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpOb25lIH07CiAgICAgTWVkaWFUaW1lIG1fdGltZTsKICAgICB1aW50MzJfdCBt
X3ZpZGVvRm9ybWF0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5oCmluZGV4IDBjOTc2Yjg3NTFiZDZlZmYwY2E3YWQyMjc4MjM2NjEyODhhODg5
MDEuLjE0ZmQ4M2VkZTFhMWJhY2YxNzdmMzMxZWNhZDFhNDMwMjkzZjYwM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKQEAgLTYyLDExICs2Miwx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9s
ZVJlY3QpOwogCi0gICAgdXNpbmcgRHJhd0J1ZmZlckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYpPjsK
LSAgICB1c2luZyBEcmF3SW1hZ2VDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYpPjsKLSAgICB1c2luZyBG
aWxsUmVjdENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IENvbG9yJik+OwotICAgIHVzaW5nIEZpbGxSZWN0V2l0aEhvbGVDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBD
b2xvciYpPjsKLSAgICB1c2luZyBEcmF3U2hhZG93Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+OworICAgIHVzaW5nIERyYXdCdWZmZXJDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRT
aXplJik+OworICAgIHVzaW5nIERyYXdJbWFnZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYpPjsKKyAgICB1c2lu
ZyBGaWxsUmVjdENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBDb2xvciYpPjsKKyAgICB1c2luZyBGaWxsUmVjdFdpdGhIb2xlQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJik+
OworICAgIHVzaW5nIERyYXdTaGFkb3dDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+OwogCiAgICAgLy8gRHJhd0J1ZmZlckNhbGxiYWNrIGlzIGZvciBkcmF3aW5nIHNo
YWRvdyB3aXRob3V0IHRpbGluZy4KICAgICAvLyBEcmF3SW1hZ2VDYWxsYmFjayBhbmQgRmlsbFJl
Y3RDYWxsYmFjayBpcyBmb3IgZHJhd2luZyBzaGFkb3cgd2l0aCB0aWxpbmcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
Y3BwCmluZGV4IGE5NGIxYzE5Mzg4NDkxYzBjOTA5NDk3M2FjM2FkYmQ5YTRiOTg0N2IuLjY4N2M3
OGMyODFjYTA0NTQwNDg1Y2NiYWUwMWQ4NGNkNjAzMzcyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBA
IC00NTMsNyArNDUzLDcgQEAgc3RhdGljIFBsYXRmb3JtVGltZVJhbmdlcyByZW1vdmVTYW1wbGVz
RnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWEKICAgICBNZWRpYVRpbWUg
ZWFybGllc3RTYW1wbGUgPSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAg
TWVkaWFUaW1lIGxhdGVzdFNhbXBsZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKICAgICB1aW50
NjRfdCBieXRlc1JlbW92ZWQgPSAwOwotICAgIGF1dG8gbG9nSWRlbnRpZmllciA9IFdURjo6TG9n
Z2VyOjpMb2dTaXRlSWRlbnRpZmllcihzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dDbGFzc05hbWUo
KSwgbG9nUHJlZml4LCBzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dJZGVudGlmaWVyKCkpOworICAg
IGF1dG8gbG9nSWRlbnRpZmllciA9IExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoc291cmNlQnVm
ZmVyUHJpdmF0ZS0+bG9nQ2xhc3NOYW1lKCksIGxvZ1ByZWZpeCwgc291cmNlQnVmZmVyUHJpdmF0
ZS0+bG9nSWRlbnRpZmllcigpKTsKICAgICBhdXRvJiBsb2dnZXIgPSBzb3VyY2VCdWZmZXJQcml2
YXRlLT5sb2dnZXIoKTsKICAgICBhdXRvIHdpbGxMb2cgPSBsb2dnZXIud2lsbExvZyhzb3VyY2VC
dWZmZXJQcml2YXRlLT5sb2dDaGFubmVsKCksIFdURkxvZ0xldmVsOjpEZWJ1Zyk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFu
YWdlci5oCmluZGV4IGFkM2MxYmI3OWFlZGNhYWUzZTc5N2ZkOGZiMmQ2YWFhODZlZDMzY2EuLmRm
N2I3OGExNTRmODI5MzljMTY1ZDUzMWFmZWVkYWMwYmVhYjgxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaApAQCAtNDQs
NyArNDQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1M
YXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9y
bUltYWdlUHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KFBsYXRmb3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBs
YXRmb3JtSW1hZ2VQdHIpID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3Jl
ZW5GcmFtZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVu
RnJhbWUoRmxvYXRSZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNj
cmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAppbmRleCA1MmE3YjA4NjZjZDA3MGQyZGRl
ODg0ZTQ3MjhlYjM0ZDg1M2E4NzM1Li40ZTYyMjM5M2MyYWRkMWZlOGQzOWZmYmY0MDRmNTdkMzg5
M2JlNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNo
ZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOyAvLyBFbXB0eSBhbmQgZGVs
ZXRlZCB2YWx1ZXMgaGF2ZSBsZW5ndGhzIHRoYXQgYXJlIG5vdCBlcXVhbCB0byBhbnkgdmFsaWQg
bGVuZ3RoLgogICAgIH07CiAKLSAgICBzdHJ1Y3QgU21hbGxTdHJpbmdLZXlIYXNoVHJhaXRzIDog
V1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U21hbGxTdHJpbmdLZXk+IHsKKyAgICBzdHJ1Y3Qg
U21hbGxTdHJpbmdLZXlIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNtYWxsU3Ry
aW5nS2V5PiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0
aW9uID0gdHJ1ZTsKICAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNtYWxs
U3RyaW5nS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5pc0hhc2hUYWJsZUVtcHR5VmFsdWUoKTsgfQog
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1UYWJsZVNpemUgPSAxNjsKQEAgLTIyNSw3
ICsyMjUsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdpZHRoQ2FjaGU6OlNtYWxs
U3RyaW5nS2V5JiBhLCBjb25zdCBXaWR0aENhY2hlOjpTbQogewogICAgIGlmIChhLmxlbmd0aCgp
ICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gV1RGOjpl
cXVhbChhLmNoYXJhY3RlcnMoKSwgYi5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOworICAgIHJl
dHVybiBlcXVhbChhLmNoYXJhY3RlcnMoKSwgYi5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAppbmRleCBlY2I5
ZjZjMDkzNGM2MzZkNmNjMTU1NjRlODVkNmJmNWQ4MzRhMjhiLi4wYTYxZWZjMDk2YzFjZmVjYTk5
OTNmOWVjYWYxYWM3NzJiODVhNjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHVibGljOgogICAgIEdDR0xlbnVtIGFkanVzdFdlYkdMMVRleHR1cmVJbnRlcm5hbEZv
cm1hdChHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlKTsKIAogcHJpdmF0ZToKLSAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFdURjo6
U3RyaW5nJik7CisgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsKICAg
ICBTdHJpbmcgZ2V0RXh0ZW5zaW9ucygpOwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVB
dmFpbGFibGVFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5oCmluZGV4IDM4
MzU4NWNjMTliMzlkMzFhZDRjZjZkNjc1YmIwMTkyOTIxY2I5MjYuLjMwNDc3MDk3NTM0NDgxMjRl
OGYyZGM2OWUyYTAyM2U5NzgyOWNmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5oCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHZhbHVlIHVwb24gZGVzdHJ1
Y3Rpb24sIG1ha2luZyBpdCBhbiBhbHRlcm5hdGl2ZSB0byBjaGVja2luZywgY2xlYXJpbmcsIGFu
ZCByZXNldHRpbmcgZWFjaCBmbGFnCiAvLyBhdCBhbGwgb2YgYSBibG9jaydzIGV4aXQgcG9pbnRz
LgogLy8KLS8vIEJhc2VkIG9uIFdURjo6U2V0Rm9yU2NvcGU8PgorLy8gQmFzZWQgb24gU2V0Rm9y
U2NvcGU8PgogCiBjbGFzcyBUZW1wb3JhcnlBTkdMRVNldHRpbmcgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFRlbXBvcmFyeUFOR0xFU2V0dGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCmluZGV4IDE0OTc0MzkwZjQwYjAzYTBjYjZlNTU5YzllNmMwZmUwOThh
MDQxOTEuLmJjOTNmNmY2YTdiZGQwMWVmYmY1NWI2MmJkYjZhNGU2NmVmOTEyYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKIAogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZvaWQgc2V0TG9nZ2VyKFdURjo6TG9nZ2VyJiwgY29u
c3Qgdm9pZCogbG9nSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBzZXRMb2dnZXIoTG9nZ2Vy
JiwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikgZmluYWw7CiAjZW5kaWYKIAogICAgIFZlY3Rv
cjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3Qgb3ZlcnJpZGU7CkBA
IC04NywxMSArODcsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAotICAgIFdURjo6TG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xv
Z2dlci5nZXQoKTsgfTsKKyAgICBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1f
bG9nZ2VyLmdldCgpOyB9OwogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUo
KSBjb25zdCB7IHJldHVybiAiQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nIjsgfQogCi0gICAg
UmVmUHRyPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dl
cjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAjZW5kaWYKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmlu
ZGV4IDU5N2VmYTI2ODQ5Yjc0NGRiNzQzZDM1MmNkMWMwNmYzNDEzNzZmZjkuLmM5OThkOWY2NDcw
ZTgwZjhkNGNkZDVlMTI2NmYwNWIxMmJkNjEwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC02NTcsNyArNjU3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQoYm9v
bCBmaW5pc2hlZCkKIAogICAgIG1fc2Vla2luZyA9IGZhbHNlOwogCi0gICAgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+IHBlbmRpbmdTZWVrOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gcGVuZGluZ1NlZWs7
CiAgICAgc3RkOjpzd2FwKHBlbmRpbmdTZWVrLCBtX3BlbmRpbmdTZWVrKTsKIAogICAgIGlmIChw
ZW5kaW5nU2VlaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCmluZGV4IDcxM2Y1YzNjMzNjOGI0MDdhMTQyMTA3MzMwMDVhZDA0ZTFh
YWE5ZWMuLjYyNjdiODMzMjEyOTliMTNlYTdlZDJhNDA1ZTRjYmI4NWU0NDg4M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAg
LTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IE5vdGlmaWNhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCisgICAgICAg
IE5vdGlmaWNhdGlvbihGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgICAgICA6
IG1fdHlwZShGdW5jdGlvblR5cGUpCiAgICAgICAgICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiAg
ICAgICAgICAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCkBAIC0xMjcsMTMgKzEy
NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIHsgcmV0dXJuIG1fdHlwZSAh
PSBOb25lOyB9CiAgICAgICAgIE1lZGlhVGltZSB0aW1lKCkgeyByZXR1cm4gbV90aW1lOyB9CiAg
ICAgICAgIGJvb2wgZmluaXNoZWQoKSB7IHJldHVybiBtX2ZpbmlzaGVkOyB9Ci0gICAgICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQor
ICAgICAgICBGdW5jdGlvbjx2b2lkICgpPiYgZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9u
OyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIFR5cGUgbV90eXBlOwogICAgICAg
ICBNZWRpYVRpbWUgbV90aW1lOwogICAgICAgICBib29sIG1fZmluaXNoZWQ7Ci0gICAgICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4gbV9mdW5jdGlvbjsKKyAgICAgICAgRnVuY3Rpb248dm9pZCgp
PiBtX2Z1bmN0aW9uOwogICAgIH07CiAKICAgICB2b2lkIHNjaGVkdWxlTWFpblRocmVhZE5vdGlm
aWNhdGlvbihOb3RpZmljYXRpb24mJik7CkBAIC0zMzIsNyArMzMyLDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAKLSAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4gbV9wZW5kaW5nU2VlazsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fcGVuZGluZ1Nl
ZWs7CiAKICAgICBtdXRhYmxlIExvY2sgbV9xdWV1ZWROb3RpZmljYXRpb25zTG9jazsKICAgICBE
ZXF1ZTxOb3RpZmljYXRpb24+IG1fcXVldWVkTm90aWZpY2F0aW9ucyBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fcXVldWVkTm90aWZpY2F0aW9uc0xvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5k
ZXggYmM2NTg3ZTJjODk2NGY3MWU1ZjRhNjUzYjBiYmNiMmQ1NjU0MzFiYy4uMTU5YjkwY2RiNDhm
N2ZlNDRiYjQ5YmUyZWMxYzFjMmY0MzI4NjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBA
IC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQygpID0gZGVmYXVsdDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgIHZvaWQgc2V0TG9nZ2VyKFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCogbG9nSWRlbnRp
Zmllcik7CisgICAgdm9pZCBzZXRMb2dnZXIoTG9nZ2VyJiwgY29uc3Qgdm9pZCogbG9nSWRlbnRp
Zmllcik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUGVyc2lzdGFibGVTdGF0
ZSgpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVVbmV4cGVj
dGVkUmVxdWVzdHMoVmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBXVEY6OkxvZ2dlciogbG9nZ2VyUHRyKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH07CisgICAgTG9nZ2VyKiBsb2dnZXJQdHIo
KSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfTsKICAgICBjb25zdCB2b2lkKiBsb2dJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkNETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDIjsgfQogI2VuZGlmCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM+PiBtX3Nlc3Npb25zOwogICAgIEhhc2hTZXQ8UmV0YWluUHRyPEFWQ29udGVudEtleVJl
cXVlc3Q+PiBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0czsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBSZWZQdHI8V1RGOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZlB0cjxMb2dnZXI+
IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsK
ICNlbmRpZgogfTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCk7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihXVEY6OkxvZ2dlciYsIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIpOworICAgIHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24K
QEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3Rh
dHVzPiBwcm90ZWN0aW9uU3RhdHVzRm9yRGlzcGxheUlEKEFWQ29udGVudEtleVJlcXVlc3QgKiwg
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4pIGNvbnN0OwogCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgV1RGOjpMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJu
IG1fbG9nZ2VyLmdldCgpOyB9OworICAgIExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1
cm4gbV9sb2dnZXIuZ2V0KCk7IH07CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNz
TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMiOyB9CiAjZW5kaWYKQEAgLTIyNiw3ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgbV9yZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrOwogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRyPFdURjo6TG9nZ2VyPiBtX2xvZ2dl
cjsKKyAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lk
ZW50aWZpZXIgeyBudWxscHRyIH07CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggYTI4ZDRjNDMwMWU2NzI1MDkyOThmNTNjZTdj
N2QyOTRjZjE3OTM5Zi4uMDMzNGQ2MjNiMmE3NjA1YzliZTEyMjEzYjVhYmRiYmFjMmIwM2YxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApAQCAtNjQs
NyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9taW1lVHlwZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFbmNv
ZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChFbmNvZGVkRGF0
YVN0YXR1cyk+JiYpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5jb2RlZERh
dGFTdGF0dXNDaGFuZ2VDYWxsYmFjayhGdW5jdGlvbjx2b2lkKEVuY29kZWREYXRhU3RhdHVzKT4m
JikgZmluYWw7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25z
dCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwpAQCAt
MTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdlYkNvcmVTaGFyZWRCdWZm
ZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlPiBtX2xvYWRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbjsKICAgICBSZWY8
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNzaW9uOwotICAg
IFdURjo6RnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+IG1fZW5jb2RlZERhdGFTdGF0
dXNDaGFuZ2VkQ2FsbGJhY2s7CisgICAgRnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+
IG1fZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkQ2FsbGJhY2s7CiAKICAgICBTYW1wbGVNYXAgbV9z
YW1wbGVEYXRhOwogICAgIERlY29kZU9yZGVyU2FtcGxlTWFwOjppdGVyYXRvciBtX2N1cnNvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggNTNmMDJjMTgzMDJmZmQzYWNkZmRjNDNjOTVm
MGIyM2IxNGI1ZDc3ZS4uZDcwYzUyZjRiYzFjNDAwODJiN2EwMjQwMmZlN2U4YzJlMjQxMGM1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uKiBkZWNvbXByZXNzaW9uU2Vzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVjb21wcmVzc2lvblNlc3Npb24uZ2V0KCk7IH0KIAogICAgIFJldGFp
blB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIG92ZXJyaWRl
OwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
aAppbmRleCA0YzRhMTZjZTU5NmUxM2JiMzJkZGM4NTg0N2U5ODY5ZjY2MTZmMmM5Li5hZmVlYzc3
NTk4YTVlMWY3NDE1Y2Y1MmNjM2Y2YzE5ZTY4NWIwYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaApAQCAtMjExLDcgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2
YWlsYWJsZShNZWRpYVNhbXBsZSYpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJl
Y3QpIG92ZXJyaWRlOwogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92
aWRlcigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oCmluZGV4IDcyNzVhZDQ4MGZmYzI1M2JkMzNiYjYyNjc1MjgyZmEzOWNh
MDFjYjguLmMyMmU3MjVmODU0NmYyNzhmZjY1N2E1ZjRjNTcyYjkyOTUxNWVkNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAg
LTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFs
OwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIGZpbmFsOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCogaWRl
bnRpZmllcikgZmluYWw7CisgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qg
dm9pZCogaWRlbnRpZmllcikgZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkUGFyc2VTdHJl
YW1EYXRhQXNBc3NldChBVkFzc2V0Kik7CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBXVEY6OkxvZ2dlciog
bG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBM
b2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAg
Y29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmll
cjsgfQogI2VuZGlmCiAKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcGFy
c2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZlB0cjxjb25z
dCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51
bGxwdHIgfTsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXll
ck1hbmFnZXJPYmpDLmgKaW5kZXggZGIwYzA3OTc2ZmMyMTViNjRlMmQwMmVmNzNiNjZhMTkyMjRh
ZDg2Yi4uMzBjY2VjYTA5YTI2ZWY3ZjI1MWM4NGQ5MDEzYTEwOWEyMDM5Nzg1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9MYXllck1hbmFnZXJPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmgKQEAgLTY0LDcgKzY0
LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAg
IFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29u
c3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIsIFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CiAgICAgV0VCQ09SRV9F
WFBPUlQgRmxvYXRSZWN0IHZpZGVvRnVsbHNjcmVlbkZyYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZp
bmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5l
SW1hZ2UoUGxhdGZvcm1JbWFnZVB0cikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyZDJmMTFh
NDdkNjQ2ZGVkOTAxMWI1YjJlOGUzZTIzZjZmNzY2MWVlLi42ZjcwNWVmYjZkZDUyMzdiNjM3ZjBi
MzNiNmM2NGE1NjQwYmEwMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMyMTcsNyArMzIxNyw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKCkKIAogICAgICAgICAgICAg
TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiogZWFybGllc3RBbmltYXRpb24gPSBudWxscHRyOwogICAg
ICAgICAgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPj4gY2FBbmltYXRpb25z
OwotICAgICAgICAgICAgZm9yIChhdXRvKiBhbmltYXRpb24gOiBXVEY6Om1ha2VSZXZlcnNlZFJh
bmdlKGFuaW1hdGlvbnMpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGFuaW1hdGlvbiA6IG1h
a2VSZXZlcnNlZFJhbmdlKGFuaW1hdGlvbnMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
YmVnaW5UaW1lID0gYW5pbWF0aW9uLT5jb21wdXRlZEJlZ2luVGltZSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghZWFybGllc3RBbmltYXRpb24gfHwgKmVhcmxpZXN0QW5pbWF0aW9uLT5j
b21wdXRlZEJlZ2luVGltZSgpID4gKmJlZ2luVGltZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGVhcmxpZXN0QW5pbWF0aW9uID0gYW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgK
aW5kZXggNWQ0YWEwYjVhNzMyOTIxMTFmMjI0MjdkYzZjMGFiYjY1YzQzMGVmZS4uNGIzMzU2YzM1
NWU0ODBjODAwMjk0NjdlMTFkN2QwMzg4Y2U1ZWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIENhaXJvU3RhdGU7
CiAgICAgQ2Fpcm9TdGF0ZSogbV9jYWlyb1N0YXRlOwotICAgIFdURjo6VmVjdG9yPENhaXJvU3Rh
dGU+IG1fY2Fpcm9TdGF0ZVN0YWNrOworICAgIFZlY3RvcjxDYWlyb1N0YXRlPiBtX2NhaXJvU3Rh
dGVTdGFjazsKIAogICAgIC8vIFRyYW5zcGFyZW5jeSBsYXllcnMuCiAgICAgVmVjdG9yPGZsb2F0
PiBtX2xheWVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCBhZjU5YTAxZTdhZmUxZjUz
YThmYzdmMGFkM2YwYjQ5NzE1MDQ1OGJmLi45MjM4ZWE4NmRiNjQ4NTEwNTkxYTE3NWYyMDA3OWY4
NmNhMWQ2NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAg
U3RyaW5nIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3UKIAogc3RkOjp1bmlxdWVfcHRyPFRocmVhZFNhZmVJbWFn
ZUJ1ZmZlckZsdXNoZXI+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjcmVhdGVGbHVzaGVyKCkKIHsK
LSAgICByZXR1cm4gV1RGOjptYWtlVW5pcXVlPFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXJD
Rz4oY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
aHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyQ0c+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnByZXBhcmVUb0RyYXdJbnRvQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCmluZGV4IGRlMTFl
MzBmMWQ0YzEyNWNlYTY4Njc0MTBjZTg4Y2RlZjExMzA4OGEuLjkxZDIzM2FjNGExNGFjZGRmODU1
YmRjNGZhOTA3ZWY0ZjRjMzIzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKQEAgLTY4LDcg
KzY4LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBTdWJpbWFnZUNhY2hlSGFzaCB7CiAgICAgICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goUHRy
SGFzaDxDR0ltYWdlUmVmPjo6aGFzaChpbWFnZSksCisgICAgICAgICAgICByZXR1cm4gcGFpcklu
dEhhc2goUHRySGFzaDxDR0ltYWdlUmVmPjo6aGFzaChpbWFnZSksCiAgICAgICAgICAgICAgICAg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LngoKSkgPDwgMTYpIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHJlY3QueSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgU3ViaW1hZ2VDYWNoZUVudHJ5JiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCmluZGV4IDVmOTI1MDY0OTIxMjA2
ODQ0NjUzYjRiNWVhNzJlNWZjODRiOGNiNGUuLjU2NTI0NzgyMmRiYTI5Zjc2MDBiOTQwN2U2ZjRh
Y2I4YzFhMDZhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0lPU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0lPU3VyZmFjZS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogCiAjaWYgSEFW
RShJT1NVUkZBQ0VfQUNDRUxFUkFUT1IpCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
YWxsb3dDb252ZXJzaW9uRnJvbUZvcm1hdFRvRm9ybWF0KEZvcm1hdCwgRm9ybWF0KTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9Gb3JtYXQoc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OklPU3VyZmFjZT4mJiBpblN1cmZhY2UsIEZvcm1hdCwgV1RGOjpGdW5jdGlvbjx2
b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+KT4mJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgY29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQsIEZ1bmN0aW9uPHZvaWQoc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4pPiYmKTsKICNlbmRpZiAvLyBIQVZFKElPU1VS
RkFDRV9BQ0NFTEVSQVRPUikKIAogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBfSURF
TlRJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eUNvY29hLmNwcAppbmRleCAxMjIyNjAzN2NiMTUwMzc0ZjAxMGViMzAwNjMxYzE0NTEwY2I4MTJk
Li45NDQ4OGEzMjE3MGVhY2QwNDU5N2Y1MzVlYjMwNjU2ZDg1OTdmNjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKQEAgLTE2
MCw3ICsxNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+
IGNvbXB1dGVNZWRpYUNhcGFiaWxpdGllc0luZm8oY29uc3QgTQogICAgIHJldHVybiBpbmZvOwog
fQogCi12b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EoTWVk
aWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+JiYgY2FsbGJhY2spCit2b2lkIGNy
ZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EoTWVkaWFEZWNvZGluZ0Nv
bmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0
aWVzRGVjb2RpbmdJbmZvJiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8gaW5mbyA9IGNvbXB1
dGVNZWRpYUNhcGFiaWxpdGllc0luZm8oY29uZmlndXJhdGlvbik7CiAgICAgaWYgKCFpbmZvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaApp
bmRleCA1NTkzZmE0NzBiYmQwNDlmMDI3NWQ2MDFjN2RlMmY3MGI4ZjUzODViLi42ZDYyOTQ5YWE4
YmRjNGRlMTMyNGNlYTEzODRmYTQ4M2YwMTE4OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm87CiBz
dHJ1Y3QgTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb247CiAKLWV4dGVybiB2b2lkIGNyZWF0ZU1l
ZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EoTWVkaWFEZWNvZGluZ0NvbmZpZ3Vy
YXRpb24mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZv
JiYpPiYmKTsKK2V4dGVybiB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0
aW9uQ29jb2EoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRnVuY3Rpb248dm9pZChNZWRp
YUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYmKT4mJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuaAppbmRleCBjMjEwMWE2OTI5YWFlZjkwOTY0MGI3OTE4YmYyNWFlNjZlYjk3YTM4Li5hNjU2
NjQ5YzViNjQ3YWZmYThkMTI4MzY5MTA1ZmVkMDdhOTk1ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgID4gbV9zZWdtZW50OwogICAg
IH07CiAKLSAgICB1c2luZyBDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayA9IFdURjo6RnVuY3Rp
b248dm9pZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik+OworICAgIHVzaW5nIENhbGxPbkNsaWVu
dFRocmVhZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPjsKICAg
ICB2b2lkIHNldENhbGxPbkNsaWVudFRocmVhZENhbGxiYWNrKENhbGxPbkNsaWVudFRocmVhZENh
bGxiYWNrJiYpOwogCiAgICAgLy8gYXBwZW5kRGF0YSB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgZGF0YSBwYXJzZXIgcXVldWUuCkBAIC05OSw0MCArOTks
NDAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihmbG9hdCk7CiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihjb25zdCBXVEY6
OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpID0g
MDsKICNlbmRpZgogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgog
ICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0
aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVu
dCYmKT47CisgICAgdXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpPjsKICAgICB2b2lkIHNldERpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFD
YWxsYmFjayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0
aW9uRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgfQogCiAgICAgLy8gV2ls
bCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHVzaW5nIERpZEVuY291bnRlckVy
cm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IGVy
cm9yQ29kZSk+OworICAgIHVzaW5nIERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxi
YWNrID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCBlcnJvckNvZGUpPjsKICAgICB2b2lkIHNldERp
ZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKERpZEVuY291bnRlckVycm9yRHVy
aW5nUGFyc2luZ0NhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2RpZEVuY291
bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAg
fQogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHVzaW5n
IERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWY8TWVk
aWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKT47
CisgICAgdXNpbmcgRGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChS
ZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2soRGlkUHJvdmlk
ZU1lZGlhRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2RpZFByb3Zp
ZGVNZWRpYURhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8v
IFdpbGwgYmUgY2FsbGVkIHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KLSAgICB1
c2luZyBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJh
Y2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90IHRyYWNrSUQpPjsKKyAg
ICB1c2luZyBXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lEKT47CiAgICAg
dm9pZCBzZXRXaWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRENhbGxiYWNrKFdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fd2ls
bFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFdpbGwgYmUgY2FsbGVk
IHN5bmNocm9ub3VzbHkgb24gdGhlIHBhcnNlciB0aGVhZC4KLSAgICB1c2luZyBEaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQpPjsK
KyAgICB1c2luZyBEaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
b3JUcmFja0lEQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZjxVaW50OEFycmF5PiYmLCB1aW50
NjRfdCB0cmFja0lEKT47CiAgICAgdm9pZCBzZXREaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2soRGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrJiYgY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBtX2RpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA3MmUwOTkzODFjMzY5MGRiN2NiNjgzZjczNmZmZDdi
YzM1OGRmZjI3Li5iZjQ3MzdlZjA1NGZkZGMyNWI0OWFlMmMzMmEyNDk1ODBmZDkwODllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNTg5LDggKzU4OSw4IEBAIE1lZGlh
UGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRl
bnRUeXBlU3VwcG9ydGVkKGNvCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBw
b3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAgYXV0byBjb250YWluZXJUeXBlID0gdHlw
ZS5jb250YWluZXJUeXBlKCk7Ci0gICAgYm9vbCBpc0F1ZGlvQ29udGFpbmVyVHlwZSA9IFdURjo6
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAiYXVkaW8vd2VibSIpOwotICAg
IGJvb2wgaXNWaWRlb0NvbnRhaW5lclR5cGUgPSBXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y29udGFpbmVyVHlwZSwgInZpZGVvL3dlYm0iKTsKKyAgICBib29sIGlzQXVkaW9Db250YWluZXJU
eXBlID0gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAiYXVkaW8vd2VibSIp
OworICAgIGJvb2wgaXNWaWRlb0NvbnRhaW5lclR5cGUgPSBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGNvbnRhaW5lclR5cGUsICJ2aWRlby93ZWJtIik7CiAgICAgaWYgKCFpc0F1ZGlvQ29udGFpbmVy
VHlwZSAmJiAhaXNWaWRlb0NvbnRhaW5lclR5cGUpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
ckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogICAgIApAQCAtNjczLDEwICs2
NzMsMTAgQEAgUmVmUHRyPFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0+IFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OmNyZWF0ZShjb25zdCBDb250ZW50VHlwZSYKIH0KIAogU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCi0gICAgOiBtX3JlYWRlcihXVEY6Om1ha2VV
bmlxdWVSZWY8U2VnbWVudFJlYWRlcj4oKSkKKyAgICA6IG1fcmVhZGVyKG1ha2VVbmlxdWVSZWY8
U2VnbWVudFJlYWRlcj4oKSkKIHsKICAgICBpZiAoaXNXZWJtUGFyc2VyQXZhaWxhYmxlKCkpCi0g
ICAgICAgIG1fcGFyc2VyID0gV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxX
ZWJtUGFyc2VyPigpOworICAgICAgICBtX3BhcnNlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPFdlYm1QYXJzZXI+KCk7CiB9CiAKIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06On5T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNKCkKQEAgLTkyMSw3ICs5MjEsNyBAQCBTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25FYm1sKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEs
IGNvbnN0IEVibQogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6
OkludmFsaWREb2NUeXBlKSk7CiAKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRl
cmVkID0gdHJ1ZTsKLSAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURjo6bWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SW5pdGlhbGl6YXRpb25TZWdtZW50PigpOworICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
SW5pdGlhbGl6YXRpb25TZWdtZW50PigpOwogICAgIC8vIFRPRE86IFNldHRpbmcgdGhpcyB0byBm
YWxzZSBoZXJlLCB3aWxsIHByZXZlbnQgYWRkaW5nIGEgbmV3IG1lZGlhIHNlZ21lbnQgc2hvdWxk
IGEKICAgICAvLyBwYXJ0aWFsIGluaXQgc2VnbWVudCBiZSBlbmNvdW50ZXJlZCBhZnRlciBhIGNh
bGwgdG8gc291cmNlQnVmZmVyLmFib3J0KCkuCiAgICAgLy8gSXQncyBwcm9iYWJseSBmaW5lIGFz
IG5vLW9uZSBpbiB0aGVpciByaWdodCBtaW5kIHNob3VsZCBzZW5kIHBhcnRpYWwgaW5pdCBzZWdt
ZW50IG9ubHkKQEAgLTEyMDgsNyArMTIwOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6cHJvdmlkZU1lZGlhRGF0YShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsCiAg
ICAgfSk7CiB9CiAKLSNkZWZpbmUgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSguLi4pIGlm
IChwYXJzZXIoKS5sb2dnZXJQdHIoKSkgcGFyc2VyKCkubG9nZ2VyUHRyKCktPmVycm9yKGxvZ0No
YW5uZWwoKSwgV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKGxvZ0NsYXNzTmFtZSgpLCBf
X2Z1bmNfXywgcGFyc2VyKCkubG9nSWRlbnRpZmllcigpKSwgX19WQV9BUkdTX18pCisjZGVmaW5l
IFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoLi4uKSBpZiAocGFyc2VyKCkubG9nZ2VyUHRy
KCkpIHBhcnNlcigpLmxvZ2dlclB0cigpLT5lcnJvcihsb2dDaGFubmVsKCksIExvZ2dlcjo6TG9n
U2l0ZUlkZW50aWZpZXIobG9nQ2xhc3NOYW1lKCksIF9fZnVuY19fLCBwYXJzZXIoKS5sb2dJZGVu
dGlmaWVyKCkpLCBfX1ZBX0FSR1NfXykKIAogUmV0YWluUHRyPENNQmxvY2tCdWZmZXJSZWY+IFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OlRyYWNrRGF0YTo6Y29udGlndW91c0NvbXBsZXRlQmxvY2tC
dWZmZXIoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaAppbmRleCAwYjJlYWIyZDA1MjVmNmU0ODZkZTFjMDQ2MDM0Nzk4YTk0
NWE0NzVlLi5jMTllN2Y3ZDNlOWQ2MzRkYzViN2QxNzBiZmM4MWIzN2NlMjIyNWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC04MywxMCArODMsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgZmx1c2hQZW5kaW5nQXVkaW9CdWZmZXJzKCk7CiAgICAgdm9pZCBzZXRNaW5pbXVtQXVk
aW9TYW1wbGVEdXJhdGlvbihmbG9hdCk7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRMb2dnZXIoY29uc3QgV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25z
dCB2b2lkKiBpZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcHJvdmlkZU1lZGlhRGF0YShS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+LCB1aW50NjRfdCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGJ5dGVSYW5nZU9mZnNldCk7Ci0gICAgdXNpbmcgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lELCBjb25zdCBNZWRpYVRp
bWUmIGRpc2NhcmRQYWRkaW5nKT47CisgICAgdXNpbmcgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQodWludDY0X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFUaW1lJiBk
aXNjYXJkUGFkZGluZyk+OwogICAgIHZvaWQgc2V0RGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFj
ayhEaWRQYXJzZVRyaW1taW5nRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAg
ICBtX2RpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKQEAg
LTI0OCw3ICsyNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZsb2F0IG1fbWluaW11bVNhbXBsZUR1
cmF0aW9uIHsgMiB9OwogICAgIH07CiAKLSAgICBjb25zdCBXVEY6OkxvZ2dlciogbG9nZ2VyUHRy
KCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBMb2dnZXIqIGxv
Z2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qgdm9p
ZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogCiBw
cml2YXRlOgpAQCAtMjkzLDcgKzI5Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwogICAgIGZsb2F0IG1fbWluaW11bUF1ZGlvU2Ft
cGxlRHVyYXRpb24geyAyIH07CiAKLSAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9n
Z2VyOworICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQq
IG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKICAgICB1aW50NjRfdCBtX25leHRDaGlsZElk
ZW50aWZpZXIgeyAwIH07CiAgICAgRGlkUGFyc2VUcmltbWluZ0RhdGFDYWxsYmFjayBtX2RpZFBh
cnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaAppbmRleCA3NDNiZTQ1
NWYzYmY2NmI0ZmZkZDQ4NmMyMzE0ZjI4MTVjYWY1Yjg4Li45NDEwYTdjNDc5NjM0NzA0ZWI1OWM5
OTk2MDM0ODQ0YjY5YTg4NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKQEAgLTgzLDcgKzgzLDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFyZHdhcmVE
ZWNvZGVyRGlzYWJsZWQ7CiAgICAgc3RkOjpvcHRpb25hbDxTY3JlZW5EYXRhT3ZlcnJpZGVzPiBt
X3NjcmVlblNpemVBbmRTY2FsZTsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb25maWd1
cmF0aW9uQ2hhbmdlZENhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jb25maWd1cmF0
aW9uQ2hhbmdlZENhbGxiYWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaApp
bmRleCA1NjBlZTgwYmE0NDdjOTA1YWQ0M2M1NzE0YWI3OGUwOTdkZDlkZWQ3Li5mYjE0ZDNiYmNl
OTk1MTFkNDMwMWYxMjUxYjcwNWYyZGU0ZGQ2NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIFVuc2FmZVBvaW50ZXI8SU9TdXJm
YWNlUmVmPiBtX2xhc3RTdXJmYWNlOwogICAgIHVpbnQzMl90IG1fbGFzdFN1cmZhY2VTZWVkIHsg
MCB9OwogCi0gICAgdXNpbmcgVGV4dHVyZVNlZWRNYXAgPSBIYXNoTWFwPEdDR0x1aW50LCB1bnNp
Z25lZCwgV1RGOjpJbnRIYXNoPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFz
aFRyYWl0czxHQ0dMdWludD4+OworICAgIHVzaW5nIFRleHR1cmVTZWVkTWFwID0gSGFzaE1hcDxH
Q0dMdWludCwgdW5zaWduZWQsIEludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj47CiAgICAgVGV4dHVyZVNlZWRNYXAgbV9sYXN0VGV4
dHVyZVNlZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCBkZmY0MTQ0MjYx
OTY3YmZlOGRlMmRlYzkyYzZmOTM5ODMyZGUxN2U4Li44M2ZjYjg0OGY0MTgyYzc0MzE5ZjMwYjY4
NTBlNTE0YWU1YzQ2ZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAogI2lm
ICFkZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAotV1RGOjpDU3RyaW5nIERpc3BsYXlM
aXN0OjpkZXNjcmlwdGlvbigpIGNvbnN0CitDU3RyaW5nIERpc3BsYXlMaXN0OjpkZXNjcmlwdGlv
bigpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSB0czsKICAgICB0cyA8PCAqdGhpczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKaW5kZXggNWNiMTNkZGJiYmNjMWU3NjU0MDQ2OTkzZjlkYjAyYmU5YWM5
NzRhNC4uMTNjZDVlN2M0ZDU5OWZmMjMxZDhkNThhZDU0ZmE5NzYyZTNkNDNhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hyaW5r
VG9GaXQoKTsKIAogI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAotICAgIFdU
Rjo6Q1N0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIENTdHJpbmcgZGVzY3JpcHRpb24o
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXAoKSBjb25zdDsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAppbmRleCA0NmU5ZmE4
NmFhYjZiYTQ0OTVjYzQ2YWRiNzZhZjQ2N2ZlNWJhMzU4Li44OGI2YThiMjZmMDU0NTllZGU2ZDM2
ZGFkMzZmZGQzYjQyZGVkNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIEltYWdlQnVmZmVyKGNvbnN0
IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVf
cHRyPEJhY2tlbmRUeXBlPiYmIGJhY2tlbmQpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXIocGFyYW1ldGVycywgV1RGTW92ZShiYWNrZW5kKSkKICAgICAgICAgLCBtX2RyYXdpbmdD
b250ZXh0KGxvZ2ljYWxTaXplKCksIGJhc2VUcmFuc2Zvcm0oKSkKLSAgICAgICAgLCBtX3dyaXRp
bmdDbGllbnQoV1RGOjptYWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OldyaXRpbmdDbGll
bnQ+KCkpCi0gICAgICAgICwgbV9yZWFkaW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxJbk1lbW9y
eURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50PigpKQorICAgICAgICAsIG1fd3JpdGluZ0NsaWVu
dChtYWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OldyaXRpbmdDbGllbnQ+KCkpCisgICAg
ICAgICwgbV9yZWFkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVh
ZGluZ0NsaWVudD4oKSkKICAgICB7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxp
c3QoKS5zZXRJdGVtQnVmZmVyV3JpdGluZ0NsaWVudChtX3dyaXRpbmdDbGllbnQuZ2V0KCkpOwog
ICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuc2V0SXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQobV9yZWFkaW5nQ2xpZW50LmdldCgpKTsKQEAgLTYyLDggKzYyLDggQEAgcHVibGlj
OgogICAgIEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyYg
cGFyYW1ldGVycywgUmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQog
ICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMpCiAgICAgICAgICwg
bV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6ZSgpLCBiYXNlVHJhbnNmb3JtKCksIGRlbGVnYXRl
KQotICAgICAgICAsIG1fd3JpdGluZ0NsaWVudChXVEY6Om1ha2VVbmlxdWU8SW5NZW1vcnlEaXNw
bGF5TGlzdDo6V3JpdGluZ0NsaWVudD4oKSkKLSAgICAgICAgLCBtX3JlYWRpbmdDbGllbnQoV1RG
OjptYWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ+KCkpCisgICAg
ICAgICwgbV93cml0aW5nQ2xpZW50KG1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlzdDo6V3Jp
dGluZ0NsaWVudD4oKSkKKyAgICAgICAgLCBtX3JlYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJbk1l
bW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50PigpKQogICAgIHsKICAgICAgICAgbV9kcmF3
aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLnNldEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50KG1fd3Jp
dGluZ0NsaWVudC5nZXQoKSk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3Qo
KS5zZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudChtX3JlYWRpbmdDbGllbnQuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0lu
TWVtb3J5RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IGVjYTUzNTg2MjliMDI3
YTM2ZWQ4N2U2OWQ0Mzk4MDE0N2UxNjdiZjMuLjhlYjNiMmJjMGNmMTllYjIzMThlNDVhOWU4NmE1
MTkzOTQ0MjAwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAK
QEAgLTUyLDggKzUyLDggQEAgc3RkOjpvcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9S
RVRVUk4gSW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudDoKIH0KIAogSW5NZW1vcnlE
aXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdCgpCi0gICAgOiBtX3dyaXRpbmdDbGllbnQo
V1RGOjptYWtlVW5pcXVlPFdyaXRpbmdDbGllbnQ+KCkpCi0gICAgLCBtX3JlYWRpbmdDbGllbnQo
V1RGOjptYWtlVW5pcXVlPFJlYWRpbmdDbGllbnQ+KCkpCisgICAgOiBtX3dyaXRpbmdDbGllbnQo
bWFrZVVuaXF1ZTxXcml0aW5nQ2xpZW50PigpKQorICAgICwgbV9yZWFkaW5nQ2xpZW50KG1ha2VV
bmlxdWU8UmVhZGluZ0NsaWVudD4oKSkKIHsKICAgICBzZXRJdGVtQnVmZmVyV3JpdGluZ0NsaWVu
dChtX3dyaXRpbmdDbGllbnQuZ2V0KCkpOwogICAgIHNldEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50
KG1fcmVhZGluZ0NsaWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4IDA4ZTg1
YTA4YWEwMWIwODEyMjNmMzZlYmI2YmJiOGFiMzYzOTQzNjUuLjBmNmVlODdmOTVlNzU3NTE4NjNm
ZDJlNWY1NDllNzRkOTcyOWRiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC0zMTgsNyAr
MzE4LDcgQEAgaW5saW5lIHZvaWQgYWNjZWxlcmF0ZUJveEJsdXIoVWludDhDbGFtcGVkQXJyYXkm
IGlvQnVmZmVyLCBVaW50OENsYW1wZWRBcnJheSYgdGUKICAgICB2SW1hZ2VCb3hDb252b2x2ZV9B
UkdCODg4OCgmZWZmZWN0SW5CdWZmZXIsICZlZmZlY3RPdXRCdWZmZXIsIHRtcEJ1ZmZlciwgMCwg
MCwga2VybmVsU2l6ZSwga2VybmVsU2l6ZSwgMCwga3ZJbWFnZUVkZ2VFeHRlbmQpOwogICAgIHZJ
bWFnZUJveENvbnZvbHZlX0FSR0I4ODg4KCZlZmZlY3RPdXRCdWZmZXIsICZlZmZlY3RJbkJ1ZmZl
ciwgdG1wQnVmZmVyLCAwLCAwLCBrZXJuZWxTaXplLCBrZXJuZWxTaXplLCAwLCBrdkltYWdlRWRn
ZUV4dGVuZCk7CiAgICAgdkltYWdlQm94Q29udm9sdmVfQVJHQjg4ODgoJmVmZmVjdEluQnVmZmVy
LCAmZWZmZWN0T3V0QnVmZmVyLCB0bXBCdWZmZXIsIDAsIDAsIGtlcm5lbFNpemUsIGtlcm5lbFNp
emUsIDAsIGt2SW1hZ2VFZGdlRXh0ZW5kKTsKLSAgICBXVEY6OmZhc3RGcmVlKHRtcEJ1ZmZlcik7
CisgICAgZmFzdEZyZWUodG1wQnVmZmVyKTsKIAogICAgIC8vIFRoZSBmaW5hbCByZXN1bHQgc2hv
dWxkIGJlIHN0b3JlZCBpbiBpb0J1ZmZlci4KICAgICBBU1NFUlQoaW9CdWZmZXIubGVuZ3RoKCkg
PT0gdGVtcEJ1ZmZlci5sZW5ndGgoKSk7CkBAIC0zOTksNyArMzk5LDcgQEAgaW5saW5lIHZvaWQg
RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHkoVWludDhDbGFtcGVkQXJyYXkmIGlvQnVmZmVy
LCBVaW50OENsYW0KICAgICBpbnQgb3B0aW1hbFRocmVhZE51bWJlciA9IChwYWludFNpemUud2lk
dGgoKSAqIHBhaW50U2l6ZS5oZWlnaHQoKSkgLyAoc19taW5pbWFsUmVjdERpbWVuc2lvbiArIGV4
dHJhSGVpZ2h0ICogcGFpbnRTaXplLndpZHRoKCkpOwogCiAgICAgaWYgKG9wdGltYWxUaHJlYWRO
dW1iZXIgPiAxKSB7Ci0gICAgICAgIFdURjo6UGFyYWxsZWxKb2JzPFBsYXRmb3JtQXBwbHlQYXJh
bWV0ZXJzPiBwYXJhbGxlbEpvYnMoJnBsYXRmb3JtQXBwbHlXb3JrZXIsIG9wdGltYWxUaHJlYWRO
dW1iZXIpOworICAgICAgICBQYXJhbGxlbEpvYnM8UGxhdGZvcm1BcHBseVBhcmFtZXRlcnM+IHBh
cmFsbGVsSm9icygmcGxhdGZvcm1BcHBseVdvcmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7CiAK
ICAgICAgICAgaW50IGpvYnMgPSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZKb2JzKCk7CiAgICAgICAg
IGlmIChqb2JzID4gMSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKaW5kZXggZGYxNzZmOGUwNzBhNDE4YzIwODUx
ODA5MGVlN2E2Y2ExMTNlNTZmNS4uNjU5YjEwNTVmNjFlYWFiYzVmMjk5OTFkYTBkYTFhNTg1MDcx
YWU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBGRUxpZ2h0aW5n
OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyhjb25zdCBMaWdodGluZ0RhdGEmIGRhdGEsIGNvbnN0IExp
Z2h0U291cmMKICAgICB1bnNpZ25lZCBvcHRpbWFsVGhyZWFkTnVtYmVyID0gc3RkOjptaW48dW5z
aWduZWQ+KCgoZGF0YS53aWR0aERlY3JlYXNlZEJ5T25lIC0gMSkgKiByb3dzVG9Qcm9jZXNzKSAv
IHNfbWluaW1hbFJlY3REaW1lbnNpb24sIG1heE51bVRocmVhZHMpOwogICAgIGlmIChvcHRpbWFs
VGhyZWFkTnVtYmVyID4gMSkgewogICAgICAgICAvLyBJbml0aWFsaXplIHBhcmFsbGVsIGpvYnMK
LSAgICAgICAgV1RGOjpQYXJhbGxlbEpvYnM8UGxhdGZvcm1BcHBseUdlbmVyaWNQYXJhbWV0ZXJz
PiBwYXJhbGxlbEpvYnMoJnBsYXRmb3JtQXBwbHlHZW5lcmljV29ya2VyLCBvcHRpbWFsVGhyZWFk
TnVtYmVyKTsKKyAgICAgICAgUGFyYWxsZWxKb2JzPFBsYXRmb3JtQXBwbHlHZW5lcmljUGFyYW1l
dGVycz4gcGFyYWxsZWxKb2JzKCZwbGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlciwgb3B0aW1hbFRo
cmVhZE51bWJlcik7CiAKICAgICAgICAgLy8gRmlsbCB0aGUgcGFyYW1ldGVyIGFycmF5CiAgICAg
ICAgIGludCBqb2IgPSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZKb2JzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4
IDBmZmZjZDA2NDM5NmQ4ZjRiNjQwODIyNjljYzIwNzRmN2M5ZGJkYmMuLmIwYmI3MGExNGQxNzQ5
NTA2NzM3ZTg4ZTA1MTRlZTc5NjgyMGE0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC0xMTcsOSArMTE3LDYg
QEAgcHJvdGVjdGVkOgogICAgICAgICBpbmxpbmUgSW50U2l6ZSBib3R0b21SaWdodE5vcm1hbChp
bnQgb2Zmc2V0KSBjb25zdDsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4K
LSAgICBmcmllbmQgY2xhc3MgUGFyYWxsZWxKb2JzOwotCiAgICAgc3RydWN0IFBsYXRmb3JtQXBw
bHlHZW5lcmljUGFyYW1ldGVycyB7CiAgICAgICAgIEZFTGlnaHRpbmcqIGZpbHRlcjsKICAgICAg
ICAgTGlnaHRpbmdEYXRhIGRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggOGE3ZTViNjY3YWI3
NzNiOTBiODkwZTM4Mzg2MzkzNTYyYjlkOGRmNS4uNmFlM2Q5ODk4NjYyNmUwN2MwOTRjNTg2ZjMx
OThjOWM1OGRhZWQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZv
aWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5KGNvbnN0IFBhaW50aW5nRGF0YSYgcGFpbnRp
bmdEYXRhKQogICAgIHVuc2lnbmVkIG1heE51bVRocmVhZHMgPSBwYWludGluZ0RhdGEuaGVpZ2h0
IC8gODsKICAgICB1bnNpZ25lZCBvcHRpbWFsVGhyZWFkTnVtYmVyID0gc3RkOjptaW48dW5zaWdu
ZWQ+KChwYWludGluZ0RhdGEud2lkdGggKiBwYWludGluZ0RhdGEuaGVpZ2h0ICoga2VybmVsRmFj
dG9yKSAvIG1pbmltYWxBcmVhLCBtYXhOdW1UaHJlYWRzKTsKICAgICBpZiAob3B0aW1hbFRocmVh
ZE51bWJlciA+IDEpIHsKLSAgICAgICAgV1RGOjpQYXJhbGxlbEpvYnM8UGxhdGZvcm1BcHBseVBh
cmFtZXRlcnM+IHBhcmFsbGVsSm9icygmV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFw
cGx5V29ya2VyLCBvcHRpbWFsVGhyZWFkTnVtYmVyKTsKKyAgICAgICAgUGFyYWxsZWxKb2JzPFBs
YXRmb3JtQXBwbHlQYXJhbWV0ZXJzPiBwYXJhbGxlbEpvYnMoJldlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseVdvcmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7CiAgICAgICAgIGF1
dG8gbnVtT2ZUaHJlYWRzID0gcGFyYWxsZWxKb2JzLm51bWJlck9mSm9icygpOwogICAgICAgICBp
ZiAobnVtT2ZUaHJlYWRzID4gMSkgewogICAgICAgICAgICAgLy8gU3BsaXQgdGhlIGpvYiBpbnRv
ICJqb2JTaXplIi1zaXplZCBqb2JzIGJ1dCB0aGVyZSBhIGZldyBqb2JzIHRoYXQgbmVlZCB0byBi
ZSBzbGlnaHRseSBsYXJnZXIgc2luY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCBhYzIzNDZlOGE0
YmE1OGFhYTkyNGE2ZDY3YmQ1ZTRiNzdkZDIyNjhmLi43NzRlNjgyZTNiNDg1OWJiNmUyMDZhMWQy
YmZhZWIwY2VhOTE5ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAg
dm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgdW5zaWduZWQg
bWF4TnVtVGhyZWFkcyA9IGhlaWdodCAvIDg7CiAgICAgdW5zaWduZWQgb3B0aW1hbFRocmVhZE51
bWJlciA9IHN0ZDo6bWluPHVuc2lnbmVkPihhcmVhIC8gc19taW5pbWFsUmVjdERpbWVuc2lvbiwg
bWF4TnVtVGhyZWFkcyk7CiAgICAgaWYgKG9wdGltYWxUaHJlYWROdW1iZXIgPiAxKSB7Ci0gICAg
ICAgIFdURjo6UGFyYWxsZWxKb2JzPEZpbGxSZWdpb25QYXJhbWV0ZXJzPiBwYXJhbGxlbEpvYnMo
JldlYkNvcmU6OkZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbldvcmtlciwgb3B0aW1hbFRocmVhZE51
bWJlcik7CisgICAgICAgIFBhcmFsbGVsSm9iczxGaWxsUmVnaW9uUGFyYW1ldGVycz4gcGFyYWxs
ZWxKb2JzKCZXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb25Xb3JrZXIsIG9wdGltYWxU
aHJlYWROdW1iZXIpOwogCiAgICAgICAgIC8vIEZpbGwgdGhlIHBhcmFtZXRlciBhcnJheQogICAg
ICAgICBhdXRvIG51bUpvYnMgPSBwYXJhbGxlbEpvYnMubnVtYmVyT2ZKb2JzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGI5ZmU5YmI5YWE2ODYwNjdjMTFmZGE1NjI4MzA0YWI0
OGJiYjZhZWUuLjAxNjA1ZmM5MTQ5N2U0NjJiYTA3NzMwNDc4ZTg0YTg1NTFlNjcyM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RhdGljIHZvaWQg
c2ltcGxlQnVzTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEdz
dEJpbiogcGlwZWwKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VSUk9SOgogICAgICAgICBHU1RfRVJS
T1JfT0JKRUNUKHBpcGVsaW5lLCAiR290IG1lc3NhZ2U6ICUiIEdTVF9QVFJfRk9STUFULCBtZXNz
YWdlKTsKICAgICAgICAgewotICAgICAgICAgICAgV1RGOjpTdHJpbmcgZG90RmlsZU5hbWUgPSBt
YWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShwaXBlbGluZSksICJfZXJyb3IiKTsKKyAgICAgICAg
ICAgIFN0cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoR1NUX09CSkVDVF9OQU1FKHBpcGVs
aW5lKSwgIl9lcnJvciIpOwogICAgICAgICAgICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9X
SVRIX1RTKHBpcGVsaW5lLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsIGRvdEZpbGVOYW1lLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzkwLDcgKzM5MCw3
IEBAIHN0YXRpYyB2b2lkIHNpbXBsZUJ1c01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNz
YWdlKiBtZXNzYWdlLCBHc3RCaW4qIHBpcGVsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRf
c3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLAogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0
YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKIAotICAgICAgICAgICAgV1RGOjpTdHJpbmcgZG90Rmls
ZU5hbWUgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgU3RyaW5nIGRvdEZpbGVOYW1lID0gbWFr
ZVN0cmluZygKICAgICAgICAgICAgICAgICBHU1RfT0JKRUNUX05BTUUocGlwZWxpbmUpLCAnXycs
CiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUob2xkU3RhdGUpLCAn
XycsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggODhj
MTRkM2MxZWNmZTRjNmNhOTI5NTgwNmJiZWI1OGVmNmJlMjAxNS4uYzZhM2YyOTUwYjE1ZjU4YzRh
OTgyMTIzZDZlNzAyZDBlNjgwMjdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lci5jcHAKQEAgLTUwNCw3ICs1MDQsNyBAQCBib29sIEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6aXNDb2RlY1N1cHBvcnRlZChDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGNv
bgogewogICAgIC8vIElmIHRoZSBjb2RlYyBpcyBuYW1lZCBsaWtlIGEgbWltZXR5cGUgKGVnOiB2
aWRlby9hdmMpIHJlbW92ZSB0aGUgInZpZGVvLyIgcGFydC4KICAgICBzaXplX3Qgc2xhc2hJbmRl
eCA9IGNvZGVjLmZpbmQoJy8nKTsKLSAgICBTdHJpbmcgY29kZWNOYW1lID0gc2xhc2hJbmRleCAh
PSBXVEY6Om5vdEZvdW5kID8gY29kZWMuc3Vic3RyaW5nKHNsYXNoSW5kZXggKyAxKSA6IGNvZGVj
OworICAgIFN0cmluZyBjb2RlY05hbWUgPSBzbGFzaEluZGV4ICE9IG5vdEZvdW5kID8gY29kZWMu
c3Vic3RyaW5nKHNsYXNoSW5kZXggKyAxKSA6IGNvZGVjOwogCiAgICAgYm9vbCBzdXBwb3J0ZWQg
PSBmYWxzZTsKICAgICBpZiAoY29kZWNOYW1lLnN0YXJ0c1dpdGgoImF2YzEiKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA1MmRhNzNkOGJiYWNlY2UwNWViMjRkNTZj
OGRjOGYxOTYyNmI1YzMxLi42NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBib29sIGNhbkRlY29kZVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICB2b2lkIHNldEVuY29kZWREYXRhU3Rh
dHVzQ2hhbmdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKEVuY29kZWREYXRhU3RhdHVzKT4m
JiBjYWxsYmFjaykgZmluYWwgeyBtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdlZENhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayk7IH0KKyAgICB2b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hhbmdl
Q2FsbGJhY2soRnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+JiYgY2FsbGJhY2spIGZp
bmFsIHsgbV9lbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOyB9CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdCBm
aW5hbDsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBzaXplX3QgZnJhbWVD
b3VudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2FtcGxlRGF0YS5zaXplKCk7IH0KQEAgLTEy
Niw3ICsxMjYsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
U2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKLSAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiBtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdlZENhbGxi
YWNrOworICAgIEZ1bmN0aW9uPHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiBtX2VuY29kZWREYXRh
U3RhdHVzQ2hhbmdlZENhbGxiYWNrOwogICAgIFNhbXBsZU1hcCBtX3NhbXBsZURhdGE7CiAgICAg
RGVjb2RlT3JkZXJTYW1wbGVNYXA6Oml0ZXJhdG9yIG1fY3Vyc29yOwogICAgIExvY2sgbV9zYW1w
bGVHZW5lcmF0b3JMb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCmluZGV4IGQyY2M4
MWQ1ODRkNDdjMGMzMjA3MjU5MmFlYzYxODBhYjYzNzVhNWEuLmViYjQxYWJmOGNkNDRmZmM1YjY2
ZTAzMTljNTI5NjA2M2NjZTU4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWFpblRocmVhZE5vdGlmaWVyLmgKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIWFkZFBlbmRpbmdOb3RpZmljYXRp
b24obm90aWZpY2F0aW9uVHlwZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgbm90aWZpY2F0aW9uVHlwZSwgY2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4oV1RG
TW92ZShjYWxsYmFja0Z1bmN0b3IpKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBub3RpZmljYXRpb25UeXBl
LCBjYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT4oV1RGTW92ZShjYWxsYmFja0Z1bmN0b3IpKV0g
ewogICAgICAgICAgICAgaWYgKCFtX2lzVmFsaWQubG9hZCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIGlmIChyZW1vdmVQZW5kaW5nTm90aWZpY2F0aW9uKG5vdGlmaWNh
dGlvblR5cGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnlHU3RyZWFtZXIuY3BwCmluZGV4IDgzNDI0YjI5ODhjM2ViZGQyN2Mz
YjhkOTcyYjIxNmU3YWRhMDRlZDEuLmExNjRkMmY4ZmYwYTFhZjNiODBmYzVkMDU0ODIxMTZmMDc5
NDQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0
aW9uR1N0cmVhbWVyKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwg
V1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvJiYpPiYmIGNh
bGxiYWNrKQordm9pZCBjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkdTdHJl
YW1lcihNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIEZ1bmN0aW9u
PHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgYm9vbCBpc01lZGlhU291cmNlID0gY29uZmlndXJhdGlvbi50eXBlID09IE1lZGlhRGVjb2Rp
bmdUeXBlOjpNZWRpYVNvdXJjZTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpAQCAtNjUsNyAr
NjUsNyBAQCB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVh
bWVyKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJgogICAgIGNhbGxiYWNrKFdURk1vdmUoaW5m
bykpOwogfQogCi12b2lkIGNyZWF0ZU1lZGlhUGxheWVyRW5jb2RpbmdDb25maWd1cmF0aW9uR1N0
cmVhbWVyKE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV1RGOjpG
dW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPiYmIGNhbGxiYWNr
KQordm9pZCBjcmVhdGVNZWRpYVBsYXllckVuY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihN
ZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIEZ1bmN0aW9uPHZvaWQo
TWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0
byYgc2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCk7CiAgICAg
YXV0byBsb29rdXBSZXN1bHQgPSBzY2FubmVyLmlzRW5jb2RpbmdTdXBwb3J0ZWQoY29uZmlndXJh
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlHU3RyZWFtZXIuaAppbmRleCA2MGJiNjMxZDM2ZDUxNDhmNDI4NDg1NjFmZTU5
Y2U1NTEzOWI0ZWI3Li5jOGVlZTc5OWYwMTMzNDAxMDNjZTYzNDdkZWI3MDNjOTdjZTVjYTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5R1N0cmVhbWVyLmgKQEAgLTM4LDggKzM4LDggQEAgc3RydWN0IE1lZGlhQ2FwYWJpbGl0
aWVzRW5jb2RpbmdJbmZvOwogc3RydWN0IE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uOwogc3Ry
dWN0IE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uOwogCi1leHRlcm4gdm9pZCBjcmVhdGVNZWRp
YVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihNZWRpYURlY29kaW5nQ29uZmln
dXJhdGlvbiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0lu
Zm8mJik+JiYpOwotZXh0ZXJuIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJFbmNvZGluZ0NvbmZpZ3Vy
YXRpb25HU3RyZWFtZXIoTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgV1RGOjpGdW5jdGlv
bjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPiYmKTsKK2V4dGVybiB2b2lk
IGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKE1lZGlhRGVj
b2RpbmdDb25maWd1cmF0aW9uJiYsIEZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNv
ZGluZ0luZm8mJik+JiYpOworZXh0ZXJuIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJFbmNvZGluZ0Nv
bmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRnVuY3Rp
b248dm9pZChNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbyYmKT4mJik7CiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RleHRTaW5rR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuaAppbmRleCBmZDZjYjNiZDI1NzM2NjdhYThkNGZk
M2U4Y2NjNjI1ZjY0ZjE4YWUxLi4wMTRiNTBjMDJjODhiMTJhNTIxOTNjMzAxMjU3ODI3N2UwYjMx
MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVGV4dFNpbmtHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuaApAQCAtNTksNyArNTksNyBAQCBzdHJ1
Y3QgX1dlYktpdFRleHRTaW5rQ2xhc3MgewogICAgIEdzdEJpbkNsYXNzIHBhcmVudENsYXNzOwog
fTsKIAotR3N0RWxlbWVudCogd2Via2l0VGV4dFNpbmtOZXcoV1RGOjpXZWFrUHRyPFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4mJik7CitHc3RFbGVtZW50KiB3ZWJraXRUZXh0
U2lua05ldyhXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4mJik7
CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
aAppbmRleCAzM2U3YzlhYzU5NWQ0NmYzMGFlZThjZmJlYjg1ZjE2NTMxYjI5OGIwLi42NDliMGY2
MmZjNGU0ZDliMDliMmZhMWU2MzZhMWM2YmE2MWMwMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5oCkBAIC01Myw3ICs1Myw3IEBAIHN0cnVjdCBXZWJLaXRXZWJT
cmNDbGFzcyB7CiB9OwogCiBHVHlwZSB3ZWJraXRfd2ViX3NyY19nZXRfdHlwZSh2b2lkKTsKLXZv
aWQgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIoV2ViS2l0V2ViU3JjKiwgV2ViQ29yZTo6TWVk
aWFQbGF5ZXIqLCBjb25zdCBXVEY6OlN0cmluZyYpOwordm9pZCB3ZWJLaXRXZWJTcmNTZXRNZWRp
YVBsYXllcihXZWJLaXRXZWJTcmMqLCBXZWJDb3JlOjpNZWRpYVBsYXllciosIGNvbnN0IFN0cmlu
ZyYpOwogYm9vbCB3ZWJLaXRTcmNQYXNzZWRDT1JTQWNjZXNzQ2hlY2soV2ViS2l0V2ViU3JjKik7
CiBib29sIHdlYktpdFNyY1dvdWxkVGFpbnRPcmlnaW4oV2ViS2l0V2ViU3JjKiwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIu
Y3BwCmluZGV4IGZiOWQyZWY3MmU1ZmVlNDI2MTM1N2JiMDYwNTYwODk2MTAwMTQwYjYuLjViZDAz
YzFiOTc3OTI2MGY5MDJjMzU5MTVjYjU1YmFkMjYxNzAyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5VGh1bmRlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VY
VEVSTih3ZWJraXRNZWRpYVRodW5kZXJEZWNyeXB0RGVidWdDYXRlZ29yeSk7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIE5PVEU6IFlvdVR1YmUgMjAxOSBFTUUgY29uZm9ybWFuY2UgdGVzdHMg
ZXhwZWN0IHRoaXMgdG8gYmUgPj01cy4KLWNvbnN0IFdURjo6U2Vjb25kcyBzX2xpY2Vuc2VLZXlS
ZXNwb25zZVRpbWVvdXQgPSBXVEY6OlNlY29uZHMoNik7Citjb25zdCBTZWNvbmRzIHNfbGljZW5z
ZUtleVJlc3BvbnNlVGltZW91dCA9IFNlY29uZHMoNik7CiAKIEJveFB0cjxPcGVuQ0RNU2Vzc2lv
bj4gQ0RNUHJveHlUaHVuZGVyOjpnZXREZWNyeXB0aW9uU2Vzc2lvbihEZWNyeXB0aW9uQ29udGV4
dCYgaW4pIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9X
ZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcAppbmRleCBjODRmZGYw
OTBkZGQ2OTRkYmE1NTJhNTc1ODk1NjFjMDZmMmZkYmYyLi4xMWRmM2Q3OTdlZThiNDdlOWFhNTRk
M2ZhNmQ4MmVjZjFlYjM4NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBjb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAK
ICAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmID0gV0VCS0lUX01F
RElBX0NFTkNfREVDUllQVChiYXNlKTsKICAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZB
VEUoc2VsZik7Ci0gICAgcHJpdi0+Y2RtUHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVtZW50YXRp
b24gPSBXVEY6Om1ha2VVbmlxdWU8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVtZW50YXRp
b24+KHNlbGYpOworICAgIHByaXYtPmNkbVByb3h5RGVjcnlwdGlvbkNsaWVudEltcGxlbWVudGF0
aW9uID0gbWFrZVVuaXF1ZTxDRE1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbj4o
c2VsZik7CiB9CiAKIHN0YXRpYyBHc3RDYXBzKiB0cmFuc2Zvcm1DYXBzKEdzdEJhc2VUcmFuc2Zv
cm0qIGJhc2UsIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMqIGNhcHMsIEdzdENh
cHMqIGZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZjkxZjU2
OTY1NDhjMmM0OTI0NDRjMjgwMTZhMWRiZGQ2Y2E4ZWU2Ni4uNWMxNDY4OGE2YmYxYmM3MTNmYTJk
ZjljMjQ2ZjFhZDNhMDMyNjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAK
QEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpoYW5kbGVFcnJvclN5bmNN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiBHc3RQYWRQcm9iZVJldHVybiBBcHBlbmRQaXBl
bGluZTo6YXBwc3JjRW5kT2ZBcHBlbmRDaGVja2VyUHJvYmUoR3N0UGFkUHJvYmVJbmZvKiBwYWRQ
cm9iZUluZm8pCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9zdHJlYW1p
bmdUaHJlYWQgPSAmV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBtX3N0cmVhbWluZ1RocmVh
ZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKIAogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gR1NUX0JV
RkZFUihwYWRQcm9iZUluZm8tPmRhdGEpOwogICAgIEFTU0VSVChHU1RfSVNfQlVGRkVSKGJ1ZmZl
cikpOwpAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OnJlc2V0UGFyc2Vy
U3RhdGUoKQogICAgIHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICAv
LyBUaGlzIGlzIGhlcmUgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gSXQgZG9lcyBub3QgbWFrZSBz
ZW5zZSB0byBoYXZlIGl0IGFzIGNsYXNzIG1lbWJlci4KLSAgICAgICAgV1RGOjpTdHJpbmcgZG90
RmlsZU5hbWUgPSBtYWtlU3RyaW5nKCJyZXNldC1waXBlbGluZS0iLCArK2kpOworICAgICAgICBT
dHJpbmcgZG90RmlsZU5hbWUgPSBtYWtlU3RyaW5nKCJyZXNldC1waXBlbGluZS0iLCArK2kpOwog
ICAgICAgICBnc3RfZGVidWdfYmluX3RvX2RvdF9maWxlKEdTVF9CSU4obV9waXBlbGluZS5nZXQo
KSksIEdTVF9ERUJVR19HUkFQSF9TSE9XX0FMTCwgZG90RmlsZU5hbWUudXRmOCgpLmRhdGEoKSk7
CiAgICAgfQogI2VuZGlmCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6
cHVzaE5ld0J1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCiB2b2lkIEFwcGVuZFBp
cGVsaW5lOjpoYW5kbGVBcHBzaW5rTmV3U2FtcGxlRnJvbVN0cmVhbWluZ1RocmVhZChHc3RFbGVt
ZW50KikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoJldURjo6VGhy
ZWFkOjpjdXJyZW50KCkgIT0gbV9zdHJlYW1pbmdUaHJlYWQpIHsKKyAgICBpZiAoJlRocmVhZDo6
Y3VycmVudCgpICE9IG1fc3RyZWFtaW5nVGhyZWFkKSB7CiAgICAgICAgIC8vIG1fc3RyZWFtaW5n
VGhyZWFkSWQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgaW4gYXBwc3JjRW5kT2ZBcHBlbmRDaGVja2Vy
UHJvYmUoKS4KICAgICAgICAgLy8gRm9yIGEgYnVmZmVyIHRvIHJlYWNoIHRoZSBhcHBzaW5rLCBh
IGJ1ZmZlciBtdXN0IGhhdmUgcGFzc2VkIHRocm91Z2ggYXBwc3JjRW5kT2ZBcHBlbmRDaGVja2Vy
UHJvYmUoKSBmaXJzdC4KICAgICAgICAgLy8gVGhpcyBlcnJvciB3aWxsIG9ubHkgcmFpc2UgaWYg
c29tZW9uZSBtb2RpZmllcyB0aGUgcGlwZWxpbmUgdG8gaW5jbHVkZSBtb3JlIHRoYW4gb25lIHN0
cmVhbWluZyB0aHJlYWQgb3IKQEAgLTcxNiw3ICs3MTYsNyBAQCBzdGQ6OnBhaXI8QXBwZW5kUGlw
ZWxpbmU6OkNyZWF0ZVRyYWNrUmVzdWx0LCBBcHBlbmRQaXBlbGluZTo6VHJhY2sqPiBBcHBlbmRQ
aXBlbAogCiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiQ3JlYXRpbmcgbmV3IEFw
cGVuZFBpcGVsaW5lOjpUcmFjayB3aXRoIGlkICclcyciLCB0cmFja0lkLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgIHNpemVfdCBuZXdUcmFja0luZGV4ID0gbV90cmFja3Muc2l6ZSgpOwot
ICAgIG1fdHJhY2tzLmFwcGVuZChXVEY6Om1ha2VVbmlxdWU8VHJhY2s+KHRyYWNrSWQsIHN0cmVh
bVR5cGUsIHBhcnNlZENhcHMsIHByZXNlbnRhdGlvblNpemUpKTsKKyAgICBtX3RyYWNrcy5hcHBl
bmQobWFrZVVuaXF1ZTxUcmFjaz4odHJhY2tJZCwgc3RyZWFtVHlwZSwgcGFyc2VkQ2FwcywgcHJl
c2VudGF0aW9uU2l6ZSkpOwogICAgIFRyYWNrJiB0cmFjayA9ICptX3RyYWNrcy5hdChuZXdUcmFj
a0luZGV4KTsKICAgICB0cmFjay5pbml0aWFsaXplRWxlbWVudHModGhpcywgR1NUX0JJTihtX3Bp
cGVsaW5lLmdldCgpKSk7CiAgICAgdHJhY2sud2ViS2l0VHJhY2sgPSBtYWtlV2ViS2l0VHJhY2so
bmV3VHJhY2tJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgKaW5kZXggMjRkMmI3
YThmZTFiODU0MWQxM2IwMGQzNjVhMWI2Yzc4NzdjMzZkNS4uN2NiM2YzYWZkMDQzYmNhZDNhNjFi
NDQzNDlkNmNmMzVlMGE3ZmEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuaApAQCAt
MTQwLDcgKzE0MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBVc2VkIG9ubHkgZm9yIGFzc2VydGlu
ZyB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHN0cmVhbWluZyB0aHJlYWQuCiAgICAgLy8gT25seSB0
aGUgcG9pbnRlcnMgYXJlIGNvbXBhcmVkLgotICAgIFdURjo6VGhyZWFkKiBtX3N0cmVhbWluZ1Ro
cmVhZDsKKyAgICBUaHJlYWQqIG1fc3RyZWFtaW5nVGhyZWFkOwogCiAgICAgYm9vbCBtX2hhc1Jl
Y2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9OwogICAgIC8vIFVzZWQg
b25seSBmb3IgYXNzZXJ0aW5nIEVPUyBldmVudHMgYXJlIG9ubHkgY2F1c2VkIGJ5IGRlbXV4aW5n
IGVycm9ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaAppbmRleCA5YjZhYzBkYmJkOTU5
ZWI0MWY4YTY2MmZlOWY3ZjRkYTA0NTNiZWZiLi45MDA4YzE1YzQ2ZDBjN2RmNTg2NTg5Mzg1NjFk
OTRhZGE2NTM3MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCkBAIC04OSw3ICs4
OSw3IEBAIGNsYXNzIENvbXBvc2l0aW9uTGF5ZXIgOiBwdWJsaWMgUGxhdGZvcm1MYXllciB7CiBw
dWJsaWM6CiAgICAgY2xhc3MgSW1wbCB7CiAgICAgcHVibGljOgotICAgICAgICB1c2luZyBGYWN0
b3J5ID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4odWludDY0X3QsIENvbXBv
c2l0aW9uTGF5ZXImKT47CisgICAgICAgIHVzaW5nIEZhY3RvcnkgPSBGdW5jdGlvbjxzdGQ6OnVu
aXF1ZV9wdHI8SW1wbD4odWludDY0X3QsIENvbXBvc2l0aW9uTGF5ZXImKT47CiAKICAgICAgICAg
dmlydHVhbCB+SW1wbCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJlTWFwcGVySW1w
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zMzAsNyArMzMwLDcgQEAgY2xhc3MgQ29u
dGVudExheWVyIDogcHVibGljIFBsYXRmb3JtTGF5ZXIgewogcHVibGljOgogICAgIGNsYXNzIElt
cGwgewogICAgIHB1YmxpYzoKLSAgICAgICAgdXNpbmcgRmFjdG9yeSA9IFdURjo6RnVuY3Rpb248
c3RkOjp1bmlxdWVfcHRyPEltcGw+KENvbnRlbnRMYXllciYpPjsKKyAgICAgICAgdXNpbmcgRmFj
dG9yeSA9IEZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxJbXBsPihDb250ZW50TGF5ZXImKT47CiAK
ICAgICAgICAgdmlydHVhbCB+SW1wbCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJl
TWFwcGVySW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0zNTUsNyArMzU1LDcgQEAg
Y2xhc3MgQmFja2luZ1N0b3JlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEJhY2tpbmdT
dG9yZT4gewogcHVibGljOgogICAgIGNsYXNzIEltcGwgewogICAgIHB1YmxpYzoKLSAgICAgICAg
dXNpbmcgRmFjdG9yeSA9IFdURjo6RnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPEltcGw+KEJhY2tp
bmdTdG9yZSYpPjsKKyAgICAgICAgdXNpbmcgRmFjdG9yeSA9IEZ1bmN0aW9uPHN0ZDo6dW5pcXVl
X3B0cjxJbXBsPihCYWNraW5nU3RvcmUmKT47CiAKICAgICAgICAgdmlydHVhbCB+SW1wbCgpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJlTWFwcGVySW1wbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC0zNzksNyArMzc5LDcgQEAgY2xhc3MgSW1hZ2VCYWNraW5nIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlQmFja2luZz4gewogcHVibGljOgogICAgIGNsYXNz
IEltcGwgewogICAgIHB1YmxpYzoKLSAgICAgICAgdXNpbmcgRmFjdG9yeSA9IFdURjo6RnVuY3Rp
b248c3RkOjp1bmlxdWVfcHRyPEltcGw+KEltYWdlQmFja2luZyYpPjsKKyAgICAgICAgdXNpbmcg
RmFjdG9yeSA9IEZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxJbXBsPihJbWFnZUJhY2tpbmcmKT47
CiAKICAgICAgICAgdmlydHVhbCB+SW1wbCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
dXJlTWFwcGVySW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMLmgKaW5kZXggNjQ5ZjkzODNjZjRlZDQ4NTQ0Y2FkYTE2YjRjNjc4YjBiN2ZkMTFiYy4uZDlm
MTVmNDViZGZiNGUxYmJlOGQzOTM2MzViNjBhYWQxZDJkOTBhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0wuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6OlN0cmlu
ZyYpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIGdldEV4dGVuc2lvbnMoKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNzFmMTJiOTNk
ZmEwYzZkYzk1YWQ1M2M4YzZiMDJkNDJiYWY3YzA1Yi4uODVkZGVmOTNmM2M2Y2ZiNzkzM2RhMDk4
YTk1Y2E5ZWMzODJkZWIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5j
cHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogCiAgICAgZm9y
IChjb25zdCBzdGQ6OnBhaXI8QU5HTEVTaGFkZXJTeW1ib2xUeXBlLCBzaDo6U2hhZGVyVmFyaWFi
bGU+JiBwYWlyIDogc3ltYm9scykgewogICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSA9
IHBhaXIuc2Vjb25kLm5hbWU7Ci0gICAgICAgIGVudHJ5LnN5bWJvbE1hcChwYWlyLmZpcnN0KS5z
ZXQoU3RyaW5nKG5hbWUuY19zdHIoKSwgbmFtZS5sZW5ndGgoKSksIFdURjo6bWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8c2g6OlNoYWRlclZhcmlhYmxlPihwYWlyLnNlY29uZCkp
OworICAgICAgICBlbnRyeS5zeW1ib2xNYXAocGFpci5maXJzdCkuc2V0KFN0cmluZyhuYW1lLmNf
c3RyKCksIG5hbWUubGVuZ3RoKCkpLCBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxzaDo6U2hhZGVyVmFyaWFibGU+KHBhaXIuc2Vjb25kKSk7CiAgICAgfQogCiAgICAgaWYgKCFp
c1ZhbGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAyZWVhNTQ1ZDIw
YzM3NjExMjM5M2U1MGM1Yjg0ZDE0ZGNjMWNiYWVhLi4zODI3M2IwNzJiNTZkM2ZkYTJiY2RlMzQ4
YjNlMGY3NDJjMjAwNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
OTUsNyArOTUsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIGNsYXNzIFRleHR1cmVNYXBwZXJHQ0dM
UGxhdGZvcm1MYXllcjsKICNlbmRpZgogCi10eXBlZGVmIFdURjo6SGFzaE1hcDxDU3RyaW5nLCB1
aW50NjRfdD4gU2hhZGVyTmFtZUhhc2g7Cit0eXBlZGVmIEhhc2hNYXA8Q1N0cmluZywgdWludDY0
X3Q+IFNoYWRlck5hbWVIYXNoOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAogewpAQCAtNzEzLDkgKzcxMyw5
IEBAIHByaXZhdGU6CiAKICAgICAgICAgdXNpbmcgQm91bmRUZXh0dXJlTWFwID0gSGFzaE1hcDxH
Q0dMZW51bSwKICAgICAgICAgICAgIHN0ZDo6cGFpcjxHQ0dMdWludCwgR0NHTGVudW0+LAotICAg
ICAgICAgICAgV1RGOjpJbnRIYXNoPEdDR0xlbnVtPiwKKyAgICAgICAgICAgIEludEhhc2g8R0NH
TGVudW0+LAogICAgICAgICAgICAgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxH
Q0dMdWludD4sCi0gICAgICAgICAgICBXVEY6OlBhaXJIYXNoVHJhaXRzPFdURjo6VW5zaWduZWRX
aXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPEdDR0x1aW50Pj4KKyAgICAgICAgICAgIFBhaXJIYXNoVHJhaXRzPFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPEdDR0x1aW50Pj4KICAgICAgICAgPjsKICAgICAgICAgQm91bmRUZXh0
dXJlTWFwIGJvdW5kVGV4dHVyZU1hcDsKICAgICAgICAgR0NHTHVpbnQgY3VycmVudEJvdW5kVGV4
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIGJvdW5kVGV4dHVyZShhY3RpdmVUZXh0dXJlVW5pdCk7IH0K
QEAgLTc0MSw3ICs3NDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYm91bmRUZXh0dXJlTWFw
LnNldCh0ZXh0dXJlVW5pdCwgc3RkOjptYWtlX3BhaXIodGV4dHVyZSwgdGFyZ2V0KSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB1c2luZyBUZXh0dXJlU2VlZENvdW50ID0gSGFzaENvdW50ZWRTZXQ8
R0NHTHVpbnQsIFdURjo6SW50SGFzaDxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8R0NHTHVpbnQ+PjsKKyAgICAgICAgdXNpbmcgVGV4dHVyZVNlZWRDb3VudCA9
IEhhc2hDb3VudGVkU2V0PEdDR0x1aW50LCBJbnRIYXNoPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+OwogICAgICAgICBUZXh0dXJlU2VlZENv
dW50IHRleHR1cmVTZWVkQ291bnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0
aW5nLmgKaW5kZXggMGMxMzQxODM4Njg5ZTEyYTQ3YTY3NmQ5YzFmYWJhYTZhMGVmY2MzZC4uMGFh
MjNhMWNhNDExODQzYjdiYWJlNDIyOGViYjgyY2JlZTI5ZDk0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5
T3BlbkdMU2V0dGluZy5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IHZhbHVlIHVwb24gZGVzdHJ1Y3Rpb24sIG1ha2luZyBpdCBhbiBhbHRlcm5hdGl2ZSB0byBjaGVj
a2luZywgY2xlYXJpbmcsIGFuZCByZXNldHRpbmcgZWFjaCBmbGFnCiAvLyBhdCBhbGwgb2YgYSBi
bG9jaydzIGV4aXQgcG9pbnRzLgogLy8KLS8vIEJhc2VkIG9uIFdURjo6U2V0Rm9yU2NvcGU8Pgor
Ly8gQmFzZWQgb24gU2V0Rm9yU2NvcGU8PgogCiBjbGFzcyBUZW1wb3JhcnlPcGVuR0xTZXR0aW5n
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZW1wb3JhcnlPcGVuR0xTZXR0aW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggOTQ0
ZmQ3ZWY3YjVkMzQ5YTBiMmU2NTNkNzg3MjExYTMyYWZjYWI0Ni4uZTI4NTFjMmUzZDIyMTc3MTY5
NGJkZDZmMTJmMGU1Zjc4OTljNzU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTEwNiw5ICsxMDYsOSBAQCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIGF0dAogICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLndlYkdMVmVyc2lvbiA9PSBH
cmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwogI2VuZGlmCiAjaWYgVVNFKE5J
Q09TSUEpCi0gICAgbV9uaWNvc2lhTGF5ZXIgPSBXVEY6Om1ha2VVbmlxdWU8Tmljb3NpYTo6R0NH
TEFOR0xFTGF5ZXI+KCp0aGlzKTsKKyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmlj
b3NpYTo6R0NHTEFOR0xFTGF5ZXI+KCp0aGlzKTsKICNlbHNlCi0gICAgbV90ZXhtYXBMYXllciA9
IFdURjo6bWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI+KCp0aGlzKTsK
KyAgICBtX3RleG1hcExheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3Jt
TGF5ZXI+KCp0aGlzKTsKICNlbmRpZgogICAgIGJvb2wgc3VjY2VzcyA9IG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNv
bnRleHRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCmluZGV4IDg0NGFiNjJmMmY4
YTIzN2NhZjk0MGM5ZjA5ZTI2MzczYTdmYzJmOGQuLjEzODRjNmIxMTRlNzllYmM3MmRkMjU3Y2Yw
NTU4MjFmYzRhNDYzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0
dHJpYnV0ZXMuY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgV1RGOjpUaHJlYWRTcGVjaWZpYzxUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXM+JiB0aHJlYWRTcGVjaWZpY0F0dHJpYnV0ZXMoKQorc3RhdGljIFRocmVhZFNwZWNpZmljPFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcz4mIHRocmVhZFNwZWNpZmljQXR0cmlidXRlcygp
CiB7Ci0gICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWM8VGV4dHVyZU1hcHBlckNvbnRleHRB
dHRyaWJ1dGVzPiogc190ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM7CisgICAgc3RhdGlj
IFRocmVhZFNwZWNpZmljPFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcz4qIHNfdGV4dHVy
ZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29u
Y2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHNfb25jZUZsYWcsCiAgICAgICAgIFtdIHsKLSAg
ICAgICAgICAgIHNfdGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzID0gbmV3IFdURjo6VGhy
ZWFkU3BlY2lmaWM8VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzPjsKKyAgICAgICAgICAg
IHNfdGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzID0gbmV3IFRocmVhZFNwZWNpZmljPFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcz47CiAgICAgICAgIH0pOwogICAgIHJldHVybiAq
c190ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggMDQyMjNmMjA2MzQxY2Y1NTU0
NjlmOTVhYmUxZjczMTAzN2M5MmM4Ny4uYjA0ZjljNmI5N2E2OWE2OGVmM2E4ZDhhMjFhYzc2NTA5
ZTJkMTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5LmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6ZHJvcEN1cnJlbnRCdWZmZXJXaGlsZVByZXNlcnZpbmdUZXh0dXJlKGJvCiAgICAg
ICAgIFt0aGlzLCBzaG91bGRXYWl0XSB7CiAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAKLSAgICAgICAgICAgIGF1dG8gbWF5YmVOb3RpZnlTeW5jaHJvbm91c09wZXJhdGlv
biA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgc2hvdWxkV2FpdF0oKSB7CisgICAgICAgICAg
ICBhdXRvIG1heWJlTm90aWZ5U3luY2hyb25vdXNPcGVyYXRpb24gPSBtYWtlU2NvcGVFeGl0KFt0
aGlzLCBzaG91bGRXYWl0XSgpIHsKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkV2FpdCkgewog
ICAgICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV93YXNCdWZmZXJEcm9wcGVkTG9j
ayB9OwogICAgICAgICAgICAgICAgICAgICBtX3dhc0J1ZmZlckRyb3BwZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCAyZGI2NmMxYmVkMmJiZWI4
ZmZiMjNkNzVhZjczMjg2Mjg5N2YxMGFiLi42ZWRmMzlmODRkZWQ3NmZlNDBhY2RjNmZjMmMzNDVl
ZWQ4NDVlMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaApAQCAt
MTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgR0x1aW50IGdldExvY2F0aW9uKFZhcmlhYmxl
SUQsIEFTQ0lJTGl0ZXJhbCwgVmFyaWFibGVUeXBlKTsKIAogICAgIEdMdWludCBtX2lkOwotICAg
IEhhc2hNYXA8VmFyaWFibGVJRCwgR0x1aW50LCBXVEY6OkludEhhc2g8VmFyaWFibGVJRD4sIFdU
Rjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8VmFyaWFibGVJRD4+IG1fdmFyaWFibGVzOworICAgIEhh
c2hNYXA8VmFyaWFibGVJRCwgR0x1aW50LCBJbnRIYXNoPFZhcmlhYmxlSUQ+LCBXVEY6OlN0cm9u
Z0VudW1IYXNoVHJhaXRzPFZhcmlhYmxlSUQ+PiBtX3ZhcmlhYmxlczsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJE
T3BlcmF0aW9ucy5jcHAKaW5kZXggZGYzM2Y1MjVkOTg1ODE5MWJhYTI1NTgyYjUwNzJmOTQ4Mzk0
OWRlYi4uNTQ0YTUwN2JjYjRmNzk5Zjk5MzliZTVlMmY1NzE4MjhiNzQ1NDcyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJE
T3BlcmF0aW9ucy5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCBzdGF0aWMgdm9pZCBkcmF3V2l0aFNo
YWRvd0hlbHBlcihJRDJEMVJlbmRlclRhcmdldCogY29udGV4dCwgSUQyRDFCaXRtYXBSZW5kZXJU
YQogICAgIGNvbnRleHQtPkRyYXdCaXRtYXAoY3JvcHBlZC5nZXQoKSk7CiB9CiAKLXZvaWQgZHJh
d1dpdGhTaGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgRmxv
YXRSZWN0IGJvdW5kaW5nUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpCit2b2lk
IGRyYXdXaXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQs
IEZsb2F0UmVjdCBib3VuZGluZ1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwg
RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYmIGRyYXdDb21tYW5kcykKIHsKICAg
ICBpZiAoIXNoYWRvd1N0YXRlLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgIGRyYXdXaXRob3V0U2hh
ZG93KHBsYXRmb3JtQ29udGV4dCwgV1RGTW92ZShkcmF3Q29tbWFuZHMpKTsKQEAgLTY5NCw3ICs2
OTQsNyBAQCB2b2lkIGRyYXdXaXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0
Zm9ybUNvbnRleHQsIEZsb2F0UmVjdCBib3VuZGluZwogICAgIHBsYXRmb3JtQ29udGV4dC5ub3Rp
ZnlQb3N0RHJhd09ic2VydmVyKCk7CiB9CiAKLXZvaWQgZHJhd1dpdGhvdXRTaGFkb3coUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkKElE
MkQxUmVuZGVyVGFyZ2V0Kik+JiYgZHJhd0NvbW1hbmRzKQordm9pZCBkcmF3V2l0aG91dFNoYWRv
dyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBGdW5jdGlvbjx2b2lk
KElEMkQxUmVuZGVyVGFyZ2V0Kik+JiYgZHJhd0NvbW1hbmRzKQogewogICAgIHBsYXRmb3JtQ29u
dGV4dC5ub3RpZnlQcmVEcmF3T2JzZXJ2ZXIoKTsKICAgICBkcmF3Q29tbWFuZHMocGxhdGZvcm1D
b250ZXh0LnJlbmRlclRhcmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAppbmRleCA0N2UyOTkzNjA3
YWQ1MWZlYmFhNmNjNzJkZmMyNjUxMzcwMzI0NzdmLi42NGIxZWI3NjBkYWM1NDY5NzI2M2I0YTky
MDRlZGYzZGIxMjVmYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCkBAIC0xMzIsOCArMTMyLDggQEAg
dm9pZCBkcmF3UGxhdGZvcm1JbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0
bWFwKiwgY29uc3QgRmxvYXRTaXplJgogdm9pZCBkcmF3UGF0aChQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRCYsIGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0
ZSYpOwogdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIENPTVB0cjxJ
RDJEMUJpdG1hcD4mJiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIAotdm9pZCBkcmF3V2l0aG91dFNoYWRvdyhQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRCYsIFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdl
dCopPiYmIGRyYXdDb21tYW5kcyk7Ci12b2lkIGRyYXdXaXRoU2hhZG93KFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEJiwgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpOwor
dm9pZCBkcmF3V2l0aG91dFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIEZ1bmN0aW9u
PHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpOwordm9pZCBkcmF3V2l0
aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIEZsb2F0UmVjdCBib3VuZGluZ1JlY3Qs
IGNvbnN0IFNoYWRvd1N0YXRlJiwgRnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYm
IGRyYXdDb21tYW5kcyk7CiAKIHZvaWQgZHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
LCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29u
c3QgQ29sb3ImKTsKIHZvaWQgZHJhd0xpbmUoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFN0cm9rZVN0eWxlLCBjb25zdCBDb2xv
ciYsIGZsb2F0LCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAKaW5kZXggMGJkNzA3
ZjFjNTVmMmY2NGJhMzI2MTczOTdjZmIxYTI3MTMzODE5MC4uYTQzMjJhNGRlZmYyYWQ4NWEzNzYw
YzBmYTc3NmQ0NmQyMDQ3Y2ZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDR1dpbi5jcHAKQEAgLTEz
NCw4ICsxMzQsOCBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVj
dDxIRk9OVD4gaGZvbnQsIENURm9udFJlZiBjdEZvbnQsIENHRgogdW5zaWduZWQgRm9udFBsYXRm
b3JtRGF0YTo6aGFzaCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZm9udEhhc2ggPSBtX2ZvbnQg
PyBtX2ZvbnQtPmhhc2goKSA6IDA7Ci0gICAgQ0ZIYXNoQ29kZSBjZ0ZvbnRIYXNoID0gV1RGOjpz
YWZlQ0ZIYXNoKG1fY2dGb250LmdldCgpKTsKLSAgICBDRkhhc2hDb2RlIGN0Rm9udEhhc2ggPSBX
VEY6OnNhZmVDRkhhc2gobV9jdEZvbnQuZ2V0KCkpOworICAgIENGSGFzaENvZGUgY2dGb250SGFz
aCA9IHNhZmVDRkhhc2gobV9jZ0ZvbnQuZ2V0KCkpOworICAgIENGSGFzaENvZGUgY3RGb250SGFz
aCA9IHNhZmVDRkhhc2gobV9jdEZvbnQuZ2V0KCkpOwogICAgIHVpbnRwdHJfdCBoYXNoQ29kZXNb
XSA9IHsgZm9udEhhc2gsIGNnRm9udEhhc2gsIGN0Rm9udEhhc2gsIG1fdXNlR0RJIH07CiAgICAg
cmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENv
ZGVzKTsKIH0KQEAgLTE0Myw4ICsxNDMsOCBAQCB1bnNpZ25lZCBGb250UGxhdGZvcm1EYXRhOjpo
YXNoKCkgY29uc3QKIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBtX2ZvbnQgPT0g
b3RoZXIubV9mb250Ci0gICAgICAgICYmIFdURjo6c2FmZUNGRXF1YWwobV9jZ0ZvbnQuZ2V0KCks
IG90aGVyLm1fY2dGb250LmdldCgpKQotICAgICAgICAmJiBXVEY6OnNhZmVDRkVxdWFsKG1fY3RG
b250LmdldCgpLCBvdGhlci5tX2N0Rm9udC5nZXQoKSkKKyAgICAgICAgJiYgc2FmZUNGRXF1YWwo
bV9jZ0ZvbnQuZ2V0KCksIG90aGVyLm1fY2dGb250LmdldCgpKQorICAgICAgICAmJiBzYWZlQ0ZF
cXVhbChtX2N0Rm9udC5nZXQoKSwgb3RoZXIubV9jdEZvbnQuZ2V0KCkpCiAgICAgICAgICYmIG1f
dXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJE
LmNwcAppbmRleCBiZTJmYzYxOGE3MTdlMjdkMWFhYjhmNDRjNmQwNmY4MmMwY2EzMWFkLi45Yjc3
ZTJhZjg0YjRhNTA1ZWY5ZjgzYmFhNWIzYjIwOTk5ZmU1NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxEaXJl
Y3QyRExheWVyVHlwZT4gbV9jbGlwczsKIH07CiAKLVBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwcmVEcmF3SGFuZGxlciwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgcG9zdERyYXdIYW5kbGVyKQorUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OlBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIEZ1bmN0aW9u
PHZvaWQoKT4mJiBwcmVEcmF3SGFuZGxlciwgRnVuY3Rpb248dm9pZCgpPiYmIHBvc3REcmF3SGFu
ZGxlcikKICAgICA6IG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKICAgICAsIG1fcHJlRHJh
d0hhbmRsZXIoV1RGTW92ZShwcmVEcmF3SGFuZGxlcikpCiAgICAgLCBtX3Bvc3REcmF3SGFuZGxl
cihXVEZNb3ZlKHBvc3REcmF3SGFuZGxlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCmlu
ZGV4IDZjZTZmNmUyMThmMDBkOGQ0MTY2YmRiYjgwN2FlNjVmMDgzNmFjNjMuLmI2ZWUxMWNiMzE2
MTNlMGI2Njk3NTg3ODQyODFhNmY2NmZiNTJkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRCk7CiBwdWJsaWM6Ci0gICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQoSUQyRDFSZW5kZXJUYXJnZXQqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwcmVEcmF3SGFu
ZGxlciA9IFtdKCkgeyB9LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBwb3N0RHJhd0hhbmRsZXIg
PSBbXSgpIHsgfSk7CisgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQoSUQyRDFSZW5kZXJUYXJn
ZXQqLCBGdW5jdGlvbjx2b2lkKCk+JiYgcHJlRHJhd0hhbmRsZXIgPSBbXSgpIHsgfSwgRnVuY3Rp
b248dm9pZCgpPiYmIHBvc3REcmF3SGFuZGxlciA9IFtdKCkgeyB9KTsKICAgICB+UGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQoKTsKIAogICAgIElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQo
KSB7IHJldHVybiBtX3JlbmRlclRhcmdldC5nZXQoKTsgfQpAQCAtMTM1LDggKzEzNSw4IEBAIHBy
aXZhdGU6CiAKICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IG1fY29tcG9zaXRlU291cmNlOwogCi0g
ICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcHJlRHJhd0hhbmRsZXI7Ci0gICAgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+IG1fcG9zdERyYXdIYW5kbGVyOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9w
cmVEcmF3SGFuZGxlcjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fcG9zdERyYXdIYW5kbGVyOwog
CiAgICAgY2xhc3MgU3RhdGU7CiAgICAgU3RhdGUqIG1fc3RhdGUgeyBudWxscHRyIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2Jq
ZWN0LmgKaW5kZXggNGNlMzY3YjZkNWY4MTlhNTlkYjgyNTViMzRiZWJkMGFkZTJhYWU4Yy4uMTg3
MDQwOTk0Y2M5ZmE0YmM3NTYyNzk3YTExNDczNGFiMTdkODQyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBXVEY6OlB0ckhhc2g8VD46Omhhc2gobV9vYmplY3QuZ2V0KCkpOwor
ICAgICAgICByZXR1cm4gUHRySGFzaDxUPjo6aGFzaChtX29iamVjdC5nZXQoKSk7CiAgICAgfQog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNv
ckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAppbmRl
eCBlZGVkN2U4ZGQyM2FiYjM2MGU4ZGFiNDQzNWYzMTIwOTM4YTVlZTQxLi40ODM4NGQwMmE5MWU1
ZmNmODJjZmU1MjRkZDRkZjM3NmEwMjJhNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ3Vyc29yR3RrLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
aWYgVVNFKEdUSzQpCiBzdGF0aWMgR1JlZlB0cjxHZGtDdXJzb3I+IGZhbGxiYWNrQ3Vyc29yKCkK
IHsKLSAgICBzdGF0aWMgV1RGOjpOZXZlckRlc3Ryb3llZDxHUmVmUHRyPEdka0N1cnNvcj4+IGN1
cnNvcihhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXdfZnJvbV9uYW1lKCJkZWZhdWx0IiwgbnVsbHB0
cikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R1JlZlB0cjxHZGtDdXJzb3I+PiBjdXJz
b3IoYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3X2Zyb21fbmFtZSgiZGVmYXVsdCIsIG51bGxwdHIp
KSk7CiAgICAgcmV0dXJuIGN1cnNvcjsKIH0KICNlbmRpZiAvLyBVU0UoR1RLNCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKaW5kZXggNmJjMWQ1NDdkMzE5
OWQ1ZjIyOGFiYjUxZDM0NDA4YTk4NGU2NzdmYy4uN2IwZDZkZTk4YjM4MzNjNmUyMmI5NTk3MGI5
YzU1OGM0MDMyYjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxp
dGllcy5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBXYWxsVGltZSB3YWxsVGltZUZvckV2ZW50KGNv
bnN0IEdka0V2ZW50KiBldmVudCkKICAgICAvLyBUaGlzIHdvcmtzIGlmIGFuZCBvbmx5IGlmIHRo
ZSBYIHNlcnZlciBvciBXYXlsYW5kIGNvbXBvc2l0b3IgaGFwcGVucyB0bwogICAgIC8vIGJlIHVz
aW5nIENMT0NLX01PTk9UT05JQyBmb3IgaXRzIG1vbm90b25pYyB0aW1lLCBhbmQgc28gbG9uZyBh
cwogICAgIC8vIGdfZ2V0X21vbm90b25pY190aW1lKCkgY29udGludWVzIHRvIGRvIHNvIGFzIHdl
bGwsIGFuZCBzbyBsb25nIGFzCi0gICAgLy8gV1RGOjpNb25vdG9uaWNUaW1lIGNvbnRpbnVlcyB0
byB1c2UgZ19nZXRfbW9ub3RvbmljX3RpbWUoKS4KKyAgICAvLyBNb25vdG9uaWNUaW1lIGNvbnRp
bnVlcyB0byB1c2UgZ19nZXRfbW9ub3RvbmljX3RpbWUoKS4KICNpZiBVU0UoR1RLNCkKICAgICBh
dXRvIHRpbWUgPSBnZGtfZXZlbnRfZ2V0X3RpbWUoY29uc3RfY2FzdDxHZGtFdmVudCo+KGV2ZW50
KSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRm
b3JtU2NyZWVuR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNj
cmVlbkd0ay5jcHAKaW5kZXggN2EzYjQ3MjNmNDhjMTc5ODY0YjJkZDZkNWIxZWQ4ZDI3NDkyMzU4
ZS4uODA5NThiYTU2NWE4NzcyMjRkMGVkMzdlNGU0MDU3YjRiZTBkZGUyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCkBAIC0xNDEs
OSArMTQxLDkgQEAgZG91YmxlIHNjcmVlbkRQSSgpCiAgICAgcmV0dXJuIGNhY2hlZERwaTsKIH0K
IAotc3RhdGljIFdURjo6SGFzaE1hcDx2b2lkKiwgRnVuY3Rpb248dm9pZCgpPj4mIHNjcmVlbkRQ
SU9ic2VydmVySGFuZGxlcnNNYXAoKQorc3RhdGljIEhhc2hNYXA8dm9pZCosIEZ1bmN0aW9uPHZv
aWQoKT4+JiBzY3JlZW5EUElPYnNlcnZlckhhbmRsZXJzTWFwKCkKIHsKLSAgICBzdGF0aWMgV1RG
OjpOZXZlckRlc3Ryb3llZDxXVEY6Okhhc2hNYXA8dm9pZCosIEZ1bmN0aW9uPHZvaWQoKT4+PiBo
YW5kbGVyc01hcDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDx2b2lkKiwgRnVu
Y3Rpb248dm9pZCgpPj4+IGhhbmRsZXJzTWFwOwogICAgIHJldHVybiBoYW5kbGVyc01hcDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCA5OTM4Y2ViMzgwZTE3OGI0ZTc2MWQwY2ZjZjZh
MWRhNmZlOWIzMmJmLi5jYTE0ZTdhYjFmY2ZmNmY5YmIxYzQxYmE5NjJkNTQ4OTFkYzU3N2UwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudE1vZGUubW9kZSgpOyB9CiAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlUGxheWJhY2soKSBjb25zdCB7IHJldHVybiBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQ
bGF5YmFjazsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5QXV0b21hdGljYWxseVNob3dW
aWRlb1BpY3R1cmVJblBpY3R1cmUoKSBjb25zdDsKLSAgICB2b2lkIHByZXBhcmVGb3JQaWN0dXJl
SW5QaWN0dXJlU3RvcChXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOworICAg
IHZvaWQgcHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wKEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY2FsbGJhY2spOwogICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
KCk7CiAgICAgYm9vbCBpblBpY3R1cmVJblBpY3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2VudGVy
aW5nUGljdHVyZUluUGljdHVyZSB8fCBtX2N1cnJlbnRNb2RlLmhhc1BpY3R1cmVJblBpY3R1cmUo
KTsgfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHByb3RlY3RlZDoKICAgICBSZXRhaW5QdHI8VUlWaWV3
PiBtX3BhcmVudFZpZXc7CiAgICAgUmV0YWluUHRyPFVJV2luZG93PiBtX3BhcmVudFdpbmRvdzsK
ICAgICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJMYXllclZpZXc+IG1fcGxheWVyTGF5ZXJWaWV3Owot
ICAgIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsK
KyAgICBGdW5jdGlvbjx2b2lkKGJvb2wpPiBtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrOwogICAg
IFJ1bkxvb3A6OlRpbWVyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX3dhdGNoZG9n
VGltZXI7CiAgICAgRmxvYXRSZWN0IG1faW5saW5lUmVjdDsKICAgICBSb3V0ZVNoYXJpbmdQb2xp
Y3kgbV9yb3V0ZVNoYXJpbmdQb2xpY3kgeyBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZFJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRS
dW4uY3BwCmluZGV4IDcyMDQxZTllMWZlOWZlOWQ1NmFlMjc3YjcwZjhkZThiZjZhM2JmN2MuLmEx
OTEwY2UzOTE1MWEyYjVmZjhmOTJmOWNkMzdhYTAzNzVjYjg2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAKIGV4dGVybiAiQyIgewogCi10eXBlZGVmIFdURjo6VmVj
dG9yPFdlYlRocmVhZEJsb2NrPiBXZWJUaHJlYWRSdW5RdWV1ZTsKK3R5cGVkZWYgVmVjdG9yPFdl
YlRocmVhZEJsb2NrPiBXZWJUaHJlYWRSdW5RdWV1ZTsKIAogc3RhdGljIExvY2sgcnVuUXVldWVN
dXRleDsKIHN0YXRpYyBXZWJUaHJlYWRSdW5RdWV1ZSogcnVuUXVldWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5jcHAKaW5kZXggYTQ3ZTM0M2Y0
ZGNhMDM2ZmVhZWZkM2MxMGQ1ZjI0MGUzNGI5ZjBkYi4uZjVhMGZhNzA0OTg5ZGNhMzJhMDY5NjVj
MTBmOTAyYmNlYjQ1NDc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
b3dlck9ic2VydmVyTWFjLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgcG93ZXJPbkhhbmRlcikKK1Bvd2VyT2JzZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoRnVuY3Rpb248
dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIpCiAgICAgOiBtX3Bvd2VyT25IYW5kZXIoV1RGTW92ZShw
b3dlck9uSGFuZGVyKSkKICAgICAsIG1fcG93ZXJDb25uZWN0aW9uKDApCiAgICAgLCBtX25vdGlm
aWNhdGlvblBvcnQobnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Qb3dlck9ic2VydmVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93
ZXJPYnNlcnZlck1hYy5oCmluZGV4IGE4MGI2MjA3NWMwMWRjMTQ5ZjgzMTFjNzQ5NGM4MTMyOWFj
NjA1OTMuLjEwZTcxN2MxYzk2ZmZkMTE0N2UwNDZlZTcwYzcyZTFkZjBiYzE2MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaApAQCAtMzgsMTMg
KzM4LDEzIEBAIGNsYXNzIFBvd2VyT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBvd2VyT2JzZXJ2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIFBvd2VyT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcG93
ZXJPbkhhbmRlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgUG93ZXJPYnNlcnZlcihGdW5jdGlvbjx2
b2lkKCk+JiYgcG93ZXJPbkhhbmRlcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBvd2VyT2JzZXJ2
ZXIoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeXN0ZW1Qb3dlck5vdGlmaWNh
dGlvbihpb19zZXJ2aWNlX3QsIHVpbnQzMl90IG1lc3NhZ2VUeXBlLCB2b2lkKiBtZXNzYWdlQXJn
dW1lbnQpOwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRlcjsKKyAg
ICBGdW5jdGlvbjx2b2lkKCk+IG1fcG93ZXJPbkhhbmRlcjsKICAgICBpb19jb25uZWN0X3QgbV9w
b3dlckNvbm5lY3Rpb247CiAgICAgSU9Ob3RpZmljYXRpb25Qb3J0UmVmIG1fbm90aWZpY2F0aW9u
UG9ydDsKICAgICBpb19vYmplY3RfdCBtX25vdGlmaWVyUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oCmluZGV4IDMxODU5ZDE5ZjRh
NjE3YTc0Y2Q5NTRjZjEyNzVhY2JmOTNlYzQ5MzguLjZhNDNjZjc2YWI0NWNiYTM3Yzg4NWVmOWM5
NDU0MjA4YWZlYzVkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5LmgKQEAgLTM4LDggKzM4LDggQEAgc3RydWN0IE1lZGlhRW5jb2RpbmdDb25m
aWd1cmF0aW9uOwogCiBjbGFzcyBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5IHsKIHB1
YmxpYzoKLSAgICB1c2luZyBEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYmKT47Ci0gICAgdXNpbmcg
RW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFD
YXBhYmlsaXRpZXNFbmNvZGluZ0luZm8mJik+OworICAgIHVzaW5nIERlY29kaW5nQ29uZmlndXJh
dGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5m
byYmKT47CisgICAgdXNpbmcgRW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPjsKIAogICAgIHN0YXRpYyBi
b29sIGhhc0RlY29kaW5nQ29uZmlndXJhdGlvbkZhY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBo
YXNFbmNvZGluZ0NvbmZpZ3VyYXRpb25GYWN0b3J5KCk7CkBAIC00Nyw4ICs0Nyw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjcmVhdGVEZWNvZGluZ0NvbmZpZ3Vy
YXRpb24oTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRGVjb2RpbmdDb25maWd1cmF0aW9u
Q2FsbGJhY2smJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY3JlYXRlRW5jb2Rp
bmdDb25maWd1cmF0aW9uKE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYsIEVuY29kaW5nQ29u
ZmlndXJhdGlvbkNhbGxiYWNrJiYpOwogICAgIAotICAgIHVzaW5nIENyZWF0ZURlY29kaW5nQ29u
ZmlndXJhdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
biYmLCBEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYmKT47Ci0gICAgdXNpbmcgQ3JlYXRl
RW5jb2RpbmdDb25maWd1cmF0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhRW5jb2RpbmdD
b25maWd1cmF0aW9uJiYsIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpPjsKKyAgICB1
c2luZyBDcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24gPSBGdW5jdGlvbjx2b2lkKE1lZGlhRGVj
b2RpbmdDb25maWd1cmF0aW9uJiYsIERlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpPjsK
KyAgICB1c2luZyBDcmVhdGVFbmNvZGluZ0NvbmZpZ3VyYXRpb24gPSBGdW5jdGlvbjx2b2lkKE1l
ZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYsIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNr
JiYpPjsKIAogICAgIHN0cnVjdCBNZWRpYUVuZ2luZUZhY3RvcnkgewogICAgICAgICBDcmVhdGVE
ZWNvZGluZ0NvbmZpZ3VyYXRpb24gY3JlYXRlRGVjb2RpbmdDb25maWd1cmF0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDk3MThhNGI2NDNkYWI2OGU2
MjcxZjNlZDE4Y2NkZDZlMGU0ZTFkNzguLmY5NWQ4ZjAxYWZhZWI0OGFlYjgwMWEzNjJlZTQ2NDFi
MjYyNDQxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAg
LTExOSw3ICsxMTksNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6dmlkZW9T
YW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZUJ1ZmZlcgogICAgIG1fd3JpdGVyLT5h
cHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihzYW1wbGVCdWZmZXIpOwogfQogCi12b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbDo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVk
aWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQor
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShj
b25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxl
Q291bnQpCiB7CiAgICAgQVNTRVJUKGlzPFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSkpOwogICAg
IEFTU0VSVChkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkudHlwZSA9PSBQbGF0Zm9y
bURlc2NyaXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5oCmluZGV4IGM2NTk1NWQzZWQ4MDNmOWEzZDk3NGM0MzBjYzdkYTQz
YjRlMmFlYTcuLjM4Yjk0ZjllNGVhYzRkZjQzNWFjMDIzZDI4MzA1MDQzZTFiOTI3MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2
YXRlOgogICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2
YWlsYWJsZShNZWRpYVNhbXBsZSYpIGZpbmFsOwogICAgIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0
YUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0
IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRS
ZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmKSBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrLmNwcAppbmRleCBmODIxNWMwZTBlYzkwODkyYmVhYjU5OGMxYzMxMGE2NDYzNTFiNDkwLi4x
ZWZhNzBiOTA1MTBkYmZlYTM3MTM5ZGI5ZmE4YzYwMTZkNGM1MzQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVNb2NrOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpCiAgICAgZ2Vu
ZXJhdGVNb2NrQ291bnRlclN0cmluZygpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
TW9jazo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90
KQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShj
b25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpCiB7CiAgICAgLy8gSGVhcCBhbGxvY2F0aW9ucyBhcmUg
Zm9yYmlkZGVuIG9uIHRoZSBhdWRpbyB0aHJlYWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgc28g
d2UgbmVlZCB0bwogICAgIC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZvbGxvd2luZyBhbGxvY2F0
aW9uKHMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmgKaW5kZXggNDljYWRiZGZhMjEw
YWQ4YmQ1MGJlZDU0NGY1ODczZmE1YjA3ZDAxMi4uZDQ4NGIyZmNlYTFlODRhZWU5YmY4MWUwZGUy
NjI3NDJmZDIyOTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5oCkBAIC00NCw3
ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lk
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJikgZmluYWw7CiAgICAgdm9pZCBmZXRj
aERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNB
dmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQg
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVk
aW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7
CiAgICAgdm9pZCBwYXVzZVJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZp
bmFsOwogICAgIHZvaWQgcmVzdW1lUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCmluZGV4IGZlNzY5N2Y4NTdjMzU4YzkxY2EwZmZjYTVi
ZjBjY2JjNzc0YWYyYTkuLjFmZDAyM2Q4MDQ5NDYzMTIxM2YyY2YxMDUxM2Y0MWI2YzU4ODIyYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29u
c3RyYWludHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY29uc3QgU3RyaW5nJiBTdHJpbmdDb25zdHJhaW50OjpmaW5kKGNvbnN0IFdURjo6RnVu
Y3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGZpbHRlcikgY29uc3QKK2NvbnN0IFN0cmluZyYg
U3RyaW5nQ29uc3RyYWludDo6ZmluZChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYp
PiYgZmlsdGVyKSBjb25zdAogewogICAgIGZvciAoYXV0byYgY29uc3RyYWludCA6IG1fZXhhY3Qp
IHsKICAgICAgICAgaWYgKGZpbHRlcihjb25zdHJhaW50KSkKQEAgLTE4MCw3ICsxODAsNyBAQCBj
b25zdCBNZWRpYUNvbnN0cmFpbnQqIEZsYXR0ZW5lZENvbnN0cmFpbnQ6OmZpbmQoTWVkaWFDb25z
dHJhaW50VHlwZSB0eXBlKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmb3JFYWNoKFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBNZWRpYUNvbnN0cmFpbnQmKT4mJiBjYWxsYmFjaykgY29uc3QKK3ZvaWQgTWVkaWFUcmFja0Nv
bnN0cmFpbnRTZXRNYXA6OmZvckVhY2goRnVuY3Rpb248dm9pZChjb25zdCBNZWRpYUNvbnN0cmFp
bnQmKT4mJiBjYWxsYmFjaykgY29uc3QKIHsKICAgICBmaWx0ZXIoW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldIChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpIG11dGFibGUg
ewogICAgICAgICBjYWxsYmFjayhjb25zdHJhaW50KTsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmb3JFYWNoKFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBNZWRpYUNvbnN0cmFpbgogICAgIH0pOwogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwOjpmaWx0ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IE1lZGlhQ29u
c3RyYWludCYpPiYgY2FsbGJhY2spIGNvbnN0Cit2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwOjpmaWx0ZXIoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKT4m
IGNhbGxiYWNrKSBjb25zdAogewogICAgIGlmIChtX3dpZHRoICYmICFtX3dpZHRoLT5pc0VtcHR5
KCkgJiYgY2FsbGJhY2soKm1fd2lkdGgpKQogICAgICAgICByZXR1cm47CkBAIC0zNzUsNyArMzc1
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZERlZmF1bHRWaWRlb0NvbnN0cmFpbnRzKE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwJiB2aWRlb0MKICAgICB9CiB9CiAKLWJvb2wgTWVkaWFDb25z
dHJhaW50czo6aXNDb25zdHJhaW50U2V0KGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYpPiYgY2FsbGJhY2spCitib29sIE1lZGlhQ29uc3Ry
YWludHM6OmlzQ29uc3RyYWludFNldChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwJik+JiBjYWxsYmFjaykKIHsKICAgICBpZiAoY2FsbGJhY2sobWFu
ZGF0b3J5Q29uc3RyYWludHMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAppbmRl
eCBlMmFhZjI3NzEwMjZjYzE4Yjc4MGQ5YTc4NjFhYzMxOTE0NTQ3ZmJjLi5iYTAyOGY0ZGJkZmQx
OWViMTJhNmM3ZmVjNmNhMDQ0ODY5NjUxNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC0yMzcsNyArMjM3
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBWYWx1ZVR5
cGUgZmluZChjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woVmFsdWVUeXBlKT4mIGZ1bmN0aW9uKSBj
b25zdAorICAgIFZhbHVlVHlwZSBmaW5kKGNvbnN0IEZ1bmN0aW9uPGJvb2woVmFsdWVUeXBlKT4m
IGZ1bmN0aW9uKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fbWluICYmIGZ1bmN0aW9uKG1f
bWluLnZhbHVlKCkpKQogICAgICAgICAgICAgcmV0dXJuIG1fbWluLnZhbHVlKCk7CkBAIC01OTIs
NyArNTkyLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBmaXRuZXNzRGlzdGFuY2UoY29uc3QgU3Ry
aW5nJikgY29uc3Q7CiAgICAgZG91YmxlIGZpdG5lc3NEaXN0YW5jZShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0OwogCi0gICAgY29uc3QgU3RyaW5nJiBmaW5kKGNvbnN0IFdURjo6RnVuY3Rp
b248Ym9vbChjb25zdCBTdHJpbmcmKT4mKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIGZpbmQo
Y29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mKSBjb25zdDsKIAogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhhY3QuaXNFbXB0eSgpICYmIG1faWRlYWwuaXNF
bXB0eSgpOyB9CiAgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IHsgcmV0dXJuICFtX2V4YWN0
LmlzRW1wdHkoKTsgfQpAQCAtNjQ5LDggKzY0OSw4IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZvckVhY2goV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpPiYmKSBj
b25zdDsKLSAgICB2b2lkIGZpbHRlcihjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgTWVk
aWFDb25zdHJhaW50Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNo
KEZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFDb25zdHJhaW50Jik+JiYpIGNvbnN0OworICAgIHZv
aWQgZmlsdGVyKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgTWVkaWFDb25zdHJhaW50Jik+Jikg
Y29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc2l6
ZV90IHNpemUoKSBjb25zdDsKIApAQCAtODk0LDcgKzg5NCw3IEBAIHByaXZhdGU6CiAKIHN0cnVj
dCBNZWRpYUNvbnN0cmFpbnRzIHsKICAgICB2b2lkIHNldERlZmF1bHRWaWRlb0NvbnN0cmFpbnRz
KCk7Ci0gICAgYm9vbCBpc0NvbnN0cmFpbnRTZXQoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNv
bnN0IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwJik+Jik7CisgICAgYm9vbCBpc0NvbnN0cmFp
bnRTZXQoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cCYpPiYpOwogCiAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgbWFuZGF0b3J5Q29uc3Ry
YWludHM7CiAgICAgVmVjdG9yPE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwPiBhZHZhbmNlZENv
bnN0cmFpbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDA0YTVmYmQyMGQ1ZDU5MDUxNjk2YTk0
YzFkYjcyZTE0YjAyMzBhM2MuLmRlY2Q5MDc5NjdiMzlhZTllYTY1YjI3MWU2NTM2OTNiNjRmNGVi
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZShUeXBlLCBTdHJpbmcmJiBuYW1lLCBTdHJp
bmcmJiBkZXZpY2VJRCA9IHsgfSwgU3RyaW5nJiYgaGFzaFNhbHQgPSB7IH0pOwogCi0gICAgdm9p
ZCBzY2hlZHVsZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgdmlydHVh
bCB2b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRD
b25maWd1cmF0aW9uKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4IGVlZmIxYzkxOTNiYjlj
OWEwMzZiZGVmYmM1MGJlOTZhNjA5NTUzNGYuLmUwOGI1MjlmODJiYmNjZDY2NmMzMzU3YWE3ZTc3
NTQ0N2VkMDU2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQg
R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmlj
ZXMoQ29tcGxldGlvbkhhbmRsCiB7CiAgICAgbV9kZXZpY2VzLmNsZWFyKCk7CiAKLSAgICBDYXB0
dXJlRGV2aWNlIHNjcmVlbkNhcHR1cmVEZXZpY2UoV1RGOjpjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygiQ2Fw
dHVyZSBTY3JlZW4iKSk7CisgICAgQ2FwdHVyZURldmljZSBzY3JlZW5DYXB0dXJlRGV2aWNlKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2Ny
ZWVuLCBtYWtlU3RyaW5nKCJDYXB0dXJlIFNjcmVlbiIpKTsKICAgICBzY3JlZW5DYXB0dXJlRGV2
aWNlLnNldEVuYWJsZWQodHJ1ZSk7CiAgICAgbV9kZXZpY2VzLmFwcGVuZChXVEZNb3ZlKHNjcmVl
bkNhcHR1cmVEZXZpY2UpKTsKICAgICBjYWxsYmFjaygpOwpAQCAtNzYsOCArNzYsOCBAQCBDYXB0
dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OmNy
ZWF0ZURpc3BsYXlDYXB0dXJlUwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGF1
dG8gdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtSYW5kb21VaW50MzIoKSk7
Ci0gICAgYXV0byBzZXNzaW9uVG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtS
YW5kb21VaW50MzIoKSk7CisgICAgYXV0byB0b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIHdl
YWtSYW5kb21VaW50MzIoKSk7CisgICAgYXV0byBzZXNzaW9uVG9rZW4gPSBtYWtlU3RyaW5nKCJX
ZWJLaXQiLCB3ZWFrUmFuZG9tVWludDMyKCkpOwogICAgIEdWYXJpYW50QnVpbGRlciBvcHRpb25z
OwogICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJm9wdGlvbnMsIEdfVkFSSUFOVF9UWVBFX1ZB
UkRJQ1QpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntzdn0iLCAiaGFu
ZGxlX3Rva2VuIiwgZ192YXJpYW50X25ld19zdHJpbmcodG9rZW4uYXNjaWkoKS5kYXRhKCkpKTsK
QEAgLTEwMCw3ICsxMDAsNyBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFtZXJEaXNwbGF5
Q2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZURpc3BsYXlDYXB0dXJlUwogICAgIC8vIEZJWE1F
OiBNYXliZSBjaGVjayB0aGlzIGRlcGVuZGluZyBvbiBkZXZpY2UudHlwZSgpLgogICAgIGF1dG8g
b3V0cHV0VHlwZSA9IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6UGlwZVdp
cmVPdXRwdXRUeXBlOjpNb25pdG9yIHwgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpQaXBlV2lyZU91dHB1dFR5cGU6OldpbmRvdzsKIAotICAgIHRva2VuID0gbWFrZVN0cmlu
ZygiV2ViS2l0IiwgV1RGOjp3ZWFrUmFuZG9tVWludDMyKCkpOworICAgIHRva2VuID0gbWFrZVN0
cmluZygiV2ViS2l0Iiwgd2Vha1JhbmRvbVVpbnQzMigpKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRl
cl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKICAgICBnX3ZhcmlhbnRf
YnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsIGdfdmFyaWFudF9u
ZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7CiAgICAgZ192YXJpYW50X2J1aWxkZXJf
YWRkKCZvcHRpb25zLCAie3N2fSIsICJ0eXBlcyIsIGdfdmFyaWFudF9uZXdfdWludDMyKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihvdXRwdXRUeXBlKSkpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIENhcHR1
cmVTb3VyY2VPckVycm9yIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3Jl
YXRlRGlzcGxheUNhcHR1cmVTCiAgICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIobyki
LCAmb2JqZWN0UGF0aC5vdXRQdHIoKSk7CiAgICAgd2FpdFJlc3BvbnNlU2lnbmFsKG9iamVjdFBh
dGguZ2V0KCkpOwogCi0gICAgdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCBXVEY6OndlYWtS
YW5kb21VaW50MzIoKSk7CisgICAgdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCB3ZWFrUmFu
ZG9tVWludDMyKCkpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJm9wdGlvbnMsIEdfVkFS
SUFOVF9UWVBFX1ZBUkRJQ1QpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywg
Intzdn0iLCAiaGFuZGxlX3Rva2VuIiwgZ192YXJpYW50X25ld19zdHJpbmcodG9rZW4uYXNjaWko
KS5kYXRhKCkpKTsKICAgICByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3lu
YyhtX3Byb3h5LmdldCgpLCAiU3RhcnQiLApAQCAtMTU0LDcgKzE1NCw3IEBAIENhcHR1cmVTb3Vy
Y2VPckVycm9yIEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlRGlz
cGxheUNhcHR1cmVTCiAgICAgZ192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIoaCkiLCAmZmRP
dXQpOwogICAgIGZkID0gZ191bml4X2ZkX2xpc3RfZ2V0KGZkTGlzdC5nZXQoKSwgZmRPdXQsIG51
bGxwdHIpOwogCi0gICAgYXV0byBzZXNzaW9uID0gV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lckRp
c3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6U2Vzc2lvbj4oZmQsIFdURk1vdmUoc2Vzc2lvblBh
dGgpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBtYWtlVW5pcXVlPEdTdHJlYW1lckRpc3BsYXlDYXB0
dXJlRGV2aWNlTWFuYWdlcjo6U2Vzc2lvbj4oZmQsIFdURk1vdmUoc2Vzc2lvblBhdGgpKTsKICAg
ICBtX3Nlc3Npb25zLmFkZChkZXZpY2UucGVyc2lzdGVudElkKCksIFdURk1vdmUoc2Vzc2lvbikp
OwogICAgIHJldHVybiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZVBpcGV3aXJl
U291cmNlKGRldmljZS5wZXJzaXN0ZW50SWQoKS5pc29sYXRlZENvcHkoKSwgZmQsIHsgfSwgY29u
c3RyYWludHMsIGRldmljZS50eXBlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3Zp
ZGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9NZWRp
YVN0cmVhbVRyYWNrQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmgKaW5kZXggNzc1YjE1NmVlOTYw
N2Y3OWUxYzQxOTcyNjI4Mzg5MjRhYjcyZWRkZC4uNWY2Y2Y0MWFmZmI4NTkyMzk0ZmZmNGY4Mzc5
MDRlN2Y4ZjcxMjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01lZGlhU3RyZWFtVHJhY2tBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTWVkaWFTdHJlYW1UcmFj
a0F1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hCiAgICAgdm9pZCBoYXNOZXdDbGllbnQo
QXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCopIGZpbmFsOwogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAotICAgIFdURjo6TG9nZ2VySGVscGVyJiBsb2dnZXJIZWxwZXIoKSBmaW5hbCB7IHJldHVy
biBtX3NvdXJjZS5nZXQoKTsgfQorICAgIExvZ2dlckhlbHBlciYgbG9nZ2VySGVscGVyKCkgZmlu
YWwgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KICNlbmRpZgogCiAgICAgLy8gTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckNvY29hLmgKaW5kZXggN2ZjMDcyNWZiYmZhM2ZhNmViMjJjN2Y0ZDFhMDllZGRhOTU3NGYxNC4u
OTQzYThkYTZlMDFhNDBiYzJiNDAzMTE1NTJlM2IzMjNhNTE1OTQxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlk
ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9X
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EuaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBoYXNOZXdDbGllbnQoQXVkaW9Tb3VyY2VQcm92
aWRlckNsaWVudCopID0gMDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2aXJ0dWFs
IFdURjo6TG9nZ2VySGVscGVyJiBsb2dnZXJIZWxwZXIoKSA9IDA7CisgICAgdmlydHVhbCBMb2dn
ZXJIZWxwZXImIGxvZ2dlckhlbHBlcigpID0gMDsKICNlbmRpZgogCiAgICAgLy8gQXVkaW9Tb3Vy
Y2VQcm92aWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmgKaW5kZXggZmUzMjc1OTZhMmYwZGJlMzZkMWQ2ODJmZmI5NDRiMjQ5
NzFiMDBiMi4uMmZhNzVlMDU3YTUzZDdlODE4Y2NmYWZlZTcwMjQzZGQ1NDgyMTg0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFBlcm1pc3Npb25TdGF0ZUFs
bG93ZWQsCiAgICAgICAgIFBlcm1pc3Npb25TdGF0ZURlbmllZCwKICAgICB9IG1fcGVybWlzc2lv
blN0YXRlOwotICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4gPiBH
ZW9sb2NhdGlvblNldDsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEdlb2xvY2F0aW9uPj4g
R2VvbG9jYXRpb25TZXQ7CiAgICAgR2VvbG9jYXRpb25TZXQgbV9wZW5kaW5nUGVybWlzc2lvbjsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uRmFjdG9yeU1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeU1vY2suaAppbmRleCA4MWQ4MjEzMGY4
MzliOWQxMjc3NTMyNDU0N2JjZTlmZjcxYjA3ODdmLi5iNzhjNDRiNjQ3ODZlMjE0MGRhMzQxYTVi
MjYyZTMzZWI3MWE2NzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlNb2NrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5oCkBA
IC0zNyw4ICszNyw4IEBAIHN0cnVjdCBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbjsKIHN0cnVj
dCBNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbjsKIAogc3RydWN0IE1lZGlhRW5naW5lQ29uZmln
dXJhdGlvbkZhY3RvcnlNb2NrIHsKLSAgICB1c2luZyBEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYm
KT47Ci0gICAgdXNpbmcgRW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8mJik+OworICAgIHVzaW5nIERl
Y29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxp
dGllc0RlY29kaW5nSW5mbyYmKT47CisgICAgdXNpbmcgRW5jb2RpbmdDb25maWd1cmF0aW9uQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPjsK
IAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZURlY29kaW5nQ29uZmlndXJhdGlvbihNZWRpYURlY29k
aW5nQ29uZmlndXJhdGlvbiYmLCBEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKICAg
ICBzdGF0aWMgdm9pZCBjcmVhdGVFbmNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFFbmNvZGluZ0Nv
bmZpZ3VyYXRpb24mJiwgRW5jb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVy
TW9jay5jcHAKaW5kZXggZDZjZjAyODJiYmFiZTg5MmE3YzQwMGI3NGRkOGRhMTVlMGZmMTNmYi4u
NTk2YmVlYjYxMzNhMDZiYjM4ZTUzY2Y1NzdhMzg5OWNhZGNkZTNkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2Nr
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcm9sbGJh
cnNDb250cm9sbGVyTW9jazo6U2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrKFNjcm9sbGFibGVBcmVh
JiBzY3JvbGxhYmxlQXJlYSwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGxv
Z2dlcikKK1Njcm9sbGJhcnNDb250cm9sbGVyTW9jazo6U2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2Nr
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmKT4mJiBsb2dnZXIpCiAgICAgOiBTY3JvbGxiYXJzQ29udHJvbGxlcihzY3JvbGxhYmxlQXJl
YSkKICAgICAsIG1fbG9nZ2VyKFdURk1vdmUobG9nZ2VyKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9jay5oCmluZGV4
IGE0NzMzOTMxMTJkODRhYTUzZWQyYjY3OWVmZjA4NDY3MzNiODgyYmYuLmNiMzAzNmE1ODkwMjk3
NDZmZjA0MjkzMzg2NmJmOGM3ZWU4NzExYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suaApAQCAtNDQsNyArNDQs
NyBAQCBjbGFzcyBTY3JvbGxiYXJzQ29udHJvbGxlck1vY2sgZmluYWwgOiBwdWJsaWMgU2Nyb2xs
YmFyc0NvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNjcm9sbGJhcnNDb250cm9sbGVyTW9jayk7CiBwdWJsaWM6Ci0gICAg
U2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrKFNjcm9sbGFibGVBcmVhJiwgV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICBTY3JvbGxiYXJzQ29udHJvbGxlck1vY2soU2Ny
b2xsYWJsZUFyZWEmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2aXJ0
dWFsIH5TY3JvbGxiYXJzQ29udHJvbGxlck1vY2soKTsKIAogcHJpdmF0ZToKQEAgLTYxLDcgKzYx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1vdXNlSXNEb3duSW5TY3JvbGxiYXIoU2Nyb2xsYmFy
KiwgYm9vbCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgY2hhciogc2Nyb2xsYmFyUHJlZml4KFNj
cm9sbGJhciopIGNvbnN0OwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYp
PiBtX2xvZ2dlcjsKKyAgICBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX2xvZ2dlcjsK
ICAgICBTY3JvbGxiYXIqIG1fdmVydGljYWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiAgICAgU2Ny
b2xsYmFyKiBtX2hvcml6b250YWxTY3JvbGxiYXIgeyBudWxscHRyIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5k
ZXggNzAyNTk0NDcxYWQzZDg0ZGE2MjQ1MDVlNmFhMmQ2ZmQ4MmEyZTA2Mi4uNjdhNzYyOTVkODVm
MzkxYzgzYjI0MDBlNmQxZmU1NzljY2RlZDg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0yODQsNyArMjg0LDcg
QEAgYm9vbCBCbG9iUmVnaXN0cnlJbXBsOjpwb3B1bGF0ZUJsb2JzRm9yRmlsZVdyaXRpbmcoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkwKIAogc3RhdGljIGJvb2wgd3JpdGVGaWxlUGF0aHNP
ckRhdGFCdWZmZXJzVG9GaWxlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBUaHJlYWRT
YWZlRGF0YUJ1ZmZlcj4+JiBmaWxlUGF0aHNPckRhdGFCdWZmZXJzLCBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGF1dG8gZmls
ZUNsb3NlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbZmlsZV0oKSBtdXRhYmxlIHsKKyAgICBhdXRv
IGZpbGVDbG9zZXIgPSBtYWtlU2NvcGVFeGl0KFtmaWxlXSgpIG11dGFibGUgewogICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmgKaW5kZXggNzY1NjI5ZGYxOGVmNDJi
Nzk1N2JmYjcwMzBmODExYjAxMTEzY2QwNC4uZDlhMDJhNTZhNmQ2ZjIwZDk3NDU0YzM3ZDgxMGNh
Njg4ZGUzNjRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b29raWVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29r
aWVTdG9yYWdlLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiAKLVdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmgKaW5kZXggOTQ3Mjg2M2IzYjAxZjA5MzFjMWM5NDQ0NTdiYjRiNGNmZTg0Y2Y1
ZS4uYTliMjlkNTllOWFhM2I0NjU1NDE1YmQ4YmVmMDk4NGM1NDRiNzNmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtNDQsNyAr
NDQsNyBAQCBzdHJ1Y3QgUmVzdWx0IHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKIH07CiAK
LXVzaW5nIERlY29kZUNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChzdGQ6
Om9wdGlvbmFsPFJlc3VsdD4pPjsKK3VzaW5nIERlY29kZUNvbXBsZXRpb25IYW5kbGVyID0gRnVu
Y3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFJlc3VsdD4pPjsKIHN0cnVjdCBTY2hlZHVsZUNvbnRl
eHQgewogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgIFNjaGVkdWxlUGFpckhhc2hTZXQg
c2NoZWR1bGVkUGFpcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuY3BwCmluZGV4IDJmZWZkODBkOTFhZGE2NTY3NWNmN2VhMjhlMjk4Y2ZjYmMyMjAw
ZDQuLmYzZjg3YTRmN2U5YmI4ZTc3NjdhOWU4OTE1N2I3YjJlNjNjM2U3ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRydWUgaWYgY2hhcmFjdGVycyB3aGljaCBz
YXRpc2Z5IHRoZSBwcmVkaWNhdGUgYXJlIHByZXNlbnQsIGluY3JlbWVudGluZwogLy8gInBvcyIg
dG8gdGhlIG5leHQgY2hhcmFjdGVyIHdoaWNoIGRvZXMgbm90IHNhdGlzZnkgdGhlIHByZWRpY2F0
ZS4KIC8vIE5vdGU6IG1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpLgotc3RhdGljIGlu
bGluZSBib29sIHNraXBXaGlsZShjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQmIHBvcywgY29u
c3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFVDaGFyKT4mIHByZWRpY2F0ZSkKK3N0YXRpYyBp
bmxpbmUgYm9vbCBza2lwV2hpbGUoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3MsIGNv
bnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgVUNoYXIpPiYgcHJlZGljYXRlKQogewogICAgIGNvbnN0
IHVuc2lnbmVkIHN0YXJ0ID0gcG9zOwogICAgIGNvbnN0IHVuc2lnbmVkIGxlbiA9IHN0ci5sZW5n
dGgoKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICNpZiBVU0UoR0xJQikKIC8vIFRydWUgaWYgdGhlIGNoYXJhY3RlciBhdCB0
aGUgZ2l2ZW4gcG9zaXRpb24gc2F0aXNpZmllcyBhIHByZWRpY2F0ZSwgaW5jcmVtZW50aW5nICJw
b3MiIGJ5IG9uZS4KIC8vIE5vdGU6IE1pZ2h0IHJldHVybiBwb3MgPT0gc3RyLmxlbmd0aCgpCi1z
dGF0aWMgaW5saW5lIGJvb2wgc2tpcENoYXJhY3Rlcihjb25zdCBTdHJpbmcmIHZhbHVlLCB1bnNp
Z25lZCYgcG9zLCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgVUNoYXIpPiYmIHByZWRpY2F0ZSkK
K3N0YXRpYyBpbmxpbmUgYm9vbCBza2lwQ2hhcmFjdGVyKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVu
c2lnbmVkJiBwb3MsIEZ1bmN0aW9uPGJvb2woY29uc3QgVUNoYXIpPiYmIHByZWRpY2F0ZSkKIHsK
ICAgICBpZiAocG9zIDwgdmFsdWUubGVuZ3RoKCkgJiYgcHJlZGljYXRlKHZhbHVlW3Bvc10pKSB7
CiAgICAgICAgICsrcG9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAppbmRleCA0M2I4MTFjMzkzMmRjYTRhNjFh
YWQwN2NhOWQ1MTM1YTVkZThmYzhkLi43ZTkxZmFmNWMyNmFiN2ZlMzA1MDMyOTE2NTY4MzU2ZjI5
NGM4ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdGF0ZU5vdGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29sIE5ldHdvcmtT
dGF0ZU5vdGlmaWVyOjpvbkxpbmUoKQogICAgIHJldHVybiBtX2lzT25MaW5lLnZhbHVlX29yKHRy
dWUpOwogfQogCi12b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjphZGRMaXN0ZW5lcihXVEY6OkZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiYgbGlzdGVuZXIpCit2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVy
OjphZGRMaXN0ZW5lcihGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGxpc3RlbmVyKQogewogICAgIEFT
U0VSVChsaXN0ZW5lcik7CiAgICAgaWYgKG1fbGlzdGVuZXJzLmlzRW1wdHkoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIu
aAppbmRleCAzZmMyNTk4NjhiNmNiNDg2Zjc0MTRmZGIyYTFkMGYyNmVjZjE1YzcxLi44MzgwZTIx
OGQ4NzM2YWEyZDlhOTU5MjRkMTI5ZDYxZTQ0YmM5NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0YXRl
Tm90aWZpZXImIHNpbmdsZXRvbigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvbkxpbmUo
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9p
ZChib29sIGlzT25MaW5lKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRMaXN0ZW5l
cihGdW5jdGlvbjx2b2lkKGJvb2wgaXNPbkxpbmUpPiYmKTsKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgTmV2ZXJEZXN0cm95ZWQ8TmV0d29ya1N0YXRlTm90aWZpZXI+OwpAQCAtNzIsNyArNzIsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faXNPbkxpbmU7
Ci0gICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZChib29sKT4+IG1fbGlzdGVuZXJzOworICAg
IFZlY3RvcjxGdW5jdGlvbjx2b2lkKGJvb2wpPj4gbV9saXN0ZW5lcnM7CiAgICAgVGltZXIgbV91
cGRhdGVTdGF0ZVRpbWVyOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0
LmNwcAppbmRleCBmM2Q3NDRmZGViNjAxYWQyYTk5NWNiZWM2NTAzZjI4NzI2MjRhZmUxLi5kYTE3
MzQ0ZTI0OTg2NGFlNzM5MTZiZDVkMWZmODZjYzc3YmRkOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3Bw
CkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEhhc2hN
YXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4mIGNvb2tp
ZUNoYW5nZUNhbGxiYWNrTWFwKCkKK3N0YXRpYyBIYXNoTWFwPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYsIEZ1bmN0aW9uPHZvaWQoKT4+JiBjb29raWVDaGFuZ2VDYWxsYmFja01hcCgpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgV1RG
OjpGdW5jdGlvbjx2b2lkICgpPj4+IG1hcDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBGdW5jdGlvbjx2b2lkKCk+Pj4gbWFwOwogICAg
IHJldHVybiBtYXA7CiB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGlubGluZSBDRlJ1bkxv
b3BSZWYgY29va2llU3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpCiAgICAgcmV0dXJuIGxvYWRlclJ1
bkxvb3AoKTsKIH0KIAotdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spCit2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKaW5k
ZXggYzIyZDkzNzAzYmU0YTZjYTAxYWIzZDIyNDhmYjczZjlhMmQwZGNmNS4uYWM1MzQ5OWU3MmE2
MTFiZDU0MDkxY2IxY2FiYWVjNTlkZTk4ZjhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5o
CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZVN0
b3JhZ2U+IG1fY29va2llU3RvcmFnZTsKICAgICBib29sIG1faGFzUmVnaXN0ZXJlZEludGVybmFs
c0Zvck5vdGlmaWNhdGlvbnMgeyBmYWxzZSB9OwogICAgIFJldGFpblB0cjxXZWJDb29raWVPYnNl
cnZlckFkYXB0ZXI+IG1fb2JzZXJ2ZXJBZGFwdGVyOwotICAgIFdURjo6RnVuY3Rpb248dm9pZCgp
PiBtX2Nvb2tpZUNoYW5nZUNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jb29raWVD
aGFuZ2VDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4
IDhlY2FlZGM0M2YzNTJiZTgwNWY2MWExNmYzN2NkNTJkNmI4ZmQ0YmIuLjk1ZDc2OGFjZTA4MGIy
ZjY2MjU5MTUxNTQxY2FjYjg5ZDE0YmMwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtNTExLDcgKzUxMSw3IEBA
IGJvb2wgQ29va2llSmFyREI6OmNhbkFjY2VwdENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjCiBib29sIENvb2tpZUphckRCOjpzZXRDb29raWUoY29u
c3QgQ29va2llJiBjb29raWUpCiB7CiAgICAgYXV0byBleHBpcmVzID0gY29va2llLmV4cGlyZXMu
dmFsdWVfb3IoMC4wKTsKLSAgICBpZiAoIWNvb2tpZS5zZXNzaW9uICYmIE1vbm90b25pY1RpbWU6
OmZyb21SYXdTZWNvbmRzKGV4cGlyZXMgLyBXVEY6Om1zUGVyU2Vjb25kKSA8PSBNb25vdG9uaWNU
aW1lOjpub3coKSkKKyAgICBpZiAoIWNvb2tpZS5zZXNzaW9uICYmIE1vbm90b25pY1RpbWU6OmZy
b21SYXdTZWNvbmRzKGV4cGlyZXMgLyBtc1BlclNlY29uZCkgPD0gTW9ub3RvbmljVGltZTo6bm93
KCkpCiAgICAgICAgIHJldHVybiBkZWxldGVDb29raWVJbnRlcm5hbChjb29raWUubmFtZSwgY29v
a2llLmRvbWFpbiwgY29va2llLnBhdGgpOwogCiAgICAgYXV0byYgc3RhdGVtZW50ID0gcHJlcGFy
ZWRTdGF0ZW1lbnQoU0VUX0NPT0tJRV9TUUwpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIGJvb2wgQ29v
a2llSmFyREI6OnNldENvb2tpZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKGNhcHBlZExpZmV0aW1lICYmIGNvb2tpZS0+ZXhwaXJl
cykgewogICAgICAgICBBU1NFUlQoKmNhcHBlZExpZmV0aW1lID49IDBfcyk7CiAgICAgICAgIGF1
dG8gY2FwcGVkRXhwaXJlcyA9IFdhbGxUaW1lOjpub3coKSArICpjYXBwZWRMaWZldGltZTsKLSAg
ICAgICAgaWYgKGNhcHBlZEV4cGlyZXMgPCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoKmNvb2tp
ZS0+ZXhwaXJlcyAvIFdURjo6bXNQZXJTZWNvbmQpKQorICAgICAgICBpZiAoY2FwcGVkRXhwaXJl
cyA8IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygqY29va2llLT5leHBpcmVzIC8gbXNQZXJTZWNv
bmQpKQogICAgICAgICAgICAgY29va2llLT5leHBpcmVzID0gY2FwcGVkRXhwaXJlcy5zZWNvbmRz
U2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVN0b3JhZ2VDdXJsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVTdG9yYWdlQ3VybC5jcHAK
aW5kZXggZTJlZmE1NGQ2YTRiN2I3MzdiNTUxNGQ5OGU2NmM4OTlmM2FiNmZmNS4uNWUzYWRmMGE3
MDUzNDgyYzNiMzlkYTVjOTZlZDdhZWUyZjM5ZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVN0b3JhZ2VDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llU3RvcmFnZUN1cmwuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYpCit2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBGdW5jdGlvbjx2b2lkKCk+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVV
dGlsLmNwcAppbmRleCAxYWUzODkwOWZjMTY3ODQxNzU4ZjhkMjUzYTMyNmMwNDY1NWRmODdkLi4z
NjVmNzY2YTJhMDllNWM1MTgwMTk0NjAyZmY1YjMzMDRhZDk2YzYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIGJvb2wgZG9tYWluTWF0Y2goY29uc3QgU3RyaW5nJiBjb29raWVEb21haW4sIGNv
bnN0IFN0cmluZyYgaG9zdCkKIHsKICAgICBzaXplX3QgaW5kZXggPSBob3N0LmZpbmQoY29va2ll
RG9tYWluKTsKIAotICAgIGJvb2wgdGFpbE1hdGNoID0gKGluZGV4ICE9IFdURjo6bm90Rm91bmQg
JiYgaW5kZXggKyBjb29raWVEb21haW4ubGVuZ3RoKCkgPT0gaG9zdC5sZW5ndGgoKSk7CisgICAg
Ym9vbCB0YWlsTWF0Y2ggPSAoaW5kZXggIT0gbm90Rm91bmQgJiYgaW5kZXggKyBjb29raWVEb21h
aW4ubGVuZ3RoKCkgPT0gaG9zdC5sZW5ndGgoKSk7CiAKICAgICAvLyBDaGVjayBpZiBob3N0IGVx
dWFscyBjb29raWUgZG9tYWluLgogICAgIGlmICh0YWlsTWF0Y2ggJiYgIWluZGV4KQpAQCAtODIs
NyArODIsNyBAQCBib29sIGRvbWFpbk1hdGNoKGNvbnN0IFN0cmluZyYgY29va2llRG9tYWluLCBj
b25zdCBTdHJpbmcmIGhvc3QpCiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VF
eHBpcmVzTVMoY29uc3QgY2hhciogZXhwaXJlcykKIHsKLSAgICBkb3VibGUgdG1wID0gV1RGOjpw
YXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGV4cGlyZXMpOworICAgIGRvdWJs
ZSB0bXAgPSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGV4cGlyZXMpOwog
ICAgIGlmIChpc25hbih0bXApKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xMTgsNyArMTE4
LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0
cmlidXRlLCBib29sJiBoYXNNYXhBZ2UsIENvb2sKIAogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVOYW1lLCAibWF4LWFnZSIpKSB7CiAgICAgICAgIGlmIChh
dXRvIG1heEFnZVNlY29uZHMgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ2
NF90PihhdHRyaWJ1dGVWYWx1ZSkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5leHBpcmVzID0gKFdh
bGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyAqbWF4QWdlU2Vjb25k
cykgKiBXVEY6Om1zUGVyU2Vjb25kOworICAgICAgICAgICAgcmVzdWx0LmV4cGlyZXMgPSAoV2Fs
bFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSArICptYXhBZ2VTZWNvbmRz
KSAqIG1zUGVyU2Vjb25kOwogICAgICAgICAgICAgcmVzdWx0LnNlc3Npb24gPSBmYWxzZTsKIAog
ICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtYXgtYWdlIGF0dHJpYnV0ZSBhcyB3ZWxsIGFz
IGFuIGV4cGlyZXMgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAppbmRleCAwZDQ4
NjA5OTlhMDMwNjc1MTcwNzc3NGY2ODY3NzJjMGYzNTU3NjUyLi4yNDU3YmI0ZDdjMmJjYzE3MTg3
NWE5MjllNGI3OGY0ZjhiMThjNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FuY2VsKEN1cmxSZXF1ZXN0
U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpCiAgICAgY2FuY2VsVHJhbnNmZXIoY2xpZW50KTsKIH0K
IAotdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCit2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYWxsT25X
b3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgewogICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybFJl
cXVlc3RTY2hlZHVsZXI6OmV4ZWN1dGVUYXNrcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAKLSAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiB0YXNrUXVldWU7Cisg
ICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IHRhc2tRdWV1ZTsKIAogICAgIHsKICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKaW5kZXggMjM4
OTlkNGRkZDYxMTY4YzY5OGJlNGQ0MzM0NTUxNTVjNDNjNThiMC4uZGJjMGJmOTlkNGY3NTZlZTI0
NzRkNGYxMTk2OGMyNTIwZDI2MDI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWRkKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50
Kik7CiAgICAgdm9pZCBjYW5jZWwoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqKTsKIAotICAg
IHZvaWQgY2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGNhbGxPbldvcmtlclRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgc3RhcnRPcldha2VVcFRocmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCmluZGV4IDI5MTkwYzc4OTg5MTNl
YjQwODFhNWJmODJlYWJhMzIwMWQwNDQ2ZjUuLmMwNzA0ZjBjZGQ2NDQyMzczZjdiNzBiZmU2MTUz
OWJmNWIzN2Q2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFN0cmVhbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgQ3VybFN0cmVhbTo6Q3VybFN0
cmVhbShDdXJsU3RyZWFtU2NoZWR1bGVyJiBzY2hlZHVsZXIsIEN1cmxTdHJlYW1JRCBzdHJlYW1J
RCwgVVIKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fY3VybEhhbmRs
ZSA9IFdURjo6bWFrZVVuaXF1ZTxDdXJsSGFuZGxlPigpOworICAgIG1fY3VybEhhbmRsZSA9IG1h
a2VVbmlxdWU8Q3VybEhhbmRsZT4oKTsKIAogICAgIHVybC5zZXRQcm90b2NvbCh1cmwucHJvdG9j
b2xJcygid3NzIikgPyAiaHR0cHMiIDogImh0dHAiKTsKICAgICBtX2N1cmxIYW5kbGUtPnNldFVy
bChXVEZNb3ZlKHVybCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU3RyZWFtLmgKaW5kZXggZTY0NjI5ZmMyMmEyMDk3YTJhZjBiMGMwMTM5YjIzZDc5
MDhjZjNkYy4uNGY1OWIyMGU4ZGIyNzkwMzk5NGIzMzE1NGNlNjRiMDk5NGYzYTBiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3Vy
bFN0cmVhbT4gY3JlYXRlKEN1cmxTdHJlYW1TY2hlZHVsZXImIHNjaGVkdWxlciwgQ3VybFN0cmVh
bUlEIHN0cmVhbUlELCBVUkwmJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjptYWtl
VW5pcXVlPEN1cmxTdHJlYW0+KHNjaGVkdWxlciwgc3RyZWFtSUQsIFdURk1vdmUodXJsKSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEN1cmxTdHJlYW0+KHNjaGVkdWxlciwgc3RyZWFtSUQs
IFdURk1vdmUodXJsKSk7CiAgICAgfQogCiAgICAgQ3VybFN0cmVhbShDdXJsU3RyZWFtU2NoZWR1
bGVyJiwgQ3VybFN0cmVhbUlELCBVUkwmJik7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VybEhhbmRsZT4gbV9jdXJsSGFuZGxlOwogCi0gICAgV1RG
OjpWZWN0b3I8c3RkOjpwYWlyPFVuaXF1ZUFycmF5PHVpbnQ4X3Q+LCBzaXplX3Q+PiBtX3NlbmRC
dWZmZXJzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8VW5pcXVlQXJyYXk8dWludDhfdD4sIHNpemVf
dD4+IG1fc2VuZEJ1ZmZlcnM7CiAgICAgc2l6ZV90IG1fc2VuZEJ1ZmZlck9mZnNldCB7IDAgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNwcAppbmRleCBiNGE5YWJkNDUzMDdlMTRiMWIwMDgw
YzVmZDg0OTBhY2FmN2JiNTk5Li5kOTRmZjRmOTE2OWE2YzBiNWFkYjk3MTlmNTUwNmQwZmI4MGU2
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFN0cmVhbVNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQ3Vy
bFN0cmVhbVNjaGVkdWxlcjo6c2VuZChDdXJsU3RyZWFtSUQgc3RyZWFtSUQsIFVuaXF1ZUFycmF5
PHVpbnQ4X3Q+JiYgZGF0CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6
Y2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit2b2lkIEN1
cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYg
dGFzaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC05Myw3ICs5Myw3IEBA
IHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6Y2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIHRhc2spCiAgICAgc3RhcnRUaHJlYWRJZk5lZWRlZCgpOwogfQogCi12b2lk
IEN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxDbGllbnRPbk1haW5UaHJlYWQoQ3VybFN0cmVhbUlE
IHN0cmVhbUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ3VybFN0cmVhbTo6Q2xpZW50Jik+JiYgdGFz
aykKK3ZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6Y2FsbENsaWVudE9uTWFpblRocmVhZChDdXJs
U3RyZWFtSUQgc3RyZWFtSUQsIEZ1bmN0aW9uPHZvaWQoQ3VybFN0cmVhbTo6Q2xpZW50Jik+JiYg
dGFzaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIApAQCAtMTM5LDcgKzEzOSw3
IEBAIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6ZXhlY3V0ZVRhc2tzKCkKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+
IHRhc2tRdWV1ZTsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gdGFza1F1ZXVlOwogCiAg
ICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVy
LmgKaW5kZXggN2Q4ODEyMDZjOTY4OWY0MzMyMjc5NjljOWI3ZjlmZjI2OGJkYWFlZC4uMGMzOWM5
MGFhYzg4NGZjYTQ4ODQ5Mzg4YWNjMWI0MmJhZDE2ZDYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5o
CkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lTdHJlYW0oQ3VybFN0
cmVhbUlEKTsKICAgICB2b2lkIHNlbmQoQ3VybFN0cmVhbUlELCBVbmlxdWVBcnJheTx1aW50OF90
PiYmLCBzaXplX3QpOwogCi0gICAgdm9pZCBjYWxsT25Xb3JrZXJUaHJlYWQoV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY2FsbENsaWVudE9uTWFpblRocmVhZChDdXJsU3RyZWFt
SUQsIFdURjo6RnVuY3Rpb248dm9pZChDdXJsU3RyZWFtOjpDbGllbnQmKT4mJik7CisgICAgdm9p
ZCBjYWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNhbGxD
bGllbnRPbk1haW5UaHJlYWQoQ3VybFN0cmVhbUlELCBGdW5jdGlvbjx2b2lkKEN1cmxTdHJlYW06
OkNsaWVudCYpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VGhyZWFkSWZOZWVkZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxT
b3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5oCmlu
ZGV4IDNkZTU0NTE1Y2VmMDU5YjQ3NmNhOGFhZTI3MGIxOWZlNzJmMTRiMTMuLjY0YjYyMDM1MjM1
YjUyZjU1ZGIxZjdjYWJjYjQwNWZhNWZlM2M5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuaApAQCAtMzQsMTAgKzM0LDEwIEBAIGNsYXNzIFVS
TDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFVTRShTT1VQMikKLVdURjo6VVJMIHNvdXBV
UklUb1VSTChTb3VwVVJJKik7Ci1HVW5pcXVlUHRyPFNvdXBVUkk+IHVybFRvU291cFVSSShjb25z
dCBXVEY6OlVSTCYpOworVVJMIHNvdXBVUklUb1VSTChTb3VwVVJJKik7CitHVW5pcXVlUHRyPFNv
dXBVUkk+IHVybFRvU291cFVSSShjb25zdCBVUkwmKTsKICNlbHNlCi1XVEY6OlVSTCBzb3VwVVJJ
VG9VUkwoR1VyaSopOwotR1JlZlB0cjxHVXJpPiB1cmxUb1NvdXBVUkkoY29uc3QgV1RGOjpVUkwm
KTsKK1VSTCBzb3VwVVJJVG9VUkwoR1VyaSopOworR1JlZlB0cjxHVXJpPiB1cmxUb1NvdXBVUkko
Y29uc3QgVVJMJik7CiAjZW5kaWYKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDQ3MzNmOTk4Yjc1
MDdhZTMxNWJhYTMxMjZkMTg2MDFkZTYyZTMwODguLjUwMDMwYjUyYzE4M2IxNzNlNjlmZGEyMTM2
YWU2NjFlZmU0Y2EyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcApAQCAtNjUzLDE5ICs2NTMsMTkgQEAgYm9vbCBTUUxpdGVEYXRhYmFzZTo6
dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCkKIAogc3RhdGljIHZvaWQgZGVzdHJveUNvbGxh
dGlvbkZ1bmN0aW9uKHZvaWQqIGFyZykKIHsKLSAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxXVEY6
OkZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcp
OworICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQq
LCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOwogICAgIGRlbGV0ZSBmOwogfQogCiBzdGF0aWMg
aW50IGNhbGxDb2xsYXRpb25GdW5jdGlvbih2b2lkKiBhcmcsIGludCBhTGVuZ3RoLCBjb25zdCB2
b2lkKiBhLCBpbnQgYkxlbmd0aCwgY29uc3Qgdm9pZCogYikKIHsKLSAgICBhdXRvIGYgPSBzdGF0
aWNfY2FzdDxXVEY6OkZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZv
aWQqKT4qPihhcmcpOworICAgIGF1dG8gZiA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uPGludChpbnQs
IGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4qPihhcmcpOwogICAgIHJldHVybiAoKmYp
KGFMZW5ndGgsIGEsIGJMZW5ndGgsIGIpOwogfQogCi12b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRD
b2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIFdURjo6RnVuY3Rp
b248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qgdm9pZCopPiYmIGNvbGxhdGlvbkZ1
bmN0aW9uKQordm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0Q29sbGF0aW9uRnVuY3Rpb24oY29uc3Qg
U3RyaW5nJiBjb2xsYXRpb25OYW1lLCBGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50
LCBjb25zdCB2b2lkKik+JiYgY29sbGF0aW9uRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBmdW5jdGlv
bk9iamVjdCA9IG5ldyBXVEY6OkZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNv
bnN0IHZvaWQqKT4oV1RGTW92ZShjb2xsYXRpb25GdW5jdGlvbikpOworICAgIGF1dG8gZnVuY3Rp
b25PYmplY3QgPSBuZXcgRnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qg
dm9pZCopPihXVEZNb3ZlKGNvbGxhdGlvbkZ1bmN0aW9uKSk7CiAgICAgc3FsaXRlM19jcmVhdGVf
Y29sbGF0aW9uX3YyKG1fZGIsIGNvbGxhdGlvbk5hbWUudXRmOCgpLmRhdGEoKSwgU1FMSVRFX1VU
RjgsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsQ29sbGF0aW9uRnVuY3Rpb24sIGRlc3Ryb3lDb2xsYXRp
b25GdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmgKaW5kZXggOGVmN2JhOTBmMzdlMzNlZTI1YjMzMDA4YTA5Y2Y1YTVjMDNhMjY2OC4u
MzJiODEyNmVkMjJjZDE1ZWNkOTUwNmFkMjk4NWYxN2U1YTk3NjU4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBw
dWJsaWM6CiAgICAgZW51bSBBdXRvVmFjdXVtUHJhZ21hIHsgQXV0b1ZhY3V1bU5vbmUgPSAwLCBB
dXRvVmFjdXVtRnVsbCA9IDEsIEF1dG9WYWN1dW1JbmNyZW1lbnRhbCA9IDIgfTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmIGNvbGxh
dGlvbk5hbWUsIFdURjo6RnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGludCwgY29uc3Qg
dm9pZCopPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbGxhdGlvbkZ1bmN0aW9u
KGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgRnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9p
ZCosIGludCwgY29uc3Qgdm9pZCopPiYmKTsKICAgICB2b2lkIHJlbW92ZUNvbGxhdGlvbkZ1bmN0
aW9uKGNvbnN0IFN0cmluZyYgY29sbGF0aW9uTmFtZSk7CiAKICAgICAvLyBTZXQgdGhpcyBmbGFn
IHRvIGFsbG93IGFjY2VzcyBmcm9tIG11bHRpcGxlIHRocmVhZHMuICBOb3QgYWxsIG11bHRpLXRo
cmVhZGVkIGFjY2Vzc2VzIGFyZSBzYWZlIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjLmgKaW5kZXggZmI3MDE2YjNjMTAxMGRlMGU4ZmM0NDVkNTNlYjJkMGYxMDBhMTExOS4u
NGZjMGFjZjJkNGQzNjcwODIwOWRhYTI0NzI2ZDMwMzgwZTg0NzM5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5oCkBAIC02MCw3ICs2MCw3IEBAIEZ1bmN0aW9uPHZv
aWQoVUNoYXIzMiwgVmVjdG9yPHVpbnQ4X3Q+Jik+IHVuZW5jb2RhYmxlSGFuZGxlcihVbmVuY29k
YWJsZUhhbmRsaW5nCiAKIHVzaW5nIEVuY29kaW5nTmFtZVJlZ2lzdHJhciA9IHZvaWQgKCopKGNv
bnN0IGNoYXIqIGFsaWFzLCBjb25zdCBjaGFyKiBuYW1lKTsKIAotdXNpbmcgTmV3VGV4dENvZGVj
RnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+KCk+Owor
dXNpbmcgTmV3VGV4dENvZGVjRnVuY3Rpb24gPSBGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VGV4
dENvZGVjPigpPjsKIHVzaW5nIFRleHRDb2RlY1JlZ2lzdHJhciA9IHZvaWQgKCopKGNvbnN0IGNo
YXIqIG5hbWUsIE5ld1RleHRDb2RlY0Z1bmN0aW9uJiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1Np
bmdsZUJ5dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNTaW5n
bGVCeXRlLmNwcAppbmRleCA4OTA2NGM4MGIxM2VmNzAwY2NlOGI4YzkxODA5MmJkYTQ1Mjg1ZjZj
Li5mOTQyNmYzM2NmMjg0MDliMjJiMmI0ZWU0MmYxMGMyMjNjYTUyNDhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1NpbmdsZUJ5dGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjU2luZ2xlQnl0ZS5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgZW51bSBjbGFzcyBUZXh0Q29kZWNTaW5nbGVCeXRlOjpFbmNvZGluZyA6
IHVpbnQ4X3QgewogCiB1c2luZyBTaW5nbGVCeXRlRGVjb2RlVGFibGUgPSBzdGQ6OmFycmF5PFVD
aGFyLCAxMjg+OwogdXNpbmcgU2luZ2xlQnl0ZUVuY29kZVRhYmxlRW50cnkgPSBzdGQ6OnBhaXI8
VUNoYXIsIHVpbnQ4X3Q+OwotdXNpbmcgU2luZ2xlQnl0ZUVuY29kZVRhYmxlID0gV1RGOjpJdGVy
YXRvclJhbmdlPGNvbnN0IFNpbmdsZUJ5dGVFbmNvZGVUYWJsZUVudHJ5Kj47Cit1c2luZyBTaW5n
bGVCeXRlRW5jb2RlVGFibGUgPSBJdGVyYXRvclJhbmdlPGNvbnN0IFNpbmdsZUJ5dGVFbmNvZGVU
YWJsZUVudHJ5Kj47CiAKIC8vIEZyb20gaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcv
aW5kZXgtaXNvLTg4NTktMy50eHQgd2l0aCAweEZGRkQgZmlsbGluZyB0aGUgZ2Fwcwogc3RhdGlj
IGNvbnN0ZXhwciBTaW5nbGVCeXRlRGVjb2RlVGFibGUgaXNvODg1OTMgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFu
dC5oCmluZGV4IDg0MTNkZjVmNjUyMjExNjlkZGYwNDhiZDQ0M2FkNDcwNjgyOWM2N2IuLjI4YWU0
YWU4MzY2MjM2NTc3OGU5YTM5ZmFmOWI4ZDdjNGJkZjI0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmgK
QEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0Q2hlY2tl
ckVuY2hhbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRDaGVja2VyRW5jaGFudCk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVz
dHJveWVkPFRleHRDaGVja2VyRW5jaGFudD47CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPFRleHRDaGVja2VyRW5jaGFudD47CiBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRDaGVja2Vy
RW5jaGFudCYgc2luZ2xldG9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAppbmRleCBmMGIx
N2IyMTEzYzJlNWNlYWY0NmZmYWY0YzI5MmJjMDk2NzJkMWE1Li5hNTRiNjVjNTExODIwNmI3MTcx
MWI0OTc3M2NhMjFkNjZjMjA5MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC0yOTgs
NyArMjk4LDcgQEAgc2l6ZV90IGxhc3RIeXBoZW5Mb2NhdGlvbihTdHJpbmdWaWV3IHN0cmluZywg
c2l6ZV90IGJlZm9yZUluZGV4LCBjb25zdCBBdG9tU3RyaW4KICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGRpY3Rpb25hcnlQYXRoIDogYXZhaWxhYmxlTG9jYWxlcygp
LmdldChsb3dlcmNhc2VMb2NhbGVJZGVudGlmaWVyKSkgewotICAgICAgICBSZWZQdHI8SHlwaGVu
YXRpb25EaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5ID0gV1RGOjpUaW55TFJVQ2FjaGVQb2xpY3k8QXRv
bVN0cmluZywgUmVmUHRyPEh5cGhlbmF0aW9uRGljdGlvbmFyeT4+OjpjYWNoZSgpLmdldChBdG9t
U3RyaW5nKGRpY3Rpb25hcnlQYXRoKSk7CisgICAgICAgIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rp
b25hcnk+IGRpY3Rpb25hcnkgPSBUaW55TFJVQ2FjaGVQb2xpY3k8QXRvbVN0cmluZywgUmVmUHRy
PEh5cGhlbmF0aW9uRGljdGlvbmFyeT4+OjpjYWNoZSgpLmdldChBdG9tU3RyaW5nKGRpY3Rpb25h
cnlQYXRoKSk7CiAKICAgICAgICAgY2hhcioqIHJlcGxhY2VtZW50cyA9IG51bGxwdHI7CiAgICAg
ICAgIGludCogcG9zaXRpb25zID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1Bs
YXRmb3JtWFIuaAppbmRleCAyOTM1M2RjNTUyNTVhMGFhOTI5ZjExMzE5Y2RjYjY0ZDU3NTdhZjZk
Li41MGZkNDViMDU5YTBhODEzMTE1ODEwZmRlNmMwMGMxYjIxYjJkNTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0yOTQsNyArMjk0LDcgQEAgcHJvdGVjdGVk
OgogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyLWRldmlj
ZS1jb25jZXB0CiAgICAgLy8gRWFjaCBYUiBkZXZpY2UgaGFzIGEgbGlzdCBvZiBlbmFibGVkIGZl
YXR1cmVzIGZvciBlYWNoIFhSU2Vzc2lvbk1vZGUgaW4gaXRzIGxpc3Qgb2Ygc3VwcG9ydGVkIG1v
ZGVzLAogICAgIC8vIHdoaWNoIGlzIGEgbGlzdCBvZiBmZWF0dXJlIGRlc2NyaXB0b3JzIHdoaWNo
IE1VU1QgYmUgaW5pdGlhbGx5IGFuIGVtcHR5IGxpc3QuCi0gICAgdXNpbmcgRmVhdHVyZXNQZXJN
b2RlTWFwID0gV1RGOjpIYXNoTWFwPFNlc3Npb25Nb2RlLCBGZWF0dXJlTGlzdCwgV1RGOjpJbnRI
YXNoPFNlc3Npb25Nb2RlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxTZXNzaW9uTW9kZT4+
OworICAgIHVzaW5nIEZlYXR1cmVzUGVyTW9kZU1hcCA9IEhhc2hNYXA8U2Vzc2lvbk1vZGUsIEZl
YXR1cmVMaXN0LCBJbnRIYXNoPFNlc3Npb25Nb2RlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0
czxTZXNzaW9uTW9kZT4+OwogICAgIEZlYXR1cmVzUGVyTW9kZU1hcCBtX2VuYWJsZWRGZWF0dXJl
c01hcDsKICAgICBGZWF0dXJlc1Blck1vZGVNYXAgbV9zdXBwb3J0ZWRGZWF0dXJlc01hcDsKIApA
QCAtNDc3LDcgKzQ3Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIERldmljZTo6
RnJhbWVEYXRhOjpMYXllckRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewog
I2lmIFVTRShJT1NVUkZBQ0VfRk9SX1hSX0xBWUVSX0RBVEEpCi0gICAgV1RGOjpNYWNoU2VuZFJp
Z2h0IHN1cmZhY2VTZW5kUmlnaHQgPSBzdXJmYWNlID8gc3VyZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0
KCkgOiBXVEY6Ok1hY2hTZW5kUmlnaHQoKTsKKyAgICBNYWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5k
UmlnaHQgPSBzdXJmYWNlID8gc3VyZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCkgOiBNYWNoU2VuZFJp
Z2h0KCk7CiAgICAgZW5jb2RlciA8PCBzdXJmYWNlU2VuZFJpZ2h0OwogICAgIGVuY29kZXIgPDwg
aXNTaGFyZWQ7CiAjZWxzZQpAQCAtNDkwLDcgKzQ5MCw3IEBAIHN0ZDo6b3B0aW9uYWw8RGV2aWNl
OjpGcmFtZURhdGE6OkxheWVyRGF0YT4gRGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVj
b2RlCiB7CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YSBsYXll
ckRhdGE7CiAjaWYgVVNFKElPU1VSRkFDRV9GT1JfWFJfTEFZRVJfREFUQSkKLSAgICBXVEY6Ok1h
Y2hTZW5kUmlnaHQgc3VyZmFjZVNlbmRSaWdodDsKKyAgICBNYWNoU2VuZFJpZ2h0IHN1cmZhY2VT
ZW5kUmlnaHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdXJmYWNlU2VuZFJpZ2h0KSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmln
aHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNw
cAppbmRleCAxMDVjZjI4MGMwMDc2MWMxMDcxM2MwZDAxNjMwOTZhMzliOGNlNjQyLi5mMmNjMDM5
MGZjNTAyNWM0NWU1Y2RhZWYxNzEyMzViYmMwOTBmMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgR3JhcGhpY3NMYXllciogTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s6Omxh
c3RDbGlwcGluZ0xheWVyKCkgY29uc3QKIAogU2Nyb2xsaW5nTm9kZUlEIExheWVyQW5jZXN0b3JD
bGlwcGluZ1N0YWNrOjpsYXN0T3ZlcmZsb3dTY3JvbGxQcm94eU5vZGVJRCgpIGNvbnN0CiB7Ci0g
ICAgZm9yIChhdXRvJiBlbnRyeSA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UobV9zdGFjaykpIHsK
KyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbWFrZVJldmVyc2VkUmFuZ2UobV9zdGFjaykpIHsKICAg
ICAgICAgaWYgKGVudHJ5Lm92ZXJmbG93U2Nyb2xsUHJveHlOb2RlSUQpCiAgICAgICAgICAgICBy
ZXR1cm4gZW50cnkub3ZlcmZsb3dTY3JvbGxQcm94eU5vZGVJRDsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKaW5kZXggYTcyMzRi
ZTRlYmFlYWE1MDkyOWJmZjAyYjBkY2MxZTRlYTU1MWYxMy4uYzgzMzZmMDdkM2UwNGQ3NDkxMmNk
Y2JmMTFiZTQ5MDI0ZWNjMmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeUlubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lJbmxpbmVUZXh0Qm94LmNwcApAQCAtNzYsNyArNzYsNyBAQCBzdHJ1Y3QgU2FtZVNpemVB
c0xlZ2FjeUlubGluZVRleHRCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsKIAogQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKExlZ2FjeUlubGluZVRleHRCb3gpID09IHNpemVvZihTYW1lU2l6ZUFz
TGVnYWN5SW5saW5lVGV4dEJveCksIExlZ2FjeUlubGluZVRleHRCb3hfc2hvdWxkX3N0YXlfc21h
bGwpOwogCi10eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94Kiwg
TGF5b3V0UmVjdD4gTGVnYWN5SW5saW5lVGV4dEJveE92ZXJmbG93TWFwOwordHlwZWRlZiBIYXNo
TWFwPGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gqLCBMYXlvdXRSZWN0PiBMZWdhY3lJbmxpbmVU
ZXh0Qm94T3ZlcmZsb3dNYXA7CiBzdGF0aWMgTGVnYWN5SW5saW5lVGV4dEJveE92ZXJmbG93TWFw
KiBnVGV4dEJveGVzV2l0aE92ZXJmbG93OwogCiBMZWdhY3lJbmxpbmVUZXh0Qm94Ojp+TGVnYWN5
SW5saW5lVGV4dEJveCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5Um9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9v
dElubGluZUJveC5jcHAKaW5kZXggZWRkMjk4N2QyM2QwNDU3OGEyMmQzOGQ0YTU3Njk3NWFlNmEx
NmJlMS4uZmFlNDFkYmQ0N2U3NWU0MTE3ODE2MGM5ZTE4MTViOWU2YTNhZGU4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcApAQCAtNTYs
NyArNTYsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoTGVnYWN5Um9vdElubGluZUJveCkgPT0g
c2l6ZW9mKFNhbWVTaXplQXNMZWdhY3lSb290SW5saW5lQgogQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KFdlYWtQdHI8UmVuZGVyT2JqZWN0PikgPT0gc2l6ZW9mKHZvaWQqKSwgV2Vha1B0cl9zaG91bGRf
YmVfc2FtZV9zaXplX2FzX3Jhd19wb2ludGVyKTsKICNlbmRpZgogCi10eXBlZGVmIFdURjo6SGFz
aE1hcDxjb25zdCBMZWdhY3lSb290SW5saW5lQm94Kiwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUVs
bGlwc2lzQm94Pj4gRWxsaXBzaXNCb3hNYXA7Cit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgTGVnYWN5
Um9vdElubGluZUJveCosIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lFbGxpcHNpc0JveD4+IEVsbGlw
c2lzQm94TWFwOwogc3RhdGljIEVsbGlwc2lzQm94TWFwKiBnRWxsaXBzaXNCb3hNYXA7CiAKIHN0
YXRpYyBDb250YWluaW5nRnJhZ21lbnRNYXAmIGNvbnRhaW5pbmdGcmFnbWVudE1hcChSZW5kZXJC
bG9ja0Zsb3cmIGJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVy
ZW5jZWRTVkdSZXNvdXJjZXMuY3BwCmluZGV4IGZhMDFjNzg2NTdkNzAyMWFjZTczNGFlMzNhMDE2
YzRiYTg2NmIyOWQuLjlkMmJjOGE2ODJjNmM4NjU0YmNiOTAwMWEzNzkxZWQwZjFiNWYyNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNl
cy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6flJlZmVyZW5j
ZWRTVkdSZXNvdXJjZXMoKQogdm9pZCBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjphZGRDbGllbnRG
b3JUYXJnZXQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgdGFy
Z2V0SUQpCiB7CiAgICAgbV9lbGVtZW50Q2xpZW50cy5lbnN1cmUodGFyZ2V0SUQsIFsmXSB7Ci0g
ICAgICAgIGF1dG8gY2xpZW50ID0gV1RGOjptYWtlVW5pcXVlPENTU1NWR1Jlc291cmNlRWxlbWVu
dENsaWVudD4obV9yZW5kZXJlcik7CisgICAgICAgIGF1dG8gY2xpZW50ID0gbWFrZVVuaXF1ZTxD
U1NTVkdSZXNvdXJjZUVsZW1lbnRDbGllbnQ+KG1fcmVuZGVyZXIpOwogICAgICAgICB0YXJnZXRF
bGVtZW50LmFkZFJlZmVyZW5jaW5nQ1NTQ2xpZW50KCpjbGllbnQpOwogICAgICAgICByZXR1cm4g
Y2xpZW50OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRl
eCBlOGRhYjQ3ODdkNjAyYjkwOTA3YzQ4NGU3YWQxMzg4MDE4NDM0MGY2Li4yMWU2MjEwZTU5YzMy
N2E4Yzc0MjVhZDQwZjA3MWJkMzMxNzczZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBSZW5kZXJUZXh0Owogc3RydWN0IEJp
ZGlSdW47CiBzdHJ1Y3QgUGFpbnRJbmZvOwogCi10eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVu
ZGVyQm94Kj4gVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ7Cit0eXBlZGVmIExpc3RIYXNoU2V0
PFJlbmRlckJveCo+IFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0OwogCiBlbnVtIENhcmV0VHlw
ZSB7IEN1cnNvckNhcmV0LCBEcmFnQ2FyZXQgfTsKIGVudW0gQ29udGFpbmluZ0Jsb2NrU3RhdGUg
eyBOZXdDb250YWluaW5nQmxvY2ssIFNhbWVDb250YWluaW5nQmxvY2sgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZDE3YmJiYmIxZTFkZDU2MDVhNzdkZjg0OTBk
YjU0Nzg1MDljMjkwYi4uNTVhNmYxMDViYzkwNTgzNDkxNTk5N2MzZDgzYzgwODJkNzk1NmE2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTEwMiwxMiArMTAyLDEy
IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZW5kZXJCb3gpID09IHNpemVvZihTYW1lU2l6ZUFz
UmVuZGVyQm94KSwgUmVuZGVyQm94X3Nob3VsCiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKLXR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQ+IE92
ZXJyaWRlU2l6ZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRV
bml0PiBPdmVycmlkZVNpemVNYXA7CiBzdGF0aWMgT3ZlcnJpZGVTaXplTWFwKiBnT3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHRNYXAgPSBudWxscHRyOwogc3RhdGljIE92ZXJyaWRlU2l6ZU1hcCogZ092
ZXJyaWRpbmdMb2dpY2FsV2lkdGhNYXAgPSBudWxscHRyOwogCiAvLyBGSVhNRTogV2Ugc2hvdWxk
IHN0b3JlIHRoZXNlIGJhc2VkIG9uIHBoeXNpY2FsIGRpcmVjdGlvbi4KLXR5cGVkZWYgV1RGOjpI
YXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4+IE92ZXJy
aWRlT3B0aW9uYWxTaXplTWFwOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4+IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwogc3RhdGlj
IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwKiBnT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsSGVpZ2h0TWFwID0gbnVsbHB0cjsKIHN0YXRpYyBPdmVycmlkZU9wdGlvbmFsU2l6
ZU1hcCogZ092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwID0g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmlu
ZGV4IDE0NzUyMjY4NWVmYjEwOGMyNTI5MDA2YjkwN2MyMGMyOTY4NzM3NTcuLmRiNmExZGM1OWI0
MmE5ZDY2ZmJlZDRmOTcwYTBiNTMxYzhiMjA0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTIyODksNyArMjI4OSw3IEBAIFJlZmVyZW5jZWRTVkdS
ZXNvdXJjZXMmIFJlbmRlckVsZW1lbnQ6OmVuc3VyZVJlZmVyZW5jZWRTVkdSZXNvdXJjZXMoKQog
ewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVE
YXRhLnJlZmVyZW5jZWRTVkdSZXNvdXJjZXMpCi0gICAgICAgIHJhcmVEYXRhLnJlZmVyZW5jZWRT
VkdSZXNvdXJjZXMgPSBXVEY6Om1ha2VVbmlxdWU8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4oKnRo
aXMpOworICAgICAgICByYXJlRGF0YS5yZWZlcmVuY2VkU1ZHUmVzb3VyY2VzID0gbWFrZVVuaXF1
ZTxSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzPigqdGhpcyk7CiAKICAgICByZXR1cm4gKnJhcmVEYXRh
LnJlZmVyZW5jZWRTVkdSZXNvdXJjZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJdGVyYXRvci5oCmluZGV4IGI1YTk0ZjQ3YmM3NTgwNTg5YjE1MzBlNzUxOTVmOWU5ZmM0NjM5
MmUuLjViOWYyNTdkYTYxYzEwZTBiNjcyM2ZmODgyNDBhYmRjOTk1OTQyNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJdGVyYXRvci5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZh
dGU6CiAgICAgY29uc3QgVCogbV9jdXJyZW50OwogfTsKIAotLy8gU2ltaWxhciB0byBXVEY6Omlz
PD4oKSBidXQgd2l0aG91dCB0aGUgc3RhdGljX2Fzc2VydCgpIG1ha2luZyBzdXJlIHRoZSBjaGVj
ayBpcyBuZWNlc3NhcnkuCisvLyBTaW1pbGFyIHRvIGlzPD4oKSBidXQgd2l0aG91dCB0aGUgc3Rh
dGljX2Fzc2VydCgpIG1ha2luZyBzdXJlIHRoZSBjaGVjayBpcyBuZWNlc3NhcnkuCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIGlubGluZSBib29sIGlzUmVuZGVyZXJPZlR5cGUo
Y29uc3QgVSYgcmVuZGVyZXIpIHsgcmV0dXJuIFR5cGVDYXN0VHJhaXRzPGNvbnN0IFQsIGNvbnN0
IFU+Ojppc09mVHlwZShyZW5kZXJlcik7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKaW5kZXggZThjMDM4M2NlOWUxMTA0Y2VkMzUxOGJjNjI4NmI0MmZiZGM1NDA2
Mi4uMGMyNjY5NjI5OTE3NGJkNmZkODljNjJiMWEwMjI5NmZhODllNGJkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01NzM1LDcgKzU3MzUsNyBAQCB2b2lk
IHNob3dMYXllclRyZWUoY29uc3QgV2ViQ29yZTo6UmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIGlm
ICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdURjo6U3RyaW5nIG91dHB1dCA9IGV4
dGVybmFsUmVwcmVzZW50YXRpb24oJmxheWVyLT5yZW5kZXJlcigpLmZyYW1lKCksIHsKKyAgICBT
dHJpbmcgb3V0cHV0ID0gZXh0ZXJuYWxSZXByZXNlbnRhdGlvbigmbGF5ZXItPnJlbmRlcmVyKCku
ZnJhbWUoKSwgewogICAgICAgICBXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnOjpTaG93QWxsTGF5
ZXJzLAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnOjpTaG93TGF5ZXJOZXN0aW5n
LAogICAgICAgICBXZWJDb3JlOjpSZW5kZXJBc1RleHRGbGFnOjpTaG93Q29tcG9zaXRlZExheWVy
cywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
aW5kZXggZjM1NDE3Y2M1YTg1MDE2Y2VhZmYwNTk1YjQxOGZjMDk0MDUzMTRlZS4uYmQ5ZjIyYTUx
NDVjZTlhNTRjMDI2NmZiNTgzY2FmYTA1YWUxZTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTI3NDMsNyArMjc0Myw3IEBAIGJv
b2wgUmVuZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIo
UGFpbnRlZENvbnRlbnRzSW5mbyYKIC8vIFJldHVybmluZyB0cnVlIHN0b3BzIHRoZSB0cmF2ZXJz
YWwuCiBlbnVtIGNsYXNzIExheWVyVHJhdmVyc2FsIHsgQ29udGludWUsIFN0b3AgfTsKIAotc3Rh
dGljIExheWVyVHJhdmVyc2FsIHRyYXZlcnNlVmlzaWJsZU5vbkNvbXBvc2l0ZWREZXNjZW5kYW50
TGF5ZXJzKFJlbmRlckxheWVyJiBwYXJlbnQsIGNvbnN0IFdURjo6RnVuY3Rpb248TGF5ZXJUcmF2
ZXJzYWwgKGNvbnN0IFJlbmRlckxheWVyJik+JiBsYXllckZ1bmMpCitzdGF0aWMgTGF5ZXJUcmF2
ZXJzYWwgdHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMoUmVuZGVy
TGF5ZXImIHBhcmVudCwgY29uc3QgRnVuY3Rpb248TGF5ZXJUcmF2ZXJzYWwoY29uc3QgUmVuZGVy
TGF5ZXImKT4mIGxheWVyRnVuYykKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNh
bGxlZCB3aXRoIGEgc3RhbGUgei1vcmRlciBsaXN0cy4gU2VlIGJ1ZyA4NTUxMi4KICAgICBwYXJl
bnQudXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKaW5kZXggY2FiNjNmNWIxNGNlNWViODdlZTRkODdhODBiMzg2NWRm
YjZlOWIxZi4uNjM4NmZiYTJmNDk4YjVkNmI4MDIyZGIxODQyYjQ5NWYwZTU4YTBiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMTI4LDcgKzEyOCw3
IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICBzdGQ6
Om9wdGlvbmFsPEZvbnRDYXNjYWRlPiBib2xkRm9udDsKICAgICAgICAgZm9yIChhdXRvKiBlbGVt
ZW50IDogc2VsZWN0RWxlbWVudCgpLmxpc3RJdGVtcygpKSB7CiAgICAgICAgICAgICBTdHJpbmcg
dGV4dDsKLSAgICAgICAgICAgIFdURjo6RnVuY3Rpb248Y29uc3QgRm9udENhc2NhZGUmKCk+IHNl
bGVjdEZvbnQgPSBbJm5vcm1hbEZvbnRdICgpIC0+IGNvbnN0IEZvbnRDYXNjYWRlJiB7CisgICAg
ICAgICAgICBGdW5jdGlvbjxjb25zdCBGb250Q2FzY2FkZSYoKT4gc2VsZWN0Rm9udCA9IFsmbm9y
bWFsRm9udF0gKCkgLT4gY29uc3QgRm9udENhc2NhZGUmIHsKICAgICAgICAgICAgICAgICByZXR1
cm4gbm9ybWFsRm9udDsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBpZiAoaXM8SFRNTE9w
dGlvbkVsZW1lbnQ+KCplbGVtZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oCmluZGV4IDA2MzMwOWJlMGI3YzA4NzhhM2U2N2QzZWRlN2M5NDg3NDRlZjhlODkuLjJh
N2ZlMzA3NTcwN2I0YjE1ZDY5NzI1Njc4MGQzYTE1NTgwYTY5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgdGhlIG92ZXJyaWRkZW4g
c2V0U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhp
bnQgbmV3T2Zmc2V0KTsKIAotICAgIHVzaW5nIFBhaW50RnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBpbnQgbGlzdEl0ZW1JbmRleCk+
OworICAgIHVzaW5nIFBhaW50RnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJdGVtSW5kZXgpPjsKICAgICB2b2lkIHBhaW50SXRl
bShQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFBhaW50RnVuY3Rpb24mKTsK
IAogICAgIHZvaWQgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCBoYXNTY3JvbGxiYXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck92ZXJmbG93LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT3ZlcmZsb3cuaAppbmRleCBjMzk0Y2I0OTZl
YmE0MTZmZTZiYzRiYmJmYTBkNzc4OTgyYWM0OTU2Li4xMTIyYjg2MjcxMjEyZWFlODcyOTJiZWQx
NjYyZDYwNGZkMmEwZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT3ZlcmZsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT3ZlcmZs
b3cuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogLy8gRXhhbXBsZXMgb2Yg
dmlzdWFsIG92ZXJmbG93IGFyZSBzaGFkb3dzLCB0ZXh0IHN0cm9rZSwgb3V0bGluZSAoYW5kIGV2
ZW50dWFsbHkgYm9yZGVyLWltYWdlKS4KIAogLy8gVGhpcyBvYmplY3QgaXMgYWxsb2NhdGVkIG9u
bHkgd2hlbiBzb21lIG9mIHRoZXNlIGZpZWxkcyBoYXZlIG5vbi1kZWZhdWx0IHZhbHVlcyBpbiB0
aGUgb3duaW5nIGJveC4KLWNsYXNzIFJlbmRlck92ZXJmbG93IDogcHVibGljIFdURjo6UmVmQ291
bnRlZDxSZW5kZXJPdmVyZmxvdz4geworY2xhc3MgUmVuZGVyT3ZlcmZsb3cgOiBwdWJsaWMgUmVm
Q291bnRlZDxSZW5kZXJPdmVyZmxvdz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRl
ck92ZXJmbG93KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVuZGVy
T3ZlcmZsb3coY29uc3QgTGF5b3V0UmVjdCYgbGF5b3V0UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
dmlzdWFsUmVjdCkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3Jp
ZERhdGEuaAppbmRleCBjNjc3ZDA3OTg2N2MxMjY1MmQ5OTJlZmVkNTIwNGJlMGU5MjRkM2U4Li40
M2RlMzg2MGQ1YTk2ZTJhM2VmNmQxZGY2ZTQwMWYyMGE5YTE1MWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVu
c2lnbmVkPj4gTmFtZWRHcmlkTGluZXNNYXA7Ci10eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFZl
Y3RvcjxTdHJpbmc+LCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwOwordHlw
ZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBWZWN0b3I8U3RyaW5nPiwgSW50SGFzaDx1bnNpZ25lZD4s
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBPcmRlcmVkTmFt
ZWRHcmlkTGluZXNNYXA7CiAKIGNsYXNzIFN0eWxlR3JpZERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHlsZUdyaWREYXRhPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlRmVhdHVyZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaApp
bmRleCA2ZTVjYzgxMTkwNGQ5MDQwOTAwOTlhMjVlMDA2MjFjOGM1MzM4ZjZlLi42MjExOGM3MDBk
ZjU1NDQ4YWQzOWI5MmI3M2ZhNTRlYTFjMjQ5NTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0
dXJlLmgKQEAgLTc3LDEwICs3NywxMCBAQCBzdHJ1Y3QgUnVsZUZlYXR1cmVTZXQgewogICAgIAog
ICAgIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFJ1bGVGZWF0dXJlVmVjdG9y
Pj4gY2xhc3NSdWxlczsKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8UnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2VsZWN0b3I+Pj4gYXR0cmlidXRlUnVs
ZXM7Ci0gICAgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1
ZV9wdHI8UnVsZUZlYXR1cmVWZWN0b3I+LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzUnVsZXM7CisgICAgSGFzaE1hcDxDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZUZlYXR1cmVWZWN0b3I+LCBJbnRI
YXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJh
aXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+PiBwc2V1ZG9DbGFzc1J1bGVzOwogICAg
IEhhc2hTZXQ8QXRvbVN0cmluZz4gY2xhc3Nlc0FmZmVjdGluZ0hvc3Q7CiAgICAgSGFzaFNldDxB
dG9tU3RyaW5nPiBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdDsKLSAgICBIYXNoU2V0PENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1R5cGUsIFdURjo6SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NUeXBlPj4gcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3Q7CisgICAgSGFzaFNldDxDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5
cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5
cGU+PiBwc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdDsKIAogICAgIGJvb2wgdXNlc0ZpcnN0TGlu
ZVJ1bGVzIHsgZmFsc2UgfTsKICAgICBib29sIHVzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuaAppbmRleCBmZmUxNTYxZmE0
NGFmNDNlYTFiMmRiMTRjM2VhY2YzNTRiMWIxNjY0Li4xMTcxNDY5ZTNmYzc0MTc5NzdjYjNjYTU4
YTFhY2NkYzBjNDJlMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUlu
dmFsaWRhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5o
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVT
aGFkb3dQYXJ0cyhTaGFkb3dSb290Jik7CiAKLSAgICB1c2luZyBNYXRjaEVsZW1lbnRSdWxlU2V0
cyA9IEhhc2hNYXA8TWF0Y2hFbGVtZW50LCBJbnZhbGlkYXRpb25SdWxlU2V0VmVjdG9yLCBXVEY6
OkludEhhc2g8TWF0Y2hFbGVtZW50PiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxNYXRjaEVs
ZW1lbnQ+PjsKKyAgICB1c2luZyBNYXRjaEVsZW1lbnRSdWxlU2V0cyA9IEhhc2hNYXA8TWF0Y2hF
bGVtZW50LCBJbnZhbGlkYXRpb25SdWxlU2V0VmVjdG9yLCBJbnRIYXNoPE1hdGNoRWxlbWVudD4s
IFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWF0Y2hFbGVtZW50Pj47CiAgICAgc3RhdGljIHZv
aWQgYWRkVG9NYXRjaEVsZW1lbnRSdWxlU2V0cyhJbnZhbGlkYXRvcjo6TWF0Y2hFbGVtZW50UnVs
ZVNldHMmLCBjb25zdCBJbnZhbGlkYXRpb25SdWxlU2V0Jik7CiAgICAgc3RhdGljIHZvaWQgaW52
YWxpZGF0ZVdpdGhNYXRjaEVsZW1lbnRSdWxlU2V0cyhFbGVtZW50JiwgY29uc3QgTWF0Y2hFbGVt
ZW50UnVsZVNldHMmKTsKICAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWxsU3R5bGUoU2NvcGUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5o
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKaW5kZXggODdhNzg5
ZWZiYjk0Nzk2ZTgxMGU3YWEzNmI0YzkxZmJjNGM0MjRiZS4uNDU0ZjVjMDc5NGQyMzlhNzNmZDhh
MDU0NWY0NTVlNjc0OWE3MmQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZVJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1
bGVTZXRzLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRy
PFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0OwogICAgIG11dGFibGUgSGFzaE1h
cDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
Pj4gbV9jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9t
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9h
dHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0czsKLSAgICBtdXRhYmxlIEhhc2hNYXA8Q1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRp
b25SdWxlU2V0Pj4sIFdURjo6SW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwg
V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4g
bV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOworICAgIG11dGFibGUgSGFzaE1hcDxD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFs
aWRhdGlvblJ1bGVTZXQ+PiwgSW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwg
V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4g
bV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOwogCiAgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPGJvb2w+IG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAppbmRleCAwMmM2NTMzODNjZDQ4ZWRmN2Rh
MDI5MDJmNDJhN2Q0NWVlZDJiZmNiLi43ZjlkN2ExNzdjY2ZmNTllYTgyNzYxNjU4MjRhZTNhY2Q1
ODJiOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RydWN0IEVsZW1lbnRVcGRhdGUgewogCiBlbnVtIGNsYXNzIERlc2NlbmRhbnRzVG9SZXNvbHZl
IHsgTm9uZSwgQ2hpbGRyZW5XaXRoRXhwbGljaXRJbmhlcml0LCBDaGlsZHJlbiwgQWxsIH07CiAK
LXVzaW5nIFBzZXVkb0lkVG9FbGVtZW50VXBkYXRlTWFwID0gSGFzaE1hcDxQc2V1ZG9JZCwgRWxl
bWVudFVwZGF0ZSwgV1RGOjpJbnRIYXNoPFBzZXVkb0lkPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxQc2V1ZG9JZD4+OwordXNpbmcgUHNldWRvSWRUb0VsZW1lbnRVcGRhdGVNYXAgPSBIYXNo
TWFwPFBzZXVkb0lkLCBFbGVtZW50VXBkYXRlLCBJbnRIYXNoPFBzZXVkb0lkPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+OwogCiBzdHJ1Y3QgRWxlbWVudFVwZGF0ZXMgewog
ICAgIEVsZW1lbnRVcGRhdGUgdXBkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9UeXBlQ29udmVyc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZl
cnNpb25zLmgKaW5kZXggOTVlMmFjOWY2NWQ1NDViMzc5YTNhNmY5ZDBjOWNlMjdmOGNjMjc0NS4u
MTFhOWE1ZjA5MDg2NWQ5NGQ0MjA2MzRiMjU0MmEwYTg5NmM3NWNlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oCkBAIC0xMTksMTIgKzExOSwxMiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiB0ZXN0VHJlYXROdWxsQXNFbXB0eVN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIG1fdHJlYXROdWxsQXNFbXB0eVN0cmluZzsgfQogICAgIHZvaWQgc2V0VGVzdFRyZWF0
TnVsbEFzRW1wdHlTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsgbV90cmVhdE51bGxBc0Vt
cHR5U3RyaW5nID0gc3RyaW5nOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBpbnQ+PiYgdGVzdExvbmdSZWNvcmQoKSBjb25zdCB7IHJldHVybiBtX2xvbmdS
ZWNvcmQ7IH0KLSAgICB2b2lkIHNldFRlc3RMb25nUmVjb3JkKGNvbnN0IFZlY3RvcjxXVEY6Oktl
eVZhbHVlUGFpcjxTdHJpbmcsIGludD4+JiB2YWx1ZSkgeyBtX2xvbmdSZWNvcmQgPSB2YWx1ZTsg
fQotICAgIGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0cjxOb2Rl
Pj4+JiB0ZXN0Tm9kZVJlY29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZVJlY29yZDsgfQotICAg
IHZvaWQgc2V0VGVzdE5vZGVSZWNvcmQoY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0
cmluZywgUmVmUHRyPE5vZGU+Pj4mIHZhbHVlKSB7IG1fbm9kZVJlY29yZCA9IHZhbHVlOyB9Ci0g
ICAgY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgVmVjdG9yPFN0cmluZz4+
PiYgdGVzdFNlcXVlbmNlUmVjb3JkKCkgY29uc3QgeyByZXR1cm4gbV9zZXF1ZW5jZVJlY29yZDsg
fQotICAgIHZvaWQgc2V0VGVzdFNlcXVlbmNlUmVjb3JkKGNvbnN0IFZlY3RvcjxXVEY6OktleVZh
bHVlUGFpcjxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4mIHZhbHVlKSB7IG1fc2VxdWVuY2VSZWNv
cmQgPSB2YWx1ZTsgfQorICAgIGNvbnN0IFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBpbnQ+
PiYgdGVzdExvbmdSZWNvcmQoKSBjb25zdCB7IHJldHVybiBtX2xvbmdSZWNvcmQ7IH0KKyAgICB2
b2lkIHNldFRlc3RMb25nUmVjb3JkKGNvbnN0IFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBp
bnQ+PiYgdmFsdWUpIHsgbV9sb25nUmVjb3JkID0gdmFsdWU7IH0KKyAgICBjb25zdCBWZWN0b3I8
S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmUHRyPE5vZGU+Pj4mIHRlc3ROb2RlUmVjb3JkKCkgY29u
c3QgeyByZXR1cm4gbV9ub2RlUmVjb3JkOyB9CisgICAgdm9pZCBzZXRUZXN0Tm9kZVJlY29yZChj
b25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmUHRyPE5vZGU+Pj4mIHZhbHVlKSB7
IG1fbm9kZVJlY29yZCA9IHZhbHVlOyB9CisgICAgY29uc3QgVmVjdG9yPEtleVZhbHVlUGFpcjxT
dHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4mIHRlc3RTZXF1ZW5jZVJlY29yZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VxdWVuY2VSZWNvcmQ7IH0KKyAgICB2b2lkIHNldFRlc3RTZXF1ZW5jZVJlY29yZChj
b25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiYgdmFsdWUp
IHsgbV9zZXF1ZW5jZVJlY29yZCA9IHZhbHVlOyB9CiAKICAgICB1c2luZyBUZXN0VW5pb24gPSBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBpbnQsIGJvb2wsIFJlZlB0cjxOb2RlPiwgVmVjdG9yPGludD4+
OwogICAgIGNvbnN0IFRlc3RVbmlvbiYgdGVzdFVuaW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmlv
bjsgfQpAQCAtMTY4LDkgKzE2OCw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdXN2c3RyaW5n
OwogICAgIFN0cmluZyBtX2J5dGVTdHJpbmc7CiAgICAgU3RyaW5nIG1fdHJlYXROdWxsQXNFbXB0
eVN0cmluZzsKLSAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBpbnQ+PiBtX2xv
bmdSZWNvcmQ7Ci0gICAgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgUmVmUHRyPE5v
ZGU+Pj4gbV9ub2RlUmVjb3JkOwotICAgIFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcs
IFZlY3RvcjxTdHJpbmc+Pj4gbV9zZXF1ZW5jZVJlY29yZDsKKyAgICBWZWN0b3I8S2V5VmFsdWVQ
YWlyPFN0cmluZywgaW50Pj4gbV9sb25nUmVjb3JkOworICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBSZWZQdHI8Tm9kZT4+PiBtX25vZGVSZWNvcmQ7CisgICAgVmVjdG9yPEtleVZhbHVl
UGFpcjxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gbV9zZXF1ZW5jZVJlY29yZDsKIAogICAgIERp
Y3Rpb25hcnkgbV90ZXN0RGljdGlvbmFyeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKaW5kZXggY2I0ZDEzNjdlMWYxOTM0NDg2NzQ1
ZGIwNzQxNDVlNTRiYzMxZGQ2My4uNGQ2OTBmYTczZTUxZWQyNjViOTk2OTk5YWFmN2M4NzZkNTk3
YWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29u
dHJvbGxlci5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4g
bV9wcm9maWxlczsKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2VQb3NlIG1fcG9pbnRlck9yaWdpbjsKICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2U+IG1fZ3JpcE9yaWdpbjsKLSAgICBIYXNo
TWFwPEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZSwgRmFrZVhSQnV0dG9uU3RhdGVJbml0LCBX
VEY6OkludEhhc2g8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU+PiBtX2J1dHRvbnM7CisgICAg
SGFzaE1hcDxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGUsIEZha2VYUkJ1dHRvblN0YXRlSW5p
dCwgSW50SGFzaDxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU+LCBXVEY6OlN0cm9uZ0VudW1I
YXNoVHJhaXRzPEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZT4+IG1fYnV0dG9uczsKICAgICBi
b29sIG1fY29ubmVjdGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9wcmltYXJ5U2VsZWN0ZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9zaW11bGF0ZVNlbGVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggYTUzM2Fh
M2Y5ZGNhZDkxZjBmZjQ1ZDE0ZWZlNzhmMmVkMGYxMWIwMC4uNTFiNzE4NmIwODljMmNmZjBmNGZh
YzRhNGFkYTNmZWMzMDBmODg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMv
V2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgZGlzY29ubmVj
dE1vY2tHYW1lcGFkKHVuc2lnbmVkIGdhbWVwYWRJbmRleCkKICNlbmRpZgogfQogCi12b2lkIHNl
dE1vY2tHYW1lcGFkRGV0YWlscyh1bnNpZ25lZCBnYW1lcGFkSW5kZXgsIGNvbnN0IFdURjo6U3Ry
aW5nJiBnYW1lcGFkSUQsIGNvbnN0IFdURjo6U3RyaW5nJiBtYXBwaW5nLCB1bnNpZ25lZCBheGlz
Q291bnQsIHVuc2lnbmVkIGJ1dHRvbkNvdW50KQordm9pZCBzZXRNb2NrR2FtZXBhZERldGFpbHMo
dW5zaWduZWQgZ2FtZXBhZEluZGV4LCBjb25zdCBTdHJpbmcmIGdhbWVwYWRJRCwgY29uc3QgU3Ry
aW5nJiBtYXBwaW5nLCB1bnNpZ25lZCBheGlzQ291bnQsIHVuc2lnbmVkIGJ1dHRvbkNvdW50KQog
ewogI2lmIEVOQUJMRShHQU1FUEFEKQogICAgIE1vY2tHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRv
bigpLnNldE1vY2tHYW1lcGFkRGV0YWlscyhnYW1lcGFkSW5kZXgsIGdhbWVwYWRJRCwgbWFwcGlu
ZywgYXhpc0NvdW50LCBidXR0b25Db3VudCk7CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBzZXR1
cE5ld2x5Q3JlYXRlZFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgc2V0QWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlVHlwZXNGb3JUZXN0aW5nKGNvbnN0IFdURjo6U3RyaW5nJiBpbWFnZVR5cGVzKQordm9p
ZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3RpbmcoY29uc3QgU3RyaW5n
JiBpbWFnZVR5cGVzKQogewogICAgIFdlYkNvcmU6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzRm9yVGVzdGluZyhpbWFnZVR5cGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCmluZGV4IGMwMTFkZWU5NWRmNmRiOWZhMjNiMWNj
NWZmYWE1MTk0NjE1NTI0MDEuLmM0ZGEzYzAxNjgzYWI4ZTlmOTEyYTEwNzJhZGY0MmEzZGYyYzQy
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBw
b3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQu
aApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIG1vbml0b3JXaGVlbEV2ZW50cyhXZWJDb3JlOjpGcmFt
ZSYsIGJvb2wgY2xlYXJMYXRjaGluZ1N0YXRlKSBURVNUX1NVUFBPUlRfRQogdm9pZCBzZXRXaGVl
bEV2ZW50TW9uaXRvclRlc3RDYWxsYmFja0FuZFN0YXJ0TW9uaXRvcmluZyhib29sIGV4cGVjdFdo
ZWVsRW5kT3JDYW5jZWwsIGJvb2wgZXhwZWN0TW9tZW50dW1FbmQsIFdlYkNvcmU6OkZyYW1lJiwg
SlNDb250ZXh0UmVmLCBKU09iamVjdFJlZikgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIHZvaWQgY2xl
YXJXaGVlbEV2ZW50VGVzdE1vbml0b3IoV2ViQ29yZTo6RnJhbWUmKSBURVNUX1NVUFBPUlRfRVhQ
T1JUOwogCi12b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoY29uc3QgV1RGOjpTdHJpbmcm
IG5hbWUpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7Cit2b2lkIHNldExvZ0NoYW5uZWxUb0FjY3VtdWxh
dGUoY29uc3QgU3RyaW5nJiBuYW1lKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBjbGVhckFs
bExvZ0NoYW5uZWxzVG9BY2N1bXVsYXRlKCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIHZvaWQgaW5p
dGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogdm9p
ZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZShib29sKSBURVNUX1NVUFBPUlRfRVhQT1JUOwpA
QCAtNTksMTMgKzU5LDEzIEBAIHZvaWQgc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0ZvclRl
c3RpbmcoKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBpbnN0YWxsTW9ja0dhbWVwYWRQcm92
aWRlcigpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGNvbm5lY3RNb2NrR2FtZXBhZCh1bnNp
Z25lZCBpbmRleCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIHZvaWQgZGlzY29ubmVjdE1vY2tHYW1l
cGFkKHVuc2lnbmVkIGluZGV4KSBURVNUX1NVUFBPUlRfRVhQT1JUOwotdm9pZCBzZXRNb2NrR2Ft
ZXBhZERldGFpbHModW5zaWduZWQgaW5kZXgsIGNvbnN0IFdURjo6U3RyaW5nJiBnYW1lcGFkSUQs
IGNvbnN0IFdURjo6U3RyaW5nJiBtYXBwaW5nLCB1bnNpZ25lZCBheGlzQ291bnQsIHVuc2lnbmVk
IGJ1dHRvbkNvdW50KSBURVNUX1NVUFBPUlRfRVhQT1JUOwordm9pZCBzZXRNb2NrR2FtZXBhZERl
dGFpbHModW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgZ2FtZXBhZElELCBjb25zdCBTdHJp
bmcmIG1hcHBpbmcsIHVuc2lnbmVkIGF4aXNDb3VudCwgdW5zaWduZWQgYnV0dG9uQ291bnQpIFRF
U1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIHNldE1vY2tHYW1lcGFkQXhpc1ZhbHVlKHVuc2lnbmVk
IGluZGV4LCB1bnNpZ25lZCBheGlzSW5kZXgsIGRvdWJsZSB2YWx1ZSkgVEVTVF9TVVBQT1JUX0VY
UE9SVDsKIHZvaWQgc2V0TW9ja0dhbWVwYWRCdXR0b25WYWx1ZSh1bnNpZ25lZCBpbmRleCwgdW5z
aWduZWQgYnV0dG9uSW5kZXgsIGRvdWJsZSB2YWx1ZSkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIAog
dm9pZCBzZXR1cE5ld2x5Q3JlYXRlZFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmljZVdvcmtl
cklkZW50aWZpZXIpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiAgICAgCi12b2lkIHNldEFkZGl0aW9u
YWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhjb25zdCBXVEY6OlN0cmluZyYpIFRFU1Rf
U1VQUE9SVF9FWFBPUlQ7Cit2b2lkIHNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9y
VGVzdGluZyhjb25zdCBTdHJpbmcmKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogCiAjaWYgRU5BQkxF
KEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKIHZvaWQgcG9wdWxhdGVKSVRPcGVyYXRpb25zKCkg
VEVTVF9TVVBQT1JUX0VYUE9SVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmNwcAppbmRleCBhM2JkZGJiNGM5M2E5YzMxNDBlZDZlYWFhMzRkZDBi
NDI0YzQ0NTljLi4yMzc4YTQzODdkNjBkM2I5NzkzODBkM2JlZmY2M2QwZDFjMWYxOTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCkBA
IC0yMDksNyArMjA5LDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29y
a2xldFRocmVhZCgpCiAgICAgLy8gV2UgY2Fubm90IGxldCBhbnkgb2JqZWN0cyBzdXJ2aXZlIHBh
c3QgdGhyZWFkIGV4aXQsIGJlY2F1c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwgcnVuIEdDIG9yIG90
aGVyd2lzZSBkZXN0cm95IHRoZW0uCiAgICAgd29ya2VyR2xvYmFsU2NvcGVUb0RlbGV0ZSA9IG51
bGxwdHI7CiAKLSAgICAvLyBDbGVhbiB1cCBXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhIGJlZm9y
ZSBXVEY6OlRocmVhZCBnb2VzIGF3YXkhCisgICAgLy8gQ2xlYW4gdXAgV2ViQ29yZTo6VGhyZWFk
R2xvYmFsRGF0YSBiZWZvcmUgVGhyZWFkIGdvZXMgYXdheSEKICAgICB0aHJlYWRHbG9iYWxEYXRh
KCkuZGVzdHJveSgpOwogCiAgICAgLy8gU2VuZCB0aGUgbGFzdCBXb3JrZXJUaHJlYWQgUmVmIHRv
IGJlIERlcmVmJ2VkIG9uIHRoZSBtYWluIHRocmVhZC4KQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lk
IFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkKICAgICBwcm90
ZWN0b3ItPmRldGFjaCgpOwogfQogCi12b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6c3RhcnQo
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGV2YWx1YXRlQ2FsbGJhY2spCit2
b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmKT4mJiBldmFsdWF0ZUNhbGxiYWNrKQogewogICAgIC8vIE11dGV4IHByb3RlY3Rpb24gaXMg
bmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IG1fdGhyZWFkIGlzIGluaXRpYWxpemVkIHdoZW4gdGhl
IHRocmVhZCBzdGFydHMuCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25BbmRH
bG9iYWxTY29wZUxvY2sgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldFRocmVhZC5oCmluZGV4IGJiM2JiNzUyZGI0YmEyMGRhZTJlY2ZkZGFhOGJlNTQ5OWQwMjkz
ZGYuLmQ2NGFjNmE5ZWY4YzRlMGYzYTQ0MDA2NTIyNzhmYzViMmMyNjM3YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaApAQCAtNDYsNyArNDYs
NyBAQCBjbGFzcyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8V29ya2VyT3JXb3JrbGV0VGhyZWFkPgogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtl
ck9yV29ya2xldFRocmVhZCgpOwogCi0gICAgV1RGOjpUaHJlYWQqIHRocmVhZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CisgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJl
dHVybiBtX3RocmVhZC5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBXb3JrZXJEZWJ1Z2dlclByb3h5
KiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV29ya2VyTG9h
ZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgPSAwOwpAQCAtNzcsNyArNzcsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJ1bkV2ZW50TG9vcCgpOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgUmVmPFdURjo6VGhyZWFkPiBjcmVhdGVUaHJlYWQoKSA9IDA7CisgICAgdmlydHVh
bCBSZWY8VGhyZWFkPiBjcmVhdGVUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8V29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+IGNyZWF0ZUdsb2JhbFNjb3BlKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYpIHsgfQogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRXYWl0Rm9yV2ViSW5zcGVjdG9yT25TdGFydHVwKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9p
ZGVudGlmaWVyOwogICAgIExvY2sgbV90aHJlYWRDcmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9jazsK
ICAgICBSZWZQdHI8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+IG1fZ2xvYmFsU2NvcGU7Ci0g
ICAgUmVmUHRyPFdURjo6VGhyZWFkPiBtX3RocmVhZDsKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3Ro
cmVhZDsKICAgICBVbmlxdWVSZWY8V29ya2VyUnVuTG9vcD4gbV9ydW5Mb29wOwogICAgIEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+IG1fZXZhbHVhdGVDYWxsYmFjazsKICAgICBGdW5jdGlv
bjx2b2lkKCk+IG1fc3RvcHBlZENhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHAKaW5kZXggNmMwMmYxMzJkZmU5Zjk4Yjk4NzRjNmMyNDFjMjlkMzJiYmU4ZWQ4
Zi4uZmNlNWNlMTMyOTNiYjViZjk2ZDYwM2VkYWMyZTBlNWY2OTY1M2E2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFdvcmtlclNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGljIFNoYXJl
ZFRpbWVyIHsKIHB1YmxpYzoKICAgICAvLyBTaGFyZWRUaW1lciBpbnRlcmZhY2UuCi0gICAgdm9p
ZCBzZXRGaXJlZEZ1bmN0aW9uKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKSBmaW5h
bCB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOyB9CisgICAgdm9p
ZCBzZXRGaXJlZEZ1bmN0aW9uKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgZmluYWwgeyBt
X3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQogICAgIHZvaWQgc2V0
RmlyZUludGVydmFsKFNlY29uZHMgaW50ZXJ2YWwpIGZpbmFsIHsgbV9uZXh0RmlyZVRpbWUgPSBN
b25vdG9uaWNUaW1lOjpub3coKSArIGludGVydmFsOyB9CiAgICAgdm9pZCBzdG9wKCkgZmluYWwg
eyBtX25leHRGaXJlVGltZSA9IE1vbm90b25pY1RpbWUgeyB9OyB9CiAKQEAgLTU5LDcgKzU5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZmlyZSgpIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uKCk7IH0K
IAogcHJpdmF0ZToKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9zaGFyZWRUaW1lckZ1bmN0
aW9uOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9zaGFyZWRUaW1lckZ1bmN0aW9uOwogICAgIE1v
bm90b25pY1RpbWUgbV9uZXh0RmlyZVRpbWU7CiB9OwogCkBAIC0xNjQsNyArMTY0LDcgQEAgTWVz
c2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpydW5Jbk1vZGUoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2MKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGNv
bnRleHQtPndvcmtlck9yV29ya2xldFRocmVhZCgpLT50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogCi0gICAgSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxs
YmFjayB0aW1lckFkZGVkVGFzayA9IFdURjo6Y3JlYXRlU2hhcmVkVGFzazxKU0M6OkpTUnVuTG9v
cFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvblR5cGU+KFt0aGlzXSB7CisgICAgSlNDOjpKU1J1bkxv
b3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayB0aW1lckFkZGVkVGFzayA9IGNyZWF0
ZVNoYXJlZFRhc2s8SlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25UeXBlPihb
dGhpc10gewogICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBkbyBhbnl0aGluZyBoZXJlLCB3
ZSBqdXN0IHdhbnQgdG8gbG9vcCBhcm91bmQgcnVuSW5Nb2RlCiAgICAgICAgIC8vIHRvIGJvdGgg
cmVjYWxjdWxhdGUgb3VyIGRlYWRsaW5lIGFuZCB0byBwb3RlbnRpYWxseSBydW4gdGhlIHJ1biBs
b29wLgogICAgICAgICB0aGlzLT5wb3N0VGFzayhbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
eyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4
IGVhNTM4MGZiZWVmODc1NDAzMTZhNmZhOTI3OGNjMjE3Yzg5MzE0ZTAuLmVhYWJlMWVhNWQxM2Iz
M2Y5YzNjYzY2ZGQ0OTU1N2ViNjllMzdlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlc291cmNlRXJyb3IgdmFsaWRhdGVXb3JrZXJSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbik7CiAKIHByaXZh
dGU6Ci0gICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxXb3JrZXJTY3JpcHRMb2FkZXI+
OworICAgIGZyaWVuZCBjbGFzcyBSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRlcj47CiAgICAg
ZnJpZW5kIHN0cnVjdCBzdGQ6OmRlZmF1bHRfZGVsZXRlPFdvcmtlclNjcmlwdExvYWRlcj47CiAK
ICAgICBXb3JrZXJTY3JpcHRMb2FkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oCmluZGV4IDExOGE1MTk4ZmU3ZTU1MDhjNjRjOWZkZGM5OWVmMGIxODc1MzA1YTYuLmI0MzUw
YzQ3YWZmODM4MTI2N2E5ZjZmOTgyNzA5YTM3YmIzN2MyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpIHsgfQogCiAgICAgLy8gV29ya2VyT3JX
b3JrbGV0VGhyZWFkLgotICAgIFJlZjxXVEY6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkgZmluYWw7
CisgICAgUmVmPFRocmVhZD4gY3JlYXRlVGhyZWFkKCkgZmluYWw7CiAgICAgUmVmUHRyPFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlPiBjcmVhdGVHbG9iYWxTY29wZSgpIGZpbmFsOwogICAgIHZv
aWQgZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZp
bmFsOwogICAgIGJvb2wgc2hvdWxkV2FpdEZvcldlYkluc3BlY3Rvck9uU3RhcnR1cCgpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVu
ZGFibGVFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJs
ZUV2ZW50LmNwcAppbmRleCA2NjllOGJjNTFiYWM1YWMzNjIyNDhlZmEwMzQ5MTkyM2IxMDYyYTA5
Li4yMTFiMjU5OGUyMGJmY2U3NDhmODI3YWMxNDUwOTgzNGEyMGQzMDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcApAQCAtMTE1
LDcgKzExNSw3IEBAIHZvaWQgRXh0ZW5kYWJsZUV2ZW50OjphZGRFeHRlbmRMaWZldGltZVByb21p
c2UoUmVmPERPTVByb21pc2U+JiYgcHJvbWlzZSkKICAgICArK21fcGVuZGluZ1Byb21pc2VDb3Vu
dDsKIH0KIAotdm9pZCBFeHRlbmRhYmxlRXZlbnQ6OndoZW5BbGxFeHRlbmRMaWZldGltZVByb21p
c2VzQXJlU2V0dGxlZChXVEY6OkZ1bmN0aW9uPHZvaWQoSGFzaFNldDxSZWY8RE9NUHJvbWlzZT4+
JiYpPiYmIGhhbmRsZXIpCit2b2lkIEV4dGVuZGFibGVFdmVudDo6d2hlbkFsbEV4dGVuZExpZmV0
aW1lUHJvbWlzZXNBcmVTZXR0bGVkKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxSZWY8RE9NUHJvbWlz
ZT4+JiYpPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh0YXJnZXQoKSwg
IkV2ZW50IGhhcyBub3QgYmVlbiBkaXNwYXRjaGVkIHlldCIpOwogICAgIEFTU0VSVCghbV93aGVu
QWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWRIYW5kbGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaAppbmRleCAxYzJkOWI3
ZTQzNTQ5Yjg4NTc3OWE5NmUwYzIwMjFkODE2YjQ5OTdmLi44MWEzMzhmOWNmNzI3N2YwMWM0NWQz
ZTk5MjM4ZWU1ZTY5OTFhMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL0V4dGVuZGFibGVFdmVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiB3YWl0VW50aWwoUmVmPERPTVByb21pc2U+JiYpOwogICAgIHVuc2lnbmVk
IHBlbmRpbmdQcm9taXNlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdQcm9taXNlQ291
bnQ7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2hlbkFsbEV4dGVuZExpZmV0aW1lUHJv
bWlzZXNBcmVTZXR0bGVkKFdURjo6RnVuY3Rpb248dm9pZChIYXNoU2V0PFJlZjxET01Qcm9taXNl
Pj4mJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2hlbkFsbEV4dGVuZExpZmV0aW1l
UHJvbWlzZXNBcmVTZXR0bGVkKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxSZWY8RE9NUHJvbWlzZT4+
JiYpPiYmKTsKIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIEV4dGVuZGFibGVFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRXh0ZW5kYWJsZUV2ZW50SW5pdCYsIElzVHJ1c3Rl
ZCk7CkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9wZW5kaW5nUHJvbWlzZUNvdW50IHsgMCB9OwogICAgIEhhc2hTZXQ8UmVmPERPTVByb21pc2U+
PiBtX2V4dGVuZExpZmV0aW1lUHJvbWlzZXM7Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKEhhc2hT
ZXQ8UmVmPERPTVByb21pc2U+PiYmKT4gbV93aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0Fy
ZVNldHRsZWRIYW5kbGVyOworICAgIEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxSZWY8RE9NUHJvbWlz
ZT4+JiYpPiBtX3doZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZEhhbmRsZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGY5NTNjYWUzMjcw
MTUxNDFkMzQwZGYzNzVhOGI2NWZmZTM1NjRmMDEuLmZlODI2MGVjNzE5N2UxNmJlZmYzZDkzMTFk
ZGQ5Mjk2NjA2MTFjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgZGlzcGF0Y2hUb0NvbnRleHRUaHJlYWRJZk5lY2Vz
c2FyeShjb25zdCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIs
IFdURjo6RnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKK3N0
YXRpYyBib29sIGRpc3BhdGNoVG9Db250ZXh0VGhyZWFkSWZOZWNlc3NhcnkoY29uc3QgRG9jdW1l
bnRPcldvcmtlcklkZW50aWZpZXImIGNvbnRleHRJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBib29sIHdhc1Bvc3RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEu
aAppbmRleCA1N2MyODhhMGFmMTZjMGYyYTg5Y2FhN2U1YTY5MjFkYmMxOTg2NDNmLi4wZjRmNjFi
NzAzNWE1YTY3NzEzOTBjMDI3YzAxZmFhY2Q2ZTQ1MGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAt
OTEsNyArOTEsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKERlY29kZXImCiAgICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSksIFdU
Rk1vdmUoKnVybCksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSB9IH07
CiB9CiAKLXVzaW5nIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYp
PjsKK3VzaW5nIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDZjNTllOGQ4NTFj
YzQyOWY0ZmM3NDY5YjZlNGQ5YzNmMWM4YTAxNjIuLmRjNzkyMjI3MzgwYzljMDM0MmRjZDg5ZjFk
ZDcwODFlNzk1MTdiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTM0Miw3ICszNDIsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNlcHRpb24oU2Vydmlj
ZVdvcmtlckpvYiYgam9iLCBjb25zdAogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShqb2IuaGFz
UHJvbWlzZSgpIHx8IGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBk
YXRlLCAiT25seSBzb2Z0IHVwZGF0ZXMgaGF2ZSBubyBwcm9taXNlIik7CiAKLSAgICBhdXRvIGd1
YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CisgICAgYXV0byBndWFyZCA9
IG1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKICAgICAgICAgZGVzdHJveUpvYihqb2IpOwog
ICAgIH0pOwogCkBAIC0zODEsMTEgKzM4MSwxMSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAg
ICAgICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPRygiam9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9u
OiBVcGRhdGUgam9iICUiIFBSSXU2NCAiIHN1Y2NlZWRlZCIsIGpvYi5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CiAgICAgfQogCi0gICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChb
dGhpcywgJmpvYl0geworICAgIGF1dG8gZ3VhcmQgPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9i
XSB7CiAgICAgICAgIGRlc3Ryb3lKb2Ioam9iKTsKICAgICB9KTsKIAotICAgIGF1dG8gbm90aWZ5
SWZFeGl0RWFybHkgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBrZXkgPSBkYXRhLmtleSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkXSB7
CisgICAgYXV0byBub3RpZnlJZkV4aXRFYXJseSA9IG1ha2VTY29wZUV4aXQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBrZXkgPSBkYXRhLmtleSwgc2hvdWxkTm90aWZ5V2hl
blJlc29sdmVkXSB7CiAgICAgICAgIGlmIChzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgPT0gU2hv
dWxkTm90aWZ5V2hlblJlc29sdmVkOjpZZXMpCiAgICAgICAgICAgICBub3RpZnlSZWdpc3RyYXRp
b25Jc1NldHRsZWQoa2V5KTsKICAgICB9KTsKQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNl
cnZpY2VXb3JrZXJKbwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGpvYi5oYXNQcm9taXNlKCkpOwogCi0gICAgYXV0
byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0geworICAgIGF1dG8gZ3Vh
cmQgPSBtYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CiAgICAgICAgIGRlc3Ryb3lKb2Ioam9i
KTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCAyNzQ0NWI1YmQ3MzhmMzY5
MWUzYTgwZGI4MTc1NjJkMDE3MzFlNDkxLi41MTA0NTM0ZTU1ZjkxZWFhYzYyNDExNzJjOGE4MjEx
OGIzZjhhNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTYxLDEzICsxNjEsMTMgQEAg
dm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzdG9wV29ya2VyKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSYgc2VydmljZVdvcmtlciwgU2Vjb24KICAgICB9KTsKIH0KIAotdm9pZCBTV0NvbnRleHRNYW5h
Z2VyOjpmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U2VydmljZVdvcmtlclRocmVhZFByb3h5Jik+JiBhcHBseSkKK3ZvaWQgU1dDb250ZXh0TWFuYWdl
cjo6Zm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgRnVuY3Rpb248dm9pZChTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkmKT4mIGFwcGx5KQogewogICAgIGZvciAoYXV0byYgd29ya2VyVGhy
ZWFkIDogbV93b3JrZXJNYXAudmFsdWVzKCkpCiAgICAgICAgIGFwcGx5KHdvcmtlclRocmVhZCk7
CiB9CiAKLWJvb2wgU1dDb250ZXh0TWFuYWdlcjo6cG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSYpPiYmIHRhc2spCitib29sIFNXQ29udGV4dE1hbmFnZXI6OnBv
c3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik+JiYgdGFzaykKIHsKICAg
ICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpOwogICAg
IGlmICghc2VydmljZVdvcmtlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBlYTM3MGI5N2FjN2Q3
NjE4YjAxMWE0YmNjN2YxMjNiN2E5MzYyN2I3Li5jNzY1YzU3ZDIwMjNmMTRjYWJiYmRiYjkwYjY4
M2VhNjU0NTcwN2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC05NSw5ICs5NSw5IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFNjcmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9y
dGVkU2NyaXB0cyk7CiAKLSAgICB2b2lkIGZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0
IFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkmKT4mKTsKKyAgICB2
b2lkIGZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IEZ1bmN0aW9uPHZvaWQoU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5Jik+Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBvc3RU
YXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgcG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEZ1
bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik+JiYpOwogCiAgICAgdXNpbmcg
U2VydmljZVdvcmtlckNyZWF0aW9uQ2FsbGJhY2sgPSB2b2lkKHVpbnQ2NF90KTsKICAgICB2b2lk
IHNldFNlcnZpY2VXb3JrZXJDcmVhdGlvbkNhbGxiYWNrKFNlcnZpY2VXb3JrZXJDcmVhdGlvbkNh
bGxiYWNrKiBjYWxsYmFjaykgeyBtX3NlcnZpY2VXb3JrZXJDcmVhdGlvbkNhbGxiYWNrID0gY2Fs
bGJhY2s7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKaW5kZXggZmVmNzUxMTA1MmY4MTI1MGFlODMwNTM0MGVmNWE5MDNiMDhjNDg2
Ni4uYWU2MWI3OWMxYTg2NTE1Nzg2NDdlMTNjOTA2NWM3NjliYzdhMjIyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTYw
NCw3ICs2MDQsNyBAQCB2b2lkIFNXU2VydmVyOjptYXRjaEFsbChTV1NlcnZlcldvcmtlciYgd29y
a2VyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcAogICAgIGNhbGxiYWNrKFdURk1v
dmUobWF0Y2hpbmdDbGllbnRzKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmZvckVhY2hDbGllbnRG
b3JPcmlnaW4oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdURjo6RnVuY3Rpb248
dm9pZChTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYpPiYgYXBwbHkpCit2b2lkIFNXU2VydmVyOjpm
b3JFYWNoQ2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBG
dW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJik+JiBhcHBseSkKIHsKICAgICBh
dXRvIGl0ZXJhdG9yID0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5maW5kKG9yaWdpbik7
CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZW5kKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgK
aW5kZXggMGFjMzE2NzIyYWQ4ZjgxZTNiZTI1NGUwYWE0NzQwOGY1OWFlODcwZS4uYThlYWE2MGFl
MDI5NDU1ZmVjYTc5NGQwODM3YjhkNzFjMmJlNTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTMzLDggKzEzMyw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjbGVhckFsbChXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTdXNwZW5zaW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
bmRTdXNwZW5zaW9uKCk7CkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmLCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBS
dW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKik+OworICAgIHVzaW5nIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKik+OwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHJlc29s
dmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CkBAIC0y
NDUsNyArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluc3RhbGxDb250ZXh0RGF0YShjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKIAogICAgIFNXU2VydmVyUmVnaXN0cmF0aW9u
KiByZWdpc3RyYXRpb25Gcm9tU2VydmljZVdvcmtlcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOwotICAgIHZvaWQgZm9yRWFjaENsaWVudEZvck9yaWdpbihjb25zdCBDbGllbnRP
cmlnaW4mLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckNsaWVudERhdGEm
KT4mKTsKKyAgICB2b2lkIGZvckVhY2hDbGllbnRGb3JPcmlnaW4oY29uc3QgQ2xpZW50T3JpZ2lu
JiwgY29uc3QgRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYpPiYpOwogCiAg
ICAgdm9pZCBwZXJmb3JtR2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zQ2FsbGJhY2tzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmluZGV4IDc4Yzc3Mzg1NDU3ZDYxOTY2ZDFlMTI0YWYzM2VkZDMz
ODkxOGVmYTcuLmQ2MGZmMDA5OWJhMWM4YzA4Y2ExZTdhNjIyZDZmODc0MWFmZmFjOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcApAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6ZmluaXNoQ3VycmVudEpvYigpCiAgICAgICAgIHJ1bk5leHRKb2IoKTsKIH0KIAotdm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpyZW1vdmVBbGxKb2JzTWF0Y2hpbmcoY29uc3QgV1RGOjpGdW5jdGlv
bjxib29sKFNlcnZpY2VXb3JrZXJKb2JEYXRhJik+JiBtYXRjaGVzKQordm9pZCBTV1NlcnZlckpv
YlF1ZXVlOjpyZW1vdmVBbGxKb2JzTWF0Y2hpbmcoY29uc3QgRnVuY3Rpb248Ym9vbChTZXJ2aWNl
V29ya2VySm9iRGF0YSYpPiYgbWF0Y2hlcykKIHsKICAgICBib29sIGlzRmlyc3QgPSB0cnVlOwog
ICAgIGJvb2wgZGlkUmVtb3ZlRmlyc3RKb2IgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKaW5kZXgg
ZWI5MzFlMDQxNDcwMGVkNTk2N2FhYjYxZDY0ODI3NTgxMjU5YzQzNy4uNGZkNWU2MTg5ZDcxOWQw
YjgzZmZhZDk5NjU5NDcyNWU2NzY3MjJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAotICAgIHZvaWQgcmVtb3ZlQWxsSm9ic01hdGNo
aW5nKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChTZXJ2aWNlV29ya2VySm9iRGF0YSYpPiYpOwor
ICAgIHZvaWQgcmVtb3ZlQWxsSm9ic01hdGNoaW5nKGNvbnN0IEZ1bmN0aW9uPGJvb2woU2Vydmlj
ZVdvcmtlckpvYkRhdGEmKT4mKTsKIAogICAgIERlcXVlPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBt
X2pvYlF1ZXVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGFmOTVhMWEwNjFm
NTcwMGIwOWI4YzE3ZWIyZGRiMjYwNjJiZjc4MTUuLjg2YjU4MjY0MTRkOWM1ODJiNmViMGZkM2Q0
MTliOTlmMjA2Nzc4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0xMzcsNyAr
MTM3LDcgQEAgdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQo
KQogICAgIH0pOwogfQogCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpmb3JFYWNoQ29ubmVj
dGlvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mIGFw
cGx5KQordm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Zm9yRWFjaENvbm5lY3Rpb24oY29uc3Qg
RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYgYXBwbHkpCiB7CiAgICAgZm9y
IChhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVyV2l0aENsaWVudHMgOiBtX2Nvbm5lY3Rpb25zV2l0
aENsaWVudFJlZ2lzdHJhdGlvbnMudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5l
Y3Rpb24gPSBtX3NlcnZlci5jb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyV2l0aENsaWVu
dHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IDVkMWU5MmI5MTQ3YzVhMzMwYjZkNWRj
MjEwM2MzZjNlZDA2NzY0YzUuLjJjMTY0ZTQ0NGI0NWNlNjkwYjVlMzY4ZmY4YWJmZWQ2OTA3OGI3
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgog
ICAgIAogICAgIGJvb2wgaXNVbnJlZ2lzdGVyZWQoKSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFj
aENvbm5lY3Rpb24oY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNXU2VydmVyOjpDb25uZWN0aW9u
Jik+Jik7CisgICAgdm9pZCBmb3JFYWNoQ29ubmVjdGlvbihjb25zdCBGdW5jdGlvbjx2b2lkKFNX
U2VydmVyOjpDb25uZWN0aW9uJik+Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3Vs
ZFNvZnRVcGRhdGUoY29uc3QgRmV0Y2hPcHRpb25zJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoSXNBcHBJbml0aWF0ZWQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442411</attachid>
            <date>2021-10-25 13:58:32 -0700</date>
            <delta_ts>2021-10-26 00:23:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232226-20211026055830.patch</filename>
            <type>text/plain</type>
            <size>515119</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdiZDg5ZTg4NjViZmVmZTdkYmZkYzZi
ZTBkNGRjODBlZWJhODBjYWMuLjJmZDViYWU2YTQ1Mjg1ZDU2MGIzZTdmY2I3ZjhkYjRhOWQ0Zjg5
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMjUgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW1dlYkNvcmVdIFJlbW92ZSB1bm5lZWRl
ZCBXVEY6OiBuYW1lc3BhY2UgcHJlZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzIyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBN
YXhmaWVsZC4KKworICAgICAgICAqIHd0Zi9Gb3J3YXJkLmg6CisKIDIwMjEtMTAtMjQgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRvcHQgYnJpZGdl
X2Nhc3QgYW5kIG1ha2VWZWN0b3IgaW4gYSBmZXcgbW9yZSBwbGFjZXMsIGluY2x1ZGluZyBjYXNl
cyB3aGVyZSBhZG9wdENGL05TIHdhcyB1c2VkIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI0
NDI5OThkMzJkYTEyYjg2YmUxMjFhZTVmMjViOTY0NDFhMjBmZS4uNDMzZDc1MTQ2YzNhNmY3NDcw
NGY3MTA5MzZmNjEzY2RkNDg0NmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0OCBAQAorMjAy
MS0xMC0yNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAg
ICAgICBbV2ViQ29yZV0gUmVtb3ZlIHVubmVlZGVkIFdURjo6IG5hbWVzcGFjZSBwcmVmaXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjIyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE15bGVzIEMuIE1heGZpZWxkLgorCisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25FcnJvci5oOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRD
b29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGF5bWVudENvb3JkaW5hdG9yOjpvcGVuUGF5bWVudFNldHVwKToKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5
U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFL
ZXlTeXN0ZW1BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6dHJ5TmV4dFN1cHBvcnRlZENvbmZp
Z3VyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmZpbGxIZWFkZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hIZWFkZXJzOjpJdGVy
YXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlSXRlcmF0b3I6OmFkdmFuY2UpOgor
ICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFu
ZGxlLmg6CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRNYW5hZ2VyLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6OmNhbGxGdW5jdGlvbk9uT3JpZ2luVGhyZWFkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6ZG9PcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpk
b09wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRvR2V0QWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldEFsbEtleXMpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRv
T3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9PcGVuS2V5
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0RlbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9HZXRBbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6djFSZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
Ojp2MVJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OnYyUmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6djJSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjp2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6djFJbmRleFJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OnYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjp2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JB
ZGQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlOjpsb2dnZXJQ
dHIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFp
bnRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZWRpYUNvbnRyb2xsZXI6OmFkZERldmljZUNoYW5nZU9ic2VydmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpleGlzdGluZ1RyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXltZW50UmVxdWVzdDo6c2hvdyk6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudFJlc3BvbnNlOjpy
ZXRyeSk6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb246OnRvSlNPTiBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSlNPTi5oOgorICAgICAgICAq
IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlU3RyZWFtU291cmNlOjpwdWxsKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3Jr
bGV0Tm9kZTo6aW5pdGlhbGl6ZUF1ZGlvUGFyYW1ldGVycyk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRp
b1NvdXJjZTo6Y29uc3VtZUF1ZGlvKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvQ29udGV4
dDo6ZmluaXNoZWRSZW5kZXJpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0
U2V0Um93TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxSZXN1bHRTZXRSb3dMaXN0Ojpp
dGVtIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJv
d0xpc3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5k
OjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2VBcnJheS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlQXJyYXk6OmhhbmRsZUFkZGVkT3JVcGRhdGVk
SW5wdXRTb3VyY2VzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTo6YXBwZW5kQ2hpbGRyZW5Ub0FycmF5
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZFNjcm9sbGJhcik6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHA6CisgICAg
ICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBhcmVudCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAo
bnVtYmVyT2ZSZXBsYWNlZEVsZW1lbnRzQmVmb3JlT2Zmc2V0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAqIGFuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmU6OmFuaW1hdGlvbkNhbkJlUmVtb3ZlZCk6CisgICAgICAgICogYmluZGluZ3MvSURMVHlwZXMu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjppbnZva2VDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRQcm9wZXJ0eVZh
bHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAg
ICogYnJpZGdlL2MvY191dGlsaXR5Lmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29t
YmluZWRVUkxGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpDb21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpmb3JFYWNoKToKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oOgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFDb21iaW5lcjo6Y29tYmluZURGQXMpOgorICAg
ICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmg6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaDoKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9ORkFOb2RlLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVGVybS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRlcm06Omhhc2ggY29uc3Qp
OgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtOjpkaXNwYXRjaE9wZXJhdGlvbkluV29ya1F1ZXVlKToKKyAgICAg
ICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmg6CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5
cHRvS2V5UlNBLmg6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25z
dCk6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VW
YWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NGaWx0
ZXJJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJj
ZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmg6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5oOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OnRyYXZlcnNlU3VicmVz
b3VyY2VzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAgICAg
ICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFs
dWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWVMaXN0Ojp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6CisgICAgICAgICog
Y3NzL0NTU1ZhbHVlTGlzdC5oOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBj
b25zdCk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5oOgorICAgICAgICAqIGNzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VSdWxlc0lu
VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6dHJhdmVyc2VS
dWxlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OnRyYXZl
cnNlU3VicmVzb3VyY2VzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRz
Lmg6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgorICAgICAgICAqIGNzcy9tYWtldmFsdWVz
LnBsOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlVHJhbnNmb3JtVHJhbnNsYXRlQXJndW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlVHJhbnNmb3JtQW5nbGVBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjp0cmFu
c2Zvcm1DYW5MaWtlbHlVc2VGYXN0UGF0aCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0FwcGxlTGVnYWN5Q3NzVmFsdWVL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1ZhbHVlS2V5d29yZElEKToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVGb250RmFtaWx5UmF3KToKKyAg
ICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6cnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpxdWVyeVNlbGVjdG9yU2ltcGxlU2VsZWN0
b3JDaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OnJ1bGVDb2xs
ZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yQ29tcGlsZXI6OnF1ZXJ5U2VsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hl
Y2tpbmdDb250ZXh0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cHJvY2Vzc0NvbG9yU2NoZW1lU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjptYXRjaGluZ0FuaW1hdGlvbnMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAqIGRvbS9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpTY3JpcHRFbGVtZW50KToKKyAgICAgICAgKiBkb20v
U2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpUYXNrKToK
KyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZWRFbGVtZW50OjpzdHlsZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGRvbS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6YWRk
RGVzdHJ1Y3Rpb25PYnNlcnZlcik6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzQXRT
ZWxlY3Rpb25TdGFydCk6CisgICAgICAgICogZWRpdGluZy9TbWFydFJlcGxhY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0U21hcnRTZXQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6OnBhcnNlKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oOgor
ICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVN1
YnJlc291cmNlVVJMQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1
cCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OnBlcmZv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtOjpnZXRTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6b3BlbkZvclJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNGaWxlU3RyZWFtOjpyZWFkKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlOjpsYXN0TW9kaWZpZWQgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgICogaHRtbC9BdXRvZmlsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50
KToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlzdC5oOgorICAgICAgICAqIGh0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpIVE1M
SW1hZ2VFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5l
VGhlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKToKKyAgICAgICAgKiBodG1sL0hUTUxTbG90RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2xvdEVsZW1lbnQ6OmFzc2lnbmVkTm9kZXMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50Ojphc3NpZ25lZEVsZW1lbnRzIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0xpbmtJY29uVHlwZS5oOgorICAgICAgICAqIGh0bWwvU3VibWl0RXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VibWl0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRt
bC9VUkxTZWFyY2hQYXJhbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1z
OjpVUkxTZWFyY2hQYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogaHRtbC9VUkxTZWFyY2hQYXJhbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlVSTFNlYXJjaFBhcmFtczo6cGFpcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTE9iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUXVlcnkuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6ZW5zdXJlTm90TnVsbCBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2Ft
cGxlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFN5bmMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaDoKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpkZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcmVpZ25BdHRyaWJ1
dGVzTWFwKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlDYXNlKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1ZUVFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUU2Nhbm5lcjo6
c2Nhbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRTY2FubmVyOjpzY2FuUnVuKToKKyAgICAgICAg
KiBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjplcXVh
bExpdGVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW5pemVyOjpuZXh0VG9rZW4p
OgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNo
U3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6
CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVu
dEJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpoYXNUcmFpbGluZ1RleHRD
b250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6dmlzdWFsbHlDb2xs
YXBzZUhhbmdpbmdPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFw
cGVuZFRleHRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YWRkVHJh
aWxpbmdIeXBoZW4pOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1
aWxkZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
dGFibGUvVGFibGVHcmlkLmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90
YWJsZS9UYWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmRpc3RyaWJ1
dGVBdmFpbGFibGVTcGFjZSk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjptYWtlVGV4dExvZ2ljYWxPcmRlckNhY2hlSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Om1ha2VMaW5lTG9naWNhbE9yZGVyQ2FjaGUpOgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpjYW5Vc2VGb3JMaW5lTGF5b3V0
V2l0aFJlYXNvbik6CisgICAgICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVh
cik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJldmFsaWRh
dGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JS
ZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6Zm9yRWFjaFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpmb3JFYWNoU2Vzc2lvblJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmUpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9tYWMvTG9hZGVy
TlNVUkxFeHRyYXMuaDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYWNrRGlzcGxheU5hbWUpOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNo
b3dTaGFyZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2hvd0NvbnRh
Y3RQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxs
c2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6
aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2hvdWxk
QWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzcyk6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpjcmVhdGVXaW5kb3cp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9k
ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjphcHBseVJlY3Vyc2l2ZWx5V2l0aFZpc2libGVSZWN0KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Zm9yRWFj
aFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6d2hlblVubmVzdGVkKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI6OmRpc3BhdGNoRXZlbnRGb3JUb3VjaEF0SW5kZXgp
OgorICAgICAgICAqIHBhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmg6CisgICAgICAgICog
cGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
VXNhZ2VUaHJlYWQ6OndhaXRVbnRpbE9ic2VydmVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVVzYWdlVGhyZWFkOjp0aHJlYWRCb2R5KToKKyAgICAgICAgKiBwYWdlL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorICAg
ICAgICAqIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5oOgorICAgICAgICAqIHBhZ2UvVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvci5oOgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVz
dENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKToKKyAgICAgICAgKiBwYWdlL1doZWVsRXZlbnRU
ZXN0TW9uaXRvci5oOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvY2Vzc0ZlYXR1cmVzU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL1dpbmRv
d0ZlYXR1cmVzLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2Ny
aXB0VVJMcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Tm9uUGFyc2VySW5zZXJ0ZWRTY3JpcHRzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTY3Jp
cHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0lubGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dGcmFtZUFuY2VzdG9ycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0RnJvbVNvdXJjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFt
ZUZyb21Tb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd1Jlc291cmNlRnJvbVNvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29ubmVjdFRvU291cmNlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNlVVJJIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6bG9nVG9D
b25zb2xlIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpTY3JvbGxpbmdUaHJlYWQpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVOaWNvc2lhOjpzY3JvbGxpbmdOb2RlRm9yUG9pbnQpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdGFydEFuaW1hdGlvbkNhbGxiYWNr
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9DUFVNb25pdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZU1vbml0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xvd1Bvd2VyTW9k
ZU5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5j
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVD
b21tYW5kTGlzdGVuZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21l
bnR1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c3Rh
cnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZVRpbWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZFRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRpbWVyOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lcjo6VGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcjo6RGVmZXJyYWJsZU9uZVNob3RU
aW1lcik6CisgICAgICAgICogcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRp
b0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1J1bkxvb3BPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUG93ZXJT
b3VyY2VOb3RpZmllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1N5c3RlbUJhdHRlcnku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OnNldExvZ2dlcik6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246OnNldExvZ2dlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6c2V0
TG9nZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlTdG9yZTo6Y29udGFpbnNLZXlJRCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlTdG9yZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OktleVN0b3Jl
Ojp1bnJlZik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rp
b25zLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM6OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
eHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1l
cGFkL0dhbWVwYWRDb25zdGFudHMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVNb25p
dG9yR0xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Ip
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjp0cmF2ZXJzZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXNHTC5oOgorICAgICAgICAoR0NHTFNwYW48R0NHTHZvaWQ+OjpHQ0dMU3Bh
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldEVuY29kZWREYXRhU3RhdHVzQ2hhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwZXJmb3Jt
VGFza0F0TWVkaWFUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaDoKKyAg
ICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlT
dGF0ZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlPjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpM
b2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3k+Ojp0
b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpzdHJva2VCb3VuZGluZ1JlY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVWaWRlb1NhbXBsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1w
bGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0
dGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29tcGxldGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZpY2F0aW9uOjpGdW5jdGlvbjx2b2lkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZp
Y2F0aW9uOjpXVEY6OkZ1bmN0aW9uPHZvaWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjcmVhdGVGbHVzaGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpTdWJpbWFnZUNhY2hl
SGFzaDo6aGFzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhUGxh
eWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1
cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06Ok9uRWJtbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6bG9nZ2VyUHRyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dy
YXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q6OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q6Oklu
TWVtb3J5RGlzcGxheUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjZWxlcmF0ZUJveEJsdXIp
OgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVu
Y2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaW1wbGVC
dXNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjppc0NvZGVjU3VwcG9ydGVkIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlh
UGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZU1lZGlhUGxheWVyRW5jb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9UZXh0U2lua0dTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5VGh1bmRlci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKGNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGVuZFBpcGVsaW5lOjphcHBzcmNFbmRPZkFwcGVuZENoZWNrZXJQcm9iZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6aGFuZGxlQXBwc2lua05ld1NhbXBsZUZyb21T
dHJlYW1pbmdUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xT
ZXR0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dGhyZWFkU3BlY2lmaWNBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpkcm9w
Q3VycmVudEJ1ZmZlcldoaWxlUHJlc2VydmluZ1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdXaXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
cmVjdDJEOjpkcmF3V2l0aG91dFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJET3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YTo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybUlzRXF1YWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRDo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OlBsYXRmb3JtQ29udGV4dERpcmVjdDJE
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRHRElPYmplY3Q6Omhhc2ggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmFsbGJhY2tD
dXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6d2FsbFRpbWVGb3JFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtU2NyZWVuR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRQSU9ic2VydmVy
SGFuZGxlcnNNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1
bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZlcjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjphdWRpb1Nh
bXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHJpbmdDb25zdHJhaW50OjpmaW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmb3JFYWNoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmaWx0ZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50czo6aXNDb25zdHJhaW50U2V0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmg6CisgICAgICAgIChXZWJD
b3JlOjpOdW1lcmljQ29uc3RyYWludDo6ZmluZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
RGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlNb2NrLmg6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrOjpTY3JvbGxiYXJzQ29u
dHJvbGxlck1vY2spOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xs
ZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlRmlsZVBhdGhzT3JEYXRhQnVmZmVyc1RvRmlsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFdoaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNraXBDaGFyYWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
YXRlTm90aWZpZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVTdG9yYWdlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llQ2hhbmdlQ2FsbGJh
Y2tNYXApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6c2V0Q29va2llKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llU3RvcmFnZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpkb21h
aW5NYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpwYXJzZUV4cGlyZXNNUyk6
CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpwYXJzZUNvb2tpZUF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FsbE9uV29ya2VyVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpleGVjdXRlVGFz
a3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW06OkN1cmxTdHJlYW0pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3Ry
ZWFtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFt
U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1TY2hlZHVsZXI6OmNh
bGxPbldvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVy
OjpjYWxsQ2xpZW50T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1T
Y2hlZHVsZXI6OmV4ZWN1dGVUYXNrcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTdHJlYW1TY2hlZHVsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
VVJMU291cC5oOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkZXN0cm95Q29sbGF0aW9uRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FsbENvbGxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlOjpzZXRDb2xsYXRpb25GdW5jdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1NpbmdsZUJ5dGUuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpsYXN0SHlwaGVuTG9jYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRm
b3JtWFIuaDoKKyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRh
dGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YTo6TGF5ZXJEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9MYXllckFuY2VzdG9y
Q2xpcHBpbmdTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckFuY2VzdG9yQ2xpcHBp
bmdTdGFjazo6bGFzdE92ZXJmbG93U2Nyb2xsUHJveHlOb2RlSUQgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcv
TGVnYWN5Um9vdElubGluZUJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlZmVyZW5jZWRT
VkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlZFNWR1Jlc291cmNl
czo6YWRkQ2xpZW50Rm9yVGFyZ2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpl
bnN1cmVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SXRlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c2hvd0xheWVyVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzZVZpc2libGVOb25Db21w
b3NpdGVkRGVzY2VuZGFudExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck92ZXJmbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R3JpZERhdGEuaDoKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5oOgorICAgICAgICAqIHN0
eWxlL1N0eWxlSW52YWxpZGF0b3IuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlUnVsZVNl
dHMuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5oOgorICAgICAgICAqIHRlc3Rpbmcv
VHlwZUNvbnZlcnNpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpUeXBlQ29udmVyc2lvbnM6OnRl
c3RMb25nUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGVDb252ZXJzaW9uczo6
c2V0VGVzdExvbmdSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUNvbnZlcnNpb25zOjp0
ZXN0Tm9kZVJlY29yZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBlQ29udmVyc2lvbnM6
OnNldFRlc3ROb2RlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGVDb252ZXJzaW9uczo6
dGVzdFNlcXVlbmNlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGVDb252ZXJz
aW9uczo6c2V0VGVzdFNlcXVlbmNlUmVjb3JkKToKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VY
UklucHV0Q29udHJvbGxlci5oOgorICAgICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0TW9ja0dhbWVwYWREZXRh
aWxzKToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlVHlwZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKiB0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0
U3VwcG9ydC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6c3RhcnQpOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJPcldvcmtsZXRUaHJlYWQ6OnRocmVhZCBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlZGljYXRlZFJ1bkxv
b3A6OnJ1bkluTW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaDoK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kYWJsZUV2
ZW50Ojp3aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNo
VG9Db250ZXh0VGhyZWFkSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVn
aXN0cmF0aW9uUmVzdWx0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OmZv
ckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1h
bmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Zm9yRWFj
aENsaWVudEZvck9yaWdpbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpyZW1vdmVBbGxKb2Jz
TWF0Y2hpbmcpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OmZvckVh
Y2hDb25uZWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmg6CisKIDIwMjEtMTAtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBXZWJLaXQgb3VnaHQgdG8gYmUgYWJsZSB0byBw
bGF5IHZpZGVvcyB3aXRob3V0IENvbnRlbnQtTGVuZ3RoIEhUVFAgaGVhZGVyIGZpZWxkcyBhbmQg
d2l0aG91dCByYW5nZSBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBmN2FjYjNiMTY3NDcy
N2NhN2IxYzdiNjNhYTg5NWU1OTg1NTI2NzhlLi4zZWZhYzM0NDYwNWFlOTBmMjlhOTgyY2I4Zjk0
MGM0NDMyZTEzNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0x
MC0yNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAgICAg
ICBbV2ViQ29yZV0gUmVtb3ZlIHVubmVlZGVkIFdURjo6IG5hbWVzcGFjZSBwcmVmaXgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjIyNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE15bGVzIEMuIE1heGZpZWxkLgorCisgICAgICAgICogcGFsL0h5c3Rl
cmVzaXNBY3Rpdml0eS5oOgorICAgICAgICAoUEFMOjpIeXN0ZXJlc2lzQWN0aXZpdHk6Okh5c3Rl
cmVzaXNBY3Rpdml0eSk6CisgICAgICAgICogcGFsL0xvZ2dpbmcuY3BwOgorICAgICAgICAoUEFM
OjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKToKKyAgICAgICAgKiBwYWwvTG9nZ2luZy5oOgorCiAy
MDIxLTEwLTIzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQVg6IFVuaWZ5IHNwZWVjaCBzeW50aGVzaXplciBwbGF0Zm9ybSB1c2FnZSBmb3IgTWFjL2lP
UwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYv
Rm9yd2FyZC5oCmluZGV4IGYwMGNlMzk2MDk5ZWZiY2Y5MGQzZWExY2IxOGM0NWU0ODdhNzIyNTAu
LmNhZWE4YWVhZDM2ZmE1OWIzZGQwMTQzN2U3ZTExNzI5NWVmNWZmZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAg
LTE1Nyw2ICsxNTcsNyBAQCB1c2luZyBXVEY6OlRleHRTdHJlYW07CiB1c2luZyBXVEY6OlVSTDsK
IHVzaW5nIFdURjo6VW5pcXVlUmVmOwogdXNpbmcgV1RGOjpWZWN0b3I7Cit1c2luZyBXVEY6Oldl
YWtQdHI7CiAKIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IHVzaW5nIEV4cGVjdGVkID0gc3Rk
OjpleHBlcmltZW50YWw6OmV4cGVjdGVkPFQsIEU+OwogdGVtcGxhdGU8Y2xhc3MgRT4gdXNpbmcg
VW5leHBlY3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjp1bmV4cGVjdGVkPEU+OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25FcnJvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25FcnJvci5o
CmluZGV4IDFkNjRlODVjYjJkY2Y1OGJjMWM1NjAwZjdhOTJhNDJjMzM0YjVmNzkuLjQ4YjQzNzhh
ZWFhMWFiNjVhZjg4ZTM1MWQwZWM1ZTE3M2IzYWUyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uRXJyb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbkVycm9yLmgKQEAgLTM0LDcg
KzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFwcGxlUGF5U2Vzc2lvbkVy
cm9yIHsKLSAgICB1c2luZyBJbmZvUmVjb3JkID0gVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0
cmluZywgU3RyaW5nPj47CisgICAgdXNpbmcgSW5mb1JlY29yZCA9IFZlY3RvcjxLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+PjsKICAgICBTdHJpbmcgY29kZTsKICAgICBJbmZvUmVjb3JkIGlu
Zm87CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IGU2ZjAxMGVmYjU1ZGFiOGVjM2NlY2UzNjc0YjI4OGZm
NzFhNTA4ZjUuLjYxZDQzZjM5ODk3N2Y4OTVhMmM0NzAzOWUzOGNiYWQwNDMxOTllZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGlu
YXRvci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1h
a2VQYXltZW50cyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBheW1lbnRDb29y
ZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2NsaWVudC5jYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChtZXJjaGFudElkZW50aWZpZXIsIGRvY3VtZW50LmRvbWFpbigpLCBbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZG9jdW1lbnQgPSBXZWFrUHRyIHsgZG9jdW1l
bnQgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9v
bCBjYW5NYWtlUGF5bWVudHMpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVD
YXJkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QKICAgICB9KTsKIH0KIAotdm9pZCBQYXltZW50
Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50U2V0dXAoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6Om9wZW5QYXltZW50U2V0
dXAoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwg
RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBQQVlNRU5U
X0NPT1JESU5BVE9SX1JFTEVBU0VfTE9HKCJvcGVuUGF5bWVudFNldHVwKCkiKTsKICAgICBtX2Ns
aWVudC5vcGVuUGF5bWVudFNldHVwKG1lcmNoYW50SWRlbnRpZmllciwgZG9jdW1lbnQuZG9tYWlu
KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDliZmZkNGMwZDky
OGMwODgyYmZhZTlkYjhhNTE2YWU1NzQ2MDNmNDcuLjI2N2I1ODZlZTA1MGVmMmFhNzA4NGYzYmIw
MmFlOWQ3MmRkOThmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHN1cHBvcnRzVmVyc2lvbihEb2N1bWVudCYsIHVuc2lnbmVkIHZlcnNpb24pIGNvbnN0
OwogICAgIGJvb2wgY2FuTWFrZVBheW1lbnRzKERvY3VtZW50Jik7Ci0gICAgdm9pZCBjYW5NYWtl
UGF5bWVudHNXaXRoQWN0aXZlQ2FyZChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJ
ZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
OwotICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWVy
Y2hhbnRJZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpOworICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRG9jdW1lbnQm
LCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKERvY3VtZW50
JiwgY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgYm9vbCBoYXNBY3RpdmVTZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9hY3RpdmVTZXNzaW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBs
ZVBheVBheW1lbnRIYW5kbGVyLmgKaW5kZXggZDRhZWFmNjZhNGViOGJlYzcyMTQ4ZWIxNWU3Yjgy
ZDI1YWUxNDA1My4uN2JmZWNmZTk1NWUwOGM1OWE3YzhiMmQ4ZWM0MTg5MzdhOWEzZGVlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheVBheW1lbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmgKQEAgLTc0LDcgKzc0
LDcgQEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb252ZXJ0RGF0YShKU0M6OkpT
VmFsdWUpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNob3coRG9jdW1lbnQmKSBmaW5h
bDsKICAgICB2b2lkIGhpZGUoKSBmaW5hbDsKLSAgICB2b2lkIGNhbk1ha2VQYXltZW50KERvY3Vt
ZW50JiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bDsKKyAgICB2b2lkIGNhbk1ha2VQYXltZW50KERvY3VtZW50JiwgRnVuY3Rpb248dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gZGV0
YWlsc1VwZGF0ZWQoUGF5bWVudFJlcXVlc3Q6OlVwZGF0ZVJlYXNvbiwgU3RyaW5nJiYgZXJyb3Is
IEFkZHJlc3NFcnJvcnMmJiwgUGF5ZXJFcnJvckZpZWxkcyYmLCBKU0M6OkpTT2JqZWN0KiBwYXlt
ZW50TWV0aG9kRXJyb3JzKSBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBtZXJjaGFudFZh
bGlkYXRpb25Db21wbGV0ZWQoSlNDOjpKU1ZhbHVlJiYpIGZpbmFsOwogICAgIHZvaWQgY29tcGxl
dGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggMTAzZGRjMGMwYWNhYWRjNmYy
YzZiMWMxMTQ5OGM5NmE2ZjNlNDkyMC4uZDhhNGIzYWYxMmYxYTc5MjNkODg3MDVkNWI5NTgxZDM2
ZjEwMjcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5o
CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENETT4gY3JlYXRlKERv
Y3VtZW50JiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogICAgIH5DRE0oKTsKIAotICAgIHVz
aW5nIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChz
dGQ6Om9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4pPjsKKyAgICB1c2luZyBT
dXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9u
YWw8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPik+OwogICAgIHZvaWQgZ2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbihNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25m
aWd1cmF0aW9uLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CiAKICAgICBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CkBAIC04
Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgQ0RNKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmPFdURjo6TG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lk
KiBtX2xvZ0lkZW50aWZpZXI7CiAjZW5kaWYKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaAppbmRleCA4MjE3OTAzODU3ZWI4MjE0YTAyOWQzMzVkZjhiODk4NDQ2YTQ0MjA3Li4z
ZDk2Zjg4MDJlNzQ3ODQxYzRlZmRhODFkY2I5NDFlYTZlNGE3NWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
QEAgLTExOSwxMiArMTE5LDEyIEBAIHByaXZhdGU6CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICAvLyBMb2dnZXJIZWxwZXIKLSAgICBjb25zdCBXVEY6OkxvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIk1lZGlhS2V5U2Vzc2lvbiI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBs
b2dDaGFubmVsKCkgY29uc3Q7CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogCi0gICAgUmVmPFdURjo6TG9nZ2VyPiBtX2xv
Z2dlcjsKKyAgICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lk
ZW50aWZpZXI7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCAzNjlmMWZjY2E0
MjI5MDFlNmI0YWZiYjg5OTYwNWJiZjU3YzhkMTE2Li43M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtOTMsNyArOTMsNyBA
QCBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Okl0ZXJhdG9yKE1lZGlhS2V5U3RhdHVzTWFw
JiBtYXApCiB7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291
cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVN0YXR1c01hcDo6SXRl
cmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpW
YXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6
Om5leHQoKQogewogICAgIGlmICghbV9tYXAtPm1fc2Vzc2lvbikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFs
dWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaQog
CiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107CiAgICAgYXV0byBidWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6
ZSgpKTsKLSAgICByZXR1cm4gV1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50
VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZl
cikpLCBwYWlyLnNlY29uZCB9OworICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNl
OjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZN
b3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29uZCB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggOGZmZDRjZjdkOWZiYTllYTRjYzU0ZmVjNjgxMjc2NzIz
NjFlYWUwYS4uYzIxMTExM2EyYzZkYWM3OTc5MjRhOTlkMmQyZGY5N2MyZTY1Zjg1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgSXRlcmF0
b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSXRlcmF0b3IoTWVkaWFLZXlTdGF0
dXNNYXAmKTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJT
b3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IG5leHQoKTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFL
ZXlTdGF0dXM+PiBuZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWY8TWVkaWFLZXlT
dGF0dXNNYXA+IG1fbWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggMmYzMTM1ZmQzNGIzMmJkNzhmYmY2MzczYTNmNmFhMmUw
ODE0ZjQ3OS4uN2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4M2EyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBA
IC04OSw3ICs4OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBXVEY6OkxvZ2dlciYg
bG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25zdCBMb2dnZXImIGxv
Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogI2VuZGlmCiAKQEAg
LTEwMyw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2Vha0hhc2hTZXQ8Q0RNQ2xpZW50PiBt
X2NkbUNsaWVudHM7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBSZWY8V1RGOjpM
b2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZjxMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZv
aWQqIG1fbG9nSWRlbnRpZmllcjsKICAgICBtdXRhYmxlIHVpbnQ2NF90IG1fY2hpbGRJZGVudGlm
aWVyU2VlZCB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCmluZGV4IDYzN2Q0MzUyMDU1ODY3MGNm
NTQ4NDUwMWY2NGNjNTI1Yjc5YzFjY2EuLjk1ZGZmOTBiZGM3ZjI3MzNjMGYzZDFkYzY1ODg0NjAx
MjQ5M2M1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTmF2aWdhdG9yRU1FLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKQEAgLTgwLDEzICs4MCwxMyBAQCBpbmxpbmUgdm9pZCBp
bmZvTG9nKExvZ2dlciYgbG9nZ2VyLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykKICNl
bmRpZgogfQogCi1zdGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQ
dHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYm
LCBSZWY8TG9nZ2VyPiYmLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXImJik7CitzdGF0
aWMgdm9pZCB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxl
bWVudGF0aW9uLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRl
ZENvbmZpZ3VyYXRpb25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmLCBSZWY8TG9nZ2VyPiYm
LCBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYpOwogCiB2b2lkIE5hdmlnYXRvckVNRTo6cmVx
dWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKE5hdmlnYXRvciYgbmF2aWdhdG9yLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRl
ZC1tZWRpYS8jZG9tLW5hdmlnYXRvci1yZXF1ZXN0bWVkaWFrZXlzeXN0ZW1hY2Nlc3MKICAgICAv
LyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotICAgIGF1dG8gaWRlbnRpZmll
ciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTmF2aWdhdG9yRU1FIiwgX19mdW5j
X18sICZuYXZpZ2F0b3IpOworICAgIGF1dG8gaWRlbnRpZmllciA9IExvZ2dlcjo6TG9nU2l0ZUlk
ZW50aWZpZXIoIk5hdmlnYXRvckVNRSIsIF9fZnVuY19fLCAmbmF2aWdhdG9yKTsKICAgICBSZWY8
TG9nZ2VyPiBsb2dnZXIgPSBkb2N1bWVudC5sb2dnZXIoKTsKIAogICAgIGluZm9Mb2cobG9nZ2Vy
LCBpZGVudGlmaWVyLCAia2V5U3lzdGVtKCIsIGtleVN5c3RlbSwgIiksIHN1cHBvcnRlZENvbmZp
Z3VyYXRpb25zKCIsIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCAiKSIpOwpAQCAtMTIzLDcgKzEy
Myw3IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2
aWdhdG9yJiBuYXZpZ2F0b3IsIERvY3VtZW50JiBkCiAgICAgcmVxdWVzdC0+c3RhcnQoKTsKIH0K
IAotc3RhdGljIHZvaWQgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4m
JiBpbXBsZW1lbnRhdGlvbiwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBz
dXBwb3J0ZWRDb25maWd1cmF0aW9ucywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBSZWY8TG9nZ2VyPiYmIGxvZ2dlciwgV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYg
aWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJl
ZlB0cjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24+JiYgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSwgUmVmPExvZ2dlcj4mJiBsb2dnZXIsIExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZp
ZXImJiBpZGVudGlmaWVyKQogewogICAgIC8vIDYuMy4gRm9yIGVhY2ggdmFsdWUgaW4gc3VwcG9y
dGVkQ29uZmlndXJhdGlvbnM6CiAgICAgaWYgKCFzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5pc0Vt
cHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgKaW5kZXggY2YyNzZlNTFlMWQ1MWQ3MTU4N2U2ZTZmNTYx
ZDhmN2YwNGE4NTljMy4uYjJmMmFlZDczNWU5ZWNmOWMxOTE2ZDNiMWE5M2ZjZTM5NGU5Nzk2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmgKQEAgLTM4LDkgKzM4LDkgQEAgY2xhc3MgTGVnYWN5Q0RNOwogY2xh
c3MgQ0RNUHJpdmF0ZUludGVyZmFjZTsKIGNsYXNzIE1lZGlhUGxheWVyOwogCi11c2luZyBDcmVh
dGVDRE0gPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlSW50ZXJmYWNl
PihMZWdhY3lDRE0qKT47Ci11c2luZyBDRE1TdXBwb3J0c0tleVN5c3RlbSA9IFdURjo6RnVuY3Rp
b248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci11c2luZyBDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1p
bWVUeXBlID0gV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
PjsKK3VzaW5nIENyZWF0ZUNETSA9IEZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRl
SW50ZXJmYWNlPihMZWdhY3lDRE0qKT47Cit1c2luZyBDRE1TdXBwb3J0c0tleVN5c3RlbSA9IEZ1
bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+OwordXNpbmcgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1B
bmRNaW1lVHlwZSA9IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik+
OwogCiBjbGFzcyBMZWdhY3lDRE1DbGllbnQgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKaW5kZXggMzgzNmI4NzdhNjdk
NmJkNGMzOTgyODk1N2Q1ZjU0NmE0OGZiNjM2Ni4uNTY2NzJjYWYzYzk1Y2Y4OThjMThmMjgxYmI4
MTJjMDhjZjViOTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5oCkBAIC01MywxNiArNTMsMTYgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIFJlZjxGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnk+IHJvb3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCi0gICAg
dXNpbmcgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2Vw
dGlvbk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+JiYpPjsKKyAgICB1c2luZyBEaXJl
Y3RvcnlMaXN0aW5nQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxS
ZWY8RmlsZVN5c3RlbUVudHJ5Pj4+JiYpPjsKICAgICB2b2lkIGxpc3REaXJlY3RvcnkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeSYsIERpcmVjdG9yeUxp
c3RpbmdDYWxsYmFjayYmKTsKIAotICAgIHVzaW5nIEdldFBhcmVudENhbGxiYWNrID0gV1RGOjpG
dW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+PiYm
KT47CisgICAgdXNpbmcgR2V0UGFyZW50Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEV4Y2VwdGlv
bk9yPFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+PiYmKT47CiAgICAgdm9pZCBnZXRQYXJl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1FbnRyeSYsIEdldFBhcmVudENh
bGxiYWNrJiYpOwogCi0gICAgdXNpbmcgR2V0RW50cnlDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4mJik+OworICAgIHVzaW5nIEdl
dEVudHJ5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlU3lzdGVt
RW50cnk+PiYmKT47CiAgICAgdm9pZCBnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5JiwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCwgY29u
c3QgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpGbGFncyYsIEdldEVudHJ5Q2FsbGJhY2smJik7
CiAKLSAgICB1c2luZyBHZXRGaWxlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0
aW9uT3I8UmVmPEZpbGU+PiYmKT47CisgICAgdXNpbmcgR2V0RmlsZUNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZT4+JiYpPjsKICAgICB2b2lkIGdldEZpbGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1GaWxlRW50cnkmLCBHZXRGaWxlQ2FsbGJh
Y2smJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgKaW5kZXggOTg0ZjVkYWFh
MTg2OTg5M2Y2YjNjMjM2MGRiMDlkZDBhNjNkNjEzNC4uOTc2NDhjNGIyODlmNTIzOTFjOTYxNTdh
ZmFlOTZlYWNjNzIxZjIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaApAQCAtNTMsNyArNTMs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB1c2luZyBFbnRyeU1hdGNoaW5nRnVuY3Rpb24gPSBX
VEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgRmlsZVN5c3RlbUVudHJ5Jik+OworICAgIHVzaW5nIEVu
dHJ5TWF0Y2hpbmdGdW5jdGlvbiA9IEZ1bmN0aW9uPGJvb2woY29uc3QgRmlsZVN5c3RlbUVudHJ5
Jik+OwogICAgIHZvaWQgZ2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgRmxhZ3MmIG9wdGlvbnMsIEVudHJ5TWF0Y2hpbmdGdW5jdGlvbiYm
LCBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNr
PiYmKTsKIAogICAgIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgRE9NRmlsZVN5c3RlbSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCmluZGV4IDIwODRlMDJk
ZGUxNjA3YzYzNWNiZDdjYzY2OGE2MWRhZmM4YzMwYWMuLjA5MGY1Y2Y0ZDBmZjExNWQ4NGJmNzMz
YjdhN2IxNWIzNGYyZTNhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hIZWFkZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoSGVhZGVycy5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8dm9p
ZD4gZmlsbEhlYWRlck1hcChIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBjb25zdCBGZXRjaEhlYWRl
cgogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byYgcmVjb3JkID0gc3RkOjpnZXQ8VmVj
dG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4+KGhlYWRlcnNJbml0KTsKKyAg
ICAgICAgYXV0byYgcmVjb3JkID0gc3RkOjpnZXQ8VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcs
IFN0cmluZz4+PihoZWFkZXJzSW5pdCk7CiAgICAgICAgIGZvciAoYXV0byYgaGVhZGVyIDogcmVj
b3JkKSB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFwcGVuZFRvSGVhZGVyTWFwKGhlYWRl
ci5rZXksIGhlYWRlci52YWx1ZSwgaGVhZGVycywgZ3VhcmQpOwogICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTIyMiwxMyArMjIyLDEzIEBAIHZvaWQgRmV0Y2hIZWFk
ZXJzOjpmaWx0ZXJBbmRGaWxsKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEd1YXJkIGd1
YXJkKQogICAgIH0KIH0KIAotc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcs
IFN0cmluZz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxL
ZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBGZXRjaEhlYWRlcnM6Okl0ZXJhdG9yOjpuZXh0
KCkKIHsKICAgICB3aGlsZSAobV9jdXJyZW50SW5kZXggPCBtX2tleXMuc2l6ZSgpKSB7CiAgICAg
ICAgIGF1dG8ga2V5ID0gbV9rZXlzW21fY3VycmVudEluZGV4KytdOwogICAgICAgICBhdXRvIHZh
bHVlID0gbV9oZWFkZXJzLT5tX2hlYWRlcnMuZ2V0KGtleSk7CiAgICAgICAgIGlmICghdmFsdWUu
aXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBT
dHJpbmc+IHsgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHZhbHVlKSB9OworICAgICAgICAgICAgcmV0
dXJuIEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4geyBXVEZNb3ZlKGtleSksIFdURk1vdmUo
dmFsdWUpIH07CiAgICAgfQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaAppbmRleCBjNTA1NzAwMTUyYzMxMTUx
MDdlNTY5ZThjZGUwOTYzMjI3NzM2YjY5Li44YTI4MTJjMGU2N2U1Y2U0MjE3ZTQyNTJhNGU1Njgy
ZGY0NmM3MzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
SGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJz
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICBSZXNwb25zZQogICAgIH07CiAK
LSAgICB1c2luZyBJbml0ID0gc3RkOjp2YXJpYW50PFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4sIFZl
Y3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+PjsKKyAgICB1c2luZyBJbml0
ID0gc3RkOjp2YXJpYW50PFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4sIFZlY3RvcjxLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+Pj47CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaEhl
YWRlcnM+PiBjcmVhdGUoc3RkOjpvcHRpb25hbDxJbml0PiYmKTsKIAogICAgIHN0YXRpYyBSZWY8
RmV0Y2hIZWFkZXJzPiBjcmVhdGUoR3VhcmQgZ3VhcmQgPSBHdWFyZDo6Tm9uZSwgSFRUUEhlYWRl
ck1hcCYmIGhlYWRlcnMgPSB7IH0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hIZWFkZXJz
IHsgZ3VhcmQsIFdURk1vdmUoaGVhZGVycykgfSk7IH0KQEAgLTY5LDcgKzY5LDcgQEAgcHVibGlj
OgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEl0
ZXJhdG9yKEZldGNoSGVhZGVycyYpOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFs
dWVQYWlyPFN0cmluZywgU3RyaW5nPj4gbmV4dCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEtl
eVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQoKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggYTM1ODVjNzMzNjQ4ODdjYTM0OGEyM2YyM2Ji
M2ZkNWRmOTlkMzJjNC4uYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRlNjE4Y2NlYjFkOGM5NGNhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0
Y2hSZXNwb25zZT4+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJp
bmcmIHVybCwgaW50IHN0YXR1cyk7CiAKLSAgICB1c2luZyBOb3RpZmljYXRpb25DYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxGZXRjaFJlc3BvbnNlJj4mJik+OworICAg
IHVzaW5nIE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxG
ZXRjaFJlc3BvbnNlJj4mJik+OwogICAgIHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBGZXRjaFJlcXVlc3QmLCBOb3RpZmljYXRpb25DYWxsYmFjayYmKTsKIAogICAg
IHZvaWQgc3RhcnRDb25zdW1pbmdTdHJlYW0odW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1EaXJlY3RvcnlIYW5kbGUuY3BwCmluZGV4IDZiZGM3ZmM3NDRhZjIzMWQ2ODFlODdhNThlMjZm
ZDQ2NzUxNTY0ZjMuLjVlNzJmNmM5YmJlZmZhZWU3YTVmNjliOTEzMzRhNGU0ZDQzN2FmYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtRGlyZWN0b3J5SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5jcHAKQEAgLTE2Myw3ICsxNjMs
NyBAQCB2b2lkIEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGVJdGVyYXRvcjo6YWR2YW5jZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbgogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgUmVzdWx0IHJlc3VsdFZhbHVlID0gV1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWY8Rmls
ZVN5c3RlbUhhbmRsZT4+IHsgV1RGTW92ZShrZXkpLCByZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCkgfTsKKyAgICAgICAgUmVzdWx0IHJlc3VsdFZhbHVlID0gS2V5VmFsdWVQYWlyPFN0cmluZywg
UmVmPEZpbGVTeXN0ZW1IYW5kbGU+PiB7IFdURk1vdmUoa2V5KSwgcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpIH07CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0VmFs
dWUpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZS5oCmlu
ZGV4IDY4YTFkZWMzNjEwM2RjODhhYjg5NDFlYjIyMTk4OTRhZGIyMDU5MWQuLjg4NjllYTQ2NzIz
MjMzZGMwOWU0NGRkYTJlMThjMTkzMDUxZTRmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1EaXJl
Y3RvcnlIYW5kbGUuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgSXRlcmF0
b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlOjpJdGVyYXRv
cj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxJdGVyYXRvcj4gY3JlYXRlKEZp
bGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUmKTsKLSAgICAgICAgdXNpbmcgUmVzdWx0ID0gc3RkOjpv
cHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFJlZjxGaWxlU3lzdGVtSGFuZGxlPj4+
OworICAgICAgICB1c2luZyBSZXN1bHQgPSBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxTdHJp
bmcsIFJlZjxGaWxlU3lzdGVtSGFuZGxlPj4+OwogICAgICAgICB2b2lkIG5leHQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxSZXN1bHQ+JiYpPiYmKTsKICAgICBwcml2YXRlOgog
ICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlJiBzb3Vy
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZE1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTWFuYWdlci5o
CmluZGV4IDgzNDM3ZGExYmJmMzUwNmM5YjA0ZjMzMWJkMjdiMTcwMzZhN2FhZDcuLjAzOGQyOGIw
MTMwN2I4ZThhOThhZTY5MDE3MTM3Nzk3MjViMGI0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTWFuYWdlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZh
dGU6CiAgICAgR2FtZXBhZE1hbmFnZXIoKTsKIAogICAgIHZvaWQgbWFrZUdhbWVwYWRWaXNpYmxl
KFBsYXRmb3JtR2FtZXBhZCYsIEhhc2hTZXQ8TmF2aWdhdG9yR2FtZXBhZCo+JiwgSGFzaFNldDxE
T01XaW5kb3cqPiYpOwotICAgIHZvaWQgZGlzcGF0Y2hHYW1lcGFkRXZlbnQoY29uc3QgV1RGOjpB
dG9tU3RyaW5nJiBldmVudE5hbWUsIFBsYXRmb3JtR2FtZXBhZCYpOworICAgIHZvaWQgZGlzcGF0
Y2hHYW1lcGFkRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lLCBQbGF0Zm9ybUdhbWVw
YWQmKTsKIAogICAgIHZvaWQgbWF5YmVTdGFydE1vbml0b3JpbmdHYW1lcGFkcygpOwogICAgIHZv
aWQgbWF5YmVTdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oCmluZGV4IGViNjg0MDhk
YzQxYjVmYWQzMjdhMjdjZDViMDNhNTMyMjNhOWQ3ZTAuLjQ0ZGMzNDM0ODZjNDJmNjJlNWRhYTI0
ZDA5M2JjMTU3NjVmNTI4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY29udGV4dC0+cG9zdENyb3NzVGhyZWFkVGFzayhvYmplY3QsIG1ldGhvZCwgYXJn
dW1lbnRzLi4uKTsKICAgICB9CiAKLSAgICB2b2lkIGNhbGxGdW5jdGlvbk9uT3JpZ2luVGhyZWFk
KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKKyAgICB2b2lkIGNhbGxGdW5jdGlv
bk9uT3JpZ2luVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICB7CiAgICAg
ICAgIGlmIChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG9yaWdpblRocmVh
ZCgpKSkgewogICAgICAgICAgICAgZnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggNjJh
MDA5MGRhMDYzY2I2MmEwM2E1MmQ2NWE3MzA1N2FlMmIzNzI2My4uNmMwYjFiNGYyYWIwYzAzMzA3
NjY1NGVhNGIyNzY1NTk0NDU4OTUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTEwNSw3ICsxMDUs
NyBAQCBzdHJ1Y3QgSURCRGF0YWJhc2VJZGVudGlmaWVySGFzaCB7CiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKIH07CiAKLXN0cnVj
dCBJREJEYXRhYmFzZUlkZW50aWZpZXJIYXNoVHJhaXRzIDogV1RGOjpTaW1wbGVDbGFzc0hhc2hU
cmFpdHM8SURCRGF0YWJhc2VJZGVudGlmaWVyPiB7CitzdHJ1Y3QgSURCRGF0YWJhc2VJZGVudGlm
aWVySGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxJREJEYXRhYmFzZUlkZW50aWZp
ZXI+IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRy
dWU7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwogICAg
IHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlu
Zm8pIHsgcmV0dXJuIGluZm8uaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5kZXggZjk2ZGI3NDZiOTJhYTY1NTg2OWQ4NWNmYmQ1
NzcxN2JhYTkzMTM0Yy4uMTY3ZDM4MDRlZjkwZDA3MTc3MThlM2QxOWRlMDI4NzFlYmI5ZWJlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAt
MTQ0LDcgKzE0NCw3IEBAIHZvaWQgSURCSW5kZXg6OnJvbGxiYWNrSW5mb0ZvclZlcnNpb25DaGFu
Z2VBYm9ydCgpCiAgICAgbV9kZWxldGVkID0gZmFsc2U7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvT3BlbkN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24gZGly
ZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+
JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb09w
ZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9u
T3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCSW5kZXg6Om9wZW5DdXJzb3IiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVh
ZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSkpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoSlNHbG9iYWxPYmplY3QmIGV4ZWNT
dGF0ZSwgSlNWCiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6OmRvT3BlbktleUN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6
OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24p
CitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb09wZW5LZXlDdXJzb3Io
SURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRy
PElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
SW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vz
c1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWQoKSkpOwpAQCAtMzM3LDcgKzMzNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0S2V5KEV4Y2VwdGlvbk9yPElEQktleVJhbmdlRGF0YT4g
cmFuCiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RHZXRLZXkoKnRoaXMsIGtleVJhbmdl
KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9HZXRBbGwo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8
UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
LCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9u
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7CiAgICAgQVNTRVJU
KGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9vYmplY3RTdG9yZS50cmFu
c2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTM3NCw3ICszNzQsNyBA
QCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoSlNHbG9iYWxP
YmplY3QmIGV4ZWNTdGF0ZSwgSlNWYWx1ZQogICAgIH0pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEFsbEtleXMoc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4o
KT4mJiBmdW5jdGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRv
R2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgRnVuY3Rpb248RXhjZXB0
aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCSW5kZXg6OmdldEFsbEtleXMiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRo
cmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmgKaW5kZXggOWYzZmJjYWQ5NjQ2YWFiMmYwYzc5ODBlY2EzYTk0NWM3ZjAx
NDcwZS4uN2Y4YjY4MTk5MWIzZjVjMDc5MjUyNTEwOGU3YTA5YzFhMDI2MTI5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC04OCwxMCArODgsMTAg
QEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvQ291bnQoY29u
c3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBk
b0dldChFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKICAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IGRvR2V0S2V5KEV4Y2VwdGlvbk9yPElEQktleVJhbmdlRGF0YT4pOwotICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVj
dGlvbiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAm
Jik7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5LZXlDdXJzb3IoSURC
Q3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlS
YW5nZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxs
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpG
dW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9u
LCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CisgICAg
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5LZXlDdXJzb3IoSURCQ3Vyc29yRGly
ZWN0aW9uLCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7
CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbChzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdl
Pj4oKT4gJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGxLZXlz
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQ
dHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4
IDFmMDRhYzNhNTFjMTZlOWE0MzQ2N2VhMzEwZDAwM2NkZDlkODlhY2YuLmExMDMwOTFlNTdlZTZi
MWE4NjRhN2M4YjFjOGU0OGFlMDNlMTBlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBi
b29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9p
bmZvLmF1dG9JbmNyZW1lbnQoKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6ZG9PcGVuQ3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24s
IFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5j
dGlvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvT3Bl
bkN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBGdW5jdGlvbjxFeGNlcHRpb25P
cjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvciIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50
VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSkpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0
CiAgICAgfSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmRvT3BlbktleUN1cnNvcihJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBXVEY6OkZ1
bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCitF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb09wZW5LZXlDdXJz
b3IoSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVm
UHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRo
cmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2lu
VGhyZWFkKCkpKTsKQEAgLTM5NCw3ICszOTQsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihJREJLZXlSYW5nZSoga2V5UmFuZwog
ICAgIH0pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
Ojpkb0RlbGV0ZShXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+
KCk+JiYgZnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0
b3JlOjpkb0RlbGV0ZShGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+Pigp
PiYmIGZ1bmN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6ZGVs
ZXRlRnVuY3Rpb24iKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExv
Y2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAgLTYw
Myw3ICs2MDMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
Ojpkb0NvdW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZwogICAgIHJldHVybiBtX3RyYW5z
YWN0aW9uLnJlcXVlc3RDb3VudCgqdGhpcywgcmFuZ2UpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0dldEFsbChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+
PigpPiYmIGZ1bmN0aW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RT
dG9yZTo6ZG9HZXRBbGwoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4
Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGwiKTsKICAgICBBU1NFUlQoY2FuQ3Vy
cmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkKCkpKTsKQEAgLTY0MCw3ICs2NDAsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoSlNHbG9iYWxPYmplY3QmIGV4ZWNTdGF0
ZSwgSgogICAgIH0pOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVj
dFN0b3JlOjpkb0dldEFsbEtleXMoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6
RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikK
K0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvR2V0QWxsS2V5
cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgRnVuY3Rpb248RXhjZXB0aW9uT3I8UmVm
UHRyPElEQktleVJhbmdlPj4oKT4mJiBmdW5jdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVh
ZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCmluZGV4IGQ2NTQ3ZjdmM2JiYTE2ODZmOWZkNzM1NjZhNTk4MzgxYjIwMDNmMmQu
LjM2YWIzODQ1M2I2YTViNmZhNTYzYjhkNzc3NjUzNzRmNjU3MDc1NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtMTE2LDEx
ICsxMTYsMTEgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIElubGluZUtleUNoZWNrIHsgUGVy
Zm9ybSwgRG9Ob3RQZXJmb3JtIH07CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBw
dXRPckFkZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8SURCS2V5
PiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIElubGluZUtleUNoZWNrLCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmID0gbnVsbHB0cik7CiAgICAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBkb0NvdW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9EZWxldGUoV1RGOjpGdW5jdGlvbjxFeGNl
cHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7Ci0gICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBkb09wZW5DdXJzb3IoSURCQ3Vyc29yRGlyZWN0aW9uLCBXVEY6OkZ1bmN0
aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+JiYpOwotICAgIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9PcGVuS2V5Q3Vyc29yKElEQkN1cnNvckRpcmVjdGlvbiwg
V1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiYmKTsKLSAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5n
ZT4+KCk+ICYmKTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5
cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25P
cjxSZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBkb0RlbGV0ZShGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+
PigpPiAmJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb09wZW5DdXJzb3Io
SURCQ3Vyc29yRGlyZWN0aW9uLCBGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFu
Z2U+PigpPiYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvT3BlbktleUN1
cnNvcihJREJDdXJzb3JEaXJlY3Rpb24sIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJL
ZXlSYW5nZT4+KCk+JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRB
bGwoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJl
ZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGRvR2V0QWxsS2V5cyhzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgRnVuY3Rpb248
RXhjZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwogCiAgICAgLy8gQWN0aXZl
RE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjNmZmE2MWNjMzY2
YmIzNzMzNjFkNjIzMjRkYmM3NTAwYTI1ZWVhYy4uMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIz
MWE2MTM2NGMwOTg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEw
NSwxMyArMTA1LDEzIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgdjFSZWNvcmRzVGFibGVTY2hlbWEo
Y29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYxUmVjb3Jk
c1RhYmxlU2NoZW1hKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJpbmc+
IHYxUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYxUmVjb3Jkc1RhYmxlU2NoZW1hKCJSZWNvcmRz
IikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHYxUmVjb3Jkc1RhYmxlU2No
ZW1hU3RyaW5nKHYxUmVjb3Jkc1RhYmxlU2NoZW1hKCJSZWNvcmRzIikpOwogICAgIHJldHVybiB2
MVJlY29yZHNUYWJsZVNjaGVtYVN0cmluZzsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyYgdjFS
ZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxXVEY6OlN0cmluZz4gdjFSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcodjFSZWNvcmRzVGFibGVT
Y2hlbWEoIlwiUmVjb3Jkc1wiIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IHYxUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYxUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJlY29y
ZHNcIiIpKTsKICAgICByZXR1cm4gdjFSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7CiB9CiAKQEAg
LTEyMiwxMyArMTIyLDEzIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgdjJSZWNvcmRzVGFibGVTY2hl
bWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYyUmVj
b3Jkc1RhYmxlU2NoZW1hKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpTdHJp
bmc+IHYyUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYyUmVjb3Jkc1RhYmxlU2NoZW1hKCJSZWNv
cmRzIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHYyUmVjb3Jkc1RhYmxl
U2NoZW1hU3RyaW5nKHYyUmVjb3Jkc1RhYmxlU2NoZW1hKCJSZWNvcmRzIikpOwogICAgIHJldHVy
biB2MlJlY29yZHNUYWJsZVNjaGVtYVN0cmluZzsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyYg
djJSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxXVEY6OlN0cmluZz4gdjJSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcodjJSZWNvcmRzVGFi
bGVTY2hlbWEoIlwiUmVjb3Jkc1wiIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IHYyUmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYyUmVjb3Jkc1RhYmxlU2NoZW1hKCJcIlJl
Y29yZHNcIiIpKTsKICAgICByZXR1cm4gdjJSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7CiB9CiAK
QEAgLTE1NCwxMyArMTU0LDEzIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgdjFJbmRleFJlY29yZHNU
YWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIAogc3RhdGljIGNvbnN0IFN0cmlu
ZyYgdjFJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFdURjo6U3RyaW5nPiB2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYxSW5kZXhS
ZWNvcmRzVGFibGVTY2hlbWEoIkluZGV4UmVjb3JkcyIpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiB2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYxSW5kZXhSZWNv
cmRzVGFibGVTY2hlbWEoIkluZGV4UmVjb3JkcyIpKTsKICAgICByZXR1cm4gdjFJbmRleFJlY29y
ZHNUYWJsZVNjaGVtYVN0cmluZzsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyYgdjFJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFdURjo6U3RyaW5nPiB2MUluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nKHYxSW5kZXhSZWNv
cmRzVGFibGVTY2hlbWEoIlwiSW5kZXhSZWNvcmRzXCIiKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gdjFJbmRleFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MUluZGV4UmVj
b3Jkc1RhYmxlU2NoZW1hKCJcIkluZGV4UmVjb3Jkc1wiIikpOwogICAgIHJldHVybiB2MUluZGV4
UmVjb3Jkc1RhYmxlU2NoZW1hU3RyaW5nOwogfQogCkBAIC0xNzEsMTMgKzE3MSwxMyBAQCBzdGF0
aWMgY29uc3QgU3RyaW5nIHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0
YWJsZU5hbWUpCiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYySW5kZXhSZWNvcmRzVGFibGVTY2hl
bWEoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gdjJJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYVN0cmluZyh2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJbmRleFJl
Y29yZHMiKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdjJJbmRleFJlY29y
ZHNUYWJsZVNjaGVtYVN0cmluZyh2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJJbmRleFJlY29y
ZHMiKSk7CiAgICAgcmV0dXJuIHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7CiB9CiAK
IHN0YXRpYyBjb25zdCBTdHJpbmcmIHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFBbHRlcm5hdGUo
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmluZz4gdjJJbmRleFJlY29y
ZHNUYWJsZVNjaGVtYVN0cmluZyh2MkluZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCJcIkluZGV4UmVj
b3Jkc1wiIikpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHYySW5kZXhSZWNv
cmRzVGFibGVTY2hlbWFTdHJpbmcodjJJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiXCJJbmRleFJl
Y29yZHNcIiIpKTsKICAgICByZXR1cm4gdjJJbmRleFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggNTc4MjViZDNlOWRiM2IzMDkyOTRi
MGJjZjdjNWM0OWMwY2RkY2MyNS4uMmIxZWFkYjllYTVjNDY0ZDAyNzVlZDIyM2Y1MDAzYjdiZWYx
NTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC03MjMsNyArNzIzLDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXkKICAgICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNl
OwogICAgIHVpbnQ2NF90IGtleU51bWJlcjsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciA9IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpOwotICAgIGF1dG8gZ2VuZXJh
dGVkS2V5UmVzZXR0ZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCAma2V5TnVtYmVyLCAmdXNlZEtleUlzR2Vu
ZXJhdGVkXSgpIHsKKyAgICBhdXRvIGdlbmVyYXRlZEtleVJlc2V0dGVyID0gbWFrZVNjb3BlRXhp
dChbdGhpcywgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsICZr
ZXlOdW1iZXIsICZ1c2VkS2V5SXNHZW5lcmF0ZWRdKCkgewogICAgICAgICBpZiAodXNlZEtleUlz
R2VuZXJhdGVkKQogICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnJldmVydEdlbmVyYXRlZEtl
eU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5
TnVtYmVyKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCmluZGV4IGZhZThlMzMwYzViYWRiZjYxMTg4MjQ4YjVh
OGQ0YmRiOWQ1NDhkYzAuLjM5Y2NjMTRlMjFiOGY3YWE2NjgyMzk1ZmZjMTBmMmNjODBkYTZlZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogbG9nQ2xhc3NO
YW1lKCkKIHN0YXRpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlIHBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vzc2lvbkFjdGlvbihNZWRpYVNlc3Npb25BY3Rp
b24gYWN0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCBhdXRvIGNvbW1hbmRNYXAgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10gewotICAgICAgICB1c2luZyBBY3Rpb25Ub0NvbW1hbmRNYXAgPSBIYXNo
TWFwPE1lZGlhU2Vzc2lvbkFjdGlvbiwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSwgV1RGOjpJbnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ry
b25nRW51bUhhc2hUcmFpdHM8TWVkaWFTZXNzaW9uQWN0aW9uPj47CisgICAgICAgIHVzaW5nIEFj
dGlvblRvQ29tbWFuZE1hcCA9IEhhc2hNYXA8TWVkaWFTZXNzaW9uQWN0aW9uLCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBJbnRIYXNoPE1lZGlhU2Vzc2lv
bkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWVkaWFTZXNzaW9uQWN0aW9uPj47
CiAKICAgICAgICAgcmV0dXJuIEFjdGlvblRvQ29tbWFuZE1hcCB7CiAgICAgICAgICAgICB7IE1l
ZGlhU2Vzc2lvbkFjdGlvbjo6UGxheSwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5k
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vz
c2lvbi5oCmluZGV4IGExZGU3Y2QzMTUwMDBlMzA4YTRmNDg4NTQxODAxMjFhYTQxZmViYTMuLmZi
MWIyMTBkMDhiZmYzNjBjMDQwZGFmOGU0MDVkNzYyOWNmNTBiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCkBAIC0xMzgsNyAr
MTM4LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4g
bV9wb3NpdGlvblN0YXRlOwogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2xhc3RSZXBvcnRl
ZFBvc2l0aW9uOwogICAgIE1vbm90b25pY1RpbWUgbV90aW1lQXRMYXN0UG9zaXRpb25VcGRhdGU7
Ci0gICAgSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFJlZlB0cjxNZWRpYVNlc3Npb25BY3Rp
b25IYW5kbGVyPiwgV1RGOjpJbnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ryb25n
RW51bUhhc2hUcmFpdHM8TWVkaWFTZXNzaW9uQWN0aW9uPj4gbV9hY3Rpb25IYW5kbGVyczsKKyAg
ICBIYXNoTWFwPE1lZGlhU2Vzc2lvbkFjdGlvbiwgUmVmUHRyPE1lZGlhU2Vzc2lvbkFjdGlvbkhh
bmRsZXI+LCBJbnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8TWVkaWFTZXNzaW9uQWN0aW9uPj4gbV9hY3Rpb25IYW5kbGVyczsKICAgICBSZWZQdHI8
Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKaW5kZXggMzdjOTlkN2U4
ZjcwMDY3YWRiMWM2MTcwOGE2OTBlOWMxZWU2NzIyYy4uMDY3MWVmOTkwZWNkZDQ5NDAxMWFhZjkw
ZWI4MzhiM2MxZDYxYzk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRl
LmgKQEAgLTcxLDE5ICs3MSwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBsYXliYWNr
U3RhdGVDaGFuZ2VkKE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGUpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdHJhY2tJZGVudGlmaWVyQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2
b2lkIHNldExvZ2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lk
IHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7CiAgICAgdmlydHVhbCB2b2lk
IHNldENsaWVudChXZWFrUHRyPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yQ2xpZW50PiBjbGllbnQp
IHsgbV9jbGllbnQgPSBjbGllbnQ7fQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlKCkgPSBkZWZhdWx0OwogCi0gICAgY29uc3QgV1RGOjpM
b2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAg
Y29uc3QgTG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsg
fQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lk
ZW50aWZpZXI7IH0KIAogICAgIFdlYWtQdHI8TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JDbGllbnQ+
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8Y29uc3QgTG9nZ2Vy
PiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAgICAgV2Vha1B0
cjxNZWRpYVNlc3Npb25Db29yZGluYXRvckNsaWVudD4gbV9jbGllbnQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5j
cHAKaW5kZXggMTMxNzExOWMzYTc2N2JjNmZkOTM3ODUyMGMzODFmY2M3MWI3NWUzOS4uN2JjMjFl
NTZhZWNjNjUxYWQ4ODcwZTE0ZjViN2M1NzViNDFhMThiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0z
NzYsNyArMzc2LDcgQEAgc3RhdGljIE1lZGlhQ29uc3RyYWludHMgY3JlYXRlTWVkaWFDb25zdHJh
aW50cyhjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhVHJhY2tDb24KIAogdm9pZCBNZWRpYVN0cmVh
bVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFja0Nv
bnN0cmFpbnRzPiYgY29uc3RyYWludHMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCiB7Ci0gICAgbV9wcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPj4oV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9wcm9taXNlID0gbWFrZVVuaXF1ZTxE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+KFdURk1vdmUocHJvbWlzZSkpOwogCiAgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Y29uc3RyYWludHNdKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9wcm9t
aXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyLmNwcAppbmRleCA3ZWVkNTdjOTdmNGUyMWEzNTRlY2ZjMGZiNDYxZmFkNDljYmRi
YTE2Li5hNjc5YjFlMmNlMzI1Mzg4NzdlYzZjMzE3NDJjMzI1ZmRjNDFiNzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNw
cApAQCAtNDIsNyArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0jZGVmaW5lIExPR0lERU5USUZJRVJfUkVDRUlWRVIgV1RGOjpMb2dnZXI6
OkxvZ1NpdGVJZGVudGlmaWVyKGxvZ0NsYXNzTmFtZSgpLCBfX2Z1bmNfXywgbV9jb25uZWN0aW9u
LT5sb2dJZGVudGlmaWVyKCkpCisjZGVmaW5lIExPR0lERU5USUZJRVJfUkVDRUlWRVIgTG9nZ2Vy
OjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFzc05hbWUoKSwgX19mdW5jX18sIG1fY29ubmVjdGlv
bi0+bG9nSWRlbnRpZmllcigpKQogI2Vsc2UKICNkZWZpbmUgTE9HSURFTlRJRklFUl9SRUNFSVZF
UgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNlbmRlci5jcHAKaW5kZXggYjAwOWM5Y2YzZGVmMjRjMmE5MmM1YmU0ODE3YzcwMmNhNzNh
MzcyMy4uOTU1MDQ0OWQ3Y2VmZThmZWQ0ZTMzOTA0Zjc0MWEwYzQxMWNkMjA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApA
QCAtNDUsNyArNDUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0jZGVmaW5lIExPR0lERU5USUZJRVJfU0VOREVSIFdURjo6TG9nZ2VyOjpMb2dT
aXRlSWRlbnRpZmllcihsb2dDbGFzc05hbWUoKSwgX19mdW5jX18sIG1fY29ubmVjdGlvbi0+bG9n
SWRlbnRpZmllcigpKQorI2RlZmluZSBMT0dJREVOVElGSUVSX1NFTkRFUiBMb2dnZXI6OkxvZ1Np
dGVJZGVudGlmaWVyKGxvZ0NsYXNzTmFtZSgpLCBfX2Z1bmNfXywgbV9jb25uZWN0aW9uLT5sb2dJ
ZGVudGlmaWVyKCkpCiAjZWxzZQogI2RlZmluZSBMT0dJREVOVElGSUVSX1NFTkRFUgogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
bGllbnQuaAppbmRleCBjYjliN2VkYmUyYWQxNTc4OWMxMzEwY2U4ZmIyYjRjZDEyNThkNGY0Li5m
NTY5NTk3MzI5NDBkNjQyNDAyZDNkNDFiZmMzNGZmYWU4YWZlYzY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgZW51bSBEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2Vu
VHlwZSB7IH07CiAgICAgdXNpbmcgRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiA9IE9iamVjdElk
ZW50aWZpZXI8RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlblR5cGU+OwotICAgIHZpcnR1YWwgRGV2
aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBhZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgRGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tl
biBhZGREZXZpY2VDaGFuZ2VPYnNlcnZlcihGdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRGV2aWNlQ2hhbmdlT2JzZXJ2
ZXJUb2tlbikgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCmluZGV4IDc1MWVjMWVj
ZWJiOGZiYzIxMGVkN2MzMDU2NTgzNDQ3NWRkMmU5Y2YuLjQzY2M4M2FjYjVjODJjNWVhNGRiYWZi
ZDZlMWY5NTE1NjViOWM5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZW51bWVyYXRlTWVkaWFEZXZpY2VzKERvY3VtZW50JiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8Q2FwdHVyZURldmljZT4mLCBjb25zdCBTdHJp
bmcmKT4mJik7CiAKLSAgICBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9r
ZW4gYWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAg
IFVzZXJNZWRpYUNsaWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBhZGREZXZpY2VDaGFu
Z2VPYnNlcnZlcihGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlRGV2aWNlQ2hh
bmdlT2JzZXJ2ZXIoVXNlck1lZGlhQ2xpZW50OjpEZXZpY2VDaGFuZ2VPYnNlcnZlclRva2VuKTsK
IAogICAgIHZvaWQgbG9nR2V0VXNlck1lZGlhRGVuaWFsKERvY3VtZW50Jik7CkBAIC03OSw3ICs3
OSw3IEBAIGlubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OmVudW1lcmF0ZU1lZGlhRGV2
aWNlcyhEb2N1bWVudCYgZG9jdW1lbnQsIENvbXBsCiB9CiAKIAotaW5saW5lIFVzZXJNZWRpYUNs
aWVudDo6RGV2aWNlQ2hhbmdlT2JzZXJ2ZXJUb2tlbiBVc2VyTWVkaWFDb250cm9sbGVyOjphZGRE
ZXZpY2VDaGFuZ2VPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBvYnNlcnZlcikKK2lu
bGluZSBVc2VyTWVkaWFDbGllbnQ6OkRldmljZUNoYW5nZU9ic2VydmVyVG9rZW4gVXNlck1lZGlh
Q29udHJvbGxlcjo6YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIoRnVuY3Rpb248dm9pZCgpPiYmIG9i
c2VydmVyKQogewogICAgIHJldHVybiBtX2NsaWVudC0+YWRkRGV2aWNlQ2hhbmdlT2JzZXJ2ZXIo
V1RGTW92ZShvYnNlcnZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMzk0NzJiZTJmMDhhYzZhMDZhMmE0ZmVl
OTk4NDU0ZmNlNmJjOTUyYi4uMzZjOGI1MGQ0MDE1NjcxYzIzN2UzMDZkOWMzMjNmMDlhZTE2ZDk4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgc3RhdGljIGlubGluZSBMaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQmIGJhY2tlbmRGcm9tUlRQVHJhbnNjZWl2ZXIoUlRDUnRwVHIKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kJj4oKnRy
YW5zY2VpdmVyLmJhY2tlbmQoKSk7CiB9CiAKLVJUQ1J0cFRyYW5zY2VpdmVyKiBMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmV4aXN0aW5nVHJhbnNjZWl2ZXIoV1RGOjpGdW5jdGlvbjxi
b29sKExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZCYpPiYmIG1hdGNoaW5nRnVuY3Rpb24p
CitSVENSdHBUcmFuc2NlaXZlciogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpleGlz
dGluZ1RyYW5zY2VpdmVyKEZ1bmN0aW9uPGJvb2woTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNr
ZW5kJik+JiYgbWF0Y2hpbmdGdW5jdGlvbikKIHsKICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVy
IDogbV9wZWVyQ29ubmVjdGlvbi5jdXJyZW50VHJhbnNjZWl2ZXJzKCkpIHsKICAgICAgICAgaWYg
KG1hdGNoaW5nRnVuY3Rpb24oYmFja2VuZEZyb21SVFBUcmFuc2NlaXZlcigqdHJhbnNjZWl2ZXIp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgKaW5kZXggMzY1NzJmMGVkOTgwZjc0ZGEwMTcxNDU4YTAxNWE5OGE5ZDVjNzMyNy4uYjRkMGU0
YTM5YWFkOWM2N2E4OGU5ZTJkYjcyZDM5YTdiYWU1ZWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTkwLDcgKzkwLDcgQEAg
cHJpdmF0ZToKICAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFu
c2NlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJ
bml0JikgZmluYWw7CiAgICAgdm9pZCBzZXRTZW5kZXJTb3VyY2VGcm9tVHJhY2soTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZCYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAotICAgIFJUQ1J0cFRyYW5z
Y2VpdmVyKiBleGlzdGluZ1RyYW5zY2VpdmVyKFdURjo6RnVuY3Rpb248Ym9vbChMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQmKT4mJik7CisgICAgUlRDUnRwVHJhbnNjZWl2ZXIqIGV4aXN0
aW5nVHJhbnNjZWl2ZXIoRnVuY3Rpb248Ym9vbChMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQmKT4mJik7CiAgICAgUlRDUnRwVHJhbnNjZWl2ZXImIG5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0
ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+JiYsIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUpOwogCiAgICAgdm9pZCBjb2xsZWN0VHJhbnNjZWl2ZXJzKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRIYW5kbGVyLmgKaW5kZXggOTU1ZTM5YTcyMjg1MmMyMjBmMmJlOTQ2OWRkYjUxN2M2MGY4
OWRkNy4uN2Y4NmViZDBmMjcwZmE2MzM2YzAyZDg3ZDVmNDRjODc1MjY2OWE3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRs
ZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2
b2lkPiBjb252ZXJ0RGF0YShKU0M6OkpTVmFsdWUpID0gMDsKICAgICB2aXJ0dWFsIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNob3coRG9jdW1lbnQmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhpZGUoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNhbk1ha2VQYXltZW50KERvY3VtZW50JiwgV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNhbk1ha2VQYXltZW50KERvY3VtZW50JiwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgPSAwOwogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gZGV0YWls
c1VwZGF0ZWQoUGF5bWVudFJlcXVlc3Q6OlVwZGF0ZVJlYXNvbiwgU3RyaW5nJiYgZXJyb3IsIEFk
ZHJlc3NFcnJvcnMmJiwgUGF5ZXJFcnJvckZpZWxkcyYmLCBKU0M6OkpTT2JqZWN0KiBwYXltZW50
TWV0aG9kRXJyb3JzKSA9IDA7CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBtZXJjaGFu
dFZhbGlkYXRpb25Db21wbGV0ZWQoSlNDOjpKU1ZhbHVlJiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY29tcGxldGUoc3RkOjpvcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5jcHAKaW5kZXggZTQ0YjMxYzFlNGIwNzhiMDMzMThjODIxOTZiM2VlZjg3MDMxOGVkNS4u
MDYzY2ZmN2UwOTA3YjVlMzdjNGZmMjQxNDA0ZDhkM2I5MzgxMmJkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5j
cHAKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzaG93KERvY3VtZW50
JiBkb2N1bWVudCwgUmVmUHRyPERPTVByb21pc2U+JiYgZGV0YWlsc1Byb21pcwogCiAgICAgbV9z
dGF0ZSA9IFN0YXRlOjpJbnRlcmFjdGl2ZTsKICAgICBBU1NFUlQoIW1fc2hvd1Byb21pc2UpOwot
ICAgIG1fc2hvd1Byb21pc2UgPSBXVEY6Om1ha2VVbmlxdWU8U2hvd1Byb21pc2U+KFdURk1vdmUo
cHJvbWlzZSkpOworICAgIG1fc2hvd1Byb21pc2UgPSBtYWtlVW5pcXVlPFNob3dQcm9taXNlPihX
VEZNb3ZlKHByb21pc2UpKTsKIAogICAgIFJlZlB0cjxQYXltZW50SGFuZGxlcj4gc2VsZWN0ZWRQ
YXltZW50SGFuZGxlcjsKICAgICBmb3IgKGF1dG8mIHBheW1lbnRNZXRob2QgOiBtX3NlcmlhbGl6
ZWRNZXRob2REYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXNwb25zZS5jcHAKaW5kZXggMTYwMGE5MjYyNmI0OTk1NDRl
OTRiMWYzZTQyOTAyMDRkN2M5OGU0OC4uYjI3MTg4NjA2YWNkNzNmYTZhOGU5YzlkY2E2MGU4NTE0
ZjQxZTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudFJlc3BvbnNlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgUGF5
bWVudFJlc3BvbnNlOjpyZXRyeShQYXltZW50VmFsaWRhdGlvbkVycm9ycyYmIGVycm9ycywgRE9N
UHJvbWlzZURlZmVycmVkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3JldHJ5UHJv
bWlzZSA9IFdURjo6bWFrZVVuaXF1ZTxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+KFdURk1vdmUo
cHJvbWlzZSkpOworICAgIG1fcmV0cnlQcm9taXNlID0gbWFrZVVuaXF1ZTxET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4+KFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIFBheW1lbnRSZXNwb25z
ZTo6YWJvcnRXaXRoRXhjZXB0aW9uKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hTdWJzY3JpcHRpb24uY3BwCmluZGV4
IDU5NDNjODNkMmVlMmEyMmM4ZGMwNWJjNTczNTliMjk4ZWFkYzQ0YzQuLmUwNTA0NGRkMjdjOThh
MTk5MzkwMjliYjM5MzI3MjgwM2NjZWUyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uLmNwcApAQCAtOTYsNyArOTYsNyBAQCBQ
dXNoU3Vic2NyaXB0aW9uSlNPTiBQdXNoU3Vic2NyaXB0aW9uOjp0b0pTT04oKSBjb25zdAogICAg
IHJldHVybiBQdXNoU3Vic2NyaXB0aW9uSlNPTiB7CiAgICAgICAgIG1fZW5kcG9pbnQsCiAgICAg
ICAgIG1fZXhwaXJhdGlvblRpbWUsCi0gICAgICAgIFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxT
dHJpbmcsIFN0cmluZz4+IHsKKyAgICAgICAgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0
cmluZz4+IHsKICAgICAgICAgICAgIHsgInAyNTZkaCJfcywgYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcobV9jbGllbnRFQ0RIUHVibGljS2V5KSB9LAogICAgICAgICAgICAgeyAiYXV0aCJfcywgYmFz
ZTY0VVJMRW5jb2RlVG9TdHJpbmcobV9zaGFyZWRBdXRoZW50aWNhdGlvblNlY3JldCkgfQogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hT
dWJzY3JpcHRpb25KU09OLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hT
dWJzY3JpcHRpb25KU09OLmgKaW5kZXggZmYwZjIyMDZiZmJkNjdhZDI1ZGZkMjgzZjk2YzkxNjNk
NTMwNTllMi4uOWJlZjJjMzYyYzBlODYwN2U1YmFhNmEwNjM4NjNkNWVjYjAwNzRiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSlNP
Ti5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlv
bkpTT04uaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUHVz
aFN1YnNjcmlwdGlvbkpTT04gewogICAgIFN0cmluZyBlbmRwb2ludDsKICAgICBzdGQ6Om9wdGlv
bmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0aW9uVGltZTsKLSAgICBWZWN0b3I8V1RGOjpLZXlW
YWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBrZXlzOworICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBTdHJpbmc+PiBrZXlzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25D
YXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2UuaAppbmRleCA4NDQwNjBkYWRmYTNmNTk0MDQzOTJiNGIyNzc5
Y2NkNWIzZjcwOWMxLi5jYTkwM2IxMmI3ZjIyMTkzNWY1ZGZhMTk4ZGJiMWE4YzRjNzlkMzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bkNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtdXRlKCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIHVzaW5nIERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV1RGOjpNZWRp
YVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBzaXplX3QpPjsKKyAgICB1c2luZyBEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk+OwogICAgIHVzaW5nIFN0YXRlVXBkYXRlQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+OwogICAg
IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLCBEYXRhQ2FsbGJhY2smJiwgU3RhdGVVcGRhdGVDYWxsYmFjayYm
LCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4gZmluZENhcHR1cmVEZXZpY2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaAppbmRleCBiMTQwOGI2NWUxMDhl
NjJmYjFmNTE4N2QxZWNkMWZhNDBmZmZmOThkLi41ODRiNzFkZDlmMDY4ODU4MTA5YjE4MDMzNzg1
NTRiNmFjYWNkOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oCkBAIC01
MSw3ICs1MSw3IEBAIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwKICAg
ICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb1NhbXBsZU9ic2VydmVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBEYXRhQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1B
dWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KT47CisgICAg
dXNpbmcgRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXpl
X3QpPjsKICAgICB1c2luZyBTdGF0ZVVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25z
dCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPjsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1
cmVTb3VyY2VJbXBsKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIs
IERhdGFDYWxsYmFjayYmLCBTdGF0ZVVwZGF0ZUNhbGxiYWNrJiYsIFJlZjxSZWFsdGltZU1lZGlh
U291cmNlPiYmKTsKICAgICB+U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNvdXJjZS5jcHAKaW5kZXggODg5YmFiYjRjY2M5NmVjZTJhZmZhMzI4N2YwYmI1NzU0ZTUxMWRj
ZS4uZmFhNDZjMDNiYjI3ZTc0MWI0ZDU0YzE0MmIxZGM4OGNjM2NlNjFjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2Uu
Y3BwCkBAIC0zNCw3ICszNCw3IEBAIFJlYWRhYmxlU3RyZWFtU291cmNlOjp+UmVhZGFibGVTdHJl
YW1Tb3VyY2UoKSA9IGRlZmF1bHQ7CiB2b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydChS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYgY29udHJvbGxlciwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJvbWlzZSk7Ci0gICAg
bV9wcm9taXNlID0gV1RGOjptYWtlVW5pcXVlPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4oV1RG
TW92ZShwcm9taXNlKSk7CisgICAgbV9wcm9taXNlID0gbWFrZVVuaXF1ZTxET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4+KFdURk1vdmUocHJvbWlzZSkpOwogICAgIG1fY29udHJvbGxlciA9IFdURk1v
dmUoY29udHJvbGxlcik7CiAKICAgICBzZXRBY3RpdmUoKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9p
ZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6cHVsbChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKQogICAgIEFTU0VSVCghbV9wcm9taXNlKTsKICAgICBBU1NFUlQobV9jb250cm9sbGVy
KTsKIAotICAgIG1fcHJvbWlzZSA9IFdURjo6bWFrZVVuaXF1ZTxET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4+KFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fcHJvbWlzZSA9IG1ha2VVbmlxdWU8RE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+PihXVEZNb3ZlKHByb21pc2UpKTsKIAogICAgIHNldEFjdGl2
ZSgpOwogICAgIGRvUHVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKaW5kZXggZTNjMWM4NjgxZWY0YThhMWFjMGQxNjRh
ZTA2Nzc2YTM0NjY2ODg4My4uOGNlZWIzMGQ5MGVlNmI0ODMzYjQyZTBjYzQ0NWQ2NWZkYmM3ZDkz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE5vZGUuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgQXVkaW9Xb3JrbGV0Tm9kZTo6fkF1ZGlv
V29ya2xldE5vZGUoKQogICAgIHVuaW5pdGlhbGl6ZSgpOwogfQogCi12b2lkIEF1ZGlvV29ya2xl
dE5vZGU6OmluaXRpYWxpemVBdWRpb1BhcmFtZXRlcnMoY29uc3QgVmVjdG9yPEF1ZGlvUGFyYW1E
ZXNjcmlwdG9yPiYgZGVzY3JpcHRvcnMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdURjo6
S2V5VmFsdWVQYWlyPFN0cmluZywgZG91YmxlPj4+JiBwYXJhbVZhbHVlcykKK3ZvaWQgQXVkaW9X
b3JrbGV0Tm9kZTo6aW5pdGlhbGl6ZUF1ZGlvUGFyYW1ldGVycyhjb25zdCBWZWN0b3I8QXVkaW9Q
YXJhbURlc2NyaXB0b3I+JiBkZXNjcmlwdG9ycywgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8
S2V5VmFsdWVQYWlyPFN0cmluZywgZG91YmxlPj4+JiBwYXJhbVZhbHVlcykKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhcmFtZXRlcnMtPm1hcCgpLmlzRW1w
dHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0Tm9kZS5oCmluZGV4IGM1NGZjOGI3NGU3MzFmNmQ1ZjQ4ODU5YTQ1NzhkZjhjYThkMjU1Zjcu
LmQ1YjVhNjMzMWZlMWEyYjdmOTM2YWNmOWZiZjBkM2U1YjI2YmMzNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5oCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIHsgcmV0dXJuIG1fcG9y
dC5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRQcm9jZXNzb3IoUmVmUHRyPEF1ZGlvV29ya2xldFBy
b2Nlc3Nvcj4mJik7Ci0gICAgdm9pZCBpbml0aWFsaXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZl
Y3RvcjxBdWRpb1BhcmFtRGVzY3JpcHRvcj4mLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxX
VEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIGRvdWJsZT4+PiYgcGFyYW1WYWx1ZXMpOworICAgIHZv
aWQgaW5pdGlhbGl6ZUF1ZGlvUGFyYW1ldGVycyhjb25zdCBWZWN0b3I8QXVkaW9QYXJhbURlc2Ny
aXB0b3I+JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywg
ZG91YmxlPj4+JiBwYXJhbVZhbHVlcyk7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0Tm9k
ZShCYXNlQXVkaW9Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBBdWRpb1dvcmtsZXROb2Rl
T3B0aW9ucyYmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlT3B0aW9ucy5oCmluZGV4IDY2
ZTAwZmU2MGQ4NDgxNmFkM2QxZmU0OTcyYTcxYmUyZjU2MDU1ODAuLmIyNjU3Y2QzODI5MDZlNTVk
ZjVkMzAxMjMzODIxYzRlNTMzOWQ5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGVPcHRpb25zLmgKQEAgLTQyLDcgKzQy
LDcgQEAgc3RydWN0IEF1ZGlvV29ya2xldE5vZGVPcHRpb25zIDogQXVkaW9Ob2RlT3B0aW9ucyB7
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMgPSAxOwogICAgIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0cyA9IDE7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dW5zaWduZWQ+PiBvdXRwdXRD
aGFubmVsQ291bnQ7Ci0gICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBkb3VibGU+Pj4gcGFyYW1ldGVyRGF0YTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBkb3VibGU+Pj4gcGFyYW1ldGVyRGF0YTsKICAgICBKU0M6
OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBwcm9jZXNzb3JPcHRpb25zOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKaW5k
ZXggMWJiNDk1NDFjYjI2NDEzNTM4ODg2Mzg1YWVkZTI2MzUyNjQwNzY2Yy4uZjZlNzE1NTZjZTBj
OTRmYWQ0ZDI2OTc1MzI2ODY1ODIwNDEzNTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKIAogICAgIC8vIFdvcmtlck9yV29ya2xl
dFRocmVhZC4KLSAgICBSZWY8V1RGOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpIGZpbmFsOworICAg
IFJlZjxUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpIGZpbmFsOwogICAgIFJlZlB0cjxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlR2xvYmFsU2NvcGUoKSBmaW5hbDsKIAogICAgIEF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtX21lc3NhZ2luZ1Byb3h5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2Eu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291
cmNlQ29jb2EuY3BwCmluZGV4IGYxYzJhZjMzYzVmYTJhYjZmYzUxNjY5OTgzZmE3MGU3Njk2NDAy
ODAuLmJjODQ0ZmZiNjY4YjkzYjNjZjc2NDliMzRiZThjNzg4MDJjNzU2ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNv
Y29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VDb2NvYS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMmIGJ1cywgc2l6ZV90IG51bWJlck9mRnJh
bWVzKQogICAgICAgICAvLyBIZWFwIGFsbG9jYXRpb25zIGFyZSBmb3JiaWRkZW4gb24gdGhlIGF1
ZGlvIHRocmVhZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBzbyB3ZSBuZWVkIHRvCiAgICAgICAg
IC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZvbGxvd2luZyBhbGxvY2F0aW9uKHMpLgogICAgICAg
ICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVN
YWxsb2NSZXN0cmljdGlvbnM7Ci0gICAgICAgIG1fYXVkaW9CdWZmZXIgPSBtYWtlVW5pcXVlPFdl
YkF1ZGlvQnVmZmVyTGlzdD4oZGVzY3JpcHRpb24sIFdURjo6c2FmZUNhc3Q8dWludDMyX3Q+KG51
bWJlck9mRnJhbWVzKSk7CisgICAgICAgIG1fYXVkaW9CdWZmZXIgPSBtYWtlVW5pcXVlPFdlYkF1
ZGlvQnVmZmVyTGlzdD4oZGVzY3JpcHRpb24sIHNhZmVDYXN0PHVpbnQzMl90PihudW1iZXJPZkZy
YW1lcykpOwogICAgICAgICBhdWRpb0J1ZmZlciA9ICZkb3duY2FzdDxXZWJBdWRpb0J1ZmZlckxp
c3Q+KCptX2F1ZGlvQnVmZmVyKTsKICAgICB9IGVsc2UKICAgICAgICAgYXVkaW9CdWZmZXItPnNl
dFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCmluZGV4IGRlNTI0ZDJm
NGY0OTA4MTM4NmQxZWMzZjhlY2QyMmY3ZjZlZDhlMDMuLmIxZTU0M2RjMDM2YTg0MzNlNTM3YzFl
MzNmYmQ5NTRkOGQxNjIxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZv
aWQgT2ZmbGluZUF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJp
bmcpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOwogCi0gICAgYXV0byB1bmluaXRpYWxpemVPbkV4aXQgPSBXVEY6Om1ha2VTY29wZUV4
aXQoW3RoaXNdIHsKKyAgICBhdXRvIHVuaW5pdGlhbGl6ZU9uRXhpdCA9IG1ha2VTY29wZUV4aXQo
W3RoaXNdIHsKICAgICAgICAgdW5pbml0aWFsaXplKCk7CiAgICAgICAgIGNsZWFyKCk7CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvQ29udGV4dC5oCmluZGV4IDA2NWE0NTIzMDlmZTE1ZDE4MjYxMzVmN2UyYzM2Yzg2NTdkMTE2
YTUuLmJhNzY2ODYwOTAxMGZjNzY1YTViOTdiYTQwYmQ2NDJjMjA0Mjc2ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5o
CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICBVbmlxdWVSZWY8T2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlPiBtX2Rlc3RpbmF0aW9uTm9kZTsKICAgICBSZWZQdHI8RGVmZXJyZWRQ
cm9taXNlPiBtX3BlbmRpbmdSZW5kZXJpbmdQcm9taXNlOwotICAgIEhhc2hNYXA8dW5zaWduZWQg
LyogZnJhbWUgKi8sIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+LCBXVEY6OkludEhhc2g8dW5zaWdu
ZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gbV9zdXNw
ZW5kUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1bnNpZ25lZCAvKiBmcmFtZSAqLywgUmVmUHRyPERl
ZmVycmVkUHJvbWlzZT4sIEludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gbV9zdXNwZW5kUmVxdWVzdHM7CiAgICAgdW5zaWduZWQg
bV9sZW5ndGg7CiAgICAgYm9vbCBtX2RpZFN0YXJ0UmVuZGVyaW5nIHsgZmFsc2UgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNl
dFJvd0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1
bHRTZXRSb3dMaXN0LmNwcAppbmRleCA0MTg2NTkzZTI5ZGY2ZDkwOGU0ZTdjZmE3NzQ4NzE4MTk0
OGU2MzIwLi4xNDdhMWUyMDM2OTFmMGQ0MWIwYjAxMmJmMzAzNmM4NjU4YTYyNTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0
U2V0Um93TGlzdC5jcHAKQEAgLTQxLDEyICs0MSwxMiBAQCB1bnNpZ25lZCBTUUxSZXN1bHRTZXRS
b3dMaXN0OjpsZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBtX3Jlc3VsdC5zaXplKCkgLyBtX2Nv
bHVtbnMuc2l6ZSgpOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBTUUxWYWx1ZT4+PiBTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAorRXhjZXB0aW9uT3I8VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFNRTFZh
bHVlPj4+IFNRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7
CiAgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW5kZXhTaXplRXJyb3IgfTsKIAotICAgIFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcs
IFNRTFZhbHVlPj4gcmVzdWx0OworICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTUUxW
YWx1ZT4+IHJlc3VsdDsKIAogICAgIHVuc2lnbmVkIG51bWJlck9mQ29sdW1ucyA9IG1fY29sdW1u
cy5zaXplKCk7CiAgICAgdW5zaWduZWQgdmFsdWVzSW5kZXggPSBpbmRleCAqIG51bWJlck9mQ29s
dW1uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
UmVzdWx0U2V0Um93TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmgKaW5kZXggMTRjNDQ0ODNhZmI4NzlhMjk5NTUxOWM2ZjYxMjBh
MzBkMmE4YTk0Yi4uYmZmNWZmNGUwZGM5Y2M4ZDU2ODY4MjJlNTc0YjhmZWU0YjFhMGFhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRS
b3dMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1
bHRTZXRSb3dMaXN0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUmVz
dWx0KGNvbnN0IFNRTFZhbHVlJiByZXN1bHQpIHsgbV9yZXN1bHQuYXBwZW5kKHJlc3VsdCk7IH0K
IAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFZlY3RvcjxX
VEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFNRTFZhbHVlPj4+IGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTUUxW
YWx1ZT4+PiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTUUxS
ZXN1bHRTZXRSb3dMaXN0KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggYWFlYjY2MTRmNjZjN2M5Y2Y1
NmI4NGFlYmVjZTlhNjBkMDgzNTg4OC4uMmJhNzIxMmEyNzEzOTFkMzMxNjUxYWQ2NWU2NjY1M2Zh
YWZkNDc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtODIxLDcgKzgyMSw3IEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6YWJvcnRPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgIH0KIH0KIAotdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Ym9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQobV9oYW5kbGUpOwogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKaW5kZXggY2E3MTljN2JlNmU1MTk2YjM5ZGVjYTBjNmRmNDEzODY5MDQ1Yzg0My4uYzkyNmI0
MWZhNGRhMjU5Y2IyNTdjMGM5NWQ4ZWQxYTI0NWY3NjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElmIHlvdSBhcmUgZ29pbmcgdG8gc2VuZCBhIGh5
YmktMTAgZnJhbWUsIHlvdSBuZWVkIHRvIHVzZSB0aGUgb3V0Z29pbmcgZnJhbWUgcXVldWUKICAg
ICAvLyBpbnN0ZWFkIG9mIGNhbGwgc2VuZEZyYW1lKCkgZGlyZWN0bHkuCi0gICAgdm9pZCBzZW5k
RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0
aW9uSGFuZGxlcik7CiAKICAgICBlbnVtIEJsb2JMb2FkZXJTdGF0dXMgewogICAgICAgICBCbG9i
TG9hZGVyTm90U3RhcnRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJIYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5k
LmNwcAppbmRleCBmMjE2MjMxMjFlZTJiNjQ5NzVhNTRmZjJiMGJhOWVlYmEyM2Q1MmEyLi5mNTNl
NDFiZmQyZWY1YWQ1OTk3MmIzNGVkN2E2ZjMzNTU5YzFjMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYlhSSGFuZDo6
SXRlcmF0b3I6Okl0ZXJhdG9yKFdlYlhSSGFuZCYgaGFuZCkKIHsKIH0KIAotc3RkOjpvcHRpb25h
bDxXVEY6OktleVZhbHVlUGFpcjxYUkhhbmRKb2ludCwgUmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+
PiBXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWly
PFhSSGFuZEpvaW50LCBSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4+IFdlYlhSSGFuZDo6SXRlcmF0
b3I6Om5leHQoKQogewogICAgIGlmIChtX2luZGV4ID4gbV9oYW5kLT5tX2pvaW50cy5zaXplKCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkhhbmQuaAppbmRleCA0YzkyYmYxOTM4NzQwZDYyMDRjY2I4OTNjZmFmNWEwOTk2YTkx
OTY0Li5kYmUxMTQzMjUzZDU3MDc5MWFmYzdiZDg2ODhjOTkyZGMzZmJiYWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEl0
ZXJhdG9yKFdlYlhSSGFuZCYpOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQ
YWlyPFhSSGFuZEpvaW50LCBSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4+IG5leHQoKTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpv
aW50U3BhY2U+Pj4gbmV4dCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmPFdlYlhSSGFu
ZD4gbV9oYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlQXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UklucHV0U291cmNlQXJyYXkuY3BwCmluZGV4IDU2MGQwM2FiN2ZiOWMzZWNhNWMxMTE4NmM0MTY0
ODlmYjk5MmMwMDQuLjEwZjYwODJhYmU0NGRmOTVmNTU1MGQyZjRkYjRlMjg1MjA0NzczZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZUFy
cmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3Vy
Y2VBcnJheS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2VBcnJh
eTo6aGFuZGxlQWRkZWRPclVwZGF0ZWRJbnB1dFNvdXJjZXMoZG91YmxlIHRpbWVzdGFtcCwgYwog
CiAgICAgZm9yIChhdXRvJiBpbnB1dFNvdXJjZSA6IGlucHV0U291cmNlcykgewogICAgICAgICBh
dXRvIGluZGV4ID0gbV9pbnB1dFNvdXJjZXMuZmluZE1hdGNoaW5nKFsmaW5wdXRTb3VyY2VdKGF1
dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPmhhbmRsZSgpID09IGlucHV0U291cmNlLmhhbmRsZTsg
fSk7Ci0gICAgICAgIGlmIChpbmRleCA9PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgIGlmIChp
bmRleCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gV2hlbiBuZXcgWFIgaW5wdXQgc291
cmNlcyBiZWNvbWUgYXZhaWxhYmxlIGZvciBYUlNlc3Npb24gc2Vzc2lvbiwgdGhlIHVzZXIgYWdl
bnQgTVVTVCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAgICAgICAgIC8vIDEuIElmIHNl
c3Npb24ncyBwcm9taXNlIHJlc29sdmVkIGZsYWcgaXMgbm90IHNldCwgYWJvcnQgdGhlc2Ugc3Rl
cHMuCiAgICAgICAgICAgICAvLyAyLiBMZXQgYWRkZWQgYmUgYSBuZXcgbGlzdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvSHlzdGVyZXNpc0FjdGl2aXR5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5oCmluZGV4IDU2MzYwMGVhOGU2ODRi
MmU2MGNkYTY0MzVjMWRlOWM2MzkxNDc2MjMuLjkyNDlhOWFmNzUyZTMwMTY1MTI4NDQzNDllZWUz
YjVkYTVjNDMxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvSHlzdGVyZXNp
c0FjdGl2aXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9IeXN0ZXJlc2lzQWN0aXZp
dHkuaApAQCAtMzksNyArMzksNyBAQCBlbnVtIGNsYXNzIEh5c3RlcmVzaXNTdGF0ZSB7CiAKIGNs
YXNzIEh5c3RlcmVzaXNBY3Rpdml0eSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSHlzdGVyZXNp
c0FjdGl2aXR5KFdURjo6RnVuY3Rpb248dm9pZChIeXN0ZXJlc2lzU3RhdGUpPiYmIGNhbGxiYWNr
ID0gW10oSHlzdGVyZXNpc1N0YXRlKSB7IH0sIFNlY29uZHMgaHlzdGVyZXNpc1NlY29uZHMgPSBk
ZWZhdWx0SHlzdGVyZXNpc0R1cmF0aW9uKQorICAgIGV4cGxpY2l0IEh5c3RlcmVzaXNBY3Rpdml0
eShGdW5jdGlvbjx2b2lkKEh5c3RlcmVzaXNTdGF0ZSk+JiYgY2FsbGJhY2sgPSBbXShIeXN0ZXJl
c2lzU3RhdGUpIHsgfSwgU2Vjb25kcyBoeXN0ZXJlc2lzU2Vjb25kcyA9IGRlZmF1bHRIeXN0ZXJl
c2lzRHVyYXRpb24pCiAgICAgICAgIDogbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAg
ICAgICAgLCBtX2h5c3RlcmVzaXNTZWNvbmRzKGh5c3RlcmVzaXNTZWNvbmRzKQogICAgICAgICAs
IG1fYWN0aXZlKGZhbHNlKQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2Nh
bGxiYWNrKEh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCk7CiAgICAgfQogCi0gICAgV1RGOjpGdW5j
dGlvbjx2b2lkKEh5c3RlcmVzaXNTdGF0ZSk+IG1fY2FsbGJhY2s7CisgICAgRnVuY3Rpb248dm9p
ZChIeXN0ZXJlc2lzU3RhdGUpPiBtX2NhbGxiYWNrOwogICAgIFNlY29uZHMgbV9oeXN0ZXJlc2lz
U2Vjb25kczsKICAgICBib29sIG1fYWN0aXZlOwogICAgIFJ1bkxvb3A6OlRpbWVyPEh5c3RlcmVz
aXNBY3Rpdml0eT4gbV90aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
TG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dpbmcuY3BwCmluZGV4IDhl
NmZhMjMwZmM0NWU2YjJmMDQ2YzExZGZhZDI3MTQzMThjMDY1NjAuLjAwYjdlZDg0NThiN2YzZWE4
NTRjMWViYWFiYzZhMzQ2NDZlODBiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvTG9nZ2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnaW5nLmNwcApA
QCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgUEFMIHsKIAotdm9pZCByZWdpc3Rlck5vdGlm
eUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgbm90aWZ5SUQsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGNhbGxiYWNrKQordm9pZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKGNvbnN0IFN0cmluZyYgbm90
aWZ5SUQsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBpbnQgdG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xv
Z2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCmluZGV4IDZjYWFlZGIz
NWEwNTFkOWQ1M2UyYmEzMjQxY2E5MDAzYTNiMDFhNzIuLjMwYThlNWUxMzFkNmIzOGQ0YThlZDYz
ZWI1ZGM5ZDU0ZDM5ODg0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9n
Z2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2luZy5oCkBAIC0yOSw3ICsy
OSw3IEBACiAKIG5hbWVzcGFjZSBQQUwgewogCi1QQUxfRVhQT1JUIHZvaWQgcmVnaXN0ZXJOb3Rp
ZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CitQQUxf
RVhQT1JUIHZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBGdW5jdGlv
bjx2b2lkKCk+JiYpOwogCiB9IC8vIG5hbWVzcGFjZSBQQUwKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMDhlMGU0
ZjViOTc0MDZmZjg5MzIwNDljZDYxZDM2NjBhODM5ZGY0YS4uMTMyZWZiY2ZmYzQ0YTFjNzNiOGMw
NjE3YmUwM2YzNjZlMjJhYTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RBY2Nlc3NpYmxlT2JqZWN0
RnJvbU5vZGUoY29uc3QgTm8KICAgICB9KTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogZmly
c3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgV1RGOjpG
dW5jdGlvbjxib29sKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKT4mIGlzQWNjZXNzaWJsZSkK
K0FjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0
IE5vZGUqIG5vZGUsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCYpPiYgaXNBY2Nlc3NpYmxlKQogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0zOTE2LDkgKzM5MTYsOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZHJlblRv
QXJyYXkoQVhDb3JlT2JqZWN0KiBvYmplY3QsIGJvb2wgaXNGb3J3YXJkLCBBWENvcmVPYgogICAg
ICAgICAgICAgc3RhcnRPYmplY3QgPSBpc0ZvcndhcmQgPyBzdGFydE9iamVjdC0+cHJldmlvdXNT
aWJsaW5nKCkgOiBzdGFydE9iamVjdC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiAKLSAgICBzaXpl
X3Qgc2VhcmNoUG9zaXRpb24gPSBzdGFydE9iamVjdCA/IHNlYXJjaENoaWxkcmVuLmZpbmQoc3Rh
cnRPYmplY3QpIDogV1RGOjpub3RGb3VuZDsKKyAgICBzaXplX3Qgc2VhcmNoUG9zaXRpb24gPSBz
dGFydE9iamVjdCA/IHNlYXJjaENoaWxkcmVuLmZpbmQoc3RhcnRPYmplY3QpIDogbm90Rm91bmQ7
CiAKLSAgICBpZiAoc2VhcmNoUG9zaXRpb24gIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChz
ZWFyY2hQb3NpdGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICBpZiAoaXNGb3J3YXJkKQogICAg
ICAgICAgICAgZW5kSW5kZXggPSBzZWFyY2hQb3NpdGlvbiArIDE7CiAgICAgICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
aW5kZXggNTE3NWQwMTY1MmQ2OGMzNmE1YmUxYmQyOTg3ZGZhMTRiYTg2Njg4Yy4uNGMwNmU2YmI2
ZjViMTU1NmMwZjk2NGQ2Y2Y5YjJjMGQ3NjM0YWFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTgzOCw3ICs4MzgsNyBA
QCBpbmxpbmUgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZ2VzKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmdldExlbmd0aEZvclRleHRSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5sZW5ndGgoKTsg
fQogI2VuZGlmCiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0QWNjZXNzaWJsZU9iamVjdEZy
b21Ob2RlKGNvbnN0IE5vZGUqLCBjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgQWNjZXNz
aWJpbGl0eU9iamVjdCYpPiYgaXNBY2Nlc3NpYmxlKTsKK0FjY2Vzc2liaWxpdHlPYmplY3QqIGZp
cnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGNvbnN0IE5vZGUqLCBjb25zdCBGdW5jdGlvbjxi
b29sKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmKT4mIGlzQWNjZXNzaWJsZSk7CiAKIG5hbWVz
cGFjZSBBY2Nlc3NpYmlsaXR5IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCBjODIzNmI3
MTNlOWE0MzRmNTIzODYzNmVmYjEzY2U5NWZhNGVkNzlhLi5lODIxNjgxNDg3OWY5NTA4NjBmMDk1
NjI3ZjA3NmQwMTFkNWRkZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMjUwLDcgKzI1
MCw3IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVJvbGUgewogICAgIFdpbmRvdywKIH07CiAK
LXVzaW5nIEFjY2Vzc2liaWxpdHlSb2xlU2V0ID0gV1RGOjpIYXNoU2V0PEFjY2Vzc2liaWxpdHlS
b2xlLCBXVEY6OkludEhhc2g8QWNjZXNzaWJpbGl0eVJvbGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNo
VHJhaXRzPEFjY2Vzc2liaWxpdHlSb2xlPj47Cit1c2luZyBBY2Nlc3NpYmlsaXR5Um9sZVNldCA9
IEhhc2hTZXQ8QWNjZXNzaWJpbGl0eVJvbGUsIEludEhhc2g8QWNjZXNzaWJpbGl0eVJvbGU+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEFjY2Vzc2liaWxpdHlSb2xlPj47CiAKIEFMV0FZU19J
TkxJTkUgU3RyaW5nIGFjY2Vzc2liaWxpdHlSb2xlVG9TdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggNzQ0NTY0OGU0YzZlYzI5YjI4OTE5YWEzZjhl
OWYyYjlhN2JkZGM1MS4uNjBjMjYxMjdkZjg1YmMxOWRhYzY5MzQwMjg4MjRmNGFmZGE1MjdjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKCkKIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OnJlbW92ZUNoaWxkU2Nyb2xsYmFyKEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbGJhcikK
IHsKICAgICBzaXplX3QgcG9zID0gbV9jaGlsZHJlbi5maW5kKHNjcm9sbGJhcik7Ci0gICAgaWYg
KHBvcyAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkgewogICAg
ICAgICBtX2NoaWxkcmVuW3Bvc10tPmRldGFjaEZyb21QYXJlbnQoKTsKICAgICAgICAgbV9jaGls
ZHJlbi5yZW1vdmUocG9zKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGUuY3BwCmluZGV4IDVjMzIyN2E3YjE1ZGM5ZWQ0
OTM3NmU1NjU0MGRiYjBiODVhN2FmZWIuLjE2YzRmNTgxM2RhOGRmZGFkNTMwZWQ0MmNmMGI3ZWZi
YTEwNWM5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGUuY3BwCkBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIGdpbnQgd2Vi
a2l0QWNjZXNzaWJsZUdldEluZGV4SW5QYXJlbnQoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgICAg
IHJldHVybiAtMTsKIAogICAgIHNpemVfdCBpbmRleCA9IHBhcmVudC0+Y2hpbGRyZW4oKS5maW5k
KGNvcmVPYmplY3QpOwotICAgIHJldHVybiAoaW5kZXggPT0gV1RGOjpub3RGb3VuZCkgPyAtMSA6
IGluZGV4OworICAgIHJldHVybiAoaW5kZXggPT0gbm90Rm91bmQpID8gLTEgOiBpbmRleDsKIH0K
IAogc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogd2Via2l0QWNjZXNzaWJsZUdldEF0dHJpYnV0ZXMo
QXRrT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKaW5k
ZXggMGE4NmQ0NDNkNTA3ZTcxNGFhNjY1M2M3YTE4YTY4NDU5Y2I4MWEzYy4uOGE4N2FjM2IxYjIw
ZDdlNzNkMTM2MDNlMTIyN2IzZWIxMWFiNThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcApAQCAtNjA0LDcgKzYwNCw3IEBAIHN0YXRpYyBpbnQgbnVtYmVyT2ZSZXBsYWNl
ZEVsZW1lbnRzQmVmb3JlT2Zmc2V0KEF0a1RleHQqIHRleHQsIHVuc2lnbmVkIG9mZnNldCkKIAog
ICAgIGludCBjb3VudCA9IDA7CiAgICAgc2l6ZV90IGluZGV4ID0gdGV4dEJlZm9yZU9mZnNldC5m
aW5kKG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAwKTsKLSAgICB3aGlsZSAoaW5kZXggPCBv
ZmZzZXQgJiYgaW5kZXggIT0gV1RGOjpub3RGb3VuZCkgeworICAgIHdoaWxlIChpbmRleCA8IG9m
ZnNldCAmJiBpbmRleCAhPSBub3RGb3VuZCkgewogICAgICAgICBpbmRleCA9IHRleHRCZWZvcmVP
ZmZzZXQuZmluZChvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciwgaW5kZXggKyAxKTsKICAgICAg
ICAgY291bnQrKzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCA3OTFmYWY1MzIzMDMw
ZDYwNGIwNGIyNzdlZWViMGU1MzE1ODhmNTc5Li5iZjZjZWExMjNjYmY1ODE4NzQwMjllZWFjNThm
ODAwODU4NGU0NjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTMxOCw3ICszMTgsNyBAQCBl
bnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogfTsKIAogdXNpbmcgQVhQcm9w
ZXJ0eVZhbHVlVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBi
b29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRfdCwgQ29sb3IsIFVSTCwg
TGF5b3V0UmVjdCwgRmxvYXRSZWN0LCBQQUw6OlNlc3Npb25JRCwgSW50UG9pbnQsIE9wdGlvblNl
dDxTcGVha0FzPiwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4sIFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBBWElEPj4s
IFZlY3RvcjxTdHJpbmc+LCBQYXRoPjsKLXVzaW5nIEFYUHJvcGVydHlNYXAgPSBIYXNoTWFwPEFY
UHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWYXJpYW50LCBXVEY6OkludEhhc2g8QVhQcm9w
ZXJ0eU5hbWU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEFYUHJvcGVydHlOYW1lPj47Cit1
c2luZyBBWFByb3BlcnR5TWFwID0gSGFzaE1hcDxBWFByb3BlcnR5TmFtZSwgQVhQcm9wZXJ0eVZh
bHVlVmFyaWFudCwgSW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8QVhQcm9wZXJ0eU5hbWU+PjsKIAogc3RydWN0IEFYUHJvcGVydHlDaGFuZ2UgewogICAg
IEFYSUQgYXhJRCB7IEludmFsaWRBWElEIH07IC8vIElEIG9mIHRoZSBvYmplY3Qgd2hvc2UgcHJv
cGVydGllcyBjaGFuZ2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Rv
Y3VtZW50VGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmUuY3BwCmluZGV4IGVkYzAyZWI0Yjc2ODRiMTgyOGEwYzA4YTExNmY2MTVhYzI4M2Q0NTAu
LjA1YzE5MWYzZDgyZGQ4ZWNkNmQ2Nzk5YWFmMWRhYTE0Zjc2ODMwN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKQEAgLTI0Miw3ICsyNDIsNyBA
QCBib29sIERvY3VtZW50VGltZWxpbmU6OmFuaW1hdGlvbkNhbkJlUmVtb3ZlZChXZWJBbmltYXRp
b24mIGFuaW1hdGlvbikKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAoYXV0byYgYW5pbWF0
aW9uV2l0aEhpZ2hlckNvbXBvc2l0ZU9yZGVyIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShhbmlt
YXRpb25zKSkgeworICAgIGZvciAoYXV0byYgYW5pbWF0aW9uV2l0aEhpZ2hlckNvbXBvc2l0ZU9y
ZGVyIDogbWFrZVJldmVyc2VkUmFuZ2UoYW5pbWF0aW9ucykpIHsKICAgICAgICAgaWYgKCZhbmlt
YXRpb24gPT0gYW5pbWF0aW9uV2l0aEhpZ2hlckNvbXBvc2l0ZU9yZGVyKQogICAgICAgICAgICAg
YnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCmluZGV4IDNiNWE5NDkxYjlhZjA1
ZDRmYmJlOWYwZDMwNjIwZTk4NGI5OTM5NDEuLmZkMDk5ZjU0Mzc4YTE5OTVkM2YxNDc4ODk5NzU4
MGNjYzhlZjljNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaApAQCAtMjIwLDEyICsy
MjAsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEZyb3plbkFycmF5IDogSURM
VHlwZTxWZWN0b3I8dHlwZW5hbWUgVDo6SW1wbGVtZW4KICAgICB1c2luZyBOdWxsYWJsZVBhcmFt
ZXRlclR5cGUgPSBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx0eXBlbmFtZSBUOjpJbXBsZW1l
bnRhdGlvblR5cGU+PiY7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPiBz
dHJ1Y3QgSURMUmVjb3JkIDogSURMVHlwZTxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8dHlwZW5h
bWUgSzo6SW1wbGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+
Pj4gewordGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gc3RydWN0IElETFJlY29yZCA6
IElETFR5cGU8VmVjdG9yPEtleVZhbHVlUGFpcjx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5
cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4+PiB7CiAgICAgdXNpbmcgS2V5VHlw
ZSA9IEs7CiAgICAgdXNpbmcgVmFsdWVUeXBlID0gVjsKIAotICAgIHVzaW5nIFBhcmFtZXRlclR5
cGUgPSBjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgSzo6SW1wbGVtZW50
YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJbXBsZW1lbnRhdGlvblR5cGU+PiY7Ci0gICAgdXNpbmcg
TnVsbGFibGVQYXJhbWV0ZXJUeXBlID0gY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8V1RGOjpL
ZXlWYWx1ZVBhaXI8dHlwZW5hbWUgSzo6SW1wbGVtZW50YXRpb25UeXBlLCB0eXBlbmFtZSBWOjpJ
bXBsZW1lbnRhdGlvblR5cGU+Pj4mOworICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBW
ZWN0b3I8S2V5VmFsdWVQYWlyPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5h
bWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4mOworICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVy
VHlwZSA9IGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEtleVZhbHVlUGFpcjx0eXBlbmFtZSBL
OjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4+PiY7
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMUHJvbWlzZSA6IElETFdyYXBw
ZXI8RE9NUHJvbWlzZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NUHJvbWlzZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNl
UHJveHkuaAppbmRleCAzYmQ1MGFlYTVlODc5ODBjYmQ2NTk4NjExNDM0ZjJiYTY2NDAwOGExLi44
MDI0OTA1M2Q1ODk3YjY2NmRhZjUwODFlNjIzMTZjOThmNmJkODRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaApAQCAtODYsNyArODYsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBJRExUeXBlPgogY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVD
YWxsYmFjayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNp
bmcgUmVzb2x2ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx0eXBlbmFtZSBJRExUeXBlOjpQYXJh
bWV0ZXJUeXBlICgpPjsKKyAgICB1c2luZyBSZXNvbHZlQ2FsbGJhY2sgPSBGdW5jdGlvbjx0eXBl
bmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlKCk+OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENsYXNzLCB0eXBlbmFtZSBCYXNlQ2xhc3M+CiAgICAgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29s
dmVDYWxsYmFjayhDbGFzcyYsIHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgKEJhc2VD
bGFzczo6KikoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAppbmRleCBhOThhOTc3MDdjNjQ4ZDNlODA4YjhkMjRm
NjdiNmZhY2Q2NjI1NDY4Li44MjM0NWQyZTRhM2ZlMTc4ZGQ0Y2QyYTZjZjZiZDQyZWNmYzQ2ZTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxl
bWVudEludGVyZmFjZS5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZTo6dXBncmFkZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICBlbGVtZW50
LnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoKnRoaXMpOwogfQogCi12b2lkIEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZTo6aW52b2tlQ2FsbGJhY2soRWxlbWVudCYgZWxlbWVudCwgSlNPYmplY3Qq
IGNhbGxiYWNrLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSlNHbG9iYWxPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCosIE1hcmtlZEFyZ3VtZW50QnVmZmVyJik+JiBhZGRBcmd1bWVudHMpCit2
b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6aW52b2tlQ2FsbGJhY2soRWxlbWVudCYgZWxl
bWVudCwgSlNPYmplY3QqIGNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpPiYgYWRkQXJn
dW1lbnRzKQogewogICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaAppbmRleCAzOTlmMmMyMDUyZjdmZjM3NTRjMzc5NGRiOWFhNjI4MjU0NGFiMjhl
Li40NmZlYjg3YzUzNmY3NjJkNjU2NWE4MjBhMzYzNGI5N2U1YTJhN2Y2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaApA
QCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IHRyeVRvQ29u
c3RydWN0Q3VzdG9tRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IEF0b21TdHJpbmcmKTsKIAotICAg
IHZvaWQgaW52b2tlQ2FsbGJhY2soRWxlbWVudCYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBj
b25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYpPiYgYWRkQXJndW1lbnRzID0gW10o
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlciYpIHsgfSk7CisgICAgdm9pZCBpbnZva2VDYWxsYmFjayhFbGVtZW50JiwgSlND
OjpKU09iamVjdCogY2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYpPiYg
YWRkQXJndW1lbnRzID0gW10oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYpIHsgfSk7CiAKICAgICBRdWFsaWZpZWROYW1l
IG1fbmFtZTsKICAgICBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV9jb25zdHJ1Y3RvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggYmJjMWNj
ZjI0NzFkYjJlNDkyODY2MzhhNWNjMzExYjFmNDM0ZGQyZS4uNTI1ZGQ5OWZhNDlhNjQzOTJlNTE2
N2IxODQzNDhjMjQzN2NhYTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRy
PEpTQzo6V2F0Y2hwb2ludFNldD4gbV93aW5kb3dDbG9zZVdhdGNocG9pbnRzOwogCiBwcml2YXRl
OgotICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
Y2hhciosIHNpemVfdCk+OworICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKIAogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fd3Jh
cHBlZDsKICAgICBSZWZQdHI8RXZlbnQ+IG1fY3VycmVudEV2ZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oCmluZGV4IGQ5MGMw
ZGVjNWQyMTA1ZDZhY2VjYzMwZjFlZmRlY2JjNjZkYjU2OWMuLjc5NzAyZWJhZWNmM2RmNThkYTAy
YjA2YjBkMGRjOWQ1NTcwYWZiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVmFsdWVJbldyYXBwZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToK
ICAgICBWYWx1ZSBtX3ZhbHVlOwogfTsKIAotSlNDOjpKU1ZhbHVlIGNhY2hlZFByb3BlcnR5VmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IEpTRE9NT2JqZWN0JiBvd25lciwgSlNWYWx1
ZUluV3JhcHBlZE9iamVjdCYgY2FjaGVTbG90LCBjb25zdCBXVEY6OkZ1bmN0aW9uPEpTQzo6SlNW
YWx1ZSgpPiYpOworSlNDOjpKU1ZhbHVlIGNhY2hlZFByb3BlcnR5VmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIGNvbnN0IEpTRE9NT2JqZWN0JiBvd25lciwgSlNWYWx1ZUluV3JhcHBlZE9iamVj
dCYgY2FjaGVTbG90LCBjb25zdCBGdW5jdGlvbjxKU0M6OkpTVmFsdWUoKT4mKTsKIAogaW5saW5l
IGF1dG8gSlNWYWx1ZUluV3JhcHBlZE9iamVjdDo6bWFrZVZhbHVlKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkgLT4gVmFsdWUKIHsKQEAgLTExOCw3ICsxMTgsNyBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0OjpjbGVhcigpCiAgICAgfSwgW10gKGF1dG8mKSB7IH0pOwogfQogCi1pbmxp
bmUgSlNDOjpKU1ZhbHVlIGNhY2hlZFByb3BlcnR5VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNET01PYmplY3QmIG93bmVyLCBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0JiBjYWNoZWRWYWx1ZSwgY29uc3QgV1RGOjpGdW5jdGlvbjxKU0M6OkpTVmFs
dWUoKT4mIGZ1bmN0aW9uKQoraW5saW5lIEpTQzo6SlNWYWx1ZSBjYWNoZWRQcm9wZXJ0eVZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTRE9NT2Jq
ZWN0JiBvd25lciwgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgY2FjaGVkVmFsdWUsIGNvbnN0IEZ1
bmN0aW9uPEpTQzo6SlNWYWx1ZSgpPiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKGNhY2hlZFZhbHVl
ICYmIGlzV29ybGRDb21wYXRpYmxlKGxleGljYWxHbG9iYWxPYmplY3QsIGNhY2hlZFZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIGNhY2hlZFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGJmNWQ1NWZhYjM0Yzc5N2Y5NGFiOGE1Y2NkMDli
MTVlY2M5OWEwNjAuLmRhZjllYWQyMWNkODNjY2YwNTMxZWFmYTYxMzdmZjA3MTg4ZjY3MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlTW9kdWxlKGNv
bnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQmLCBET01XcmFwcGVyV29ybGQmLCBKU0M6OkpT
VmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSk7CiAgICAgSlNDOjpK
U1ZhbHVlIGV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQmLCBK
U0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSk7CiAKLSAg
ICBXVEY6OlRleHRQb3NpdGlvbiBldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0OworICAgIFRl
eHRQb3NpdGlvbiBldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0OwogCiAgICAgdm9pZCBlbmFi
bGVFdmFsKCk7CiAgICAgdm9pZCBlbmFibGVXZWJBc3NlbWJseSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX3V0aWxpdHkuaAppbmRleCA3YjEyZmViYzIwYWQ0YjVhMGI3MDQzYTBhMDZhMDY0OTVmNWRl
MGE4Li5iZjlhMzc0MTRjNmIyYTI5NTJmYmM4OGYxMDhjYmZhMTZjYzQ2MDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvYy9jX3V0aWxpdHkuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBSb290T2JqZWN0
OwogICAgIAogdHlwZWRlZiB1aW50MTZfdCBOUFVURjE2OwogCi1XVEY6OlN0cmluZyBjb252ZXJ0
TlBTdHJpbmdUb1VURjE2KGNvbnN0IE5QU3RyaW5nICpzdHJpbmcpOworU3RyaW5nIGNvbnZlcnRO
UFN0cmluZ1RvVVRGMTYoY29uc3QgTlBTdHJpbmcgKik7CiB2b2lkIGNvbnZlcnRWYWx1ZVRvTlBW
YXJpYW50KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgTlBWYXJpYW50KiByZXN1bHQpOwogSlNW
YWx1ZSBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZShKU0dsb2JhbE9iamVjdCosIGNvbnN0IE5QVmFy
aWFudCosIFJvb3RPYmplY3QqKTsKIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21OUElkZW50aWZp
ZXIoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBOUFVURjgqIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKaW5k
ZXggMDFjZjE5NDdkMzE0OGYxYTBkN2Q5ZDMxMjcwOGUyZDBiMzM0Y2UwMy4uNGRhOTg4YzUyMWQx
MjliNzViNDk4MDVjZWViNWZiMDRlZmE2ZTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIHN0cnVjdCBQcmVmaXhUcmVlRWRnZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByZWZp
eFRyZWVWZXJ0ZXg+IGNoaWxkOwogfTsKICAgICAKLXR5cGVkZWYgVmVjdG9yPFByZWZpeFRyZWVF
ZGdlLCAwLCBXVEY6OkNyYXNoT25PdmVyZmxvdywgMT4gUHJlZml4VHJlZUVkZ2VzOwordHlwZWRl
ZiBWZWN0b3I8UHJlZml4VHJlZUVkZ2UsIDAsIENyYXNoT25PdmVyZmxvdywgMT4gUHJlZml4VHJl
ZUVkZ2VzOwogCiBzdHJ1Y3QgUHJlZml4VHJlZVZlcnRleCB7CiAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgUmV2ZXJzZVN1ZmZpeFRy
ZWVFZGdlIHsKICAgICBjb25zdCBUZXJtKiB0ZXJtOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXZl
cnNlU3VmZml4VHJlZVZlcnRleD4gY2hpbGQ7CiB9OwotdHlwZWRlZiBWZWN0b3I8UmV2ZXJzZVN1
ZmZpeFRyZWVFZGdlLCAwLCBXVEY6OkNyYXNoT25PdmVyZmxvdywgMT4gUmV2ZXJzZVN1ZmZpeFRy
ZWVFZGdlczsKK3R5cGVkZWYgVmVjdG9yPFJldmVyc2VTdWZmaXhUcmVlRWRnZSwgMCwgQ3Jhc2hP
bk92ZXJmbG93LCAxPiBSZXZlcnNlU3VmZml4VHJlZUVkZ2VzOwogCiBzdHJ1Y3QgUmV2ZXJzZVN1
ZmZpeFRyZWVWZXJ0ZXggewogICAgIFJldmVyc2VTdWZmaXhUcmVlRWRnZXMgZWRnZXM7CkBAIC0x
OTUsMTQgKzE5NSwxNCBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybih1aW50
NjRfdCBhY3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZQogICAgIFByZWZpeFRyZWVW
ZXJ0ZXgqIGxhc3RQcmVmaXhUcmVlID0gbV9wcmVmaXhUcmVlUm9vdC5nZXQoKTsKIAogICAgIGZv
ciAoY29uc3QgVGVybSYgdGVybSA6IHBhdHRlcm4pIHsKLSAgICAgICAgc2l6ZV90IG5leHRFbnRy
eUluZGV4ID0gV1RGOjpub3RGb3VuZDsKKyAgICAgICAgc2l6ZV90IG5leHRFbnRyeUluZGV4ID0g
bm90Rm91bmQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGFzdFByZWZpeFRyZWUt
PmVkZ2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoKmxhc3RQcmVmaXhUcmVlLT5l
ZGdlc1tpXS50ZXJtID09IHRlcm0pIHsKICAgICAgICAgICAgICAgICBuZXh0RW50cnlJbmRleCA9
IGk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKG5leHRFbnRyeUluZGV4ICE9IFdURjo6bm90Rm91bmQpCisgICAgICAgIGlmIChu
ZXh0RW50cnlJbmRleCAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlID0g
bGFzdFByZWZpeFRyZWUtPmVkZ2VzW25leHRFbnRyeUluZGV4XS5jaGlsZC5nZXQoKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBsYXN0UHJlZml4VHJlZS0+ZWRnZXMuYXBwZW5kKFByZWZp
eFRyZWVFZGdlKHttX2FscGhhYmV0LmludGVybmVkKHRlcm0pLCBtYWtlVW5pcXVlPFByZWZpeFRy
ZWVWZXJ0ZXg+KCl9KSk7CkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBDb21iaW5lZFVSTEZpbHRl
cnM6OmFkZFBhdHRlcm4odWludDY0X3QgYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxUZXJtPiYgcGF0
dGUKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hY3Rpb25zLmFkZChsYXN0UHJlZml4VHJlZSwg
QWN0aW9uTGlzdCgpKTsKICAgICBBY3Rpb25MaXN0JiBhY3Rpb25zID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKLSAgICBpZiAoYWN0aW9ucy5maW5kKGFjdGlvbklkKSA9PSBXVEY6Om5vdEZv
dW5kKQorICAgIGlmIChhY3Rpb25zLmZpbmQoYWN0aW9uSWQpID09IG5vdEZvdW5kKQogICAgICAg
ICBhY3Rpb25zLmFwcGVuZChhY3Rpb25JZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3Bw
CmluZGV4IDBiNDAyNzI3MDVmMTEyZDU4NWRkNWY4MjIwZGYwYjVmOGIzMTIyNDQuLjI1MTFlOGVm
NTViNzhmZGY5ODUxNTNhMmU4ZTZmNWE0NDZmNTUxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5k
LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIGF1dG8gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjph
Y3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlTG9hZEluZm8mIHJlCiAgICAgcmV0
dXJuIGFjdGlvbnNWZWN0b3I7CiB9CiAKLXZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpm
b3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDb250ZW50RXh0
ZW5zaW9uJik+JiBhcHBseSkKK3ZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpmb3JFYWNo
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgQ29udGVudEV4dGVuc2lvbiYpPiYg
YXBwbHkpCiB7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9jb250ZW50RXh0ZW5zaW9ucykKICAg
ICAgICAgYXBwbHkocGFpci5rZXksIHBhaXIudmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5n
LmgKaW5kZXggNmJiMTkyOGNhZTE5Yzg3YWY1NmY2NDhlZmRjZjA5OTNmYzI3NGRiYy4uZGU0YTUw
YjYxMzIzNTZmMGVmNDlkN2E5YTgzMTA1ODFkZDI3NTMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0RlYnVn
Z2luZy5oCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5lIENPTlRFTlRfRVhURU5TSU9OU19QRVJG
T1JNQU5DRV9SRVBPUlRJTkcgMAogCiAjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJ
TkVfREVCVUdHSU5HCi10eXBlZGVmIFdURjo6Q3Jhc2hPbk92ZXJmbG93IENvbnRlbnRFeHRlbnNp
b25zT3ZlcmZsb3dIYW5kbGVyOwordHlwZWRlZiBDcmFzaE9uT3ZlcmZsb3cgQ29udGVudEV4dGVu
c2lvbnNPdmVyZmxvd0hhbmRsZXI7CiAjZWxzZQogdHlwZWRlZiBVbnNhZmVWZWN0b3JPdmVyZmxv
dyBDb250ZW50RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuY3BwCmluZGV4IDcyZTc2MTgx
NWQxM2M3OTYyNGVhNjljMzljYTc1YTk4MTM4NGE2MTkuLjg4NzU1OTY4NGJiNTRmNmY2ODZmNDA5
MWJlMjAyMTYwOWUwZTYxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0RGQUNvbWJpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ERkFDb21iaW5lci5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3Rvcjx1aW50NjRfdCwgMCwgQ29udGVudEV4dGVuc2lvbnNPdmVyZmxvd0hhbmRsZXI+IG1fdW5w
cm9jZXNzZWROb2RlczsKIH07CiAKLXZvaWQgREZBQ29tYmluZXI6OmNvbWJpbmVERkFzKHVuc2ln
bmVkIG1pbmltdW1TaXplLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoREZBJiYpPiYgaGFuZGxl
cikKK3ZvaWQgREZBQ29tYmluZXI6OmNvbWJpbmVERkFzKHVuc2lnbmVkIG1pbmltdW1TaXplLCBj
b25zdCBGdW5jdGlvbjx2b2lkKERGQSYmKT4mIGhhbmRsZXIpCiB7CiAgICAgaWYgKG1fZGZhcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFDb21iaW5lci5oCmluZGV4IGEyN2E4N2FlNDM1YzgwMWRjNzZjMDRlMWY3YmJl
MGE4YzUxZTFlZjkuLjQ3Y2RiYjVmMWNiMzUxYjkzODNmNzY1YTE2NWQxNzBhMjUyMmRmNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuaApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgewogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgREZBQ29tYmluZXIgewogcHVibGljOgogICAgIHZvaWQgYWRkREZBKERGQSYmKTsK
LSAgICB2b2lkIGNvbWJpbmVERkFzKHVuc2lnbmVkIG1pbmltdW1TaXplLCBjb25zdCBXVEY6OkZ1
bmN0aW9uPHZvaWQoREZBJiYpPiYgaGFuZGxlcik7CisgICAgdm9pZCBjb21iaW5lREZBcyh1bnNp
Z25lZCBtaW5pbXVtU2l6ZSwgY29uc3QgRnVuY3Rpb248dm9pZChERkEmJik+JiBoYW5kbGVyKTsK
IAogcHJpdmF0ZToKICAgICBWZWN0b3I8REZBPiBtX2RmYXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaApp
bmRleCA5MjQ4YWMwODI3NGU4MzI2MTJjOTZiY2YwYzRjNTUxOWZhY2M5NjhjLi43MmI4Njc3YWNk
MzM2MWU3OTY1NTY0NDY3MzM5ZjljZWUzZDNlZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmgKQEAg
LTIxOCw3ICsyMTgsNyBAQCBwcml2YXRlOgogICAgIFR5cGVkSW1tdXRhYmxlTkZBKiBtX2ltbXV0
YWJsZU5GQSB7IG51bGxwdHIgfTsKICAgICBNdXRhYmxlUmFuZ2VMaXN0PENoYXJhY3RlclR5cGUs
IFRhcmdldFNldD4gbV9yYW5nZXM7CiAgICAgVGFyZ2V0U2V0IG1fZXBzaWxvblRyYW5zaXRpb25U
YXJnZXRzOwotICAgIEhhc2hTZXQ8QWN0aW9uVHlwZSwgV1RGOjpJbnRIYXNoPEFjdGlvblR5cGU+
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEFjdGlvblR5cGU+PiBtX2FjdGlv
bnM7CisgICAgSGFzaFNldDxBY3Rpb25UeXBlLCBJbnRIYXNoPEFjdGlvblR5cGU+LCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEFjdGlvblR5cGU+PiBtX2FjdGlvbnM7CiAgICAg
dWludDMyX3QgbV9ub2RlSWQ7CiAgICAgYm9vbCBtX2ZpbmFsaXplZCB7IHRydWUgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFOb2RlLmgKaW5kZXggYWFhZWQzMTE0
MDMzYjQzMzNiYjEwNTE0NTk4ZDM5ZTQ2MGI5YzNiMi4uNWVkOWZmNDJjZjQyNWUzMTJlYTgzYzJk
MDAwNjFmMWNjMDUxNzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvTkZBTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05G
QU5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgewog
CiAvLyBBIE5GQU5vZGUgYWJzdHJhY3QgdGhlIHRyYW5zaXRpb24gdGFibGUgb3V0IG9mIGEgTkZB
IHN0YXRlLgogCi10eXBlZGVmIFZlY3Rvcjx1aW50NjRfdCwgMCwgV1RGOjpDcmFzaE9uT3ZlcmZs
b3csIDE+IEFjdGlvbkxpc3Q7Cit0eXBlZGVmIFZlY3Rvcjx1aW50NjRfdCwgMCwgQ3Jhc2hPbk92
ZXJmbG93LCAxPiBBY3Rpb25MaXN0OwogdHlwZWRlZiBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PiBORkFOb2RlSW5kZXhTZXQ7CiB0eXBlZGVmIEhhc2hNYXA8dWludDE2X3QsIE5GQU5vZGVJ
bmRleFNldCwgRGVmYXVsdEhhc2g8dWludDE2X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVpbnQxNl90Pj4gTkZBTm9kZVRyYW5zaXRpb25zOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmggYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKaW5kZXggNDkzMGY0NjdmZDk1MTA4NTdkODQxOGZmMzdh
YTVkY2ViYjZiMGFlOC4uZjA2MmVmY2U3MmUzMmZlYmY4NmJiMjNjNGJjZTZiNzhjMmRhODM4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaApAQCAtNTU3LDcgKzU1Nyw3
IEBAIGlubGluZSB1bnNpZ25lZCBUZXJtOjpoYXNoKCkgY29uc3QKICAgICAgICAgc2Vjb25kYXJ5
ID0gbV9hdG9tRGF0YS5ncm91cC5oYXNoKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBy
ZXR1cm4gV1RGOjpwYWlySW50SGFzaChwcmltYXJ5LCBzZWNvbmRhcnkpOworICAgIHJldHVybiBw
YWlySW50SGFzaChwcmltYXJ5LCBzZWNvbmRhcnkpOwogfQogCiBpbmxpbmUgYm9vbCBUZXJtOjpp
c0VtcHR5VmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGht
LmNwcAppbmRleCBiMTY4YWRhMzRjZmQ1MDhhOTdjMTE2OWY4YjM4NTdlMDBmZDZjYWFiLi40ODFi
YmYxYzlmNmU3OGVhNGJiMmQ3MzE2NTIwMzkzODRlNmEwNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcApAQCAtMTA4LDEyICsxMDgsMTIgQEAgc3RhdGljIHZv
aWQgZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24oV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNjcmlw
dEV4ZWN1dGlvbkNvbnQKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpk
aXNwYXRjaE9wZXJhdGlvbkluV29ya1F1ZXVlKFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4oKT4mJiBvcGVyYXRpb24pCit2b2lkIENyeXB0b0FsZ29yaXRo
bTo6ZGlzcGF0Y2hPcGVyYXRpb25JbldvcmtRdWV1ZShXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgRnVuY3Rpb248RXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PigpPiYmIG9wZXJhdGlvbikKIHsKICAgICBkaXNwYXRjaEFsZ29y
aXRobU9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgV1RGTW92ZShvcGVyYXRpb24pKTsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG06OmRpc3BhdGNoT3BlcmF0aW9uSW5Xb3JrUXVldWUoV29ya1F1ZXVlJiB3
b3JrUXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEJvb2xDYWxsYmFjayYm
IGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBXVEY6OkZ1
bmN0aW9uPEV4Y2VwdGlvbk9yPGJvb2w+KCk+JiYgb3BlcmF0aW9uKQordm9pZCBDcnlwdG9BbGdv
cml0aG06OmRpc3BhdGNoT3BlcmF0aW9uSW5Xb3JrUXVldWUoV29ya1F1ZXVlJiB3b3JrUXVldWUs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBGdW5jdGlvbjxFeGNlcHRp
b25Pcjxib29sPigpPiYmIG9wZXJhdGlvbikKIHsKICAgICBkaXNwYXRjaEFsZ29yaXRobU9wZXJh
dGlvbih3b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgV1RGTW92ZShvcGVyYXRpb24pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG0uaAppbmRleCBiOWM0ZDRiZTRjMmQxYjgyMTI1ZWM0YWZiYTZiMjQy
ZGQ5MDQ4YjNlLi40MGRiYjBhZDYxYjBmN2FmNjNhZmY0YTk2MDg3MjgwYWRkMmZmNDlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCkBAIC01NCwxNCArNTQsMTQgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCA9IDA7CiAKLSAgICB1c2luZyBCb29sQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoYm9vbCk+OwotICAgIHVzaW5nIEtleUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KENyeXB0b0tleSYpPjsKLSAgICB1c2luZyBLZXlPcktleVBhaXJDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChLZXlPcktleVBhaXImJik+OworICAgIHVzaW5nIEJvb2xDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoYm9vbCk+OworICAgIHVzaW5nIEtleUNhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChDcnlwdG9LZXkmKT47CisgICAgdXNpbmcgS2V5T3JLZXlQYWlyQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKEtleU9yS2V5UGFpciYmKT47CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkzOTUKLSAgICB1c2luZyBWZWN0b3JDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8dWludDhfdD4mKT47Ci0gICAgdXNpbmcg
Vm9pZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+OwotICAgIHVzaW5nIEV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbkNvZGUpPjsKLSAgICB1c2lu
ZyBLZXlEYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ3J5cHRvS2V5Rm9ybWF0LCBL
ZXlEYXRhJiYpPjsKKyAgICB1c2luZyBWZWN0b3JDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+Jik+OworICAgIHVzaW5nIFZvaWRDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoKT47CisgICAgdXNpbmcgRXhjZXB0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEV4
Y2VwdGlvbkNvZGUpPjsKKyAgICB1c2luZyBLZXlEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmKT47CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5jcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgUmVmPENyeXB0b0tleT4mJiwgVmVj
dG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVj
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgUmVmPENyeXB0b0tleT4mJiwg
VmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKQEAgLTc3LDggKzc3LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bndyYXBLZXkoUmVmPENyeXB0b0tleT4mJiwgVmVj
dG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpOwog
ICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8c2l6ZV90PiBnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYpOwogCi0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hPcGVyYXRp
b25JbldvcmtRdWV1ZShXb3JrUXVldWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9y
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+KCk+JiYpOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoT3BlcmF0
aW9uSW5Xb3JrUXVldWUoV29ya1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEJvb2xD
YWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PGJvb2w+KCk+JiYpOworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoT3BlcmF0aW9uSW5Xb3JrUXVl
dWUoV29ya1F1ZXVlJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvckNhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNhbGxiYWNrJiYsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4oKT4mJik7CisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hPcGVyYXRpb25JbldvcmtRdWV1ZShX
b3JrUXVldWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgQm9vbENhbGxiYWNrJiYsIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYsIEZ1bmN0aW9uPEV4Y2VwdGlvbk9yPGJvb2w+KCk+JiYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2tleXMvQ3J5cHRvS2V5UlNBLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlSU0EuaAppbmRleCAwYmIwYWFlNzJiMWJkN2FkNDU3YjAyOTQ2MDdlZmNhZjIyMDM3NDExLi43
ZTE0ZWU1MmQ1NjMzOWFhN2RmMDQ2M2M0MTI2ODNlN2RjOWViODE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaApAQCAtNzgsOCArNzgsOCBAQCBwdWJsaWM6CiAK
ICAgICBzaXplX3Qga2V5U2l6ZUluQml0cygpIGNvbnN0OwogCi0gICAgdXNpbmcgS2V5UGFpckNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENyeXB0b0tleVBhaXImJik+OwotICAgIHVzaW5n
IFZvaWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCgpPjsKKyAgICB1c2luZyBLZXlQYWly
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKENyeXB0b0tleVBhaXImJik+OworICAgIHVzaW5nIFZv
aWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQ
YWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aGFzaCwgYm9vbCBoYXNIYXNoLCB1bnNpZ25lZCBtb2R1bHVzTGVuZ3RoLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHB1YmxpY0V4cG9uZW50LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCwgS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5
UlNBPiBpbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBKc29uV2ViS2V5JiYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tl
eVJTQT4gaW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIFZlY3Rvcjx1aW50OF90PiYmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRleCAyZGZmNWIxNTE1YzI5YTYwN2RkMDgxOGYwMTgwZTgz
Y2VkYjc3NzMyLi43N2ExYTIwOGM3NTIyZTZmZjcyMWZmNjE1ZGYzZmNmOWJjNTA3NTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBA
QCBpbmxpbmUgdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3Jvc3NmYWRlQ2hhbmdlZCgpCiAgICAg
ICAgIGNsaWVudC5rZXktPmltYWdlQ2hhbmdlZCh0aGlzKTsKIH0KIAotYm9vbCBDU1NDcm9zc2Zh
ZGVWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChj
b25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKK2Jvb2wgQ1NTQ3Jvc3NmYWRl
VmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fY2FjaGVkRnJvbUlt
YWdlICYmIGhhbmRsZXIoKm1fY2FjaGVkRnJvbUltYWdlKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IDk0OWVkNDFhMDQ1YWU3
YWY5OWFhZDZiZDBhN2IzZmIxZDYyZjYxMDkuLjg0MmJlYzNhNDg5ZGJiMmNhMjIyOWRlMWFmMzAx
ZmE0NGZiZGRkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNv
dXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCi0gICAgYm9vbCB0
cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hl
ZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3Vy
Y2VzKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIp
IGNvbnN0OwogCiAgICAgUmVmUHRyPENTU0Nyb3NzZmFkZVZhbHVlPiBibGVuZChjb25zdCBDU1ND
cm9zc2ZhZGVWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggOGNmOTA5YWU5ZTUzNzI0
YjkxZGI0YWNlMTRhZTI4NTcxZGQ5NTUyNi4uYzY3YTM1YjA3MTViNzIxZWQ4OTkyZGVjZDQ5ZmE4
ZDBiODA2NDc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6RmlsdGVyU3Vi
aW1hZ2VPYnNlcnZlclByb3h5OjppbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqCiAgICAgICAgIG1f
b3duZXJWYWx1ZS0+ZmlsdGVySW1hZ2VDaGFuZ2VkKCpyZWN0KTsKIH0KIAotYm9vbCBDU1NGaWx0
ZXJJbWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9vbCBDU1NGaWx0
ZXJJbWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNv
bnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAgIGlmICghbV9jYWNo
ZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0
ZXJJbWFnZVZhbHVlLmgKaW5kZXggNTA0YzJhZDhkMTVjYjRjNTNlMjQyOTMxMDNkMjFkNmEzYzAy
Njg2OC4uMzNjMjIwMDg2Yzk4ZmY3MjI5ZjA2ZjMxZTgwNjFmZGMwMmNmZjU3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciYsIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCi0gICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNl
cyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5k
bGVyKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IEZ1bmN0aW9u
PGJvb2woY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCiAgICAgYm9v
bCBlcXVhbHMoY29uc3QgQ1NTRmlsdGVySW1hZ2VWYWx1ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggNTY0MjQ0Zjc5MDVhMjc1YmYx
NTQ2MzQ1NjhjZjNmZmMwNGFjZTZhOS4uMzA1YzMyZWE4MGNjZTU5MGI0YjYxZDA1ZDlhNTBjMmY2
MmU5ZDZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApA
QCAtNzMsNyArNzMsNyBAQCBTdHJpbmcgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3VzdG9tQ1NTVGV4
dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCBzZXJpYWxpemVTdHJpbmco
bV9yZXNvdXJjZSksICIpIiwgIiBmb3JtYXQoIiwgc2VyaWFsaXplU3RyaW5nKG1fZm9ybWF0KSwg
IikiKTsKIH0KIAotYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNl
cyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5k
bGVyKSBjb25zdAorYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNl
cyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBj
b25zdAogewogICAgIGlmICghbV9jYWNoZWRGb250KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBjYmUxNDExZTQ2YzRl
ZDc2ZTcxMWJjMzQxZTY1OTkwM2Y1MGZhYmNiLi5kMzRkYWZjZjVhZjU4NGYwMzJiMTdmYmI3ODJm
MmU1NDM1NWI4MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
cmNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgK
QEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBj
b25zdDsKIAotICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlv
bjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CisgICAgYm9v
bCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJl
c291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9h
ZFJlcXVlc3Q+IGZvbnRMb2FkUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgYm9vbCBp
c1NWRywgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4IGY5NzhhMTRlNDU1MWIyMGZiOTc4
MWJmMWY2ODAxYmU0ZmUyMzlhMDUuLjE0YTA0NTQ5ZDQxMDhjZTUzMjkyNTgzYjM4ZTQ3MDMyN2Yx
OTRiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAgLTEyOCwxNSArMTI4
LDE1IEBAIHByaXZhdGU6CiAgICAgUmVmPENTU0ZvbnRGYWNlU2V0PiBtX2Nzc0ZvbnRGYWNlU2V0
OwogICAgIEhhc2hTZXQ8Rm9udFNlbGVjdG9yQ2xpZW50Kj4gbV9jbGllbnRzOwogCi0gICAgc3Ry
dWN0IFBhbGV0dGVNYXBIYXNoIDogV1RGOjpEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8QXRvbVN0cmlu
ZywgQXRvbVN0cmluZz4+IHsKKyAgICBzdHJ1Y3QgUGFsZXR0ZU1hcEhhc2ggOiBEZWZhdWx0SGFz
aDxzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4+IHsKICAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3Qgc3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+JiBrZXkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwYWlySW50SGFzaChBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g6Omhhc2goa2V5LmZpcnN0KSwgV1RGOjpEZWZhdWx0SGFzaDxBdG9tU3RyaW5n
Pjo6aGFzaChrZXkuc2Vjb25kKSk7CisgICAgICAgICAgICByZXR1cm4gcGFpckludEhhc2goQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoOjpoYXNoKGtleS5maXJzdCksIERlZmF1bHRIYXNoPEF0b21T
dHJpbmc+OjpoYXNoKGtleS5zZWNvbmQpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiYgYSwgY29u
c3Qgc3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+JiBiKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOjplcXVhbChhLmZpcnN0LCBi
LmZpcnN0KSAmJiBXVEY6OkRlZmF1bHRIYXNoPEF0b21TdHJpbmc+OjplcXVhbChhLnNlY29uZCwg
Yi5zZWNvbmQpOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaDo6
ZXF1YWwoYS5maXJzdCwgYi5maXJzdCkgJiYgRGVmYXVsdEhhc2g8QXRvbVN0cmluZz46OmVxdWFs
KGEuc2Vjb25kLCBiLnNlY29uZCk7CiAgICAgICAgIH0KICAgICB9OwogICAgIEhhc2hNYXA8c3Rk
OjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+LCBGb250UGFsZXR0ZVZhbHVlcywgUGFsZXR0
ZU1hcEhhc2g+IG1fcGFsZXR0ZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVNldFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVl
LmNwcAppbmRleCAxNTUxMDEyODNjNjI2Y2ExOGEzM2IwMmJhYjEyNzhlOTZiOGIwZjM4Li45ZWM0
NzhiZGIxYmYzODA4NmUzMGM4ZGU3NDg4ZDVmZjhhNTM0ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgU3RyaW5nIENTU0ltYWdl
U2V0VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJp
bmcoKTsKIH0KIAotYm9vbCBDU1NJbWFnZVNldFZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhj
b25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVy
KSBjb25zdAorYm9vbCBDU1NJbWFnZVNldFZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25z
dCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAog
ewogICAgIHJldHVybiBtX3NlbGVjdGVkSW1hZ2VWYWx1ZSAmJiBtX3NlbGVjdGVkSW1hZ2VWYWx1
ZS0+dHJhdmVyc2VTdWJyZXNvdXJjZXMoaGFuZGxlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlU2V0VmFsdWUuaAppbmRleCA5NTAyMTdkNDA0YmYxNDkwNTI3MDcyNTQwNjExOTYxOTBmMTdi
ZTk2Li5mNDNjMzliMmIwNmI5M2I0NjhjNDMzM2I2NWE0ZGZhMmQxNzAzYjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIGJvb2wgdHJhdmVyc2VTdWJy
ZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYp
PiYgaGFuZGxlcikgY29uc3Q7CisgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBG
dW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAog
ICAgIHZvaWQgdXBkYXRlRGV2aWNlU2NhbGVGYWN0b3IoY29uc3QgRG9jdW1lbnQmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGU5OGUyODI3Y2UwMjE4YWQyNDViZjMx
MTVhYWRkODdkZDRlMTU3YTAuLjZlMmVhMGI4ZTMzYWM5MzkyYzYyNDUxNzhmY2ZmYjJkZDdjZmRk
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTEyMiw3ICsxMjIsNyBA
QCBDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6bG9hZEltYWdlKENhY2hlZFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cgogICAgIHJldHVybiBtX2NhY2hlZEltYWdlLnZhbHVl
KCkuZ2V0KCk7CiB9CiAKLWJvb2wgQ1NTSW1hZ2VWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMo
Y29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxl
cikgY29uc3QKK2Jvb2wgQ1NTSW1hZ2VWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3Qg
RnVuY3Rpb248Ym9vbChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9jYWNoZWRJbWFnZS52YWx1ZV9vcihudWxscHRyKSAmJiBoYW5kbGVyKCoq
bV9jYWNoZWRJbWFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCAwMjAw
NTZkODRmYzcxOTdhMzY1YTc4ODUxNTEzNjQ3NmE5ZWExZjIwLi5mNDkzN2I4NjE1YzZmMGMwMDQ5
MmMyZGQ4ODI2MGEyODMzYTAwMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAg
LTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgUmVmPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBj
cmVhdGVEZXByZWNhdGVkQ1NTT01XcmFwcGVyKENTU1N0eWxlRGVjbGFyYXRpb24mKSBjb25zdDsK
IAotICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29s
IChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CisgICAgYm9vbCB0cmF2
ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNl
Jik+JiBoYW5kbGVyKSBjb25zdDsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0ltYWdlVmFs
dWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKaW5kZXggMWVkZTE4YzYyNzVlMjBk
M2VlMjhmODEwYmFiYTYyYmIyMDJlYWMxNy4uNjFhYzcxMWE3MzUxZmRkZGRkN2YyNmY2OTAyODBk
M2Q4MWE2MWYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAg
Q1NTVmFsdWU6OlR5cGUgQ1NTVmFsdWU6OmNzc1ZhbHVlVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJu
IENTU19DVVNUT007CiB9CiAKLWJvb2wgQ1NTVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNv
bnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIp
IGNvbnN0Citib29sIENTU1ZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlv
bjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAgIGlm
IChpczxDU1NWYWx1ZUxpc3Q+KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1Zh
bHVlTGlzdD4oKnRoaXMpLnRyYXZlcnNlU3VicmVzb3VyY2VzKGhhbmRsZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuaAppbmRleCA1Y2ZlNjBkZWFiN2NiYzM4OTQxNDZlNWQxM2ZiNDUzNmJhZTdkNzMzLi5h
ZTUwNmVmN2M5OTcyNzEyOGExZDgxM2M1ZDIyNjRiNTBjN2YzMTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuaApAQCAtMTQyLDcgKzE0Miw3IEBAIHB1YmxpYzoKIAogICAgIFJlZjxEZXByZWNhdGVkQ1NT
T01WYWx1ZT4gY3JlYXRlRGVwcmVjYXRlZENTU09NV3JhcHBlcihDU1NTdHlsZURlY2xhcmF0aW9u
JikgY29uc3Q7CiAKLSAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IFdURjo6RnVu
Y3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OworICAg
IGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBDYWNo
ZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICAvLyBXaGF0IHByb3BlcnRpZXMg
ZG9lcyB0aGlzIHZhbHVlIHJlbHkgb24gKGVnLCBmb250LXNpemUgZm9yIGVtIHVuaXRzKQogICAg
IHZvaWQgY29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoSGFzaFNldDxDU1NQ
cm9wZXJ0eUlEPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAppbmRleCAw
NTg2MTk2NTJkODNkN2ZlN2I4ZjZmMzNiMWE4N2VjYWRmM2RlMmVjLi4yYjI0MzNmNzI2MTIwM2I2
NmE5NWRiNzViMjQ5NTBjN2UwZmQ4YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgQ1NTVmFsdWVMaXN0OjplcXVhbHMoY29uc3QgQ1NT
VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBtX3ZhbHVlc1swXS5nZXQoKS5lcXVhbHMo
b3RoZXIpOwogfQogCi1ib29sIENTU1ZhbHVlTGlzdDo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29u
c3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikg
Y29uc3QKK2Jvb2wgQ1NTVmFsdWVMaXN0Ojp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5j
dGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBpZiAobV92YWx1ZXNbaV0uZ2V0KCkudHJhdmVyc2VTdWJyZXNvdXJjZXMoaGFuZGxlcikpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKaW5kZXggNjFjODY5NjRkMzU5MGIxYzczY2M3YTk5MGE4
YzcwNmEwZTE1NjBiMC4uYmIxMjczYTVmZDNlZThlNjg4MGJhNzY3YWY5MjkxN2ViZGRhNzQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVmFsdWVMaXN0JikgY29uc3Q7CiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTVmFsdWUmKSBjb25zdDsKIAotICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJj
ZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFu
ZGxlcikgY29uc3Q7CisgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlv
bjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAogICAgIHVu
c2lnbmVkIHNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVTZXBhcmF0b3I7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA5MWJmYjJhNGVmZDdjYjg4
MTdhODczMDhlYzU2NDM0NDBmOWFhMmNiLi5jNmJlMGZiYTY4OGM4Y2EzMGI3YzJmMTNiM2ZiZmIy
ZjlhMTk1NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTM4
OCw3ICsxMzg4LDcgQEAgdm9pZCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjptZXJnZUFuZE92ZXJy
aWRlT25Db25mbGljdChjb25zdCBTdHlsZVByb3BlcnRpZXMmIG8KICAgICAgICAgYWRkUGFyc2Vk
UHJvcGVydHkob3RoZXIucHJvcGVydHlBdChpKS50b0NTU1Byb3BlcnR5KCkpOwogfQogCi1ib29s
IFN0eWxlUHJvcGVydGllczo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlv
bjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKK2Jvb2wgU3R5
bGVQcm9wZXJ0aWVzOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNv
bnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAgIHVuc2lnbmVkIHNp
emUgPSBwcm9wZXJ0eUNvdW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IDZjZDZiYzA3ZDJj
MjFkZDViMDc0MTcxNWUyNmRjNmE5Zjc1NzljNTMuLmY0ODllN2UzMjlhNjI3MTc2YTkyNTRjMTRm
MmUxODAyMzNkYTc5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTEz
OCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDU1NPTVdyYXBwZXIoKSBjb25zdDsK
ICAgICBib29sIGlzTXV0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBNdXRhYmxlUHJv
cGVydGllc1R5cGU7IH0KIAotICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RG
OjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7
CisgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0
IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAogICAgIHN0YXRpYyB1bnNpZ25l
ZCBhdmVyYWdlU2l6ZUluQnl0ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENv
bnRlbnRzLmNwcAppbmRleCBiYTQzNjUzYTBhMTZiY2E5NjAyMTY3OTI3OTUwMTJjM2E3YzJlMTgx
Li42OWIzMDkzOTJhMDVjZTRlNjJjN2RjNTY1M2MwMjdjNzg0YzRlOTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIERvY3Vt
ZW50KiBTdHlsZVNoZWV0Q29udGVudHM6OnNpbmdsZU93bmVyRG9jdW1lbnQoKSBjb25zdAogICAg
IHJldHVybiBvd25lck5vZGUgPyAmb3duZXJOb2RlLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0K
IAotc3RhdGljIGJvb2wgdHJhdmVyc2VSdWxlc0luVmVjdG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3R5bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBT
dHlsZVJ1bGVCYXNlJik+JiBoYW5kbGVyKQorc3RhdGljIGJvb2wgdHJhdmVyc2VSdWxlc0luVmVj
dG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBydWxlcywgY29uc3QgRnVu
Y3Rpb248Ym9vbChjb25zdCBTdHlsZVJ1bGVCYXNlJik+JiBoYW5kbGVyKQogewogICAgIGZvciAo
YXV0byYgcnVsZSA6IHJ1bGVzKSB7CiAgICAgICAgIGlmIChoYW5kbGVyKCpydWxlKSkKQEAgLTQ4
Myw3ICs0ODMsNyBAQCBzdGF0aWMgYm9vbCB0cmF2ZXJzZVJ1bGVzSW5WZWN0b3IoY29uc3QgVmVj
dG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBjbwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6OnRyYXZlcnNlUnVsZXMoY29uc3QgV1RGOjpG
dW5jdGlvbjxib29sIChjb25zdCBTdHlsZVJ1bGVCYXNlJik+JiBoYW5kbGVyKSBjb25zdAorYm9v
bCBTdHlsZVNoZWV0Q29udGVudHM6OnRyYXZlcnNlUnVsZXMoY29uc3QgRnVuY3Rpb248Ym9vbChj
b25zdCBTdHlsZVJ1bGVCYXNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAgIGZvciAoYXV0byYg
aW1wb3J0UnVsZSA6IG1faW1wb3J0UnVsZXMpIHsKICAgICAgICAgaWYgKGhhbmRsZXIoKmltcG9y
dFJ1bGUpKQpAQCAtNDk1LDcgKzQ5NSw3IEBAIGJvb2wgU3R5bGVTaGVldENvbnRlbnRzOjp0cmF2
ZXJzZVJ1bGVzKGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgU3R5bGVSdWxlCiAgICAg
cmV0dXJuIHRyYXZlcnNlUnVsZXNJblZlY3RvcihtX2NoaWxkUnVsZXMsIGhhbmRsZXIpOwogfQog
Ci1ib29sIFN0eWxlU2hlZXRDb250ZW50czo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RG
OjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QK
K2Jvb2wgU3R5bGVTaGVldENvbnRlbnRzOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5j
dGlvbjxib29sKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAg
IHJldHVybiB0cmF2ZXJzZVJ1bGVzKFsmXSAoY29uc3QgU3R5bGVSdWxlQmFzZSYgcnVsZSkgewog
ICAgICAgICBzd2l0Y2ggKHJ1bGUudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmgKaW5kZXggM2JjMmJlMjg3MDdkMWJjNzBiZTFmYzZkNTE0YmE0MjhmNDM1YTQ5
Yy4uNTMwMDI1MjM2NGE2NjUwMGRkYWQ3NmNhMWZhOTcyZTRhZTY3NmIwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaApAQCAtODcsOCArODcsOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGxvYWRDb21wbGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRDb21wbGV0ZWQ7
IH0KIAotICAgIGJvb2wgdHJhdmVyc2VSdWxlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNv
bnN0IFN0eWxlUnVsZUJhc2UmKT4mIGhhbmRsZXIpIGNvbnN0OwotICAgIGJvb2wgdHJhdmVyc2VT
dWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJj
ZSYpPiYgaGFuZGxlcikgY29uc3Q7CisgICAgYm9vbCB0cmF2ZXJzZVJ1bGVzKGNvbnN0IEZ1bmN0
aW9uPGJvb2woY29uc3QgU3R5bGVSdWxlQmFzZSYpPiYgaGFuZGxlcikgY29uc3Q7CisgICAgYm9v
bCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IENhY2hlZFJl
c291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAogICAgIHZvaWQgc2V0SXNVc2VyU3R5bGVTaGVl
dChib29sIGIpIHsgbV9pc1VzZXJTdHlsZVNoZWV0ID0gYjsgfQogICAgIGJvb2wgaXNVc2VyU3R5
bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNVc2VyU3R5bGVTaGVldDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21h
a2Vwcm9wLnBsCmluZGV4IDBjNzg4Yjg5ZTk1M2UwZDY0NTM1Mzc5NTkxODQ1MmY5YjM0ZjZiMTgu
LmY5NDE5MTc0ZjVhMDllNWQwZmE5ZmU1ZDZkZTZlYmFjNTA0MmJiODAgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFr
ZXByb3AucGwKQEAgLTU2Nyw3ICs1NjcsNyBAQCBTdHJpbmcgZ2V0SlNQcm9wZXJ0eU5hbWUoQ1NT
UHJvcGVydHlJRCBpZCkKICAgICAgICAgKnJlc3VsdFBvaW50ZXIrKyA9IGNoYXJhY3RlcjsKICAg
ICB9CiAgICAgKnJlc3VsdFBvaW50ZXIgPSAnXFwwJzsKLSAgICByZXR1cm4gV1RGOjpTdHJpbmco
cmVzdWx0KTsKKyAgICByZXR1cm4gU3RyaW5nKHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBjb25zdCBi
b29sIGlzSW5oZXJpdGVkUHJvcGVydHlUYWJsZVtudW1DU1NQcm9wZXJ0aWVzICsgJG51bVByZWRl
ZmluZWRQcm9wZXJ0aWVzXSA9IHsKQEAgLTg0Niw5ICs4NDYsOSBAQCBib29sIGlzSW50ZXJuYWxD
U1NQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eUlEKTsKIGJvb2wgaXNFbmFibGVkQ1NTUHJvcGVy
dHkoY29uc3QgQ1NTUHJvcGVydHlJRCk7CiBib29sIGlzQ1NTUHJvcGVydHlFbmFibGVkQnlTZXR0
aW5ncyhjb25zdCBDU1NQcm9wZXJ0eUlELCBjb25zdCBTZXR0aW5ncyogPSBudWxscHRyKTsKIGNv
bnN0IGNoYXIqIGdldFByb3BlcnR5TmFtZShDU1NQcm9wZXJ0eUlEKTsKLWNvbnN0IFdURjo6QXRv
bVN0cmluZyYgZ2V0UHJvcGVydHlOYW1lQXRvbVN0cmluZyhDU1NQcm9wZXJ0eUlEIGlkKTsKLVdU
Rjo6U3RyaW5nIGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUlEIGlkKTsKLVdURjo6
U3RyaW5nIGdldEpTUHJvcGVydHlOYW1lKENTU1Byb3BlcnR5SUQpOworY29uc3QgQXRvbVN0cmlu
ZyYgZ2V0UHJvcGVydHlOYW1lQXRvbVN0cmluZyhDU1NQcm9wZXJ0eUlEIGlkKTsKK1N0cmluZyBn
ZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlJRCBpZCk7CitTdHJpbmcgZ2V0SlNQcm9w
ZXJ0eU5hbWUoQ1NTUHJvcGVydHlJRCk7CiBDU1NQcm9wZXJ0eUlEIGdldFJlbGF0ZWRQcm9wZXJ0
eUlkKENTU1Byb3BlcnR5SUQgaWQpOwogCiBpbmxpbmUgQ1NTUHJvcGVydHlJRCBjb252ZXJ0VG9D
U1NQcm9wZXJ0eUlEKGludCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9t
YWtldmFsdWVzLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2V2YWx1ZXMucGwKaW5kZXggMTEz
ZjE2MjhlZGM0ZWFlYjM1MjY1YWMwYmY5N2Y2MzI2MDMxNmEzMC4uMGY4MjE5ZDRjY2I1MWVjYTUy
NWQ4MjlhNzYwNmIyN2IwZmEyNzMwMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21h
a2V2YWx1ZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2V2YWx1ZXMucGwKQEAgLTIw
NCw4ICsyMDQsOCBAQCBwcmludCBIRUFERVIgImNvbnN0IHNpemVfdCBtYXhDU1NWYWx1ZUtleXdv
cmRMZW5ndGggPSAiIC4gJG1heExlbiAuICI7XG4iOwogcHJpbnQgSEVBREVSIDw8ICJFT0YiOwog
CiBjb25zdCBjaGFyKiBnZXRWYWx1ZU5hbWUodW5zaWduZWQgc2hvcnQgaWQpOwotY29uc3QgV1RG
OjpBdG9tU3RyaW5nJiBnZXRWYWx1ZU5hbWVBdG9tU3RyaW5nKENTU1ZhbHVlSUQgaWQpOwotV1RG
OjpTdHJpbmcgZ2V0VmFsdWVOYW1lU3RyaW5nKENTU1ZhbHVlSUQgaWQpOworY29uc3QgQXRvbVN0
cmluZyYgZ2V0VmFsdWVOYW1lQXRvbVN0cmluZyhDU1NWYWx1ZUlEIGlkKTsKK1N0cmluZyBnZXRW
YWx1ZU5hbWVTdHJpbmcoQ1NTVmFsdWVJRCBpZCk7CiAKIGlubGluZSBDU1NWYWx1ZUlEIGNvbnZl
cnRUb0NTU1ZhbHVlSUQoaW50IHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCmluZGV4IDBkYTFmYjA2YzI4YjE3NzhhZTFlNTU1
Njc4NGFjOThkYThjYTk0NDcuLjM3YTExNTFhZGEyZTk3NWI0Y2M0N2Q3YjZlNDc5NjgzZDFjMTYz
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBh
dGhzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRo
cy5jcHAKQEAgLTExMzUsNyArMTEzNSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4K
IHN0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtVHJhbnNsYXRlQXJndW1lbnRzKENoYXJUeXBlKiYg
cG9zLCBDaGFyVHlwZSogZW5kLCB1bnNpZ25lZCBleHBlY3RlZENvdW50LCBDU1NGdW5jdGlvblZh
bHVlKiB0cmFuc2Zvcm1WYWx1ZSkKIHsKICAgICB3aGlsZSAoZXhwZWN0ZWRDb3VudCkgewotICAg
ICAgICBzaXplX3QgZGVsaW1pdGVyID0gV1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3Rl
ZENvdW50ID09IDEgPyAnKScgOiAnLCcpOworICAgICAgICBzaXplX3QgZGVsaW1pdGVyID0gZmlu
ZChwb3MsIGVuZCAtIHBvcywgZXhwZWN0ZWRDb3VudCA9PSAxID8gJyknIDogJywnKTsKICAgICAg
ICAgaWYgKGRlbGltaXRlciA9PSBub3RGb3VuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVsaW1pdGVyKTsKQEAgLTExNTcsNyArMTE1Nyw3IEBAIHN0YXRpYyBib29sIHBhcnNlVHJhbnNm
b3JtVHJhbnNsYXRlQXJndW1lbnRzKENoYXJUeXBlKiYgcG9zLCBDaGFyVHlwZSogZW5kLCB1bnNp
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9y
bUFuZ2xlQXJndW1lbnQoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIENTU0Z1bmN0aW9u
VmFsdWUqIHRyYW5zZm9ybVZhbHVlKQogewotICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBXVEY6OmZp
bmQocG9zLCBlbmQgLSBwb3MsICcpJyk7CisgICAgc2l6ZV90IGRlbGltaXRlciA9IGZpbmQocG9z
LCBlbmQgLSBwb3MsICcpJyk7CiAgICAgaWYgKGRlbGltaXRlciA9PSBub3RGb3VuZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTc5LDcgKzExNzksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhclR5cGU+CiBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyhD
aGFyVHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCwgdW5zaWduZWQgZXhwZWN0ZWRDb3VudCwgQ1NT
RnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUpCiB7CiAgICAgd2hpbGUgKGV4cGVjdGVkQ291
bnQpIHsKLSAgICAgICAgc2l6ZV90IGRlbGltaXRlciA9IFdURjo6ZmluZChwb3MsIGVuZCAtIHBv
cywgZXhwZWN0ZWRDb3VudCA9PSAxID8gJyknIDogJywnKTsKKyAgICAgICAgc2l6ZV90IGRlbGlt
aXRlciA9IGZpbmQocG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6ICcs
Jyk7CiAgICAgICAgIGlmIChkZWxpbWl0ZXIgPT0gbm90Rm91bmQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50TGVuZ3RoID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGRlbGltaXRlcik7CkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBzdGF0aWMgYm9vbCB0
cmFuc2Zvcm1DYW5MaWtlbHlVc2VGYXN0UGF0aChjb25zdCBDaGFyVHlwZSogY2hhcnMsIHVuc2ln
bmVkIGxlbmd0aAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9Ci0gICAgICAgIHNpemVfdCBhcmd1bWVudHNFbmQgPSBXVEY6OmZpbmQoY2hhcnMs
IGxlbmd0aCwgJyknLCBpKTsKKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50c0VuZCA9IGZpbmQoY2hh
cnMsIGxlbmd0aCwgJyknLCBpKTsKICAgICAgICAgaWYgKGFyZ3VtZW50c0VuZCA9PSBub3RGb3Vu
ZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUg
ZW5kIG9mIHRoZSBhcmd1bWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDg1OTE4ZTVhN2NmYzViYzU1MTAxZDI5MWRiMzk0MWU2
MzE4ZmRiNzEuLjVmYjk0MDdmZmZiNjQ1MGNlN2Q2MDJlOWQzYWQyZWYxNzE1OWI1OTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0x
MzIsNyArMTMyLDcgQEAgc3RhdGljIGJvb2wgaXNBcHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29yZChj
b25zdCBjaGFyKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkIGxlbmcKICAgICAmJiAhaGFzUHJlZml4
KHZhbHVlS2V5d29yZCwgbGVuZ3RoLCBhcHBsZVN5c3RlbVByZWZpeCkKICAgICAmJiAhaGFzUHJl
Zml4KHZhbHVlS2V5d29yZCwgbGVuZ3RoLCBhcHBsZVBheVByZWZpeCkKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAmJiAhV1RGOjplcXVhbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
dmFsdWVLZXl3b3JkKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGFwcGxlV2lyZWxl
c3NQbGF5YmFja1RhcmdldEFjdGl2ZSksIGxlbmd0aCkKKyAgICAmJiAhZXF1YWwocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlS2V5d29yZCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihhcHBsZVdpcmVsZXNzUGxheWJhY2tUYXJnZXRBY3RpdmUpLCBsZW5ndGgpCiAj
ZW5kaWYKICAgICA7CiB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIENTU1ZhbHVlSUQgY3Nz
VmFsdWVLZXl3b3JkSUQoY29uc3QgQ2hhcmFjdGVyVHlwZSogdmFsdWVLZXl3b3JkLCB1bnNpZ25l
ZAogICAgICAgICBDaGFyYWN0ZXJUeXBlIGMgPSB2YWx1ZUtleXdvcmRbaV07CiAgICAgICAgIGlm
ICghYyB8fCBjID49IDB4N0YpCiAgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOyAv
LyBpbGxlZ2FsIGtleXdvcmQuCi0gICAgICAgIGJ1ZmZlcltpXSA9IFdURjo6dG9BU0NJSUxvd2Vy
KGMpOworICAgICAgICBidWZmZXJbaV0gPSB0b0FTQ0lJTG93ZXIoYyk7CiAgICAgfQogICAgIGJ1
ZmZlcltsZW5ndGhdID0gJ1wwJzsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAppbmRleCAwNGUxYzg0Y2I1ZmFi
NjgzOGQ0ZTc2NDE5OTBlZTU0NzU4MDMxYTlmLi4zZDRmZjk0MGU0Y2Q1NGUxNmUwYjUxZDcxODYy
MjNmNzkwNGU2M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCkBAIC0zNzQ0LDkgKzM3NDQsOSBAQCBzdGQ6Om9w
dGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVHZW5lcmljRmFtaWx5UmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBjb25zdW1lSWRlbnRSYW5nZVJhdyhyYW5nZSwgQ1NT
VmFsdWVTZXJpZiwgQ1NTVmFsdWVXZWJraXRCb2R5KTsKIH0KIAotc3RkOjpvcHRpb25hbDxXVEY6
OlZlY3RvcjxGb250RmFtaWx5UmF3Pj4gY29uc3VtZUZvbnRGYW1pbHlSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxGb250RmFtaWx5UmF3Pj4gY29u
c3VtZUZvbnRGYW1pbHlSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7Ci0gICAgV1RG
OjpWZWN0b3I8Rm9udEZhbWlseVJhdz4gbGlzdDsKKyAgICBWZWN0b3I8Rm9udEZhbWlseVJhdz4g
bGlzdDsKICAgICBkbyB7CiAgICAgICAgIGlmIChhdXRvIGlkZW50ID0gY29uc3VtZUdlbmVyaWNG
YW1pbHlSYXcocmFuZ2UpKQogICAgICAgICAgICAgbGlzdC5hcHBlbmQoeyAqaWRlbnQgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5oIGIvU291
cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuaAppbmRleCAwNGUxYzAwN2U5OWEy
YWZkYzU0YjkxNmU4ZjgyODU1OTBmZjljMGI4Li4xYjNkN2YxNDAzNTFlNzAxNzRlNGYxYzg4OTUx
ODVhNWEzZjQwNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JD
b21waWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmgK
QEAgLTYxLDcgKzYxLDcgQEAgaW5saW5lIHVuc2lnbmVkIHJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxl
Y3RvckNoZWNrZXIoQ29tcGlsZWRTZWxlY3RvciYgY29tcGlsZWRTZWwKICAgICAgICAgcmV0dXJu
IHZtRW50cnlUb0NTU0pJVChiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbGVtZW50KSwgYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4odmFsdWUpLCAwLCBjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogI2VuZGlmCiAgICAgdXNpbmcgUnVsZUNvbGxlY3Rv
clNpbXBsZVNlbGVjdG9yQ2hlY2tlciA9IHVuc2lnbmVkKCopKGNvbnN0IEVsZW1lbnQqLCB1bnNp
Z25lZCopOwotICAgIHJldHVybiBXVEY6OnVudGFnQ0Z1bmN0aW9uUHRyPFJ1bGVDb2xsZWN0b3JT
aW1wbGVTZWxlY3RvckNoZWNrZXIsIEpTQzo6Q1NTU2VsZWN0b3JQdHJUYWc+KGNvbXBpbGVkU2Vs
ZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoZWxlbWVudCwgdmFsdWUp
OworICAgIHJldHVybiB1bnRhZ0NGdW5jdGlvblB0cjxSdWxlQ29sbGVjdG9yU2ltcGxlU2VsZWN0
b3JDaGVja2VyLCBKU0M6OkNTU1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVjdG9yLmNvZGVS
ZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGVsZW1lbnQsIHZhbHVlKTsKIH0KIAogaW5s
aW5lIHVuc2lnbmVkIHF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIoQ29tcGlsZWRT
ZWxlY3RvciYgY29tcGlsZWRTZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKQEAgLTcy
LDcgKzcyLDcgQEAgaW5saW5lIHVuc2lnbmVkIHF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNo
ZWNrZXIoQ29tcGlsZWRTZWxlY3RvciYgY29tcGlsZWRTZWwKICAgICAgICAgcmV0dXJuIHZtRW50
cnlUb0NTU0pJVChiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbGVtZW50KSwgMCwgMCwgY29tcGls
ZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICNlbmRpZgog
ICAgIHVzaW5nIFF1ZXJ5U2VsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgPSB1bnNpZ25lZCgq
KShjb25zdCBFbGVtZW50Kik7Ci0gICAgcmV0dXJuIFdURjo6dW50YWdDRnVuY3Rpb25QdHI8UXVl
cnlTZWxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlciwgSlNDOjpDU1NTZWxlY3RvclB0clRhZz4o
Y29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShlbGVt
ZW50KTsKKyAgICByZXR1cm4gdW50YWdDRnVuY3Rpb25QdHI8UXVlcnlTZWxlY3RvclNpbXBsZVNl
bGVjdG9yQ2hlY2tlciwgSlNDOjpDU1NTZWxlY3RvclB0clRhZz4oY29tcGlsZWRTZWxlY3Rvci5j
b2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShlbGVtZW50KTsKIH0KIAogaW5saW5l
IHVuc2lnbmVkIHJ1bGVDb2xsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0
KENvbXBpbGVkU2VsZWN0b3ImIGNvbXBpbGVkU2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQsIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCog
dmFsdWUpCkBAIC04Myw3ICs4Myw3IEBAIGlubGluZSB1bnNpZ25lZCBydWxlQ29sbGVjdG9yU2Vs
ZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dChDb21waWxlZFNlbGVjdG9yCiAgICAgICAg
IHJldHVybiB2bUVudHJ5VG9DU1NKSVQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZWxlbWVudCks
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSksIGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7CiAjZW5kaWYKICAgICB1c2luZyBSdWxlQ29sbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0
aENoZWNraW5nQ29udGV4dCA9IHVuc2lnbmVkKCopKGNvbnN0IEVsZW1lbnQqLCBTZWxlY3RvckNo
ZWNrZXI6OkNoZWNraW5nQ29udGV4dCosIHVuc2lnbmVkKik7Ci0gICAgcmV0dXJuIFdURjo6dW50
YWdDRnVuY3Rpb25QdHI8UnVsZUNvbGxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0Nv
bnRleHQsIEpTQzo6Q1NTU2VsZWN0b3JQdHJUYWc+KGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoZWxlbWVudCwgY29udGV4dCwgdmFsdWUpOworICAg
IHJldHVybiB1bnRhZ0NGdW5jdGlvblB0cjxSdWxlQ29sbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0
aENoZWNraW5nQ29udGV4dCwgSlNDOjpDU1NTZWxlY3RvclB0clRhZz4oY29tcGlsZWRTZWxlY3Rv
ci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShlbGVtZW50LCBjb250ZXh0LCB2
YWx1ZSk7CiB9CiAKIGlubGluZSB1bnNpZ25lZCBxdWVyeVNlbGVjdG9yU2VsZWN0b3JDaGVja2Vy
V2l0aENoZWNraW5nQ29udGV4dChDb21waWxlZFNlbGVjdG9yJiBjb21waWxlZFNlbGVjdG9yLCBj
b25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29u
dGV4dCogY29udGV4dCkKQEAgLTk0LDcgKzk0LDcgQEAgaW5saW5lIHVuc2lnbmVkIHF1ZXJ5U2Vs
ZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0KENvbXBpbGVkU2VsZWN0b3IK
ICAgICAgICAgcmV0dXJuIHZtRW50cnlUb0NTU0pJVChiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihl
bGVtZW50KSwgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCksIDAsIGNvbXBpbGVkU2Vs
ZWN0b3IuY29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAjZW5kaWYKICAgICB1
c2luZyBRdWVyeVNlbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCA9IHVu
c2lnbmVkKCopKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5n
Q29udGV4dCopOwotICAgIHJldHVybiBXVEY6OnVudGFnQ0Z1bmN0aW9uUHRyPFF1ZXJ5U2VsZWN0
b3JTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0LCBKU0M6OkNTU1NlbGVjdG9yUHRy
VGFnPihjb21waWxlZFNlbGVjdG9yLmNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KGVsZW1lbnQsIGNvbnRleHQpOworICAgIHJldHVybiB1bnRhZ0NGdW5jdGlvblB0cjxRdWVyeVNl
bGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCwgSlNDOjpDU1NTZWxlY3Rv
clB0clRhZz4oY29tcGlsZWRTZWxlY3Rvci5jb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpKShlbGVtZW50LCBjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgU2VsZWN0b3JDb21w
aWxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNWFmNzc2ZTU5YWFlNzEwYTMxY2M0Y2Mz
NDFkMjk3NzkwNDk3Yjk5NC4uOTk0OWNiNWI3NmNjYTdhYjRjN2Q3MzA0ZDU3YTQ2MTE3MDI2Y2Vm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zOTYzLDcgKzM5NjMsNyBAQCB2b2lkIERv
Y3VtZW50Ojp0aGVtZUNvbG9yQ2hhbmdlZCgpCiB9CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NT
UykKLXN0YXRpYyB2b2lkIHByb2Nlc3NDb2xvclNjaGVtZVN0cmluZyhTdHJpbmdWaWV3IGNvbG9y
U2NoZW1lLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU3RyaW5nVmlldyBrZXkpPiYgY2FsbGJh
Y2spCitzdGF0aWMgdm9pZCBwcm9jZXNzQ29sb3JTY2hlbWVTdHJpbmcoU3RyaW5nVmlldyBjb2xv
clNjaGVtZSwgY29uc3QgRnVuY3Rpb248dm9pZChTdHJpbmdWaWV3IGtleSk+JiBjYWxsYmFjaykK
IHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBjb2xvclNjaGVtZS5sZW5ndGgoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyApIHsKQEAgLTg1MTMsNyArODUxMyw3IEBAIFZl
Y3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gRG9jdW1lbnQ6OmdldEFuaW1hdGlvbnMoKQogICAg
IH0pOwogfQogCi1WZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IERvY3VtZW50OjptYXRjaGlu
Z0FuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKEVsZW1lbnQmKT4mIGZ1bmN0aW9u
KQorVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBEb2N1bWVudDo6bWF0Y2hpbmdBbmltYXRp
b25zKGNvbnN0IEZ1bmN0aW9uPGJvb2woRWxlbWVudCYpPiYgZnVuY3Rpb24pCiB7CiAgICAgLy8g
Rm9yIHRoZSBsaXN0IG9mIGFuaW1hdGlvbnMgdG8gYmUgY3VycmVudCwgd2UgbmVlZCB0byBhY2Nv
dW50IGZvciBhbnkgcGVuZGluZyBDU1MgY2hhbmdlcywKICAgICAvLyBzdWNoIGFzIHVwZGF0ZXMg
dG8gQ1NTIEFuaW1hdGlvbnMgYW5kIENTUyBUcmFuc2l0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggODcyYzA1YTVkY2JkYzM2Y2EwOWNiMzUzN2Q0ODM3MTUxNzc1MzhlMi4uNTkyNTc0YmUz
Y2ZlMmYyOGRhZTc2OTM4ZmMxNmNiMTQ1M2I5NTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTE1MzEsNyArMTUzMSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudFRp
bWVsaW5lJiB0aW1lbGluZSgpOwogICAgIERvY3VtZW50VGltZWxpbmUqIGV4aXN0aW5nVGltZWxp
bmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lLmdldCgpOyB9CiAgICAgVmVjdG9yPFJlZlB0
cjxXZWJBbmltYXRpb24+PiBnZXRBbmltYXRpb25zKCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJB
bmltYXRpb24+PiBtYXRjaGluZ0FuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKEVs
ZW1lbnQmKT4mKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IG1hdGNoaW5nQW5p
bWF0aW9ucyhjb25zdCBGdW5jdGlvbjxib29sKEVsZW1lbnQmKT4mKTsKICAgICBEb2N1bWVudFRp
bWVsaW5lc0NvbnRyb2xsZXIqIHRpbWVsaW5lc0NvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBt
X3RpbWVsaW5lc0NvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVu
dFRpbWVsaW5lc0NvbnRyb2xsZXImIGVuc3VyZVRpbWVsaW5lc0NvbnRyb2xsZXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCA1YmZlMzhkYTY0ZTRlZGFlZmVk
Y2MzZGFkODMxZmJmMzhjMWQzMWFiLi42ZTVhYzk5MTA4YmE5YzI5ZmQ2YjNhZGZhMzc2YzI4Yzhk
MjAzZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtMTA0LDcg
KzEwNCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBjb25zdCBXVEY6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1
bWVudC5sb2dnZXIoKTsgfQorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudC5sb2dnZXIoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiRnVsbHNjcmVlbk1hbmFnZXIiOyB9CiAgICAgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGlu
ZVN0eWxlU2hlZXRPd25lci5oCmluZGV4IDRiYTBmYTljYjg4YzRlYjhiZDNmZjEzZGY3NmE4N2Y5
MDdhMDNkZmYuLmEwZTE2ZmQ0MDhmY2VjYzNiMmY1ODNiYjI3ZjgyZDQ0MTgxOWRiNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc1BhcnNpbmdDaGlsZHJlbjsKICAgICBib29sIG1f
bG9hZGluZzsKLSAgICBXVEY6OlRleHRQb3NpdGlvbiBtX3N0YXJ0VGV4dFBvc2l0aW9uOworICAg
IFRleHRQb3NpdGlvbiBtX3N0YXJ0VGV4dFBvc2l0aW9uOwogICAgIEF0b21TdHJpbmcgbV9jb250
ZW50VHlwZTsKICAgICBBdG9tU3RyaW5nIG1fbWVkaWE7CiAgICAgUmVmUHRyPENTU1N0eWxlU2hl
ZXQ+IG1fc2hlZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYzRmMjk1
OTk5MzllYzE2ODMyYzZkZjZjMGNlYzAyMGJjZDQyNTBiNC4uZmJhYTE1MzI5NGRhZmNhNzFlY2Y1
Njg2MTIyNGViZmIyMmRhMWRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApA
QCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgY29uc3QgYXV0byBtYXhVc2VyR2VzdHVyZVByb3BhZ2F0
aW9uVGltZSA9IDFfczsKIAogU2NyaXB0RWxlbWVudDo6U2NyaXB0RWxlbWVudChFbGVtZW50JiBl
bGVtZW50LCBib29sIHBhcnNlckluc2VydGVkLCBib29sIGFscmVhZHlTdGFydGVkKQogICAgIDog
bV9lbGVtZW50KGVsZW1lbnQpCi0gICAgLCBtX3N0YXJ0TGluZU51bWJlcihXVEY6Ok9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCkpCisgICAgLCBtX3N0YXJ0TGluZU51bWJlcihPcmRpbmFsTnVt
YmVyOjpiZWZvcmVGaXJzdCgpKQogICAgICwgbV9wYXJzZXJJbnNlcnRlZChwYXJzZXJJbnNlcnRl
ZCA/IFBhcnNlckluc2VydGVkOjpZZXMgOiBQYXJzZXJJbnNlcnRlZDo6Tm8pCiAgICAgLCBtX2lz
RXh0ZXJuYWxTY3JpcHQoZmFsc2UpCiAgICAgLCBtX2FscmVhZHlTdGFydGVkKGFscmVhZHlTdGFy
dGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKaW5kZXggOGUwNTFmODNjNWJkN2ZjYmE5
YmIwMmU1MTU0YjY1OWJjYTNmZmQ1Zi4uMGU3Mzk3MTQzZGM1NjM4MDI2MzlhNzViZWEzZDgxOWIx
NWQ5OGU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC0xMjIsNyArMTIyLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkg
Y29uc3QgPSAwOwogCiAgICAgRWxlbWVudCYgbV9lbGVtZW50OwotICAgIFdURjo6T3JkaW5hbE51
bWJlciBtX3N0YXJ0TGluZU51bWJlcjsKKyAgICBPcmRpbmFsTnVtYmVyIG1fc3RhcnRMaW5lTnVt
YmVyOwogICAgIFBhcnNlckluc2VydGVkIG1fcGFyc2VySW5zZXJ0ZWQ7CiAgICAgYm9vbCBtX2lz
RXh0ZXJuYWxTY3JpcHQgOiAxOwogICAgIGJvb2wgbV9hbHJlYWR5U3RhcnRlZCA6IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyNWZiMDBlNjEz
MjNlOTgyOTYwYTI4NTBkN2UxMzdiZjUyNmJhNmQ5Li5mNzljM2VkYzg4ZDNlZmYxMTZhNWE2NTgz
NjQ4Y2Q4YWZjMWVhMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKQEAgLTE4NSwyMCArMTg1LDIwIEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAg
ICAgIGVudW0gQ2xlYW51cFRhc2tUYWcgeyBDbGVhbnVwVGFzayB9OwogCi0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6
aXNfYmFzZV9vZjxUYXNrLCBUPjo6dmFsdWUgJiYgc3RkOjppc19jb252ZXJ0aWJsZTxULCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1ZT46OnR5cGU+
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8IXN0ZDo6aXNfYmFzZV9vZjxUYXNrLCBUPjo6dmFsdWUgJiYgc3RkOjppc19jb252
ZXJ0aWJsZTxULCBGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4+Ojp2YWx1
ZT46OnR5cGU+CiAgICAgICAgIFRhc2soVCB0YXNrKQogICAgICAgICAgICAgOiBtX3Rhc2soV1RG
TW92ZSh0YXNrKSkKICAgICAgICAgICAgICwgbV9pc0NsZWFudXBUYXNrKGZhbHNlKQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBUYXNrKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiB0
YXNrKQorICAgICAgICBUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogICAgICAgICAgICAg
OiBtX3Rhc2soW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
eyB0YXNrKCk7IH0pCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhmYWxzZSkKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIFdURjo6RnVu
Y3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KKyAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPFQsIEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPj46OnZhbHVlPjo6dHlwZT4KICAgICAgICAgVGFzayhDbGVhbnVwVGFza1RhZywg
VCB0YXNrKQogICAgICAgICAgICAgOiBtX3Rhc2soV1RGTW92ZSh0YXNrKSkKICAgICAgICAgICAg
ICwgbV9pc0NsZWFudXBUYXNrKHRydWUpCkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgogICAg
ICAgICBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiBtX2lzQ2xlYW51cFRhc2s7
IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik+IG1fdGFzazsKKyAgICAgICAgRnVuY3Rpb248dm9pZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik+IG1fdGFzazsKICAgICAgICAgYm9vbCBtX2lzQ2xlYW51cFRhc2s7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDI1NGQzYWY0
YWFmMGJiMjBhMzMyOWMzYmM3YWVkNDY4YjE4YmNkYTcuLjc5Yjg0YmVkODQyMTUzOTA2NGIwMmNh
NDU1OGJkNzYzMjVkMzZkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAg
LTIwMiw3ICsyMDIsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlRnJvbVN0
cmluZyhjb25zdCBBdG9tU3RyaW5nJiBuZXdTdHlsZVN0cmluZykKIAogdm9pZCBTdHlsZWRFbGVt
ZW50OjpzdHlsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbmV3U3R5bGVTdHJp
bmcsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCiB7Ci0gICAgYXV0byBzdGFy
dExpbmVOdW1iZXIgPSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCk7CisgICAgYXV0
byBzdGFydExpbmVOdW1iZXIgPSBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpOwogICAgIGlm
IChkb2N1bWVudCgpLnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpICYmICFkb2N1bWVudCgpLmlz
SW5Eb2N1bWVudFdyaXRlKCkpCiAgICAgICAgIHN0YXJ0TGluZU51bWJlciA9IGRvY3VtZW50KCku
c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPnRleHRQb3NpdGlvbigpLm1fbGluZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAppbmRleCBhMWE0NTA0NTRjMGJk
ZGM0MWFiNzNhM2ZjZjUwY2Y1NmJiOTQ0ODZhLi4xYzg3NTljMDJhZjM1MTgwODkzZjY3MzAyZDEw
MjdhZTNhYTJhODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1
cmVGb3JNZWRpYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlIHx8IG1fc3RhdGUgPT0gUHJvY2Vzc2luZ1BvdGVudGlhbFVzZXJHZXN0dXJlOyB9CiAgICAg
VXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZXN0dXJlVHlw
ZTsgfQogCi0gICAgdm9pZCBhZGREZXN0cnVjdGlvbk9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9p
ZCAoVXNlckdlc3R1cmVUb2tlbiYpPiYmIG9ic2VydmVyKQorICAgIHZvaWQgYWRkRGVzdHJ1Y3Rp
b25PYnNlcnZlcihGdW5jdGlvbjx2b2lkKFVzZXJHZXN0dXJlVG9rZW4mKT4mJiBvYnNlcnZlcikK
ICAgICB7CiAgICAgICAgIG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYXBwZW5kKFdURk1vdmUob2Jz
ZXJ2ZXIpKTsKICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICBVc2VyR2Vz
dHVyZVRva2VuKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlLCBVc2VyR2VzdHVyZVR5cGUsIERv
Y3VtZW50Kik7CiAKICAgICBQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZSBtX3N0YXRlID0gTm90
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlOwotICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQgKFVz
ZXJHZXN0dXJlVG9rZW4mKT4+IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnM7CisgICAgVmVjdG9yPEZ1
bmN0aW9uPHZvaWQoVXNlckdlc3R1cmVUb2tlbiYpPj4gbV9kZXN0cnVjdGlvbk9ic2VydmVyczsK
ICAgICBVc2VyR2VzdHVyZVR5cGUgbV9nZXN0dXJlVHlwZTsKICAgICBXZWFrSGFzaFNldDxEb2N1
bWVudD4gbV9kb2N1bWVudHNJbXBhY3RlZEJ5VXNlckdlc3R1cmU7CiAgICAgRE9NUGFzdGVBY2Nl
c3NQb2xpY3kgbV9kb21QYXN0ZUFjY2Vzc1BvbGljeSB7IERPTVBhc3RlQWNjZXNzUG9saWN5OjpO
b3RSZXF1ZXN0ZWRZZXQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3Bw
CmluZGV4IDczZGY5NGM0NjRmOWVlNGNjYmYzNTkxMjY4NWM5ZTBjMDc5YjBhNmIuLmQ0NjNkZTAz
YTQyZGUxNDhhYjZlYjc3NTQwNjdlZjdlZDU2NGJhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkKFZpZXdwb3J0RXJyb3JDb2RlLCBTdHJp
bmdWaWV3LCBTdHJpbmdWaWV3KT4gSW50ZXJuYWxWaWV3cG9ydEVycm9ySGFuZGxlcjsKK3R5cGVk
ZWYgRnVuY3Rpb248dm9pZChWaWV3cG9ydEVycm9yQ29kZSwgU3RyaW5nVmlldywgU3RyaW5nVmll
dyk+IEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXI7CiAKICNpZiBQTEFURk9STShHVEspCiBj
b25zdCBmbG9hdCBWaWV3cG9ydEFyZ3VtZW50czo6ZGVwcmVjYXRlZFRhcmdldERQSSA9IDE2MDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKaW5kZXggOTk1NGJkYzFhMDc2MjVl
OTY5YzJjNDY3YjBhZWU2YWY2ZTFjNWQ3Mi4uZGM3MTg3M2JmOWE0MGFhN2QyODk3OGJiMTY1Y2Fj
NGI5OTkwNDdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKQEAgLTE0
Myw3ICsxNDMsNyBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RyaWN0TWluaW11bVNjYWxlRmFj
dG9yVG9WaWV3cG9ydFNpemUoVmlld3BvcnRBdHRyaWJ1dGVzJgogV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZShWaWV3
cG9ydEF0dHJpYnV0ZXMmIHJlc3VsdCk7CiBXRUJDT1JFX0VYUE9SVCBmbG9hdCBjb21wdXRlTWlu
aW11bVNjYWxlRmFjdG9yRm9yQ29udGVudENvbnRhaW5lZChjb25zdCBWaWV3cG9ydEF0dHJpYnV0
ZXMmIHJlc3VsdCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBJbnRTaXplJiBj
b250ZW50U2l6ZSk7CiAKLXR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkKFZpZXdwb3J0RXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmKT4gVmlld3BvcnRFcnJvckhhbmRsZXI7Cit0eXBlZGVmIEZ1bmN0
aW9uPHZvaWQoVmlld3BvcnRFcnJvckNvZGUsIGNvbnN0IFN0cmluZyYpPiBWaWV3cG9ydEVycm9y
SGFuZGxlcjsKIHZvaWQgc2V0Vmlld3BvcnRGZWF0dXJlKFZpZXdwb3J0QXJndW1lbnRzJiwgRG9j
dW1lbnQmLCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSk7CiBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShWaWV3cG9ydEFyZ3VtZW50cyYsIFN0cmluZ1ZpZXcg
a2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBib29sIHZpZXdwb3J0Rml0RW5hYmxlZCwgY29uc3QgVmll
d3BvcnRFcnJvckhhbmRsZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDA3
YTRmMWJmODIyNDNlYzZhNjk1NTdhOTU1NmUzNDgwZDFlYTk1ZTcuLmM2NzEwMjI3ZGRkMTRmNTA2
ZDhmNTIwYzBlODk2Y2M5Y2Q0ZTY5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTQwMTAsNyArNDAxMCw3IEBAIHN0YXRpYyBWZWN0b3I8VGV4dExpc3Q+IGVkaXRhYmxlVGV4dExp
c3RzQXRQb3NpdGlvbkluRGVzY2VuZGluZ09yZGVyKGNvbnN0IFBvc2l0CiBGb250QXR0cmlidXRl
cyBFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpCiB7CiAgICAgUmVmUHRy
PE5vZGU+IG5vZGVUb1JlbW92ZTsKLSAgICBhdXRvIG5vZGVSZW1vdmFsU2NvcGUgPSBXVEY6Om1h
a2VTY29wZUV4aXQoWyZub2RlVG9SZW1vdmVdKCkgeworICAgIGF1dG8gbm9kZVJlbW92YWxTY29w
ZSA9IG1ha2VTY29wZUV4aXQoWyZub2RlVG9SZW1vdmVdKCkgewogICAgICAgICBpZiAobm9kZVRv
UmVtb3ZlKQogICAgICAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlLmNwcAppbmRleCBkZTUzY2MwZmZiZjE0YzRh
YjJlZGEwMjQyODg4MjMwYzk4ZmU0MDk4Li41Yzk0ZGZiOGQwNGQ5MzVjYjU1YzdkZjJhNjZmNjQw
Nzk2MzVhNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2UuY3BwCkBAIC03
MiwxMSArNzIsMTEgQEAgc3RhdGljIFVTZXQqIGdldFNtYXJ0U2V0KGJvb2wgaXNQcmV2aW91c0No
YXJhY3RlcikKICAgICAgICAgdXNldF9hZGRSYW5nZShzbWFydFNldCwgMHgyRjgwMCwgMHgyRjgw
MCArIDB4MDIxRSk7IC8vIENKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMgKDB4MkY4MDAgLSAw
eDJGQTFEKQogCiAgICAgICAgIGlmIChpc1ByZXZpb3VzQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogU2lsbHkgdG8gY29udmVydCB0aGlzIHRvIGEgV1RGOjpTdHJpbmcganVzdCB0
byBsb29wIHRocm91Z2ggdGhlIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAvLyBGSVhNRTogU2ls
bHkgdG8gY29udmVydCB0aGlzIHRvIGEgU3RyaW5nIGp1c3QgdG8gbG9vcCB0aHJvdWdoIHRoZSBj
aGFyYWN0ZXJzLgogICAgICAgICAgICAgYWRkQWxsQ29kZVBvaW50cyhzbWFydFNldCwgIihbXCJc
JyMkLy1geyJfcyk7CiAgICAgICAgICAgICBwcmVTbWFydFNldCA9IHNtYXJ0U2V0OwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8gRklYTUU6IFNpbGx5IHRvIGNvbnZlcnQgdGhpcyB0
byBhIFdURjo6U3RyaW5nIGp1c3QgdG8gbG9vcCB0aHJvdWdoIHRoZSBjaGFyYWN0ZXJzLgorICAg
ICAgICAgICAgLy8gRklYTUU6IFNpbGx5IHRvIGNvbnZlcnQgdGhpcyB0byBhIFN0cmluZyBqdXN0
IHRvIGxvb3AgdGhyb3VnaCB0aGUgY2hhcmFjdGVycy4KICAgICAgICAgICAgIGFkZEFsbENvZGVQ
b2ludHMoc21hcnRTZXQsICIpXS4sOzo/XCchXCIlKi0vfSJfcyk7CiAKICAgICAgICAgICAgIC8v
IFB1bmN0dWF0aW9uIChrQ0ZDaGFyYWN0ZXJTZXRQdW5jdHVhdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXgg
YjRlMTVmZWIwY2E1Mzg2NWExOTI5NjAwOTg0YzEzZGJmOGVhNWVkMC4uNDc0MjlkNTkxN2EyM2Ey
ZWRhZTE2ZDBmNzdmOTQxMmNhOGY1NmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTM4OCwxMyArMzg4LDEz
IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnBhcnNlKE1hbmlwdWxhdGlvblVu
aXQmIHVuaXQsIGNvbnN0IFN0cmluZyYgdGV4CiB7CiAgICAgRXhjbHVzaW9uUnVsZU1hdGNoZXIg
ZXhjbHVzaW9uUnVsZU1hdGNoZXIobV9leGNsdXNpb25SdWxlcyk7CiAgICAgYm9vbCBpc05vZGVF
eGNsdWRlZCA9IGV4Y2x1c2lvblJ1bGVNYXRjaGVyLmlzRXhjbHVkZWQoJnRleHROb2RlKSB8fCBz
aG91bGRFeGNsdWRlTm9kZUJhc2VkT25TdHlsZSh0ZXh0Tm9kZSk7Ci0gICAgc2l6ZV90IHBvc2l0
aW9uT2ZMYXN0Tm9uSFRNTFNwYWNlID0gV1RGOjpub3RGb3VuZDsKKyAgICBzaXplX3QgcG9zaXRp
b25PZkxhc3ROb25IVE1MU3BhY2UgPSBub3RGb3VuZDsKICAgICBzaXplX3Qgc3RhcnRQb3NpdGlv
bk9mQ3VycmVudFRva2VuID0gMDsKICAgICBzaXplX3QgaW5kZXggPSAwOwogICAgIGZvciAoOyBp
bmRleCA8IHRleHQubGVuZ3RoKCk7ICsraW5kZXgpIHsKICAgICAgICAgYXV0byBjaGFyYWN0ZXIg
PSB0ZXh0W2luZGV4XTsKICAgICAgICAgaWYgKGlzVG9rZW5EZWxpbWl0ZXIoY2hhcmFjdGVyKSkg
ewotICAgICAgICAgICAgaWYgKHBvc2l0aW9uT2ZMYXN0Tm9uSFRNTFNwYWNlICE9IFdURjo6bm90
Rm91bmQgJiYgc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuIDw9IHBvc2l0aW9uT2ZMYXN0Tm9u
SFRNTFNwYWNlKSB7CisgICAgICAgICAgICBpZiAocG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2Ug
IT0gbm90Rm91bmQgJiYgc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuIDw9IHBvc2l0aW9uT2ZM
YXN0Tm9uSFRNTFNwYWNlKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzdHJpbmdGb3JUb2tlbiA9
IHRleHQuc3Vic3RyaW5nKHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiwgcG9zaXRpb25PZkxh
c3ROb25IVE1MU3BhY2UgKyAxIC0gc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuKTsKICAgICAg
ICAgICAgICAgICB1bml0LnRva2Vucy5hcHBlbmQoTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2Vu
SWRlbnRpZmllci5nZW5lcmF0ZSgpLCBzdHJpbmdGb3JUb2tlbiwgdG9rZW5JbmZvKCZ0ZXh0Tm9k
ZSksIGlzTm9kZUV4Y2x1ZGVkIH0pOwogICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25PZkN1
cnJlbnRUb2tlbiA9IHBvc2l0aW9uT2ZMYXN0Tm9uSFRNTFNwYWNlICsgMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAppbmRleCAw
ZDk3NWIzNjg5NjI5NzM2MTExNmY4NDcwOWEzMjE4NTM2ZTM4OWJmLi5lZTY3ODA4MGYxN2ZhNjc1
NWQ0OTE4YTRjZWYxZmU5YWUzOGJjODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVi
bGljOgogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxFeGNsdXNpb25SdWxlPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKLSAgICB1c2luZyBN
YW5pcHVsYXRpb25JdGVtQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnQmLCBj
b25zdCBWZWN0b3I8TWFuaXB1bGF0aW9uSXRlbT4mKT47CisgICAgdXNpbmcgTWFuaXB1bGF0aW9u
SXRlbUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxNYW5p
cHVsYXRpb25JdGVtPiYpPjsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5n
UGFyYWdyYXBocyhNYW5pcHVsYXRpb25JdGVtQ2FsbGJhY2smJiwgVmVjdG9yPEV4Y2x1c2lvblJ1
bGU+JiYgPSB7IH0pOwogCiAgICAgdm9pZCBkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQoRWxl
bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5o
CmluZGV4IDExMGI4ZjgyNmY4NDE3NWRkOTJhYTQwZTg3ZWMyYTNhZmM3ZDQ3MWUuLmRlYmYwZjc2
MTliZjcyMWVmZTM2Y2M3MWZlYTY2NmY0YWZiMGZkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmgKQEAgLTYxLDExICs2MSwxMSBAQCBwdWJsaWM6
CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIG1vdmUvdW5pZnkgZGljdGlvbmFyeVBvcHVwSW5mb0Zv
clJhbmdlIGhlcmUgdG9vLgogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2hvd1Bv
cHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mLCBDb2NvYVZpZXcgKiwgY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0b3ImKT4mIHRleHRJbmRpY2F0b3JJbnN0YWxsYXRpb25D
YWxsYmFjaywgY29uc3QgV1RGOjpGdW5jdGlvbjxGbG9hdFJlY3QoRmxvYXRSZWN0KT4mIHJvb3RW
aWV3VG9WaWV3Q29udmVyc2lvbkNhbGxiYWNrID0gbnVsbHB0ciwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgY2xlYXJUZXh0SW5kaWNhdG9yID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgc2hvd1BvcHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mLCBDb2NvYVZp
ZXcgKiwgY29uc3QgRnVuY3Rpb248dm9pZChUZXh0SW5kaWNhdG9yJik+JiB0ZXh0SW5kaWNhdG9y
SW5zdGFsbGF0aW9uQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPEZsb2F0UmVjdChGbG9hdFJlY3Qp
PiYgcm9vdFZpZXdUb1ZpZXdDb252ZXJzaW9uQ2FsbGJhY2sgPSBudWxscHRyLCBGdW5jdGlvbjx2
b2lkKCk+JiYgY2xlYXJUZXh0SW5kaWNhdG9yID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgaGlkZVBvcHVwKCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXS1JldmVhbENvbnRyb2xsZXIgYW5pbWF0aW9uQ29udHJv
bGxlckZvclBvcHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mLCBOU1ZpZXcgKiwgY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0b3ImKT4mIHRleHRJbmRpY2F0b3JJbnN0YWxs
YXRpb25DYWxsYmFjaywgY29uc3QgV1RGOjpGdW5jdGlvbjxGbG9hdFJlY3QoRmxvYXRSZWN0KT4m
IHJvb3RWaWV3VG9WaWV3Q29udmVyc2lvbkNhbGxiYWNrID0gbnVsbHB0ciwgV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY2xlYXJUZXh0SW5kaWNhdG9yID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFdLUmV2ZWFsQ29udHJvbGxlciBhbmltYXRpb25Db250cm9sbGVyRm9yUG9w
dXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYsIE5TVmlldyAqLCBjb25zdCBGdW5jdGlvbjx2
b2lkKFRleHRJbmRpY2F0b3ImKT4mIHRleHRJbmRpY2F0b3JJbnN0YWxsYXRpb25DYWxsYmFjaywg
Y29uc3QgRnVuY3Rpb248RmxvYXRSZWN0KEZsb2F0UmVjdCk+JiByb290Vmlld1RvVmlld0NvbnZl
cnNpb25DYWxsYmFjayA9IG51bGxwdHIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjbGVhclRleHRJbmRp
Y2F0b3IgPSBudWxscHRyKTsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAgICAgCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGRjNmM4MDMwNGE4MzllYWVhYzYyOTU0NzgyODdl
MDBhYThiMDQwNTkuLjI1ZjRkOTVlNjAzNWEzMDdlYTg2MWE0MDEzZDI4MDVmNjk4MzIxYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgRWxl
bWVudEF0dHJpYnV0ZSB7CiAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lOwogfTsKIAot
dm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoUmVmPERvY3VtZW50RnJhZ21lbnQ+
JiYgZnJhZ21lbnQsIFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBVUkwmKT4gc2hvdWxkUmVtb3Zl
VVJMKQordm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoUmVmPERvY3VtZW50RnJh
Z21lbnQ+JiYgZnJhZ21lbnQsIEZ1bmN0aW9uPGJvb2woY29uc3QgVVJMJik+IHNob3VsZFJlbW92
ZVVSTCkKIHsKICAgICBWZWN0b3I8RWxlbWVudEF0dHJpYnV0ZT4gYXR0cmlidXRlc1RvUmVtb3Zl
OwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGZy
YWdtZW50KSkgewpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVh
dGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogICAgIHJldHVybiBwYWdlOwogfQogCi1T
dHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBNU09MaXN0UXVpcmtz
IG1zb0xpc3RRdWlya3MsIHN0ZDo6b3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50
RnJhZ21lbnQmKT4+IGZyYWdtZW50U2FuaXRpemVyKQorU3RyaW5nIHNhbml0aXplTWFya3VwKGNv
bnN0IFN0cmluZyYgcmF3SFRNTCwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBzdGQ6Om9w
dGlvbmFsPEZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6
ZXIpCiB7CiAgICAgYXV0byBwYWdlID0gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50
KCk7CiAgICAgRG9jdW1lbnQqIHN0YWdpbmdEb2N1bWVudCA9IHBhZ2UtPm1haW5GcmFtZSgpLmRv
Y3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCBiYjc1OTY0MzhlZTAyODZhOGMx
ODg2ODU5ODhlOWY4NWMyNmRkNTBkLi45MjUxMWE5MzQ2NmJhOTQ4NDEyNDFiYWZkNjRlMGZjZDEz
ZTExYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTUxLDExICs1MSwxMSBAQCBzdHJ1
Y3QgUHJlc2VudGF0aW9uU2l6ZTsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIAogdm9pZCByZXBsYWNl
U3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBIYXNoTWFwPEF0b21TdHJp
bmcsIEF0b21TdHJpbmc+JiYpOwotdm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMo
UmVmPERvY3VtZW50RnJhZ21lbnQ+JiYsIFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBVUkwmKT4g
c2hvdWxkUmVtb3ZlVVJMKTsKK3ZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJl
ZjxEb2N1bWVudEZyYWdtZW50PiYmLCBGdW5jdGlvbjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRS
ZW1vdmVVUkwpOwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXpp
bmdXZWJDb250ZW50KCk7CiBlbnVtIGNsYXNzIE1TT0xpc3RRdWlya3MgOiBib29sIHsgQ2hlY2tJ
Zk5lZWRlZCwgRGlzYWJsZWQgfTsKLVN0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcm
LCBNU09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIHN0ZDo6b3B0aW9uYWw8
V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50U2FuaXRpemVy
ID0gc3RkOjpudWxsb3B0KTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmLCBN
U09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIHN0ZDo6b3B0aW9uYWw8RnVu
Y3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXplciA9IHN0ZDo6
bnVsbG9wdCk7CiBTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFJl
ZjxEb2N1bWVudEZyYWdtZW50PiYmLCBEb2N1bWVudCYsIE1TT0xpc3RRdWlya3MsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxNYXJrdXApOwogCiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb25zdCBTaW1wbGVSYW5nZSYgY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3Ry
ZWFtLmNwcAppbmRleCBhODM1MDU1YmFjMjhjMmI3NTljZWQwOWRlNjg3NGI5YmRmNzc3Nzg0Li5h
MTlkZDNiNjVmMWYzZGZkNTAxZDZjN2RhYjc5YzM1MmVhOWE1ZDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgQXN5bmNG
aWxlU3RyZWFtOjp+QXN5bmNGaWxlU3RyZWFtKCkKICAgICB9KTsKIH0KIAotdm9pZCBBc3luY0Zp
bGVTdHJlYW06OnBlcmZvcm0oV1RGOjpGdW5jdGlvbjxXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZVN0
cmVhbUNsaWVudCYpPihGaWxlU3RyZWFtJik+JiYgb3BlcmF0aW9uKQordm9pZCBBc3luY0ZpbGVT
dHJlYW06OnBlcmZvcm0oRnVuY3Rpb248RnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+
KEZpbGVTdHJlYW0mKT4mJiBvcGVyYXRpb24pCiB7CiAgICAgYXV0byYgaW50ZXJuYWxzID0gKm1f
aW50ZXJuYWxzOwogICAgIGNhbGxPbkZpbGVUaHJlYWQoWyZpbnRlcm5hbHMsIG9wZXJhdGlvbiA9
IFdURk1vdmUob3BlcmF0aW9uKV0gewpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgQXN5bmNGaWxl
U3RyZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gZXhwZWN0CiB7CiAgICAgLy8gRklYTUU6IEV4cGxpY2l0IHJldHVybiB0eXBlIGhlcmUgYW5k
IGluIGFsbCB0aGUgb3RoZXIgY2FzZXMgbGlrZSB0aGlzIGJlbG93IGlzIGEgd29ya2Fyb3VuZCBm
b3IgYSBkZWZpY2llbmN5CiAgICAgLy8gaW4gdGhlIFdpbmRvd3MgY29tcGlsZXIgYXQgdGhlIHRp
bWUgb2YgdGhpcyB3cml0aW5nLiBDb3VsZCByZW1vdmUgaXQgaWYgdGhhdCBpcyByZXNvbHZlZC4K
LSAgICBwZXJmb3JtKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lXShGaWxlU3RyZWFtJiBzdHJlYW0pIC0+IFdURjo6RnVuY3Rpb248dm9pZChGaWxl
U3RyZWFtQ2xpZW50Jik+IHsKKyAgICBwZXJmb3JtKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHko
KSwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lXShGaWxlU3RyZWFtJiBzdHJlYW0pIC0+IEZ1bmN0
aW9uPHZvaWQoRmlsZVN0cmVhbUNsaWVudCYpPiB7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0g
c3RyZWFtLmdldFNpemUocGF0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKICAgICAgICAg
cmV0dXJuIFtzaXplXShGaWxlU3RyZWFtQ2xpZW50JiBjbGllbnQpIHsKICAgICAgICAgICAgIGNs
aWVudC5kaWRHZXRTaXplKHNpemUpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQXN5bmNGaWxl
U3RyZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gZXhwZWN0CiB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6b3BlbkZvclJlYWQoY29uc3QgU3RyaW5n
JiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQogewogICAgIC8vIEZJ
WE1FOiBFeHBsaWNpdCByZXR1cm4gdHlwZSBoZXJlIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBkZWZp
Y2llbmN5IGluIHRoZSBXaW5kb3dzIGNvbXBpbGVyIGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGlu
Zy4KLSAgICBwZXJmb3JtKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgb2Zmc2V0LCBsZW5n
dGhdKEZpbGVTdHJlYW0mIHN0cmVhbSkgLT4gV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1D
bGllbnQmKT4geworICAgIHBlcmZvcm0oW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBvZmZz
ZXQsIGxlbmd0aF0oRmlsZVN0cmVhbSYgc3RyZWFtKSAtPiBGdW5jdGlvbjx2b2lkKEZpbGVTdHJl
YW1DbGllbnQmKT4gewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBzdHJlYW0ub3BlbkZvclJlYWQo
cGF0aCwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gW3N1Y2Nlc3NdKEZpbGVTdHJl
YW1DbGllbnQmIGNsaWVudCkgewogICAgICAgICAgICAgY2xpZW50LmRpZE9wZW4oc3VjY2Vzcyk7
CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBBc3luY0ZpbGVTdHJlYW06OmNsb3NlKCkKIAogdm9p
ZCBBc3luY0ZpbGVTdHJlYW06OnJlYWQodm9pZCogYnVmZmVyLCBpbnQgbGVuZ3RoKQogewotICAg
IHBlcmZvcm0oW2J1ZmZlciwgbGVuZ3RoXShGaWxlU3RyZWFtJiBzdHJlYW0pIC0+IFdURjo6RnVu
Y3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+IHsKKyAgICBwZXJmb3JtKFtidWZmZXIsIGxl
bmd0aF0oRmlsZVN0cmVhbSYgc3RyZWFtKSAtPiBGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGll
bnQmKT4gewogICAgICAgICBpbnQgYnl0ZXNSZWFkID0gc3RyZWFtLnJlYWQoYnVmZmVyLCBsZW5n
dGgpOwogICAgICAgICByZXR1cm4gW2J5dGVzUmVhZF0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50
KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVhZChieXRlc1JlYWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggZWJiYTdmMjJjM2JhZDNiMzQzYThmMThl
NWY1ODMwYzlkNjM4NGQwOC4uNjQ1MjhlMzk0ODAzNmZmZGEzOGUxOTMyM2VmYmY2YjZlM2E4MWU1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBw
ZXJmb3JtKFdURjo6RnVuY3Rpb248V1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVTdHJlYW1DbGllbnQm
KT4oRmlsZVN0cmVhbSYpPiYmKTsKKyAgICB2b2lkIHBlcmZvcm0oRnVuY3Rpb248RnVuY3Rpb248
dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+KEZpbGVTdHJlYW0mKT4mJik7CiAKICAgICBzdHJ1Y3Qg
SW50ZXJuYWxzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbHM+IG1faW50ZXJuYWxzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggOGJmNzRjZTMzMWZjYThjYzhiNDZhNTMzNGIyNjA1
MGUzZGJhMDNlNy4uOTc0NGIwMTU3YWUxMWMxMTBjZDhjMjg5ZTUyN2NiZmEwMmMxMGU5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgaW50NjRfdCBGaWxlOjps
YXN0TW9kaWZpZWQoKSBjb25zdAogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gV2FsbFRpbWU6
Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzQXM8aW50NjRfdD4oKTsKIAot
ICAgIHJldHVybiBXVEY6OnRpbWVDbGlwKHJlc3VsdCk7CisgICAgcmV0dXJuIHRpbWVDbGlwKHJl
c3VsdCk7CiB9CiAKIHZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVjdGl2
ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29udGVudFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAxNTdhMWU3ODdjOTY1
MzIxMjZkOTFlNWIzN2JlNjQ1NzhlZTM0N2M5Li4xMmRkZWZlZDRmNjBlNzRjMTYxYzYwOTE1MjI0
ZGVlOGI0ZTY2ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHAKQEAgLTQ5LDggKzQ5LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAK
LXVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gQmxvYlVybE9yaWdp
bk1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggNWFlMjBjYzU0ZGU3MjM0M2JhM2Iz
NzdmMmEzY2YwOGVmNzNmNDZmYy4uMGU3M2QyOWEyMzUyMzY5ZTFkOTU5ZmY5ZWNjZTk1Nzg0ZWY5
MjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBBdXRv
ZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9sRWxlbWVudChj
b25zdCBIVE1MRm9ybUNvbnRybwogCiAgICAgICAgIC8vIDQuIExldCBJREwgdmFsdWUgYmUgdGhl
IGNvbmNhdGVuYXRpb24gb2YgY29udGFjdCwgYSBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVyLCBhbmQg
dGhlIHByZXZpb3VzCiAgICAgICAgIC8vIHZhbHVlIG9mIElETCB2YWx1ZSAod2hpY2ggYXQgdGhp
cyBwb2ludCB3aWxsIGFsd2F5cyBiZSBmaWVsZCkuCi0gICAgICAgIGlkbFZhbHVlID0gV1RGOjpt
YWtlU3RyaW5nKGNvbnRhY3QsICIgIiwgaWRsVmFsdWUpOworICAgICAgICBpZGxWYWx1ZSA9IG1h
a2VTdHJpbmcoY29udGFjdCwgIiAiLCBpZGxWYWx1ZSk7CiAKICAgICAgICAgLy8gNS4gSWYgdGhl
IGluZGV4dGggZW50cnkgaW4gdG9rZW5zIGlzIHRoZSBmaXJzdCBlbnRyeSwgdGhlbiBza2lwIHRv
IHRoZSBzdGVwIGxhYmVsZWQgZG9uZS4KICAgICAgICAgaWYgKGluZGV4ID09IDApCkBAIC0yODks
NyArMjg5LDcgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAgICAgICAgLy8gNC4gTGV0IElE
TCB2YWx1ZSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBtb2RlLCBhIFUrMDAyMCBTUEFDRSBjaGFy
YWN0ZXIsIGFuZCB0aGUgcHJldmlvdXMKICAgICAgICAgLy8gdmFsdWUgb2YgSURMIHZhbHVlICh3
aGljaCBhdCB0aGlzIHBvaW50IHdpbGwgZWl0aGVyIGJlIGZpZWxkIG9yIHRoZSBjb25jYXRlbmF0
aW9uIG9mIGNvbnRhY3QsCiAgICAgICAgIC8vIGEgc3BhY2UsIGFuZCBmaWVsZCkuCi0gICAgICAg
IGlkbFZhbHVlID0gV1RGOjptYWtlU3RyaW5nKG1vZGUsICIgIiwgaWRsVmFsdWUpOworICAgICAg
ICBpZGxWYWx1ZSA9IG1ha2VTdHJpbmcobW9kZSwgIiAiLCBpZGxWYWx1ZSk7CiAKICAgICAgICAg
Ly8gNS4gSWYgdGhlIGluZGV4dGggZW50cnkgaW4gdG9rZW5zIGlzIHRoZSBmaXJzdCBlbnRyeSwg
dGhlbiBza2lwIHRvIHRoZSBzdGVwIGxhYmVsZWQgZG9uZS4KICAgICAgICAgaWYgKGluZGV4ID09
IDApCkBAIC0zMTgsNyArMzE4LDcgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3JlYXRl
RnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KIAogICAgIC8v
IDIwLiBMZXQgSURMIHZhbHVlIGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mIHNlY3Rpb24sIGEgVSsw
MDIwIFNQQUNFIGNoYXJhY3RlciwgYW5kIHRoZSBwcmV2aW91cwogICAgIC8vIHZhbHVlIG9mIElE
TCB2YWx1ZS4KLSAgICBpZGxWYWx1ZSA9IFdURjo6bWFrZVN0cmluZyhzZWN0aW9uLCAiICIsIGlk
bFZhbHVlKTsKKyAgICBpZGxWYWx1ZSA9IG1ha2VTdHJpbmcoc2VjdGlvbiwgIiAiLCBpZGxWYWx1
ZSk7CiAKICAgICByZXR1cm4geyBmaWVsZCwgaWRsVmFsdWUgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVRva2VuTGlzdC5oCmluZGV4IDQ2Yjg1OTg5OWYxMjQ5NTIzNTEzY2U3NGZlZDQ5OTlmMzRiMGRk
NjguLjZiNzhjNjg3Y2FiNzk1Y2MwODJmYzI2NmI1NjM1Njg1ZWEyNDMwYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9ET01Ub2tlbkxpc3QuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBET01Ub2tlbkxpc3QgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHVzaW5nIElzU3VwcG9ydGVkVG9rZW5GdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248
Ym9vbChEb2N1bWVudCYsIFN0cmluZ1ZpZXcpPjsKKyAgICB1c2luZyBJc1N1cHBvcnRlZFRva2Vu
RnVuY3Rpb24gPSBGdW5jdGlvbjxib29sKERvY3VtZW50JiwgU3RyaW5nVmlldyk+OwogICAgIERP
TVRva2VuTGlzdChFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
SXNTdXBwb3J0ZWRUb2tlbkZ1bmN0aW9uJiYgaXNTdXBwb3J0ZWRUb2tlbiA9IHsgfSk7CiAKICAg
ICB2b2lkIGFzc29jaWF0ZWRBdHRyaWJ1dGVWYWx1ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggZTZhYjBlYzZj
NTkwNmFkN2JiNjNmMjg5NTJmNjMwZTg5ZjZmYjdmYS4uMWU4NWJkNzNhNjg3NTc5ZTczMzZkZTRk
NTdiMGVhYTJlYzExMTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhUTUxJ
bWFnZUVsZW1lbnQ6OkhUTUxJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiAgICAgOiBIVE1M
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1faW1hZ2VMb2FkZXIoV1RGOjptYWtl
VW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpKQorICAgICwgbV9pbWFnZUxvYWRlcihtYWtl
VW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpKQogICAgICwgbV9mb3JtKG51bGxwdHIpCiAg
ICAgLCBtX2Zvcm1TZXRCeVBhcnNlcihmb3JtKQogICAgICwgbV9jb21wb3NpdGVPcGVyYXRvcihD
b21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCmluZGV4IGNiN2I2OWY1OWM1MGVhNTQ3YzQ3YTI4MjQzZDAyZWUwNDdkNGRm
NDYuLmZmMzQ2ZjI1Zjc1ZTRjNThlYmE4ZTZmN2NlOGFkMWEwN2I3NWZmMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNjQ3OSw3ICs2NDc5LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5l
KGJvb2wgdmFsdWUpCiAgICAgfQogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndhaXRGb3JQ
cmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRo
ZW4oRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIpOwogICAgIEFTU0VSVCghbV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRp
b25IYW5kbGVyKTsKQEAgLTY1MTEsNyArNjUxMSw3IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVy
PiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gcGxhdGZvcm1MYXllcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjEyZWZjNThjMmE3OWEyMGQxZjJhZTlh
MzUzYjBmMzA0ODc4MTJjZi4uOTYwODRhMjcwNzBkOWMwY2NhOWQ1MWU2NzdhOTczNmIwMWI0ZjQ1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE4MCwxMCArMTgw
LDEwIEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7
CiAgICAgYm9vbCBpc1ZpZGVvTGF5ZXJJbmxpbmUoKTsKICAgICB2b2lkIHNldFByZXBhcmVkVG9S
ZXR1cm5WaWRlb0xheWVyVG9JbmxpbmUoYm9vbCk7Ci0gICAgdm9pZCB3YWl0Rm9yUHJlcGFyZWRG
b3JJbmxpbmVUaGVuKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0g
W10geyB9KTsKKyAgICB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oRnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICNpZiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZp
ZGVvRnVsbHNjcmVlbkxheWVyKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAjaWZkZWYgX19PQkpDX18KICAgICBQbGF0Zm9ybUxh
eWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgpAQCAtOTI2LDcgKzkyNiw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCk7CiAgICAgdm9pZCBlbnN1cmVNZWRpYUNv
bnRyb2xzU2hhZG93Um9vdCgpOwogCi0gICAgdXNpbmcgSlNTZXR1cEZ1bmN0aW9uID0gV1RGOjpG
dW5jdGlvbjxib29sKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIFNj
cmlwdENvbnRyb2xsZXImLCBET01XcmFwcGVyV29ybGQmKT47CisgICAgdXNpbmcgSlNTZXR1cEZ1
bmN0aW9uID0gRnVuY3Rpb248Ym9vbChKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBTY3JpcHRDb250cm9sbGVyJiwgRE9NV3JhcHBlcldvcmxkJik+OwogICAgIGJvb2wg
c2V0dXBBbmRDYWxsSlMoY29uc3QgSlNTZXR1cEZ1bmN0aW9uJik7CiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgcHJpdmF0ZToKICAg
ICBWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSB7IFZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lIH07CiAgICAgYm9vbCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9wcmVwYXJlZEZvcklubGluZTsKLSAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4gbV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyOworICAgIEZ1bmN0aW9u
PHZvaWQoKT4gbV9wcmVwYXJlZEZvcklubGluZUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgYm9v
bCBtX3RlbXBvcmFyaWx5QWxsb3dpbmdJbmxpbmVQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiB7IGZh
bHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcAppbmRleCAyYzgx
NzViN2QzY2Q2ZGE5NDBlYWM4NGUzODUzYWE4ZDJhY2MxZmU0Li4zMjQxODg5NzFlYTIzMjgyNTYx
ODViMjJjN2I3OTRiMDkyYTBiZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTbG90RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1l
bnQuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgVmVjdG9yPFJlZjxOb2RlPj4gSFRNTFNsb3RFbGVt
ZW50Ojphc3NpZ25lZE5vZGVzKGNvbnN0IEFzc2lnbmVkTm9kZXNPcHRpb25zJiBvcHQKICAgICB9
CiAKICAgICBpZiAoYXV0byogbm9kZXMgPSBhc3NpZ25lZE5vZGVzKCk7IG5vZGVzKSB7Ci0gICAg
ICAgIHJldHVybiBXVEY6OmNvbXBhY3RNYXAoKm5vZGVzLCBbXShhdXRvJiBub2RlV2Vha1B0cikg
LT4gUmVmUHRyPE5vZGU+IHsKKyAgICAgICAgcmV0dXJuIGNvbXBhY3RNYXAoKm5vZGVzLCBbXShh
dXRvJiBub2RlV2Vha1B0cikgLT4gUmVmUHRyPE5vZGU+IHsKICAgICAgICAgICAgIHJldHVybiBu
b2RlV2Vha1B0ci5nZXQoKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTU3LDcgKzE1Nyw3IEBA
IFZlY3RvcjxSZWY8Tm9kZT4+IEhUTUxTbG90RWxlbWVudDo6YXNzaWduZWROb2Rlcyhjb25zdCBB
c3NpZ25lZE5vZGVzT3B0aW9ucyYgb3B0CiAKIFZlY3RvcjxSZWY8RWxlbWVudD4+IEhUTUxTbG90
RWxlbWVudDo6YXNzaWduZWRFbGVtZW50cyhjb25zdCBBc3NpZ25lZE5vZGVzT3B0aW9ucyYgb3B0
aW9ucykgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpjb21wYWN0TWFwKGFzc2lnbmVkTm9kZXMo
b3B0aW9ucyksIFtdKGF1dG8mJiBub2RlKSAtPiBSZWZQdHI8RWxlbWVudD4geworICAgIHJldHVy
biBjb21wYWN0TWFwKGFzc2lnbmVkTm9kZXMob3B0aW9ucyksIFtdKGF1dG8mJiBub2RlKSAtPiBS
ZWZQdHI8RWxlbWVudD4gewogICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8RWxlbWVudD4oV1RGTW92ZShub2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0xpbmtJY29uVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvblR5cGUuaApp
bmRleCBjYmY3MjUzNTQzMThiN2YwNWM4N2U1ODRiYTFmZmQzNTNhMTUzNWQyLi5lNTAxZmJkMmJm
MGVlNGZiNDk5ODg3MDA5NjEzOTcyODliMzA2ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0xpbmtJY29uVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25U
eXBlLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBUaGVz
ZSB2YWx1ZXMgYXJlIGFycmFuZ2VkIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCB3aXRoIFdURjo6
T3B0aW9uU2V0LgorLy8gVGhlc2UgdmFsdWVzIGFyZSBhcnJhbmdlZCBzbyB0aGF0IHRoZXkgY2Fu
IGJlIHVzZWQgd2l0aCBPcHRpb25TZXQuCiAvLyBBbmQgdXNpbmcgaXQgd2l0aCBNYXJrYWJsZSB2
aWEgRW51bU1hcmthYmxlVHJhaXRzLgogLy8gU2VlIFdLTGlua0ljb25UeXBlLgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1pdEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU3VibWl0RXZlbnQuY3BwCmluZGV4IDNhNTY4ZWM2MzRkMTIzOTk0N2EzZmJhYzcyOTg3
Y2RkZGZkMGJlODYuLmI5MGIwZDQ3OTMzMGIwZTkyMmUzYzdkNmI2ODhiMjBkNTc3MzFmNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0RXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvU3VibWl0RXZlbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFN1Ym1pdEV2ZW50KTsK
IAotUmVmPFN1Ym1pdEV2ZW50PiBTdWJtaXRFdmVudDo6Y3JlYXRlKGNvbnN0IFdURjo6QXRvbVN0
cmluZyYgdHlwZSwgSW5pdCYmIGluaXQpCitSZWY8U3VibWl0RXZlbnQ+IFN1Ym1pdEV2ZW50Ojpj
cmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3VibWl0RXZlbnQodHlwZSwgV1RGTW92ZShpbml0KSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCmluZGV4IDA2MDU4YTVhNjhlZGY0ZTFk
MzA0NDg5MDE1OTA1NDVmMWQ3NjgzODUuLmQ0ZmJjMWYwNmFiZWFlYzExMmRhYmRiYzJkODUyOTE1
MjQ4MTdjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKQEAgLTM2
LDIyICszNiwyMiBAQCBVUkxTZWFyY2hQYXJhbXM6OlVSTFNlYXJjaFBhcmFtcyhjb25zdCBTdHJp
bmcmIGluaXQsIERPTVVSTCogYXNzb2NpYXRlZFVSTCkKIHsKIH0KIAotVVJMU2VhcmNoUGFyYW1z
OjpVUkxTZWFyY2hQYXJhbXMoY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywg
U3RyaW5nPj4mIHBhaXJzKQorVVJMU2VhcmNoUGFyYW1zOjpVUkxTZWFyY2hQYXJhbXMoY29uc3Qg
VmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+JiBwYWlycykKICAgICA6IG1fcGFp
cnMocGFpcnMpCiB7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiBVUkxT
ZWFyY2hQYXJhbXM6OmNyZWF0ZShzdGQ6OnZhcmlhbnQ8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Piwg
VmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4sIFN0cmluZz4mJiB2YXJp
YW50KQorRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IFVSTFNlYXJjaFBhcmFtczo6
Y3JlYXRlKHN0ZDo6dmFyaWFudDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+LCBWZWN0b3I8S2V5VmFs
dWVQYWlyPFN0cmluZywgU3RyaW5nPj4sIFN0cmluZz4mJiB2YXJpYW50KQogewogICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFZlY3RvcjxWZWN0b3I8U3RyaW5n
Pj4mIHZlY3RvcikgLT4gRXhjZXB0aW9uT3I8UmVmPFVSTFNlYXJjaFBhcmFtcz4+IHsKLSAgICAg
ICAgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gcGFpcnM7CisgICAg
ICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYWlyczsKICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBwYWlyIDogdmVjdG9yKSB7CiAgICAgICAgICAgICBpZiAocGFpci5z
aXplKCkgIT0gMikKICAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9y
IH07CiAgICAgICAgICAgICBwYWlycy5hcHBlbmQoe3BhaXJbMF0sIHBhaXJbMV19KTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMoV1RGTW92
ZShwYWlycykpKTsKLSAgICB9LCBbJl0oY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0
cmluZywgU3RyaW5nPj4mIHBhaXJzKSAtPiBFeGNlcHRpb25PcjxSZWY8VVJMU2VhcmNoUGFyYW1z
Pj4geworICAgIH0sIFsmXShjb25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5n
Pj4mIHBhaXJzKSAtPiBFeGNlcHRpb25PcjxSZWY8VVJMU2VhcmNoUGFyYW1zPj4gewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVUkxTZWFyY2hQYXJhbXMocGFpcnMpKTsKICAgICB9LCBb
Jl0oY29uc3QgU3RyaW5nJiBzdHJpbmcpIC0+IEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJh
bXM+PiB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVSTFNlYXJjaFBhcmFtcyhzdHJp
bmcsIG51bGxwdHIpKTsKQEAgLTE1MSwxNCArMTUxLDE0IEBAIHZvaWQgVVJMU2VhcmNoUGFyYW1z
Ojp1cGRhdGVGcm9tQXNzb2NpYXRlZFVSTCgpCiAgICAgbV9wYWlycyA9IHNlYXJjaC5zdGFydHNX
aXRoKCc/JykgPyBXVEY6OlVSTFBhcnNlcjo6cGFyc2VVUkxFbmNvZGVkRm9ybShTdHJpbmdWaWV3
KHNlYXJjaCkuc3Vic3RyaW5nKDEpKSA6IFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRG
b3JtKHNlYXJjaCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5n
LCBTdHJpbmc+PiBVUkxTZWFyY2hQYXJhbXM6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9u
YWw8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gVVJMU2VhcmNoUGFyYW1zOjpJdGVyYXRv
cjo6bmV4dCgpCiB7CiAgICAgYXV0byYgcGFpcnMgPSBtX3RhcmdldC0+cGFpcnMoKTsKICAgICBp
ZiAobV9pbmRleCA+PSBwYWlycy5zaXplKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvJiBwYWlyID0gcGFpcnNbbV9pbmRleCsrXTsKLSAgICByZXR1cm4gV1RGOjpL
ZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+IHsgcGFpci5rZXksIHBhaXIudmFsdWUgfTsKKyAg
ICByZXR1cm4gS2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPiB7IHBhaXIua2V5LCBwYWlyLnZh
bHVlIH07CiB9CiAKIFVSTFNlYXJjaFBhcmFtczo6SXRlcmF0b3I6Okl0ZXJhdG9yKFVSTFNlYXJj
aFBhcmFtcyYgcGFyYW1zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFy
Y2hQYXJhbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmgKaW5kZXgg
MmQwNmFkY2MwZTJkYjZkNzFmZGM0YzU4YWM4ODA0MjNlM2RhNDk3NC4uOTU5MTU4M2UwOGUyMGE0
ZTI5NTk0YmU4OWMyN2M2YmVmZGM5ZDI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxTZWFyY2hQYXJhbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBh
cmFtcy5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVVSTDsKIAogY2xhc3MgVVJMU2VhcmNo
UGFyYW1zIDogcHVibGljIFJlZkNvdW50ZWQ8VVJMU2VhcmNoUGFyYW1zPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxVUkxTZWFyY2hQYXJhbXM+PiBjcmVhdGUoc3RkOjp2
YXJpYW50PFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4sIFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxT
dHJpbmcsIFN0cmluZz4+LCBTdHJpbmc+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
VVJMU2VhcmNoUGFyYW1zPj4gY3JlYXRlKHN0ZDo6dmFyaWFudDxWZWN0b3I8VmVjdG9yPFN0cmlu
Zz4+LCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4sIFN0cmluZz4mJik7CiAg
ICAgc3RhdGljIFJlZjxVUkxTZWFyY2hQYXJhbXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHN0cmlu
ZywgRE9NVVJMKiBhc3NvY2lhdGVkVVJMKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVVJMU2VhcmNoUGFyYW1zKHN0cmluZywgYXNzb2NpYXRlZFVSTCkpOwpAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgSXRlcmF0b3IgewogICAgIHB1YmxpYzoKICAgICAg
ICAgZXhwbGljaXQgSXRlcmF0b3IoVVJMU2VhcmNoUGFyYW1zJik7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gbmV4dCgpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgUmVmPFVSTFNlYXJjaFBhcmFtcz4gbV90YXJnZXQ7CkBAIC02
NCwxMyArNjQsMTMgQEAgcHVibGljOgogICAgIEl0ZXJhdG9yIGNyZWF0ZUl0ZXJhdG9yKCkgeyBy
ZXR1cm4gSXRlcmF0b3IgeyAqdGhpcyB9OyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgVmVjdG9y
PFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4mIHBhaXJzKCkgY29uc3QgeyByZXR1
cm4gbV9wYWlyczsgfQorICAgIGNvbnN0IFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJp
bmc+PiYgcGFpcnMoKSBjb25zdCB7IHJldHVybiBtX3BhaXJzOyB9CiAgICAgVVJMU2VhcmNoUGFy
YW1zKGNvbnN0IFN0cmluZyYsIERPTVVSTCopOwotICAgIFVSTFNlYXJjaFBhcmFtcyhjb25zdCBW
ZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpOworICAgIFVSTFNlYXJj
aFBhcmFtcyhjb25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4mKTsKICAg
ICB2b2lkIHVwZGF0ZVVSTCgpOwogCiAgICAgV2Vha1B0cjxET01VUkw+IG1fYXNzb2NpYXRlZFVS
TDsKLSAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBtX3BhaXJz
OworICAgIFZlY3RvcjxLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBtX3BhaXJzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDI3ZjhiMzI4YTMzMzIwM2M0YzEx
YWIyM2U5ODg1ODBjMTFlMTI3OGEuLjFkN2QyNDFkOTc3YWRiODcwNTQ4ZjRkOWUyNzc3NGVhZmI5
YjQ2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmgKQEAgLTI4Nyw3ICsyODcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdmFs
aWRhdGVCdWZmZXJUYXJnZXRDb21wYXRpYmlsaXR5KGNvbnN0IGNoYXIqLCBHQ0dMZW51bSwgV2Vi
R0xCdWZmZXIqKTsKICAgICBXZWJHTEJ1ZmZlciogdmFsaWRhdGVCdWZmZXJEYXRhUGFyYW1ldGVy
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gdXNh
Z2UpIGZpbmFsOwogICAgIFdlYkdMQnVmZmVyKiB2YWxpZGF0ZUJ1ZmZlckRhdGFUYXJnZXQoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQpIGZpbmFsOwotICAgIGJvb2wg
dmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmcoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciop
IGZpbmFsOworICAgIGJvb2wgdmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmcoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCwg
V2ViR0xCdWZmZXIqKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldE1heERyYXdCdWZmZXJzKCkgZmlu
YWw7CiAgICAgR0NHTGludCBnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkgZmluYWw7CiAgICAgYm9v
bCB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQm
IG51bUVsZW1lbnRzUmVxdWlyZWQpIGZpbmFsOwpAQCAtMzI2LDcgKzMyNiw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCB2YWxpZGF0ZVRleFN0b3JhZ2VGdW5jUGFyYW1ldGVycyhHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CiAjZW5k
aWYKIAotICAgIHZvaWQgdW5jYWNoZURlbGV0ZWRCdWZmZXIoY29uc3QgV1RGOjpBYnN0cmFjdExv
Y2tlciYsIFdlYkdMQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCB1bmNhY2hlRGVsZXRlZEJ1ZmZl
cihjb25zdCBBYnN0cmFjdExvY2tlciYsIFdlYkdMQnVmZmVyKikgZmluYWw7CiAKICAgICBlbnVt
IGNsYXNzIENsZWFyQnVmZmVyQ2FsbGVyIDogdWludDhfdCB7CiAgICAgICAgIENsZWFyQnVmZmVy
aXYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAppbmRleCBiZDliNzI3
ZGNmZDhhNGU4MDkzYzFjYThmYjJkNTRhNmYwOTcxZDM5Li43Y2UwMjcyMDNmMWIyZGNiMDkzMzFl
YjUzYTUzMTA2MWZmODQyY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJHTEJ1ZmZl
cihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdElt
cGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZv
cm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKIAogICAgIEdDR0xlbnVtIG1fdGFyZ2V0IHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCmluZGV4IGUyZDg5NmJmM2I1ZDI4
NGZhNWJjZDY1NjU5NWUwNDNlNjM0MmE0OGQuLjc5MDA4ZWY5YjlmZTFlMzVkMDU4OGQxYzk3YTJm
N2Q1M2JlMzNjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29udGV4dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dE9iamVjdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZj
b250ZXh0ID09IG1fY29udGV4dDsKICAgICB9CiAKLSAgICB2b2lkIGRldGFjaENvbnRleHQoY29u
c3QgV1RGOjpBYnN0cmFjdExvY2tlciYpOworICAgIHZvaWQgZGV0YWNoQ29udGV4dChjb25zdCBB
YnN0cmFjdExvY2tlciYpOwogCiAgICAgTG9jayYgb2JqZWN0R3JhcGhMb2NrRm9yQ29udGV4dCgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVm
ZmVyLmgKaW5kZXggYzUzODkzOTEwOWE5ODA4NDBhNzIxNDhkMjNmODcyMTAzZTJiZmVmYi4uNjgx
MmI0MWI5ZTUyMDRlOWJiNjM5ZDdjMDQ0MDc1MDhjNDQyODZhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaApAQCAtNjIsMTAgKzYyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9IDA7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0SW5pdGlhbGl6ZWQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBvbkRldGFj
aGVkKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCopID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIG9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBH
cmFwaGljc0NvbnRleHRHTCopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaChHcmFw
aGljc0NvbnRleHRHTCosIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCkgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgdW5hdHRhY2goR3JhcGhpY3NDb250ZXh0R0wqLCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBK
U0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRN
ZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIEpTQzo6QWJzdHJhY3RT
bG90VmlzaXRvciYpID0gMDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2ViR0xBdHRhY2ht
ZW50KCk7CkBAIC04MSw5ICs4MSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF0dGFjaG1lbnRG
b3JCb3VuZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
R0NHTGVudW0gdGV4VGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IGxheWVyKTsKICAgICB2b2lkIHNldEF0dGFjaG1lbnRGb3JCb3VuZEZyYW1lYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgV2ViR0xSZW5kZXJidWZmZXIqKTsKICAg
ICAvLyBJZiBhbiBvYmplY3QgaXMgYXR0YWNoZWQgdG8gdGhlIGN1cnJlbnRseSBib3VuZCBmcmFt
ZWJ1ZmZlciwgcmVtb3ZlIGl0LgotICAgIHZvaWQgcmVtb3ZlQXR0YWNobWVudEZyb21Cb3VuZEZy
YW1lYnVmZmVyKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHQ0dMZW51bSB0YXJnZXQsIFdl
YkdMU2hhcmVkT2JqZWN0Kik7CisgICAgdm9pZCByZW1vdmVBdHRhY2htZW50RnJvbUJvdW5kRnJh
bWVidWZmZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHQ0dMZW51bSB0YXJnZXQsIFdlYkdMU2hh
cmVkT2JqZWN0Kik7CiAgICAgLy8gSWYgYSBnaXZlbiBhdHRhY2htZW50IHBvaW50IGZvciB0aGUg
Y3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyIGlzIG5vdCBudWxsLCByZW1vdmUgdGhlIGF0dGFj
aGVkIG9iamVjdC4KLSAgICB2b2lkIHJlbW92ZUF0dGFjaG1lbnRGcm9tQm91bmRGcmFtZWJ1ZmZl
cihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhY2htZW50KTsKKyAgICB2b2lkIHJlbW92ZUF0dGFjaG1lbnRGcm9tQm91bmRGcmFtZWJ1ZmZl
cihjb25zdCBBYnN0cmFjdExvY2tlciYsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNo
bWVudCk7CiAgICAgV2ViR0xTaGFyZWRPYmplY3QqIGdldEF0dGFjaG1lbnRPYmplY3QoR0NHTGVu
dW0pIGNvbnN0OwogCiAjaWYgIVVTRShBTkdMRSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6
CiAKICAgICBHQ0dMZW51bSBnZXREcmF3QnVmZmVyKEdDR0xlbnVtKTsKIAotICAgIHZvaWQgYWRk
TWVtYmVyc1RvT3BhcXVlUm9vdHMoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEpTQzo6QWJz
dHJhY3RTbG90VmlzaXRvciYpOworICAgIHZvaWQgYWRkTWVtYmVyc1RvT3BhcXVlUm9vdHMoY29u
c3QgQWJzdHJhY3RMb2NrZXImLCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKTsKIAogI2lmIEVO
QUJMRShXRUJYUikKICAgICBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWU7
IH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMRnJhbWVi
dWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBs
YXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25z
dCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkg
b3ZlcnJpZGU7CiAKICAgICBXZWJHTEF0dGFjaG1lbnQqIGdldEF0dGFjaG1lbnQoR0NHTGVudW0p
IGNvbnN0OwogCkBAIC0xNDksOSArMTQ5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEF0dGFj
aG1lbnRJbnRlcm5hbChHQ0dMZW51bSBhdHRhY2htZW50LCBXZWJHTFJlbmRlcmJ1ZmZlciopOwog
ICAgIC8vIElmIGEgZ2l2ZW4gYXR0YWNobWVudCBwb2ludCBmb3IgdGhlIGN1cnJlbnRseSBib3Vu
ZCBmcmFtZWJ1ZmZlciBpcyBub3QKICAgICAvLyBudWxsLCByZW1vdmUgdGhlIGF0dGFjaGVkIG9i
amVjdC4KLSAgICB2b2lkIHJlbW92ZUF0dGFjaG1lbnRJbnRlcm5hbChjb25zdCBXVEY6OkFic3Ry
YWN0TG9ja2VyJiwgR0NHTGVudW0gYXR0YWNobWVudCk7CisgICAgdm9pZCByZW1vdmVBdHRhY2ht
ZW50SW50ZXJuYWwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHQ0dMZW51bSBhdHRhY2htZW50KTsK
IAotICAgIHR5cGVkZWYgV1RGOjpIYXNoTWFwPEdDR0xlbnVtLCBSZWZQdHI8V2ViR0xBdHRhY2ht
ZW50Pj4gQXR0YWNobWVudE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8R0NHTGVudW0sIFJlZlB0
cjxXZWJHTEF0dGFjaG1lbnQ+PiBBdHRhY2htZW50TWFwOwogCiAgICAgQXR0YWNobWVudE1hcCBt
X2F0dGFjaG1lbnRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaApp
bmRleCBkNjcyMGU3Mjc2ZWEyYWU5NDJjOWRiOGE0MzBlMWJiYTVlODI0ZjNiLi42MmI4Zjc0MDc5
ZWRhZjVhNjg4MzZlMzBiYzgyODU4ZGZhNTRiMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMT2JqZWN0LmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVGhl
IEFic3RyYWN0TG9ja2VyIGFyZ3VtZW50IGVuZm9yY2VzIGF0IGNvbXBpbGUgdGltZSB0aGF0IHRo
ZSBvYmplY3RHcmFwaExvY2sKICAgICAvLyBpcyBoZWxkLiBUaGlzIGlzbid0IG5lY2Vzc2FyeSBm
b3IgYWxsIG9iamVjdCB0eXBlcywgYnV0IGVub3VnaCBvZiB0aGVtIHRoYXQKICAgICAvLyBpdCdz
IGRvbmUgZm9yIGFsbCBvZiB0aGVtLgotICAgIHZvaWQgZGVsZXRlT2JqZWN0KGNvbnN0IFdURjo6
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCopOworICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKTsKIAogICAgIHZv
aWQgb25BdHRhY2hlZCgpIHsgKyttX2F0dGFjaG1lbnRDb3VudDsgfQotICAgIHZvaWQgb25EZXRh
Y2hlZChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqKTsKKyAg
ICB2b2lkIG9uRGV0YWNoZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TCopOwogCiAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IHNpZGUgaXNz
dWUgYSBkZWxldGUgY2FsbCBhbHJlYWR5LCBub3QKICAgICAvLyB3aGV0aGVyIHRoZSBPcGVuR0wg
cmVzb3VyY2UgaXMgZGVsZXRlZC4KQEAgLTc4LDcgKzc4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgcnVuRGVzdHJ1Y3RvcigpOwogCiAgICAgLy8gZGVsZXRlT2JqZWN0SW1wbCBzaG91bGQgYmUg
b25seSBjYWxsZWQgb25jZSB0byBkZWxldGUgdGhlIE9wZW5HTCByZXNvdXJjZS4KLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3Jh
cGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRH
TCosIFBsYXRmb3JtR0xPYmplY3QpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNHcm91cE9y
Q29udGV4dCgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaAppbmRleCA5Njg1YThjYmNlNTY4ZTk1OTgxZDQ3ZmJmMDc0YjA5NWRlNjU2ZTUwLi43
YjhlYjdkMDNiMzQyMTcxZjZkZWQ5M2MzZjlkZWE3YzA5OWQ4ZTNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbmNyZWFzZUxpbmtDb3VudCgpOwogCiAgICAgV2ViR0xTaGFkZXIqIGdldEF0dGFj
aGVkU2hhZGVyKEdDR0xlbnVtKTsKLSAgICBib29sIGF0dGFjaFNoYWRlcihjb25zdCBXVEY6OkFi
c3RyYWN0TG9ja2VyJiwgV2ViR0xTaGFkZXIqKTsKLSAgICBib29sIGRldGFjaFNoYWRlcihjb25z
dCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xTaGFkZXIqKTsKKyAgICBib29sIGF0dGFjaFNo
YWRlcihjb25zdCBBYnN0cmFjdExvY2tlciYsIFdlYkdMU2hhZGVyKik7CisgICAgYm9vbCBkZXRh
Y2hTaGFkZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBXZWJHTFNoYWRlciopOwogICAgIAogICAg
IHZvaWQgc2V0UmVxdWlyZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50KGludCBjb3VudCkK
ICAgICB7CkBAIC04OCwxMiArODgsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9yZXF1
aXJlZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQ7CiAgICAgfQogCi0gICAgdm9pZCBhZGRN
ZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgSlNDOjpBYnN0
cmFjdFNsb3RWaXNpdG9yJik7CisgICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25z
dCBBYnN0cmFjdExvY2tlciYsIEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYpOwogCiBwcml2YXRl
OgogICAgIFdlYkdMUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAgICB2
b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNz
Q29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVP
YmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0
Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2FjaGVBY3RpdmVBdHRyaWJMb2Nh
dGlvbnMoR3JhcGhpY3NDb250ZXh0R0wqKTsKICAgICB2b2lkIGNhY2hlSW5mb0lmTmVlZGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKaW5kZXggOTkyZjdjODc4ZTg4
MDg4ZTQzYWRjMTdkZjkyMTZkOTUyYWYxOTc5Ni4uOTZhZjM4MWJjMGQ2OGI4ZjMxOTU3Y2JlNjdh
Nzc1N2E4ZGE3NzE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaApA
QCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViR0xR
dWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RJ
bXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRm
b3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3Zl
cnJpZGU7CiAKICAgICBib29sIG1faXNSZXN1bHRBdmFpbGFibGUgeyBmYWxzZSB9OwogICAgIEdD
R0xlbnVtIG1fdGFyZ2V0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyYnVmZmVyLmgKaW5kZXggMTI0YjQzOGNjNTljZmRlY2YzY2M5NGRmNTJiMTY4M2Ix
MGNmNDlkZC4uMWMwMjY3NmY4MDM3ZjA4NmZlNGMyNzAyZThmNTRjMTI2ODJiNjUxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xSZW5kZXJidWZmZXIoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0
IFdURjo6QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmpl
Y3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExv
Y2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGlzUmVuZGVyYnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDlmZjBhOTdjOTNjZWE3NzVmOTNjODBmZGQ5YTQxYmQw
MzU4ZTcyM2IuLmVjZmY1OTFjYzY3MTA2NjcxNDFkZWNlYjczNzAxODVhYmEyM2MyYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgbmFtZXNwYWNlIHsKICAgICAgICAgVUNo
YXIgdGVtcCA9IDA7CiAgICAgICAgIHN3aXRjaCAobV9wYXJzZVN0YXRlKSB7CiAgICAgICAgIGNh
c2UgQmVnaW5uaW5nT2ZMaW5lOgotICAgICAgICAgICAgaWYgKFdURjo6aXNBU0NJSVNwYWNlKGMp
KSB7CisgICAgICAgICAgICBpZiAoaXNBU0NJSVNwYWNlKGMpKSB7CiAgICAgICAgICAgICAgICAg
ZW1pdChjKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTc3ODIs
NyArNzc4Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2ltdWxhdGVFdmVu
dEZvclRlc3RpbmcoU2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nCiBTdHJpbmcgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6ZW5zdXJlTm90TnVsbChjb25zdCBTdHJpbmcmIHRleHQpIGNvbnN0CiB7
CiAgICAgaWYgKHRleHQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6OmVtcHR5U3RyaW5n
KCk7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIHJldHVybiB0ZXh0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKaW5kZXggZjA5ODg1NzdiMmNiYjIzNDM4YTg3MzU3MDUwZWZlZDM1Mjc4OTI4
NS4uNjUyNGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aApAQCAtNTM3LDcgKzUzNyw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGVuYWJsZVN1cHBvcnRl
ZEV4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uTmFtZUxpdGVyYWwpOwogICAgIHZvaWQg
bG9zZUV4dGVuc2lvbnMoTG9zdENvbnRleHRNb2RlKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1bmNh
Y2hlRGVsZXRlZEJ1ZmZlcihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xCdWZmZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5jYWNoZURlbGV0ZWRCdWZmZXIoY29uc3QgQWJzdHJhY3RM
b2NrZXImLCBXZWJHTEJ1ZmZlciopOwogCiAgICAgYm9vbCBjb21wb3NpdGluZ1Jlc3VsdHNOZWVk
VXBkYXRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbXBvc2l0aW5nUmVzdWx0c05lZWRV
cGRhdGluZzsgfQogICAgIGJvb2wgbmVlZHNQcmVwYXJhdGlvbkZvckRpc3BsYXkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC01NjAsNyArNTYwLDcgQEAgcHJvdGVjdGVkOgogICAg
IFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZT4gbV9kZWZhdWx0VmVydGV4QXJyYXlP
YmplY3Q7CiAgICAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlPiBtX2JvdW5kVmVy
dGV4QXJyYXlPYmplY3Q7CiAKLSAgICB2b2lkIHNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoY29u
c3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKik7Cisg
ICAgdm9pZCBzZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UqKTsKICAgICAKICAgICBjbGFzcyBWZXJ0ZXhBdHRy
aWJWYWx1ZSB7CiAgICAgcHVibGljOgpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBkZWxldGUqIChkZWxldGVCdWZmZXIsIGRlbGV0
ZVByb2dyYW0sIGV0YykgZnVuY3Rpb25zLgogICAgIC8vIFJldHVybiBmYWxzZSBpZiBjYWxsZXIg
c2hvdWxkIHJldHVybiB3aXRob3V0IGZ1cnRoZXIgcHJvY2Vzc2luZy4KLSAgICBib29sIGRlbGV0
ZU9iamVjdChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xPYmplY3QqKTsKKyAgICBi
b29sIGRlbGV0ZU9iamVjdChjb25zdCBBYnN0cmFjdExvY2tlciYsIFdlYkdMT2JqZWN0Kik7CiAK
ICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIEFQSXMgd2hpY2ggY2FuIGxlZ2FsbHkgcmVjZWl2
ZSBudWxsIG9iamVjdHMsIGluY2x1ZGluZwogICAgIC8vIHRoZSBiaW5kKiBjYWxscyAoYmluZEJ1
ZmZlciwgYmluZFRleHR1cmUsIGV0Yy4pIGFuZCB1c2VQcm9ncmFtLiBDaGVja3MgdGhhdApAQCAt
MTA3OSw3ICsxMDc5LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybiB0aGUgY3VycmVudCBi
b3VuZCBidWZmZXIgdG8gdGFyZ2V0LCBvciAwIGlmIHRoZSB0YXJnZXQgaXMgaW52YWxpZC4KICAg
ICB2aXJ0dWFsIFdlYkdMQnVmZmVyKiB2YWxpZGF0ZUJ1ZmZlckRhdGFUYXJnZXQoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSB0YXJnZXQpOwogCi0gICAgdmlydHVhbCBib29sIHZh
bGlkYXRlQW5kQ2FjaGVCdWZmZXJCaW5kaW5nKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXImLCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqKTsK
KyAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGVBbmRDYWNoZUJ1ZmZlckJpbmRpbmcoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRhcmdldCwg
V2ViR0xCdWZmZXIqKTsKIAogI2lmICFVU0UoQU5HTEUpCiAgICAgLy8gSGVscGVycyBmb3Igc2lt
dWxhdGluZyB2ZXJ0ZXhBdHRyaWIwLgpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgR0NHTGludCBnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkgPSAwOwogCiAgICAg
dm9pZCBzZXRCYWNrRHJhd0J1ZmZlcihHQ0dMZW51bSk7Ci0gICAgdm9pZCBzZXRGcmFtZWJ1ZmZl
cihjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR0NHTGVudW0sIFdlYkdMRnJhbWVidWZmZXIq
KTsKKyAgICB2b2lkIHNldEZyYW1lYnVmZmVyKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR0NHTGVu
dW0sIFdlYkdMRnJhbWVidWZmZXIqKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlQ3VycmVu
dEZyYW1lYnVmZmVyKCk7CiAgICAgdm9pZCByZXN0b3JlQ3VycmVudFRleHR1cmUyRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaAppbmRleCA0ZTEwZDc3MTczNTAx
MDljODhhMTk5YzUxZTdmMjFhZDgwNWE4MmEzLi44NzU0OTVmZGUyMjRjYjc2YmU2N2VjZmFhZjlk
OGE5MjhhNjZhNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vi
R0xTYW1wbGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKLSAgICB2b2lkIGRlbGV0ZU9i
amVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwg
UGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBm
aW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFNoYWRlci5oCmluZGV4IDkzNGIzZGMxOGFmMzQ3YzNkNTBmYWU0YjA2NWM5ODI5
ZjBiZDk5YjYuLmU5NDExMzk5ODllZGZiYTNlMzgwZjVkOThmODg5NTE4NzNkNjJhMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaApAQCAtNDgsNyArNDgsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmLCBHQ0dMZW51bSk7CiAKLSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpB
YnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3Jh
cGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIAogICAgIEdDR0xlbnVt
IG1fdHlwZTsKICAgICBTdHJpbmcgbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaAppbmRleCAwY2I5MzU0YTIyM2JjZjk3NGM0Mzk2ZGY0
OGFlZjVkOGI0MjJhODJiLi5hMmU3Y2M1MjljODhhMTY0NzQyN2FjMDlmN2U3NGVjZTNjMDhjNjBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgK
QEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29udGV4dEdyb3VwID09
IG1fY29udGV4dEdyb3VwOwogICAgIH0KIAotICAgIHZvaWQgZGV0YWNoQ29udGV4dEdyb3VwKGNv
bnN0IFdURjo6QWJzdHJhY3RMb2NrZXImKTsKKyAgICB2b2lkIGRldGFjaENvbnRleHRHcm91cChj
b25zdCBBYnN0cmFjdExvY2tlciYpOwogCiAgICAgdm9pZCBkZXRhY2hDb250ZXh0R3JvdXBXaXRo
b3V0RGVsZXRpbmdPYmplY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTeW5jLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMu
aAppbmRleCA2MGFiMDZhOTIzZjVlMDkyNmNjOWJmODViMGEwNTFmMmU0ZGE4MDFmLi41MGJlMDQ0
YmFlNmNkOTI3Y2JhN2NlMzY0NzZlOWUyZDQ1MzFlNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFN5bmMuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIEdDR0xpbnQg
bV9zeW5jU3RhdHVzID0geyBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdOQUxFRCB9OwogICAgIEdD
R0xzeW5jIG1fc3luYzsKIAotICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFi
c3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBH
cmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1
cmUuaAppbmRleCBhODVhYzc4OGU3ZjE3OTc2YmVhNTQ2N2MzZDIwMWRjODhmZmQ2ZWZlLi45OTQ4
NmVlNTJkNDgxODU4YTc4Mzg4OTYxNWQxYWJjYzk4ZTc3ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKLSAg
ICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdyYXBo
aWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNUZXh0dXJlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKaW5kZXggNjA1MWVkZDBiNWRiNzg3YzZm
ZmE0ZmQ1ZGVkZjgzZWM5YjkyZWY3OS4uMzY5NzY2YjQ1OGMxODc2ODQ4MTFhZjYxNWY4MTAwMmUw
Njg2ZjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJh
bnNmb3JtRmVlZGJhY2suaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2Ug
YXJlIHRoZSBpbmRleGVkIGJpbmQgcG9pbnRzIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVy
cy4KICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIGluZGV4IGlzIG91dCBvZiByYW5nZSBhbmQgdGhl
IGNhbGxlciBzaG91bGQKICAgICAvLyBzeW50aGVzaXplIGEgR0wgZXJyb3IuCi0gICAgdm9pZCBz
ZXRCb3VuZEluZGV4ZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihjb25zdCBXVEY6OkFic3RyYWN0
TG9ja2VyJiwgR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKik7CisgICAgdm9pZCBzZXRCb3Vu
ZEluZGV4ZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihjb25zdCBBYnN0cmFjdExvY2tlciYsIEdD
R0x1aW50IGluZGV4LCBXZWJHTEJ1ZmZlciopOwogICAgIGJvb2wgZ2V0Qm91bmRJbmRleGVkVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXIoR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiogb3V0QnVm
ZmVyKTsKICAgICAKICAgICBib29sIHZhbGlkYXRlUHJvZ3JhbUZvclJlc3VtZShXZWJHTFByb2dy
YW0qKSBjb25zdDsKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRXZl
ckJlZW5Cb3VuZCgpIHsgbV9oYXNFdmVyQmVlbkJvdW5kID0gdHJ1ZTsgfQogICAgIAogICAgIFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbS5nZXQoKTsgfQot
ICAgIHZvaWQgc2V0UHJvZ3JhbShjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgV2ViR0xQcm9n
cmFtJik7CisgICAgdm9pZCBzZXRQcm9ncmFtKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgV2ViR0xQ
cm9ncmFtJik7CiAgICAgCiAgICAgdm9pZCB1bmJpbmRCdWZmZXIoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBXZWJHTEJ1ZmZlciYpOwogICAgIApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYp
OwogCi0gICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKGNvbnN0IFdURjo6QWJzdHJhY3RMb2NrZXIm
LCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIG92ZXJyaWRlOworICAgIHZv
aWQgZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExvY2tlciYsIEdyYXBoaWNzQ29udGV4
dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgYm9vbCBtX2FjdGl2
ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhdXNlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKaW5kZXggZjdi
MzZhOWY5OGYyZWQ0ZGYxNTJmN2NjYTM4YTZjZGM3MGJjYmEwNC4uOGQ3YWZmYzk4YjZjMDNjOTRi
M2Y1M2M4NjRiNTljNTA2MTdmYjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdCgpOwogcHJpdmF0ZToKICAgICBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBUeXBlKTsK
LSAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdy
YXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCkgZmluYWw7CisgICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmpl
Y3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2Jq
ZWN0QmFzZS5oCmluZGV4IGM2MTM4YmJlNjVlN2QzOTA0ZmZhNjM1NWU2Y2NjNmM1Nzc4Yzg0MDQu
LmEzMmM3N2E4NTk5Zjc3YjFjNDgyZGNmMzA4YzUxYWMwYmFmZTk3OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2Uu
aApAQCAtNzAsMjEgKzcwLDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0V2ZXJCZWVuQm91
bmQoKSB7IG1faGFzRXZlckJlZW5Cb3VuZCA9IHRydWU7IH0KIAogICAgIFdlYkdMQnVmZmVyKiBn
ZXRFbGVtZW50QXJyYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRWxlbWVudEFycmF5
QnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRFbGVtZW50QXJyYXlCdWZmZXIoY29uc3QgV1RG
OjpBYnN0cmFjdExvY2tlciYsIFdlYkdMQnVmZmVyKik7CisgICAgdm9pZCBzZXRFbGVtZW50QXJy
YXlCdWZmZXIoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBXZWJHTEJ1ZmZlciopOwogCiAgICAgdm9p
ZCBzZXRWZXJ0ZXhBdHRyaWJFbmFibGVkKGludCBpbmRleCwgYm9vbCBmbGFnKTsKICAgICBjb25z
dCBWZXJ0ZXhBdHRyaWJTdGF0ZSYgZ2V0VmVydGV4QXR0cmliU3RhdGUoaW50IGluZGV4KSB7IHJl
dHVybiBtX3ZlcnRleEF0dHJpYlN0YXRlW2luZGV4XTsgfQotICAgIHZvaWQgc2V0VmVydGV4QXR0
cmliU3RhdGUoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIEdDR0x1aW50LCBHQ0dMc2l6ZWks
IEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMYm9vbGVhbiwgR0NHTHNpemVpLCBHQ0dMaW50cHRyLCBi
b29sLCBXZWJHTEJ1ZmZlciopOwotICAgIHZvaWQgdW5iaW5kQnVmZmVyKGNvbnN0IFdURjo6QWJz
dHJhY3RMb2NrZXImLCBXZWJHTEJ1ZmZlciYpOworICAgIHZvaWQgc2V0VmVydGV4QXR0cmliU3Rh
dGUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBHQ0dMdWludCwgR0NHTHNpemVpLCBHQ0dMaW50LCBH
Q0dMZW51bSwgR0NHTGJvb2xlYW4sIEdDR0xzaXplaSwgR0NHTGludHB0ciwgYm9vbCwgV2ViR0xC
dWZmZXIqKTsKKyAgICB2b2lkIHVuYmluZEJ1ZmZlcihjb25zdCBBYnN0cmFjdExvY2tlciYsIFdl
YkdMQnVmZmVyJik7CiAKICAgICB2b2lkIHNldFZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQg
aW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpOwogCi0gICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVS
b290cyhjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9y
Jik7CisgICAgdm9pZCBhZGRNZW1iZXJzVG9PcGFxdWVSb290cyhjb25zdCBBYnN0cmFjdExvY2tl
ciYsIEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYpOwogCiAgICAgYm9vbCBhcmVBbGxFbmFibGVk
QXR0cmliQnVmZmVyc0JvdW5kKCk7CiBwcm90ZWN0ZWQ6CiAgICAgV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdEJhc2UoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFR5cGUpOwotICAgIHZvaWQgZGVs
ZXRlT2JqZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7CisgICAgdm9pZCBkZWxldGVPYmpl
Y3RJbXBsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9y
bUdMT2JqZWN0KSBvdmVycmlkZSA9IDA7CiAjaWYgIVVTRShBTkdMRSkKICAgICB2b2lkIHVwZGF0
ZVZlcnRleEF0dHJpYjAoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAppbmRleCAxMTBjYzc3NWE0
ZmQ3OGVhMzI5MzRhNTYwMWI0OTViMmQ5ZTBkNWYyLi43MmI5Njg4ZTZmOTVlZmMyYzAwOTllZWJk
NWRlY2Q0MzNlZDY5YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcApAQCAtNTksNyArNTksNyBAQCBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTOjp+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpCiAgICAg
cnVuRGVzdHJ1Y3RvcigpOwogfQogCi12b2lkIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRl
bGV0ZU9iamVjdEltcGwoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2JqZWN0IG9iamVjdCkKK3ZvaWQgV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1wbChjb25zdCBBYnN0cmFjdExv
Y2tlciYgbG9ja2VyLCBHcmFwaGljc0NvbnRleHRHTCogY29udGV4dDNkLCBQbGF0Zm9ybUdMT2Jq
ZWN0IG9iamVjdCkKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6RGVm
YXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaAppbmRleCA2MmM4ZjdjMzJmZTU2NWI2YjU3MmI3ZjBkZTEyMWY4M2Q2
YTM5MzI3Li4xYjdmM2EyYWJmM2VjNmNjNDU4NGEyMDE5OWNkNjM0MzdkMWIzNTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUy5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTKCk7CiBwcml2YXRlOgogICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFR5cGUpOwotICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChjb25zdCBXVEY6OkFic3RyYWN0TG9ja2VyJiwgR3JhcGhpY3NDb250ZXh0R0wqLCBQ
bGF0Zm9ybUdMT2JqZWN0KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoY29uc3Qg
QWJzdHJhY3RMb2NrZXImLCBHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QpIGZp
bmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggMzg0YjAwMjYxNGZiNTdiMDI5Yzc4
ZWZmODIwOGE3MzIxOTEwODU1MS4uNWYyNjQ3OTJiODc4YTRmYzZiNmMwOTA5NWJlZWU0YzA2MDRk
MWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9i
aW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiBjcmVhdGUKICAgICBhZGRO
YW1lc1dpdGhQcmVmaXgobWFwLCB4bGlua05hbWUsIFhMaW5rTmFtZXM6OmdldFhMaW5rQXR0cnMo
KSwgWExpbmtOYW1lczo6WExpbmtBdHRyc0NvdW50KTsKICAgICBhZGROYW1lc1dpdGhQcmVmaXgo
bWFwLCB4bWxBdG9tKCksIFhNTE5hbWVzOjpnZXRYTUxBdHRycygpLCBYTUxOYW1lczo6WE1MQXR0
cnNDb3VudCk7CiAKLSAgICBtYXAuYWRkKFdURjo6eG1sbnNBdG9tKCksIFhNTE5TTmFtZXM6Onht
bG5zQXR0cik7CisgICAgbWFwLmFkZCh4bWxuc0F0b20oKSwgWE1MTlNOYW1lczo6eG1sbnNBdHRy
KTsKICAgICBtYXAuYWRkKCJ4bWxuczp4bGluayIsIFF1YWxpZmllZE5hbWUoeG1sbnNBdG9tKCks
IHhsaW5rTmFtZSwgWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkkpKTsKIAogICAgIHJldHVy
biBtYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5nVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmgK
aW5kZXggZTc4M2EzMzFjN2MxMTRjNDc5Nzg1NGExYjI4NjMxNzg2ZTkyNTUzNi4uZjZjYWZiNzBm
NTdmOWM1MTI2YjJjNWY1NjExMDEwMzFiMjUxZWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvUGFyc2luZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaApAQCAtMTc0LDcgKzE3NCw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHVuc2lnbmVkIGxvd2VyY2FzZUxldHRlcnNBcnJheVNp
emU+IGJvb2wgc2tpcEV4CiAgICAgCiAgICAgaWYgKHBvc2l0aW9uICsgbG93ZXJjYXNlTGV0dGVy
c0xlbmd0aCA+IGVuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghV1RGOjplcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb3NpdGlvbiwgbG93ZXJjYXNlTGV0dGVyc0xlbmd0
aCwgbG93ZXJjYXNlTGV0dGVycykpCisgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShwb3NpdGlvbiwgbG93ZXJjYXNlTGV0dGVyc0xlbmd0aCwgbG93ZXJjYXNlTGV0dGVycykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwb3NpdGlvbiArPSBsb3dlcmNhc2VMZXR0ZXJz
TGVuZ3RoOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGUsIHVuc2lnbmVkIGxvd2VyY2FzZUxldHRlcnNBcnJheVNpemU+
IGJvb2wgc2tpcEV4CiAKICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgbG93ZXJj
YXNlTGV0dGVyc0xlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghV1RGOjpl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShidWZmZXIucG9zaXRpb24oKSwgbG93ZXJjYXNl
TGV0dGVyc0xlbmd0aCwgbG93ZXJjYXNlTGV0dGVycykpCisgICAgaWYgKCFlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShidWZmZXIucG9zaXRpb24oKSwgbG93ZXJjYXNlTGV0dGVyc0xlbmd0
aCwgbG93ZXJjYXNlTGV0dGVycykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBidWZmZXIg
Kz0gbG93ZXJjYXNlTGV0dGVyc0xlbmd0aDsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVFNjYW5uZXIuY3BwCmluZGV4IGExMjBhOWJmZGU3NTgzMjc3ZGM4MzBh
MmViYzRhNDY4N2VmNzQ2YmQuLjQyNzA3ZTY4ZjM0YzhhNGVkNzYyYzZmNTNlYTU3OTE2YmI3MjJm
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcApAQCAtNjEsOSAr
NjEsOSBAQCBib29sIFZUVFNjYW5uZXI6OnNjYW4oY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHNp
emVfdCBjaGFyYWN0ZXJzQ291bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIG1h
dGNoZWQ7CiAgICAgaWYgKG1faXM4Qml0KQotICAgICAgICBtYXRjaGVkID0gV1RGOjplcXVhbCht
X2RhdGEuY2hhcmFjdGVyczgsIGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNDb3VudCk7CisgICAgICAg
IG1hdGNoZWQgPSBlcXVhbChtX2RhdGEuY2hhcmFjdGVyczgsIGNoYXJhY3RlcnMsIGNoYXJhY3Rl
cnNDb3VudCk7CiAgICAgZWxzZQotICAgICAgICBtYXRjaGVkID0gV1RGOjplcXVhbChtX2RhdGEu
Y2hhcmFjdGVyczE2LCBjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzQ291bnQpOworICAgICAgICBtYXRj
aGVkID0gZXF1YWwobV9kYXRhLmNoYXJhY3RlcnMxNiwgY2hhcmFjdGVycywgY2hhcmFjdGVyc0Nv
dW50KTsKICAgICBpZiAobWF0Y2hlZCkKICAgICAgICAgYWR2YW5jZShjaGFyYWN0ZXJzQ291bnQp
OwogICAgIHJldHVybiBtYXRjaGVkOwpAQCAtODAsOSArODAsOSBAQCBib29sIFZUVFNjYW5uZXI6
OnNjYW5SdW4oY29uc3QgUnVuJiBydW4sIGNvbnN0IFN0cmluZyYgdG9NYXRjaCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGJvb2wgbWF0Y2hlZDsKICAgICBpZiAobV9pczhCaXQpCi0gICAg
ICAgIG1hdGNoZWQgPSBXVEY6OmVxdWFsKHRvTWF0Y2guaW1wbCgpLCBtX2RhdGEuY2hhcmFjdGVy
czgsIG1hdGNoTGVuZ3RoKTsKKyAgICAgICAgbWF0Y2hlZCA9IGVxdWFsKHRvTWF0Y2guaW1wbCgp
LCBtX2RhdGEuY2hhcmFjdGVyczgsIG1hdGNoTGVuZ3RoKTsKICAgICBlbHNlCi0gICAgICAgIG1h
dGNoZWQgPSBXVEY6OmVxdWFsKHRvTWF0Y2guaW1wbCgpLCBtX2RhdGEuY2hhcmFjdGVyczE2LCBt
YXRjaExlbmd0aCk7CisgICAgICAgIG1hdGNoZWQgPSBlcXVhbCh0b01hdGNoLmltcGwoKSwgbV9k
YXRhLmNoYXJhY3RlcnMxNiwgbWF0Y2hMZW5ndGgpOwogICAgIGlmIChtYXRjaGVkKQogICAgICAg
ICBzZWVrVG8ocnVuLmVuZCgpKTsKICAgICByZXR1cm4gbWF0Y2hlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcAppbmRleCA1N2RmNjUzMGU1NzYzMmRj
Nzk1ODk5NGE0ZGU0OTQ3MTVmZjg1MDFlLi5hYTYxNTdjYmIzY2QyMGRhY2VjZmJjMWFmNDk2NjBj
NDUyNTVlMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRv
a2VuaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbml6
ZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8
dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PiBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWxMaXRlcmFs
KGNvbnN0IFN0cmluZ0J1aWxkZXImIHMsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0
ZXJzQ291bnRdKQogewotICAgIHJldHVybiBXVEY6OmVxdWFsKHMsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVyc0NvdW50IC0gMSk7CisgICAgcmV0
dXJuIGVxdWFsKHMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwg
Y2hhcmFjdGVyc0NvdW50IC0gMSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkZE5ld0NsYXNzKFN0cmlu
Z0J1aWxkZXImIGNsYXNzZXMsIGNvbnN0IFN0cmluZ0J1aWxkZXImIG5ld0NsYXNzKQpAQCAtMTY3
LDcgKzE2Nyw3IEBAIFRhZ1N0YXRlOgogICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhTdGFydFRh
Z0NsYXNzU3RhdGUpOwogICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICcvJykgewogICAgICAg
ICBXRUJWVFRfQURWQU5DRV9UTyhFbmRUYWdTdGF0ZSk7Ci0gICAgfSBlbHNlIGlmIChXVEY6Omlz
QVNDSUlEaWdpdChjaGFyYWN0ZXIpKSB7CisgICAgfSBlbHNlIGlmIChpc0FTQ0lJRGlnaXQoY2hh
cmFjdGVyKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7CiAgICAgICAgIFdF
QlZUVF9BRFZBTkNFX1RPKFRpbWVzdGFtcFRhZ1N0YXRlKTsKICAgICB9IGVsc2UgaWYgKGNoYXJh
Y3RlciA9PSAnPicgfHwgY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaAppbmRleCAzNTczMmIxOTg5
MzdmNTA3NTI3ZjZhZjY4YTlkMzQ3OGE5MDI2NDRmLi40MDQxYWRlNWQwNzY1MmUzZDhlOGRjNzVi
NjQxZTI3OGEzMWNmZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJSG9zdC5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBvbmNl
OwogICAgIH07CiAKLSAgICB1c2luZyBFdmVudExpc3RlbmVyc1JlY29yZCA9IFZlY3RvcjxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFZlY3RvcjxMaXN0ZW5lckVudHJ5Pj4+OworICAgIHVzaW5n
IEV2ZW50TGlzdGVuZXJzUmVjb3JkID0gVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFZlY3Rv
cjxMaXN0ZW5lckVudHJ5Pj4+OwogICAgIEV2ZW50TGlzdGVuZXJzUmVjb3JkIGdldEV2ZW50TGlz
dGVuZXJzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBFdmVudFRhcmdldCYpOwogCiAgICAgU3RyaW5n
IGRhdGFiYXNlSWQoRGF0YWJhc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5jcHAKaW5kZXggNmFmNGE4YzBjZjMxN2E0NTQxMmIxMGNmZGZkODA5ZTA0ZmI3
YTlhMi4uMzcyYjk3NDkyOTlkZTA4Y2ZmZTlhYjRiMzJjY2VhOWY5M2FkZjE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTI5NSw3ICsyOTUs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJl
bihDb250YWluZXJOb2RlJiBwYXJlbnROb2RlLAogCiAgICAgLy8gMS4gRmlyc3Qgc3RyaXAgZXZl
cnl0aGluZyBleGNlcHQgZm9yIHRoZSBub2RlcyB0aGF0IHJldGFpbi4gQ29sbGVjdCBwZW5kaW5n
IG1lcmdlcy4KICAgICBIYXNoTWFwPERpZ2VzdCosIERpZ2VzdCo+IG1lcmdlczsKLSAgICBIYXNo
U2V0PHNpemVfdCwgV1RGOjpJbnRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8c2l6ZV90Pj4gdXNlZE5ld09yZGluYWxzOworICAgIEhhc2hTZXQ8c2l6ZV90
LCBJbnRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6
ZV90Pj4gdXNlZE5ld09yZGluYWxzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2xkTGlz
dC5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAob2xkTWFwW2ldLmZpcnN0KSB7CiAgICAgICAg
ICAgICBpZiAoIXVzZWROZXdPcmRpbmFscy5jb250YWlucyhvbGRNYXBbaV0uc2Vjb25kKSkgewpA
QCAtMzM2LDcgKzMzNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVBhdGNoU3VwcG9ydDo6aW5u
ZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUmIHBhcmVudE5vZGUsCiAgICAgfQogCiAgICAg
Ly8gTWFyayByZXRhaW5lZCBub2RlcyBhcyB1c2VkLCBkbyBub3QgcmV1c2Ugbm9kZSBtb3JlIHRo
YW4gb25jZS4KLSAgICBIYXNoU2V0PHNpemVfdCwgV1RGOjpJbnRIYXNoPHNpemVfdD4sIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gdXNlZE9sZE9yZGluYWxzOwor
ICAgIEhhc2hTZXQ8c2l6ZV90LCBJbnRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gdXNlZE9sZE9yZGluYWxzOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbmV3TGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW5ld01hcFtp
XS5maXJzdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNzg0YmY0ODJmZDY4ZGE2OGUxZjM4ZmQ1
Y2Q2YmNlZGM4OTcxZGZkYS4uMTFjMjZjY2ZkODM2YzIzZWM4NWE1MjA4MmU0ZWI0ZjRhMWZmZGUy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnVu
Y3Rpb25DYWxsSGFuZGxlciBmdW5jdGlvbkNhbGxIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBmcm9udGVuZEluaXRpYWxpemVkKCkgb3ZlcnJpZGU7
Ci0gICAgV1RGOjpTdG9wd2F0Y2gmIGV4ZWN1dGlvblN0b3B3YXRjaCgpIGNvbnN0IGZpbmFsOwor
ICAgIFN0b3B3YXRjaCYgZXhlY3V0aW9uU3RvcHdhdGNoKCkgY29uc3QgZmluYWw7CiAgICAgUGFn
ZURlYnVnZ2VyJiBkZWJ1Z2dlcigpIG92ZXJyaWRlOwogICAgIEpTQzo6Vk0mIHZtKCkgb3ZlcnJp
ZGU7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OkZy
b250ZW5kUm91dGVyPiBtX2Zyb250ZW5kUm91dGVyOwogICAgIFJlZjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3JPdmVybGF5PiBtX292ZXJsYXk7Ci0gICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4
ZWN1dGlvblN0b3B3YXRjaDsKKyAgICBSZWY8U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRj
aDsKICAgICBQYWdlRGVidWdnZXIgbV9kZWJ1Z2dlcjsKICAgICBJbnNwZWN0b3I6OkFnZW50UmVn
aXN0cnkgbV9hZ2VudHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgKaW5kZXggMTFiMzUxZTg1MzY3MjhjMWE0NjQzNzZlM2E4OWVk
M2E3MThmYjM2Ny4uMjY3ODgzZDk5MjUxZTJlYjVlZWI0OTIwYzZjMDA2MDY2NWI2YzkzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
LmgKQEAgLTQxLDggKzQxLDggQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewotdXNpbmcgRXh0ZW5zaW9uSUQgPSBXVEY6OlN0cmluZzsK
LXVzaW5nIEV4dGVuc2lvblRhYklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBFeHRlbnNpb25JRCA9
IFN0cmluZzsKK3VzaW5nIEV4dGVuc2lvblRhYklEID0gU3RyaW5nOwogfQogI2VuZGlmCiAKQEAg
LTEwNiw4ICsxMDYsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgb3BlblVSTEV4dGVybmFsbHkoY29uc3QgU3RyaW5nJiB1cmwpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgY2FuU2F2ZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBXVEY6OlN0
cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVk
LCBib29sIGZvcmNlU2F2ZUFzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBX
VEY6OlN0cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQs
IGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY29udGVudCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93Q2VydGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJ
bmZvJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNTJmZmEyNjc5NmFmMDI1NjAwMDRmY2U5NWU2ZmZkMmY1
NWZlZjdkYS4uMzg1MWJkYjNlZWY0YjI3YTMxMzQ0YWIzOWJiNzViNGJlZGRjNmUyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZ1
bmN0aW9uQ2FsbEhhbmRsZXIgZnVuY3Rpb25DYWxsSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlcigp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZnJvbnRlbmRJbml0aWFsaXplZCgpIG92ZXJyaWRl
IHsgfQotICAgIFdURjo6U3RvcHdhdGNoJiBleGVjdXRpb25TdG9wd2F0Y2goKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsgfQorICAgIFN0b3B3YXRjaCYgZXhlY3V0
aW9uU3RvcHdhdGNoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9leGVjdXRpb25TdG9wd2F0Y2g7
IH0KICAgICBXb3JrZXJEZWJ1Z2dlciYgZGVidWdnZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX2Rl
YnVnZ2VyOyB9CiAgICAgSlNDOjpWTSYgdm0oKSBvdmVycmlkZTsKIApAQCAtNzgsNyArNzgsNyBA
QCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIFJlZjxJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyPiBtX2Zyb250ZW5kUm91dGVyOwogICAgIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVj
dXRpb25TdG9wd2F0Y2g7CisgICAgUmVmPFN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7
CiAgICAgV29ya2VyRGVidWdnZXIgbV9kZWJ1Z2dlcjsKICAgICBJbnNwZWN0b3I6OkFnZW50UmVn
aXN0cnkgbV9hZ2VudHM7CiAgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fZ2xvYmFs
U2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKaW5k
ZXggMDZjNzk5Nzc3ZDU0OGMyZTczYjM4MDMwZjZjNjdhNjI2MDdhZTUwMi4uZGFmOGYyODE2YTBl
OGY3ZTg2OGFkNTJmMzgzNDRhNDY0M2NmYzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUNvbnRlbnRCcmVha2VyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgTGF5b3V0
IHsKICNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIGlubGluZSBib29sIGhhc1RyYWlsaW5nVGV4
dENvbnRlbnQoY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBj
b250aW51b3VzQ29udGVudCkKIHsKLSAgICBmb3IgKGF1dG8mIHJ1biA6IFdURjo6bWFrZVJldmVy
c2VkUmFuZ2UoY29udGludW91c0NvbnRlbnQucnVucygpKSkgeworICAgIGZvciAoYXV0byYgcnVu
IDogbWFrZVJldmVyc2VkUmFuZ2UoY29udGludW91c0NvbnRlbnQucnVucygpKSkgewogICAgICAg
ICBhdXRvJiBpbmxpbmVJdGVtID0gcnVuLmlubGluZUl0ZW07CiAgICAgICAgIGlmIChpbmxpbmVJ
dGVtLmlzSW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKaW5kZXggMzY3
ZDZkNzZlOTBiNDZjMzVkZDYwZDFhZTUwYjYwMTM4N2NmMWU3Yy4uMDdhZDFiMjNlOTU3OGFiYmI2
ZjUzNzNjNjk4NGYwN2RlODRmMzdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKQEAg
LTIxMyw3ICsyMTMsNyBAQCB2b2lkIExpbmU6OnZpc3VhbGx5Q29sbGFwc2VIYW5naW5nT3ZlcmZs
b3coSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsQXZhaWxhYmxlUwogICAgIC8vIExldCdzIGp1
c3QgZmluZCB0aGUgdHJhaWxpbmcgcHJlLXdyYXAgd2hpdGVzcGFjZSBjb250ZW50IGZvciBub3cg
KGUuZyBjaGVjayBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdHJhaWxpbmcgcnVucyB3aXRoCiAgICAg
Ly8gZGlmZmVyZW50IHNldCBvZiB3aGl0ZS1zcGFjZSB2YWx1ZXMgYW5kIGRlY2lkZSBpZiB0aGUg
aW4tYmV0d2VlbiBwcmUtd3JhcCBjb250ZW50IHNob3VsZCBiZSBjb2xsYXBzZWQgYXMgd2VsbC4p
CiAgICAgYXV0byB0cmltbWVkQ29udGVudFdpZHRoID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Ci0g
ICAgZm9yIChhdXRvJiBydW4gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKG1fcnVucykpIHsKKyAg
ICBmb3IgKGF1dG8mIHJ1biA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fcnVucykpIHsKICAgICAgICAg
aWYgKCFydW4uc2hvdWxkVHJhaWxpbmdXaGl0ZXNwYWNlSGFuZygpKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGF1dG8gdmlzdWFsbHlDb2xsYXBzaWJsZUlubGluZUl0ZW0gPSBydW4uaXNM
aW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGluZUJveFN0YXJ0KCkgfHwg
cnVuLmlzSW5saW5lQm94RW5kKCkgfHwgcnVuLmhhc1RyYWlsaW5nV2hpdGVzcGFjZSgpOwpAQCAt
Mjk3LDcgKzI5Nyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5l
VGV4dEl0ZW0mIGlubGluZVRleHRJdGVtLCBjb25zdCBSZW5kZXJTCiAgICAgICAgIGlmIChJbmxp
bmVUZXh0SXRlbTo6c2hvdWxkUHJlc2VydmVTcGFjZXNBbmRUYWJzKGlubGluZVRleHRJdGVtKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgLy8gVGhpcyBjb250ZW50IGlzIGNv
bGxhcHNpYmxlLiBMZXQncyBjaGVjayBpZiB0aGUgbGFzdCBpdGVtIGlzIGNvbGxhcHNlZC4KLSAg
ICAgICAgZm9yIChhdXRvJiBydW4gOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKG1fcnVucykpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBydW4gOiBtYWtlUmV2ZXJzZWRSYW5nZShtX3J1bnMpKSB7CiAg
ICAgICAgICAgICBpZiAocnVuLmlzQm94KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LTMvI3do
aXRlLXNwYWNlLXBoYXNlLTEKQEAgLTQzOSw3ICs0MzksNyBAQCBJbmxpbmVMYXlvdXRVbml0IExp
bmU6OnJlbW92ZUJvcmRlckFuZFBhZGRpbmdFbmRGb3JJbmxpbmVCb3hEZWNvcmF0aW9uQ2xvbmUo
Y29ucwogCiB2b2lkIExpbmU6OmFkZFRyYWlsaW5nSHlwaGVuKElubGluZUxheW91dFVuaXQgaHlw
aGVuTG9naWNhbFdpZHRoKQogewotICAgIGZvciAoYXV0byYgcnVuIDogV1RGOjptYWtlUmV2ZXJz
ZWRSYW5nZShtX3J1bnMpKSB7CisgICAgZm9yIChhdXRvJiBydW4gOiBtYWtlUmV2ZXJzZWRSYW5n
ZShtX3J1bnMpKSB7CiAgICAgICAgIGlmICghcnVuLmlzVGV4dCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIHJ1bi5zZXROZWVkc0h5cGhlbihoeXBoZW5Mb2dpY2FsV2lkdGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDZlNDM4ODBlZGE5
ZTQzNDZhNzk4MDEyMWJlZGZjMTQ4MDU2YTFkYzIuLjUyZmI0NTZkODI3NDU0MTg3YmRjZmUwZjgy
NTJjZTBkNjkwMTE2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjppbml0aWFsaXplKGNvbnN0
IFVzZWRDb25zdHJhaW50cyYgbGluZUNvbnN0cmFpbnRzLCBib29sIGlzRmlycwogICAgICAgICAg
ICAgc3Bhbm5pbmdMYXlvdXRCb3hMaXN0LmFwcGVuZChhbmNlc3Rvcik7CiAgICAgICAgICAgICBh
bmNlc3RvciA9ICZhbmNlc3Rvci0+cGFyZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChh
dXRvKiBzcGFubmluZ0lubGluZUJveCA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2Uoc3Bhbm5pbmdM
YXlvdXRCb3hMaXN0KSkKKyAgICAgICAgZm9yIChhdXRvKiBzcGFubmluZ0lubGluZUJveCA6IG1h
a2VSZXZlcnNlZFJhbmdlKHNwYW5uaW5nTGF5b3V0Qm94TGlzdCkpCiAgICAgICAgICAgICBtX2xp
bmVTcGFubmluZ0lubGluZUJveGVzLmFwcGVuZCh7ICpzcGFubmluZ0lubGluZUJveCwgSW5saW5l
SXRlbTo6VHlwZTo6SW5saW5lQm94U3RhcnQgfSk7CiAgICAgfTsKICAgICBjcmVhdGVMaW5lU3Bh
bm5pbmdJbmxpbmVCb3hlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVHcmlkLmgKaW5kZXggNjkxZjIyOTU3ZDg1
NGFlNmJiNDhlMzc2MWE5NzY3Y2NjYzdmYmU1My4uMTVlYWEyNmUyOGUzYTM0OGMyYzAwNGFjNzA4
NTA2YmMyNjRhM2E5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5oCkBAIC0yMDksNyArMjA5LDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFJvd3MmIHJvd3MoKSBjb25zdCB7IHJldHVybiBtX3Jvd3M7IH0K
ICAgICBSb3dzJiByb3dzKCkgeyByZXR1cm4gbV9yb3dzOyB9CiAKLSAgICB1c2luZyBDZWxscyA9
IFdURjo6TGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENlbGw+PjsKKyAgICB1c2luZyBDZWxs
cyA9IExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDZWxsPj47CiAgICAgQ2VsbHMmIGNlbGxz
KCkgeyByZXR1cm4gbV9jZWxsczsgfQogCiAgICAgU2xvdCogc2xvdChTbG90UG9zaXRpb24pOwpA
QCAtMjE3LDcgKzIxNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3Bhbm5lZChTbG90UG9zaXRp
b24pOwogCiBwcml2YXRlOgotICAgIHVzaW5nIFNsb3RNYXAgPSBXVEY6Okhhc2hNYXA8U2xvdFBv
c2l0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdD4+OworICAgIHVzaW5nIFNsb3RNYXAgPSBIYXNo
TWFwPFNsb3RQb3NpdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFNsb3Q+PjsKIAogICAgIENvbHVtbnMg
bV9jb2x1bW5zOwogICAgIFJvd3MgbV9yb3dzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlTGF5b3V0LmNwcApp
bmRleCAzM2JhNTcxMzY2OWVlNDgyOTM0MjVmNDNlNmYxZjg4NDEwNDJlZTAyLi4wMjk2MDBiMzM1
MmIzZmViM2ZhMGU5YjkwMzg5MTliNjI0NmMzYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlTGF5b3V0
LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGlubGluZSBzdGF0aWMgR3JpZFNwYWNlJiBvcGVyYXRv
ci8oR3JpZFNwYWNlJiBhLCB1bnNpZ25lZCB2YWx1ZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFNwYW5UeXBlPgotc3RhdGljIFZlY3RvcjxMYXlvdXRVbml0PiBkaXN0cmlidXRlQXZhaWxhYmxl
U3BhY2UoY29uc3QgVGFibGVHcmlkJiBncmlkLCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlLCBj
b25zdCBXVEY6OkZ1bmN0aW9uPEdyaWRTcGFjZShjb25zdCBUYWJsZUdyaWQ6OlNsb3QmLCBzaXpl
X3QpPiYgc2xvdFNwYWNlKQorc3RhdGljIFZlY3RvcjxMYXlvdXRVbml0PiBkaXN0cmlidXRlQXZh
aWxhYmxlU3BhY2UoY29uc3QgVGFibGVHcmlkJiBncmlkLCBMYXlvdXRVbml0IGF2YWlsYWJsZVNw
YWNlLCBjb25zdCBGdW5jdGlvbjxHcmlkU3BhY2UoY29uc3QgVGFibGVHcmlkOjpTbG90Jiwgc2l6
ZV90KT4mIHNsb3RTcGFjZSkKIHsKICAgICBhdXRvJiBjb2x1bW5zID0gZ3JpZC5jb2x1bW5zKCk7
CiAgICAgYXV0byYgcm93cyA9IGdyaWQucm93cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTG9naWNhbE9yZGVyVHJhdmVyc2Fs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxv
Z2ljYWxPcmRlclRyYXZlcnNhbC5jcHAKaW5kZXggNjlmNTc0NjEwMzZjZTNmMmYzNjkzNzUzYmQ3
Y2Q2YjM4NjI5Y2U3MS4uNGM0NGM5NmIwNGExZjlkYjQwOGFhNTlhOGFjMmJjZjA4MWNiZDFlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJh
dG9yTG9naWNhbE9yZGVyVHJhdmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMb2dpY2FsT3JkZXJUcmF2ZXJzYWwuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIHN0YXRpYyBUZXh0TG9naWNhbE9yZGVyQ2FjaGUgbWFrZVRleHRMb2dpY2Fs
T3JkZXJDYWNoZUlmTmVlZGVkKGNvbnN0IFJlbmRlclRleHQmCiAgICAgaWYgKCF0ZXh0LmNvbnRh
aW5zUmV2ZXJzZWRUZXh0KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGNhY2hl
ID0gV1RGOjptYWtlVW5pcXVlPFRleHRMb2dpY2FsT3JkZXJDYWNoZURhdGE+KCk7CisgICAgYXV0
byBjYWNoZSA9IG1ha2VVbmlxdWU8VGV4dExvZ2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKICAgICBm
b3IgKGF1dG8gdGV4dEJveCA6IHRleHRCb3hlc0Zvcih0ZXh0KSkKICAgICAgICAgY2FjaGUtPmJv
eGVzLmFwcGVuZCh0ZXh0Qm94KTsKIApAQCAtOTEsNyArOTEsNyBAQCBUZXh0Qm94SXRlcmF0b3Ig
bmV4dFRleHRCb3hJbkxvZ2ljYWxPcmRlcihjb25zdCBUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gs
IFRleHRMbwogCiBzdGF0aWMgTGluZUxvZ2ljYWxPcmRlckNhY2hlIG1ha2VMaW5lTG9naWNhbE9y
ZGVyQ2FjaGUoY29uc3QgTGluZUl0ZXJhdG9yJiBsaW5lKQogewotICAgIGF1dG8gY2FjaGUgPSBX
VEY6Om1ha2VVbmlxdWU8TGluZUxvZ2ljYWxPcmRlckNhY2hlRGF0YT4oKTsKKyAgICBhdXRvIGNh
Y2hlID0gbWFrZVVuaXF1ZTxMaW5lTG9naWNhbE9yZGVyQ2FjaGVEYXRhPigpOwogCiAgICAgY2Fj
aGUtPmxpbmUgPSBsaW5lOwogICAgIGNhY2hlLT5ib3hlcyA9IGxlYWZCb3hlc0luTG9naWNhbE9y
ZGVyKGxpbmUsIFtdKGF1dG8gZmlyc3QsIGF1dG8gbGFzdCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292
ZXJhZ2UuY3BwCmluZGV4IDJjY2I1NzYwMzA4YjQyYjY1N2Q2NzEwN2RmZjFhZGZlOWQxOTFkNTcu
LjQ2OTM0NDU0ZjZkNzg1YTA4N2FmYWVkYTkxNmU4Y2JmZDg4NDY0N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Db3ZlcmFnZS5jcHAKQEAgLTU3Niw4ICs1NzYsOCBAQCBPcHRpb25TZXQ8QXZvaWRhbmNl
UmVhc29uPiBjYW5Vc2VGb3JMaW5lTGF5b3V0V2l0aFJlYXNvbihjb25zdCBSZW5kZXJCbG9ja0Zs
b3cmCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBQQUw6OnJlZ2lzdGVy
Tm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVybkxpbmVMYXlvdXRDb3Zl
cmFnZSIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiB7IHByaW50TW9kZXJuTGluZUxheW91dENvdmVy
YWdlIH0pOwotICAgICAgICBQQUw6OnJlZ2lzdGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5X
ZWJLaXQuc2hvd01vZGVybkxpbmVMYXlvdXRSZWFzb25zIiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
IHsgcHJpbnRNb2Rlcm5MaW5lTGF5b3V0QmxvY2tMaXN0IH0pOworICAgICAgICBQQUw6OnJlZ2lz
dGVyTm90aWZ5Q2FsbGJhY2soImNvbS5hcHBsZS5XZWJLaXQuc2hvd01vZGVybkxpbmVMYXlvdXRD
b3ZlcmFnZSIsIEZ1bmN0aW9uPHZvaWQoKT4geyBwcmludE1vZGVybkxpbmVMYXlvdXRDb3ZlcmFn
ZSB9KTsKKyAgICAgICAgUEFMOjpyZWdpc3Rlck5vdGlmeUNhbGxiYWNrKCJjb20uYXBwbGUuV2Vi
S2l0LnNob3dNb2Rlcm5MaW5lTGF5b3V0UmVhc29ucyIsIEZ1bmN0aW9uPHZvaWQoKT4geyBwcmlu
dE1vZGVybkxpbmVMYXlvdXRCbG9ja0xpc3QgfSk7CiAgICAgfSk7CiAjZW5kaWYKICAgICBPcHRp
b25TZXQ8QXZvaWRhbmNlUmVhc29uPiByZWFzb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKaW5kZXggZDVmNzQ2YWFiMTVkYmMyMTI0
OGNlMjQ4MTZjOWVlZjQ5M2UwNmNmNC4uMWEyNzM2YzFiOWE0ODZmOGFiZDNmNzM1NDA1YWE3Nzc3
YzQ4NWJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRpb25NYW5p
ZmVzdExvYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xh
c3MgQXBwbGljYXRpb25NYW5pZmVzdExvYWRlciBmaW5hbCA6IHByaXZhdGUgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgewogV1RGX01BS0VfTk9OQ09QWUFCTEUoQXBwbGljYXRpb25NYW5pZmVzdExv
YWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHR5cGVkZWYgV1RG
OjpGdW5jdGlvbjx2b2lkIChDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0Pik+IENvbXBsZXRpb25IYW5kbGVyVHlwZTsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uPHZv
aWQgKENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q+KT4gQ29t
cGxldGlvbkhhbmRsZXJUeXBlOwogCiAgICAgQXBwbGljYXRpb25NYW5pZmVzdExvYWRlcihEb2N1
bWVudExvYWRlciYsIGNvbnN0IFVSTCYsIGJvb2wpOwogICAgIHZpcnR1YWwgfkFwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CmluZGV4IDQ2MDA2MGMxODk3ZWUxNjk3YjhkYzdlYmMzMmRmODg1NmJjZmE4ZTEuLmE0M2Q0YmZh
M2VjMmZiMzUyN2Y1ZGZiNjMxY2M1MWFkZjVlNGU0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjQxOSw3ICsyNDE5LDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0
IFVSTCYgYmwKICAgICBmcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1l
KCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCi1SZXNvdXJjZUVycm9y
IERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBXVEY6OlN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckRp
ZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0
VW5yZWFjaGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggYjkyNzM2Y2NkYzRlM2Q2NTc0Y2ZiZDZkMTA2NGMxYTQwYWJiZmRj
OC4uZTVhNmNjMzAxYTk5Y2Q5MDQwYjAzYWIzN2E1NWM5NjJiMDk2ODRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02MzQsNyArNjM0LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHNob3VsZENsZWFyV2luZG93TmFtZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IERv
Y3VtZW50JiBuZXcKICAgICByZXR1cm4gIW5ld0RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuaXNT
YW1lT3JpZ2luQXMoZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CiB9CiAKLXZv
aWQgRnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50KiBuZXdEb2N1bWVudCwgYm9vbCBjbGVhcldp
bmRvd1Byb3BlcnRpZXMsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3RzLCBib29sIGNsZWFyRnJhbWVW
aWV3LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBoYW5kbGVET01XaW5kb3dDcmVhdGlvbikKK3Zv
aWQgRnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50KiBuZXdEb2N1bWVudCwgYm9vbCBjbGVhcldp
bmRvd1Byb3BlcnRpZXMsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3RzLCBib29sIGNsZWFyRnJhbWVW
aWV3LCBGdW5jdGlvbjx2b2lkKCk+JiYgaGFuZGxlRE9NV2luZG93Q3JlYXRpb24pCiB7CiAgICAg
Ym9vbCBuZWVkZWRDbGVhciA9IG1fbmVlZHNDbGVhcjsKICAgICBtX25lZWRzQ2xlYXIgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggYWUzZjZkNjA2YTkxYjkwOTlk
YzkwNGI5ZDVjNjgyMzI4NjIxNGI5ZS4uMDc2YzMzNThiOGNhYTZjMDM0OGMwNWNmYzVhZWUyZjI2
Y2NiNzM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTkyLDcgKzkyLDcg
QEAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0JhY2tGb3J3
YXJkTG9hZFR5cGUoRnJhbWVMb2FkVHlwZSk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGlzUmVsb2Fk
KEZyYW1lTG9hZFR5cGUpOwogCi11c2luZyBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9
IFdURjo6RnVuY3Rpb248dm9pZChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+
OwordXNpbmcgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFBv
bGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyKT47CiAKIGNsYXNzIEZyYW1lTG9hZGVy
IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE1Miw3ICsxNTIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSk7CiAgICAg
dm9pZCBjbG9zZVVSTCgpOwogICAgIC8vIEZJWE1FOiBjbGVhcigpIGlzIHRyeWluZyB0byBkbyB0
b28gbWFueSB0aGluZ3MuIFdlIHNob3VsZCBicmVhayBpdCBkb3duIGludG8gc21hbGxlciBmdW5j
dGlvbnMgKGlkZWFsbHkgd2l0aCBmZXdlciByYXcgQm9vbGVhbiBwYXJhbWV0ZXJzKS4KLSAgICB2
b2lkIGNsZWFyKERvY3VtZW50KiBuZXdEb2N1bWVudCwgYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRp
ZXMgPSB0cnVlLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cyA9IHRydWUsIGJvb2wgY2xlYXJGcmFt
ZVZpZXcgPSB0cnVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBoYW5kbGVET01XaW5kb3dDcmVh
dGlvbiA9IG51bGxwdHIpOworICAgIHZvaWQgY2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBi
b29sIGNsZWFyV2luZG93UHJvcGVydGllcyA9IHRydWUsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3Rz
ID0gdHJ1ZSwgYm9vbCBjbGVhckZyYW1lVmlldyA9IHRydWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBo
YW5kbGVET01XaW5kb3dDcmVhdGlvbiA9IG51bGxwdHIpOwogCiAgICAgYm9vbCBpc0xvYWRpbmco
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGZyYW1lSGFzTG9hZGVkKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGU3NTgyZDg5
NWZkYWE5YTY3NTdkOWYyMTYyZWNjNTJkMWUxNjQxMDguLjRmZDYzN2E5MDE0YTVkNDFhMjI2ZWU0
NTkxN2I2YjNlOWE3OTBlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0xMDgsNyArMTA4LDcgQEAgZW51bSBjbGFzcyBVc2VkTGVnYWN5VExTIDogYm9v
bDsKIAogc3RydWN0IFN0cmluZ1dpdGhEaXJlY3Rpb247CiAKLXR5cGVkZWYgV1RGOjpGdW5jdGlv
bjx2b2lkIChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+IEZyYW1lUG9saWN5
RnVuY3Rpb247Cit0eXBlZGVmIEZ1bmN0aW9uPHZvaWQgKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hl
Y2tJZGVudGlmaWVyKT4gRnJhbWVQb2xpY3lGdW5jdGlvbjsKIAogY2xhc3MgV0VCQ09SRV9FWFBP
UlQgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBlMmVjZDFhZmMzNWJhNmQzMTIz
ODhjODI4ZWE0Y2UxZGRjMjNhY2ZjLi5iMGNiNTZlYzAxN2U5YzdmMTc2YmY1N2MyZjhmMjhhYzAx
YWExM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNzUsMTYg
Kzc1LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHJpb3JpdGl6ZVJlc291cmNlTG9h
ZHMoY29uc3QgVmVjdG9yPFN1YnJlc291cmNlTG9hZGVyKj4mKTsKIAogICAgIHZpcnR1YWwgYm9v
bCB1c2VQaW5nTG9hZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB1c2luZyBQaW5nTG9h
ZENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJy
b3ImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik+OworICAgIHVzaW5nIFBpbmdMb2FkQ29tcGxl
dGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik+OwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFBpbmdMb2FkKEZyYW1l
JiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0
SGVhZGVycywgY29uc3QgRmV0Y2hPcHRpb25zJiwgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3Np
dGlvbiwgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciYmID0geyB9KSA9IDA7CiAKLSAgICB1c2lu
ZyBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYpPjsKKyAgICB1c2luZyBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXIg
PSBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT47CiAgICAgdmlydHVhbCB2b2lk
IHByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYsIGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCkgPSAw
OwogCiAgICAgdmlydHVhbCBib29sIGlzT25MaW5lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBhZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZChib29s
KT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVy
KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQ
ZXJmb3JtU2VjdXJpdHlDaGVja3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBoYXZlUGVyZm9ybWVkU2VjdXJpdHlDaGVja3MoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKaW5kZXggNGYyMjg4MzM2M2EwY2UzNWFmNTJhNGI1
YjdmZTFmMDFmMzVlMzc4NS4uZTU1NWIyNzk3ZDhjNWNmNzI5OGU3NzA5OTVkNmJmZDAwZGFiMzc5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTZWNv
bmRzIHRpbWVzdGFtcFJlc29sdXRpb24geyA1X3MgfTsKIAotdHlwZWRlZiBXVEY6Okhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIHVuc2lnbmVkLCBSZWdpc3RyYWJsZURvbWFpbjo6UmVnaXN0cmFi
bGVEb21haW5IYXNoLCBIYXNoVHJhaXRzPFJlZ2lzdHJhYmxlRG9tYWluPiwgSGFzaFRyYWl0czx1
bnNpZ25lZD4+OjpLZXlWYWx1ZVBhaXJUeXBlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NWYWx1ZTsK
K3R5cGVkZWYgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgdW5zaWduZWQsIFJlZ2lzdHJhYmxl
RG9tYWluOjpSZWdpc3RyYWJsZURvbWFpbkhhc2gsIEhhc2hUcmFpdHM8UmVnaXN0cmFibGVEb21h
aW4+LCBIYXNoVHJhaXRzPHVuc2lnbmVkPj46OktleVZhbHVlUGFpclR5cGUgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1ZhbHVlOwogCiBzdGF0aWMgdm9pZCBlbmNvZGVIYXNoU2V0KEtleWVkRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgaGFzaFNldCkKIHsKQEAgLTQzOSw3ICs0Mzks
NyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTY3JlZW5BUElPcHRpb25TZXQoU3RyaW5nQnVpbGRlciYg
YnVpbGRlciwgY29uc3QgT3B0aW9uU2V0PFJlcwogfQogI2VuZGlmCiAKLXN0YXRpYyBib29sIGhh
c0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihXVEY6OlNlY29uZHMgaW50ZXJhY3Rpb25UaW1lU2Vj
b25kcykKK3N0YXRpYyBib29sIGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIGlu
dGVyYWN0aW9uVGltZVNlY29uZHMpCiB7CiAgICAgcmV0dXJuIGludGVyYWN0aW9uVGltZVNlY29u
ZHMgPiBTZWNvbmRzKDApICYmIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpIC0g
aW50ZXJhY3Rpb25UaW1lU2Vjb25kcyA8IDI0X2g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDE3
YjhmMDdhMWQzYzc5YzEyNzdlNWNhMDgxMjg0YjlhMzgyMTUyMGYuLjlhOTUzMDA4NzY2YTg4ODU1
NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0xNTQsNyArMTU0
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBIYXNoTWFwPFN0cmluZywgQXBwbGljYXRpb25DYWNo
ZUdyb3VwKj4gbV9jYWNoZXNJbk1lbW9yeTsgLy8gRXhjbHVkZXMgb2Jzb2xldGUgY2FjaGUgZ3Jv
dXBzLgogCi0gICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U+OworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZT47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmlu
ZGV4IDYwOWVkMTExNGZkMTk5NmNlODk3M2I3NGM3OWJjN2ZlMDUyNmVkNzIuLmRlN2RhZGRkYWMy
MjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC00MTAsNyArNDEw
LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24oY29uc3QgUmUKIAogI2VuZGlmCiAKLVJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoTm9kZSYgbm9kZSwgV1RGOjpGdW5j
dGlvbjxib29sIChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShOb2RlJiBub2RlLCBGdW5jdGlvbjxib29sKEZy
YW1lJik+JiYgZnJhbWVGaWx0ZXIpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbm9kZS5kb2N1bWVu
dCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMg
dm9pZCBhZGRTdWJyZXNvdXJjZXNGb3JBdHRhY2htZW50RWxlbWVudHNJZk5lY2Vzc2FyeShGcmFt
ZSYgZnJhbWUsIGNvbnN0CiAKICNlbmRpZgogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcmFtZSYg
ZnJhbWUsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBXVEY6OkZ1bmN0aW9uPGJvb2wgKEZy
YW1lJik+JiYgZnJhbWVGaWx0ZXIpCitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJh
bWVGaWx0ZXIpCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVy
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5oCmluZGV4IDY3YWZhODNkYzdhOWJmMjJmOGU4OTY1MWVlOWVjNDM5MzJmMDY1ZTAu
LmQwOWVjOWY3NWFiYTEzNmE4NjMzOWViNGQ4NmFiZDgyNzdjNGZmMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJl
ZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVm
PEFyY2hpdmVSZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFy
Y2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2ZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBXVEY6OkZ1bmN0aW9uPGJvb2wo
RnJhbWUmKT4mJiBmcmFtZUZpbHRlciA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2woRnJh
bWUmKT4mJiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZUZyb21TZWxlY3Rpb24oRnJh
bWUqKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IGNyZWF0ZShjb25zdCBTaW1wbGVSYW5nZSYpOwpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgog
CiAgICAgZW51bSBNYWluUmVzb3VyY2VTdGF0dXMgeyBTdWJyZXNvdXJjZSwgTWFpblJlc291cmNl
IH07CiAKLSAgICBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIG1hcmt1cFN0cmluZywgRnJhbWUmLCBjb25zdCBWZWN0b3I8Tm9kZSo+JiBub2Rlcywg
V1RGOjpGdW5jdGlvbjxib29sIChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyKTsKKyAgICBzdGF0aWMg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmlu
ZywgRnJhbWUmLCBjb25zdCBWZWN0b3I8Tm9kZSo+JiBub2RlcywgRnVuY3Rpb248Ym9vbChGcmFt
ZSYpPiYmIGZyYW1lRmlsdGVyKTsKICAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmKTsKICAgICBzdGF0aWMgUmVzb3VyY2VSZXNw
b25zZSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbU1hY0FyY2hpdmVkRGF0YShDRkRhdGFSZWYp
OwogICAgIHN0YXRpYyBSZXNvdXJjZVJlc3BvbnNlIGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9t
UHJvcGVydHlMaXN0RGF0YShDRkRhdGFSZWYsIENGU3RyaW5nUmVmIHJlc3BvbnNlRGF0YVR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDE5
ZThhMTE0MzhlOGY5NTQzNzRmYzNhMDkzZWE5NzYwNzliNmVkOC4uY2U4YTA5MzlhNTYzZjg5ZjM5
ZTlmMWIxNjkzMzRhYWU1MGVjYTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBjVGFy
Z2V0UHJ1bmVQZXJjZW50YWdlID0gLjk1ZjsgLy8gUGVyY2VudGFnZSBvZiBjYXBhY2l0eSB0b3dh
CiAKIE1lbW9yeUNhY2hlJiBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkKIHsKLSAgICBBU1NFUlQo
V1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVtb3J5Q2FjaGU+IG1lbW9yeUNhY2hlOwogICAgIHJldHVy
biBtZW1vcnlDYWNoZTsKIH0KQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIE1lbW9yeUNhY2hlOjph
ZGQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIGlmIChyZXNvdXJjZS5yZXNvdXJjZVJl
cXVlc3QoKS5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihyZXNvdXJjZS51cmwoKSwgcmVz
b3VyY2UuY2FjaGVQYXJ0aXRpb24oKSk7CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIE1lbW9y
eUNhY2hlOjpyZXZhbGlkYXRpb25TdWNjZWVkZWQoQ2FjaGVkUmVzb3VyY2UmIHJldmFsaWRhdGlu
Z1Jlc291cmNlLCBjbwogCiB2b2lkIE1lbW9yeUNhY2hlOjpyZXZhbGlkYXRpb25GYWlsZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJldmFsaWRhdGluZ1Jlc291cmNlKQogewotICAgIEFTU0VSVChXVEY6Omlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhSZXNv
dXJjZUxvYWRpbmcsICJSZXZhbGlkYXRpb24gZmFpbGVkIGZvciAlcCIsICZyZXZhbGlkYXRpbmdS
ZXNvdXJjZSk7CiAgICAgQVNTRVJUKHJldmFsaWRhdGluZ1Jlc291cmNlLnJlc291cmNlVG9SZXZh
bGlkYXRlKCkpOwogICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLmNsZWFyUmVzb3VyY2VUb1JldmFs
aWRhdGUoKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6
OnJlc291cmNlRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAKIENh
Y2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0SW1wbChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENhY2hlZFJlc291cmNlTWFwJiByZXNvdXJjZXMpCiB7
Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgVVJMIHVybCA9IHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJl
cXVlc3QudXJsKCkpOwogCiAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcih1cmwsIHJlcXVl
c3QuY2FjaGVQYXJ0aXRpb24oKSk7CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBNZW1vcnlDYWNo
ZTo6cHJ1bmVMaXZlUmVzb3VyY2VzKGJvb2wgc2hvdWxkRGVzdHJveURlY29kZWREYXRhRm9yQWxs
TGl2ZVJlc28KICAgICBwcnVuZUxpdmVSZXNvdXJjZXNUb1NpemUodGFyZ2V0U2l6ZSwgc2hvdWxk
RGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcyk7CiB9CiAKLXZvaWQgTWVtb3J5
Q2FjaGU6OmZvckVhY2hSZXNvdXJjZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVkUmVz
b3VyY2UmKT4mIGZ1bmN0aW9uKQordm9pZCBNZW1vcnlDYWNoZTo6Zm9yRWFjaFJlc291cmNlKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoQ2FjaGVkUmVzb3VyY2UmKT4mIGZ1bmN0aW9uKQogewogICAgIGZv
ciAoYXV0byYgdW5wcm90ZWN0ZWRMUlVMaXN0IDogbV9hbGxSZXNvdXJjZXMpIHsKICAgICAgICAg
Zm9yIChhdXRvJiByZXNvdXJjZSA6IGNvcHlUb1ZlY3RvcigqdW5wcm90ZWN0ZWRMUlVMaXN0KSkK
QEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpmb3JFYWNoUmVzb3VyY2UoY29u
c3QgV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlZFJlc291cmNlJik+JiBmdQogICAgIH0KIH0KIAot
dm9pZCBNZW1vcnlDYWNoZTo6Zm9yRWFjaFNlc3Npb25SZXNvdXJjZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZCAoQ2FjaGVkUmVzb3VyY2UmKT4mIGZ1
bmN0aW9uKQordm9pZCBNZW1vcnlDYWNoZTo6Zm9yRWFjaFNlc3Npb25SZXNvdXJjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoQ2FjaGVkUmVzb3VyY2UmKT4m
IGZ1bmN0aW9uKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25SZXNvdXJjZXMuZmluZChzZXNz
aW9uSUQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25SZXNvdXJjZXMuZW5kKCkpCkBAIC0zOTEs
NyArMzkxLDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6c2V0Q2FwYWNpdGllcyh1bnNpZ25lZCBtaW5E
ZWFkQnl0ZXMsIHVuc2lnbmVkIG1heERlYWRCeXRlcywgdW4KIAogdm9pZCBNZW1vcnlDYWNoZTo6
cmVtb3ZlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICBBU1NFUlQoV1RGOjppc01h
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coUmVzb3Vy
Y2VMb2FkaW5nLCAiRXZpY3RpbmcgcmVzb3VyY2UgJXAgZm9yICclLjI1NXMnIGZyb20gY2FjaGUi
LCAmcmVzb3VyY2UsIHJlc291cmNlLnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAg
ICAgLy8gVGhlIHJlc291cmNlIG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVv
bmUgb3RoZXIgdGhhbiBvdXIgY2FsbGVyLAogICAgIC8vIHdobyBuZWVkZWQgYSBmcmVzaCBjb3B5
IGZvciBhIHJlbG9hZC4gU2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQ3OSNjNj4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmlu
ZGV4IDU3NDQ3ZmYxYWYwNDZjNjQ4ZTg0ZDk3NmFiZjAwNjEwYmYwMDI4ZGIuLjE4NjE2NmExNWRl
MWJlMzIwOTJhOGUyMDJhZDM4NmE0ZDFhMTVkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0xMDIsOCArMTAyLDggQEAgcHVibGljOgogICAgIHZvaWQg
cmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJj
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgcmV2YWxpZGF0aW9uRmFpbGVk
KENhY2hlZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSk7CiAKLSAgICB2b2lkIGZvckVh
Y2hSZXNvdXJjZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVkUmVzb3VyY2UmKT4mKTsK
LSAgICB2b2lkIGZvckVhY2hTZXNzaW9uUmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChDYWNoZWRSZXNvdXJjZSYpPiYpOworICAgIHZvaWQgZm9yRWFjaFJl
c291cmNlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoQ2FjaGVkUmVzb3VyY2UmKT4mKTsKKyAgICB2b2lk
IGZvckVhY2hTZXNzaW9uUmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoQ2FjaGVkUmVzb3VyY2UmKT4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YUZvckFsbEltYWdlcygpOwogCiAgICAgLy8gU2V0cyB0aGUgY2FjaGUncyBtZW1v
cnkgY2FwYWNpdGllcywgaW4gYnl0ZXMuIFRoZXNlIHdpbGwgaG9sZCBvbmx5IGFwcHJveGltYXRl
bHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0
cmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLmgKaW5k
ZXggMjc3NmUyZTAyMzlkNTAxZDRhODEyZjE5NWEwOTA3Nzc3YWI2MjU3OS4uNWRiOGM5MzYxZmYw
OTA5OTQ2YTgwOTA2MDYwN2U5YzdmODExMjY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMuaApAQCAtMjksNSArMjksNSBAQAogI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgogCi1XRUJDT1JF
X0VYUE9SVCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUoTlNVUkwgKiwg
Y29uc3QgV1RGOjpTdHJpbmcmIE1JTUVUeXBlKTsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpz
dWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShOU1VSTCAqLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlKTsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENo
YXJhY3RlcnMoTlNTdHJpbmcgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IDhlMDdjZDE1OGNhNDlkMmIxODFi
NTU5MzZiYTFjYjhkMGExZGJmZjguLmY4OTc1OGU5ZDZjNDA1OWY0NTUyN2Q4NzVmYTNhZmMzZTk2
ZWIxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUYuY3BwCkBAIC03NjcsNyArNzY3LDcgQEAgc3RhdGljIFN0cmluZyB0cmFj
a0Rpc3BsYXlOYW1lKGNvbnN0IFRyYWNrQmFzZSYgdHJhY2spCiAgICAgU3RyaW5nIHRyYWNrTGFu
Z3VhZ2VJZGVudGlmaWVyID0gdHJhY2sudmFsaWRCQ1A0N0xhbmd1YWdlKCk7CiAKICAgICBhdXRv
IHByZWZlcnJlZExhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoU2hvdWxkTWluaW1p
emVMYW5ndWFnZXM6Ok5vKTsKLSAgICBhdXRvIGRlZmF1bHRMYW5ndWFnZSA9ICFwcmVmZXJyZWRM
YW5ndWFnZXMuaXNFbXB0eSgpID8gcHJlZmVycmVkTGFuZ3VhZ2VzWzBdIDogZW1wdHlTdHJpbmco
KTsgLy8gVGhpcyBtYXRjaGVzIGBXVEY6OmRlZmF1bHRMYW5ndWFnZWAuCisgICAgYXV0byBkZWZh
dWx0TGFuZ3VhZ2UgPSAhcHJlZmVycmVkTGFuZ3VhZ2VzLmlzRW1wdHkoKSA/IHByZWZlcnJlZExh
bmd1YWdlc1swXSA6IGVtcHR5U3RyaW5nKCk7IC8vIFRoaXMgbWF0Y2hlcyBgZGVmYXVsdExhbmd1
YWdlYC4KICAgICBhdXRvIGN1cnJlbnRMb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGRlZmF1bHRMYW5ndWFnZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiAgICAgYXV0byBsb2NhbGVJZGVudGlmaWVyID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNh
bm9uaWNhbExvY2FsZUlkZW50aWZpZXJGcm9tU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRy
YWNrTGFuZ3VhZ2VJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICBTdHJp
bmcgbGFuZ3VhZ2VEaXNwbGF5TmFtZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5RGlzcGxheU5hbWVG
b3JQcm9wZXJ0eVZhbHVlKGN1cnJlbnRMb2NhbGUuZ2V0KCksIGtDRkxvY2FsZUxhbmd1YWdlQ29k
ZSwgbG9jYWxlSWRlbnRpZmllci5nZXQoKSkpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKaW5kZXggY2NiZGZhNDk2M2U0MDM5NmM3OWVhOTYzOWNiNWEwNzliNGYzZWQyNi4uMjNh
NThiZjhiODNjZTJmNTZiZTAyMTYyZGI1Nzg0YmE3MzgxZjNlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCkBAIC0zMjksOCArMzI5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFRleHRJbmRpY2F0b3JEYXRhJikgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzaG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRoUGFyc2VkVVJM
JiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSB7IGNhbGxi
YWNrKGZhbHNlKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGFjdFBpY2tlcihjb25zdCBD
b250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soc3Rk
OjpudWxsb3B0KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93U2hhcmVTaGVldChTaGFyZURhdGFX
aXRoUGFyc2VkVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykg
eyBjYWxsYmFjayhmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIo
Y29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxWZWN0b3I8Q29udGFjdEluZm8+PiYmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhz
dGQ6Om51bGxvcHQpOyB9CiAgICAgCiAgICAgLy8gQXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9h
ZCBhbiBpY29uIGZvciBzcGVjaWZpZWQgZmlsZW5hbWVzLgogICAgIHZpcnR1YWwgdm9pZCBsb2Fk
SWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXImKSA9IDA7
CkBAIC00MTksNyArNDE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNZWRp
YVVzYWdlTWFuYWdlclNlc3Npb24oTWVkaWFTZXNzaW9uSWRlbnRpZmllcikgeyB9CiAjZW5kaWYK
IAotICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhU
TUxWaWRlb0VsZW1lbnQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIgPSBbXShib29sKSB7IH0pIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChI
VE1MVmlkZW9FbGVtZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlciA9IFtdKGJvb2wpIHsgfSkgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlv
bihIVE1MVmlkZW9FbGVtZW50JiwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9Q
bGF5YmFjaygpIHsgcmV0dXJuIGZhbHNlOyB9IAogCkBAIC01NTIsMTMgKzU1MiwxMyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pID0gMDsKIAogI2lmIEVOQUJMRShJTlRFTExJ
R0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQotICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURv
bWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgRnJhbWUmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxl
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIEZyYW1lJiwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBzY29wZSwgV1RGTW92ZSh0b3BGcmFtZURvbWFp
biksIFdURk1vdmUoc3ViRnJhbWVEb21haW4pIH0pOyB9CisgICAgdmlydHVhbCB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJlZ2lz
dHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCBGcmFtZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJh
YmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lJiwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcih7IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgc2NvcGUsIFdURk1vdmUodG9wRnJhbWVEb21haW4p
LCBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSB9KTsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNQYWdl
TGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiAvKnRvcExldmVsRG9t
YWluKi8sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiAvKnJlc291cmNlRG9tYWluKi8pIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJ
T04pCi0gICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3MoRnJhbWUmLCBib29sIC8qIG1heVByb21wdCAqLywgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUpPiYmIGNh
bGxiYWNrKSB7IGNhbGxiYWNrKERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3Rh
dGU6OkRlbmllZCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2VzcyhGcmFtZSYsIGJvb2wgLyogbWF5UHJvbXB0ICovLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUp
PiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNz
aW9uU3RhdGU6OkRlbmllZCk7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEluc2Vy
dE1lbnVFbGVtZW50KEhUTUxNZW51RWxlbWVudCYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCmluZGV4IDY5YzUxOTViYjZhMGM0NmU0ZTk0MzIwZWRjMzg2Zjk1N2QyODRlNzkuLjViOWVl
YTA3NTIwMTRhZWRhM2U0MjliZWNlODE2MWU3YmM2MjJiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKQEAgLTI0OTIsNyArMjQ5Miw3IEBAIGJvb2wgRE9NV2luZG93Ojppc0luc2VjdXJl
U2NyaXB0QWNjZXNzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVyCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRv
dzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9tU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBpbml0aWFsV2luZG93RmVhdHVyZXMs
IERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBGcmFtZSYgZmlyc3RGcmFtZSwgRnJhbWUmIG9wZW5l
ckZyYW1lLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlh
bG9nRnVuY3Rpb24pCitFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBET01XaW5kb3c6OmNyZWF0
ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgaW5pdGlhbFdpbmRvd0ZlYXR1cmVzLCBET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdywgRnJhbWUmIGZpcnN0RnJhbWUsIEZyYW1lJiBvcGVuZXJGcmFtZSwg
Y29uc3QgRnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dGdW5jdGlvbikK
IHsKICAgICBSZWZQdHIgYWN0aXZlRnJhbWUgPSBhY3RpdmVXaW5kb3cuZnJhbWUoKTsKICAgICBp
ZiAoIWFjdGl2ZUZyYW1lKQpAQCAtMjY0NCw3ICsyNjQ0LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRy
PFdpbmRvd1Byb3h5Pj4gRE9NV2luZG93OjpvcGVuKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBE
T01XaW4KICAgICByZXR1cm4gbmV3RnJhbWUgPyAmbmV3RnJhbWUtPndpbmRvd1Byb3h5KCkgOiBS
ZWZQdHI8V2luZG93UHJveHk+IHsgbnVsbHB0ciB9OwogfQogCi12b2lkIERPTVdpbmRvdzo6c2hv
d01vZGFsRGlhbG9nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxv
Z0ZlYXR1cmVzU3RyaW5nLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJz
dFdpbmRvdywgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChET01XaW5kb3cmKT4mIHByZXBhcmVE
aWFsb2dGdW5jdGlvbikKK3ZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIERPTVdp
bmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBGdW5jdGlv
bjx2b2lkKERPTVdpbmRvdyYpPiYgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKQogewogICAgIGlmICgh
aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCmluZGV4IDZhYmIwMzY2MmE3Y2Q5M2YwOTI3NjZmY2ZkZGYyZjhjYzZiN2Ux
MDIuLjI3Y2UyMmUyYmU2ZWY1NzEwNDM0Zjc0ZGUwZmY1OWZmNTBiYTQ5NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaApAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IG9wZW4oRE9NV2luZG93JiBh
Y3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVh
dHVyZXNTdHJpbmcpOwogCi0gICAgdm9pZCBzaG93TW9kYWxEaWFsb2coY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIERPTVdpbmRvdyYg
YWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24pOworICAgIHZvaWQgc2hv
d01vZGFsRGlhbG9nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxv
Z0ZlYXR1cmVzU3RyaW5nLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJz
dFdpbmRvdywgY29uc3QgRnVuY3Rpb248dm9pZChET01XaW5kb3cmKT4mIHByZXBhcmVEaWFsb2dG
dW5jdGlvbik7CiAKICAgICB2b2lkIHByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSgpOwog
CkBAIC00MjAsNyArNDIwLDcgQEAgcHJpdmF0ZToKICAgICBQYWdlKiBwYWdlKCkgY29uc3Q7CiAg
ICAgYm9vbCBhbGxvd2VkVG9DaGFuZ2VXaW5kb3dHZW9tZXRyeSgpIGNvbnN0OwogCi0gICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IGNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgQXRvbVN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBXaW5kb3dGZWF0
dXJlcyYsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBGcmFtZSYgZmlyc3RGcmFtZSwgRnJhbWUm
IG9wZW5lckZyYW1lLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+JiBwcmVw
YXJlRGlhbG9nRnVuY3Rpb24gPSBudWxscHRyKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
UHRyPEZyYW1lPj4gY3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBB
dG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgRE9NV2luZG93JiBh
Y3RpdmVXaW5kb3csIEZyYW1lJiBmaXJzdEZyYW1lLCBGcmFtZSYgb3BlbmVyRnJhbWUsIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoRE9NV2luZG93Jik+JiBwcmVwYXJlRGlhbG9nRnVuY3Rpb24gPSBudWxs
cHRyKTsKICAgICBib29sIGlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZjk2YzMxMjhl
ZDlmZDM4YjM2ZTBlNWQxYTQxNmZmZGVmZDNiYjM2Yy4uZjExZTMyMWYwNTE4ZjJiM2IzNjBmN2E0
N2Y3MDFlZGZlNDc3ZWNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
MjYyNiw3ICsyNjI2LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJn
ZXROb2RlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSoKICAgICAgICAgICAgIGlm
IChhdXRvIGVsZW1lbnRVbmRlck1vdXNlID0gbV9lbGVtZW50VW5kZXJNb3VzZSkKICAgICAgICAg
ICAgICAgICBlbGVtZW50VW5kZXJNb3VzZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KHBsYXRmb3JtTW91
c2VFdmVudCwgZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50LCAwLCBtX2xhc3RFbGVtZW50VW5k
ZXJNb3VzZS5nZXQoKSk7CiAKLSAgICAgICAgICAgIGZvciAoYXV0byYgY2hhaW4gOiBXVEY6Om1h
a2VSZXZlcnNlZFJhbmdlKGVudGVyZWRFbGVtZW50c0NoYWluKSkgeworICAgICAgICAgICAgZm9y
IChhdXRvJiBjaGFpbiA6IG1ha2VSZXZlcnNlZFJhbmdlKGVudGVyZWRFbGVtZW50c0NoYWluKSkg
ewogICAgICAgICAgICAgICAgIGlmIChoYXNDYXB0dXJpbmdNb3VzZUVudGVyTGlzdGVuZXIgfHwg
Y2hhaW4tPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5wb2ludGVyZW50ZXJFdmVudCkg
fHwgY2hhaW4tPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZWVudGVyRXZlbnQp
KQogICAgICAgICAgICAgICAgICAgICBjaGFpbi0+ZGlzcGF0Y2hNb3VzZUV2ZW50KHBsYXRmb3Jt
TW91c2VFdmVudCwgZXZlbnROYW1lcygpLm1vdXNlZW50ZXJFdmVudCwgMCwgbV9sYXN0RWxlbWVu
dFVuZGVyTW91c2UuZ2V0KCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDE0NDE5Yjk1YTNiNmFkZGQ0MTcwYTcxZDJjZjBhNzQyMGM2OGQ4N2MuLjU3OGVj
ZGI2OTNkZmE1MzEwYTcxNjA2ZjAzNmJmZjZkMmZhYzYyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTI1MzEsNyArMjUzMSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxQb3Np
dGlvbkNoYW5nZWQoY29uc3QgU2Nyb2xsUG9zaXRpb24mIG9sZFBvc2l0aW9uLCBjb25zdCBTCiAg
ICAgfQogfQogCi12b2lkIEZyYW1lVmlldzo6YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVj
dChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlUmVjdCk+JiBhcHBseSkKK3ZvaWQgRnJhbWVWaWV3OjphcHBseVJlY3Vy
c2l2ZWx5V2l0aFZpc2libGVSZWN0KGNvbnN0IEZ1bmN0aW9uPHZvaWQoRnJhbWVWaWV3JiBmcmFt
ZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KT4mIGFwcGx5KQogewogICAgIEludFJl
Y3Qgd2luZG93Q2xpcFJlY3QgPSB0aGlzLT53aW5kb3dDbGlwUmVjdCgpOwogICAgIGF1dG8gdmlz
aWJsZVJlY3QgPSB3aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0NsaXBSZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCmluZGV4IGY0Y2Y3ZDA4MTUyOGFhYWExMGM5MjZiZTlkOWYyNzVmZmU0OGY2MmYu
LmQ2OTMxNWRlYTBlMjY4YzJhZGQwMGE3NTY1MTE3YjE3ZTBmYTc4YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICBGcmFtZVZpZXdMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250ZXh0KCkgeyByZXR1cm4gbV9sYXlvdXRDb250ZXh0OyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRpZEZpcnN0TGF5b3V0KCkgY29uc3Q7Ci0gICAgdm9p
ZCBxdWV1ZVBvc3RMYXlvdXRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOworICAg
IHZvaWQgcXVldWVQb3N0TGF5b3V0Q2FsbGJhY2soRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNMYXlvdXQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldE5lZWRzTGF5b3V0QWZ0ZXJWaWV3Q29uZmlndXJhdGlvbkNoYW5nZSgpOwpA
QCAtNzU0LDcgKzc1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwZXJmb3JtRml4ZWRXaWR0aEF1
dG9TaXplKCk7CiAgICAgdm9pZCBwZXJmb3JtU2l6ZVRvQ29udGVudEF1dG9TaXplKCk7CiAKLSAg
ICB2b2lkIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkIChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3Qp
PiYpOworICAgIHZvaWQgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBGdW5j
dGlvbjx2b2lkKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCk+Jik7CiAgICAgdm9pZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJl
Y3QmIHZpc2libGVSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVNjcmlwdGVkQW5pbWF0aW9uc0FuZFRp
bWVyc1Rocm90dGxpbmdTdGF0ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAKQEAgLTkx
NSw3ICs5MTUsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fdHJhY2tlZFJl
cGFpbnRSZWN0czsKICAgICAKICAgICBJbnRSZWN0KiBtX2NhY2hlZFdpbmRvd0NsaXBSZWN0IHsg
bnVsbHB0ciB9OwotICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+PiBtX3Bvc3RMYXlv
dXRDYWxsYmFja1F1ZXVlOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX3Bvc3RMYXlv
dXRDYWxsYmFja1F1ZXVlOwogCiAgICAgTGF5b3V0UG9pbnQgbV9sYXlvdXRWaWV3cG9ydE9yaWdp
bjsKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IG1fbGF5b3V0Vmlld3BvcnRPdmVycmlk
ZVJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRy
eS5oCmluZGV4IDExMmU0NjhlY2MwMGYwZWI3ODk0MmUzZDQ2ZWI3ZGEzY2EwNmI1MTQuLjEyODY2
N2Y3ODYwNWZiZTY0YWQ4MGY1ZDY4NDc0ZjM0N2I1ZTJhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4gY3JlYXRl
KGNvbnN0IEluaXQmIGluaXQpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjphZG9wdFJlZigq
bmV3IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkoaW5pdCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KGluaXQpKTsKICAgICB9CiAgICAg
CiAgICAgZG91YmxlIHRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IGEyYjJiNWY2MDViMzdjMTE4NWJmNzVlZWMzZGM5MzZhNDJhMjY1OWYuLjE5NGY2
ZDk5ZTlhZWVmNzg3MzEzNjcxNTk4ZDE3NjJhMmM2NTY4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtMjEyLDcgKzIxMiw3IEBAIHVuc2lnbmVkIFBhZ2U6Om5vblV0aWxpdHlQYWdlQ291bnQoKQog
CiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHBh
Z2VDb3VudGVyLCAoIlBhZ2UiKSk7CiAKLXZvaWQgUGFnZTo6Zm9yRWFjaFBhZ2UoY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKFBhZ2UmKT4mIGZ1bmN0aW9uKQordm9pZCBQYWdlOjpmb3JFYWNoUGFn
ZShjb25zdCBGdW5jdGlvbjx2b2lkKFBhZ2UmKT4mIGZ1bmN0aW9uKQogewogICAgIGZvciAoYXV0
byogcGFnZSA6IGFsbFBhZ2VzKCkpCiAgICAgICAgIGZ1bmN0aW9uKCpwYWdlKTsKQEAgLTE1NTYs
NyArMTU1Niw3IEBAIHZvaWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICAgICAgaW5pdGlh
bERvY3VtZW50cy5hcHBlbmQoZG9jdW1lbnQpOwogICAgIH0pOwogCi0gICAgYXV0byBydW5Qcm9j
ZXNzaW5nU3RlcCA9IFsmXShSZW5kZXJpbmdVcGRhdGVTdGVwIHN0ZXAsIGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZChEb2N1bWVudCYpPiYgcGVyRG9jdW1lbnRGdW5jdGlvbikgeworICAgIGF1dG8g
cnVuUHJvY2Vzc2luZ1N0ZXAgPSBbJl0oUmVuZGVyaW5nVXBkYXRlU3RlcCBzdGVwLCBjb25zdCBG
dW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7CiAgICAgICAg
IG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShzdGVwKTsKICAg
ICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50RnVuY3Rpb24pOwogICAgIH07CkBAIC0x
NjUxLDcgKzE2NTEsNyBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAg
IH0KICNlbmRpZgogCi0gICAgYXV0byBydW5Qcm9jZXNzaW5nU3RlcCA9IFsmXShSZW5kZXJpbmdV
cGRhdGVTdGVwIHN0ZXAsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudCYpPiYgcGVy
RG9jdW1lbnRGdW5jdGlvbikgeworICAgIGF1dG8gcnVuUHJvY2Vzc2luZ1N0ZXAgPSBbJl0oUmVu
ZGVyaW5nVXBkYXRlU3RlcCBzdGVwLCBjb25zdCBGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBw
ZXJEb2N1bWVudEZ1bmN0aW9uKSB7CiAgICAgICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5n
U3RlcHMubGFzdCgpLnJlbW92ZShzdGVwKTsKICAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRv
Y3VtZW50RnVuY3Rpb24pOwogICAgIH07CkBAIC0yNTY3LDcgKzI1NjcsNyBAQCB2b2lkIFBhZ2U6
OmRlY3JlbWVudE5lc3RlZFJ1bkxvb3BDb3VudCgpCiAgICAgfQogfQogCi12b2lkIFBhZ2U6Ondo
ZW5Vbm5lc3RlZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3ZvaWQgUGFnZTo6
d2hlblVubmVzdGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQo
IW1fdW5uZXN0Q2FsbGJhY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDlmNTA0NTg5MjAxZTA5NTIy
ZjFjZjQyMmI3Mjk2N2M3NTYwOWY2MWUuLjUzZjYxMzc3YWM0ZGJiZDk1MjkyYTI2NmIxN2ZkYTI5
MTcwMWU3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0yOTQsNyArMjk0LDcgQEAgcHVibGljOgogICAg
IEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSYgYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gbV9icm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeShSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5PiYmKTsgLy8gT25seSB1c2VkIGJ5IFdlYktpdExlZ2FjeS4KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGZvckVhY2hQYWdlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChQYWdl
Jik+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZm9yRWFjaFBhZ2UoY29uc3Qg
RnVuY3Rpb248dm9pZChQYWdlJik+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHVuc2ln
bmVkIG5vblV0aWxpdHlQYWdlQ291bnQoKTsKIAogICAgIHVuc2lnbmVkIHN1YmZyYW1lQ291bnQo
KSBjb25zdDsKQEAgLTMwMiw3ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRO
ZXN0ZWRSdW5Mb29wQ291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVudE5lc3RlZFJ1bkxvb3BDb3Vu
dCgpOwogICAgIGJvb2wgaW5zaWRlTmVzdGVkUnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVz
dGVkUnVuTG9vcENvdW50ID4gMDsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2hlblVubmVz
dGVkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdo
ZW5Vbm5lc3RlZChGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCgp
IGNvbnN0OwpAQCAtODY0LDggKzg2NCw4IEBAIHB1YmxpYzoKICAgICBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyKiBkZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmdldCgpOyB9CiAjZW5k
aWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaERvY3VtZW50KGNvbnN0IFdURjo6
RnVuY3Rpb248dm9pZChEb2N1bWVudCYpPiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaE1lZGlh
RWxlbWVudChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCYpPiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaERvY3VtZW50KGNvbnN0IEZ1bmN0aW9uPHZv
aWQoRG9jdW1lbnQmKT4mKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hNZWRpYUVsZW1lbnQoY29u
c3QgRnVuY3Rpb248dm9pZChIVE1MTWVkaWFFbGVtZW50Jik+Jik7CiAKICAgICBib29sIHNob3Vs
ZERpc2FibGVDb3JzRm9yUmVxdWVzdFRvKGNvbnN0IFVSTCYpIGNvbnN0OwogCkBAIC05OTQsNyAr
OTk0LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbV9k
aXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZDsKIAogICAgIGludCBtX25lc3RlZFJ1bkxvb3BD
b3VudCB7IDAgfTsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV91bm5lc3RDYWxsYmFjazsK
KyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fdW5uZXN0Q2FsbGJhY2s7CiAKICAgICBTdHJpbmcgbV9n
cm91cE5hbWU7CiAgICAgYm9vbCBtX29wZW5lZEJ5RE9NIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmNwcAppbmRleCBhMjIwZDBk
Yzk5NTlhMGRkM2MzYTFiMmI2N2I2ZGNhOWQzMjY3YTU2Li42MjkwNDgwMmRkYTJiNjhmY2RlM2Jk
MGYwNWIzZWExY2Y3ZTMxMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50
ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVy
Q2FwdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBQb2ludGVyQ2Fw
dHVyZUNvbnRyb2xsZXI6OmRpc3BhdGNoRXZlbnRGb3JUb3VjaEF0SW5kZXgoRXZlbnRUYXJnZXQm
IHRhcmdldCwKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5w
b2ludGVyZW50ZXJFdmVudCkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogV1RG
OjptYWtlUmV2ZXJzZWRSYW5nZSh0YXJnZXRDaGFpbikpCisgICAgICAgICAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBtYWtlUmV2ZXJzZWRSYW5nZSh0YXJnZXRDaGFpbikpCiAgICAgICAgICAgICAg
ICAgZGlzcGF0Y2hFdmVudChQb2ludGVyRXZlbnQ6OmNyZWF0ZSh0eXBlLCBwbGF0Zm9ybVRvdWNo
RXZlbnQsIGluZGV4LCBpc1ByaW1hcnksIHZpZXcpLCBlbGVtZW50LnB0cigpKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IHRhcmdldENoYWluKQpA
QCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgUG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpkaXNwYXRj
aEV2ZW50Rm9yVG91Y2hBdEluZGV4KEV2ZW50VGFyZ2V0JiB0YXJnZXQsCiAgICAgICAgIGlmIChj
dXJyZW50VGFyZ2V0KQogICAgICAgICAgICAgZGlzcGF0Y2hPdmVyT3JPdXRFdmVudChldmVudE5h
bWVzKCkucG9pbnRlcm92ZXJFdmVudCwgY3VycmVudFRhcmdldC5nZXQoKSk7CiAKLSAgICAgICAg
Zm9yIChhdXRvJiBjaGFpbiA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2UoZW50ZXJlZEVsZW1lbnRz
Q2hhaW4pKSB7CisgICAgICAgIGZvciAoYXV0byYgY2hhaW4gOiBtYWtlUmV2ZXJzZWRSYW5nZShl
bnRlcmVkRWxlbWVudHNDaGFpbikpIHsKICAgICAgICAgICAgIGlmIChoYXNDYXB0dXJpbmdQb2lu
dGVyRW50ZXJMaXN0ZW5lciB8fCBjaGFpbi0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygp
LnBvaW50ZXJlbnRlckV2ZW50KSkKICAgICAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KFBvaW50
ZXJFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wb2ludGVyZW50ZXJFdmVudCwgcGxhdGZvcm1U
b3VjaEV2ZW50LCBpbmRleCwgaXNQcmltYXJ5LCB2aWV3KSwgY2hhaW4ucHRyKCkpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaApp
bmRleCA0OTU0ODE0MmY2ZGI2YjI0NWNmNmJhMjM0MjcyNjE1MDI4YWFkMWFlLi40NTQzNWY3N2U0
YmM3OTBhYTYwYmRlYmMyN2VhNjliOWJhODg5YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRl
OgogICAgIFBhZ2UmIG1fcGFnZTsKICAgICAvLyBXaGlsZSBQb2ludGVySUQgaXMgZGVmaW5lZCBh
cyBpbnQzMl90LCB3ZSB1c2UgaW50NjRfdCBoZXJlIHNvIHRoYXQgd2UgbWF5IHVzZSBhIHZhbHVl
IG91dHNpZGUgb2YgdGhlIGludDMyX3QgcmFuZ2UgdG8gaGF2ZSBzYWZlCiAgICAgLy8gZW1wdHkg
YW5kIHJlbW92ZWQgdmFsdWVzLCBhbGxvd2luZyBhbnkgaW50MzJfdCB0byBiZSBwcm92aWRlZCB0
aHJvdWdoIHRoZSBBUEkgZm9yIGxvb2t1cCBpbiB0aGlzIGhhc2htYXAuCi0gICAgdXNpbmcgUG9p
bnRlcklkVG9DYXB0dXJpbmdEYXRhTWFwID0gSGFzaE1hcDxpbnQ2NF90LCBSZWY8Q2FwdHVyaW5n
RGF0YT4sIFdURjo6SW50SGFzaDxpbnQ2NF90PiwgV1RGOjpTaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8aW50NjRfdD4+OworICAgIHVzaW5nIFBvaW50ZXJJZFRvQ2FwdHVyaW5nRGF0YU1hcCA9
IEhhc2hNYXA8aW50NjRfdCwgUmVmPENhcHR1cmluZ0RhdGE+LCBJbnRIYXNoPGludDY0X3Q+LCBX
VEY6OlNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ2NF90Pj47CiAgICAgUG9pbnRlcklk
VG9DYXB0dXJpbmdEYXRhTWFwIG1fYWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YTsKICAg
ICBib29sIG1fcHJvY2Vzc2luZ1BlbmRpbmdQb2ludGVyQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2hhdmVBbnlDYXB0dXJpbmdFbGVtZW50IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3BwCmluZGV4IGRiYjVkY2JiYWM1Y2U1NDg1NmQz
ZTU2MDc1MTQ1MThkMDgyNTZjN2QuLmZmYmM5YWQxMDA2MGY2MWQ5ZWNjOTI1NWVlYmRhYzZjYTE3
MDFiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcApA
QCAtODQsNyArODQsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OndhaXRVbnRpbE9ic2Vy
dmVycygpCiAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9vYnNlcnZlcnNMb2NrKTsKIAogICAg
ICAgICAvLyBXYWl0IGEgYml0IGFmdGVyIHdha2luZyB1cCBmb3IgdGhlIGZpcnN0IHRpbWUuCi0g
ICAgICAgIFdURjo6c2xlZXAoMTBfbXMpOworICAgICAgICBzbGVlcCgxMF9tcyk7CiAgICAgfQog
fQogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpjcmVhdGVU
aHJlYWRJZk5lZWRlZCgpCiBOT19SRVRVUk4gdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjp0aHJl
YWRCb2R5KCkKIHsKICAgICAvLyBXYWl0IGEgYml0IGFmdGVyIHdha2luZyB1cCBmb3IgdGhlIGZp
cnN0IHRpbWUuCi0gICAgV1RGOjpzbGVlcCgxMF9tcyk7CisgICAgc2xlZXAoMTBfbXMpOwogICAg
IAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIC8vIE9ubHkgZG8gd29yayBpZiB3ZSBoYXZl
IG9ic2VydmVycy4KQEAgLTE0Nyw3ICsxNDcsNyBAQCBOT19SRVRVUk4gdm9pZCBSZXNvdXJjZVVz
YWdlVGhyZWFkOjp0aHJlYWRCb2R5KCkKICAgICAgICAgLy8gc28gaWYgdGhpcyBpbnRlcnZhbCBj
aGFuZ2VzIFdlYiBJbnNwZWN0b3IgbWF5IG5lZWQgdG8gY2hhbmdlLgogICAgICAgICBhdXRvIGR1
cmF0aW9uID0gV2FsbFRpbWU6Om5vdygpIC0gc3RhcnQ7CiAgICAgICAgIGF1dG8gZGlmZmVyZW5j
ZSA9IDUwMF9tcyAtIGR1cmF0aW9uOwotICAgICAgICBXVEY6OnNsZWVwKGRpZmZlcmVuY2UpOwor
ICAgICAgICBzbGVlcChkaWZmZXJlbmNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMWY1YmQ0MzAwNmI3Mjc4YTI1ZDZm
NGYyZTIyMTczMWFkMzAzN2E1ZS4uM2ZkYzk0NWU3ODVkNGEzNzM4Yjk2YjAwODUyOGVlNjNjNDI0
YjJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgK
QEAgLTQxMSw3ICs0MTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9idWlsdEluTm90aWZpY2F0
aW9uc0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpO
ZXZlckRlc3Ryb3llZDxSdW50aW1lRW5hYmxlZEZlYXR1cmVzPjsKKyAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8UnVudGltZUVuYWJsZWRGZWF0dXJlcz47CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRl
eCBmYzQ1ZmJhYTE1MTBjYTEzNjFmYTBkOGFmYzE3YTliODgxOTA1ODY3Li5mZGZjODY0M2VhZGYw
NDY4MDFhMWVlODA5NmMxNWU1NzNmYjM2YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW5EYXRhLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5
T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICByZXR1cm4gZGF0YTsKIH0KIAotc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YUhhc2hUcmFp
dHMgOiBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxTZWN1cml0eU9yaWdpbkRhdGE+IHsKK3N0
cnVjdCBTZWN1cml0eU9yaWdpbkRhdGFIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRz
PFNlY3VyaXR5T3JpZ2luRGF0YT4gewogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1wdHlW
YWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNa
ZXJvID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgZGF0YSkgeyByZXR1cm4gZGF0YS5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKaW5kZXggYzU5YmIyNWUyNWQ1OWEzN2NkNjZjYjZiNzVj
ODdlZGQzYjMzOGRiMC4uZTIyNThlMTk5Yjc2NGQ3ODY4YjJjZWU4NzYzNGZkMmI4ZGI5MmNkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKQEAgLTg3LDcgKzg3LDcgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikK
KyAgICBTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICAgICAgOiBTdXNwZW5kYWJsZVRpbWVyQmFz
ZShjb250ZXh0KQogICAgICAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAg
ewpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+
IG1fZnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3IuaAppbmRleCBkMmY2NTM1NzI0NzQyYzFjZWE4NjQxYzZlYThj
NjlmMWE1ZTdiM2MwLi42MzM4N2RkODk4YzEwYzM0MDY0YWU0Yjc5OWNhYTAxNzQ5YWI1NmU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IERPTVdyYXBwZXJX
b3JsZCYgd29ybGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShV
c2VyTWVzc2FnZUhhbmRsZXImLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoVXNlck1lc3NhZ2VIYW5kbGVyJiwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgRnVuY3Rpb248dm9pZChTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBj
b25zdCBTdHJpbmcmKT4mJikgPSAwOwogCiBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9uYW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwCmluZGV4
IGFlNzQ0NDk1YjEwM2FkMzQ3MzVjOTQxNmVlZGE4ZjBmOWE3NTliYjAuLjgyN2I3NGZmZDNlZGIw
NTllYWJlZWY1NjIyOTg0YjUxOGQ3ZTEyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1do
ZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OmNsZWFyQWxsVGVzdERlZmVycmFscygpCiAgICAgTE9HX1dJVEhfU1RSRUFN
KFdoZWVsRXZlbnRUZXN0TW9uaXRvciwgc3RyZWFtIDw8ICIgIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6Y2xlYXJBbGxUZXN0RGVmZXJyYWxzOiBjbGVhcmVkIGFsbCB0ZXN0IHN0YXRlLiIpOwogfQog
Ci12b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25p
dG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCwgYm9vbCBleHBlY3RNb21lbnR1bUVu
ZCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb25DYWxsYmFjaykKK3ZvaWQgV2hlZWxF
dmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBl
eHBlY3RXaGVlbEVuZE9yQ2FuY2VsLCBib29sIGV4cGVjdE1vbWVudHVtRW5kLCBGdW5jdGlvbjx2
b2lkKCk+JiYgZnVuY3Rpb25DYWxsYmFjaykKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5oCmluZGV4
IDZiZDJiMDAzMjViNmM2ZTJlMjExZDg2OGIyY2NkNDllMmVjMTZhM2EuLmQ4MmQwMWIxYzM4NDQ5
YmQ4N2YzMWEzOWQ2ZDM1ZmU3NTU0OWU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVl
bEV2ZW50VGVzdE1vbml0b3IuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBXaGVlbEV2ZW50VGVz
dE1vbml0b3IgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2hlZWxFdmVudFRlc3RNb25p
dG9yPgogcHVibGljOgogICAgIFdoZWVsRXZlbnRUZXN0TW9uaXRvcihQYWdlJik7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFRlc3RDYWxsYmFja0FuZFN0YXJ0TW9uaXRvcmluZyhib29s
IGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGJvb2wgZXhwZWN0TW9tZW50dW1FbmQsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRlc3RDYWxsYmFj
a0FuZFN0YXJ0TW9uaXRvcmluZyhib29sIGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwsIGJvb2wgZXhw
ZWN0TW9tZW50dW1FbmQsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGVhckFsbFRlc3REZWZlcnJhbHMoKTsKICAgICAKICAgICBlbnVtIERlZmVyUmVhc29u
IHsKQEAgLTY1LDEyICs2NSwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjaGVja1Nob3Vs
ZEZpcmVDYWxsYmFja3MoKTsKIAotICAgIHVzaW5nIFNjcm9sbGFibGVBcmVhUmVhc29uTWFwID0g
V1RGOjpIYXNoTWFwPFNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgT3B0aW9uU2V0PERlZmVyUmVh
c29uPj47CisgICAgdXNpbmcgU2Nyb2xsYWJsZUFyZWFSZWFzb25NYXAgPSBIYXNoTWFwPFNjcm9s
bGFibGVBcmVhSWRlbnRpZmllciwgT3B0aW9uU2V0PERlZmVyUmVhc29uPj47CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBzY2hlZHVsZUNhbGxiYWNrQ2hlY2soKTsKIAotICAgIFdURjo6RnVuY3Rpb248
dm9pZCgpPiBtX2NvbXBsZXRpb25DYWxsYmFjazsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fY29t
cGxldGlvbkNhbGxiYWNrOwogICAgIFBhZ2UmIG1fcGFnZTsKIAogICAgIExvY2sgbV9sb2NrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAppbmRleCBkZTk5ZjljMDI5YmYwNjY0
ZDA2ZGUxODEzZGM3ZDA3NTY4MWI2Yjc1Li4wZTYxMTRjNmExM2U1NDg3NTU4ZTRmODhlZjA1MDZl
YjUwMTUwOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcApAQCAtODEs
NyArODEsNyBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZVdpbmRvd0ZlYXR1cmVzKFN0cmluZ1ZpZXcg
ZmVhdHVyZXNTdHJpbmcpCiAvLyBXaW5kb3c6IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
I2NvbmNlcHQtd2luZG93LW9wZW4tZmVhdHVyZXMtdG9rZW5pemUKIC8vIFZpZXdwb3J0OiBodHRw
czovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9jb250ZW50L2RvY3VtZW50YXRpb24vQXBw
bGVBcHBsaWNhdGlvbnMvUmVmZXJlbmNlL1NhZmFyaUhUTUxSZWYvQXJ0aWNsZXMvTWV0YVRhZ3Mu
aHRtbCMvL2FwcGxlX3JlZi9kb2MvdWlkL1RQNDAwMDgxOTMtU1c2CiAvLyBGSVhNRTogV2Ugc2hv
dWxkIGNvbnNpZGVyaW5nIGFsaWduaW5nIFZpZXdwb3J0IGZlYXR1cmUgcGFyc2luZyB3aXRoIFdp
bmRvdyBmZWF0dXJlcyBwYXJzaW5nLgotdm9pZCBwcm9jZXNzRmVhdHVyZXNTdHJpbmcoU3RyaW5n
VmlldyBmZWF0dXJlcywgRmVhdHVyZU1vZGUgbW9kZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KFN0cmluZ1ZpZXcgdHlwZSwgU3RyaW5nVmlldyB2YWx1ZSk+JiBjYWxsYmFjaykKK3ZvaWQgcHJv
Y2Vzc0ZlYXR1cmVzU3RyaW5nKFN0cmluZ1ZpZXcgZmVhdHVyZXMsIEZlYXR1cmVNb2RlIG1vZGUs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlKT4m
IGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZlYXR1cmVzLmxlbmd0aCgpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9X
aW5kb3dGZWF0dXJlcy5oCmluZGV4IDc2YzBhZjE2OTJmYzJmYjg0ODEwODJkMzg2YzNmNWM0ZTZk
MzI2YjIuLmU5NmM1ZTE5MzJiZGI2ZGE4NDg4MjQzODg1NTFmODIzNDJiMzUzNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgKQEAgLTY0LDYgKzY0LDYgQEAgV2luZG93RmVhdHVy
ZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5n
LCBjb25zdCBGbG8KIE9wdGlvblNldDxEaXNhYmxlZEFkYXB0YXRpb25zPiBwYXJzZURpc2FibGVk
QWRhcHRhdGlvbnMoY29uc3QgU3RyaW5nJik7CiAKIGVudW0gY2xhc3MgRmVhdHVyZU1vZGUgeyBX
aW5kb3csIFZpZXdwb3J0IH07Ci12b2lkIHByb2Nlc3NGZWF0dXJlc1N0cmluZyhTdHJpbmdWaWV3
IGZlYXR1cmVzLCBGZWF0dXJlTW9kZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFN0cmluZ1Zp
ZXcgdHlwZSwgU3RyaW5nVmlldyB2YWx1ZSk+JiBjYWxsYmFjayk7Cit2b2lkIHByb2Nlc3NGZWF0
dXJlc1N0cmluZyhTdHJpbmdWaWV3IGZlYXR1cmVzLCBGZWF0dXJlTW9kZSwgY29uc3QgRnVuY3Rp
b248dm9pZChTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgdmFsdWUpPiYgY2FsbGJhY2spOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA2MzMxNWJhNWVmNjg4Yjg0MDljOGE1ZjJj
NmZmNDBlY2FmOGZjZDUzLi5hYTMyY2VmOWZmZGM0Y2QyMDA3OTBhMTZmZGQwNTViMGZiNDc3ZmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y2hl
Y2tIYXNoQW5kUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgc291cmNlLCBjbwogICAgIHJl
dHVybiBmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgfHwgYWxsUG9saWNpZXNXaXRoRGlzcG9z
aXRpb25BbGxvdyhDb250ZW50U2VjdXJpdHlQb2xpY3k6OkRpc3Bvc2l0aW9uOjpFbmZvcmNlLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgdmlvbGF0ZWREaXJlY3RpdmUpOwogfQogCi1ib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRV
UkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYg
c291cmNlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAorYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBj
b250ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CiB7CiAg
ICAgaWYgKG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTQwNCw3ICs0MDQsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dK
YXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0CiAgICAgYXV0byBo
YW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1
c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQiLCAiaXRzIGhhc2gsIGl0cyBub25jZSwgb3IgJ3Vuc2Fm
ZS1pbmxpbmUnIik7CiAgICAgICAgIC8vIEZJWE1FIChyZGFyOi8vODMzMzI4NzQpIGltcGxlbWVu
dCBzY3JpcHRTcmNFbGVtIHByb3Blcmx5LgotICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyY0VsZW0sIHZpb2xhdGVkRGly
ZWN0aXZlLCAiaW5saW5lIl9zLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgVGV4dFBvc2l0
aW9uKGNvbnRleHRMaW5lLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgICAgICByZXBvcnRW
aW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyY0Vs
ZW0sIHZpb2xhdGVkRGlyZWN0aXZlLCAiaW5saW5lIl9zLCBjb25zb2xlTWVzc2FnZSwgY29udGV4
dFVSTCwgVGV4dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBPcmRpbmFsTnVtYmVyKCkpKTsKICAgICAg
ICAgaWYgKCFkaWROb3RpZnlJbnNwZWN0b3IgJiYgdmlvbGF0ZWREaXJlY3RpdmUuZGlyZWN0aXZl
TGlzdCgpLmlzUmVwb3J0T25seSgpKSB7CiAgICAgICAgICAgICByZXBvcnRCbG9ja2VkU2NyaXB0
RXhlY3V0aW9uVG9JbnNwZWN0b3IodmlvbGF0ZWREaXJlY3RpdmUudGV4dCgpKTsKICAgICAgICAg
ICAgIGRpZE5vdGlmeUluc3BlY3RvciA9IHRydWU7CkBAIC00MTQsMTQgKzQxNCwxNCBAQCBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcm
IGNvbnRleHRVUkwsIGNvbnN0CiAgICAgcmV0dXJuIGNoZWNrSGFzaEFuZFJlcG9ydFZpb2xhdGlv
bihzb3VyY2UsICZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERp
cmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdEVsZW1lbnQsICZDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUhhc2hTY3JpcHQsIG1f
aGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzLCBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSk7
CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZUV2ZW50SGFuZGxl
cnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNv
bnRleHRMaW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeSkgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGlu
ZUV2ZW50SGFuZGxlcnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVt
YmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBib29sIGRpZE5vdGlmeUluc3Bl
Y3RvciA9IGZhbHNlOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsK
ICAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRp
b24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgdmlvbGF0
ZWREaXJlY3RpdmUsIFVSTCgpLCAiUmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IGZvciBhbiBp
bmxpbmUgZXZlbnQgaGFuZGxlciIsICIndW5zYWZlLWlubGluZSciKTsKLSAgICAgICAgcmVwb3J0
VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMs
IHZpb2xhdGVkRGlyZWN0aXZlLCAiaW5saW5lIl9zLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVS
TCwgVGV4dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAg
ICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6
OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3MsIGNvbnNvbGVNZXNzYWdl
LCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIE9yZGluYWxOdW1iZXIoKSkp
OwogICAgICAgICBpZiAoIWRpZE5vdGlmeUluc3BlY3RvciAmJiAhdmlvbGF0ZWREaXJlY3RpdmUu
ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpKSB7CiAgICAgICAgICAgICByZXBvcnRCbG9j
a2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IodmlvbGF0ZWREaXJlY3RpdmUudGV4dCgpKTsK
ICAgICAgICAgICAgIGRpZE5vdGlmeUluc3BlY3RvciA9IHRydWU7CkBAIC00NzAsNyArNDcwLDcg
QEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Tm9uUGFyc2VySW5zZXJ0ZWRTY3Jp
cHRzKGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGF1
dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKLSAgICAgICAgVGV4dFBvc2l0aW9u
IHNvdXJjZVBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpP
cmRpbmFsTnVtYmVyKCkpOworICAgICAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oT3Jk
aW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcigpKTsKICAgICAgICAgU3Ry
aW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUs
IHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOwogICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyY0VsZW0sIHZpb2xhdGVkRGly
ZWN0aXZlLCB1cmwuc3RyaW5nKCksIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgc291cmNlUG9z
aXRpb24pOwogICAgIH07CkBAIC00NzgsMTQgKzQ3OCwxNCBAQCBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dOb25QYXJzZXJJbnNlcnRlZFNjcmlwdHMoY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgcmV0dXJuIGFsbFNjcmlwdFBvbGljaWVzQWxsb3coaGFuZGxlVmlvbGF0ZWREaXJl
Y3RpdmUsIHVybCwgbm9uY2UsIHNjcmlwdENvbnRlbnQsIHBhcnNlckluc2VydGVkKTsKIH0KIAot
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgU3Ry
aW5nVmlldyBzY3JpcHRDb250ZW50LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
KSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0KGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IFN0cmluZ1ZpZXcgc2NyaXB0Q29udGVudCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSkgY29uc3QKIHsKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfHwg
c2hvdWxkUGVyZm9ybUVhcmx5Q1NQQ2hlY2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
Ym9vbCBkaWROb3RpZnlJbnNwZWN0b3IgPSBmYWxzZTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVk
RGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZp
b2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNv
bGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
OjpzY3JpcHRTcmMsIHZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8gZXhlY3V0
ZSBhIHNjcmlwdCIsICJpdHMgaGFzaCwgaXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsK
LSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpzY3JpcHRTcmMsIHZpb2xhdGVkRGlyZWN0aXZlLCAiaW5saW5lIl9zLCBjb25zb2xlTWVz
c2FnZSwgY29udGV4dFVSTCwgVGV4dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBXVEY6Ok9yZGluYWxO
dW1iZXIoKSkpOworICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3Ms
IGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIE9y
ZGluYWxOdW1iZXIoKSkpOwogICAgICAgICBpZiAoIWRpZE5vdGlmeUluc3BlY3RvciAmJiAhdmlv
bGF0ZWREaXJlY3RpdmUuZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpKSB7CiAgICAgICAg
ICAgICByZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IodmlvbGF0ZWREaXJl
Y3RpdmUudGV4dCgpKTsKICAgICAgICAgICAgIGRpZE5vdGlmeUluc3BlY3RvciA9IHRydWU7CkBA
IC00OTYsNyArNDk2LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5l
U2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1QKICAgICByZXR1cm4gY2hl
Y2tIYXNoQW5kUmVwb3J0VmlvbGF0aW9uKHNjcmlwdENvbnRlbnQudG9TdHJpbmcoKSwgJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZl
SW5saW5lU2NyaXB0RWxlbWVudCwgJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0SGFzaCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGlu
ZVNjcmlwdHMsIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlKTsKIH0KIAotYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBTdHJpbmdWaWV3IHN0eWxlQ29u
dGVudCwgQ2hlY2tVbnNhZmVIYXNoZXMgc2hvdWxkQ2hlY2tVbnNhZmVIYXNoZXMsIGJvb2wgb3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IE9y
ZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBTdHJpbmdWaWV3IHN0eWxlQ29udGVudCwgQ2hlY2tV
bnNhZmVIYXNoZXMgc2hvdWxkQ2hlY2tVbnNhZmVIYXNoZXMsIGJvb2wgb3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUwNSw3ICs1MDUsNyBAQCBib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRl
eHRVUkwsIGNvbnN0IFdURgogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0g
KGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUp
IHsKICAgICAgICAgYXV0byBuYW1lID0gc2hvdWxkQ2hlY2tVbnNhZmVIYXNoZXMgPT0gQ2hlY2tV
bnNhZmVIYXNoZXM6OlllcyA/IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
dHlsZVNyY0F0dHIgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVT
cmNFbGVtOwogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZv
clZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMs
IHZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8gYXBwbHkgYSBzdHlsZXNoZWV0
IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5lJyIpOwotICAgICAgICBy
ZXBvcnRWaW9sYXRpb24obmFtZSwgdmlvbGF0ZWREaXJlY3RpdmUsICJpbmxpbmUiX3MsIGNvbnNv
bGVNZXNzYWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdURjo6T3Jk
aW5hbE51bWJlcigpKSk7CisgICAgICAgIHJlcG9ydFZpb2xhdGlvbihuYW1lLCB2aW9sYXRlZERp
cmVjdGl2ZSwgImlubGluZSJfcywgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3Np
dGlvbihjb250ZXh0TGluZSwgT3JkaW5hbE51bWJlcigpKSk7CiAgICAgfTsKIAogICAgIGlmIChz
aG91bGRDaGVja1Vuc2FmZUhhc2hlcyA9PSBDaGVja1Vuc2FmZUhhc2hlczo6WWVzKQpAQCAtNTQw
LDcgKzU0MCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5jZXN0
b3JzKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1CiAgICAgaWYgKCZmcmFtZSA9PSAm
dG9wRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFN0cmluZyBzb3VyY2VVUkw7Ci0g
ICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3Jl
Rmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpOworICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQ
b3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVyKCkpOwog
ICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKICAgICAgICAgU3RyaW5n
IGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5jZXN0b3JzLCB2aW9sYXRlZERpcmVjdGl2
ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CiAgICAgICAgIHJlcG9ydFZpb2xhdGlvbihDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVBbmNlc3RvcnMsIHZpb2xhdGVk
RGlyZWN0aXZlLCB1cmwuc3RyaW5nKCksIGNvbnNvbGVNZXNzYWdlLCBzb3VyY2VVUkwsIHNvdXJj
ZVBvc2l0aW9uKTsKQEAgLTU2OCw3ICs1NjgsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dGcmFtZUFuY2VzdG9ycyhjb25zdCBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZwog
ICAgIGlmIChpc1RvcExldmVsRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFN0cmlu
ZyBzb3VyY2VVUkw7Ci0gICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKFdURjo6T3JkaW5h
bE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpOworICAgIFRleHRQ
b3NpdGlvbiBzb3VyY2VQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRp
bmFsTnVtYmVyKCkpOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsK
ICAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRp
b24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5jZXN0b3JzLCB2
aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CiAgICAgICAgIHJlcG9y
dFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVBbmNl
c3RvcnMsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwuc3RyaW5nKCksIGNvbnNvbGVNZXNzYWdlLCBz
b3VyY2VVUkwsIHNvdXJjZVBvc2l0aW9uKTsKQEAgLTU4MSw3ICs1ODEsNyBAQCBib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiB0eQogICAgIGlmIChvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRp
b24gc291cmNlUG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6
Ok9yZGluYWxOdW1iZXIoKSk7CisgICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5k
bGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3Nh
Z2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6cGx1Z2luVHlwZXMsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2Vk
IHRvIGxvYWQiLCAiaXRzIE1JTUUgdHlwZSIpOwogICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnBsdWdpblR5cGVzLCB2aW9sYXRlZERp
cmVjdGl2ZSwgdXJsLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZSwgc291cmNlVVJMLCBzb3VyY2VQ
b3NpdGlvbik7CkBAIC01OTcsNyArNTk3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVkaXJlY3RSZXNwb24KICAg
ICAvLyAiSWYgcGx1Z2luIGNvbnRlbnQgaXMgbG9hZGVkIHdpdGhvdXQgYW4gYXNzb2NpYXRlZCBV
UkwgKHBlcmhhcHMgYW4gb2JqZWN0IGVsZW1lbnQgbGFja3MgYSBkYXRhIGF0dHJpYnV0ZSwgYnV0
IGxvYWRzIHNvbWUgZGVmYXVsdCBwbHVnaW4gYmFzZWQKICAgICAvLyBvbiB0aGUgc3BlY2lmaWVk
IHR5cGUpLCBpdCBNVVNUIGJlIGJsb2NrZWQgaWYgb2JqZWN0LXNyYydzIHZhbHVlIGlzICdub25l
JywgYnV0IHdpbGwgb3RoZXJ3aXNlIGJlIGFsbG93ZWQiLgogICAgIFN0cmluZyBzb3VyY2VVUkw7
Ci0gICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVm
b3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpOworICAgIFRleHRQb3NpdGlvbiBzb3Vy
Y2VQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVyKCkp
OwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0gKGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUpIHsKICAgICAgICAgU3Ry
aW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om9iamVjdFNyYywgdmlvbGF0ZWREaXJlY3RpdmUs
IHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOwogICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om9iamVjdFNyYywgdmlvbGF0ZWREaXJlY3Rp
dmUsIHVybC5zdHJpbmcoKSwgY29uc29sZU1lc3NhZ2UsIHNvdXJjZVVSTCwgc291cmNlUG9zaXRp
b24pOwpAQCAtNjEwLDcgKzYxMCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZWRpcmVjdFJlCiAgICAgaWYg
KExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQ
b2xpY3kodXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291
cmNlUG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGlu
YWxOdW1iZXIoKSk7CisgICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1i
ZXI6OmJlZm9yZUZpcnN0KCksIE9yZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9s
YXRlZERpcmVjdGl2ZSA9IFsmXSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
JiB2aW9sYXRlZERpcmVjdGl2ZSkgewogICAgICAgICBjb25zdCBjaGFyKiBlZmZlY3RpdmVWaW9s
YXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlLm5hbWUoKSA9PSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVTcmMgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6ZnJhbWVTcmMgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lczo6Y2hpbGRTcmM7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCB2aW9sYXRlZERp
cmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CkBAIC02MjQsNyArNjI0LDcgQEAgYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93UmVzb3VyY2VGcm9tU291cmNlKGNvbnN0IFVS
TCYgdXJsLCBSZWRpcmVjdFJlc3AKICAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVt
ZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKS50b1N0cmlu
Z1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBTdHJpbmcgc291
cmNlVVJMOwotICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1i
ZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKTsKKyAgICBUZXh0UG9zaXRp
b24gc291cmNlUG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51
bWJlcigpKTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7CiAgICAg
ICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKG5h
bWUsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKICAgICAgICAg
cmVwb3J0VmlvbGF0aW9uKG5hbWUsIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwuc3RyaW5nKCksIGNv
bnNvbGVNZXNzYWdlLCBzb3VyY2VVUkwsIHNvdXJjZVBvc2l0aW9uKTsKQEAgLTY3Nyw3ICs2Nzcs
NyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb25uZWN0VG9Tb3VyY2UoY29u
c3QgVVJMJiB1cmwsIFJlZGlyZWN0UmVzcG9ucwogICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2NvbCgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFN0
cmluZyBzb3VyY2VVUkw7Ci0gICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKFdURjo6T3Jk
aW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpOworICAgIFRl
eHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBP
cmRpbmFsTnVtYmVyKCkpOwogICAgIGF1dG8gaGFuZGxlVmlvbGF0ZWREaXJlY3RpdmUgPSBbJl0g
KGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUp
IHsKICAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmNvbm5lY3RTcmMsIHZp
b2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGNvbm5lY3QgdG8iKTsKICAgICAgICAg
cmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpjb25u
ZWN0U3JjLCB2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLnN0cmluZygpLCBjb25zb2xlTWVzc2FnZSwg
c291cmNlVVJMLCBzb3VyY2VQb3NpdGlvbiwgcHJlUmVkaXJlY3RVUkwpOwpAQCAtNjk3LDcgKzY5
Nyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJM
JiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjCiAgICAgaWYgKExlZ2FjeVNjaGVtZVJlZ2lz
dHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29s
KCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
U3RyaW5nIHNvdXJjZVVSTDsKLSAgICBUZXh0UG9zaXRpb24gc291cmNlUG9zaXRpb24oV1RGOjpP
cmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSk7CisgICAg
VGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCks
IE9yZGluYWxOdW1iZXIoKSk7CiAgICAgYXV0byBoYW5kbGVWaW9sYXRlZERpcmVjdGl2ZSA9IFsm
XSAoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2
ZSkgewogICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZp
b2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmFzZVVSSSwgdmlv
bGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gY2hhbmdlIHRoZSBkb2N1bWVudCBiYXNl
IFVSTCB0byIpOwogICAgICAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OmJhc2VVUkksIHZpb2xhdGVkRGlyZWN0aXZlLCB1cmwuc3RyaW5nKCks
IGNvbnNvbGVNZXNzYWdlLCBzb3VyY2VVUkwsIHNvdXJjZVBvc2l0aW9uKTsKQEAgLTcyMiwxMyAr
NzIyLDEzIEBAIFN0cmluZyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRlcHJlY2F0ZWRVUkxGb3JS
ZXBvcnRpbmcoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3Rp
dmUsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2Fn
ZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEV4
dHJhY3Qgc291cmNlIGZpbGUgYW5kIHNvdXJjZSBwb3NpdGlvbiBmcm9tIEpTQzo6RXhlY1N0YXRl
LgotICAgIHJldHVybiByZXBvcnRWaW9sYXRpb24odmlvbGF0ZWREaXJlY3RpdmUsIGVmZmVjdGl2
ZVZpb2xhdGVkRGlyZWN0aXZlLm5hbWVGb3JSZXBvcnRpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZSgpLCBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCksIGJsb2Nr
ZWRVUkwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5h
bE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgp
KSwgc3RhdGUpOworICAgIHJldHVybiByZXBvcnRWaW9sYXRpb24odmlvbGF0ZWREaXJlY3RpdmUs
IGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLm5hbWVGb3JSZXBvcnRpbmcoKS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpLCBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0
KCksIGJsb2NrZWRVUkwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9y
ZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkp
LCBzdGF0ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRp
b24oY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5n
JiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdCYgdmlvbGF0ZWREaXJlY3RpdmVMaXN0LCBjb25zdCBTdHJpbmcmIGJsb2NrZWRVUkwsIGNv
bnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlKSBj
b25zdAogewogICAgIC8vIEZJWE1FOiBFeHRyYWN0IHNvdXJjZSBmaWxlIGFuZCBzb3VyY2UgcG9z
aXRpb24gZnJvbSBKU0M6OkV4ZWNTdGF0ZS4KLSAgICByZXR1cm4gcmVwb3J0VmlvbGF0aW9uKGVm
ZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCB2aW9sYXRlZERpcmVjdGl2ZSwgdmlvbGF0ZWREaXJl
Y3RpdmVMaXN0LCBibG9ja2VkVVJMLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3Np
dGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJl
cjo6YmVmb3JlRmlyc3QoKSksIHN0YXRlKTsKKyAgICByZXR1cm4gcmVwb3J0VmlvbGF0aW9uKGVm
ZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCB2aW9sYXRlZERpcmVjdGl2ZSwgdmlvbGF0ZWREaXJl
Y3RpdmVMaXN0LCBibG9ja2VkVVJMLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3Np
dGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVyOjpiZWZvcmVG
aXJzdCgpKSwgc3RhdGUpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0
VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0
IFN0cmluZyYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc291cmNlUG9zaXRpb24sIGNv
bnN0IFVSTCYgcHJlUmVkaXJlY3RVUkwsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlKSBjb25z
dApAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRN
aXNzaW5nUmVwb3J0VVJJKGNvbnN0IFN0cmluZyYgcG9saWN5KSBjb25zdAogICAgIGxvZ1RvQ29u
c29sZSgiVGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5ICciICsgcG9saWN5ICsgIicgd2FzIGRl
bGl2ZXJlZCBpbiByZXBvcnQtb25seSBtb2RlLCBidXQgZG9lcyBub3Qgc3BlY2lmeSBhICdyZXBv
cnQtdXJpJzsgdGhlIHBvbGljeSB3aWxsIGhhdmUgbm8gZWZmZWN0LiBQbGVhc2UgZWl0aGVyIGFk
ZCBhICdyZXBvcnQtdXJpJyBkaXJlY3RpdmUsIG9yIGRlbGl2ZXIgdGhlIHBvbGljeSB2aWEgdGhl
ICdDb250ZW50LVNlY3VyaXR5LVBvbGljeScgaGVhZGVyLiIpOwogfQogCi12b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6bG9nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5l
LCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRDb2x1bW4sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIHN0YXRlKSBjb25zdAordm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmxvZ1RvQ29u
c29sZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29u
c3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRl
eHRDb2x1bW4sIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlKSBjb25zdAogewogICAgIGlmICht
ZXNzYWdlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA2MDc5YzA1YWJhY2E0Zjk0ZmY3
MDY3MDFhNzlmZDdmMGU1M2JkZDNjLi5kNDEyYWQxNWQ4YzBhNTIyZDk0YzdlY2VhZTA2YzhhOWM2
OGE0NjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaApAQCAtOTQsMTEgKzk0LDExIEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93U2NyaXB0
V2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJp
dHlQb2xpY3kgPSBmYWxzZSkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd1N0eWxlV2l0aE5vbmNlKGNv
bnN0IFN0cmluZyYgbm9uY2UsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBm
YWxzZSkgY29uc3Q7CiAKLSAgICBib29sIGFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25z
dCBTdHJpbmcmIGNvZGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxz
ZSkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25z
dCBTdHJpbmcmIGNvZGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxz
ZSkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRl
eHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0cmluZ1ZpZXcg
c2NyaXB0Q29udGVudCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNl
KSBjb25zdDsKKyAgICBib29sIGFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBj
b2RlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0Owor
ICAgIGJvb2wgYWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKGNvbnN0IFN0cmluZyYgY29udGV4dFVS
TCwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgY29kZSwg
Ym9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKKyAgICBi
b29sIGFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgT3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0cmluZ1ZpZXcgc2NyaXB0Q29udGVudCwgYm9vbCBv
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKICAgICBib29sIGFs
bG93Tm9uUGFyc2VySW5zZXJ0ZWRTY3JpcHRzKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZ1ZpZXcmLCBQYXJzZXJJbnNlcnRlZCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lu
bGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVt
YmVyJiBjb250ZXh0TGluZSwgU3RyaW5nVmlldyBzdHlsZUNvbnRlbnQsIENoZWNrVW5zYWZlSGFz
aGVzLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0Owor
ICAgIGJvb2wgYWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IE9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBTdHJpbmdWaWV3IHN0eWxlQ29udGVudCwgQ2hl
Y2tVbnNhZmVIYXNoZXMsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxz
ZSkgY29uc3Q7CiAKICAgICBib29sIGFsbG93RXZhbChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgTG9n
VG9Db25zb2xlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNv
bnN0OwogCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIFNhbmRib3hGbGFncyBzYW5k
Ym94RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFnczsgfQogCiBwcml2YXRlOgot
ICAgIHZvaWQgbG9nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4
dExpbmUgPSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dENvbHVtbiA9IFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmly
c3QoKSwgSlNDOjpKU0dsb2JhbE9iamVjdCogPSBudWxscHRyKSBjb25zdDsKKyAgICB2b2lkIGxv
Z1RvQ29uc29sZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVS
TCA9IFN0cmluZygpLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IE9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCksIGNvbnN0IE9yZGluYWxOdW1iZXImIGNvbnRleHRDb2x1bW4g
PSBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiA9IG51
bGxwdHIpIGNvbnN0OwogICAgIHZvaWQgYXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKIAogICAgIC8vIEltcGxlbWVudHMgdGhlIGRlcHJlY2F0ZWQgQ1NQMiAic3RyaXAgdXJp
IGZvciByZXBvcnRpbmciIGFsZ29yaXRobSBmcm9tIDxodHRwczovL3d3dy53My5vcmcvVFIvQ1NQ
Mi8jdmlvbGF0aW9uLXJlcG9ydHM+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKaW5kZXggMGJlYjk0NmRkODcyNThlNWNkMzU1YWJkYmQ3
ZWE2OWJjMjI0MTY4Yy4uZTM4YzY4MzFjNmUzNjJhODM5ZWEwZGVlODVkNmUyNTM3ZTQ3MGUzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQu
Y3BwCkBAIC01MCw3ICs1MCw3IEBAIFNjcm9sbGluZ1RocmVhZDo6U2Nyb2xsaW5nVGhyZWFkKCkK
IHsKICAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwogICAgIG1fdGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoIldlYkNvcmU6IFNjcm9sbGluZyIsIFt0aGlzLCAmc2VtYXBob3JlXSB7Ci0gICAg
ICAgIFdURjo6VGhyZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW50ZXJhY3RpdmUoKTsKKyAg
ICAgICAgVGhyZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW50ZXJhY3RpdmUoKTsKICAgICAg
ICAgbV9ydW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKICAgICAgICAgc2VtYXBob3JlLnNp
Z25hbCgpOwogICAgICAgICBtX3J1bkxvb3AtPnJ1bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IGJlNmM0ODQ1YmQ3NmQ0ZTdmNWM3ODEw
MWI3ODhlNGYzMmMyN2FjMjkuLjMyMDE1N2FmYzIzNTIzMjM0NjMzM2I3NjIyMzEyOTg0NDIwNTc5
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgK
QEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgU2Ny
b2xsaW5nVHJlZU5vZGUqIG5vZGVGb3JJRChTY3JvbGxpbmdOb2RlSUQpIGNvbnN0OwogCi0gICAg
dXNpbmcgVmlzaXRvckZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkIChTY3JvbGxpbmdOb2Rl
SUQsIFNjcm9sbGluZ05vZGVUeXBlLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHNjcm9sbFBv
c2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBi
b29sIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KT47CisgICAgdXNpbmcgVmlzaXRvckZ1bmN0aW9u
ID0gRnVuY3Rpb248dm9pZChTY3JvbGxpbmdOb2RlSUQsIFNjcm9sbGluZ05vZGVUeXBlLCBzdGQ6
Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHNjcm9sbFBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0
UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0
KT47CiAgICAgdm9pZCB0cmF2ZXJzZVNjcm9sbGluZ1RyZWUoVmlzaXRvckZ1bmN0aW9uJiYpOwog
CiAgICAgLy8gQ2FsbGVkIGFmdGVyIGEgc2Nyb2xsaW5nIHRyZWUgbm9kZSBoYXMgaGFuZGxlZCBh
IHNjcm9sbCBhbmQgdXBkYXRlZCBpdHMgbGF5ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNw
cAppbmRleCAyZDE0ZTc5OTY3MTQ5M2I5OTliMDdmM2MxMGRmYzMyYzBkYmJjZmIyLi5hYjRiNjdj
YTJhZjM2YjcxMDVlM2NjMTFiM2JkMzJkNWY4YjBlMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNv
c2lhLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4gU2Ny
b2xsaW5nVHJlZU5pY29zaWE6OnNjcm9sbGluZ05vZGVGb3JQb2ludChGbG9hdFBvaW50CiAgICAg
Y29sbGVjdERlc2NlbmRhbnRMYXllcnNBdFBvaW50KGxheWVyc0F0UG9pbnQsIHJvb3RDb250ZW50
c0xheWVyLCBwb2ludCk7CiAKICAgICBTY3JvbGxpbmdUcmVlTm9kZSogcmV0dXJuTm9kZSA9IG51
bGxwdHI7Ci0gICAgZm9yIChhdXRvIGxheWVyIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShsYXll
cnNBdFBvaW50KSkgeworICAgIGZvciAoYXV0byBsYXllciA6IG1ha2VSZXZlcnNlZFJhbmdlKGxh
eWVyc0F0UG9pbnQpKSB7CiAgICAgICAgIGxheWVyLT5hY2Nlc3NDb21taXR0ZWQoWyZdKGNvbnN0
IENvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKSB7CiAgICAgICAgICAgICBhdXRv
KiBzY3JvbGxpbmdOb2RlID0gbm9kZUZvcklEKHN0YXRlLnNjcm9sbGluZ05vZGVJRCk7CiAgICAg
ICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVOaWNvc2lhLmNwcAppbmRleCBiM2FhYmM1MGUwZGJlMGMxZjFiZTY5ZDgzMjE0MjdjZDM3MTNl
MzdjLi41MzUzNjM3MmFhNTE5MGJmZDliNjJhMjEwNzQzNGVjMTY4ODg3ZTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZpcmVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhOjpjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24p
CiB7Ci0gICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
clRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24p
LCBwcm90ZWN0ZWROb2RlID0gUmVmIHsgc2Nyb2xsaW5nTm9kZSgpIH1dIHsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPihSdW5Mb29wOjpjdXJy
ZW50KCksIFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCBwcm90ZWN0ZWROb2RlID0gUmVm
IHsgc2Nyb2xsaW5nTm9kZSgpIH1dIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByb3RlY3Rl
ZE5vZGUtPnNjcm9sbGluZ1RyZWUoKS50cmVlTG9jaygpIH07CiAgICAgICAgIGZ1bmN0aW9uKCk7
CiAgICAgfSk7CkBAIC0xMDMsMTAgKzEwMywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZwog
dm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3RhcnRBbmlt
YXRpb25DYWxsYmFjayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpCiB7CiAgICAgaWYgKCFt
X2FuaW1hdGlvblRpbWVyKSB7Ci0gICAgICAgIG1fYW5pbWF0aW9uVGltZXIgPSBXVEY6Om1ha2VV
bmlxdWU8UnVuTG9vcDo6VGltZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6YW5pbWF0aW9uVGltZXJGaXJlZCk7CisgICAgICAgIG1fYW5p
bWF0aW9uVGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhPj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFuaW1hdGlvblRpbWVyRmly
ZWQpOwogCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKLSAgICAgICAgbV9hbmltYXRpb25UaW1l
ci0+c2V0UHJpb3JpdHkoV1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc3BsYXlSZWZyZXNo
TW9uaXRvclRpbWVyKTsKKyAgICAgICAgbV9hbmltYXRpb25UaW1lci0+c2V0UHJpb3JpdHkoUnVu
TG9vcFNvdXJjZVByaW9yaXR5OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7CiAjZW5kaWYK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRh
c2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgK
aW5kZXggNWRkYzgxNmQ0MzZhMjY1OWViNmQ4MzgxYmU0Njg0OTYzNmFjMDUxMC4uZjlmYzcwYjli
MmUyM2U5MGU4YTI4NWQxMjQ2ZjFlYzAwODE4MDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBFbnF1ZXVlIGEgdGFzayB0byBiZSBydW4gb24gdGhlIG1haW4gdGhyZWFkLiBUaGUg
dGFzayBtYXkgYmUgY2FuY2VsbGVkIGlmIGFuIGFib3J0IHN0YXJ0cyBiZWZvcmUgaXQncwogICAg
IC8vIGhhbmRsZWQuCi0gICAgdm9pZCBlbnF1ZXVlVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBtYWluVGhyZWFkVGFza0hhbmRsZXIpCisgICAgdm9pZCBlbnF1ZXVlVGFzayhGdW5jdGlvbjx2
b2lkKCk+JiYgbWFpblRocmVhZFRhc2tIYW5kbGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gSXQg
aXMgYWxsb3dlZCBmb3IgdGhlIG1haW4gdGhyZWFkIHRhc2sgaGFuZGxlciB0byBhYm9ydCB0aGUg
QWJvcnRhYmxlVGFza1F1ZXVlLiBJbiB0aGF0IGNhc2UsIHRoZSByZXR1cm4KICAgICAvLyB2YWx1
ZSBpcyBkaXNjYXJkZWQgYW5kIHRoZSBjYWxsZXIgcmVjZWl2ZXMgYW4gZW1wdHkgb3B0aW9uYWwu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUj4KLSAgICBzdGQ6Om9wdGlvbmFsPFI+IGVucXVldWVU
YXNrQW5kV2FpdChXVEY6OkZ1bmN0aW9uPFIoKT4mJiBtYWluVGhyZWFkVGFza0hhbmRsZXIpCisg
ICAgc3RkOjpvcHRpb25hbDxSPiBlbnF1ZXVlVGFza0FuZFdhaXQoRnVuY3Rpb248UigpPiYmIG1h
aW5UaHJlYWRUYXNrSGFuZGxlcikKICAgICB7CiAgICAgICAgIC8vIERvbid0IGRlYWRsb2NrIHRo
ZSBtYWluIHRocmVhZCB3aXRoIGl0c2VsZi4KICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVGFzayk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFRhc2spOwogICAg
IHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxUYXNrPiBjcmVhdGUoQWJvcnRhYmxlVGFza1F1
ZXVlKiB0YXNrUXVldWUsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2tDYWxsYmFjaykKKyAg
ICAgICAgc3RhdGljIFJlZjxUYXNrPiBjcmVhdGUoQWJvcnRhYmxlVGFza1F1ZXVlKiB0YXNrUXVl
dWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrQ2FsbGJhY2spCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRhc2sodGFza1F1ZXVlLCBXVEZNb3ZlKHRhc2tDYWxs
YmFjaykpKTsKICAgICAgICAgfQpAQCAtMjA4LDE0ICsyMDgsMTQgQEAgcHJpdmF0ZToKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEFib3J0YWJsZVRhc2tRdWV1ZSogbV90YXNrUXVldWU7Ci0gICAg
ICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3Rhc2tDYWxsYmFjazsKKyAgICAgICAgRnVuY3Rp
b248dm9pZCgpPiBtX3Rhc2tDYWxsYmFjazsKIAotICAgICAgICBUYXNrKEFib3J0YWJsZVRhc2tR
dWV1ZSogdGFza1F1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrQ2FsbGJhY2spCisg
ICAgICAgIFRhc2soQWJvcnRhYmxlVGFza1F1ZXVlKiB0YXNrUXVldWUsIEZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrQ2FsbGJhY2spCiAgICAgICAgICAgICA6IG1fdGFza1F1ZXVlKHRhc2tRdWV1ZSks
IG1fdGFza0NhbGxiYWNrKFdURk1vdmUodGFza0NhbGxiYWNrKSkKICAgICAgICAgeyB9CiAgICAg
fTsKIAotICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2sp
IFdURl9SRVFVSVJFU19MT0NLKG1fbG9jaykKKyAgICB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CiAgICAgICAgIFJlZjxUYXNrPiB0YXNrID0gVGFz
azo6Y3JlYXRlKHRoaXMsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9hYm9ydGluZyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykg
eyBmYWxzZSB9OwogICAgIExvY2sgbV9sb2NrOwogICAgIENvbmRpdGlvbiBtX2Fib3J0ZWRPclJl
c3BvbnNlU2V0OwotICAgIFdURjo6RGVxdWU8UmVmPFRhc2s+PiBtX2NoYW5uZWwgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2xvY2spOworICAgIERlcXVlPFJlZjxUYXNrPj4gbV9jaGFubmVsIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAppbmRleCA0MzhlNzI1MTc3MmJlOGU1YTQ3ODEw
NWI1MjBjYmM1ZGVmZmI1YTkzLi41MjJjNjgxODAxY2I4ZjkzYWE4ZWVlNjcyOWZlNzY1OWMyNzQz
NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENQVU1vbml0b3IgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHVzaW5nIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGRvdWJsZSk+OworICAgIHVzaW5nIEV4Y2VlZGVkQ1BVTGlt
aXRIYW5kbGVyID0gRnVuY3Rpb248dm9pZChkb3VibGUpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBD
UFVNb25pdG9yKFNlY29uZHMgY2hlY2tJbnRlcnZhbCwgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIm
Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENQVUxpbWl0KGNvbnN0IHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZU1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwCmlu
ZGV4IGYyYWYwYTIwMjNkZDgzZjQ4ODM5Y2ZlMTA4MzY0MmIxM2Q1MjcxYjYuLmUzMTNiYTUzMDE2
NzM1OGQyMzM0YWJiNWI2Zjk1OGFkYzEwNTBhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlTW9uaXRvci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdMSUIpCiAKLUZpbGVNb25pdG9yOjpGaWxlTW9u
aXRvcihjb25zdCBTdHJpbmcmLCBSZWY8V29ya1F1ZXVlPiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
RmlsZUNoYW5nZVR5cGUpPiYmKQorRmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmlu
ZyYsIFJlZjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoRmlsZUNoYW5nZVR5cGUpPiYmKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaAppbmRleCAzNjY0N2ViZmNl
MmZlZDM3ZThiZDcxYmM5ZDRhNDRlZTZlNDJkMDIxLi42ZjJjZTZjNGRiN2Y4M2FkN2Q2Y2U2Mjdk
NjViMGYyNmI5NWEwMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
TW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRmlsZU1vbml0b3IgewogcHVibGljOgogICAgIGVudW0gY2xh
c3MgRmlsZUNoYW5nZVR5cGUgeyBNb2RpZmljYXRpb24sIFJlbW92YWwgfTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIEZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYsIFJlZjxXb3JrUXVldWU+JiYgaGFu
ZGxlclF1ZXVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRmlsZUNoYW5nZVR5cGUpPiYmIG1vZGlmaWNh
dGlvbkhhbmRsZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIEZpbGVNb25pdG9yKGNvbnN0IFN0cmlu
ZyYsIFJlZjxXb3JrUXVldWU+JiYgaGFuZGxlclF1ZXVlLCBGdW5jdGlvbjx2b2lkKEZpbGVDaGFu
Z2VUeXBlKT4mJiBtb2RpZmljYXRpb25IYW5kbGVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Rmls
ZU1vbml0b3IoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb3dQ
b3dlck1vZGVOb3RpZmllci5oCmluZGV4IDYzYjZjNGFmZmVjNmVkMDg1MThlYzMyZjM0ZDE0OTVj
OTY1YzE3YzIuLjBhMTM2ODYxNmIxNzJlNWM3MWNkNzQ3NTdmM2JjMDdmZWQ4ZWM4OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvd1Bvd2VyTW9kZU5vdGlmaWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG93UG93ZXJNb2RlTm90aWZpZXIuaApAQCAtNDIs
NyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmll
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdXNpbmcgTG93
UG93ZXJNb2RlQ2hhbmdlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBpc0xvd1Bv
d2VyTW9kZUVuYWJsZWQpPjsKKyAgICB1c2luZyBMb3dQb3dlck1vZGVDaGFuZ2VDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpPjsKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBMb3dQb3dlck1vZGVOb3RpZmllcihMb3dQb3dlck1vZGVDaGFuZ2VD
YWxsYmFjayYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TG93UG93ZXJNb2RlTm90aWZpZXIoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5j
cHAKaW5kZXggNDI1MWM4N2U4MWY3MTA2NzJhN2IzZmJiYTdhODc5YzkwZWUyNjBjMi4uY2I2MmQx
MWFmYWI2MGE5YjEzMTE5MjM3NjI1ZTY5Y2JiM2EwNzNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBA
IHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIH0KICNlbmRpZgogCi12
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVkRnVuY3Rpb24oRnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24pCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fZmlyZWRGdW5jdGlvbiB8fCAhZmlyZWRGdW5jdGlvbik7CiAgICAg
bV9maXJlZEZ1bmN0aW9uID0gV1RGTW92ZShmaXJlZEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmgKaW5kZXggNTdjYjQzNTU2ZGZl
ZDk4YTgzMDJkNzlmNWU0ZWFkMWY4NTNhNmE0OS4uMWExYmM2MzYzZTAyZjU2MmE3NjE1ZmZiNjg0
NjkxOWIxMWIzOTU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRo
cmVhZFNoYXJlZFRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVh
ZFNoYXJlZFRpbWVyLmgKQEAgLTM2LDExICszNiwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBNYWluVGhyZWFkU2hhcmVkVGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIg
ewotICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPE1haW5UaHJlYWRTaGFyZWRU
aW1lcj47CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPE1haW5UaHJlYWRTaGFyZWRU
aW1lcj47CiBwdWJsaWM6CiAgICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciYgc2luZ2xl
dG9uKCk7CiAKLSAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihGdW5jdGlvbjx2b2lkKCk+
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RmlyZUludGVydmFsKFNlY29uZHMpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJy
aWRlOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1haW5UaHJlYWRT
aGFyZWRUaW1lcigpOwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlv
bjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlvbjsKICNpZiAhVVNFKENGKSAm
JiAhT1MoV0lORE9XUykKICAgICBSdW5Mb29wOjpUaW1lcjxNYWluVGhyZWFkU2hhcmVkVGltZXI+
IG1fdGltZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BP
REludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5oCmluZGV4
IDNhOWZlNjY4MGNkNGYzYTcxMDA1NDk1OTQ3NzRiMTZkNjZmNDg0NmMuLmI4ODg2MzEyM2E0ZmZk
OWNhNmZmZjMzNGFjNmU2N2U4OTVmM2NmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BPREludGVydmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50
ZXJ2YWwuaApAQCAtMTMwLDEwICsxMzAsMTAgQEAgcHJpdmF0ZToKICAgICB1c2luZyBCYXNlID0g
UE9ESW50ZXJ2YWxCYXNlPFQsIFVzZXJEYXRhPjsKIH07CiAKLXRlbXBsYXRlPGNsYXNzIFQsIGNs
YXNzIFU+IGNsYXNzIFBPREludGVydmFsPFQsIFdURjo6V2Vha1B0cjxVPj4gOiBwdWJsaWMgUE9E
SW50ZXJ2YWxCYXNlPFQsIFdURjo6V2Vha1B0cjxVPj4gewordGVtcGxhdGU8Y2xhc3MgVCwgY2xh
c3MgVT4gY2xhc3MgUE9ESW50ZXJ2YWw8VCwgV2Vha1B0cjxVPj4gOiBwdWJsaWMgUE9ESW50ZXJ2
YWxCYXNlPFQsIFdlYWtQdHI8VT4+IHsKIHB1YmxpYzoKLSAgICBQT0RJbnRlcnZhbChjb25zdCBU
JiBsb3csIGNvbnN0IFQmIGhpZ2gsIFdURjo6V2Vha1B0cjxVPiYmIGRhdGEpCi0gICAgICAgIDog
UE9ESW50ZXJ2YWxCYXNlPFQsIFdURjo6V2Vha1B0cjxVPj4obG93LCBoaWdoLCBXVEZNb3ZlKGRh
dGEpKQorICAgIFBPREludGVydmFsKGNvbnN0IFQmIGxvdywgY29uc3QgVCYgaGlnaCwgV2Vha1B0
cjxVPiYmIGRhdGEpCisgICAgICAgIDogUE9ESW50ZXJ2YWxCYXNlPFQsIFdlYWtQdHI8VT4+KGxv
dywgaGlnaCwgV1RGTW92ZShkYXRhKSkKICAgICB7CiAgICAgfQogCkBAIC0xNDcsNyArMTQ3LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB1c2luZyBCYXNlID0gUE9ESW50ZXJ2
YWxCYXNlPFQsIFdURjo6V2Vha1B0cjxVPj47CisgICAgdXNpbmcgQmFzZSA9IFBPREludGVydmFs
QmFzZTxULCBXZWFrUHRyPFU+PjsKIH07CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oCmluZGV4IDBmN2IzMmVhYWNh
MDYzZDMxNDIxMDUxYTMzNzVkZWY2ZGM3ZjhkNzQuLjIyNjdjZTRiMjFjMTc2YjA1NmU3Njk2ZDk4
N2Q4ZDY5MmJjNGVkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNv
bW1hbmRMaXN0ZW5lci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFN1
cHBvcnRlZENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSk7CiAgICAgdm9pZCByZW1vdmVTdXBwb3J0ZWRDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpOwogCi0gICAgdXNpbmcgUmVtb3RlQ29tbWFu
ZHNTZXQgPSBIYXNoU2V0PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUsIFdURjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj47CisgICAgdXNpbmcgUmVtb3RlQ29tbWFuZHNT
ZXQgPSBIYXNoU2V0PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUsIEludEhhc2g8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZT4+OwogICAgIHZvaWQgc2V0U3VwcG9ydGVkQ29tbWFuZHMoY29u
c3QgUmVtb3RlQ29tbWFuZHNTZXQmKTsKICAgICBjb25zdCBSZW1vdGVDb21tYW5kc1NldCYgc3Vw
cG9ydGVkQ29tbWFuZHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwCmluZGV4IDU0NDliYWQxYjYwMTFkZTc4ZDU4
NzBjZjZhYWZmOTRhZmViNDU0ZGMuLjA4OTNmN2U3NWFlYTZiZTI0ZDM5OWU4NmZjYTgyYjcxNjhk
NWU2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
bk1vbWVudHVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25Nb21lbnR1bS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06
OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtKFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQog
CiBTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6flNjcm9sbEFuaW1hdGlvbk1vbWVudHVtKCkgPSBk
ZWZhdWx0OwogCi1ib29sIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpzdGFydEFuaW1hdGVkU2Ny
b2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
RGVsdGEsIGNvbnN0IFdURjo6RnVuY3Rpb248RmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50Jik+
JiBkZXN0aW5hdGlvbk1vZGlmaWVyKQorYm9vbCBTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c3Rh
cnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5p
dGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGdW5jdGlvbjxGbG9hdFBvaW50KGNvbnN0IEZsb2F0
UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIpCiB7CiAgICAgYXV0byBleHRlbnRzID0gbV9j
bGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oCmluZGV4IDVjOWJlOTEz
NDFkNjcyNGVjNTA2OTc0YjI3M2VmMTc5Y2Y5NzI5NzkuLjYxODA1NGJiNGEwOTU4YzdkYjlkNGQz
MTY3MDQ4MDQyY2FhODVlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uTW9tZW50dW0uaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgU2Ny
b2xsQW5pbWF0aW9uTW9tZW50dW0oU2Nyb2xsQW5pbWF0aW9uQ2xpZW50Jik7CiAgICAgdmlydHVh
bCB+U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0oKTsKIAotICAgIGJvb2wgc3RhcnRBbmltYXRlZFNj
cm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bERlbHRhLCBjb25zdCBXVEY6OkZ1bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYp
PiYgZGVzdGluYXRpb25Nb2RpZmllcik7CisgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0
aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEs
IGNvbnN0IEZ1bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYpPiYgZGVzdGluYXRp
b25Nb2RpZmllcik7CiAgICAgYm9vbCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9h
dFBvaW50JiBuZXdEZXN0aW5hdGlvbikgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAg
ICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGNjMGRlZjlkZTJmYTUwM2U4
ZjgwNTI5ZTUyMzc3Y2ExMTMxNmUyOTAuLmFiMThiODI3OWFmZjhlZTg5YTg5YzIwZTVhMDM4ODVl
NTM0ZDNjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAK
QEAgLTM3NSw3ICszNzUsNyBAQCBmbG9hdCBTY3JvbGxBbmltYXRvcjo6cGFnZVNjYWxlRmFjdG9y
KCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGlt
ZXI+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24pCiB7Ci0gICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlclRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIFtmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rp
b24pLCB3ZWFrU2Nyb2xsYWJsZUFyZWEgPSBXZWFrUHRyIHsgbV9zY3JvbGxhYmxlQXJlYSB9XSB7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4o
UnVuTG9vcDo6Y3VycmVudCgpLCBbZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgd2Vha1Nj
cm9sbGFibGVBcmVhID0gV2Vha1B0ciB7IG1fc2Nyb2xsYWJsZUFyZWEgfV0gewogICAgICAgICBp
ZiAoIXdlYWtTY3JvbGxhYmxlQXJlYSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZnVu
Y3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlci5oCmluZGV4IDlkZGZmODA4OTlmODZiMWE4OTFiZTlhYmY3NGU3NmI0ZTQx
ZWEyMDYuLmU3OWZiODBhNTZiZmJjNWQwZDQ5MjJkMjBiNTNmZDQ1OWQ4MjNjMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RvcEtleWJvYXJkU2Ny
b2xsaW5nKCk7CiAKLSAgICBib29sIHN0YXJ0TW9tZW50dW1TY3JvbGxXaXRoSW5pdGlhbFZlbG9j
aXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgV1RGOjpG
dW5jdGlvbjxGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZp
ZXIpOworICAgIGJvb2wgc3RhcnRNb21lbnR1bVNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29u
c3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVs
b2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGdW5jdGlvbjxGbG9h
dFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIpOwogCiAgICAg
dm9pZCB3aWxsQmVnaW5LZXlib2FyZFNjcm9sbGluZygpOwogICAgIHZvaWQgZGlkU3RvcEtleWJv
YXJkU2Nyb2xsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4
IGQ3YWIzMTZlM2UyMzhjOGRhNmRhZGRlYWRmNzM1ZjE3MWUzYjg5OTguLjU1NWFkMGZmODEyOWY5
MDhlMGZjNmIzMTIzOTA1ZmY3NTg5NjljYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCiAg
ICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBXVEY6OkZ1bmN0aW9uPGNvbnN0
IHVpbnQ4X3QqKCk+IGRhdGE7Ci0gICAgICAgICAgICBXVEY6OkZ1bmN0aW9uPHNpemVfdCgpPiBz
aXplOworICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAg
ICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwogICAgICAgICB9OwogCiAgICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCmluZGV4IDMzZDg2OTMxMTQ4NGJkYWE4ZThlYThh
ZjY1YmEyYjRkYjc4M2JlMWMuLjcyOTQ1MjRkYjc0MDc0MjkxNzI2MTMyZDUyMjFlMWZlYjI0Njdk
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaApAQCAtNDEsNyArNDEsNyBA
QCBjbGFzcyBTaGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgU2hhcmVkVGltZXIoKSA9IGRlZmF1
bHQ7CiAgICAgdmlydHVhbCB+U2hhcmVkVGltZXIoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEZpcmVkRnVuY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihGdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKIAog
ICAgIC8vIFRoZSBmaXJlIGludGVydmFsIGlzIGluIHNlY29uZHMgcmVsYXRpdmUgdG8gdGhlIGN1
cnJlbnQgbW9ub3RvbmljIGNsb2NrIHRpbWUuCiAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRl
cnZhbChTZWNvbmRzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAppbmRleCBhNGJhNmIwN2Ez
YjczMDI0YTM3NDUwOTg4NTk3YjdiNDg4ODdlM2E3Li41OWJhY2FkN2RhZWM1YzNiZWQ1YTg2NmE2
ZWQ4ZDJjYjY4OTAxYTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKQEAgLTEwOCw3ICsxMDgs
NyBAQCBwcml2YXRlOgogY2xhc3MgVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZShT
ZWNvbmRzIGRlbGF5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKKyAgICBzdGF0
aWMgdm9pZCBzY2hlZHVsZShTZWNvbmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24pCiAgICAgewogICAgICAgICBhdXRvKiB0aW1lciA9IG5ldyBUaW1lcihbXSB7IH0pOwogICAg
ICAgICB0aW1lci0+bV9mdW5jdGlvbiA9IFt0aW1lciwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKV0gewpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
VGltZXIoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQorICAgIFRpbWVyKEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVu
Y3Rpb24pKQogICAgIHsKICAgICB9CkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9mdW5jdGlvbigpOwogICAgIH0KICAgICAKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+
IG1fZnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOwogfTsKIAogaW5s
aW5lIGJvb2wgVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0CkBAIC0xNTgsNyArMTU4LDcgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBTZWNvbmRzIGRlbGF5KQorICAgIERlZmVycmFi
bGVPbmVTaG90VGltZXIoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBTZWNvbmRzIGRlbGF5
KQogICAgICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAgICAgICwgbV9k
ZWxheShkZWxheSkKICAgICAgICAgLCBtX3Nob3VsZFJlc3RhcnRXaGVuVGltZXJGaXJlcyhmYWxz
ZSkKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2Z1bmN0aW9uKCk7CiAg
ICAgfQogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkICgpPiBtX2Z1bmN0aW9uOworICAgIEZ1bmN0
aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKIAogICAgIFNlY29uZHMgbV9kZWxheTsKICAgICBib29s
IG1fc2hvdWxkUmVzdGFydFdoZW5UaW1lckZpcmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1dlYkdMU3RhdGVUcmFja2VyLmgKaW5kZXggODQ0NjgxZTY4ZTZhMDgyMDJkMjEzMWU2ZWEzMjJh
MzVjM2Q2Mjc2MC4uMjYxYjdiYjRlYzVlYTQ4ZjY2ZTAxZjNlMTU3NGJmYzNhZDA3M2UwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2ViR0xTdGF0ZVRyYWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XZWJHTFN0YXRlVHJhY2tlci5oCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdlYkdMU3RhdGVUcmFja2VyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBTdGF0ZUNoYW5n
ZUhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBpc1VzaW5nV2ViR0wpPjsKKyAgICB1
c2luZyBTdGF0ZUNoYW5nZUhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKGJvb2wgaXNVc2luZ1dlYkdM
KT47CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgV2ViR0xTdGF0ZVRyYWNrZXIoU3RhdGVD
aGFuZ2VIYW5kbGVyJiYpOwogCiAgICAgZW51bSBXZWJHTENvbnRleHRDb3VudGVyVHlwZSB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCmluZGV4IGFlYTIxNjQ2NTU1OWQ4Y2VlNTYwMTkxMWZmZTQ0
YWY4NjAyMjc3YmEuLjQ0YTY2OTQ3ZGU1MWRmNjc2NTEyMWYwOTI2MTZhOGQ4YmM1NzA5MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb1NhbXBsZURhdGFT
b3VyY2UsCiAjZW5kaWYKICAgICB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb1NhbXBs
ZURhdGFTb3VyY2U+IGNyZWF0ZShzaXplX3QsIFdURjo6TG9nZ2VySGVscGVyJiwgc2l6ZV90IHdh
aXRUb1N0YXJ0Rm9yUHVzaENvdW50ID0gMik7CisgICAgc3RhdGljIFJlZjxBdWRpb1NhbXBsZURh
dGFTb3VyY2U+IGNyZWF0ZShzaXplX3QsIExvZ2dlckhlbHBlciYsIHNpemVfdCB3YWl0VG9TdGFy
dEZvclB1c2hDb3VudCA9IDIpOwogCiAgICAgfkF1ZGlvU2FtcGxlRGF0YVNvdXJjZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1
ZmZlckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVk
aW9CdWZmZXJMaXN0LmNwcAppbmRleCAzMGRlYjJlNGM3NDFkZjU0ODhiMzhmNWVkNTllZWJlNWEw
Mjg5YmVjLi5lODE5NzA3NTAzM2EyMjFlYzNmZjQ4M2NiMjY0NzkyMjE3MDE2MjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlv
QnVmZmVyTGlzdC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFdlYkF1ZGlvQnVmZmVyTGlz
dDo6cmVzZXQoKQogICAgIG1lbWNweShtX2xpc3QuZ2V0KCksIG1fY2Fub25pY2FsTGlzdC5nZXQo
KSwgbV9saXN0QnVmZmVyU2l6ZSk7CiB9CiAKLVdURjo6SXRlcmF0b3JSYW5nZTxBdWRpb0J1ZmZl
cio+IFdlYkF1ZGlvQnVmZmVyTGlzdDo6YnVmZmVycygpIGNvbnN0CitJdGVyYXRvclJhbmdlPEF1
ZGlvQnVmZmVyKj4gV2ViQXVkaW9CdWZmZXJMaXN0OjpidWZmZXJzKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZSgmbV9saXN0LT5tQnVmZmVyc1swXSwgJm1fbGlz
dC0+bUJ1ZmZlcnNbbV9saXN0LT5tTnVtYmVyQnVmZmVyc10pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaApp
bmRleCAwNzFlYmJjOGU5NzA0NWRhZDAwYTllNzNmNWQzNTk0NjkyOTMyNzlhLi5kMjQ0ODE1NTMz
YmE5MGRlOTI1Y2EyZmJlM2VkMzUwMGFhODRlZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaApAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QgYnVmZmVyQ291bnQoKSBjb25zdDsKICAg
ICB1aW50MzJfdCBjaGFubmVsQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxDb3VudDsg
fQogICAgIEF1ZGlvQnVmZmVyKiBidWZmZXIodWludDMyX3QgaW5kZXgpIGNvbnN0OwotICAgIFdU
Rjo6SXRlcmF0b3JSYW5nZTxBdWRpb0J1ZmZlcio+IGJ1ZmZlcnMoKSBjb25zdDsKKyAgICBJdGVy
YXRvclJhbmdlPEF1ZGlvQnVmZmVyKj4gYnVmZmVycygpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWREZXNjcmlwdGlvbihjb25zdCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCB1aW50MzJfdCBzYW1wbGVDb3VudCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCA1ZmRhNGFmNWYzNTNmODkyMzhkZWZmYjAw
Zjc0OGVhYTI3YWZjMDMwLi4yNDhmMGMwNGU5YWI3MzczY2IyOGU2N2MzOGU0OWVjZWRlZTY1MzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0yMTAsNyAr
MjEwLDcgQEAgZ2Jvb2xlYW4gQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6aGFuZGxlTWVzc2Fn
ZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAgICAgR1NUX0lORk9fT0JKRUNUKG1fcGlw
ZWxpbmUuZ2V0KCksICJTdGF0ZSBjaGFuZ2VkIChvbGQ6ICVzLCBuZXc6ICVzLCBwZW5kaW5nOiAl
cykiLAogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG9sZFN0YXRl
KSwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0
ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAKLSAgICAgICAgICAgIFdURjo6U3RyaW5nIGRvdEZpbGVO
YW1lID0gbWFrZVN0cmluZyhHU1RfT0JKRUNUX05BTUUobV9waXBlbGluZS5nZXQoKSksICdfJywK
KyAgICAgICAgICAgIFN0cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoR1NUX09CSkVDVF9O
QU1FKG1fcGlwZWxpbmUuZ2V0KCkpLCAnXycsCiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRf
c3RhdGVfZ2V0X25hbWUob2xkU3RhdGUpLCAnXycsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1l
KG5ld1N0YXRlKSk7CiAKICAgICAgICAgICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lU
SF9UUyhHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIEdTVF9ERUJVR19HUkFQSF9TSE9X
X0FMTCwgZG90RmlsZU5hbWUudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuY3BwCmluZGV4IGViYjFlZTMzZjkzZTAzZjIxOTg1MWJjZWY5ZWI4N2NjZTRm
N2ZiMjIuLmJlYWQyMDJmZjMyZWI2MzM5NTAxMDQwYzhkMmQ5OTI0ODhmZTE0YTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9p
ZCBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShuZXdTdGF0ZSksCiAgICAg
ICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogCi0gICAg
ICAgICAgICBXVEY6OlN0cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoR1NUX09CSkVDVF9O
QU1FKG1fcGlwZWxpbmUuZ2V0KCkpLCAnXycsCisgICAgICAgICAgICBTdHJpbmcgZG90RmlsZU5h
bWUgPSBtYWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShtX3BpcGVsaW5lLmdldCgpKSwgJ18nLAog
ICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG9sZFN0YXRlKSwgJ18n
LAogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG5ld1N0YXRlKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0hh
cmR3YXJlTGlzdGVuZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMuaAppbmRleCAwNzIwY2U0NzJlYjA4N2ViZWZlM2UxNjhj
Y2VmZTYyOGY5NzBlZThjLi42N2QwNzQwY2FkNjg0ODBjNGFiMzM4N2ZlMGQ2OWNhY2RmNjIzYjM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJk
d2FyZUxpc3RlbmVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjIDogcHVibGljIEF1ZGlv
SGFyZHdhcmVMaXN0ZW5lciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYz4gewogcHVibGljOgotICAgIHN0YXRpYyBXVEY6OlJlZjxBdWRpb0hhcmR3YXJlTGlz
dGVuZXJNYWM+IGNyZWF0ZShDbGllbnQmKTsKKyAgICBzdGF0aWMgUmVmPEF1ZGlvSGFyZHdhcmVM
aXN0ZW5lck1hYz4gY3JlYXRlKENsaWVudCYpOwogCiBwcml2YXRlOgogICAgIEF1ZGlvSGFyZHdh
cmVMaXN0ZW5lck1hYyhDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVu
TG9vcE9ic2VydmVyLmgKaW5kZXggZTFjNDQ4MDcxYjI4OTg2NGE1ZDg0MWRkZDk4ZDJkM2QxOTFi
MDJjYi4uMDFlMThjNWMwZjMxNWIzOTljMWMxNDFkZDhiYzdkZTc3YzQwNzFkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmgKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUnVuTG9vcE9ic2VydmVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShSdW5Mb29wT2JzZXJ2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoKT4gUnVuTG9vcE9i
c2VydmVyQ2FsbGJhY2s7CisgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkICgpPiBSdW5Mb29wT2Jz
ZXJ2ZXJDYWxsYmFjazsKIAogICAgIFJ1bkxvb3BPYnNlcnZlcihDRkluZGV4IG9yZGVyLCBSdW5M
b29wT2JzZXJ2ZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgICAgICA6IG1fb3JkZXIob3JkZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAppbmRleCAzYjY3NDdmZmVhMWQzNzFmODUw
NWY5NzRiMzFhZjlmYjhiYTgzM2E2Li5kZmE0YWVjNTdkMGQ3YzkxZTIxZTBkZGQ5MTBjN2I0M2I2
N2Q0NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWVkaWFFbmdpbmVDaGFuZ2VkKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBXZWJDb3JlOjpFdmVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRl
Rm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbVN0cmluZyYpOworICAgIHZvaWQgdXBkYXRlRm9y
RXZlbnROYW1lKGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmKTsKQEAg
LTEwOCw4ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50KCk7CiAKICAgICB2b2lkIHByb2dyZXNzRXZlbnRUaW1lckZp
cmVkKCk7Ci0gICAgc3RhdGljIGNvbnN0IFZlY3RvcjxXVEY6OkF0b21TdHJpbmc+JiBvYnNlcnZl
ZEV2ZW50TmFtZXMoKTsKLSAgICBjb25zdCBXVEY6OkF0b21TdHJpbmcmIGV2ZW50TmFtZUFsbCgp
OworICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIG9ic2VydmVkRXZlbnROYW1l
cygpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZUFsbCgpOwogCiAgICAgUmVmUHRy
PEhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVkaWFFbGVtZW50OwogICAgIGJvb2wgbV9pc0xpc3Rlbmlu
ZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
b3dlclNvdXJjZU5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Qb3dl
clNvdXJjZU5vdGlmaWVyLmgKaW5kZXggYTA5NmUwNmE4MTlkOTcwMWU0ZDc2NDYzMmU0NzYwNTY4
M2QyMTZiMy4uYmVhMTU4MWQzYjI3YTBkZDNmNmViZjE3OWZkNDY4YzY1YjkyNDZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIu
aApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQb3dlclNvdXJj
ZU5vdGlmaWVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBvd2VyU291cmNlTm90aWZpZXI+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBQb3dlclNv
dXJjZU5vdGlmaWVyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBoYXNBQyk+Owor
ICAgIHVzaW5nIFBvd2VyU291cmNlTm90aWZpZXJDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9v
bCBoYXNBQyk+OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFBvd2VyU291cmNlTm90aWZp
ZXIoUG93ZXJTb3VyY2VOb3RpZmllckNhbGxiYWNrJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Q
b3dlclNvdXJjZU5vdGlmaWVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1N5c3RlbUJhdHRlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1N5c3RlbUJhdHRlcnkuaAppbmRleCA0MjA3NWMzZDJiMTNkYjczYmNlYTY1YzUwMzA1MWMzOGZi
Y2RhMzUyLi41MjY3N2Y1MGUzMzQzODE5ZjRlMjU1ZjkxZWIyMmY2ODY1Njk4MjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TeXN0ZW1CYXR0ZXJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU3lzdGVtQmF0dGVyeS5oCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2hhc0Jh
dHRlcnk7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2hhc0FDOwotICAgIFdURjo6RnVuY3Rp
b248dm9pZCgpPiBtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2s7CisgICAgRnVuY3Rpb248
dm9pZCgpPiBtX2NvbmZpZ3VyYXRpb25DaGFuZ2VkQ2FsbGJhY2s7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCAyYzUxZDgzYjFiODc1NTFhY2ViMGMzNDIzMDlh
ZGNmZDU4OTEzMDU0Li5kOTI1ZDA1ZmExZGMwYTBjZGFmZWI3YzY2YjE3Y2YzMDg5NDljZjlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTU2LDEyICs1NiwxMiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxl
bWVudCopOwogICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlkZW9FbGVtZW50LmdldCgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PFBsYXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHdhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIgPSBbXSB7IH0pOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxl
RXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYkNvcmU6OkV2ZW50Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9tU3Ry
aW5nJik7CisgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0
aGlzKSA9PSAmcmhzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwpAQCAtODgsOCArODgsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGNv
bnN0IFZlY3RvcjxXVEY6OkF0b21TdHJpbmc+JiBvYnNlcnZlZEV2ZW50TmFtZXMoKTsKLSAgICBj
b25zdCBXVEY6OkF0b21TdHJpbmcmIGV2ZW50TmFtZUFsbCgpOworICAgIHN0YXRpYyBjb25zdCBW
ZWN0b3I8QXRvbVN0cmluZz4mIG9ic2VydmVkRXZlbnROYW1lcygpOworICAgIGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50TmFtZUFsbCgpOwogCiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1f
dmlkZW9FbGVtZW50OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlLmgKaW5kZXggMDI2OWZlNTdlYjFjMzFiZjE4NjNlYWEyN2UwNWZhNzQ1
ZWRlMDU3OC4uZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGll
bnQoKSB7IH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRMb2dnZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNldExvZ2dlcihMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CiAjZW5kaWYKIAogICAgIGVudW0g
Y2xhc3MgSW1wbGVtZW50YXRpb25UeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggMTg1
N2FiNjE1NzU2MmRkMGQxZWQyN2Q4ZGM1MTY1YmU2NDFmMWIyYy4uMzdjZDA3YzdiZjJkYzc1ZTQx
ZmQ1YzZjN2RlY2Y0M2UxMDM5ZTExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTY3LDcg
KzY3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIE1lc3NhZ2VUeXBlID0gQ0RNTWVzc2FnZVR5cGU7
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TG9nZ2Vy
KFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dn
ZXIoTG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApp
bmRleCA0ZDVlN2Y3MzE0OTAzZjhmMGFiYTljZTZiZGRhMGZlMmRlMzQxMzc1Li42ZDE3YWNlZTE1
NDBlZjA3NjVlYmRjNzcwYTczMmQzODBiMGVhMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5DRE1Qcml2YXRlKCk7CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TG9nZ2VyKFdURjo6
TG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TG9nZ2VyKExv
Z2dlciYsIGNvbnN0IHZvaWQqKSB7IH07CiAjZW5kaWYKIAogICAgIGVudW0gY2xhc3MgTG9jYWxT
dG9yYWdlQWNjZXNzIDogYm9vbCB7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAg
QWxsb3dlZCwKICAgICB9OwogCi0gICAgdXNpbmcgU3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbj4pPjsKKyAgICB1c2luZyBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4pPjsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlv
bihDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTG9j
YWxTdG9yYWdlQWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CiAKICAg
ICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29u
c3QgPSAwOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6Om9wdGlvbmFs
PENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgQ0RN
UmVzdHJpY3Rpb25zJiwgTG9jYWxTdG9yYWdlQWNjZXNzKTsKICAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiBnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRp
b1ZpZGVvVHlwZShBdWRpb1ZpZGVvVHlwZSwgY29uc3QgVmVjdG9yPENETU1lZGlhQ2FwYWJpbGl0
eT4mIHJlcXVlc3RlZENhcGFiaWxpdGllcywgY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYgcGFydGlhbENvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0aW9ucyYpOwogCi0gICAgdXNpbmcg
Q29uc2VudFN0YXR1c0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENvbnNlbnRTdGF0dXMs
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiwgQ0RNUmVzdHJpY3Rpb25zJiYpPjsKKyAgICB1
c2luZyBDb25zZW50U3RhdHVzQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKENvbnNlbnRTdGF0dXMs
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiwgQ0RNUmVzdHJpY3Rpb25zJiYpPjsKICAgICB2
b2lkIGdldENvbnNlbnRTdGF0dXMoQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGFjY3VtdWxh
dGVkQ29uZmlndXJhdGlvbiwgQ0RNUmVzdHJpY3Rpb25zJiYsIExvY2FsU3RvcmFnZUFjY2Vzcywg
Q29uc2VudFN0YXR1c0NhbGxiYWNrJiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmluZGV4IGZjN2EzMWEyYTE2OTQ3
MjE3MTExNjc5NmJlOTQzNmMwNjMxYTU2YzkuLmYyMThmOTc5MDRmYmJhNDlmMWViZGY0OGUyMDVm
ZTczZGZhZmI2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcm94eS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIEtleVN0b3JlOjpj
b250YWluc0tleUlEKGNvbnN0IEtleUlEVHlwZSYga2V5SUQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fa2V5cy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZlB0cjxLZXlIYW5kbGU+JiBzdG9yZWRL
ZXkpIHsKICAgICAgICAgcmV0dXJuICpzdG9yZWRLZXkgPT0ga2V5SUQ7Ci0gICAgfSkgIT0gV1RG
Ojpub3RGb3VuZDsKKyAgICB9KSAhPSBub3RGb3VuZDsKIH0KIAogdm9pZCBLZXlTdG9yZTo6bWVy
Z2UoY29uc3QgS2V5U3RvcmUmIG90aGVyKQpAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgS2V5U3Rv
cmU6OmFkZChSZWZQdHI8S2V5SGFuZGxlPiYmIGtleSkKICAgICB9KTsKIAogICAgIGFkZFNlc3Np
b25SZWZlcmVuY2VUbyhrZXkpOwotICAgIGlmIChrZXlXaXRoTWF0Y2hpbmdLZXlJREluZGV4ICE9
IFdURjo6bm90Rm91bmQpIHsKKyAgICBpZiAoa2V5V2l0aE1hdGNoaW5nS2V5SURJbmRleCAhPSBu
b3RGb3VuZCkgewogICAgICAgICBhdXRvJiBrZXlXaXRoTWF0Y2hpbmdLZXlJRCA9IG1fa2V5c1tr
ZXlXaXRoTWF0Y2hpbmdLZXlJREluZGV4XTsKICAgICAgICAgZGlkU3RvcmVDaGFuZ2UgPSBrZXlX
aXRoTWF0Y2hpbmdLZXlJRCAhPSBrZXk7CiAgICAgICAgIGlmIChkaWRTdG9yZUNoYW5nZSkKQEAg
LTE5Nyw3ICsxOTcsNyBAQCBib29sIEtleVN0b3JlOjp1bnJlZihjb25zdCBSZWZQdHI8S2V5SGFu
ZGxlPiYga2V5KQogICAgIHNpemVfdCBrZXlXaXRoTWF0Y2hpbmdLZXlJREluZGV4ID0gbV9rZXlz
LmZpbmQoa2V5KTsKICAgICBMT0coRU1FLCAiRU1FIC0gQ2xlYXJLZXkgLSByZXF1ZXN0ZWQgdG8g
dW5yZWYga2V5IHdpdGggSUQgJXMgYW5kICVkIHNlc3Npb24gcmVmZXJlbmNlcyIsIGtleS0+aWRB
c1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBrZXktPm51bVNlc3Npb25SZWZlcmVuY2VzKCkpOwog
Ci0gICAgaWYgKGtleVdpdGhNYXRjaGluZ0tleUlESW5kZXggIT0gV1RGOjpub3RGb3VuZCkgewor
ICAgIGlmIChrZXlXaXRoTWF0Y2hpbmdLZXlJREluZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAg
IGF1dG8mIGtleVdpdGhNYXRjaGluZ0tleUlEID0gbV9rZXlzW2tleVdpdGhNYXRjaGluZ0tleUlE
SW5kZXhdOwogICAgICAgICByZW1vdmVTZXNzaW9uUmVmZXJlbmNlRnJvbShrZXlXaXRoTWF0Y2hp
bmdLZXlJRCk7CiAgICAgICAgIGlmICgha2V5V2l0aE1hdGNoaW5nS2V5SUQtPmhhc1JlZmVyZW5j
ZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUmVzdHJpY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1SZXN0cmljdGlvbnMuaAppbmRleCA2NmEwMTFlZDRhOGFmOGQxODhiNjc4ZTI4MTk5
ZDNlZDE3ZDZiYzY1Li5jNjVmZGRkOTdhMDBjY2EwYmQxODkyNTc1NmUzMTAxZDgyMTE3MWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0
cmljdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1SZXN0cmljdGlvbnMuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zIHsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllckRl
bmllZCB7IGZhbHNlIH07CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVEZW5pZWQgeyBmYWxzZSB9
OwotICAgIEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUsIFdURjo6SW50SGFzaDxDRE1TZXNzaW9uVHlw
ZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+PiBkZW5pZWRTZXNz
aW9uVHlwZXM7CisgICAgSGFzaFNldDxDRE1TZXNzaW9uVHlwZSwgSW50SGFzaDxDRE1TZXNzaW9u
VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+PiBkZW5pZWRT
ZXNzaW9uVHlwZXM7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBDRE1S
ZXN0cmljdGlvbnMgewogICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxIYXNo
U2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0
cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBJbnRIYXNoPENE
TVNlc3Npb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDRE1TZXNzaW9uVHlwZT4+
PiBkZW5pZWRTZXNzaW9uVHlwZXM7CiAgICAgICAgIGRlY29kZXIgPj4gZGVuaWVkU2Vzc2lvblR5
cGVzOwogICAgICAgICBpZiAoIWRlbmllZFNlc3Npb25UeXBlcykKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL0dhbWVwYWRDb25zdGFudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9HYW1lcGFkQ29uc3RhbnRzLmNwcAppbmRleCBmYzM5NjBmMzlmNDQ2ZTM1NDI1ZjE0NGFmODc1
YTVmOTRmYjYzYzdiLi5hYWMzZWMyZGNhNDhjODM1ZDAzMGE0MDlmNzI2OTY1MTM0MDE4NzA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZENvbnN0
YW50cy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgR2FtZXBhZEJ1dHRvblJvbGUgbWF4aW11
bUdhbWVwYWRCdXR0b24gPSBHYW1lcGFkQnV0dG9uUm9sZTo6Q2VudGVyQ2x1c3RlckMKIGNvbnN0
IHNpemVfdCBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRob3V0SG9tZUJ1dHRvbiA9
IHN0YXRpY19jYXN0PHNpemVfdD4obWF4aW11bUdhbWVwYWRCdXR0b24pOwogY29uc3Qgc2l6ZV90
IG51bWJlck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhIb21lQnV0dG9uID0gbnVtYmVyT2ZT
dGFuZGFyZEdhbWVwYWRCdXR0b25zV2l0aG91dEhvbWVCdXR0b24gKyAxOwogCi1jb25zdCBXVEY6
OlN0cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCitjb25zdCBTdHJpbmcmIHN0
YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHN0YW5kYXJkR2FtZXBhZE1hcHBpbmcgPSAic3RhbmRhcmQiOwogICAgIHJldHVy
biBzdGFuZGFyZEdhbWVwYWRNYXBwaW5nOwpAQCAtNDUsNyArNDUsNyBAQCBjb25zdCBXVEY6OlN0
cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCiAKICNpZiBFTkFCTEUoV0VCWFIp
CiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVs
ZS8jZG9tLWdhbWVwYWRtYXBwaW5ndHlwZS14ci1zdGFuZGFyZAotY29uc3QgV1RGOjpTdHJpbmcm
IHhyU3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCitjb25zdCBTdHJpbmcmIHhyU3RhbmRh
cmRHYW1lcGFkTWFwcGluZ1N0cmluZygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4geHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nID0gInhyLXN0YW5kYXJkIjsKICAgICByZXR1
cm4geHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuaAppbmRleCA2MzNhZmQ3M2QzNzQ3ZmFhM2Ew
OGFlNzU2Y2I0MzIxNTEyNWQyNTRmLi4yNGE2ZTk5ZDk5OGI0NTVlN2VkOGU3NWY2OTAzYjFjMWEw
OTFiYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVw
YWRDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVw
YWRDb25zdGFudHMuaApAQCAtNjEsOSArNjEsOSBAQCBleHRlcm4gY29uc3Qgc2l6ZV90IG51bWJl
ck9mU3RhbmRhcmRHYW1lcGFkQnV0dG9uc1dpdGhvdXRIb21lQnV0dG9uOwogZXh0ZXJuIGNvbnN0
IHNpemVfdCBudW1iZXJPZlN0YW5kYXJkR2FtZXBhZEJ1dHRvbnNXaXRoSG9tZUJ1dHRvbjsKIGV4
dGVybiBjb25zdCBHYW1lcGFkQnV0dG9uUm9sZSBtYXhpbXVtR2FtZXBhZEJ1dHRvbjsKIAotY29u
c3QgV1RGOjpTdHJpbmcmIHN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsKK2NvbnN0IFN0
cmluZyYgc3RhbmRhcmRHYW1lcGFkTWFwcGluZ1N0cmluZygpOwogI2lmIEVOQUJMRShXRUJYUikK
LWNvbnN0IFdURjo6U3RyaW5nJiB4clN0YW5kYXJkR2FtZXBhZE1hcHBpbmdTdHJpbmcoKTsKK2Nv
bnN0IFN0cmluZyYgeHJTdGFuZGFyZEdhbWVwYWRNYXBwaW5nU3RyaW5nKCk7CiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwCmluZGV4IGE0YjFhM2NiNGE5ODBjMTQ0YWU2ZWIyMzliNzQ0
NDNjNmI1Y2RlN2MuLjVkMWNkMTZjYTQ5MTBlMjczYzg3YzAwZTZlNzlhZTA2Mjg1YTlmY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlTW9uaXRvcjo6
RmlsZU1vbml0b3IoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJR
dWV1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEZpbGVDaGFuZ2VUeXBlKT4mJiBtb2RpZmljYXRpb25I
YW5kbGVyKQorRmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVm
PFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIEZ1bmN0aW9uPHZvaWQoRmlsZUNoYW5nZVR5cGUp
PiYmIG1vZGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgOiBtX2hhbmRsZXJRdWV1ZShXVEZNb3ZlKGhh
bmRsZXJRdWV1ZSkpCiAgICAgLCBtX21vZGlmaWNhdGlvbkhhbmRsZXIoV1RGTW92ZShtb2RpZmlj
YXRpb25IYW5kbGVyKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcAppbmRleCA2MDI3NzM0ZTE5M2I2MjU4NzQxZTBiNzBkZWE0NTU4ZTEy
YTVkYmNiLi5jOTI2YzVkMjNmMjA2ZGU2MmE5ODczMDBmOWVjZjY5OTJjN2I0ZjY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC01
NzIsNyArNTcyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6cmVzZXRBbmltYXRpb24oKQogICAgIGRl
c3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KHRydWUpOwogfQogCi12b2lkIEJpdG1hcEltYWdl
OjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIEJpdG1hcElt
YWdlOjpkZWNvZGUoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9k
ZWNvZGluZ0NhbGxiYWNrcykKICAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IG1ha2VVbmlx
dWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA5NjkyMDIwZDkyM2FiYjE4OGVhODQ1NTZh
NjlhMTBmYmZkNjM2NWNmLi45ZWM1NGY2M2IzYWJjZTlkMDNlYTY2MGVmZjE1ZGEzOTk2MjM1MjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAt
MjI3LDcgKzIyNyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OkZv
bnREZXNjcmlwdGlvbktleT4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNo
VHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gOiBXVEY6OlNpbXBsZUNsYXNzSGFz
aFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IHsKK3RlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiA6IFNpbXBsZUNsYXNzSGFz
aFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IHsKIH07CiAKIH0KQEAgLTI4MSw3
ICsyODEsNyBAQCBzdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHMgOiBIYXNoVHJh
aXRzPEZvbnRDYXNjYWRlQ2FjaGVLZXk+IHsKIHVzaW5nIEZvbnRDYXNjYWRlQ2FjaGUgPSBIYXNo
TWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FzY2FkZUNhY2hl
RW50cnk+LCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaCwgRm9udENhc2NhZGVDYWNoZUtleUhhc2hU
cmFpdHM+OwogCiBjbGFzcyBGb250Q2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250Q2FjaGU+
IHsKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxGb250Q2FjaGUsIE1haW5U
aHJlYWRBY2Nlc3NUcmFpdHM+OworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxGb250
Q2FjaGUsIE1haW5UaHJlYWRBY2Nlc3NUcmFpdHM+OwogCiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRm9udENhY2hlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAppbmRleCA3YWJjM2Mw
OGZlMjE4ODZkMmFiMjE5ZWRiOTNhMDEwY2RiZGU1MWZmLi4zOWM2MGNmOTdhNWYwMzkwOTAxOWU0
NmU1MDhjZmM4NmViMDMzZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dMQ29udGV4dC5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJPcGVuR0xTaGlt
cy5oIgogI2VuZGlmCiAKLXVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgVGhyZWFkR2xvYmFsR0xDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNTZhMzc5
ZjgzYzAzYzkwMjI5NmQ2ZjU1NjFiM2UxYzZmOThiNmE3MS4uYzc1ZGE1NmE4MzYxNTZjYzBkNWU1
YTdkZjFiZmIwYzRiMmIyNjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTgxMiw3ICs4MTIsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QpCiAg
ICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXI6OnRyYXZlcnNlKEdyYXBoaWNzTGF5ZXImIGxh
eWVyLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEdyYXBoaWNzTGF5ZXImKT4mIHRyYXZlcnNh
bEZ1bmMpCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnRyYXZlcnNlKEdyYXBoaWNzTGF5ZXImIGxheWVy
LCBjb25zdCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzTGF5ZXImKT4mIHRyYXZlcnNhbEZ1bmMpCiB7
CiAgICAgdHJhdmVyc2FsRnVuYyhsYXllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAyMTlmNzUzMGNkYmMxNDE0OTE3MzA5
ZWIxMzY3OGExMTk2ZWEzOGNmLi5iZjk1MDlmMThjY2I5NTk5MjNkZDlmNWQ1ZmIyNTJiZTE4Yjk4
OTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCkBAIC02NDQsNyArNjQ0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiYgYW5pbWF0aW9uRXh0ZW50KCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRp
b25FeHRlbnQ7IH0KICAgICB2b2lkIHNldEFuaW1hdGlvbkV4dGVudChzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gYW5pbWF0aW9uRXh0ZW50KSB7IG1fYW5pbWF0aW9uRXh0ZW50ID0gYW5pbWF0aW9u
RXh0ZW50OyB9CiAKLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZShHcmFwaGljc0xheWVyJiwgY29u
c3QgV1RGOjpGdW5jdGlvbjx2b2lkIChHcmFwaGljc0xheWVyJik+Jik7CisgICAgc3RhdGljIHZv
aWQgdHJhdmVyc2UoR3JhcGhpY3NMYXllciYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NM
YXllciYpPiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR3Jh
cGhpY3NMYXllcihUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCmluZGV4IDUwMTk5ZGRm
YTU2YTZjYTFlNmQyNjJjOThjNDc5MTUzMjEwMGNkMTkuLjMzNjU2YTE1NjEzZGY2MzIyNjVhOTMz
Mjg4MmJkMTExYTY4MGRmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCkBAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0IEdDR0xT
cGFuPFQsIGdjR0xTcGFuRHluYW1pY0V4dGVudD4gewogICAgICAgICAsIGJ1ZlNpemUob3RoZXIu
YnVmU2l6ZSkKICAgICB7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+Ci0gICAgR0NHTFNwYW4oV1RGOjpWZWN0b3I8VSwgaW5saW5lQ2FwYWNpdHk+JiBh
cnJheSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2NvbnZlcnRpYmxlX3Y8VSgqKVtdLCBUKCop
W10+LCBzdGQ6Om51bGxwdHJfdD4gPSBudWxscHRyKQorICAgIEdDR0xTcGFuKFZlY3RvcjxVLCBp
bmxpbmVDYXBhY2l0eT4mIGFycmF5LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfY29udmVydGli
bGVfdjxVKCopW10sIFQoKilbXT4sIHN0ZDo6bnVsbHB0cl90PiA9IG51bGxwdHIpCiAgICAgICAg
IDogZGF0YShhcnJheS5kYXRhKCkpCiAgICAgICAgICwgYnVmU2l6ZShhcnJheS5zaXplKCkpCiAg
ICAgeyB9CkBAIC0xMzgsNyArMTM4LDcgQEAgc3RydWN0IEdDR0xTcGFuPEdDR0x2b2lkPiB7CiAg
ICAgICAgICwgYnVmU2l6ZShvdGhlci5idWZTaXplICogc2l6ZW9mKFUpKQogICAgIHsgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBHQ0dMU3Bh
bihXVEY6OlZlY3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5KQorICAgIEdDR0xTcGFuKFZl
Y3RvcjxVLCBpbmxpbmVDYXBhY2l0eT4mIGFycmF5KQogICAgICAgICA6IGRhdGEoYXJyYXkuZGF0
YSgpKQogICAgICAgICAsIGJ1ZlNpemUoYXJyYXkuc2l6ZSgpICogc2l6ZW9mKFUpKQogICAgIHsg
fQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgogR0NH
TFNwYW4oc3RkOjphcnJheTxULCBOPiYpIC0+IEdDR0xTcGFuPFQsIE4+OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci1HQ0dMU3BhbihXVEY6OlZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKK0dDR0xTcGFuKFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eT4mKSAtPiBHQ0dMU3BhbjxUPjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IEdDR0xTcGFuPFQ+IG1ha2VHQ0dMU3BhbihUKiBkYXRhLCBzaXplX3QgY291bnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDczNjRj
Y2NhMzAxY2E4N2VhN2M2ZmU5MTkyZTJjZmJhMjgzYTQxZmUuLmExYTA4YWRjMTc1ZDQ0YmFhNDQy
ZTQ0YTk0YWE5NjdhMDRmNWY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC04OSw5ICs4OSw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQotICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IFdURjo6RnVuY3Rpb248
Ym9vbChNZWRpYVR5cGUpPjsKLSAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IFdURjo6RnVu
Y3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVy
RnVuYyA9IFdURjo6RnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47
CisgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChNZWRpYVR5
cGUpPjsKKyAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woY29uc3Qg
U3RyaW5nJik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxS
ZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURl
Y29kZXJGYWN0b3J5IHsKICAgICAgICAgU3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVk
aWFUeXBlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBi
eXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRFbmNvZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNrKFdURjo6RnVu
Y3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmNvZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoRW5jb2RlZERh
dGFTdGF0dXMpPiYmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgY29u
c3QgeyByZXR1cm4gZW5jb2RlZERhdGFTdGF0dXMoKSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6
ZUF2YWlsYWJsZTsgfQogICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKaW5kZXggMWM0ZDkxYzgyNDFmNTNkN2JmNzdkODc5
N2M5ZjZjMzM4NmUxMmM3ZS4uOTlmYzA0YWVkMTM0NmM5YzUzZDg4M2E0ODZkNzEyNzY4M2JjYmUx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApAQCAtOTQs
NyArOTQsNyBAQCBwdWJsaWM6CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
LndpZHRoKCk7IH0KICAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdo
dCgpOyB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IFdURjo6Q3Jhc2hPbk92ZXJmbG93
PgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gQ3Jhc2hPbk92ZXJmbG93PgogICAgIENoZWNr
ZWQ8dW5zaWduZWQsIFQ+IGFyZWEoKSBjb25zdCB7IHJldHVybiBtX3NpemUuYXJlYTxUPigpOyB9
CiAKICAgICB2b2lkIHNldFgoaW50IHgpIHsgbV9sb2NhdGlvbi5zZXRYKHgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKaW5kZXggMDk1ZjAzMTQ0ZGY5NzI2
N2YxMDI1NWUyNTY3NGVkOTY2MmRkZmZmNy4uNWVmODc2ZjlmMzg2OTkwNzUzM2NhYjg3MDE0NDBm
MjY1YWMwNmZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUu
aApAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEludFNp
emUgY29uc3RyYWluZWRCZXR3ZWVuKGNvbnN0IEludFNpemUmIG1pbiwgY29uc3QgSW50U2l6ZSYg
bWF4KSBjb25zdDsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gV1RGOjpDcmFzaE9uT3Zl
cmZsb3c+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBDcmFzaE9uT3ZlcmZsb3c+CiAgICAg
Q2hlY2tlZDx1bnNpZ25lZCwgVD4gYXJlYSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
Q2hlY2tlZDx1bnNpZ25lZCwgVD4oYWJzKG1fd2lkdGgpKSAqIGFicyhtX2hlaWdodCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
NTY1ZjFjZWJkZjExNjljMzc5MTNmOTJiMGZiMzNjODY3M2QwMWU1Ny4uYTQzNmE1NThhNzk5YTY2
NmE2ZWY2YTRmNWYzODA5NTRkMTcwNjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtODI1LDcgKzgyNSw3IEBAIFJldGFpblB0
cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIo
KQogICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCk7CiB9
CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIqIGxheWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTWVkaWFQbGF5ZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIGxh
eWVyLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wcml2
YXRlLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihsYXllciwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgQVZQbGF5ZXIqIE1lZGlhUGxheWVyOjpv
YmpDQVZGb3VuZGF0aW9uQVZQbGF5ZXIoKSBjb25zdAogCiAjZW5kaWYKIAotYm9vbCBNZWRpYVBs
YXllcjo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNr
LCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCitib29sIE1lZGlhUGxheWVyOjpwZXJmb3JtVGFza0F0
TWVkaWFUaW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUp
CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cGVyZm9ybVRhc2tBdE1lZGlhVGltZShXVEZNb3Zl
KHRhc2spLCB0aW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCmluZGV4IGRiODVhMzNkODdjNTJhMzc3OWM1MmE1MDIxOWFhOGEyNDEyNDM4
ODUuLjViMWUxNzQ1MTNlMDZmYTAxZDUxOTBiNTVlNTA1MzU1NWVmZDc2MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzI1LDcgKzMy
NSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAg
ICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKTsK
LSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciA9IFtdIHsgfSk7CisgICAgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyID0gW10geyB9KTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lKEZsb2F0UmVjdCk7CiAgICAgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJ
bWFnZSgpOwogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eTsKQEAgLTc1
NCw3ICs3NTQsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydCB7
CiBwdWJsaWM6Ci0gICAgdXNpbmcgUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChNZWRpYUVuZ2luZVJlZ2lzdHJhciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyKT47CisgICAgdXNpbmcgUmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoTWVkaWFFbmdpbmVSZWdpc3RyYXIsIE1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik+OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldFJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soUmVnaXN0ZXJSZW1vdGVQbGF5ZXJD
YWxsYmFjayYmKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyRW51bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyRW51bXMuaAppbmRleCBkYWU5OGY5NTRjM2VlMGYyNTQwODNiNTdlNWQ4
YWY3ZjdmZTU0NzRmLi40MDhhMDFjZjMyOWI2YzI5M2FlODFkNGMyNGY1MGJjZDRjYjkyY2I4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVu
dW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJF
bnVtcy5oCkBAIC0xMjksNyArMTI5LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50OwogCiB0ZW1wbGF0
ZSA8Pgogc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5
U3RhdGU+IHsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSBzdGF0ZSkKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUgc3RhdGUp
CiAgICAgewogICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoc3RhdGUp
OwogICAgIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZT4gewogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IExv
Z0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZT4gewotICAg
IHN0YXRpYyBXVEY6OlN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllckVu
dW1zOjpOZXR3b3JrU3RhdGUgc3RhdGUpCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25z
dCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGUgc3RhdGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoc3RhdGUpOwogICAgIH0K
QEAgLTE0NSw3ICsxNDUsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TmV0d29ya1N0YXRlPiB7CiAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1l
bnQ8V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6QnVmZmVyaW5nUG9saWN5PiB7Ci0gICAgc3Rh
dGljIFdURjo6U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6
OkJ1ZmZlcmluZ1BvbGljeSBwb2xpY3kpCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25z
dCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpCdWZmZXJpbmdQb2xpY3kgcG9saWN5KQogICAg
IHsKICAgICAgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHBvbGljeSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaAppbmRleCBjNTAzYzY0YzdkNDk0OGE4ZmRlNGU5NGM2MTc5M2U4MTFmOWIx
MjAyLi5mNWE0MGFiYzhhNzlhNmNlMDY0YjcwMmNkZDBjOWE5YWE2NjNkZDM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpCiAgICAgdmlydHVhbCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVy
OjpWaWRlb0dyYXZpdHkpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5o
CmluZGV4IDdmM2M4MTg4NjU2OTEwYjg0ZmFhNjA2NWJkNmYzMzE1OTE2Mjk0NGIuLjdiOTg3NmFi
MWM3ODU4YjU0YjgwZDkwOGU2YTgwZTU5NjIzZmJlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdHJ1Y3QgUGF0aEVsZW1lbnQg
ewogICAgIFR5cGUgdHlwZTsKIH07CiAKLXVzaW5nIFBhdGhBcHBsaWVyRnVuY3Rpb24gPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgUGF0aEVsZW1lbnQmKT47Cit1c2luZyBQYXRoQXBwbGllckZ1
bmN0aW9uID0gRnVuY3Rpb248dm9pZChjb25zdCBQYXRoRWxlbWVudCYpPjsKIAogY2xhc3MgUGF0
aCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMzcsMTMgKzEzNywxMyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhdGggcG9seWdvblBhdGhGcm9tUG9pbnRzKGNvbnN0IFZlY3Rv
cjxGbG9hdFBvaW50PiYpOwogCiAgICAgYm9vbCBjb250YWlucyhjb25zdCBGbG9hdFBvaW50Jiwg
V2luZFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVybykgY29uc3Q7Ci0gICAgYm9vbCBzdHJva2VDb250
YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYgc3Ryb2tlU3R5bGVBcHBsaWVyKSBjb25zdDsKKyAgICBib29sIHN0cm9rZUNv
bnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29u
dGV4dCYpPiYgc3Ryb2tlU3R5bGVBcHBsaWVyKSBjb25zdDsKIAogICAgIC8vIGZhc3RCb3VuZGlu
Z1JlY3QoKSBzaG91bGQgZXF1YWwgb3IgY29udGFpbiBib3VuZGluZ1JlY3QoKTsgYm91bmRpbmdS
ZWN0KCkKICAgICAvLyBzaG91bGQgcGVyZmVjdGx5IGJvdW5kIHRoZSBwb2ludHMgd2l0aGluIHRo
ZSBwYXRoLgogICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBGbG9hdFJlY3QgZmFzdEJvdW5kaW5nUmVjdCgpIGNvbnN0OwotICAgIEZsb2F0UmVj
dCBzdHJva2VCb3VuZGluZ1JlY3QoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29u
dGV4dCYpPiYgc3Ryb2tlU3R5bGVBcHBsaWVyID0geyB9KSBjb25zdDsKKyAgICBGbG9hdFJlY3Qg
c3Ryb2tlQm91bmRpbmdSZWN0KGNvbnN0IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+
JiBzdHJva2VTdHlsZUFwcGxpZXIgPSB7IH0pIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
c2l6ZV90IGVsZW1lbnRDb3VudCgpIGNvbnN0OwogICAgIGZsb2F0IGxlbmd0aCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCmlu
ZGV4IDY3ODgyYzk0Y2E2OTlhYzRmNjJkOGJmNDAxOTU2MTY0OWNmNmQ2NjkuLmQ3MzhkNzM5ZjRh
NGUwZjI2YmY4ZWUyMTEwMmZlNjk2MGJjZjk5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKQEAgLTUyLDEwICs1MiwxMCBAQCB1c2lu
ZyBQbGF0Zm9ybUxheWVyID0gdm9pZCo7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+Ci11c2luZyBQbGF0Zm9ybUxheWVyQ29udGFpbmVyID0gV1RGOjpS
ZXRhaW5QdHI8UGxhdGZvcm1MYXllcj47Cit1c2luZyBQbGF0Zm9ybUxheWVyQ29udGFpbmVyID0g
UmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+OwogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogdXNp
bmcgUGxhdGZvcm1MYXllckNvbnRhaW5lciA9IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUxheWVy
PjsKICNlbHNlCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotdXNpbmcgUGxhdGZvcm1MYXllckNv
bnRhaW5lciA9IFdURjo6UmVmUHRyPFBsYXRmb3JtTGF5ZXI+OwordXNpbmcgUGxhdGZvcm1MYXll
ckNvbnRhaW5lciA9IFJlZlB0cjxQbGF0Zm9ybUxheWVyPjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRl
eCA0ZjlkMTUzNWE3OTM3Y2YxNTY0ZTRhNGM4Mzk0MmUwMGY2NDUwMjYyLi43OGY5ODZlNTUwN2Yy
ODVhMjdlMzJmZDNkNTNiYzNlMWYxNjI5NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtNjksNyArNjksNyBA
QCBwdWJsaWM6CiAKICAgICBNZWRpYVRpbWUgdG90YWxEdXJhdGlvbigpIGNvbnN0OwogCi0gICAg
dm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQbGF0Zm9ybVRpbWVSYW5nZXM+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaApp
bmRleCBiNzNhNTg0NDE2NzAxZjkwMDcxMDk5Njk4N2ZjYTkzMGQyYWFmZTQ5Li5hNjE3MGIzMjhm
YzQ0YWNlNjkzZGNkYjM1ZWU0ZDNjZTY4NzMzOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogICAgICAgICBpZiAobV9pb1N1cmZhY2UpCiAgICAgICAgICAgICBlbmNvZGVy
IDw8IG1faW9TdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZW5jb2RlciA8PCBXVEY6Ok1hY2hTZW5kUmlnaHQoKTsKKyAgICAgICAgICAgIGVuY29k
ZXIgPDwgTWFjaFNlbmRSaWdodCgpOwogICAgICAgICBlbmNvZGVyIDw8IG1fcm90YXRpb247CiAg
ICAgICAgIGVuY29kZXIgPDwgbV90aW1lOwogICAgICAgICBlbmNvZGVyIDw8IG1fdmlkZW9Gb3Jt
YXQ7CkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJT1N1cmZhY2U+IG1faW9TdXJmYWNlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBtX2ltYWdlQnVmZmVyOwotICAgIFdURjo6TWFjaFNlbmRSaWdodCBtX3NlbmRSaWdo
dDsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwogICAgIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uIG1fcm90YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9
OwogICAgIE1lZGlhVGltZSBtX3RpbWU7CiAgICAgdWludDMyX3QgbV92aWRlb0Zvcm1hdCB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRl
eCAwYzk3NmI4NzUxYmQ2ZWZmMGNhN2FkMjI3ODIzNjYxMjg4YTg4OTAxLi4xNGZkODNlZGUxYTFi
YWNmMTc3ZjMzMWVjYWQxYTQzMDI5M2Y2MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYpOwogICAgIHZvaWQgZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KTsKIAotICAgIHVz
aW5nIERyYXdCdWZmZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChJbWFnZUJ1ZmZlciYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmKT47Ci0gICAgdXNpbmcgRHJhd0lt
YWdlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmKT47Ci0gICAgdXNpbmcgRmlsbFJlY3RDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpPjsKLSAg
ICB1c2luZyBGaWxsUmVjdFdpdGhIb2xlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKT47Ci0gICAgdXNp
bmcgRHJhd1NoYWRvd0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPjsKKyAgICB1c2luZyBEcmF3QnVmZmVyQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYpPjsKKyAgICB1c2lu
ZyBEcmF3SW1hZ2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoSW1hZ2VCdWZmZXImLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmKT47CisgICAgdXNpbmcgRmlsbFJlY3RDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKT47CisgICAg
dXNpbmcgRmlsbFJlY3RXaXRoSG9sZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpPjsKKyAgICB1c2luZyBEcmF3
U2hhZG93Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPjsKIAogICAg
IC8vIERyYXdCdWZmZXJDYWxsYmFjayBpcyBmb3IgZHJhd2luZyBzaGFkb3cgd2l0aG91dCB0aWxp
bmcuCiAgICAgLy8gRHJhd0ltYWdlQ2FsbGJhY2sgYW5kIEZpbGxSZWN0Q2FsbGJhY2sgaXMgZm9y
IGRyYXdpbmcgc2hhZG93IHdpdGggdGlsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCBhOTRiMWMx
OTM4ODQ5MWMwYzkwOTQ5NzNhYzNhZGJkOWE0Yjk4NDdiLi42ODdjNzhjMjgxY2EwNDU0MDQ4NWNj
YmFlMDFkODRjZDYwMzM3MjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtNDUzLDcgKzQ1Myw3IEBA
IHN0YXRpYyBQbGF0Zm9ybVRpbWVSYW5nZXMgcmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1ZmZlcihj
b25zdCBEZWNvZGVPcmRlclNhbXBsZU1hCiAgICAgTWVkaWFUaW1lIGVhcmxpZXN0U2FtcGxlID0g
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogICAgIE1lZGlhVGltZSBsYXRlc3RT
YW1wbGUgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7CiAgICAgdWludDY0X3QgYnl0ZXNSZW1vdmVk
ID0gMDsKLSAgICBhdXRvIGxvZ0lkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50
aWZpZXIoc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nQ2xhc3NOYW1lKCksIGxvZ1ByZWZpeCwgc291
cmNlQnVmZmVyUHJpdmF0ZS0+bG9nSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIGxvZ0lkZW50aWZp
ZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxvZ0Ns
YXNzTmFtZSgpLCBsb2dQcmVmaXgsIHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxvZ0lkZW50aWZpZXIo
KSk7CiAgICAgYXV0byYgbG9nZ2VyID0gc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nZ2VyKCk7CiAg
ICAgYXV0byB3aWxsTG9nID0gbG9nZ2VyLndpbGxMb2coc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9n
Q2hhbm5lbCgpLCBXVEZMb2dMZXZlbDo6RGVidWcpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaAppbmRleCBhZDNj
MWJiNzlhZWRjYWFlM2U3OTdmZDhmYjJkNmFhYTg2ZWQzM2NhLi5kZjdiNzhhMTU0ZjgyOTM5YzE2
NWQ1MzFhZmVlZGFjMGJlYWI4MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUGxhdGZvcm1JbWFnZVB0cikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwg
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSA9
IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQ
bGF0Zm9ybUltYWdlUHRyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmgKaW5kZXggNTJhN2IwODY2Y2QwNzBkMmRkZTg4NGU0NzI4ZWIzNGQ4NTNh
ODczNS4uNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMTAzLDcgKzEw
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsgLy8gRW1wdHkgYW5kIGRlbGV0ZWQgdmFsdWVzIGhhdmUg
bGVuZ3RocyB0aGF0IGFyZSBub3QgZXF1YWwgdG8gYW55IHZhbGlkIGxlbmd0aC4KICAgICB9Owog
Ci0gICAgc3RydWN0IFNtYWxsU3RyaW5nS2V5SGFzaFRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPFNtYWxsU3RyaW5nS2V5PiB7CisgICAgc3RydWN0IFNtYWxsU3RyaW5nS2V5SGFz
aFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxTbWFsbFN0cmluZ0tleT4gewogICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9IHRydWU7CiAgICAg
ICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTbWFsbFN0cmluZ0tleSYga2V5KSB7
IHJldHVybiBrZXkuaXNIYXNoVGFibGVFbXB0eVZhbHVlKCk7IH0KICAgICAgICAgc3RhdGljIGNv
bnN0IGludCBtaW5pbXVtVGFibGVTaXplID0gMTY7CkBAIC0yMjUsNyArMjI1LDcgQEAgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBXaWR0aENhY2hlOjpTbWFsbFN0cmluZ0tleSYgYSwgY29u
c3QgV2lkdGhDYWNoZTo6U20KIHsKICAgICBpZiAoYS5sZW5ndGgoKSAhPSBiLmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFdURjo6ZXF1YWwoYS5jaGFyYWN0ZXJz
KCksIGIuY2hhcmFjdGVycygpLCBhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gZXF1YWwoYS5jaGFy
YWN0ZXJzKCksIGIuY2hhcmFjdGVycygpLCBhLmxlbmd0aCgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKaW5kZXggZWNiOWY2YzA5MzRjNjM2ZDZjYzE1
NTY0ZTg1ZDZiZjVkODM0YTI4Yi4uMGE2MWVmYzA5NmMxY2ZlY2E5OTkzZjllY2FmMWFjNzcyYjg1
YTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
RXh0ZW5zaW9uc0dMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAg
ICBHQ0dMZW51bSBhZGp1c3RXZWJHTDFUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSk7CiAKIHByaXZhdGU6
Ci0gICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYpOworICAgIGJv
b2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGdldEV4dGVu
c2lvbnMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9u
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
VGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaAppbmRleCAzODM1ODVjYzE5YjM5ZDMxYWQ0
Y2Y2ZDY3NWJiMDE5MjkyMWNiOTI2Li4zMDQ3NzA5NzUzNDQ4MTI0ZThmMmRjNjllMmEwMjNlOTc4
MjljZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuaApAQCAtMzcsNyArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB2YWx1ZSB1cG9uIGRlc3RydWN0aW9uLCBtYWtpbmcgaXQg
YW4gYWx0ZXJuYXRpdmUgdG8gY2hlY2tpbmcsIGNsZWFyaW5nLCBhbmQgcmVzZXR0aW5nIGVhY2gg
ZmxhZwogLy8gYXQgYWxsIG9mIGEgYmxvY2sncyBleGl0IHBvaW50cy4KIC8vCi0vLyBCYXNlZCBv
biBXVEY6OlNldEZvclNjb3BlPD4KKy8vIEJhc2VkIG9uIFNldEZvclNjb3BlPD4KIAogY2xhc3Mg
VGVtcG9yYXJ5QU5HTEVTZXR0aW5nIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZW1wb3Jh
cnlBTkdMRVNldHRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApp
bmRleCAxNDk3NDM5MGY0MGIwM2EwY2I2ZTU1OWM5ZTZjMGZlMDk4YTA0MTkxLi5iYzkzZjZmNmE3
YmRkMDFlZmJmNTViNjJiZGI2YTRlNjZlZjkxMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICB2b2lkIHNldExvZ2dlcihXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIpIGZpbmFsOworICAgIHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIpIGZpbmFsOwogI2VuZGlmCiAKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3Vw
cG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODcsMTEgKzg3LDExIEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBXVEY6
OkxvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH07Cisg
ICAgTG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfTsK
ICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVu
dGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4g
IkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyI7IH0KIAotICAgIFJlZlB0cjxXVEY6OkxvZ2dl
cj4gbV9sb2dnZXI7CisgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA1OTdlZmEyNjg0OWI3
NDRkYjc0M2QzNTJjZDFjMDZmMzQxMzc2ZmY5Li5jOTk4ZDlmNjQ3MGU4MGY4ZDRjZGQ1ZTEyNjZm
MDViMTJiZDYxMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrQ29tcGxldGVkKGJvb2wgZmluaXNoZWQpCiAKICAg
ICBtX3NlZWtpbmcgPSBmYWxzZTsKIAotICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBwZW5kaW5n
U2VlazsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IHBlbmRpbmdTZWVrOwogICAgIHN0ZDo6c3dhcChw
ZW5kaW5nU2VlaywgbV9wZW5kaW5nU2Vlayk7CiAKICAgICBpZiAocGVuZGluZ1NlZWspIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaApp
bmRleCA3MTNmNWMzYzMzYzhiNDA3YTE0MjEwNzMzMDA1YWQwNGUxYWFhOWVjLi42MjY3YjgzMzIx
Mjk5YjEzZWE3ZWQyYTQwNWU0Y2JiODVlNDQ4ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCkBAIC0xMTYsNyArMTE2LDcgQEAg
cHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBOb3RpZmljYXRpb24oV1RG
OjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQorICAgICAgICBOb3RpZmljYXRpb24oRnVu
Y3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICAgICAgOiBtX3R5cGUoRnVuY3Rpb25U
eXBlKQogICAgICAgICAgICAgLCBtX2ZpbmlzaGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2Z1
bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQpAQCAtMTI3LDEzICsxMjcsMTMgQEAgcHVibGljOgog
ICAgICAgICBib29sIGlzVmFsaWQoKSB7IHJldHVybiBtX3R5cGUgIT0gTm9uZTsgfQogICAgICAg
ICBNZWRpYVRpbWUgdGltZSgpIHsgcmV0dXJuIG1fdGltZTsgfQogICAgICAgICBib29sIGZpbmlz
aGVkKCkgeyByZXR1cm4gbV9maW5pc2hlZDsgfQotICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQg
KCk+JiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KKyAgICAgICAgRnVuY3Rpb248
dm9pZCAoKT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQogICAgICAgICAKICAg
ICBwcml2YXRlOgogICAgICAgICBUeXBlIG1fdHlwZTsKICAgICAgICAgTWVkaWFUaW1lIG1fdGlt
ZTsKICAgICAgICAgYm9vbCBtX2ZpbmlzaGVkOwotICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQg
KCk+IG1fZnVuY3Rpb247CisgICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKICAg
ICB9OwogCiAgICAgdm9pZCBzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0
aW9uJiYpOwpAQCAtMzMyLDcgKzMzMiw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgTWVk
aWFQbGF5ZXIqIG1fcGxheWVyOwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcGVuZGlu
Z1NlZWs7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdTZWVrOwogCiAgICAgbXV0YWJs
ZSBMb2NrIG1fcXVldWVkTm90aWZpY2F0aW9uc0xvY2s7CiAgICAgRGVxdWU8Tm90aWZpY2F0aW9u
PiBtX3F1ZXVlZE5vdGlmaWNhdGlvbnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3F1ZXVlZE5vdGlm
aWNhdGlvbnNMb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IGJjNjU4N2UyYzg5NjRm
NzFlNWY0YTY1M2IwYmJjYjJkNTY1NDMxYmMuLjE1OWI5MGNkYjQ4ZjdmZTQ0YmI0OWJlMmVjMWMx
YzJmNDMyODY0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMo
KSA9IGRlZmF1bHQ7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExv
Z2dlcihXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpOworICAgIHZvaWQg
c2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpOwogI2VuZGlmCiAK
ICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1BlcnNpc3RhYmxlU3RhdGUoKTsKQEAgLTEyMSw3ICsx
MjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlVW5leHBlY3RlZFJlcXVlc3RzKFZlY3Rv
cjxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+JiYpOwogCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgV1RGOjpMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1f
bG9nZ2VyLmdldCgpOyB9OworICAgIExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4g
bV9sb2dnZXIuZ2V0KCk7IH07CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuICJDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyI7
IH0KICNlbmRpZgpAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYWtQ
dHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPj4gbV9zZXNzaW9u
czsKICAgICBIYXNoU2V0PFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4gbV91bmV4cGVj
dGVkS2V5UmVxdWVzdHM7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRyPFdU
Rjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBj
b25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CiAjZW5kaWYKIH07CkBAIC0x
NDYsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0g
ICAgdm9pZCBzZXRMb2dnZXIoV1RGOjpMb2dnZXImLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHNldExvZ2dlcihMb2dnZXImLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVy
KTsKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCkBAIC0xOTcsNyArMTk3LDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPENETUtleVN0YXR1cz4gcHJvdGVjdGlvblN0
YXR1c0ZvckRpc3BsYXlJRChBVkNvbnRlbnRLZXlSZXF1ZXN0ICosIHN0ZDo6b3B0aW9uYWw8UGxh
dGZvcm1EaXNwbGF5SUQ+KSBjb25zdDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
IFdURjo6TG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsg
fTsKKyAgICBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgp
OyB9OwogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xv
Z0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCB7IHJl
dHVybiAiQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDIjsgfQogI2Vu
ZGlmCkBAIC0yMjYsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdmVTZXNzaW9uRGF0YUNh
bGxiYWNrIG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjazsKIAogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAotICAgIFJlZlB0cjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmUHRyPExv
Z2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0
ciB9OwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oCmluZGV4IGEyOGQ0YzQzMDFlNjcyNTA5Mjk4ZjUzY2U3YzdkMjk0Y2YxNzkzOWYuLjAz
MzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5
cGU7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5jb2RlZERhdGFTdGF0dXNDaGFu
Z2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiYmKSBmaW5h
bDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hhbmdlQ2Fs
bGJhY2soRnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+JiYpIGZpbmFsOwogICAgIEVu
Y29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QgZmluYWw7CiAgICAgV0VC
Q09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKQEAgLTExMyw3ICsxMTMsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJE
ZWxlZ2F0ZT4gbV9sb2FkZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRpb25TZXNz
aW9uVlQ+IG1faW1hZ2VSb3RhdGlvblNlc3Npb247CiAgICAgUmVmPFdlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbj4gbV9kZWNvbXByZXNzaW9uU2Vzc2lvbjsKLSAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQoRW5jb2RlZERhdGFTdGF0dXMpPiBtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdlZENhbGxiYWNr
OworICAgIEZ1bmN0aW9uPHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiBtX2VuY29kZWREYXRhU3Rh
dHVzQ2hhbmdlZENhbGxiYWNrOwogCiAgICAgU2FtcGxlTWFwIG1fc2FtcGxlRGF0YTsKICAgICBE
ZWNvZGVPcmRlclNhbXBsZU1hcDo6aXRlcmF0b3IgbV9jdXJzb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCmluZGV4IDUzZjAyYzE4MzAyZmZkM2FjZGZkYzQzYzk1ZjBiMjNiMTRiNWQ3N2UuLmQ3
MGM1MmY0YmMxYzQwMDgyYjdhMDI0MDJmZTdlOGMyZTI0MTBjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbiogZGVjb21wcmVzc2lvblNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2Rl
Y29tcHJlc3Npb25TZXNzaW9uLmdldCgpOyB9CiAKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVj
dCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24o
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggNGM0YTE2Y2U1
OTZlMTNiYjMyZGRjODU4NDdlOTg2OWY2NjE2ZjJjOS4uYWZlZWM3NzU5OGE1ZTFmNzQxNWNmNTJj
YzNmNmMxOWU2ODViMGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTIxMSw3ICsy
MTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1w
bGUmKSBmaW5hbDsKIAogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1
bGxzY3JlZW5MYXllcigpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3Jt
TGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKIAog
ICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaApp
bmRleCA3Mjc1YWQ0ODBmZmMyNTNiZDMzYmI2MjY3NTI4MmZhMzljYTAxY2I4Li5jMjJlNzI1Zjg1
NDZmMjc4ZmY2NTdhNWY0YzU3MmI5Mjk1MTVlZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIGludmFs
aWRhdGUoKSBmaW5hbDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExv
Z2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqIGlkZW50aWZpZXIpIGZpbmFsOwor
ICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqIGlkZW50aWZpZXIp
IGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIGRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZB
c3NldCopOwpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgV1RGOjpMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0
IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3QgTG9nZ2VyKiBsb2dnZXJQdHIo
KSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICNlbmRpZgogCkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQg
eyBmYWxzZSB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRyPGNvbnN0
IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dl
cjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CiAjZW5kaWYK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCmlu
ZGV4IGRiMGMwNzk3NmZjMjE1YjY0ZTJkMDJlZjczYjY2YTE5MjI0YWQ4NmIuLjMwY2NlY2EwOWEy
NmVmN2YyNTFjODRkOTAxM2ExMDlhMjAzOTc4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBXRUJDT1JFX0VYUE9SVCBQ
bGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IGZpbmFsOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdl
UHRyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKFBsYXRmb3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIs
IFBsYXRmb3JtSW1hZ2VQdHIpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCB2
aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1h
Z2VQdHIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMmQyZjExYTQ3ZDY0NmRlZDkwMTFiNWIy
ZThlM2UyM2Y2Zjc2NjFlZS4uNmY3MDVlZmI2ZGQ1MjM3YjYzN2YwYjMzYjZjNjRhNTY0MGJhMDIz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucygpCiAKICAgICAgICAgICAgIExheWVyUHJvcGVydHlBbmlt
YXRpb24qIGVhcmxpZXN0QW5pbWF0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4+IGNhQW5pbWF0aW9uczsKLSAgICAgICAgICAgIGZv
ciAoYXV0byogYW5pbWF0aW9uIDogV1RGOjptYWtlUmV2ZXJzZWRSYW5nZShhbmltYXRpb25zKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvKiBhbmltYXRpb24gOiBtYWtlUmV2ZXJzZWRSYW5nZShh
bmltYXRpb25zKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGJlZ2luVGltZSA9IGFuaW1h
dGlvbi0+Y29tcHV0ZWRCZWdpblRpbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIWVh
cmxpZXN0QW5pbWF0aW9uIHx8ICplYXJsaWVzdEFuaW1hdGlvbi0+Y29tcHV0ZWRCZWdpblRpbWUo
KSA+ICpiZWdpblRpbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBlYXJsaWVzdEFuaW1hdGlv
biA9IGFuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5oCmluZGV4IDVkNGFhMGI1YTcz
MjkyMTExZjIyNDI3ZGM2YzBhYmI2NWM0MzBlZmUuLjRiMzM1NmMzNTVlNDgwYzgwMDI5NDY3ZTEx
ZDdkMDM4OGNlNWVlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uaApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBDYWlyb1N0YXRlOwogICAgIENhaXJvU3RhdGUq
IG1fY2Fpcm9TdGF0ZTsKLSAgICBXVEY6OlZlY3RvcjxDYWlyb1N0YXRlPiBtX2NhaXJvU3RhdGVT
dGFjazsKKyAgICBWZWN0b3I8Q2Fpcm9TdGF0ZT4gbV9jYWlyb1N0YXRlU3RhY2s7CiAKICAgICAv
LyBUcmFuc3BhcmVuY3kgbGF5ZXJzLgogICAgIFZlY3RvcjxmbG9hdD4gbV9sYXllcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggYWY1OWEwMWU3YWZlMWY1M2E4ZmM3ZjBhZDNmMGI0OTcx
NTA0NThiZi4uOTIzOGVhODZkYjY0ODUxMDU5MWExNzVmMjAwNzlmODZjYTFkNjY1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIFN0cmluZyBJbWFnZUJ1ZmZl
ckNHQmFja2VuZDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9u
YWw8ZG91CiAKIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6Y3JlYXRlRmx1c2hlcigpCiB7Ci0gICAgcmV0dXJuIFdURjo6
bWFrZVVuaXF1ZTxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyQ0c+KGNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGhyZWFkU2FmZUltYWdlQnVm
ZmVyRmx1c2hlckNHPihjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwogfQogCiB2b2lkIElt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpwcmVwYXJlVG9EcmF3SW50b0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1
YmltYWdlQ2FjaGVXaXRoVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaAppbmRleCBkZTExZTMwZjFkNGMxMjVjZWE2ODY3
NDEwY2U4OGNkZWYxMTMwODhhLi45MWQyMzNhYzRhMTRhY2RkZjg1NWJkYzRmYTkwN2VmNGY0YzMy
MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUhhc2ggewogICAgICAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBXVEY6OnBhaXJJbnRIYXNoKFB0ckhhc2g8Q0dJbWFnZVJlZj46
Omhhc2goaW1hZ2UpLAorICAgICAgICAgICAgcmV0dXJuIHBhaXJJbnRIYXNoKFB0ckhhc2g8Q0dJ
bWFnZVJlZj46Omhhc2goaW1hZ2UpLAogICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmVjdC54KCkpIDw8IDE2KSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LnkoKSkp
OwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFN1YmltYWdl
Q2FjaGVFbnRyeSYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaAppbmRleCA1ZjkyNTA2NDkyMTIwNjg0NDY1M2I0YjVlYTcyZTVm
Yzg0YjhjYjRlLi41NjUyNDc4MjJkYmEyOWY3NjAwYjk0MDdlNmY0YWNiOGMxYTA2YWFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
aApAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoSU9TVVJGQUNFX0FDQ0VM
RVJBVE9SKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGFsbG93Q29udmVyc2lvbkZy
b21Gb3JtYXRUb0Zvcm1hdChGb3JtYXQsIEZvcm1hdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgY29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZh
Y2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQsIFdURjo6RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SU9TdXJmYWNlPik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiYm
IGluU3VyZmFjZSwgRm9ybWF0LCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpJT1N1cmZhY2U+KT4mJik7CiAjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1Ip
CiAKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKaW5kZXgg
MTIyMjYwMzdjYjE1MDM3NGYwMTBlYjMwMDYzMWMxNDUxMGNiODEyZC4uOTQ0ODhhMzIxNzBlYWNk
MDQ1OTdmNTM1ZWIzMDY1NmQ4NTk3ZjYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiBjb21wdXRlTWVkaWFDYXBh
YmlsaXRpZXNJbmZvKGNvbnN0IE0KICAgICByZXR1cm4gaW5mbzsKIH0KIAotdm9pZCBjcmVhdGVN
ZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29hKE1lZGlhRGVjb2RpbmdDb25maWd1
cmF0aW9uJiYgY29uZmlndXJhdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0
aWVzRGVjb2RpbmdJbmZvJiYpPiYmIGNhbGxiYWNrKQordm9pZCBjcmVhdGVNZWRpYVBsYXllckRl
Y29kaW5nQ29uZmlndXJhdGlvbkNvY29hKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYgY29u
ZmlndXJhdGlvbiwgRnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYm
KT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGluZm8gPSBjb21wdXRlTWVkaWFDYXBhYmlsaXRp
ZXNJbmZvKGNvbmZpZ3VyYXRpb24pOwogICAgIGlmICghaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnlDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
TWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmgKaW5kZXggNTU5M2ZhNDcwYmJk
MDQ5ZjAyNzVkNjAxYzdkZTJmNzBiOGY1Mzg1Yi4uNmQ2Mjk0OWFhOGJkYzRkZTEzMjRjZWExMzg0
ZmE0ODNmMDExODhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0
aW9uRmFjdG9yeUNvY29hLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RydWN0IE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvOwogc3RydWN0IE1lZGlhRGVjb2Rp
bmdDb25maWd1cmF0aW9uOwogCi1leHRlcm4gdm9pZCBjcmVhdGVNZWRpYVBsYXllckRlY29kaW5n
Q29uZmlndXJhdGlvbkNvY29hKE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYsIFdURjo6RnVu
Y3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYmKT4mJik7CitleHRlcm4g
dm9pZCBjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29hKE1lZGlhRGVj
b2RpbmdDb25maWd1cmF0aW9uJiYsIEZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNv
ZGluZ0luZm8mJik+JiYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggYzIxMDFh
NjkyOWFhZWY5MDk2NDBiNzkxOGJmMjVhZTY2ZWI5N2EzOC4uYTY1NjY0OWM1YjY0N2FmZmE4ZDEy
ODM2OTEwNWZlZDA3YTk5NWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTg2LDcgKzg2
LDcgQEAgcHVibGljOgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCi0gICAgdXNpbmcg
Q2FsbE9uQ2xpZW50VGhyZWFkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYpPjsKKyAgICB1c2luZyBDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT47CiAgICAgdm9pZCBzZXRDYWxsT25D
bGllbnRUaHJlYWRDYWxsYmFjayhDYWxsT25DbGllbnRUaHJlYWRDYWxsYmFjayYmKTsKIAogICAg
IC8vIGFwcGVuZERhdGEgd2lsbCBiZSBjYWxsZWQgb24gdGhlIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDIGRhdGEgcGFyc2VyIHF1ZXVlLgpAQCAtOTksNDAgKzk5LDQwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWlu
aW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIoY29uc3QgV1RGOjpMb2dnZXImLCBjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihjb25z
dCBMb2dnZXImLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKSA9IDA7CiAjZW5kaWYKIAogICAg
IC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICB1c2luZyBJbml0aWFs
aXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlv
blNlZ21lbnQ7Ci0gICAgdXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJik+OworICAgIHVzaW5n
IERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEluaXRp
YWxpemF0aW9uU2VnbWVudCYmKT47CiAgICAgdm9pZCBzZXREaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YUNhbGxiYWNrKERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRo
ZSBtYWluIHRocmVhZC4KLSAgICB1c2luZyBEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCBlcnJvckNvZGUpPjsKKyAgICB1
c2luZyBEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQodWludDY0X3QgZXJyb3JDb2RlKT47CiAgICAgdm9pZCBzZXREaWRFbmNvdW50ZXJFcnJvckR1
cmluZ1BhcnNpbmdDYWxsYmFjayhEaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFj
ayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmdDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFdpbGwg
YmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB1c2luZyBEaWRQcm92aWRlTWVkaWFE
YXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50
NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk+OworICAgIHVzaW5nIERpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmPE1lZGlhU2FtcGxlPiYm
LCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk+OwogICAgIHZvaWQg
c2V0RGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKERpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFj
ayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKICAgICB9CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBz
eW5jaHJvbm91c2x5IG9uIHRoZSBwYXJzZXIgdGhlYWQuCi0gICAgdXNpbmcgV2lsbFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCB0cmFja0lEKT47CisgICAgdXNpbmcgV2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQodWludDY0X3QgdHJhY2tJRCk+OwogICAgIHZvaWQgc2V0V2lsbFByb3Zp
ZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayhX
aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENh
bGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBtX3dpbGxQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKICAgICB9CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5IG9u
IHRoZSBwYXJzZXIgdGhlYWQuCi0gICAgdXNpbmcgRGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KFJlZjxVaW50OEFycmF5PiYmLCB1aW50NjRfdCB0cmFja0lEKT47CisgICAgdXNpbmcgRGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRENhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChSZWY8VWludDhBcnJheT4mJiwgdWludDY0X3QgdHJhY2tJRCk+Owog
ICAgIHZvaWQgc2V0RGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRENhbGxiYWNrKERpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSURDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9k
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKaW5kZXggNzJlMDk5MzgxYzM2OTBkYjdjYjY4M2Y3MzZmZmQ3YmMzNThkZmYyNy4uYmY0NzM3
ZWYwNTRmZGRjMjViNDlhZTJjMzJhMjQ5NTgwZmQ5MDg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKQEAgLTU4OSw4ICs1ODksOCBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBw
b3J0c1R5cGUgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChj
bwogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1
cHBvcnRlZDsKIAogICAgIGF1dG8gY29udGFpbmVyVHlwZSA9IHR5cGUuY29udGFpbmVyVHlwZSgp
OwotICAgIGJvb2wgaXNBdWRpb0NvbnRhaW5lclR5cGUgPSBXVEY6OmVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UoY29udGFpbmVyVHlwZSwgImF1ZGlvL3dlYm0iKTsKLSAgICBib29sIGlzVmlkZW9Db250
YWluZXJUeXBlID0gV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnRhaW5lclR5cGUsICJ2
aWRlby93ZWJtIik7CisgICAgYm9vbCBpc0F1ZGlvQ29udGFpbmVyVHlwZSA9IGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoY29udGFpbmVyVHlwZSwgImF1ZGlvL3dlYm0iKTsKKyAgICBib29sIGlzVmlk
ZW9Db250YWluZXJUeXBlID0gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb250YWluZXJUeXBlLCAi
dmlkZW8vd2VibSIpOwogICAgIGlmICghaXNBdWRpb0NvbnRhaW5lclR5cGUgJiYgIWlzVmlkZW9D
b250YWluZXJUeXBlKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlOjpJc05vdFN1cHBvcnRlZDsKICAgICAKQEAgLTY3MywxMCArNjczLDEwIEBAIFJlZlB0cjxT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNPiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpjcmVhdGUoY29u
c3QgQ29udGVudFR5cGUmCiB9CiAKIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk0oKQotICAgIDogbV9yZWFkZXIoV1RGOjptYWtlVW5pcXVlUmVmPFNlZ21lbnRS
ZWFkZXI+KCkpCisgICAgOiBtX3JlYWRlcihtYWtlVW5pcXVlUmVmPFNlZ21lbnRSZWFkZXI+KCkp
CiB7CiAgICAgaWYgKGlzV2VibVBhcnNlckF2YWlsYWJsZSgpKQotICAgICAgICBtX3BhcnNlciA9
IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2VibVBhcnNlcj4oKTsKKyAg
ICAgICAgbV9wYXJzZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXZWJtUGFy
c2VyPigpOwogfQogCiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjp+U291cmNlQnVmZmVyUGFyc2Vy
V2ViTSgpCkBAIC05MjEsNyArOTIxLDcgQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uRWJtbChjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb25zdCBFYm0KICAgICAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpJbnZhbGlkRG9jVHlwZSkp
OwogCiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9IHRydWU7Ci0gICAg
bV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPEluaXRpYWxpemF0aW9uU2VnbWVudD4oKTsKKyAgICBtX2luaXRpYWxpemF0aW9uU2Vn
bWVudCA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEluaXRpYWxpemF0aW9uU2Vn
bWVudD4oKTsKICAgICAvLyBUT0RPOiBTZXR0aW5nIHRoaXMgdG8gZmFsc2UgaGVyZSwgd2lsbCBw
cmV2ZW50IGFkZGluZyBhIG5ldyBtZWRpYSBzZWdtZW50IHNob3VsZCBhCiAgICAgLy8gcGFydGlh
bCBpbml0IHNlZ21lbnQgYmUgZW5jb3VudGVyZWQgYWZ0ZXIgYSBjYWxsIHRvIHNvdXJjZUJ1ZmZl
ci5hYm9ydCgpLgogICAgIC8vIEl0J3MgcHJvYmFibHkgZmluZSBhcyBuby1vbmUgaW4gdGhlaXIg
cmlnaHQgbWluZCBzaG91bGQgc2VuZCBwYXJ0aWFsIGluaXQgc2VnbWVudCBvbmx5CkBAIC0xMjA4
LDcgKzEyMDgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnByb3ZpZGVNZWRpYURh
dGEoUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBzYW1wbAogICAgIH0pOwogfQogCi0jZGVm
aW5lIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoLi4uKSBpZiAocGFyc2VyKCkubG9nZ2Vy
UHRyKCkpIHBhcnNlcigpLmxvZ2dlclB0cigpLT5lcnJvcihsb2dDaGFubmVsKCksIFdURjo6TG9n
Z2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFzc05hbWUoKSwgX19mdW5jX18sIHBhcnNlcigp
LmxvZ0lkZW50aWZpZXIoKSksIF9fVkFfQVJHU19fKQorI2RlZmluZSBQQVJTRVJfTE9HX0VSUk9S
X0lGX1BPU1NJQkxFKC4uLikgaWYgKHBhcnNlcigpLmxvZ2dlclB0cigpKSBwYXJzZXIoKS5sb2dn
ZXJQdHIoKS0+ZXJyb3IobG9nQ2hhbm5lbCgpLCBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKGxv
Z0NsYXNzTmFtZSgpLCBfX2Z1bmNfXywgcGFyc2VyKCkubG9nSWRlbnRpZmllcigpKSwgX19WQV9B
UkdTX18pCiAKIFJldGFpblB0cjxDTUJsb2NrQnVmZmVyUmVmPiBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpUcmFja0RhdGE6OmNvbnRpZ3VvdXNDb21wbGV0ZUJsb2NrQnVmZmVyKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgK
aW5kZXggMGIyZWFiMmQwNTI1ZjZlNDg2ZGUxYzA0NjAzNDc5OGE5NDVhNDc1ZS4uYzE5ZTdmN2Qz
ZTlkNjM0ZGM1YjdkMTcwYmZjODFiMzdjZTIyMjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uaApAQCAtODMsMTAgKzgzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGZsdXNoUGVuZGlu
Z0F1ZGlvQnVmZmVycygpOwogICAgIHZvaWQgc2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24o
ZmxvYXQpOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IFdU
Rjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCogaWRlbnRpZmll
cikgZmluYWw7CiAKICAgICB2b2lkIHByb3ZpZGVNZWRpYURhdGEoUmV0YWluUHRyPENNU2FtcGxl
QnVmZmVyUmVmPiwgdWludDY0X3QsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBieXRlUmFuZ2VPZmZz
ZXQpOwotICAgIHVzaW5nIERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQodWludDY0X3QgdHJhY2tJRCwgY29uc3QgTWVkaWFUaW1lJiBkaXNjYXJkUGFkZGlu
Zyk+OworICAgIHVzaW5nIERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IE1lZGlhVGltZSYgZGlzY2FyZFBhZGRpbmcpPjsK
ICAgICB2b2lkIHNldERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2soRGlkUGFyc2VUcmltbWlu
Z0RhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQYXJzZVRyaW1t
aW5nRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC0yNDgsNyArMjQ4LDcgQEAg
cHVibGljOgogICAgICAgICBmbG9hdCBtX21pbmltdW1TYW1wbGVEdXJhdGlvbiB7IDIgfTsKICAg
ICB9OwogCi0gICAgY29uc3QgV1RGOjpMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJu
IG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3QgTG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7
IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKQEAgLTI5Myw3
ICsyOTMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1fcmV3aW5k
VG9Qb3NpdGlvbjsKICAgICBmbG9hdCBtX21pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9uIHsgMiB9
OwogCi0gICAgUmVmUHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8
Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIg
eyBudWxscHRyIH07CiAgICAgdWludDY0X3QgbV9uZXh0Q2hpbGRJZGVudGlmaWVyIHsgMCB9Owog
ICAgIERpZFBhcnNlVHJpbW1pbmdEYXRhQ2FsbGJhY2sgbV9kaWRQYXJzZVRyaW1taW5nRGF0YUNh
bGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVlA5VXRpbGl0aWVzQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKaW5kZXggNzQzYmU0NTVmM2JmNjZiNGZmZGQ0ODZj
MjMxNGYyODE1Y2FmNWI4OC4uOTQxMGE3YzQ3OTYzNDcwNGViNTljOTk5NjAzNDg0NGI2OWE4ODc2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5
VXRpbGl0aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2hhcmR3YXJlRGVjb2RlckRpc2FibGVkOwog
ICAgIHN0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YU92ZXJyaWRlcz4gbV9zY3JlZW5TaXplQW5kU2Nh
bGU7Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fY29uZmlndXJhdGlvbkNoYW5nZWRDYWxs
YmFjazsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fY29uZmlndXJhdGlvbkNoYW5nZWRDYWxsYmFj
azsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgKaW5kZXggNTYwZWU4MGJhNDQ3
YzkwNWFkNDNjNTcxNGFiNzhlMDk3ZGQ5ZGVkNy4uZmIxNGQzYmJjZTk5NTExZDQzMDFmMTI1MWI3
MDVmMmRlNGRkNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgKQEAgLTczLDcgKzcz
LDcgQEAgcHJpdmF0ZToKICAgICBVbnNhZmVQb2ludGVyPElPU3VyZmFjZVJlZj4gbV9sYXN0U3Vy
ZmFjZTsKICAgICB1aW50MzJfdCBtX2xhc3RTdXJmYWNlU2VlZCB7IDAgfTsKIAotICAgIHVzaW5n
IFRleHR1cmVTZWVkTWFwID0gSGFzaE1hcDxHQ0dMdWludCwgdW5zaWduZWQsIFdURjo6SW50SGFz
aDxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+
PjsKKyAgICB1c2luZyBUZXh0dXJlU2VlZE1hcCA9IEhhc2hNYXA8R0NHTHVpbnQsIHVuc2lnbmVk
LCBJbnRIYXNoPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxH
Q0dMdWludD4+OwogICAgIFRleHR1cmVTZWVkTWFwIG1fbGFzdFRleHR1cmVTZWVkOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggZGZmNDE0NDI2MTk2N2JmZThkZTJkZWM5MmM2
ZjkzOTgzMmRlMTdlOC4uODNmY2I4NDhmNDE4MmM3NDMxOWYzMGI2ODUwZTUxNGFlNWM0NmRlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKICNpZiAhZGVmaW5lZChOREVCVUcp
IHx8ICFMT0dfRElTQUJMRUQKLVdURjo6Q1N0cmluZyBEaXNwbGF5TGlzdDo6ZGVzY3JpcHRpb24o
KSBjb25zdAorQ1N0cmluZyBEaXNwbGF5TGlzdDo6ZGVzY3JpcHRpb24oKSBjb25zdAogewogICAg
IFRleHRTdHJlYW0gdHM7CiAgICAgdHMgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmlu
ZGV4IDVjYjEzZGRiYmJjYzFlNzY1NDA0Njk5M2Y5ZGIwMmJlOWFjOTc0YTQuLjEzY2Q1ZTdjNGQ1
OTlmZjIzMWQ4ZDU4YWQ1NGZhOTc2MmUzZDQzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKICNpZiAh
ZGVmaW5lZChOREVCVUcpIHx8ICFMT0dfRElTQUJMRUQKLSAgICBXVEY6OkNTdHJpbmcgZGVzY3Jp
cHRpb24oKSBjb25zdDsKKyAgICBDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkdW1wKCkgY29uc3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKaW5kZXggNDZlOWZhODZhYWI2YmE0NDk1Y2M0NmFk
Yjc2YWY0NjdmZTViYTM1OC4uODhiNmE4YjI2ZjA1NDU5ZWRlNmQzNmRhZDM2ZmRkM2I0MmRlZDY5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCkBAIC01Miw4
ICs1Miw4IEBAIHB1YmxpYzoKICAgICBJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4m
JiBiYWNrZW5kKQogICAgICAgICA6IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyKHBhcmFtZXRlcnMs
IFdURk1vdmUoYmFja2VuZCkpCiAgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChsb2dpY2FsU2l6
ZSgpLCBiYXNlVHJhbnNmb3JtKCkpCi0gICAgICAgICwgbV93cml0aW5nQ2xpZW50KFdURjo6bWFr
ZVVuaXF1ZTxJbk1lbW9yeURpc3BsYXlMaXN0OjpXcml0aW5nQ2xpZW50PigpKQotICAgICAgICAs
IG1fcmVhZGluZ0NsaWVudChXVEY6Om1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVh
ZGluZ0NsaWVudD4oKSkKKyAgICAgICAgLCBtX3dyaXRpbmdDbGllbnQobWFrZVVuaXF1ZTxJbk1l
bW9yeURpc3BsYXlMaXN0OjpXcml0aW5nQ2xpZW50PigpKQorICAgICAgICAsIG1fcmVhZGluZ0Ns
aWVudChtYWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ+KCkpCiAg
ICAgewogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuc2V0SXRlbUJ1ZmZl
cldyaXRpbmdDbGllbnQobV93cml0aW5nQ2xpZW50LmdldCgpKTsKICAgICAgICAgbV9kcmF3aW5n
Q29udGV4dC5kaXNwbGF5TGlzdCgpLnNldEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KG1fcmVhZGlu
Z0NsaWVudC5nZXQoKSk7CkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBJbWFnZUJ1ZmZl
cihjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFJlY29y
ZGVySW1wbDo6RGVsZWdhdGUqIGRlbGVnYXRlID0gbnVsbHB0cikKICAgICAgICAgOiBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcihwYXJhbWV0ZXJzKQogICAgICAgICAsIG1fZHJhd2luZ0NvbnRleHQo
bG9naWNhbFNpemUoKSwgYmFzZVRyYW5zZm9ybSgpLCBkZWxlZ2F0ZSkKLSAgICAgICAgLCBtX3dy
aXRpbmdDbGllbnQoV1RGOjptYWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OldyaXRpbmdD
bGllbnQ+KCkpCi0gICAgICAgICwgbV9yZWFkaW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxJbk1l
bW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50PigpKQorICAgICAgICAsIG1fd3JpdGluZ0Ns
aWVudChtYWtlVW5pcXVlPEluTWVtb3J5RGlzcGxheUxpc3Q6OldyaXRpbmdDbGllbnQ+KCkpCisg
ICAgICAgICwgbV9yZWFkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SW5NZW1vcnlEaXNwbGF5TGlzdDo6
UmVhZGluZ0NsaWVudD4oKSkKICAgICB7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxh
eUxpc3QoKS5zZXRJdGVtQnVmZmVyV3JpdGluZ0NsaWVudChtX3dyaXRpbmdDbGllbnQuZ2V0KCkp
OwogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuc2V0SXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQobV9yZWFkaW5nQ2xpZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1l
bW9yeURpc3BsYXlMaXN0LmNwcAppbmRleCBlY2E1MzU4NjI5YjAyN2EzNmVkODdlNjlkNDM5ODAx
NDdlMTY3YmYzLi44ZWIzYjJiYzBjZjE5ZWIyMzE4ZTQ1YTllODZhNTE5Mzk0NDIwMGYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5N
ZW1vcnlEaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCkBAIC01Miw4ICs1Miw4IEBA
IHN0ZDo6b3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIEluTWVtb3J5RGlz
cGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ6CiB9CiAKIEluTWVtb3J5RGlzcGxheUxpc3Q6OkluTWVt
b3J5RGlzcGxheUxpc3QoKQotICAgIDogbV93cml0aW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxX
cml0aW5nQ2xpZW50PigpKQotICAgICwgbV9yZWFkaW5nQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxS
ZWFkaW5nQ2xpZW50PigpKQorICAgIDogbV93cml0aW5nQ2xpZW50KG1ha2VVbmlxdWU8V3JpdGlu
Z0NsaWVudD4oKSkKKyAgICAsIG1fcmVhZGluZ0NsaWVudChtYWtlVW5pcXVlPFJlYWRpbmdDbGll
bnQ+KCkpCiB7CiAgICAgc2V0SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQobV93cml0aW5nQ2xpZW50
LmdldCgpKTsKICAgICBzZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudChtX3JlYWRpbmdDbGllbnQu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCAwOGU4NWEwOGFhMDFiMDgxMjIzZjM2
ZWJiNmJiYjhhYjM2Mzk0MzY1Li4wZjZlZTg3Zjk1ZTc1NzUxODYzZmQyZTVmNTQ5ZTc0ZDk3Mjlk
YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIGlubGluZSB2
b2lkIGFjY2VsZXJhdGVCb3hCbHVyKFVpbnQ4Q2xhbXBlZEFycmF5JiBpb0J1ZmZlciwgVWludDhD
bGFtcGVkQXJyYXkmIHRlCiAgICAgdkltYWdlQm94Q29udm9sdmVfQVJHQjg4ODgoJmVmZmVjdElu
QnVmZmVyLCAmZWZmZWN0T3V0QnVmZmVyLCB0bXBCdWZmZXIsIDAsIDAsIGtlcm5lbFNpemUsIGtl
cm5lbFNpemUsIDAsIGt2SW1hZ2VFZGdlRXh0ZW5kKTsKICAgICB2SW1hZ2VCb3hDb252b2x2ZV9B
UkdCODg4OCgmZWZmZWN0T3V0QnVmZmVyLCAmZWZmZWN0SW5CdWZmZXIsIHRtcEJ1ZmZlciwgMCwg
MCwga2VybmVsU2l6ZSwga2VybmVsU2l6ZSwgMCwga3ZJbWFnZUVkZ2VFeHRlbmQpOwogICAgIHZJ
bWFnZUJveENvbnZvbHZlX0FSR0I4ODg4KCZlZmZlY3RJbkJ1ZmZlciwgJmVmZmVjdE91dEJ1ZmZl
ciwgdG1wQnVmZmVyLCAwLCAwLCBrZXJuZWxTaXplLCBrZXJuZWxTaXplLCAwLCBrdkltYWdlRWRn
ZUV4dGVuZCk7Ci0gICAgV1RGOjpmYXN0RnJlZSh0bXBCdWZmZXIpOworICAgIGZhc3RGcmVlKHRt
cEJ1ZmZlcik7CiAKICAgICAvLyBUaGUgZmluYWwgcmVzdWx0IHNob3VsZCBiZSBzdG9yZWQgaW4g
aW9CdWZmZXIuCiAgICAgQVNTRVJUKGlvQnVmZmVyLmxlbmd0aCgpID09IHRlbXBCdWZmZXIubGVu
Z3RoKCkpOwpAQCAtMzk5LDcgKzM5OSw3IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpw
bGF0Zm9ybUFwcGx5KFVpbnQ4Q2xhbXBlZEFycmF5JiBpb0J1ZmZlciwgVWludDhDbGFtCiAgICAg
aW50IG9wdGltYWxUaHJlYWROdW1iZXIgPSAocGFpbnRTaXplLndpZHRoKCkgKiBwYWludFNpemUu
aGVpZ2h0KCkpIC8gKHNfbWluaW1hbFJlY3REaW1lbnNpb24gKyBleHRyYUhlaWdodCAqIHBhaW50
U2l6ZS53aWR0aCgpKTsKIAogICAgIGlmIChvcHRpbWFsVGhyZWFkTnVtYmVyID4gMSkgewotICAg
ICAgICBXVEY6OlBhcmFsbGVsSm9iczxQbGF0Zm9ybUFwcGx5UGFyYW1ldGVycz4gcGFyYWxsZWxK
b2JzKCZwbGF0Zm9ybUFwcGx5V29ya2VyLCBvcHRpbWFsVGhyZWFkTnVtYmVyKTsKKyAgICAgICAg
UGFyYWxsZWxKb2JzPFBsYXRmb3JtQXBwbHlQYXJhbWV0ZXJzPiBwYXJhbGxlbEpvYnMoJnBsYXRm
b3JtQXBwbHlXb3JrZXIsIG9wdGltYWxUaHJlYWROdW1iZXIpOwogCiAgICAgICAgIGludCBqb2Jz
ID0gcGFyYWxsZWxKb2JzLm51bWJlck9mSm9icygpOwogICAgICAgICBpZiAoam9icyA+IDEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVM
aWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TGlnaHRpbmcuY3BwCmluZGV4IGRmMTc2ZjhlMDcwYTQxOGMyMDg1MTgwOTBlZTdhNmNhMTEzZTU2
ZjUuLjY1OWIxMDU1ZjYxZWFhYmM1ZjI5OTkxZGEwZGExYTU4NTA3MWFlOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5n
LmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseUdl
bmVyaWMoY29uc3QgTGlnaHRpbmdEYXRhJiBkYXRhLCBjb25zdCBMaWdodFNvdXJjCiAgICAgdW5z
aWduZWQgb3B0aW1hbFRocmVhZE51bWJlciA9IHN0ZDo6bWluPHVuc2lnbmVkPigoKGRhdGEud2lk
dGhEZWNyZWFzZWRCeU9uZSAtIDEpICogcm93c1RvUHJvY2VzcykgLyBzX21pbmltYWxSZWN0RGlt
ZW5zaW9uLCBtYXhOdW1UaHJlYWRzKTsKICAgICBpZiAob3B0aW1hbFRocmVhZE51bWJlciA+IDEp
IHsKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBwYXJhbGxlbCBqb2JzCi0gICAgICAgIFdURjo6UGFy
YWxsZWxKb2JzPFBsYXRmb3JtQXBwbHlHZW5lcmljUGFyYW1ldGVycz4gcGFyYWxsZWxKb2JzKCZw
bGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlciwgb3B0aW1hbFRocmVhZE51bWJlcik7CisgICAgICAg
IFBhcmFsbGVsSm9iczxQbGF0Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnM+IHBhcmFsbGVsSm9i
cygmcGxhdGZvcm1BcHBseUdlbmVyaWNXb3JrZXIsIG9wdGltYWxUaHJlYWROdW1iZXIpOwogCiAg
ICAgICAgIC8vIEZpbGwgdGhlIHBhcmFtZXRlciBhcnJheQogICAgICAgICBpbnQgam9iID0gcGFy
YWxsZWxKb2JzLm51bWJlck9mSm9icygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAppbmRleCAwZmZmY2QwNjQzOTZkOGY0
YjY0MDgyMjY5Y2MyMDc0ZjdjOWRiZGJjLi5iMGJiNzBhMTRkMTc0OTUwNjczN2U4OGUwNTE0ZWU3
OTY4MjBhNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTGlnaHRpbmcuaApAQCAtMTE3LDkgKzExNyw2IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgaW5saW5lIEludFNpemUgYm90dG9tUmlnaHROb3JtYWwoaW50IG9mZnNldCkgY29uc3Q7
CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci0gICAgZnJpZW5kIGNsYXNz
IFBhcmFsbGVsSm9iczsKLQogICAgIHN0cnVjdCBQbGF0Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRl
cnMgewogICAgICAgICBGRUxpZ2h0aW5nKiBmaWx0ZXI7CiAgICAgICAgIExpZ2h0aW5nRGF0YSBk
YXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1vcnBob2xvZ3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuY3BwCmluZGV4IDhhN2U1YjY2N2FiNzczYjkwYjg5MGUzODM4NjM5
MzU2MmI5ZDhkZjUuLjZhZTNkOTg5ODY2MjZlMDdjMDk0YzU4NmYzMTk4YzljNThkYWVkNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3Jw
aG9sb2d5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTW9ycGhvbG9neS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEZFTW9ycGhvbG9neTo6
cGxhdGZvcm1BcHBseShjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSkKICAgICB1bnNp
Z25lZCBtYXhOdW1UaHJlYWRzID0gcGFpbnRpbmdEYXRhLmhlaWdodCAvIDg7CiAgICAgdW5zaWdu
ZWQgb3B0aW1hbFRocmVhZE51bWJlciA9IHN0ZDo6bWluPHVuc2lnbmVkPigocGFpbnRpbmdEYXRh
LndpZHRoICogcGFpbnRpbmdEYXRhLmhlaWdodCAqIGtlcm5lbEZhY3RvcikgLyBtaW5pbWFsQXJl
YSwgbWF4TnVtVGhyZWFkcyk7CiAgICAgaWYgKG9wdGltYWxUaHJlYWROdW1iZXIgPiAxKSB7Ci0g
ICAgICAgIFdURjo6UGFyYWxsZWxKb2JzPFBsYXRmb3JtQXBwbHlQYXJhbWV0ZXJzPiBwYXJhbGxl
bEpvYnMoJldlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVdvcmtlciwgb3B0aW1h
bFRocmVhZE51bWJlcik7CisgICAgICAgIFBhcmFsbGVsSm9iczxQbGF0Zm9ybUFwcGx5UGFyYW1l
dGVycz4gcGFyYWxsZWxKb2JzKCZXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlX
b3JrZXIsIG9wdGltYWxUaHJlYWROdW1iZXIpOwogICAgICAgICBhdXRvIG51bU9mVGhyZWFkcyA9
IHBhcmFsbGVsSm9icy5udW1iZXJPZkpvYnMoKTsKICAgICAgICAgaWYgKG51bU9mVGhyZWFkcyA+
IDEpIHsKICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBqb2IgaW50byAiam9iU2l6ZSItc2l6ZWQg
am9icyBidXQgdGhlcmUgYSBmZXcgam9icyB0aGF0IG5lZWQgdG8gYmUgc2xpZ2h0bHkgbGFyZ2Vy
IHNpbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVHVyYnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKaW5kZXggYWMyMzQ2ZThhNGJhNThhYWE5MjRhNmQ2N2Jk
NWU0Yjc3ZGQyMjY4Zi4uNzc0ZTY4MmUzYjQ4NTliYjZlMjA2YTFkMmJmYWViMGNlYTkxOWYwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1
cmJ1bGVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUdXJidWxlbmNlLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIHZvaWQgRkVUdXJidWxlbmNl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIHVuc2lnbmVkIG1heE51bVRocmVhZHMgPSBo
ZWlnaHQgLyA4OwogICAgIHVuc2lnbmVkIG9wdGltYWxUaHJlYWROdW1iZXIgPSBzdGQ6Om1pbjx1
bnNpZ25lZD4oYXJlYSAvIHNfbWluaW1hbFJlY3REaW1lbnNpb24sIG1heE51bVRocmVhZHMpOwog
ICAgIGlmIChvcHRpbWFsVGhyZWFkTnVtYmVyID4gMSkgewotICAgICAgICBXVEY6OlBhcmFsbGVs
Sm9iczxGaWxsUmVnaW9uUGFyYW1ldGVycz4gcGFyYWxsZWxKb2JzKCZXZWJDb3JlOjpGRVR1cmJ1
bGVuY2U6OmZpbGxSZWdpb25Xb3JrZXIsIG9wdGltYWxUaHJlYWROdW1iZXIpOworICAgICAgICBQ
YXJhbGxlbEpvYnM8RmlsbFJlZ2lvblBhcmFtZXRlcnM+IHBhcmFsbGVsSm9icygmV2ViQ29yZTo6
RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uV29ya2VyLCBvcHRpbWFsVGhyZWFkTnVtYmVyKTsKIAog
ICAgICAgICAvLyBGaWxsIHRoZSBwYXJhbWV0ZXIgYXJyYXkKICAgICAgICAgYXV0byBudW1Kb2Jz
ID0gcGFyYWxsZWxKb2JzLm51bWJlck9mSm9icygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cAppbmRleCBiOWZlOWJiOWFhNjg2MDY3YzExZmRhNTYyODMwNGFiNDhiYmI2YWVlLi4wMTYwNWZj
OTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyB2b2lkIHNpbXBsZUJ1c01lc3NhZ2VD
YWxsYmFjayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBHc3RCaW4qIHBpcGVsCiAgICAg
Y2FzZSBHU1RfTUVTU0FHRV9FUlJPUjoKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChwaXBlbGlu
ZSwgIkdvdCBtZXNzYWdlOiAlIiBHU1RfUFRSX0ZPUk1BVCwgbWVzc2FnZSk7CiAgICAgICAgIHsK
LSAgICAgICAgICAgIFdURjo6U3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0cmluZyhHU1RfT0JK
RUNUX05BTUUocGlwZWxpbmUpLCAiX2Vycm9yIik7CisgICAgICAgICAgICBTdHJpbmcgZG90Rmls
ZU5hbWUgPSBtYWtlU3RyaW5nKEdTVF9PQkpFQ1RfTkFNRShwaXBlbGluZSksICJfZXJyb3IiKTsK
ICAgICAgICAgICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lUSF9UUyhwaXBlbGluZSwg
R1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCBkb3RGaWxlTmFtZS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgdm9pZCBz
aW1wbGVCdXNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgR3N0
QmluKiBwaXBlbAogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG5l
d1N0YXRlKSwKICAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5k
aW5nKSk7CiAKLSAgICAgICAgICAgIFdURjo6U3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0cmlu
ZygKKyAgICAgICAgICAgIFN0cmluZyBkb3RGaWxlTmFtZSA9IG1ha2VTdHJpbmcoCiAgICAgICAg
ICAgICAgICAgR1NUX09CSkVDVF9OQU1FKHBpcGVsaW5lKSwgJ18nLAogICAgICAgICAgICAgICAg
IGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG9sZFN0YXRlKSwgJ18nLAogICAgICAgICAgICAg
ICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG5ld1N0YXRlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDg4YzE0ZDNjMWVjZmU0YzZjYTky
OTU4MDZiYmViNThlZjZiZTIwMTUuLmM2YTNmMjk1MGIxNWY1OGM0YTk4MjEyM2Q2ZTcwMmQwZTY4
MDI3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBA
IC01MDQsNyArNTA0LDcgQEAgYm9vbCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmlzQ29kZWNT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBjb24KIHsKICAgICAvLyBJZiB0
aGUgY29kZWMgaXMgbmFtZWQgbGlrZSBhIG1pbWV0eXBlIChlZzogdmlkZW8vYXZjKSByZW1vdmUg
dGhlICJ2aWRlby8iIHBhcnQuCiAgICAgc2l6ZV90IHNsYXNoSW5kZXggPSBjb2RlYy5maW5kKCcv
Jyk7Ci0gICAgU3RyaW5nIGNvZGVjTmFtZSA9IHNsYXNoSW5kZXggIT0gV1RGOjpub3RGb3VuZCA/
IGNvZGVjLnN1YnN0cmluZyhzbGFzaEluZGV4ICsgMSkgOiBjb2RlYzsKKyAgICBTdHJpbmcgY29k
ZWNOYW1lID0gc2xhc2hJbmRleCAhPSBub3RGb3VuZCA/IGNvZGVjLnN1YnN0cmluZyhzbGFzaElu
ZGV4ICsgMSkgOiBjb2RlYzsKIAogICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7CiAgICAgaWYg
KGNvZGVjTmFtZS5zdGFydHNXaXRoKCJhdmMxIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmgKaW5kZXggNTJkYTczZDhiYmFjZWNlMDVlYjI0ZDU2YzhkYzhmMTk2MjZiNWMzMS4u
NjZmMzM3Mjg0NmE0ZGY4NzRmNDIwZGI2NTRlNjg5YzllNDNiMGM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgc2l6
ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KICAgICBzdGF0aWMgYm9vbCBjYW5EZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwogCi0gICAgdm9pZCBzZXRFbmNvZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNr
KFdURjo6RnVuY3Rpb248dm9pZChFbmNvZGVkRGF0YVN0YXR1cyk+JiYgY2FsbGJhY2spIGZpbmFs
IHsgbV9lbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OyB9CisgICAgdm9pZCBzZXRFbmNvZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNrKEZ1bmN0aW9u
PHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiYmIGNhbGxiYWNrKSBmaW5hbCB7IG1fZW5jb2RlZERh
dGFTdGF0dXNDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogICAgIEVuY29k
ZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6
ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3NhbXBsZURhdGEuc2l6ZSgpOyB9CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJp
dmF0ZToKIAogICAgIGNvbnN0IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogc2FtcGxlQXRJ
bmRleChzaXplX3QpIGNvbnN0OwogCi0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKEVuY29kZWREYXRh
U3RhdHVzKT4gbV9lbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWRDYWxsYmFjazsKKyAgICBGdW5jdGlv
bjx2b2lkKEVuY29kZWREYXRhU3RhdHVzKT4gbV9lbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWRDYWxs
YmFjazsKICAgICBTYW1wbGVNYXAgbV9zYW1wbGVEYXRhOwogICAgIERlY29kZU9yZGVyU2FtcGxl
TWFwOjppdGVyYXRvciBtX2N1cnNvcjsKICAgICBMb2NrIG1fc2FtcGxlR2VuZXJhdG9yTG9jazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
YWluVGhyZWFkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NYWluVGhyZWFkTm90aWZpZXIuaAppbmRleCBkMmNjODFkNTg0ZDQ3YzBjMzIwNzI1
OTJhZWM2MTgwYWI2Mzc1YTVhLi5lYmI0MWFiZjhjZDQ0ZmZjNWI2NmUwMzE5YzUyOTYwNjNjY2U1
ODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWFpblRocmVhZE5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01haW5UaHJlYWROb3RpZmllci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKCFhZGRQZW5kaW5nTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvblR5
cGUpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5vdGlmaWNhdGlvblR5
cGUsIGNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+KFdURk1vdmUoY2FsbGJhY2tGdW5j
dG9yKSldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbm90aWZpY2F0aW9uVHlwZSwgY2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKCk+KFdURk1vdmUoY2FsbGJhY2tGdW5jdG9yKSldIHsKICAgICAgICAgICAgIGlm
ICghbV9pc1ZhbGlkLmxvYWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBpZiAocmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihub3RpZmljYXRpb25UeXBlKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
R1N0cmVhbWVyLmNwcAppbmRleCA4MzQyNGIyOTg4YzNlYmRkMjdjM2I4ZDk3MmIyMTZlN2FkYTA0
ZWQxLi5hMTY0ZDJmOGZmMGExYWYzYjgwZmM1ZDA1NDgyMTE2ZjA3OTQ0NDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlH
U3RyZWFtZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dm9pZCBjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihNZWRp
YURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIFdURjo6RnVuY3Rpb248dm9p
ZChNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbyYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgY3Jl
YXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFEZWNvZGlu
Z0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJp
bGl0aWVzRGVjb2RpbmdJbmZvJiYpPiYmIGNhbGxiYWNrKQogewogICAgIGJvb2wgaXNNZWRpYVNv
dXJjZSA9IGNvbmZpZ3VyYXRpb24udHlwZSA9PSBNZWRpYURlY29kaW5nVHlwZTo6TWVkaWFTb3Vy
Y2U7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBjcmVh
dGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihNZWRpYURlY29kaW5n
Q29uZmlndXJhdGlvbiYKICAgICBjYWxsYmFjayhXVEZNb3ZlKGluZm8pKTsKIH0KIAotdm9pZCBj
cmVhdGVNZWRpYVBsYXllckVuY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihNZWRpYUVuY29k
aW5nQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIFdURjo6RnVuY3Rpb248dm9pZChNZWRp
YUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbyYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgY3JlYXRlTWVk
aWFQbGF5ZXJFbmNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFFbmNvZGluZ0NvbmZp
Z3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVz
RW5jb2RpbmdJbmZvJiYpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8mIHNjYW5uZXIgPSBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gbG9va3VwUmVzdWx0
ID0gc2Nhbm5lci5pc0VuY29kaW5nU3VwcG9ydGVkKGNvbmZpZ3VyYXRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnlHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVh
bWVyLmgKaW5kZXggNjBiYjYzMWQzNmQ1MTQ4ZjQyODQ4NTYxZmU1OWNlNTUxMzliNGViNy4uYzhl
ZWU3OTlmMDEzMzQwMTAzY2U2MzQ3ZGViNzAzYzk3Y2U1Y2E0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5o
CkBAIC0zOCw4ICszOCw4IEBAIHN0cnVjdCBNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbzsK
IHN0cnVjdCBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbjsKIHN0cnVjdCBNZWRpYUVuY29kaW5n
Q29uZmlndXJhdGlvbjsKIAotZXh0ZXJuIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvJiYpPiYmKTsKLWV4dGVy
biB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRW5jb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyKE1l
ZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYsIFdURjo6RnVuY3Rpb248dm9pZChNZWRpYUNhcGFi
aWxpdGllc0VuY29kaW5nSW5mbyYmKT4mJik7CitleHRlcm4gdm9pZCBjcmVhdGVNZWRpYVBsYXll
ckRlY29kaW5nQ29uZmlndXJhdGlvbkdTdHJlYW1lcihNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
biYmLCBGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvJiYpPiYmKTsK
K2V4dGVybiB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRW5jb2RpbmdDb25maWd1cmF0aW9uR1N0cmVh
bWVyKE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uJiYsIEZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBh
YmlsaXRpZXNFbmNvZGluZ0luZm8mJik+JiYpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UZXh0U2lua0dTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5r
R1N0cmVhbWVyLmgKaW5kZXggZmQ2Y2IzYmQyNTczNjY3YWE4ZDRmZDNlOGNjYzYyNWY2NGYxOGFl
MS4uMDE0YjUwYzAyYzg4YjEyYTUyMTkzYzMwMTI1NzgyNzdlMGIzMTMyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRTaW5rR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Rl
eHRTaW5rR1N0cmVhbWVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IF9XZWJLaXRUZXh0U2lu
a0NsYXNzIHsKICAgICBHc3RCaW5DbGFzcyBwYXJlbnRDbGFzczsKIH07CiAKLUdzdEVsZW1lbnQq
IHdlYmtpdFRleHRTaW5rTmV3KFdURjo6V2Vha1B0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI+JiYpOworR3N0RWxlbWVudCogd2Via2l0VGV4dFNpbmtOZXcoV2Vha1B0cjxX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+JiYpOwogCiBHX0VORF9ERUNMUwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKaW5kZXggMzNlN2M5YWM1
OTVkNDZmMzBhZWU4Y2ZiZWI4NWYxNjUzMWIyOThiMC4uNjQ5YjBmNjJmYzRlNGQ5YjA5YjJmYTFl
NjM2YTFjNmJhNjFjMDM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuaApAQCAtNTMsNyArNTMsNyBAQCBzdHJ1Y3QgV2ViS2l0V2ViU3JjQ2xhc3MgewogfTsKIAog
R1R5cGUgd2Via2l0X3dlYl9zcmNfZ2V0X3R5cGUodm9pZCk7Ci12b2lkIHdlYktpdFdlYlNyY1Nl
dE1lZGlhUGxheWVyKFdlYktpdFdlYlNyYyosIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiwgY29uc3Qg
V1RGOjpTdHJpbmcmKTsKK3ZvaWQgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIoV2ViS2l0V2Vi
U3JjKiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmKTsKIGJvb2wgd2ViS2l0
U3JjUGFzc2VkQ09SU0FjY2Vzc0NoZWNrKFdlYktpdFdlYlNyYyopOwogYm9vbCB3ZWJLaXRTcmNX
b3VsZFRhaW50T3JpZ2luKFdlYktpdFdlYlNyYyosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcAppbmRleCBmYjlkMmVm
NzJlNWZlZTQyNjEzNTdiYjA2MDU2MDg5NjEwMDE0MGI2Li41YmQwM2MxYjk3NzkyNjBmOTAyYzM1
OTE1Y2I1NWJhZDI2MTcwMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5VGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eVRodW5kZXIuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0TWVkaWFU
aHVuZGVyRGVjcnlwdERlYnVnQ2F0ZWdvcnkpOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBO
T1RFOiBZb3VUdWJlIDIwMTkgRU1FIGNvbmZvcm1hbmNlIHRlc3RzIGV4cGVjdCB0aGlzIHRvIGJl
ID49NXMuCi1jb25zdCBXVEY6OlNlY29uZHMgc19saWNlbnNlS2V5UmVzcG9uc2VUaW1lb3V0ID0g
V1RGOjpTZWNvbmRzKDYpOworY29uc3QgU2Vjb25kcyBzX2xpY2Vuc2VLZXlSZXNwb25zZVRpbWVv
dXQgPSBTZWNvbmRzKDYpOwogCiBCb3hQdHI8T3BlbkNETVNlc3Npb24+IENETVByb3h5VGh1bmRl
cjo6Z2V0RGVjcnlwdGlvblNlc3Npb24oRGVjcnlwdGlvbkNvbnRleHQmIGluKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlw
dGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKaW5kZXggYzg0ZmRmMDkwZGRkNjk0ZGJhNTUyYTU3
NTg5NTYxYzA2ZjJmZGJmMi4uMTFkZjNkNzk3ZWU4YjQ3ZTlhYTU0ZDNmYTZkODJlY2YxZWIzODU5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1v
bkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3Rh
dGljIHZvaWQgY29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgV2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFQo
YmFzZSk7CiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNlbGYpOwotICAgIHBy
aXYtPmNkbVByb3h5RGVjcnlwdGlvbkNsaWVudEltcGxlbWVudGF0aW9uID0gV1RGOjptYWtlVW5p
cXVlPENETVByb3h5RGVjcnlwdGlvbkNsaWVudEltcGxlbWVudGF0aW9uPihzZWxmKTsKKyAgICBw
cml2LT5jZG1Qcm94eURlY3J5cHRpb25DbGllbnRJbXBsZW1lbnRhdGlvbiA9IG1ha2VVbmlxdWU8
Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50SW1wbGVtZW50YXRpb24+KHNlbGYpOwogfQogCiBzdGF0
aWMgR3N0Q2FwcyogdHJhbnNmb3JtQ2FwcyhHc3RCYXNlVHJhbnNmb3JtKiBiYXNlLCBHc3RQYWRE
aXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzKiBjYXBzLCBHc3RDYXBzKiBmaWx0ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0Fw
cGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGY5MWY1Njk2NTQ4YzJjNDkyNDQ0YzI4
MDE2YTFkYmRkNmNhOGVlNjYuLjVjMTQ2ODhhNmJmMWJjNzEzZmEyZGY5YzI0NmYxYWQzYTAzMjY1
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC0yNjYsNyArMjY2LDcg
QEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6aGFuZGxlRXJyb3JTeW5jTWVzc2FnZShHc3RNZXNzYWdl
KiBtZXNzYWdlKQogR3N0UGFkUHJvYmVSZXR1cm4gQXBwZW5kUGlwZWxpbmU6OmFwcHNyY0VuZE9m
QXBwZW5kQ2hlY2tlclByb2JlKEdzdFBhZFByb2JlSW5mbyogcGFkUHJvYmVJbmZvKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIG1fc3RyZWFtaW5nVGhyZWFkID0gJldURjo6
VGhyZWFkOjpjdXJyZW50KCk7CisgICAgbV9zdHJlYW1pbmdUaHJlYWQgPSAmVGhyZWFkOjpjdXJy
ZW50KCk7CiAKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IEdTVF9CVUZGRVIocGFkUHJvYmVJbmZv
LT5kYXRhKTsKICAgICBBU1NFUlQoR1NUX0lTX0JVRkZFUihidWZmZXIpKTsKQEAgLTU3Niw3ICs1
NzYsNyBAQCB2b2lkIEFwcGVuZFBpcGVsaW5lOjpyZXNldFBhcnNlclN0YXRlKCkKICAgICB7CiAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgLy8gVGhpcyBpcyBoZXJlIGZv
ciBkZWJ1Z2dpbmcgcHVycG9zZXMuIEl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gaGF2ZSBpdCBh
cyBjbGFzcyBtZW1iZXIuCi0gICAgICAgIFdURjo6U3RyaW5nIGRvdEZpbGVOYW1lID0gbWFrZVN0
cmluZygicmVzZXQtcGlwZWxpbmUtIiwgKytpKTsKKyAgICAgICAgU3RyaW5nIGRvdEZpbGVOYW1l
ID0gbWFrZVN0cmluZygicmVzZXQtcGlwZWxpbmUtIiwgKytpKTsKICAgICAgICAgZ3N0X2RlYnVn
X2Jpbl90b19kb3RfZmlsZShHU1RfQklOKG1fcGlwZWxpbmUuZ2V0KCkpLCBHU1RfREVCVUdfR1JB
UEhfU0hPV19BTEwsIGRvdEZpbGVOYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRpZgpA
QCAtNjE2LDcgKzYxNiw3IEBAIHZvaWQgQXBwZW5kUGlwZWxpbmU6OnB1c2hOZXdCdWZmZXIoR1Jl
ZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQogdm9pZCBBcHBlbmRQaXBlbGluZTo6aGFuZGxlQXBw
c2lua05ld1NhbXBsZUZyb21TdHJlYW1pbmdUaHJlYWQoR3N0RWxlbWVudCopCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCZXVEY6OlRocmVhZDo6Y3VycmVudCgpICE9
IG1fc3RyZWFtaW5nVGhyZWFkKSB7CisgICAgaWYgKCZUaHJlYWQ6OmN1cnJlbnQoKSAhPSBtX3N0
cmVhbWluZ1RocmVhZCkgewogICAgICAgICAvLyBtX3N0cmVhbWluZ1RocmVhZElkIGhhcyBiZWVu
IGluaXRpYWxpemVkIGluIGFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tlclByb2JlKCkuCiAgICAgICAg
IC8vIEZvciBhIGJ1ZmZlciB0byByZWFjaCB0aGUgYXBwc2luaywgYSBidWZmZXIgbXVzdCBoYXZl
IHBhc3NlZCB0aHJvdWdoIGFwcHNyY0VuZE9mQXBwZW5kQ2hlY2tlclByb2JlKCkgZmlyc3QuCiAg
ICAgICAgIC8vIFRoaXMgZXJyb3Igd2lsbCBvbmx5IHJhaXNlIGlmIHNvbWVvbmUgbW9kaWZpZXMg
dGhlIHBpcGVsaW5lIHRvIGluY2x1ZGUgbW9yZSB0aGFuIG9uZSBzdHJlYW1pbmcgdGhyZWFkIG9y
CkBAIC03MTYsNyArNzE2LDcgQEAgc3RkOjpwYWlyPEFwcGVuZFBpcGVsaW5lOjpDcmVhdGVUcmFj
a1Jlc3VsdCwgQXBwZW5kUGlwZWxpbmU6OlRyYWNrKj4gQXBwZW5kUGlwZWwKIAogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIkNyZWF0aW5nIG5ldyBBcHBlbmRQaXBlbGluZTo6VHJh
Y2sgd2l0aCBpZCAnJXMnIiwgdHJhY2tJZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBz
aXplX3QgbmV3VHJhY2tJbmRleCA9IG1fdHJhY2tzLnNpemUoKTsKLSAgICBtX3RyYWNrcy5hcHBl
bmQoV1RGOjptYWtlVW5pcXVlPFRyYWNrPih0cmFja0lkLCBzdHJlYW1UeXBlLCBwYXJzZWRDYXBz
LCBwcmVzZW50YXRpb25TaXplKSk7CisgICAgbV90cmFja3MuYXBwZW5kKG1ha2VVbmlxdWU8VHJh
Y2s+KHRyYWNrSWQsIHN0cmVhbVR5cGUsIHBhcnNlZENhcHMsIHByZXNlbnRhdGlvblNpemUpKTsK
ICAgICBUcmFjayYgdHJhY2sgPSAqbV90cmFja3MuYXQobmV3VHJhY2tJbmRleCk7CiAgICAgdHJh
Y2suaW5pdGlhbGl6ZUVsZW1lbnRzKHRoaXMsIEdTVF9CSU4obV9waXBlbGluZS5nZXQoKSkpOwog
ICAgIHRyYWNrLndlYktpdFRyYWNrID0gbWFrZVdlYktpdFRyYWNrKG5ld1RyYWNrSW5kZXgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9BcHBlbmRQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5oCmluZGV4IDI0ZDJiN2E4ZmUxYjg1NDFkMTNiMDBk
MzY1YTFiNmM3ODc3YzM2ZDUuLjdjYjNmM2FmZDA0M2JjYWQzYTYxYjQ0MzQ5ZDZjZjM1ZTBhN2Zh
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvQXBwZW5kUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBw
cml2YXRlOgogCiAgICAgLy8gVXNlZCBvbmx5IGZvciBhc3NlcnRpbmcgdGhhdCB0aGVyZSBpcyBv
bmx5IG9uZSBzdHJlYW1pbmcgdGhyZWFkLgogICAgIC8vIE9ubHkgdGhlIHBvaW50ZXJzIGFyZSBj
b21wYXJlZC4KLSAgICBXVEY6OlRocmVhZCogbV9zdHJlYW1pbmdUaHJlYWQ7CisgICAgVGhyZWFk
KiBtX3N0cmVhbWluZ1RocmVhZDsKIAogICAgIGJvb2wgbV9oYXNSZWNlaXZlZEZpcnN0SW5pdGlh
bGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKICAgICAvLyBVc2VkIG9ubHkgZm9yIGFzc2VydGlu
ZyBFT1MgZXZlbnRzIGFyZSBvbmx5IGNhdXNlZCBieSBkZW11eGluZyBlcnJvcnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQbGF0
Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFQbGF0Zm9ybUxheWVyLmgKaW5kZXggOWI2YWMwZGJiZDk1OWViNDFmOGE2NjJmZTlmN2Y0
ZGEwNDUzYmVmYi4uOTAwOGMxNWM0NmQwYzdkZjU4NjU4OTM4NTYxZDk0YWRhNjUzNzI5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
UGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaApAQCAtODksNyArODksNyBAQCBjbGFzcyBDb21w
b3NpdGlvbkxheWVyIDogcHVibGljIFBsYXRmb3JtTGF5ZXIgewogcHVibGljOgogICAgIGNsYXNz
IEltcGwgewogICAgIHB1YmxpYzoKLSAgICAgICAgdXNpbmcgRmFjdG9yeSA9IFdURjo6RnVuY3Rp
b248c3RkOjp1bmlxdWVfcHRyPEltcGw+KHVpbnQ2NF90LCBDb21wb3NpdGlvbkxheWVyJik+Owor
ICAgICAgICB1c2luZyBGYWN0b3J5ID0gRnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPEltcGw+KHVp
bnQ2NF90LCBDb21wb3NpdGlvbkxheWVyJik+OwogCiAgICAgICAgIHZpcnR1YWwgfkltcGwoKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dHVyZU1hcHBlckltcGwoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQpAQCAtMzMwLDcgKzMzMCw3IEBAIGNsYXNzIENvbnRlbnRMYXllciA6IHB1Ymxp
YyBQbGF0Zm9ybUxheWVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBJbXBsIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIHVzaW5nIEZhY3RvcnkgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxJ
bXBsPihDb250ZW50TGF5ZXImKT47CisgICAgICAgIHVzaW5nIEZhY3RvcnkgPSBGdW5jdGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8SW1wbD4oQ29udGVudExheWVyJik+OwogCiAgICAgICAgIHZpcnR1YWwg
fkltcGwoKTsKICAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dHVyZU1hcHBlckltcGwoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzU1LDcgKzM1NSw3IEBAIGNsYXNzIEJhY2tpbmdTdG9y
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxCYWNraW5nU3RvcmU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBJbXBsIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHVzaW5nIEZhY3RvcnkgPSBX
VEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxJbXBsPihCYWNraW5nU3RvcmUmKT47CisgICAg
ICAgIHVzaW5nIEZhY3RvcnkgPSBGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4oQmFja2lu
Z1N0b3JlJik+OwogCiAgICAgICAgIHZpcnR1YWwgfkltcGwoKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGlzVGV4dHVyZU1hcHBlckltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzc5
LDcgKzM3OSw3IEBAIGNsYXNzIEltYWdlQmFja2luZyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxJbWFnZUJhY2tpbmc+IHsKIHB1YmxpYzoKICAgICBjbGFzcyBJbXBsIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHVzaW5nIEZhY3RvcnkgPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0
cjxJbXBsPihJbWFnZUJhY2tpbmcmKT47CisgICAgICAgIHVzaW5nIEZhY3RvcnkgPSBGdW5jdGlv
bjxzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4oSW1hZ2VCYWNraW5nJik+OwogCiAgICAgICAgIHZpcnR1
YWwgfkltcGwoKTsKICAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dHVyZU1hcHBlckltcGwoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IDY0OWY5
MzgzY2Y0ZWQ0ODU0NGNhZGExNmI0YzY3OGIwYjdmZDExYmMuLmQ5ZjE1ZjQ1YmRmYjRlMWJiZThk
MzkzNjM1YjYwYWFkMWQyZDkwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1
aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAg
IGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0
cmluZyBnZXRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDcxZjEyYjkzZGZhMGM2ZGM5NWFkNTNjOGM2
YjAyZDQyYmFmN2MwNWIuLjg1ZGRlZjkzZjNjNmNmYjc5MzNkYTA5OGE5NWNhOWVjMzgyZGViMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0yMDMsNyArMjAz
LDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKIAogICAgIGZvciAoY29uc3Qgc3RkOjpwYWly
PEFOR0xFU2hhZGVyU3ltYm9sVHlwZSwgc2g6OlNoYWRlclZhcmlhYmxlPiYgcGFpciA6IHN5bWJv
bHMpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUgPSBwYWlyLnNlY29uZC5uYW1l
OwotICAgICAgICBlbnRyeS5zeW1ib2xNYXAocGFpci5maXJzdCkuc2V0KFN0cmluZyhuYW1lLmNf
c3RyKCksIG5hbWUubGVuZ3RoKCkpLCBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPHNoOjpTaGFkZXJWYXJpYWJsZT4ocGFpci5zZWNvbmQpKTsKKyAgICAgICAgZW50cnku
c3ltYm9sTWFwKHBhaXIuZmlyc3QpLnNldChTdHJpbmcobmFtZS5jX3N0cigpLCBuYW1lLmxlbmd0
aCgpKSwgbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8c2g6OlNoYWRlclZhcmlh
YmxlPihwYWlyLnNlY29uZCkpOwogICAgIH0KIAogICAgIGlmICghaXNWYWxpZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMmVlYTU0NWQyMGMzNzYxMTIzOTNlNTBjNWI4
NGQxNGRjYzFjYmFlYS4uMzgyNzNiMDcyYjU2ZDNmZGEyYmNkZTM0OGIzZTBmNzQyYzIwMDVlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xh
c3MgUGl4ZWxCdWZmZXI7CiBjbGFzcyBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI7CiAj
ZW5kaWYKIAotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5h
bWVIYXNoOwordHlwZWRlZiBIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFz
aDsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKQEAgLTcxMyw5ICs3MTMsOSBAQCBwcml2YXRlOgogCiAg
ICAgICAgIHVzaW5nIEJvdW5kVGV4dHVyZU1hcCA9IEhhc2hNYXA8R0NHTGVudW0sCiAgICAgICAg
ICAgICBzdGQ6OnBhaXI8R0NHTHVpbnQsIEdDR0xlbnVtPiwKLSAgICAgICAgICAgIFdURjo6SW50
SGFzaDxHQ0dMZW51bT4sCisgICAgICAgICAgICBJbnRIYXNoPEdDR0xlbnVtPiwKICAgICAgICAg
ICAgIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVpbnQ+LAotICAgICAg
ICAgICAgV1RGOjpQYWlySGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWlu
dD4+CisgICAgICAgICAgICBQYWlySGFzaFRyYWl0czxXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxH
Q0dMdWludD4+CiAgICAgICAgID47CiAgICAgICAgIEJvdW5kVGV4dHVyZU1hcCBib3VuZFRleHR1
cmVNYXA7CiAgICAgICAgIEdDR0x1aW50IGN1cnJlbnRCb3VuZFRleHR1cmUoKSBjb25zdCB7IHJl
dHVybiBib3VuZFRleHR1cmUoYWN0aXZlVGV4dHVyZVVuaXQpOyB9CkBAIC03NDEsNyArNzQxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJvdW5kVGV4dHVyZU1hcC5zZXQodGV4dHVyZVVuaXQs
IHN0ZDo6bWFrZV9wYWlyKHRleHR1cmUsIHRhcmdldCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
dXNpbmcgVGV4dHVyZVNlZWRDb3VudCA9IEhhc2hDb3VudGVkU2V0PEdDR0x1aW50LCBXVEY6Oklu
dEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdDR0x1
aW50Pj47CisgICAgICAgIHVzaW5nIFRleHR1cmVTZWVkQ291bnQgPSBIYXNoQ291bnRlZFNldDxH
Q0dMdWludCwgSW50SGFzaDxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8R0NHTHVpbnQ+PjsKICAgICAgICAgVGV4dHVyZVNlZWRDb3VudCB0ZXh0dXJlU2VlZENv
dW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5oCmluZGV4IDBjMTM0
MTgzODY4OWUxMmE0N2E2NzZkOWMxZmFiYWE2YTBlZmNjM2QuLjBhYTIzYTFjYTQxMTg0M2I3YmFi
ZTQyMjhlYmI4MmNiZWUyOWQ5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcuaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB2YWx1ZSB1cG9uIGRlc3Ry
dWN0aW9uLCBtYWtpbmcgaXQgYW4gYWx0ZXJuYXRpdmUgdG8gY2hlY2tpbmcsIGNsZWFyaW5nLCBh
bmQgcmVzZXR0aW5nIGVhY2ggZmxhZwogLy8gYXQgYWxsIG9mIGEgYmxvY2sncyBleGl0IHBvaW50
cy4KIC8vCi0vLyBCYXNlZCBvbiBXVEY6OlNldEZvclNjb3BlPD4KKy8vIEJhc2VkIG9uIFNldEZv
clNjb3BlPD4KIAogY2xhc3MgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDk0NGZkN2VmN2I1ZDM0OWEwYjJl
NjUzZDc4NzIxMWEzMmFmY2FiNDYuLmUyODUxYzJlM2QyMjE3NzE2OTRiZGQ2ZjEyZjBlNWY3ODk5
Yzc1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIu
Y3BwCkBAIC0xMDYsOSArMTA2LDkgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBtX2lz
Rm9yV2ViR0wyID0gYXR0cmlidXRlcy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xX
ZWJHTFZlcnNpb246OldlYkdMMjsKICNlbmRpZgogI2lmIFVTRShOSUNPU0lBKQotICAgIG1fbmlj
b3NpYUxheWVyID0gV1RGOjptYWtlVW5pcXVlPE5pY29zaWE6OkdDR0xBTkdMRUxheWVyPigqdGhp
cyk7CisgICAgbV9uaWNvc2lhTGF5ZXIgPSBtYWtlVW5pcXVlPE5pY29zaWE6OkdDR0xBTkdMRUxh
eWVyPigqdGhpcyk7CiAjZWxzZQotICAgIG1fdGV4bWFwTGF5ZXIgPSBXVEY6Om1ha2VVbmlxdWU8
VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyPigqdGhpcyk7CisgICAgbV90ZXhtYXBMYXll
ciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyPigqdGhpcyk7CiAj
ZW5kaWYKICAgICBib29sIHN1Y2Nlc3MgPSBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBBU1NF
UlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckNvbnRleHRBdHRyaWJ1dGVzLmNwcAppbmRleCA4NDRhYjYyZjJmOGEyMzdjYWY5NDBjOWYwOWUy
NjM3M2E3ZmMyZjhkLi4xMzg0YzZiMTE0ZTc5ZWJjNzJkZDI1N2NmMDU1ODIxZmM0YTQ2MzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmNwcApAQCAt
MzUsMTMgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFdURjo6VGhy
ZWFkU3BlY2lmaWM8VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzPiYgdGhyZWFkU3BlY2lm
aWNBdHRyaWJ1dGVzKCkKK3N0YXRpYyBUaHJlYWRTcGVjaWZpYzxUZXh0dXJlTWFwcGVyQ29udGV4
dEF0dHJpYnV0ZXM+JiB0aHJlYWRTcGVjaWZpY0F0dHJpYnV0ZXMoKQogewotICAgIHN0YXRpYyBX
VEY6OlRocmVhZFNwZWNpZmljPFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcz4qIHNfdGV4
dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOworICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxU
ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM+KiBzX3RleHR1cmVNYXBwZXJDb250ZXh0QXR0
cmlidXRlczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc19vbmNlRmxhZzsKICAgICBzdGQ6
OmNhbGxfb25jZShzX29uY2VGbGFnLAogICAgICAgICBbXSB7Ci0gICAgICAgICAgICBzX3RleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcyA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmljPFRleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcz47CisgICAgICAgICAgICBzX3RleHR1cmVNYXBwZXJD
b250ZXh0QXR0cmlidXRlcyA9IG5ldyBUaHJlYWRTcGVjaWZpYzxUZXh0dXJlTWFwcGVyQ29udGV4
dEF0dHJpYnV0ZXM+OwogICAgICAgICB9KTsKICAgICByZXR1cm4gKnNfdGV4dHVyZU1hcHBlckNv
bnRleHRBdHRyaWJ1dGVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuY3BwCmluZGV4IDA0MjIzZjIwNjM0MWNmNTU1NDY5Zjk1YWJlMWY3MzEwMzdj
OTJjODcuLmIwNGY5YzZiOTdhNjlhNjhlZjNhOGQ4YTIxYWM3NjUwOWUyZDEwYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKQEAgLTIyMCw3
ICsyMjAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmRyb3BDdXJy
ZW50QnVmZmVyV2hpbGVQcmVzZXJ2aW5nVGV4dHVyZShibwogICAgICAgICBbdGhpcywgc2hvdWxk
V2FpdF0gewogICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCi0gICAgICAg
ICAgICBhdXRvIG1heWJlTm90aWZ5U3luY2hyb25vdXNPcGVyYXRpb24gPSBXVEY6Om1ha2VTY29w
ZUV4aXQoW3RoaXMsIHNob3VsZFdhaXRdKCkgeworICAgICAgICAgICAgYXV0byBtYXliZU5vdGlm
eVN5bmNocm9ub3VzT3BlcmF0aW9uID0gbWFrZVNjb3BlRXhpdChbdGhpcywgc2hvdWxkV2FpdF0o
KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFdhaXQpIHsKICAgICAgICAgICAgICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fd2FzQnVmZmVyRHJvcHBlZExvY2sgfTsKICAgICAgICAgICAg
ICAgICAgICAgbV93YXNCdWZmZXJEcm9wcGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtLmgKaW5kZXggMmRiNjZjMWJlZDJiYmViOGZmYjIzZDc1YWY3MzI4NjI4
OTdmMTBhYi4uNmVkZjM5Zjg0ZGVkNzZmZTQwYWNkYzZmYzJjMzQ1ZWVkODQ1ZTJkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBw
cml2YXRlOgogICAgIEdMdWludCBnZXRMb2NhdGlvbihWYXJpYWJsZUlELCBBU0NJSUxpdGVyYWws
IFZhcmlhYmxlVHlwZSk7CiAKICAgICBHTHVpbnQgbV9pZDsKLSAgICBIYXNoTWFwPFZhcmlhYmxl
SUQsIEdMdWludCwgV1RGOjpJbnRIYXNoPFZhcmlhYmxlSUQ+LCBXVEY6OlN0cm9uZ0VudW1IYXNo
VHJhaXRzPFZhcmlhYmxlSUQ+PiBtX3ZhcmlhYmxlczsKKyAgICBIYXNoTWFwPFZhcmlhYmxlSUQs
IEdMdWludCwgSW50SGFzaDxWYXJpYWJsZUlEPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxW
YXJpYWJsZUlEPj4gbV92YXJpYWJsZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IGRmMzNmNTI1ZDk4NTgxOTFiYWEyNTU4MmI1MDcyZjk0ODM5NDlkZWIuLjU0NGE1MDdiY2I0
Zjc5OWY5OTM5YmU1ZTJmNTcxODI4Yjc0NTQ3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCkBA
IC02NDMsNyArNjQzLDcgQEAgc3RhdGljIHZvaWQgZHJhd1dpdGhTaGFkb3dIZWxwZXIoSUQyRDFS
ZW5kZXJUYXJnZXQqIGNvbnRleHQsIElEMkQxQml0bWFwUmVuZGVyVGEKICAgICBjb250ZXh0LT5E
cmF3Qml0bWFwKGNyb3BwZWQuZ2V0KCkpOwogfQogCi12b2lkIGRyYXdXaXRoU2hhZG93KFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIEZsb2F0UmVjdCBib3VuZGluZ1Jl
Y3QsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKElE
MkQxUmVuZGVyVGFyZ2V0Kik+JiYgZHJhd0NvbW1hbmRzKQordm9pZCBkcmF3V2l0aFNoYWRvdyhQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBGbG9hdFJlY3QgYm91bmRp
bmdSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIEZ1bmN0aW9uPHZvaWQoSUQy
RDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpCiB7CiAgICAgaWYgKCFzaGFkb3dTdGF0
ZS5pc1Zpc2libGUoKSkgewogICAgICAgICBkcmF3V2l0aG91dFNoYWRvdyhwbGF0Zm9ybUNvbnRl
eHQsIFdURk1vdmUoZHJhd0NvbW1hbmRzKSk7CkBAIC02OTQsNyArNjk0LDcgQEAgdm9pZCBkcmF3
V2l0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBGbG9h
dFJlY3QgYm91bmRpbmcKICAgICBwbGF0Zm9ybUNvbnRleHQubm90aWZ5UG9zdERyYXdPYnNlcnZl
cigpOwogfQogCi12b2lkIGRyYXdXaXRob3V0U2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiBwbGF0Zm9ybUNvbnRleHQsIFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCop
PiYmIGRyYXdDb21tYW5kcykKK3ZvaWQgZHJhd1dpdGhvdXRTaGFkb3coUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgRnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdl
dCopPiYmIGRyYXdDb21tYW5kcykKIHsKICAgICBwbGF0Zm9ybUNvbnRleHQubm90aWZ5UHJlRHJh
d09ic2VydmVyKCk7CiAgICAgZHJhd0NvbW1hbmRzKHBsYXRmb3JtQ29udGV4dC5yZW5kZXJUYXJn
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0MkRPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKaW5kZXggNDdlMjk5MzYwN2FkNTFmZWJhYTZjYzcyZGZj
MjY1MTM3MDMyNDc3Zi4uNjRiMWViNzYwZGFjNTQ2OTcyNjNiNGE5MjA0ZWRmM2RiMTI1ZmE5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJE
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
aXJlY3QyRE9wZXJhdGlvbnMuaApAQCAtMTMyLDggKzEzMiw4IEBAIHZvaWQgZHJhd1BsYXRmb3Jt
SW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0
U2l6ZSYKIHZvaWQgZHJhd1BhdGgoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBQYXRo
JiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1Bh
dHRlcm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBDT01QdHI8SUQyRDFCaXRtYXA+JiYsIGNv
bnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSk7CiAKLXZvaWQgZHJhd1dpdGhvdXRTaGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFu
ZHMpOwotdm9pZCBkcmF3V2l0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIEZsb2F0
UmVjdCBib3VuZGluZ1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiwgV1RGOjpGdW5jdGlvbjx2b2lk
KElEMkQxUmVuZGVyVGFyZ2V0Kik+JiYgZHJhd0NvbW1hbmRzKTsKK3ZvaWQgZHJhd1dpdGhvdXRT
aGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVy
VGFyZ2V0Kik+JiYgZHJhd0NvbW1hbmRzKTsKK3ZvaWQgZHJhd1dpdGhTaGFkb3coUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQmLCBGbG9hdFJlY3QgYm91bmRpbmdSZWN0LCBjb25zdCBTaGFkb3dTdGF0
ZSYsIEZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mJiBkcmF3Q29tbWFuZHMpOwog
CiB2b2lkIGRyYXdSZWN0KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0
JiwgZmxvYXQsIGNvbnN0IENvbG9yJiwgU3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJik7CiB2b2lk
IGRyYXdMaW5lKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBTdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImLCBmbG9hdCwgYm9vbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCmluZGV4IDBiZDcwN2YxYzU1ZjJmNjRiYTMyNjE3
Mzk3Y2ZiMWEyNzEzMzgxOTAuLmE0MzIyYTRkZWZmMmFkODVhMzc2MGMwZmE3NzZkNDZkMjA0N2Nm
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCkBAIC0xMzQsOCArMTM0LDggQEAgRm9u
dFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGhmb250LCBD
VEZvbnRSZWYgY3RGb250LCBDR0YKIHVuc2lnbmVkIEZvbnRQbGF0Zm9ybURhdGE6Omhhc2goKSBj
b25zdAogewogICAgIHVuc2lnbmVkIGZvbnRIYXNoID0gbV9mb250ID8gbV9mb250LT5oYXNoKCkg
OiAwOwotICAgIENGSGFzaENvZGUgY2dGb250SGFzaCA9IFdURjo6c2FmZUNGSGFzaChtX2NnRm9u
dC5nZXQoKSk7Ci0gICAgQ0ZIYXNoQ29kZSBjdEZvbnRIYXNoID0gV1RGOjpzYWZlQ0ZIYXNoKG1f
Y3RGb250LmdldCgpKTsKKyAgICBDRkhhc2hDb2RlIGNnRm9udEhhc2ggPSBzYWZlQ0ZIYXNoKG1f
Y2dGb250LmdldCgpKTsKKyAgICBDRkhhc2hDb2RlIGN0Rm9udEhhc2ggPSBzYWZlQ0ZIYXNoKG1f
Y3RGb250LmdldCgpKTsKICAgICB1aW50cHRyX3QgaGFzaENvZGVzW10gPSB7IGZvbnRIYXNoLCBj
Z0ZvbnRIYXNoLCBjdEZvbnRIYXNoLCBtX3VzZUdESSB9OwogICAgIHJldHVybiBTdHJpbmdIYXNo
ZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiB9CkBAIC0xNDMs
OCArMTQzLDggQEAgdW5zaWduZWQgRm9udFBsYXRmb3JtRGF0YTo6aGFzaCgpIGNvbnN0CiBib29s
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gbV9mb250ID09IG90aGVyLm1fZm9udAotICAg
ICAgICAmJiBXVEY6OnNhZmVDRkVxdWFsKG1fY2dGb250LmdldCgpLCBvdGhlci5tX2NnRm9udC5n
ZXQoKSkKLSAgICAgICAgJiYgV1RGOjpzYWZlQ0ZFcXVhbChtX2N0Rm9udC5nZXQoKSwgb3RoZXIu
bV9jdEZvbnQuZ2V0KCkpCisgICAgICAgICYmIHNhZmVDRkVxdWFsKG1fY2dGb250LmdldCgpLCBv
dGhlci5tX2NnRm9udC5nZXQoKSkKKyAgICAgICAgJiYgc2FmZUNGRXF1YWwobV9jdEZvbnQuZ2V0
KCksIG90aGVyLm1fY3RGb250LmdldCgpKQogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhlci5t
X3VzZUdESTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggYmUyZmM2
MThhNzE3ZTI3ZDFhYWI4ZjQ0YzZkMDZmODJjMGNhMzFhZC4uOWI3N2UyYWY4NGI0YTUwNWVmOWY4
M2JhYTViM2IyMDk5OWZlNTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8RGlyZWN0MkRMYXllclR5cGU+IG1f
Y2xpcHM7CiB9OwogCi1QbGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6UGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgcHJlRHJhd0hhbmRsZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvc3REcmF3SGFu
ZGxlcikKK1BsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpQbGF0Zm9ybUNvbnRleHREaXJlY3QyRChJ
RDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKCk+JiYgcHJlRHJh
d0hhbmRsZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBwb3N0RHJhd0hhbmRsZXIpCiAgICAgOiBtX3Jl
bmRlclRhcmdldChyZW5kZXJUYXJnZXQpCiAgICAgLCBtX3ByZURyYXdIYW5kbGVyKFdURk1vdmUo
cHJlRHJhd0hhbmRsZXIpKQogICAgICwgbV9wb3N0RHJhd0hhbmRsZXIoV1RGTW92ZShwb3N0RHJh
d0hhbmRsZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaAppbmRleCA2Y2U2ZjZlMjE4ZjAw
ZDhkNDE2NmJkYmI4MDdhZTY1ZjA4MzZhYzYzLi5iNmVlMTFjYjMxNjEzZTBiNjY5NzU4Nzg0Mjgx
YTZmNjZmYjUyZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaApAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQpOwogcHVibGljOgotICAgIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKElEMkQxUmVuZGVyVGFy
Z2V0KiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcHJlRHJhd0hhbmRsZXIgPSBbXSgpIHsgfSwg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgcG9zdERyYXdIYW5kbGVyID0gW10oKSB7IH0pOworICAg
IFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKElEMkQxUmVuZGVyVGFyZ2V0KiwgRnVuY3Rpb248dm9p
ZCgpPiYmIHByZURyYXdIYW5kbGVyID0gW10oKSB7IH0sIEZ1bmN0aW9uPHZvaWQoKT4mJiBwb3N0
RHJhd0hhbmRsZXIgPSBbXSgpIHsgfSk7CiAgICAgflBsYXRmb3JtQ29udGV4dERpcmVjdDJEKCk7
CiAKICAgICBJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KCkgeyByZXR1cm4gbV9yZW5k
ZXJUYXJnZXQuZ2V0KCk7IH0KQEAgLTEzNSw4ICsxMzUsOCBAQCBwcml2YXRlOgogCiAgICAgQ09N
UHRyPElEMkQxQml0bWFwPiBtX2NvbXBvc2l0ZVNvdXJjZTsKIAotICAgIFdURjo6RnVuY3Rpb248
dm9pZCgpPiBtX3ByZURyYXdIYW5kbGVyOwotICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3Bv
c3REcmF3SGFuZGxlcjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fcHJlRHJhd0hhbmRsZXI7Cisg
ICAgRnVuY3Rpb248dm9pZCgpPiBtX3Bvc3REcmF3SGFuZGxlcjsKIAogICAgIGNsYXNzIFN0YXRl
OwogICAgIFN0YXRlKiBtX3N0YXRlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCmluZGV4IDRjZTM2
N2I2ZDVmODE5YTU5ZGI4MjU1YjM0YmViZDBhZGUyYWFlOGMuLjE4NzA0MDk5NGNjOWZhNGJjNzU2
Mjc5N2ExMTQ3MzRhYjE3ZDg0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vU2hhcmVkR0RJT2JqZWN0LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
V1RGOjpQdHJIYXNoPFQ+OjpoYXNoKG1fb2JqZWN0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFB0
ckhhc2g8VD46Omhhc2gobV9vYmplY3QuZ2V0KCkpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKaW5kZXggZWRlZDdlOGRkMjNhYmIz
NjBlOGRhYjQ0MzVmMzEyMDkzOGE1ZWU0MS4uNDgzODRkMDJhOTFlNWZjZjgyY2ZlNTI0ZGQ0ZGYz
NzZhMDIyYTczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNv
ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFVTRShHVEs0KQogc3Rh
dGljIEdSZWZQdHI8R2RrQ3Vyc29yPiBmYWxsYmFja0N1cnNvcigpCiB7Ci0gICAgc3RhdGljIFdU
Rjo6TmV2ZXJEZXN0cm95ZWQ8R1JlZlB0cjxHZGtDdXJzb3I+PiBjdXJzb3IoYWRvcHRHUmVmKGdk
a19jdXJzb3JfbmV3X2Zyb21fbmFtZSgiZGVmYXVsdCIsIG51bGxwdHIpKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEdSZWZQdHI8R2RrQ3Vyc29yPj4gY3Vyc29yKGFkb3B0R1JlZihnZGtf
Y3Vyc29yX25ld19mcm9tX25hbWUoImRlZmF1bHQiLCBudWxscHRyKSkpOwogICAgIHJldHVybiBj
dXJzb3I7CiB9CiAjZW5kaWYgLy8gVVNFKEdUSzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwCmluZGV4IDZiYzFkNTQ3ZDMxOTlkNWYyMjhhYmI1MWQzNDQw
OGE5ODRlNjc3ZmMuLjdiMGQ2ZGU5OGIzODMzYzZlMjJiOTU5NzBiOWM1NThjNDAzMmI2NTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCkBAIC0xMjYs
NyArMTI2LDcgQEAgV2FsbFRpbWUgd2FsbFRpbWVGb3JFdmVudChjb25zdCBHZGtFdmVudCogZXZl
bnQpCiAgICAgLy8gVGhpcyB3b3JrcyBpZiBhbmQgb25seSBpZiB0aGUgWCBzZXJ2ZXIgb3IgV2F5
bGFuZCBjb21wb3NpdG9yIGhhcHBlbnMgdG8KICAgICAvLyBiZSB1c2luZyBDTE9DS19NT05PVE9O
SUMgZm9yIGl0cyBtb25vdG9uaWMgdGltZSwgYW5kIHNvIGxvbmcgYXMKICAgICAvLyBnX2dldF9t
b25vdG9uaWNfdGltZSgpIGNvbnRpbnVlcyB0byBkbyBzbyBhcyB3ZWxsLCBhbmQgc28gbG9uZyBh
cwotICAgIC8vIFdURjo6TW9ub3RvbmljVGltZSBjb250aW51ZXMgdG8gdXNlIGdfZ2V0X21vbm90
b25pY190aW1lKCkuCisgICAgLy8gTW9ub3RvbmljVGltZSBjb250aW51ZXMgdG8gdXNlIGdfZ2V0
X21vbm90b25pY190aW1lKCkuCiAjaWYgVVNFKEdUSzQpCiAgICAgYXV0byB0aW1lID0gZ2RrX2V2
ZW50X2dldF90aW1lKGNvbnN0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCkpOwogI2Vsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCmluZGV4
IDdhM2I0NzIzZjQ4YzE3OTg2NGIyZGQ2ZDViMWVkOGQyNzQ5MjM1OGUuLjgwOTU4YmE1NjVhODc3
MjI0ZDBlZDM3ZTRlNDA1N2I0YmUwZGRlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcApAQCAtMTQxLDkgKzE0MSw5IEBAIGRvdWJs
ZSBzY3JlZW5EUEkoKQogICAgIHJldHVybiBjYWNoZWREcGk7CiB9CiAKLXN0YXRpYyBXVEY6Okhh
c2hNYXA8dm9pZCosIEZ1bmN0aW9uPHZvaWQoKT4+JiBzY3JlZW5EUElPYnNlcnZlckhhbmRsZXJz
TWFwKCkKK3N0YXRpYyBIYXNoTWFwPHZvaWQqLCBGdW5jdGlvbjx2b2lkKCk+PiYgc2NyZWVuRFBJ
T2JzZXJ2ZXJIYW5kbGVyc01hcCgpCiB7Ci0gICAgc3RhdGljIFdURjo6TmV2ZXJEZXN0cm95ZWQ8
V1RGOjpIYXNoTWFwPHZvaWQqLCBGdW5jdGlvbjx2b2lkKCk+Pj4gaGFuZGxlcnNNYXA7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dm9pZCosIEZ1bmN0aW9uPHZvaWQoKT4+PiBo
YW5kbGVyc01hcDsKICAgICByZXR1cm4gaGFuZGxlcnNNYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0LmgKaW5kZXggOTkzOGNlYjM4MGUxNzhiNGU3NjFkMGNmY2Y2YTFkYTZmZTliMzJiZi4uY2Ex
NGU3YWIxZmNmZjZmOWJiMWM0MWJhOTYyZDU0ODkxZGM1NzdlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0LmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRN
b2RlLm1vZGUoKTsgfQogICAgIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKCkg
Y29uc3QgeyByZXR1cm4gbV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s7IH0KICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIG1heUF1dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0
dXJlKCkgY29uc3Q7Ci0gICAgdm9pZCBwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3AoV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHByZXBhcmVGb3JQ
aWN0dXJlSW5QaWN0dXJlU3RvcChGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAg
ICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogICAgIGJvb2wgaW5Q
aWN0dXJlSW5QaWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lbnRlcmluZ1BpY3R1cmVJblBpY3R1
cmUgfHwgbV9jdXJyZW50TW9kZS5oYXNQaWN0dXJlSW5QaWN0dXJlKCk7IH0KQEAgLTE4Myw3ICsx
ODMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV9wYXJlbnRWaWV3Owog
ICAgIFJldGFpblB0cjxVSVdpbmRvdz4gbV9wYXJlbnRXaW5kb3c7CiAgICAgUmV0YWluUHRyPFdl
YkFWUGxheWVyTGF5ZXJWaWV3PiBtX3BsYXllckxheWVyVmlldzsKLSAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2s7CisgICAgRnVuY3Rpb248dm9p
ZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBSdW5Mb29wOjpUaW1lcjxW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV93YXRjaGRvZ1RpbWVyOwogICAgIEZsb2F0
UmVjdCBtX2lubGluZVJlY3Q7CiAgICAgUm91dGVTaGFyaW5nUG9saWN5IG1fcm91dGVTaGFyaW5n
UG9saWN5IHsgUm91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAppbmRleCA3MjA0
MWU5ZTFmZTlmZTlkNTZhZTI3N2I3MGY4ZGU4YmY2YTNiZjdjLi5hMTkxMGNlMzkxNTFhMmI1ZmY4
ZjkyZjljZDM3YWEwMzc1Y2I4NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBwcml2
YXRlOgogCiBleHRlcm4gIkMiIHsKIAotdHlwZWRlZiBXVEY6OlZlY3RvcjxXZWJUaHJlYWRCbG9j
az4gV2ViVGhyZWFkUnVuUXVldWU7Cit0eXBlZGVmIFZlY3RvcjxXZWJUaHJlYWRCbG9jaz4gV2Vi
VGhyZWFkUnVuUXVldWU7CiAKIHN0YXRpYyBMb2NrIHJ1blF1ZXVlTXV0ZXg7CiBzdGF0aWMgV2Vi
VGhyZWFkUnVuUXVldWUqIHJ1blF1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCmluZGV4IGE0N2UzNDNmNGRjYTAzNmZlYWVmZDNjMTBk
NWYyNDBlMzRiOWYwZGIuLmY1YTBmYTcwNDk4OWRjYTMyYTA2OTY1YzEwZjkwMmJjZWI0NTQ3ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Qb3dlck9ic2Vy
dmVyOjpQb3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIp
CitQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBwb3dlck9u
SGFuZGVyKQogICAgIDogbV9wb3dlck9uSGFuZGVyKFdURk1vdmUocG93ZXJPbkhhbmRlcikpCiAg
ICAgLCBtX3Bvd2VyQ29ubmVjdGlvbigwKQogICAgICwgbV9ub3RpZmljYXRpb25Qb3J0KG51bGxw
dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZl
ck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuaApp
bmRleCBhODBiNjIwNzVjMDFkYzE0OWY4MzExYzc0OTRjODEzMjlhYzYwNTkzLi4xMGU3MTdjMWM5
NmZmZDExNDdlMDQ2ZWU3MGM3MmUxZGYwYmMxNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUG93ZXJPYnNlcnZlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Qb3dlck9ic2VydmVyTWFjLmgKQEAgLTM4LDEzICszOCwxMyBAQCBjbGFzcyBQ
b3dlck9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb3dlck9ic2VydmVyKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBQ
b3dlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25IYW5kZXIpOworICAg
IFdFQkNPUkVfRVhQT1JUIFBvd2VyT2JzZXJ2ZXIoRnVuY3Rpb248dm9pZCgpPiYmIHBvd2VyT25I
YW5kZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Qb3dlck9ic2VydmVyKCk7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lzdGVtUG93ZXJOb3RpZmljYXRpb24oaW9fc2VydmljZV90
LCB1aW50MzJfdCBtZXNzYWdlVHlwZSwgdm9pZCogbWVzc2FnZUFyZ3VtZW50KTsKIAotICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiBtX3Bvd2VyT25IYW5kZXI7CisgICAgRnVuY3Rpb248dm9pZCgp
PiBtX3Bvd2VyT25IYW5kZXI7CiAgICAgaW9fY29ubmVjdF90IG1fcG93ZXJDb25uZWN0aW9uOwog
ICAgIElPTm90aWZpY2F0aW9uUG9ydFJlZiBtX25vdGlmaWNhdGlvblBvcnQ7CiAgICAgaW9fb2Jq
ZWN0X3QgbV9ub3RpZmllclJlZmVyZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnkuaAppbmRleCAzMTg1OWQxOWY0YTYxN2E3NGNkOTU0Y2YxMjc1
YWNiZjkzZWM0OTM4Li42YTQzY2Y3NmFiNDVjYmEzN2M4ODVlZjljOTQ1NDIwOGFmZWM1ZGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oCkBA
IC0zOCw4ICszOCw4IEBAIHN0cnVjdCBNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbjsKIAogY2xh
c3MgTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSB7CiBwdWJsaWM6Ci0gICAgdXNpbmcg
RGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFD
YXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+OwotICAgIHVzaW5nIEVuY29kaW5nQ29uZmlndXJh
dGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2Rp
bmdJbmZvJiYpPjsKKyAgICB1c2luZyBEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8mJik+OworICAgIHVzaW5n
IEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChNZWRpYUNhcGFi
aWxpdGllc0VuY29kaW5nSW5mbyYmKT47CiAKICAgICBzdGF0aWMgYm9vbCBoYXNEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25GYWN0b3J5KCk7CiAgICAgc3RhdGljIGJvb2wgaGFzRW5jb2RpbmdDb25maWd1
cmF0aW9uRmFjdG9yeSgpOwpAQCAtNDcsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgY3JlYXRlRGVjb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRGVjb2Rp
bmdDb25maWd1cmF0aW9uJiYsIERlY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNyZWF0ZUVuY29kaW5nQ29uZmlndXJhdGlvbihN
ZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYmLCBFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFj
ayYmKTsKICAgICAKLSAgICB1c2luZyBDcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24gPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgRGVjb2RpbmdDb25m
aWd1cmF0aW9uQ2FsbGJhY2smJik+OwotICAgIHVzaW5nIENyZWF0ZUVuY29kaW5nQ29uZmlndXJh
dGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYmLCBF
bmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYmKT47CisgICAgdXNpbmcgQ3JlYXRlRGVjb2Rp
bmdDb25maWd1cmF0aW9uID0gRnVuY3Rpb248dm9pZChNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
biYmLCBEZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYmKT47CisgICAgdXNpbmcgQ3JlYXRl
RW5jb2RpbmdDb25maWd1cmF0aW9uID0gRnVuY3Rpb248dm9pZChNZWRpYUVuY29kaW5nQ29uZmln
dXJhdGlvbiYmLCBFbmNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayYmKT47CiAKICAgICBzdHJ1
Y3QgTWVkaWFFbmdpbmVGYWN0b3J5IHsKICAgICAgICAgQ3JlYXRlRGVjb2RpbmdDb25maWd1cmF0
aW9uIGNyZWF0ZURlY29kaW5nQ29uZmlndXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsLmNwcAppbmRleCA5NzE4YTRiNjQzZGFiNjhlNjI3MWYzZWQxOGNjZGQ2ZTBl
NGUxZDc4Li5mOTVkOGYwMWFmYWViNDhhZWI4MDFhMzYyZWU0NjQxYjI2MjQ0MWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiBzYW1wbGVCdWZmZXIKICAgICBtX3dyaXRlci0+YXBwZW5kVmlkZW9TYW1wbGVC
dWZmZXIoc2FtcGxlQnVmZmVyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYgbWVkaWFUaW1l
LCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKK3ZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBt
ZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQogewogICAgIEFT
U0VSVChpczxXZWJBdWRpb0J1ZmZlckxpc3Q+KGRhdGEpKTsKICAgICBBU1NFUlQoZGVzY3JpcHRp
b24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FB
dWRpb1N0cmVhbUJhc2ljVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwu
aAppbmRleCBjNjU5NTVkM2VkODAzZjlhM2Q5NzRjNDMwY2M3ZGE0M2I0ZTJhZWE3Li4zOGI5NGY5
ZTRlYWM0ZGY0MzVhYzAyM2QyODMwNTA0M2UxYjkyNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZWRp
YVJlY29yZGVyUHJpdmF0ZQogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1w
bGUmKSBmaW5hbDsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5h
bDsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYs
IGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYs
IHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVj
b3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNv
bnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggZjgy
MTVjMGUwZWM5MDg5MmJlYWI1OThjMWMzMTBhNjQ2MzUxYjQ5MC4uMWVmYTcwYjkwNTEwZGJmZWEz
NzEzOWRiOWZhOGM2MDE2ZDRjNTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2Nr
LmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKQogICAgIGdlbmVyYXRlTW9ja0NvdW50ZXJT
dHJpbmcoKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkKK3ZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVNb2NrOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwg
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
c2l6ZV90KQogewogICAgIC8vIEhlYXAgYWxsb2NhdGlvbnMgYXJlIGZvcmJpZGRlbiBvbiB0aGUg
YXVkaW8gdGhyZWFkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHNvIHdlIG5lZWQgdG8KICAgICAv
LyBleHBsaWNpdGx5IGFsbG93IHRoZSBmb2xsb3dpbmcgYWxsb2NhdGlvbihzKS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlTW9jay5oCmluZGV4IDQ5Y2FkYmRmYTIxMGFkOGJkNTBiZWQ1NDRmNTg3
M2ZhNWIwN2QwMTIuLmQ0ODRiMmZjZWExZTg0YWVlOWJmODFlMGRlMjYyNzQyZmQyMjkyZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRl
OgogICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWls
YWJsZShNZWRpYVNhbXBsZSYpIGZpbmFsOwogICAgIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNh
bGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdU
Rjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgc3RvcFJlY29y
ZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgcGF1c2VS
ZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHJl
c3VtZVJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzLmNwcAppbmRleCBmZTc2OTdmODU3YzM1OGM5MWNhMGZmY2E1YmYwY2NiYzc3NGFmMmE5Li4x
ZmQwMjNkODA0OTQ2MzEyMTNmMmNmMTA1MTNmNDFiNmM1ODgyMmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNw
cApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IFN0cmlu
ZyYgU3RyaW5nQ29uc3RyYWludDo6ZmluZChjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3Qg
U3RyaW5nJik+JiBmaWx0ZXIpIGNvbnN0Citjb25zdCBTdHJpbmcmIFN0cmluZ0NvbnN0cmFpbnQ6
OmZpbmQoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4mIGZpbHRlcikgY29uc3QK
IHsKICAgICBmb3IgKGF1dG8mIGNvbnN0cmFpbnQgOiBtX2V4YWN0KSB7CiAgICAgICAgIGlmIChm
aWx0ZXIoY29uc3RyYWludCkpCkBAIC0xODAsNyArMTgwLDcgQEAgY29uc3QgTWVkaWFDb25zdHJh
aW50KiBGbGF0dGVuZWRDb25zdHJhaW50OjpmaW5kKE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSkg
Y29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcDo6Zm9yRWFjaChXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFDb25zdHJhaW50
Jik+JiYgY2FsbGJhY2spIGNvbnN0Cit2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpm
b3JFYWNoKEZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFDb25zdHJhaW50Jik+JiYgY2FsbGJhY2sp
IGNvbnN0CiB7CiAgICAgZmlsdGVyKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29u
c3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJh
Y2soY29uc3RyYWludCk7CkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcDo6Zm9yRWFjaChXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgTWVkaWFDb25zdHJh
aW4KICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6ZmlsdGVy
KGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKT4mIGNhbGxi
YWNrKSBjb25zdAordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6ZmlsdGVyKGNvbnN0
IEZ1bmN0aW9uPGJvb2woY29uc3QgTWVkaWFDb25zdHJhaW50Jik+JiBjYWxsYmFjaykgY29uc3QK
IHsKICAgICBpZiAobV93aWR0aCAmJiAhbV93aWR0aC0+aXNFbXB0eSgpICYmIGNhbGxiYWNrKCpt
X3dpZHRoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGREZWZhdWx0VmlkZW9Db25zdHJhaW50cyhNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcCYgdmlkZW9DCiAgICAgfQogfQogCi1ib29sIE1lZGlhQ29uc3RyYWludHM6OmlzQ29uc3Ry
YWludFNldChjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXRNYXAmKT4mIGNhbGxiYWNrKQorYm9vbCBNZWRpYUNvbnN0cmFpbnRzOjppc0NvbnN0cmFp
bnRTZXQoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1h
cCYpPiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGNhbGxiYWNrKG1hbmRhdG9yeUNvbnN0cmFpbnRz
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKaW5kZXggZTJhYWYyNzcxMDI2Y2Mx
OGI3ODBkOWE3ODYxYWMzMTkxNDU0N2ZiYy4uYmEwMjhmNGRiZGZkMTllYjEyYTZjN2ZlYzZjYTA0
NDg2OTY1MTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFDb25zdHJhaW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHMuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgVmFsdWVUeXBlIGZpbmQoY29uc3QgV1RG
OjpGdW5jdGlvbjxib29sKFZhbHVlVHlwZSk+JiBmdW5jdGlvbikgY29uc3QKKyAgICBWYWx1ZVR5
cGUgZmluZChjb25zdCBGdW5jdGlvbjxib29sKFZhbHVlVHlwZSk+JiBmdW5jdGlvbikgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChtX21pbiAmJiBmdW5jdGlvbihtX21pbi52YWx1ZSgpKSkKICAg
ICAgICAgICAgIHJldHVybiBtX21pbi52YWx1ZSgpOwpAQCAtNTkyLDcgKzU5Miw3IEBAIHB1Ymxp
YzoKICAgICBkb3VibGUgZml0bmVzc0Rpc3RhbmNlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IGRvdWJsZSBmaXRuZXNzRGlzdGFuY2UoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKIAot
ICAgIGNvbnN0IFN0cmluZyYgZmluZChjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woY29uc3QgU3Ry
aW5nJik+JikgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBmaW5kKGNvbnN0IEZ1bmN0aW9uPGJv
b2woY29uc3QgU3RyaW5nJik+JikgY29uc3Q7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2V4YWN0LmlzRW1wdHkoKSAmJiBtX2lkZWFsLmlzRW1wdHkoKTsgfQogICAgIGJv
b2wgaXNNYW5kYXRvcnkoKSBjb25zdCB7IHJldHVybiAhbV9leGFjdC5pc0VtcHR5KCk7IH0KQEAg
LTY0OSw4ICs2NDksOCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcCB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoKFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKT4mJikgY29uc3Q7Ci0gICAgdm9pZCBm
aWx0ZXIoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpPiYp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaChGdW5jdGlvbjx2b2lkKGNv
bnN0IE1lZGlhQ29uc3RyYWludCYpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZpbHRlcihjb25zdCBG
dW5jdGlvbjxib29sKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpPiYpIGNvbnN0OwogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAKQEAgLTg5NCw3ICs4OTQsNyBAQCBwcml2YXRlOgogCiBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50
cyB7CiAgICAgdm9pZCBzZXREZWZhdWx0VmlkZW9Db25zdHJhaW50cygpOwotICAgIGJvb2wgaXND
b25zdHJhaW50U2V0KGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcCYpPiYpOworICAgIGJvb2wgaXNDb25zdHJhaW50U2V0KGNvbnN0IEZ1bmN0
aW9uPGJvb2woY29uc3QgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAmKT4mKTsKIAogICAgIE1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIG1hbmRhdG9yeUNvbnN0cmFpbnRzOwogICAgIFZlY3Rv
cjxNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcD4gYWR2YW5jZWRDb25zdHJhaW50czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuaAppbmRleCAwNGE1ZmJkMjBkNWQ1OTA1MTY5NmE5NGMxZGI3MmUxNGIwMjMwYTNj
Li5kZWNkOTA3OTY3YjM5YWU5ZWE2NWIyNzFlNjUzNjkzYjY0ZjRlYjZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZS5oCkBAIC0yMjIsNyArMjIyLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2UoVHlwZSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGV2aWNlSUQgPSB7
IH0sIFN0cmluZyYmIGhhc2hTYWx0ID0geyB9KTsKIAotICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJl
ZFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2NoZWR1bGVEZWZlcnJl
ZFRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbmZp
Z3VyYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRleCBlZWZiMWM5MTkzYmI5YzlhMDM2YmRlZmJjNTBiZTk2
YTYwOTU1MzRmLi5lMDhiNTI5ZjgyYmJjY2Q2NjZjMzM1N2FhN2U3NzU0NDdlZDA1NmEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEdTdHJlYW1lckRpc3BsYXlD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5k
bAogewogICAgIG1fZGV2aWNlcy5jbGVhcigpOwogCi0gICAgQ2FwdHVyZURldmljZSBzY3JlZW5D
YXB0dXJlRGV2aWNlKFdURjo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1ha2VTdHJpbmcoIkNhcHR1cmUgU2NyZWVuIikpOwor
ICAgIENhcHR1cmVEZXZpY2Ugc2NyZWVuQ2FwdHVyZURldmljZShjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgbWFrZVN0cmluZygi
Q2FwdHVyZSBTY3JlZW4iKSk7CiAgICAgc2NyZWVuQ2FwdHVyZURldmljZS5zZXRFbmFibGVkKHRy
dWUpOwogICAgIG1fZGV2aWNlcy5hcHBlbmQoV1RGTW92ZShzY3JlZW5DYXB0dXJlRGV2aWNlKSk7
CiAgICAgY2FsbGJhY2soKTsKQEAgLTc2LDggKzc2LDggQEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3Ig
R1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVy
ZVMKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBhdXRvIHRva2VuID0gbWFrZVN0
cmluZygiV2ViS2l0IiwgV1RGOjp3ZWFrUmFuZG9tVWludDMyKCkpOwotICAgIGF1dG8gc2Vzc2lv
blRva2VuID0gbWFrZVN0cmluZygiV2ViS2l0IiwgV1RGOjp3ZWFrUmFuZG9tVWludDMyKCkpOwor
ICAgIGF1dG8gdG9rZW4gPSBtYWtlU3RyaW5nKCJXZWJLaXQiLCB3ZWFrUmFuZG9tVWludDMyKCkp
OworICAgIGF1dG8gc2Vzc2lvblRva2VuID0gbWFrZVN0cmluZygiV2ViS2l0Iiwgd2Vha1JhbmRv
bVVpbnQzMigpKTsKICAgICBHVmFyaWFudEJ1aWxkZXIgb3B0aW9uczsKICAgICBnX3ZhcmlhbnRf
YnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKICAgICBnX3Zh
cmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsIGdfdmFy
aWFudF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7CkBAIC0xMDAsNyArMTAwLDcg
QEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgR1N0cmVhbWVyRGlzcGxheUNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpjcmVhdGVEaXNwbGF5Q2FwdHVyZVMKICAgICAvLyBGSVhNRTogTWF5YmUgY2hlY2sgdGhp
cyBkZXBlbmRpbmcgb24gZGV2aWNlLnR5cGUoKS4KICAgICBhdXRvIG91dHB1dFR5cGUgPSBHU3Ry
ZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OlBpcGVXaXJlT3V0cHV0VHlwZTo6TW9u
aXRvciB8IEdTdHJlYW1lckRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcjo6UGlwZVdpcmVPdXRw
dXRUeXBlOjpXaW5kb3c7CiAKLSAgICB0b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIFdURjo6
d2Vha1JhbmRvbVVpbnQzMigpKTsKKyAgICB0b2tlbiA9IG1ha2VTdHJpbmcoIldlYktpdCIsIHdl
YWtSYW5kb21VaW50MzIoKSk7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmb3B0aW9ucywg
R19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZvcHRp
b25zLCAie3N2fSIsICJoYW5kbGVfdG9rZW4iLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyh0b2tlbi5h
c2NpaSgpLmRhdGEoKSkpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmb3B0aW9ucywgIntz
dn0iLCAidHlwZXMiLCBnX3ZhcmlhbnRfbmV3X3VpbnQzMihzdGF0aWNfY2FzdDx1aW50MzJfdD4o
b3V0cHV0VHlwZSkpKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBH
U3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZURpc3BsYXlDYXB0dXJl
UwogICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKG8pIiwgJm9iamVjdFBhdGgub3V0
UHRyKCkpOwogICAgIHdhaXRSZXNwb25zZVNpZ25hbChvYmplY3RQYXRoLmdldCgpKTsKIAotICAg
IHRva2VuID0gbWFrZVN0cmluZygiV2ViS2l0IiwgV1RGOjp3ZWFrUmFuZG9tVWludDMyKCkpOwor
ICAgIHRva2VuID0gbWFrZVN0cmluZygiV2ViS2l0Iiwgd2Vha1JhbmRvbVVpbnQzMigpKTsKICAg
ICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZvcHRpb25zLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNU
KTsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJm9wdGlvbnMsICJ7c3Z9IiwgImhhbmRsZV90
b2tlbiIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKHRva2VuLmFzY2lpKCkuZGF0YSgpKSk7CiAgICAg
cmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX3N5bmMobV9wcm94eS5nZXQoKSwg
IlN0YXJ0IiwKQEAgLTE1NCw3ICsxNTQsNyBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBHU3RyZWFt
ZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6OmNyZWF0ZURpc3BsYXlDYXB0dXJlUwogICAg
IGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKGgpIiwgJmZkT3V0KTsKICAgICBmZCA9IGdf
dW5peF9mZF9saXN0X2dldChmZExpc3QuZ2V0KCksIGZkT3V0LCBudWxscHRyKTsKIAotICAgIGF1
dG8gc2Vzc2lvbiA9IFdURjo6bWFrZVVuaXF1ZTxHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmlj
ZU1hbmFnZXI6OlNlc3Npb24+KGZkLCBXVEZNb3ZlKHNlc3Npb25QYXRoKSk7CisgICAgYXV0byBz
ZXNzaW9uID0gbWFrZVVuaXF1ZTxHU3RyZWFtZXJEaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXI6
OlNlc3Npb24+KGZkLCBXVEZNb3ZlKHNlc3Npb25QYXRoKSk7CiAgICAgbV9zZXNzaW9ucy5hZGQo
ZGV2aWNlLnBlcnNpc3RlbnRJZCgpLCBXVEZNb3ZlKHNlc3Npb24pKTsKICAgICByZXR1cm4gR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQaXBld2lyZVNvdXJjZShkZXZpY2UucGVy
c2lzdGVudElkKCkuaXNvbGF0ZWRDb3B5KCksIGZkLCB7IH0sIGNvbnN0cmFpbnRzLCBkZXZpY2Uu
dHlwZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IGZlMzI3NTk2YTJmMGRiZTM2ZDFkNjgyZmZiOTQ0YjI0
OTcxYjAwYjIuLjJmYTc1ZTA1N2E1M2Q3ZTgxOGNjZmFmZWU3MDI0M2RkNTQ4MjE4NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgICAgICBQZXJtaXNzaW9uU3RhdGVB
bGxvd2VkLAogICAgICAgICBQZXJtaXNzaW9uU3RhdGVEZW5pZWQsCiAgICAgfSBtX3Blcm1pc3Np
b25TdGF0ZTsKLSAgICB0eXBlZGVmIFdURjo6SGFzaFNldDxSZWZQdHI8R2VvbG9jYXRpb24+ID4g
R2VvbG9jYXRpb25TZXQ7CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4+
IEdlb2xvY2F0aW9uU2V0OwogICAgIEdlb2xvY2F0aW9uU2V0IG1fcGVuZGluZ1Blcm1pc3Npb247
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnlNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlNb2NrLmgKaW5kZXggODFkODIxMzBm
ODM5YjlkMTI3NzUzMjQ1NDdiY2U5ZmY3MWIwNzg3Zi4uYjc4YzQ0YjY0Nzg2ZTIxNDBkYTM0MWE1
YjI2MmUzM2ViNzFhNjc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeU1vY2suaApA
QCAtMzcsOCArMzcsOCBAQCBzdHJ1Y3QgTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb247CiBzdHJ1
Y3QgTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb247CiAKIHN0cnVjdCBNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5TW9jayB7Ci0gICAgdXNpbmcgRGVjb2RpbmdDb25maWd1cmF0aW9uQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8m
Jik+OwotICAgIHVzaW5nIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPjsKKyAgICB1c2luZyBE
ZWNvZGluZ0NvbmZpZ3VyYXRpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmls
aXRpZXNEZWNvZGluZ0luZm8mJik+OworICAgIHVzaW5nIEVuY29kaW5nQ29uZmlndXJhdGlvbkNh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbyYmKT47
CiAKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVEZWNvZGluZ0NvbmZpZ3VyYXRpb24oTWVkaWFEZWNv
ZGluZ0NvbmZpZ3VyYXRpb24mJiwgRGVjb2RpbmdDb25maWd1cmF0aW9uQ2FsbGJhY2smJik7CiAg
ICAgc3RhdGljIHZvaWQgY3JlYXRlRW5jb2RpbmdDb25maWd1cmF0aW9uKE1lZGlhRW5jb2RpbmdD
b25maWd1cmF0aW9uJiYsIEVuY29kaW5nQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1v
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxl
ck1vY2suY3BwCmluZGV4IGQ2Y2YwMjgyYmJhYmU4OTJhN2M0MDBiNzRkZDhkYTE1ZTBmZjEzZmIu
LjU5NmJlZWI2MTMzYTA2YmIzOGU1M2NmNTc3YTM4OTljYWRjZGUzZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9j
ay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JvbGxi
YXJzQ29udHJvbGxlck1vY2s6OlNjcm9sbGJhcnNDb250cm9sbGVyTW9jayhTY3JvbGxhYmxlQXJl
YSYgc2Nyb2xsYWJsZUFyZWEsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBs
b2dnZXIpCitTY3JvbGxiYXJzQ29udHJvbGxlck1vY2s6OlNjcm9sbGJhcnNDb250cm9sbGVyTW9j
ayhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYgbG9nZ2VyKQogICAgIDogU2Nyb2xsYmFyc0NvbnRyb2xsZXIoc2Nyb2xsYWJsZUFy
ZWEpCiAgICAgLCBtX2xvZ2dlcihXVEZNb3ZlKGxvZ2dlcikpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9jay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJzQ29udHJvbGxlck1vY2suaAppbmRl
eCBhNDczMzkzMTEyZDg0YWE1M2VkMmI2NzllZmYwODQ2NzMzYjg4MmJmLi5jYjMwMzZhNTg5MDI5
NzQ2ZmYwNDI5MzM4NjZiZjhjN2VlODcxMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1Njcm9sbGJhcnNDb250cm9sbGVyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgY2xhc3MgU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrIGZpbmFsIDogcHVibGljIFNjcm9s
bGJhcnNDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY3JvbGxiYXJzQ29udHJvbGxlck1vY2spOwogcHVibGljOgotICAg
IFNjcm9sbGJhcnNDb250cm9sbGVyTW9jayhTY3JvbGxhYmxlQXJlYSYsIFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgU2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrKFNj
cm9sbGFibGVBcmVhJiwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdmly
dHVhbCB+U2Nyb2xsYmFyc0NvbnRyb2xsZXJNb2NrKCk7CiAKIHByaXZhdGU6CkBAIC02MSw3ICs2
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtb3VzZUlzRG93bkluU2Nyb2xsYmFyKFNjcm9sbGJh
ciosIGJvb2wpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIHNjcm9sbGJhclByZWZpeChT
Y3JvbGxiYXIqKSBjb25zdDsKIAotICAgIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4gbV9sb2dnZXI7CisgICAgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9sb2dnZXI7
CiAgICAgU2Nyb2xsYmFyKiBtX3ZlcnRpY2FsU2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogICAgIFNj
cm9sbGJhciogbV9ob3Jpem9udGFsU2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmlu
ZGV4IDcwMjU5NDQ3MWFkM2Q4NGRhNjI0NTA1ZTZhYTJkNmZkODJhMmUwNjIuLjY3YTc2Mjk1ZDg1
ZjM5MWM4M2IyNDAwZTZkMWZlNTc5Y2NkZWQ4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMjg0LDcgKzI4NCw3
IEBAIGJvb2wgQmxvYlJlZ2lzdHJ5SW1wbDo6cG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5nKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMCiAKIHN0YXRpYyBib29sIHdyaXRlRmlsZVBhdGhz
T3JEYXRhQnVmZmVyc1RvRmlsZShjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgVGhyZWFk
U2FmZURhdGFCdWZmZXI+PiYgZmlsZVBhdGhzT3JEYXRhQnVmZmVycywgRmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBhdXRvIGZp
bGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW2ZpbGVdKCkgbXV0YWJsZSB7CisgICAgYXV0
byBmaWxlQ2xvc2VyID0gbWFrZVNjb3BlRXhpdChbZmlsZV0oKSBtdXRhYmxlIHsKICAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llU3RvcmFnZS5oCmluZGV4IDc2NTYyOWRmMThlZjQy
Yjc5NTdiZmI3MDMwZjgxMWIwMTExM2NkMDQuLmQ5YTAyYTU2YTZkNmYyMGQ5NzQ1NGMzN2Q4MTBj
YTY4OGRlMzY0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q29va2llU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29v
a2llU3RvcmFnZS5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogCi1XRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogV0VCQ09S
RV9FWFBPUlQgdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5oCmluZGV4IDk0NzI4NjNiM2IwMWYwOTMxYzFjOTQ0NDU3YmI0YjRjZmU4NGNm
NWUuLmE5YjI5ZDU5ZTlhYTNiNDY1NTQxNWJkOGJlZjA5ODRjNTQ0YjczZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgc3RydWN0IFJlc3VsdCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiB9Owog
Ci11c2luZyBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZCAoc3Rk
OjpvcHRpb25hbDxSZXN1bHQ+KT47Cit1c2luZyBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciA9IEZ1
bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxSZXN1bHQ+KT47CiBzdHJ1Y3QgU2NoZWR1bGVDb250
ZXh0IHsKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0
IHNjaGVkdWxlZFBhaXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcAppbmRleCAyZmVmZDgwZDkxYWRhNjU2NzVjZjdlYTI4ZTI5OGNmY2JjMjIw
MGQ0Li5mM2Y4N2E0ZjdlOWJiOGU3NzY3YTllODkxNTdiN2IyZTYzYzNlN2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUcnVlIGlmIGNoYXJhY3RlcnMgd2hpY2gg
c2F0aXNmeSB0aGUgcHJlZGljYXRlIGFyZSBwcmVzZW50LCBpbmNyZW1lbnRpbmcKIC8vICJwb3Mi
IHRvIHRoZSBuZXh0IGNoYXJhY3RlciB3aGljaCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBwcmVkaWNh
dGUuCiAvLyBOb3RlOiBtaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKS4KLXN0YXRpYyBp
bmxpbmUgYm9vbCBza2lwV2hpbGUoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3MsIGNv
bnN0IFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBVQ2hhcik+JiBwcmVkaWNhdGUpCitzdGF0aWMg
aW5saW5lIGJvb2wgc2tpcFdoaWxlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCYgcG9zLCBj
b25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFVDaGFyKT4mIHByZWRpY2F0ZSkKIHsKICAgICBjb25z
dCB1bnNpZ25lZCBzdGFydCA9IHBvczsKICAgICBjb25zdCB1bnNpZ25lZCBsZW4gPSBzdHIubGVu
Z3RoKCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiAjaWYgVVNFKEdMSUIpCiAvLyBUcnVlIGlmIHRoZSBjaGFyYWN0ZXIgYXQg
dGhlIGdpdmVuIHBvc2l0aW9uIHNhdGlzaWZpZXMgYSBwcmVkaWNhdGUsIGluY3JlbWVudGluZyAi
cG9zIiBieSBvbmUuCiAvLyBOb3RlOiBNaWdodCByZXR1cm4gcG9zID09IHN0ci5sZW5ndGgoKQot
c3RhdGljIGlubGluZSBib29sIHNraXBDaGFyYWN0ZXIoY29uc3QgU3RyaW5nJiB2YWx1ZSwgdW5z
aWduZWQmIHBvcywgV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFVDaGFyKT4mJiBwcmVkaWNhdGUp
CitzdGF0aWMgaW5saW5lIGJvb2wgc2tpcENoYXJhY3Rlcihjb25zdCBTdHJpbmcmIHZhbHVlLCB1
bnNpZ25lZCYgcG9zLCBGdW5jdGlvbjxib29sKGNvbnN0IFVDaGFyKT4mJiBwcmVkaWNhdGUpCiB7
CiAgICAgaWYgKHBvcyA8IHZhbHVlLmxlbmd0aCgpICYmIHByZWRpY2F0ZSh2YWx1ZVtwb3NdKSkg
ewogICAgICAgICArK3BvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKaW5kZXggNDNiODExYzM5MzJkY2E0YTYx
YWFkMDdjYTlkNTEzNWE1ZGU4ZmM4ZC4uN2U5MWZhZjVjMjZhYjdmZTMwNTAzMjkxNjU2ODM1NmYy
OTRjOGZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RhdGVOb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBOZXR3b3Jr
U3RhdGVOb3RpZmllcjo6b25MaW5lKCkKICAgICByZXR1cm4gbV9pc09uTGluZS52YWx1ZV9vcih0
cnVlKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTGlzdGVuZXIoV1RGOjpG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmIGxpc3RlbmVyKQordm9pZCBOZXR3b3JrU3RhdGVOb3RpZmll
cjo6YWRkTGlzdGVuZXIoRnVuY3Rpb248dm9pZChib29sKT4mJiBsaXN0ZW5lcikKIHsKICAgICBB
U1NFUlQobGlzdGVuZXIpOwogICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVy
LmgKaW5kZXggM2ZjMjU5ODY4YjZjYjQ4NmY3NDE0ZmRiMmExZDBmMjZlY2YxNWM3MS4uODM4MGUy
MThkODczNmFhMmQ5YTk1OTI0ZDEyOWQ2MWU0NGJjOTQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaApAQCAtNTAs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5ldHdvcmtTdGF0
ZU5vdGlmaWVyJiBzaW5nbGV0b24oKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb25MaW5l
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRMaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCBpc09uTGluZSk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTGlzdGVu
ZXIoRnVuY3Rpb248dm9pZChib29sIGlzT25MaW5lKT4mJik7CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPE5ldHdvcmtTdGF0ZU5vdGlmaWVyPjsKQEAgLTcyLDcgKzcyLDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2lzT25MaW5l
OwotICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+PiBtX2xpc3RlbmVyczsKKyAg
ICBWZWN0b3I8RnVuY3Rpb248dm9pZChib29sKT4+IG1fbGlzdGVuZXJzOwogICAgIFRpbWVyIG1f
dXBkYXRlU3RhdGVUaW1lcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5l
dC5jcHAKaW5kZXggZjNkNzQ0ZmRlYjYwMWFkMmE5OTVjYmVjNjUwM2YyODcyNjI0YWZlMS4uZGEx
NzM0NGUyNDk4NjRhZTczOTE2YmQ1ZDFmZjg2Y2M3N2JkZDllOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNw
cApAQCAtMzcsOSArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBIYXNo
TWFwPENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+JiBjb29r
aWVDaGFuZ2VDYWxsYmFja01hcCgpCitzdGF0aWMgSGFzaE1hcDxDRkhUVFBDb29raWVTdG9yYWdl
UmVmLCBGdW5jdGlvbjx2b2lkKCk+PiYgY29va2llQ2hhbmdlQ2FsbGJhY2tNYXAoKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoKT4+PiBtYXA7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hNYXA8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgRnVuY3Rpb248dm9pZCgpPj4+IG1hcDsKICAg
ICByZXR1cm4gbWFwOwogfQogCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZSdW5M
b29wUmVmIGNvb2tpZVN0b3JhZ2VPYnNlcnZlclJ1bkxvb3AoKQogICAgIHJldHVybiBsb2FkZXJS
dW5Mb29wKCk7CiB9CiAKLXZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNh
bGxiYWNrKQordm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZVN0b3JhZ2VPYnNlcnZlci5oCmlu
ZGV4IGMyMmQ5MzcwM2JlNGE2Y2EwMWFiM2QyMjQ4ZmI3M2Y5YTJkMGRjZjUuLmFjNTM0OTllNzJh
NjExYmQ1NDA5MWNiMWNhYmFlYzU5ZGU5OGY4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llU3RvcmFnZU9ic2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVTdG9yYWdlT2JzZXJ2ZXIu
aApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU0hUVFBDb29raWVT
dG9yYWdlPiBtX2Nvb2tpZVN0b3JhZ2U7CiAgICAgYm9vbCBtX2hhc1JlZ2lzdGVyZWRJbnRlcm5h
bHNGb3JOb3RpZmljYXRpb25zIHsgZmFsc2UgfTsKICAgICBSZXRhaW5QdHI8V2ViQ29va2llT2Jz
ZXJ2ZXJBZGFwdGVyPiBtX29ic2VydmVyQWRhcHRlcjsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4gbV9jb29raWVDaGFuZ2VDYWxsYmFjazsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fY29va2ll
Q2hhbmdlQ2FsbGJhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRl
eCA4ZWNhZWRjNDNmMzUyYmU4MDVmNjFhMTZmMzdjZDUyZDZiOGZkNGJiLi45NWQ3NjhhY2UwODBi
MmY2NjI1OTE1MTU0MWNhY2I4OWQxNGJjMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTUxMSw3ICs1MTEsNyBA
QCBib29sIENvb2tpZUphckRCOjpjYW5BY2NlcHRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgYwogYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNv
bnN0IENvb2tpZSYgY29va2llKQogewogICAgIGF1dG8gZXhwaXJlcyA9IGNvb2tpZS5leHBpcmVz
LnZhbHVlX29yKDAuMCk7Ci0gICAgaWYgKCFjb29raWUuc2Vzc2lvbiAmJiBNb25vdG9uaWNUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhleHBpcmVzIC8gV1RGOjptc1BlclNlY29uZCkgPD0gTW9ub3Rvbmlj
VGltZTo6bm93KCkpCisgICAgaWYgKCFjb29raWUuc2Vzc2lvbiAmJiBNb25vdG9uaWNUaW1lOjpm
cm9tUmF3U2Vjb25kcyhleHBpcmVzIC8gbXNQZXJTZWNvbmQpIDw9IE1vbm90b25pY1RpbWU6Om5v
dygpKQogICAgICAgICByZXR1cm4gZGVsZXRlQ29va2llSW50ZXJuYWwoY29va2llLm5hbWUsIGNv
b2tpZS5kb21haW4sIGNvb2tpZS5wYXRoKTsKIAogICAgIGF1dG8mIHN0YXRlbWVudCA9IHByZXBh
cmVkU3RhdGVtZW50KFNFVF9DT09LSUVfU1FMKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCBib29sIENv
b2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJgogICAgIGlmIChjYXBwZWRMaWZldGltZSAmJiBjb29raWUtPmV4cGly
ZXMpIHsKICAgICAgICAgQVNTRVJUKCpjYXBwZWRMaWZldGltZSA+PSAwX3MpOwogICAgICAgICBh
dXRvIGNhcHBlZEV4cGlyZXMgPSBXYWxsVGltZTo6bm93KCkgKyAqY2FwcGVkTGlmZXRpbWU7Ci0g
ICAgICAgIGlmIChjYXBwZWRFeHBpcmVzIDwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCpjb29r
aWUtPmV4cGlyZXMgLyBXVEY6Om1zUGVyU2Vjb25kKSkKKyAgICAgICAgaWYgKGNhcHBlZEV4cGly
ZXMgPCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoKmNvb2tpZS0+ZXhwaXJlcyAvIG1zUGVyU2Vj
b25kKSkKICAgICAgICAgICAgIGNvb2tpZS0+ZXhwaXJlcyA9IGNhcHBlZEV4cGlyZXMuc2Vjb25k
c1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVTdG9yYWdlQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llU3RvcmFnZUN1cmwuY3Bw
CmluZGV4IGUyZWZhNTRkNmE0YjdiNzM3YjU1MTRkOThlNjZjODk5ZjNhYjZmZjUuLjVlM2FkZjBh
NzA1MzQ4MmMzYjM5ZGE1Yzk2ZWQ3YWVlMmYzOWYxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVTdG9yYWdlQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVN0b3JhZ2VDdXJsLmNwcApA
QCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmKQordm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgRnVuY3Rpb248dm9pZCgpPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
VXRpbC5jcHAKaW5kZXggMWFlMzg5MDlmYzE2Nzg0MTc1OGY4ZDI1M2EzMjZjMDQ2NTVkZjg3ZC4u
MzY1Zjc2NmEyYTA5ZTVjNTE4MDE5NDYwMmZmNWIzMzA0YWQ5NmM2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApAQCAtNjEs
NyArNjEsNyBAQCBib29sIGRvbWFpbk1hdGNoKGNvbnN0IFN0cmluZyYgY29va2llRG9tYWluLCBj
b25zdCBTdHJpbmcmIGhvc3QpCiB7CiAgICAgc2l6ZV90IGluZGV4ID0gaG9zdC5maW5kKGNvb2tp
ZURvbWFpbik7CiAKLSAgICBib29sIHRhaWxNYXRjaCA9IChpbmRleCAhPSBXVEY6Om5vdEZvdW5k
ICYmIGluZGV4ICsgY29va2llRG9tYWluLmxlbmd0aCgpID09IGhvc3QubGVuZ3RoKCkpOworICAg
IGJvb2wgdGFpbE1hdGNoID0gKGluZGV4ICE9IG5vdEZvdW5kICYmIGluZGV4ICsgY29va2llRG9t
YWluLmxlbmd0aCgpID09IGhvc3QubGVuZ3RoKCkpOwogCiAgICAgLy8gQ2hlY2sgaWYgaG9zdCBl
cXVhbHMgY29va2llIGRvbWFpbi4KICAgICBpZiAodGFpbE1hdGNoICYmICFpbmRleCkKQEAgLTgy
LDcgKzgyLDcgQEAgYm9vbCBkb21haW5NYXRjaChjb25zdCBTdHJpbmcmIGNvb2tpZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBob3N0KQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNl
RXhwaXJlc01TKGNvbnN0IGNoYXIqIGV4cGlyZXMpCiB7Ci0gICAgZG91YmxlIHRtcCA9IFdURjo6
cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhleHBpcmVzKTsKKyAgICBkb3Vi
bGUgdG1wID0gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhleHBpcmVzKTsK
ICAgICBpZiAoaXNuYW4odG1wKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTE4LDcgKzEx
OCw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0
dHJpYnV0ZSwgYm9vbCYgaGFzTWF4QWdlLCBDb29rCiAKICAgICB9IGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlTmFtZSwgIm1heC1hZ2UiKSkgewogICAgICAgICBpZiAo
YXV0byBtYXhBZ2VTZWNvbmRzID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
NjRfdD4oYXR0cmlidXRlVmFsdWUpKSB7Ci0gICAgICAgICAgICByZXN1bHQuZXhwaXJlcyA9IChX
YWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpICsgKm1heEFnZVNlY29u
ZHMpICogV1RGOjptc1BlclNlY29uZDsKKyAgICAgICAgICAgIHJlc3VsdC5leHBpcmVzID0gKFdh
bGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgKyAqbWF4QWdlU2Vjb25k
cykgKiBtc1BlclNlY29uZDsKICAgICAgICAgICAgIHJlc3VsdC5zZXNzaW9uID0gZmFsc2U7CiAK
ICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgbWF4LWFnZSBhdHRyaWJ1dGUgYXMgd2VsbCBh
cyBhbiBleHBpcmVzIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKaW5kZXggMGQ0
ODYwOTk5YTAzMDY3NTE3MDc3NzRmNjg2NzcyYzBmMzU1NzY1Mi4uMjQ1N2JiNGQ3YzJiY2MxNzE4
NzVhOTI5ZTRiNzhmNGY4YjE4YzcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCkBAIC02
NCw3ICs2NCw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbmNlbChDdXJsUmVxdWVz
dFNjaGVkdWxlckNsaWVudCogY2xpZW50KQogICAgIGNhbmNlbFRyYW5zZmVyKGNsaWVudCk7CiB9
CiAKLXZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZChXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQordm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FsbE9u
V29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIHsKICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0U2NoZWR1bGVyOjpleGVjdXRlVGFza3MoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gdGFza1F1ZXVlOwor
ICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiB0YXNrUXVldWU7CiAKICAgICB7CiAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCmluZGV4IDIz
ODk5ZDRkZGQ2MTE2OGM2OThiZTRkNDMzNDU1MTU1YzQzYzU4YjAuLmRiYzBiZjk5ZDRmNzU2ZWUy
NDc0ZDRmMTE5NjhjMjUyMGQyNjAyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCkBAIC00OCw3
ICs0OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFkZChDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVu
dCopOwogICAgIHZvaWQgY2FuY2VsKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50Kik7CiAKLSAg
ICB2b2lkIGNhbGxPbldvcmtlclRocmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAg
dm9pZCBjYWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIHN0YXJ0T3JXYWtlVXBUaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAppbmRleCAyOTE5MGM3ODk4OTEz
ZWI0MDgxYTViZjgyZWFiYTMyMDFkMDQ0NmY1Li5jMDcwNGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1
MzliZjViMzdkNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC0zOSw3ICszOSw3IEBAIEN1cmxTdHJlYW06OkN1cmxT
dHJlYW0oQ3VybFN0cmVhbVNjaGVkdWxlciYgc2NoZWR1bGVyLCBDdXJsU3RyZWFtSUQgc3RyZWFt
SUQsIFVSCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2N1cmxIYW5k
bGUgPSBXVEY6Om1ha2VVbmlxdWU8Q3VybEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUgPSBt
YWtlVW5pcXVlPEN1cmxIYW5kbGU+KCk7CiAKICAgICB1cmwuc2V0UHJvdG9jb2wodXJsLnByb3Rv
Y29sSXMoIndzcyIpID8gImh0dHBzIiA6ICJodHRwIik7CiAgICAgbV9jdXJsSGFuZGxlLT5zZXRV
cmwoV1RGTW92ZSh1cmwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFN0cmVhbS5oCmluZGV4IGU2NDYyOWZjMjJhMjA5N2EyYWYwYjBjMDEzOWIyM2Q3
OTA4Y2YzZGMuLjRmNTliMjBlOGRiMjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRmM2EwYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEN1
cmxTdHJlYW0+IGNyZWF0ZShDdXJsU3RyZWFtU2NoZWR1bGVyJiBzY2hlZHVsZXIsIEN1cmxTdHJl
YW1JRCBzdHJlYW1JRCwgVVJMJiYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6bWFr
ZVVuaXF1ZTxDdXJsU3RyZWFtPihzY2hlZHVsZXIsIHN0cmVhbUlELCBXVEZNb3ZlKHVybCkpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXJsU3RyZWFtPihzY2hlZHVsZXIsIHN0cmVhbUlE
LCBXVEZNb3ZlKHVybCkpOwogICAgIH0KIAogICAgIEN1cmxTdHJlYW0oQ3VybFN0cmVhbVNjaGVk
dWxlciYsIEN1cmxTdHJlYW1JRCwgVVJMJiYpOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxIYW5kbGU+IG1fY3VybEhhbmRsZTsKIAotICAgIFdU
Rjo6VmVjdG9yPHN0ZDo6cGFpcjxVbmlxdWVBcnJheTx1aW50OF90Piwgc2l6ZV90Pj4gbV9zZW5k
QnVmZmVyczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFVuaXF1ZUFycmF5PHVpbnQ4X3Q+LCBzaXpl
X3Q+PiBtX3NlbmRCdWZmZXJzOwogICAgIHNpemVfdCBtX3NlbmRCdWZmZXJPZmZzZXQgeyAwIH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFN0cmVhbVNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHAKaW5kZXggYjRhOWFiZDQ1MzA3ZTE0YjFiMDA4
MGM1ZmQ4NDkwYWNhZjdiYjU5OS4uZDk0ZmY0ZjkxNjlhNmMwYjVhZGI5NzE5ZjU1MDZkMGZiODBl
NmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW1TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEN1
cmxTdHJlYW1TY2hlZHVsZXI6OnNlbmQoQ3VybFN0cmVhbUlEIHN0cmVhbUlELCBVbmlxdWVBcnJh
eTx1aW50OF90PiYmIGRhdAogICAgIH0pOwogfQogCi12b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6
OmNhbGxPbldvcmtlclRocmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQordm9pZCBD
dXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYm
IHRhc2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtOTMsNyArOTMsNyBA
QCB2b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZChXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiB0YXNrKQogICAgIHN0YXJ0VGhyZWFkSWZOZWVkZWQoKTsKIH0KIAotdm9p
ZCBDdXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsQ2xpZW50T25NYWluVGhyZWFkKEN1cmxTdHJlYW1J
RCBzdHJlYW1JRCwgV1RGOjpGdW5jdGlvbjx2b2lkKEN1cmxTdHJlYW06OkNsaWVudCYpPiYmIHRh
c2spCit2b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxDbGllbnRPbk1haW5UaHJlYWQoQ3Vy
bFN0cmVhbUlEIHN0cmVhbUlELCBGdW5jdGlvbjx2b2lkKEN1cmxTdHJlYW06OkNsaWVudCYpPiYm
IHRhc2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTEzOSw3ICsxMzks
NyBAQCB2b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OmV4ZWN1dGVUYXNrcygpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkKCk+
PiB0YXNrUXVldWU7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IHRhc2tRdWV1ZTsKIAog
ICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxl
ci5oCmluZGV4IDdkODgxMjA2Yzk2ODlmNDMzMjI3OTY5YzliN2Y5ZmYyNjhiZGFhZWQuLjBjMzlj
OTBhYWM4ODRmY2E0ODg0OTM4OGFjYzFiNDJiYWQxNmQ2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIu
aApAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95U3RyZWFtKEN1cmxT
dHJlYW1JRCk7CiAgICAgdm9pZCBzZW5kKEN1cmxTdHJlYW1JRCwgVW5pcXVlQXJyYXk8dWludDhf
dD4mJiwgc2l6ZV90KTsKIAotICAgIHZvaWQgY2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmKTsKLSAgICB2b2lkIGNhbGxDbGllbnRPbk1haW5UaHJlYWQoQ3VybFN0cmVh
bUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ3VybFN0cmVhbTo6Q2xpZW50Jik+JiYpOworICAgIHZv
aWQgY2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBjYWxs
Q2xpZW50T25NYWluVGhyZWFkKEN1cmxTdHJlYW1JRCwgRnVuY3Rpb248dm9pZChDdXJsU3RyZWFt
OjpDbGllbnQmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFRocmVhZElmTmVlZGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJM
U291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1VSTFNvdXAuaApp
bmRleCAzZGU1NDUxNWNlZjA1OWI0NzZjYThhYWUyNzBiMTlmZTcyZjE0YjEzLi42NGI2MjAzNTIz
NWI1MmY1NWRiMWY3Y2FiY2I0MDVmYTVmZTNjOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmgKQEAgLTM0LDEwICszNCwxMCBAQCBjbGFzcyBV
Ukw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBVU0UoU09VUDIpCi1XVEY6OlVSTCBzb3Vw
VVJJVG9VUkwoU291cFVSSSopOwotR1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmxUb1NvdXBVUkkoY29u
c3QgV1RGOjpVUkwmKTsKK1VSTCBzb3VwVVJJVG9VUkwoU291cFVSSSopOworR1VuaXF1ZVB0cjxT
b3VwVVJJPiB1cmxUb1NvdXBVUkkoY29uc3QgVVJMJik7CiAjZWxzZQotV1RGOjpVUkwgc291cFVS
SVRvVVJMKEdVcmkqKTsKLUdSZWZQdHI8R1VyaT4gdXJsVG9Tb3VwVVJJKGNvbnN0IFdURjo6VVJM
Jik7CitVUkwgc291cFVSSVRvVVJMKEdVcmkqKTsKK0dSZWZQdHI8R1VyaT4gdXJsVG9Tb3VwVVJJ
KGNvbnN0IFVSTCYpOwogI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRleCA0NzMzZjk5OGI3
NTA3YWUzMTViYWEzMTI2ZDE4NjAxZGU2MmUzMDg4Li41MDAzMGI1MmMxODNiMTczZTY5ZmRhMjEz
NmFlNjYxZWZlNGNhMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5jcHAKQEAgLTY1MywxOSArNjUzLDE5IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6
OnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpCiAKIHN0YXRpYyB2b2lkIGRlc3Ryb3lDb2xs
YXRpb25GdW5jdGlvbih2b2lkKiBhcmcpCiB7Ci0gICAgYXV0byBmID0gc3RhdGljX2Nhc3Q8V1RG
OjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJn
KTsKKyAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lk
KiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKICAgICBkZWxldGUgZjsKIH0KIAogc3RhdGlj
IGludCBjYWxsQ29sbGF0aW9uRnVuY3Rpb24odm9pZCogYXJnLCBpbnQgYUxlbmd0aCwgY29uc3Qg
dm9pZCogYSwgaW50IGJMZW5ndGgsIGNvbnN0IHZvaWQqIGIpCiB7Ci0gICAgYXV0byBmID0gc3Rh
dGljX2Nhc3Q8V1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2
b2lkKik+Kj4oYXJnKTsKKyAgICBhdXRvIGYgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbjxpbnQoaW50
LCBjb25zdCB2b2lkKiwgaW50LCBjb25zdCB2b2lkKik+Kj4oYXJnKTsKICAgICByZXR1cm4gKCpm
KShhTGVuZ3RoLCBhLCBiTGVuZ3RoLCBiKTsKIH0KIAotdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0
Q29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBjb2xsYXRpb25OYW1lLCBXVEY6OkZ1bmN0
aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4mJiBjb2xsYXRpb25G
dW5jdGlvbikKK3ZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldENvbGxhdGlvbkZ1bmN0aW9uKGNvbnN0
IFN0cmluZyYgY29sbGF0aW9uTmFtZSwgRnVuY3Rpb248aW50KGludCwgY29uc3Qgdm9pZCosIGlu
dCwgY29uc3Qgdm9pZCopPiYmIGNvbGxhdGlvbkZ1bmN0aW9uKQogewotICAgIGF1dG8gZnVuY3Rp
b25PYmplY3QgPSBuZXcgV1RGOjpGdW5jdGlvbjxpbnQoaW50LCBjb25zdCB2b2lkKiwgaW50LCBj
b25zdCB2b2lkKik+KFdURk1vdmUoY29sbGF0aW9uRnVuY3Rpb24pKTsKKyAgICBhdXRvIGZ1bmN0
aW9uT2JqZWN0ID0gbmV3IEZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0
IHZvaWQqKT4oV1RGTW92ZShjb2xsYXRpb25GdW5jdGlvbikpOwogICAgIHNxbGl0ZTNfY3JlYXRl
X2NvbGxhdGlvbl92MihtX2RiLCBjb2xsYXRpb25OYW1lLnV0ZjgoKS5kYXRhKCksIFNRTElURV9V
VEY4LCBmdW5jdGlvbk9iamVjdCwgY2FsbENvbGxhdGlvbkZ1bmN0aW9uLCBkZXN0cm95Q29sbGF0
aW9uRnVuY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5oCmluZGV4IDhlZjdiYTkwZjM3ZTMzZWUyNWIzMzAwOGEwOWNmNWE1YzAzYTI2Njgu
LjMyYjgxMjZlZDIyY2QxNWVjZDk1MDZhZDI5ODVmMTdlNWE5NzY1ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC0xNDYsNyArMTQ2LDcgQEAg
cHVibGljOgogICAgIGVudW0gQXV0b1ZhY3V1bVByYWdtYSB7IEF1dG9WYWN1dW1Ob25lID0gMCwg
QXV0b1ZhY3V1bUZ1bGwgPSAxLCBBdXRvVmFjdXVtSW5jcmVtZW50YWwgPSAyIH07CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCB0dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29sbGF0aW9uRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBjb2xs
YXRpb25OYW1lLCBXVEY6OkZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZvaWQqLCBpbnQsIGNvbnN0
IHZvaWQqKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb2xsYXRpb25GdW5jdGlv
bihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUsIEZ1bmN0aW9uPGludChpbnQsIGNvbnN0IHZv
aWQqLCBpbnQsIGNvbnN0IHZvaWQqKT4mJik7CiAgICAgdm9pZCByZW1vdmVDb2xsYXRpb25GdW5j
dGlvbihjb25zdCBTdHJpbmcmIGNvbGxhdGlvbk5hbWUpOwogCiAgICAgLy8gU2V0IHRoaXMgZmxh
ZyB0byBhbGxvdyBhY2Nlc3MgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLiAgTm90IGFsbCBtdWx0aS10
aHJlYWRlZCBhY2Nlc3NlcyBhcmUgc2FmZSEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlYy5oCmluZGV4IGZiNzAxNmIzYzEwMTBkZTBlOGZjNDQ1ZDUzZWIyZDBmMTAwYTExMTku
LjRmYzBhY2YyZDRkMzY3MDgyMDlkYWEyNDcyNmQzMDM4MGU4NDczOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuaApAQCAtNjAsNyArNjAsNyBAQCBGdW5jdGlvbjx2
b2lkKFVDaGFyMzIsIFZlY3Rvcjx1aW50OF90PiYpPiB1bmVuY29kYWJsZUhhbmRsZXIoVW5lbmNv
ZGFibGVIYW5kbGluZwogCiB1c2luZyBFbmNvZGluZ05hbWVSZWdpc3RyYXIgPSB2b2lkICgqKShj
b25zdCBjaGFyKiBhbGlhcywgY29uc3QgY2hhciogbmFtZSk7CiAKLXVzaW5nIE5ld1RleHRDb2Rl
Y0Z1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPigpPjsK
K3VzaW5nIE5ld1RleHRDb2RlY0Z1bmN0aW9uID0gRnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFRl
eHRDb2RlYz4oKT47CiB1c2luZyBUZXh0Q29kZWNSZWdpc3RyYXIgPSB2b2lkICgqKShjb25zdCBj
aGFyKiBuYW1lLCBOZXdUZXh0Q29kZWNGdW5jdGlvbiYmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNT
aW5nbGVCeXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjU2lu
Z2xlQnl0ZS5jcHAKaW5kZXggODkwNjRjODBiMTNlZjcwMGNjZThiOGM5MTgwOTJiZGE0NTI4NWY2
Yy4uZjk0MjZmMzNjZjI4NDA5YjIyYjJiNGVlNDJmMTBjMjIzY2E1MjQ4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNTaW5nbGVCeXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1NpbmdsZUJ5dGUuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIGVudW0gY2xhc3MgVGV4dENvZGVjU2luZ2xlQnl0ZTo6RW5jb2Rpbmcg
OiB1aW50OF90IHsKIAogdXNpbmcgU2luZ2xlQnl0ZURlY29kZVRhYmxlID0gc3RkOjphcnJheTxV
Q2hhciwgMTI4PjsKIHVzaW5nIFNpbmdsZUJ5dGVFbmNvZGVUYWJsZUVudHJ5ID0gc3RkOjpwYWly
PFVDaGFyLCB1aW50OF90PjsKLXVzaW5nIFNpbmdsZUJ5dGVFbmNvZGVUYWJsZSA9IFdURjo6SXRl
cmF0b3JSYW5nZTxjb25zdCBTaW5nbGVCeXRlRW5jb2RlVGFibGVFbnRyeSo+OwordXNpbmcgU2lu
Z2xlQnl0ZUVuY29kZVRhYmxlID0gSXRlcmF0b3JSYW5nZTxjb25zdCBTaW5nbGVCeXRlRW5jb2Rl
VGFibGVFbnRyeSo+OwogCiAvLyBGcm9tIGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3Jn
L2luZGV4LWlzby04ODU5LTMudHh0IHdpdGggMHhGRkZEIGZpbGxpbmcgdGhlIGdhcHMKIHN0YXRp
YyBjb25zdGV4cHIgU2luZ2xlQnl0ZURlY29kZVRhYmxlIGlzbzg4NTkzIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hh
bnQuaAppbmRleCA4NDEzZGY1ZjY1MjIxMTY5ZGRmMDQ4YmQ0NDNhZDQ3MDY4MjljNjdiLi4yOGFl
NGFlODM2NjIzNjU3NzhlOWEzOWZhZjliOGQ3YzRiZGYyNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5o
CkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dENoZWNr
ZXJFbmNoYW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0Q2hlY2tlckVuY2hhbnQp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRl
c3Ryb3llZDxUZXh0Q2hlY2tlckVuY2hhbnQ+OworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ry
b3llZDxUZXh0Q2hlY2tlckVuY2hhbnQ+OwogcHVibGljOgogICAgIHN0YXRpYyBUZXh0Q2hlY2tl
ckVuY2hhbnQmIHNpbmdsZXRvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggZjBi
MTdiMjExM2MyZTVjZWFmNDZmZmFmNGMyOTJiYzA5NjcyZDFhNS4uYTU0YjY1YzUxMTgyMDZiNzE3
MTFiNDk3NzNjYTIxZDY2YzIwOTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMjk4
LDcgKzI5OCw3IEBAIHNpemVfdCBsYXN0SHlwaGVuTG9jYXRpb24oU3RyaW5nVmlldyBzdHJpbmcs
IHNpemVfdCBiZWZvcmVJbmRleCwgY29uc3QgQXRvbVN0cmluCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBkaWN0aW9uYXJ5UGF0aCA6IGF2YWlsYWJsZUxvY2FsZXMo
KS5nZXQobG93ZXJjYXNlTG9jYWxlSWRlbnRpZmllcikpIHsKLSAgICAgICAgUmVmUHRyPEh5cGhl
bmF0aW9uRGljdGlvbmFyeT4gZGljdGlvbmFyeSA9IFdURjo6VGlueUxSVUNhY2hlUG9saWN5PEF0
b21TdHJpbmcsIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+Pjo6Y2FjaGUoKS5nZXQoQXRv
bVN0cmluZyhkaWN0aW9uYXJ5UGF0aCkpOworICAgICAgICBSZWZQdHI8SHlwaGVuYXRpb25EaWN0
aW9uYXJ5PiBkaWN0aW9uYXJ5ID0gVGlueUxSVUNhY2hlUG9saWN5PEF0b21TdHJpbmcsIFJlZlB0
cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+Pjo6Y2FjaGUoKS5nZXQoQXRvbVN0cmluZyhkaWN0aW9u
YXJ5UGF0aCkpOwogCiAgICAgICAgIGNoYXIqKiByZXBsYWNlbWVudHMgPSBudWxscHRyOwogICAg
ICAgICBpbnQqIHBvc2l0aW9ucyA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9Q
bGF0Zm9ybVhSLmgKaW5kZXggMjkzNTNkYzU1MjU1YTBhYTkyOWYxMTMxOWNkY2I2NGQ1NzU3YWY2
ZC4uNTBmZDQ1YjA1OWEwYTgxMzExNTgxMGZkZTZjMDBjMWIyMWIyZDU2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtMjk0LDcgKzI5NCw3IEBAIHByb3RlY3Rl
ZDoKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4ci1kZXZp
Y2UtY29uY2VwdAogICAgIC8vIEVhY2ggWFIgZGV2aWNlIGhhcyBhIGxpc3Qgb2YgZW5hYmxlZCBm
ZWF0dXJlcyBmb3IgZWFjaCBYUlNlc3Npb25Nb2RlIGluIGl0cyBsaXN0IG9mIHN1cHBvcnRlZCBt
b2RlcywKICAgICAvLyB3aGljaCBpcyBhIGxpc3Qgb2YgZmVhdHVyZSBkZXNjcmlwdG9ycyB3aGlj
aCBNVVNUIGJlIGluaXRpYWxseSBhbiBlbXB0eSBsaXN0LgotICAgIHVzaW5nIEZlYXR1cmVzUGVy
TW9kZU1hcCA9IFdURjo6SGFzaE1hcDxTZXNzaW9uTW9kZSwgRmVhdHVyZUxpc3QsIFdURjo6SW50
SGFzaDxTZXNzaW9uTW9kZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8U2Vzc2lvbk1vZGU+
PjsKKyAgICB1c2luZyBGZWF0dXJlc1Blck1vZGVNYXAgPSBIYXNoTWFwPFNlc3Npb25Nb2RlLCBG
ZWF0dXJlTGlzdCwgSW50SGFzaDxTZXNzaW9uTW9kZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFp
dHM8U2Vzc2lvbk1vZGU+PjsKICAgICBGZWF0dXJlc1Blck1vZGVNYXAgbV9lbmFibGVkRmVhdHVy
ZXNNYXA7CiAgICAgRmVhdHVyZXNQZXJNb2RlTWFwIG1fc3VwcG9ydGVkRmVhdHVyZXNNYXA7CiAK
QEAgLTQ3Nyw3ICs0NzcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEZXZpY2U6
OkZyYW1lRGF0YTo6TGF5ZXJEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ICNpZiBVU0UoSU9TVVJGQUNFX0ZPUl9YUl9MQVlFUl9EQVRBKQotICAgIFdURjo6TWFjaFNlbmRS
aWdodCBzdXJmYWNlU2VuZFJpZ2h0ID0gc3VyZmFjZSA/IHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdo
dCgpIDogV1RGOjpNYWNoU2VuZFJpZ2h0KCk7CisgICAgTWFjaFNlbmRSaWdodCBzdXJmYWNlU2Vu
ZFJpZ2h0ID0gc3VyZmFjZSA/IHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpIDogTWFjaFNlbmRS
aWdodCgpOwogICAgIGVuY29kZXIgPDwgc3VyZmFjZVNlbmRSaWdodDsKICAgICBlbmNvZGVyIDw8
IGlzU2hhcmVkOwogI2Vsc2UKQEAgLTQ5MCw3ICs0OTAsNyBAQCBzdGQ6Om9wdGlvbmFsPERldmlj
ZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRl
Y29kZQogewogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGEgbGF5
ZXJEYXRhOwogI2lmIFVTRShJT1NVUkZBQ0VfRk9SX1hSX0xBWUVSX0RBVEEpCi0gICAgV1RGOjpN
YWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7CisgICAgTWFjaFNlbmRSaWdodCBzdXJmYWNl
U2VuZFJpZ2h0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3VyZmFjZVNlbmRSaWdodCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJp
Z2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5j
cHAKaW5kZXggMTA1Y2YyODBjMDA3NjFjMTA3MTNjMGQwMTYzMDk2YTM5YjhjZTY0Mi4uZjJjYzAz
OTBmYzUwMjVjNDVlNWNkYWVmMTcxMjM1YmJjMDkwZjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suY3BwCkBAIC05
OCw3ICs5OCw3IEBAIEdyYXBoaWNzTGF5ZXIqIExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrOjps
YXN0Q2xpcHBpbmdMYXllcigpIGNvbnN0CiAKIFNjcm9sbGluZ05vZGVJRCBMYXllckFuY2VzdG9y
Q2xpcHBpbmdTdGFjazo6bGFzdE92ZXJmbG93U2Nyb2xsUHJveHlOb2RlSUQoKSBjb25zdAogewot
ICAgIGZvciAoYXV0byYgZW50cnkgOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKG1fc3RhY2spKSB7
CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fc3RhY2spKSB7CiAg
ICAgICAgIGlmIChlbnRyeS5vdmVyZmxvd1Njcm9sbFByb3h5Tm9kZUlEKQogICAgICAgICAgICAg
cmV0dXJuIGVudHJ5Lm92ZXJmbG93U2Nyb2xsUHJveHlOb2RlSUQ7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCmluZGV4IGE3MjM0
YmU0ZWJhZWFhNTA5MjliZmYwMmIwZGNjMWU0ZWE1NTFmMTMuLmM4MzM2ZjA3ZDNlMDRkNzQ5MTJj
ZGNiZjExYmU0OTAyNGVjYzJiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lVGV4dEJveC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgc3RydWN0IFNhbWVTaXpl
QXNMZWdhY3lJbmxpbmVUZXh0Qm94IDogcHVibGljIExlZ2FjeUlubGluZUJveCB7CiAKIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihMZWdhY3lJbmxpbmVUZXh0Qm94KSA9PSBzaXplb2YoU2FtZVNpemVB
c0xlZ2FjeUlubGluZVRleHRCb3gpLCBMZWdhY3lJbmxpbmVUZXh0Qm94X3Nob3VsZF9zdGF5X3Nt
YWxsKTsKIAotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCos
IExheW91dFJlY3Q+IExlZ2FjeUlubGluZVRleHRCb3hPdmVyZmxvd01hcDsKK3R5cGVkZWYgSGFz
aE1hcDxjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94KiwgTGF5b3V0UmVjdD4gTGVnYWN5SW5saW5l
VGV4dEJveE92ZXJmbG93TWFwOwogc3RhdGljIExlZ2FjeUlubGluZVRleHRCb3hPdmVyZmxvd01h
cCogZ1RleHRCb3hlc1dpdGhPdmVyZmxvdzsKIAogTGVnYWN5SW5saW5lVGV4dEJveDo6fkxlZ2Fj
eUlubGluZVRleHRCb3goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeVJvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJv
b3RJbmxpbmVCb3guY3BwCmluZGV4IGVkZDI5ODdkMjNkMDQ1NzhhMjJkMzhkNGE1NzY5NzVhZTZh
MTZiZTEuLmZhZTQxZGJkNDdlNzVlNDExNzgxNjBjOWUxODE1YjllNmEzYWRlOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKExlZ2FjeVJvb3RJbmxpbmVCb3gpID09
IHNpemVvZihTYW1lU2l6ZUFzTGVnYWN5Um9vdElubGluZUIKIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihXZWFrUHRyPFJlbmRlck9iamVjdD4pID09IHNpemVvZih2b2lkKiksIFdlYWtQdHJfc2hvdWxk
X2JlX3NhbWVfc2l6ZV9hc19yYXdfcG9pbnRlcik7CiAjZW5kaWYKIAotdHlwZWRlZiBXVEY6Okhh
c2hNYXA8Y29uc3QgTGVnYWN5Um9vdElubGluZUJveCosIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lF
bGxpcHNpc0JveD4+IEVsbGlwc2lzQm94TWFwOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IExlZ2Fj
eVJvb3RJbmxpbmVCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5RWxsaXBzaXNCb3g+PiBFbGxp
cHNpc0JveE1hcDsKIHN0YXRpYyBFbGxpcHNpc0JveE1hcCogZ0VsbGlwc2lzQm94TWFwOwogCiBz
dGF0aWMgQ29udGFpbmluZ0ZyYWdtZW50TWFwJiBjb250YWluaW5nRnJhZ21lbnRNYXAoUmVuZGVy
QmxvY2tGbG93JiBibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZl
cmVuY2VkU1ZHUmVzb3VyY2VzLmNwcAppbmRleCBmYTAxYzc4NjU3ZDcwMjFhY2U3MzRhZTMzYTAx
NmM0YmE4NjZiMjlkLi45ZDJiYzhhNjgyYzZjODY1NGJjYjkwMDFhMzc5MWVkMGYxYjVmMjYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJj
ZXMuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6On5SZWZlcmVu
Y2VkU1ZHUmVzb3VyY2VzKCkKIHZvaWQgUmVmZXJlbmNlZFNWR1Jlc291cmNlczo6YWRkQ2xpZW50
Rm9yVGFyZ2V0KFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIHRh
cmdldElEKQogewogICAgIG1fZWxlbWVudENsaWVudHMuZW5zdXJlKHRhcmdldElELCBbJl0gewot
ICAgICAgICBhdXRvIGNsaWVudCA9IFdURjo6bWFrZVVuaXF1ZTxDU1NTVkdSZXNvdXJjZUVsZW1l
bnRDbGllbnQ+KG1fcmVuZGVyZXIpOworICAgICAgICBhdXRvIGNsaWVudCA9IG1ha2VVbmlxdWU8
Q1NTU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50PihtX3JlbmRlcmVyKTsKICAgICAgICAgdGFyZ2V0
RWxlbWVudC5hZGRSZWZlcmVuY2luZ0NTU0NsaWVudCgqY2xpZW50KTsKICAgICAgICAgcmV0dXJu
IGNsaWVudDsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5k
ZXggZThkYWI0Nzg3ZDYwMmI5MDkwN2M0ODRlN2FkMTM4ODAxODQzNDBmNi4uMjFlNjIxMGU1OWMz
MjdhOGM3NDI1YWQ0MGYwNzFiZDMzMTc3M2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUmVuZGVyVGV4dDsKIHN0cnVjdCBC
aWRpUnVuOwogc3RydWN0IFBhaW50SW5mbzsKIAotdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJl
bmRlckJveCo+IFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0OwordHlwZWRlZiBMaXN0SGFzaFNl
dDxSZW5kZXJCb3gqPiBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDsKIAogZW51bSBDYXJldFR5
cGUgeyBDdXJzb3JDYXJldCwgRHJhZ0NhcmV0IH07CiBlbnVtIENvbnRhaW5pbmdCbG9ja1N0YXRl
IHsgTmV3Q29udGFpbmluZ0Jsb2NrLCBTYW1lQ29udGFpbmluZ0Jsb2NrIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGE0Njc0OTA5YjgzZjgwNzY0NTVkNzg1MzVh
ZTA3NzU4ZGU3MDcwNTguLmIwNTczODQzYWNhNjU1NWU1NTk0YmMyNWI3MTczNzc3NmM4MjMxZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMDIsMTIgKzEwMiwx
MiBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyQm94KSA9PSBzaXplb2YoU2FtZVNpemVB
c1JlbmRlckJveCksIFJlbmRlckJveF9zaG91bAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCi10eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBP
dmVycmlkZVNpemVNYXA7Cit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgTGF5b3V0
VW5pdD4gT3ZlcnJpZGVTaXplTWFwOwogc3RhdGljIE92ZXJyaWRlU2l6ZU1hcCogZ092ZXJyaWRp
bmdMb2dpY2FsSGVpZ2h0TWFwID0gbnVsbHB0cjsKIHN0YXRpYyBPdmVycmlkZVNpemVNYXAqIGdP
dmVycmlkaW5nTG9naWNhbFdpZHRoTWFwID0gbnVsbHB0cjsKIAogLy8gRklYTUU6IFdlIHNob3Vs
ZCBzdG9yZSB0aGVzZSBiYXNlZCBvbiBwaHlzaWNhbCBkaXJlY3Rpb24uCi10eXBlZGVmIFdURjo6
SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+PiBPdmVy
cmlkZU9wdGlvbmFsU2l6ZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+PiBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKIHN0YXRp
YyBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcCogZ092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250
ZW50TG9naWNhbEhlaWdodE1hcCA9IG51bGxwdHI7CiBzdGF0aWMgT3ZlcnJpZGVPcHRpb25hbFNp
emVNYXAqIGdPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aE1hcCA9
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApp
bmRleCAxNDc1MjI2ODVlZmIxMDhjMjUyOTAwNmI5MDdjMjBjMjk2ODczNzU3Li5kYjZhMWRjNTli
NDJhOWQ2NmZiZWQ0Zjk3MGEwYjUzMWM4YjIwNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0yMjg5LDcgKzIyODksNyBAQCBSZWZlcmVuY2VkU1ZH
UmVzb3VyY2VzJiBSZW5kZXJFbGVtZW50OjplbnN1cmVSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKCkK
IHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJl
RGF0YS5yZWZlcmVuY2VkU1ZHUmVzb3VyY2VzKQotICAgICAgICByYXJlRGF0YS5yZWZlcmVuY2Vk
U1ZHUmVzb3VyY2VzID0gV1RGOjptYWtlVW5pcXVlPFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM+KCp0
aGlzKTsKKyAgICAgICAgcmFyZURhdGEucmVmZXJlbmNlZFNWR1Jlc291cmNlcyA9IG1ha2VVbmlx
dWU8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICpyYXJlRGF0
YS5yZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySXRlcmF0b3IuaAppbmRleCBiNWE5NGY0N2JjNzU4MDU4OWIxNTMwZTc1MTk1ZjllOWZjNDYz
OTJlLi41YjlmMjU3ZGE2MWMxMGUwYjY3MjNmZjg4MjQwYWJkYzk5NTk0MjQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySXRlcmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySXRlcmF0b3IuaApAQCAtODEsNyArODEsNyBAQCBwcml2
YXRlOgogICAgIGNvbnN0IFQqIG1fY3VycmVudDsKIH07CiAKLS8vIFNpbWlsYXIgdG8gV1RGOjpp
czw+KCkgYnV0IHdpdGhvdXQgdGhlIHN0YXRpY19hc3NlcnQoKSBtYWtpbmcgc3VyZSB0aGUgY2hl
Y2sgaXMgbmVjZXNzYXJ5LgorLy8gU2ltaWxhciB0byBpczw+KCkgYnV0IHdpdGhvdXQgdGhlIHN0
YXRpY19hc3NlcnQoKSBtYWtpbmcgc3VyZSB0aGUgY2hlY2sgaXMgbmVjZXNzYXJ5LgogdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiBpbmxpbmUgYm9vbCBpc1JlbmRlcmVyT2ZUeXBl
KGNvbnN0IFUmIHJlbmRlcmVyKSB7IHJldHVybiBUeXBlQ2FzdFRyYWl0czxjb25zdCBULCBjb25z
dCBVPjo6aXNPZlR5cGUocmVuZGVyZXIpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IGU4YzAzODNjZTllMTEwNGNlZDM1MThiYzYyODZiNDJmYmRjNTQw
NjIuLjBjMjY2OTYyOTkxNzRiZDZmZDg5YzYyYjFhMDIyOTZmYTg5ZTRiZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNTczNSw3ICs1NzM1LDcgQEAgdm9p
ZCBzaG93TGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlckxheWVyKiBsYXllcikKICAgICBp
ZiAoIWxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBXVEY6OlN0cmluZyBvdXRwdXQgPSBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKCZsYXllci0+cmVuZGVyZXIoKS5mcmFtZSgpLCB7CisgICAg
U3RyaW5nIG91dHB1dCA9IGV4dGVybmFsUmVwcmVzZW50YXRpb24oJmxheWVyLT5yZW5kZXJlcigp
LmZyYW1lKCksIHsKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZzo6U2hvd0FsbExh
eWVycywKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZzo6U2hvd0xheWVyTmVzdGlu
ZywKICAgICAgICAgV2ViQ29yZTo6UmVuZGVyQXNUZXh0RmxhZzo6U2hvd0NvbXBvc2l0ZWRMYXll
cnMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IGYzNTQxN2NjNWE4NTAxNmNlYWZmMDU5NWI0MThmYzA5NDA1MzE0ZWUuLmJkOWYyMmE1
MTQ1Y2U5YTU0YzAyNjZmYjU4M2NhZmEwNWFlMWUxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yNzQzLDcgKzI3NDMsNyBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVy
KFBhaW50ZWRDb250ZW50c0luZm8mCiAvLyBSZXR1cm5pbmcgdHJ1ZSBzdG9wcyB0aGUgdHJhdmVy
c2FsLgogZW51bSBjbGFzcyBMYXllclRyYXZlcnNhbCB7IENvbnRpbnVlLCBTdG9wIH07CiAKLXN0
YXRpYyBMYXllclRyYXZlcnNhbCB0cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVkRGVzY2VuZGFu
dExheWVycyhSZW5kZXJMYXllciYgcGFyZW50LCBjb25zdCBXVEY6OkZ1bmN0aW9uPExheWVyVHJh
dmVyc2FsIChjb25zdCBSZW5kZXJMYXllciYpPiYgbGF5ZXJGdW5jKQorc3RhdGljIExheWVyVHJh
dmVyc2FsIHRyYXZlcnNlVmlzaWJsZU5vbkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKFJlbmRl
ckxheWVyJiBwYXJlbnQsIGNvbnN0IEZ1bmN0aW9uPExheWVyVHJhdmVyc2FsKGNvbnN0IFJlbmRl
ckxheWVyJik+JiBsYXllckZ1bmMpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBj
YWxsZWQgd2l0aCBhIHN0YWxlIHotb3JkZXIgbGlzdHMuIFNlZSBidWcgODU1MTIuCiAgICAgcGFy
ZW50LnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGNhYjYzZjViMTRjZTVlYjg3ZWU0ZDg3YTgwYjM4NjVk
ZmI2ZTliMWYuLjYzODZmYmEyZjQ5OGI1ZDZiODAyMmRiMTg0MmI0OTVmMGU1OGEwYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxGb250Q2FzY2FkZT4gYm9sZEZvbnQ7CiAgICAgICAgIGZvciAoYXV0byogZWxl
bWVudCA6IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMoKSkgewogICAgICAgICAgICAgU3RyaW5n
IHRleHQ7Ci0gICAgICAgICAgICBXVEY6OkZ1bmN0aW9uPGNvbnN0IEZvbnRDYXNjYWRlJigpPiBz
ZWxlY3RGb250ID0gWyZub3JtYWxGb250XSAoKSAtPiBjb25zdCBGb250Q2FzY2FkZSYgeworICAg
ICAgICAgICAgRnVuY3Rpb248Y29uc3QgRm9udENhc2NhZGUmKCk+IHNlbGVjdEZvbnQgPSBbJm5v
cm1hbEZvbnRdICgpIC0+IGNvbnN0IEZvbnRDYXNjYWRlJiB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIG5vcm1hbEZvbnQ7CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgaWYgKGlzPEhUTUxP
cHRpb25FbGVtZW50PigqZWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guaAppbmRleCAwNjMzMDliZTBiN2MwODc4YTNlNjdkM2VkZTdjOTQ4NzQ0ZWY4ZTg5Li4y
YTdmZTMwNzU3MDdiNGIxNWQ2OTcyNTY3ODBkM2ExNTU4MGE2OWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgog
ICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZGVu
IHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZvaWQgc2Nyb2xsVG8o
aW50IG5ld09mZnNldCk7CiAKLSAgICB1c2luZyBQYWludEZ1bmN0aW9uID0gV1RGOjpGdW5jdGlv
bjx2b2lkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgaW50IGxpc3RJdGVtSW5kZXgp
PjsKKyAgICB1c2luZyBQYWludEZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYsIGludCBsaXN0SXRlbUluZGV4KT47CiAgICAgdm9pZCBwYWludEl0
ZW0oUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBQYWludEZ1bmN0aW9uJik7
CiAKICAgICB2b2lkIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xsYmFyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPdmVyZmxvdy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck92ZXJmbG93LmgKaW5kZXggYzM5NGNiNDk2
ZWJhNDE2ZmU2YmM0YmJiZmEwZDc3ODk4MmFjNDk1Ni4uMTEyMmI4NjI3MTIxMmVhZTg3MjkyYmVk
MTY2MmQ2MDRmZDJhMGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck92ZXJmbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck92ZXJm
bG93LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIC8vIEV4YW1wbGVzIG9m
IHZpc3VhbCBvdmVyZmxvdyBhcmUgc2hhZG93cywgdGV4dCBzdHJva2UsIG91dGxpbmUgKGFuZCBl
dmVudHVhbGx5IGJvcmRlci1pbWFnZSkuCiAKIC8vIFRoaXMgb2JqZWN0IGlzIGFsbG9jYXRlZCBv
bmx5IHdoZW4gc29tZSBvZiB0aGVzZSBmaWVsZHMgaGF2ZSBub24tZGVmYXVsdCB2YWx1ZXMgaW4g
dGhlIG93bmluZyBib3guCi1jbGFzcyBSZW5kZXJPdmVyZmxvdyA6IHB1YmxpYyBXVEY6OlJlZkNv
dW50ZWQ8UmVuZGVyT3ZlcmZsb3c+IHsKK2NsYXNzIFJlbmRlck92ZXJmbG93IDogcHVibGljIFJl
ZkNvdW50ZWQ8UmVuZGVyT3ZlcmZsb3c+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW5k
ZXJPdmVyZmxvdyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbmRl
ck92ZXJmbG93KGNvbnN0IExheW91dFJlY3QmIGxheW91dFJlY3QsIGNvbnN0IExheW91dFJlY3Qm
IHZpc3VhbFJlY3QpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlR3JpZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdy
aWREYXRhLmgKaW5kZXggYzY3N2QwNzk4NjdjMTI2NTJkOTkyZWZlZDUyMDRiZTBlOTI0ZDNlOC4u
NDNkZTM4NjBkNWE5NmUyYTNlZjZkMWRmNmU0MDFmMjBhOWExNTFiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1
bnNpZ25lZD4+IE5hbWVkR3JpZExpbmVzTWFwOwotdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBW
ZWN0b3I8U3RyaW5nPiwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcDsKK3R5
cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgVmVjdG9yPFN0cmluZz4sIEludEhhc2g8dW5zaWduZWQ+
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gT3JkZXJlZE5h
bWVkR3JpZExpbmVzTWFwOwogCiBjbGFzcyBTdHlsZUdyaWREYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8U3R5bGVHcmlkRGF0YT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgK
aW5kZXggNmU1Y2M4MTE5MDRkOTA0MDkwMDk5YTI1ZTAwNjIxYzhjNTMzOGY2ZS4uNjIxMThjNzAw
ZGY1NTQ0OGFkMzliOTJiNzNmYTU0ZWExYzI0OTU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZUZlYXR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVh
dHVyZS5oCkBAIC03NywxMCArNzcsMTAgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICAK
ICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlRmVhdHVyZVZlY3Rv
cj4+IGNsYXNzUnVsZXM7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yPj4+IGF0dHJpYnV0ZVJ1
bGVzOwotICAgIEhhc2hNYXA8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlx
dWVfcHRyPFJ1bGVGZWF0dXJlVmVjdG9yPiwgV1RGOjpJbnRIYXNoPENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc1R5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc1R5cGU+PiBwc2V1ZG9DbGFzc1J1bGVzOworICAgIEhhc2hNYXA8Q1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFJ1bGVGZWF0dXJlVmVjdG9yPiwgSW50
SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPj4gcHNldWRvQ2xhc3NSdWxlczsKICAg
ICBIYXNoU2V0PEF0b21TdHJpbmc+IGNsYXNzZXNBZmZlY3RpbmdIb3N0OwogICAgIEhhc2hTZXQ8
QXRvbVN0cmluZz4gYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Q7Ci0gICAgSGFzaFNldDxDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVHlwZT4+IHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0OworICAgIEhhc2hTZXQ8Q1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgSW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NU
eXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NU
eXBlPj4gcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3Q7CiAKICAgICBib29sIHVzZXNGaXJzdExp
bmVSdWxlcyB7IGZhbHNlIH07CiAgICAgYm9vbCB1c2VzRmlyc3RMZXR0ZXJSdWxlcyB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmgKaW5kZXggZmZlMTU2MWZh
NDRhZjQzZWExYjJkYjE0YzNlYWNmMzU0YjFiMTY2NC4uMTE3MTQ2OWUzZmM3NDE3OTc3Y2IzY2E1
OGExYWNjZGMwYzQyZTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3Iu
aApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRl
U2hhZG93UGFydHMoU2hhZG93Um9vdCYpOwogCi0gICAgdXNpbmcgTWF0Y2hFbGVtZW50UnVsZVNl
dHMgPSBIYXNoTWFwPE1hdGNoRWxlbWVudCwgSW52YWxpZGF0aW9uUnVsZVNldFZlY3RvciwgV1RG
OjpJbnRIYXNoPE1hdGNoRWxlbWVudD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWF0Y2hF
bGVtZW50Pj47CisgICAgdXNpbmcgTWF0Y2hFbGVtZW50UnVsZVNldHMgPSBIYXNoTWFwPE1hdGNo
RWxlbWVudCwgSW52YWxpZGF0aW9uUnVsZVNldFZlY3RvciwgSW50SGFzaDxNYXRjaEVsZW1lbnQ+
LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1hdGNoRWxlbWVudD4+OwogICAgIHN0YXRpYyB2
b2lkIGFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMoSW52YWxpZGF0b3I6Ok1hdGNoRWxlbWVudFJ1
bGVTZXRzJiwgY29uc3QgSW52YWxpZGF0aW9uUnVsZVNldCYpOwogICAgIHN0YXRpYyB2b2lkIGlu
dmFsaWRhdGVXaXRoTWF0Y2hFbGVtZW50UnVsZVNldHMoRWxlbWVudCYsIGNvbnN0IE1hdGNoRWxl
bWVudFJ1bGVTZXRzJik7CiAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFsbFN0eWxlKFNjb3Bl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCmluZGV4IDg3YTc4
OWVmYmI5NDc5NmU4MTBlN2FhMzZiNGM5MWZiYzRjNDI0YmUuLjQ1NGY1YzA3OTRkMjM5YTczZmQ4
YTA1NDVmNDU1ZTY3NDlhNzJkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlU2NvcGVSdWxlU2V0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVS
dWxlU2V0cy5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0
cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsKICAgICBtdXRhYmxlIEhhc2hN
YXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0
Pj4+IG1fY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRv
bVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1f
YXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHM7Ci0gICAgbXV0YWJsZSBIYXNoTWFwPENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0
aW9uUnVsZVNldD4+LCBXVEY6OkludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4s
IFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+
IG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsKKyAgICBtdXRhYmxlIEhhc2hNYXA8
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZh
bGlkYXRpb25SdWxlU2V0Pj4sIEludEhhc2g8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4s
IFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4+
IG1fcHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsKIAogICAgIG11dGFibGUgc3RkOjpv
cHRpb25hbDxib29sPiBtX2NhY2hlZEhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKaW5kZXggMDJjNjUzMzgzY2Q0OGVkZjdk
YTAyOTAyZjQyYTdkNDVlZWQyYmZjYi4uN2Y5ZDdhMTc3Y2NmZjU5ZWE4Mjc2MTY1ODI0YWUzYWNk
NTgyYjlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCkBAIC00OSw3ICs0OSw3IEBA
IHN0cnVjdCBFbGVtZW50VXBkYXRlIHsKIAogZW51bSBjbGFzcyBEZXNjZW5kYW50c1RvUmVzb2x2
ZSB7IE5vbmUsIENoaWxkcmVuV2l0aEV4cGxpY2l0SW5oZXJpdCwgQ2hpbGRyZW4sIEFsbCB9Owog
Ci11c2luZyBQc2V1ZG9JZFRvRWxlbWVudFVwZGF0ZU1hcCA9IEhhc2hNYXA8UHNldWRvSWQsIEVs
ZW1lbnRVcGRhdGUsIFdURjo6SW50SGFzaDxQc2V1ZG9JZD4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8UHNldWRvSWQ+PjsKK3VzaW5nIFBzZXVkb0lkVG9FbGVtZW50VXBkYXRlTWFwID0gSGFz
aE1hcDxQc2V1ZG9JZCwgRWxlbWVudFVwZGF0ZSwgSW50SGFzaDxQc2V1ZG9JZD4sIFdURjo6U3Ry
b25nRW51bUhhc2hUcmFpdHM8UHNldWRvSWQ+PjsKIAogc3RydWN0IEVsZW1lbnRVcGRhdGVzIHsK
ICAgICBFbGVtZW50VXBkYXRlIHVwZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvVHlwZUNvbnZlcnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252
ZXJzaW9ucy5oCmluZGV4IDk1ZTJhYzlmNjVkNTQ1YjM3OWEzYTZmOWQwYzljZTI3ZjhjYzI3NDUu
LjExYTlhNWYwOTA4NjVkOTRkNDIwNjM0YjI1NDJhMGE4OTZjNzVjZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaApAQCAtMTE5LDEyICsxMTksMTIgQEAgcHVibGlj
OgogICAgIGNvbnN0IFN0cmluZyYgdGVzdFRyZWF0TnVsbEFzRW1wdHlTdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX3RyZWF0TnVsbEFzRW1wdHlTdHJpbmc7IH0KICAgICB2b2lkIHNldFRlc3RUcmVh
dE51bGxBc0VtcHR5U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fdHJlYXROdWxsQXNF
bXB0eVN0cmluZyA9IHN0cmluZzsgfQogCi0gICAgY29uc3QgVmVjdG9yPFdURjo6S2V5VmFsdWVQ
YWlyPFN0cmluZywgaW50Pj4mIHRlc3RMb25nUmVjb3JkKCkgY29uc3QgeyByZXR1cm4gbV9sb25n
UmVjb3JkOyB9Ci0gICAgdm9pZCBzZXRUZXN0TG9uZ1JlY29yZChjb25zdCBWZWN0b3I8V1RGOjpL
ZXlWYWx1ZVBhaXI8U3RyaW5nLCBpbnQ+PiYgdmFsdWUpIHsgbV9sb25nUmVjb3JkID0gdmFsdWU7
IH0KLSAgICBjb25zdCBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBSZWZQdHI8Tm9k
ZT4+PiYgdGVzdE5vZGVSZWNvcmQoKSBjb25zdCB7IHJldHVybiBtX25vZGVSZWNvcmQ7IH0KLSAg
ICB2b2lkIHNldFRlc3ROb2RlUmVjb3JkKGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxT
dHJpbmcsIFJlZlB0cjxOb2RlPj4+JiB2YWx1ZSkgeyBtX25vZGVSZWNvcmQgPSB2YWx1ZTsgfQot
ICAgIGNvbnN0IFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+
Pj4mIHRlc3RTZXF1ZW5jZVJlY29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VxdWVuY2VSZWNvcmQ7
IH0KLSAgICB2b2lkIHNldFRlc3RTZXF1ZW5jZVJlY29yZChjb25zdCBWZWN0b3I8V1RGOjpLZXlW
YWx1ZVBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+JiB2YWx1ZSkgeyBtX3NlcXVlbmNlUmVj
b3JkID0gdmFsdWU7IH0KKyAgICBjb25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywgaW50
Pj4mIHRlc3RMb25nUmVjb3JkKCkgY29uc3QgeyByZXR1cm4gbV9sb25nUmVjb3JkOyB9CisgICAg
dm9pZCBzZXRUZXN0TG9uZ1JlY29yZChjb25zdCBWZWN0b3I8S2V5VmFsdWVQYWlyPFN0cmluZywg
aW50Pj4mIHZhbHVlKSB7IG1fbG9uZ1JlY29yZCA9IHZhbHVlOyB9CisgICAgY29uc3QgVmVjdG9y
PEtleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0cjxOb2RlPj4+JiB0ZXN0Tm9kZVJlY29yZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbm9kZVJlY29yZDsgfQorICAgIHZvaWQgc2V0VGVzdE5vZGVSZWNvcmQo
Y29uc3QgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0cjxOb2RlPj4+JiB2YWx1ZSkg
eyBtX25vZGVSZWNvcmQgPSB2YWx1ZTsgfQorICAgIGNvbnN0IFZlY3RvcjxLZXlWYWx1ZVBhaXI8
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+JiB0ZXN0U2VxdWVuY2VSZWNvcmQoKSBjb25zdCB7IHJl
dHVybiBtX3NlcXVlbmNlUmVjb3JkOyB9CisgICAgdm9pZCBzZXRUZXN0U2VxdWVuY2VSZWNvcmQo
Y29uc3QgVmVjdG9yPEtleVZhbHVlUGFpcjxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4mIHZhbHVl
KSB7IG1fc2VxdWVuY2VSZWNvcmQgPSB2YWx1ZTsgfQogCiAgICAgdXNpbmcgVGVzdFVuaW9uID0g
c3RkOjp2YXJpYW50PFN0cmluZywgaW50LCBib29sLCBSZWZQdHI8Tm9kZT4sIFZlY3RvcjxpbnQ+
PjsKICAgICBjb25zdCBUZXN0VW5pb24mIHRlc3RVbmlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5p
b247IH0KQEAgLTE2OCw5ICsxNjgsOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VzdnN0cmlu
ZzsKICAgICBTdHJpbmcgbV9ieXRlU3RyaW5nOwogICAgIFN0cmluZyBtX3RyZWF0TnVsbEFzRW1w
dHlTdHJpbmc7Ci0gICAgVmVjdG9yPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgaW50Pj4gbV9s
b25nUmVjb3JkOwotICAgIFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFJlZlB0cjxO
b2RlPj4+IG1fbm9kZVJlY29yZDsKLSAgICBWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5n
LCBWZWN0b3I8U3RyaW5nPj4+IG1fc2VxdWVuY2VSZWNvcmQ7CisgICAgVmVjdG9yPEtleVZhbHVl
UGFpcjxTdHJpbmcsIGludD4+IG1fbG9uZ1JlY29yZDsKKyAgICBWZWN0b3I8S2V5VmFsdWVQYWly
PFN0cmluZywgUmVmUHRyPE5vZGU+Pj4gbV9ub2RlUmVjb3JkOworICAgIFZlY3RvcjxLZXlWYWx1
ZVBhaXI8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4+IG1fc2VxdWVuY2VSZWNvcmQ7CiAKICAgICBE
aWN0aW9uYXJ5IG1fdGVzdERpY3Rpb25hcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oCmluZGV4IGNiNGQxMzY3ZTFmMTkzNDQ4Njc0
NWRiMDc0MTQ1ZTU0YmMzMWRkNjMuLjRkNjkwZmE3M2U1MWVkMjY1Yjk5Njk5OWFhZjdjODc2ZDU5
N2FjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXIuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+
IG1fcHJvZmlsZXM7CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291
cmNlUG9zZSBtX3BvaW50ZXJPcmlnaW47CiAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlPiBtX2dyaXBPcmlnaW47Ci0gICAgSGFz
aE1hcDxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGUsIEZha2VYUkJ1dHRvblN0YXRlSW5pdCwg
V1RGOjpJbnRIYXNoPEZha2VYUkJ1dHRvblN0YXRlSW5pdDo6VHlwZT4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlPj4gbV9idXR0b25zOworICAg
IEhhc2hNYXA8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlLCBGYWtlWFJCdXR0b25TdGF0ZUlu
aXQsIEludEhhc2g8RmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBlPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU+PiBtX2J1dHRvbnM7CiAgICAg
Ym9vbCBtX2Nvbm5lY3RlZCB7IHRydWUgfTsKICAgICBib29sIG1fcHJpbWFyeVNlbGVjdGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fc2ltdWxhdGVTZWxlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGE1MzNh
YTNmOWRjYWQ5MWYwZmY0NWQxNGVmZTc4ZjJlZDBmMTFiMDAuLjUxYjcxODZiMDg5YzJjZmYwZjRm
YWM0YTRhZGEzZmVjMzAwZjg4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIGRpc2Nvbm5l
Y3RNb2NrR2FtZXBhZCh1bnNpZ25lZCBnYW1lcGFkSW5kZXgpCiAjZW5kaWYKIH0KIAotdm9pZCBz
ZXRNb2NrR2FtZXBhZERldGFpbHModW5zaWduZWQgZ2FtZXBhZEluZGV4LCBjb25zdCBXVEY6OlN0
cmluZyYgZ2FtZXBhZElELCBjb25zdCBXVEY6OlN0cmluZyYgbWFwcGluZywgdW5zaWduZWQgYXhp
c0NvdW50LCB1bnNpZ25lZCBidXR0b25Db3VudCkKK3ZvaWQgc2V0TW9ja0dhbWVwYWREZXRhaWxz
KHVuc2lnbmVkIGdhbWVwYWRJbmRleCwgY29uc3QgU3RyaW5nJiBnYW1lcGFkSUQsIGNvbnN0IFN0
cmluZyYgbWFwcGluZywgdW5zaWduZWQgYXhpc0NvdW50LCB1bnNpZ25lZCBidXR0b25Db3VudCkK
IHsKICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICBNb2NrR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0
b24oKS5zZXRNb2NrR2FtZXBhZERldGFpbHMoZ2FtZXBhZEluZGV4LCBnYW1lcGFkSUQsIG1hcHBp
bmcsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgc2V0
dXBOZXdseUNyZWF0ZWRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIHNldEFkZGl0aW9uYWxTdXBwb3J0
ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhjb25zdCBXVEY6OlN0cmluZyYgaW1hZ2VUeXBlcykKK3Zv
aWQgc2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKGNvbnN0IFN0cmlu
ZyYgaW1hZ2VUeXBlcykKIHsKICAgICBXZWJDb3JlOjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VUeXBlc0ZvclRlc3RpbmcoaW1hZ2VUeXBlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaAppbmRleCBjMDExZGVlOTVkZjZkYjlmYTIzYjFj
YzVmZmFhNTE5NDYxNTUyNDAxLi5jNGRhM2MwMTY4M2FiOGU5ZjkxMmExMDcyYWRmNDJhM2RmMmM0
MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0
LmgKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBtb25pdG9yV2hlZWxFdmVudHMoV2ViQ29yZTo6RnJh
bWUmLCBib29sIGNsZWFyTGF0Y2hpbmdTdGF0ZSkgVEVTVF9TVVBQT1JUX0UKIHZvaWQgc2V0V2hl
ZWxFdmVudE1vbml0b3JUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RX
aGVlbEVuZE9yQ2FuY2VsLCBib29sIGV4cGVjdE1vbWVudHVtRW5kLCBXZWJDb3JlOjpGcmFtZSYs
IEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGNs
ZWFyV2hlZWxFdmVudFRlc3RNb25pdG9yKFdlYkNvcmU6OkZyYW1lJikgVEVTVF9TVVBQT1JUX0VY
UE9SVDsKIAotdm9pZCBzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKGNvbnN0IFdURjo6U3RyaW5n
JiBuYW1lKSBURVNUX1NVUFBPUlRfRVhQT1JUOwordm9pZCBzZXRMb2dDaGFubmVsVG9BY2N1bXVs
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIHZvaWQgY2xlYXJB
bGxMb2dDaGFubmVsc1RvQWNjdW11bGF0ZSgpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGlu
aXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIHZv
aWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYm9vbCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsK
QEAgLTU5LDEzICs1OSwxMyBAQCB2b2lkIHNldExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmdGb3JU
ZXN0aW5nKCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIHZvaWQgaW5zdGFsbE1vY2tHYW1lcGFkUHJv
dmlkZXIoKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBjb25uZWN0TW9ja0dhbWVwYWQodW5z
aWduZWQgaW5kZXgpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiB2b2lkIGRpc2Nvbm5lY3RNb2NrR2Ft
ZXBhZCh1bnNpZ25lZCBpbmRleCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKLXZvaWQgc2V0TW9ja0dh
bWVwYWREZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBXVEY6OlN0cmluZyYgZ2FtZXBhZElE
LCBjb25zdCBXVEY6OlN0cmluZyYgbWFwcGluZywgdW5zaWduZWQgYXhpc0NvdW50LCB1bnNpZ25l
ZCBidXR0b25Db3VudCkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKK3ZvaWQgc2V0TW9ja0dhbWVwYWRE
ZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGdhbWVwYWRJRCwgY29uc3QgU3Ry
aW5nJiBtYXBwaW5nLCB1bnNpZ25lZCBheGlzQ291bnQsIHVuc2lnbmVkIGJ1dHRvbkNvdW50KSBU
RVNUX1NVUFBPUlRfRVhQT1JUOwogdm9pZCBzZXRNb2NrR2FtZXBhZEF4aXNWYWx1ZSh1bnNpZ25l
ZCBpbmRleCwgdW5zaWduZWQgYXhpc0luZGV4LCBkb3VibGUgdmFsdWUpIFRFU1RfU1VQUE9SVF9F
WFBPUlQ7CiB2b2lkIHNldE1vY2tHYW1lcGFkQnV0dG9uVmFsdWUodW5zaWduZWQgaW5kZXgsIHVu
c2lnbmVkIGJ1dHRvbkluZGV4LCBkb3VibGUgdmFsdWUpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CiAK
IHZvaWQgc2V0dXBOZXdseUNyZWF0ZWRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSBURVNUX1NVUFBPUlRfRVhQT1JUOwogICAgIAotdm9pZCBzZXRBZGRpdGlv
bmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3RpbmcoY29uc3QgV1RGOjpTdHJpbmcmKSBURVNU
X1NVUFBPUlRfRVhQT1JUOwordm9pZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0Zv
clRlc3RpbmcoY29uc3QgU3RyaW5nJikgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIAogI2lmIEVOQUJM
RShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCiB2b2lkIHBvcHVsYXRlSklUT3BlcmF0aW9ucygp
IFRFU1RfU1VQUE9SVF9FWFBPUlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFRocmVhZC5jcHAKaW5kZXggYTNiZGRiYjRjOTNhOWMzMTQwZWQ2ZWFhYTM0ZGQw
YjQyNGM0NDU5Yy4uMTRmYzQ4YTVlYzRjYWIwOTliMDgyMTMyZDJjYjk4YTUzZDA1ODZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcApA
QCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldv
cmtsZXRUaHJlYWQoKQogICAgIHByb3RlY3Rvci0+ZGV0YWNoKCk7CiB9CiAKLXZvaWQgV29ya2Vy
T3JXb3JrbGV0VGhyZWFkOjpzdGFydChXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYgZXZhbHVhdGVDYWxsYmFjaykKK3ZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpzdGFydChG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGV2YWx1YXRlQ2FsbGJhY2spCiB7CiAgICAg
Ly8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgbV90aHJlYWQg
aXMgaW5pdGlhbGl6ZWQgd2hlbiB0aGUgdGhyZWFkIHN0YXJ0cy4KICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV90aHJlYWRDcmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9jayB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKaW5kZXggYmIzYmI3NTJkYjRiYTIw
ZGFlMmVjZmRkYWE4YmU1NDk5ZDAyOTNkZi4uZDY0YWM2YTllZjhjNGUwZjNhNDQwMDY1MjI3OGZj
NWIyYzI2MzdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFRocmVhZC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldFRocmVhZCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJPcldvcmtsZXRUaHJlYWQ+CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0VGhyZWFkKCk7CiAKLSAgICBXVEY6OlRo
cmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KKyAgICBUaHJl
YWQqIHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKICAgICB2aXJ0
dWFsIFdvcmtlckRlYnVnZ2VyUHJveHkqIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSA9IDA7
CkBAIC03Nyw3ICs3Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcnVuRXZlbnRM
b29wKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZWY8V1RGOjpUaHJlYWQ+IGNyZWF0ZVRo
cmVhZCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpID0gMDsK
ICAgICB2aXJ0dWFsIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlR2xv
YmFsU2NvcGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlU2NyaXB0SWZOZWNlc3Nh
cnkoU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZFdhaXRGb3JXZWJJbnNwZWN0
b3JPblN0YXJ0dXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtODcsNyArODcsNyBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgTG9jayBtX3RocmVhZENyZWF0
aW9uQW5kR2xvYmFsU2NvcGVMb2NrOwogICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZT4gbV9nbG9iYWxTY29wZTsKLSAgICBSZWZQdHI8V1RGOjpUaHJlYWQ+IG1fdGhyZWFkOwor
ICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhyZWFkOwogICAgIFVuaXF1ZVJlZjxXb3JrZXJSdW5Mb29w
PiBtX3J1bkxvb3A7CiAgICAgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9ldmFsdWF0
ZUNhbGxiYWNrOwogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9zdG9wcGVkQ2FsbGJhY2s7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCA2YzAyZjEzMmRmZTlmOThi
OTg3NGM2YzI0MWMyOWQzMmJiZThlZDhmLi5mY2U1Y2UxMzI5M2JiNWJmOTZkNjAzZWRhYzJlMGU1
ZjY5NjUzYTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxv
b3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29ya2VyU2hhcmVkVGlt
ZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogcHVibGljOgogICAgIC8vIFNoYXJlZFRp
bWVyIGludGVyZmFjZS4KLSAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24oV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgZnVuY3Rpb24pIGZpbmFsIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uID0gV1RGTW92
ZShmdW5jdGlvbik7IH0KKyAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24oRnVuY3Rpb248dm9pZCgp
PiYmIGZ1bmN0aW9uKSBmaW5hbCB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pOyB9CiAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkgZmlu
YWwgeyBtX25leHRGaXJlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgaW50ZXJ2YWw7IH0K
ICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IG1fbmV4dEZpcmVUaW1lID0gTW9ub3RvbmljVGltZSB7
IH07IH0KIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlKCkgeyBtX3No
YXJlZFRpbWVyRnVuY3Rpb24oKTsgfQogCiBwcml2YXRlOgotICAgIFdURjo6RnVuY3Rpb248dm9p
ZCgpPiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3NoYXJl
ZFRpbWVyRnVuY3Rpb247CiAgICAgTW9ub3RvbmljVGltZSBtX25leHRGaXJlVGltZTsKIH07CiAK
QEAgLTE2NCw3ICsxNjQsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlckRlZGljYXRl
ZFJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTYwogICAgIEFTU0VSVChj
b250ZXh0KTsKICAgICBBU1NFUlQoY29udGV4dC0+d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBKU0M6OkpTUnVuTG9vcFRpbWVy
OjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrIHRpbWVyQWRkZWRUYXNrID0gV1RGOjpjcmVhdGVT
aGFyZWRUYXNrPEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uVHlwZT4oW3Ro
aXNdIHsKKyAgICBKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNr
IHRpbWVyQWRkZWRUYXNrID0gY3JlYXRlU2hhcmVkVGFzazxKU0M6OkpTUnVuTG9vcFRpbWVyOjpU
aW1lck5vdGlmaWNhdGlvblR5cGU+KFt0aGlzXSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGFjdHVh
bGx5IGRvIGFueXRoaW5nIGhlcmUsIHdlIGp1c3Qgd2FudCB0byBsb29wIGFyb3VuZCBydW5Jbk1v
ZGUKICAgICAgICAgLy8gdG8gYm90aCByZWNhbGN1bGF0ZSBvdXIgZGVhZGxpbmUgYW5kIHRvIHBv
dGVudGlhbGx5IHJ1biB0aGUgcnVuIGxvb3AuCiAgICAgICAgIHRoaXMtPnBvc3RUYXNrKFtdKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggZWE1MzgwZmJlZWY4NzU0MDMxNmE2ZmE5Mjc4Y2MyMTdj
ODkzMTRlMC4uZWFhYmUxZWE1ZDEzYjMzZjljM2NjNjZkZDQ5NTU3ZWI2OWUzN2VmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC04OCw3ICs4OCw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VFcnJvciB2YWxp
ZGF0ZVdvcmtlclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3Vu
dGVkPFdvcmtlclNjcmlwdExvYWRlcj47CisgICAgZnJpZW5kIGNsYXNzIFJlZkNvdW50ZWQ8V29y
a2VyU2NyaXB0TG9hZGVyPjsKICAgICBmcmllbmQgc3RydWN0IHN0ZDo6ZGVmYXVsdF9kZWxldGU8
V29ya2VyU2NyaXB0TG9hZGVyPjsKIAogICAgIFdvcmtlclNjcmlwdExvYWRlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggMTE4YTUxOThmZTdlNTUwOGM2NGM5ZmRk
Yzk5ZWYwYjE4NzUzMDVhNi4uYjQzNTBjNDdhZmY4MzgxMjY3YTlmNmY5ODI3MDlhMzdiYjM3YzJh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0xMTIsNyArMTEyLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KCkg
eyB9CiAKICAgICAvLyBXb3JrZXJPcldvcmtsZXRUaHJlYWQuCi0gICAgUmVmPFdURjo6VGhyZWFk
PiBjcmVhdGVUaHJlYWQoKSBmaW5hbDsKKyAgICBSZWY8VGhyZWFkPiBjcmVhdGVUaHJlYWQoKSBm
aW5hbDsKICAgICBSZWZQdHI8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+IGNyZWF0ZUdsb2Jh
bFNjb3BlKCkgZmluYWw7CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmlu
ZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CiAgICAgYm9vbCBzaG91bGRXYWl0Rm9yV2ViSW5z
cGVjdG9yT25TdGFydHVwKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuY3BwCmluZGV4IDY2OWU4YmM1MWJhYzVhYzM2
MjI0OGVmYTAzNDkxOTIzYjEwNjJhMDkuLjIxMWIyNTk4ZTIwYmZjZTc0OGY4MjdhYzE0NTA5ODM0
YTIwZDMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRl
bmRhYmxlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRl
bmRhYmxlRXZlbnQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBFeHRlbmRhYmxlRXZlbnQ6
OmFkZEV4dGVuZExpZmV0aW1lUHJvbWlzZShSZWY8RE9NUHJvbWlzZT4mJiBwcm9taXNlKQogICAg
ICsrbV9wZW5kaW5nUHJvbWlzZUNvdW50OwogfQogCi12b2lkIEV4dGVuZGFibGVFdmVudDo6d2hl
bkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkKFdURjo6RnVuY3Rpb248dm9pZChI
YXNoU2V0PFJlZjxET01Qcm9taXNlPj4mJik+JiYgaGFuZGxlcikKK3ZvaWQgRXh0ZW5kYWJsZUV2
ZW50Ojp3aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoRnVuY3Rpb248dm9p
ZChIYXNoU2V0PFJlZjxET01Qcm9taXNlPj4mJik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKHRhcmdldCgpLCAiRXZlbnQgaGFzIG5vdCBiZWVuIGRpc3BhdGNoZWQgeWV0
Iik7CiAgICAgQVNTRVJUKCFtX3doZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxl
ZEhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4
dGVuZGFibGVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFi
bGVFdmVudC5oCmluZGV4IDFjMmQ5YjdlNDM1NDliODg1Nzc5YTk2ZTBjMjAyMWQ4MTZiNDk5N2Yu
LjgxYTMzOGY5Y2Y3Mjc3ZjAxYzQ1ZDNlOTkyMzhlZTVlNjk5MWExZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZUV2ZW50LmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHdhaXRVbnRpbChSZWY8RE9NUHJv
bWlzZT4mJik7CiAgICAgdW5zaWduZWQgcGVuZGluZ1Byb21pc2VDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGVuZGluZ1Byb21pc2VDb3VudDsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3
aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoV1RGOjpGdW5jdGlvbjx2b2lk
KEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoRnVuY3Rpb248dm9pZChI
YXNoU2V0PFJlZjxET01Qcm9taXNlPj4mJik+JiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09S
RV9FWFBPUlQgRXh0ZW5kYWJsZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBFeHRlbmRh
YmxlRXZlbnRJbml0JiwgSXNUcnVzdGVkKTsKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdQcm9taXNlQ291bnQgeyAwIH07CiAgICAg
SGFzaFNldDxSZWY8RE9NUHJvbWlzZT4+IG1fZXh0ZW5kTGlmZXRpbWVQcm9taXNlczsKLSAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoSGFzaFNldDxSZWY8RE9NUHJvbWlzZT4+JiYpPiBtX3doZW5BbGxF
eHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZEhhbmRsZXI7CisgICAgRnVuY3Rpb248dm9p
ZChIYXNoU2V0PFJlZjxET01Qcm9taXNlPj4mJik+IG1fd2hlbkFsbEV4dGVuZExpZmV0aW1lUHJv
bWlzZXNBcmVTZXR0bGVkSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlv
bi5jcHAKaW5kZXggZjk1M2NhZTMyNzAxNTE0MWQzNDBkZjM3NWE4YjY1ZmZlMzU2NGYwMS4uZmU4
MjYwZWM3MTk3ZTE2YmVmZjNkOTMxMWRkZDkyOTY2MDYxMWM4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBkaXNwYXRj
aFRvQ29udGV4dFRocmVhZElmTmVjZXNzYXJ5KGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlm
aWVyJiBjb250ZXh0SWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4mJiB0YXNrKQorc3RhdGljIGJvb2wgZGlzcGF0Y2hUb0NvbnRleHRUaHJlYWRJ
Zk5lY2Vzc2FyeShjb25zdCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4dElkZW50
aWZpZXIsIEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGJvb2wgd2FzUG9zdGVk
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4IDU3YzI4OGEwYWYxNmMwZjJhODljYWE3ZTVh
NjkyMWRiYzE5ODY0M2YuLjBmNGY2MWI3MDM1YTVhNjc3MTM5MGMwMjdjMDFmYWFjZDZlNDUwZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5oCkBAIC05MSw3ICs5MSw3IEBAIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2Rl
ciYKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0eXBlKSwg
V1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQpIH0gfTsKIH0KIAotdXNpbmcgU2VydmljZVdvcmtlckNsaWVudHNN
YXRjaEFsbENhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+OwordXNpbmcgU2VydmljZVdvcmtlckNsaWVudHNNYXRj
aEFsbENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JiYpPjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHAKaW5kZXggNmM1OWU4ZDg1MWNjNDI5ZjRmYzc0NjliNmU0ZDljM2YxYzhhMDE2Mi4uZGM3
OTIyMjczODBjOWMwMzQyZGNkODlmMWRkNzA4MWU3OTUxN2JmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cApAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFp
bGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0CiAgICAgQVNTRVJU
KG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGpvYi5oYXNQcm9taXNlKCkgfHwgam9iLmRhdGEoKS50eXBlID09IFNl
cnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5vIHBy
b21pc2UiKTsKIAotICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZq
b2JdIHsKKyAgICBhdXRvIGd1YXJkID0gbWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewogICAg
ICAgICBkZXN0cm95Sm9iKGpvYik7CiAgICAgfSk7CiAKQEAgLTM4MSwxMSArMzgxLDExIEBAIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJKb2ImIGpvYiwKICAgICAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HKCJqb2JS
ZXNvbHZlZFdpdGhSZWdpc3RyYXRpb246IFVwZGF0ZSBqb2IgJSIgUFJJdTY0ICIgc3VjY2VlZGVk
Iiwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICB9CiAKLSAgICBhdXRvIGd1YXJk
ID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CisgICAgYXV0byBndWFyZCA9IG1h
a2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKICAgICAgICAgZGVzdHJveUpvYihqb2IpOwogICAg
IH0pOwogCi0gICAgYXV0byBub3RpZnlJZkV4aXRFYXJseSA9IFdURjo6bWFrZVNjb3BlRXhpdChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGtleSA9IGRhdGEua2V5LCBzaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWRdIHsKKyAgICBhdXRvIG5vdGlmeUlmRXhpdEVhcmx5ID0gbWFr
ZVNjb3BlRXhpdChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGtleSA9IGRh
dGEua2V5LCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWRdIHsKICAgICAgICAgaWYgKHNob3VsZE5v
dGlmeVdoZW5SZXNvbHZlZCA9PSBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQ6OlllcykKICAgICAg
ICAgICAgIG5vdGlmeVJlZ2lzdHJhdGlvbklzU2V0dGxlZChrZXkpOwogICAgIH0pOwpAQCAtNDQz
LDcgKzQ0Myw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRo
VW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvCiAgICAgQVNTRVJUKG1fY3JlYXRp
b25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoam9iLmhh
c1Byb21pc2UoKSk7CiAKLSAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlz
LCAmam9iXSB7CisgICAgYXV0byBndWFyZCA9IG1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsK
ICAgICAgICAgZGVzdHJveUpvYihqb2IpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3Bw
CmluZGV4IDI3NDQ1YjViZDczOGYzNjkxZTNhODBkYjgxNzU2MmQwMTczMWU0OTEuLjUxMDQ1MzRl
NTVmOTFlYWFjNjI0MTE3MmM4YTgyMTE4YjNmOGE0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3Bw
CkBAIC0xNjEsMTMgKzE2MSwxMyBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnN0b3BXb3JrZXIo
U2VydmljZVdvcmtlclRocmVhZFByb3h5JiBzZXJ2aWNlV29ya2VyLCBTZWNvbgogICAgIH0pOwog
fQogCi12b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkmKT4mIGFwcGx5
KQordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25z
dCBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYpPiYgYXBwbHkpCiB7CiAg
ICAgZm9yIChhdXRvJiB3b3JrZXJUaHJlYWQgOiBtX3dvcmtlck1hcC52YWx1ZXMoKSkKICAgICAg
ICAgYXBwbHkod29ya2VyVGhyZWFkKTsKIH0KIAotYm9vbCBTV0NvbnRleHRNYW5hZ2VyOjpwb3N0
VGFza1RvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik+JiYgdGFzaykKK2Jv
b2wgU1dDb250ZXh0TWFuYWdlcjo6cG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUmKT4mJiB0YXNrKQogewogICAgIGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1h
cC5nZXQoaWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5oCmluZGV4IGVhMzcwYjk3YWM3ZDc2MThiMDExYTRiY2M3ZjEyM2I3YTkzNjI3YjcuLmM3NjVj
NTdkMjAyM2YxNGNhYmJiZGJiOTBiNjgzZWE2NTQ1NzA3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgK
QEAgLTk1LDkgKzk1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWlu
YXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1bmN0
aW9uPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTYXZlU2NyaXB0c1Rv
RGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJM
LCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAotICAgIHZvaWQgZm9yRWFjaFNl
cnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eSYpPiYpOworICAgIHZvaWQgZm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoY29u
c3QgRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkmKT4mKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgcG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmKT4m
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3N0VGFza1RvU2VydmljZVdvcmtlcihTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUmKT4mJik7CiAKICAgICB1c2luZyBTZXJ2aWNlV29ya2VyQ3JlYXRpb25DYWxsYmFjayA9IHZv
aWQodWludDY0X3QpOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckNyZWF0aW9uQ2FsbGJhY2so
U2VydmljZVdvcmtlckNyZWF0aW9uQ2FsbGJhY2sqIGNhbGxiYWNrKSB7IG1fc2VydmljZVdvcmtl
ckNyZWF0aW9uQ2FsbGJhY2sgPSBjYWxsYmFjazsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBmZWY3NTExMDUyZjgxMjUw
YWU4MzA1MzQwZWY1YTkwM2IwOGM0ODY2Li5hZTYxYjc5YzFhODY1MTU3ODY0N2UxM2M5MDY1Yzc2
OWJjN2EyMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcApAQCAtNjA0LDcgKzYwNCw3IEBAIHZvaWQgU1dTZXJ2ZXI6Om1hdGNo
QWxsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVy
eU9wCiAgICAgY2FsbGJhY2soV1RGTW92ZShtYXRjaGluZ0NsaWVudHMpKTsKIH0KIAotdm9pZCBT
V1NlcnZlcjo6Zm9yRWFjaENsaWVudEZvck9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdp
biwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJik+JiBh
cHBseSkKK3ZvaWQgU1dTZXJ2ZXI6OmZvckVhY2hDbGllbnRGb3JPcmlnaW4oY29uc3QgQ2xpZW50
T3JpZ2luJiBvcmlnaW4sIGNvbnN0IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckNsaWVudERh
dGEmKT4mIGFwcGx5KQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJz
UGVyT3JpZ2luLmZpbmQob3JpZ2luKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9jbGllbnRJZGVu
dGlmaWVyc1Blck9yaWdpbi5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAwYWMzMTY3MjJhZDhmODFlM2JlMjU0ZTBhYTQ3
NDA4ZjU5YWU4NzBlLi5hOGVhYTYwYWUwMjk0NTVmZWNhNzk0ZDA4MzdiOGQ3MWMyYmU1NzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgflNXU2Vy
dmVyKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsKFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdGFydFN1c3BlbnNpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZFN1c3BlbnNpb24oKTsKQEAgLTE4Niw3ICsxODYsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5n
JiYgdXNlckFnZW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyKTsKIAotICAgIHVzaW5nIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qKT47CisgICAgdXNpbmcgUnVu
U2VydmljZVdvcmtlckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBydW5TZXJ2aWNlV29ya2VySWZO
ZWNlc3NhcnkoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFj
ayYmKTsKIAogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMoU1dTZXJ2
ZXJSZWdpc3RyYXRpb24mKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
aW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwogCiAg
ICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29ya2VySWRl
bnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmb3JFYWNoQ2xpZW50
Rm9yT3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYpPiYpOworICAgIHZvaWQgZm9yRWFjaENsaWVudEZvck9y
aWdpbihjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhJik+Jik7CiAKICAgICB2b2lkIHBlcmZvcm1HZXRPcmlnaW5zV2l0aFJlZ2lz
dHJhdGlvbnNDYWxsYmFja3MoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggNzhjNzczODU0
NTdkNjE5NjZkMWUxMjRhZjMzZWRkMzM4OTE4ZWZhNy4uZDYwZmYwMDk5YmExYzhjMDhjYTFlN2E2
MjJkNmY4NzQxYWZmYWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0zNzIsNyArMzcyLDcg
QEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpmaW5pc2hDdXJyZW50Sm9iKCkKICAgICAgICAgcnVu
TmV4dEpvYigpOwogfQogCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnJlbW92ZUFsbEpvYnNNYXRj
aGluZyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woU2VydmljZVdvcmtlckpvYkRhdGEmKT4mIG1h
dGNoZXMpCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlbW92ZUFsbEpvYnNNYXRjaGluZyhjb25z
dCBGdW5jdGlvbjxib29sKFNlcnZpY2VXb3JrZXJKb2JEYXRhJik+JiBtYXRjaGVzKQogewogICAg
IGJvb2wgaXNGaXJzdCA9IHRydWU7CiAgICAgYm9vbCBkaWRSZW1vdmVGaXJzdEpvYiA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuaAppbmRleCBlYjkzMWUwNDE0NzAwZWQ1OTY3YWFiNjFkNjQ4Mjc1ODEy
NTljNDM3Li40ZmQ1ZTYxODlkNzE5ZDBiODNmZmFkOTk2NTk0NzI1ZTY3NjcyMmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
Sm9iUXVldWUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnN0YWxs
KFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCi0gICAg
dm9pZCByZW1vdmVBbGxKb2JzTWF0Y2hpbmcoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sKFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJik+Jik7CisgICAgdm9pZCByZW1vdmVBbGxKb2JzTWF0Y2hpbmcoY29u
c3QgRnVuY3Rpb248Ym9vbChTZXJ2aWNlV29ya2VySm9iRGF0YSYpPiYpOwogCiAgICAgRGVxdWU8
U2VydmljZVdvcmtlckpvYkRhdGE+IG1fam9iUXVldWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5jcHAKaW5kZXggYWY5NWExYTA2MWY1NzAwYjA5YjhjMTdlYjJkZGIyNjA2MmJmNzgxNS4uODZi
NTgyNjQxNGQ5YzU4MmI2ZWIwZmQzZDQxOWI5OWYyMDY3NzhhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9u
OjpmaXJlVXBkYXRlRm91bmRFdmVudCgpCiAgICAgfSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJSZWdp
c3RyYXRpb246OmZvckVhY2hDb25uZWN0aW9uKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1Nl
cnZlcjo6Q29ubmVjdGlvbiYpPiYgYXBwbHkpCit2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpm
b3JFYWNoQ29ubmVjdGlvbihjb25zdCBGdW5jdGlvbjx2b2lkKFNXU2VydmVyOjpDb25uZWN0aW9u
Jik+JiBhcHBseSkKIHsKICAgICBmb3IgKGF1dG8gY29ubmVjdGlvbklkZW50aWZpZXJXaXRoQ2xp
ZW50cyA6IG1fY29ubmVjdGlvbnNXaXRoQ2xpZW50UmVnaXN0cmF0aW9ucy52YWx1ZXMoKSkgewog
ICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc2VydmVyLmNvbm5lY3Rpb24oY29ubmVj
dGlvbklkZW50aWZpZXJXaXRoQ2xpZW50cykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXgg
NWQxZTkyYjkxNDdjNWEzMzBiNmQ1ZGMyMTAzYzNmM2VkMDY3NjRjNS4uMmMxNjRlNDQ0YjQ1Y2U2
OTBiNWUzNjhmZjhhYmZlZDY5MDc4YjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAt
OTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc1VucmVnaXN0ZXJlZCgpIGNv
bnN0OwogCi0gICAgdm9pZCBmb3JFYWNoQ29ubmVjdGlvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZv
aWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mKTsKKyAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9u
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9wdGlvbnMmKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlU29mdFVwZGF0ZShJc0FwcElu
aXRpYXRlZCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>