<?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>188719</bug_id>
          
          <creation_ts>2018-08-18 00:39:03 -0700</creation_ts>
          <short_desc>Use unified sources to build all of the NetworkProcess code</short_desc>
          <delta_ts>2018-08-20 12:26:42 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>185011</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1451361</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-18 00:39:03 -0700</bug_when>
    <thetext>Use unified sources to build all of the NetworkProcess code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451364</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-18 00:40:20 -0700</bug_when>
    <thetext>1) I&apos;ve only done a Mac open source release build, so this is not going to build everywhere yet.
2) The amount of WebCore:: is ... very high. I wonder if we really think this is OK.
3) I feel like we could use a clang plugin to do most of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451365</commentid>
    <comment_count>2</comment_count>
      <attachid>347438</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-18 00:41:10 -0700</bug_when>
    <thetext>Created attachment 347438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451366</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-18 00:43:08 -0700</bug_when>
    <thetext>Attachment 347438 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/NetworkProcess.cpp:613:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451382</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-18 07:48:28 -0700</bug_when>
    <thetext>I have a smaller patch for this in bug #185011, but didn&apos;t try hard enough to find a reviewer.

See also: bug #185010. Let&apos;s use that bug to coordinate and avoid duplicate work.

(In reply to Tim Horton from comment #1)
&gt; 2) The amount of WebCore:: is ... very high. I wonder if we really think
&gt; this is OK.

Instead of removing &apos;using namespace WebCore&apos; entirely, I would move it inside the WebKit namespace instead. That&apos;s what I did in bug #185011, and matches the approach Keith used for WebCore. It&apos;s a lot simpler, and it works, at least in NetworkProcess. I figure where it doesn&apos;t work, we can use @no-unify or find other solutions case-by-case.

If you want to try that approach, then I would start with my patch, add your XCode build system changes, your changes to SourcesCocoa.txt, and redo just the *.mm files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451383</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-18 07:49:20 -0700</bug_when>
    <thetext>BTW: I will be available to help with the CMake ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451439</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-18 21:07:24 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #4)
&gt; I have a smaller patch for this in bug #185011, but didn&apos;t try hard enough
&gt; to find a reviewer.
&gt; 
&gt; See also: bug #185010. Let&apos;s use that bug to coordinate and avoid duplicate
&gt; work.
&gt; 
&gt; (In reply to Tim Horton from comment #1)
&gt; &gt; 2) The amount of WebCore:: is ... very high. I wonder if we really think
&gt; &gt; this is OK.
&gt; 
&gt; Instead of removing &apos;using namespace WebCore&apos; entirely, I would move it
&gt; inside the WebKit namespace instead. That&apos;s what I did in bug #185011, and
&gt; matches the approach Keith used for WebCore. It&apos;s a lot simpler, and it
&gt; works, at least in NetworkProcess. I figure where it doesn&apos;t work, we can
&gt; use @no-unify or find other solutions case-by-case.

INTERESTING, I didn&apos;t know that worked.

&gt; If you want to try that approach, then I would start with my patch, add your
&gt; XCode build system changes, your changes to SourcesCocoa.txt, and redo just
&gt; the *.mm files.

Sure, I&apos;ll try your way soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451440</commentid>
    <comment_count>7</comment_count>
      <attachid>347454</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-18 21:31:59 -0700</bug_when>
    <thetext>Created attachment 347454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451441</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-18 21:35:24 -0700</bug_when>
    <thetext>If Michael&apos;s approach is cleaner, great.  I like this, so r=me.  I uploaded an attempt to fix ios.  Good night!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451460</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-19 11:44:24 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #6)
&gt; INTERESTING, I didn&apos;t know that worked.

This is what Keith did for all of WebCore: I was just copying him. It &quot;works&quot; in that any name conflicts will now be confined to uses within the WebKit namespace. So it&apos;s not perfect, but it&apos;s good enough. Clashes can be dealt with on a case-by-case basis when adding new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451681</commentid>
    <comment_count>10</comment_count>
      <attachid>347454</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-20 12:24:19 -0700</bug_when>
    <thetext>Comment on attachment 347454
Patch

After seeing https://bugs.webkit.org/show_bug.cgi?id=185011 this looks like a mess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451685</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-20 12:26:42 -0700</bug_when>
    <thetext>Yeah, the other plan is clearly better.

*** This bug has been marked as a duplicate of bug 185011 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347438</attachid>
            <date>2018-08-18 00:41:10 -0700</date>
            <delta_ts>2018-08-18 21:31:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188719-20180818004109.patch</filename>
            <type>text/plain</type>
            <size>274576</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2Y2UxMjA4NjljZTA4ZWY5
ZmU4Y2ExNzUyOTc0NGU3YWM1MTBkNGUuLjQ4YjI1Y2JmZjAxNTkyNDVkNTczZjVjOTE3YjhjNzVi
NDYyZWI4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTgtMDgtMTggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIHVuaWZpZWQgc291
cmNlcyB0byBidWlsZCBhbGwgb2YgdGhlIE5ldHdvcmtQcm9jZXNzIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODcxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9ibGl0ZXJhdGUgJ3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlJy4KKyAgICAgICAgI3VuZGVmIHNvbWUgdGhpbmdzIHRoYXQgYXJlIHJl
LXVzZWQgaW4gbXVsdGlwbGUgZmlsZXMuCisgICAgICAgIFJlbW92ZSBzb21lIG51bGxhYmlsaXR5
IHNwZWNpZmllcnMgZnJvbSBpbXBsZW1lbnRhdGlvbiBmaWxlcyBzbyB0aGF0CisgICAgICAgIHRo
ZXkgZG9uJ3QgdmlyYWxseSByZXF1aXJlIG51bGxhYmlsaXR5IHNwZWNpZmllcnMgaW4gbW9yZSBw
bGFjZXMuCisgICAgICAgIFN3aXRjaCBOZXR3b3JrUHJvY2Vzcy8qIHRvIHVuaWZpZWQgc291cmNl
cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdl
ck1hYy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlUmVwbGF5ZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0RhdGFUYXNrUmVwbGF5LmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFj
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDE4LTA4LTE3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIFN0YXJ0IGJyaW5naW5nIHVwIFVuaWZpZWQgU291cmNlcyBp
biBXZWJLaXQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nv
b2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKaW5kZXggMGJiMTQ5Y2ExNTU1MGUxYTljOGQzZTQ2
OWFiMjZjZTY0NmI4Y2JhNS4uOWM3YjIwOTM2YzE2MzNmYmFjOWZkZmE0YjlhNWRkNjUwMDYwOTNh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmNwcApAQCAtMzgsOCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25zdCBjaGFy
KiBXZWJDb29raWVNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCkBAIC01OCw3ICs1Niw3IEBAIFdl
YkNvb2tpZU1hbmFnZXI6On5XZWJDb29raWVNYW5hZ2VyKCkgPSBkZWZhdWx0Owogdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gaG9z
dG5hbWVzOwotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0byogc3RvcmFnZVNl
c3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5nZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhob3N0bmFtZXMpOwogCiAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6RGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29weVRvVmVjdG9yKGhvc3Ru
YW1lcyksIGNhbGxiYWNrSUQpLCAwKTsKQEAgLTY2LDIwICs2NCwyMCBAQCB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ2FsbGJhYwogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7
Ci0gICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoeyBo
b3N0bmFtZSB9KTsKIH0KIAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9u
LT5kZWxldGVBbGxDb29raWVzKCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRl
Q29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2ll
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24g
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+ZGVs
ZXRlQ29va2llKGNvb2tpZSk7CiAKICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKQEAgLTg3
LDcgKzg1LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2sKIAogdm9pZCBXZWJDb29raWVNYW5h
Z2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdhbGxUaW1lIHRpbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBz
dG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UodGltZSk7CiAKICAg
ICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxl
dGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKQEAgLTk1LDMzICs5MywzMyBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVwogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgVmVj
dG9yPENvb2tpZT4gY29va2llczsKLSAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llczsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24g
PSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIGNvb2tpZXMgPSBzdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsQ29va2llcygpOwog
CiAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlk
R2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7Ci0g
ICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tp
ZXM7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBjb29raWVzID0g
c3RvcmFnZVNlc3Npb24tPmdldENvb2tpZXModXJsKTsKIAogICAgIG1fcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2Fs
bGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYgY29va2llLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7Ci0gICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChhdXRvKiBzdG9y
YWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUp
OwogCiAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdl
cjo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29r
aWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkws
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2ll
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
JiBjb29raWVzLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBt
YWluRG9jdW1lbnRVUkwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBpZiAoYXV0byog
c3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9y
YWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAK
ICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRT
ZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKQEAgLTEzNSw3ICsxMzMsNyBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6Om5vdGlmeUNvb2tpZXNEaWRDaGFuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIFdlYkNvcmU6OnN0
YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Npb24sIFt0aGlzLCBzZXNzaW9u
SURdIHsKICAgICAgICAgICAgIG5vdGlmeUNvb2tpZXNEaWRDaGFuZ2Uoc2Vzc2lvbklEKTsKICAg
ICAgICAgfSk7CkBAIC0xNDQsNyArMTQyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKLSAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpzdG9wT2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcygqc3RvcmFnZVNlc3Npb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMu
bW0KaW5kZXggOTgwYmFjMTFhYTI3ZWU2YTZkZjg0OTE5ZmZhMmNhZjdkYzdiYTk4YS4uMTEwNTdk
NzA4NGU0ZTBiOGRhNWNlNjdkNmFlNmY5M2Y1ZWNmOTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFu
YWdlck1hYy5tbQpAQCAtMzEsOCArMzEsNiBAQAogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAKLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJDb29raWVNYW5h
Z2VyOjpwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3kpCkBAIC00MSw3ICszOSw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6cGxh
dGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kKIAog
ICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0Q29v
a2llQWNjZXB0UG9saWN5OnN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4ocG9s
aWN5KV07CiAKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2goWyZdIChjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbikgeworICAgIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zm9yRWFjaChbJl0gKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uKSB7CiAgICAgICAgIGlm
IChhdXRvIGNvb2tpZVN0b3JhZ2UgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24uY29va2llU3RvcmFn
ZSgpKQogICAgICAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGlj
eShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmluZGV4IDlhMDY3
N2UxNzdlNTBmOWY4ZDM0ZDhmMDcxZjI3NGM5Y2IyYWJhNjYuLjhlZDQ3NzVlNDgxN2VjOTQ1ZThh
OWZhNGViYWMyMjA4NTFlZjYyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTQzLDggKzQzLDYgQEAKICNpbmNsdWRl
ICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBEb3dubG9h
ZDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MTI5LDcgKzEyNyw3IEBAIHZvaWQgRG93bmxvYWQ6OmRpZEZpbmlzaCgpCiAgICAgbV9kb3dubG9h
ZE1hbmFnZXIuZG93bmxvYWRGaW5pc2hlZCh0aGlzKTsKIH0KIAotdm9pZCBEb3dubG9hZDo6ZGlk
RmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhKQordm9pZCBEb3dubG9hZDo6ZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKQog
ewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6IChpZCA9ICUiIFBSSXU2NCAi
LCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJyQ29kZSA9ICVkKSIsCiAg
ICAgICAgIGRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksIGVycm9yLmlzVGltZW91dCgpLCBlcnJv
ci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7CkBAIC0xODIsMyArMTgwLDUg
QEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpCiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAwZjQwOWU5MWM5MDVmNGQ5NTcwM2VjZWU4MmVlN2I3Y2Ri
MGJjNDQzLi4zNjc0ZmJjMDAxMjNjZWIzZDk1ZDcwNzM2YmJhNmQ5YTZhZjU0Mzc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAKQEAgLTM2LDggKzM2LDYgQEAKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIERvd25sb2FkTWFuYWdlcjo6RG93bmxvYWRN
YW5hZ2VyKENsaWVudCYgY2xpZW50KQpAQCAtNDUsNyArNDMsNyBAQCBEb3dubG9hZE1hbmFnZXI6
OkRvd25sb2FkTWFuYWdlcihDbGllbnQmIGNsaWVudCkKIHsKIH0KIAotdm9pZCBEb3dubG9hZE1h
bmFnZXI6OnN0YXJ0RG93bmxvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFt
ZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25s
b2FkSUQgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCiB7CiAgICAgYXV0byogbmV0d29ya1Nlc3Np
b24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKICAgICBpZiAo
IW5ldHdvcmtTZXNzaW9uKQpAQCAtNTQsMTAgKzUyLDEwIEBAIHZvaWQgRG93bmxvYWRNYW5hZ2Vy
OjpzdGFydERvd25sb2FkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9u
LCBQCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVy
cy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVz
dDsKLSAgICBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSBDbGllbnRDcmVkZW50
aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKKyAgICBwYXJhbWV0ZXJzLmNs
aWVudENyZWRlbnRpYWxQb2xpY3kgPSBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFsUG9saWN5OjpN
YXlBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2Nv
bElzQmxvYigpICYmIGNvbm5lY3Rpb24pCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZl
cmVuY2VzID0gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuZmlsZXNJbkJsb2IoKmNv
bm5lY3Rpb24sIHJlcXVlc3QudXJsKCkpOwotICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CisgICAgcGFyYW1l
dGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8g
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKIAogICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQo
ZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KFdURk1vdmUocGFy
YW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgc3VnZ2VzdGVkTmFtZSkpOwog
fQpAQCAtODYsNyArODQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRp
bmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0dwogICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxv
YWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmIG5ldHdvcmtMb2FkLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVu
Y2VzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRv
RG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xv
YWQ+JiYgbmV0d29ya0xvYWQsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4mJiBibG9iRmlsZVJlZmVyZW5jZXMsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkp
OwogICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nRG93bmxvYWQ+KFdURk1vdmUobmV0d29ya0xvYWQpLCBkb3dubG9hZElELCByZXF1
ZXN0LCByZXNwb25zZSkpOwpAQCAtMTAzLDcgKzEwMSw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2Vy
Ojpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93
bmxvCiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJ
RCkpOwogCiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24oZGVzdGluYXRpb24sIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGFsbG93T3Zl
cndyaXRlKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpEb3dubG9h
ZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6RG93
bmxvYWQpOwogICAgICAgICBpZiAobmV0d29ya0RhdGFUYXNrLT5zdGF0ZSgpID09IE5ldHdvcmtE
YXRhVGFzazo6U3RhdGU6OkNhbmNlbGluZyB8fCBuZXR3b3JrRGF0YVRhc2stPnN0YXRlKCkgPT0g
TmV0d29ya0RhdGFUYXNrOjpTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0xNDcsNyArMTQ1LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2Fk
KERvd25sb2FkSUQgZG93bmxvYWRJRCkKICAgICAgICAgQVNTRVJUKGNvbXBsZXRpb25IYW5kbGVy
KTsKIAogICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmNhbmNlbCgpOwotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICAgICAgbV9jbGllbnQucGVu
ZGluZ0Rvd25sb2FkQ2FuY2VsZWQoZG93bmxvYWRJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5k
aW5nRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmNwcAppbmRleCBmMWE1NzIzNTUxMWNkYmFjZjVmNjNlMTMyMzIyZTI3
NWFhNDhlODg2Li5iMDgxMTI5MjBhMDJhOWVlNDg2NGExMmYwYTFjZDRiZDM5ZGY3YjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5jcHAKQEAgLTMyLDE0ICszMiwxMiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGVuZGluZ0Rvd25sb2Fk
OjpQZW5kaW5nRG93bmxvYWQoTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgRG93
bmxvYWRJRCBkb3dubG9hZElELCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKICAgICA6IG1fbmV0d29ya0xvYWQoc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNz
aW9uKSkKIHsKLSAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gcGFyYW1l
dGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1h
eUFza0NsaWVudEZvckNyZWRlbnRpYWxzOworICAgIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3Jl
ZGVudGlhbHMgPSBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gV2ViQ29yZTo6
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CiAKICAg
ICBtX25ldHdvcmtMb2FkLT5zZXRQZW5kaW5nRG93bmxvYWRJRChkb3dubG9hZElEKTsKICAgICBt
X25ldHdvcmtMb2FkLT5zZXRQZW5kaW5nRG93bmxvYWQoKnRoaXMpOwpAQCAtNDgsNyArNDYsNyBA
QCBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChOZXR3b3JrTG9hZFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzLCBEb3dubG9hZElECiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6RGlkU3RhcnQobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgc3VnZ2VzdGVkTmFt
ZSkpOwogfQogCi1QZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0xvYWQ+JiYgbmV0d29ya0xvYWQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK1BlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9uZXR3b3JrTG9hZChXVEZNb3ZlKG5ldHdvcmtM
b2FkKSkKIHsKICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gbV9uZXR3
b3JrTG9hZC0+aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcAppbmRleCBmMDgyNGQ3MzZiZTJmY2JjY2YxZmIwMWEwMTJiZDdkYjdiZmZlZDQ4
Li4xMmE4MTEyNTZmNTE2Njg1NmZmNzIyMmNiOTRmNDAwNDhiZTBiMzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwCkBAIC0zNCw4ICszNCw2IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBOZXR3b3JrQmxvYlJlZ2lzdHJ5JiBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKQpAQCAtNDksMjUgKzQ3LDI1IEBAIE5ldHdvcmtCbG9i
UmVnaXN0cnk6Ok5ldHdvcmtCbG9iUmVnaXN0cnkoKQogewogfQogCi12b2lkIE5ldHdvcmtCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24sIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYm
IHNhbmRib3hFeHRlbnNpb24sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgYmxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5z
aW9uKSksIGNvbnRlbnRUeXBlKTsKKyAgICBXZWJDb3JlOjpibG9iUmVnaXN0cnkoKS5yZWdpc3Rl
ckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZShwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKSwgY29udGVudFR5cGUp
OwogCiAgICAgQVNTRVJUKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbikuY29u
dGFpbnModXJsKSk7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJh
dG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKICAgICBpZiAobWFw
SXRlcmF0b3IgPT0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZW5kKCkpCi0gICAgICAgIG1hcEl0ZXJh
dG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb24sIEhhc2hTZXQ8VVJMPigp
KS5pdGVyYXRvcjsKKyAgICAgICAgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5h
ZGQoY29ubmVjdGlvbiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+KCkpLml0ZXJhdG9yOwogICAgIG1h
cEl0ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rp
b24sIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYgYmxvYlBhcnRz
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYgYmxv
YlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIGJsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwor
ICAgIFdlYkNvcmU6OmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUo
YmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogCiAgICAgQVNTRVJUKCFtX2Jsb2JzRm9yQ29ubmVj
dGlvbi5nZXQoY29ubmVjdGlvbikuY29udGFpbnModXJsKSk7CiAgICAgQmxvYkZvckNvbm5lY3Rp
b25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChj
b25uZWN0aW9uKTsKICAgICBpZiAobWFwSXRlcmF0b3IgPT0gbV9ibG9ic0ZvckNvbm5lY3Rpb24u
ZW5kKCkpCi0gICAgICAgIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uYWRkKGNv
bm5lY3Rpb24sIEhhc2hTZXQ8VVJMPigpKS5pdGVyYXRvcjsKKyAgICAgICAgbWFwSXRlcmF0b3Ig
PSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbiwgSGFzaFNldDxXZWJDb3JlOjpV
Ukw+KCkpLml0ZXJhdG9yOwogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIApA
QCAtNzgsMjYgKzc2LDI2IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9i
VVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgaWYgKG1hcEl0
ZXJhdG9yID09IG1fYmxvYnNGb3JDb25uZWN0aW9uLmVuZCgpKSB7CiAgICAgICAgIGlmICghc2hv
dWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBt
YXBJdGVyYXRvciA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmFkZChjb25uZWN0aW9uLCBIYXNoU2V0
PFVSTD4oKSkuaXRlcmF0b3I7CisgICAgICAgIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5l
Y3Rpb24uYWRkKGNvbm5lY3Rpb24sIEhhc2hTZXQ8V2ViQ29yZTo6VVJMPigpKS5pdGVyYXRvcjsK
ICAgICB9CiAKLSAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwp
OworICAgIFdlYkNvcmU6OmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VS
TCk7CiAKICAgICBBU1NFUlQoc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrIHx8IG1hcEl0ZXJh
dG9yLT52YWx1ZS5jb250YWlucyhzcmNVUkwpKTsKICAgICBtYXBJdGVyYXRvci0+dmFsdWUuYWRk
KHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rp
b24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxl
QmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Jsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBhdXRvIGZpbGVSZWZlcmVuY2UgPSBj
b25uZWN0aW9uLT5nZXRCbG9iRGF0YUZpbGVSZWZlcmVuY2VGb3JQYXRoKGZpbGVCYWNrZWRQYXRo
KTsKICAgICBBU1NFUlQoZmlsZVJlZmVyZW5jZSk7CiAKLSAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShmaWxl
UmVmZXJlbmNlKSwgY29udGVudFR5cGUpOworICAgIFdlYkNvcmU6OmJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBXVEZNb3ZlKGZp
bGVSZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7CiAKICAgICBBU1NFUlQoIW1fYmxvYnNGb3JDb25u
ZWN0aW9uLmdldChjb25uZWN0aW9uKS5jb250YWlucyh1cmwpKTsKICAgICBCbG9iRm9yQ29ubmVj
dGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5k
KGNvbm5lY3Rpb24pOwogICAgIGlmIChtYXBJdGVyYXRvciA9PSBtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5lbmQoKSkKLSAgICAgICAgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5hZGQo
Y29ubmVjdGlvbiwgSGFzaFNldDxVUkw+KCkpLml0ZXJhdG9yOworICAgICAgICBtYXBJdGVyYXRv
ciA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmFkZChjb25uZWN0aW9uLCBIYXNoU2V0PFdlYkNvcmU6
OlVSTD4oKSkuaXRlcmF0b3I7CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQog
CkBAIC0xMDgsNyArMTA2LDcgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyoKICAgICBpZiAobWFw
SXRlcmF0b3IgPT0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZW5kKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJM
LCBzdGFydCwgZW5kKTsKKyAgICBXZWJDb3JlOjpibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JV
UkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiAKICAgICBBU1NFUlQobWFwSXRl
cmF0b3ItPnZhbHVlLmNvbnRhaW5zKHNyY1VSTCkpOwogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5h
ZGQodXJsKTsKQEAgLTEyMSw3ICsxMTksNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZQogICAg
IGlmIChtYXBJdGVyYXRvciA9PSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5lbmQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKKyAg
ICBXZWJDb3JlOjpibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogCiAgICAg
QVNTRVJUKG1hcEl0ZXJhdG9yLT52YWx1ZS5jb250YWlucyh1cmwpKTsKICAgICBtYXBJdGVyYXRv
ci0+dmFsdWUucmVtb3ZlKHVybCk7CkBAIC0xMzIsMjcgKzEzMCwyNyBAQCB1aW50NjRfdCBOZXR3
b3JrQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
Y29ubmVjdGlvbgogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVj
dGlvbikgfHwgIW1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlLmNv
bnRhaW5zKHVybCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGJsb2JSZWdpc3Ry
eSgpLmJsb2JTaXplKHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmJsb2JSZWdpc3RyeSgpLmJs
b2JTaXplKHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
YmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJDb3JlOjpibG9iUmVnaXN0cnkoKS53cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OndyaXRlQmxvYlRvRmlsZVBhdGgo
Y29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9uPHZvaWQoYm9v
bCBzdWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3Ry
eTo6d3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBXZWJDb3JlOjpVUkwmIGJsb2JVUkwsIGNvbnN0
IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIGlmICghYmxvYlJlZ2lzdHJ5KCkuaXNCbG9iUmVnaXN0cnlJbXBsKCkp
IHsKKyAgICBpZiAoIVdlYkNvcmU6OmJsb2JSZWdpc3RyeSgpLmlzQmxvYlJlZ2lzdHJ5SW1wbCgp
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGJsb2JGaWxl
cyA9IGZpbGVzSW5CbG9iKHsgUGFyc2VkVVJMU3RyaW5nLCBibG9iVVJMIH0pOworICAgIGF1dG8g
YmxvYkZpbGVzID0gZmlsZXNJbkJsb2IoeyBXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIGJsb2JV
UkwgfSk7CiAgICAgZm9yIChhdXRvJiBmaWxlIDogYmxvYkZpbGVzKQogICAgICAgICBmaWxlLT5w
cmVwYXJlRm9yRmlsZUFjY2VzcygpOwogCi0gICAgc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1w
bCY+KGJsb2JSZWdpc3RyeSgpKS53cml0ZUJsb2JUb0ZpbGVQYXRoKGJsb2JVUkwsIHBhdGgsIFti
bG9iRmlsZXMgPSBXVEZNb3ZlKGJsb2JGaWxlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3MpIHsKKyAgICBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJj4oV2ViQ29yZTo6YmxvYlJlZ2lzdHJ5KCkpLndyaXRl
QmxvYlRvRmlsZVBhdGgoYmxvYlVSTCwgcGF0aCwgW2Jsb2JGaWxlcyA9IFdURk1vdmUoYmxvYkZp
bGVzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJv
b2wgc3VjY2VzcykgewogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBibG9iRmlsZXMpCiAgICAg
ICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNjZXNzKCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN1Y2Nlc3MpOwpAQCAtMTY0LDE0ICsxNjIsMTQgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lz
dHJ5Ojpjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlAKICAgICBpZiAoIW1fYmxvYnNGb3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBIYXNoU2V0PFVSTD4mIGJsb2JzRm9yQ29ubmVjdGlvbiA9
IG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlOwotICAgIGZvciAo
SGFzaFNldDxVUkw+OjppdGVyYXRvciBpdGVyID0gYmxvYnNGb3JDb25uZWN0aW9uLmJlZ2luKCks
IGVuZCA9IGJsb2JzRm9yQ29ubmVjdGlvbi5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoKml0ZXIpOworICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6VVJMPiYgYmxvYnNGb3JDb25uZWN0aW9uID0gbV9ibG9ic0ZvckNvbm5lY3Rp
b24uZmluZChjb25uZWN0aW9uKS0+dmFsdWU7CisgICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OlVS
TD46Oml0ZXJhdG9yIGl0ZXIgPSBibG9ic0ZvckNvbm5lY3Rpb24uYmVnaW4oKSwgZW5kID0gYmxv
YnNGb3JDb25uZWN0aW9uLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBXZWJD
b3JlOjpibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCgqaXRlcik7CiAKICAgICBtX2Js
b2JzRm9yQ29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbik7CiB9CiAKLVZlY3RvcjxSZWZQdHI8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2Io
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsKQorVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgaWYg
KCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlucygmY29ubmVjdGlvbikgfHwgIW1fYmxvYnNG
b3JDb25uZWN0aW9uLmZpbmQoJmNvbm5lY3Rpb24pLT52YWx1ZS5jb250YWlucyh1cmwpKQogICAg
ICAgICByZXR1cm4geyB9OwpAQCAtMTc5LDE2ICsxNzcsMTYgQEAgVmVjdG9yPFJlZlB0cjxCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihOZXR3
b3JrQ28KICAgICByZXR1cm4gZmlsZXNJbkJsb2IodXJsKTsKIH0KIAotVmVjdG9yPFJlZlB0cjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihj
b25zdCBVUkwmIHVybCkKK1ZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCiB7Ci0gICAgQVNTRVJUKGJsb2JSZWdpc3RyeSgpLmlzQmxvYlJlZ2lzdHJ5SW1wbCgp
KTsKLSAgICBCbG9iRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBs
Jj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTCh1cmwpOworICAgIEFTU0VSVChX
ZWJDb3JlOjpibG9iUmVnaXN0cnkoKS5pc0Jsb2JSZWdpc3RyeUltcGwoKSk7CisgICAgV2ViQ29y
ZTo6QmxvYkRhdGEqIGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmxvYlJlZ2lzdHJ5
SW1wbCY+KFdlYkNvcmU6OmJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwodXJsKTsK
ICAgICBpZiAoIWJsb2JEYXRhKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPFJl
ZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiByZXN1bHQ7Ci0gICAgZm9yIChjb25zdCBCbG9i
RGF0YUl0ZW0mIGl0ZW0gOiBibG9iRGF0YS0+aXRlbXMoKSkgewotICAgICAgICBpZiAoaXRlbS50
eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlKQorICAgIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gcmVzdWx0OworICAgIGZvciAoY29uc3QgV2Vi
Q29yZTo6QmxvYkRhdGFJdGVtJiBpdGVtIDogYmxvYkRhdGEtPml0ZW1zKCkpIHsKKyAgICAgICAg
aWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6OkJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZSkKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbS5maWxlKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuY3BwCmluZGV4IDQ2MzYyNmU5ODFlZGQyMmNhNDdjNTY5MjZkNDJiNjhjYzYxY2Rh
MDcuLmE0ZTQ0YmIyYWJjNDNjNWRlOGI0NjhjZTY1Mjc3NTdmMjg5NmZmMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAKQEAgLTM4LDggKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6
Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcihQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgYm9v
bCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIENvbXBsZXRpb25DYWxsYmFj
ayYmIGNvbXBsZXRpb25DYWxsYmFjaykKICAgICA6IG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFt
ZXRlcnMpKQogICAgICwgbV9jb21wbGV0aW9uQ2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uQ2Fs
bGJhY2spKQpAQCAtNTUsNyArNTMsNyBAQCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6On5O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIoKQogICAgICAgICBtX3Rhc2stPmNhbmNlbCgpOwog
ICAgIH0KICAgICBpZiAobV9jb21wbGV0aW9uQ2FsbGJhY2spCi0gICAgICAgIG1fY29tcGxldGlv
bkNhbGxiYWNrKFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRp
b24gfSk7CisgICAgICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgeyBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSk7CiB9CiAK
IHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpzdGFydFByZWZsaWdodCgpCkBAIC02
NywxMCArNjUsMTAgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OnN0YXJ0UHJl
ZmxpZ2h0KCkKICAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJv
bFByZWZsaWdodFJlcXVlc3QobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdCwgbV9wYXJhbWV0
ZXJzLnNvdXJjZU9yaWdpbiwgbV9wYXJhbWV0ZXJzLnJlZmVycmVyKTsKICAgICBsb2FkUGFyYW1l
dGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMgPSBmYWxzZTsKICAgICBpZiAoIW1fcGFyYW1ldGVy
cy51c2VyQWdlbnQuaXNOdWxsKCkpCi0gICAgICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3Quc2V0
SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpVc2VyQWdlbnQsIG1fcGFyYW1ldGVycy51
c2VyQWdlbnQpOworICAgICAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6VXNlckFnZW50LCBtX3BhcmFtZXRlcnMudXNl
ckFnZW50KTsKIAogICAgIGlmIChtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cykKLSAgICAgICAgbV9sb2FkSW5mb3JtYXRpb24gPSBOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1h
dGlvbiB7IE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uOjpUeXBlOjpQcmVmbGlnaHQsIGxv
YWRQYXJhbWV0ZXJzLnJlcXVlc3QsIHsgfSwgeyB9IH07CisgICAgICAgIG1fbG9hZEluZm9ybWF0
aW9uID0gV2ViQ29yZTo6TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24geyBXZWJDb3JlOjpO
ZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbjo6VHlwZTo6UHJlZmxpZ2h0LCBsb2FkUGFyYW1l
dGVycy5yZXF1ZXN0LCB7IH0sIHsgfSB9OwogCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25J
RCkpIHsKICAgICAgICAgbV90YXNrID0gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoKm5ldHdvcmtT
ZXNzaW9uLCAqdGhpcywgV1RGTW92ZShsb2FkUGFyYW1ldGVycykpOwpAQCAtODYsNyArODQsNyBA
QCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZQogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24iKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwotICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0LnVybCgpLCAiUHJl
ZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpBY2Nlc3NDb250cm9sIH0pOworICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtX3Bh
cmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0LnVybCgpLCAiUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5v
dCBzdWNjZXNzZnVsIl9zLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250
cm9sIH0pOwogfQogCiB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTk0LDgg
KzkyLDggQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVDaGFs
bGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGEKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlQ2hhbGxlbmdlLCBhdXRoZW50aWNhdGlvbiBzY2hlbWU6ICV1IiwgY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpOwogCiAgICAg
YXV0byBzY2hlbWUgPSBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuYXV0aGVudGljYXRpb25T
Y2hlbWUoKTsKLSAgICBib29sIGlzVExTSGFuZHNoYWtlID0gc2NoZW1lID09IFByb3RlY3Rpb25T
cGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lU2VydmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkCi0g
ICAgICAgIHx8IHNjaGVtZSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUNs
aWVudENlcnRpZmljYXRlUmVxdWVzdGVkOworICAgIGJvb2wgaXNUTFNIYW5kc2hha2UgPSBzY2hl
bWUgPT0gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJU
cnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQKKyAgICAgICAgfHwgc2NoZW1lID09IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0
ZWQ7CiAKICAgICBpZiAoIWlzVExTSGFuZHNoYWtlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIHsg
fSk7CkBAIC0xMTMsNyArMTExLDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6
OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc28KICAgICAgICAg
bV9sb2FkSW5mb3JtYXRpb24ucmVzcG9uc2UgPSByZXNwb25zZTsKIAogICAgIG1fcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246
OlVzZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpVc2Up
OwogfQogCiB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKQEAgLTEzMCw3ICsxMjgsNyBAQCB2b2lkIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcgogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRDb21w
bGV0ZVdpdGhFcnJvciIpOwogICAgICAgICBhdXRvIGVycm9yID0gcHJlZmxpZ2h0RXJyb3I7CiAg
ICAgICAgIGlmIChlcnJvci5pc051bGwoKSB8fCBlcnJvci5pc0dlbmVyYWwoKSkKLSAgICAgICAg
ICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCk7Cisg
ICAgICAgICAgICBlcnJvci5zZXRUeXBlKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkFj
Y2Vzc0NvbnRyb2wpOwogCiAgICAgICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFdURk1vdmUoZXJy
b3IpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQxLDEwICsxMzksMTAgQEAgdm9pZCBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXIKICAgICBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbjsKICAgICBpZiAoIXZhbGlk
YXRlUHJlZmxpZ2h0UmVzcG9uc2UobV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9wYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBtX3BhcmFtZXRlcnMu
c291cmNlT3JpZ2luLCBlcnJvckRlc2NyaXB0aW9uKSkgewogICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRDb21wbGV0ZSwgQWNjZXNzQ29udHJvbCBlcnJvcjogJXMiLCBlcnJvckRl
c2NyaXB0aW9uLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX2NvbXBsZXRpb25DYWxsYmFjayhS
ZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9wYXJhbWV0ZXJz
Lm9yaWdpbmFsUmVxdWVzdC51cmwoKSwgZXJyb3JEZXNjcmlwdGlvbiwgUmVzb3VyY2VFcnJvcjo6
VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAgICAgbV9jb21wbGV0aW9uQ2FsbGJhY2soV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksIGVycm9yRGVzY3JpcHRpb24s
IFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgbV9jb21wbGV0aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJvciB7
IH0pOworICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyB9
KTsKIH0KIAogdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFNlbmREYXRhKHVp
bnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQp
CkBAIC0xNTQsMTkgKzE1MiwyMSBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90CiB2b2lkIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6d2FzQmxvY2tlZCgpCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2FzQmxvY2tlZCIpOwotICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFJlc291
cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtX3BhcmFtZXRlcnMub3Jp
Z2luYWxSZXF1ZXN0LnVybCgpLCAiQ09SUy1wcmVmbGlnaHQgcmVxdWVzdCB3YXMgYmxvY2tlZCJf
cywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICBtX2NvbXBsZXRp
b25DYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdC51cmwoKSwgIkNP
UlMtcHJlZmxpZ2h0IHJlcXVlc3Qgd2FzIGJsb2NrZWQiX3MsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiB9CiAKIHZvaWQgTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyOjpjYW5ub3RTaG93VVJMKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJjYW5ub3RTaG93VVJMIik7Ci0gICAgbV9jb21wbGV0aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJv
ciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJl
cXVlc3QudXJsKCksICJQcmVmbGlnaHQgcmVzcG9uc2Ugd2FzIGJsb2NrZWQiX3MsIFJlc291cmNl
RXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgbV9jb21wbGV0aW9uQ2FsbGJhY2so
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksICJQcmVmbGlnaHQgcmVz
cG9uc2Ugd2FzIGJsb2NrZWQiX3MsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vz
c0NvbnRyb2wgfSk7CiB9CiAKLU5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6dGFrZUluZm9ybWF0aW9uKCkKK1dlYkNvcmU6Ok5ldHdvcmtU
cmFuc2FjdGlvbkluZm9ybWF0aW9uIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6dGFrZUlu
Zm9ybWF0aW9uKCkKIHsKICAgICBBU1NFUlQobV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MpOwogICAgIHJldHVybiBXVEZNb3ZlKG1fbG9hZEluZm9ybWF0aW9uKTsKIH0KIAot
fSAvLyBOYW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI3VuZGVmIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMDgz
ODkzMDg1MmIxMmZhN2IxNDA2Y2JjNDBlNzFkNzY5ZTg0OWVlYy4uMDE4ZTZmOTk4MDU5ZGIwMjNi
ZmU2Y2UwMjc5YTE1ZmI1OTBiNmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAg
LTU4LDggKzU4LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5Lmg+CiAjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCkBAIC0yMDMsNyArMjAxLDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIEkKIHsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y3JlYXRlU29ja2V0U3RyZWFtKFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6VVJM
JiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwg
dWludDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIW1fbmV0d29ya1NvY2tldFN0cmVh
bXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9u
QXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsKQEAgLTI2NCw3ICsyNjIsNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKE5ldHdvcmtSZXNv
dXJjZUxvYWRQYQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2FkUGlu
ZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewotICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbi5jb3B5
UmVmKCksIGlkZW50aWZpZXIgPSBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyXSAoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSB7Cisg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFtjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uLmNv
cHlSZWYoKSwgaWRlbnRpZmllciA9IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXJdIChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEaWRGaW5pc2hQaW5nTG9hZChpZGVudGlmaWVyLCBlcnJv
ciwgcmVzcG9uc2UpLCAwKTsKICAgICB9OwogCkBAIC0zMTksNyArMzE3LDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyh1
aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKLSAg
ICBuZXcgUHJlY29ubmVjdFRhc2soV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyXSAoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKKyAgICBuZXcgUHJlY29ubmVjdFRh
c2soV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgaWRlbnRpZmllciA9IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyXSAoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKICAgICAgICAgZGlkRmluaXNoUHJlY29ubmVjdGlv
bihpZGVudGlmaWVyLCBlcnJvcik7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzI4LDcgKzMyNiw3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyh1aW50NjRf
dCBwcmVjb25uZWN0aW9uSWRlbnRpZmllCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90
IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbi0+aXNWYWxpZCgpKQogICAgICAgICByZXR1
cm47CkBAIC0zMzYsMzIgKzMzNCwzMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3RpbwogICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEaWRG
aW5pc2hQcmVjb25uZWN0aW9uKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBlcnJvciksIDApOwog
fQogCi1zdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCitzdGF0aWMgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJU
KHNlc3Npb25JRC5pc1ZhbGlkKCkpOwogICAgIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgewotICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Np
b24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisg
ICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgICAgIHJldHVybiAq
c3RvcmFnZVNlc3Npb247CiAKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyB3aXRoIHByaXZhdGUg
YnJvd3NpbmcgbW9kZSByZXF1ZXN0ZWQgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9ydGx5IGFmdGVy
IE5ldHdvcmtQcm9jZXNzIHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24uCiAgICAgICAg
IC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHRyYWNrIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbnMg
bW9yZSByaWdvcm91c2x5LgogICAgICAgICBMT0dfRVJST1IoIk5vbi1kZWZhdWx0IHN0b3JhZ2Ug
c2Vzc2lvbiB3YXMgcmVxdWVzdGVkLCBidXQgdGhlcmUgd2FzIG5vIHNlc3Npb24gZm9yIGl0LiBQ
bGVhc2UgZmlsZSBhIGJ1ZyB1bmxlc3MgeW91IGp1c3QgZGlzYWJsZWQgcHJpdmF0ZSBicm93c2lu
ZywgaW4gd2hpY2ggY2FzZSBpdCdzIGFuIGV4cGVjdGVkIHJhY2UuIik7CiAgICAgfQotICAgIHJl
dHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAg
IHJldHVybiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFt
ZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1l
KQogewogICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5z
dGFydERvd25sb2FkKHRoaXMsIHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2Vz
dGVkTmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElEIGRvd25sb2FkSUQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gTmV0d29ya1Byb2Nlc3M6OnNp
bmdsZXRvbigpOwogICAgIC8vIEluIGNhc2UgYSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBzZXJ2
aWNlIHdvcmtlciwgd2UgZG8gbm90IGhhdmUgeWV0IHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgdGhl
IGxvYWQuCi0gICAgaWYgKCFtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciB8fCByZXNwb25zZS5z
b3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKKyAg
ICBpZiAoIW1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyIHx8IHJlc3BvbnNlLnNvdXJjZSgpID09
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlcikgewogICAg
ICAgICBuZXR3b3JrUHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHRoaXMs
IHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0zNzUsNyArMzczLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2FkZXIt
PmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0cmluZywgYm9vbCYg
c2VjdXJlQ29va2llc0FjY2Vzc2VkKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0cmluZywgYm9v
bCYgc2VjdXJlQ29va2llc0FjY2Vzc2VkKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgc3RkOjp0aWUoY29va2llU3Ry
aW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNvb2tp
ZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpOwpAQCAtMzg1LDcgKzM4Myw3IEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24uc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKQEAgLTQwMCwzNCArMzk4LDM0IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgYm9vCiAgICAgcmVzdWx0ID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKS5jb29raWVzRW5hYmxlZCgpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0cmluZywgYm9vbCYgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29raWVTdHJpbmcs
IGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCkKIHsKICAgICBzdGQ6OnRpZShjb29raWVTdHJp
bmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCkgPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByZXN1bHQp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIHJlc3VsdCkKIHsKICAgICBz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCiB7CiAgICAgc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKS5kZWxldGVDb29raWUodXJsLCBj
b29raWVOYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVn
aXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZp
bGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKIHsKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gZXh0ZW5zaW9uID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoZXh0ZW5zaW9uSGFuZGxlKSk7CiAKICAg
ICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5yZWdpc3RlckZpbGVCbG9iVVJMKHRo
aXMsIHVybCwgcGF0aCwgV1RGTW92ZShleHRlbnNpb24pLCBjb250ZW50VHlwZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxv
YlVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYm
IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsLCBXVEZNb3Zl
KGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxkQnlwYXNzQ29ubmVjdGlvbkNoZWNrKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGJvb2wgc2hvdWxk
QnlwYXNzQ29ubmVjdGlvbkNoZWNrKQogewogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmds
ZXRvbigpLnJlZ2lzdGVyQmxvYlVSTCh0aGlzLCB1cmwsIHNyY1VSTCwgc2hvdWxkQnlwYXNzQ29u
bmVjdGlvbkNoZWNrKTsKIH0KQEAgLTQ1MSwzMSArNDQ5LDMxIEBAIFJlZlB0cjxXZWJDb3JlOjpC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRC
bG9iRGF0CiAgICAgcmV0dXJuIG1fYmxvYkRhdGFGaWxlUmVmZXJlbmNlcy5nZXQocGF0aCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgY29u
c3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFs
bHlGaWxlQmFja2VkKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5yZWdpc3Rl
ckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh0aGlzLCB1cmwsIHNyY1VSTCwgZmlsZUJhY2tl
ZFBhdGgsIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYg
c3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRf
dCBlbmQpCiB7CiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkucmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UodGhpcywgdXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmIHVybCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIE5ldHdvcmtCbG9iUmVnaXN0
cnk6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJCbG9iVVJMKHRoaXMsIHVybCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsLCB1
aW50NjRfdCYgcmVzdWx0U2l6ZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmJsb2JTaXplKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSkK
IHsKICAgICByZXN1bHRTaXplID0gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuYmxv
YlNpemUodGhpcywgdXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBWZWN0b3I8UmVmUHRyPEJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVSZWZlcmVuY2VzOworICAgIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gZmlsZVJlZmVyZW5jZXM7CiAgICAgZm9y
IChhdXRvJiB1cmwgOiBibG9iVVJMcykKLSAgICAgICAgZmlsZVJlZmVyZW5jZXMuYXBwZW5kVmVj
dG9yKE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLmZpbGVzSW5CbG9iKCp0aGlzLCB7
IFBhcnNlZFVSTFN0cmluZywgdXJsIH0pKTsKKyAgICAgICAgZmlsZVJlZmVyZW5jZXMuYXBwZW5k
VmVjdG9yKE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLmZpbGVzSW5CbG9iKCp0aGlz
LCB7IFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJsIH0pKTsKIAogICAgIGZvciAoYXV0byYg
ZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICBmaWxlLT5wcmVwYXJlRm9yRmlsZUFjY2Vz
cygpOwpAQCAtNTE0LDcgKzUxMiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQogewog
I2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3Jh
Z2VTZXNzaW9uLT5yZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CkBAIC01MjYsNyArNTI0LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHMKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JBbGxGcmFtZXNPblBhZ2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCiB7CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFH
RV9QQVJUSVRJT05JTkcpCi0gICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VB
Y2Nlc3NGb3JBbGxGcmFtZXNPblBhZ2UocGFnZUlEKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHNlc3Npb25JRCk7CkBAIC01MzYsMTcgKzUzNCwxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yQWxsRnJhbWVzT25QYWdlKFBBTDo6
UwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
c291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xp
Y3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
c291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xp
Y3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQog
CiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc1do
aXRlbGlzdHMoKQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMoKTsKKyAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RzKCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQo
dWludDY0X3QgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wg
aXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4IGM1NmE1NTc3ZDVkZjdlZmI3NDIzOGJkMjRkYWY2MmEz
NTdkYzRhZDkuLmQ1NTMxOWYxNjFkMTFmNjA1N2ExZmU0MmIzZGM3M2YyNmZjYTQ1MzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6TmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CkBAIC03Miw3ICs3MCw3IEBAIHZvaWQgTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMoVXNlckNvbnRlbnRDb250
cm9sbGVySWRlCiAgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZW50UnVsZUxpc3QgOiBjb250ZW50
UnVsZUxpc3RzKSB7CiAgICAgICAgIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSBjb250
ZW50UnVsZUxpc3REYXRhID0gY29udGVudFJ1bGVMaXN0LnNlY29uZDsKICAgICAgICAgYXV0byBj
b21waWxlZENvbnRlbnRSdWxlTGlzdCA9IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0OjpjcmVh
dGUoV1RGTW92ZShjb250ZW50UnVsZUxpc3REYXRhKSk7Ci0gICAgICAgIGJhY2tlbmQuYWRkQ29u
dGVudEV4dGVuc2lvbihjb250ZW50UnVsZUxpc3QuZmlyc3QsIFdURk1vdmUoY29tcGlsZWRDb250
ZW50UnVsZUxpc3QpLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbjo6U2hvdWxk
Q29tcGlsZUNTUzo6Tm8pOworICAgICAgICBiYWNrZW5kLmFkZENvbnRlbnRFeHRlbnNpb24oY29u
dGVudFJ1bGVMaXN0LmZpcnN0LCBXVEZNb3ZlKGNvbXBpbGVkQ29udGVudFJ1bGVMaXN0KSwgV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OlNob3VsZENvbXBpbGVD
U1M6Ok5vKTsKICAgICB9CiAKICAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3MgPSBtX3BlbmRpbmdD
YWxsYmFja3MudGFrZShpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAppbmRleCAxNTI0ZDNjZjMyMzVjY2MzODNmMjUwMjEx
YTg1ZmE1MmY4NGY5MzM4Li4yMTAwOWQ5YmM3Yzg2NTczYzc2MjZmZGZhODEwNDRhN2MwNmZkYzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
Y3BwCkBAIC00NCw4ICs0NCw2IEBACiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQ3VybC5oIgog
I2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBOZXR3
b3JrTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC02NCw3ICs2Miw3IEBAIFJlZjxOZXR3
b3JrRGF0YVRhc2s+IE5ldHdvcmtEYXRhVGFzazo6Y3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrRGF0CiAjZW5kaWYKIH0KIAotTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0
YVRhc2soTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xp
ZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBib29sIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5G
cmFtZU5hdmlnYXRpb24pCitOZXR3b3JrRGF0YVRhc2s6Ok5ldHdvcmtEYXRhVGFzayhOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGJvb2wgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICA6IG1fZmFpbHVyZVRpbWVyKCp0aGlzLCAmTmV0d29y
a0RhdGFUYXNrOjpmYWlsdXJlVGltZXJGaXJlZCkKICAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQog
ICAgICwgbV9jbGllbnQoJmNsaWVudCkKQEAgLTEwMSwxNCArOTksMTQgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2s6OnNjaGVkdWxlRmFpbHVyZShGYWlsdXJlVHlwZSB0eXBlKQogICAgIG1fZmFpbHVy
ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFzazo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQobV9jbGllbnQpOwogICAgIGlmIChyZXNwb25zZS5pc0hUVFAwOSgpKSB7CiAgICAgICAg
IGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwotICAgICAgICBpZiAocG9ydCAmJiAhaXNEZWZhdWx0UG9y
dEZvclByb3RvY29sKHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIGlmIChw
b3J0ICYmICFXZWJDb3JlOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1
cmwucHJvdG9jb2woKSkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OlBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKHsgU3RyaW5nKCksIDAsIHVybCwgIkNh
bmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiIgfSk7CiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcAppbmRleCBiNTY4NmI1OTNlMWQ3NDdiZTBkNGMxNjg3ZDBhMmJjY2JiNjQ4
NDZkLi43MjU4ODRjMGVjZmZkYmVmODc1YjQ1YzdmMjdlYjJiZmU3NDBmOTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAK
QEAgLTUyLDggKzUyLDYgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGJ1ZmZlclNpemUgPSA1MTIgKiAxMDI0
OwpAQCAtNzEsMTUgKzY5LDE1IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBodHRwSW50ZXJuYWxFcnJv
clRleHQgPSAiSW50ZXJuYWwgU2VydmVyIEVycm9yIjsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJXZWJLaXRCbG9iUmVzb3VyY2UiOwogCi1O
ZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxl
UmVmZXJlbmNlcykKLSAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVl
c3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2UsIGZhbHNlKQotICAg
ICwgbV9zdHJlYW0oc3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKK05l
dHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IoTmV0d29ya1Nlc3Npb24mIHNl
c3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50U25pZmYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxl
UmVmZXJlbmNlPj4mIGZpbGVSZWZlcmVuY2VzKQorICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Np
b24sIGNsaWVudCwgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRv
Tm90VXNlLCBmYWxzZSwgZmFsc2UpCisgICAgLCBtX3N0cmVhbShzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpKQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhm
aWxlUmVmZXJlbmNlcykKIHsKICAgICBmb3IgKGF1dG8mIGZpbGVSZWZlcmVuY2UgOiBtX2ZpbGVS
ZWZlcmVuY2VzKQogICAgICAgICBmaWxlUmVmZXJlbmNlLT5wcmVwYXJlRm9yRmlsZUFjY2Vzcygp
OwogCi0gICAgbV9ibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9i
UmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKHJlcXVlc3QudXJsKCkpOworICAgIG1fYmxv
YkRhdGEgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJj4oV2ViQ29yZTo6
YmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKIAogICAg
IG1fc2Vzc2lvbi0+cmVnaXN0ZXJOZXR3b3JrRGF0YVRhc2soKnRoaXMpOwogICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVwIC0gQ3JlYXRlZCBOZXR3b3JrRGF0YVRhc2tCbG9iIGZvciAlcyIsIHRo
aXMsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0xMzksOCArMTM3
LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpyZXN1bWUoKQogICAgICAgICB9CiAKICAg
ICAgICAgLy8gUGFyc2UgdGhlICJSYW5nZSIgaGVhZGVyIHdlIGNhcmUgYWJvdXQuCi0gICAgICAg
IFN0cmluZyByYW5nZSA9IG1fZmlyc3RSZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6UmFuZ2UpOwotICAgICAgICBpZiAoIXJhbmdlLmlzRW1wdHkoKSAmJiAhcGFyc2VSYW5n
ZShyYW5nZSwgbV9yYW5nZU9mZnNldCwgbV9yYW5nZUVuZCwgbV9yYW5nZVN1ZmZpeExlbmd0aCkp
IHsKKyAgICAgICAgU3RyaW5nIHJhbmdlID0gbV9maXJzdFJlcXVlc3QuaHR0cEhlYWRlckZpZWxk
KFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpSYW5nZSk7CisgICAgICAgIGlmICghcmFuZ2UuaXNF
bXB0eSgpICYmICFXZWJDb3JlOjpwYXJzZVJhbmdlKHJhbmdlLCBtX3JhbmdlT2Zmc2V0LCBtX3Jh
bmdlRW5kLCBtX3JhbmdlU3VmZml4TGVuZ3RoKSkgewogICAgICAgICAgICAgZGlzcGF0Y2hEaWRS
ZWNlaXZlUmVzcG9uc2UoRXJyb3I6OlJhbmdlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0xODcsMTIgKzE4NSwxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6
OmdldFNpemVGb3JOZXh0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IEJs
b2JEYXRhSXRlbSYgaXRlbSA9IG1fYmxvYkRhdGEtPml0ZW1zKCkuYXQobV9zaXplSXRlbUNvdW50
KTsKKyAgICBjb25zdCBXZWJDb3JlOjpCbG9iRGF0YUl0ZW0mIGl0ZW0gPSBtX2Jsb2JEYXRhLT5p
dGVtcygpLmF0KG1fc2l6ZUl0ZW1Db3VudCk7CiAgICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewot
ICAgIGNhc2UgQmxvYkRhdGFJdGVtOjpUeXBlOjpEYXRhOgorICAgIGNhc2UgV2ViQ29yZTo6Qmxv
YkRhdGFJdGVtOjpUeXBlOjpEYXRhOgogICAgICAgICBkaWRHZXRTaXplKGl0ZW0ubGVuZ3RoKCkp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZToKKyAg
ICBjYXNlIFdlYkNvcmU6OkJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZToKICAgICAgICAgLy8gRmls
ZXMga25vdyB0aGVpciBzaXplcywgYnV0IGFza2luZyB0aGUgc3RyZWFtIHRvIHZlcmlmeSB0aGF0
IHRoZSBmaWxlIHdhc24ndCBtb2RpZmllZC4KICAgICAgICAgbV9zdHJlYW0tPmdldFNpemUoaXRl
bS5maWxlKCktPnBhdGgoKSwgaXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgp
KTsKICAgICAgICAgYnJlYWs7CkBAIC0yMTcsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjpkaWRHZXRTaXplKGxvbmcgbG9uZyBzaXplKQogICAgIH0KIAogICAgIC8vIFRoZSBz
aXplIHBhc3NlZCBiYWNrIGlzIHRoZSBzaXplIG9mIHRoZSB3aG9sZSBmaWxlLiBJZiB0aGUgdW5k
ZXJseWluZyBpdGVtIGlzIGEgc2xpY2VkIGZpbGUsIHdlIG5lZWQgdG8gdXNlIHRoZSBzbGljZSBs
ZW5ndGguCi0gICAgY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtID0gbV9ibG9iRGF0YS0+aXRlbXMo
KS5hdChtX3NpemVJdGVtQ291bnQpOworICAgIGNvbnN0IFdlYkNvcmU6OkJsb2JEYXRhSXRlbSYg
aXRlbSA9IG1fYmxvYkRhdGEtPml0ZW1zKCkuYXQobV9zaXplSXRlbUNvdW50KTsKICAgICBzaXpl
ID0gaXRlbS5sZW5ndGgoKTsKIAogICAgIC8vIENhY2hlIHRoZSBzaXplLgpAQCAtMjY4LDE4ICsy
NjYsMTggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNw
b25zZShFcnJvciBlcnJvckNvZGUpCiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJXAgLSBOZXR3
b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgldSkiLCB0aGlzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZXJyb3JDb2RlKSk7CiAKICAgICBSZWY8TmV0d29ya0RhdGFU
YXNrQmxvYj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZShtX2ZpcnN0UmVxdWVzdC51cmwoKSwgZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8g
InRleHQvcGxhaW4iIDogbV9ibG9iRGF0YS0+Y29udGVudFR5cGUoKSwgZXJyb3JDb2RlICE9IEVy
cm9yOjpOb0Vycm9yID8gMCA6IG1fdG90YWxSZW1haW5pbmdTaXplLCBTdHJpbmcoKSk7CisgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShtX2ZpcnN0UmVxdWVzdC51cmwoKSwg
ZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gInRleHQvcGxhaW4iIDogbV9ibG9iRGF0YS0+
Y29udGVudFR5cGUoKSwgZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gMCA6IG1fdG90YWxS
ZW1haW5pbmdTaXplLCBTdHJpbmcoKSk7CiAgICAgc3dpdGNoIChlcnJvckNvZGUpIHsKICAgICBj
YXNlIEVycm9yOjpOb0Vycm9yOiB7CiAgICAgICAgIGJvb2wgaXNSYW5nZVJlcXVlc3QgPSBtX3Jh
bmdlT2Zmc2V0ICE9IGtQb3NpdGlvbk5vdFNwZWNpZmllZDsKICAgICAgICAgcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c0NvZGUoaXNSYW5nZVJlcXVlc3QgPyBodHRwUGFydGlhbENvbnRlbnQgOiBodHRw
T0spOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChpc1JhbmdlUmVxdWVzdCA/
IGh0dHBQYXJ0aWFsQ29udGVudFRleHQgOiBodHRwT0tUZXh0KTsKIAotICAgICAgICByZXNwb25z
ZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBtX2Jsb2JE
YXRhLT5jb250ZW50VHlwZSgpKTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoLCBTdHJpbmc6Om51bWJlcihtX3RvdGFsUmVt
YWluaW5nU2l6ZSkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoV2ViQ29y
ZTo6SFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgp
KTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFk
ZXJOYW1lOjpDb250ZW50TGVuZ3RoLCBTdHJpbmc6Om51bWJlcihtX3RvdGFsUmVtYWluaW5nU2l6
ZSkpOwogCiAgICAgICAgIGlmIChpc1JhbmdlUmVxdWVzdCkKLSAgICAgICAgICAgIHJlc3BvbnNl
LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlLCBQYXJzZWRD
b250ZW50UmFuZ2UobV9yYW5nZU9mZnNldCwgbV9yYW5nZUVuZCwgbV90b3RhbFNpemUpLmhlYWRl
clZhbHVlKCkpOworICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKFdlYkNv
cmU6OkhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UsIFdlYkNvcmU6OlBhcnNlZENvbnRlbnRS
YW5nZShtX3JhbmdlT2Zmc2V0LCBtX3JhbmdlRW5kLCBtX3RvdGFsU2l6ZSkuaGVhZGVyVmFsdWUo
KSk7CiAgICAgICAgIC8vIEZJWE1FOiBJZiBhIHJlc291cmNlIGlkZW50aWZpZWQgd2l0aCBhIGJs
b2I6IFVSTCBpcyBhIEZpbGUgb2JqZWN0LCB1c2VyIGFnZW50cyBtdXN0IHVzZSB0aGF0IGZpbGUn
cyBuYW1lIGF0dHJpYnV0ZSwKICAgICAgICAgLy8gYXMgaWYgdGhlIHJlc3BvbnNlIGhhZCBhIENv
bnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyIHdpdGggdGhlIGZpbGVuYW1lIHBhcmFtZXRlciBzZXQg
dG8gdGhlIEZpbGUncyBuYW1lIGF0dHJpYnV0ZS4KICAgICAgICAgLy8gTm90YWJseSwgdGhpcyB3
aWxsIGFmZmVjdCBhIG5hbWUgc3VnZ2VzdGVkIGluICJGaWxlIFNhdmUgQXMiLgpAQCAtMjk5LDcg
KzI5Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVz
cG9uc2UoRXJyb3IgZXJyb3JDb2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBkaWRS
ZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZXJyb3JDb2RlXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uKSB7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGVycm9yQ29kZV0oV2ViQ29y
ZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZFJlY2VpdmVSZXNwb25zZSBjb21wbGV0
aW9uSGFuZGxlciAoJXUpIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvbGljeUFjdGlv
bikpOwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0
ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKSB7CkBAIC0zMTMsMTYgKzMxMSwxNiBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza0Jsb2I6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKEVycm9yIGVycm9yQ29k
ZSkKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0aW9uKSB7Ci0gICAgICAg
IGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0
aW9uOjpVc2U6CiAgICAgICAgICAgICBtX2J1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7CiAgICAg
ICAgICAgICByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lB
Y3Rpb246OlN1c3BlbmQ6Ci0gICAgICAgICAgICBMT0dfRVJST1IoIlBvbGljeUFjdGlvbjo6U3Vz
cGVuZCBlbmNvdW50ZXJlZCAtIFRyZWF0aW5nIGFzIFBvbGljeUFjdGlvbjo6SWdub3JlIGZvciBu
b3ciKTsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlN1c3BlbmQ6CisgICAg
ICAgICAgICBMT0dfRVJST1IoIlBvbGljeUFjdGlvbjo6U3VzcGVuZCBlbmNvdW50ZXJlZCAtIFRy
ZWF0aW5nIGFzIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlIGZvciBub3ciKTsKICAgICAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6SWdub3JlOgor
ICAgICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlOgogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpEb3dubG9hZDoKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OkRvd25sb2FkOgogICAgICAgICAgICAgZG93bmxvYWQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zMzksMTYgKzMzNywxNiBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnJlYWQoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtID0gbV9ibG9iRGF0YS0+aXRlbXMoKS5hdCht
X3JlYWRJdGVtQ291bnQpOwotICAgIGlmIChpdGVtLnR5cGUoKSA9PSBCbG9iRGF0YUl0ZW06OlR5
cGU6OkRhdGEpCisgICAgY29uc3QgV2ViQ29yZTo6QmxvYkRhdGFJdGVtJiBpdGVtID0gbV9ibG9i
RGF0YS0+aXRlbXMoKS5hdChtX3JlYWRJdGVtQ291bnQpOworICAgIGlmIChpdGVtLnR5cGUoKSA9
PSBXZWJDb3JlOjpCbG9iRGF0YUl0ZW06OlR5cGU6OkRhdGEpCiAgICAgICAgIHJlYWREYXRhKGl0
ZW0pOwotICAgIGVsc2UgaWYgKGl0ZW0udHlwZSgpID09IEJsb2JEYXRhSXRlbTo6VHlwZTo6Rmls
ZSkKKyAgICBlbHNlIGlmIChpdGVtLnR5cGUoKSA9PSBXZWJDb3JlOjpCbG9iRGF0YUl0ZW06OlR5
cGU6OkZpbGUpCiAgICAgICAgIHJlYWRGaWxlKGl0ZW0pOwogICAgIGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVhZERh
dGEoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtKQordm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpy
ZWFkRGF0YShjb25zdCBXZWJDb3JlOjpCbG9iRGF0YUl0ZW0mIGl0ZW0pCiB7CiAgICAgQVNTRVJU
KGl0ZW0uZGF0YSgpLmRhdGEoKSk7CiAKQEAgLTM1OSw3ICszNTcsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0Jsb2I6OnJlYWREYXRhKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSkKICAgICBtX2N1
cnJlbnRJdGVtUmVhZFNpemUgPSAwOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnJl
YWRGaWxlKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6cmVhZEZpbGUoY29uc3QgV2ViQ29yZTo6QmxvYkRhdGFJdGVtJiBpdGVtKQogewogICAgIEFT
U0VSVChtX3N0cmVhbSk7CiAKQEAgLTQxMywxMiArNDExLDEyIEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrQmxvYjo6Y29uc3VtZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCkKICAg
ICBtX3RvdGFsUmVtYWluaW5nU2l6ZSAtPSBieXRlc1JlYWQ7CiAKICAgICBpZiAoYnl0ZXNSZWFk
KSB7Ci0gICAgICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKSB7CisgICAgICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgICAgICBp
ZiAoIXdyaXRlRG93bmxvYWQoZGF0YSwgYnl0ZXNSZWFkKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9jbGllbnQpOwotICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGJ5dGVzUmVhZCkpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVzUmVhZCkpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC00NDksOCArNDQ3LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpz
ZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBTYW4KICAg
ICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNv
bnN1bWUoKTsKIAotICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQotICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOworICAgIGlmIChhbGxvd092ZXJ3cml0
ZSAmJiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24pKQorICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcGVuZGlu
Z0Rvd25sb2FkTG9jYXRpb24pOwogfQogCiBTdHJpbmcgTmV0d29ya0RhdGFUYXNrQmxvYjo6c3Vn
Z2VzdGVkRmlsZW5hbWUoKSBjb25zdApAQCAtNDY4LDggKzQ2Niw4IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQmxvYjo6ZG93bmxvYWQoKQogCiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJXAgLSBO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCB0byAlcyIsIHRoaXMsIG1fcGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24udXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX2Rvd25sb2FkRmlsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24sIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6V3JpdGUpOwotICAgIGlmIChtX2Rvd25sb2FkRmlsZSA9PSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgbV9kb3dubG9hZEZpbGUgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uLCBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAgICBpZiAobV9kb3dubG9h
ZEZpbGUgPT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkg
ewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3Qp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ4OSw3ICs0ODcsNyBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKIGJvb2wgTmV0d29ya0RhdGFUYXNrQmxvYjo6d3Jp
dGVEb3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIEFTU0VS
VChpc0Rvd25sb2FkKCkpOwotICAgIGludCBieXRlc1dyaXR0ZW4gPSBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKKyAgICBpbnQgYnl0ZXNX
cml0dGVuID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUs
IGRhdGEsIGJ5dGVzUmVhZCk7CiAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAg
ICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNTA0LDE0ICs1MDIsMTQgQEAgYm9vbCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjp3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiAK
IHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y2xlYW5Eb3dubG9hZEZpbGVzKCkKIHsKLSAgICBp
ZiAobV9kb3dubG9hZEZpbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSkgewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUpOwotICAg
ICAgICBtX2Rvd25sb2FkRmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7CisgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZG93bmxvYWRGaWxlKTsKKyAgICAgICAgbV9kb3dubG9hZEZpbGUgPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogICAgIH0KLSAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOworICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9
CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmFpbERvd25sb2FkKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQordm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRGYWlsRG93bmxv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdv
cmtTZXNzaW9uLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRGYWlsRG93bmxvYWQiLCB0
aGlzKTsKIApAQCAtNTM3LDggKzUzNSw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlk
RmluaXNoRG93bmxvYWQoKQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0Rh
dGFUYXNrQmxvYjo6ZGlkRmluaXNoRG93bmxvYWQiLCB0aGlzKTsKIAogICAgIEFTU0VSVChpc0Rv
d25sb2FkKCkpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7Ci0g
ICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
OworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7Cisg
ICAgbV9kb3dubG9hZEZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOwogCiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBtX3Nh
bmRib3hFeHRlbnNpb24tPnJldm9rZSgpOwpAQCAtNTU3LDcgKzU1NSw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrQmxvYjo6ZGlkRmFpbChFcnJvciBlcnJvckNvZGUpCiAKICAgICBSZWY8TmV0d29y
a0RhdGFUYXNrQmxvYj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgaWYgKGlzRG93bmxvYWQo
KSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoUmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVz
b3VyY2VEb21haW4sIHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSwgbV9maXJzdFJlcXVlc3Qu
dXJsKCksIFN0cmluZygpKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yKHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiwgc3RhdGljX2Nhc3Q8aW50PihlcnJv
ckNvZGUpLCBtX2ZpcnN0UmVxdWVzdC51cmwoKSwgU3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNTY1LDEyICs1NjMsMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9i
OjpkaWRGYWlsKEVycm9yIGVycm9yQ29kZSkKIAogICAgIGNsZWFyU3RyZWFtKCk7CiAgICAgQVNT
RVJUKG1fY2xpZW50KTsKLSAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoUmVzb3Vy
Y2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIHN0YXRpY19jYXN0PGludD4oZXJyb3JD
b2RlKSwgbV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZygpKSk7CisgICAgbV9jbGllbnQtPmRp
ZENvbXBsZXRlV2l0aEVycm9yKFdlYkNvcmU6OlJlc291cmNlRXJyb3Iod2ViS2l0QmxvYlJlc291
cmNlRG9tYWluLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIG1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmcoKSkpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZEZpbmlz
aCgpCiB7Ci0gICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBkaWRGaW5pc2hE
b3dubG9hZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCAzNzhhNTQ4NDQxZDMxZGQ3MGFjYTc2NmUz
ZGUwNjcxN2VjMDI5MTk1Li41YjM1M2IwZmNmMTBjOGRmYmJiNTY1NzFlODZlN2E1MGFkMTYyMzlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAt
NTEsMTggKzUxLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQogc3RydWN0IE5ldHdvcmtMb2FkOjpUaHJvdHRsZSB7Ci0gICAgVGhyb3R0bGUo
TmV0d29ya0xvYWQmIGxvYWQsIFNlY29uZHMgZGVsYXksIFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCisgICAgVGhyb3R0bGUo
TmV0d29ya0xvYWQmIGxvYWQsIFNlY29uZHMgZGVsYXksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiAgICAg
ICAgIDogdGltZXIobG9hZCwgJk5ldHdvcmtMb2FkOjp0aHJvdHRsZURlbGF5Q29tcGxldGVkKQog
ICAgICAgICAsIHJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQogICAgICAgICAsIHJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgICAgIHRpbWVy
LnN0YXJ0T25lU2hvdChkZWxheSk7CiAgICAgfQotICAgIFRpbWVyIHRpbWVyOwotICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgV2ViQ29yZTo6VGltZXIgdGltZXI7CisgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyIHJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI7CiB9OwogCkBAIC0xMjEsNyArMTE5LDcg
QEAgTmV0d29ya0xvYWQ6On5OZXR3b3JrTG9hZCgpCiAgICAgaWYgKG1fcmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcikKICAgICAgICAgbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAg
ICAgaWYgKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgbV9yZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgbV9yZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICBp
ZiAobV90YXNrKQogICAgICAgICBtX3Rhc2stPmNsZWFyQ2xpZW50KCk7CiB9CkBAIC0xNTAsNyAr
MTQ4LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6Y2FuY2VsKCkKIHZvaWQgTmV0d29ya0xvYWQ6OmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVl
c3QpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9jdXJyZW50UmVxdWVzdC51cGRhdGVG
cm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllcyhuZXdSZXF1ZXN0Lm5zVVJMUmVxdWVz
dChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSkpOworICAgIG1fY3Vy
cmVudFJlcXVlc3QudXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMobmV3
UmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpKTsKICNlbGlmIFVTRShTT1VQKQogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVy
dGllcy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMjcu
CiAgICAgbV9jdXJyZW50UmVxdWVzdC51cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJv
cGVydGllcyhuZXdSZXF1ZXN0KTsKQEAgLTE2NCw3ICsxNjIsNyBAQCB2b2lkIE5ldHdvcmtMb2Fk
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0KQogICAgIGF1dG8gcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFu
Z2UobV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKICAgICBBU1NFUlQocmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QuaXNOdWxs
KCkpIHsKLSAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKKyAgICAgICAg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKICAgICAgICAgZGlkQ29t
cGxldGVXaXRoRXJyb3IoY2FuY2VsbGVkRXJyb3IobV9jdXJyZW50UmVxdWVzdCksIGVtcHR5TWV0
cmljcyk7CiAgICAgICAgIGlmIChyZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAg
ICAgcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMTcyLDE0ICsxNzAsMTQgQEAg
dm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKICAgICB9CiAKICAgICBpZiAocmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcikKLSAgICAgICAgcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcihSZXNvdXJjZVJl
cXVlc3QobV9jdXJyZW50UmVxdWVzdCkpOworICAgICAgICByZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0KSk7CiB9CiAKIHZv
aWQgTmV0d29ya0xvYWQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKIHsKICAgICBpZiAo
bV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGF1dG8gcmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
LCBudWxscHRyKTsKLSAgICAgICAgcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rp
b246OlVzZSk7CisgICAgICAgIHJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpVc2UpOwogICAgIH0KIH0KIApAQCAtMTkzLDcgKzE5MSw3IEBAIGJvb2wgTmV0
d29ya0xvYWQ6OmlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jbGllbnQuZ2V0KCkuaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKTsK
IH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6Y29udmVydFRhc2tUb0Rvd25sb2FkKFBlbmRpbmdEb3du
bG9hZCYgcGVuZGluZ0Rvd25sb2FkLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHVwZGF0ZWRSZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWQ6
OmNvbnZlcnRUYXNrVG9Eb3dubG9hZChQZW5kaW5nRG93bmxvYWQmIHBlbmRpbmdEb3dubG9hZCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiB1cGRhdGVkUmVxdWVzdCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3Rhc2spCiAg
ICAgICAgIHJldHVybjsKQEAgLTIzMCwxMyArMjI4LDEzIEBAIHZvaWQgTmV0d29ya0xvYWQ6OnNl
dFBlbmRpbmdEb3dubG9hZChQZW5kaW5nRG93bmxvYWQmIHBlbmRpbmdEb3dubG9hZCkKICAgICBt
X3Rhc2stPnNldFBlbmRpbmdEb3dubG9hZChwZW5kaW5nRG93bmxvYWQpOwogfQogCi12b2lkIE5l
dHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlZGlyZWN0
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIXJl
ZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgQVNTRVJUKCFtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgcmVkaXJl
Y3RSZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsK
KyAgICByZWRpcmVjdFJlc3BvbnNlLnNldFNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
OjpTb3VyY2U6Ok5ldHdvcmspOwogICAgIG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FQVFVSRSkK
QEAgLTI1MSwxMSArMjQ5LDExIEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlCiAgICAgbV9jbGll
bnQuZ2V0KCkud2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
IGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBzY2hlbWUgPSBjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlKCkuYXV0aGVudGljYXRpb25TY2hlbWUoKTsKLSAgICBib29sIGlzVExTSGFu
ZHNoYWtlID0gc2NoZW1lID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkCi0gICAgICAgIHx8IHNjaGVtZSA9PSBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUNsaWVudENlcnRpZmljYXRlUmVxdWVzdGVkOwor
ICAgIGJvb2wgaXNUTFNIYW5kc2hha2UgPSBzY2hlbWUgPT0gV2ViQ29yZTo6UHJvdGVjdGlvblNw
YWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQKKyAg
ICAgICAgfHwgc2NoZW1lID09IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9u
U2NoZW1lQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0ZWQ7CiAgICAgaWYgKCFpc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFscygpICYmICFpc1RMU0hhbmRzaGFrZSkgewogICAgICAgICBtX2Ns
aWVudC5nZXQoKS5kaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNy
ZWRlbnRpYWwsIHsgfSk7CkBAIC0yNjgsNyArMjY2LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ2hh
bGwKICAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFu
YWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25z
ZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoIW1fdGhyb3R0
bGUpOwpAQCAtMjg3LDcgKzI4NSw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwKICAgICBub3Rp
ZnlEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTI5Niw3ICsyOTQsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpu
b3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZQogICAgICAgICBtX3JlY29yZGVyLT5yZWNvcmRSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNl
KTsKICNlbmRpZgogCi0gICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNv
dXJjZTo6TmV0d29yayk7CisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5uZWVkc0Nl
cnRpZmljYXRlSW5mbykKICAgICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygp
OwogCkBAIC0zMDQsMTAgKzMwMiwxMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZQogICAgICAg
ICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lB
Y3Rpb246OlVzZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9saWN5QWN0aW9u
OjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVCghbV90aHJvdHRs
ZSk7CiAKQEAgLTMyMSw3ICszMTksNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNl
aXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6
OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKK3ZvaWQgTmV0
d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWV0cmljcykKIHsKICAgICBBU1NFUlQoIW1fdGhyb3R0bGUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggODA0ZTdi
NWM1ZmQwNDExOWE4MDQxN2VkZTUxYjkwMDcwZDJhZWQzZi4uM2FiNzZlNTRkNDRiYWIwOGYzMDFk
NDMxZThkMDM1MDA0YTgxNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtNDYsMTQgKzQ2LDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotc3RhdGljIGlubGlu
ZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6
VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CiAgICAg
cmV0dXJuIHVybC5wcm90b2NvbElzRGF0YSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8ICFv
cmlnaW4gfHwgb3JpZ2luLT5jYW5SZXF1ZXN0KHVybCk7CiB9CiAKLU5ldHdvcmtMb2FkQ2hlY2tl
cjo6TmV0d29ya0xvYWRDaGVja2VyKEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBIVFRQSGVh
ZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5
LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3MpCitOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmIG9yaWdp
bmFsUmVxdWVzdEhlYWRlcnMsIFdlYkNvcmU6OlVSTCYmIHVybCwgUmVmUHRyPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5IHBy
ZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKQogICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAg
ICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC02
NywyMSArNjUsMjEgQEAgTmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoRmV0
Y2hPcHRpb25zJiYgb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2UKIHsKICAgICBtX2lzU2FtZU9y
aWdpblJlcXVlc3QgPSBpc1NhbWVPcmlnaW4obV91cmwsIG1fb3JpZ2luLmdldCgpKTsKICAgICBz
d2l0Y2ggKG9wdGlvbnMuY3JlZGVudGlhbHMpIHsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q3Jl
ZGVudGlhbHM6OkluY2x1ZGU6Ci0gICAgICAgIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOworICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRp
b25zOjpDcmVkZW50aWFsczo6SW5jbHVkZToKKyAgICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSA9IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbjoKLSAg
ICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IG1faXNTYW1lT3JpZ2luUmVxdWVzdCA/
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
RG9Ob3RVc2U7CisgICAgY2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpT
YW1lT3JpZ2luOgorICAgICAgICBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gbV9pc1NhbWVP
cmlnaW5SZXF1ZXN0ID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSA6IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0OgotICAgICAgICBtX3N0
b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNl
OworICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdDoKKyAg
ICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpEb05vdFVzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCiBOZXR3b3Jr
TG9hZENoZWNrZXI6On5OZXR3b3JrTG9hZENoZWNrZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgTmV0
d29ya0xvYWRDaGVja2VyOjpjaGVjayhSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQqIGNsaWVudCwgVmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVy
KQordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudCogY2xpZW50
LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFpc0NoZWNraW5n
KCkpOwogCkBAIC05MCwyNiArODgsMjYgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNr
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbnRlbnRTZWN1cml0eVBvbGljeUMKIAogICAg
IG1fZmlyc3RSZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGdldCB0aGlzIGluZm9ybWF0aW9uIGZyb20gdGhlIHJl
cXVlc3QgYnV0IGRpcmVjdGx5IGZyb20gc29tZSBOZXR3b3JrUHJvY2VzcyBzZXR0aW5nLgotICAg
IG1fZG50SGVhZGVyVmFsdWUgPSBtX2ZpcnN0UmVxdWVzdEhlYWRlcnMuZ2V0KEhUVFBIZWFkZXJO
YW1lOjpETlQpOworICAgIG1fZG50SGVhZGVyVmFsdWUgPSBtX2ZpcnN0UmVxdWVzdEhlYWRlcnMu
Z2V0KFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpETlQpOwogICAgIGlmIChtX2RudEhlYWRlclZh
bHVlLmlzTnVsbCgpICYmIG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgbV9k
bnRIZWFkZXJWYWx1ZSA9ICIxIjsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OkROVCwgbV9kbnRIZWFkZXJWYWx1ZSk7CisgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpETlQsIG1fZG50SGVh
ZGVyVmFsdWUpOwogICAgIH0KICAgICBjaGVja1JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgY2xp
ZW50LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OnBy
ZXBhcmVSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIE5l
dHdvcmtMb2FkQ2hlY2tlcjo6cHJlcGFyZVJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1fZG50SGVhZGVyVmFsdWUuaXNOdWxs
KCkpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpE
TlQsIG1fZG50SGVhZGVyVmFsdWUpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6RE5ULCBtX2RudEhlYWRlclZhbHVlKTsKIH0KIAot
c3RhdGljIGlubGluZSBOZXR3b3JrTG9hZENoZWNrZXI6OlJlZGlyZWN0aW9uUmVxdWVzdE9yRXJy
b3IgcmVkaXJlY3Rpb25FcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlLCBTdHJpbmcmJiBlcnJvck1lc3NhZ2UpCitzdGF0aWMgaW5saW5lIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6UmVkaXJlY3Rpb25SZXF1ZXN0T3JFcnJvciByZWRpcmVjdGlvbkVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFN0cmluZyYmIGVycm9y
TWVzc2FnZSkKIHsKLSAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJvciB7IFN0
cmluZyB7IH0sIDAsIHJlZGlyZWN0UmVzcG9uc2UudXJsKCksIFdURk1vdmUoZXJyb3JNZXNzYWdl
KSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFN0cmluZyB7IH0sIDAsIHJlZGly
ZWN0UmVzcG9uc2UudXJsKCksIFdURk1vdmUoZXJyb3JNZXNzYWdlKSwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZENo
ZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KiBjbGllbnQsIFJlZGlyZWN0aW9u
VmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNo
ZWNrUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
Q2xpZW50KiBjbGllbnQsIFJlZGlyZWN0aW9uVmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQog
ewogICAgIEFTU0VSVCghaXNDaGVja2luZygpKTsKIApAQCAtMTE5LDExICsxMTcsMTEgQEAgdm9p
ZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVzb3VyY2VSZXEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICht
X29wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6RXJyb3IpIHsKKyAg
ICBpZiAobV9vcHRpb25zLnJlZGlyZWN0ID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6UmVkaXJl
Y3Q6OkVycm9yKSB7CiAgICAgICAgIGhhbmRsZXIocmVkaXJlY3Rpb25FcnJvcihyZWRpcmVjdFJl
c3BvbnNlLCBtYWtlU3RyaW5nKCJOb3QgYWxsb3dlZCB0byBmb2xsb3cgYSByZWRpcmVjdGlvbiB3
aGlsZSBsb2FkaW5nICIsIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fb3B0aW9ucy5yZWRpcmVjdCA9PSBGZXRjaE9w
dGlvbnM6OlJlZGlyZWN0OjpNYW51YWwpIHsKKyAgICBpZiAobV9vcHRpb25zLnJlZGlyZWN0ID09
IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6UmVkaXJlY3Q6Ok1hbnVhbCkgewogICAgICAgICBoYW5k
bGVyKFJlZGlyZWN0aW9uVHJpcGxldCB7IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJl
Y3RSZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTE0OCwzMCArMTQ2LDMwIEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpj
aGVja1JlZGlyZWN0aW9uKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxCiAg
ICAgfSk7CiB9CiAKLVJlc291cmNlRXJyb3IgTmV0d29ya0xvYWRDaGVja2VyOjp2YWxpZGF0ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBOZXR3b3JrTG9hZENoZWNrZXI6OnZhbGlkYXRlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKG1fcmVkaXJlY3RDb3VudCkKICAgICAgICAg
cmVzcG9uc2Uuc2V0UmVkaXJlY3RlZCh0cnVlKTsKIAotICAgIGlmIChyZXNwb25zZS50eXBlKCkg
PT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6T3BhcXVlcmVkaXJlY3QpIHsKLSAgICAgICAgcmVz
cG9uc2Uuc2V0VGFpbnRpbmcoUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZXJlZGly
ZWN0KTsKKyAgICBpZiAocmVzcG9uc2UudHlwZSgpID09IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2U6OlR5cGU6Ok9wYXF1ZXJlZGlyZWN0KSB7CisgICAgICAgIHJlc3BvbnNlLnNldFRhaW50aW5n
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpPcGFxdWVyZWRpcmVjdCk7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgaWYgKG1fb3B0aW9ucy5tb2RlID09IEZl
dGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUgfHwgbV9pc1NhbWVPcmlnaW5SZXF1ZXN0KSB7Ci0g
ICAgICAgIHJlc3BvbnNlLnNldFRhaW50aW5nKFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpC
YXNpYyk7CisgICAgaWYgKG1fb3B0aW9ucy5tb2RlID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6
TW9kZTo6TmF2aWdhdGUgfHwgbV9pc1NhbWVPcmlnaW5SZXF1ZXN0KSB7CisgICAgICAgIHJlc3Bv
bnNlLnNldFRhaW50aW5nKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpCYXNp
Yyk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgaWYgKG1fb3B0aW9ucy5tb2Rl
ID09IEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzKSB7CisgICAgaWYgKG1fb3B0aW9ucy5tb2Rl
ID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzKSB7CiAgICAgICAgIGlmIChh
dXRvIGVycm9yID0gdmFsaWRhdGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5KCptX29yaWdpbiwg
bV91cmwsIHJlc3BvbnNlKSkKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCplcnJvcik7CiAK
LSAgICAgICAgcmVzcG9uc2Uuc2V0VGFpbnRpbmcoUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6
Ok9wYXF1ZSk7CisgICAgICAgIHJlc3BvbnNlLnNldFRhaW50aW5nKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2U6OlRhaW50aW5nOjpPcGFxdWUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IAotICAgIEFTU0VSVChtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMp
OworICAgIEFTU0VSVChtX29wdGlvbnMubW9kZSA9PSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1v
ZGU6OkNvcnMpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIDMwNCwgdGhlIGNhY2hlZCByZXNwb25z
ZSBpcyBpbiBXZWJQcm9jZXNzIHNvIHdlIGxldCBXZWJQcm9jZXNzIGRvIHRoZSBDT1JTIGNoZWNr
IG9uIHRoZSBjYWNoZWQgcmVzcG9uc2UuCiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPT0gMzA0KQpAQCAtMTc5LDIyICsxNzcsMjIgQEAgUmVzb3VyY2VFcnJvciBOZXR3b3JrTG9h
ZENoZWNrZXI6OnZhbGlkYXRlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAK
ICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENo
ZWNrKHJlc3BvbnNlLCBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5LCAqbV9vcmlnaW4sIGVycm9y
TWVzc2FnZSkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgU3RyaW5nIHsgfSwgMCwg
bV91cmwsIFdURk1vdmUoZXJyb3JNZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNz
Q29udHJvbCB9OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFN0cmlu
ZyB7IH0sIDAsIG1fdXJsLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSksIFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKIAotICAgIHJlc3BvbnNlLnNldFRhaW50aW5n
KFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpDb3JzKTsKKyAgICByZXNwb25zZS5zZXRUYWlu
dGluZyhXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6Q29ycyk7CiAgICAgcmV0
dXJuIHsgfTsKIH0KIAogYXV0byBOZXR3b3JrTG9hZENoZWNrZXI6OmFjY2Vzc0NvbnRyb2xFcnJv
ckZvclZhbGlkYXRpb25IYW5kbGVyKFN0cmluZyYmIG1lc3NhZ2UpIC0+IFJlcXVlc3RPckVycm9y
CiB7Ci0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBTdHJpbmcgeyB9
LCAwLCBtX3VybCwgV1RGTW92ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNz
Q29udHJvbCB9KTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciB7IFN0cmluZyB7IH0sIDAsIG1fdXJsLCBXVEZNb3ZlKG1lc3NhZ2UpLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQogCi12b2lkIE5ldHdvcmtM
b2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbnRl
bnRTZWN1cml0eVBvbGljeUNsaWVudCogY2xpZW50LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVu
dCogY2xpZW50LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8q
IGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHRoaXMtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7
CiAgICAgICAgIGlmIChpc1JlZGlyZWN0ZWQoKSkgewotICAgICAgICAgICAgYXV0byB0eXBlID0g
bV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSA/IENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TmF2aWdhdGlvbiA6IENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZDsKKyAgICAgICAgICAgIGF1
dG8gdHlwZSA9IG1fb3B0aW9ucy5tb2RlID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6TW9kZTo6
TmF2aWdhdGUgPyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVz
dFR5cGU6Ok5hdmlnYXRpb24gOiBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2Vj
dXJlUmVxdWVzdFR5cGU6OkxvYWQ7CiAgICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kt
PnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsKICAgICAgICAg
fQogICAgICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3Qs
IGNsaWVudCkpIHsKQEAgLTIyMSw3ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6
Y2hlY2tSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbnRlbnRTZWN1cml0eQog
I2VuZGlmCiB9CiAKLWJvb2wgTmV0d29ya0xvYWRDaGVja2VyOjppc0FsbG93ZWRCeUNvbnRlbnRT
ZWN1cml0eVBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudCogY2xpZW50KQorYm9vbCBOZXR3b3JrTG9hZENoZWNr
ZXI6OmlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50
KiBjbGllbnQpCiB7CiAgICAgYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gdGhpcy0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5LT5zZXRDbGll
bnQoY2xpZW50KTsKQEAgLTIyOSwzMSArMjI3LDMxIEBAIGJvb2wgTmV0d29ya0xvYWRDaGVja2Vy
Ojppc0FsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
CiAgICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS0+c2V0Q2xpZW50KG51bGxwdHIpOwogICAg
IH0pOwogCi0gICAgYXV0byByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBpc1JlZGlyZWN0ZWQo
KSA/IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpZZXMg
OiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm87Cisg
ICAgYXV0byByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgPSBpc1JlZGlyZWN0ZWQoKSA/IFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpZZXMg
OiBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZl
ZDo6Tm87CiAgICAgc3dpdGNoIChtX29wdGlvbnMuZGVzdGluYXRpb24pIHsKLSAgICBjYXNlIEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb246OldvcmtlcjoKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXI6Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkRlc3Rp
bmF0aW9uOjpTaGFyZWR3b3JrZXI6CisgICAgY2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpXb3JrZXI6CisgICAgY2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRlc3Rp
bmF0aW9uOjpTZXJ2aWNld29ya2VyOgorICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyOgogICAgICAgICByZXR1cm4gY29udGVudFNlY3VyaXR5
UG9saWN5LT5hbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UocmVxdWVzdC51cmwoKSwgcmVkaXJl
Y3RSZXNwb25zZVJlY2VpdmVkKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246
OlNjcmlwdDoKLSAgICAgICAgaWYgKHJlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1
ZXN0OjpSZXF1ZXN0ZXI6OkltcG9ydFNjcmlwdHMgJiYgIWNvbnRlbnRTZWN1cml0eVBvbGljeS0+
YWxsb3dTY3JpcHRGcm9tU291cmNlKHJlcXVlc3QudXJsKCksIHJlZGlyZWN0UmVzcG9uc2VSZWNl
aXZlZCkpCisgICAgY2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTY3Jp
cHQ6CisgICAgICAgIGlmIChyZXF1ZXN0LnJlcXVlc3RlcigpID09IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdDo6UmVxdWVzdGVyOjpJbXBvcnRTY3JpcHRzICYmICFjb250ZW50U2VjdXJpdHlQb2xp
Y3ktPmFsbG93U2NyaXB0RnJvbVNvdXJjZShyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNl
UmVjZWl2ZWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAvLyBGSVhNRTog
Q2hlY2sgQ1NQIGZvciBub24taW1wb3J0U2NyaXB0cygpIGluaXRpYXRlZCBsb2Fkcy4KICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0
eVN0cmluZzoKKyAgICBjYXNlIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVt
cHR5U3RyaW5nOgogICAgICAgICByZXR1cm4gY29udGVudFNlY3VyaXR5UG9saWN5LT5hbGxvd0Nv
bm5lY3RUb1NvdXJjZShyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpOwot
ICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6QXVkaW86Ci0gICAgY2FzZSBGZXRj
aE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpEb2N1bWVudDoKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OkVtYmVkOgotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6
Rm9udDoKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkltYWdlOgotICAgIGNh
c2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TWFuaWZlc3Q6Ci0gICAgY2FzZSBGZXRjaE9w
dGlvbnM6OkRlc3RpbmF0aW9uOjpPYmplY3Q6Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkRlc3Rp
bmF0aW9uOjpSZXBvcnQ6Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTdHls
ZToKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlRyYWNrOgotICAgIGNhc2Ug
RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6VmlkZW86Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uOjpYc2x0OgorICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0
aW5hdGlvbjo6QXVkaW86CisgICAgY2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRlc3RpbmF0
aW9uOjpEb2N1bWVudDoKKyAgICBjYXNlIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVzdGluYXRp
b246OkVtYmVkOgorICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6
Rm9udDoKKyAgICBjYXNlIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkltYWdl
OgorICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TWFuaWZlc3Q6
CisgICAgY2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpPYmplY3Q6Cisg
ICAgY2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpSZXBvcnQ6CisgICAg
Y2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTdHlsZToKKyAgICBjYXNl
IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlRyYWNrOgorICAgIGNhc2UgV2Vi
Q29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6VmlkZW86CisgICAgY2FzZSBXZWJDb3Jl
OjpGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpYc2x0OgogICAgICAgICAvLyBGSVhNRTogQ2hl
Y2sgQ1NQIGZvciB0aGVzZSBkZXN0aW5hdGlvbnMuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KQEAgLTI2MSwxMCArMjU5LDEwIEBAIGJvb2wgTmV0d29ya0xvYWRDaGVja2VyOjppc0FsbG93
ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5n
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVmFsaWRhdGlvbkhhbmRsZXImJiBo
YW5kbGVyKQogewotICAgIGlmIChtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbikKLSAgICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSA9IG1faXNTYW1lT3JpZ2luUmVxdWVzdCAmJiBtX29yaWdpbi0+Y2FuUmVxdWVzdChyZXF1
ZXN0LnVybCgpKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6RG9Ob3RVc2U7CisgICAgaWYgKG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBX
ZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpTYW1lT3JpZ2luKQorICAgICAgICBt
X3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gbV9pc1NhbWVPcmlnaW5SZXF1ZXN0ICYmIG1fb3Jp
Z2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OlVzZSA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVz
ZTsKIAogICAgIG1faXNTYW1lT3JpZ2luUmVxdWVzdCA9IG1faXNTYW1lT3JpZ2luUmVxdWVzdCAm
JiBpc1NhbWVPcmlnaW4ocmVxdWVzdC51cmwoKSwgbV9vcmlnaW4uZ2V0KCkpOwogCkBAIC0yNzMs
NyArMjcxLDcgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRpbnVlQ2hlY2tpbmdSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVP
cmlnaW4pIHsKKyAgICBpZiAobV9vcHRpb25zLm1vZGUgPT0gV2ViQ29yZTo6RmV0Y2hPcHRpb25z
OjpNb2RlOjpTYW1lT3JpZ2luKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmlu
ZygiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgIiwgcmVxdWVzdC51cmwoKS5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBmcm9tIG9yaWdpbiAiLCBtX29yaWdpbi0+dG9TdHJp
bmcoKSwgIi4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIik7CiAg
ICAgICAgIGhhbmRsZXIoYWNjZXNzQ29udHJvbEVycm9yRm9yVmFsaWRhdGlvbkhhbmRsZXIoV1RG
TW92ZShtZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CkBAIC0yODgsMzEgKzI4NiwzMSBAQCB2
b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgVmFsaQogICAgIGNoZWNrQ09SU1JlcXVlc3QoV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpj
aGVja0NPUlNSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGlkYXRpb25IYW5k
bGVyJiYgaGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGlkYXRpb25IYW5kbGVyJiYg
aGFuZGxlcikKIHsKLSAgICBBU1NFUlQobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpN
b2RlOjpDb3JzKTsKKyAgICBBU1NFUlQobV9vcHRpb25zLm1vZGUgPT0gV2ViQ29yZTo6RmV0Y2hP
cHRpb25zOjpNb2RlOjpDb3JzKTsKIAogICAgIC8vIEV4Y2VwdCBpbiBjYXNlIHdoZXJlIHByZWZs
aWdodCBpcyBuZWVkZWQsIGxvYWRpbmcgc2hvdWxkIGJlIGFibGUgdG8gY29udGludWUgb24gaXRz
IG93bi4KICAgICBzd2l0Y2ggKG1fcHJlZmxpZ2h0UG9saWN5KSB7Ci0gICAgY2FzZSBQcmVmbGln
aHRQb2xpY3k6OkZvcmNlOgorICAgIGNhc2UgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5OjpGb3Jj
ZToKICAgICAgICAgY2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQoV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShoYW5kbGVyKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHJlZmxpZ2h0
UG9saWN5OjpDb25zaWRlcjoKKyAgICBjYXNlIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeTo6Q29u
c2lkZXI6CiAgICAgICAgIGlmICghbV9pc1NpbXBsZVJlcXVlc3QgfHwgIWlzU2ltcGxlQ3Jvc3NP
cmlnaW5BY2Nlc3NSZXF1ZXN0KHJlcXVlc3QuaHR0cE1ldGhvZCgpLCBtX29yaWdpbmFsUmVxdWVz
dEhlYWRlcnMpKSB7CiAgICAgICAgICAgICBjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodChX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFByZWZsaWdodFBvbGlj
eTo6UHJldmVudDoKKyAgICBjYXNlIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeTo6UHJldmVudDoK
ICAgICAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocmVxdWVzdCwgKm1fb3JpZ2lu
LCBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y2hlY2tDT1JTUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgVmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6
OmNoZWNrQ09SU1JlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFZhbGlkYXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBBU1NFUlQobV9vcHRp
b25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKTsKKyAgICBBU1NFUlQobV9vcHRp
b25zLm1vZGUgPT0gV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKTsKICAgICBBU1NF
UlQoaXNSZWRpcmVjdGVkKCkpOwogCiAgICAgLy8gRm9yY2UgYW55IHN1YnNlcXVlbnQgcmVxdWVz
dCB0byB1c2UgdGhlc2UgY2hlY2tzLgpAQCAtMzIyLDI2ICszMjAsMjYgQEAgdm9pZCBOZXR3b3Jr
TG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFYKICAgICAgICAgLy8gVXNlIGEgdW5pcXVlIG9yaWdpbiBmb3Igc3Vic2VxdWVu
dCBsb2FkcyBpZiBuZWVkZWQuCiAgICAgICAgIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cu
b3JnLyNjb25jZXB0LWh0dHAtcmVkaXJlY3QtZmV0Y2ggKFN0ZXAgMTApLgogICAgICAgICBpZiAo
IW1fb3JpZ2luIHx8ICFtX29yaWdpbi0+aXNVbmlxdWUoKSkKLSAgICAgICAgICAgIG1fb3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpOworICAgICAgICAgICAgbV9vcmlnaW4g
PSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCk7CiAgICAgfQogCiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBzZXQgdGhlIHJlcXVlc3QgcmVmZXJyZXIgYWNjb3JkaW5nIHRo
ZSByZWZlcnJlciBwb2xpY3kuCiAKICAgICAvLyBMZXQncyBmZXRjaCB0aGUgcmVxdWVzdCB3aXRo
IHRoZSBvcmlnaW5hbCBoZWFkZXJzIChlcXVpdmFsZW50IHRvIHJlcXVlc3QgY2xvbmluZyBzcGVj
aWZpZWQgYnkgZmV0Y2ggYWxnb3JpdGhtKS4KLSAgICBpZiAoIXJlcXVlc3QuaHR0cEhlYWRlckZp
ZWxkcygpLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpBdXRob3JpemF0aW9uKSkKLSAgICAgICAg
bV9maXJzdFJlcXVlc3RIZWFkZXJzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6QXV0aG9yaXphdGlv
bik7CisgICAgaWYgKCFyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKS5jb250YWlucyhXZWJDb3Jl
OjpIVFRQSGVhZGVyTmFtZTo6QXV0aG9yaXphdGlvbikpCisgICAgICAgIG1fZmlyc3RSZXF1ZXN0
SGVhZGVycy5yZW1vdmUoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkF1dGhvcml6YXRpb24pOwog
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkcyhtX2ZpcnN0UmVxdWVzdEhlYWRlcnMpOwog
CiAgICAgY2hlY2tDT1JTUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJl
ZmxpZ2h0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGlkYXRpb25IYW5kbGVyJiYgaGFu
ZGxlcikKK3ZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZs
aWdodChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxl
ciYmIGhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9u
czo6TW9kZTo6Q29ycyk7CisgICAgQVNTRVJUKG1fb3B0aW9ucy5tb2RlID09IFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CiAKICAgICBtX2lzU2ltcGxlUmVxdWVzdCA9IGZhbHNl
OwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgcGFydGl0aW9uIHByZWZsaWdodCBy
ZXN1bHQgY2FjaGUgYnkgc2Vzc2lvbiBJRC4KLSAgICBpZiAoQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuY2FuU2tpcFByZWZsaWdodChtX29yaWdpbi0+dG9TdHJp
bmcoKSwgcmVxdWVzdC51cmwoKSwgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcmVxdWVzdC5o
dHRwTWV0aG9kKCksIG1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVycykpIHsKKyAgICBpZiAoV2ViQ29y
ZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuY2FuU2tpcFBy
ZWZsaWdodChtX29yaWdpbi0+dG9TdHJpbmcoKSwgcmVxdWVzdC51cmwoKSwgbV9zdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgcmVxdWVzdC5odHRwTWV0aG9kKCksIG1fb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycykpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tDT1JTUmVxdWVz
dFdpdGhQcmVmbGlnaHQgLSBwcmVmbGlnaHQgY2FuIGJlIHNraXBwZWQgdGhhbmtzIHRvIGNhY2hl
ZCByZXN1bHQiKTsKICAgICAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocmVxdWVz
dCwgKm1fb3JpZ2luLCBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICAgICAgaGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsKQEAgLTM3OSw0MCArMzc3LDQwIEBAIHZvaWQgTmV0d29ya0xv
YWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0CiAgICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlci0+c3RhcnRQcmVmbGlnaHQoKTsK
IH0KIAotYm9vbCBOZXR3b3JrTG9hZENoZWNrZXI6OmRvZXNOb3ROZWVkQ09SU0NoZWNrKGNvbnN0
IFVSTCYgdXJsKSBjb25zdAorYm9vbCBOZXR3b3JrTG9hZENoZWNrZXI6OmRvZXNOb3ROZWVkQ09S
U0NoZWNrKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25zdAogewotICAgIGlmIChtX29wdGlv
bnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyB8fCBtX29wdGlvbnMubW9kZSA9
PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKQorICAgIGlmIChtX29wdGlvbnMubW9kZSA9
PSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyB8fCBtX29wdGlvbnMubW9kZSA9
PSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmICghU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXND
T1JTRW5hYmxlZCh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQorICAg
IGlmICghV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JT
RW5hYmxlZCh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBtX2lzU2FtZU9yaWdpblJlcXVlc3Q7CiB9CiAK
LUNvbnRlbnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJp
dHlQb2xpY3koKQorV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiBOZXR3b3JrTG9hZENo
ZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRTZWN1
cml0eVBvbGljeSAmJiBtX2NzcFJlc3BvbnNlSGVhZGVycykgewogICAgICAgICAvLyBGSVhNRTog
UGFzcyB0aGUgVVJMIG9mIHRoZSBwcm90ZWN0ZWQgcmVzb3VyY2UgaW5zdGVhZCBvZiBpdHMgb3Jp
Z2luLgotICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJpbmco
KSB9KTsKLSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJz
KCptX2NzcFJlc3BvbnNlSGVhZGVycywgU3RyaW5nIHsgbV9yZWZlcnJlciB9LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydFBhcnNpbmdFcnJvcnM6Ok5vKTsKKyAgICAgICAgbV9jb250ZW50
U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeT4oV2ViQ29yZTo6VVJMIHsgV2ViQ29yZTo6VVJMIHsgfSwgbV9vcmlnaW4tPnRvU3Ry
aW5nKCkgfSk7CisgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5LT5kaWRSZWNlaXZlSGVh
ZGVycygqbV9jc3BSZXNwb25zZUhlYWRlcnMsIFN0cmluZyB7IG1fcmVmZXJyZXIgfSwgV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRQYXJzaW5nRXJyb3JzOjpObyk7CiAgICAg
fQogICAgIHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQoKTsKIH0KIAogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi12b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6cHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Q29udGVudEV4dGVuc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29udGVudEV4dGVuc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgLy8gRklYTUU6IEVuYWJsZSBjb250ZW50IGJsb2NrZXJzIGZvciBuYXZpZ2F0aW9u
IGxvYWRzLgotICAgIGlmICghbV9jaGVja0NvbnRlbnRFeHRlbnNpb25zIHx8ICFtX3VzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIgfHwgbV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25z
OjpNb2RlOjpOYXZpZ2F0ZSkgewotICAgICAgICBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0
YXR1cyBzdGF0dXM7CisgICAgaWYgKCFtX2NoZWNrQ29udGVudEV4dGVuc2lvbnMgfHwgIW1fdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB8fCBtX29wdGlvbnMubW9kZSA9PSBXZWJDb3Jl
OjpGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKSB7CisgICAgICAgIFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIHN0YXR1czsKICAgICAgICAgY2FsbGJhY2soQ29u
dGVudEV4dGVuc2lvblJlc3VsdCB7IFdURk1vdmUocmVxdWVzdCksIHN0YXR1cyB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpLmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgqbV91
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8mIGJhY2tlbmQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtU
aGlzKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChSZXNvdXJjZUVycm9y
IHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKyAgICAgICAgICAgIGNh
bGxiYWNrKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTQyMywxMSArNDIxLDEzIEBAIHZvaWQgTmV0d29ya0xvYWRDaGVj
a2VyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3Qm
JiByCiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKIAotdm9pZCBOZXR3
b3JrTG9hZENoZWNrZXI6OnN0b3JlUmVkaXJlY3Rpb25JZk5lZWRlZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBO
ZXR3b3JrTG9hZENoZWNrZXI6OnN0b3JlUmVkaXJlY3Rpb25JZk5lZWRlZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewogICAgIGlmICghbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2xvYWRJbmZvcm1hdGlvbi50cmFuc2Fj
dGlvbnMuYXBwZW5kKE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uIHsgTmV0d29ya1RyYW5z
YWN0aW9uSW5mb3JtYXRpb246OlR5cGU6OlJlZGlyZWN0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBy
ZXF1ZXN0IH0sIFJlc291cmNlUmVzcG9uc2UgeyByZXNwb25zZSB9LCB7IH0gfSk7CisgICAgbV9s
b2FkSW5mb3JtYXRpb24udHJhbnNhY3Rpb25zLmFwcGVuZChXZWJDb3JlOjpOZXR3b3JrVHJhbnNh
Y3Rpb25JbmZvcm1hdGlvbiB7IFdlYkNvcmU6Ok5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9u
OjpUeXBlOjpSZWRpcmVjdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgeyB9IH0pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
MDc5OWE0OTFjMTQyZmFkZGI1MDVhZThjMmUzYzllOWY5YmM3MzU1YS4uN2FjOWZjYWRiNTk5YzEz
MzBkNWM5MzkxYWIyYWNjY2MyNTVhMGVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTk2LDggKzk2LDYgQEAKICNpbmNsdWRlICJO
ZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBOZXR3b3JrUHJvY2VzcyYgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpCkBAIC0xMjYsNyArMTI0LDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQ
cm9jZXNzKCkKICAgICBhZGRTdXBwbGVtZW50PE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyPigpOwog
I2VuZGlmCiAKLSAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkTGlzdGVu
ZXIoW3RoaXNdKGJvb2wgaXNPbkxpbmUpIHsKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3Rp
Zmllcjo6c2luZ2xldG9uKCkuYWRkTGlzdGVuZXIoW3RoaXNdKGJvb2wgaXNPbkxpbmUpIHsKICAg
ICAgICAgYXV0byB3ZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9u
czsKICAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzQ29ubmVjdGlvbiA6IHdlYlByb2Nlc3ND
b25uZWN0aW9ucykKICAgICAgICAgICAgIHdlYlByb2Nlc3NDb25uZWN0aW9uLT5zZXRPbkxpbmVT
dGF0ZShpc09uTGluZSk7CkBAIC0yODEsNyArMjc5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYKICAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lv
blBhcmFtZXRlcnMoKSk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24pCi0gICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpOworICAgICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBtX2xvZ0Nvb2tp
ZUluZm9ybWF0aW9uID0gcGFyYW1ldGVycy5sb2dDb29raWVJbmZvcm1hdGlvbjsKQEAgLTM3NCwx
MiArMzcyLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkKICNlbmRpZgogCiAgICAgaWYgKCFtX3dlYlByb2Nlc3NDb25uZWN0aW9u
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+c2V0
T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsK
KyAgICAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMubGFzdCgpLT5zZXRPbkxpbmVTdGF0ZShX
ZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIHsKLSAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxT
dG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVh
ckNyZWRlbnRpYWxzKCk7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lvblRy
YWNrZXI6Om5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
KQogICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJDcmVkZW50aWFscygpOwogICAgIGVsc2UK
QEAgLTQzMSwxNCArNDI5LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndyaXRlQmxvYlRvRmls
ZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYKICNpZiBIQVZFKENG
TkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgYm9vbCBzaG91bGRDbGVh
ckZpcnN0LCB1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
cihkb21haW5zVG9CbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkVXBkYXRl
QmxvY2tDb29raWVzKGNvbnRleHRJZCksIDApOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpo
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQogewot
ICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQo
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBm
aXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpLCBjb250ZXh0SWQpLCAwKTsKICAgICBl
bHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDQ2LDcgKzQ0NCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4
dElkKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYgKGF1dG8qIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXNSZXN1bHQobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcygpLCBjb250ZXh0SWQpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtNDU1LDcgKzQ1Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0CiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZh
bHNlOwotICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICBpZiAoYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
Z3JhbnRTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFt
ZUlELCBwYWdlSUQpOwogICAgICAgICBBU1NFUlQobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5oYXNT
dG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBw
YWdlSUQpKTsKICAgICAgICAgaXNTdG9yYWdlR3JhbnRlZCA9IHRydWU7CkBAIC00NjcsNyArNDY1
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1v
dmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29u
dGV4dElkKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYgKGF1dG8q
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTQ3Niw3ICs0NzQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1v
dmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgYwog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnJlbW92ZVByZXZhbGVudERv
bWFpbnMoZG9tYWlucyk7CiB9CiAjZW5kaWYKQEAgLTQ5Nyw3ICs0OTUsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRAogc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNo
T3B0aW9ucywgRnVuY3Rpb248dm9pZCAoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBjYWNoZSA9IE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5jYWNoZSgpKSB7Ci0gICAgICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5E
YXRhLCB1aW50NjRfdD4gb3JpZ2luc0FuZFNpemVzOworICAgICAgICBIYXNoTWFwPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSwgdWludDY0X3Q+IG9yaWdpbnNBbmRTaXplczsKICAgICAgICAg
Y2FjaGUtPnRyYXZlcnNlKFtmZXRjaE9wdGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG9yaWdpbnNBbmRTaXplcyA9IFdURk1vdmUob3JpZ2luc0Fu
ZFNpemVzKV0oYXV0byogdHJhdmVyc2FsRW50cnkpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCF0cmF2ZXJzYWxFbnRyeSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxXZWJzaXRlRGF0YTo6
RW50cnk+IGVudHJpZXM7CkBAIC01NTMsMTMgKzU1MSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdAogICAgIH0pKTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6Q29va2llcykpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAg
ICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKICAgICB9
CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNy
ZWRlbnRpYWxzKSkgewotICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dl
YnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dp
dGhDcmVkZW50aWFscygpOworICAgICAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5tX3dlYnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMgPSBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRp
YWxTdG9yYWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOwogICAgIH0KIAogICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CkBA
IC01NzAsNyArNTY4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICAgICAgZ2V0
SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CiAgICAgfQog
I2VuZGlmCkBAIC01ODYsMTkgKzU4NCwxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogewog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQorICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAg
ICAgICAgICAgY2xlYXJIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgbW9kaWZpZWRT
aW5jZSk7CiAgICAgfQogI2VuZGlmCiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKG1vZGlmaWVkU2luY2UpOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7Ci0gICAgICAgIGlmIChO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAg
ICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNy
ZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgICAgICBpZiAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpLT5jcmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKICAgICB9
CiAKICAgICBhdXRvIGNsZWFyVGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6
OmNyZWF0ZShbdGhpcywgY2FsbGJhY2tJRF0gewpAQCAtNjEyLDE3ICs2MTAsMTcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2kKICAgICAgICAgY2xlYXJEaXNrQ2FjaGUobW9kaWZpZWRTaW5jZSwg
W2NsZWFyVGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcildIHsgfSk7CiB9
CiAKLXN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0b3I8U2VjdXJp
dHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCAoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogY2FjaGUgPSBOZXR3b3JrUHJvY2Vz
czo6c2luZ2xldG9uKCkuY2FjaGUoKSkgewotICAgICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IG9yaWdpbnNUb0RlbGV0ZTsKKyAgICAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zVG9EZWxldGU7CiAgICAgICAgIGZvciAoYXV0byYg
b3JpZ2luIDogb3JpZ2lucykKICAgICAgICAgICAgIG9yaWdpbnNUb0RlbGV0ZS5hZGQob3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCkpOwogCiAgICAgICAgIFZlY3RvcjxOZXR3b3JrQ2FjaGU6OktleT4g
Y2FjaGVLZXlzVG9EZWxldGU7CiAgICAgICAgIGNhY2hlLT50cmF2ZXJzZShbY2FjaGUsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9yaWdpbnNUb0RlbGV0
ZSA9IFdURk1vdmUob3JpZ2luc1RvRGVsZXRlKSwgY2FjaGVLZXlzVG9EZWxldGUgPSBXVEZNb3Zl
KGNhY2hlS2V5c1RvRGVsZXRlKV0oYXV0byogdHJhdmVyc2FsRW50cnkpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKHRyYXZlcnNhbEVudHJ5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9yaWdp
bnNUb0RlbGV0ZS5jb250YWlucyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNhbEVudHJ5
LT5lbnRyeS5yZXNwb25zZSgpLnVybCgpKSkpCisgICAgICAgICAgICAgICAgaWYgKG9yaWdpbnNU
b0RlbGV0ZS5jb250YWlucyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNh
bEVudHJ5LT5lbnRyeS5yZXNwb25zZSgpLnVybCgpKSkpCiAgICAgICAgICAgICAgICAgICAgIGNh
Y2hlS2V5c1RvRGVsZXRlLmFwcGVuZCh0cmF2ZXJzYWxFbnRyeS0+ZW50cnkua2V5KCkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTYzNywxNiArNjM1LDE2IEBA
IHN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0b3I8U2VjdXJpdHlP
cmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2ll
SG9zdE5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgSFNUU0NhY2hlSG9zdE5hbWVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbkRhdGFzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgSFNUU0NhY2hlSG9zdE5hbWVzLCB1aW50NjRfdCBj
YWxsYmFja0lEKQogewogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6Q29va2llcykpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb29raWVI
b3N0TmFtZXMpOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0
b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQogICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVz
KCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIEhTVFNDYWNoZUhvc3ROYW1lcyk7CiAgICAgfQogI2Vu
ZGlmCkBAIC02NTcsMTQgKzY1NSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogCiAgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkp
IHsKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCi0gICAgICAg
ICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oc2Vzc2lvbklE
LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlciA9
IGNsZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIENhY2hlU3Rv
cmFnZTo6RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbihzZXNzaW9uSUQsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSB7IG9yaWdpbkRhdGEgfSwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xl
YXJUYXNrc0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSAmJiAhc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIGNsZWFyRGlza0NhY2hlRW50cmllcyhvcmlnaW5E
YXRhcywgW2NsZWFyVGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcildIHsg
fSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiB7CiAgICAgZG93bmxvYWRNYW5h
Z2VyKCkuc3RhcnREb3dubG9hZChudWxscHRyLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVl
c3QsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIH0KQEAgLTY4OSw3ICs2ODcsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEIGRvd25sb2FkSUQp
CiAgICAgZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQ
cm94eTo6RGlkQ2FuY2VsKHsgfSksIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRh
VGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYg
bmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSBuZXR3b3JrRGF0YVRhc2sucGVuZGluZ0Rvd25sb2Fk
SUQoKS5kb3dubG9hZElEKCk7CiAgICAgZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKSwgZGVz
dGluYXRpb25JRCk7CkBAIC02OTksNyArNjk3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Zmlu
ZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXMK
ICAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXMtYS1kb3dubG9h
ZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20gdGhlIENvbnRlbnQtRGlzcG9zaXRpb24gaGVh
ZGVyCiAgICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgZnJvbSB0
aGUgZG93bmxvYWQgYXR0cmlidXRlLgogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJl
c3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgpID8gcmVzcG9uc2Uuc3VnZ2VzdGVkRmls
ZW5hbWUoKSA6IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRGaWxlbmFtZSgpOwotICAgIHN1Z2dl
c3RlZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVj
ZXNzYXJ5KHN1Z2dlc3RlZEZpbGVuYW1lLCByZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICBzdWdn
ZXN0ZWRGaWxlbmFtZSA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRl
bnNpb25JZk5lY2Vzc2FyeShzdWdnZXN0ZWRGaWxlbmFtZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7
CiAKICAgICBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9h
ZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKG5ldHdv
cmtEYXRhVGFzay5wZW5kaW5nRG93bmxvYWRJRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSksIGRlc3Rp
bmF0aW9uSUQpOwogfQpAQCAtNzU3LDMxICs3NTUsMzEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Z2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJv
b2wgYWxsb3dzKQogewotICAgIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0QWxsb3dzQW55
U1NMQ2VydGlmaWNhdGUoYWxsb3dzKTsKKyAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0
dGluZ3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKGFsbG93cyk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7Ci0g
ICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhz
aG91bGRTYW1wbGUpKQorICAgIGlmICghV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6
OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2Uod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNj
cmlwdGlvbiwgU2hvdWxkU2FtcGxlOjpObyksIDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkxvZ0RpYWdub3N0aWNN
ZXNzYWdlKHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNh
bXBsZTo6Tm8pLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01l
c3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUg
cmVzdWx0LCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpEaWFn
bm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hv
dWxkU2FtcGxlKQogewotICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3VsZExv
Z0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKKyAgICBpZiAoIVdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQsIFNob3VsZFNhbXBsZTo6
Tm8pLCAwKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFn
ZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6
Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50
RmlndXJlcywgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUs
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3Vs
ZFNhbXBsZSkKIHsKLSAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dB
ZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCisgICAgaWYgKCFXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh3
ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCB2YWx1ZSwgc2lnbmlmaWNhbnRGaWd1cmVz
LCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoVmFsdWUod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwgdmFsdWUsIHNpZ25pZmlj
YW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyksIDApOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjp0ZXJtaW5hdGUoKQpAQCAtODk2LDcgKzg5NCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVuCiB7CiAjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQogICAgIE5ldHdv
cmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJl
c291cmNlUmVxdWVzdCB7IHVybCB9OworICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCB7IHVybCB9OwogICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgcGFyYW1ldGVy
cy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CkBAIC05MTAsMzcg
KzkwOCwzNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwsIFdlYkNvcmU6OlN0b3JlZENyZWRlbgogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBjb25zdAog
ewotICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKHNjaGVtZSk7
CisgICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUo
c2NoZW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5
cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QK
IHsKLSAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRl
bnRTZWN1cml0eVBvbGljeShzY2hlbWUpOworICAgIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5Ojpy
ZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KHNjaGVtZSk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25z
dCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKIHsKLSAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJV
UkxTY2hlbWVBc0xvY2FsKHNjaGVtZSk7CisgICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNMb2NhbChzY2hlbWUpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0
CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2VzcyhzY2hl
bWUpOworICAgIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9B
Y2Nlc3Moc2NoZW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hl
bWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKIHsKLSAgICBT
Y2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChzY2hlbWUp
OworICAgIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxh
eUlzb2xhdGVkKHNjaGVtZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKIHsKLSAgICBT
Y2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHNjaGVtZSk7Cisg
ICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxl
ZChzY2hlbWUpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0CiB7
Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVz
dChzY2hlbWUpOworICAgIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlckFzQ2FuRGlz
cGxheU9ubHlJZkNhblJlcXVlc3Qoc2NoZW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGlkU3luY0FsbENvb2tpZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRl
eCBlNmQ2NzlmOGZlZjhiYmM1ZTViZWJhM2QzNjJkMTk3ZTRmNWI5YTQyLi4xNzg4NDg0NTc1MDlj
OThjNmU4ZjI2NTYyNDhlMmI4YTZlYTYzMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcApAQCAtMjksOCArMjksNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5
SW1wbC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKQpAQCAtMzksMjQgKzM3LDI0IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKQogICAgIHNldFBs
YXRmb3JtU3RyYXRlZ2llcygmcGxhdGZvcm1TdHJhdGVnaWVzLmdldCgpKTsKIH0KIAotQ29va2ll
c1N0cmF0ZWd5KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQ29va2ll
c1N0cmF0ZWd5KCkKK1dlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogTmV0d29ya1Byb2Nlc3NQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLUxvYWRlclN0cmF0ZWd5KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRl
Z2llczo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3koKQorV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIE5l
dHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2FkZXJTdHJhdGVneSgpCiB7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3RlYm9hcmRTdHJhdGVneSogTmV0d29ya1By
b2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCitXZWJD
b3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVz
OjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKQogewogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1CbG9iUmVnaXN0cnkqIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVC
bG9iUmVnaXN0cnkoKQorV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBOZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKLSAgICByZXR1cm4gbmV3IEJs
b2JSZWdpc3RyeUltcGw7CisgICAgcmV0dXJuIG5ldyBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBs
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDE5OGE0NmY2OTMwMGQ4
MzY3OGQxM2E2YWMyZWZkMTc5NjY3MDZjMmEuLjVmZWY3OTI1MDc2YTkzM2I4MGUwYmVhNDk1NjJh
NjQ1NGYyOTkwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0zMSw4ICszMSw2
IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNDcsMTAgKzQ1LDEwIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgaWYgKHJlcXVlc3QuaHR0cEJvZHkoKSkgewogICAgICAgICByZXF1
ZXN0Lmh0dHBCb2R5KCktPmVuY29kZShlbmNvZGVyKTsKIAotICAgICAgICBjb25zdCBWZWN0b3I8
Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMgPSByZXF1ZXN0Lmh0dHBCb2R5KCktPmVsZW1lbnRz
KCk7CisgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ+JiBlbGVt
ZW50cyA9IHJlcXVlc3QuaHR0cEJvZHkoKS0+ZWxlbWVudHMoKTsKICAgICAgICAgc2l6ZV90IGZp
bGVDb3VudCA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGVsZW1lbnRz
LnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5t
X3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpFbmNvZGVkRmlsZSkKKyAgICAgICAgICAg
IGlmIChlbGVtZW50c1tpXS5tX3R5cGUgPT0gV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpUeXBl
OjpFbmNvZGVkRmlsZSkKICAgICAgICAgICAgICAgICArK2ZpbGVDb3VudDsKICAgICAgICAgfQog
CkBAIC01OCw4ICs1Niw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIHJlcXVlc3RCb2R5U2Fu
ZGJveEV4dGVuc2lvbnMuYWxsb2NhdGUoZmlsZUNvdW50KTsKICAgICAgICAgc2l6ZV90IGV4dGVu
c2lvbkluZGV4ID0gMDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gZWxlbWVu
dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgY29uc3QgRm9ybURhdGFF
bGVtZW50JiBlbGVtZW50ID0gZWxlbWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoZWxlbWVudC5t
X3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpFbmNvZGVkRmlsZSkgeworICAgICAgICAg
ICAgY29uc3QgV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50JiBlbGVtZW50ID0gZWxlbWVudHNbaV07
CisgICAgICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gV2ViQ29yZTo6Rm9ybURhdGFFbGVt
ZW50OjpUeXBlOjpFbmNvZGVkRmlsZSkgewogICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
cGF0aCA9IGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBlbGVtZW50Lm1fZ2VuZXJhdGVk
RmlsZW5hbWUgOiBlbGVtZW50Lm1fZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRP
bmx5LCByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zW2V4dGVuc2lvbkluZGV4KytdKTsKICAg
ICAgICAgICAgIH0KQEAgLTEyOSw3ICsxMjcsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyYwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzSFRUUEJvZHkpIHsKLSAgICAgICAg
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IEZvcm1EYXRhOjpkZWNvZGUoZGVjb2Rlcik7Cisg
ICAgICAgIFJlZlB0cjxXZWJDb3JlOjpGb3JtRGF0YT4gZm9ybURhdGEgPSBXZWJDb3JlOjpGb3Jt
RGF0YTo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoIWZvcm1EYXRhKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQucmVxdWVzdC5zZXRIVFRQQm9keShXVEZN
b3ZlKGZvcm1EYXRhKSk7CkBAIC0xODAsMTIgKzE3OCwxMiBAQCBib29sIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVz
b3VyYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzU291cmNlT3JpZ2luKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNTb3VyY2VPcmlnaW4pIHsKLSAgICAgICAgcmVzdWx0
LnNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoZGVjb2Rlcik7CisgICAgICAg
IHJlc3VsdC5zb3VyY2VPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGVjb2RlKGRl
Y29kZXIpOwogICAgICAgICBpZiAoIXJlc3VsdC5zb3VyY2VPcmlnaW4pCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3RkOjpvcHRpb25hbDxGZXRjaE9wdGlvbnM+IG9w
dGlvbnM7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGZXRjaE9wdGlvbnM+IG9wdGlvbnM7
CiAgICAgZGVjb2RlciA+PiBvcHRpb25zOwogICAgIGlmICghb3B0aW9ucykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg3OTgxYTc3ZGFlOWIxY2E1ODE5ZDM1ZTBkZjQ5
Y2E1MDlmNjI3NGUuLjU0MTc5ZDk4NGIzY2FlYWNhOGY0NDgxZmI3OWFmMjlhNWFkMmMyMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTY1LDggKzY1LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZpZXdM
b2FkZXIuaD4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogI2RlZmluZSBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRo
aXMsICMjX19WQV9BUkdTX18pCiAKQEAgLTc4LDEzICs3NiwxMyBAQCBzdHJ1Y3QgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhIHsKICAgICB7CiAgICAgICAgIEFTU0VS
VChkZWxheWVkUmVwbHkpOwogICAgIH0KLSAgICBSZXNvdXJjZVJlcXVlc3QgY3VycmVudFJlcXVl
c3Q7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0OwogICAgIE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3Vz
TG9hZDo6RGVsYXllZFJlcGx5IGRlbGF5ZWRSZXBseTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlOwotICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yOwogfTsK
IAotc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKK3N0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGRhdGEuZGVsYXllZFJlcGx5
KTsKICAgICBBU1NFUlQoIWRhdGEucmVzcG9uc2UuaXNOdWxsKCkgfHwgIWRhdGEuZXJyb3IuaXNO
dWxsKCkpOwpAQCAtMTAxLDI4ICs5OSwyOCBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogICAg
IDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rp
b24geyBjb25uZWN0aW9uIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IHBhcmFtZXRlcnMuZGVm
ZXJzTG9hZGluZyB9Ci0gICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsg
bV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBv
bGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQorICAgICwgbV9pc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5
ID09IFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRl
bnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CiAgICAgLCBtX2NhY2hlIHsgc2Vzc2lvbklE
KCkuaXNFcGhlbWVyYWwoKSA/IG51bGxwdHIgOiBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCku
Y2FjaGUoKSB9CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAvLyBGSVhN
RTogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBvZiB0aGUgZXhpc3RlbmNlIG9mIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQgaW4gV2ViQ29yZS4KICAgICAvLyAgICAgICAgT25jZSBidWcgMTE2MjMz
IGlzIHJlc29sdmVkLCB0aGlzIEFTU0VSVCBjYW4ganVzdCBiZSAibV93ZWJQYWdlSUQgJiYgbV93
ZWJGcmFtZUlEIgotICAgIEFTU0VSVCgobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRCkgfHwgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kg
PT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMp
OworICAgIEFTU0VSVCgobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCkgfHwgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gV2ViQ29y
ZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMp
OwogCiAgICAgaWYgKG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBCb2R5KCkpIHsKICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBlbGVtZW50IDogb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZWxl
bWVudHMoKSkgewotICAgICAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxl
bWVudDo6VHlwZTo6RW5jb2RlZEJsb2IpCisgICAgICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUg
PT0gV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpUeXBlOjpFbmNvZGVkQmxvYikKICAgICAgICAg
ICAgICAgICBtX2ZpbGVSZWZlcmVuY2VzLmFwcGVuZFZlY3RvcihOZXR3b3JrQmxvYlJlZ2lzdHJ5
OjpzaW5nbGV0b24oKS5maWxlc0luQmxvYihjb25uZWN0aW9uLCBlbGVtZW50Lm1fdXJsKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJz
LnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzKSB7Ci0gICAgICAgIG1fbmV0d29ya0xv
YWRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KEZldGNoT3B0
aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBIVFRQSGVhZGVy
TWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJh
bWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVm
KCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBS
ZWZlcnJlcigpLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAg
ICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZENo
ZWNrZXI+KFdlYkNvcmU6OkZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1f
cGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdp
bmFsUmVxdWVzdEhlYWRlcnMgfSwgV2ViQ29yZTo6VVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3Qu
dXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVy
cy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBzaG91
bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CiAgICAgICAgIGlmIChtX3BhcmFt
ZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQotICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNr
ZXItPnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7CisgICAg
ICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IG1fcGFyYW1ldGVycy5j
c3BSZXNwb25zZUhlYWRlcnMudmFsdWUoKSB9KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvbkNv
bnRyb2xsZXIoVVJMIHsgbV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCB9LCBtX3BhcmFtZXRl
cnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisgICAgICAgIG1fbmV0d29ya0xv
YWRDaGVja2VyLT5zZXRDb250ZW50RXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpVUkwgeyBt
X3BhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMIH0sIG1fcGFyYW1ldGVycy51c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyKTsKICNlbmRpZgogICAgIH0KICAgICBpZiAoc3luY2hyb25vdXNS
ZXBseSkKQEAgLTEzNiw3ICsxMzQsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIoKQogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpIHx8ICFtX3N5bmNo
cm9ub3VzTG9hZERhdGEtPmRlbGF5ZWRSZXBseSk7CiB9CiAKLWJvb2wgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpjYW5Vc2VDYWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0
Citib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQ2FjaGUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIGlmICghbV9jYWNoZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTUwLDcgKzE0OCw3IEBAIGJvb2wgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjYW5Vc2VDYWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
YW5Vc2VDYWNoZWRSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0
Citib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQ2FjaGVkUmVkaXJlY3QoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIGlmICghY2Fu
VXNlQ2FjaGUocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4Myw3ICsxODEs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIG1fd2FzU3RhcnRl
ZCA9IHRydWU7CiAKICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKLSAgICAgICAgbV9u
ZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVz
dCgpIH0sIHRoaXMsIFt0aGlzXSAoYXV0byYmIHJlc3VsdCkgeworICAgICAgICBtX25ldHdvcmtM
b2FkQ2hlY2tlci0+Y2hlY2soV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1
ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAo
IXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmVycm9y
KCkuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+ZGlkRmFpbExv
YWRpbmcocmVzdWx0LmVycm9yKCkpOwpAQCAtMjA2LDE1ICsyMDQsMTUgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0
YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwgRmly
c3RMb2FkOjpZZXMpOworICAgIHN0YXJ0TmV0d29ya0xvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwgRmlyc3RMb2FkOjpZZXMpOwogfQogCi12b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hl
RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFT
U0VSVChjYW5Vc2VDYWNoZShyZXF1ZXN0KSk7CiAKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNl
TG9hZGVyPiBsb2FkZXIodGhpcyk7Ci0gICAgbV9jYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgeyBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCB9LCBbdGhpcywg
bG9hZGVyID0gV1RGTW92ZShsb2FkZXIpLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVx
dWVzdCB9XShhdXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgeworICAgIG1fY2FjaGUtPnJl
dHJpZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQgfSwgW3RoaXMsIGxvYWRlciA9IFdURk1vdmUobG9hZGVyKSwgcmVxdWVzdCA9IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBlbnRyeSwgYXV0byBpbmZv
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGxvYWRlci0+aGFzT25lUmVmKCkpIHsKICAgICAgICAg
ICAgIC8vIFRoZSBsb2FkZXIgaGFzIGJlZW4gYWJvcnRlZCBhbmQgaXMgb25seSBoZWxkIGFsaXZl
IGJ5IHRoaXMgbGFtYmRhLgogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ3LDcgKzI0NSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJz
dExvYWQgbG9hZCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2Fk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hZCBsb2FkKQogewog
ICAgIGlmIChsb2FkID09IEZpcnN0TG9hZDo6WWVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNl
ID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291
cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CkBAIC0yNTUsMTAgKzI1MywxMCBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAg
ICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5n
VGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKIAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0
ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtMzM1LDcgKzMzMyw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQogICAgIG1fY29ubmVjdGlvbi0+
ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKCp0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNvbnZlcnRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3dubG9hZChEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgLy8gVGhp
cyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1lIGZyb20gdGhlIGRpc2sgY2FjaGUuCiAg
ICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNjYsMTkgKzM2NCwxOSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6Q2FuY2Vs
KTsKIH0KIAotYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEZyYW1lT3B0aW9ucywgY29uc3QgVVJMJiB1
cmwpCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhG
cmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RnJhbWVPcHRpb25zLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCkKIHsKICAgICBpZiAoaXNNYWluRnJhbWVMb2FkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHN3aXRjaCAocGFyc2VYRnJhbWVPcHRpb25zSGVhZGVyKHhGcmFtZU9wdGlv
bnMpKSB7Ci0gICAgY2FzZSBYRnJhbWVPcHRpb25zTm9uZToKLSAgICBjYXNlIFhGcmFtZU9wdGlv
bnNBbGxvd0FsbDoKKyAgICBzd2l0Y2ggKFdlYkNvcmU6OnBhcnNlWEZyYW1lT3B0aW9uc0hlYWRl
cih4RnJhbWVPcHRpb25zKSkgeworICAgIGNhc2UgV2ViQ29yZTo6WEZyYW1lT3B0aW9uc05vbmU6
CisgICAgY2FzZSBXZWJDb3JlOjpYRnJhbWVPcHRpb25zQWxsb3dBbGw6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBjYXNlIFhGcmFtZU9wdGlvbnNEZW55OgorICAgIGNhc2UgV2ViQ29yZTo6
WEZyYW1lT3B0aW9uc0Rlbnk6CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgWEZyYW1l
T3B0aW9uc1NhbWVPcmlnaW46IHsKLSAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHVybCk7CisgICAgY2FzZSBXZWJDb3JlOjpYRnJhbWVPcHRpb25zU2FtZU9yaWdp
bjogeworICAgICAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUodXJsKTsKICAgICAgICAgYXV0byB0b3BGcmFtZU9yaWdpbiA9IG1fcGFyYW1ldGVycy5mcmFt
ZUFuY2VzdG9yT3JpZ2lucy5sYXN0KCk7CiAgICAgICAgIGlmICghb3JpZ2luLT5pc1NhbWVTY2hl
bWVIb3N0UG9ydCgqdG9wRnJhbWVPcmlnaW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0zODgsMTIgKzM4NiwxMiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50
ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RgogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgY2FzZSBYRnJhbWVPcHRpb25zQ29uZmxp
Y3Q6IHsKKyAgICBjYXNlIFdlYkNvcmU6OlhGcmFtZU9wdGlvbnNDb25mbGljdDogewogICAgICAg
ICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIk11bHRpcGxlICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRl
cnMgd2l0aCBjb25mbGljdGluZyB2YWx1ZXMgKCciICsgeEZyYW1lT3B0aW9ucyArICInKSBlbmNv
dW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKCkgKyAiJy4gRmFsbGluZyBiYWNrIHRvICdERU5ZJy4iOwogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
aWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBYRnJhbWVPcHRpb25zSW52YWxpZDogeworICAgIGNhc2Ug
V2ViQ29yZTo6WEZyYW1lT3B0aW9uc0ludmFsaWQ6IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVz
c2FnZSA9ICJJbnZhbGlkICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVu
IGxvYWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJzog
JyIgKyB4RnJhbWVPcHRpb25zICsgIicgaXMgbm90IGEgcmVjb2duaXplZCBkaXJlY3RpdmUuIFRo
ZSBoZWFkZXIgd2lsbCBiZSBpZ25vcmVkLiI7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVy
KCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTQwMyw3ICs0MDEsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJy
dXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRG
b3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW9ucyhjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK2Jvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRM
b2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvbnMoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJlc291cmNlKCkp
OwogCkBAIC00MTMsMTEgKzQxMSwxMSBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hv
dWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogI2VuZGlm
CiAKICAgICBhdXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwotICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeSBjb250ZW50U2VjdXJpdHlQb2xpY3kgeyBVUkwgeyB1cmwgfSwgdGhpcyB9OwotICAgIGNv
bnRlbnRTZWN1cml0eVBvbGljeS5kaWRSZWNlaXZlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgeyByZXNwb25zZSB9LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVm
ZXJyZXIoKSk7CisgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5IGNvbnRlbnRTZWN1
cml0eVBvbGljeSB7IFdlYkNvcmU6OlVSTCB7IHVybCB9LCB0aGlzIH07CisgICAgY29udGVudFNl
Y3VyaXR5UG9saWN5LmRpZFJlY2VpdmVIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyB7IHJlc3BvbnNlIH0sIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBS
ZWZlcnJlcigpKTsKICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeS5hbGxvd0ZyYW1lQW5j
ZXN0b3JzKG1fcGFyYW1ldGVycy5mcmFtZUFuY2VzdG9yT3JpZ2lucywgdXJsKSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgU3RyaW5nIHhGcmFtZU9wdGlvbnMgPSBtX3Jlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6WEZyYW1lT3B0aW9ucyk7CisgICAgU3RyaW5nIHhG
cmFtZU9wdGlvbnMgPSBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVh
ZGVyTmFtZTo6WEZyYW1lT3B0aW9ucyk7CiAgICAgaWYgKCF4RnJhbWVPcHRpb25zLmlzTnVsbCgp
ICYmIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKHhGcmFtZU9wdGlvbnMsIHJl
c3BvbnNlLnVybCgpKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIlJlZnVzZWQg
dG8gZGlzcGxheSAnIiArIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xl
bmd0aCgpICsgIicgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0
byAnIiArIHhGcmFtZU9wdGlvbnMgKyAiJy4iOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRl
bnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwpAQCAtNDI2LDcgKzQyNCw3IEBA
IGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJh
bWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1hdXRvIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZWNlaXZlZFJlc3BvbnNlKSAtPiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZQor
YXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUi
IFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVjZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKIApAQCAt
NDc0LDcgKzQ3Miw3IEBAIGF1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBhdXRvIHJlc3BvbnNlID0gc2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUoUmVzb3Vy
Y2VSZXNwb25zZSB7IG1fcmVzcG9uc2UgfSwgUmVzb3VyY2VSZXNwb25zZTo6U2FuaXRpemF0aW9u
VHlwZTo6Q3Jvc3NPcmlnaW5TYWZlKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gc2FuaXRpemVSZXNw
b25zZUlmUG9zc2libGUoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSB7IG1fcmVzcG9uc2UgfSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmlnaW5T
YWZlKTsKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKSB7CiAgICAgICAgIG1fc3luY2hyb25vdXNM
b2FkRGF0YS0+cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKICAgICAgICAgcmV0dXJuIFNo
b3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpZZXM7CkBAIC00ODcsNyArNDg1LDcgQEAg
YXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICByZXR1cm4gd2lsbFdhaXRGb3JDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSA/IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObyA6
IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpZZXM7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0
ZXNSZWNlaXZlZCkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
QnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyKTsKQEAgLTUxNyw3ICs1MTUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAg
IHNlbmRCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9h
ZE1ldHJpY3MpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGlu
ZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQs
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9udW1C
eXRlc1JlY2VpdmVkKTsKIApAQCAtNTUyLDcgKzU1MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29y
a0xvCiAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZEZhaWxMb2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxs
YXRpb24gPSAlZCwgaXNBY2Nlc3NDb250cm9sID0gJWQsIGVyckNvZGUgPSAlZCkiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJv
ci5pc0FjY2Vzc0NvbnRyb2woKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCkBAIC01NzcsMTEgKzU3
NSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEJs
b2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgICsrbV9yZWRpcmVjdENvdW50Owog
Ci0gICAgaWYgKHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6
U291cmNlOjpOZXR3b3JrICYmIGNhblVzZUNhY2hlZFJlZGlyZWN0KHJlcXVlc3QpKQorICAgIGlm
IChyZWRpcmVjdFJlc3BvbnNlLnNvdXJjZSgpID09IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6
OlNvdXJjZTo6TmV0d29yayAmJiBjYW5Vc2VDYWNoZWRSZWRpcmVjdChyZXF1ZXN0KSkKICAgICAg
ICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCByZWRp
cmVjdFJlcXVlc3QpOwogCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CkBAIC01OTUs
NyArNTkzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX3BhcmFtZXRlcnMub3B0aW9u
cy5yZWRpcmVjdCA9PSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpNYW51YWwpIHsKKyAgICAgICAg
ICAgIGlmIChtX3BhcmFtZXRlcnMub3B0aW9ucy5yZWRpcmVjdCA9PSBXZWJDb3JlOjpGZXRjaE9w
dGlvbnM6OlJlZGlyZWN0OjpNYW51YWwpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5kaWRGaW5p
c2hXaXRoUmVkaXJlY3RSZXNwb25zZShXVEZNb3ZlKHJlc3VsdC0+cmVkaXJlY3RSZXNwb25zZSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTYyMSwxNiArNjE5
LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgY29udGludWVXaWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSwg
V1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250
aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBBU1NFUlQo
IWlzU3luY2hyb25vdXMoKSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6V2lsbFNlbmRSZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdCwgc2FuaXRpemVSZXNwb25zZUlmUG9z
c2libGUoV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgUmVzb3VyY2VSZXNwb25zZTo6U2FuaXRp
emF0aW9uVHlwZTo6UmVkaXJlY3Rpb24pKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QsIHNhbml0aXplUmVzcG9u
c2VJZlBvc3NpYmxlKFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2U6OlNhbml0aXphdGlvblR5cGU6OlJlZGlyZWN0aW9uKSkpOwogfQogCi12b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoV2l0aFJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgcmVkaXJlY3RSZXNwb25zZS5zZXRUeXBlKFJl
c291cmNlUmVzcG9uc2U6OlR5cGU6Ok9wYXF1ZXJlZGlyZWN0KTsKKyAgICByZWRpcmVjdFJlc3Bv
bnNlLnNldFR5cGUoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6T3BhcXVlcmVkaXJl
Y3QpOwogICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsK
IAogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3M7CkBA
IC02NDIsNyArNjQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFdp
dGhSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWQKICAgICBjbGVhbnVwKExv
YWRSZXN1bHQ6OlN1Y2Nlc3MpOwogfQogCi1SZXNvdXJjZVJlc3BvbnNlIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUoUmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBSZXNvdXJjZVJlc3BvbnNlOjpTYW5pdGl6YXRpb25UeXBlIHR5cGUpCitXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2FuaXRpemVSZXNwb25z
ZUlmUG9zc2libGUoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlOjpTYW5pdGl6YXRpb25UeXBlIHR5cGUpCiB7CiAgICAgaWYgKG1f
cGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcykKICAgICAgICAgcmVz
cG9uc2Uuc2FuaXRpemVIVFRQSGVhZGVyRmllbGRzKHR5cGUpOwpAQCAtNjYwLDcgKzY1OCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXN0YXJ0TmV0d29ya0xvYWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxCiAgICAgc3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKG5l
d1JlcXVlc3QpLCBGaXJzdExvYWQ6Ok5vKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3Qs
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykK
IHsKICAgICBpZiAobV9zaG91bGRSZXN0YXJ0TG9hZCkgewogICAgICAgICBtX3Nob3VsZFJlc3Rh
cnRMb2FkID0gZmFsc2U7CkBAIC02NzEsNyArNjY5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVl
c3QKICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBiZSBkb2luZyB0aGlzIGNoZWNrIHdoZW4gcmVjZWl2aW5nIHRoZSByZWRpcmVjdGlv
biBhbmQgbm90IGFsbG93IGFib3V0IHByb3RvY29sIGFzIHBlciBmZXRjaCBzcGVjLgogICAgICAg
ICBpZiAoIW5ld1JlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFuZXdS
ZXF1ZXN0LnVybCgpLmlzQmxhbmtVUkwoKSAmJiBtX3JlZGlyZWN0Q291bnQpIHsKLSAgICAgICAg
ICAgIGRpZEZhaWxMb2FkaW5nKFJlc291cmNlRXJyb3IgeyBTdHJpbmcgeyB9LCAwLCBuZXdSZXF1
ZXN0LnVybCgpLCAiUmVkaXJlY3Rpb24gdG8gVVJMIHdpdGggYSBzY2hlbWUgdGhhdCBpcyBub3Qg
SFRUUChTKSJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAgICAg
ICAgICAgIGRpZEZhaWxMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBTdHJpbmcgeyB9
LCAwLCBuZXdSZXF1ZXN0LnVybCgpLCAiUmVkaXJlY3Rpb24gdG8gVVJMIHdpdGggYSBzY2hlbWUg
dGhhdCBpcyBub3QgSFRUUChTKSJfcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTc0MywxMyArNzQxLDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdU
aW1lckZpcmVkKCkKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZShtX2J1ZmZlcmVkRGF0YS5nZXQoKSk7CiAgICAgc2l6ZV90IGVuY29kZWRMZW5ndGggPSBt
X2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3Ro
ID0gMDsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZl
RGF0YShkYXRhUmVmZXJlbmNlLCBlbmNvZGVkTGVuZ3RoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApAQCAtNzkwLDcgKzc4OCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXNwb25zZSA9
IHNhbml0aXplUmVzcG9uc2VJZlBvc3NpYmxlKFdURk1vdmUocmVzcG9uc2UpLCBSZXNvdXJjZVJl
c3BvbnNlOjpTYW5pdGl6YXRpb25UeXBlOjpDcm9zc09yaWdpblNhZmUpOworICAgIHJlc3BvbnNl
ID0gc2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUoV1RGTW92ZShyZXNwb25zZSksIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2U6OlNhbml0aXphdGlvblR5cGU6OkNyb3NzT3JpZ2luU2FmZSk7CiAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEt
PnJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7CiAgICAgICAgIHNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIGVudHJ5LT5idWZmZXIoKSk7CkBA
IC04NzIsMTQgKzg3MCwxNCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dmFsaWRhdGVD
YWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudAogCiAgICAgLy8gSWYg
dGhlIHJlcXVlc3QgaXMgYWxyZWFkeSBjb25kaXRpb25hbCB0aGVuIHRoZSByZXZhbGlkYXRpb24g
d2FzIG5vdCB0cmlnZ2VyZWQgYnkgdGhlIGRpc2sgY2FjaGUKICAgICAvLyBhbmQgd2Ugc2hvdWxk
IG5vdCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIGNvbmRpdGlvbmFsIGhlYWRlcnMuCi0gICAgUmVz
b3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmlnaW5hbFJlcXVlc3QoKTsKKyAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmV2YWxpZGF0aW9uUmVxdWVzdCA9IG9yaWdpbmFs
UmVxdWVzdCgpOwogICAgIGlmICghcmV2YWxpZGF0aW9uUmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkp
IHsKLSAgICAgICAgU3RyaW5nIGVUYWcgPSBlbnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkVUYWcpOwotICAgICAgICBTdHJpbmcgbGFzdE1vZGlmaWVkID0g
ZW50cnktPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9k
aWZpZWQpOworICAgICAgICBTdHJpbmcgZVRhZyA9IGVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFk
ZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6RVRhZyk7CisgICAgICAgIFN0cmluZyBs
YXN0TW9kaWZpZWQgPSBlbnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6
SFRUUEhlYWRlck5hbWU6Okxhc3RNb2RpZmllZCk7CiAgICAgICAgIGlmICghZVRhZy5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6SWZOb25lTWF0Y2gsIGVUYWcpOworICAgICAgICAgICAgcmV2YWxpZGF0
aW9uUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6Oklm
Tm9uZU1hdGNoLCBlVGFnKTsKICAgICAgICAgaWYgKCFsYXN0TW9kaWZpZWQuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OklmTW9kaWZpZWRTaW5jZSwgbGFzdE1vZGlmaWVkKTsKKyAgICAgICAgICAgIHJl
dmFsaWRhdGlvblJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJO
YW1lOjpJZk1vZGlmaWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CiAgICAgfQogCiAgICAgbV9jYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbiA9IFdURk1vdmUoZW50cnkpOwpAQCAtODg3LDcgKzg4NSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnkoc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50CiAgICAgc3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJl
dmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiB9CiAKLXZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+
JiYgZW50cnkpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlzcGF0Y2hXaWxsU2VuZFJl
cXVlc3RGb3JDYWNoZUVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiYmIGVudHJ5KQogewogICAgIEFTU0VS
VChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpOwogICAgIEFTU0VSVCghbV9pc1dhaXRpbmdDb250
aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0KTsKQEAgLTg5NSw3ICs4OTMsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JD
YWNoZUVudHJ5KFJlc291cmNlUmVxdWVzdAogICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29y
a1Byb2Nlc3MpIEV4ZWN1dGluZyBjYWNoZWQgcmVkaXJlY3QiKTsKIAogICAgIG1faXNXYWl0aW5n
Q29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCA9IHRydWU7Ci0gICAgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBSZXNvdXJjZVJlcXVlc3Qg
eyAqZW50cnktPnJlZGlyZWN0UmVxdWVzdCgpIH0sIFJlc291cmNlUmVzcG9uc2UgeyBlbnRyeS0+
cmVzcG9uc2UoKSB9KTsKKyAgICB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVx
dWVzdCksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCB7ICplbnRyeS0+cmVkaXJlY3RSZXF1ZXN0
KCkgfSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSB7IGVudHJ5LT5yZXNwb25zZSgpIH0pOwog
fQogCiBJUEM6OkNvbm5lY3Rpb24qIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKQpAQCAtOTcxLDEwICs5NjksMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBhdXRvIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVChuZXR3b3JrU3RvcmFnZVNlc3Npb24pOwogCi0g
ICAgbG9nQ29va2llSW5mb3JtYXRpb24oIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmln
aW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0
ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJl
cXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigp
KTsKKyAgICBsb2dDb29raWVJbmZvcm1hdGlvbigiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFdlYkNvcmU6OlNhbWVT
aXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJs
KCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgp
LCBpZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3Jt
YXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lk
IGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2
b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpOwogCkBAIC0xMDYyLDcgKzEwNjAsNyBAQCBz
dGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZAogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAK
LXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlm
aWVyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFdl
YkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNT
RVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpOwogCkBAIC0xMDc4LDcgKzEwNzYsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSBtZXNzYWdlU291cmNlLCBNZXNzYQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNl
LCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRDU1BWaW9sYXRp
b25SZXBvcnQoVVJMJiYgcmVwb3J0VVJMLCBSZWY8Rm9ybURhdGE+JiYgcmVwb3J0KQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQoV2ViQ29yZTo6VVJM
JiYgcmVwb3J0VVJMLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYgcmVwb3J0KQogewogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRDU1BWaW9sYXRpb25SZXBvcnQgeyBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgV1RGTW92ZShyZXBvcnRVUkwpLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
IHsgV1RGTW92ZShyZXBvcnQpIH0gfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiB9CkBAIC0x
MTIzLDMgKzExMjEsNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nU2xvd0NhY2hl
UmV0cmlldmVJZk5lZWRlZChjb25zdCBOZXR3b3JrQ2FjaGU6OkNhYwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGRlODE4NmNhNTAyYzY2NzgwYTdhNTk2ZTI0NTcz
ZDVjZmNiY2FhYWQuLmZjM2UxYWIxYzcyMjgyZWIzZWNlNzA2Zjg3ZTMzODkyMWJiNTMwOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBA
IC00MSw5ICs0MSw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25DdXJsLmgiCiAjZW5kaWYK
IAotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJl
ZjxOZXR3b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCkBAIC01OSw5ICs1Niw5IEBAIFJlZjxOZXR3
b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhCiAjZW5kaWYKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3
b3JrU2Vzc2lvbjo6bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgY29uc3QKK1dlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb246Om5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CiB7Ci0gICAgYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24obV9zZXNz
aW9uSUQpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0b3JhZ2VTZXNzaW9uKTsKICAgICByZXR1cm4g
KnN0b3JhZ2VTZXNzaW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggOGE3N2U0NmJlMzY3YjM0ZTU0NzBmZTQ5
MjBjNGViMmY4YThmZmZlNC4uNTMwNTQ5ZWFhZDAzZGY1OThhZmY1MDE2OWVlNGNkZjhhNTUyZGMy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRTdHJlYW0uY3BwCkBAIC0zMiwxOSArMzIsMTcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tl
dFN0cmVhbUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShXZWJD
b3JlOjpVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBj
cmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKK1Jl
ZjxOZXR3b3JrU29ja2V0U3RyZWFtPiBOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUoV2ViQ29y
ZTo6VVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERh
dGEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1NvY2tldFN0cmVhbShXVEZN
b3ZlKHVybCksIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgaWRlbnRpZmllciwgY29u
bmVjdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpKSk7CiB9CiAKLU5ldHdvcmtTb2NrZXRTdHJlYW06
Ok5ldHdvcmtTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllciwg
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4m
JiBhdWRpdERhdGEpCitOZXR3b3JrU29ja2V0U3RyZWFtOjpOZXR3b3JrU29ja2V0U3RyZWFtKFdl
YkNvcmU6OlVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVk
aXREYXRhKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKLSAgICAsIG1faW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVh
dGUodXJsLCAqdGhpcywgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1
ZGl0RGF0YSkpKQorICAgICwgbV9pbXBsKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmNyZWF0ZSh1cmwsICp0aGlzLCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFdURk1v
dmUoYXVkaXREYXRhKSkpCiB7CiB9CiAKQEAgLTU1LDcgKzUzLDcgQEAgdm9pZCBOZXR3b3JrU29j
a2V0U3RyZWFtOjpzZW5kRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIHVpbnQ2
NF90IGlkZW4KICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kSGFu
ZHNoYWtlKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mIGhlYWRlckZpZWxkUHJveHksIHVpbnQ2
NF90IGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OnNlbmRIYW5kc2hha2Uo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYgaGVhZGVyRmllbGRQcm94eSwgdWlu
dDY0X3QgaWRlbnRpZmllcikKIHsKICAgICBtX2ltcGwtPnBsYXRmb3JtU2VuZEhhbmRzaGFrZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIGhlYWRlckZpZWxkUHJveHksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXJdIChib29sIHN1Y2Nlc3MsIGJvb2wg
ZGlkQWNjZXNzU2VjdXJlQ29va2llcykgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2Nr
ZXRTdHJlYW06OkRpZFNlbmRIYW5kc2hha2UoaWRlbnRpZmllciwgc3VjY2VzcywgZGlkQWNjZXNz
U2VjdXJlQ29va2llcykpOwpAQCAtNzIsMTkgKzcwLDE5IEBAIE5ldHdvcmtTb2NrZXRTdHJlYW06
On5OZXR3b3JrU29ja2V0U3RyZWFtKCkKICAgICBjbG9zZSgpOwogfQogCi12b2lkIE5ldHdvcmtT
b2NrZXRTdHJlYW06OmRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5k
bGUpCit2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OmRpZE9wZW5Tb2NrZXRTdHJlYW0oV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5k
bGUsICZoYW5kbGUgPT0gbV9pbXBsLnB0cigpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2Nr
ZXRTdHJlYW06OkRpZE9wZW5Tb2NrZXRTdHJlYW0oKSk7CiB9CiAKLXZvaWQgTmV0d29ya1NvY2tl
dFN0cmVhbTo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUp
Cit2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OmRpZENsb3NlU29ja2V0U3RyZWFtKFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxl
LCAmaGFuZGxlID09IG1faW1wbC5wdHIoKSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0
U3RyZWFtOjpEaWRDbG9zZVNvY2tldFN0cmVhbSgpKTsKIH0KIAotdm9pZCBOZXR3b3JrU29ja2V0
U3RyZWFtOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgTmV0d29ya1NvY2tl
dFN0cmVhbTo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlJiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChoYW5kbGUsICZoYW5kbGUgPT0gbV9pbXBsLnB0cigpKTsKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKElQ
Qzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwg
bGVuZ3RoKSkpOwpAQCAtOTYsMTMgKzk0LDEzIEBAIHZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6
ZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFtCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRGYWlsVG9SZWNlaXZlU29ja2V0
U3RyZWFtRGF0YSgpKTsKIH0KIAotdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRVcGRhdGVC
dWZmZXJlZEFtb3VudChTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgc2l6ZV90IGFtb3VudCkK
K3ZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIHNpemVfdCBhbW91bnQpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChoYW5kbGUsICZoYW5kbGUgPT0gbV9pbXBsLnB0cigpKTsKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGFtb3VudCkp
OwogfQogCi12b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OmRpZEZhaWxTb2NrZXRTdHJlYW0oU29j
a2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJiBlcnJvcikK
K3ZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkRmFpbFNvY2tldFN0cmVhbShXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgV2ViQ29yZTo6U29ja2V0U3RyZWFtRXJy
b3ImIGVycm9yKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCAmaGFuZGxlID09IG1faW1w
bC5wdHIoKSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRGYWlsU29j
a2V0U3RyZWFtKGVycm9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCmluZGV4IDVhYjdiYjVhMjNiMjk5NTk0NzI4MTc2YWZiMDgzZDM0NGFiZWM0OWMuLmM0Yzdl
MjFkNTViNThiMGM0NjllZGRhYTg2YjEwOWQyMjBiMmEzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0zNiwxMyArMzYsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1QaW5nTG9hZDo6UGluZ0xv
YWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK1BpbmdMb2FkOjpQaW5nTG9hZChOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9wYXJhbWV0ZXJz
KFdURk1vdmUocGFyYW1ldGVycykpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZQaW5nTG9h
ZDo6dGltZW91dFRpbWVyRmlyZWQpCi0gICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5p
cXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4oRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9w
dGlvbnN9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgV1RGTW92ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1
ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1l
dGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5
LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkpCisgICAgLCBtX25ldHdvcmtM
b2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4oV2ViQ29yZTo6RmV0
Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklE
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgV1RGTW92
ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFdlYkNvcmU6OlVSTCB7IG1f
cGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29w
eVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVz
dC5odHRwUmVmZXJyZXIoKSkpCiB7CiAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmVuYWJsZUNv
bnRlbnRFeHRlbnNpb25zQ2hlY2soKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNl
SGVhZGVycykKQEAgLTU1LDcgKzUzLDcgQEAgUGluZ0xvYWQ6OlBpbmdMb2FkKE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgV1RGOjpDb21wbGV0aW9uSGEKICAgICAv
LyBTZXQgYSB2ZXJ5IGdlbmVyb3VzIHRpbWVvdXQsIGp1c3QgaW4gY2FzZS4KICAgICBtX3RpbWVv
dXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiAKLSAgICBtX25ldHdvcmtMb2FkQ2hlY2tl
ci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QgfSwgbnVsbHB0
ciwgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CisgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNo
ZWNrKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0IH0sIG51
bGxwdHIsIFt0aGlzXSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNf
dmFsdWUoKSkgewogICAgICAgICAgICAgdGhpcy0+ZGlkRmluaXNoKHJlc3VsdC5lcnJvcigpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTczLDEzICs3MSwxMyBAQCBQaW5nTG9hZDo6flBpbmdM
b2FkKCkKICAgICB9CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZEZpbmlzaChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIFBp
bmdMb2FkOjpkaWRGaW5pc2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIG1fY29tcGxl
dGlvbkhhbmRsZXIoZXJyb3IsIHJlc3BvbnNlKTsKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9p
ZCBQaW5nTG9hZDo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3ZvaWQg
UGluZ0xvYWQ6OmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZCIpOwogICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lv
bihtX3BhcmFtZXRlcnMuc2Vzc2lvbklEKSkgewpAQCAtOTEsOSArODksOSBAQCB2b2lkIFBpbmdM
b2FkOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrUmVkaXJlY3Rpb24oUmVz
b3VyY2VSZXF1ZXN0IHsgfSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3Bv
bnNlKSwgbnVsbHB0ciwgW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBtX25ldHdvcmtMb2Fk
Q2hlY2tlci0+Y2hlY2tSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgeyB9LCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBudWxscHRyLCBbdGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgIHRoaXMtPmRp
ZEZpbmlzaChyZXN1bHQuZXJyb3IoKSk7CkBAIC0xMDMsNyArMTAxLDcgQEAgdm9pZCBQaW5nTG9h
ZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIFIKICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnByZXBhcmVSZWRpcmVj
dGVkUmVxdWVzdChyZXF1ZXN0KTsKIAogICAgICAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAgICAgICAgICB0aGlzLT5kaWRGaW5pc2goUmVzb3Vy
Y2VFcnJvciB7IFN0cmluZyB7IH0sIDAsIHJlcXVlc3QudXJsKCksICJSZWRpcmVjdGlvbiB0byBV
Ukwgd2l0aCBhIHNjaGVtZSB0aGF0IGlzIG5vdCBIVFRQKFMpIl9zLCBSZXNvdXJjZUVycm9yOjpU
eXBlOjpBY2Nlc3NDb250cm9sIH0pOworICAgICAgICAgICAgdGhpcy0+ZGlkRmluaXNoKFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgeyBTdHJpbmcgeyB9LCAwLCByZXF1ZXN0LnVybCgpLCAiUmVkaXJl
Y3Rpb24gdG8gVVJMIHdpdGggYSBzY2hlbWUgdGhhdCBpcyBub3QgSFRUUChTKSJfcywgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0xMTEsMzMgKzEwOSwzMyBAQCB2b2lkIFBpbmdMb2FkOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgUgogICAgIH0pOwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdl
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkUmVjZWl2ZUNoYWxsZW5nZSIpOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6Q2FuY2VsLCB7IH0pOwogICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgIHJldHVy
bjsKLSAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBjdXJyZW50VVJM
KCksICJGYWlsZWQgSFRUUCBhdXRoZW50aWNhdGlvbiJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
QWNjZXNzQ29udHJvbCB9KTsKKyAgICBkaWRGaW5pc2goV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7
IFN0cmluZygpLCAwLCBjdXJyZW50VVJMKCksICJGYWlsZWQgSFRUUCBhdXRoZW50aWNhdGlvbiJf
cywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKIH0KIAot
dm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbiAtIGh0dHBTdGF0dXNDb2RlOiAl
ZCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25v
cmUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3Jl
KTsKICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICByZXR1cm47CiAgICAgZGlkRmluaXNoKHsg
fSwgcmVzcG9uc2UpOwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFBpbmdMb2Fk
OjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQ29tcGxldGUiKTsKQEAgLTE1NCwyNCArMTUyLDI2IEBA
IHZvaWQgUGluZ0xvYWQ6OmRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUCiB2b2lkIFBpbmdMb2FkOjp3YXNCbG9ja2VkKCkKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3YXNCbG9ja2VkIik7Ci0gICAgZGlkRmluaXNo
KGJsb2NrZWRFcnJvcihSZXNvdXJjZVJlcXVlc3QgeyBjdXJyZW50VVJMKCkgfSkpOworICAgIGRp
ZEZpbmlzaChibG9ja2VkRXJyb3IoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHsgY3VycmVudFVS
TCgpIH0pKTsKIH0KIAogdm9pZCBQaW5nTG9hZDo6Y2Fubm90U2hvd1VSTCgpCiB7CiAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiY2Fubm90U2hvd1VSTCIpOwotICAgIGRpZEZpbmlzaChjYW5u
b3RTaG93VVJMRXJyb3IoUmVzb3VyY2VSZXF1ZXN0IHsgY3VycmVudFVSTCgpIH0pKTsKKyAgICBk
aWRGaW5pc2goY2Fubm90U2hvd1VSTEVycm9yKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCB7IGN1
cnJlbnRVUkwoKSB9KSk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OnRpbWVvdXRUaW1lckZpcmVkKCkK
IHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0aW1lb3V0VGltZXJGaXJlZCIpOwotICAg
IGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkxv
YWQgdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0IH0pOworICAgIGRp
ZEZpbmlzaChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJlbnRVUkwo
KSwgIkxvYWQgdGltZWQgb3V0Il9zLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1l
b3V0IH0pOwogfQogCi1jb25zdCBVUkwmIFBpbmdMb2FkOjpjdXJyZW50VVJMKCkgY29uc3QKK2Nv
bnN0IFdlYkNvcmU6OlVSTCYgUGluZ0xvYWQ6OmN1cnJlbnRVUkwoKSBjb25zdAogewogICAgIHJl
dHVybiBtX25ldHdvcmtMb2FkQ2hlY2tlci0+dXJsKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCA0MjFkZTM0NDE0ZjljYmQ2
NTdlNTBmMDFjMzg3Yzc0MGM3ZTM5OTMwLi4wZTUzZDM4MmZkYjUzODg2ZDA0NTFjNzNkNjZjMzg2
YzJhYTY3NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNv
bm5lY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcApAQCAtMzgsMTEgKzM4LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1QcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2so
TmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK1ByZWNv
bm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAsIG1fdGltZW91dFRpbWVyKFt0aGlzXSB7
IGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIG1fbmV0d29ya0xvYWQtPnBh
cmFtZXRlcnMoKS5yZXF1ZXN0LnVybCgpLCAiUHJlY29ubmVjdGlvbiB0aW1lZCBvdXQiX3MsIFJl
c291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7IH0pCisgICAgLCBtX3RpbWVvdXRUaW1lcihb
dGhpc10geyBkaWRGaW5pc2goV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBt
X25ldHdvcmtMb2FkLT5wYXJhbWV0ZXJzKCkucmVxdWVzdC51cmwoKSwgIlByZWNvbm5lY3Rpb24g
dGltZWQgb3V0Il9zLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0IH0pOyB9
KQogewogICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFByZWNvbm5lY3RUYXNrOjpQcmVj
b25uZWN0VGFzaygpIiwgdGhpcyk7CiAKQEAgLTYzLDI5ICs2MSwyOSBAQCBQcmVjb25uZWN0VGFz
azo6flByZWNvbm5lY3RUYXNrKCkKIHsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6d2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKK3Zv
aWQgUHJlY29ubmVjdFRhc2s6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWF1dG8gUHJlY29ubmVjdFRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYpIC0+IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlCithdXRvIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKSAtPiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBTaG91bGRDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCit2b2lkIFByZWNvbm5lY3RUYXNr
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiB7
CiAgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gUHJlY29ubmVjdFRhc2s6OmRpZEZpbmlz
aExvYWRpbmciLCB0aGlzKTsKICAgICBkaWRGaW5pc2goeyB9KTsKIH0KIAotdm9pZCBQcmVjb25u
ZWN0VGFzazo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lk
IFByZWNvbm5lY3RUYXNrOjpkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcikKIHsKICAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBQcmVjb25uZWN0
VGFzazo6ZGlkRmFpbExvYWRpbmcsIGVycm9yX2NvZGU6ICVkIiwgdGhpcywgZXJyb3IuZXJyb3JD
b2RlKCkpOwogICAgIGRpZEZpbmlzaChlcnJvcik7CkBAIC05Niw3ICs5NCw3IEBAIHZvaWQgUHJl
Y29ubmVjdFRhc2s6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUHJl
Y29ubmVjdFRhc2s6OmRpZEZpbmlzaChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQg
UHJlY29ubmVjdFRhc2s6OmRpZEZpbmlzaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgbV9jb21wbGV0
aW9uSGFuZGxlcihlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDY5MTU1
ZmYyMDkzMzFlNmIxZDVlM2ZkMjI1ZmZiMGU0YjUwN2I1ZDAuLmE4NTg1YjYzOTQ5NTFmY2ZiMzhk
OTgwMTIzNjZhZjE2NzZjOTQ4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC00
NCw4ICs0NCw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTsKIApAQCAtNTMsMTQgKzUxLDE0IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKIAotc3RhdGljIGlubGluZSBTdHJp
bmcgY29tcHV0ZUtleVVSTChjb25zdCBVUkwmIHVybCkKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGNv
bXB1dGVLZXlVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7Ci0gICAgVVJMIGtleVVSTCB7
IHVybCB9OworICAgIFdlYkNvcmU6OlVSTCBrZXlVUkwgeyB1cmwgfTsKICAgICBrZXlVUkwucmVt
b3ZlUXVlcnlBbmRGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICByZXR1cm4ga2V5VVJMLnN0cmlu
ZygpOwogfQogCi1zdGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50NjRfdD4gcXVlcnlDYWNoZShjb25z
dCBWZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+KiByZWNvcmRzLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiBvcHRpb25zKQorc3RhdGljIGlu
bGluZSBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5Q2FjaGUoY29uc3QgVmVjdG9yPFJlY29yZEluZm9y
bWF0aW9uPiogcmVjb3JkcywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAo
IXJlY29yZHMpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC03Niw3ICs3NCw3IEBAIHN0YXRpYyBp
bmxpbmUgVmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZv
cm1hdGlvbj4qIHJlY29yCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
dm9pZCB1cGRhdGVWYXJ5SW5mb3JtYXRpb24oUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9y
bWF0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQorc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZVZhcnlJbmZvcm1hdGlv
bihSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgYXV0byB2YXJ5VmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OlZhcnkpOwogICAgIGlmICh2YXJ5VmFsdWUuaXNO
dWxsKCkpIHsKQEAgLTg2LDcgKzg0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZVZhcnlJ
bmZvcm1hdGlvbihSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGMKICAgICB9
CiAKICAgICB2YXJ5VmFsdWUuc3BsaXQoJywnLCBbJl0oU3RyaW5nVmlldyB2aWV3KSB7Ci0gICAg
ICAgIGlmICghcmVjb3JkSW5mb3JtYXRpb24uaGFzVmFyeVN0YXIgJiYgc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVFRQU3BhY2VzKHZpZXcpID09ICIqIikKKyAgICAgICAgaWYgKCFyZWNvcmRJbmZv
cm1hdGlvbi5oYXNWYXJ5U3RhciAmJiBXZWJDb3JlOjpzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
VFBTcGFjZXModmlldykgPT0gIioiKQogICAgICAgICAgICAgcmVjb3JkSW5mb3JtYXRpb24uaGFz
VmFyeVN0YXIgPSB0cnVlOwogICAgICAgICBTdHJpbmcgaGVhZGVyTmFtZSA9IHZpZXcudG9TdHJp
bmcoKTsKICAgICAgICAgcmVjb3JkSW5mb3JtYXRpb24udmFyeUhlYWRlcnMuYWRkKGhlYWRlck5h
bWUsIHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkKGhlYWRlck5hbWUpKTsKQEAgLTI4Miw3ICsyODAs
NyBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZVJlY29yZChjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYg
cmVjb3JkLCBSZWY8UmVhZFJlY29yZFRhc2tDbwogICAgIH0pOwogfQogCi12b2lkIENhY2hlOjpy
ZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBDYWNoZTo6cmV0cmlldmVSZWNvcmRzKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBS
ZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6T3Blbik7CiAKQEAgLTMyMCw3ICszMTgsNyBAQCBSZWNvcmRJbmZvcm1hdGlvbiYgQ2FjaGU6
OmFkZFJlY29yZChWZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+KiByZWNvcmRzLCBjb25zdCBSZQog
ICAgIHJldHVybiByZWNvcmRzLT5sYXN0KCk7CiB9CiAKLVZlY3RvcjxSZWNvcmRJbmZvcm1hdGlv
bj4qIENhY2hlOjpyZWNvcmRzRnJvbVVSTChjb25zdCBVUkwmIHVybCkKK1ZlY3RvcjxSZWNvcmRJ
bmZvcm1hdGlvbj4qIENhY2hlOjpyZWNvcmRzRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCkKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZWNvcmRzLmZpbmQoY29tcHV0ZUtleVVSTCh1
cmwpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZWNvcmRzLmVuZCgpKQpAQCAtMzI4LDcgKzMy
Niw3IEBAIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIENhY2hlOjpyZWNvcmRzRnJvbVVSTChj
b25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gJml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotY29uc3Qg
VmVjdG9yPFJlY29yZEluZm9ybWF0aW9uPiogQ2FjaGU6OnJlY29yZHNGcm9tVVJMKGNvbnN0IFVS
TCYgdXJsKSBjb25zdAorY29uc3QgVmVjdG9yPFJlY29yZEluZm9ybWF0aW9uPiogQ2FjaGU6OnJl
Y29yZHNGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25zdAogewogICAgIGF1dG8g
aXRlcmF0b3IgPSBtX3JlY29yZHMuZmluZChjb21wdXRlS2V5VVJMKHVybCkpOwogICAgIGlmIChp
dGVyYXRvciA9PSBtX3JlY29yZHMuZW5kKCkpCkBAIC00MjQsNyArNDIyLDcgQEAgdm9pZCBDYWNo
ZTo6cHV0KFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFj
ayYmIGNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jYWNoZXMucmVx
dWVzdFNwYWNlKHNwYWNlUmVxdWlyZWQsIFtjYWNoZXMgPSBtYWtlUmVmKG1fY2FjaGVzKSwgaWRl
bnRpZmllciA9IG1faWRlbnRpZmllciwgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkVy
cm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlcy5yZXF1ZXN0U3BhY2Uoc3BhY2VS
ZXF1aXJlZCwgW2NhY2hlcyA9IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVu
dGlmaWVyLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+JiYg
ZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGNhbGxi
YWNrKG1ha2VVbmV4cGVjdGVkKGVycm9yLnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTU3Niw3ICs1NzQsNyBAQCBzdGQ6Om9wdGlvbmFsPENhY2hlOjpEZWNvZGVkUmVjb3JkPiBD
YWNoZTo6ZGVjb2RlUmVjb3JkSGVhZGVyKGNvbnN0IFN0b3JhZ2U6OlJlYwogICAgIGlmICghcmVj
b3JkLnJlcXVlc3QuZGVjb2RlV2l0aG91dFBsYXRmb3JtRGF0YShkZWNvZGVyKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICghRmV0Y2hPcHRpb25zOjpkZWNvZGVQZXJz
aXN0ZW50KGRlY29kZXIsIHJlY29yZC5vcHRpb25zKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZldGNo
T3B0aW9uczo6ZGVjb2RlUGVyc2lzdGVudChkZWNvZGVyLCByZWNvcmQub3B0aW9ucykpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlY29y
ZC5yZWZlcnJlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBh
NTYyMzQ1NWQ5YWYwZTQyNzIwZWM1YWUzM2JhZjQ3MTk1YzhhYjVhLi5hOTE3ZGU1MzNkNGFlNjYy
NWU5NTE4NWFhYmFmNTM4NTg4NDRiYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5jcHAKQEAgLTE2NiwzICsxNjYsNSBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246OmVuZ2luZVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRAogfQog
CiB9CisKKyN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAKaW5kZXggYTQyYTUxYmNjN2JjNTFjYmExZDk0YWIwOTQ1OTY5YjRmYWI5
ZTdlNC4uY2Q4YzBiODE0YjMzODM0NDk0MDg4YmJjMWNmMzQwYjVlY2JlNTJjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMzksMjMgKzM5LDIxIEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hl
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBjYWNoZUVudHJ5Rm9y
VmFsaWRhdGlvbiwgUmV2YWxpZGF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKK1NwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29u
c3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gY2FjaGVFbnRy
eUZvclZhbGlkYXRpb24sIFJldmFsaWRhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgOiBtX2NhY2hlKGNhY2hlKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQp
CiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQog
ICAgICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkKLSAgICAsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKICAgICAsIG1fY2FjaGVFbnRyeShX
VEZNb3ZlKGNhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVF
bnRyeSB8fCBtX2NhY2hlRW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKIAogICAgIE5ldHdvcmtM
b2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLSAgICBwYXJhbWV0ZXJzLnN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKLSAgICBwYXJh
bWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6RG9O
b3RTbmlmZkNvbnRlbnQ7Ci0gICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKKyAgICBwYXJhbWV0
ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OlVzZTsKKyAgICBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IFdlYkNv
cmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7CisgICAgcGFyYW1l
dGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IFdlYkNvcmU6OkNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBtX29y
aWdpbmFsUmVxdWVzdDsKICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3
b3JrTG9hZD4oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycyksICpTZXNzaW9uVHJhY2tlcjo6bmV0
d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQpAQCAt
NjUsNyArNjMsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVjdWxhdGl2ZUxvYWQoKQogICAgIEFT
U0VSVCghbV9uZXR3b3JrTG9hZCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlKQogewogICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICJT
cGVjdWxhdGl2ZSByZWRpcmVjdCAlcyAtPiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCkBAIC03OCw3ICs3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291CiAgICAgZGlkQ29t
cGxldGUoKTsKIH0KIAotYXV0byBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UKK2F1dG8gU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UpIC0+IFNob3VsZENv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlCiB7CiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVz
cG9uc2U7CiAKQEAgLTk0LDcgKzkyLDcgQEAgYXV0byBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkgLT4KICAgICBy
ZXR1cm4gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllczsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5
KTsKIApAQCAtMTE1LDE0ICsxMTMsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAoIW1f
Y2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIG1fY2FjaGVF
bnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsK
ICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0
b3JlLgotICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVC
eURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKKyAgICAgICAgaWYgKCFtX2Nh
Y2hlRW50cnkgJiYgV2ViQ29yZTo6aXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCiAgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2Nh
Y2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9y
JikKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikKIHsKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKaW5kZXgg
NmI5YWFkZWU1OWViMGRjMDQ1YTQyYzg1NmY4OGQzMGQ1ZDhiZmI2My4uNzc3NWViMDU3YzE1ZTgw
ZDhiYzQ5YmZiMWJkNDJlMzY3MjAyNWFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuY3BwCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KIHN0YXRpYyBjb25zdCBTZWNvbmRzIHByZWxvYWRlZEVudHJ5TGlmZXRpbWUgeyAxMF9zIH07
CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC04NSw5ICs4Myw5IEBAIHN0YXRpYyBpbmxpbmUgS2V5
IG1ha2VTdWJyZXNvdXJjZXNLZXkoY29uc3QgS2V5JiByZXNvdXJjZUtleSwgY29uc3QgU2FsdCYg
c2FsdCkKICAgICByZXR1cm4gS2V5KHJlc291cmNlS2V5LnBhcnRpdGlvbigpLCBzdWJyZXNvdXJj
ZXNUeXBlKCksIHJlc291cmNlS2V5LnJhbmdlKCksIHJlc291cmNlS2V5LmlkZW50aWZpZXIoKSwg
c2FsdCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVzb3VyY2VSZXF1ZXN0IGNvbnN0cnVjdFJldmFs
aWRhdGlvblJlcXVlc3QoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3Vi
UmVzb3VyY2VJbmZvLCBjb25zdCBFbnRyeSogZW50cnkpCitzdGF0aWMgaW5saW5lIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCBjb25zdHJ1Y3RSZXZhbGlkYXRpb25SZXF1ZXN0KGNvbnN0IEtleSYg
a2V5LCBjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YlJlc291cmNlSW5mbywgY29uc3QgRW50cnkq
IGVudHJ5KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0KGtleS5p
ZGVudGlmaWVyKCkpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXZhbGlkYXRpb25S
ZXF1ZXN0KGtleS5pZGVudGlmaWVyKCkpOwogICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkcyhzdWJSZXNvdXJjZUluZm8ucmVxdWVzdEhlYWRlcnMoKSk7CiAgICAgcmV2
YWxpZGF0aW9uUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhzdWJSZXNvdXJjZUluZm8u
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJc1Nh
bWVTaXRlKHN1YlJlc291cmNlSW5mby5pc1NhbWVTaXRlKCkpOwpAQCAtOTgsMTMgKzk2LDEzIEBA
IHN0YXRpYyBpbmxpbmUgUmVzb3VyY2VSZXF1ZXN0IGNvbnN0cnVjdFJldmFsaWRhdGlvblJlcXVl
c3QoY29uc3QgS2V5JiBrZXksIGNvbnN0CiAgICAgCiAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5t
YWtlVW5jb25kaXRpb25hbCgpOwogICAgIGlmIChlbnRyeSkgewotICAgICAgICBTdHJpbmcgZVRh
ZyA9IGVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6RVRh
Zyk7CisgICAgICAgIFN0cmluZyBlVGFnID0gZW50cnktPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZp
ZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpFVGFnKTsKICAgICAgICAgaWYgKCFlVGFnLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk5vbmVNYXRjaCwgZVRhZyk7CisgICAgICAgICAgICByZXZh
bGlkYXRpb25SZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFt
ZTo6SWZOb25lTWF0Y2gsIGVUYWcpOwogCi0gICAgICAgIFN0cmluZyBsYXN0TW9kaWZpZWQgPSBl
bnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Okxhc3RNb2Rp
ZmllZCk7CisgICAgICAgIFN0cmluZyBsYXN0TW9kaWZpZWQgPSBlbnRyeS0+cmVzcG9uc2UoKS5o
dHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6Okxhc3RNb2RpZmllZCk7CiAg
ICAgICAgIGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldmFsaWRh
dGlvblJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1vZGlmaWVk
U2luY2UsIGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6SWZNb2RpZmllZFNpbmNl
LCBsYXN0TW9kaWZpZWQpOwogICAgIH0KICAgICAKICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNl
dFByaW9yaXR5KHN1YlJlc291cmNlSW5mby5wcmlvcml0eSgpKTsKQEAgLTExMiw3ICsxMTAsNyBA
QCBzdGF0aWMgaW5saW5lIFJlc291cmNlUmVxdWVzdCBjb25zdHJ1Y3RSZXZhbGlkYXRpb25SZXF1
ZXN0KGNvbnN0IEtleSYga2V5LCBjb25zdAogICAgIHJldHVybiByZXZhbGlkYXRpb25SZXF1ZXN0
OwogfQogCi1zdGF0aWMgYm9vbCByZXNwb25zZU5lZWRzUmV2YWxpZGF0aW9uKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3RhbXApCitzdGF0aWMgYm9vbCBy
ZXNwb25zZU5lZWRzUmV2YWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBXYWxsVGltZSB0aW1lc3RhbXApCiB7CiAgICAgaWYgKHJlc3BvbnNlLmNhY2hl
Q29udHJvbENvbnRhaW5zTm9DYWNoZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzMiwx
MyArMTMwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVGltZXIgbV9saWZl
dGltZVRpbWVyOworICAgIFdlYkNvcmU6OlRpbWVyIG1fbGlmZXRpbWVUaW1lcjsKIH07CiAKIGNs
YXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlByZWxvYWRlZEVudHJ5IDogcHJpdmF0ZSBFeHBp
cmluZ0VudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQ
cmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBzdGQ6Om9wdGlvbmFs
PFJlc291cmNlUmVxdWVzdD4mJiBzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBsaWZldGltZVJlYWNoZWRIYW5kbGVyKQorICAgIFByZWxvYWRlZEVu
dHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0PiYmIHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpCiAgICAgICAgIDogRXhwaXJp
bmdFbnRyeShXVEZNb3ZlKGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpKQogICAgICAgICAsIG1fZW50
cnkoV1RGTW92ZShlbnRyeSkpCiAgICAgICAgICwgbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1
ZXN0KFdURk1vdmUoc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdCkpCkBAIC0xNTAsMTIgKzE0
OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fZW50cnkpOwogICAgIH0K
IAotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYgcmV2YWxpZGF0aW9u
UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsg
fQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmV2
YWxpZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9u
UmVxdWVzdDsgfQogICAgIGJvb2wgd2FzUmV2YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1f
c3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsgfQogCiBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gbV9lbnRyeTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVz
dD4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBtX3NwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3Q7CiB9
OwogCiBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGVuZGluZ0ZyYW1lTG9hZD4gewpAQCAtMTcxLDcgKzE2OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZGlkUmV0cmlldmVFeGlzdGluZ0VudHJ5KTsKICAgICB9
CiAKLSAgICB2b2lkIHJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkKKyAgICB2b2lkIHJlZ2lzdGVy
U3VicmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkKICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgICAgIG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNlS2V5KSk7CkBAIC0y
NTgsNyArMjU2LDcgQEAgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6flNwZWN1bGF0aXZlTG9hZE1h
bmFnZXIoKQogCiAjaWYgIUxPR19ESVNBQkxFRAogCi1zdGF0aWMgdm9pZCBkdW1wSFRUUEhlYWRl
cnNEaWZmKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnNBLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiBoZWFkZXJzQikKK3N0YXRpYyB2b2lkIGR1bXBIVFRQSGVhZGVyc0RpZmYoY29uc3QgV2ViQ29y
ZTo6SFRUUEhlYWRlck1hcCYgaGVhZGVyc0EsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAm
IGhlYWRlcnNCKQogewogICAgIGF1dG8gYUVuZCA9IGhlYWRlcnNBLmVuZCgpOwogICAgIGZvciAo
YXV0byBpdCA9IGhlYWRlcnNBLmJlZ2luKCk7IGl0ICE9IGFFbmQ7ICsraXQpIHsKQEAgLTI3Nywx
MCArMjc1LDEwIEBAIHN0YXRpYyB2b2lkIGR1bXBIVFRQSGVhZGVyc0RpZmYoY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVyc0EsIGNvbnN0IEhUVFBIZWFkZXJNCiAKICNlbmRpZgogCi1zdGF0aWMg
Ym9vbCByZXF1ZXN0c0hlYWRlcnNNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHNwZWN1bGF0
aXZlVmFsaWRhdGlvblJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYWN0dWFsUmVxdWVz
dCkKK3N0YXRpYyBib29sIHJlcXVlc3RzSGVhZGVyc01hdGNoKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxSZXF1ZXN0KQogewogICAgIEFTU0VSVCghYWN0dWFsUmVx
dWVzdC5pc0NvbmRpdGlvbmFsKCkpOwotICAgIFJlc291cmNlUmVxdWVzdCBzcGVjdWxhdGl2ZVJl
cXVlc3QgPSBzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0OworICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBzcGVjdWxhdGl2ZVJlcXVlc3QgPSBzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1
ZXN0OwogICAgIHNwZWN1bGF0aXZlUmVxdWVzdC5tYWtlVW5jb25kaXRpb25hbCgpOwogCiAgICAg
aWYgKHNwZWN1bGF0aXZlUmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkgIT0gYWN0dWFsUmVxdWVz
dC5odHRwSGVhZGVyRmllbGRzKCkpIHsKQEAgLTI5Myw3ICsyOTEsNyBAQCBzdGF0aWMgYm9vbCBy
ZXF1ZXN0c0hlYWRlcnNNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHNwZWN1bGF0aXZlVmFs
aWRhdGlvblJlcQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI6OmNhblVzZVByZWxvYWRlZEVudHJ5KGNvbnN0IFByZWxvYWRlZEVudHJ5JiBlbnRyeSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxSZXF1ZXN0KQorYm9vbCBTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyOjpjYW5Vc2VQcmVsb2FkZWRFbnRyeShjb25zdCBQcmVsb2FkZWRFbnRyeSYgZW50
cnksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgYWN0dWFsUmVxdWVzdCkKIHsKICAg
ICBpZiAoIWVudHJ5Lndhc1JldmFsaWRhdGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MzAyLDcgKzMwMCw3IEBAIGJvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6Y2FuVXNlUHJlbG9h
ZGVkRW50cnkoY29uc3QgUHJlbG9hZGVkRW50cnkmIGVudHJ5LCBjCiAgICAgcmV0dXJuIHJlcXVl
c3RzSGVhZGVyc01hdGNoKCplbnRyeS5yZXZhbGlkYXRpb25SZXF1ZXN0KCksIGFjdHVhbFJlcXVl
c3QpOwogfQogCi1ib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmNhblVzZVBlbmRpbmdQcmVs
b2FkKGNvbnN0IFNwZWN1bGF0aXZlTG9hZCYgbG9hZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBh
Y3R1YWxSZXF1ZXN0KQorYm9vbCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpjYW5Vc2VQZW5kaW5n
UHJlbG9hZChjb25zdCBTcGVjdWxhdGl2ZUxvYWQmIGxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgYWN0dWFsUmVxdWVzdCkKIHsKICAgICByZXR1cm4gcmVxdWVzdHNIZWFkZXJz
TWF0Y2gobG9hZC5vcmlnaW5hbFJlcXVlc3QoKSwgYWN0dWFsUmVxdWVzdCk7CiB9CkBAIC0zMTMs
MTIgKzMxMSwxMiBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmNhblJldHJpZXZlKGNv
bnN0IEtleSYgc3RvcmFnZUtleSwgY29uc3QgV2ViQ29yZTo6UgogICAgIGlmIChhdXRvIHByZWxv
YWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRFbnRyaWVzLmdldChzdG9yYWdlS2V5KSkgewogICAgICAg
ICBpZiAoIWNhblVzZVByZWxvYWRlZEVudHJ5KCpwcmVsb2FkZWRFbnRyeSwgcmVxdWVzdCkpIHsK
ICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0
d29ya1Byb2Nlc3MpIFJldHJpZXZhbDogQ291bGQgbm90IHVzZSBwcmVsb2FkZWQgZW50cnkgdG8g
c2F0aXNmeSByZXF1ZXN0IGZvciAnJXMnIGR1ZSB0byBIVFRQIGhlYWRlcnMgbWlzbWF0Y2g6Iiwg
c3RvcmFnZUtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsb2dT
cGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBwcmVsb2FkZWRFbnRy
eS0+d2FzUmV2YWxpZGF0ZWQoKSA/IERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3BlY3Vs
YXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkgOiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6
Ondhc3RlZFNwZWN1bGF0aXZlV2FybXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpKTsKKyAgICAg
ICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1lSUQsIHBy
ZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpID8gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjp3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25LZXkoKSA6IFdl
YkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3BlY3VsYXRpdmVXYXJtdXBXaXRo
b3V0UmV2YWxpZGF0aW9uS2V5KCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihO
ZXR3b3JrUHJvY2VzcykgUmV0cmlldmFsOiBVc2luZyBwcmVsb2FkZWQgZW50cnkgdG8gc2F0aXNm
eSByZXF1ZXN0IGZvciAnJXMnOiIsIHN0b3JhZ2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFt
ZUlELCBwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSA/IERpYWdub3N0aWNMb2dnaW5n
S2V5czo6c3VjY2Vzc2Z1bFNwZWN1bGF0aXZlV2FybXVwV2l0aFJldmFsaWRhdGlvbktleSgpIDog
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBXaXRob3V0
UmV2YWxpZGF0aW9uS2V5KCkpOworICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9z
dGljTWVzc2FnZShmcmFtZUlELCBwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSA/IFdl
YkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c3VjY2Vzc2Z1bFNwZWN1bGF0aXZlV2FybXVw
V2l0aFJldmFsaWRhdGlvbktleSgpIDogV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpz
dWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBXaXRob3V0UmV2YWxpZGF0aW9uS2V5KCkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMyNiwxNiArMzI0LDE2IEBAIGJvb2wgU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6Y2FuUmV0cmlldmUoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBj
b25zdCBXZWJDb3JlOjpSCiAgICAgYXV0byogcGVuZGluZ1ByZWxvYWQgPSBtX3BlbmRpbmdQcmVs
b2Fkcy5nZXQoc3RvcmFnZUtleSk7CiAgICAgaWYgKCFwZW5kaW5nUHJlbG9hZCkgewogICAgICAg
ICBpZiAobV9ub3RQcmVsb2FkZWRFbnRyaWVzLmdldChzdG9yYWdlS2V5KSkKLSAgICAgICAgICAg
IGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1lSUQsIERpYWdub3N0
aWNMb2dnaW5nS2V5czo6ZW50cnlXcm9uZ2x5Tm90V2FybWVkVXBLZXkoKSk7CisgICAgICAgICAg
ICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5V3JvbmdseU5vdFdhcm1lZFVwS2V5KCkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGlj
TWVzc2FnZShmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnVua25vd25FbnRyeVJlcXVl
c3RLZXkoKSk7CisgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVz
c2FnZShmcmFtZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnVua25vd25FbnRy
eVJlcXVlc3RLZXkoKSk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlm
ICghY2FuVXNlUGVuZGluZ1ByZWxvYWQoKnBlbmRpbmdQcmVsb2FkLCByZXF1ZXN0KSkgewogICAg
ICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9j
ZXNzKSBSZXRyaWV2YWw6IHJldmFsaWRhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzIGZvciAnJXMn
IGJ1dCB1bnVzYWJsZSBkdWUgdG8gSFRUUCBoZWFkZXJzIG1pc21hdGNoOiIsIHN0b3JhZ2VLZXku
aWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRp
bmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Ondhc3Rl
ZFNwZWN1bGF0aXZlV2FybXVwV2l0aFJldmFsaWRhdGlvbktleSgpKTsKKyAgICAgICAgbG9nU3Bl
Y3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjp3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25L
ZXkoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTM2MCwxNyArMzU4LDE3
IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUoY29uc3QgS2V5JiBzdG9y
YWdlS2V5LCBSZXRyaWV2ZUNvbXBsZXRpb25ICiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS0+YXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJ
RCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHJlc291cmNlS2V5
KQordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFs
RnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBLZXkmIHJlc291cmNlS2V5KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgQVNTRVJUKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsK
IAogICAgIGlmIChyZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIikKICAgICAgICAgcmV0dXJu
OwotICAgIGlmICghcmVxdWVzdC5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdl
KS5pc0VtcHR5KCkpCisgICAgaWYgKCFyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZChXZWJDb3JlOjpI
VFRQSGVhZGVyTmFtZTo6UmFuZ2UpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBpc01haW5SZXNvdXJjZSA9IHJlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1
ZXN0OjpSZXF1ZXN0ZXI6Ok1haW47CisgICAgYXV0byBpc01haW5SZXNvdXJjZSA9IHJlcXVlc3Qu
cmVxdWVzdGVyKCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW47
CiAgICAgaWYgKGlzTWFpblJlc291cmNlKSB7CiAgICAgICAgIC8vIE1hcmsgcHJldmlvdXMgbG9h
ZCBpbiB0aGlzIGZyYW1lIGFzIGNvbXBsZXRlZCBpZiBuZWNlc3NhcnkuCiAgICAgICAgIGlmIChh
dXRvKiBwZW5kaW5nRnJhbWVMb2FkID0gbV9wZW5kaW5nRnJhbWVMb2Fkcy5nZXQoZnJhbWVJRCkp
CkBAIC0zOTksNyArMzk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3Rl
ckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgUmUKICAgICAgICAgcGVu
ZGluZ0ZyYW1lTG9hZC0+cmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQocmVxdWVzdCwgcmVzb3VyY2VL
ZXkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5
KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVlc3Qp
Cit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVlc3Qp
CiB7CiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRp
b24oKSk7CkBAIC00MDgsOSArNDA2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjph
ZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb24KICAgICAg
ICAgYXV0byBwcmVsb2FkZWRFbnRyeSA9IG1fcHJlbG9hZGVkRW50cmllcy50YWtlKGtleSk7CiAg
ICAgICAgIEFTU0VSVChwcmVsb2FkZWRFbnRyeSk7CiAgICAgICAgIGlmIChwcmVsb2FkZWRFbnRy
eS0+d2FzUmV2YWxpZGF0ZWQoKSkKLSAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0Rp
YWdub3N0aWNNZXNzYWdlKGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3Bl
Y3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkpOworICAgICAgICAgICAgbG9nU3Bl
Y3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjp3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25L
ZXkoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0Rp
YWdub3N0aWNNZXNzYWdlKGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3Bl
Y3VsYXRpdmVXYXJtdXBXaXRob3V0UmV2YWxpZGF0aW9uS2V5KCkpOworICAgICAgICAgICAgbG9n
U3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjp3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRSZXZhbGlk
YXRpb25LZXkoKSk7CiAgICAgfSkpOwogfQogCkBAIC00NjQsNyArNDYyLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3Vy
Y2VJbmZvJiBzdWJyZXMKICAgICBpZiAoIWtleS5yYW5nZSgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBjb25z
dHJ1Y3RSZXZhbGlkYXRpb25SZXF1ZXN0KGtleSwgc3VicmVzb3VyY2VJbmZvLCBlbnRyeS5nZXQo
KSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBj
b25zdHJ1Y3RSZXZhbGlkYXRpb25SZXF1ZXN0KGtleSwgc3VicmVzb3VyY2VJbmZvLCBlbnRyeS5n
ZXQoKSk7CiAKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5l
dHdvcmtQcm9jZXNzKSBTcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGluZyAnJXMnOiIsIGtleS5pZGVu
dGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTQ3Nyw3ICs0NzUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJj
ZUluZm8mIHN1YnJlcwogCiAgICAgICAgIGlmIChzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGtleSwg
cmV2YWxpZGF0ZWRFbnRyeS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChyZXZhbGlkYXRlZEVu
dHJ5KQotICAgICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNz
YWdlKGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6c3VjY2Vzc2Z1bFNwZWN1bGF0aXZl
V2FybXVwV2l0aFJldmFsaWRhdGlvbktleSgpKTsKKyAgICAgICAgICAgICAgICBsb2dTcGVjdWxh
dGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OnN1Y2Nlc3NmdWxTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25L
ZXkoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNTM3LDcgKzUzNSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlbG9hZEVudHJ5KGNvbnN0IEtleSYg
a2V5LCBjb25zdCBTdWJyZXNvdXJjZUluZm8mCiAKICAgICAgICAgaWYgKHNhdGlzZnlQZW5kaW5n
UmVxdWVzdHMoa2V5LCBlbnRyeS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChlbnRyeSkKLSAg
ICAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFt
ZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnN1Y2Nlc3NmdWxTcGVjdWxhdGl2ZVdhcm11cFdp
dGhvdXRSZXZhbGlkYXRpb25LZXkoKSk7CisgICAgICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVM
b2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBXaXRob3V0UmV2YWxpZGF0aW9uS2V5
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNTYwLDcg
KzU1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBmCiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJv
Y2VzcykgTm90IHByZWxvYWRpbmcgJyVzJyBiZWNhdXNlIGl0IGlzIG1hcmtlZCBhcyB0cmFuc2ll
bnQiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgbV9ub3RQ
cmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8RXhwaXJpbmdFbnRyeT4o
W3RoaXMsIGtleSwgZnJhbWVJRF0gewotICAgICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9h
ZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZW50
cnlSaWdodGx5Tm90V2FybWVkVXBLZXkoKSk7CisgICAgICAgICAgICAgICAgbG9nU3BlY3VsYXRp
dmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjplbnRyeVJpZ2h0bHlOb3RXYXJtZWRVcEtleSgpKTsKICAgICAgICAgICAgICAg
ICBtX25vdFByZWxvYWRlZEVudHJpZXMucmVtb3ZlKGtleSk7CiAgICAgICAgICAgICB9KSk7CiAg
ICAgICAgIH0KQEAgLTU3MSw3ICs1NjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6
OnJldHJpZXZlU3VicmVzb3VyY2VzRW50cnkoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBXVAogewog
ICAgIEFTU0VSVChzdG9yYWdlS2V5LnR5cGUoKSA9PSAiUmVzb3VyY2UiKTsKICAgICBhdXRvIHN1
YnJlc291cmNlc1N0b3JhZ2VLZXkgPSBtYWtlU3VicmVzb3VyY2VzS2V5KHN0b3JhZ2VLZXksIG1f
c3RvcmFnZS5zYWx0KCkpOwotICAgIG1fc3RvcmFnZS5yZXRyaWV2ZShzdWJyZXNvdXJjZXNTdG9y
YWdlS2V5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzb3VyY2VMb2FkUHJpb3JpdHk6Ok1lZGl1
bSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
IHJlY29yZCwgYXV0byB0aW1pbmdzKSB7CisgICAgbV9zdG9yYWdlLnJldHJpZXZlKHN1YnJlc291
cmNlc1N0b3JhZ2VLZXksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihXZWJDb3JlOjpSZXNvdXJjZUxv
YWRQcmlvcml0eTo6TWVkaXVtKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKGF1dG8gcmVjb3JkLCBhdXRvIHRpbWluZ3MpIHsKICAgICAgICAgaWYgKCFy
ZWNvcmQpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCBkNjc5
Y2QzNTY2NDE2NjNiYWM0NzViZDk1MzZjYTA1MDVhNDM5OTk2Li44MTgzOTU3NmQxYTJkMDMzMDMz
N2EwZDYxNmQxYmVkMGE4NjFlZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcApAQCAt
NTgyLDQgKzU4Miw2IEBAIGJvb2wgTWFuYWdlcjo6Z2V0V29yZCh1aW50OF90IGNvbnN0IComIHAs
IHVpbnQ4X3QgY29uc3QgKiBjb25zdCBlbmQsIFN0cmluZyYgd29yCiB9IC8vIG5hbWVzcGFjZSBO
ZXR3b3JrQ2FwdHVyZQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKyN1bmRlZiBERUJVR19DTEFT
UworCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FQVFVSRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJl
Y29yZGVyLmNwcAppbmRleCBlOTA2MjBmMGYyY2E3ZmY0YjdiOGY4ZjdkY2ZhNDc4YWI2ZTg5NGJk
Li41MWJkZjM2OTk1NzgwZTlkZDAxZTBhOWRjMzgzOGU0YTAyZmNmNTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlUmVjb3JkZXIuY3BwCkBAIC0xNTMsNCArMTUzLDYgQEAgdm9pZCBSZWNvcmRlcjo6d3Jp
dGVFdmVudHMoKQogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhcHR1cmUKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCisjdW5kZWYgREVCVUdfQ0xBU1MKKwogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X0NBUFRVUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXBsYXllci5jcHAKaW5kZXggYTA0YWY2OWM3ZDNh
Mzg4ZDRmM2NhNjgwZjgxNWVkOGRlZWM2ZDQ3OC4uOTZkYzVmMmU3Zjk5MzA5OTZmZWNkMGNiNGZm
MTEyODE5YzQ1NmRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlUmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlcGxheWVyLmNwcApAQCAtNDgsNCAr
NDgsNiBAQCBSZWY8TmV0d29ya0RhdGFUYXNrPiBSZXBsYXllcjo6cmVwbGF5UmVzb3VyY2UoTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYQogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0Nh
cHR1cmUKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCisjdW5kZWYgREVCVUdfQ0xBU1MKKwogI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX0NBUFRVUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0RhdGFUYXNrUmVwbGF5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3Bw
CmluZGV4IDY3YzRiYjgzYTU1MWU2ZDc0ODAyNDAwZjFjOGRlYmRmY2I0ZmYwNTUuLjNkYjc3ZTcz
MmM1ZDlhMDA0Y2U5YTk1YzY3NDkzZThmMzNmYTkzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBs
YXkuY3BwCkBAIC0yODgsNCArMjg4LDYgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tSZXBsYXk6OmRp
ZEZpbmlzaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIH0gLy8gbmFtZXNw
YWNlIE5ldHdvcmtDYXB0dXJlCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorI3VuZGVmIERFQlVH
X0NMQVNTCisKICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQVBUVVJFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0KaW5kZXggM2M2MTU0ZmFkZjM5MWRiMTdjODYxMjcxOTJjNWNhYWRmZGQ1YjkwOC4uZjJj
YzczMzU5M2NhZGMwNWNmNDYzMDdlNjgyMGY0YjkyMDQ2OTQxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCkBAIC00Nyw3ICs0Nyw3IEBACiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogQGludGVyZmFjZSBOU1VS
TFNlc3Npb25UYXNrIChTdGFnaW5nKQotQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZHdyaXRlLCBy
ZXRhaW4pIE5TVVJMICpfc2l0ZUZvckNvb2tpZXM7CitAcHJvcGVydHkgKHJlYWR3cml0ZSwgcmV0
YWluKSBOU1VSTCAqX3NpdGVGb3JDb29raWVzOwogQHByb3BlcnR5IChyZWFkd3JpdGUpIEJPT0wg
X2lzVG9wTGV2ZWxOYXZpZ2F0aW9uOwogQGVuZAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5k
ZXggNzg2ZjZiNmY2M2M1NjM3NDE5ZjlkYjkwY2YyNzg0NDY0Y2UxMmVkOC4uZDFlOWEzN2M4ZWQx
MzhiOTRlNTM5YzlhNjJhOTg0ODVmMTIwZmM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNTYs
NyArNTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAjaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKIEBp
bnRlcmZhY2UgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAoV0tTdGFnaW5nKQotQHByb3BlcnR5
IChudWxsYWJsZSwgY29weSkgTlNTZXQgKl9zdXBwcmVzc2VkQXV0b0FkZGVkSFRUUEhlYWRlcnM7
CitAcHJvcGVydHkgKGNvcHkpIE5TU2V0ICpfc3VwcHJlc3NlZEF1dG9BZGRlZEhUVFBIZWFkZXJz
OwogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDApCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSByZGFyOi8vcHJv
YmxlbS80MDY1MDI0NCBpcyBpbiBhIGJ1aWxkLgogQHByb3BlcnR5IChjb3B5KSBOU0RpY3Rpb25h
cnkgKl9zb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0YXRpYyBX
ZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5IHRvTmV0d29ya0xvYWRQcmlvcml0eShmbG9hdCBw
cmlvcml0eSkKICAgICByZXR1cm4gX3Nlc3Npb24tPmRhdGFUYXNrRm9ySWRlbnRpZmllcih0YXNr
LnRhc2tJZGVudGlmaWVyLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiB9CiAKLS0gKHZvaWQp
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkaWRCZWNvbWVJbnZhbGlkV2l0aEVy
cm9yOihudWxsYWJsZSBOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxT
ZXNzaW9uICopc2Vzc2lvbiBkaWRCZWNvbWVJbnZhbGlkV2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3IKIHsKICAgICBBU1NFUlQoIV9zZXNzaW9uKTsKIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0
aWMgTlNVUkxSZXF1ZXN0KiB1cGRhdGVJZ25vcmVTdHJpY3RUcmFuc3BvcnRTZWN1cml0eVNldHRp
bmdJZk5lY2Vzc2FyeShOU1VSTAogICAgIH0KIH0KIAotLSAodm9pZClVUkxTZXNzaW9uOihOU1VS
TFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGFU
YXNrIHdpbGxDYWNoZVJlc3BvbnNlOihOU0NhY2hlZFVSTFJlc3BvbnNlICopcHJvcG9zZWRSZXNw
b25zZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNDYWNoZWRVUkxSZXNwb25zZSAqIF9O
dWxsYWJsZSBjYWNoZWRSZXNwb25zZSkpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKilkYXRhVGFzayB3aWxsQ2FjaGVSZXNwb25zZTooTlNDYWNoZWRVUkxSZXNwb25zZSAqKXBy
b3Bvc2VkUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQ2FjaGVkVVJMUmVz
cG9uc2UgKmNhY2hlZFJlc3BvbnNlKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGlmICghX3Nl
c3Npb24pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KaW5kZXgg
NjI5ZTFmM2NkYWU5YmZkNDg0YTQyZjA5MWZiZGEwYjA3MTVlMGMzMS4uZDU1YTY4ZDYwZWIzNjJl
MTBkNzBjYTAzMDhiYTNlYzI3NjQzNTI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KQEAgLTQwLDggKzQwLDYgQEAK
IAogI2RlZmluZSBFTkFCTEVfTUFOVUFMX05FVFdPUktfU0FOREJPWElORyAwCiAKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya1Byb2Nlc3NNYWMubW0KaW5kZXggYmQ3YTI0ZThhYmU3YTZmZjRjZGU5YTk5Y2I1MzM5
Yjg3ZmM3M2Q0Ni4uYTU1NWRlZDFjODdkMjM5NDM5NzdkOGU1YzRjNGE4ZThhMzMwMmE4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW0KQEAgLTQ3LDggKzQ3LDYgQEAKICNpbXBvcnQgPHd0Zi9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYpCkBAIC03MCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lzdGVtUHJveGll
cyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3QgU3RyaW5nJiBodHRwc1ByCiAgICAgTlNN
dXRhYmxlRGljdGlvbmFyeSAqcHJveHlTZXR0aW5ncyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnldOwogCiAgICAgaWYgKCFodHRwUHJveHkuaXNOdWxsKCkpIHsKLSAgICAgICAgVVJM
IGh0dHBQcm94eVVSTChVUkwoKSwgaHR0cFByb3h5KTsKKyAgICAgICAgV2ViQ29yZTo6VVJMIGh0
dHBQcm94eVVSTChXZWJDb3JlOjpVUkwoKSwgaHR0cFByb3h5KTsKICAgICAgICAgaWYgKGh0dHBQ
cm94eVVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIFtwcm94eVNldHRpbmdzIHNldE9iamVj
dDpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGh0dHBQcm94eVVSTC5ob3N0KCkudG9TdHJpbmco
KSkgZm9yS2V5OihOU1N0cmluZyAqKWtDRk5ldHdvcmtQcm94aWVzSFRUUFByb3h5XTsKICAgICAg
ICAgICAgIGlmIChodHRwUHJveHlVUkwucG9ydCgpKSB7CkBAIC04Myw3ICs4MSw3IEBAIHN0YXRp
YyB2b2lkIG92ZXJyaWRlU3lzdGVtUHJveGllcyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29u
c3QgU3RyaW5nJiBodHRwc1ByCiAgICAgfQogCiAgICAgaWYgKCFodHRwc1Byb3h5LmlzTnVsbCgp
KSB7Ci0gICAgICAgIFVSTCBodHRwc1Byb3h5VVJMKFVSTCgpLCBodHRwc1Byb3h5KTsKKyAgICAg
ICAgV2ViQ29yZTo6VVJMIGh0dHBzUHJveHlVUkwoV2ViQ29yZTo6VVJMKCksIGh0dHBzUHJveHkp
OwogICAgICAgICBpZiAoaHR0cHNQcm94eVVSTC5pc1ZhbGlkKCkpIHsKICNpZiAhUExBVEZPUk0o
SU9TTUFDKQogICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2JqZWN0Om5zU3RyaW5nRnJv
bVdlYkNvcmVTdHJpbmcoaHR0cHNQcm94eVVSTC5ob3N0KCkudG9TdHJpbmcoKSkgZm9yS2V5OihO
U1N0cmluZyAqKWtDRk5ldHdvcmtQcm94aWVzSFRUUFNQcm94eV07CkBAIC0xMTMsNyArMTExLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
Y29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgb3ZlcnJpZGVTeXN0ZW1Qcm94aWVz
KHBhcmFtZXRlcnMuaHR0cFByb3h5LCBwYXJhbWV0ZXJzLmh0dHBzUHJveHkpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29u
c3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3Qg
U3RyaW5nJiBob3N0KQogewogICAgIFtOU1VSTFJlcXVlc3Qgc2V0QWxsb3dzU3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlOihfX2JyaWRnZSBOU0FycmF5ICopY2VydGlmaWNhdGVJbmZvLmNlcnRpZmlj
YXRlQ2hhaW4oKSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3RdOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbQppbmRleCAxNTQ2NzhjOGUyZjJmMDRjNzI2NzNiNzNlM2EwODNmNmE0NmI5MTVkLi5mYjU0
OWU4NjRiMmI2OTU5MGExNjAwMTQ1NjE4MzQyZDY2YjE2ODFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbQpAQCAtMzksMTQgKzM5LDEyIEBACiAjaW1wb3J0IDxwYWwvU2Vzc2lvbklELmg+CiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnNlc3Npb25JRDsKLSAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFN0cmluZyBiYXNlOwpAQCAtNjIsOSArNjAsOSBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYQog
ICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgIXBhcmFtZXRlcnMudWlQcm9jZXNz
Q29va2llU3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICB1aVByb2Nlc3NDb29r
aWVTdG9yYWdlID0gY29va2llU3RvcmFnZUZyb21JZGVudGlmeWluZ0RhdGEocGFyYW1ldGVycy51
aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcik7CiAKLSAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmVuc3VyZVNlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpudW1i
ZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSwgV1RGTW92ZSh1aVByb2Nlc3NDb29raWVTdG9yYWdl
KSk7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNl
c3Npb25JRCwgYmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQo
KSksIFdURk1vdmUodWlQcm9jZXNzQ29va2llU3RvcmFnZSkpOwogCi0gICAgYXV0byogc2Vzc2lv
biA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKTsKKyAg
ICBhdXRvKiBzZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1l
dGVycy5wZW5kaW5nQ29va2llcykKICAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggOTAyMzRmYjA2YWM4ZDE3OGI2N2JiNjBmOTBm
YTVlYzhmNmYwYzA1Ny4uYjY4ZTNmNDUwMTNlZTY2ZGY1NjZmODBkZDEzOGE3MDdiYTRjMzYyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01E
TlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlIDxwYWwv
U2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoc2Vzc2lvbklELCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrTUROU1JlZ2lzdGVy
OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTk3LDEzICs5NSwxMyBAQCBzdGF0aWMg
dm9pZCByZWdpc3Rlck1ETlNOYW1lQ2FsbGJhY2soRE5TU2VydmljZVJlZiwgRE5TUmVjb3JkUmVm
IHJlY29yZCwgRE5TU2VydgogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfSU5fQ0FMTEJBQ0so
cmVxdWVzdC0+c2Vzc2lvbklELCAicmVnaXN0ZXJNRE5TTmFtZUNhbGxiYWNrIHdpdGggZXJyb3Ig
JWQiLCBlcnJvckNvZGUpOwogCiAgICAgaWYgKGVycm9yQ29kZSkgewotICAgICAgICByZXF1ZXN0
LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVn
aXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBl
Y3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICByZXF1ZXN0LT5j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0
ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3Rl
ZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1E
TlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVz
dElkZW50aWZpZXIsIHJlcXVlc3QtPm5hbWUgfSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya01ETlNS
ZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcykKK3ZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6
cmVnaXN0ZXJNRE5TTmFtZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcykKIHsKICAgICBETlNTZXJ2aWNlUmVmIHNlcnZp
Y2U7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2VydmljZXMuZmluZChkb2N1bWVudElkZW50aWZp
ZXIpOwpAQCAtMTExLDEzICsxMDksMTMgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdp
c3Rlck1ETlNOYW1lKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBQQUw6OlNlc3MKICAgICAg
ICAgYXV0byBlcnJvciA9IEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uKCZzZXJ2aWNlKTsKICAg
ICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHNl
c3Npb25JRCwgInJlZ2lzdGVyTUROU05hbWUgRE5TU2VydmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJy
b3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1l
IHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVycm9yOjpE
TlNTRCkgfSwgMCk7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsg
cmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVy
cm9yOjpETlNTRCkgfSwgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgZXJyb3IgPSBETlNTZXJ2aWNlU2V0RGlzcGF0Y2hRdWV1ZShzZXJ2aWNlLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpKTsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKHNlc3Npb25JRCwgInJlZ2lzdGVyTUROU05hbWUgRE5TU2Vydmlj
ZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNo
ZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVk
KE1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAgICAgICBtX2Nvbm5lY3Rp
b24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRS
ZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdl
YkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHNlcnZpY2UpOwpAQCAtMTMyLDcgKzEzMCw3
IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSh1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgUEFMOjpTZXNzCiAKICAgICBpZiAoaXAgPT0gKCBpbl9hZGRyX3Qp
KC0xKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHNlc3Npb25JRCwgInJlZ2lz
dGVyTUROU05hbWUgaW5ldF9hZGRyIGVycm9yIik7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoTUROU1JlZ2lz
dGVyRXJyb3I6OkJhZFBhcmFtZXRlcikgfSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6
TUROU1JlZ2lzdGVyRXJyb3I6OkJhZFBhcmFtZXRlcikgfSwgMCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTE1Miw3ICsxNTAsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJl
Z2lzdGVyTUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2VzcwogICAg
ICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihwZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdENv
dW50KSk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
c2Vzc2lvbklELCAicmVnaXN0ZXJNRE5TTmFtZSBETlNTZXJ2aWNlUmVnaXN0ZXJSZWNvcmQgZXJy
b3IgJWQiLCBlcnJvcik7Ci0gICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyBy
ZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoTUROU1JlZ2lzdGVyRXJyb3I6OkROU1NE
KSB9LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJ
ZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5T
U0QpIH0sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHBlbmRpbmdSZWdpc3RyYXRp
b25SZXF1ZXN0cygpLmFkZChwZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdENvdW50KyssIFdURk1v
dmUocGVuZGluZ1JlcXVlc3QpKTsKQEAgLTE3OCw3ICsxNzYsNyBAQCBzdHJ1Y3QgUGVuZGluZ1Jl
c29sdXRpb25SZXF1ZXN0IHsKIAogICAgIHZvaWQgdGltZW91dCgpCiAgICAgewotICAgICAgICBj
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVzb2x2
aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoTUROU1JlZ2lz
dGVyRXJyb3I6OlRpbWVvdXQpIH0sIDApOworICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0
SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OlRp
bWVvdXQpIH0sIDApOwogICAgICAgICByZXF1ZXN0SWRlbnRpZmllciA9IDA7CiAgICAgfQogCkBA
IC0xODYsNyArMTg0LDcgQEAgc3RydWN0IFBlbmRpbmdSZXNvbHV0aW9uUmVxdWVzdCB7CiAgICAg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgeyAwIH07CiAgICAgRE5TU2VydmljZVJlZiBzZXJ2
aWNlIHsgbnVsbHB0ciB9OwogICAgIEROU1NlcnZpY2VSZWYgb3BlcmF0aW9uU2VydmljZSB7IG51
bGxwdHIgfTsKLSAgICBUaW1lciB0aW1lb3V0VGltZXI7CisgICAgV2ViQ29yZTo6VGltZXIgdGlt
ZW91dFRpbWVyOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRDsKIH07CiAKQEAgLTE5OSw3
ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlTUROU05hbWVDYWxsYmFjayhETlNTZXJ2aWNl
UmVmLCBETlNTZXJ2aWNlRmxhZ3MsIHVpbnQzMl90LCBETgogCiAgICAgaWYgKGVycm9yQ29kZSkg
ewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX0lOX0NBTExCQUNLKHJlcXVlc3QtPnNl
c3Npb25JRCwgInJlc29sdmVNRE5TTmFtZUNhbGxiYWNrIE1ETlMgZXJyb3IgJWQiLCBlcnJvckNv
ZGUpOwotICAgICAgICByZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5T
UmVnaXN0ZXI6OkZpbmlzaGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRl
bnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoTUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsK
KyAgICAgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lz
dGVyOjpGaW5pc2hlZFJlc29sdmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVzdElkZW50aWZp
ZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwg
MCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwOCw3ICsyMDYsNyBAQCBzdGF0aWMg
dm9pZCByZXNvbHZlTUROU05hbWVDYWxsYmFjayhETlNTZXJ2aWNlUmVmLCBETlNTZXJ2aWNlRmxh
Z3MsIHVpbnQzMl90LCBETgogICAgIGNoYXIgYnVmZmVyW0lORVQ2X0FERFJTVFJMRU5dID0geyAw
IH07CiAgICAgaWYgKCFpbmV0X250b3Aoc29ja2V0QWRkcmVzcy0+c2FfZmFtaWx5LCBhZGRyZXNz
LCBidWZmZXIsIHNpemVvZihidWZmZXIpKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEX0lOX0NBTExCQUNLKHJlcXVlc3QtPnNlc3Npb25JRCwgInJlc29sdmVNRE5TTmFtZUNhbGxi
YWNrIGluZXRfbnRvcCBlcnJvciIpOwotICAgICAgICByZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVzb2x2aW5nTUROU05hbWUgeyBy
ZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoTUROU1JlZ2lzdGVyRXJy
b3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlc29sdmluZ01ETlNOYW1lIHsgcmVxdWVz
dC0+cmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3Rl
ckVycm9yOjpETlNTRCkgfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyMiw3
ICsyMjAsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlc29sdmVNRE5TTmFtZSh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUEFMOjpTZXNzaQogCiAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBETlNTZXJ2aWNlQ3JlYXRlQ29ubmVjdGlvbigmcGVuZGluZ1JlcXVlc3QtPnNlcnZpY2UpKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAicmVzb2x2ZU1ETlNO
YW1lIEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9uIGVycm9yICVkIiwgZXJyb3IpOwotICAgICAg
ICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rl
cjo6RmluaXNoZWRSZXNvbHZpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5l
eHBlY3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICBtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNo
ZWRSZXNvbHZpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChX
ZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yMzcsNyArMjM1LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpy
ZXNvbHZlTUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2Vzc2kKICAg
ICBwZW5kaW5nUmVxdWVzdC0+b3BlcmF0aW9uU2VydmljZSA9IHNlcnZpY2U7CiAgICAgaWYgKGVy
cm9yKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAicmVzb2x2
ZU1ETlNOYW1lIEROU1NlcnZpY2VHZXRBZGRySW5mbyBlcnJvciAlZCIsIGVycm9yKTsKLSAgICAg
ICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0
ZXI6OkZpbmlzaGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVu
ZXhwZWN0ZWQoTUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgbV9jb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlz
aGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQo
V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBwZW5kaW5nUmVxdWVzdC5yZWxlYXNlKCk7CkBAIC0yNDUsNyArMjQzLDcg
QEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZXNvbHZlTUROU05hbWUodWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIFBBTDo6U2Vzc2kKICAgICBlcnJvciA9IEROU1NlcnZpY2VTZXREaXNw
YXRjaFF1ZXVlKHNlcnZpY2UsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgIGlmIChl
cnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHNlc3Npb25JRCwgInJlc29s
dmVNRE5TTmFtZSBETlNTZXJ2aWNlU2V0RGlzcGF0Y2hRdWV1ZSBlcnJvciAlZCIsIGVycm9yKTsK
LSAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5T
UmVnaXN0ZXI6OkZpbmlzaGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwg
bWFrZVVuZXhwZWN0ZWQoTUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAg
bV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6
OkZpbmlzaGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhw
ZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKICAgICB9CiB9
CiAjZWxzZQpAQCAtMjUzLDE2ICsyNTEsMTYgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjp1
bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcikKIHsKIH0KIAot
dm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvY3VtZW50SWRlbnRpZmll
ciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQordm9pZCBOZXR3
b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
ciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQogewogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAicmVnaXN0ZXJNRE5TTmFtZSBub3QgaW1w
bGVtZW50ZWQiKTsKLSAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElk
ZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVycm9yOjpOb3RJbXBsZW1lbnRl
ZCkgfSwgMCk7CisgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1w
bGVtZW50ZWQpIH0sIDApOwogfQogCiB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlc29sdmVN
RE5TTmFtZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChz
ZXNzaW9uSUQsICJyZXNvbHZlTUROU05hbWUgbm90IGltcGxlbWVudGVkIik7Ci0gICAgbV9jb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlz
aGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQo
TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rp
b24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRS
ZXNvbHZpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJD
b3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQpIH0sIDApOwogfQogCiAjZW5k
aWYKQEAgLTI3MCwzICsyNjgsNiBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlc29sdmVN
RE5TTmFtZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUEFMOjpTZXNzaQogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKKworI3VuZGVmIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VEX0lOX0NBTExC
QUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCAzMzY4Y2VjOWRmODI5MGMyMmI5ODcxYmNkZGU2Y2ViYjg1ZDA0
YTI2Li5jOTFhNzVmOTRkMGNlNjA2YzU0MGE3MTRjMzhiZjhiOTRmYjc4OGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTIxLDY2ICsyMSw2NiBAQAogLy8gQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogLy8gVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCi1OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFj
a2VyLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
Y3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgQG5v
LXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIEBuby11bmlm
eQotTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIEBuby11bmlmeQotCi1OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIEBuby11bmlmeQotTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIEBuby11bmlmeQotTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBAbm8tdW5pZnkKLU5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwIEBuby11
bmlmeQotTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBAbm8tdW5pZnkKLU5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcCBAbm8tdW5pZnkK
LU5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5jcHAgQG5vLXVuaWZ5Ci1O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNDb2NvYS5jcHAgQG5vLXVuaWZ5
Ci1OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBAbm8tdW5pZnkKLU5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBAbm8tdW5pZnkKLU5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIEBuby11bmlmeQotTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgQG5vLXVuaWZ5Ci1O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
Y3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5jcHAgQG5vLXVuaWZ5Ci0KLU5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Nh
cHR1cmVFdmVudC5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlTWFuYWdlci5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVjb3JkZXIuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZVJlcGxheWVyLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtEYXRhVGFza1JlcGxheS5jcHAgQG5vLXVuaWZ5Ci0KLU5ldHdvcmtQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAgQG5vLXVuaWZ5Ci0KLU5ldHdvcmtQcm9j
ZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwIEBuby11
bmlmeQotCi1OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwIEBuby11bmlmeQot
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgQG5vLXVuaWZ5Ci1O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcCBAbm8tdW5pZnkKLQot
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBAbm8tdW5pZnkK
LQotTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5jcHAgQG5vLXVu
aWZ5Ci1OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgQG5vLXVu
aWZ5Ci1OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwIEBuby11bmlm
eQotTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgQG5vLXVuaWZ5
Ci1OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBAbm8tdW5pZnkK
LU5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgQG5vLXVu
aWZ5Ci1OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHAgQG5vLXVuaWZ5
CitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcAorTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAK
K05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCitOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKK05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmNwcAorTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCitOZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKworTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNw
cAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVDb2RlcnMuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVD
b2RlcnNDb2NvYS5jcHAKK05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3Bw
CitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKK05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RhdGlzdGljcy5jcHAKK05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5j
cHAKKworTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZUV2ZW50LmNwcAorTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCitOZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlUmVwbGF5ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYXB0dXJl
L05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtEYXRhVGFza1JlcGxheS5jcHAKKworTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmNwcAorCitOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmNwcAorCitOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKKworTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAorCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcAorTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtN
RE5TUmVnaXN0ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3Iu
Y3BwCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKK05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKK05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDU29ja2V0LmNwcAogCiBQbGF0Zm9ybS9Mb2dnaW5nLmNwcAogUGxhdGZvcm0vTW9k
dWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGUyMzVjMjJiNzZkY2I3MTdiNzdiM2Mz
YjkxZWE3ZGQyYmJkY2QyMDYuLmM4MzRkYjI5YWVlNzMzNjNhOTk3MWVmNWRkNjEwNTkzN2NmNDNk
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTIxLDI5ICsyMSwyOSBAQAogLy8gQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgogLy8gVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0gQG5vLXVuaWZ5Ci1OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSBAbm8tdW5pZnkKK05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbQorTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KIAotTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0FjdGl2aXR5VHJhY2tlckNvY29hLm1tIEBuby11bmlmeQotTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBAbm8tdW5pZnkKK05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtBY3Rpdml0eVRyYWNrZXJDb2NvYS5tbQorTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KK05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0KK05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
IAotTmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1hYy5tbSBAbm8t
dW5pZnkKK05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW0K
IAotTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNvY29hLm1tIEBuby11bmlmeQorTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCiAKLU5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tIEBuby11bmlmeQorTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KIAotTmV0d29ya1Byb2Nl
c3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0g
QG5vLXVuaWZ5CitOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdv
cmtTZXJ2aWNlRW50cnlQb2ludC5tbQogCi1OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nl
c3NJT1MubW0gQG5vLXVuaWZ5CitOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1Mu
bW0KIAotTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIEBuby11bmlmeQot
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIEBuby11bmlmeQor
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCitOZXR3b3JrUHJvY2Vzcy9t
YWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KIAotTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9O
ZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3Mvd2F0
Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbSBAbm8tdW5pZnkKK05ldHdvcmtQcm9jZXNz
L3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbQorTmV0d29ya1Byb2Nlc3Mvd2F0
Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbQogCiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5j
cHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmJkOThiYTQ2MDJjZmYxMjljMjQxODdmYzNkMmRkNjY0MjE5N2RhNC4uMmQwZDVjZDg1
Y2NiZDcyNGJhYTNlMTY1NzJjZWI3ZTBlYWM5NGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MDMsNyArODAzLDYgQEAKIAkJMkRB
OTQ0QUYxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEFCMTg4NEU5QkEwMEVEODZE
QiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi87IH07CiAJCTJEQTk0NEIwMTg4NEU5QkEwMEVEODZE
QiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRBQzE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1By
b3h5SU9TLm1tICovOyB9OwogCQkyREE5NDRCQTE4ODRFQTNDMDBFRDg2REIgLyogV2ViUGFnZUlP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0
NEI2MTg4NEVBMzUwMEVEODZEQiAvKiBXZWJQYWdlSU9TLm1tICovOyB9OwotCQkyREE5NDRCRDE4
ODUxMUU3MDBFRDg2REIgLyogTmV0d29ya1Byb2Nlc3NJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRCQzE4ODUxMUU3MDBFRDg2REIgLyog
TmV0d29ya1Byb2Nlc3NJT1MubW0gKi87IH07CiAJCTJEQUJBNzcyMUE4MTdCMTcwMEVGMEYxQSAv
KiBXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFCQTc3MTFBODE3QjE3MDBFRjBGMUEg
LyogV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oICovOyB9OwogCQkyREFC
QTc3NDFBODE3RUU2MDBFRjBGMUEgLyogV0tQbHVnaW5Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFCQTc3MzFBODE3RUU2MDBFRjBG
MUEgLyogV0tQbHVnaW5Mb2FkUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRBQkE3NzYxQTgyQjQyMTAwRUYwRjFBIC8qIEFQSUhpc3Rv
cnlDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEQUJBNzc1MUE4MkI0MjEwMEVGMEYxQSAvKiBBUElIaXN0b3J5Q2xpZW50LmggKi87IH07CkBA
IC05MDAsNyArODk5LDYgQEAKIAkJMzMwOTM0NDgxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tp
ZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzMwOTM0NDQxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNz
YWdlcy5oICovOyB9OwogCQkzMzA5MzQ0OTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFu
YWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMzMDkzNDQ1MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVN
YW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkzMzA5MzQ0QTEzMTVCOTIy
MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMDkzNDQ2MTMxNUI5MjIwMDk3QTdC
QyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OwotCQkzMzA5MzQ0RjEz
MTVCOTREMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzA5MzQ0QzEzMTVCOTREMDA5N0E3QkMgLyog
V2ViQ29va2llTWFuYWdlci5jcHAgKi87IH07CiAJCTMzMDkzNDUwMTMxNUI5NEQwMDk3QTdCQyAv
KiBXZWJDb29raWVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMzA5MzQ0RDEzMTVCOTREMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlci5o
ICovOyB9OwogCQkzMzA5MzQ1NTEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclBy
b3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
MDkzNDUyMTMxNUI5NzUwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwICovOyB9
OwogCQkzMzA5MzQ1NjEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzA5MzQ1MzEz
MTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5LmggKi87IH07CkBAIC0xMDA0
LDEwICsxMDAyLDcgQEAKIAkJM0ZCMDhFNDMxRjYwQjI0MDAwNUU1MzEyIC8qIGlPUy54Y2Fzc2V0
cyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0ZCMDhF
NDIxRjYwQjI0MDAwNUU1MzEyIC8qIGlPUy54Y2Fzc2V0cyAqLzsgfTsKIAkJM0ZGRERCOTYxRjU3
N0Y0ODAwNTBFNTkzIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNGOTE1QzBGMUY1NjRERUQw
MDE4M0NFOSAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLmggKi87IH07CiAJCTNG
RkREQjk3MUY1NzgwRTEwMDUwRTU5MyAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y5MTVD
MEUxRjU2NERFRDAwMTgzQ0U5IC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0g
Ki87IH07Ci0JCTQxMDNGQkE1MjA2MUM4RkUwMEMyRUFGOCAvKiBOZXR3b3JrTG9hZENoZWNrZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwM0ZC
QTIyMDYxQkRCODAwQzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hlY2tlci5jcHAgKi87IH07CiAJCTQx
MDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyog
UlRDTmV0d29yay5oICovOyB9OwotCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
ICovOyB9OwotCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAq
LzsgfTsKIAkJNDExMkVEREIyMEU0MDdBNTAwQkVBOTJBIC8qIGNvbS5hcHBsZS5Cb2NvbVN1Ym1p
dEN0cmwuc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkVERDkyMEU0MDc3NTAwQkVBOTJBIC8qIGNvbS5hcHBs
ZS5Cb2NvbVN1Ym1pdEN0cmwuc2IgKi87IH07CiAJCTQxMTJFRERDMjBFNDA3QTUwMEJFQTkyQSAv
KiBjb20uYXBwbGUuTlBTYWZlSW5wdXQuc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmls
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkVERDgyMEU0MDc3NTAw
QkVBOTJBIC8qIGNvbS5hcHBsZS5OUFNhZmVJbnB1dC5zYiAqLzsgfTsKIAkJNDExMkVEREQyMEU0
MDdBNTAwQkVBOTJBIC8qIGNvbS5hcHBsZS5OUFNhZmVTdWJtaXQuc2IgaW4gQ29weSBQbHVnLWlu
IFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEx
MkVERDcyMEU0MDc3NTAwQkVBOTJBIC8qIGNvbS5hcHBsZS5OUFNhZmVTdWJtaXQuc2IgKi87IH07
CkBAIC0xMDE3LDggKzEwMTIsNiBAQAogCQk0MTFBOEREQjIwREREMUFDMDA2MEQzNEYgLyogV0tN
b2NrTWVkaWFEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMUE4REQ5MjBEREI2MDUwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMUE4RERD
MjBEREQyM0YwMDYwRDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFBOEREQTIwRERCNjA1MDA2MEQzNEYg
LyogV0tNb2NrTWVkaWFEZXZpY2UuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0Rjcz
NjMgLyogTGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdv
cmsuaCAqLzsgfTsKLQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2Nr
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
MDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwotCQk0
MTMwNzVBQTFERTg1RjMwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCAqLzsgfTsKIAkJNDEzMDc1QUIxREU4NUYz
MzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3Jr
UlRDU29ja2V0LmggKi87IH07CiAJCTQxMzA3NUFDMURFODVGMzcwMDM5RUM2OSAvKiBOZXR3b3Jr
UlRDTW9uaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzMDc1OUIxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmggKi87IH07
CiAJCTQxMzA3NUFEMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUEwMURFODVFRTcw
MDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXQuaCAqLzsgfTsKQEAgLTEwMzEsNyArMTAyNCw2IEBA
CiAJCTQxMzA3NUI0MURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTgxREU4NUVF
NzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87IH07CiAJCTQxMzFGM0QxMUY5NkJD
Q0MwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVB
IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi87IH07CiAJCTQxMzFGM0UyMUY5ODgw
ODQwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFGM0UwMUY5ODcxMkMw
MDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLzsgfTsKLQkJ
NDEzNUZCRDExRjRGQjgwOTAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1RkJDRjFG
NEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLzsgfTsKIAkJ
NDEzQ0NENTAyMERFQkM3NDAwNjVBMjFBIC8qIGNvbS5nb29nbGUuZ29vZ2xldGFsa2Jyb3dzZXJw
bHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQ0NENEYyMERFQkMyRjAwNjVBMjFBIC8qIGNvbS5nb29n
bGUuZ29vZ2xldGFsa2Jyb3dzZXJwbHVnaW4uc2IgKi87IH07CiAJCTQxNDM3NTFDMjBFQUVBMkQw
MEZBRDA2QyAvKiBjbi5taWNyb2RvbmUuY21iLnNhZmFyaS5zYiBpbiBDb3B5IFBsdWctaW4gU2Fu
ZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQzNzUx
QjIwRUFFQTFFMDBGQUQwNkMgLyogY24ubWljcm9kb25lLmNtYi5zYWZhcmkuc2IgKi87IH07CiAJ
CTQxNEREMzc5MjBCRjQzRjUwMDY5NTlGQiAvKiBjb20uY2lzY28ud2ViZXgucGx1Z2luLmdwYzY0
LnNiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRE
RDM3ODIwQkY0M0VBMDA2OTU5RkIgLyogY29tLmNpc2NvLndlYmV4LnBsdWdpbi5ncGM2NC5zYiAq
LzsgfTsKQEAgLTEwNDIsMzYgKzEwMzQsMjcgQEAKIAkJNDE4OTdFQ0YxRjQxNUQ2MjAwMTZGQTQy
IC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0UxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovOyB9OwogCQk0MTg5N0VEMDFGNDE1RDY1MDAxNkZB
NDIgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNh
Y2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDE4OTdFRDExRjQxNUQ2ODAwMTZGQTQy
IC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmggKi87IH07Ci0JCTQxODk3RUQ3MUY0MTVEOEEwMDE2RkE0MiAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE4OTdFRDYxRjQxNUQ4NjAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVu
Z2luZS5jcHAgKi87IH07CiAJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODk3RUQyMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCAqLzsgfTsK
LQkJNDE4OTdFRDkxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4
OTdFRDMxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3Bw
ICovOyB9OwogCQk0MTg5N0VEQTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE4OTdFRDQxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24uaCAqLzsgfTsKLQkJNDFDODU4MUExRjUxMzZDQTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAgKi87IH07CiAJCTQxRDEyOURBMUYzRDEwMTgwMEQxNUU0NyAvKiBXZWJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFEMTI5RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi87
IH07CiAJCTQxREM0NTk2MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREM0NTk0MUUz
RDZFMUUwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuaCAqLzsgfTsKLQkJNDFEQzQ1OTcx
RTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURDNDU5NTFFM0Q2RTFFMDBCMTFGNTEg
LyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCAqLzsgfTsKLQkJNDFEQzQ1OUIxRTNEQkIyODAwQjEx
RjUxIC8qIExpYldlYlJUQ1NvY2tldENsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURDNDU5OTFFM0RCQjI0MDBCMTFGNTEgLyogTGliV2Vi
UlRDU29ja2V0Q2xpZW50LmNwcCAqLzsgfTsKIAkJNDFEQzQ1OUMxRTNEQkIyODAwQjExRjUxIC8q
IExpYldlYlJUQ1NvY2tldENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFEQzQ1OUExRTNEQkIyNDAwQjExRjUxIC8qIExpYldlYlJUQ1NvY2tl
dENsaWVudC5oICovOyB9OwogCQk0MURDNDU5RTFFM0RCREExMDBCMTFGNTEgLyogV2ViUlRDU29j
a2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
REM0NTlEMUUzREJDRjAwMEIxMUY1MSAvKiBXZWJSVENTb2NrZXQuY3BwICovOyB9OwogCQk0MURD
NDU5RjFFM0RCREE1MDBCMTFGNTEgLyogV2ViUlRDU29ja2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVGMzFFM0JGRTdGMDAxQUU2NzggLyog
V2ViUlRDU29ja2V0LmggKi87IH07CiAJCTQxREM0NUExMUUzREM1M0YwMEIxMUY1MSAvKiBXZWJS
VENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MURDNDVBMDFFM0RDNTNDMDBCMTFGNTEgLyogV2ViUlRDUmVzb2x2ZXIuY3BwICovOyB9
OwogCQk0MUYxMkE5RTIwNjlCQjQ0MDBGRjI2RTggLyogV2ViTUROU1JlZ2lzdGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjdFRDZFMjA2ODFE
Q0YwMDg3RDg1MyAvKiBXZWJNRE5TUmVnaXN0ZXIuY3BwICovOyB9OwotCQk0MUYxMkE5RjIwNjlC
QjRDMDBGRjI2RTggLyogTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI3RUQ2RjIwNjk2NTkwMDA4N0Q4NTMgLyog
TmV0d29ya01ETlNSZWdpc3Rlci5jcHAgKi87IH07CiAJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5
NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUJEMjgxRjREREZEQzAwNkE2Qzk3IC8qIENhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmggKi87IH07CiAJCTQxRkFGNUY1MUUzQzA2NDkwMDFBRTY3OCAvKiBX
ZWJSVENSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFGQUY1RjQxRTNDMDY0MTAwMUFFNjc4IC8qIFdlYlJUQ1Jlc29sdmVyLmggKi87IH07
CiAJCTQxRkFGNUY4MUUzQzEwMjEwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUY1RjYxRTNDMEI0
NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmggKi87IH07CiAJCTQxRkFGNUY5MUUzQzEw
MjUwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVGNzFFM0MwQjQ3MDAxQUU2NzggLyogTGli
V2ViUlRDUmVzb2x2ZXIuY3BwICovOyB9OwotCQk0MUZCRTgyNjIwNkRGN0ZBMDAwRjA3NDEgLyog
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQkU4MjQyMDZEQTc5QzAwMEYwNzQxIC8qIE5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OEYxRjk5NkY3MTAw
Q0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhE
MUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTQ2MEY0ODkwMUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwotCQk0NjIxMDdEODFGMzhE
QkRCMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYyMTA3RDcxRjM4REJEMzAwREQ3ODEwIC8qIFBpbmdMb2FkLmNw
cCAqLzsgfTsKIAkJNDYzRkQ0ODAxRUI5NDU5NjAwQTI5ODJDIC8qIFdLUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNG
RDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ4MTFFQjk0RUFE
MDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IH07CiAJCTQ2NkJDMDNC
MUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjZCQzAzODFGQTI2
NkM5MDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovOyB9Owog
CQk0NjZCQzAzQzFGQTI2NkRBMDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkJD
MDM5MUZBMjY2QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICov
OyB9OwogCQk0NkEyQjYwODFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNw
b25zaXZlbmVzc1RpbWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuY3BwICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEg
LyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEg
LyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07Ci0JCTQ2REYw
NjNCMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2MzkxRjM5
MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgKi87IH07CiAJ
CTQ2REYwNjNDMUYzOTA1RjgwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REYwNjNB
MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLzsgfTsK
IAkJNEEzQ0MxOEExOUIwNjNFNzAwRDE0QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBNDEwRjM5MTlBRjdCMDQwMDJFQkFCNSAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAgKi87IH07CiAJCTRBM0NDMThCMTlCMDY0MEYwMEQxNEFFRiAv
KiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGM0ExOUFGN0IwNDAwMkVCQUI1
IC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggKi87IH07CkBAIC0x
MTQxLDcgKzExMjQsNiBAQAogCQk1MTJGNThGQzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0
aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMkY1OEY0MTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxM0ExNjNDMTYzMDg4
RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjNBMTYzMDg4
RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJNTEzQTE2M0QxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEz
QTE2M0IxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oICov
OyB9OwotCQk1MTNBMTY0QzE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEzQTE2NDkxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCAqLzsgfTsKIAkJNTEzQTE2NEQxNjMwQTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTNBMTY0QTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCAqLzsgfTsKIAkJNTEzRTQ2MkQxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEzRTQ2MkIxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1Nl
cnZpY2VQaWNrZXJEZWxlZ2F0ZS5oICovOyB9OwogCQk1MTNFNDYyRTFBRDgzNzU2MDAxNjIzNEEg
LyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRTQ2MkMxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdL
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5tbSAqLzsgfTsKQEAgLTExNzIsOCArMTE1NCw2
IEBACiAJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUFDQzkzNDE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFBQ0M5MzUxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCAq
LzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEyMEEyQ0NEMDBD
MDVCN0YgLyogQVBJRXJyb3IuaCAqLzsgfTsKLQkJNTE3OTU1NjcxNjI4NzZDQjAwRkE0M0I2IC8q
IE5ldHdvcmtQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFBOEE2MTUxNjI3RjNGOTAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzTWFj
Lm1tICovOyB9OwotCQk1MTc5NTU2ODE2Mjg3NkNGMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3
REYxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmNwcCAqLzsgfTsKIAkJNTE3OTU1
NkExNjI4NzZGMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyog
TmV0d29ya1Byb2Nlc3MuaCAqLzsgfTsKIAkJNTE3OTU1NkQxNjI4NzdCMTAwRkE0M0I2IC8qIE5l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwQ0M3RUExNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwICovOyB9OwogCQk1MTc5NTU2RTE2Mjg3N0IzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwQ0M3RUIxNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCAqLzsgfTsK
QEAgLTEyNzAsNyArMTI1MCw2IEBACiAJCTUxRkFFQzNBMUIwNjU3NjMwMDA5QzRFNyAvKiBDaGls
ZFByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGQUVDMzcxQjA2NTczMTAwMDlDNEU3IC8qIENoaWxkUHJvY2Vzc01lc3NhZ2Vz
LmggKi87IH07CiAJCTUxRkFFQzNCMUIwNjU3NjgwMDA5QzRFNyAvKiBDaGlsZFByb2Nlc3NNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGQUVDMzYxQjA2NTczMTAwMDlDNEU3IC8qIENoaWxkUHJvY2Vzc01lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTUxRkIwOEZGMTYzOURFMUEwMEVDMzI0QSAvKiBXZWJMb2FkZXJT
dHJhdGVneS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUFCRjY1NjE2MzkyRjE1MDAxMzJBN0EgLyogV2ViTG9hZGVyU3RyYXRlZ3kuY3BwICovOyB9
OwotCQk1MUZEMThCNTE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkQxOEIz
MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwICovOyB9OwogCQk1
MUZEMThCNjE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZEMThCNDE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggKi87IH07CiAJCTUyNzJCMjhCMTQw
Njk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MkIyODkxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRp
c3RpY3NEYXRhLmggKi87IH07CiAJCTUyNzJENEM5MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZU5TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MjcyRDRDNzFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjgwLDI3
ICsxMjU5LDE2IEBACiAJCTUyRDVBMUIxMUM1NzQ5NjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkQ1QTFBQzFDNTc0OTRFMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tICovOyB9OwogCQk1MkQ1QTFCNzFDNTc0QTAyMDBERTM0QTMgLyogVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyRDVBMUI0MUM1NzQ5RjIwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tICovOyB9OwogCQk1MkYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIE5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKLQkJNTMw
MjU4M0IxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwMjU4MkUxRENCQkQx
RDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuY3BwICovOyB9OwogCQk1MzAyNTgz
QzFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwMjU4MkYxRENCQkQxRDAwREE4
OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCAqLzsgfTsKLQkJNTMwMjU4M0QxRENCQkQy
MjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwMjU4MzAxRENCQkQxRDAwREE4OUMyIC8qIE5l
dHdvcmtDYXB0dXJlRXZlbnQuY3BwICovOyB9OwogCQk1MzAyNTgzRTFEQ0JCRDIyMDBEQTg5QzIg
LyogTmV0d29ya0NhcHR1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMwMjU4MzExRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJl
RXZlbnQuaCAqLzsgfTsKIAkJNTMwMjU4M0YxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0
dXJlTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMwMjU4MzIxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlTG9nZ2luZy5oICov
OyB9OwotCQk1MzAyNTg0MDFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1
ODMzMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwICovOyB9Owog
CQk1MzAyNTg0MTFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgzNDFEQ0JC
RDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggKi87IH07Ci0JCTUzMDI1ODQy
MURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODM1MURDQkJEMUQwMERB
ODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcCAqLzsgfTsKIAkJNTMwMjU4NDMxRENC
QkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODM2MURDQkJEMUQwMERBODlDMiAv
KiBOZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmggKi87IH07Ci0JCTUzMDI1ODQ0MURDQkJEMjIwMERB
ODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlcGxheWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODM3MURDQkJEMUQwMERBODlDMiAvKiBOZXR3
b3JrQ2FwdHVyZVJlcGxheWVyLmNwcCAqLzsgfTsKIAkJNTMwMjU4NDUxRENCQkQyMjAwREE4OUMy
IC8qIE5ldHdvcmtDYXB0dXJlUmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODM4MURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2Fw
dHVyZVJlcGxheWVyLmggKi87IH07Ci0JCTUzMDI1ODQ2MURDQkJEMjIwMERBODlDMiAvKiBOZXR3
b3JrRGF0YVRhc2tSZXBsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTMwMjU4MzkxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtEYXRhVGFza1Jl
cGxheS5jcHAgKi87IH07CiAJCTUzMDI1ODQ3MURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrRGF0
YVRhc2tSZXBsYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzMDI1ODNBMURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrRGF0YVRhc2tSZXBsYXkuaCAq
LzsgfTsKLQkJNTMxNTg3NkMyMDc2Qjc2MjAwNEJGOUYzIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzMTU4NzZCMjA3NkI3MTMwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2Eu
bW0gKi87IH07Ci0JCTUzMjE1OTUzMURCQUU3MTgwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzIxNTk1
MjFEQkFFNkZDMDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb24uY3BwICovOyB9OwotCQk1MzIxNTk1
NDFEQkFFNzFEMDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMjE1OTUxMURCQUU2RkMwMDU0QUEzQyAv
KiBOZXR3b3JrRGF0YVRhc2suY3BwICovOyB9OwogCQk1MzIxNTk1NTFEQkFFNzI5MDA1NEFBM0Mg
LyogTmV0d29ya1Nlc3Npb25Db2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMyMTU5NTAxREJBRTZENzAwNTRBQTNDIC8qIE5ldHdvcmtTZXNzaW9u
Q29jb2EuaCAqLzsgfTsKIAkJNTMyMTU5NTYxREJBRTcyRDAwNTRBQTNDIC8qIE5ldHdvcmtEYXRh
VGFza0NvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzIxNTk0RjFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCAqLzsg
fTsKIAkJNTM1QkNCOTIyMDY5QzQ5QzAwQ0NDRTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNUJDQjkw
MjA2OUM0OUMwMENDQ0UwMiAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmggKi87IH07Ci0JCTUz
NzlEQjcyMjA3RTk0NzAwMDdEOEMzMyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjNDQUE1MjA2QzQ0
M0UwMDg2NDkwRSAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcCAqLzsgfTsKLQkJNTNCQTQ3
RDAxREMyRUY1RTAwNERGNEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5RUI1NDYxREMyRUU0MDAwOUQ0
OENGIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuY3BwICovOyB9OwogCQk1M0JBNDdEMTFEQzJFRjVF
MDA0REY0QUQgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5RUI1NDcxREMyRUU0MDAwOUQ0OENGIC8qIE5ldHdv
cmtEYXRhVGFza0Jsb2IuaCAqLzsgfTsKIAkJNTNERUEzNjYxRERFNDIzMTAwRTgyNjQ4IC8qIGpz
b24uaHBwIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNE
RUEzNjUxRERFNDIyRTAwRTgyNjQ4IC8qIGpzb24uaHBwICovOyB9OwogCQk1NzBBQjhGMzIwQUUz
QkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwQUI4RjIyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tl
eVByb3h5U3RvcmUuaCAqLzsgfTsKQEAgLTEzMTcsMjIgKzEyODUsMTQgQEAKIAkJNUMwQjE3Nzgx
RTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQjE3NzQx
RTdDODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQk1QzBCMTc3OTFFN0M4ODIxMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQk1QzBCMTc3QzFFN0M4ODU0MDBFOTEyM0MgLyogV2ViU29j
a2V0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDMEIxNzdBMUU3Qzg4NEYwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW0uY3BwICovOyB9
OwotCQk1QzBCMTc4MTFFN0M4QzI2MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCMTc3RDFF
N0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgKi87IH07Ci0JCTVDMTQy
NkVDMUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZF
MjFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
ICovOyB9OwogCQk1QzE0MjZFRDFDMjNGODA5MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMTQyNkUzMUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oICovOyB9OwogCQk1QzE0MjZFRTFDMjNGODA5MDBENDExODMgLyogTmV0d29y
a1Byb2Nlc3NTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzE0MjZFNDFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NTdXBw
bGVtZW50LmggKi87IH07Ci0JCTVDMTQyNkVGMUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzE0MjZFNTFDMjNGODA1MDBENDExODMgLyogTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwICovOyB9OwogCQk1QzE0MjZGMDFDMjNGODA5MDBENDExODMgLyog
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkU2MUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oICovOyB9OwotCQk1QzE0MjcwMTFDMjNGODRDMDBENDEx
ODMgLyogRG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMxNDI2RjMxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkLmNwcCAqLzsgfTsK
IAkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGNDFDMjNGODQzMDBENDExODMg
LyogRG93bmxvYWQuaCAqLzsgfTsKIAkJNUMxNDI3MDUxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25s
b2FkSUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MTQyNkY3MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZElELmggKi87IH07Ci0JCTVDMTQyNzA2
MUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RjgxQzIzRjg0MzAwRDQxMTgzIC8q
IERvd25sb2FkTWFuYWdlci5jcHAgKi87IH07CiAJCTVDMTQyNzA3MUMyM0Y4NEMwMEQ0MTE4MyAv
KiBEb3dubG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMTQyNkY5MUMyM0Y4NDMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuaCAq
LzsgfTsKLQkJNUMxNDI3MTMxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkQ29jb2EubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcwOTFDMjNG
ODY5MDBENDExODMgLyogRG93bmxvYWRDb2NvYS5tbSAqLzsgfTsKIAkJNUMxNDI3MTgxQzIzRjhC
NzAwRDQxMTgzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI3MTQxQzIzRjhCMDAwRDQxMTgz
IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oICovOyB9OwotCQk1QzE0MjcxRDFDMjNG
OENGMDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcxQjFDMjNGOEND
MDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gKi87IH07CiAJ
CTVDMTlBNTIwMUZEMEIyOTUwMEVFQTMyMyAvKiBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxOUE1MUYxRkQw
QjE0NzAwRUVBMzIzIC8qIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmggKi87IH07Ci0JCTVDMjBD
QjlEMUJCMERDRkEwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyMENCOUIxQkIwRENEMjAwODk1
QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gKi87IH07CiAJCTVDMjBDQkEwMUJCMUVDRDgw
MDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUMyMENCOUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdvcmtTZXNz
aW9uLmggKi87IH07CiAJCTVDMjY5NTg1MjAwNDMyMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBh
cmFtZXRlcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzI2OTU4NDIwMDQyRjEyMDA1QzQzOUIgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTVDMjk4REEwMUMzREYwMjEwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjk4RDlFMUMzREVGMjkw
MDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCAqLzsgfTsKQEAgLTEzNDAsNyArMTMwMCw2IEBA
CiAJCTVDNjJGREY5MUVGQzI3MUMwMENFMDcyRSAvKiBXS1VSTFNjaGVtZVRhc2tQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzYyRkRGODFF
RkMyNjNDMDBDRTA3MkUgLyogV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNkNFNkQxMUY1OUJDN0EwMDA3
QzZDQiAvKiBQYWdlQ2xpZW50SW1wbENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2Q0U2RDAxRjU5QkM0NjAwMDdDNkNCIC8qIFBhZ2VDbGll
bnRJbXBsQ29jb2EubW0gKi87IH07CiAJCTVDNzcwNjc0MUQxMTM4MzgwMDEyNzAwRiAvKiBXZWJT
b2NrZXRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Qzc3MDY3MzFEMTExRDhCMDAxMjcwMEYgLyogV2ViU29ja2V0UHJvdmlkZXIuY3Bw
ICovOyB9OwotCQk1Qzg1Qzc4ODFDM0YyM0NFMDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDODVDNzg2
MUMzRjIzQzUwMDYxQTRGQSAvKiBQZW5kaW5nRG93bmxvYWQuY3BwICovOyB9OwogCQk1QzhERDM3
RTFGRTQ1MDIwMDBGMkE1NTYgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEREMzdEMUZFNDUwMTEwMEYyQTU1
NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICovOyB9OwogCQk1QzhERDM4MDFGRTQ1MjE2MDBG
MkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzhERDM3RjFGRTQ1MTkyMDBGMkE1NTYgLyogV2Vic2l0
ZUF1dG9wbGF5UG9saWN5LmggKi87IH07CiAJCTVDOUU1NjgyMURGN0YxQUIwMEM5RUUzMyAvKiBX
S1dlYnNpdGVQb2xpY2llcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzlFNTY4MDFERjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMu
Y3BwICovOyB9OwpAQCAtMTM1MCw3ICsxMzA5LDYgQEAKIAkJNUNCMjM3OEIxREYwREU1MzAwMTE3
QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjIzNzhBMURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRl
UG9saWNpZXMubW0gKi87IH07CiAJCTVDQjIzNzhDMURGMERFNkUwMDExN0FBMyAvKiBfV0tXZWJz
aXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0IyMzc4RTFE
RjBFMEQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjIzNzhEMURGMEUwQzIwMDEx
N0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovOyB9OwotCQk1Q0JDOUI4RDFD
NjUyNzlDMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0Yg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4
RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRh
c2suaCAqLzsgfTsKIAkJNUNEMjg2NTExRTcyMzU5OTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVM
aXN0U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDRDI4NjREMUU3MjJGNDQwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1Q0QyODY1MjFF
NzIzNUE2MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3QubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0QyODY0QjFFNzIyRjQ0MDA5NEZEQzggLyog
V0tDb250ZW50UnVsZUxpc3QubW0gKi87IH07CkBAIC0xMzYxLDcgKzEzMTksNiBAQAogCQk1Q0Qy
ODY1NzFFNzIzNUM5MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0QyODY0RjFF
NzIyRjQ0MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZUludGVybmFsLmggKi87IH07
CiAJCTVDRDI4NjU4MUU3MjM1RDEwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNE
Mjg2NTAxRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmVQcml2YXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNFODVC
MjAxQzg4RTY0QjAwNzBCRkNFIC8qIFBpbmdMb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyogUGluZ0xv
YWQuaCAqLzsgfTsKLQkJNUNGRUNCMDQxRTFFRDFDQzAwRjg4NTA0IC8qIExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0ZFQ0IwMzFFMUVEMUM4MDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmNwcCAqLzsgfTsKIAkJNjE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNjMxMDhG
OTYxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk0MUY5NjcxOUMwMEEw
REI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjMxMDhGOTcxRjk2NzE5QzAwQTBEQjg0IC8qIF9X
S0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2MzEwOEY5NTFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25N
YW5pZmVzdC5tbSAqLzsgfTsKQEAgLTE0NTgsNyArMTQxNSw2IEBACiAJCTdDOUQxNTM3MTg0NTg0
REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUQxNTM2MTg0NTg0REEwMDlE
MzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLzsgfTsKIAkJN0NBMjU0
RUIxODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTI1NEVBMTgy
OTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NBMzc5M0UxQUMz
NzhCMzAwNzlEQzM3IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0EzNzkzRDFBQzM3
OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3Q0FCOTM3QTFE
NDU5RTUxMDA3MEY1NDAgLyogTmV0d29ya0NhY2hlQ29kZXJzQ29jb2EuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBQjkzNzkxRDQ1OUU0QjAwNzBG
NTQwIC8qIE5ldHdvcmtDYWNoZUNvZGVyc0NvY29hLmNwcCAqLzsgfTsKIAkJN0NCMTAwRjExRkEz
ODU4QTAwMTcyOUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxMDBFRTFGQTJENzRBMDAxNzI5RUUgLyog
V2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAqLzsgfTsKIAkJN0NCMTAwRjIxRkEzODU4RTAwMTcyOUVF
IC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDREU3M0EzMUY5REFCNjUwMDM5MDMxMiAvKiBXZWJQcmVm
ZXJlbmNlc0RlZmluaXRpb25zLmggKi87IH07CiAJCTdDQjEwMEYzMUZBMzg1OEUwMDE3MjlFRSAv
KiBXZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDQjEwMEVGMUZBMkQ3NEIwMDE3MjlFRSAvKiBXZWJQcmVmZXJlbmNlc0tl
eXMuaCAqLzsgfTsKQEAgLTE1MDQsMTggKzE0NjAsMTQgQEAKIAkJN0NGNDdGRkIxNzI3NUM1NzAw
OEFDQjkxIC8qIFBhZ2VCYW5uZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDRjQ3RkY5MTcyNzVDNTcwMDhBQ0I5MSAvKiBQYWdlQmFubmVyLmggKi87
IH07CiAJCTdDRjQ3RkZFMTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Y0N0ZG
QzE3Mjc2QUUzMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tICovOyB9OwogCQk3
Q0Y0N0ZGRjE3Mjc2QUUzMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Y0N0ZGRDE3Mjc2QUUz
MDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0VDNEYwRkIxOEU0QUNCQjAwODA1NkFGIC8q
IE5ldHdvcmtQcm9jZXNzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3RUM0RjBGOTE4RTRBOTQ1MDA4MDU2QUYgLyogTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbSAqLzsgfTsKIAkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Lmgg
Ki87IH07CiAJCTgzMTA0MjhCMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJyZXNv
dXJjZXNFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMxMDQyODkxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0Vu
dHJ5LmggKi87IH07Ci0JCTgzMTA0MjhDMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVT
dWJyZXNvdXJjZXNFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzEwNDI4QTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwICovOyB9OwogCQk4MzEzRjdFQzFGN0RBRTA4MDBCOTQ0RUIgLyogU2hh
cmVkU3RyaW5nSGFzaFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzEzRjdFOTFGN0RBRTAzMDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFN0
b3JlLmggKi87IH07CiAJCTgzMTNGN0VFMUY3REFFMDgwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdI
YXNoVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMTNGN0U3MUY3REFFMDMwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGUuaCAqLzsg
fTsKIAkJODMxRUVCQkQxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMx
RUVCQkIxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oICov
OyB9OwotCQk4MzFFRUJCRTFCRDg1QzQzMDBCQjY0QzMgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMUVFQkJDMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwICovOyB9OwogCQk4MzI5OTRBNzFGOTZGNTAyMDBBQzU3QjEgLyogV2ViU1dPcmlnaW5TdG9y
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzI5
OTRBNTFGOTZGNEZEMDBBQzU3QjEgLyogV2ViU1dPcmlnaW5TdG9yZS5jcHAgKi87IH07CiAJCTgz
Mjk5NEE4MUY5NkY1MDIwMEFDNTdCMSAvKiBXZWJTV09yaWdpblN0b3JlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzI5OTRBNjFGOTZGNEZFMDBBQzU3
QjEgLyogV2ViU1dPcmlnaW5TdG9yZS5oICovOyB9OwogCQk4MzJBRTI1MjFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQUUyNTAxQkUyRThDRDAwRkFBRTEw
IC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCAqLzsgfTsKLQkJODMyQUUy
NTMxQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQUUy
NTExQkUyRThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
Y3BwICovOyB9OwogCQk4MzJFRDE4QjFFMkZFMTU3MDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzJFRDE4OTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlci5jcHAgKi87IH07CiAJCTgzMkVEMThDMUUyRkUxNTcwMDZCQTY0QSAvKiBQ
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJFRDE4QTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oICovOyB9OwogCQk4MzRCMjUwRjFBODMxQThEMDBD
RkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uaCAqLzsgfTsKQEAgLTE1MzEsMTUgKzE0ODMsMTIgQEAKIAkJODM4
OTFCNkMxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzg5MUI2QTFBNjhDMzBC
MDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLzsgfTsKIAkJODM4OTFCNkQx
QTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4OTFCNkIxQTY4QzMwQjAwMzBG
Mzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tICovOyB9OwogCQk4MzkxNDk2NTFCRUE4
Mzg1MDBEMkQ5NTMgLyogTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzkxNDk2MzFCRUE4Mzg1MDBEMkQ5NTMgLyog
TmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggKi87IH07Ci0JCTgzOTkwMjAyMUJFOUEwMkIwMDBGMzY1
MyAvKiBOZXR3b3JrTG9hZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4Mzk5MDFGRjFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuY3BwICov
OyB9OwogCQk4Mzk5MDIwMzFCRTlBMDJCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOTkwMUZFMUJFOUEwMUIw
MDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oICovOyB9OwogCQk4MzlBMkYzMTFFMjA2NzQ1MDAzOTA1
N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkYxRTIwNjczOTAwMzkw
NTdFIC8qIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcCAqLzsgfTsKIAkJ
ODM5QTJGMzIxRTIwNjc0NTAwMzkwNTdFIC8qIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VT
YW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzlBMkYzMDFFMjA2NzM5MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNh
bXBsZXIuaCAqLzsgfTsKLQkJODNBMEVEMzQxRjc0N0NDRDAwMzI5OUVCIC8qIFByZWNvbm5lY3RU
YXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
QTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5jcHAgKi87IH07CiAJCTgz
QTBFRDM1MUY3NDdDQ0YwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNBMEVEMzIxRjc0N0NDNjAwMzI5OUVC
IC8qIFByZWNvbm5lY3RUYXNrLmggKi87IH07CiAJCTgzQjNDQjBGMjBFMkFBRkUwMDQ0MUU5QiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2ODFEQ0IyMEUyOTA0QjAwQzI0OUNEIC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgKi87IH07CiAJCTgzQjNDQjEw
MjBFMkFCMDEwMDQ0MUU5QiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjgxRENBMjBF
MjkwNEEwMEMyNDlDRCAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsg
fTsKLQkJODNCRENDQjkxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCREND
QjgxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwICovOyB9Owog
CQk4M0Q0NTRENzFCRTlEM0M0MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRDQ1NEQ2MUJFOUQzQzQw
MDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oICovOyB9OwogCQk4M0VFNTc1QjFEQjdENjEx
MDBDNzRDNTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFRTU3NTkxREI3RDYwNjAwQzc0QzUw
IC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNwcCAqLzsgfTsKIAkJODNFRTU3NUMxREI3
RDYxMTAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0VFNTc1QTFEQjdENjA2MDBDNzRD
NTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLzsgfTsKQEAgLTE2MjgsOSArMTU3
Nyw3IEBACiAJCUExMDQ2RUEyMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA0NkVBMDIwNzkyNjMx
MDBGMEM1RDggLyogV0tQREZWaWV3Lm1tICovOyB9OwogCQlBMTA1RDBEMTIxMjczNEIyMDAzNEY2
QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTEwNUQwRDAyMTI3MzRCMTAwMzRGNkM3IC8qIE5ldHdvcmtCbG9i
UmVnaXN0cnkuaCAqLzsgfTsKIAkJQTExNDU1QUMyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQ
cm94aW1pdHlBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExMTQ1NUFBMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNz
ZXJ0aW9uLmggKi87IH07Ci0JCUExMTQ1NUFEMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJv
eGltaXR5QXNzZXJ0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTExNDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3Nl
cnRpb24ubW0gKi87IH07CiAJCUExMTQ1NUIwMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJv
eGltaXR5TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTExNDU1QUUyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
LmggKi87IH07Ci0JCUExMTQ1NUIxMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5
TWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMTQ1NUFGMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbSAq
LzsgfTsKIAkJQTExNURDNzExOTFEODJENzAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
MTVEQzZEMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi87
IH07CiAJCUExMTVEQzcyMTkxRDgyREEwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVE
QzZFMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTE4QTlFRjE5MDdB
RDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyog
UXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi87IH07CkBAIC0xODkwLDcgKzE4MzcsNiBAQAogCQlC
QzgxNDdENTEyRjY2RDMxMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgxNDdE
MzEyRjY2RDMxMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggKi87
IH07CiAJCUJDODE0N0Q2MTJGNjZEMzEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM4MTQ3RDQxMkY2NkQzMTAwN0IyQzMyIC8qIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAgKi87IH07CiAJCUJDODI4Mzk5MTZCNDhEQzAwMEEyNzhGRSAvKiBXZWJDb250ZW50
U2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzgyODM5ODE2QjQ4REMwMDBBMjc4RkUgLyogV2ViQ29udGVudFNlcnZpY2VF
bnRyeVBvaW50Lm1tICovOyB9OwotCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29y
a1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM4MjgzQTgxNkI0QkQ5MTAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50
cnlQb2ludC5tbSAqLzsgfTsKIAkJQkM4MjgzREExNkI0REI5MzAwQTI3OEZFIC8qIFdlYktpdC5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4REMyRUY1QjA0ODZBNjk0MDA5OEIyMTYgLyogV2ViS2l0LmZyYW1ld29yayAqLzsgfTsKIAkJ
QkM4Mjg0NEQxNkI1MDgxQzAwQTI3OEZFIC8qIFBsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MjgzRUYxNkI0
RjhFMjAwQTI3OEZFIC8qIFBsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tICovOyB9OwogCQlCQzgy
ODQ0RjE2QjUwODk4MDBBMjc4RkUgLyogV2ViS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhEQzJFRjVCMDQ4NkE2OTQwMDk4QjIx
NiAvKiBXZWJLaXQuZnJhbWV3b3JrICovOyB9OwpAQCAtMjExNiw3ICsyMDYyLDYgQEAKIAkJRTEx
NUM3MTQxOTBGODlFNDAwRUNDNTE2IC8qIFN0b3JhZ2VQcm9jZXNzSU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRUYzOUMxOTBGNzkxQzAwNzMx
NjU4IC8qIFN0b3JhZ2VQcm9jZXNzSU9TLm1tICovOyB9OwogCQlFMTE1QzcxNjE5MEY4QTI1MDBF
Q0M1MTYgLyogY29tLmFwcGxlLldlYktpdC5TdG9yYWdlLnNiIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTE1QzcxNTE5MEY4QTI1MDBFQ0M1MTYgLyog
Y29tLmFwcGxlLldlYktpdC5TdG9yYWdlLnNiICovOyB9OwogCQlFMTFEMzVBRTE2QjYzRDFCMDA2
RDIzRDcgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTY3RTM3MTUwQUI1RTIwMEM3MzE2OSAvKiBjb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYiAqLzsgfTsKLQkJRTE0QTk1NDkxNkUwMTZBNDAwNjhERTgyIC8q
IE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNEE5NTQ3MTZFMDE2QTQwMDY4REU4MiAvKiBO
ZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgKi87IH07CiAJCUUxNEE5NTRBMTZF
MDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE0QTk1NDgxNkUwMTZB
NDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggKi87IH07CiAJ
CUUxNTEzQzY2MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUxM0M2NDE2NkVBQkIy
MDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuY3BwICovOyB9OwogCQlFMTUxM0M2NzE2NkVB
QkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGls
ZFByb2Nlc3NQcm94eS5oICovOyB9OwpAQCAtMjEyNiw3ICsyMDcxLDYgQEAKIAkJRTE3MDg3NkIx
NkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzA4NzY5MTZENkNBNjkwMEY5OTIyNiAv
KiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgKi87IH07CiAJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIy
NiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTE3MDg3NkExNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVBy
b3h5LmggKi87IH07CiAJCUUxNzkwODhGMTY5QkFBNkEwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTY5NDgx
NjlCNzdDODAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltLmggKi87IH07Ci0JCUUxNzk4Qzc5MTZFNjgx
ODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzk4Qzc3MTZFNjgxODgwMDI0MDEzOSAvKiBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJRTE3OUZEOUMxMzREMzgwNjAwMTVCODgz
IC8qIEFyZ3VtZW50Q29kZXJzTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTc5RkQ5QjEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNN
YWMuaCAqLzsgfTsKIAkJRTE3QUUyQzMxNkI5QzYzQTAwMUM0MkYxIC8qIGNvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya1Byb2Nlc3Muc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxN0FFMkMyMTZCOUM2M0EwMDFDNDJGMSAvKiBjb20uYXBwbGUuV2ViS2l0
Lk5ldHdvcmtQcm9jZXNzLnNiICovOyB9OwogCQlFMThFNjkwQjE2OUI1NjNGMDA5QjY2NzAgLyog
U2VjSXRlbVNoaW1Qcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMThFNjkwOTE2OUI1NjNGMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5j
cHAgKi87IH07CkBAIC0yMTM5LDMwICsyMDgzLDE5IEBACiAJCUUxQUVBMjJGMTQ2ODdCREIwMDgw
NDU2OSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQUVBMjJEMTQ2ODdCREIwMDgwNDU2OSAvKiBX
S0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCAqLzsgfTsKIAkJRTFBRUEyMzAxNDY4N0JEQjAw
ODA0NTY5IC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQUVBMjJFMTQ2ODdCREIwMDgwNDU2OSAv
KiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW0gKi87IH07CiAJCUUxQjc4NDcxMTYzRjI0
NjkwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFCNzg0NzAxNjNGMjQ2OTAwMDdCNjkyIC8q
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggKi87IH07Ci0JCUUxQjc4NDczMTYzRjI1M0UwMDA3
QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5tbSAqLzsgfTsKIAkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4
IC8qIFByaW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovOyB9OwogCQlF
MUQyNkE1MzE3NTk2NEQ5MDA5NUJGRDEgLyogV2ViQ29udGVudFByb2Nlc3MueGliIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUQyNkE0QzE3NTk2MzRF
MDA5NUJGRDEgLyogV2ViQ29udGVudFByb2Nlc3MueGliICovOyB9OwogCQlFMUU1NTJDNTE2QUUw
NjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFNTUyQzMxNkFFMDY1RTAw
NEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJRTFF
RTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTUzREMx
MUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICovOyB9
OwogCQlFMUVFNTNFNzExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxRUU1M0U2MTFGOENGRkIwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwICovOyB9OwogCQlFNDEzRjU5RDFBQzFBREM0MDAzNDUzNjAgLyogTmV0d29ya0NhY2hl
RW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
MTNGNTlCMUFDMUFEQjYwMDM0NTM2MCAvKiBOZXR3b3JrQ2FjaGVFbnRyeS5oICovOyB9OwotCQlF
NDEzRjU5RjFBQzFBRjlEMDAzNDUzNjAgLyogTmV0d29ya0NhY2hlRW50cnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxM0Y1OUUxQUMxQUY5RDAw
MzQ1MzYwIC8qIE5ldHdvcmtDYWNoZUVudHJ5LmNwcCAqLzsgfTsKLQkJRTQyRTA2MEYxQUE3NTIz
NDAwQjExNjk5IC8qIE5ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyRTA2MEQxQUE3NTBFNTAwQjExNjk5
IC8qIE5ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tICovOyB9OwogCQlFNDJFMDYxMDFBQTc1
MjNCMDBCMTE2OTkgLyogTmV0d29ya0NhY2hlSU9DaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDJFMDYwQjFBQTc0NDBEMDBCMTE2OTkgLyog
TmV0d29ya0NhY2hlSU9DaGFubmVsLmggKi87IH07CiAJCUU0MkUwNjEyMUFBNzVBQkQwMEIxMTY5
OSAvKiBOZXR3b3JrQ2FjaGVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDJFMDYxMTFBQTc1QUJEMDBCMTE2OTkgLyogTmV0d29ya0NhY2hlRGF0
YS5oICovOyB9OwotCQlFNDJFMDYxNDFBQTc1QjcwMDBCMTE2OTkgLyogTmV0d29ya0NhY2hlRGF0
YUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQyRTA2MTMxQUE3NUI3MDAwQjExNjk5IC8qIE5ldHdvcmtDYWNoZURhdGFDb2NvYS5tbSAqLzsg
fTsKLQkJRTQ0MzZFQ0ExQTBEMDNGQTAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQzNkVCRTFBMENGREIy
MDBFQUQyMDQgLyogTmV0d29ya0NhY2hlLmNwcCAqLzsgfTsKIAkJRTQ0MzZFQ0MxQTBEMDQwQjAw
RUFEMjA0IC8qIE5ldHdvcmtDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQ0MzZFQkYxQTBDRkRCMjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZS5o
ICovOyB9OwotCQlFNDQzNkVDRDFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDM2RUMw
MUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuY3BwICovOyB9OwogCQlFNDQzNkVD
RTFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQzNkVDMTFBMENGREIyMDBFQUQyMDQgLyog
TmV0d29ya0NhY2hlS2V5LmggKi87IH07CiAJCUU0NDM2RUNGMUEwRDA0MEIwMEVBRDIwNCAvKiBO
ZXR3b3JrQ2FjaGVTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDQzNkVDMjFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3RvcmFn
ZS5oICovOyB9OwotCQlFNDQzNkVEMDFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDQzNkVDMzFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgKi87IH07
Ci0JCUU0Njk3Q0NEMUIyNUVCOEYwMDFCMEE2QyAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Njk3Q0ND
MUIyNUVCOEYwMDFCMEE2QyAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCAqLzsgfTsKLQkJ
RTQ3RDFFOTgxQjA2NDlGQjAwMjY3NkE4IC8qIE5ldHdvcmtDYWNoZURhdGEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RDFFOTYxQjA2MkI2NjAw
MjY3NkE4IC8qIE5ldHdvcmtDYWNoZURhdGEuY3BwICovOyB9OwotCQlFNDg5RDI4QjFBMEEyREI4
MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29kZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODlEMjg0MUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3
b3JrQ2FjaGVDb2RlcnMuY3BwICovOyB9OwogCQlFNDg5RDI4QzFBMEEyREI4MDA3OEMwNkEgLyog
TmV0d29ya0NhY2hlQ29kZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDg5RDI4NTFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29kZXJz
LmggKi87IH07CiAJCUU0OUQ0MEQ3MUFEM0ZCMTcwMDY2QjdCOSAvKiBOZXR3b3JrQ2FjaGVCbG9i
U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQ5RDQwRDYxQUQzRkIxNzAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmggKi87
IH07Ci0JCUU0OUQ0MEQ5MUFEM0ZCMjEwMDY2QjdCOSAvKiBOZXR3b3JrQ2FjaGVCbG9iU3RvcmFn
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlE
NDBEODFBRDNGQjIxMDA2NkI3QjkgLyogTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwICovOyB9
OwogCQlFNEU4NjQ5MjFCMTY3NTAxMDBDODJGNDAgLyogVmVyc2lvbkNoZWNrcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTg2NDhGMUIxNjczRkIw
MEM4MkY0MCAvKiBWZXJzaW9uQ2hlY2tzLm1tICovOyB9OwogCQlFNEU4NjQ5MzFCMTY3NTA3MDBD
ODJGNDAgLyogVmVyc2lvbkNoZWNrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRFODY0OEUxQjE2NzNGQjAwQzgyRjQwIC8qIFZlcnNpb25DaGVja3Mu
aCAqLzsgfTsKIAkJRTUyQ0Y1NTIyMEEzNUMzQTAwREFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTUyQ0Y1NTAyMEEzNUMzQTAwREFEQTI3IC8qIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
ci5oICovOyB9OwpAQCAtMjE5NSw3ICsyMTI4LDYgQEAKIAkJRjYxMTNFMjgxMjZDRTE5QjAwNTdE
MEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1Vz
ZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi87IH07CiAJCUY2MTEzRTI5MTI2Q0UxOUIwMDU3RDBB
NyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjYxMTNFMjcxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRjYzNDQ0NTYxMkE4ODVDODAwMDYxMkQ4IC8qIEFQSVNlY3VyaXR5T3JpZ2lu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjM0NDQ1
NTEyQTg4NUM4MDAwNjEyRDggLyogQVBJU2VjdXJpdHlPcmlnaW4uaCAqLzsgfTsKLQkJRjZBOTA4
MTMxMzNDMjA1MTAwODJDM0Y0IC8qIFdlYkNvb2tpZU1hbmFnZXJNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkE5MDgxMTEzM0MxRjNEMDA4MkMz
RjQgLyogV2ViQ29va2llTWFuYWdlck1hYy5tbSAqLzsgfTsKIAkJRjZENjMyQkMxMzNEMTk4MjAw
NzQzRDc3IC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDYzMkJBMTMzRDE4MUIwMDc0M0Q3NyAvKiBX
ZWJDb29raWVNYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CiAJCUZFRDNDMURDMUI0NDdFQUMwMEUw
RUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDNDMURBMUI0NDdBRTgwMEUwRUI3RiAv
KiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSAqLzsgfTsKIAkJRkVEQkRDRDYxRTY4
RDIwMDAwQTU5RjhGIC8qIFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVEQkRDRDQxRTY4RDE5QzAwQTU5RjhGIC8qIFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNo
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtMTEyMTAsMjAgKzExMTQyLDEzIEBACiAJ
CQkJOTkwRDI4QkMxQzY1MzlEQTAwOTg2OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDZBMkI2MDgxRTU2NzZBNjAwQzNERURBIC8qIEJhY2tncm91
bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTcw
ODc2QjE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNDE4OTdFRDcxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk0MUM4NTgxQTFGNTEzNkNBMDA2NUUwODUgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEzNUZCRDExRjRGQjgw
OTAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk0MTg5N0VEOTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyog
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MUZBRUMzQjFCMDY1NzY4MDAwOUM0RTcgLyogQ2hpbGRQcm9jZXNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTEzQzY2MTY2RUFCQjIwMDE0OUZD
QiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCODc4QjYxNjEz
MzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODM4OTFCNkQxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzE4MTczNjMyMDU4NDRBOTAwREZEQTY1IC8qIERpc3BsYXlMaW5r
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDMTQyNzAxMUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3du
bG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURGNjMxMjE4RTBCN0M4MDAzQTNFMkEgLyog
RG93bmxvYWRDbGllbnQubW0gaW4gU291cmNlcyAqLywKLQkJCQk1QzE0MjcxMzFDMjNGODlFMDBE
NDExODMgLyogRG93bmxvYWRDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTVDMTQyNzA2MUMy
M0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFEMjVFOTUxNjdBQjA4MTAwRUE5QkNEIC8qIERvd25sb2FkUHJveHlNYXAuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q2MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2Fk
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTI3Myw5ICsxMTE5
OCw3IEBACiAJCQkJMUFFNDk4NzkxMUZGN0ZBQTAwNDhCNDY0IC8qIEpTTlBPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYwQzM2NUUxOEMxMTBBNTAwRjYwN0Q3IC8qIExheWVyUmVwcmVz
ZW50YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUZERTY0NTE5NTEwQjU1MDBDNDhGRkEg
LyogTGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0gaW4gU291cmNlcyAqLywKLQkJCQk1Q0ZFQ0IwNDFF
MUVEMUNDMDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdBODIxRjRFMUUyRjY3QTgwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKLQkJCQk1QzE0MjcxRDFDMjNGOENG
MDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBODIxRjRB
MUUyRjY1RTkwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMTI4Myw3ICsxMTIwNiw2IEBACiAJCQkJNDEzMDc1QjMxREU4NUY1ODAwMzlFQzY5IC8q
IExpYldlYlJUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRkFGNUY5MUUzQzEw
MjUwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MTMwNzVBRTFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxREM0NTlCMUUzREJCMjgwMEIxMUY1MSAvKiBMaWJXZWJSVENTb2NrZXRDbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QjExREU4NUY1ODAwMzlFQzY5IC8qIExp
YldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRDhCQTExNzMx
QTM2MzAwMTQxREE0IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBOEM3MjhDMTczODQ3N0MwMDBBNjU1NCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTI5NCw3MCArMTEyMTYsMTggQEAKIAkJCQkxQTZG
QkQyOTExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2NhcGVQbHVnaW4uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFFNUI3RkIxMUU3QUVEMjAwQkE2NzY3IC8qIE5ldHNjYXBlUGx1Z2luTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFBNTg4OTMxMUVFNzA0MDAwNjFCODgyIC8qIE5ldHNjYXBlUGx1
Z2luU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzNzlEQjcyMjA3RTk0NzAwMDdEOEMz
MyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzMTU4
NzZDMjA3NkI3NjIwMDRCRjlGMyAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2EubW0gaW4g
U291cmNlcyAqLywKLQkJCQlFMTc5OEM3OTE2RTY4MTg4MDAyNDAxMzkgLyogTmV0d29ya0Jsb2JS
ZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNDQzNkVDQTFBMEQwM0ZBMDBFQUQyMDQg
LyogTmV0d29ya0NhY2hlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUU0OUQ0MEQ5MUFEM0ZCMjEw
MDY2QjdCOSAvKiBOZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlFNDg5RDI4QjFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29kZXJzLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTdDQUI5MzdBMUQ0NTlFNTEwMDcwRjU0MCAvKiBOZXR3b3JrQ2FjaGVD
b2RlcnNDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNDdEMUU5ODFCMDY0OUZCMDAyNjc2
QTggLyogTmV0d29ya0NhY2hlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNDJFMDYxNDFB
QTc1QjcwMDBCMTE2OTkgLyogTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJRTQxM0Y1OUYxQUMxQUY5RDAwMzQ1MzYwIC8qIE5ldHdvcmtDYWNoZUVudHJ5LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUU0Njk3Q0NEMUIyNUVCOEYwMDFCMEE2QyAvKiBOZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUU0MkUwNjBGMUFBNzUyMzQwMEIx
MTY5OSAvKiBOZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CUU0NDM2RUNEMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJODMxRUVCQkUxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4MzJBRTI1MzFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNDQzNkVEMDFBMEQwNDBCMDBFQUQyMDQgLyogTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4MzEwNDI4QzFCRDZCNjZG
MDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTMwMjU4M0QxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMwMjU4NDAxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdv
cmtDYXB0dXJlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MzAyNTg0MjFEQ0JCRDIy
MDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1MzAyNTg0NDFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXBsYXllci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk1MzAyNTgzQjFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0Nh
cHR1cmVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTNBMTY0QzE2MzBBOUJGMDA1
RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFERDlGMjgxNjM2N0RBMjAwMTU3OEU5IC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxRkJFODI2MjA2
REY3RkEwMDBGMDc0MSAvKiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MkYwNjBFMTE2NTQzMTg1MDBGMzI4MUIgLyogTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDZE
RjA2M0IxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk1MzIxNTk1NDFEQkFFNzFEMDA1NEFBM0MgLyogTmV0d29ya0Rh
dGFUYXNrLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzQkE0N0QwMURDMkVGNUUwMDRERjRBRCAv
KiBOZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDQkM5QjhEMUM2
NTI3OUMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBpbiBTb3VyY2VzICovLAot
CQkJCTUzMDI1ODQ2MURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJODM5OTAyMDIxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtM
b2FkLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxMDNGQkE1MjA2MUM4RkUwMEMyRUFGOCAvKiBO
ZXR3b3JrTG9hZENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFGMTJBOUYyMDY5QkI0
QzAwRkYyNkU4IC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFGMDYwRTExNjU0MzE4NTAwRjMyODNGIC8qIE5ldHdvcmtNRE5TUmVnaXN0ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE3OTU1NjgxNjI4NzZDRjAwRkE0M0I2IC8q
IE5ldHdvcmtQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdFQzRGMEZCMThFNEFDQkIw
MDgwNTZBRiAvKiBOZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4
M0RERUMxNjMwQkRGQzAwOEJFNUM3IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDMTQy
NkVDMUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkyREE5NDRCRDE4ODUxMUU3MDBFRDg2REIgLyogTmV0d29y
a1Byb2Nlc3NJT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MTc5NTU2NzE2Mjg3NkNCMDBGQTQz
QjYgLyogTmV0d29ya1Byb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTYzMTk5NDE2
Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRTE0QTk1NDkxNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNz
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNzk1NTZEMTYyODc3
QjEwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxM0ExNjNDMTYzMDg4RjYwMDVEN0QyMiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExMTQ1NUFEMjExRkNGQ0EwMENBOTM1QiAv
KiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTExNDU1
QjEyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTFGRDE4QjUxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTUyNTUxQTE3MDExODE5MDAzRDdBREIgLyog
TmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTVDMTQyNkVGMUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTMwNzVBQTFERTg1RjMwMDAzOUVDNjkgLyog
TmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4
NTAwRjMyODFFIC8qIE5ldHdvcmtSVENNb25pdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTQxREM0NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5l
dHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0
MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkg
LyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQz
MTg1MDBGMzI4MUQgLyogTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VF
bnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTMyMTU5NTMxREJBRTcxODAwNTRBQTND
IC8qIE5ldHdvcmtTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDMjBDQjlEMUJCMERD
RkEwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NUMwQjE3ODExRTdDOEMyNjAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUMwQjE3NzgxRTdDODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTI2MUUxNDhG
RjgyQzAwQkEyQTM5IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMUEyRUM1MDE0ODk5ODA1MDA4MTBENzEgLyogTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MTM3Niw5ICsxMTI0Niw3IEBACiAJCQkJMkQyQURGMTAxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBs
dWdpbkNob2ljZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDQyOUJGRDE3MjFF
MkM3MDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTJEMkFERjA5MTYzNjJERDUwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5t
bSBpbiBTb3VyY2VzICovLAotCQkJCTVDODVDNzg4MUMzRjIzQ0UwMDYxQTRGQSAvKiBQZW5kaW5n
RG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODMyRUQxOEIxRTJGRTE1NzAwNkJBNjRB
IC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNDYyMTA3RDgxRjM4REJEQjAwREQ3ODEwIC8qIFBpbmdMb2FkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNUUyMDAzMThFNzcwNTEwMDNFQzNFNSAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBMDQ5QjMxODBDQ0NEMzAwQUFGQTlFIC8qIFBs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDg3MTAxNjE4Mjg0
MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC0xMTQxMiw3ICsxMTI4MCw2IEBACiAJCQkJMUE4RUZBNzAxMjUyQjg0MTAwRjcwNjdG
IC8qIFBsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
ODI4NDREMTZCNTA4MUMwMEEyNzhGRSAvKiBQbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFBNkZCN0FFMTFFNjRCNjgwMERCMTM3MSAvKiBQbHVnaW5WaWV3LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTgzQTBFRDM0MUY3NDdDQ0QwMDMyOTlFQiAvKiBQcmVjb25u
ZWN0VGFzay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzcxNkE1QTE5NUI5MTA1MDBFRThCMUIg
LyogUHJvY2Vzc0Fzc2VydGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkY5NTM2NDE4RkY1
ODNDMDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFBRTExN0Y2MTFEQkIzMDkwMDk4MTYxNSAvKiBQcm9jZXNzTGF1bmNoZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0xMTQyNiw3ICsxMTI5Myw2IEBACiAJCQkJMUFBM0Q3NUIxNjUxQjQ0RjAwODcx
M0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjBDMzY1
ODE4QzA1MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRjI2NDlGMUExRkY5QzYwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3Jv
bGxpbmdQZXJmb3JtYW5jZURhdGEubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMUI3ODQ3MzE2M0Yy
NTNFMDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQTU3MDRGQjFCRTE3NTExMDA4NzRBRjEgLyogUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBQzEzMzdGMTg1OTBBRTQwMEYzRUMwNSAvKiBSZW1vdGVP
YmplY3RSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQzEzMzg1MTg1OTBDNDYwMEYz
RUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTExNjg5LDggKzExNTU1LDYgQEAKIAkJCQlBMUVBMDIzRjFEQUMzMURCMDA5NjAy
MUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxQTg0Q0UzMTI3RjM4NkIwMENBNkVBNCAvKiBXZWJDb250ZXh0TWVudVByb3h5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxQUNCQkExMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVu
dVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMzMwOTM0NEYxMzE1Qjk0RDAwOTdBN0JD
IC8qIFdlYkNvb2tpZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRjZBOTA4MTMxMzND
MjA1MTAwODJDM0Y0IC8qIFdlYkNvb2tpZU1hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzMzA5MzQ0NzEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ1NTEzMTVCOTc1MDA5N0E3QkMgLyog
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzQUExMDY2MTMx
RjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347454</attachid>
            <date>2018-08-18 21:31:59 -0700</date>
            <delta_ts>2018-08-20 12:24:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188719-20180818213158.patch</filename>
            <type>text/plain</type>
            <size>265860</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE4LTA4LTE4ICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB1bmlmaWVkIHNvdXJj
ZXMgdG8gYnVpbGQgYWxsIG9mIHRoZSBOZXR3b3JrUHJvY2VzcyBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg3MTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE9ibGl0ZXJhdGUgJ3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlJy4KKyAgICAgICAgI3VuZGVmIHNvbWUgdGhpbmdzIHRoYXQgYXJlIHJl
LXVzZWQgaW4gbXVsdGlwbGUgZmlsZXMuCisgICAgICAgIFJlbW92ZSBzb21lIG51bGxhYmlsaXR5
IHNwZWNpZmllcnMgZnJvbSBpbXBsZW1lbnRhdGlvbiBmaWxlcyBzbyB0aGF0CisgICAgICAgIHRo
ZXkgZG9uJ3QgdmlyYWxseSByZXF1aXJlIG51bGxhYmlsaXR5IHNwZWNpZmllcnMgaW4gbW9yZSBw
bGFjZXMuCisgICAgICAgIFN3aXRjaCBOZXR3b3JrUHJvY2Vzcy8qIHRvIHVuaWZpZWQgc291cmNl
cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdl
ck1hYy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlUmVwbGF5ZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0RhdGFUYXNrUmVwbGF5LmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFj
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDE4LTA4LTE4ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbd2F0Y2hPU10gTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIgc2hvdWxkIHVz
ZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzUw
MTUpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2
NiArMjEsNjYgQEAKIC8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKIC8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAotTmV0d29ya1Byb2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAgQG5v
LXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
QG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5j
cHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
Y3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcCBAbm8tdW5p
ZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIEBuby11bmlmeQotTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRDaGVja2VyLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBA
bm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBAbm8tdW5pZnkKLQotTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKLU5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzQ29jb2EuY3BwIEBuby11bmlmeQotTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgQG5vLXVuaWZ5
Ci1OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBAbm8tdW5p
ZnkKLU5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIEBuby11bmlm
eQotTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3Bw
IEBuby11bmlmeQotCi1OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlRXZlbnQu
Y3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFn
ZXIuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJl
Y29yZGVyLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVSZXBsYXllci5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlUmVzb3VyY2UuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3
b3JrRGF0YVRhc2tSZXBsYXkuY3BwIEBuby11bmlmeQotCi1OZXR3b3JrUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIuY3BwIEBuby11bmlmeQotCi1OZXR3b3JrUHJvY2Vzcy9DdXN0b21Q
cm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCBAbm8tdW5pZnkKLQotTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIEBuby11bmlmeQotTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAgQG5vLXVuaWZ5Ci0KLU5ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgQG5vLXVuaWZ5Ci0KLU5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuY3BwIEBuby11bmlmeQotTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIEBuby11bmlmeQotTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcCBAbm8tdW5pZnkKLU5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIEBuby11bmlmeQotTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgQG5vLXVuaWZ5Ci1OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIEBuby11bmlmeQotTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwIEBuby11bmlmeQorTmV0d29ya1By
b2Nlc3MvTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCitOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCitOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKK05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCitOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCitO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKK05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0
cmVhbS5jcHAKK05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorTmV0d29ya1Byb2Nlc3MvUHJl
Y29ubmVjdFRhc2suY3BwCisKK05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAKK05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAor
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKK05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKK05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUJsb2JTdG9yYWdlLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
Q29kZXJzLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzQ29jb2Eu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlS2V5LmNwcAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
Y3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCisKK05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVFdmVudC5jcHAKK05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3
b3JrQ2FwdHVyZVJlcGxheWVyLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2Fw
dHVyZVJlc291cmNlLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tS
ZXBsYXkuY3BwCisKK05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAK
KworTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlci5jcHAKKworTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCisKK05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0
d29ya0Jsb2JSZWdpc3RyeS5jcHAKKworTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldENsaWVudC5jcHAKK05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVy
LmNwcAorTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAorTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKK05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Nv
Y2tldC5jcHAKIAogUGxhdGZvcm0vTG9nZ2luZy5jcHAKIFBsYXRmb3JtL01vZHVsZS5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjEsMjkgKzIxLDI5IEBACiAv
LyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCiAvLyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLU5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbSBAbm8tdW5pZnkKLU5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIEBuby11bmlm
eQorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCitOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQogCi1OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrQWN0aXZpdHlUcmFja2VyQ29jb2EubW0gQG5vLXVuaWZ5Ci1OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBAbm8tdW5pZnkKLU5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gQG5vLXVuaWZ5Ci1OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIEBuby11bmlmeQorTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0FjdGl2aXR5VHJhY2tlckNvY29hLm1tCitOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbQorTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQogCi1OZXR3b3JrUHJvY2Vzcy9Db29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFj
Lm1tIEBuby11bmlmeQorTmV0d29ya1Byb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdl
ck1hYy5tbQogCi1OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gQG5vLXVuaWZ5CitOZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KIAot
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0gQG5vLXVuaWZ5
CitOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQogCi1OZXR3
b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQ
b2ludC5tbSBAbm8tdW5pZnkKK05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZp
Y2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tCiAKLU5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbSBAbm8tdW5pZnkKK05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQogCi1OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0gQG5v
LXVuaWZ5Ci1OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gQG5v
LXVuaWZ5CitOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KK05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQogCi1OZXR3b3JrUHJvY2Vzcy93
YXRjaG9zL05ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0gQG5vLXVuaWZ5Ci1OZXR3b3JrUHJv
Y2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tIEBuby11bmlmeQorTmV0d29y
a1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tCitOZXR3b3JrUHJv
Y2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tCiAKIFBsYXRmb3JtL2NmL01v
ZHVsZUNGLmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCShyZXZpc2lvbiAyMzUw
MTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDYgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXI6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcihQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycywgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIENvbXBs
ZXRpb25DYWxsYmFjayYmIGNvbXBsZXRpb25DYWxsYmFjaykKICAgICA6IG1fcGFyYW1ldGVycyhX
VEZNb3ZlKHBhcmFtZXRlcnMpKQogICAgICwgbV9jb21wbGV0aW9uQ2FsbGJhY2soV1RGTW92ZShj
b21wbGV0aW9uQ2FsbGJhY2spKQpAQCAtNTUsNyArNTMsNyBAQCBOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXI6On5OZXR3b3JrQ09SCiAgICAgICAgIG1fdGFzay0+Y2FuY2VsKCk7CiAgICAgfQog
ICAgIGlmIChtX2NvbXBsZXRpb25DYWxsYmFjaykKLSAgICAgICAgbV9jb21wbGV0aW9uQ2FsbGJh
Y2soUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KTsK
KyAgICAgICAgbV9jb21wbGV0aW9uQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdl
YkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KCkKQEAgLTY3LDEwICs2
NSwxMCBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6c3RhcnRQCiAgICAgbG9h
ZFBhcmFtZXRlcnMucmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0
KG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QsIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4s
IG1fcGFyYW1ldGVycy5yZWZlcnJlcik7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkRm9sbG93
UmVkaXJlY3RzID0gZmFsc2U7CiAgICAgaWYgKCFtX3BhcmFtZXRlcnMudXNlckFnZW50LmlzTnVs
bCgpKQotICAgICAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6VXNlckFnZW50LCBtX3BhcmFtZXRlcnMudXNlckFnZW50KTsKKyAgICAg
ICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRU
UEhlYWRlck5hbWU6OlVzZXJBZ2VudCwgbV9wYXJhbWV0ZXJzLnVzZXJBZ2VudCk7CiAKICAgICBp
ZiAobV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MpCi0gICAgICAgIG1fbG9h
ZEluZm9ybWF0aW9uID0gTmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24geyBOZXR3b3JrVHJh
bnNhY3Rpb25JbmZvcm1hdGlvbjo6VHlwZTo6UHJlZmxpZ2h0LCBsb2FkUGFyYW1ldGVycy5yZXF1
ZXN0LCB7IH0sIHsgfSB9OworICAgICAgICBtX2xvYWRJbmZvcm1hdGlvbiA9IFdlYkNvcmU6Ok5l
dHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uIHsgV2ViQ29yZTo6TmV0d29ya1RyYW5zYWN0aW9u
SW5mb3JtYXRpb246OlR5cGU6OlByZWZsaWdodCwgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCwgeyB9
LCB7IH0gfTsKIAogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2Vy
OjpuZXR3b3JrU2Vzc2lvbihsb2FkUGFyYW1ldGVycy5zZXNzaW9uSUQpKSB7CiAgICAgICAgIG1f
dGFzayA9IE5ldHdvcmtEYXRhVGFzazo6Y3JlYXRlKCpuZXR3b3JrU2Vzc2lvbiwgKnRoaXMsIFdU
Rk1vdmUobG9hZFBhcmFtZXRlcnMpKTsKQEAgLTg2LDcgKzg0LDcgQEAgdm9pZCBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXI6OndpbGxQZQogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24iKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwotICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0LnVybCgpLCAiUHJl
ZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpBY2Nlc3NDb250cm9sIH0pOworICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtX3Bh
cmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0LnVybCgpLCAiUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5v
dCBzdWNjZXNzZnVsIl9zLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250
cm9sIH0pOwogfQogCiB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTk0LDgg
KzkyLDggQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlYwogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVDaGFsbGVuZ2UsIGF1dGhlbnRpY2F0aW9u
IHNjaGVtZTogJXUiLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuYXV0aGVudGljYXRpb25T
Y2hlbWUoKSk7CiAKICAgICBhdXRvIHNjaGVtZSA9IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KS5hdXRoZW50aWNhdGlvblNjaGVtZSgpOwotICAgIGJvb2wgaXNUTFNIYW5kc2hha2UgPSBzY2hl
bWUgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1
YXRpb25SZXF1ZXN0ZWQKLSAgICAgICAgfHwgc2NoZW1lID09IFByb3RlY3Rpb25TcGFjZUF1dGhl
bnRpY2F0aW9uU2NoZW1lQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0ZWQ7CisgICAgYm9vbCBpc1RM
U0hhbmRzaGFrZSA9IHNjaGVtZSA9PSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZAorICAgICAgICB8fCBzY2hl
bWUgPT0gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVDbGllbnRD
ZXJ0aWZpY2F0ZVJlcXVlc3RlZDsKIAogICAgIGlmICghaXNUTFNIYW5kc2hha2UpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
VXNlQ3JlZGVudGlhbCwgeyB9KTsKQEAgLTExMyw3ICsxMTEsNyBAQCB2b2lkIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjCiAgICAgICAgIG1fbG9hZEluZm9ybWF0aW9uLnJlc3Bv
bnNlID0gcmVzcG9uc2U7CiAKICAgICBtX3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAogdm9pZCBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpCkBAIC0xMzAsNyArMTI4LDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXI6OmRpZENvbQogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRDb21wbGV0ZVdp
dGhFcnJvciIpOwogICAgICAgICBhdXRvIGVycm9yID0gcHJlZmxpZ2h0RXJyb3I7CiAgICAgICAg
IGlmIChlcnJvci5pc051bGwoKSB8fCBlcnJvci5pc0dlbmVyYWwoKSkKLSAgICAgICAgICAgIGVy
cm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCk7CisgICAgICAg
ICAgICBlcnJvci5zZXRUeXBlKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0Nv
bnRyb2wpOwogCiAgICAgICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTQxLDEwICsxMzksMTAgQEAgdm9pZCBOZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXI6OmRpZENvbQogICAgIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uOwogICAg
IGlmICghdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBtX3BhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIG1f
cGFyYW1ldGVycy5zb3VyY2VPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pKSB7CiAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZENvbXBsZXRlLCBBY2Nlc3NDb250cm9sIGVycm9yOiAl
cyIsIGVycm9yRGVzY3JpcHRpb24udXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1fY29tcGxldGlv
bkNhbGxiYWNrKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBt
X3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBlcnJvckRlc2NyaXB0aW9uLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOworICAgICAgICBtX2NvbXBsZXRpb25D
YWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCwgMCwgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdC51cmwoKSwgZXJyb3JE
ZXNjcmlwdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2NvbXBsZXRpb25DYWxsYmFjayhSZXNv
dXJjZUVycm9yIHsgfSk7CisgICAgbV9jb21wbGV0aW9uQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciB7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCkKQEAgLTE1NCwxOSArMTUyLDIxIEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyOjpkaWRTZW4KIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjp3YXNC
bG9ja2VkKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3YXNCbG9ja2VkIik7Ci0g
ICAgbV9jb21wbGV0aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksICJDT1JTLXBy
ZWZsaWdodCByZXF1ZXN0IHdhcyBibG9ja2VkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nl
c3NDb250cm9sIH0pOworICAgIG1fY29tcGxldGlvbkNhbGxiYWNrKFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtX3BhcmFtZXRl
cnMub3JpZ2luYWxSZXF1ZXN0LnVybCgpLCAiQ09SUy1wcmVmbGlnaHQgcmVxdWVzdCB3YXMgYmxv
Y2tlZCJfcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsK
IH0KIAogdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmNhbm5vdFNob3dVUkwoKQog
ewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhbm5vdFNob3dVUkwiKTsKLSAgICBtX2Nv
bXBsZXRpb25DYWxsYmFjayhSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdC51cmwoKSwgIlByZWZsaWdodCByZXNw
b25zZSB3YXMgYmxvY2tlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9
KTsKKyAgICBtX2NvbXBsZXRpb25DYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2Vi
Q29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9wYXJhbWV0ZXJzLm9yaWdpbmFs
UmVxdWVzdC51cmwoKSwgIlByZWZsaWdodCByZXNwb25zZSB3YXMgYmxvY2tlZCJfcywgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKIH0KIAotTmV0d29ya1Ry
YW5zYWN0aW9uSW5mb3JtYXRpb24gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjp0YWtlSW5m
b3JtYXRpb24oKQorV2ViQ29yZTo6TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24gTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyOjp0YWtlSW5mb3JtYXRpb24oKQogewogICAgIEFTU0VSVCht
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgcmV0dXJuIFdURk1v
dmUobV9sb2FkSW5mb3JtYXRpb24pOwogfQogCi19IC8vIE5hbWVzcGFjZSBXZWJLaXQKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eVBvbGljeS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIAotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBSZWY8TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMjAzLDcgKzIw
MSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFIKIHsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0U3RyZWFtKFVS
TCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24s
IHVpbnQ2NF90IGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVTb2NrZXRTdHJlYW0oV2ViQ29yZTo6VVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsK
ICAgICBBU1NFUlQoIW1fbmV0d29ya1NvY2tldFN0cmVhbXMuY29udGFpbnMoaWRlbnRpZmllcikp
OwogICAgIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsK
QEAgLTI2NCw3ICsyNjIsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpw
ZXJmCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvYWRQaW5nKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFtjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uLmNvcHlSZWYoKSwg
aWRlbnRpZmllciA9IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXJdIChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIHsKKyAgICBhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gW2Nvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24uY29weVJlZigp
LCBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcl0gKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkgewogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRpZEZpbmlzaFBpbmdMb2FkKGlkZW50aWZpZXIsIGVycm9yLCByZXNw
b25zZSksIDApOwogICAgIH07CiAKQEAgLTMxOSw3ICszMTcsNyBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwcmVmCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpwcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICNpZiBFTkFCTEUoU0VS
VkVSX1BSRUNPTk5FQ1QpCi0gICAgbmV3IFByZWNvbm5lY3RUYXNrKFdURk1vdmUocGFyYW1ldGVy
cyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBw
cmVjb25uZWN0aW9uSWRlbnRpZmllcl0gKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7Cisg
ICAgbmV3IFByZWNvbm5lY3RUYXNrKFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBwcmVjb25uZWN0aW9uSWRlbnRp
Zmllcl0gKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIGRp
ZEZpbmlzaFByZWNvbm5lY3Rpb24oaWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0pOwogI2Vsc2UK
QEAgLTMyOCw3ICszMjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpw
cmVjCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
RmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBpZiAoIW1f
Y29ubmVjdGlvbi0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0zMzYsMzIgKzMzNCwz
MiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRGCiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRpZEZpbmlz
aFByZWNvbm5lY3Rpb24ocHJlY29ubmVjdGlvbklkZW50aWZpZXIsIGVycm9yKSwgMCk7CiB9CiAK
LXN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKK3N0YXRpYyBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0
b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vz
c2lvbklELmlzVmFsaWQoKSk7CiAgICAgaWYgKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAg
ICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICAgICAgcmV0dXJuICpzdG9y
YWdlU2Vzc2lvbjsKIAogICAgICAgICAvLyBTb21lIHJlcXVlc3RzIHdpdGggcHJpdmF0ZSBicm93
c2luZyBtb2RlIHJlcXVlc3RlZCBtYXkgc3RpbGwgYmUgY29taW5nIHNob3J0bHkgYWZ0ZXIgTmV0
d29ya1Byb2Nlc3Mgd2FzIHRvbGQgdG8gZGVzdHJveSBpdHMgc2Vzc2lvbi4KICAgICAgICAgLy8g
RklYTUU6IEZpbmQgYSB3YXkgdG8gdHJhY2sgcHJpdmF0ZSBicm93c2luZyBzZXNzaW9ucyBtb3Jl
IHJpZ29yb3VzbHkuCiAgICAgICAgIExPR19FUlJPUigiTm9uLWRlZmF1bHQgc3RvcmFnZSBzZXNz
aW9uIHdhcyByZXF1ZXN0ZWQsIGJ1dCB0aGVyZSB3YXMgbm8gc2Vzc2lvbiBmb3IgaXQuIFBsZWFz
ZSBmaWxlIGEgYnVnIHVubGVzcyB5b3UganVzdCBkaXNhYmxlZCBwcml2YXRlIGJyb3dzaW5nLCBp
biB3aGljaCBjYXNlIGl0J3MgYW4gZXhwZWN0ZWQgcmFjZS4iKTsKICAgICB9Ci0gICAgcmV0dXJu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgcmV0
dXJuIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxv
YWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCiB7
CiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0
RG93bmxvYWQodGhpcywgc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWRO
YW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1h
aW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCk7CiAgICAgLy8gSW4gY2FzZSBhIHJlc3BvbnNlIGlzIHNlcnZlZCBmcm9tIHNlcnZpY2Ug
d29ya2VyLCB3ZSBkbyBub3QgaGF2ZSB5ZXQgdGhlIGFiaWxpdHkgdG8gY29udmVydCB0aGUgbG9h
ZC4KLSAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyIHx8IHJlc3BvbnNlLnNvdXJj
ZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlcikgeworICAgIGlm
ICghbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgfHwgcmVzcG9uc2Uuc291cmNlKCkgPT0gV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKSB7CiAgICAgICAg
IG5ldHdvcmtQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQodGhpcywgc2Vz
c2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTM3NSw3ICszNzMsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252
CiAgICAgbG9hZGVyLT5jb252ZXJ0VG9Eb3dubG9hZChkb3dubG9hZElELCByZXF1ZXN0LCByZXNw
b25zZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNG
b3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29raWVT
dHJpbmcsIGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU3RyaW5nJiBjb29r
aWVTdHJpbmcsIGJvb2wmIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCkKIHsKICAgICBhdXRvJiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIHN0ZDo6
dGllKGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSA9IG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKQEAgLTM4NSw3ICszODMsNyBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29rCiAjZW5kaWYKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENv
b2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2V0Q29va2llc0Zyb21ET00o
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3Ry
aW5nKTsKQEAgLTQwMCwzNCArMzk4LDM0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNvb2sKICAgICByZXN1bHQgPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLmNvb2tp
ZXNFbmFibGVkKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFN0cmluZyYgY29va2llU3RyaW5nLCBib29sJiBzZWN1cmVDb29raWVzQWNjZXNzZWQp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTdHJpbmcmIGNvb2tpZVN0cmluZywgYm9vbCYgc2Vj
dXJlQ29va2llc0FjY2Vzc2VkKQogewogICAgIHN0ZDo6dGllKGNvb2tpZVN0cmluZywgc2VjdXJl
Q29va2llc0FjY2Vzc2VkKSA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkuY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgcmVzdWx0KQogewogICAgIHN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkuZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCByZXN1bHQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAg
ICBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUp
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogewogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBleHRlbnNpb24gPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShleHRlbnNpb25IYW5kbGUpKTsKIAogICAgIE5ldHdvcmtC
bG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodGhpcywgdXJsLCBw
YXRoLCBXVEZNb3ZlKGV4dGVuc2lvbiksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBW
ZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+JiYgYmxvYlBhcnRz
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6
OnNpbmdsZXRvbigpLnJlZ2lzdGVyQmxvYlVSTCh0aGlzLCB1cmwsIFdURk1vdmUoYmxvYlBhcnRz
KSwgY29udGVudFR5cGUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgYm9vbCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hlY2spCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgYm9vbCBzaG91bGRCeXBhc3NDb25u
ZWN0aW9uQ2hlY2spCiB7CiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkucmVn
aXN0ZXJCbG9iVVJMKHRoaXMsIHVybCwgc3JjVVJMLCBzaG91bGRCeXBhc3NDb25uZWN0aW9uQ2hl
Y2spOwogfQpAQCAtNDUxLDMxICs0NDksMzEgQEAgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4gTgogICAgIHJldHVybiBtX2Jsb2JEYXRhRmlsZVJlZmVyZW5jZXMuZ2V0KHBh
dGgpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7CiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCku
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodGhpcywgdXJsLCBzcmNVUkwsIGZp
bGVCYWNrZWRQYXRoLCBjb250ZW50VHlwZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwsIGludDY0X3Qgc3RhcnQs
IGludDY0X3QgZW5kKQogewogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLnJl
Z2lzdGVyQmxvYlVSTEZvclNsaWNlKHRoaXMsIHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyQmxvYlVSTCh0aGlzLCB1cmwpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpibG9iU2l6ZShjb25zdCBVUkwm
IHVybCwgdWludDY0X3QmIHJlc3VsdFNpemUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgdWludDY0X3QmIHJlc3Vs
dFNpemUpCiB7CiAgICAgcmVzdWx0U2l6ZSA9IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRv
bigpLmJsb2JTaXplKHRoaXMsIHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlUmVmZXJlbmNlczsKKyAgICBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IGZpbGVSZWZlcmVuY2VzOwog
ICAgIGZvciAoYXV0byYgdXJsIDogYmxvYlVSTHMpCi0gICAgICAgIGZpbGVSZWZlcmVuY2VzLmFw
cGVuZFZlY3RvcihOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5maWxlc0luQmxvYigq
dGhpcywgeyBQYXJzZWRVUkxTdHJpbmcsIHVybCB9KSk7CisgICAgICAgIGZpbGVSZWZlcmVuY2Vz
LmFwcGVuZFZlY3RvcihOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5maWxlc0luQmxv
YigqdGhpcywgeyBXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHVybCB9KSk7CiAKICAgICBmb3Ig
KGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNlcykKICAgICAgICAgZmlsZS0+cHJlcGFyZUZvckZp
bGVBY2Nlc3MoKTsKQEAgLTUxNCw3ICs1MTIsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjplbnN1CiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1v
dmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCiB7CiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFH
RV9QQVJUSVRJT05JTkcpCi0gICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
c2Vzc2lvbklEKTsKQEAgLTUyNiw3ICs1MjQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZW1vCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1v
dmVTdG9yYWdlQWNjZXNzRm9yQWxsRnJhbWVzT25QYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlEKQogewogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElU
SU9OSU5HKQotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0byogc3RvcmFnZVNl
c3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9yYWdlQWNjZXNzRm9y
QWxsRnJhbWVzT25QYWdlKHBhZ2VJRCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZXNzaW9u
SUQpOwpAQCAtNTM2LDE3ICs1MzQsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVtbwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGlj
eTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2ViQ29yZTo6U2Vj
dXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eVBvbGljeTo6
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoc291cmNlT3JpZ2luKS5nZXQoKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgV2ViQ29yZTo6U2Vj
dXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbikuZ2V0KCksIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdp
bkFjY2Vzc1doaXRlbGlzdHMoKQogewotICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKTsKKyAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5
VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNv
dXJjZUxvYWQodWludDY0X3QgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNl
SUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjM1MDE1KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlcigpID0gZGVmYXVsdDsKQEAgLTcyLDcgKzcwLDcgQEAgdm9pZCBOZXR3b3JrQ29udGVu
dFJ1bGVMaXN0TWFuYWdlcjo6YWRkQwogICAgIGZvciAoY29uc3QgYXV0byYgY29udGVudFJ1bGVM
aXN0IDogY29udGVudFJ1bGVMaXN0cykgewogICAgICAgICBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEgY29udGVudFJ1bGVMaXN0RGF0YSA9IGNvbnRlbnRSdWxlTGlzdC5zZWNvbmQ7CiAg
ICAgICAgIGF1dG8gY29tcGlsZWRDb250ZW50UnVsZUxpc3QgPSBXZWJDb21waWxlZENvbnRlbnRS
dWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoY29udGVudFJ1bGVMaXN0RGF0YSkpOwotICAgICAgICBi
YWNrZW5kLmFkZENvbnRlbnRFeHRlbnNpb24oY29udGVudFJ1bGVMaXN0LmZpcnN0LCBXVEZNb3Zl
KGNvbXBpbGVkQ29udGVudFJ1bGVMaXN0KSwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb246OlNob3VsZENvbXBpbGVDU1M6Ok5vKTsKKyAgICAgICAgYmFja2VuZC5hZGRDb250ZW50
RXh0ZW5zaW9uKGNvbnRlbnRSdWxlTGlzdC5maXJzdCwgV1RGTW92ZShjb21waWxlZENvbnRlbnRS
dWxlTGlzdCksIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjpT
aG91bGRDb21waWxlQ1NTOjpObyk7CiAgICAgfQogCiAgICAgYXV0byBwZW5kaW5nQ2FsbGJhY2tz
ID0gbV9wZW5kaW5nQ2FsbGJhY2tzLnRha2UoaWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCShyZXZpc2lvbiAy
MzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrRGF0
YVRhc2tDdXJsLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBSZWY8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrRGF0YVRhc2s6OmNy
ZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGll
bnQsIGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTY0LDcgKzYy
LDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcgogI2VuZGlmCiB9
CiAKLU5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQorTmV0d29ya0Rh
dGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtE
YXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QsIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAg
OiBtX2ZhaWx1cmVUaW1lcigqdGhpcywgJk5ldHdvcmtEYXRhVGFzazo6ZmFpbHVyZVRpbWVyRmly
ZWQpCiAgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKICAgICAsIG1fY2xpZW50KCZjbGllbnQpCkBA
IC0xMDEsMTQgKzk5LDE0IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpzY2hlZHVsZUZhaWx1cmUo
RmEKICAgICBtX2ZhaWx1cmVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBOZXR3
b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBpZiAocmVzcG9uc2UuaXNIVFRQ
MDkoKSkgewogICAgICAgICBhdXRvIHVybCA9IHJlc3BvbnNlLnVybCgpOwogICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKLSAgICAgICAgaWYgKHBvcnQg
JiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgp
KSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUp
OworICAgICAgICBpZiAocG9ydCAmJiAhV2ViQ29yZTo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29s
KHBvcnQudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgICAgICBjYW5j
ZWwoKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcih7IFN0cmlu
ZygpLCAwLCB1cmwsICJDYW5jZWxsZWQgbG9hZCBmcm9tICciICsgdXJsLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSBpdCBpcyB1c2luZyBIVFRQLzAuOS4iIH0p
OwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCShyZXZpc2lvbiAyMzUwMTUpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw2IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBidWZmZXJTaXpl
ID0gNTEyICogMTAyNDsKQEAgLTcxLDE1ICs2OSwxNSBAQCBzdGF0aWMgY29uc3QgY2hhciogaHR0
cEludGVybmFsRXJyb3JUZXh0CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9i
UmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIjsKIAotTmV0d29ya0RhdGFUYXNr
QmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29y
a0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgY29uc3QgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYgZmlsZVJlZmVyZW5jZXMpCi0g
ICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsIGZhbHNlLCBmYWxzZSkKLSAgICAsIG1fc3RyZWFtKHN0
ZDo6bWFrZV91bmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCitOZXR3b3JrRGF0YVRhc2tC
bG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZm
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBm
aWxlUmVmZXJlbmNlcykKKyAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJl
cXVlc3QsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2Us
IGZhbHNlKQorICAgICwgbV9zdHJlYW0oc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpBc3luY0Zp
bGVTdHJlYW0+KCp0aGlzKSkKICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoZmlsZVJlZmVyZW5jZXMp
CiB7CiAgICAgZm9yIChhdXRvJiBmaWxlUmVmZXJlbmNlIDogbV9maWxlUmVmZXJlbmNlcykKICAg
ICAgICAgZmlsZVJlZmVyZW5jZS0+cHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKIAotICAgIG1fYmxv
YkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdl
dEJsb2JEYXRhRnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICBtX2Jsb2JEYXRhID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCY+KFdlYkNvcmU6OmJsb2JSZWdpc3RyeSgp
KS5nZXRCbG9iRGF0YUZyb21VUkwocmVxdWVzdC51cmwoKSk7CiAKICAgICBtX3Nlc3Npb24tPnJl
Z2lzdGVyTmV0d29ya0RhdGFUYXNrKCp0aGlzKTsKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIl
cCAtIENyZWF0ZWQgTmV0d29ya0RhdGFUYXNrQmxvYiBmb3IgJXMiLCB0aGlzLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMTM5LDggKzEzNyw4IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrQmxvYjo6cmVzdW1lKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFBhcnNl
IHRoZSAiUmFuZ2UiIGhlYWRlciB3ZSBjYXJlIGFib3V0LgotICAgICAgICBTdHJpbmcgcmFuZ2Ug
PSBtX2ZpcnN0UmVxdWVzdC5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlKTsK
LSAgICAgICAgaWYgKCFyYW5nZS5pc0VtcHR5KCkgJiYgIXBhcnNlUmFuZ2UocmFuZ2UsIG1fcmFu
Z2VPZmZzZXQsIG1fcmFuZ2VFbmQsIG1fcmFuZ2VTdWZmaXhMZW5ndGgpKSB7CisgICAgICAgIFN0
cmluZyByYW5nZSA9IG1fZmlyc3RSZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQ
SGVhZGVyTmFtZTo6UmFuZ2UpOworICAgICAgICBpZiAoIXJhbmdlLmlzRW1wdHkoKSAmJiAhV2Vi
Q29yZTo6cGFyc2VSYW5nZShyYW5nZSwgbV9yYW5nZU9mZnNldCwgbV9yYW5nZUVuZCwgbV9yYW5n
ZVN1ZmZpeExlbmd0aCkpIHsKICAgICAgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KEVycm9yOjpSYW5nZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MTg3LDEyICsxODUsMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpnZXRTaXplRm9yTmV4
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVt
ID0gbV9ibG9iRGF0YS0+aXRlbXMoKS5hdChtX3NpemVJdGVtQ291bnQpOworICAgIGNvbnN0IFdl
YkNvcmU6OkJsb2JEYXRhSXRlbSYgaXRlbSA9IG1fYmxvYkRhdGEtPml0ZW1zKCkuYXQobV9zaXpl
SXRlbUNvdW50KTsKICAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBCbG9iRGF0
YUl0ZW06OlR5cGU6OkRhdGE6CisgICAgY2FzZSBXZWJDb3JlOjpCbG9iRGF0YUl0ZW06OlR5cGU6
OkRhdGE6CiAgICAgICAgIGRpZEdldFNpemUoaXRlbS5sZW5ndGgoKSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlOgorICAgIGNhc2UgV2ViQ29yZTo6
QmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxlOgogICAgICAgICAvLyBGaWxlcyBrbm93IHRoZWlyIHNp
emVzLCBidXQgYXNraW5nIHRoZSBzdHJlYW0gdG8gdmVyaWZ5IHRoYXQgdGhlIGZpbGUgd2Fzbid0
IG1vZGlmaWVkLgogICAgICAgICBtX3N0cmVhbS0+Z2V0U2l6ZShpdGVtLmZpbGUoKS0+cGF0aCgp
LCBpdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpOwogICAgICAgICBicmVh
azsKQEAgLTIxNyw3ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZEdldFNp
emUobG9uCiAgICAgfQogCiAgICAgLy8gVGhlIHNpemUgcGFzc2VkIGJhY2sgaXMgdGhlIHNpemUg
b2YgdGhlIHdob2xlIGZpbGUuIElmIHRoZSB1bmRlcmx5aW5nIGl0ZW0gaXMgYSBzbGljZWQgZmls
ZSwgd2UgbmVlZCB0byB1c2UgdGhlIHNsaWNlIGxlbmd0aC4KLSAgICBjb25zdCBCbG9iRGF0YUl0
ZW0mIGl0ZW0gPSBtX2Jsb2JEYXRhLT5pdGVtcygpLmF0KG1fc2l6ZUl0ZW1Db3VudCk7CisgICAg
Y29uc3QgV2ViQ29yZTo6QmxvYkRhdGFJdGVtJiBpdGVtID0gbV9ibG9iRGF0YS0+aXRlbXMoKS5h
dChtX3NpemVJdGVtQ291bnQpOwogICAgIHNpemUgPSBpdGVtLmxlbmd0aCgpOwogCiAgICAgLy8g
Q2FjaGUgdGhlIHNpemUuCkBAIC0yNjgsMTggKzI2NiwxOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0Jsb2I6OmRpc3BhdGNoRGlkUmVjCiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJXAgLSBOZXR3
b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgldSkiLCB0aGlzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZXJyb3JDb2RlKSk7CiAKICAgICBSZWY8TmV0d29ya0RhdGFU
YXNrQmxvYj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZShtX2ZpcnN0UmVxdWVzdC51cmwoKSwgZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8g
InRleHQvcGxhaW4iIDogbV9ibG9iRGF0YS0+Y29udGVudFR5cGUoKSwgZXJyb3JDb2RlICE9IEVy
cm9yOjpOb0Vycm9yID8gMCA6IG1fdG90YWxSZW1haW5pbmdTaXplLCBTdHJpbmcoKSk7CisgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShtX2ZpcnN0UmVxdWVzdC51cmwoKSwg
ZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gInRleHQvcGxhaW4iIDogbV9ibG9iRGF0YS0+
Y29udGVudFR5cGUoKSwgZXJyb3JDb2RlICE9IEVycm9yOjpOb0Vycm9yID8gMCA6IG1fdG90YWxS
ZW1haW5pbmdTaXplLCBTdHJpbmcoKSk7CiAgICAgc3dpdGNoIChlcnJvckNvZGUpIHsKICAgICBj
YXNlIEVycm9yOjpOb0Vycm9yOiB7CiAgICAgICAgIGJvb2wgaXNSYW5nZVJlcXVlc3QgPSBtX3Jh
bmdlT2Zmc2V0ICE9IGtQb3NpdGlvbk5vdFNwZWNpZmllZDsKICAgICAgICAgcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c0NvZGUoaXNSYW5nZVJlcXVlc3QgPyBodHRwUGFydGlhbENvbnRlbnQgOiBodHRw
T0spOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChpc1JhbmdlUmVxdWVzdCA/
IGh0dHBQYXJ0aWFsQ29udGVudFRleHQgOiBodHRwT0tUZXh0KTsKIAotICAgICAgICByZXNwb25z
ZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBtX2Jsb2JE
YXRhLT5jb250ZW50VHlwZSgpKTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoLCBTdHJpbmc6Om51bWJlcihtX3RvdGFsUmVt
YWluaW5nU2l6ZSkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoV2ViQ29y
ZTo6SFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgp
KTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFk
ZXJOYW1lOjpDb250ZW50TGVuZ3RoLCBTdHJpbmc6Om51bWJlcihtX3RvdGFsUmVtYWluaW5nU2l6
ZSkpOwogCiAgICAgICAgIGlmIChpc1JhbmdlUmVxdWVzdCkKLSAgICAgICAgICAgIHJlc3BvbnNl
LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlLCBQYXJzZWRD
b250ZW50UmFuZ2UobV9yYW5nZU9mZnNldCwgbV9yYW5nZUVuZCwgbV90b3RhbFNpemUpLmhlYWRl
clZhbHVlKCkpOworICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKFdlYkNv
cmU6OkhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UsIFdlYkNvcmU6OlBhcnNlZENvbnRlbnRS
YW5nZShtX3JhbmdlT2Zmc2V0LCBtX3JhbmdlRW5kLCBtX3RvdGFsU2l6ZSkuaGVhZGVyVmFsdWUo
KSk7CiAgICAgICAgIC8vIEZJWE1FOiBJZiBhIHJlc291cmNlIGlkZW50aWZpZWQgd2l0aCBhIGJs
b2I6IFVSTCBpcyBhIEZpbGUgb2JqZWN0LCB1c2VyIGFnZW50cyBtdXN0IHVzZSB0aGF0IGZpbGUn
cyBuYW1lIGF0dHJpYnV0ZSwKICAgICAgICAgLy8gYXMgaWYgdGhlIHJlc3BvbnNlIGhhZCBhIENv
bnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyIHdpdGggdGhlIGZpbGVuYW1lIHBhcmFtZXRlciBzZXQg
dG8gdGhlIEZpbGUncyBuYW1lIGF0dHJpYnV0ZS4KICAgICAgICAgLy8gTm90YWJseSwgdGhpcyB3
aWxsIGFmZmVjdCBhIG5hbWUgc3VnZ2VzdGVkIGluICJGaWxlIFNhdmUgQXMiLgpAQCAtMjk5LDcg
KzI5Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlzcGF0Y2hEaWRSZWMKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9u
c2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGVycm9y
Q29kZV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgeworICAgIGRpZFJlY2VpdmVSZXNwb25z
ZShXVEZNb3ZlKHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBlcnJvckNvZGVdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24p
IHsKICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tCbG9i
OjpkaWRSZWNlaXZlUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXIgKCV1KSIsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihwb2xpY3lBY3Rpb24pKTsKIAogICAgICAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkgewpAQCAt
MzEzLDE2ICszMTEsMTYgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJl
YwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKLSAgICAgICAg
Y2FzZSBQb2xpY3lBY3Rpb246OlVzZToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rp
b246OlVzZToKICAgICAgICAgICAgIG1fYnVmZmVyLnJlc2l6ZShidWZmZXJTaXplKTsKICAgICAg
ICAgICAgIHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBvbGljeUFj
dGlvbjo6U3VzcGVuZDoKLSAgICAgICAgICAgIExPR19FUlJPUigiUG9saWN5QWN0aW9uOjpTdXNw
ZW5kIGVuY291bnRlcmVkIC0gVHJlYXRpbmcgYXMgUG9saWN5QWN0aW9uOjpJZ25vcmUgZm9yIG5v
dyIpOworICAgICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6U3VzcGVuZDoKKyAgICAg
ICAgICAgIExPR19FUlJPUigiUG9saWN5QWN0aW9uOjpTdXNwZW5kIGVuY291bnRlcmVkIC0gVHJl
YXRpbmcgYXMgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgZm9yIG5vdyIpOwogICAgICAg
ICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6Cisg
ICAgICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmU6CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OkRvd25sb2FkOgorICAgICAgICBjYXNl
IFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6RG93bmxvYWQ6CiAgICAgICAgICAgICBkb3dubG9hZCgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMzOSwxNiArMzM3LDE2IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVhZCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0gPSBtX2Jsb2JEYXRhLT5pdGVtcygpLmF0KG1f
cmVhZEl0ZW1Db3VudCk7Ci0gICAgaWYgKGl0ZW0udHlwZSgpID09IEJsb2JEYXRhSXRlbTo6VHlw
ZTo6RGF0YSkKKyAgICBjb25zdCBXZWJDb3JlOjpCbG9iRGF0YUl0ZW0mIGl0ZW0gPSBtX2Jsb2JE
YXRhLT5pdGVtcygpLmF0KG1fcmVhZEl0ZW1Db3VudCk7CisgICAgaWYgKGl0ZW0udHlwZSgpID09
IFdlYkNvcmU6OkJsb2JEYXRhSXRlbTo6VHlwZTo6RGF0YSkKICAgICAgICAgcmVhZERhdGEoaXRl
bSk7Ci0gICAgZWxzZSBpZiAoaXRlbS50eXBlKCkgPT0gQmxvYkRhdGFJdGVtOjpUeXBlOjpGaWxl
KQorICAgIGVsc2UgaWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6OkJsb2JEYXRhSXRlbTo6VHlw
ZTo6RmlsZSkKICAgICAgICAgcmVhZEZpbGUoaXRlbSk7CiAgICAgZWxzZQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpyZWFkRGF0
YShjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCit2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnJl
YWREYXRhKGNvbnN0IFdlYkNvcmU6OkJsb2JEYXRhSXRlbSYgaXRlbSkKIHsKICAgICBBU1NFUlQo
aXRlbS5kYXRhKCkuZGF0YSgpKTsKIApAQCAtMzU5LDcgKzM1Nyw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQmxvYjo6cmVhZERhdGEoY29uc3QKICAgICBtX2N1cnJlbnRJdGVtUmVhZFNpemUgPSAw
OwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnJlYWRGaWxlKGNvbnN0IEJsb2JEYXRh
SXRlbSYgaXRlbSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVhZEZpbGUoY29uc3QgV2Vi
Q29yZTo6QmxvYkRhdGFJdGVtJiBpdGVtKQogewogICAgIEFTU0VSVChtX3N0cmVhbSk7CiAKQEAg
LTQxMywxMiArNDExLDEyIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y29uc3VtZURhdGEo
Y28KICAgICBtX3RvdGFsUmVtYWluaW5nU2l6ZSAtPSBieXRlc1JlYWQ7CiAKICAgICBpZiAoYnl0
ZXNSZWFkKSB7Ci0gICAgICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAg
ICAgICBpZiAoIXdyaXRlRG93bmxvYWQoZGF0YSwgYnl0ZXNSZWFkKSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9jbGllbnQp
OwotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGJ5dGVzUmVhZCkpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVE
YXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVzUmVhZCkpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC00NDksOCArNDQ3LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tC
bG9iOjpzZXRQZW5kaW5nRG93bgogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAgICAgICAg
IG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCi0gICAgaWYgKGFsbG93T3ZlcndyaXRl
ICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCi0g
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7
CisgICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9CiAKIFN0cmluZyBO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CkBAIC00NjgsOCAr
NDY2LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAKICAgICBMT0co
TmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkIHRvICVz
IiwgdGhpcywgbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKIAotICAg
IG1fZG93bmxvYWRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRM
b2NhdGlvbiwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7Ci0gICAgaWYgKG1fZG93
bmxvYWRGaWxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAg
ICBtX2Rvd25sb2FkRmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fcGVuZGlu
Z0Rvd25sb2FkTG9jYXRpb24sIFdlYkNvcmU6OkZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3Jp
dGUpOworICAgIGlmIChtX2Rvd25sb2FkRmlsZSA9PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIGRpZEZhaWxEb3dubG9hZChjYW5jZWxs
ZWRFcnJvcihtX2ZpcnN0UmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDg5
LDcgKzQ4Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQoKQogYm9vbCBO
ZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBi
eXRlc1JlYWQpCiB7CiAgICAgQVNTRVJUKGlzRG93bmxvYWQoKSk7Ci0gICAgaW50IGJ5dGVzV3Jp
dHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlLCBkYXRhLCBieXRl
c1JlYWQpOworICAgIGludCBieXRlc1dyaXR0ZW4gPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKICAgICBpZiAoYnl0ZXNX
cml0dGVuID09IC0xKSB7CiAgICAgICAgIGRpZEZhaWxEb3dubG9hZChjYW5jZWxsZWRFcnJvciht
X2ZpcnN0UmVxdWVzdCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MDQsMTQgKzUwMiwx
NCBAQCBib29sIE5ldHdvcmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoCiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrQmxvYjo6Y2xlYW5Eb3dubG9hZEZpbGVzKCkKIHsKLSAgICBpZiAobV9kb3du
bG9hZEZpbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewotICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUpOwotICAgICAgICBtX2Rv
d25sb2FkRmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAg
aWYgKG1fZG93bmxvYWRGaWxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpIHsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1f
ZG93bmxvYWRGaWxlKTsKKyAgICAgICAgbV9kb3dubG9hZEZpbGUgPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogICAgIH0KLSAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOworICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9CiAKLXZvaWQg
TmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmFpbERvd25sb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQordm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRGYWlsRG93bmxvYWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmtTZXNzaW9u
LCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRGYWlsRG93bmxvYWQiLCB0aGlzKTsKIApA
QCAtNTM3LDggKzUzNSw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoRG93
bmwKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRp
ZEZpbmlzaERvd25sb2FkIiwgdGhpcyk7CiAKICAgICBBU1NFUlQoaXNEb3dubG9hZCgpKTsKLSAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUpOwotICAgIG1fZG93bmxvYWRG
aWxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUpOworICAgIG1fZG93bmxvYWRG
aWxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIAog
ICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9u
LT5yZXZva2UoKTsKQEAgLTU1Nyw3ICs1NTUsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6
OmRpZEZhaWwoRXJyb3IgCiAKICAgICBSZWY8TmV0d29ya0RhdGFUYXNrQmxvYj4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgaWYgKGlzRG93bmxvYWQoKSkgewotICAgICAgICBkaWRGYWlsRG93
bmxvYWQoUmVzb3VyY2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIHN0YXRpY19jYXN0
PGludD4oZXJyb3JDb2RlKSwgbV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZygpKSk7CisgICAg
ICAgIGRpZEZhaWxEb3dubG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yKHdlYktpdEJsb2JSZXNv
dXJjZURvbWFpbiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBtX2ZpcnN0UmVxdWVzdC51
cmwoKSwgU3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTY1LDEyICs1
NjMsMTIgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRGYWlsKEVycm9yIAogCiAgICAg
Y2xlYXJTdHJlYW0oKTsKICAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIG1fY2xpZW50LT5kaWRD
b21wbGV0ZVdpdGhFcnJvcihSZXNvdXJjZUVycm9yKHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiwg
c3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBtX2ZpcnN0UmVxdWVzdC51cmwoKSwgU3RyaW5n
KCkpKTsKKyAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcih3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4sIHN0YXRpY19jYXN0PGludD4oZXJyb3JD
b2RlKSwgbV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZygpKSk7CiB9CiAKIHZvaWQgTmV0d29y
a0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoKCkKIHsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgIGlmIChtX2Rvd25s
b2FkRmlsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgIGRpZEZpbmlzaERvd25sb2FkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAko
cmV2aXNpb24gMjM1MDE1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE4ICs1MSwxNiBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIHN0cnVjdCBOZXR3b3JrTG9h
ZDo6VGhyb3R0bGUgewotICAgIFRocm90dGxlKE5ldHdvcmtMb2FkJiBsb2FkLCBTZWNvbmRzIGRl
bGF5LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyKQorICAgIFRocm90dGxlKE5ldHdvcmtMb2FkJiBsb2FkLCBTZWNvbmRzIGRl
bGF5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyKQogICAgICAgICA6IHRpbWVyKGxvYWQsICZOZXR3b3JrTG9h
ZDo6dGhyb3R0bGVEZWxheUNvbXBsZXRlZCkKICAgICAgICAgLCByZXNwb25zZShXVEZNb3ZlKHJl
c3BvbnNlKSkKICAgICAgICAgLCByZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFu
ZGxlcikpCiAgICAgewogICAgICAgICB0aW1lci5zdGFydE9uZVNob3QoZGVsYXkpOwogICAgIH0K
LSAgICBUaW1lciB0aW1lcjsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgIFdl
YkNvcmU6OlRpbWVyIHRpbWVyOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7CiAgICAgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciByZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyOwogfTsKIApAQCAtMTIxLDcgKzExOSw3IEBAIE5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQo
KQogICAgIGlmIChtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIG1fcmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGlmIChtX3Jlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgIG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246
Oklnbm9yZSk7CisgICAgICAgIG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpQ
b2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgaWYgKG1fdGFzaykKICAgICAgICAgbV90YXNrLT5j
bGVhckNsaWVudCgpOwogfQpAQCAtMTUwLDcgKzE0OCw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmNh
bmNlbCgpCiB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIG1fY3VycmVudFJlcXVlc3QudXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3Bl
cnRpZXMobmV3UmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0LnVwZGF0ZUZyb21EZWxlZ2F0
ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKG5ld1JlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6
OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CiAjZWxpZiBVU0Uo
U09VUCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJv
bURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MTI3LgogICAgIG1fY3VycmVudFJlcXVlc3QudXBkYXRl
RnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMobmV3UmVxdWVzdCk7CkBAIC0xNjQs
NyArMTYyLDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlcwogICAg
IGF1dG8gcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9yZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKICAgICBBU1NFUlQocmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAg
ICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKKyAgICAgICAgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKICAgICAgICAgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY2FuY2VsbGVkRXJyb3IobV9jdXJyZW50UmVxdWVzdCksIGVtcHR5TWV0cmljcyk7CiAgICAg
ICAgIGlmIChyZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgcmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtMTcyLDE0ICsxNzAsMTQgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6Y29udGludWVXaWxsU2VuZFJlcXVlcwogICAgIH0KIAogICAgIGlmIChyZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyKQotICAgICAgICByZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKFJlc291
cmNlUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0KSk7CisgICAgICAgIHJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXIoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QpKTsKIH0K
IAogdm9pZCBOZXR3b3JrTG9hZDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogewogICAg
IGlmIChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgYXV0byByZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX3Jlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXIsIG51bGxwdHIpOwotICAgICAgICByZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eUFjdGlvbjo6VXNlKTsKKyAgICAgICAgcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcihXZWJDb3Jl
OjpQb2xpY3lBY3Rpb246OlVzZSk7CiAgICAgfQogfQogCkBAIC0xOTMsNyArMTkxLDcgQEAgYm9v
bCBOZXR3b3JrTG9hZDo6aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQwogICAgIHJldHVybiBtX2NsaWVu
dC5nZXQoKS5pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpOwogfQogCi12b2lkIE5l
dHdvcmtMb2FkOjpjb252ZXJ0VGFza1RvRG93bmxvYWQoUGVuZGluZ0Rvd25sb2FkJiBwZW5kaW5n
RG93bmxvYWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgdXBkYXRlZFJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBOZXR3b3JrTG9hZDo6Y29udmVydFRhc2tU
b0Rvd25sb2FkKFBlbmRpbmdEb3dubG9hZCYgcGVuZGluZ0Rvd25sb2FkLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHVwZGF0ZWRSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJu
OwpAQCAtMjMwLDEzICsyMjgsMTMgQEAgdm9pZCBOZXR3b3JrTG9hZDo6c2V0UGVuZGluZ0Rvd25s
b2FkKFBlbgogICAgIG1fdGFzay0+c2V0UGVuZGluZ0Rvd25sb2FkKHBlbmRpbmdEb3dubG9hZCk7
CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSk7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoIW1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcik7
CiAKLSAgICByZWRpcmVjdFJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3Vy
Y2U6Ok5ldHdvcmspOworICAgIHJlZGlyZWN0UmVzcG9uc2Uuc2V0U291cmNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgbV9yZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBFTkFCTEUoTkVU
V09SS19DQVBUVVJFKQpAQCAtMjUxLDExICsyNDksMTEgQEAgdm9pZCBOZXR3b3JrTG9hZDo6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlYwogICAgIG1fY2xpZW50LmdldCgpLndpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV1RGTW92ZShvbGRSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZWRpcmVjdFJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFs
bGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRS
ZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxl
bmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGF1dG8gc2NoZW1lID0gY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0
aW9uU2NoZW1lKCk7Ci0gICAgYm9vbCBpc1RMU0hhbmRzaGFrZSA9IHNjaGVtZSA9PSBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3Rl
ZAotICAgICAgICB8fCBzY2hlbWUgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hl
bWVDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3RlZDsKKyAgICBib29sIGlzVExTSGFuZHNoYWtlID0g
c2NoZW1lID09IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkCisgICAgICAgIHx8IHNjaGVtZSA9PSBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUNsaWVudENlcnRpZmljYXRlUmVx
dWVzdGVkOwogICAgIGlmICghaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSAmJiAh
aXNUTFNIYW5kc2hha2UpIHsKICAgICAgICAgbV9jbGllbnQuZ2V0KCkuZGlkQmxvY2tBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCB7IH0pOwpAQCAtMjY4LDcg
KzI2Niw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXUKICAgICAg
ICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtT
ZXNzaW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoIW1fdGhyb3R0bGUpOwpAQCAt
Mjg3LDcgKzI4NSw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHcK
ICAgICBub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5
RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI5Niw3ICsyOTQsNyBAQCB2b2lkIE5ldHdv
cmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uCiAgICAgICAgIG1fcmVjb3JkZXItPnJlY29y
ZFJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogI2VuZGlmCiAKLSAgICByZXNwb25zZS5zZXRT
b3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKKyAgICByZXNwb25zZS5z
ZXRTb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrKTsKICAg
ICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvKQogICAgICAgICByZXNwb25z
ZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7CiAKQEAgLTMwNCwxMCArMzAyLDEwIEBAIHZvaWQg
TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb24KICAgICAgICAgbV9yZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAot
dm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoIW1fdGhyb3R0bGUpOwogCkBAIC0zMjEs
NyArMzE5LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYQogICAg
IG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBzaXplKTsK
IH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29y
a0xvYWRNZXRyaWNzKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewogICAgIEFTU0VSVCghbV90aHJvdHRs
ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVj
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHAJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
MTQgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotc3RhdGljIGlubGluZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVP
cmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4pCiB7CiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzRGF0YSgpIHx8IHVybC5w
cm90b2NvbElzQmxvYigpIHx8ICFvcmlnaW4gfHwgb3JpZ2luLT5jYW5SZXF1ZXN0KHVybCk7CiB9
CiAKLU5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKEZldGNoT3B0aW9ucyYm
IG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJM
JiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGlnaHRQ
b2xpY3kgcHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MpCitOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtM
b2FkQ2hlY2tlcihXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFdlYkNvcmU6OlVSTCYmIHVy
bCwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29y
ZTo6UHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJv
b2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKQogICAgIDogbV9vcHRpb25z
KFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBt
X3BhZ2VJRChwYWdlSUQpCkBAIC02NywyMSArNjUsMjEgQEAgTmV0d29ya0xvYWRDaGVja2VyOjpO
ZXR3b3JrTG9hZENoZWNrZXIoRgogewogICAgIG1faXNTYW1lT3JpZ2luUmVxdWVzdCA9IGlzU2Ft
ZU9yaWdpbihtX3VybCwgbV9vcmlnaW4uZ2V0KCkpOwogICAgIHN3aXRjaCAob3B0aW9ucy5jcmVk
ZW50aWFscykgewotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZToK
LSAgICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpVc2U7CisgICAgY2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJ
bmNsdWRlOgorICAgICAgICBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGZXRj
aE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpTYW1lT3JpZ2luOgotICAgICAgICBtX3N0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID0gbV9pc1NhbWVPcmlnaW5SZXF1ZXN0ID8gU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OlVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZTsKKyAgICBjYXNl
IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW46CisgICAgICAg
IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBtX2lzU2FtZU9yaWdpblJlcXVlc3QgPyBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OkRvTm90VXNlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZldGNoT3B0
aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQ6Ci0gICAgICAgIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgPSBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U7CisgICAgY2FzZSBXZWJDb3Jl
OjpGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0OgorICAgICAgICBtX3N0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNl
OwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIE5ldHdvcmtMb2FkQ2hlY2tlcjo6fk5ldHdv
cmtMb2FkQ2hlY2tlcigpID0gZGVmYXVsdDsKIAotdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNo
ZWNrKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVu
dCogY2xpZW50LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2Fk
Q2hlY2tlcjo6Y2hlY2soV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KiBjbGllbnQsIFZhbGlkYXRpb25IYW5kbGVy
JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoIWlzQ2hlY2tpbmcoKSk7CiAKQEAgLTkwLDI2ICs4
OCwyNiBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2soUmVzb3VyY2VSCiAKICAgICBt
X2ZpcnN0UmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBnZXQgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIHRoZSByZXF1
ZXN0IGJ1dCBkaXJlY3RseSBmcm9tIHNvbWUgTmV0d29ya1Byb2Nlc3Mgc2V0dGluZy4KLSAgICBt
X2RudEhlYWRlclZhbHVlID0gbV9maXJzdFJlcXVlc3RIZWFkZXJzLmdldChIVFRQSGVhZGVyTmFt
ZTo6RE5UKTsKKyAgICBtX2RudEhlYWRlclZhbHVlID0gbV9maXJzdFJlcXVlc3RIZWFkZXJzLmdl
dChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6RE5UKTsKICAgICBpZiAobV9kbnRIZWFkZXJWYWx1
ZS5pc051bGwoKSAmJiBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7CiAgICAgICAgIG1fZG50
SGVhZGVyVmFsdWUgPSAiMSI7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpETlQsIG1fZG50SGVhZGVyVmFsdWUpOworICAgICAgICByZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6RE5ULCBtX2RudEhlYWRl
clZhbHVlKTsKICAgICB9CiAgICAgY2hlY2tSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIGNsaWVu
dCwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpwcmVw
YXJlUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBOZXR3
b3JrTG9hZENoZWNrZXI6OnByZXBhcmVSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX2RudEhlYWRlclZhbHVlLmlzTnVsbCgp
KQotICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6RE5U
LCBtX2RudEhlYWRlclZhbHVlKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
V2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkROVCwgbV9kbnRIZWFkZXJWYWx1ZSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgTmV0d29ya0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblJlcXVlc3RPckVycm9y
IHJlZGlyZWN0aW9uRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKQorc3RhdGljIGlubGluZSBOZXR3b3JrTG9hZENoZWNr
ZXI6OlJlZGlyZWN0aW9uUmVxdWVzdE9yRXJyb3IgcmVkaXJlY3Rpb25FcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBTdHJpbmcmJiBlcnJvck1l
c3NhZ2UpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBTdHJp
bmcgeyB9LCAwLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSks
IFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBTdHJpbmcgeyB9LCAwLCByZWRpcmVj
dFJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSksIFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWRDaGVj
a2VyOjpjaGVja1JlZGlyZWN0aW9uKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudCogY2xpZW50LCBSZWRpcmVjdGlvblZh
bGlkYXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVj
a1JlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNs
aWVudCogY2xpZW50LCBSZWRpcmVjdGlvblZhbGlkYXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoIWlzQ2hlY2tpbmcoKSk7CiAKQEAgLTExOSwxMSArMTE3LDExIEBAIHZvaWQg
TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja1JlZGlyZWN0aW8KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX29wdGlvbnMucmVkaXJlY3QgPT0gRmV0Y2hPcHRpb25zOjpSZWRpcmVj
dDo6RXJyb3IpIHsKKyAgICBpZiAobV9vcHRpb25zLnJlZGlyZWN0ID09IFdlYkNvcmU6OkZldGNo
T3B0aW9uczo6UmVkaXJlY3Q6OkVycm9yKSB7CiAgICAgICAgIGhhbmRsZXIocmVkaXJlY3Rpb25F
cnJvcihyZWRpcmVjdFJlc3BvbnNlLCBtYWtlU3RyaW5nKCJOb3QgYWxsb3dlZCB0byBmb2xsb3cg
YSByZWRpcmVjdGlvbiB3aGlsZSBsb2FkaW5nICIsIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCkpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fb3B0aW9ucy5yZWRp
cmVjdCA9PSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpNYW51YWwpIHsKKyAgICBpZiAobV9vcHRp
b25zLnJlZGlyZWN0ID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6UmVkaXJlY3Q6Ok1hbnVhbCkg
ewogICAgICAgICBoYW5kbGVyKFJlZGlyZWN0aW9uVHJpcGxldCB7IFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0OCwzMCArMTQ2LDMwIEBAIHZvaWQgTmV0d29y
a0xvYWRDaGVja2VyOjpjaGVja1JlZGlyZWN0aW8KICAgICB9KTsKIH0KIAotUmVzb3VyY2VFcnJv
ciBOZXR3b3JrTG9hZENoZWNrZXI6OnZhbGlkYXRlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtMb2FkQ2hlY2tlcjo6dmFs
aWRhdGVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAg
ICBpZiAobV9yZWRpcmVjdENvdW50KQogICAgICAgICByZXNwb25zZS5zZXRSZWRpcmVjdGVkKHRy
dWUpOwogCi0gICAgaWYgKHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBl
OjpPcGFxdWVyZWRpcmVjdCkgewotICAgICAgICByZXNwb25zZS5zZXRUYWludGluZyhSZXNvdXJj
ZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlcmVkaXJlY3QpOworICAgIGlmIChyZXNwb25zZS50
eXBlKCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6T3BhcXVlcmVkaXJlY3Qp
IHsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VGFpbnRpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZTo6VGFpbnRpbmc6Ok9wYXF1ZXJlZGlyZWN0KTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKLSAgICBpZiAobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0
ZSB8fCBtX2lzU2FtZU9yaWdpblJlcXVlc3QpIHsKLSAgICAgICAgcmVzcG9uc2Uuc2V0VGFpbnRp
bmcoUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6OkJhc2ljKTsKKyAgICBpZiAobV9vcHRpb25z
Lm1vZGUgPT0gV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSB8fCBtX2lzU2Ft
ZU9yaWdpblJlcXVlc3QpIHsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VGFpbnRpbmcoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6OkJhc2ljKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKLSAgICBpZiAobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpO
b0NvcnMpIHsKKyAgICBpZiAobV9vcHRpb25zLm1vZGUgPT0gV2ViQ29yZTo6RmV0Y2hPcHRpb25z
OjpNb2RlOjpOb0NvcnMpIHsKICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSB2YWxpZGF0ZUNyb3Nz
T3JpZ2luUmVzb3VyY2VQb2xpY3koKm1fb3JpZ2luLCBtX3VybCwgcmVzcG9uc2UpKQogICAgICAg
ICAgICAgcmV0dXJuIFdURk1vdmUoKmVycm9yKTsKIAotICAgICAgICByZXNwb25zZS5zZXRUYWlu
dGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlKTsKKyAgICAgICAgcmVzcG9u
c2Uuc2V0VGFpbnRpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1
ZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgQVNTRVJUKG1fb3B0aW9ucy5t
b2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CisgICAgQVNTRVJUKG1fb3B0aW9ucy5t
b2RlID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CiAKICAgICAvLyBJZiB3
ZSBoYXZlIGEgMzA0LCB0aGUgY2FjaGVkIHJlc3BvbnNlIGlzIGluIFdlYlByb2Nlc3Mgc28gd2Ug
bGV0IFdlYlByb2Nlc3MgZG8gdGhlIENPUlMgY2hlY2sgb24gdGhlIGNhY2hlZCByZXNwb25zZS4K
ICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQpCkBAIC0xNzksMjIgKzE3
NywyMiBAQCBSZXNvdXJjZUVycm9yIE5ldHdvcmtMb2FkQ2hlY2tlcjo6dmFsaWRhCiAKICAgICBT
dHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJl
c3BvbnNlLCBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5LCAqbV9vcmlnaW4sIGVycm9yTWVzc2Fn
ZSkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgU3RyaW5nIHsgfSwgMCwgbV91cmws
IFdURk1vdmUoZXJyb3JNZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCB9OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFN0cmluZyB7IH0s
IDAsIG1fdXJsLCBXVEZNb3ZlKGVycm9yTWVzc2FnZSksIFdlYkNvcmU6OlJlc291cmNlRXJyb3I6
OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKIAotICAgIHJlc3BvbnNlLnNldFRhaW50aW5nKFJlc291
cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpDb3JzKTsKKyAgICByZXNwb25zZS5zZXRUYWludGluZyhX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6Q29ycyk7CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAogYXV0byBOZXR3b3JrTG9hZENoZWNrZXI6OmFjY2Vzc0NvbnRyb2xFcnJvckZvclZh
bGlkYXRpb25IYW5kbGVyKFN0cmluZyYmIG1lc3NhZ2UpIC0+IFJlcXVlc3RPckVycm9yCiB7Ci0g
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3IgeyBTdHJpbmcgeyB9LCAwLCBt
X3VybCwgV1RGTW92ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJv
bCB9KTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7
IFN0cmluZyB7IH0sIDAsIG1fdXJsLCBXVEZNb3ZlKG1lc3NhZ2UpLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQogCi12b2lkIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y2hlY2tSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudCogY2xpZW50LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2
b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudCogY2xp
ZW50LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIGNvbnRl
bnRTZWN1cml0eVBvbGljeSA9IHRoaXMtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7CiAgICAg
ICAgIGlmIChpc1JlZGlyZWN0ZWQoKSkgewotICAgICAgICAgICAgYXV0byB0eXBlID0gbV9vcHRp
b25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSA/IENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TmF2aWdhdGlvbiA6IENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZDsKKyAgICAgICAgICAgIGF1dG8gdHlw
ZSA9IG1fb3B0aW9ucy5tb2RlID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdh
dGUgPyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6
Ok5hdmlnYXRpb24gOiBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVx
dWVzdFR5cGU6OkxvYWQ7CiAgICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnVwZ3Jh
ZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChyZXF1ZXN0LCB0eXBlKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3QsIGNsaWVu
dCkpIHsKQEAgLTIyMSw3ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tS
ZXF1ZXN0KFJlCiAjZW5kaWYKIH0KIAotYm9vbCBOZXR3b3JrTG9hZENoZWNrZXI6OmlzQWxsb3dl
ZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KiBjbGllbnQpCitib29sIE5ldHdv
cmtMb2FkQ2hlY2tlcjo6aXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lDbGllbnQqIGNsaWVudCkKIHsKICAgICBhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kg
PSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xp
Y3ktPnNldENsaWVudChjbGllbnQpOwpAQCAtMjI5LDMxICsyMjcsMzEgQEAgYm9vbCBOZXR3b3Jr
TG9hZENoZWNrZXI6OmlzQWxsb3dlZEJ5Q29udAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xp
Y3ktPnNldENsaWVudChudWxscHRyKTsKICAgICB9KTsKIAotICAgIGF1dG8gcmVkaXJlY3RSZXNw
b25zZVJlY2VpdmVkID0gaXNSZWRpcmVjdGVkKCkgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
ZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6WWVzIDogQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRp
cmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5vOworICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZVJlY2Vp
dmVkID0gaXNSZWRpcmVjdGVkKCkgPyBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
ZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6WWVzIDogV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5vOwogICAgIHN3aXRjaCAobV9vcHRpb25z
LmRlc3RpbmF0aW9uKSB7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpXb3Jr
ZXI6Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTZXJ2aWNld29ya2VyOgot
ICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyOgorICAgIGNh
c2UgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6V29ya2VyOgorICAgIGNhc2Ug
V2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlcjoKKyAgICBj
YXNlIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNoYXJlZHdvcmtlcjoKICAg
ICAgICAgcmV0dXJuIGNvbnRlbnRTZWN1cml0eVBvbGljeS0+YWxsb3dDaGlsZENvbnRleHRGcm9t
U291cmNlKHJlcXVlc3QudXJsKCksIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCk7Ci0gICAgY2Fz
ZSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTY3JpcHQ6Ci0gICAgICAgIGlmIChyZXF1ZXN0
LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpJbXBvcnRTY3JpcHRz
ICYmICFjb250ZW50U2VjdXJpdHlQb2xpY3ktPmFsbG93U2NyaXB0RnJvbVNvdXJjZShyZXF1ZXN0
LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQpKQorICAgIGNhc2UgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2NyaXB0OgorICAgICAgICBpZiAocmVxdWVzdC5yZXF1
ZXN0ZXIoKSA9PSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6SW1wb3J0U2Ny
aXB0cyAmJiAhY29udGVudFNlY3VyaXR5UG9saWN5LT5hbGxvd1NjcmlwdEZyb21Tb3VyY2UocmVx
dWVzdC51cmwoKSwgcmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgLy8gRklYTUU6IENoZWNrIENTUCBmb3Igbm9uLWltcG9ydFNjcmlw
dHMoKSBpbml0aWF0ZWQgbG9hZHMuCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmc6CisgICAgY2FzZSBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZzoKICAgICAgICAgcmV0dXJuIGNv
bnRlbnRTZWN1cml0eVBvbGljeS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UocmVxdWVzdC51cmwoKSwg
cmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkKTsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGlu
YXRpb246OkF1ZGlvOgotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RG9jdW1l
bnQ6Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbWJlZDoKLSAgICBjYXNl
IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkZvbnQ6Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uOjpJbWFnZToKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246
Ok1hbmlmZXN0OgotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6T2JqZWN0Ogot
ICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6UmVwb3J0OgotICAgIGNhc2UgRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U3R5bGU6Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpUcmFjazoKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlZp
ZGVvOgotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6WHNsdDoKKyAgICBjYXNl
IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkF1ZGlvOgorICAgIGNhc2UgV2Vi
Q29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RG9jdW1lbnQ6CisgICAgY2FzZSBXZWJD
b3JlOjpGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbWJlZDoKKyAgICBjYXNlIFdlYkNvcmU6
OkZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkZvbnQ6CisgICAgY2FzZSBXZWJDb3JlOjpGZXRj
aE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpJbWFnZToKKyAgICBjYXNlIFdlYkNvcmU6OkZldGNoT3B0
aW9uczo6RGVzdGluYXRpb246Ok1hbmlmZXN0OgorICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbjo6T2JqZWN0OgorICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6UmVwb3J0OgorICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6U3R5bGU6CisgICAgY2FzZSBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6OkRlc3Rp
bmF0aW9uOjpUcmFjazoKKyAgICBjYXNlIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6RGVzdGluYXRp
b246OlZpZGVvOgorICAgIGNhc2UgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6
WHNsdDoKICAgICAgICAgLy8gRklYTUU6IENoZWNrIENTUCBmb3IgdGhlc2UgZGVzdGluYXRpb25z
LgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNjEsMTAgKzI1OSwxMCBAQCBib29s
IE5ldHdvcmtMb2FkQ2hlY2tlcjo6aXNBbGxvd2VkQnlDb250CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW5nUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2b2lk
IE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGludWVDaGVja2luZ1JlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVmFsaWRhdGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewot
ICAgIGlmIChtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFs
czo6U2FtZU9yaWdpbikKLSAgICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IG1faXNT
YW1lT3JpZ2luUmVxdWVzdCAmJiBtX29yaWdpbi0+Y2FuUmVxdWVzdChyZXF1ZXN0LnVybCgpKSA/
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
RG9Ob3RVc2U7CisgICAgaWYgKG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBXZWJDb3JlOjpGZXRj
aE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpTYW1lT3JpZ2luKQorICAgICAgICBtX3N0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID0gbV9pc1NhbWVPcmlnaW5SZXF1ZXN0ICYmIG1fb3JpZ2luLT5jYW5SZXF1
ZXN0KHJlcXVlc3QudXJsKCkpID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVz
ZSA6IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZTsKIAogICAgIG1f
aXNTYW1lT3JpZ2luUmVxdWVzdCA9IG1faXNTYW1lT3JpZ2luUmVxdWVzdCAmJiBpc1NhbWVPcmln
aW4ocmVxdWVzdC51cmwoKSwgbV9vcmlnaW4uZ2V0KCkpOwogCkBAIC0yNzMsNyArMjcxLDcgQEAg
dm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRpbnVlQ2hlY2tpbgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6
U2FtZU9yaWdpbikgeworICAgIGlmIChtX29wdGlvbnMubW9kZSA9PSBXZWJDb3JlOjpGZXRjaE9w
dGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW4pIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiLCByZXF1ZXN0LnVybCgpLnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGZyb20gb3JpZ2luICIsIG1fb3JpZ2luLT50
b1N0cmluZygpLCAiLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guXG4i
KTsKICAgICAgICAgaGFuZGxlcihhY2Nlc3NDb250cm9sRXJyb3JGb3JWYWxpZGF0aW9uSGFuZGxl
cihXVEZNb3ZlKG1lc3NhZ2UpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4OCwzMSArMjg2LDMx
IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjb250aW51ZUNoZWNraW4KICAgICBjaGVja0NP
UlNSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lk
IE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y2hlY2tDT1JTUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKG1fb3B0aW9ucy5t
b2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CisgICAgQVNTRVJUKG1fb3B0aW9ucy5t
b2RlID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CiAKICAgICAvLyBFeGNl
cHQgaW4gY2FzZSB3aGVyZSBwcmVmbGlnaHQgaXMgbmVlZGVkLCBsb2FkaW5nIHNob3VsZCBiZSBh
YmxlIHRvIGNvbnRpbnVlIG9uIGl0cyBvd24uCiAgICAgc3dpdGNoIChtX3ByZWZsaWdodFBvbGlj
eSkgewotICAgIGNhc2UgUHJlZmxpZ2h0UG9saWN5OjpGb3JjZToKKyAgICBjYXNlIFdlYkNvcmU6
OlByZWZsaWdodFBvbGljeTo6Rm9yY2U6CiAgICAgICAgIGNoZWNrQ09SU1JlcXVlc3RXaXRoUHJl
ZmxpZ2h0KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoaGFuZGxlcikpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFByZWZsaWdodFBvbGljeTo6Q29uc2lkZXI6CisgICAgY2FzZSBXZWJDb3Jl
OjpQcmVmbGlnaHRQb2xpY3k6OkNvbnNpZGVyOgogICAgICAgICBpZiAoIW1faXNTaW1wbGVSZXF1
ZXN0IHx8ICFpc1NpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChyZXF1ZXN0Lmh0dHBNZXRo
b2QoKSwgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSkgewogICAgICAgICAgICAgY2hlY2tDT1JT
UmVxdWVzdFdpdGhQcmVmbGlnaHQoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShoYW5kbGVyKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7Ci0g
ICAgY2FzZSBQcmVmbGlnaHRQb2xpY3k6OlByZXZlbnQ6CisgICAgY2FzZSBXZWJDb3JlOjpQcmVm
bGlnaHRQb2xpY3k6OlByZXZlbnQ6CiAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250
cm9sKHJlcXVlc3QsICptX29yaWdpbiwgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAgICAg
ICAgIGhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
IAotdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlZGlyZWN0ZWRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFZhbGlkYXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3Zv
aWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIp
CiB7Ci0gICAgQVNTRVJUKG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29y
cyk7CisgICAgQVNTRVJUKG1fb3B0aW9ucy5tb2RlID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6
TW9kZTo6Q29ycyk7CiAgICAgQVNTRVJUKGlzUmVkaXJlY3RlZCgpKTsKIAogICAgIC8vIEZvcmNl
IGFueSBzdWJzZXF1ZW50IHJlcXVlc3QgdG8gdXNlIHRoZXNlIGNoZWNrcy4KQEAgLTMyMiwyNiAr
MzIwLDI2IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZWRpcmUKICAgICAg
ICAgLy8gVXNlIGEgdW5pcXVlIG9yaWdpbiBmb3Igc3Vic2VxdWVudCBsb2FkcyBpZiBuZWVkZWQu
CiAgICAgICAgIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWh0dHAt
cmVkaXJlY3QtZmV0Y2ggKFN0ZXAgMTApLgogICAgICAgICBpZiAoIW1fb3JpZ2luIHx8ICFtX29y
aWdpbi0+aXNVbmlxdWUoKSkKLSAgICAgICAgICAgIG1fb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZVVuaXF1ZSgpOworICAgICAgICAgICAgbV9vcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBzZXQgdGhlIHJlcXVlc3QgcmVmZXJyZXIgYWNjb3JkaW5nIHRoZSByZWZlcnJlciBwb2xpY3ku
CiAKICAgICAvLyBMZXQncyBmZXRjaCB0aGUgcmVxdWVzdCB3aXRoIHRoZSBvcmlnaW5hbCBoZWFk
ZXJzIChlcXVpdmFsZW50IHRvIHJlcXVlc3QgY2xvbmluZyBzcGVjaWZpZWQgYnkgZmV0Y2ggYWxn
b3JpdGhtKS4KLSAgICBpZiAoIXJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpLmNvbnRhaW5zKEhU
VFBIZWFkZXJOYW1lOjpBdXRob3JpemF0aW9uKSkKLSAgICAgICAgbV9maXJzdFJlcXVlc3RIZWFk
ZXJzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6QXV0aG9yaXphdGlvbik7CisgICAgaWYgKCFyZXF1
ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKS5jb250YWlucyhXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6
QXV0aG9yaXphdGlvbikpCisgICAgICAgIG1fZmlyc3RSZXF1ZXN0SGVhZGVycy5yZW1vdmUoV2Vi
Q29yZTo6SFRUUEhlYWRlck5hbWU6OkF1dGhvcml6YXRpb24pOwogICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkcyhtX2ZpcnN0UmVxdWVzdEhlYWRlcnMpOwogCiAgICAgY2hlY2tDT1JTUmVx
dWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3
b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFZhbGlkYXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgTmV0d29y
a0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBWYWxpZGF0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0g
ICAgQVNTRVJUKG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7Cisg
ICAgQVNTRVJUKG1fb3B0aW9ucy5tb2RlID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6TW9kZTo6
Q29ycyk7CiAKICAgICBtX2lzU2ltcGxlUmVxdWVzdCA9IGZhbHNlOwogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgcHJvYmFibHkgcGFydGl0aW9uIHByZWZsaWdodCByZXN1bHQgY2FjaGUgYnkgc2Vz
c2lvbiBJRC4KLSAgICBpZiAoQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xl
dG9uKCkuY2FuU2tpcFByZWZsaWdodChtX29yaWdpbi0+dG9TdHJpbmcoKSwgcmVxdWVzdC51cmwo
KSwgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcmVxdWVzdC5odHRwTWV0aG9kKCksIG1fb3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycykpIHsKKyAgICBpZiAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuY2FuU2tpcFByZWZsaWdodChtX29yaWdpbi0+
dG9TdHJpbmcoKSwgcmVxdWVzdC51cmwoKSwgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcmVx
dWVzdC5odHRwTWV0aG9kKCksIG1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVycykpIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQgLSBw
cmVmbGlnaHQgY2FuIGJlIHNraXBwZWQgdGhhbmtzIHRvIGNhY2hlZCByZXN1bHQiKTsKICAgICAg
ICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocmVxdWVzdCwgKm1fb3JpZ2luLCBtX3N0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICAgICAgaGFuZGxlcihXVEZNb3ZlKHJlcXVlc3Qp
KTsKQEAgLTM3OSw0MCArMzc3LDQwIEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NP
UlNSZXF1ZXMKICAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyLT5zdGFydFByZWZsaWdodCgpOwog
fQogCi1ib29sIE5ldHdvcmtMb2FkQ2hlY2tlcjo6ZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3Qg
VVJMJiB1cmwpIGNvbnN0Citib29sIE5ldHdvcmtMb2FkQ2hlY2tlcjo6ZG9lc05vdE5lZWRDT1JT
Q2hlY2soY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgaWYgKG1fb3B0aW9u
cy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzIHx8IG1fb3B0aW9ucy5tb2RlID09
IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpCisgICAgaWYgKG1fb3B0aW9ucy5tb2RlID09
IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzIHx8IG1fb3B0aW9ucy5tb2RlID09
IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAg
aWYgKCFXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNF
bmFibGVkKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIG1faXNTYW1lT3JpZ2luUmVxdWVzdDsKIH0KIAot
Q29udGVudFNlY3VyaXR5UG9saWN5KiBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0
eVBvbGljeSgpCitXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KCkKIHsKICAgICBpZiAoIW1fY29udGVudFNlY3Vy
aXR5UG9saWN5ICYmIG1fY3NwUmVzcG9uc2VIZWFkZXJzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQ
YXNzIHRoZSBVUkwgb2YgdGhlIHByb3RlY3RlZCByZXNvdXJjZSBpbnN0ZWFkIG9mIGl0cyBvcmln
aW4uCi0gICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygp
IH0pOwotICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2ZUhlYWRlcnMo
Km1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOworICAgICAgICBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5PihXZWJDb3JlOjpVUkwgeyBXZWJDb3JlOjpVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJp
bmcoKSB9KTsKKyAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFk
ZXJzKCptX2NzcFJlc3BvbnNlSGVhZGVycywgU3RyaW5nIHsgbV9yZWZlcnJlciB9LCBXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydFBhcnNpbmdFcnJvcnM6Ok5vKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpOwogfQogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKLXZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpwcm9jZXNz
Q29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBD
b250ZW50RXh0ZW5zaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya0xvYWRDaGVj
a2VyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBDb250ZW50RXh0ZW5zaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICAvLyBGSVhNRTogRW5hYmxlIGNvbnRlbnQgYmxvY2tlcnMgZm9yIG5hdmlnYXRpb24g
bG9hZHMuCi0gICAgaWYgKCFtX2NoZWNrQ29udGVudEV4dGVuc2lvbnMgfHwgIW1fdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciB8fCBtX29wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6
Ok1vZGU6Ok5hdmlnYXRlKSB7Ci0gICAgICAgIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3Rh
dHVzIHN0YXR1czsKKyAgICBpZiAoIW1fY2hlY2tDb250ZW50RXh0ZW5zaW9ucyB8fCAhbV91c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHx8IG1fb3B0aW9ucy5tb2RlID09IFdlYkNvcmU6
OkZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpIHsKKyAgICAgICAgV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgc3RhdHVzOwogICAgICAgICBjYWxsYmFjayhDb250
ZW50RXh0ZW5zaW9uUmVzdWx0IHsgV1RGTW92ZShyZXF1ZXN0KSwgc3RhdHVzIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCkuY29udGVudEV4dGVuc2lvbnNCYWNrZW5kKCptX3Vz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYXV0byYgYmFja2VuZCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1Ro
aXMpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKFJlc291cmNlRXJyb3Ig
eyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSkpOworICAgICAgICAgICAgY2Fs
bGJhY2sobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OlJl
c291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNDIzLDExICs0MjEsMTMgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNr
ZXI6OnByb2Nlc3NDb250ZW50RQogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAKLXZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpzdG9yZVJlZGlyZWN0aW9uSWZOZWVkZWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpzdG9yZVJlZGlyZWN0aW9uSWZOZWVk
ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKQogICAgICAgICByZXR1cm47Ci0gICAgbV9sb2FkSW5m
b3JtYXRpb24udHJhbnNhY3Rpb25zLmFwcGVuZChOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlv
biB7IE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uOjpUeXBlOjpSZWRpcmVjdGlvbiwgUmVz
b3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9LCBSZXNvdXJjZVJlc3BvbnNlIHsgcmVzcG9uc2UgfSwg
eyB9IH0pOworICAgIG1fbG9hZEluZm9ybWF0aW9uLnRyYW5zYWN0aW9ucy5hcHBlbmQoV2ViQ29y
ZTo6TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24geyBXZWJDb3JlOjpOZXR3b3JrVHJhbnNh
Y3Rpb25JbmZvcm1hdGlvbjo6VHlwZTo6UmVkaXJlY3Rpb24sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCB7IHJlcXVlc3QgfSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IHsgfSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyN1bmRlZiBSRUxFQVNFX0xP
R19JRl9BTExPV0VECkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM1MDE1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDggKzk2
LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjZW5kaWYKIAotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBOZXR3b3JrUHJvY2Vz
cyYgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpCkBAIC0xMjYsNyArMTI0LDcgQEAgTmV0d29y
a1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKCkKICAgICBhZGRTdXBwbGVtZW50PE5ldHdvcmtQcm94
aW1pdHlNYW5hZ2VyPigpOwogI2VuZGlmCiAKLSAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2lu
Z2xldG9uKCkuYWRkTGlzdGVuZXIoW3RoaXNdKGJvb2wgaXNPbkxpbmUpIHsKKyAgICBXZWJDb3Jl
OjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkTGlzdGVuZXIoW3RoaXNdKGJv
b2wgaXNPbkxpbmUpIHsKICAgICAgICAgYXV0byB3ZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSBtX3dl
YlByb2Nlc3NDb25uZWN0aW9uczsKICAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzQ29ubmVj
dGlvbiA6IHdlYlByb2Nlc3NDb25uZWN0aW9ucykKICAgICAgICAgICAgIHdlYlByb2Nlc3NDb25u
ZWN0aW9uLT5zZXRPbkxpbmVTdGF0ZShpc09uTGluZSk7CkBAIC0yODEsNyArMjc5LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogICAgICAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKTsKIAogICAg
IGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKLSAgICAgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisgICAg
ICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbigpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpICYmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgIG1fbG9nQ29va2llSW5mb3JtYXRpb24gPSBwYXJhbWV0
ZXJzLmxvZ0Nvb2tpZUluZm9ybWF0aW9uOwpAQCAtMzc0LDEyICszNzIsMTIgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lYwogI2VuZGlmCiAKICAgICBpZiAoIW1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMubGFzdCgpLT5zZXRPbkxpbmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xl
dG9uKCkub25MaW5lKCkpOworICAgICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5sYXN0KCkt
PnNldE9uTGluZVN0YXRlKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24o
KS5vbkxpbmUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQ2FjaGVkQ3JlZGVu
dGlhbHMoKQogewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7CisgICAgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jcmVkZW50
aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKICAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSkpCiAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckNyZWRlbnRp
YWxzKCk7CiAgICAgZWxzZQpAQCAtNDMxLDE0ICs0MjksMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6d3JpdGVCbG9iVG9GaWxlUGF0aAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElU
SU9OSU5HKQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxv
Y2tDb29raWVzRm9yKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0Jsb2NrLCBib29sIHNob3VsZENsZWFyRmlyc3QsIHVpbnQ2NF90IGNvbnRl
eHRJZCkKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChhdXRvKiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGRvbWFpbnNUb0Jsb2NrLCBzaG91
bGRDbGVhckZpcnN0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRVcGRhdGVCbG9ja0Nvb2tpZXMoY29udGV4dElk
KSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChuZXR3b3JrU3RvcmFnZVNlc3Npb24t
Pmhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCksIGNvbnRleHRJZCksIDApOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC00NDYsNyArNDQ0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFz
U3RvcmFnZUFjY2Vzc0ZvcgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChhdXRvKiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
UmVzdWx0KG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMo
KSwgY29udGV4dElkKSwgMCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTQ1NSw3ICs0NTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdl
QWNjZXNzCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNTdG9yYWdl
R3JhbnRlZCA9IGZhbHNlOwotICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+Z3JhbnRTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5
RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpOwogICAgICAgICBBU1NFUlQobmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWlu
LCBmcmFtZUlELCBwYWdlSUQpKTsKICAgICAgICAgaXNTdG9yYWdlR3JhbnRlZCA9IHRydWU7CkBA
IC00NjcsNyArNDY1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTdG9yYWdlQWNjZXNz
KAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY29udGV4dElkKQogewotICAgIGlmIChhdXRvKiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkK
ICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7
CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ3Niw3ICs0NzQs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVBbGxTdG9yYWdlQWNjCiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlbW92ZVByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKIHsKLSAgICBpZiAoYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpKQorICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+cmVtb3ZlUHJldmFsZW50RG9tYWlucyhkb21h
aW5zKTsKIH0KICNlbmRpZgpAQCAtNDk3LDcgKzQ5NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldFNlc3Npb25Jc0NvbnRyb2wKIHN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9u
PiBmZXRjaE9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogY2FjaGUgPSBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGUoKSkgewotICAgICAgICBIYXNoTWFwPFNlY3VyaXR5
T3JpZ2luRGF0YSwgdWludDY0X3Q+IG9yaWdpbnNBbmRTaXplczsKKyAgICAgICAgSGFzaE1hcDxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIHVpbnQ2NF90PiBvcmlnaW5zQW5kU2l6ZXM7CiAg
ICAgICAgIGNhY2hlLT50cmF2ZXJzZShbZmV0Y2hPcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvcmlnaW5zQW5kU2l6ZXMgPSBXVEZNb3ZlKG9y
aWdpbnNBbmRTaXplcyldKGF1dG8qIHRyYXZlcnNhbEVudHJ5KSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmICghdHJhdmVyc2FsRW50cnkpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8V2Vic2l0
ZURhdGE6OkVudHJ5PiBlbnRyaWVzOwpAQCAtNTUzLDEzICs1NTEsMTMgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogICAgIH0pKTsKIAogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsKLSAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKICAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3RO
YW1lc1dpdGhDb29raWVzKTsKICAgICB9CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewotICAgICAgICBpZiAoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMg
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRl
bnRpYWxTdG9yYWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFscygpOworICAgICAgICBpZiAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLm9yaWdpbnNXaXRo
Q3JlZGVudGlhbHMgPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dpdGhDcmVkZW50aWFs
cygpOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6RE9NQ2FjaGUpKSB7CkBAIC01NzAsNyArNTY4LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIGlmIChhdXRvKiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRoSFNU
U0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJz
aXRlRGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKICAgICB9CiAjZW5kaWYKQEAgLTU4Niwx
OSArNTg0LDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFAKIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAg
ICAgICAgICAgIGNsZWFySFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG1vZGlmaWVk
U2luY2UpOwogICAgIH0KICNlbmRpZgogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQorICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQog
ICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVBbGxDb29raWVzTW9kaWZp
ZWRTaW5jZShtb2RpZmllZFNpbmNlKTsKICAgICB9CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewotICAgICAgICBpZiAo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAg
ICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpLT5j
cmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICAgICAgaWYgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICAgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7CiAgICAg
fQogCiAgICAgYXV0byBjbGVhclRhc2tzSGFuZGxlciA9IFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9y
OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrSURdIHsKQEAgLTYxMiwxNyArNjEwLDE3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFAKICAgICAgICAgY2xlYXJEaXNrQ2Fj
aGUobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tz
SGFuZGxlcildIHsgfSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhj
b25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVuY3Rpb248dm9pZCAo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmll
cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgRnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBjYWNo
ZSA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpKSB7Ci0gICAgICAgIEhhc2hT
ZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc1RvRGVsZXRlOworICAgICAgICBIYXNo
U2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNUb0RlbGV0ZTsKICAg
ICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQogICAgICAgICAgICAgb3JpZ2luc1Rv
RGVsZXRlLmFkZChvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICAgICAgVmVjdG9yPE5l
dHdvcmtDYWNoZTo6S2V5PiBjYWNoZUtleXNUb0RlbGV0ZTsKICAgICAgICAgY2FjaGUtPnRyYXZl
cnNlKFtjYWNoZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgb3JpZ2luc1RvRGVsZXRlID0gV1RGTW92ZShvcmlnaW5zVG9EZWxldGUpLCBjYWNoZUtleXNU
b0RlbGV0ZSA9IFdURk1vdmUoY2FjaGVLZXlzVG9EZWxldGUpXShhdXRvKiB0cmF2ZXJzYWxFbnRy
eSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAodHJhdmVyc2FsRW50cnkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAob3JpZ2luc1RvRGVsZXRlLmNvbnRhaW5zKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUodHJhdmVyc2FsRW50cnktPmVudHJ5LnJlc3BvbnNlKCkudXJsKCkpKSkKKyAgICAgICAgICAg
ICAgICBpZiAob3JpZ2luc1RvRGVsZXRlLmNvbnRhaW5zKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodHJhdmVyc2FsRW50cnktPmVudHJ5LnJlc3BvbnNlKCkudXJsKCkpKSkKICAgICAg
ICAgICAgICAgICAgICAgY2FjaGVLZXlzVG9EZWxldGUuYXBwZW5kKHRyYXZlcnNhbEVudHJ5LT5l
bnRyeS5rZXkoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
NjM3LDE2ICs2MzUsMTYgQEAgc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKGNvbnN0
IAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdl
YnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5E
YXRhcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIEhTVFNDYWNoZUhvc3ROYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIEhTVFNDYWNoZUhvc3ROYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIGlmIChhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29va2llSG9zdE5hbWVzKTsKICAgICB9CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgICAgIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcygqbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBIU1RTQ2FjaGVIb3N0TmFtZXMpOwogICAgIH0KICNlbmRpZgpAQCAtNjU3LDE0ICs2NTUsMTQg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGbwogCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCi0gICAgICAgICAgICBD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oc2Vzc2lvbklELCBTZWN1
cml0eU9yaWdpbkRhdGEgeyBvcmlnaW5EYXRhIH0sIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFy
VGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIENhY2hlU3RvcmFnZTo6
RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbihzZXNzaW9uSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB7IG9yaWdpbkRhdGEgfSwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNr
c0hhbmRsZXIuY29weVJlZigpXSB7IH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSAmJiAhc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpCiAgICAgICAgIGNsZWFyRGlza0NhY2hlRW50cmllcyhvcmlnaW5EYXRhcywg
W2NsZWFyVGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcildIHsgfSk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJ
RCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiB7CiAgICAgZG93bmxvYWRNYW5hZ2VyKCku
c3RhcnREb3dubG9hZChudWxscHRyLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QsIHN1
Z2dlc3RlZEZpbGVuYW1lKTsKIH0KQEAgLTY4OSw3ICs2ODcsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwZW5kaW5nRG93bmxvYWRDYW5jCiAgICAgZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkQ2FuY2VsKHsgfSksIGRvd25sb2FkSUQu
ZG93bmxvYWRJRCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXNrLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSBuZXR3b3Jr
RGF0YVRhc2sucGVuZGluZ0Rvd25sb2FkSUQoKS5kb3dubG9hZElEKCk7CiAgICAgZG93bmxvYWRQ
cm94eUNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlKSwgZGVzdGluYXRpb25JRCk7CkBAIC02OTksNyArNjk3LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZAogICAgIC8vIEFzIHBlciBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0aGUg
ZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIKICAgICAvLyBzaG91
bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBhdHRy
aWJ1dGUuCiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2UuaXNBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lKCkgPyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpIDogbmV0d29y
a0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1lKCk7Ci0gICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3Nhcnkoc3VnZ2VzdGVk
RmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0g
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5
KHN1Z2dlc3RlZEZpbGVuYW1lLCByZXNwb25zZS5taW1lVHlwZSgpKTsKIAogICAgIGRvd25sb2Fk
UHJveHlDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMobmV0d29ya0RhdGFUYXNrLnBlbmRp
bmdEb3dubG9hZElEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKSwgZGVzdGluYXRpb25JRCk7CiB9CkBA
IC03NTcsMzEgKzc1NSwzMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXROZXR3b3JrUHJvY2Vz
c1N0CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9y
V2ViU29ja2V0KGJvb2wgYWxsb3dzKQogewotICAgIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6
c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYWxsb3dzKTsKKyAgICBXZWJDb3JlOjpEZXByZWNh
dGVkR2xvYmFsU2V0dGluZ3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKGFsbG93cyk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdl
YlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlh
Z25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCiB7Ci0gICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0
ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQorICAgIGlmICghV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2Uod2ViUGFnZUlELCBt
ZXNzYWdlLCBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlOjpObyksIDApOworICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Okxv
Z0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIFdlYkNv
cmU6OlNob3VsZFNhbXBsZTo6Tm8pLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBEaWFnbm9zdGljTG9nZ2lu
Z1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBh
Z2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBXZWJDb3JlOjpTaG91
bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewotICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKKyAgICBpZiAoIVdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3Vs
ZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQsIFNo
b3VsZFNhbXBsZTo6Tm8pLCAwKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwgcmVzdWx0LCBXZWJDb3JlOjpT
aG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVk
IHNpZ25pZmljYW50RmlndXJlcywgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBh
Z2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBk
b3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKLSAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCisgICAgaWYgKCFXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRT
YW1wbGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2Fn
ZVdpdGhWYWx1ZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCB2YWx1ZSwgc2lnbmlm
aWNhbnRGaWd1cmVzLCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CisgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25v
c3RpY01lc3NhZ2VXaXRoVmFsdWUod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwgdmFs
dWUsIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyksIDApOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp0ZXJtaW5hdGUoKQpAQCAtODk2LDcgKzg5NCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhjb25zdCAKIHsKICNpZiBFTkFCTEUo
U0VSVkVSX1BSRUNPTk5FQ1QpCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7
Ci0gICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgdXJsIH07CisgICAg
cGFyYW1ldGVycy5yZXF1ZXN0ID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHsgdXJsIH07CiAg
ICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJl
Y29ubmVjdE9ubHk6OlllczsKQEAgLTkxMCwzNyArOTA4LDM3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByZWNvbm5lY3RUbyhjb25zdCAKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJV
UkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKIHsKLSAgICBTY2hl
bWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShzY2hlbWUpOworICAgIFdlYkNv
cmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKHNjaGVtZSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250
ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0CiB7Ci0gICAgU2No
ZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQ
b2xpY3koc2NoZW1lKTsKKyAgICBXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxT
Y2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShzY2hlbWUpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNM
b2NhbChzY2hlbWUpOworICAgIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNj
aGVtZUFzTG9jYWwoc2NoZW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJV
UkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBjb25zdAogewotICAgIFNj
aGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3Moc2NoZW1lKTsKKyAgICBX
ZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHNjaGVt
ZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5
SXNvbGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoc2NoZW1lKTsKKyAgICBXZWJD
b3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChz
Y2hlbWUpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09S
U0VuYWJsZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChzY2hlbWUpOworICAgIFdlYkNvcmU6
OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1lKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlP
bmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2NoZW1lKSBjb25zdAogewotICAgIFNjaGVt
ZVJlZ2lzdHJ5OjpyZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Qoc2NoZW1lKTsK
KyAgICBXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZD
YW5SZXF1ZXN0KHNjaGVtZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFN5bmNBbGxD
b29raWVzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lv
biAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNiBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxp
emUoKQpAQCAtMzksMjQgKzM3LDI0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmkKICAgICBzZXRQbGF0Zm9ybVN0cmF0ZWdpZXMoJnBsYXRmb3JtU3RyYXRlZ2llcy5n
ZXQoKSk7CiB9CiAKLUNvb2tpZXNTdHJhdGVneSogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpCitXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kq
IE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVDb29raWVzU3RyYXRlZ3ko
KQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1Mb2FkZXJTdHJhdGVneSogTmV0d29ya1By
b2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkKK1dlYkNvcmU6
OkxvYWRlclN0cmF0ZWd5KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRl
TG9hZGVyU3RyYXRlZ3koKQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXN0ZWJvYXJk
U3RyYXRlZ3kqIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQYXN0ZWJv
YXJkU3RyYXRlZ3koKQorV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotQmxvYlJlZ2lzdHJ5KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKK1dlYkNvcmU6OkJsb2JSZWdpc3RyeSog
TmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdpc3RyeSgpCiB7
Ci0gICAgcmV0dXJuIG5ldyBCbG9iUmVnaXN0cnlJbXBsOworICAgIHJldHVybiBuZXcgV2ViQ29y
ZTo6QmxvYlJlZ2lzdHJ5SW1wbDsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4
ICszMSw2IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNDcsMTAgKzQ1LDEw
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY28KICAgICBpZiAocmVx
dWVzdC5odHRwQm9keSgpKSB7CiAgICAgICAgIHJlcXVlc3QuaHR0cEJvZHkoKS0+ZW5jb2RlKGVu
Y29kZXIpOwogCi0gICAgICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50
cyA9IHJlcXVlc3QuaHR0cEJvZHkoKS0+ZWxlbWVudHMoKTsKKyAgICAgICAgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzID0gcmVxdWVzdC5odHRwQm9keSgp
LT5lbGVtZW50cygpOwogICAgICAgICBzaXplX3QgZmlsZUNvdW50ID0gMDsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDAsIGNvdW50ID0gZWxlbWVudHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6
OlR5cGU6OkVuY29kZWRGaWxlKQorICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm1fdHlwZSA9
PSBXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlKQogICAgICAgICAg
ICAgICAgICsrZmlsZUNvdW50OwogICAgICAgICB9CiAKQEAgLTU4LDggKzU2LDggQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jbwogICAgICAgICByZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zLmFsbG9jYXRlKGZpbGVDb3VudCk7CiAgICAgICAgIHNpemVfdCBleHRl
bnNpb25JbmRleCA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGVsZW1l
bnRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IEZvcm1EYXRh
RWxlbWVudCYgZWxlbWVudCA9IGVsZW1lbnRzW2ldOwotICAgICAgICAgICAgaWYgKGVsZW1lbnQu
bV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEZpbGUpIHsKKyAgICAgICAg
ICAgIGNvbnN0IFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA9IGVsZW1lbnRzW2ld
OworICAgICAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IFdlYkNvcmU6OkZvcm1EYXRhRWxl
bWVudDo6VHlwZTo6RW5jb2RlZEZpbGUpIHsKICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHBhdGggPSBlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlID8gZWxlbWVudC5tX2dlbmVyYXRl
ZEZpbGVuYW1lIDogZWxlbWVudC5tX2ZpbGVuYW1lOwogICAgICAgICAgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
T25seSwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uc1tleHRlbnNpb25JbmRleCsrXSk7CiAg
ICAgICAgICAgICB9CkBAIC0xMjksNyArMTI3LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVyczo6ZGVjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzSFRU
UEJvZHkpIHsKLSAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IEZvcm1EYXRhOjpk
ZWNvZGUoZGVjb2Rlcik7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpGb3JtRGF0YT4gZm9ybURh
dGEgPSBXZWJDb3JlOjpGb3JtRGF0YTo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoIWZv
cm1EYXRhKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQucmVxdWVz
dC5zZXRIVFRQQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CkBAIC0xODAsMTIgKzE3OCwxMiBAQCBi
b29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNTb3VyY2VPcmlnaW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KGhhc1NvdXJjZU9yaWdpbikgewotICAgICAgICByZXN1bHQuc291cmNlT3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgcmVzdWx0LnNvdXJjZU9yaWdpbiA9
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICgh
cmVzdWx0LnNvdXJjZU9yaWdpbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBzdGQ6Om9wdGlvbmFsPEZldGNoT3B0aW9ucz4gb3B0aW9uczsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZldGNoT3B0aW9ucz4gb3B0aW9uczsKICAgICBkZWNvZGVyID4+IG9wdGlv
bnM7CiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByZXZpZXdMb2FkZXIuaD4KICNlbmRpZgogCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywg
IiVwIC0gTmV0d29ya1Jlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
ICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKQEAgLTc4
LDEzICs3NiwxMyBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91CiAg
ICAgewogICAgICAgICBBU1NFUlQoZGVsYXllZFJlcGx5KTsKICAgICB9Ci0gICAgUmVzb3VyY2VS
ZXF1ZXN0IGN1cnJlbnRSZXF1ZXN0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjdXJy
ZW50UmVxdWVzdDsKICAgICBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSBkZWxheWVkUmVwbHk7Ci0gICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZXNvdXJjZUVycm9yIGVycm9yOworICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvcjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNo
cm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEm
IGRhdGEsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIEFTU0VS
VChkYXRhLmRlbGF5ZWRSZXBseSk7CiAgICAgQVNTRVJUKCFkYXRhLnJlc3BvbnNlLmlzTnVsbCgp
IHx8ICFkYXRhLmVycm9yLmlzTnVsbCgpKTsKQEAgLTEwMSwyOCArOTksMjggQEAgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RG
TW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KICAg
ICAsIG1fZGVmZXJzTG9hZGluZyB7IHBhcmFtZXRlcnMuZGVmZXJzTG9hZGluZyB9Ci0gICAgLCBt
X2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENy
ZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHMgfQorICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7
IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IFdlYkNvcmU6OkNsaWVudENy
ZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVm
ZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGlt
ZXJGaXJlZCB9CiAgICAgLCBtX2NhY2hlIHsgc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSA/IG51
bGxwdHIgOiBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGUoKSB9CiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBuZWNlc3Nhcnkg
YmVjYXVzZSBvZiB0aGUgZXhpc3RlbmNlIG9mIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgaW4gV2Vi
Q29yZS4KICAgICAvLyAgICAgICAgT25jZSBidWcgMTE2MjMzIGlzIHJlc29sdmVkLCB0aGlzIEFT
U0VSVCBjYW4ganVzdCBiZSAibV93ZWJQYWdlSUQgJiYgbV93ZWJGcmFtZUlEIgotICAgIEFTU0VS
VCgobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwg
bV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBv
bGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOworICAgIEFTU0VSVCgobV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCAmJiBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwgbV9wYXJhbWV0
ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBv
bGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwogCiAgICAgaWYgKG9yaWdpbmFs
UmVxdWVzdCgpLmh0dHBCb2R5KCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZWxlbWVudHMoKSkgewotICAgICAgICAg
ICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEJs
b2IpCisgICAgICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gV2ViQ29yZTo6Rm9ybURhdGFF
bGVtZW50OjpUeXBlOjpFbmNvZGVkQmxvYikKICAgICAgICAgICAgICAgICBtX2ZpbGVSZWZlcmVu
Y2VzLmFwcGVuZFZlY3RvcihOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5maWxlc0lu
QmxvYihjb25uZWN0aW9uLCBlbGVtZW50Lm1fdXJsKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBpZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJl
c3BvbnNlQWNjZXNzKSB7Ci0gICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5v
cHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQs
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkg
fSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVm
bGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgICAgIG1fbmV0d29ya0xvYWRDaGVj
a2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KFdlYkNvcmU6OkZldGNo
T3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBXZWJDb3Jl
OjpIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwg
V2ViQ29yZTo6VVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJz
LnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9y
aWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MoKSk7CiAgICAgICAgIGlmIChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFk
ZXJzKQotICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENTUFJlc3BvbnNlSGVh
ZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgeyBtX3BhcmFtZXRlcnMu
Y3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7CisgICAgICAgICAgICBtX25ldHdvcmtMb2Fk
Q2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyB7IG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMudmFs
dWUoKSB9KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgICAgICBtX25ldHdv
cmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJMIHsgbV9wYXJh
bWV0ZXJzLm1haW5Eb2N1bWVudFVSTCB9LCBtX3BhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcik7CisgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDb250ZW50
RXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpVUkwgeyBtX3BhcmFtZXRlcnMubWFpbkRvY3Vt
ZW50VVJMIH0sIG1fcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsK
ICNlbmRpZgogICAgIH0KICAgICBpZiAoc3luY2hyb25vdXNSZXBseSkKQEAgLTEzNiw3ICsxMzQs
NyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5OZXR3b3JrUmVzb3VyY2VMCiAgICAgQVNTRVJU
KCFpc1N5bmNocm9ub3VzKCkgfHwgIW1fc3luY2hyb25vdXNMb2FkRGF0YS0+ZGVsYXllZFJlcGx5
KTsKIH0KIAotYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhblVzZUNhY2hlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKK2Jvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpjYW5Vc2VDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2NhY2hlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTAs
NyArMTQ4LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhblVzZUNhY2hlKAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQ2Fj
aGVkUmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAorYm9vbCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhblVzZUNhY2hlZFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICBpZiAoIWNhblVzZUNhY2hl
KHJlcXVlc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODMsNyArMTgxLDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVl
OwogCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7Ci0gICAgICAgIG1fbmV0d29ya0xv
YWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCB0
aGlzLCBbdGhpc10gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNr
ZXItPmNoZWNrKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH0s
IHRoaXMsIFt0aGlzXSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQu
aGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5lcnJvcigpLmlzQ2Fu
Y2VsbGF0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmRpZEZhaWxMb2FkaW5nKHJl
c3VsdC5lcnJvcigpKTsKQEAgLTIwNiwxNSArMjA0LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdGFydE5ldHdv
cmtMb2FkKFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH0sIEZpcnN0TG9hZDo6
WWVzKTsKKyAgICBzdGFydE5ldHdvcmtMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCB7IG9y
aWdpbmFsUmVxdWVzdCgpIH0sIEZpcnN0TG9hZDo6WWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoY2Fu
VXNlQ2FjaGUocmVxdWVzdCkpOwogCiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4g
bG9hZGVyKHRoaXMpOwotICAgIG1fY2FjaGUtPnJldHJpZXZlKHJlcXVlc3QsIHsgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQgfSwgW3RoaXMsIGxvYWRlciA9
IFdURk1vdmUobG9hZGVyKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0o
YXV0byBlbnRyeSwgYXV0byBpbmZvKSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5yZXRyaWV2ZShy
ZXF1ZXN0LCB7IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
IH0sIFt0aGlzLCBsb2FkZXIgPSBXVEZNb3ZlKGxvYWRlciksIHJlcXVlc3QgPSBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICAvLyBU
aGUgbG9hZGVyIGhhcyBiZWVuIGFib3J0ZWQgYW5kIGlzIG9ubHkgaGVsZCBhbGl2ZSBieSB0aGlz
IGxhbWJkYS4KICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0Nyw3ICsyNDUsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoCiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIEZpcnN0TG9hZCBsb2FkKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
TmV0d29ya0xvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2Fk
IGxvYWQpCiB7CiAgICAgaWYgKGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMpIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNN
YWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwg
aXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKQEAgLTI1NSwxMCArMjUzLDEwIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICAgICAgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBt
X3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAKICAgICAgICAgaWYg
KGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9CiAKICAgICBO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTMzNSw3
ICszMzMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cChMb2FkCiAgICAg
bV9jb25uZWN0aW9uLT5kaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoKnRoaXMpOwogfQogCi12b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnZlcnRUb0Rv
d25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHJlc291cmNlIGNhbWUgZnJvbSB0aGUg
ZGlzayBjYWNoZS4KICAgICBpZiAoIW1fbmV0d29ya0xvYWQpIHsKQEAgLTM2NiwxOSArMzY0LDE5
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgY2xlYW51cChMb2Fk
UmVzdWx0OjpDYW5jZWwpOwogfQogCi1ib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxk
SW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RnJhbWVPcHRpb25z
LCBjb25zdCBVUkwmIHVybCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRl
cnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIHhGcmFtZU9wdGlvbnMsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIGlmIChpc01haW5GcmFtZUxvYWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChwYXJzZVhGcmFtZU9wdGlvbnNIZWFk
ZXIoeEZyYW1lT3B0aW9ucykpIHsKLSAgICBjYXNlIFhGcmFtZU9wdGlvbnNOb25lOgotICAgIGNh
c2UgWEZyYW1lT3B0aW9uc0FsbG93QWxsOgorICAgIHN3aXRjaCAoV2ViQ29yZTo6cGFyc2VYRnJh
bWVPcHRpb25zSGVhZGVyKHhGcmFtZU9wdGlvbnMpKSB7CisgICAgY2FzZSBXZWJDb3JlOjpYRnJh
bWVPcHRpb25zTm9uZToKKyAgICBjYXNlIFdlYkNvcmU6OlhGcmFtZU9wdGlvbnNBbGxvd0FsbDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgWEZyYW1lT3B0aW9uc0Rlbnk6CisgICAg
Y2FzZSBXZWJDb3JlOjpYRnJhbWVPcHRpb25zRGVueToKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgY2FzZSBYRnJhbWVPcHRpb25zU2FtZU9yaWdpbjogewotICAgICAgICBhdXRvIG9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKKyAgICBjYXNlIFdlYkNvcmU6OlhGcmFtZU9w
dGlvbnNTYW1lT3JpZ2luOiB7CisgICAgICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgICAgICBhdXRvIHRvcEZyYW1lT3JpZ2luID0gbV9w
YXJhbWV0ZXJzLmZyYW1lQW5jZXN0b3JPcmlnaW5zLmxhc3QoKTsKICAgICAgICAgaWYgKCFvcmln
aW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KCp0b3BGcmFtZU9yaWdpbikpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTM4OCwxMiArMzg2LDEyIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzaG91bGRJbnRlcnIKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIGNhc2UgWEZyYW1lT3B0aW9uc0NvbmZsaWN0OiB7CisgICAgY2FzZSBXZWJDb3JlOjpY
RnJhbWVPcHRpb25zQ29uZmxpY3Q6IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJN
dWx0aXBsZSAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXJzIHdpdGggY29uZmxpY3RpbmcgdmFsdWVz
ICgnIiArIHhGcmFtZU9wdGlvbnMgKyAiJykgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsg
dXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicuIEZhbGxpbmcgYmFjayB0
byAnREVOWScuIjsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1l
c3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlEKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGNhc2UgWEZy
YW1lT3B0aW9uc0ludmFsaWQ6IHsKKyAgICBjYXNlIFdlYkNvcmU6OlhGcmFtZU9wdGlvbnNJbnZh
bGlkOiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiSW52YWxpZCAnWC1GcmFtZS1P
cHRpb25zJyBoZWFkZXIgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIic6ICciICsgeEZyYW1lT3B0aW9ucyArICInIGlz
IG5vdCBhIHJlY29nbml6ZWQgZGlyZWN0aXZlLiBUaGUgaGVhZGVyIHdpbGwgYmUgaWdub3JlZC4i
OwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MDMsNyArNDAxLDcgQEAgYm9vbCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFt
ZUFuY2VzdG9yc09yWEZyYW1lT3B0aW9ucyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK2Jvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQ
RnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvbnMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJlc291cmNlKCkpOwogCkBAIC00
MTMsMTEgKzQxMSwxMSBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJy
CiAjZW5kaWYKIAogICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgQ29udGVudFNl
Y3VyaXR5UG9saWN5IGNvbnRlbnRTZWN1cml0eVBvbGljeSB7IFVSTCB7IHVybCB9LCB0aGlzIH07
Ci0gICAgY29udGVudFNlY3VyaXR5UG9saWN5LmRpZFJlY2VpdmVIZWFkZXJzKENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IHJlc3BvbnNlIH0sIG9yaWdpbmFsUmVxdWVzdCgp
Lmh0dHBSZWZlcnJlcigpKTsKKyAgICBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kgY29u
dGVudFNlY3VyaXR5UG9saWN5IHsgV2ViQ29yZTo6VVJMIHsgdXJsIH0sIHRoaXMgfTsKKyAgICBj
b250ZW50U2VjdXJpdHlQb2xpY3kuZGlkUmVjZWl2ZUhlYWRlcnMoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgcmVzcG9uc2UgfSwgb3JpZ2luYWxSZXF1ZXN0
KCkuaHR0cFJlZmVycmVyKCkpOwogICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LmFsbG93
RnJhbWVBbmNlc3RvcnMobV9wYXJhbWV0ZXJzLmZyYW1lQW5jZXN0b3JPcmlnaW5zLCB1cmwpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBTdHJpbmcgeEZyYW1lT3B0aW9ucyA9IG1fcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpYRnJhbWVPcHRpb25zKTsKKyAgICBT
dHJpbmcgeEZyYW1lT3B0aW9ucyA9IG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKFdlYkNvcmU6
OkhUVFBIZWFkZXJOYW1lOjpYRnJhbWVPcHRpb25zKTsKICAgICBpZiAoIXhGcmFtZU9wdGlvbnMu
aXNOdWxsKCkgJiYgc2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoeEZyYW1lT3B0
aW9ucywgcmVzcG9uc2UudXJsKCkpKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAi
UmVmdXNlZCB0byBkaXNwbGF5ICciICsgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9w
dGlvbnMnIHRvICciICsgeEZyYW1lT3B0aW9ucyArICInLiI7CiAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
ICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNz
YWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CkBAIC00MjYsNyAr
NDI0LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycgogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYXV0byBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2UKK2F1dG8gTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9u
c2UpIC0+IFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBodHRwU3Rh
dHVzQ29kZSA9ICVkLCBsZW5ndGggPSAlIiBQUklkNjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFn
ZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJl
Y2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSk7CiAKQEAgLTQ3NCw3ICs0NzIsNyBAQCBhdXRvIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIHJl
c3BvbnNlID0gc2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUoUmVzb3VyY2VSZXNwb25zZSB7IG1f
cmVzcG9uc2UgfSwgUmVzb3VyY2VSZXNwb25zZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmln
aW5TYWZlKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gc2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSB7IG1fcmVzcG9uc2UgfSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZTo6U2FuaXRpemF0aW9uVHlwZTo6Q3Jvc3NPcmlnaW5TYWZlKTsKICAgICBpZiAo
aXNTeW5jaHJvbm91cygpKSB7CiAgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YS0+cmVzcG9u
c2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKICAgICAgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlOjpZZXM7CkBAIC00ODcsNyArNDg1LDcgQEAgYXV0byBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZQogICAgIHJldHVybiB3aWxsV2FpdEZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlID8gU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6Ok5v
IDogU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2U6OlllczsKIH0KIAotdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1C
eXRlc1JlY2VpdmVkKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIpOwpAQCAtNTE3LDcgKzUxNSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnUKICAgICBzZW5kQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgp
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7CiAKQEAgLTU1Miw3ICs1NTAsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hCiAgICAgY2xlYW51cChMb2Fk
UmVzdWx0OjpTdWNjZXNzKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZh
aWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxMb2FkaW5nOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgaXNBY2Nlc3ND
b250cm9sID0gJWQsIGVyckNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVycm9yLmlzVGlt
ZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5pc0FjY2Vzc0NvbnRyb2woKSwg
ZXJyb3IuZXJyb3JDb2RlKCkpOwogCkBAIC01NzcsMTEgKzU3NSwxMSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiB9CiAKLXZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgICsrbV9y
ZWRpcmVjdENvdW50OwogCi0gICAgaWYgKHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVz
b3VyY2VSZXNwb25zZTo6U291cmNlOjpOZXR3b3JrICYmIGNhblVzZUNhY2hlZFJlZGlyZWN0KHJl
cXVlc3QpKQorICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlLnNvdXJjZSgpID09IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayAmJiBjYW5Vc2VDYWNoZWRSZWRpcmVjdChy
ZXF1ZXN0KSkKICAgICAgICAgbV9jYWNoZS0+c3RvcmVSZWRpcmVjdChyZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVj
a2VyKSB7CkBAIC01OTUsNyArNTkzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVkaQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRpb25zLnJlZGlyZWN0ID09IEZldGNoT3B0aW9u
czo6UmVkaXJlY3Q6Ok1hbnVhbCkgeworICAgICAgICAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRp
b25zLnJlZGlyZWN0ID09IFdlYkNvcmU6OkZldGNoT3B0aW9uczo6UmVkaXJlY3Q6Ok1hbnVhbCkg
ewogICAgICAgICAgICAgICAgIHRoaXMtPmRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKFdU
Rk1vdmUocmVzdWx0LT5yZWRpcmVjdFJlc3BvbnNlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQpAQCAtNjIxLDE2ICs2MTksMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVkaQogICAgIGNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUo
cmVkaXJlY3RSZXNwb25zZSkpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29u
dGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNo
cm9ub3VzKCkpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxT
ZW5kUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QsIHNhbml0aXplUmVzcG9uc2VJZlBvc3NpYmxlKFdU
Rk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFJlc291cmNlUmVzcG9uc2U6OlNhbml0aXphdGlvblR5
cGU6OlJlZGlyZWN0aW9uKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpXaWxsU2VuZFJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LCBzYW5pdGl6ZVJlc3BvbnNlSWZQb3Nz
aWJsZShXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
OjpTYW5pdGl6YXRpb25UeXBlOjpSZWRpcmVjdGlvbikpKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaFdpdGhSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKQogewotICAgIHJlZGlyZWN0UmVzcG9uc2Uuc2V0VHlwZShSZXNvdXJjZVJl
c3BvbnNlOjpUeXBlOjpPcGFxdWVyZWRpcmVjdCk7CisgICAgcmVkaXJlY3RSZXNwb25zZS5zZXRU
eXBlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlR5cGU6Ok9wYXF1ZXJlZGlyZWN0KTsKICAg
ICBkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSk7CiAKICAgICBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzOwpAQCAtNjQyLDcg
KzY0MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hXaXQKICAgICBj
bGVhbnVwKExvYWRSZXN1bHQ6OlN1Y2Nlc3MpOwogfQogCi1SZXNvdXJjZVJlc3BvbnNlIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2FuaXRpemVSZXNwb25zZUlmUG9zc2libGUoUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBSZXNvdXJjZVJlc3BvbnNlOjpTYW5pdGl6YXRpb25UeXBlIHR5cGUp
CitXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2FuaXRp
emVSZXNwb25zZUlmUG9zc2libGUoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpTYW5pdGl6YXRpb25UeXBlIHR5cGUpCiB7CiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcykKICAg
ICAgICAgcmVzcG9uc2Uuc2FuaXRpemVIVFRQSGVhZGVyRmllbGRzKHR5cGUpOwpAQCAtNjYwLDcg
KzY1OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXN0YXJ0TmV0d28KICAgICBz
dGFydE5ldHdvcmtMb2FkKFdURk1vdmUobmV3UmVxdWVzdCksIEZpcnN0TG9hZDo6Tm8pOwogfQog
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFscykKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlzQWxsb3dl
ZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKQogewogICAgIGlmIChtX3Nob3VsZFJlc3RhcnRMb2Fk
KSB7CiAgICAgICAgIG1fc2hvdWxkUmVzdGFydExvYWQgPSBmYWxzZTsKQEAgLTY3MSw3ICs2Njks
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsCiAgICAgaWYgKG1f
bmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZG9p
bmcgdGhpcyBjaGVjayB3aGVuIHJlY2VpdmluZyB0aGUgcmVkaXJlY3Rpb24gYW5kIG5vdCBhbGxv
dyBhYm91dCBwcm90b2NvbCBhcyBwZXIgZmV0Y2ggc3BlYy4KICAgICAgICAgaWYgKCFuZXdSZXF1
ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhbmV3UmVxdWVzdC51cmwoKS5p
c0JsYW5rVVJMKCkgJiYgbV9yZWRpcmVjdENvdW50KSB7Ci0gICAgICAgICAgICBkaWRGYWlsTG9h
ZGluZyhSZXNvdXJjZUVycm9yIHsgU3RyaW5nIHsgfSwgMCwgbmV3UmVxdWVzdC51cmwoKSwgIlJl
ZGlyZWN0aW9uIHRvIFVSTCB3aXRoIGEgc2NoZW1lIHRoYXQgaXMgbm90IEhUVFAoUykiX3MsIFJl
c291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CisgICAgICAgICAgICBkaWRGYWls
TG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgU3RyaW5nIHsgfSwgMCwgbmV3UmVxdWVz
dC51cmwoKSwgIlJlZGlyZWN0aW9uIHRvIFVSTCB3aXRoIGEgc2NoZW1lIHRoYXQgaXMgbm90IEhU
VFAoUykiX3MsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC03NDMsMTMgKzc0MSwx
MyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltCiAgICAgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobV9idWZmZXJlZERhdGEuZ2V0
KCkpOwogICAgIHNpemVfdCBlbmNvZGVkTGVuZ3RoID0gbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aDsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBtX2J1ZmZlcmVkRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiAKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoZGF0YVJlZmVyZW5jZSwgZW5j
b2RlZExlbmd0aCkpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZl
cihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hy
b25vdXMoKSk7CiAKQEAgLTc5MCw3ICs3ODgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmV0cmlldmVDCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXNwb25zZSA9IHNhbml0
aXplUmVzcG9uc2VJZlBvc3NpYmxlKFdURk1vdmUocmVzcG9uc2UpLCBSZXNvdXJjZVJlc3BvbnNl
OjpTYW5pdGl6YXRpb25UeXBlOjpDcm9zc09yaWdpblNhZmUpOworICAgIHJlc3BvbnNlID0gc2Fu
aXRpemVSZXNwb25zZUlmUG9zc2libGUoV1RGTW92ZShyZXNwb25zZSksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2U6OlNhbml0aXphdGlvblR5cGU6OkNyb3NzT3JpZ2luU2FmZSk7CiAgICAgaWYg
KGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEtPnJlc3Bv
bnNlID0gV1RGTW92ZShyZXNwb25zZSk7CiAgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIGVudHJ5LT5idWZmZXIoKSk7CkBAIC04NzIs
MTQgKzg3MCwxNCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dmFsaWRhdGVDYWNoCiAK
ICAgICAvLyBJZiB0aGUgcmVxdWVzdCBpcyBhbHJlYWR5IGNvbmRpdGlvbmFsIHRoZW4gdGhlIHJl
dmFsaWRhdGlvbiB3YXMgbm90IHRyaWdnZXJlZCBieSB0aGUgZGlzayBjYWNoZQogICAgIC8vIGFu
ZCB3ZSBzaG91bGQgbm90IG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgY29uZGl0aW9uYWwgaGVhZGVy
cy4KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmV2YWxpZGF0aW9uUmVxdWVzdCA9IG9yaWdpbmFsUmVx
dWVzdCgpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0
ID0gb3JpZ2luYWxSZXF1ZXN0KCk7CiAgICAgaWYgKCFyZXZhbGlkYXRpb25SZXF1ZXN0LmlzQ29u
ZGl0aW9uYWwoKSkgewotICAgICAgICBTdHJpbmcgZVRhZyA9IGVudHJ5LT5yZXNwb25zZSgpLmh0
dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6RVRhZyk7Ci0gICAgICAgIFN0cmluZyBsYXN0
TW9kaWZpZWQgPSBlbnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6Okxhc3RNb2RpZmllZCk7CisgICAgICAgIFN0cmluZyBlVGFnID0gZW50cnktPnJlc3BvbnNl
KCkuaHR0cEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpFVGFnKTsKKyAgICAg
ICAgU3RyaW5nIGxhc3RNb2RpZmllZCA9IGVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVs
ZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6TGFzdE1vZGlmaWVkKTsKICAgICAgICAgaWYgKCFl
VGFnLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk5vbmVNYXRjaCwgZVRhZyk7CisgICAgICAgICAg
ICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVh
ZGVyTmFtZTo6SWZOb25lTWF0Y2gsIGVUYWcpOwogICAgICAgICBpZiAoIWxhc3RNb2RpZmllZC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6SWZNb2RpZmllZFNpbmNlLCBsYXN0TW9kaWZpZWQpOworICAg
ICAgICAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoV2ViQ29yZTo6
SFRUUEhlYWRlck5hbWU6OklmTW9kaWZpZWRTaW5jZSwgbGFzdE1vZGlmaWVkKTsKICAgICB9CiAK
ICAgICBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uID0gV1RGTW92ZShlbnRyeSk7CkBAIC04ODcs
NyArODg1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnZhbGlkYXRlQ2FjaAogICAg
IHN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgRmlyc3RMb2Fk
OjpZZXMpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlzcGF0Y2hXaWxsU2Vu
ZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiYmIGVudHJ5KQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpF
bnRyeT4mJiBlbnRyeSkKIHsKICAgICBBU1NFUlQoZW50cnktPnJlZGlyZWN0UmVxdWVzdCgpKTsK
ICAgICBBU1NFUlQoIW1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRS
ZWRpcmVjdCk7CkBAIC04OTUsNyArODkzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpc3BhdGNoV2lsbAogICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIEV4
ZWN1dGluZyBjYWNoZWQgcmVkaXJlY3QiKTsKIAogICAgIG1faXNXYWl0aW5nQ29udGludWVXaWxs
U2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCA9IHRydWU7Ci0gICAgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBSZXNvdXJjZVJlcXVlc3QgeyAqZW50cnktPnJl
ZGlyZWN0UmVxdWVzdCgpIH0sIFJlc291cmNlUmVzcG9uc2UgeyBlbnRyeS0+cmVzcG9uc2UoKSB9
KTsKKyAgICB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCB7ICplbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkgfSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSB7IGVudHJ5LT5yZXNwb25zZSgpIH0pOwogfQogCiBJUEM6OkNv
bm5lY3Rpb24qIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KQpAQCAtOTcxLDEwICs5NjksMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nv
b2tpZUluZgogICAgIGF1dG8gbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJU
KG5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7CiAKLSAgICBsb2dDb29raWVJbmZvcm1hdGlvbigiTmV0
d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyks
ICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JD
b29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2lu
YWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFt
ZUlEKCksIHBhZ2VJRCgpLCBpZGVudGlmaWVyKCkpOworICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9u
KCJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0
aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgV2ViQ29yZTo6U2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1
ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJl
ZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRp
YyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9u
KGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0
IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAg
QVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24o
KSk7CiAKQEAgLTEwNjIsNyArMTA2MCw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0
aW9uSW50ZXJuYWwKICN1bmRlZiBMT0NBTF9MT0dfSUZfQUxMT1dFRAogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChzaG91bGRM
b2dDb29raWVJbmZvcm1hdGlvbigpKTsKIApAQCAtMTA3OCw3ICsxMDc2LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmFkZENvbnNvbGVNZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdl
U291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRDU1BW
aW9sYXRpb25SZXBvcnQoVVJMJiYgcmVwb3J0VVJMLCBSZWY8Rm9ybURhdGE+JiYgcmVwb3J0KQor
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQoV2ViQ29y
ZTo6VVJMJiYgcmVwb3J0VVJMLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYgcmVwb3J0KQogewog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRDU1BWaW9sYXRpb25SZXBvcnQgeyBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgV1RGTW92ZShyZXBvcnRVUkwpLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHsgV1RGTW92ZShyZXBvcnQpIH0gfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiB9
CkBAIC0xMTIzLDMgKzExMjEsNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nU2xv
d0NhY2hlCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjdW5kZWYgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRAorI3VuZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCShyZXZp
c2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsNiBAQAogI2luY2x1ZGUgIk5ldHdv
cmtTZXNzaW9uQ3VybC5oIgogI2VuZGlmCiAKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBSZWY8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9u
OjpjcmVhdGUoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQpA
QCAtNTksOSArNTYsOSBAQCBSZWY8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uOjpjcmVh
CiAjZW5kaWYKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU2Vzc2lvbjo6bmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCkgY29uc3QKK1dlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgTmV0d29ya1Nlc3Npb246Om5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAg
YXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKG1fc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHN0b3JhZ2VTZXNzaW9uKTsKICAgICByZXR1cm4gKnN0b3JhZ2VTZXNzaW9u
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0uY3BwCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwxOSArMzIsMTcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg+CiAKLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmPE5ldHdvcmtTb2NrZXRT
dHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShXZWJDb3JlOjpVUkwmJiB1cmwsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9u
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKK1JlZjxOZXR3b3JrU29ja2V0U3Ry
ZWFtPiBOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUoV2ViQ29yZTo6VVJMJiYgdXJsLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwg
dWludDY0X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3Jl
OjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmV0d29ya1NvY2tldFN0cmVhbShXVEZNb3ZlKHVybCksIHNlc3Npb25J
RCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgaWRlbnRpZmllciwgY29ubmVjdGlvbiwgV1RGTW92ZShh
dWRpdERhdGEpKSk7CiB9CiAKLU5ldHdvcmtTb2NrZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJl
YW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpCitOZXR3
b3JrU29ja2V0U3RyZWFtOjpOZXR3b3JrU29ja2V0U3RyZWFtKFdlYkNvcmU6OlVSTCYmIHVybCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRp
b24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
Q29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQogICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKLSAg
ICAsIG1faW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCAqdGhpcywgc2Vz
c2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKQorICAgICwg
bV9pbXBsKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSh1cmwsICp0aGlz
LCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFdURk1vdmUoYXVkaXREYXRhKSkpCiB7
CiB9CiAKQEAgLTU1LDcgKzUzLDcgQEAgdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpzZW5kRGF0
YShjb25zdAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OnNlbmRIYW5k
c2hha2UoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYgaGVhZGVyRmllbGRQcm94eSwgdWludDY0
X3QgaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6c2VuZEhhbmRzaGFrZShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiBoZWFkZXJGaWVsZFByb3h5LCB1aW50
NjRfdCBpZGVudGlmaWVyKQogewogICAgIG1faW1wbC0+cGxhdGZvcm1TZW5kSGFuZHNoYWtlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgaGVhZGVyRmllbGRQcm94eSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllcl0gKGJvb2wgc3VjY2VzcywgYm9vbCBk
aWRBY2Nlc3NTZWN1cmVDb29raWVzKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tl
dFN0cmVhbTo6RGlkU2VuZEhhbmRzaGFrZShpZGVudGlmaWVyLCBzdWNjZXNzLCBkaWRBY2Nlc3NT
ZWN1cmVDb29raWVzKSk7CkBAIC03MiwxOSArNzAsMTkgQEAgTmV0d29ya1NvY2tldFN0cmVhbTo6
fk5ldHdvcmtTb2NrZXRTdHJlYQogICAgIGNsb3NlKCk7CiB9CiAKLXZvaWQgTmV0d29ya1NvY2tl
dFN0cmVhbTo6ZGlkT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkK
K3ZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkT3BlblNvY2tldFN0cmVhbShXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwg
JmhhbmRsZSA9PSBtX2ltcGwucHRyKCkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0
cmVhbTo6RGlkT3BlblNvY2tldFN0cmVhbSgpKTsKIH0KIAotdm9pZCBOZXR3b3JrU29ja2V0U3Ry
ZWFtOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKK3Zv
aWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsICZo
YW5kbGUgPT0gbV9pbXBsLnB0cigpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJl
YW06OkRpZENsb3NlU29ja2V0U3RyZWFtKCkpOwogfQogCi12b2lkIE5ldHdvcmtTb2NrZXRTdHJl
YW06OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBOZXR3b3JrU29ja2V0U3Ry
ZWFtOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGUmIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NF
UlRfVU5VU0VEKGhhbmRsZSwgJmhhbmRsZSA9PSBtX2ltcGwucHRyKCkpOwogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNvY2tldFN0cmVhbTo6RGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoSVBDOjpE
YXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5n
dGgpKSk7CkBAIC05NiwxMyArOTQsMTMgQEAgdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRG
YWlsVG9SZWNlaQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVhbTo6RGlkRmFpbFRv
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1NvY2tldFN0cmVh
bTo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIHNp
emVfdCBhbW91bnQpCit2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OmRpZFVwZGF0ZUJ1ZmZlcmVk
QW1vdW50KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBzaXplX3QgYW1vdW50
KQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCAmaGFuZGxlID09IG1faW1wbC5wdHIoKSk7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRVcGRhdGVCdWZmZXJlZEFt
b3VudChhbW91bnQpKTsKIH0KIAotdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRGYWlsU29j
a2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTb2NrZXRTdHJlYW1F
cnJvciYgZXJyb3IpCit2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OmRpZEZhaWxTb2NrZXRTdHJl
YW0oV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUVycm9yJiBlcnJvcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgJmhh
bmRsZSA9PSBtX2ltcGwucHRyKCkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVh
bTo6RGlkRmFpbFNvY2tldFN0cmVhbShlcnJvcikpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyAr
MzYsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCi1QaW5nTG9hZDo6UGluZ0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK1BpbmdM
b2FkOjpQaW5nTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogICAgIDogbV9wYXJhbWV0ZXJzKFdURk1vdmUocGFyYW1ldGVycykpCiAgICAgLCBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV90aW1lb3V0
VGltZXIoKnRoaXMsICZQaW5nTG9hZDo6dGltZW91dFRpbWVyRmlyZWQpCi0gICAgLCBtX25ldHdv
cmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4oRmV0Y2hPcHRp
b25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgV1RGTW92ZShtX3Bh
cmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFt
ZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIo
KSkpCisgICAgLCBtX25ldHdvcmtMb2FkQ2hlY2tlcihtYWtlVW5pcXVlUmVmPE5ldHdvcmtMb2Fk
Q2hlY2tlcj4oV2ViQ29yZTo6RmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnN9LCBt
X3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgV1RGTW92ZShtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cyksIFdlYkNvcmU6OlVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1l
dGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5
LCBtX3BhcmFtZXRlcnMucmVxdWVzdC5odHRwUmVmZXJyZXIoKSkpCiB7CiAgICAgbV9uZXR3b3Jr
TG9hZENoZWNrZXItPmVuYWJsZUNvbnRlbnRFeHRlbnNpb25zQ2hlY2soKTsKICAgICBpZiAobV9w
YXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycykKQEAgLTU1LDcgKzUzLDcgQEAgUGluZ0xvYWQ6
OlBpbmdMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYQogICAgIC8vIFNldCBhIHZlcnkgZ2VuZXJv
dXMgdGltZW91dCwganVzdCBpbiBjYXNlLgogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hv
dCg2MDAwMF9zKTsKIAotICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJl
cXVlc3QgeyBtX3BhcmFtZXRlcnMucmVxdWVzdCB9LCBudWxscHRyLCBbdGhpc10gKGF1dG8mJiBy
ZXN1bHQpIHsKKyAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QgfSwgbnVsbHB0ciwgW3RoaXNdIChhdXRv
JiYgcmVzdWx0KSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAg
ICAgICB0aGlzLT5kaWRGaW5pc2gocmVzdWx0LmVycm9yKCkpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzMsMTMgKzcxLDEzIEBAIFBpbmdMb2FkOjp+UGluZ0xvYWQoKQogICAgIH0KIH0KIAot
dm9pZCBQaW5nTG9hZDo6ZGlkRmluaXNoKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgUGluZ0xvYWQ6OmRpZEZpbmlzaChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihlcnJvciwg
cmVzcG9uc2UpOwogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFBpbmdMb2FkOjpsb2FkUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQordm9pZCBQaW5nTG9hZDo6bG9hZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkIik7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKG1fcGFyYW1ldGVycy5zZXNz
aW9uSUQpKSB7CkBAIC05MSw5ICs4OSw5IEBAIHZvaWQgUGluZ0xvYWQ6OmxvYWRSZXF1ZXN0KFJl
c291cmNlUmVxdWUKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUGlu
Z0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFBpbmdMb2FkOjp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fbmV0d29ya0xvYWRDaGVj
a2VyLT5jaGVja1JlZGlyZWN0aW9uKFJlc291cmNlUmVxdWVzdCB7IH0sIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIG51bGxwdHIsIFt0aGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHsgfSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVj
dFJlc3BvbnNlKSwgbnVsbHB0ciwgW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CiAgICAgICAgICAgICB0aGlzLT5kaWRGaW5pc2gocmVzdWx0LmVycm9yKCkpOwpAQCAtMTAz
LDcgKzEwMSw3IEBAIHZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW8KICAg
ICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnByZXBhcmVSZWRpcmVjdGVkUmVxdWVzdChyZXF1
ZXN0KTsKIAogICAgICAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpKSB7Ci0gICAgICAgICAgICB0aGlzLT5kaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmlu
ZyB7IH0sIDAsIHJlcXVlc3QudXJsKCksICJSZWRpcmVjdGlvbiB0byBVUkwgd2l0aCBhIHNjaGVt
ZSB0aGF0IGlzIG5vdCBIVFRQKFMpIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250
cm9sIH0pOworICAgICAgICAgICAgdGhpcy0+ZGlkRmluaXNoKFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgeyBTdHJpbmcgeyB9LCAwLCByZXF1ZXN0LnVybCgpLCAiUmVkaXJlY3Rpb24gdG8gVVJMIHdp
dGggYSBzY2hlbWUgdGhhdCBpcyBub3QgSFRUUChTKSJfcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0xMTEsMzMgKzEwOSwzMyBAQCB2b2lkIFBpbmdMb2FkOjp3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvCiAgICAgfSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVu
Z2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlQ2hhbGxlbmdlIik7CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpDYW5jZWwsIHsgfSk7CiAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgcmV0
dXJuOwotICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJlbnRV
UkwoKSwgIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9uIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpBY2Nlc3NDb250cm9sIH0pOworICAgIGRpZEZpbmlzaChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IHsgU3RyaW5nKCksIDAsIGN1cnJlbnRVUkwoKSwgIkZhaWxlZCBIVFRQIGF1dGhlbnRpY2F0aW9u
Il9zLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogfQog
Ci12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNz
aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uIC0gaHR0cFN0YXR1c0NvZGU6
ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25v
cmUpOwogICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgIHJldHVybjsKICAgICBkaWRGaW5pc2go
eyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUGluZ0xv
YWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKQordm9pZCBQaW5nTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRDb21wbGV0ZSIpOwpAQCAtMTU0LDI0ICsxNTIsMjYg
QEAgdm9pZCBQaW5nTG9hZDo6ZGlkU2VuZERhdGEodWludDY0X3QgdG90YQogdm9pZCBQaW5nTG9h
ZDo6d2FzQmxvY2tlZCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2FzQmxvY2tl
ZCIpOwotICAgIGRpZEZpbmlzaChibG9ja2VkRXJyb3IoUmVzb3VyY2VSZXF1ZXN0IHsgY3VycmVu
dFVSTCgpIH0pKTsKKyAgICBkaWRGaW5pc2goYmxvY2tlZEVycm9yKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCB7IGN1cnJlbnRVUkwoKSB9KSk7CiB9CiAKIHZvaWQgUGluZ0xvYWQ6OmNhbm5vdFNo
b3dVUkwoKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhbm5vdFNob3dVUkwiKTsK
LSAgICBkaWRGaW5pc2goY2Fubm90U2hvd1VSTEVycm9yKFJlc291cmNlUmVxdWVzdCB7IGN1cnJl
bnRVUkwoKSB9KSk7CisgICAgZGlkRmluaXNoKGNhbm5vdFNob3dVUkxFcnJvcihXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgeyBjdXJyZW50VVJMKCkgfSkpOwogfQogCiB2b2lkIFBpbmdMb2FkOjp0
aW1lb3V0VGltZXJGaXJlZCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidGltZW91
dFRpbWVyRmlyZWQiKTsKLSAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAw
LCBjdXJyZW50VVJMKCksICJMb2FkIHRpbWVkIG91dCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
VGltZW91dCB9KTsKKyAgICBkaWRGaW5pc2goV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFN0cmlu
ZygpLCAwLCBjdXJyZW50VVJMKCksICJMb2FkIHRpbWVkIG91dCJfcywgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6VGltZW91dCB9KTsKIH0KIAotY29uc3QgVVJMJiBQaW5nTG9hZDo6Y3Vy
cmVudFVSTCgpIGNvbnN0Citjb25zdCBXZWJDb3JlOjpVUkwmIFBpbmdMb2FkOjpjdXJyZW50VVJM
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9uZXR3b3JrTG9hZENoZWNrZXItPnVybCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDkgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1QcmVjb25uZWN0
VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK1ByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDog
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAsIG1f
dGltZW91dFRpbWVyKFt0aGlzXSB7IGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCks
IDAsIG1fbmV0d29ya0xvYWQtPnBhcmFtZXRlcnMoKS5yZXF1ZXN0LnVybCgpLCAiUHJlY29ubmVj
dGlvbiB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQgfSk7IH0pCisg
ICAgLCBtX3RpbWVvdXRUaW1lcihbdGhpc10geyBkaWRGaW5pc2goV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciB7IFN0cmluZygpLCAwLCBtX25ldHdvcmtMb2FkLT5wYXJhbWV0ZXJzKCkucmVxdWVzdC51
cmwoKSwgIlByZWNvbm5lY3Rpb24gdGltZWQgb3V0Il9zLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
OjpUeXBlOjpUaW1lb3V0IH0pOyB9KQogewogICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAt
IFByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzaygpIiwgdGhpcyk7CiAKQEAgLTYzLDI5ICs2
MSwyOSBAQCBQcmVjb25uZWN0VGFzazo6flByZWNvbm5lY3RUYXNrKCkKIHsKIH0KIAotdm9pZCBQ
cmVjb25uZWN0VGFzazo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OndpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWF1dG8gUHJl
Y29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYpIC0+IFNo
b3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlCithdXRvIFByZWNvbm5lY3RUYXNrOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSAtPiBTaG91bGRDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZTo6Tm87CiB9CiAKLXZvaWQg
UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFBy
ZWNvbm5lY3RUYXNrOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
Cit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gUHJl
Y29ubmVjdFRhc2s6OmRpZEZpbmlzaExvYWRpbmciLCB0aGlzKTsKICAgICBkaWRGaW5pc2goeyB9
KTsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRGYWlsTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBSRUxFQVNFX0xPRyhOZXR3
b3JrLCAiJXAgLSBQcmVjb25uZWN0VGFzazo6ZGlkRmFpbExvYWRpbmcsIGVycm9yX2NvZGU6ICVk
IiwgdGhpcywgZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgIGRpZEZpbmlzaChlcnJvcik7CkBAIC05
Niw3ICs5NCw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFNlbmREYXRhKHVuc2lnbmUKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkRmlu
aXNoKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlk
RmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIGlmICht
X2NvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsOCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjb25zdCBjaGFyKiBXZWJDb29raWVNYW5hZ2Vy
OjpzdXBwbGVtZW50TmFtZSgpCkBAIC01OCw3ICs1Niw3IEBAIFdlYkNvb2tpZU1hbmFnZXI6On5X
ZWJDb29raWVNYW5hZ2VyKCkgPSAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RuYW1lczsKLSAgICBpZiAoYXV0byogc3Rv
cmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKIAogICAgIG1fcHJv
Y2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1l
c1dpdGhDb29raWVzKGNvcHlUb1ZlY3Rvcihob3N0bmFtZXMpLCBjYWxsYmFja0lEKSwgMCk7CkBA
IC02NiwyMCArNjQsMjAgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRo
QwogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgaWYg
KGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgc3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoeyBob3N0bmFtZSB9
KTsKIH0KIAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAo
YXV0byogc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVB
bGxDb29raWVzKCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiBjb29raWUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKLSAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2ll
KGNvb2tpZSk7CiAKICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKQEAgLTg3LDcgKzg1LDcg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoUEFMOgogCiB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSh0aW1l
KTsKIAogICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwpAQCAtOTUsMzMgKzkzLDMzIEBAIHZv
aWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc00KIAogdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewotICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7Ci0gICAgaWYgKGF1
dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpKQorICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXM7CisgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBjb29raWVzID0gc3RvcmFnZVNl
c3Npb24tPmdldEFsbENvb2tpZXMoKTsKIAogICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCks
IDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBW
ZWN0b3I8Q29va2llPiBjb29raWVzOwotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzOworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgY29va2llcyA9IHN0b3JhZ2VTZXNzaW9uLT5nZXRDb29raWVzKHVybCk7
CiAKICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpE
aWRHZXRDb29raWVzKGNvb2tpZXMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpzZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29r
aWUmIGNvb2tpZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpzZXRDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29r
aWUmIGNvb2tpZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIGlmIChhdXRvKiBzdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VT
ZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsKIAogICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwog
fQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcywgY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7Ci0gICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgIGlmIChhdXRvKiBzdG9yYWdl
U2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZXMoY29va2llcywg
dXJsLCBtYWluRG9jdW1lbnRVUkwpOwogCiAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CkBAIC0x
MzUsNyArMTMzLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlDb29raWVzRGlkQwog
CiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIFdlYkNvcmU6OnN0YXJ0T2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Npb24sIFt0aGlzLCBzZXNzaW9uSURdIHsK
ICAgICAgICAgICAgIG5vdGlmeUNvb2tpZXNEaWRDaGFuZ2Uoc2Vzc2lvbklEKTsKICAgICAgICAg
fSk7CkBAIC0xNDQsNyArMTQyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2Vy
dmluZ0NvbwogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBpZiAoYXV0byogc3RvcmFnZVNl
c3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBXZWJDb3JlOjpzdG9w
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Npb24pOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL21h
Yy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViQ29va2llTWFu
YWdlcjo6cGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgcG9saWN5KQpAQCAtNDEsNyArMzksNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnBs
YXRmb3JtU2V0SFRUUENvCiAKICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENv
b2tpZVN0b3JhZ2VdIHNldENvb2tpZUFjY2VwdFBvbGljeTpzdGF0aWNfY2FzdDxOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3k+KHBvbGljeSldOwogCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpm
b3JFYWNoKFsmXSAoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24pIHsKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZvckVhY2goWyZd
IChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbikgewogICAgICAgICBpZiAoYXV0byBjb29raWVTdG9yYWdlID0gbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKSkKICAgICAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VT
ZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKICAgICB9
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHAJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCAr
NDMsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCiAjZW5kaWYKIAotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtIERvd25sb2FkOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xMjksNyArMTI3LDcgQEAgdm9pZCBEb3dubG9hZDo6ZGlkRmluaXNo
KCkKICAgICBtX2Rvd25sb2FkTWFuYWdlci5kb3dubG9hZEZpbmlzaGVkKHRoaXMpOwogfQogCi12
b2lkIERvd25sb2FkOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpCit2b2lkIERvd25sb2FkOjpkaWRGYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbDog
KGlkID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBl
cnJDb2RlID0gJWQpIiwKICAgICAgICAgZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSwgZXJyb3Iu
aXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmVycm9yQ29kZSgpKTsK
QEAgLTE4MiwzICsxODAsNSBAQCB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtM
b2FkCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyN1bmRlZiBSRUxFQVNFX0xP
R19JRl9BTExPV0VECkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNTAxNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDYgQEAKICNpbmNsdWRlIDxwYWwvU2Vz
c2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIERvd25sb2FkTWFuYWdlcjo6RG93
bmxvYWRNYW5hZ2VyKENsaWVudCYgY2xpZW50KQpAQCAtNDUsNyArNDMsNyBAQCBEb3dubG9hZE1h
bmFnZXI6OkRvd25sb2FkTWFuYWdlcihDbGllbnQmCiB7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpzdGFydERvd25sb2FkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0
aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUp
Cit2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZChOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyogY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewogICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKCFu
ZXR3b3JrU2Vzc2lvbikKQEAgLTU0LDEwICs1MiwxMCBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6
c3RhcnREb3dubG9hZChOZXR3CiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7
CiAgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kg
PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKKyAg
ICBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSBXZWJDb3JlOjpDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKICAgICBpZiAocmVxdWVz
dC51cmwoKS5wcm90b2NvbElzQmxvYigpICYmIGNvbm5lY3Rpb24pCiAgICAgICAgIHBhcmFtZXRl
cnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCku
ZmlsZXNJbkJsb2IoKmNvbm5lY3Rpb24sIHJlcXVlc3QudXJsKCkpOwotICAgIHBhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpV
c2U7CisgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpID8gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNl
IDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKIAogICAgIG1fcGVuZGlu
Z0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxv
YWQ+KFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgc3Vn
Z2VzdGVkTmFtZSkpOwogfQpAQCAtODYsNyArODQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6
d2lsbERlY2lkZVBlbmRpbmdECiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3Jr
TG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0xvYWQ+JiYgbmV0d29ya0xvYWQsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4mJiBibG9iRmlsZVJlZmVyZW5jZXMsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIERvd25s
b2FkTWFuYWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25s
b2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYmIGJsb2JGaWxlUmVmZXJl
bmNlcywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQoIW1fcGVuZGlu
Z0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9wZW5kaW5nRG93bmxvYWRz
LmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4oV1RGTW92
ZShuZXR3b3JrTG9hZCksIGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CkBAIC0xMDMs
NyArMTAxLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZAogICAg
ICAgICBBU1NFUlQobV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKIAog
ICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGRlc3Rp
bmF0aW9uLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6RG93bmxvYWQpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpQb2xpY3lBY3Rpb246OkRvd25sb2FkKTsK
ICAgICAgICAgaWYgKG5ldHdvcmtEYXRhVGFzay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0YVRhc2s6
OlN0YXRlOjpDYW5jZWxpbmcgfHwgbmV0d29ya0RhdGFUYXNrLT5zdGF0ZSgpID09IE5ldHdvcmtE
YXRhVGFzazo6U3RhdGU6OkNvbXBsZXRlZCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQ3
LDcgKzE0NSw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZChEb3cKICAg
ICAgICAgQVNTRVJUKGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPmNhbmNlbCgpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6
SWdub3JlKTsKICAgICAgICAgbV9jbGllbnQucGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQoZG93bmxv
YWRJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJ
KHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxMiBA
QAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogUGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoTmV0d29ya0xvYWRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgRG93bmxvYWRJRCBkb3dubG9hZElELCBOZXR3b3JrU2Vzc2lvbiYg
bmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKICAgICA6IG1fbmV0
d29ya0xvYWQoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIFdURk1vdmUocGFy
YW1ldGVycyksIG5ldHdvcmtTZXNzaW9uKSkKIHsKLSAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZv
ckNyZWRlbnRpYWxzID0gcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVu
dENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOworICAgIG1faXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgPSBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRp
YWxQb2xpY3kgPT0gV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHM7CiAKICAgICBtX25ldHdvcmtMb2FkLT5zZXRQZW5kaW5nRG93bmxvYWRJ
RChkb3dubG9hZElEKTsKICAgICBtX25ldHdvcmtMb2FkLT5zZXRQZW5kaW5nRG93bmxvYWQoKnRo
aXMpOwpAQCAtNDgsNyArNDYsNyBAQCBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChO
ZXR3b3JrCiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkU3RhcnQobV9uZXR3
b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCi1QZW5kaW5n
RG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+JiYg
bmV0d29ya0xvYWQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1BlbmRpbmdEb3du
bG9hZDo6UGVuZGluZ0Rvd25sb2FkKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3
b3JrTG9hZCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogICAgIDogbV9uZXR3b3JrTG9hZChXVEZNb3ZlKG5ldHdvcmtMb2FkKSkKIHsKICAgICBtX2lz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gbV9uZXR3b3JrTG9hZC0+aXNBbGxvd2Vk
VG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAJ
KHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQ
SS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBA
QAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
TmV0d29ya0Jsb2JSZWdpc3RyeSYgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkKQEAg
LTQ5LDI1ICs0NywyNSBAQCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5
CiB7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4
dGVuc2lvbiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
Y29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwg
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKLSAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJM
KHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShw
YXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKSwgY29udGVudFR5cGUpOworICAgIFdlYkNv
cmU6OmJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhdGgsIFdURk1vdmUoc2FuZGJv
eEV4dGVuc2lvbikpLCBjb250ZW50VHlwZSk7CiAKICAgICBBU1NFUlQoIW1fYmxvYnNGb3JDb25u
ZWN0aW9uLmdldChjb25uZWN0aW9uKS5jb250YWlucyh1cmwpKTsKICAgICBCbG9iRm9yQ29ubmVj
dGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5k
KGNvbm5lY3Rpb24pOwogICAgIGlmIChtYXBJdGVyYXRvciA9PSBtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5lbmQoKSkKLSAgICAgICAgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5hZGQo
Y29ubmVjdGlvbiwgSGFzaFNldDxVUkw+KCkpLml0ZXJhdG9yOworICAgICAgICBtYXBJdGVyYXRv
ciA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmFkZChjb25uZWN0aW9uLCBIYXNoU2V0PFdlYkNvcmU6
OlVSTD4oKSkuaXRlcmF0b3I7CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQog
Ci12b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxXZWJD
b3JlOjpCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2
b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiB7Ci0gICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShi
bG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgV2ViQ29yZTo6YmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiAKICAg
ICBBU1NFUlQoIW1fYmxvYnNGb3JDb25uZWN0aW9uLmdldChjb25uZWN0aW9uKS5jb250YWlucyh1
cmwpKTsKICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBt
X2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pOwogICAgIGlmIChtYXBJdGVyYXRv
ciA9PSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5lbmQoKSkKLSAgICAgICAgbWFwSXRlcmF0b3IgPSBt
X2Jsb2JzRm9yQ29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbiwgSGFzaFNldDxVUkw+KCkpLml0ZXJh
dG9yOworICAgICAgICBtYXBJdGVyYXRvciA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmFkZChjb25u
ZWN0aW9uLCBIYXNoU2V0PFdlYkNvcmU6OlVSTD4oKSkuaXRlcmF0b3I7CiAgICAgbWFwSXRlcmF0
b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCkBAIC03OCwyNiArNzYsMjYgQEAgdm9pZCBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUgogICAgIGlmIChtYXBJdGVyYXRvciA9PSBtX2Js
b2JzRm9yQ29ubmVjdGlvbi5lbmQoKSkgewogICAgICAgICBpZiAoIXNob3VsZEJ5cGFzc0Nvbm5l
Y3Rpb25DaGVjaykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbWFwSXRlcmF0b3IgPSBt
X2Jsb2JzRm9yQ29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbiwgSGFzaFNldDxVUkw+KCkpLml0ZXJh
dG9yOworICAgICAgICBtYXBJdGVyYXRvciA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmFkZChjb25u
ZWN0aW9uLCBIYXNoU2V0PFdlYkNvcmU6OlVSTD4oKSkuaXRlcmF0b3I7CiAgICAgfQogCi0gICAg
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKKyAgICBXZWJDb3Jl
OjpibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwogCiAgICAgQVNT
RVJUKHNob3VsZEJ5cGFzc0Nvbm5lY3Rpb25DaGVjayB8fCBtYXBJdGVyYXRvci0+dmFsdWUuY29u
dGFpbnMoc3JjVVJMKSk7CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQogCi12
b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6
VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7CiAgICAgYXV0byBmaWxlUmVmZXJlbmNlID0gY29ubmVjdGlvbi0+Z2V0
QmxvYkRhdGFGaWxlUmVmZXJlbmNlRm9yUGF0aChmaWxlQmFja2VkUGF0aCk7CiAgICAgQVNTRVJU
KGZpbGVSZWZlcmVuY2UpOwogCi0gICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIFdURk1vdmUoZmlsZVJlZmVyZW5jZSksIGNv
bnRlbnRUeXBlKTsKKyAgICBXZWJDb3JlOjpibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShmaWxlUmVmZXJlbmNlKSwg
Y29udGVudFR5cGUpOwogCiAgICAgQVNTRVJUKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5nZXQoY29u
bmVjdGlvbikuY29udGFpbnModXJsKSk7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJh
dG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsK
ICAgICBpZiAobWFwSXRlcmF0b3IgPT0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZW5kKCkpCi0gICAg
ICAgIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb24sIEhh
c2hTZXQ8VVJMPigpKS5pdGVyYXRvcjsKKyAgICAgICAgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9y
Q29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+KCkpLml0ZXJh
dG9yOwogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIApAQCAtMTA4LDcgKzEw
Niw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVIKICAgICBpZiAo
bWFwSXRlcmF0b3IgPT0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZW5kKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3Jj
VVJMLCBzdGFydCwgZW5kKTsKKyAgICBXZWJDb3JlOjpibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiAKICAgICBBU1NFUlQobWFw
SXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKHNyY1VSTCkpOwogICAgIG1hcEl0ZXJhdG9yLT52YWx1
ZS5hZGQodXJsKTsKQEAgLTEyMSw3ICsxMTksNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6
OnVucmVnaXN0ZXJCbG9iCiAgICAgaWYgKG1hcEl0ZXJhdG9yID09IG1fYmxvYnNGb3JDb25uZWN0
aW9uLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lz
dGVyQmxvYlVSTCh1cmwpOworICAgIFdlYkNvcmU6OmJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJC
bG9iVVJMKHVybCk7CiAKICAgICBBU1NFUlQobWFwSXRlcmF0b3ItPnZhbHVlLmNvbnRhaW5zKHVy
bCkpOwogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUodXJsKTsKQEAgLTEzMiwyNyArMTMw
LDI3IEBAIHVpbnQ2NF90IE5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKE4KICAgICBpZiAo
IW1fYmxvYnNGb3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9y
Q29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pLT52YWx1ZS5jb250YWlucyh1cmwpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHJldHVybiBibG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSh1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpibG9iUmVnaXN0cnkoKS5ibG9iU2l6ZSh1cmwpOwogfQogCiB2
b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgRnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGJsb2JSZWdpc3RyeSgpLndyaXRl
QmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgV2ViQ29yZTo6YmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3
b3JrQmxvYlJlZ2lzdHJ5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYgYmxvYlVSTCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OndyaXRlQmxvYlRvRmlsZVBh
dGgoY29uc3QgV2ViQ29yZTo6VVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdGgsIEZ1bmN0
aW9uPHZvaWQoYm9vbCBzdWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAo
IWJsb2JSZWdpc3RyeSgpLmlzQmxvYlJlZ2lzdHJ5SW1wbCgpKSB7CisgICAgaWYgKCFXZWJDb3Jl
OjpibG9iUmVnaXN0cnkoKS5pc0Jsb2JSZWdpc3RyeUltcGwoKSkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBibG9iRmlsZXMgPSBmaWxlc0luQmxvYih7IFBh
cnNlZFVSTFN0cmluZywgYmxvYlVSTCB9KTsKKyAgICBhdXRvIGJsb2JGaWxlcyA9IGZpbGVzSW5C
bG9iKHsgV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBibG9iVVJMIH0pOwogICAgIGZvciAoYXV0
byYgZmlsZSA6IGJsb2JGaWxlcykKICAgICAgICAgZmlsZS0+cHJlcGFyZUZvckZpbGVBY2Nlc3Mo
KTsKIAotICAgIHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSku
d3JpdGVCbG9iVG9GaWxlUGF0aChibG9iVVJMLCBwYXRoLCBbYmxvYkZpbGVzID0gV1RGTW92ZShi
bG9iRmlsZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoYm9vbCBzdWNjZXNzKSB7CisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmxvYlJlZ2lzdHJ5
SW1wbCY+KFdlYkNvcmU6OmJsb2JSZWdpc3RyeSgpKS53cml0ZUJsb2JUb0ZpbGVQYXRoKGJsb2JV
UkwsIHBhdGgsIFtibG9iRmlsZXMgPSBXVEZNb3ZlKGJsb2JGaWxlcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3MpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBmaWxlIDogYmxvYkZpbGVzKQogICAgICAgICAgICAgZmlsZS0+cmV2b2tl
RmlsZUFjY2VzcygpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKQEAgLTE2
NCwxNCArMTYyLDE0IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2UK
ICAgICBpZiAoIW1fYmxvYnNGb3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBIYXNoU2V0PFVSTD4mIGJsb2JzRm9yQ29ubmVjdGlvbiA9IG1f
YmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlOwotICAgIGZvciAoSGFz
aFNldDxVUkw+OjppdGVyYXRvciBpdGVyID0gYmxvYnNGb3JDb25uZWN0aW9uLmJlZ2luKCksIGVu
ZCA9IGJsb2JzRm9yQ29ubmVjdGlvbi5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoKml0ZXIpOworICAgIEhhc2hTZXQ8
V2ViQ29yZTo6VVJMPiYgYmxvYnNGb3JDb25uZWN0aW9uID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24u
ZmluZChjb25uZWN0aW9uKS0+dmFsdWU7CisgICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OlVSTD46
Oml0ZXJhdG9yIGl0ZXIgPSBibG9ic0ZvckNvbm5lY3Rpb24uYmVnaW4oKSwgZW5kID0gYmxvYnNG
b3JDb25uZWN0aW9uLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBXZWJDb3Jl
OjpibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCgqaXRlcik7CiAKICAgICBtX2Jsb2Jz
Rm9yQ29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbik7CiB9CiAKLVZlY3RvcjxSZWZQdHI8Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsKQorVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgaWYgKCFt
X2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlucygmY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JD
b25uZWN0aW9uLmZpbmQoJmNvbm5lY3Rpb24pLT52YWx1ZS5jb250YWlucyh1cmwpKQogICAgICAg
ICByZXR1cm4geyB9OwpAQCAtMTc5LDE2ICsxNzcsMTYgQEAgVmVjdG9yPFJlZlB0cjxCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+PiBOZQogICAgIHJldHVybiBmaWxlc0luQmxvYih1cmwpOwogfQogCi1W
ZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6
OmZpbGVzSW5CbG9iKGNvbnN0IFVSTCYgdXJsKQorVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKLSAgICBBU1NFUlQoYmxvYlJlZ2lzdHJ5KCkuaXNCbG9i
UmVnaXN0cnlJbXBsKCkpOwotICAgIEJsb2JEYXRhKiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJs
b2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKHVybCk7
CisgICAgQVNTRVJUKFdlYkNvcmU6OmJsb2JSZWdpc3RyeSgpLmlzQmxvYlJlZ2lzdHJ5SW1wbCgp
KTsKKyAgICBXZWJDb3JlOjpCbG9iRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpCbG9iUmVnaXN0cnlJbXBsJj4oV2ViQ29yZTo6YmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRh
RnJvbVVSTCh1cmwpOwogICAgIGlmICghYmxvYkRhdGEpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc3VsdDsKLSAgICBm
b3IgKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSA6IGJsb2JEYXRhLT5pdGVtcygpKSB7Ci0gICAg
ICAgIGlmIChpdGVtLnR5cGUoKSA9PSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZpbGUpCisgICAgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiByZXN1bHQ7CisgICAg
Zm9yIChjb25zdCBXZWJDb3JlOjpCbG9iRGF0YUl0ZW0mIGl0ZW0gOiBibG9iRGF0YS0+aXRlbXMo
KSkgeworICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6QmxvYkRhdGFJdGVtOjpU
eXBlOjpGaWxlKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtLmZpbGUoKSk7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAkocmV2aXNpb24gMjM1MDE1KQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6TmV0d29ya0NhY2hlOwogCkBA
IC01MywxNCArNTEsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBDYWNoZVN0
b3JhZ2UgewogCi1zdGF0aWMgaW5saW5lIFN0cmluZyBjb21wdXRlS2V5VVJMKGNvbnN0IFVSTCYg
dXJsKQorc3RhdGljIGlubGluZSBTdHJpbmcgY29tcHV0ZUtleVVSTChjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCkKIHsKLSAgICBVUkwga2V5VVJMIHsgdXJsIH07CisgICAgV2ViQ29yZTo6VVJMIGtl
eVVSTCB7IHVybCB9OwogICAgIGtleVVSTC5yZW1vdmVRdWVyeUFuZEZyYWdtZW50SWRlbnRpZmll
cigpOwogICAgIHJldHVybiBrZXlVUkwuc3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgVmVj
dG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4q
IHJlY29yZHMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ2FjaGVRdWVy
eU9wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50NjRfdD4gcXVlcnlD
YWNoZShjb25zdCBWZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+KiByZWNvcmRzLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OkNhY2hlUXVlcnlP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghcmVjb3JkcykKICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTc2LDcgKzc0LDcgQEAgc3RhdGljIGlubGluZSBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5
Q2FjaAogICAgIHJldHVybiByZXN1bHRzOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRl
VmFyeUluZm9ybWF0aW9uKFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVWYXJ5SW5mb3JtYXRpb24oUmVjb3JkSW5m
b3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewogICAgIGF1dG8gdmFyeVZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKFdlYkNvcmU6
OkhUVFBIZWFkZXJOYW1lOjpWYXJ5KTsKICAgICBpZiAodmFyeVZhbHVlLmlzTnVsbCgpKSB7CkBA
IC04Niw3ICs4NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVWYXJ5SW5mb3JtYXRpb24K
ICAgICB9CiAKICAgICB2YXJ5VmFsdWUuc3BsaXQoJywnLCBbJl0oU3RyaW5nVmlldyB2aWV3KSB7
Ci0gICAgICAgIGlmICghcmVjb3JkSW5mb3JtYXRpb24uaGFzVmFyeVN0YXIgJiYgc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKHZpZXcpID09ICIqIikKKyAgICAgICAgaWYgKCFyZWNv
cmRJbmZvcm1hdGlvbi5oYXNWYXJ5U3RhciAmJiBXZWJDb3JlOjpzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUVFBTcGFjZXModmlldykgPT0gIioiKQogICAgICAgICAgICAgcmVjb3JkSW5mb3JtYXRp
b24uaGFzVmFyeVN0YXIgPSB0cnVlOwogICAgICAgICBTdHJpbmcgaGVhZGVyTmFtZSA9IHZpZXcu
dG9TdHJpbmcoKTsKICAgICAgICAgcmVjb3JkSW5mb3JtYXRpb24udmFyeUhlYWRlcnMuYWRkKGhl
YWRlck5hbWUsIHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkKGhlYWRlck5hbWUpKTsKQEAgLTI4Miw3
ICsyODAsNyBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZVJlY29yZChjb25zdCBSZWNvcmRJCiAgICAg
fSk7CiB9CiAKLXZvaWQgQ2FjaGU6OnJldHJpZXZlUmVjb3Jkcyhjb25zdCBVUkwmIHVybCwgUmVj
b3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENhY2hlOjpyZXRyaWV2ZVJlY29yZHMoY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpPcGVuKTsKIApAQCAtMzIwLDcgKzMxOCw3IEBAIFJl
Y29yZEluZm9ybWF0aW9uJiBDYWNoZTo6YWRkUmVjb3JkKFZlY3QKICAgICByZXR1cm4gcmVjb3Jk
cy0+bGFzdCgpOwogfQogCi1WZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+KiBDYWNoZTo6cmVjb3Jk
c0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpCitWZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+KiBDYWNo
ZTo6cmVjb3Jkc0Zyb21VUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgYXV0byBp
dGVyYXRvciA9IG1fcmVjb3Jkcy5maW5kKGNvbXB1dGVLZXlVUkwodXJsKSk7CiAgICAgaWYgKGl0
ZXJhdG9yID09IG1fcmVjb3Jkcy5lbmQoKSkKQEAgLTMyOCw3ICszMjYsNyBAQCBWZWN0b3I8UmVj
b3JkSW5mb3JtYXRpb24+KiBDYWNoZTo6cmVjb3JkCiAgICAgcmV0dXJuICZpdGVyYXRvci0+dmFs
dWU7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4qIENhY2hlOjpyZWNvcmRz
RnJvbVVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWNvcmRJbmZvcm1h
dGlvbj4qIENhY2hlOjpyZWNvcmRzRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29u
c3QKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZWNvcmRzLmZpbmQoY29tcHV0ZUtleVVSTCh1
cmwpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZWNvcmRzLmVuZCgpKQpAQCAtNDI0LDcgKzQy
Miw3IEBAIHZvaWQgQ2FjaGU6OnB1dChWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fY2FjaGVzLnJlcXVlc3RTcGFjZShzcGFjZVJlcXVpcmVk
LCBbY2FjaGVzID0gbWFrZVJlZihtX2NhY2hlcyksIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIs
IHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7
CisgICAgbV9jYWNoZXMucmVxdWVzdFNwYWNlKHNwYWNlUmVxdWlyZWQsIFtjYWNoZXMgPSBtYWtl
UmVmKG1fY2FjaGVzKSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwgcmVjb3JkcyA9IFdURk1v
dmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJv
ci52YWx1ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01NzYsNyArNTc0LDcgQEAgc3Rk
OjpvcHRpb25hbDxDYWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaAogICAgIGlmICghcmVjb3JkLnJl
cXVlc3QuZGVjb2RlV2l0aG91dFBsYXRmb3JtRGF0YShkZWNvZGVyKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICghRmV0Y2hPcHRpb25zOjpkZWNvZGVQZXJzaXN0ZW50
KGRlY29kZXIsIHJlY29yZC5vcHRpb25zKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZldGNoT3B0aW9u
czo6ZGVjb2RlUGVyc2lzdGVudChkZWNvZGVyLCByZWNvcmQub3B0aW9ucykpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlY29yZC5yZWZl
cnJlcikpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAJKHJldmlz
aW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NiwzICsxNjYs
NSBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmVuZ2luCiB9CiAKIH0KKwor
I3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksMjMgKzM5LDIxIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBO
ZXR3b3JrQ2FjaGUgewogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotU3BlY3VsYXRpdmVM
b2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBm
cmFtZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OkVudHJ5PiBjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbiwgUmV2YWxpZGF0aW9u
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK1NwZWN1bGF0aXZlTG9hZDo6
U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gY2FjaGVFbnRyeUZvclZhbGlkYXRpb24sIFJldmFsaWRh
dGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NhY2hl
KGNhY2hlKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3Qo
cmVxdWVzdCkKLSAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSkKKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSkKICAgICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKSkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBtX2NhY2hlRW50cnktPm5l
ZWRzVmFsaWRhdGlvbigpKTsKIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwogICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKTsKLSAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKLSAgICBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1Bv
bGljeSA9IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7Ci0gICAgcGFy
YW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1Nu
aWZmaW5nUG9saWN5OjpTbmlmZjsKKyAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5ID0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKKyAgICBwYXJhbWV0
ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGlj
eTo6RG9Ob3RTbmlmZkNvbnRlbnQ7CisgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlm
ZmluZ1BvbGljeSA9IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlm
ZjsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKICAgICBtX25l
dHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIFdURk1vdmUo
cGFyYW1ldGVycyksICpTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQpAQCAtNjUsNyArNjMsNyBAQCBTcGVjdWxhdGl2
ZUxvYWQ6On5TcGVjdWxhdGl2ZUxvYWQoKQogICAgIEFTU0VSVCghbV9uZXR3b3JrTG9hZCk7CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIFNwZWN1bGF0aXZlTG9h
ZDo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICJTcGVjdWxhdGl2ZSByZWRpcmVjdCAlcyAt
PiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVkaXJlY3RSZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC03OCw3ICs3Niw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVMb2FkOjp3aWxsU2VuZFJlZGlyZWN0ZWQKICAgICBkaWRDb21wbGV0ZSgp
OwogfQogCi1hdXRvIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlKSAtPiBTaG91bGRDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZQorYXV0byBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSkgLT4gU2hvdWxkQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UKIHsKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsK
IApAQCAtOTQsNyArOTIsNyBAQCBhdXRvIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlCiAgICAgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpZZXM7CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1f
Y2FjaGVFbnRyeSk7CiAKQEAgLTExNSwxNCArMTEzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRGaW5pc2hMb2FkaW5nKGMKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKSB7CiAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1f
b3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlS
ZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3lu
dGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgotICAgICAgICBpZiAoIW1fY2Fj
aGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpKSkKKyAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgV2ViQ29yZTo6aXNT
dGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkp
CiAgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5h
bFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOwog
ICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpk
aWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJikKK3ZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikKIHsKICAgICBp
ZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMzUwMTUpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci0KIHN0YXRpYyBjb25zdCBTZWNvbmRzIHByZWxvYWRlZEVudHJ5TGlmZXRpbWUg
eyAxMF9zIH07CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC04NSw5ICs4Myw5IEBAIHN0YXRpYyBp
bmxpbmUgS2V5IG1ha2VTdWJyZXNvdXJjZXNLZXkoY28KICAgICByZXR1cm4gS2V5KHJlc291cmNl
S2V5LnBhcnRpdGlvbigpLCBzdWJyZXNvdXJjZXNUeXBlKCksIHJlc291cmNlS2V5LnJhbmdlKCks
IHJlc291cmNlS2V5LmlkZW50aWZpZXIoKSwgc2FsdCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVz
b3VyY2VSZXF1ZXN0IGNvbnN0cnVjdFJldmFsaWRhdGlvblJlcXVlc3QoY29uc3QgS2V5JiBrZXks
IGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3ViUmVzb3VyY2VJbmZvLCBjb25zdCBFbnRyeSogZW50
cnkpCitzdGF0aWMgaW5saW5lIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdHJ1Y3RSZXZh
bGlkYXRpb25SZXF1ZXN0KGNvbnN0IEtleSYga2V5LCBjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1
YlJlc291cmNlSW5mbywgY29uc3QgRW50cnkqIGVudHJ5KQogewotICAgIFJlc291cmNlUmVxdWVz
dCByZXZhbGlkYXRpb25SZXF1ZXN0KGtleS5pZGVudGlmaWVyKCkpOworICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0KGtleS5pZGVudGlmaWVyKCkpOwogICAg
IHJldmFsaWRhdGlvblJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkcyhzdWJSZXNvdXJjZUluZm8u
cmVxdWVzdEhlYWRlcnMoKSk7CiAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRGaXJzdFBhcnR5
Rm9yQ29va2llcyhzdWJSZXNvdXJjZUluZm8uZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAg
cmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJc1NhbWVTaXRlKHN1YlJlc291cmNlSW5mby5pc1NhbWVT
aXRlKCkpOwpAQCAtOTgsMTMgKzk2LDEzIEBAIHN0YXRpYyBpbmxpbmUgUmVzb3VyY2VSZXF1ZXN0
IGNvbnN0cnVjdFIKICAgICAKICAgICByZXZhbGlkYXRpb25SZXF1ZXN0Lm1ha2VVbmNvbmRpdGlv
bmFsKCk7CiAgICAgaWYgKGVudHJ5KSB7Ci0gICAgICAgIFN0cmluZyBlVGFnID0gZW50cnktPnJl
c3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpFVGFnKTsKKyAgICAgICAg
U3RyaW5nIGVUYWcgPSBlbnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6
SFRUUEhlYWRlck5hbWU6OkVUYWcpOwogICAgICAgICBpZiAoIWVUYWcuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OklmTm9uZU1hdGNoLCBlVGFnKTsKKyAgICAgICAgICAgIHJldmFsaWRhdGlvblJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpJZk5vbmVNYXRj
aCwgZVRhZyk7CiAKLSAgICAgICAgU3RyaW5nIGxhc3RNb2RpZmllZCA9IGVudHJ5LT5yZXNwb25z
ZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6TGFzdE1vZGlmaWVkKTsKKyAgICAg
ICAgU3RyaW5nIGxhc3RNb2RpZmllZCA9IGVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVs
ZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6TGFzdE1vZGlmaWVkKTsKICAgICAgICAgaWYgKCFs
YXN0TW9kaWZpZWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5z
ZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OklmTW9kaWZpZWRTaW5jZSwgbGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpJZk1vZGlmaWVkU2luY2UsIGxhc3RNb2RpZmll
ZCk7CiAgICAgfQogICAgIAogICAgIHJldmFsaWRhdGlvblJlcXVlc3Quc2V0UHJpb3JpdHkoc3Vi
UmVzb3VyY2VJbmZvLnByaW9yaXR5KCkpOwpAQCAtMTEyLDcgKzExMCw3IEBAIHN0YXRpYyBpbmxp
bmUgUmVzb3VyY2VSZXF1ZXN0IGNvbnN0cnVjdFIKICAgICByZXR1cm4gcmV2YWxpZGF0aW9uUmVx
dWVzdDsKIH0KIAotc3RhdGljIGJvb2wgcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgV2FsbFRpbWUgdGltZXN0YW1wKQorc3RhdGljIGJv
b2wgcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgV2FsbFRpbWUgdGltZXN0YW1wKQogewogICAgIGlmIChyZXNwb25zZS5j
YWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MzIsMTMgKzEzMCwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFRpbWVyIG1f
bGlmZXRpbWVUaW1lcjsKKyAgICBXZWJDb3JlOjpUaW1lciBtX2xpZmV0aW1lVGltZXI7CiB9Owog
CiBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQcmVsb2FkZWRFbnRyeSA6IHByaXZhdGUg
RXhwaXJpbmdFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgc3RkOjpvcHRp
b25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdCwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgbGlmZXRpbWVSZWFjaGVkSGFuZGxlcikKKyAgICBQcmVsb2Fk
ZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdD4mJiBzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiBsaWZldGltZVJlYWNoZWRIYW5kbGVyKQogICAgICAgICA6IEV4
cGlyaW5nRW50cnkoV1RGTW92ZShsaWZldGltZVJlYWNoZWRIYW5kbGVyKSkKICAgICAgICAgLCBt
X2VudHJ5KFdURk1vdmUoZW50cnkpKQogICAgICAgICAsIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9u
UmVxdWVzdChXVEZNb3ZlKHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QpKQpAQCAtMTUwLDEy
ICsxNDgsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gV1RGTW92ZShtX2VudHJ5KTsKICAg
ICB9CiAKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4mIHJldmFsaWRh
dGlvblJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVl
c3Q7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4m
IHJldmFsaWRhdGlvblJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGF0aXZlVmFsaWRh
dGlvblJlcXVlc3Q7IH0KICAgICBib29sIHdhc1JldmFsaWRhdGVkKCkgY29uc3QgeyByZXR1cm4g
ISFtX3NwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3Q7IH0KIAogcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IG1fZW50cnk7Ci0gICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJl
cXVlc3Q+IG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0
OwogfTsKIAogY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCA6
IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdGcmFtZUxvYWQ+IHsKQEAgLTE3MSw3ICsxNjksNyBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2RpZFJldHJpZXZlRXhpc3RpbmdFbnRyeSk7CiAg
ICAgfQogCi0gICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgc3VicmVzb3VyY2VLZXkpCisgICAgdm9pZCByZWdp
c3RlclN1YnJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IEtleSYgc3VicmVzb3VyY2VLZXkpCiAgICAgewogICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgICAgICBtX3N1YnJlc291cmNlTG9hZHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8U3VicmVzb3VyY2VMb2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkpOwpA
QCAtMjU4LDcgKzI1Niw3IEBAIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6On5TcGVjdWxhdGl2ZUxv
YWQKIAogI2lmICFMT0dfRElTQUJMRUQKIAotc3RhdGljIHZvaWQgZHVtcEhUVFBIZWFkZXJzRGlm
Zihjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzQSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVh
ZGVyc0IpCitzdGF0aWMgdm9pZCBkdW1wSFRUUEhlYWRlcnNEaWZmKGNvbnN0IFdlYkNvcmU6OkhU
VFBIZWFkZXJNYXAmIGhlYWRlcnNBLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBoZWFk
ZXJzQikKIHsKICAgICBhdXRvIGFFbmQgPSBoZWFkZXJzQS5lbmQoKTsKICAgICBmb3IgKGF1dG8g
aXQgPSBoZWFkZXJzQS5iZWdpbigpOyBpdCAhPSBhRW5kOyArK2l0KSB7CkBAIC0yNzcsMTAgKzI3
NSwxMCBAQCBzdGF0aWMgdm9pZCBkdW1wSFRUUEhlYWRlcnNEaWZmKGNvbnN0IEhUCiAKICNlbmRp
ZgogCi1zdGF0aWMgYm9vbCByZXF1ZXN0c0hlYWRlcnNNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
YWN0dWFsUmVxdWVzdCkKK3N0YXRpYyBib29sIHJlcXVlc3RzSGVhZGVyc01hdGNoKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxSZXF1ZXN0KQogewogICAgIEFTU0VS
VCghYWN0dWFsUmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkpOwotICAgIFJlc291cmNlUmVxdWVzdCBz
cGVjdWxhdGl2ZVJlcXVlc3QgPSBzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0OworICAgIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBzcGVjdWxhdGl2ZVJlcXVlc3QgPSBzcGVjdWxhdGl2ZVZh
bGlkYXRpb25SZXF1ZXN0OwogICAgIHNwZWN1bGF0aXZlUmVxdWVzdC5tYWtlVW5jb25kaXRpb25h
bCgpOwogCiAgICAgaWYgKHNwZWN1bGF0aXZlUmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkgIT0g
YWN0dWFsUmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkpIHsKQEAgLTI5Myw3ICsyOTEsNyBAQCBz
dGF0aWMgYm9vbCByZXF1ZXN0c0hlYWRlcnNNYXRjaChjb25zdCBSCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6Y2FuVXNlUHJlbG9hZGVkRW50cnko
Y29uc3QgUHJlbG9hZGVkRW50cnkmIGVudHJ5LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGFjdHVh
bFJlcXVlc3QpCitib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmNhblVzZVByZWxvYWRlZEVu
dHJ5KGNvbnN0IFByZWxvYWRlZEVudHJ5JiBlbnRyeSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBhY3R1YWxSZXF1ZXN0KQogewogICAgIGlmICghZW50cnkud2FzUmV2YWxpZGF0ZWQo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMDIsNyArMzAwLDcgQEAgYm9vbCBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpjYW5Vc2VQcmVsbwogICAgIHJldHVybiByZXF1ZXN0c0hlYWRlcnNN
YXRjaCgqZW50cnkucmV2YWxpZGF0aW9uUmVxdWVzdCgpLCBhY3R1YWxSZXF1ZXN0KTsKIH0KIAot
Ym9vbCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpjYW5Vc2VQZW5kaW5nUHJlbG9hZChjb25zdCBT
cGVjdWxhdGl2ZUxvYWQmIGxvYWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYWN0dWFsUmVxdWVz
dCkKK2Jvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6Y2FuVXNlUGVuZGluZ1ByZWxvYWQoY29u
c3QgU3BlY3VsYXRpdmVMb2FkJiBsb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IGFjdHVhbFJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIHJlcXVlc3RzSGVhZGVyc01hdGNoKGxvYWQu
b3JpZ2luYWxSZXF1ZXN0KCksIGFjdHVhbFJlcXVlc3QpOwogfQpAQCAtMzEzLDEyICszMTEsMTIg
QEAgYm9vbCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpjYW5SZXRyaWV2ZQogICAgIGlmIChhdXRv
IHByZWxvYWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRFbnRyaWVzLmdldChzdG9yYWdlS2V5KSkgewog
ICAgICAgICBpZiAoIWNhblVzZVByZWxvYWRlZEVudHJ5KCpwcmVsb2FkZWRFbnRyeSwgcmVxdWVz
dCkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcs
ICIoTmV0d29ya1Byb2Nlc3MpIFJldHJpZXZhbDogQ291bGQgbm90IHVzZSBwcmVsb2FkZWQgZW50
cnkgdG8gc2F0aXNmeSByZXF1ZXN0IGZvciAnJXMnIGR1ZSB0byBIVFRQIGhlYWRlcnMgbWlzbWF0
Y2g6Iiwgc3RvcmFnZUtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBwcmVsb2Fk
ZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSA/IERpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVk
U3BlY3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9uS2V5KCkgOiBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6Ondhc3RlZFNwZWN1bGF0aXZlV2FybXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpKTsK
KyAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1l
SUQsIHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpID8gV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjp3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25LZXko
KSA6IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3BlY3VsYXRpdmVXYXJt
dXBXaXRob3V0UmV2YWxpZGF0aW9uS2V5KCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGlu
ZywgIihOZXR3b3JrUHJvY2VzcykgUmV0cmlldmFsOiBVc2luZyBwcmVsb2FkZWQgZW50cnkgdG8g
c2F0aXNmeSByZXF1ZXN0IGZvciAnJXMnOiIsIHN0b3JhZ2VLZXkuaWRlbnRpZmllcigpLnV0Zjgo
KS5kYXRhKCkpOwotICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2Fn
ZShmcmFtZUlELCBwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSA/IERpYWdub3N0aWNM
b2dnaW5nS2V5czo6c3VjY2Vzc2Z1bFNwZWN1bGF0aXZlV2FybXVwV2l0aFJldmFsaWRhdGlvbktl
eSgpIDogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBX
aXRob3V0UmV2YWxpZGF0aW9uS2V5KCkpOworICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdE
aWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQo
KSA/IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c3VjY2Vzc2Z1bFNwZWN1bGF0aXZl
V2FybXVwV2l0aFJldmFsaWRhdGlvbktleSgpIDogV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjpzdWNjZXNzZnVsU3BlY3VsYXRpdmVXYXJtdXBXaXRob3V0UmV2YWxpZGF0aW9uS2V5KCkp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMyNiwxNiArMzI0LDE2IEBAIGJv
b2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6Y2FuUmV0cmlldmUKICAgICBhdXRvKiBwZW5kaW5n
UHJlbG9hZCA9IG1fcGVuZGluZ1ByZWxvYWRzLmdldChzdG9yYWdlS2V5KTsKICAgICBpZiAoIXBl
bmRpbmdQcmVsb2FkKSB7CiAgICAgICAgIGlmIChtX25vdFByZWxvYWRlZEVudHJpZXMuZ2V0KHN0
b3JhZ2VLZXkpKQotICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01l
c3NhZ2UoZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVdyb25nbHlOb3RXYXJt
ZWRVcEtleSgpKTsKKyAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNN
ZXNzYWdlKGZyYW1lSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZW50cnlXcm9u
Z2x5Tm90V2FybWVkVXBLZXkoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZ1NwZWN1
bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5n
S2V5czo6dW5rbm93bkVudHJ5UmVxdWVzdEtleSgpKTsKKyAgICAgICAgICAgIGxvZ1NwZWN1bGF0
aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1lSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNM
b2dnaW5nS2V5czo6dW5rbm93bkVudHJ5UmVxdWVzdEtleSgpKTsKIAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFjYW5Vc2VQZW5kaW5nUHJlbG9hZCgqcGVuZGluZ1By
ZWxvYWQsIHJlcXVlc3QpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVBy
ZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFJldHJpZXZhbDogcmV2YWxpZGF0aW9uIGFscmVh
ZHkgaW4gcHJvZ3Jlc3MgZm9yICclcycgYnV0IHVudXNhYmxlIGR1ZSB0byBIVFRQIGhlYWRlcnMg
bWlzbWF0Y2g6Iiwgc3RvcmFnZUtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZyYW1lSUQsIERpYWdu
b3N0aWNMb2dnaW5nS2V5czo6d2FzdGVkU3BlY3VsYXRpdmVXYXJtdXBXaXRoUmV2YWxpZGF0aW9u
S2V5KCkpOworICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShm
cmFtZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Ondhc3RlZFNwZWN1bGF0aXZl
V2FybXVwV2l0aFJldmFsaWRhdGlvbktleSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMzYwLDE3ICszNTgsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZXRyaWV2ZShjbwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiByZXNvdXJjZUtleSkKK3ZvaWQgU3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiByZXNv
dXJjZUtleSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAKICAgICBpZiAocmVxdWVz
dC5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIXJlcXVl
c3QuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSkuaXNFbXB0eSgpKQorICAg
IGlmICghcmVxdWVzdC5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OlJh
bmdlKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaXNNYWluUmVzb3Vy
Y2UgPSByZXF1ZXN0LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpN
YWluOworICAgIGF1dG8gaXNNYWluUmVzb3VyY2UgPSByZXF1ZXN0LnJlcXVlc3RlcigpID09IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOwogICAgIGlmIChpc01haW5S
ZXNvdXJjZSkgewogICAgICAgICAvLyBNYXJrIHByZXZpb3VzIGxvYWQgaW4gdGhpcyBmcmFtZSBh
cyBjb21wbGV0ZWQgaWYgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoYXV0byogcGVuZGluZ0ZyYW1l
TG9hZCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMuZ2V0KGZyYW1lSUQpKQpAQCAtMzk5LDcgKzM5Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2EKICAgICAgICAgcGVu
ZGluZ0ZyYW1lTG9hZC0+cmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQocmVxdWVzdCwgcmVzb3VyY2VL
ZXkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5
KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVlc3Qp
Cit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVlc3Qp
CiB7CiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRp
b24oKSk7CkBAIC00MDgsOSArNDA2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjph
ZGRQcmVsb2FkZQogICAgICAgICBhdXRvIHByZWxvYWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRFbnRy
aWVzLnRha2Uoa2V5KTsKICAgICAgICAgQVNTRVJUKHByZWxvYWRlZEVudHJ5KTsKICAgICAgICAg
aWYgKHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpKQotICAgICAgICAgICAgbG9nU3Bl
Y3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjp3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25LZXkoKSk7Cisg
ICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlE
LCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Ondhc3RlZFNwZWN1bGF0aXZlV2FybXVw
V2l0aFJldmFsaWRhdGlvbktleSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nU3Bl
Y3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UoZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjp3YXN0ZWRTcGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRSZXZhbGlkYXRpb25LZXkoKSk7
CisgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFt
ZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Ondhc3RlZFNwZWN1bGF0aXZlV2Fy
bXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpKTsKICAgICB9KSk7CiB9CiAKQEAgLTQ2NCw3ICs0
NjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTCiAgICAgaWYg
KCFrZXkucmFuZ2UoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNl
UmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0ID0gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVz
dChrZXksIHN1YnJlc291cmNlSW5mbywgZW50cnkuZ2V0KCkpOworICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0ID0gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVx
dWVzdChrZXksIHN1YnJlc291cmNlSW5mbywgZW50cnkuZ2V0KCkpOwogCiAgICAgTE9HKE5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRp
dmVseSByZXZhbGlkYXRpbmcgJyVzJzoiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkp
OwogCkBAIC00NzcsNyArNDc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZh
bGlkYXRlUwogCiAgICAgICAgIGlmIChzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGtleSwgcmV2YWxp
ZGF0ZWRFbnRyeS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChyZXZhbGlkYXRlZEVudHJ5KQot
ICAgICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZy
YW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6c3VjY2Vzc2Z1bFNwZWN1bGF0aXZlV2FybXVw
V2l0aFJldmFsaWRhdGlvbktleSgpKTsKKyAgICAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxv
YWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnN1Y2Nlc3NmdWxTcGVjdWxhdGl2ZVdhcm11cFdpdGhSZXZhbGlkYXRpb25LZXkoKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNTM3LDcgKzUzNSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlbG9hZEVudHIKIAogICAgICAgICBpZiAoc2F0
aXNmeVBlbmRpbmdSZXF1ZXN0cyhrZXksIGVudHJ5LmdldCgpKSkgewogICAgICAgICAgICAgaWYg
KGVudHJ5KQotICAgICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNN
ZXNzYWdlKGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6c3VjY2Vzc2Z1bFNwZWN1bGF0
aXZlV2FybXVwV2l0aG91dFJldmFsaWRhdGlvbktleSgpKTsKKyAgICAgICAgICAgICAgICBsb2dT
cGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlELCBXZWJDb3JlOjpEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OnN1Y2Nlc3NmdWxTcGVjdWxhdGl2ZVdhcm11cFdpdGhvdXRSZXZh
bGlkYXRpb25LZXkoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC01NjAsNyArNTU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNw
ZWN1bAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5vdCBwcmVsb2FkaW5nICclcycgYmVj
YXVzZSBpdCBpcyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwga2V5LmlkZW50aWZpZXIoKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBzdGQ6
Om1ha2VfdW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsKLSAgICAg
ICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShmcmFtZUlE
LCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5UmlnaHRseU5vdFdhcm1lZFVwS2V5KCkpOwor
ICAgICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKGZy
YW1lSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6ZW50cnlSaWdodGx5Tm90V2Fy
bWVkVXBLZXkoKSk7CiAgICAgICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLnJlbW92
ZShrZXkpOwogICAgICAgICAgICAgfSkpOwogICAgICAgICB9CkBAIC01NzEsNyArNTY5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZVN1YgogewogICAgIEFTU0VSVChz
dG9yYWdlS2V5LnR5cGUoKSA9PSAiUmVzb3VyY2UiKTsKICAgICBhdXRvIHN1YnJlc291cmNlc1N0
b3JhZ2VLZXkgPSBtYWtlU3VicmVzb3VyY2VzS2V5KHN0b3JhZ2VLZXksIG1fc3RvcmFnZS5zYWx0
KCkpOwotICAgIG1fc3RvcmFnZS5yZXRyaWV2ZShzdWJyZXNvdXJjZXNTdG9yYWdlS2V5LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUmVzb3VyY2VMb2FkUHJpb3JpdHk6Ok1lZGl1bSksIFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlY29yZCwgYXV0
byB0aW1pbmdzKSB7CisgICAgbV9zdG9yYWdlLnJldHJpZXZlKHN1YnJlc291cmNlc1N0b3JhZ2VL
ZXksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eTo6
TWVkaXVtKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGF1dG8gcmVjb3JkLCBhdXRvIHRpbWluZ3MpIHsKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNTAx
NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNCArNTgyLDYgQEAgYm9vbCBNYW5h
Z2VyOjpnZXRXb3JkKHVpbnQ4X3QgY29uc3QgKiYgcAogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0Nh
cHR1cmUKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCisjdW5kZWYgREVCVUdfQ0xBU1MKKwogI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX0NBUFRVUkUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVj
b3JkZXIuY3BwCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1Myw0ICsxNTMsNiBAQCB2b2lkIFJlY29yZGVyOjp3cml0ZUV2ZW50cygpCiB9IC8vIG5hbWVz
cGFjZSBOZXR3b3JrQ2FwdHVyZQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKyN1bmRlZiBERUJV
R19DTEFTUworCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfQ0FQVFVSRSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlcGxheWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVSZXBsYXllci5jcHAJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlcGxheWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNCArNDgsNiBAQCBSZWY8TmV0d29ya0RhdGFUYXNrPiBSZXBsYXll
cjo6cmVwbGF5UmVzCiB9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FwdHVyZQogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKKyN1bmRlZiBERUJVR19DTEFTUworCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfQ0FQVFVSRSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrRGF0YVRhc2tSZXBsYXkuY3BwCShyZXZpc2lvbiAy
MzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Rh
dGFUYXNrUmVwbGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDQgKzI4OCw2IEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrUmVwbGF5OjpkaWRGaW5pc2goY28KIH0gLy8gbmFtZXNwYWNlIE5ldHdv
cmtDYXB0dXJlCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorI3VuZGVmIERFQlVHX0NMQVNTCisK
ICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19DQVBUVVJFKQpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3
IEBACiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrIChTdGFn
aW5nKQotQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZHdyaXRlLCByZXRhaW4pIE5TVVJMICpfc2l0
ZUZvckNvb2tpZXM7CitAcHJvcGVydHkgKHJlYWR3cml0ZSwgcmV0YWluKSBOU1VSTCAqX3NpdGVG
b3JDb29raWVzOwogQHByb3BlcnR5IChyZWFkd3JpdGUpIEJPT0wgX2lzVG9wTGV2ZWxOYXZpZ2F0
aW9uOwogQGVuZAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyMzUw
MTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiBAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvbkNvbmZp
Z3VyYXRpb24gKFdLU3RhZ2luZykKLUBwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHkpIE5TU2V0ICpf
c3VwcHJlc3NlZEF1dG9BZGRlZEhUVFBIZWFkZXJzOworQHByb3BlcnR5IChjb3B5KSBOU1NldCAq
X3N1cHByZXNzZWRBdXRvQWRkZWRIVFRQSGVhZGVyczsKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogLy8gRklY
TUU6IFJlbW92ZSB0aGlzIG9uY2UgcmRhcjovL3Byb2JsZW0vNDA2NTAyNDQgaXMgaW4gYSBidWls
ZC4KIEBwcm9wZXJ0eSAoY29weSkgTlNEaWN0aW9uYXJ5ICpfc29ja2V0U3RyZWFtUHJvcGVydGll
czsKQEAgLTE0Myw3ICsxNDMsNyBAQCAtIChOZXR3b3JrRGF0YVRhc2tDb2NvYSopZXhpc3RpbmdU
YXNrOihOCiAgICAgcmV0dXJuIF9zZXNzaW9uLT5kYXRhVGFza0ZvcklkZW50aWZpZXIodGFzay50
YXNrSWRlbnRpZmllciwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogfQogCi0tICh2b2lkKVVS
TFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGlkQmVjb21lSW52YWxpZFdpdGhFcnJv
cjoobnVsbGFibGUgTlNFcnJvciAqKWVycm9yCistICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3Npb24gZGlkQmVjb21lSW52YWxpZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
CiB7CiAgICAgQVNTRVJUKCFfc2Vzc2lvbik7CiB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9p
ZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIH0KIH0KIAotLSAodm9pZClV
UkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25E
YXRhVGFzayAqKWRhdGFUYXNrIHdpbGxDYWNoZVJlc3BvbnNlOihOU0NhY2hlZFVSTFJlc3BvbnNl
ICopcHJvcG9zZWRSZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNDYWNoZWRV
UkxSZXNwb25zZSAqIF9OdWxsYWJsZSBjYWNoZWRSZXNwb25zZSkpY29tcGxldGlvbkhhbmRsZXIK
Ky0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNV
UkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFzayB3aWxsQ2FjaGVSZXNwb25zZTooTlNDYWNoZWRV
UkxSZXNwb25zZSAqKXByb3Bvc2VkUmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlKSljb21wbGV0aW9uSGFuZGxlcgog
ewogICAgIGlmICghX3Nlc3Npb24pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdv
cmtQcm9jZXNzSU9TLm1tCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAs
OCArNDAsNiBAQAogCiAjZGVmaW5lIEVOQUJMRV9NQU5VQUxfTkVUV09SS19TQU5EQk9YSU5HIDAK
IAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmKQpAQCAtNjgsNyArNjYsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplU2FuZGJveChjCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IENlcnRpZmljYXRl
SW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhvc3QpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkK
IHsKICAgICBbTlNVUkxSZXF1ZXN0IHNldEFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZToo
TlNBcnJheSAqKWNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZUNoYWluKCkgZm9ySG9zdDpob3N0
XTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9j
ZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDcsOCArNDcsNiBAQAogI2ltcG9ydCA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6
ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikKQEAg
LTcwLDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVTeXN0ZW1Qcm94aWVzKGNvbnN0IAog
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnByb3h5U2V0dGluZ3MgPSBbTlNNdXRhYmxlRGljdGlv
bmFyeSBkaWN0aW9uYXJ5XTsKIAogICAgIGlmICghaHR0cFByb3h5LmlzTnVsbCgpKSB7Ci0gICAg
ICAgIFVSTCBodHRwUHJveHlVUkwoVVJMKCksIGh0dHBQcm94eSk7CisgICAgICAgIFdlYkNvcmU6
OlVSTCBodHRwUHJveHlVUkwoV2ViQ29yZTo6VVJMKCksIGh0dHBQcm94eSk7CiAgICAgICAgIGlm
IChodHRwUHJveHlVUkwuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBz
ZXRPYmplY3Q6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhodHRwUHJveHlVUkwuaG9zdCgpLnRv
U3RyaW5nKCkpIGZvcktleTooTlNTdHJpbmcgKilrQ0ZOZXR3b3JrUHJveGllc0hUVFBQcm94eV07
CiAgICAgICAgICAgICBpZiAoaHR0cFByb3h5VVJMLnBvcnQoKSkgewpAQCAtODMsNyArODEsNyBA
QCBzdGF0aWMgdm9pZCBvdmVycmlkZVN5c3RlbVByb3hpZXMoY29uc3QgCiAgICAgfQogCiAgICAg
aWYgKCFodHRwc1Byb3h5LmlzTnVsbCgpKSB7Ci0gICAgICAgIFVSTCBodHRwc1Byb3h5VVJMKFVS
TCgpLCBodHRwc1Byb3h5KTsKKyAgICAgICAgV2ViQ29yZTo6VVJMIGh0dHBzUHJveHlVUkwoV2Vi
Q29yZTo6VVJMKCksIGh0dHBzUHJveHkpOwogICAgICAgICBpZiAoaHR0cHNQcm94eVVSTC5pc1Zh
bGlkKCkpIHsKICNpZiAhUExBVEZPUk0oSU9TTUFDKQogICAgICAgICAgICAgW3Byb3h5U2V0dGlu
Z3Mgc2V0T2JqZWN0Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaHR0cHNQcm94eVVSTC5ob3N0
KCkudG9TdHJpbmcoKSkgZm9yS2V5OihOU1N0cmluZyAqKWtDRk5ldHdvcmtQcm94aWVzSFRUUFNQ
cm94eV07CkBAIC0xMTMsNyArMTExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplTgogICAgICAgICBvdmVycmlkZVN5c3RlbVByb3hpZXMocGFyYW1ldGVycy5odHRw
UHJveHksIHBhcmFtZXRlcnMuaHR0cHNQcm94eSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5nJiBob3N0KQordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7
CiAgICAgW05TVVJMUmVxdWVzdCBzZXRBbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGU6KF9f
YnJpZGdlIE5TQXJyYXkgKiljZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGVDaGFpbigpIGZvckhv
c3Q6KE5TU3RyaW5nICopaG9zdF07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2
aXNpb24gMjM1MDE1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDE0ICszOSwxMiBAQAog
I2ltcG9ydCA8cGFsL1Nlc3Npb25JRC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNzaW9u
SUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7Ci0gICAg
aWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYmFzZTsKQEAgLTYyLDkgKzYw
LDkgQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2VicwogICAgIGlmICgh
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgIXBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3Rv
cmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICB1aVByb2Nlc3NDb29raWVTdG9yYWdl
ID0gY29va2llU3RvcmFnZUZyb21JZGVudGlmeWluZ0RhdGEocGFyYW1ldGVycy51aVByb2Nlc3ND
b29raWVTdG9yYWdlSWRlbnRpZmllcik7CiAKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVu
c3VyZVNlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lv
bklELnNlc3Npb25JRCgpKSwgV1RGTW92ZSh1aVByb2Nlc3NDb29raWVTdG9yYWdlKSk7CisgICAg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwg
YmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSksIFdURk1v
dmUodWlQcm9jZXNzQ29va2llU3RvcmFnZSkpOwogCi0gICAgYXV0byogc2Vzc2lvbiA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBz
ZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpOwogICAgIGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1ldGVycy5wZW5k
aW5nQ29va2llcykKICAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtNRE5TUmVnaXN0ZXIuY3BwCShyZXZpc2lvbiAyMzUwMTUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNs
dWRlIDx3dGYvVVVJRC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNl
IFdlYktpdCB7CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChzZXNzaW9uSUQsIGZt
dCwgLi4uKSBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQpAQCAtOTcsMTMgKzk1LDEzIEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTUROU05h
bWVDYWxsYmFjayhETlMKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX0lOX0NBTExCQUNLKHJl
cXVlc3QtPnNlc3Npb25JRCwgInJlZ2lzdGVyTUROU05hbWVDYWxsYmFjayB3aXRoIGVycm9yICVk
IiwgZXJyb3JDb2RlKTsKIAogICAgIGlmIChlcnJvckNvZGUpIHsKLSAgICAgICAgcmVxdWVzdC0+
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lz
dGVyaW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0
ZWQoTUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgcmVxdWVzdC0+Y29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVy
aW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQo
V2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICByZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5T
UmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJ
ZGVudGlmaWVyLCByZXF1ZXN0LT5uYW1lIH0sIDApOwogfQogCi12b2lkIE5ldHdvcmtNRE5TUmVn
aXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgRG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpCit2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJl
Z2lzdGVyTUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpCiB7CiAgICAgRE5TU2VydmljZVJlZiBzZXJ2aWNl
OwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3NlcnZpY2VzLmZpbmQoZG9jdW1lbnRJZGVudGlmaWVy
KTsKQEAgLTExMSwxMyArMTA5LDEzIEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0
ZXJNRE5TTmEKICAgICAgICAgYXV0byBlcnJvciA9IEROU1NlcnZpY2VDcmVhdGVDb25uZWN0aW9u
KCZzZXJ2aWNlKTsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKHNlc3Npb25JRCwgInJlZ2lzdGVyTUROU05hbWUgRE5TU2VydmljZUNyZWF0
ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdp
c3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKE1ETlNS
ZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3Rl
cmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6
Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgZXJyb3IgPSBETlNTZXJ2aWNlU2V0RGlzcGF0Y2hRdWV1ZShzZXJ2
aWNlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHNlc3Npb25JRCwgInJlZ2lzdGVyTURO
U05hbWUgRE5TU2VydmljZUNyZWF0ZUNvbm5lY3Rpb24gZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAg
ICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNS
ZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIs
IG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CisgICAgICAg
ICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdp
c3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1h
a2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHNlcnZpY2UpOwpA
QCAtMTMyLDcgKzEzMCw3IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5T
TmEKIAogICAgIGlmIChpcCA9PSAoIGluX2FkZHJfdCkoLTEpKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAicmVnaXN0ZXJNRE5TTmFtZSBpbmV0X2FkZHIgZXJy
b3IiKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBtYWtlVW5leHBlY3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFyYW1ldGVyKSB9
LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6QmFkUGFy
YW1ldGVyKSB9LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTUyLDcgKzE1MCw3
IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmEKICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3RDb3VudCkpOwog
ICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHNlc3Npb25J
RCwgInJlZ2lzdGVyTUROU05hbWUgRE5TU2VydmljZVJlZ2lzdGVyUmVjb3JkIGVycm9yICVkIiwg
ZXJyb3IpOwotICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZWdpc3RlcmluZ01ETlNOYW1lIHsgcmVxdWVzdElk
ZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVycm9yOjpETlNTRCkgfSwgMCk7
CisgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTURO
U1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmll
ciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAw
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBwZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVz
dHMoKS5hZGQocGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3RDb3VudCsrLCBXVEZNb3ZlKHBlbmRp
bmdSZXF1ZXN0KSk7CkBAIC0xNzgsNyArMTc2LDcgQEAgc3RydWN0IFBlbmRpbmdSZXNvbHV0aW9u
UmVxdWVzdCB7CiAKICAgICB2b2lkIHRpbWVvdXQoKQogICAgIHsKLSAgICAgICAgY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlc29sdmluZ01ETlNO
YW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVycm9y
OjpUaW1lb3V0KSB9LCAwKTsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2Vi
TUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlc29sdmluZ01ETlNOYW1lIHsgcmVxdWVzdElkZW50aWZp
ZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpUaW1lb3V0KSB9
LCAwKTsKICAgICAgICAgcmVxdWVzdElkZW50aWZpZXIgPSAwOwogICAgIH0KIApAQCAtMTg2LDcg
KzE4NCw3IEBAIHN0cnVjdCBQZW5kaW5nUmVzb2x1dGlvblJlcXVlc3QgewogICAgIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwogICAgIEROU1NlcnZpY2VSZWYgc2VydmljZSB7IG51
bGxwdHIgfTsKICAgICBETlNTZXJ2aWNlUmVmIG9wZXJhdGlvblNlcnZpY2UgeyBudWxscHRyIH07
Ci0gICAgVGltZXIgdGltZW91dFRpbWVyOworICAgIFdlYkNvcmU6OlRpbWVyIHRpbWVvdXRUaW1l
cjsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7CiB9OwogCkBAIC0xOTksNyArMTk3LDcg
QEAgc3RhdGljIHZvaWQgcmVzb2x2ZU1ETlNOYW1lQ2FsbGJhY2soRE5TUwogCiAgICAgaWYgKGVy
cm9yQ29kZSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEX0lOX0NBTExCQUNLKHJl
cXVlc3QtPnNlc3Npb25JRCwgInJlc29sdmVNRE5TTmFtZUNhbGxiYWNrIE1ETlMgZXJyb3IgJWQi
LCBlcnJvckNvZGUpOwotICAgICAgICByZXF1ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0LT5y
ZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoTUROU1JlZ2lzdGVyRXJyb3I6OkROU1NE
KSB9LCAwKTsKKyAgICAgICAgcmVxdWVzdC0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2Vi
TUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlc29sdmluZ01ETlNOYW1lIHsgcmVxdWVzdC0+cmVxdWVz
dElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6Ok1ETlNSZWdpc3RlckVycm9yOjpE
TlNTRCkgfSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwOCw3ICsyMDYsNyBA
QCBzdGF0aWMgdm9pZCByZXNvbHZlTUROU05hbWVDYWxsYmFjayhETlNTCiAgICAgY2hhciBidWZm
ZXJbSU5FVDZfQUREUlNUUkxFTl0gPSB7IDAgfTsKICAgICBpZiAoIWluZXRfbnRvcChzb2NrZXRB
ZGRyZXNzLT5zYV9mYW1pbHksIGFkZHJlc3MsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRURfSU5fQ0FMTEJBQ0socmVxdWVzdC0+c2Vzc2lv
bklELCAicmVzb2x2ZU1ETlNOYW1lQ2FsbGJhY2sgaW5ldF9udG9wIGVycm9yIik7Ci0gICAgICAg
IHJlcXVlc3QtPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6Rmlu
aXNoZWRSZXNvbHZpbmdNRE5TTmFtZSB7IHJlcXVlc3QtPnJlcXVlc3RJZGVudGlmaWVyLCBtYWtl
VW5leHBlY3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6RE5TU0QpIH0sIDApOworICAgICAgICByZXF1
ZXN0LT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVk
UmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0LT5yZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhw
ZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMjIyLDcgKzIyMCw3IEBAIHZvaWQgTmV0d29ya01ETlNSZWdp
c3Rlcjo6cmVzb2x2ZU1ETlNOYW0KIAogICAgIGlmIChhdXRvIGVycm9yID0gRE5TU2VydmljZUNy
ZWF0ZUNvbm5lY3Rpb24oJnBlbmRpbmdSZXF1ZXN0LT5zZXJ2aWNlKSkgewogICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKHNlc3Npb25JRCwgInJlc29sdmVNRE5TTmFtZSBETlNTZXJ2aWNl
Q3JlYXRlQ29ubmVjdGlvbiBlcnJvciAlZCIsIGVycm9yKTsKLSAgICAgICAgbV9jb25uZWN0aW9u
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVz
b2x2aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoTUROU1Jl
Z2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVzb2x2aW5nTURO
U05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1Jl
Z2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MjM3LDcgKzIzNSw3IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVzb2x2ZU1ETlNOYW0K
ICAgICBwZW5kaW5nUmVxdWVzdC0+b3BlcmF0aW9uU2VydmljZSA9IHNlcnZpY2U7CiAgICAgaWYg
KGVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAicmVz
b2x2ZU1ETlNOYW1lIEROU1NlcnZpY2VHZXRBZGRySW5mbyBlcnJvciAlZCIsIGVycm9yKTsKLSAg
ICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVn
aXN0ZXI6OkZpbmlzaGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFr
ZVVuZXhwZWN0ZWQoTUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZp
bmlzaGVkUmVzb2x2aW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0
ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6OkROU1NEKSB9LCAwKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBwZW5kaW5nUmVxdWVzdC5yZWxlYXNlKCk7CkBAIC0yNDUsNyArMjQz
LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZXNvbHZlTUROU05hbQogICAgIGVycm9y
ID0gRE5TU2VydmljZVNldERpc3BhdGNoUXVldWUoc2VydmljZSwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoc2Vzc2lvbklELCAicmVzb2x2ZU1ETlNOYW1lIEROU1NlcnZpY2VTZXREaXNwYXRjaFF1ZXVl
IGVycm9yICVkIiwgZXJyb3IpOwotICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZXNvbHZpbmdNRE5TTmFtZSB7
IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6RE5T
U0QpIH0sIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYk1ETlNSZWdpc3Rlcjo6RmluaXNoZWRSZXNvbHZpbmdNRE5TTmFtZSB7IHJlcXVlc3RJ
ZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpNRE5TUmVnaXN0ZXJFcnJvcjo6RE5T
U0QpIH0sIDApOwogICAgIH0KIH0KICNlbHNlCkBAIC0yNTMsMTYgKzI1MSwxNiBAQCB2b2lkIE5l
dHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TCiB7CiB9CiAKLXZvaWQgTmV0d29ya01E
TlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcykKK3ZvaWQgTmV0d29ya01ETlNSZWdpc3Rl
cjo6cmVnaXN0ZXJNRE5TTmFtZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGlwQWRkcmVzcykKIHsKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKHNlc3Npb25JRCwgInJlZ2lzdGVyTUROU05hbWUgbm90IGltcGxlbWVudGVkIik7Ci0g
ICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0
ZXI6OkZpbmlzaGVkUmVnaXN0ZXJpbmdNRE5TTmFtZSB7IHJlcXVlc3RJZGVudGlmaWVyLCBtYWtl
VW5leHBlY3RlZChNRE5TUmVnaXN0ZXJFcnJvcjo6Tm90SW1wbGVtZW50ZWQpIH0sIDApOworICAg
IG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVy
OjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVu
ZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSB9LCAw
KTsKIH0KIAogdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZXNvbHZlTUROU05hbWUodWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBuYW1lKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAicmVz
b2x2ZU1ETlNOYW1lIG5vdCBpbXBsZW1lbnRlZCIpOwotICAgIG1fY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTUROU1JlZ2lzdGVyOjpGaW5pc2hlZFJlc29sdmluZ01E
TlNOYW1lIHsgcmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKE1ETlNSZWdpc3RlckVy
cm9yOjpOb3RJbXBsZW1lbnRlZCkgfSwgMCk7CisgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJNRE5TUmVnaXN0ZXI6OkZpbmlzaGVkUmVzb2x2aW5nTUROU05h
bWUgeyByZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6TUROU1JlZ2lz
dGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkKSB9LCAwKTsKIH0KIAogI2VuZGlmCkBAIC0yNzAsMyAr
MjY4LDYgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZXNvbHZlTUROU05hbQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKKworI3VuZGVmIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VEX0lOX0NB
TExCQUNLCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIzNTAxNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgwMyw3ICs4MDMsNiBAQAog
CQkyREE5NDRBRjE4ODRFOUJBMDBFRDg2REIgLyogV2ViUGFnZVByb3h5SU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QUIxODg0RTlCQTAw
RUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0QjAxODg0RTlCQTAw
RUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEFDMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9j
ZXNzUHJveHlJT1MubW0gKi87IH07CiAJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBXZWJQ
YWdlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0gKi87IH07Ci0JCTJEQTk0
NEJEMTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEJDMTg4NTExRTcwMEVEODZE
QiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLzsgfTsKIAkJMkRBQkE3NzIxQTgxN0IxNzAwRUYw
RjFBIC8qIFdLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUJBNzcxMUE4MTdCMTcwMEVG
MEYxQSAvKiBXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmggKi87IH07CiAJ
CTJEQUJBNzc0MUE4MTdFRTYwMEVGMEYxQSAvKiBXS1BsdWdpbkxvYWRQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUJBNzczMUE4MTdFRTYw
MEVGMEYxQSAvKiBXS1BsdWdpbkxvYWRQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREFCQTc3NjFBODJCNDIxMDBFRjBGMUEgLyogQVBJ
SGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRBQkE3NzUxQTgyQjQyMTAwRUYwRjFBIC8qIEFQSUhpc3RvcnlDbGllbnQuaCAqLzsg
fTsKQEAgLTkwMCw3ICs4OTksNiBAQAogCQkzMzA5MzQ0ODEzMTVCOTIyMDA5N0E3QkMgLyogV2Vi
Q29va2llTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMzA5MzQ0NDEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdl
ck1lc3NhZ2VzLmggKi87IH07CiAJCTMzMDkzNDQ5MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29r
aWVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMwOTM0NDUxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNv
b2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTMzMDkzNDRBMTMx
NUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMwOTM0NDYxMzE1QjkyMjAw
OTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTMzMDkz
NDRGMTMxNUI5NEQwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMDkzNDRDMTMxNUI5NEQwMDk3QTdC
QyAvKiBXZWJDb29raWVNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJMzMwOTM0NTAxMzE1Qjk0RDAwOTdB
N0JDIC8qIFdlYkNvb2tpZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzMDkzNDREMTMxNUI5NEQwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5h
Z2VyLmggKi87IH07CiAJCTMzMDkzNDU1MTMxNUI5NzUwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzMwOTM0NTIxMzE1Qjk3NTAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAg
Ki87IH07CiAJCTMzMDkzNDU2MTMxNUI5NzUwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMDkz
NDUzMTMxNUI5NzUwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHkuaCAqLzsgfTsKQEAg
LTEwMDQsMTAgKzEwMDIsNyBAQAogCQkzRkIwOEU0MzFGNjBCMjQwMDA1RTUzMTIgLyogaU9TLnhj
YXNzZXRzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
RkIwOEU0MjFGNjBCMjQwMDA1RTUzMTIgLyogaU9TLnhjYXNzZXRzICovOyB9OwogCQkzRkZEREI5
NjFGNTc3RjQ4MDA1MEU1OTMgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y5MTVDMEYxRjU2
NERFRDAwMTgzQ0U5IC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCAqLzsgfTsK
IAkJM0ZGRERCOTcxRjU3ODBFMTAwNTBFNTkzIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
RjkxNUMwRTFGNTY0REVEMDAxODNDRTkgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklP
Uy5tbSAqLzsgfTsKLQkJNDEwM0ZCQTUyMDYxQzhGRTAwQzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hl
Y2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTAzRkJBMjIwNjFCREI4MDBDMkVBRjggLyogTmV0d29ya0xvYWRDaGVja2VyLmNwcCAqLzsgfTsK
IAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUwMEYwMDZE
MCAvKiBSVENOZXR3b3JrLmggKi87IH07Ci0JCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZl
ci5jcHAgKi87IH07Ci0JCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwICovOyB9OwogCQk0MTEyRUREQjIwRTQwN0E1MDBCRUE5MkEgLyogY29tLmFwcGxlLkJvY29t
U3VibWl0Q3RybC5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyRUREOTIwRTQwNzc1MDBCRUE5MkEgLyogY29t
LmFwcGxlLkJvY29tU3VibWl0Q3RybC5zYiAqLzsgfTsKIAkJNDExMkVEREMyMEU0MDdBNTAwQkVB
OTJBIC8qIGNvbS5hcHBsZS5OUFNhZmVJbnB1dC5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQ
cm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyRUREODIwRTQw
Nzc1MDBCRUE5MkEgLyogY29tLmFwcGxlLk5QU2FmZUlucHV0LnNiICovOyB9OwogCQk0MTEyRURE
RDIwRTQwN0E1MDBCRUE5MkEgLyogY29tLmFwcGxlLk5QU2FmZVN1Ym1pdC5zYiBpbiBDb3B5IFBs
dWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEyRURENzIwRTQwNzc1MDBCRUE5MkEgLyogY29tLmFwcGxlLk5QU2FmZVN1Ym1pdC5zYiAq
LzsgfTsKQEAgLTEwMTcsOCArMTAxMiw2IEBACiAJCTQxMUE4RERCMjBEREQxQUMwMDYwRDM0RiAv
KiBXS01vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExQThERDkyMEREQjYwNTAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEx
QThEREMyMERERDIzRjAwNjBEMzRGIC8qIFdLTW9ja01lZGlhRGV2aWNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUE4RERBMjBEREI2MDUwMDYw
RDM0RiAvKiBXS01vY2tNZWRpYURldmljZS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYw
MDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRD
TmV0d29yay5oICovOyB9OwotCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07
Ci0JCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwogCQk0MTMwNzVBQjFE
RTg1RjMzMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5l
dHdvcmtSVENTb2NrZXQuaCAqLzsgfTsKIAkJNDEzMDc1QUMxREU4NUYzNzAwMzlFQzY5IC8qIE5l
dHdvcmtSVENNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTMwNzU5QjFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuaCAq
LzsgfTsKIAkJNDEzMDc1QUQxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTAxREU4
NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldC5oICovOyB9OwpAQCAtMTAzMSw3ICsxMDI0
LDYgQEAKIAkJNDEzMDc1QjQxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBODFE
RTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLzsgfTsKIAkJNDEzMUYzRDEx
Rjk2QkNDQzAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMxRjNEMDFGOTZCQ0M4MDA1
OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLzsgfTsKIAkJNDEzMUYzRTIx
Rjk4ODA4NDAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMUYzRTAxRjk4
NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwICovOyB9
OwotCQk0MTM1RkJEMTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzVG
QkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwICovOyB9
OwogCQk0MTNDQ0Q1MDIwREVCQzc0MDA2NUEyMUEgLyogY29tLmdvb2dsZS5nb29nbGV0YWxrYnJv
d3NlcnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDQ0Q0RjIwREVCQzJGMDA2NUEyMUEgLyogY29t
Lmdvb2dsZS5nb29nbGV0YWxrYnJvd3NlcnBsdWdpbi5zYiAqLzsgfTsKIAkJNDE0Mzc1MUMyMEVB
RUEyRDAwRkFEMDZDIC8qIGNuLm1pY3JvZG9uZS5jbWIuc2FmYXJpLnNiIGluIENvcHkgUGx1Zy1p
biBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NDM3NTFCMjBFQUVBMUUwMEZBRDA2QyAvKiBjbi5taWNyb2RvbmUuY21iLnNhZmFyaS5zYiAqLzsg
fTsKIAkJNDE0REQzNzkyMEJGNDNGNTAwNjk1OUZCIC8qIGNvbS5jaXNjby53ZWJleC5wbHVnaW4u
Z3BjNjQuc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNEREMzc4MjBCRjQzRUEwMDY5NTlGQiAvKiBjb20uY2lzY28ud2ViZXgucGx1Z2luLmdwYzY0
LnNiICovOyB9OwpAQCAtMTA0MiwzNiArMTAzNCwyNyBAQAogCQk0MTg5N0VDRjFGNDE1RDYyMDAx
NkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg5N0VDRTFGNDE1RDVDMDAxNkZBNDIgLyog
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTQxODk3RUQwMUY0MTVENjUw
MDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg5N0VDQzFGNDE1RDVDMDAxNkZBNDIgLyog
V2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwICovOyB9OwogCQk0MTg5N0VEMTFGNDE1RDY4MDAx
NkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0QxRjQxNUQ1QzAwMTZGQTQyIC8qIFdl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCAqLzsgfTsKLQkJNDE4OTdFRDcxRjQxNUQ4QTAwMTZG
QTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg5N0VENjFGNDE1RDg2MDAxNkZBNDIgLyogQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcCAqLzsgfTsKIAkJNDE4OTdFRDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hl
U3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4OTdFRDIxRjQxNUQ4NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oICov
OyB9OwotCQk0MTg5N0VEOTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTg5N0VEMzFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bi5jcHAgKi87IH07CiAJCTQxODk3RURBMUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTg5N0VENDFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5oICovOyB9OwotCQk0MUM4NTgxQTFGNTEzNkNBMDA2NUUwODUgLyogQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFDODU4MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcCAqLzsgfTsKIAkJNDFEMTI5REExRjNEMTAxODAwRDE1RTQ3IC8qIFdlYkNhY2hlU3Rv
cmFnZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUQxMjlEOTFGM0QxMDE0MDBEMTVFNDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIu
aCAqLzsgfTsKIAkJNDFEQzQ1OTYxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEQzQ1
OTQxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5oICovOyB9OwotCQk0MURD
NDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREM0NTk1MUUzRDZFMUUwMEIx
MUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwICovOyB9OwotCQk0MURDNDU5QjFFM0RCQjI4
MDBCMTFGNTEgLyogTGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREM0NTk5MUUzREJCMjQwMEIxMUY1MSAvKiBM
aWJXZWJSVENTb2NrZXRDbGllbnQuY3BwICovOyB9OwogCQk0MURDNDU5QzFFM0RCQjI4MDBCMTFG
NTEgLyogTGliV2ViUlRDU29ja2V0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MURDNDU5QTFFM0RCQjI0MDBCMTFGNTEgLyogTGliV2ViUlRD
U29ja2V0Q2xpZW50LmggKi87IH07CiAJCTQxREM0NTlFMUUzREJEQTEwMEIxMUY1MSAvKiBXZWJS
VENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFEQzQ1OUQxRTNEQkNGMDAwQjExRjUxIC8qIFdlYlJUQ1NvY2tldC5jcHAgKi87IH07CiAJ
CTQxREM0NTlGMUUzREJEQTUwMEIxMUY1MSAvKiBXZWJSVENTb2NrZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUYzMUUzQkZFN0YwMDFBRTY3
OCAvKiBXZWJSVENTb2NrZXQuaCAqLzsgfTsKIAkJNDFEQzQ1QTExRTNEQzUzRjAwQjExRjUxIC8q
IFdlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxREM0NUEwMUUzREM1M0MwMEIxMUY1MSAvKiBXZWJSVENSZXNvbHZlci5jcHAg
Ki87IH07CiAJCTQxRjEyQTlFMjA2OUJCNDQwMEZGMjZFOCAvKiBXZWJNRE5TUmVnaXN0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCN0VENkUy
MDY4MURDRjAwODdEODUzIC8qIFdlYk1ETlNSZWdpc3Rlci5jcHAgKi87IH07Ci0JCTQxRjEyQTlG
MjA2OUJCNEMwMEZGMjZFOCAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjdFRDZGMjA2OTY1OTAwMDg3RDg1
MyAvKiBOZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCAqLzsgfTsKIAkJNDFGQUJEMkExRjRERTAwMTAw
NkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBQkQyODFGNERERkRDMDA2QTZDOTcgLyogQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuaCAqLzsgfTsKIAkJNDFGQUY1RjUxRTNDMDY0OTAwMUFFNjc4
IC8qIFdlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUZBRjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAq
LzsgfTsKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVGNjFF
M0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKIAkJNDFGQUY1Rjkx
RTNDMTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY3MUUzQzBCNDcwMDFBRTY3OCAv
KiBMaWJXZWJSVENSZXNvbHZlci5jcHAgKi87IH07Ci0JCTQxRkJFODI2MjA2REY3RkEwMDBGMDc0
MSAvKiBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCRTgyNDIwNkRBNzlDMDAwRjA3NDEgLyog
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwICovOyB9OwogCQk0NjBGNDg4RjFGOTk2
RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYw
RjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OTAxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07Ci0JCTQ2MjEwN0Q4
MUYzOERCREIwMERENzgxMCAvKiBQaW5nTG9hZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xv
YWQuY3BwICovOyB9OwogCQk0NjNGRDQ4MDFFQjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVC
OTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgfTsKIAkJNDY2
QkMwM0IxRkEyNjZEQTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkJDMDM4
MUZBMjY2QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgKi87
IH07CiAJCTQ2NkJDMDNDMUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY2QkMwMzkxRkEyNjZDOTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmggKi87IH07CiAJCTQ2QTJCNjA4MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vz
c1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMz
REVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMz
REVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKLQkJ
NDZERjA2M0IxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYz
OTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCAqLzsg
fTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZE
RjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICov
OyB9OwogCQk0QTNDQzE4QTE5QjA2M0U3MDBEMTRBRUYgLyogVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEE0MTBGMzkxOUFGN0IwNDAwMkVCQUI1IC8qIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLzsgfTsKIAkJNEEzQ0MxOEIxOUIwNjQwRjAwRDE0
QUVGIC8qIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEYzQTE5QUY3QjA0MDAy
RUJBQjUgLyogVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCAqLzsgfTsK
QEAgLTExNDEsNyArMTEyNCw2IEBACiAJCTUxMkY1OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBXS1By
b3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEyRjU4RjQxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEzQTE2M0Mx
NjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzQTE2M0Ex
NjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwogCQk1MTNBMTYzRDE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTNBMTYzQjE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
LmggKi87IH07Ci0JCTUxM0ExNjRDMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTNBMTY0OTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwICovOyB9OwogCQk1MTNBMTY0RDE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxM0ExNjRBMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oICovOyB9OwogCQk1MTNFNDYyRDFBRDgzNzU2MDAxNjIzNEEgLyog
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNFNDYyQjFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggKi87IH07CiAJCTUxM0U0NjJFMUFEODM3NTYwMDE2
MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNFNDYyQzFBRDgzNzU2MDAxNjIzNEEg
LyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLm1tICovOyB9OwpAQCAtMTE3Miw4ICsx
MTU0LDYgQEAKIAkJNTE2MzE5OTQxNjI4OUE2MDAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUNDOTM0MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNjMxOTk1MTYyODlBNjMwMEUyMkYwMCAvKiBOZXR3b3Jr
UHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUFDQzkzNTE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdl
cy5oICovOyB9OwogCQk1MTZBNEE1RDEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkE0QTVCMTIwQTJD
Q0QwMEMwNUI3RiAvKiBBUElFcnJvci5oICovOyB9OwotCQk1MTc5NTU2NzE2Mjg3NkNCMDBGQTQz
QjYgLyogTmV0d29ya1Byb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUE4QTYxNTE2MjdGM0Y5MDAwRDkwRTkgLyogTmV0d29ya1Byb2Nl
c3NNYWMubW0gKi87IH07Ci0JCTUxNzk1NTY4MTYyODc2Q0YwMEZBNDNCNiAvKiBOZXR3b3JrUHJv
Y2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTBDQzdERjE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuY3BwICovOyB9OwogCQk1
MTc5NTU2QTE2Mjg3NkYzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDN0UwMTYxMzhFMjkwMEQwM0VE
MyAvKiBOZXR3b3JrUHJvY2Vzcy5oICovOyB9OwogCQk1MTc5NTU2RDE2Mjg3N0IxMDBGQTQzQjYg
LyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFQTE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAgKi87IH07CiAJCTUxNzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBDQzdFQjE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oICov
OyB9OwpAQCAtMTI3MCw3ICsxMjUwLDYgQEAKIAkJNTFGQUVDM0ExQjA2NTc2MzAwMDlDNEU3IC8q
IENoaWxkUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUZBRUMzNzFCMDY1NzMxMDAwOUM0RTcgLyogQ2hpbGRQcm9jZXNzTWVz
c2FnZXMuaCAqLzsgfTsKIAkJNTFGQUVDM0IxQjA2NTc2ODAwMDlDNEU3IC8qIENoaWxkUHJvY2Vz
c01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUZBRUMzNjFCMDY1NzMxMDAwOUM0RTcgLyogQ2hpbGRQcm9jZXNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTFGQjA4RkYxNjM5REUxQTAwRUMzMjRBIC8qIFdlYkxv
YWRlclN0cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUJGNjU2MTYzOTJGMTUwMDEzMkE3QSAvKiBXZWJMb2FkZXJTdHJhdGVneS5jcHAg
Ki87IH07Ci0JCTUxRkQxOEI1MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
RDE4QjMxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgKi87IH07
CiAJCTUxRkQxOEI2MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkQxOEI0MTY1
MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCAqLzsgfTsKIAkJNTI3MkIy
OEIxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjcyQjI4OTE0MDY5ODVEMDA5NkE1RDAgLyog
U3RhdGlzdGljc0RhdGEuaCAqLzsgfTsKIAkJNTI3MkQ0QzkxRTczNUYwOTAwRUI0MjkwIC8qIFdL
UHJvdGVjdGlvblNwYWNlTlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyNzJENEM3MUU3MzVGMDkwMEVCNDI5MCAvKiBXS1Byb3RlY3Rpb25TcGFjZU5T
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEy
ODAsMjcgKzEyNTksMTYgQEAKIAkJNTJENUExQjExQzU3NDk2MjAwREUzNEEzIC8qIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyRDVBMUFDMUM1NzQ5NEUwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0gKi87IH07CiAJCTUyRDVBMUI3MUM1NzRBMDIwMERFMzRBMyAvKiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTJENUExQjQxQzU3NDlGMjAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0gKi87IH07CiAJCTUyRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBOZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyog
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owot
CQk1MzAyNTgzQjFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgyRTFE
Q0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5jcHAgKi87IH07CiAJCTUz
MDI1ODNDMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgyRjFEQ0JCRDFE
MDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oICovOyB9OwotCQk1MzAyNTgzRDFE
Q0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgzMDFEQ0JCRDFEMDBEQTg5QzIg
LyogTmV0d29ya0NhcHR1cmVFdmVudC5jcHAgKi87IH07CiAJCTUzMDI1ODNFMURDQkJEMjIwMERB
ODlDMiAvKiBOZXR3b3JrQ2FwdHVyZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgzMTFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0Nh
cHR1cmVFdmVudC5oICovOyB9OwogCQk1MzAyNTgzRjFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29y
a0NhcHR1cmVMb2dnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzAyNTgzMjFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVMb2dnaW5n
LmggKi87IH07Ci0JCTUzMDI1ODQwMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZU1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTMwMjU4MzMxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgKi87
IH07CiAJCTUzMDI1ODQxMURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMDI1ODM0
MURDQkJEMUQwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaCAqLzsgfTsKLQkJNTMw
MjU4NDIxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwMjU4MzUxRENCQkQx
RDAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwICovOyB9OwogCQk1MzAyNTg0
MzFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZWNvcmRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwMjU4MzYxRENCQkQxRDAwREE4
OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVjb3JkZXIuaCAqLzsgfTsKLQkJNTMwMjU4NDQxRENCQkQy
MjAwREE4OUMyIC8qIE5ldHdvcmtDYXB0dXJlUmVwbGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwMjU4MzcxRENCQkQxRDAwREE4OUMyIC8q
IE5ldHdvcmtDYXB0dXJlUmVwbGF5ZXIuY3BwICovOyB9OwogCQk1MzAyNTg0NTFEQ0JCRDIyMDBE
QTg5QzIgLyogTmV0d29ya0NhcHR1cmVSZXBsYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwMjU4MzgxRENCQkQxRDAwREE4OUMyIC8qIE5ldHdv
cmtDYXB0dXJlUmVwbGF5ZXIuaCAqLzsgfTsKLQkJNTMwMjU4NDYxRENCQkQyMjAwREE4OUMyIC8q
IE5ldHdvcmtEYXRhVGFza1JlcGxheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzAyNTgzOTFEQ0JCRDFEMDBEQTg5QzIgLyogTmV0d29ya0RhdGFU
YXNrUmVwbGF5LmNwcCAqLzsgfTsKIAkJNTMwMjU4NDcxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdv
cmtEYXRhVGFza1JlcGxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTMwMjU4M0ExRENCQkQxRDAwREE4OUMyIC8qIE5ldHdvcmtEYXRhVGFza1JlcGxh
eS5oICovOyB9OwotCQk1MzE1ODc2QzIwNzZCNzYyMDA0QkY5RjMgLyogTmV0d29ya0FjdGl2aXR5
VHJhY2tlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTMxNTg3NkIyMDc2QjcxMzAwNEJGOUYzIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXJD
b2NvYS5tbSAqLzsgfTsKLQkJNTMyMTU5NTMxREJBRTcxODAwNTRBQTNDIC8qIE5ldHdvcmtTZXNz
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
MjE1OTUyMURCQUU2RkMwMDU0QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbi5jcHAgKi87IH07Ci0JCTUz
MjE1OTU0MURCQUU3MUQwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMyMTU5NTExREJBRTZGQzAwNTRB
QTNDIC8qIE5ldHdvcmtEYXRhVGFzay5jcHAgKi87IH07CiAJCTUzMjE1OTU1MURCQUU3MjkwMDU0
QUEzQyAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzIxNTk1MDFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya1Nl
c3Npb25Db2NvYS5oICovOyB9OwogCQk1MzIxNTk1NjFEQkFFNzJEMDA1NEFBM0MgLyogTmV0d29y
a0RhdGFUYXNrQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzMjE1OTRGMURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5o
ICovOyB9OwogCQk1MzVCQ0I5MjIwNjlDNDlDMDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1
QkNCOTAyMDY5QzQ5QzAwQ0NDRTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCAqLzsgfTsK
LQkJNTM3OURCNzIyMDdFOTQ3MDAwN0Q4QzMzIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGM0NBQTUy
MDZDNDQzRTAwODY0OTBFIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwICovOyB9OwotCQk1
M0JBNDdEMDFEQzJFRjVFMDA0REY0QUQgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NjFEQzJFRTQw
MDA5RDQ4Q0YgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgKi87IH07CiAJCTUzQkE0N0QxMURD
MkVGNUUwMDRERjRBRCAvKiBOZXR3b3JrRGF0YVRhc2tCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlFQjU0NzFEQzJFRTQwMDA5RDQ4Q0YgLyog
TmV0d29ya0RhdGFUYXNrQmxvYi5oICovOyB9OwogCQk1M0RFQTM2NjFEREU0MjMxMDBFODI2NDgg
LyoganNvbi5ocHAgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0RFQTM2NTFEREU0MjJFMDBFODI2NDggLyoganNvbi5ocHAgKi87IH07CiAJCTU3MEFCOEYz
MjBBRTNCRDcwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBBQjhGMjIwQUUzQkQ3MDBCOEJFODcgLyog
U2VjS2V5UHJveHlTdG9yZS5oICovOyB9OwpAQCAtMTMxNywyMiArMTI4NSwxNCBAQAogCQk1QzBC
MTc3ODFFN0M4ODBFMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBC
MTc3NDFFN0M4NzlDMDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCTVDMEIxNzc5MUU3Qzg4MjEwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJl
YW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMwQjE3NzYxRTdDODc5QzAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTVDMEIxNzdDMUU3Qzg4NTQwMEU5MTIzQyAvKiBX
ZWJTb2NrZXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMwQjE3N0ExRTdDODg0RjAwRTkxMjNDIC8qIFdlYlNvY2tldFN0cmVhbS5jcHAg
Ki87IH07Ci0JCTVDMEIxNzgxMUU3QzhDMjYwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEIx
NzdEMUU3Qzg4NjcwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtLmNwcCAqLzsgfTsKLQkJ
NUMxNDI2RUMxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MTQyNkUyMUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgKi87IH07CiAJCTVDMTQyNkVEMUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMxNDI2RTMxQzIzRjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCTVDMTQyNkVFMUMyM0Y4MDkwMEQ0MTE4MyAvKiBO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMTQyNkU0MUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQuaCAqLzsgfTsKLQkJNUMxNDI2RUYxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkU1MUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCTVDMTQyNkYwMUMyM0Y4MDkwMEQ0MTE4
MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RTYxQzIzRjgwNTAwRDQxMTgzIC8qIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggKi87IH07Ci0JCTVDMTQyNzAxMUMyM0Y4NEMw
MEQ0MTE4MyAvKiBEb3dubG9hZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzE0MjZGMzFDMjNGODQzMDBENDExODMgLyogRG93bmxvYWQuY3BwICov
OyB9OwogCQk1QzE0MjcwMjFDMjNGODRDMDBENDExODMgLyogRG93bmxvYWQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkY0MUMyM0Y4NDMwMEQ0
MTE4MyAvKiBEb3dubG9hZC5oICovOyB9OwogCQk1QzE0MjcwNTFDMjNGODRDMDBENDExODMgLyog
RG93bmxvYWRJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUMxNDI2RjcxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkSUQuaCAqLzsgfTsKLQkJNUMx
NDI3MDYxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZGODFDMjNGODQzMDBENDEx
ODMgLyogRG93bmxvYWRNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNUMxNDI3MDcxQzIzRjg0QzAwRDQx
MTgzIC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMxNDI2RjkxQzIzRjg0MzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdl
ci5oICovOyB9OwotCQk1QzE0MjcxMzFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRDb2NvYS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzA5
MUMyM0Y4NjkwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tICovOyB9OwogCQk1QzE0MjcxODFD
MjNGOEI3MDBENDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjcxNDFDMjNGOEIwMDBE
NDExODMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggKi87IH07Ci0JCTVDMTQyNzFE
MUMyM0Y4Q0YwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNzFCMUMy
M0Y4Q0MwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSAqLzsg
fTsKIAkJNUMxOUE1MjAxRkQwQjI5NTAwRUVBMzIzIC8qIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE5QTUx
RjFGRDBCMTQ3MDBFRUEzMjMgLyogVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCAqLzsgfTsKLQkJ
NUMyMENCOUQxQkIwRENGQTAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzIwQ0I5QjFCQjBEQ0Qy
MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5tbSAqLzsgfTsKIAkJNUMyMENCQTAxQkIx
RUNEODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzIwQ0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29y
a1Nlc3Npb24uaCAqLzsgfTsKIAkJNUMyNjk1ODUyMDA0MzIxMjAwNUM0MzlCIC8qIFdLT3BlblBh
bmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMjY5NTg0MjAwNDJGMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFt
ZXRlcnNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNUMyOThEQTAxQzNERjAyMTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOThEOUUxQzNE
RUYyOTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oICovOyB9OwpAQCAtMTM0MCw3ICsxMzAw
LDYgQEAKIAkJNUM2MkZERjkxRUZDMjcxQzAwQ0UwNzJFIC8qIFdLVVJMU2NoZW1lVGFza1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNjJG
REY4MUVGQzI2M0MwMENFMDcyRSAvKiBXS1VSTFNjaGVtZVRhc2tQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM2Q0U2RDExRjU5QkM3
QTAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzZDRTZEMDFGNTlCQzQ2MDAwN0M2Q0IgLyogUGFn
ZUNsaWVudEltcGxDb2NvYS5tbSAqLzsgfTsKIAkJNUM3NzA2NzQxRDExMzgzODAwMTI3MDBGIC8q
IFdlYlNvY2tldFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDNzcwNjczMUQxMTFEOEIwMDEyNzAwRiAvKiBXZWJTb2NrZXRQcm92aWRl
ci5jcHAgKi87IH07Ci0JCTVDODVDNzg4MUMzRjIzQ0UwMDYxQTRGQSAvKiBQZW5kaW5nRG93bmxv
YWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4
NUM3ODYxQzNGMjNDNTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgKi87IH07CiAJCTVD
OEREMzdFMUZFNDUwMjAwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4REQzN0QxRkU0NTAxMTAw
RjJBNTU2IC8qIEFQSVdlYnNpdGVQb2xpY2llcy5jcHAgKi87IH07CiAJCTVDOEREMzgwMUZFNDUy
MTYwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOEREMzdGMUZFNDUxOTIwMEYyQTU1NiAvKiBX
ZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCAqLzsgfTsKIAkJNUM5RTU2ODIxREY3RjFBQjAwQzlFRTMz
IC8qIFdLV2Vic2l0ZVBvbGljaWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDOUU1NjgwMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xp
Y2llcy5jcHAgKi87IH07CkBAIC0xMzUwLDcgKzEzMDksNiBAQAogCQk1Q0IyMzc4QjFERjBERTUz
MDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMjM3OEExREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dl
YnNpdGVQb2xpY2llcy5tbSAqLzsgfTsKIAkJNUNCMjM3OEMxREYwREU2RTAwMTE3QUEzIC8qIF9X
S1dlYnNpdGVQb2xpY2llcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNCMjM3ODkxREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQjIz
NzhFMURGMEUwRDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMjM3OEQxREYwRTBD
MjAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggKi87IH07Ci0JCTVDQkM5
QjhEMUM2NTI3OUMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM5QjhCMUM2NTI1NzMwMEE4
RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLzsgfTsKIAkJNUNCQzlCOEUxQzY1MkNB
MDAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtE
YXRhVGFzay5oICovOyB9OwogCQk1Q0QyODY1MTFFNzIzNTk5MDA5NEZEQzggLyogV0tDb250ZW50
UnVsZUxpc3RTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNEMjg2NEQxRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTVDRDI4
NjUyMUU3MjM1QTYwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRDI4NjRCMUU3MjJGNDQwMDk0RkRD
OCAvKiBXS0NvbnRlbnRSdWxlTGlzdC5tbSAqLzsgfTsKQEAgLTEzNjEsNyArMTMxOSw2IEBACiAJ
CTVDRDI4NjU3MUU3MjM1QzkwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRDI4
NjRGMUU3MjJGNDQwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlSW50ZXJuYWwuaCAq
LzsgfTsKIAkJNUNEMjg2NTgxRTcyMzVEMTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3Rv
cmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0QyODY1MDFFNzIyRjQ0MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZVByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
Q0U4NUIyMDFDODhFNjRCMDA3MEJGQ0UgLyogUGluZ0xvYWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQ
aW5nTG9hZC5oICovOyB9OwotCQk1Q0ZFQ0IwNDFFMUVEMUNDMDBGODg1MDQgLyogTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDRkVDQjAzMUUxRUQxQzgwMEY4ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIuY3BwICovOyB9OwogCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAv
KiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk2
MzEwOEY5NjFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTQxRjk2NzE5
QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2MzEwOEY5NzFGOTY3MTlDMDBBMERCODQg
LyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk1MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tICovOyB9OwpAQCAtMTQ1OCw3ICsxNDE1LDYgQEAKIAkJN0M5RDE1Mzcx
ODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5RDE1MzYxODQ1ODRE
QTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovOyB9OwogCQk3
Q0EyNTRFQjE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBMjU0
RUExODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0EzNzkz
RTFBQzM3OEIzMDA3OURDMzcgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTM3OTNE
MUFDMzc4QjMwMDc5REMzNyAvKiBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdDQUI5
MzdBMUQ0NTlFNTEwMDcwRjU0MCAvKiBOZXR3b3JrQ2FjaGVDb2RlcnNDb2NvYS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0FCOTM3OTFENDU5RTRC
MDA3MEY1NDAgLyogTmV0d29ya0NhY2hlQ29kZXJzQ29jb2EuY3BwICovOyB9OwogCQk3Q0IxMDBG
MTFGQTM4NThBMDAxNzI5RUUgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjEwMEVFMUZBMkQ3NEEwMDE3MjlF
RSAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwICovOyB9OwogCQk3Q0IxMDBGMjFGQTM4NThFMDAx
NzI5RUUgLyogV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NERTczQTMxRjlEQUI2NTAwMzkwMzEyIC8qIFdl
YlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCAqLzsgfTsKIAkJN0NCMTAwRjMxRkEzODU4RTAwMTcy
OUVFIC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NCMTAwRUYxRkEyRDc0QjAwMTcyOUVFIC8qIFdlYlByZWZlcmVu
Y2VzS2V5cy5oICovOyB9OwpAQCAtMTUwNCwxOCArMTQ2MCwxNCBAQAogCQk3Q0Y0N0ZGQjE3Mjc1
QzU3MDA4QUNCOTEgLyogUGFnZUJhbm5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0NGNDdGRjkxNzI3NUM1NzAwOEFDQjkxIC8qIFBhZ2VCYW5uZXIu
aCAqLzsgfTsKIAkJN0NGNDdGRkUxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5l
ck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
RjQ3RkZDMTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0gKi87IH07
CiAJCTdDRjQ3RkZGMTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRjQ3RkZEMTcy
NzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3RUM0RjBGQjE4RTRBQ0JCMDA4MDU2
QUYgLyogTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdFQzRGMEY5MThFNEE5NDUwMDgwNTZBRiAvKiBOZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tICovOyB9OwogCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vz
c1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGll
bnQuaCAqLzsgfTsKIAkJODMxMDQyOEIxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1
YnJlc291cmNlc0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzEwNDI4OTFCRDZCNjZGMDBBNzE1RTQgLyogTmV0d29ya0NhY2hlU3VicmVzb3Vy
Y2VzRW50cnkuaCAqLzsgfTsKLQkJODMxMDQyOEMxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMTA0MjhBMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVT
dWJyZXNvdXJjZXNFbnRyeS5jcHAgKi87IH07CiAJCTgzMTNGN0VDMUY3REFFMDgwMEI5NDRFQiAv
KiBTaGFyZWRTdHJpbmdIYXNoU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMTNGN0U5MUY3REFFMDMwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdI
YXNoU3RvcmUuaCAqLzsgfTsKIAkJODMxM0Y3RUUxRjdEQUUwODAwQjk0NEVCIC8qIFNoYXJlZFN0
cmluZ0hhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMxM0Y3RTcxRjdEQUUwMzAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZS5o
ICovOyB9OwogCQk4MzFFRUJCRDFCRDg1QzQzMDBCQjY0QzMgLyogTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzFFRUJCQjFCRDg1QzQzMDBCQjY0QzMgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmggKi87IH07Ci0JCTgzMUVFQkJFMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMxRUVCQkMxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAgKi87IH07CiAJCTgzMjk5NEE3MUY5NkY1MDIwMEFDNTdCMSAvKiBXZWJTV09yaWdp
blN0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMjk5NEE1MUY5NkY0RkQwMEFDNTdCMSAvKiBXZWJTV09yaWdpblN0b3JlLmNwcCAqLzsgfTsK
IAkJODMyOTk0QTgxRjk2RjUwMjAwQUM1N0IxIC8qIFdlYlNXT3JpZ2luU3RvcmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjk5NEE2MUY5NkY0RkUw
MEFDNTdCMSAvKiBXZWJTV09yaWdpblN0b3JlLmggKi87IH07CiAJCTgzMkFFMjUyMUJFMkU4Q0Qw
MEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJBRTI1MDFCRTJFOENEMDBG
QUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oICovOyB9OwotCQk4
MzJBRTI1MzFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzJBRTI1MTFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5jcHAgKi87IH07CiAJCTgzMkVEMThCMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMkVEMTg5MUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCAqLzsgfTsKIAkJODMyRUQxOEMxRTJGRTE1NzAwNkJBNjRB
IC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQ
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi87IH07CiAJCTgzNEIyNTBGMUE4MzFB
OEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyog
TmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oICovOyB9OwpAQCAtMTUzMSwxNSArMTQ4MywxMiBAQAog
CQk4Mzg5MUI2QzFBNjhDMzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzODkxQjZBMUE2
OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovOyB9OwogCQk4Mzg5
MUI2RDFBNjhDMzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzg5MUI2QjFBNjhDMzBC
MDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubW0gKi87IH07CiAJCTgzOTE0OTY1
MUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOTE0OTYzMUJFQTgzODUwMEQyRDk1
MyAvKiBOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCAqLzsgfTsKLQkJODM5OTAyMDIxQkU5QTAyQjAw
MEYzNjUzIC8qIE5ldHdvcmtMb2FkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzOTkwMUZGMUJFOUEwMUIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5j
cHAgKi87IH07CiAJCTgzOTkwMjAzMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5OTAxRkUxQkU5
QTAxQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggKi87IH07CiAJCTgzOUEyRjMxMUUyMDY3NDUw
MDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzlBMkYyRjFFMjA2NzM5
MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuY3BwICovOyB9
OwogCQk4MzlBMkYzMjFFMjA2NzQ1MDAzOTA1N0UgLyogSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NV
c2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzOUEyRjMwMUUyMDY3MzkwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlci5oICovOyB9OwotCQk4M0EwRUQzNDFGNzQ3Q0NEMDAzMjk5RUIgLyogUHJlY29u
bmVjdFRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNBMEVEMzMxRjc0N0NDNzAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmNwcCAqLzsgfTsK
IAkJODNBMEVEMzUxRjc0N0NDRjAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0EwRUQzMjFGNzQ3Q0M2MDAz
Mjk5RUIgLyogUHJlY29ubmVjdFRhc2suaCAqLzsgfTsKIAkJODNCM0NCMEYyMEUyQUFGRTAwNDQx
RTlCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzY4MURDQjIwRTI5MDRCMDBDMjQ5
Q0QgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCAqLzsgfTsKIAkJODNC
M0NCMTAyMEUyQUIwMTAwNDQxRTlCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2ODFE
Q0EyMEUyOTA0QTAwQzI0OUNEIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
ICovOyB9OwotCQk4M0JEQ0NCOTFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
M0JEQ0NCODFBQzVGREI2MDAzRjY0NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgKi87
IH07CiAJCTgzRDQ1NEQ3MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNENDU0RDYxQkU5
RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggKi87IH07CiAJCTgzRUU1NzVCMURC
N0Q2MTEwMEM3NEM1MCAvKiBXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0VFNTc1OTFEQjdENjA2MDBD
NzRDNTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuY3BwICovOyB9OwogCQk4M0VFNTc1
QzFEQjdENjExMDBDNzRDNTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRUU1NzVBMURCN0Q2MDYw
MEM3NEM1MCAvKiBXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oICovOyB9OwpAQCAtMTYyOCw5
ICsxNTc3LDcgQEAKIAkJQTEwNDZFQTIyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDQ2RUEwMjA3
OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcubW0gKi87IH07CiAJCUExMDVEMEQxMjEyNzM0QjIw
MDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA1RDBEMDIxMjczNEIxMDAzNEY2QzcgLyogTmV0d29y
a0Jsb2JSZWdpc3RyeS5oICovOyB9OwogCQlBMTE0NTVBQzIxMUZDRkNBMDBDQTkzNUIgLyogTmV0
d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTExNDU1QUEyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1p
dHlBc3NlcnRpb24uaCAqLzsgfTsKLQkJQTExNDU1QUQyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdv
cmtQcm94aW1pdHlBc3NlcnRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTE0NTVBQjIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0
eUFzc2VydGlvbi5tbSAqLzsgfTsKIAkJQTExNDU1QjAyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdv
cmtQcm94aW1pdHlNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTE0NTVBRTIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1h
bmFnZXIuaCAqLzsgfTsKLQkJQTExNDU1QjEyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94
aW1pdHlNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTExNDU1QUYyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
Lm1tICovOyB9OwogCQlBMTE1REM3MTE5MUQ4MkQ3MDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50
Rm9ybWF0dGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExNURDNkQxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5t
bSAqLzsgfTsKIAkJQTExNURDNzIxOTFEODJEQTAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZv
cm1hdHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTExNURDNkUxOTFEODJBQjAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMThBOUVG
MTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUVEMTkwN0FENkYwMEY3Qzky
QiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCAqLzsgfTsKQEAgLTE4OTAsNyArMTgzNyw2IEBA
CiAJCUJDODE0N0Q1MTJGNjZEMzEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
ODE0N0QzMTJGNjZEMzEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
aCAqLzsgfTsKIAkJQkM4MTQ3RDYxMkY2NkQzMTAwN0IyQzMyIC8qIEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzgxNDdENDEyRjY2RDMxMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcCAqLzsgfTsKIAkJQkM4MjgzOTkxNkI0OERDMDAwQTI3OEZFIC8qIFdlYkNv
bnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDODI4Mzk4MTZCNDhEQzAwMEEyNzhGRSAvKiBXZWJDb250ZW50U2Vy
dmljZUVudHJ5UG9pbnQubW0gKi87IH07Ci0JCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBO
ZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzgyODNBODE2QjRCRDkxMDBBMjc4RkUgLyogTmV0d29ya1NlcnZp
Y2VFbnRyeVBvaW50Lm1tICovOyB9OwogCQlCQzgyODNEQTE2QjREQjkzMDBBMjc4RkUgLyogV2Vi
S2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDhEQzJFRjVCMDQ4NkE2OTQwMDk4QjIxNiAvKiBXZWJLaXQuZnJhbWV3b3JrICovOyB9
OwogCQlCQzgyODQ0RDE2QjUwODFDMDBBMjc4RkUgLyogUGx1Z2luU2VydmljZUVudHJ5UG9pbnQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyODNF
RjE2QjRGOEUyMDBBMjc4RkUgLyogUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW0gKi87IH07CiAJ
CUJDODI4NDRGMTZCNTA4OTgwMEEyNzhGRSAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOERDMkVGNUIwNDg2QTY5NDAw
OThCMjE2IC8qIFdlYktpdC5mcmFtZXdvcmsgKi87IH07CkBAIC0yMTE2LDcgKzIwNjIsNiBAQAog
CQlFMTE1QzcxNDE5MEY4OUU0MDBFQ0M1MTYgLyogU3RvcmFnZVByb2Nlc3NJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFRjM5QzE5MEY3OTFD
MDA3MzE2NTggLyogU3RvcmFnZVByb2Nlc3NJT1MubW0gKi87IH07CiAJCUUxMTVDNzE2MTkwRjhB
MjUwMEVDQzUxNiAvKiBjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2Uuc2IgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMTVDNzE1MTkwRjhBMjUwMEVDQzUx
NiAvKiBjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2Uuc2IgKi87IH07CiAJCUUxMUQzNUFFMTZCNjNE
MUIwMDZEMjNENyAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NjdFMzcxNTBBQjVFMjAwQzczMTY5IC8q
IGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiICovOyB9OwotCQlFMTRBOTU0OTE2RTAxNkE0MDA2OERF
ODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE0QTk1NDcxNkUwMTZBNDAwNjhERTgy
IC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCAqLzsgfTsKIAkJRTE0QTk1
NEExNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRBOTU0ODE2
RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLzsg
fTsKIAkJRTE1MTNDNjYxNjZFQUJCMjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTEzQzY0MTY2
RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCUUxNTEzQzY3
MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MTNDNjUxNjZFQUJCMjAwMTQ5RkNCIC8q
IENoaWxkUHJvY2Vzc1Byb3h5LmggKi87IH07CkBAIC0yMTI2LDcgKzIwNzEsNiBAQAogCQlFMTcw
ODc2QjE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MDg3NjkxNkQ2Q0E2OTAwRjk5
MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCAqLzsgfTsKIAkJRTE3MDg3NkMxNkQ2Q0E2OTAw
Rjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcwODc2QTE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lz
dHJ5UHJveHkuaCAqLzsgfTsKIAkJRTE3OTA4OEYxNjlCQUE2QTAwNjkwNEM3IC8qIFNlY0l0ZW1T
aGltLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThF
Njk0ODE2OUI3N0M4MDA5QjY2NzAgLyogU2VjSXRlbVNoaW0uaCAqLzsgfTsKLQkJRTE3OThDNzkx
NkU2ODE4ODAwMjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3OThDNzcxNkU2ODE4ODAwMjQwMTM5
IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwICovOyB9OwogCQlFMTc5RkQ5QzEzNEQzODA2MDAx
NUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzlGRDlCMTM0RDM4MDYwMDE1Qjg4MyAvKiBBcmd1bWVudENv
ZGVyc01hYy5oICovOyB9OwogCQlFMTdBRTJDMzE2QjlDNjNBMDAxQzQyRjEgLyogY29tLmFwcGxl
LldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTE3QUUyQzIxNkI5QzYzQTAwMUM0MkYxIC8qIGNvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IgKi87IH07CiAJCUUxOEU2OTBCMTY5QjU2M0YwMDlCNjY3
MCAvKiBTZWNJdGVtU2hpbVByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxOEU2OTA5MTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVBy
b3h5LmNwcCAqLzsgfTsKQEAgLTIxMzksMzAgKzIwODMsMTkgQEAKIAkJRTFBRUEyMkYxNDY4N0JE
QjAwODA0NTY5IC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBRUEyMkQxNDY4N0JEQjAwODA0NTY5
IC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oICovOyB9OwogCQlFMUFFQTIzMDE0Njg3
QkRCMDA4MDQ1NjkgLyogV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBRUEyMkUxNDY4N0JEQjAwODA0
NTY5IC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSAqLzsgfTsKIAkJRTFCNzg0NzEx
NjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODQ3MDE2M0YyNDY5MDAwN0I2
OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKLQkJRTFCNzg0NzMxNjNGMjUz
RTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8q
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICovOyB9OwogCQlFMUNDMUI5MDEyRDdFQURGMDA2
MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi87IH07
CiAJCUUxRDI2QTUzMTc1OTY0RDkwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRDI2QTRDMTc1
OTYzNEUwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgKi87IH07CiAJCUUxRTU1MkM1
MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1NTJDMzE2QUUw
NjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovOyB9Owog
CQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVF
NTNEQzExRjhDRjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmgg
Ki87IH07CiAJCUUxRUU1M0U3MTFGOENGRkIwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFFRTUzRTYxMUY4Q0ZGQjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAgKi87IH07CiAJCUU0MTNGNTlEMUFDMUFEQzQwMDM0NTM2MCAvKiBOZXR3b3Jr
Q2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQxM0Y1OUIxQUMxQURCNjAwMzQ1MzYwIC8qIE5ldHdvcmtDYWNoZUVudHJ5LmggKi87IH07
Ci0JCUU0MTNGNTlGMUFDMUFGOUQwMDM0NTM2MCAvKiBOZXR3b3JrQ2FjaGVFbnRyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDEzRjU5RTFBQzFB
RjlEMDAzNDUzNjAgLyogTmV0d29ya0NhY2hlRW50cnkuY3BwICovOyB9OwotCQlFNDJFMDYwRjFB
QTc1MjM0MDBCMTE2OTkgLyogTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDJFMDYwRDFBQTc1MEU1MDBC
MTE2OTkgLyogTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0gKi87IH07CiAJCUU0MkUwNjEw
MUFBNzUyM0IwMEIxMTY5OSAvKiBOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MkUwNjBCMUFBNzQ0MEQwMEIxMTY5
OSAvKiBOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCAqLzsgfTsKIAkJRTQyRTA2MTIxQUE3NUFCRDAw
QjExNjk5IC8qIE5ldHdvcmtDYWNoZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0MkUwNjExMUFBNzVBQkQwMEIxMTY5OSAvKiBOZXR3b3JrQ2Fj
aGVEYXRhLmggKi87IH07Ci0JCUU0MkUwNjE0MUFBNzVCNzAwMEIxMTY5OSAvKiBOZXR3b3JrQ2Fj
aGVEYXRhQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDJFMDYxMzFBQTc1QjcwMDBCMTE2OTkgLyogTmV0d29ya0NhY2hlRGF0YUNvY29hLm1t
ICovOyB9OwotCQlFNDQzNkVDQTFBMEQwM0ZBMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDM2RUJFMUEw
Q0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGUuY3BwICovOyB9OwogCQlFNDQzNkVDQzFBMEQw
NDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQzNkVCRjFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0Nh
Y2hlLmggKi87IH07Ci0JCUU0NDM2RUNEMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVL
ZXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0
MzZFQzAxQTBDRkRCMjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZUtleS5jcHAgKi87IH07CiAJCUU0
NDM2RUNFMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDM2RUMxMUEwQ0ZEQjIwMEVBRDIw
NCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCAqLzsgfTsKIAkJRTQ0MzZFQ0YxQTBEMDQwQjAwRUFEMjA0
IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0NDM2RUMyMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVT
dG9yYWdlLmggKi87IH07Ci0JCUU0NDM2RUQwMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0NDM2RUMzMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCAq
LzsgfTsKLQkJRTQ2OTdDQ0QxQjI1RUI4RjAwMUIwQTZDIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0
ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2
OTdDQ0MxQjI1RUI4RjAwMUIwQTZDIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwICovOyB9
OwotCQlFNDdEMUU5ODFCMDY0OUZCMDAyNjc2QTggLyogTmV0d29ya0NhY2hlRGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdEMUU5NjFCMDYy
QjY2MDAyNjc2QTggLyogTmV0d29ya0NhY2hlRGF0YS5jcHAgKi87IH07Ci0JCUU0ODlEMjhCMUEw
QTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4OUQyODQxQTBBMkRCODAwNzhDMDZBIC8q
IE5ldHdvcmtDYWNoZUNvZGVycy5jcHAgKi87IH07CiAJCUU0ODlEMjhDMUEwQTJEQjgwMDc4QzA2
QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0ODlEMjg1MUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVD
b2RlcnMuaCAqLzsgfTsKIAkJRTQ5RDQwRDcxQUQzRkIxNzAwNjZCN0I5IC8qIE5ldHdvcmtDYWNo
ZUJsb2JTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDlENDBENjFBRDNGQjE3MDA2NkI3QjkgLyogTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2Uu
aCAqLzsgfTsKLQkJRTQ5RDQwRDkxQUQzRkIyMTAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JT
dG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0OUQ0MEQ4MUFEM0ZCMjEwMDY2QjdCOSAvKiBOZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAg
Ki87IH07CiAJCUU0RTg2NDkyMUIxNjc1MDEwMEM4MkY0MCAvKiBWZXJzaW9uQ2hlY2tzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFODY0OEYxQjE2
NzNGQjAwQzgyRjQwIC8qIFZlcnNpb25DaGVja3MubW0gKi87IH07CiAJCUU0RTg2NDkzMUIxNjc1
MDcwMEM4MkY0MCAvKiBWZXJzaW9uQ2hlY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU4NjQ4RTFCMTY3M0ZCMDBDODJGNDAgLyogVmVyc2lvbkNo
ZWNrcy5oICovOyB9OwogCQlFNTJDRjU1MjIwQTM1QzNBMDBEQURBMjcgLyogV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNTJDRjU1MDIwQTM1QzNBMDBEQURBMjcgLyogV2ViRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyLmggKi87IH07CkBAIC0yMTk1LDcgKzIxMjgsNiBAQAogCQlGNjExM0UyODEyNkNFMTlC
MDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYxMTNFMjYxMjZDRTE5QjAwNTdEMEE3IC8q
IFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCAqLzsgfTsKIAkJRjYxMTNFMjkxMjZDRTE5QjAw
NTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjExM0UyNzEyNkNFMTlCMDA1N0QwQTcgLyogV0tV
c2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGNjM0NDQ1NjEyQTg4NUM4MDAwNjEyRDggLyogQVBJU2VjdXJpdHlP
cmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2
MzQ0NDU1MTJBODg1QzgwMDA2MTJEOCAvKiBBUElTZWN1cml0eU9yaWdpbi5oICovOyB9OwotCQlG
NkE5MDgxMzEzM0MyMDUxMDA4MkMzRjQgLyogV2ViQ29va2llTWFuYWdlck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2QTkwODExMTMzQzFGM0Qw
MDgyQzNGNCAvKiBXZWJDb29raWVNYW5hZ2VyTWFjLm1tICovOyB9OwogCQlGNkQ2MzJCQzEzM0Qx
OTgyMDA3NDNENzcgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZENjMyQkExMzNEMTgxQjAwNzQzRDc3
IC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1hYy5tbSAqLzsgfTsKIAkJRkVEM0MxREMxQjQ0N0VB
QzAwRTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEM0MxREExQjQ0N0FFODAwRTBF
QjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tICovOyB9OwogCQlGRURCRENE
NjFFNjhEMjAwMDBBNTlGOEYgLyogV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRURCRENENDFFNjhEMTlDMDBBNTlGOEYgLyogV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlz
cGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0xMTIxMCwyMCArMTExNDIsMTMg
QEAKIAkJCQk5OTBEMjhCQzFDNjUzOURBMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGll
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NkEyQjYwODFFNTY3NkE2MDBDM0RFREEgLyogQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxNzA4NzZCMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk0MTg5N0VENzFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxQzg1ODFBMUY1MTM2Q0EwMDY1RTA4NSAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTM1RkJEMTFG
NEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxODk3RUQ5MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUw
RiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxRkFFQzNCMUIwNjU3NjgwMDA5QzRFNyAvKiBDaGlsZFByb2Nlc3NN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1MTNDNjYxNjZFQUJCMjAw
MTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI4NzhC
NjE2MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLywK
IAkJCQk4Mzg5MUI2RDFBNjhDMzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTgxNzM2MzIwNTg0NEE5MDBERkRBNjUgLyogRGlzcGxh
eUxpbmsuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMxNDI3MDExQzIzRjg0QzAwRDQxMTgzIC8q
IERvd25sb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREY2MzEyMThFMEI3QzgwMDNBM0Uy
QSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTVDMTQyNzEzMUMyM0Y4
OUUwMEQ0MTE4MyAvKiBEb3dubG9hZENvY29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMxNDI3
MDYxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2FkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUQyNUU5NTE2N0FCMDgxMDBFQTlCQ0QgLyogRG93bmxvYWRQcm94eU1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93
bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTExMjczLDkg
KzExMTk4LDcgQEAKIAkJCQkxQUU0OTg3OTExRkY3RkFBMDA0OEI0NjQgLyogSlNOUE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBDMzY1RTE4QzExMEE1MDBGNjA3RDcgLyogTGF5ZXJS
ZXByZXNlbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRkRFNjQ1MTk1MTBCNTUwMEM0
OEZGQSAvKiBMZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTVDRkVD
QjA0MUUxRUQxQ0MwMEY4ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0E4MjFGNEUxRTJGNjdBODAwNjA0NTc3IC8qIExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTVDMTQyNzFEMUMy
M0Y4Q0YwMEQ0MTE4MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E4
MjFGNEExRTJGNjVFOTAwNjA0NTc3IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTdDMTY0QjkxNUYwMDRCQzBDNiAvKiBMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTExMjgzLDcgKzExMjA2LDYgQEAKIAkJCQk0MTMwNzVCMzFERTg1RjU4MDAzOUVD
NjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGQUY1Rjkx
RTNDMTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxMzA3NUFFMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDFEQzQ1OUIxRTNEQkIyODAwQjExRjUxIC8qIExpYldlYlJUQ1NvY2tl
dENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMwNzVCMTFERTg1RjU4MDAzOUVDNjkg
LyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFEOEJB
MTE3MzFBMzYzMDAxNDFEQTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE4QzcyOEMxNzM4NDc3QzAwMEE2NTU0IC8qIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTExMjk0LDcwICsxMTIxNiwxOCBAQAogCQkJ
CTFBNkZCRDI5MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2FwZVBsdWdpbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUU1QjdGQjExRTdBRUQyMDBCQTY3NjcgLyogTmV0c2NhcGVQbHVnaW5NYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUE1ODg5MzExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTM3OURCNzIyMDdFOTQ3MDAw
N0Q4QzMzIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NTMxNTg3NkMyMDc2Qjc2MjAwNEJGOUYzIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXJDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAotCQkJCUUxNzk4Qzc5MTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUU0NDM2RUNBMUEwRDAzRkEwMEVB
RDIwNCAvKiBOZXR3b3JrQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTQ5RDQwRDkxQUQz
RkIyMTAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUU0ODlEMjhCMUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0NBQjkzN0ExRDQ1OUU1MTAwNzBGNTQwIC8qIE5ldHdvcmtD
YWNoZUNvZGVyc0NvY29hLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUU0N0QxRTk4MUIwNjQ5RkIw
MDI2NzZBOCAvKiBOZXR3b3JrQ2FjaGVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUU0MkUw
NjE0MUFBNzVCNzAwMEIxMTY5OSAvKiBOZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0gaW4gU291cmNl
cyAqLywKLQkJCQlFNDEzRjU5RjFBQzFBRjlEMDAzNDUzNjAgLyogTmV0d29ya0NhY2hlRW50cnku
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTQ2OTdDQ0QxQjI1RUI4RjAwMUIwQTZDIC8qIE5ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTQyRTA2MEYxQUE3NTIz
NDAwQjExNjk5IC8qIE5ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJRTQ0MzZFQ0QxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZUtleS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk4MzFFRUJCRTFCRDg1QzQzMDBCQjY0QzMgLyogTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzMkFFMjUzMUJFMkU4Q0Qw
MEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTgzQkRDQ0I5MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0
aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUU0NDM2RUQwMUEwRDA0MEIwMEVBRDIwNCAv
KiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzMTA0MjhDMUJE
NkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk1MzAyNTgzRDFEQ0JCRDIyMDBEQTg5QzIgLyogTmV0d29ya0NhcHR1cmVF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MzAyNTg0MDFEQ0JCRDIyMDBEQTg5QzIgLyog
TmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzMDI1ODQyMURD
QkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUzMDI1ODQ0MURDQkJEMjIwMERBODlDMiAvKiBOZXR3b3JrQ2FwdHVyZVJlcGxheWVy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzMDI1ODNCMURDQkJEMjIwMERBODlDMiAvKiBOZXR3
b3JrQ2FwdHVyZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxM0ExNjRDMTYzMEE5
QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MUREOUYyODE2MzY3REEyMDAxNTc4RTkgLyogTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFGQkU4
MjYyMDZERjdGQTAwMEYwNzQxIC8qIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUyRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBOZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk0NkRGMDYzQjFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzMjE1OTU0MURCQUU3MUQwMDU0QUEzQyAvKiBOZXR3
b3JrRGF0YVRhc2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTNCQTQ3RDAxREMyRUY1RTAwNERG
NEFEIC8qIE5ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNCQzlC
OEQxQzY1Mjc5QzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTMwMjU4NDYxRENCQkQyMjAwREE4OUMyIC8qIE5ldHdvcmtEYXRhVGFza1JlcGxh
eS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4Mzk5MDIwMjFCRTlBMDJCMDAwRjM2NTMgLyogTmV0
d29ya0xvYWQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDEwM0ZCQTUyMDYxQzhGRTAwQzJFQUY4
IC8qIE5ldHdvcmtMb2FkQ2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MUYxMkE5RjIw
NjlCQjRDMDBGRjI2RTggLyogTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4M0YgLyogTmV0d29ya01ETlNSZWdpc3Rlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTc5NTU2ODE2Mjg3NkNGMDBGQTQz
QjYgLyogTmV0d29ya1Byb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0VDNEYwRkIxOEU0
QUNCQjAwODA1NkFGIC8qIE5ldHdvcmtQcm9jZXNzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1MTgzRERFQzE2MzBCREZDMDA4QkU1QzcgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NUMxNDI2RUMxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTJEQTk0NEJEMTg4NTExRTcwMEVEODZEQiAvKiBO
ZXR3b3JrUHJvY2Vzc0lPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxNzk1NTY3MTYyODc2Q0Iw
MEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNjMx
OTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlFMTRBOTU0OTE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1By
b2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3OTU1NkQx
NjI4NzdCMTAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTEzQTE2M0MxNjMwODhGNjAwNUQ3RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTExNDU1QUQyMTFGQ0ZDQTAwQ0E5
MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlB
MTE0NTVCMTIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0gaW4g
U291cmNlcyAqLywKLQkJCQk1MUZEMThCNTE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTI1NTFBMTcwMTE4MTkwMDNEN0FE
QiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNUMxNDI2RUYxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2
NTQzMTg1MDBGMzI4MUUgLyogTmV0d29ya1JUQ01vbml0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUg
LyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUx
MTY1NDMxODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2Vy
dmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MzIxNTk1MzFEQkFFNzE4MDA1
NEFBM0MgLyogTmV0d29ya1Nlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUMyMENCOUQx
QkIwRENGQTAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLywK
LQkJCQk1QzBCMTc4MTFFN0M4QzI2MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1QzBCMTc3ODFFN0M4ODBFMDBFOTEyM0MgLyogTmV0d29ya1Nv
Y2tldFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTMxMjYx
RTE0OEZGODJDMDBCQTJBMzkgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJFQzUwMTQ4OTk4MDUwMDgxMEQ3MSAvKiBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTExMzc2LDkgKzExMjQ2LDcgQEAKIAkJCQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyog
UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENDI5QkZE
MTcyMUUyQzcwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQyQURGMDkxNjM2MkRENTAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNUM4NUM3ODgxQzNGMjNDRTAwNjFBNEZBIC8qIFBl
bmRpbmdEb3dubG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzJFRDE4QjFFMkZFMTU3MDA2
QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk0NjIxMDdEODFGMzhEQkRCMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY1RTIwMDMxOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREEwNDlCMzE4MENDQ0QzMDBBQUZBOUUg
LyogUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEODcxMDE2
MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gaW4gU291
cmNlcyAqLywKQEAgLTExNDEyLDcgKzExMjgwLDYgQEAKIAkJCQkxQThFRkE3MDEyNTJCODQxMDBG
NzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM4Mjg0NEQxNkI1MDgxQzAwQTI3OEZFIC8qIFBsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2RkI3QUUxMUU2NEI2ODAwREIxMzcxIC8qIFBsdWdpblZp
ZXcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODNBMEVEMzQxRjc0N0NDRDAwMzI5OUVCIC8qIFBy
ZWNvbm5lY3RUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3NzE2QTVBMTk1QjkxMDUwMEVF
OEIxQiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2Rjk1MzY0
MThGRjU4M0MwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFFMTE3RjYxMURCQjMwOTAwOTgxNjE1IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTExNDI2LDcgKzExMjkzLDYgQEAKIAkJCQkxQUEzRDc1QjE2NTFCNDRG
MDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBG
MEMzNjU4MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGMjY0OUYxQTFGRjlDNjAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJl
ZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5tbSBpbiBTb3VyY2VzICovLAotCQkJCUUxQjc4NDcz
MTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNTcwNEZCMUJFMTc1MTEwMDg3NEFGMSAvKiBSZW1vdGVPYmplY3RJbnZvY2F0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMTMzN0YxODU5MEFFNDAwRjNFQzA1IC8qIFJl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDMTMzODUxODU5MEM0
NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMTE2ODksOCArMTE1NTUsNiBAQAogCQkJCUExRUEwMjNGMURBQzMxREIw
MDk2MDIxRiAvKiBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFBODRDRTMxMjdGMzg2QjAwQ0E2RUE0IC8qIFdlYkNvbnRleHRNZW51UHJveHkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBQ0JCQTExMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRl
eHRNZW51UHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkzMzA5MzQ0RjEzMTVCOTREMDA5
N0E3QkMgLyogV2ViQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGNkE5MDgx
MzEzM0MyMDUxMDA4MkMzRjQgLyogV2ViQ29va2llTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTMzMDkzNDQ3MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMDkzNDU1MTMxNUI5NzUwMDk3QTdC
QyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzNBQTEw
NjYxMzFGMDYwMDAwRDRBNTc1IC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudC5jcHAgaW4g
U291cmNlcyAqLywK
</data>
<flag name="review"
          id="365235"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>