<?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>201802</bug_id>
          
          <creation_ts>2019-09-14 21:47:15 -0700</creation_ts>
          <short_desc>[WebIDL] Derived dictionaries should inherit their inherited dictionaries&apos; partials</short_desc>
          <delta_ts>2019-09-15 17:42:17 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570917</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-14 21:47:15 -0700</bug_when>
    <thetext>[WebIDL] Derived dictionaries should inherit their inherited dictionaries&apos; partials</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570918</commentid>
    <comment_count>1</comment_count>
      <attachid>378806</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-14 21:52:21 -0700</bug_when>
    <thetext>Created attachment 378806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570948</commentid>
    <comment_count>2</comment_count>
      <attachid>378806</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-15 10:37:31 -0700</bug_when>
    <thetext>Comment on attachment 378806
Patch

Rejecting attachment 378806 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 378806, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=378806&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=201802&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Updating working directory
Processing patch 378806 from bug 201802.
Fetching: https://bugs.webkit.org/attachment.cgi?id=378806
Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	A	Source/WebCore/bindings/scripts/test/JS/JSTestDerivedDictionary.cpp
	A	Source/WebCore/bindings/scripts/test/JS/JSTestDerivedDictionary.h
	A	Source/WebCore/bindings/scripts/test/JS/JSTestInheritedDictionary.cpp
	A	Source/WebCore/bindings/scripts/test/JS/JSTestInheritedDictionary.h
	A	Source/WebCore/bindings/scripts/test/TestDerivedDictionary.idl
	A	Source/WebCore/bindings/scripts/test/TestInheritedDictionary.idl
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/bindings/scripts/CodeGenerator.pm
	M	Source/WebCore/bindings/scripts/generate-bindings.pl
	M	Source/WebCore/bindings/scripts/test/TestSupplemental.idl

ERROR from SVN:
A repository hook failed: Commit blocked by pre-commit hook (exit code 1) with output:

    The following files contain tab characters:

        trunk/Source/WebCore/bindings/scripts/test/TestDerivedDictionary.idl
        trunk/Source/WebCore/bindings/scripts/test/TestInheritedDictionary.idl

    Please use spaces instead to indent.
    If you must commit a file with tabs, use svn propset to set the &quot;allow-tabs&quot; property.
W: dfcd42fbba38e4302cf6da05bde5637e369ba460 and refs/remotes/origin/master differ, using rebase:
:040000 040000 56d84cb2e627ab3473e91febde37698f2885ee47 9f18933f4bc23bd96982997c912716817c1e5c94 M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	A	Source/WebCore/bindings/scripts/test/JS/JSTestDerivedDictionary.cpp
	A	Source/WebCore/bindings/scripts/test/JS/JSTestDerivedDictionary.h
	A	Source/WebCore/bindings/scripts/test/JS/JSTestInheritedDictionary.cpp
	A	Source/WebCore/bindings/scripts/test/JS/JSTestInheritedDictionary.h
	A	Source/WebCore/bindings/scripts/test/TestDerivedDictionary.idl
	A	Source/WebCore/bindings/scripts/test/TestInheritedDictionary.idl
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/bindings/scripts/CodeGenerator.pm
	M	Source/WebCore/bindings/scripts/generate-bindings.pl
	M	Source/WebCore/bindings/scripts/test/TestSupplemental.idl

ERROR from SVN:
A repository hook failed: Commit blocked by pre-commit hook (exit code 1) with output:

    The following files contain tab characters:

        trunk/Source/WebCore/bindings/scripts/test/TestDerivedDictionary.idl
        trunk/Source/WebCore/bindings/scripts/test/TestInheritedDictionary.idl

    Please use spaces instead to indent.
    If you must commit a file with tabs, use svn propset to set the &quot;allow-tabs&quot; property.
W: dfcd42fbba38e4302cf6da05bde5637e369ba460 and refs/remotes/origin/master differ, using rebase:
:040000 040000 56d84cb2e627ab3473e91febde37698f2885ee47 9f18933f4bc23bd96982997c912716817c1e5c94 M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
Current branch master is up to date.

Full output: https://webkit-queues.webkit.org/results/13034280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570987</commentid>
    <comment_count>3</comment_count>
      <attachid>378831</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-15 16:55:04 -0700</bug_when>
    <thetext>Created attachment 378831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570989</commentid>
    <comment_count>4</comment_count>
      <attachid>378831</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-15 17:41:13 -0700</bug_when>
    <thetext>Comment on attachment 378831
Patch

Clearing flags on attachment: 378831

Committed r249888: &lt;https://trac.webkit.org/changeset/249888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570990</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-15 17:41:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570991</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-15 17:42:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/55384397&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378806</attachid>
            <date>2019-09-14 21:52:21 -0700</date>
            <delta_ts>2019-09-15 16:55:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201802-20190914215220.patch</filename>
            <type>text/plain</type>
            <size>50902</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RkZmE0MWYzMzZkYzU3
ZDUwOTdiOWIxZTE5MTA4NDM2Mzc2NmRjZS4uOTEzZGYyZGZiYmExNDZhZGQyNTgzMzJlMmJkZDg4
NWY5NDM3YTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA5LTE0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBEZXJpdmVkIGRp
Y3Rpb25hcmllcyBzaG91bGQgaW5oZXJpdCB0aGVpciBpbmhlcml0ZWQgZGljdGlvbmFyaWVzJyBw
YXJ0aWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UHJpb3IgdG8gdGhpcyBjaGFuZ2UsIGEgZGljdGlvbmFyeSBEIHRoYXQgaW5oZXJpdHMgZnJvbSBk
aWN0aW9uYXJ5IEIgd291bGQgbm90IGluaGVyaXQgQidzCisgICAgICAgIHBhcnRpYWwgZGljdGlv
bmFyaWVzLiBGaXhlZCB0aGlzIGJ5IG1vdmluZyBzdXBwbGVtZW50YWwgZGVwZW5kZW5jaWVzIHBy
b2Nlc3NpbmcgZnJvbQorICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCB0byBDb2RlR2VuZXJh
dG9yLnBtIGFuZCByZXVzaW5nIGl0IGluIEdldERpY3Rpb25hcnlCeVR5cGUuCisKKyAgICAgICAg
QWRkZWQgbmV3IGJpbmRpbmdzIHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtOgorICAgICAgICAobmV3KToKKyAgICAgICAgKFByb2Nlc3NEb2N1bWVu
dCk6CisgICAgICAgIChQcm9jZXNzU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKToKKyAgICAgICAg
KHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKToKKyAgICAgICAgKEdldERpY3Rpb25hcnlCeVR5cGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGw6CisgICAg
ICAgIChnZW5lcmF0ZUJpbmRpbmdzKToKKyAgICAgICAgKHNob3VsZFByb3BlcnR5QmVFeHBvc2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVy
aXZlZERpY3Rpb25hcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0
aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dERpY3Rpb25hcnlUb0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RGVyaXZlZERpY3Rpb25hcnkuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Pik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Lmg6IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVyaXZlZERpY3Rpb25hcnkuaWRs
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluaGVyaXRlZERp
Y3Rpb25hcnkuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dFN1cHBsZW1lbnRhbC5pZGw6CisKIDIwMTktMDktMTQgIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBNYWtlIFdlYkdQVVJlbmRlclBpcGVsaW5l
IGFuZCBXZWJHUFVDb21wdXRlUGlwZWxpbmUgaW5oZXJpdCBmcm9tIEdQVU9iamVjdEJhc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRl
eCBkZDU1Mjc5ZGM5ODA3MmE5OThiYjRkNWU4ZmIyOWUwMDgyY2RkMmE2Li43MGVlYmQ5YThhMzA3
N2NlOWM5MDdiODdmMTRiYmFmNDQyMTA5ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC00Myw2ICs0Myw3IEBAIG15ICRpZGxB
dHRyaWJ1dGVzOwogbXkgJHdyaXRlRGVwZW5kZW5jaWVzID0gMDsKIG15ICRkZWZpbmVzID0gIiI7
CiBteSAkdGFyZ2V0SWRsRmlsZVBhdGggPSAiIjsKK215ICRzdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXM7CiAKIG15ICRjb2RlR2VuZXJhdG9yID0gMDsKIApAQCAtMTQ3LDYgKzE0OCw3IEBAIHN1YiBu
ZXcKICAgICAkdmVyYm9zZSA9IHNoaWZ0OwogICAgICR0YXJnZXRJZGxGaWxlUGF0aCA9IHNoaWZ0
OwogICAgICRpZGxBdHRyaWJ1dGVzID0gc2hpZnQ7CisgICAgJHN1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcyA9IHNoaWZ0OwogCiAgICAgYmxlc3MoJHJlZmVyZW5jZSwgJG9iamVjdCk7CiAgICAgcmV0
dXJuICRyZWZlcmVuY2U7CkBAIC0xNTgsNiArMTYwLDggQEAgc3ViIFByb2Nlc3NEb2N1bWVudAog
ICAgICR1c2VEb2N1bWVudCA9IHNoaWZ0OwogICAgICRkZWZpbmVzID0gc2hpZnQ7CiAKKyAgICAk
b2JqZWN0LT5Qcm9jZXNzU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKCR1c2VEb2N1bWVudCk7CisK
ICAgICBteSAkaWZhY2VOYW1lID0gIkNvZGVHZW5lcmF0b3IiIC4gJHVzZUdlbmVyYXRvcjsKICAg
ICByZXF1aXJlICRpZmFjZU5hbWUgLiAiLnBtIjsKIApAQCAtMjQzLDYgKzI0NywxMzQgQEAgc3Vi
IFByb2Nlc3NEb2N1bWVudAogICAgIGRpZSAiUHJvY2Vzc2luZyBkb2N1bWVudCAiIC4gJHVzZURv
Y3VtZW50LT5maWxlTmFtZSAuICIgZGlkIG5vdCBnZW5lcmF0ZSBhbnl0aGluZyIKIH0KIAorc3Vi
IFByb2Nlc3NTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMKK3sKKyAgICBteSAoJG9iamVjdCwgJHRh
cmdldERvY3VtZW50KSA9IEBfOworICAgIG15ICR0YXJnZXRGaWxlTmFtZSA9IGZpbGVwYXJzZSgk
dGFyZ2V0RG9jdW1lbnQtPmZpbGVOYW1lKTsKKyAgICBteSAkdGFyZ2V0SW50ZXJmYWNlTmFtZSA9
IGZpbGVwYXJzZSgkdGFyZ2V0RmlsZU5hbWUsICIuaWRsIik7CisKKyAgICBpZiAoISRzdXBwbGVt
ZW50YWxEZXBlbmRlbmNpZXMpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvcmVh
Y2ggbXkgJGlkbEZpbGUgKEB7JHN1cHBsZW1lbnRhbERlcGVuZGVuY2llcy0+eyR0YXJnZXRGaWxl
TmFtZX19KSB7CisgICAgICAgIG5leHQgaWYgZmlsZXBhcnNlKCRpZGxGaWxlKSBlcSAkdGFyZ2V0
RmlsZU5hbWU7CisKKyAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2UoJGlkbEZp
bGUsICIuaWRsIik7CisgICAgICAgIG15ICRwYXJzZXIgPSBJRExQYXJzZXItPm5ldyghJHZlcmJv
c2UpOworICAgICAgICBteSAkZG9jdW1lbnQgPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRl
ZmluZXMsICRwcmVwcm9jZXNzb3IsICRpZGxBdHRyaWJ1dGVzKTsKKworICAgICAgICBmb3JlYWNo
IG15ICRpbnRlcmZhY2UgKEB7JGRvY3VtZW50LT5pbnRlcmZhY2VzfSkgeworICAgICAgICAgICAg
bmV4dCB1bmxlc3MgISRpbnRlcmZhY2UtPmlzUGFydGlhbCB8fCAkaW50ZXJmYWNlLT50eXBlLT5u
YW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lOworCisgICAgICAgICAgICBteSAkdGFyZ2V0RGF0
YU5vZGU7CisgICAgICAgICAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHM7CisgICAgICAgICAg
ICBmb3JlYWNoIG15ICRpbnRlcmZhY2UgKEB7JHRhcmdldERvY3VtZW50LT5pbnRlcmZhY2VzfSkg
eworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICR0YXJnZXRJ
bnRlcmZhY2VOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICR0YXJnZXREYXRhTm9kZSA9ICRp
bnRlcmZhY2U7CisgICAgICAgICAgICAgICAgICAgIG15ICRleHBvc2VkQXR0cmlidXRlID0gJHRh
cmdldERhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ci
OworICAgICAgICAgICAgICAgICAgICAkZXhwb3NlZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3Nl
ZEF0dHJpYnV0ZSwgMSwgLTEpIGlmIHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEg
IigiOworICAgICAgICAgICAgICAgICAgICBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgi
LCIsICRleHBvc2VkQXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkaWUgIk5vdCBmb3VuZCBh
biBpbnRlcmZhY2UgJHt0YXJnZXRJbnRlcmZhY2VOYW1lfSBpbiAke3RhcmdldEludGVyZmFjZU5h
bWV9LmlkbC4iIHVubGVzcyBkZWZpbmVkICR0YXJnZXREYXRhTm9kZTsKKworICAgICAgICAgICAg
IyBTdXBwb3J0IGZvciBhdHRyaWJ1dGVzIG9mIHBhcnRpYWwgaW50ZXJmYWNlcy4KKyAgICAgICAg
ICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewor
ICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRhdHRy
aWJ1dGUsIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOworCisgICAgICAgICAgICAgICAgIyBSZWNv
cmQgdGhhdCB0aGlzIGF0dHJpYnV0ZSBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4K
KyAgICAgICAgICAgICAgICAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRCeSJ9ID0gJGludGVyZmFjZU5hbWUgaWYgJGludGVyZmFjZS0+aXNQYXJ0aWFsICYmICEk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZWZsZWN0fTsKKworICAgICAgICAgICAg
ICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBhdHRy
aWJ1dGUuCisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1l
IChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAg
ICAgICAgICAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1
dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJp
YnV0ZU5hbWV9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdXNoKEB7JHRh
cmdldERhdGFOb2RlLT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICMgU3VwcG9ydCBmb3IgbWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMu
CisgICAgICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0
aW9uc30pIHsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhw
b3NlZCgkb3BlcmF0aW9uLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKworICAgICAgICAgICAg
ICAgICMgUmVjb3JkIHRoYXQgdGhpcyBtZXRob2QgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFj
ZU5hbWUuCisgICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlh
bDsKKworICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJp
YnV0ZXMgdG8gZWFjaCBtZXRob2QuCisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5k
ZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkg
eworICAgICAgICAgICAgICAgICAgICAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsk
ZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5vcGVyYXRpb25zfSwgJG9wZXJhdGlvbik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgU3VwcG9ydCBmb3IgY29uc3RhbnRzIG9mIHBh
cnRpYWwgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0YW50IChAeyRp
bnRlcmZhY2UtPmNvbnN0YW50c30pIHsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91
bGRQcm9wZXJ0eUJlRXhwb3NlZCgkY29uc3RhbnQsIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOwor
CisgICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIGltcGxlbWVu
dGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgorICAgICAgICAgICAgICAgICRjb25zdGFudC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRl
cmZhY2UtPmlzUGFydGlhbDsKKworICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRl
IGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBjb25zdGFudC4KKyAgICAgICAgICAgICAgICBm
b3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICAgICAgICAgICRjb25zdGFudC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX0gPSAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+Y29uc3RhbnRzfSwg
JGNvbnN0YW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvcmVhY2gg
bXkgJGRpY3Rpb25hcnkgKEB7JGRvY3VtZW50LT5kaWN0aW9uYXJpZXN9KSB7CisgICAgICAgICAg
ICBuZXh0IHVubGVzcyAkZGljdGlvbmFyeS0+aXNQYXJ0aWFsICYmICRkaWN0aW9uYXJ5LT50eXBl
LT5uYW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lOworCisgICAgICAgICAgICBteSAkdGFyZ2V0
RGF0YU5vZGU7CisgICAgICAgICAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHM7CisgICAgICAg
ICAgICBmb3JlYWNoIG15ICRkaWN0aW9uYXJ5IChAeyR0YXJnZXREb2N1bWVudC0+ZGljdGlvbmFy
aWVzfSkgeworICAgICAgICAgICAgICAgIGlmICgkZGljdGlvbmFyeS0+dHlwZS0+bmFtZSBlcSAk
dGFyZ2V0SW50ZXJmYWNlTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0RGF0YU5v
ZGUgPSAkZGljdGlvbmFyeTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGV4cG9zZWRBdHRyaWJ1
dGUgPSAkdGFyZ2V0RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHBvc2VkIn0gfHwg
IldpbmRvdyI7CisgICAgICAgICAgICAgICAgICAgICRleHBvc2VkQXR0cmlidXRlID0gc3Vic3Ry
KCRleHBvc2VkQXR0cmlidXRlLCAxLCAtMSkgaWYgc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAw
LCAxKSBlcSAiKCI7CisgICAgICAgICAgICAgICAgICAgIEB0YXJnZXRHbG9iYWxDb250ZXh0cyA9
IHNwbGl0KCIsIiwgJGV4cG9zZWRBdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgICAgICBsYXN0
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRpZSAiQ291
bGQgbm90IGZpbmQgZGljdGlvbmFyeSAke3RhcmdldEludGVyZmFjZU5hbWV9IGluICR7dGFyZ2V0
SW50ZXJmYWNlTmFtZX0uaWRsLiIgdW5sZXNzIGRlZmluZWQgJHRhcmdldERhdGFOb2RlOworCisg
ICAgICAgICAgICAjIFN1cHBvcnQgZm9yIG1lbWJlcnMgb2YgcGFydGlhbCBkaWN0aW9uYXJpZXMK
KyAgICAgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlciAoQHskZGljdGlvbmFyeS0+bWVtYmVyc30p
IHsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgk
bWVtYmVyLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKworICAgICAgICAgICAgICAgICMgUmVj
b3JkIHRoYXQgdGhpcyBtZW1iZXIgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCisg
ICAgICAgICAgICAgICAgJG1lbWJlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifSA9ICRpbnRlcmZhY2VOYW1lOworCisgICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJmYWNl
LXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIG1lbWJlci4KKyAgICAgICAgICAgICAg
ICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskZGljdGlvbmFyeS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgICAgICAgICAkbWVtYmVyLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRkaWN0aW9uYXJ5LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+bWVtYmVyc30s
ICRtZW1iZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisjIEF0dHJp
YnV0ZXMgLyBPcGVyYXRpb25zIC8gQ29uc3RhbnRzIG9mIHN1cHBsZW1lbnRhbCBpbnRlcmZhY2Vz
IGNhbiBoYXZlIGFuIFtFeHBvc2VkPVhYXSBhdHRyaWJ1dGUgd2hpY2ggcmVzdHJpY3RzCisjIG9u
IHdoaWNoIGdsb2JhbCBjb250ZXh0cyB0aGV5IHNob3VsZCBiZSBleHBvc2VkLgorc3ViIHNob3Vs
ZFByb3BlcnR5QmVFeHBvc2VkCit7CisgICAgbXkgKCRjb250ZXh0LCAkdGFyZ2V0R2xvYmFsQ29u
dGV4dHMpID0gQF87CisKKyAgICBteSAkZXhwb3NlZCA9ICRjb250ZXh0LT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFeHBvc2VkfTsKKworICAgIHJldHVybiAxIHVubGVzcyAkZXhwb3NlZDsKKworICAg
ICRleHBvc2VkID0gc3Vic3RyKCRleHBvc2VkLCAxLCAtMSkgaWYgc3Vic3RyKCRleHBvc2VkLCAw
LCAxKSBlcSAiKCI7CisgICAgbXkgQHNvdXJjZUdsb2JhbENvbnRleHRzID0gc3BsaXQoIiwiLCAk
ZXhwb3NlZCk7CisKKyAgICBmb3IgbXkgJHRhcmdldEdsb2JhbENvbnRleHQgKEAkdGFyZ2V0R2xv
YmFsQ29udGV4dHMpIHsKKyAgICAgICAgcmV0dXJuIDEgaWYgZ3JlcCgvXiR0YXJnZXRHbG9iYWxD
b250ZXh0JC8sIEBzb3VyY2VHbG9iYWxDb250ZXh0cyk7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCiBzdWIgRmlsZU5hbWVQcmVmaXgKIHsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CkBAIC01
NTMsNiArNjg1LDggQEAgc3ViIEdldERpY3Rpb25hcnlCeVR5cGUKICAgICAgICAgbXkgJHBhcnNl
ciA9IElETFBhcnNlci0+bmV3KDEpOwogICAgICAgICBteSAkZG9jdW1lbnQgPSAkcGFyc2VyLT5Q
YXJzZSgkZmlsZW5hbWUsICRkZWZpbmVzLCAkcHJlcHJvY2Vzc29yLCAkaWRsQXR0cmlidXRlcyk7
CiAKKyAgICAgICAgJG9iamVjdC0+UHJvY2Vzc1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcygkZG9j
dW1lbnQpOworCiAgICAgICAgIGZvcmVhY2ggbXkgJGRpY3Rpb25hcnkgKEB7JGRvY3VtZW50LT5k
aWN0aW9uYXJpZXN9KSB7CiAgICAgICAgICAgICBuZXh0IHVubGVzcyAkZGljdGlvbmFyeS0+dHlw
ZS0+bmFtZSBlcSAkbmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKaW5kZXggNGFiNTZmMjZiODk0NDEwOGYzNWVkMWNh
MGM5YTRmMTFkOTMxNWE2OS4uNTNlZWVlYTZjY2Y4M2RkMTJmZGZlY2FkNGE2OThkNDU5YmNhOTkw
MSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1i
aW5kaW5ncy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRl
LWJpbmRpbmdzLnBsCkBAIC05NCw3ICs5NCw3IEBAIHN1YiBnZW5lcmF0ZUJpbmRpbmdzCiAgICAg
bXkgJHRhcmdldEludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2UoJHRhcmdldElkbEZpbGUsICIuaWRs
Iik7CiAKICAgICBteSAkaWRsRm91bmQgPSAwOwotICAgIG15IEBzdXBwbGVtZW50ZWRJZGxGaWxl
czsKKyAgICBteSAlc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzOwogICAgIGlmICgkc3VwcGxlbWVu
dGFsRGVwZW5kZW5jeUZpbGUpIHsKICAgICAgICAgIyBUaGUgZm9ybWF0IG9mIGEgc3VwcGxlbWVu
dGFsIGRlcGVuZGVuY3kgZmlsZToKICAgICAgICAgIwpAQCAtMTA5LDEzICsxMDksMTQgQEAgc3Vi
IGdlbmVyYXRlQmluZGluZ3MKICAgICAgICAgb3BlbiBGSCwgIjwgJHN1cHBsZW1lbnRhbERlcGVu
ZGVuY3lGaWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5Rmls
ZVxuIjsKICAgICAgICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgewogICAgICAgICAgICAgbXkg
KCRpZGxGaWxlLCBAZm9sbG93aW5nSWRsRmlsZXMpID0gc3BsaXQoL1xzKy8sICRsaW5lKTsKLSAg
ICAgICAgICAgIGlmICgkaWRsRmlsZSBhbmQgZmlsZXBhcnNlKCRpZGxGaWxlKSBlcSBmaWxlcGFy
c2UoJHRhcmdldElkbEZpbGUpKSB7Ci0gICAgICAgICAgICAgICAgJGlkbEZvdW5kID0gMTsKLSAg
ICAgICAgICAgICAgICBAc3VwcGxlbWVudGVkSWRsRmlsZXMgPSBzb3J0IEBmb2xsb3dpbmdJZGxG
aWxlczsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRzdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXN7ZmlsZXBhcnNlKCRpZGxGaWxlKX0gPSBbc29ydCBAZm9sbG93aW5nSWRsRmlsZXNdIGlmICRp
ZGxGaWxlOwogICAgICAgICB9CiAgICAgICAgIGNsb3NlIEZIOwogCisgICAgICAgIGlmIChleGlz
dHMgJHN1cHBsZW1lbnRhbERlcGVuZGVuY2llc3tmaWxlcGFyc2UoJHRhcmdldElkbEZpbGUpfSkg
eworICAgICAgICAgICAgJGlkbEZvdW5kID0gMTsKKyAgICAgICAgfQorCiAgICAgICAgICMgJGFk
ZGl0aW9uYWxJZGxGaWxlcyBpcyBsaXN0IG9mIElETCBmaWxlcyB3aGljaCBzaG91bGQgbm90IGJl
IGluY2x1ZGVkIGluCiAgICAgICAgICMgRGVyaXZlZFNvdXJjZXMqLmNwcCAoaS5lLiB0aGV5IGFy
ZSBub3QgZGVzY3JpYmVkIGluIHRoZSBzdXBwbGVtZW50YWwKICAgICAgICAgIyBkZXBlbmRlbmN5
IGZpbGUpIGJ1dCBzaG91bGQgZ2VuZXJhdGUgLmggYW5kIC5jcHAgZmlsZXMuCkBAIC0xNDksMTI4
ICsxNTAsMTEgQEAgc3ViIGdlbmVyYXRlQmluZGluZ3MKICAgICBteSAkdGFyZ2V0UGFyc2VyID0g
SURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKICAgICBteSAkdGFyZ2V0RG9jdW1lbnQgPSAkdGFy
Z2V0UGFyc2VyLT5QYXJzZSgkdGFyZ2V0SWRsRmlsZSwgJGRlZmluZXMsICRwcmVwcm9jZXNzb3Is
ICRpZGxBdHRyaWJ1dGVzKTsKIAotICAgIGZvcmVhY2ggbXkgJGlkbEZpbGUgKEBzdXBwbGVtZW50
ZWRJZGxGaWxlcykgewotICAgICAgICBuZXh0IGlmICRpZGxGaWxlIGVxICR0YXJnZXRJZGxGaWxl
OwotCi0gICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKCRpZGxGaWxlLCAiLmlk
bCIpOwotICAgICAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKLSAg
ICAgICAgbXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZpbGUsICRkZWZpbmVzLCAk
cHJlcHJvY2Vzc29yLCAkaWRsQXR0cmlidXRlcyk7Ci0KLSAgICAgICAgZm9yZWFjaCBteSAkaW50
ZXJmYWNlIChAeyRkb2N1bWVudC0+aW50ZXJmYWNlc30pIHsKLSAgICAgICAgICAgIG5leHQgdW5s
ZXNzICEkaW50ZXJmYWNlLT5pc1BhcnRpYWwgfHwgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAk
dGFyZ2V0SW50ZXJmYWNlTmFtZTsKLQotICAgICAgICAgICAgbXkgJHRhcmdldERhdGFOb2RlOwot
ICAgICAgICAgICAgbXkgQHRhcmdldEdsb2JhbENvbnRleHRzOwotICAgICAgICAgICAgZm9yZWFj
aCBteSAkaW50ZXJmYWNlIChAeyR0YXJnZXREb2N1bWVudC0+aW50ZXJmYWNlc30pIHsKLSAgICAg
ICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAkdGFyZ2V0SW50ZXJmYWNl
TmFtZSkgewotICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0RGF0YU5vZGUgPSAkaW50ZXJmYWNl
OwotICAgICAgICAgICAgICAgICAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9ICR0YXJnZXREYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV4cG9zZWQifSB8fCAiV2luZG93IjsKLSAgICAg
ICAgICAgICAgICAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1
dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEpIGVxICIoIjsKLSAg
ICAgICAgICAgICAgICAgICAgQHRhcmdldEdsb2JhbENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhw
b3NlZEF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGllICJOb3QgZm91bmQgYW4gaW50ZXJm
YWNlICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRlcmZhY2VOYW1lfS5pZGwu
IiB1bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7Ci0KLSAgICAgICAgICAgICMgU3VwcG9y
dCBmb3IgYXR0cmlidXRlcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0gICAgICAgICAgICBmb3Jl
YWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAg
ICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkYXR0cmlidXRlLCBc
QHRhcmdldEdsb2JhbENvbnRleHRzKTsKLQotICAgICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQg
dGhpcyBhdHRyaWJ1dGUgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCi0gICAgICAg
ICAgICAgICAgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnki
fSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbCAmJiAhJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVmbGVjdH07Ci0KLSAgICAgICAgICAgICAgICAjIEFk
ZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggYXR0cmlidXRlLgot
ICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGV4dGVuZGVkQXR0cmlidXRlTmFtZSAoa2V5cyAl
eyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgICAgICAgICAg
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX0g
PSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1l
fTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRh
Tm9kZS0+YXR0cmlidXRlc30sICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAjIFN1cHBvcnQgZm9yIG1ldGhvZHMgb2YgcGFydGlhbCBpbnRlcmZhY2VzLgotICAgICAg
ICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7
Ci0gICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJG9w
ZXJhdGlvbiwgXEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7Ci0KLSAgICAgICAgICAgICAgICAjIFJl
Y29yZCB0aGF0IHRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgot
ICAgICAgICAgICAgICAgICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1l
bnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5pc1BhcnRpYWw7Ci0KLSAg
ICAgICAgICAgICAgICAjIEFkZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRv
IGVhY2ggbWV0aG9kLgotICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGV4dGVuZGVkQXR0cmli
dXRlTmFtZSAoa2V5cyAleyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKLSAgICAg
ICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVk
QXR0cmlidXRlTmFtZX0gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5k
ZWRBdHRyaWJ1dGVOYW1lfTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHVz
aChAeyR0YXJnZXREYXRhTm9kZS0+b3BlcmF0aW9uc30sICRvcGVyYXRpb24pOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGNvbnN0YW50cyBvZiBwYXJ0aWFsIGlu
dGVyZmFjZXMuCi0gICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdGFudCAoQHskaW50ZXJmYWNl
LT5jb25zdGFudHN9KSB7Ci0gICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVy
dHlCZUV4cG9zZWQoJGNvbnN0YW50LCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKLQotICAgICAg
ICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhpcyBjb25zdGFudCBpcyBpbXBsZW1lbnRlZCBieSAk
aW50ZXJmYWNlTmFtZS4KLSAgICAgICAgICAgICAgICAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5p
c1BhcnRpYWw7Ci0KLSAgICAgICAgICAgICAgICAjIEFkZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRl
ZCBhdHRyaWJ1dGVzIHRvIGVhY2ggY29uc3RhbnQuCi0gICAgICAgICAgICAgICAgZm9yZWFjaCBt
eSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzfSkgewotICAgICAgICAgICAgICAgICAgICAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmNvbnN0YW50c30sICRjb25zdGFu
dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JlYWNoIG15ICRkaWN0
aW9uYXJ5IChAeyRkb2N1bWVudC0+ZGljdGlvbmFyaWVzfSkgewotICAgICAgICAgICAgbmV4dCB1
bmxlc3MgJGRpY3Rpb25hcnktPmlzUGFydGlhbCAmJiAkZGljdGlvbmFyeS0+dHlwZS0+bmFtZSBl
cSAkdGFyZ2V0SW50ZXJmYWNlTmFtZTsKLQotICAgICAgICAgICAgbXkgJHRhcmdldERhdGFOb2Rl
OwotICAgICAgICAgICAgbXkgQHRhcmdldEdsb2JhbENvbnRleHRzOwotICAgICAgICAgICAgZm9y
ZWFjaCBteSAkZGljdGlvbmFyeSAoQHskdGFyZ2V0RG9jdW1lbnQtPmRpY3Rpb25hcmllc30pIHsK
LSAgICAgICAgICAgICAgICBpZiAoJGRpY3Rpb25hcnktPnR5cGUtPm5hbWUgZXEgJHRhcmdldElu
dGVyZmFjZU5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgJHRhcmdldERhdGFOb2RlID0gJGRp
Y3Rpb25hcnk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRleHBvc2VkQXR0cmlidXRlID0gJHRh
cmdldERhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ci
OwotICAgICAgICAgICAgICAgICAgICAkZXhwb3NlZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3Nl
ZEF0dHJpYnV0ZSwgMSwgLTEpIGlmIHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEg
IigiOwotICAgICAgICAgICAgICAgICAgICBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgi
LCIsICRleHBvc2VkQXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICAgICAgbGFzdDsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkaWUgIkNvdWxkIG5vdCBm
aW5kIGRpY3Rpb25hcnkgJHt0YXJnZXRJbnRlcmZhY2VOYW1lfSBpbiAke3RhcmdldEludGVyZmFj
ZU5hbWV9LmlkbC4iIHVubGVzcyBkZWZpbmVkICR0YXJnZXREYXRhTm9kZTsKLQotICAgICAgICAg
ICAgIyBTdXBwb3J0IGZvciBtZW1iZXJzIG9mIHBhcnRpYWwgZGljdGlvbmFyaWVzCi0gICAgICAg
ICAgICBmb3JlYWNoIG15ICRtZW1iZXIgKEB7JGRpY3Rpb25hcnktPm1lbWJlcnN9KSB7Ci0gICAg
ICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJG1lbWJlciwg
XEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7Ci0KLSAgICAgICAgICAgICAgICAjIFJlY29yZCB0aGF0
IHRoaXMgbWVtYmVyIGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgotICAgICAgICAg
ICAgICAgICRtZW1iZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAk
aW50ZXJmYWNlTmFtZTsKLQotICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4
dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBtZW1iZXIuCi0gICAgICAgICAgICAgICAgZm9yZWFj
aCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGRpY3Rpb25hcnktPmV4dGVuZGVk
QXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgICAgICAgICAgJG1lbWJlci0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX0gPSAkZGljdGlvbmFyeS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPm1lbWJlcnN9LCAkbWVtYmVy
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgICMgR2VuZXJhdGUgZGVz
aXJlZCBvdXRwdXQgZm9yIHRoZSB0YXJnZXQgSURMIGZpbGUuCi0gICAgbXkgJGNvZGVHZW4gPSBD
b2RlR2VuZXJhdG9yLT5uZXcoXEBpZGxEaXJlY3RvcmllcywgJGdlbmVyYXRvciwgJG91dHB1dERp
cmVjdG9yeSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRwcmVwcm9jZXNzb3IsICR3cml0ZURl
cGVuZGVuY2llcywgJHZlcmJvc2UsICR0YXJnZXRJZGxGaWxlLCAkaWRsQXR0cmlidXRlcyk7Cisg
ICAgbXkgJGNvZGVHZW4gPSBDb2RlR2VuZXJhdG9yLT5uZXcoXEBpZGxEaXJlY3RvcmllcywgJGdl
bmVyYXRvciwgJG91dHB1dERpcmVjdG9yeSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRwcmVw
cm9jZXNzb3IsICR3cml0ZURlcGVuZGVuY2llcywgJHZlcmJvc2UsICR0YXJnZXRJZGxGaWxlLCAk
aWRsQXR0cmlidXRlcywgXCVzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMpOwogICAgICRjb2RlR2Vu
LT5Qcm9jZXNzRG9jdW1lbnQoJHRhcmdldERvY3VtZW50LCAkZGVmaW5lcyk7CiB9CiAKLSMgQXR0
cmlidXRlcyAvIE9wZXJhdGlvbnMgLyBDb25zdGFudHMgb2Ygc3VwcGxlbWVudGFsIGludGVyZmFj
ZXMgY2FuIGhhdmUgYW4gW0V4cG9zZWQ9WFhdIGF0dHJpYnV0ZSB3aGljaCByZXN0cmljdHMKLSMg
b24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJlIGV4cG9zZWQuCi1zdWIgc2hv
dWxkUHJvcGVydHlCZUV4cG9zZWQKLXsKLSAgICBteSAoJGNvbnRleHQsICR0YXJnZXRHbG9iYWxD
b250ZXh0cykgPSBAXzsKLQotICAgIG15ICRleHBvc2VkID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0V4cG9zZWR9OwotCi0gICAgcmV0dXJuIDEgdW5sZXNzICRleHBvc2VkOwotCi0g
ICAgJGV4cG9zZWQgPSBzdWJzdHIoJGV4cG9zZWQsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWQs
IDAsIDEpIGVxICIoIjsKLSAgICBteSBAc291cmNlR2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIs
ICRleHBvc2VkKTsKLQotICAgIGZvciBteSAkdGFyZ2V0R2xvYmFsQ29udGV4dCAoQCR0YXJnZXRH
bG9iYWxDb250ZXh0cykgewotICAgICAgICByZXR1cm4gMSBpZiBncmVwKC9eJHRhcmdldEdsb2Jh
bENvbnRleHQkLywgQHNvdXJjZUdsb2JhbENvbnRleHRzKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KIHN1YiBnZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwCiB7CiAgICAgbXkgKCRwcmVmaXgs
ICR0YXJnZXRJbnRlcmZhY2VOYW1lLCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgJG91dHB1dERp
cmVjdG9yeSkgPSBAXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBiYTNkYjE4NzdhMDJjYjM3Mzk3N2U3OWNhMDIxZmZmNTY4OTg2OWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVyaXZlZERpY3Rpb25hcnkuY3BwCkBAIC0wLDAgKzEsMjM0IEBACisvKgorICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3REZXJpdmVkRGlj
dGlvbmFyeS5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZl
cnRCb29sZWFuLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgiCisjaW5jbHVk
ZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3Mu
aCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTVm9pZENhbGxi
YWNrLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3Iu
aD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCit0ZW1w
bGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZl
ZERpY3Rpb25hcnk+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIg
OiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVk
ICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29w
ZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlc3REZXJpdmVkRGljdGlvbmFy
eSByZXN1bHQ7CisgICAgSlNWYWx1ZSBib29sTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9y
VW5kZWZpbmVkKQorICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAg
IGVsc2UgeworICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmc3RhdGUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIikpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghYm9vbE1lbWJl
clZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmJvb2xNZW1iZXIgPSBjb252
ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBib29sTWVtYmVyVmFsdWUpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgY2FsbGJh
Y2tNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIGNhbGxi
YWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBjYWxs
YmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4oc3RhdGUsIGNhbGxiYWNrTWVtYmVy
VmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwor
ICAgIH0KKyAgICBKU1ZhbHVlIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWU7CisgICAgaWYgKGlz
TnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0ganNV
bmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRp
YWxCb29sZWFuTWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQm9vbGVhbk1lbWJlciA9IGNvbnZl
cnQ8SURMQm9vbGVhbj4oc3RhdGUsIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorI2lmIEVOQUJM
RShDb25kaXRpb25hbDE1KQorICAgIEpTVmFsdWUgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29u
ZGl0aW9uYWxWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHBhcnRp
YWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAg
IGVsc2UgeworICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVl
ID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlh
bEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0aWFsQm9vbGVhbk1l
bWJlcldpdGhDb25kaXRpb25hbFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0
LnBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsID0gY29udmVydDxJRExCb29sZWFu
PihzdGF0ZSwgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisjZW5kaWYK
KyAgICBKU1ZhbHVlIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlOworICAgIGlmIChpc051bGxP
clVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVm
aW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxD
YWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOworICAgIH0KKyAgICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZl
cnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KHN0YXRlLCBwYXJ0aWFsQ2Fs
bGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGlj
YWxHbG9iYWxPYmplY3QoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZh
bHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbFJlcXVpcmVk
TG9uZ01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcGFy
dGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciIpKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAo
IXBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAg
IHJlc3VsdC5wYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyID0gY29udmVydDxJRExMb25nPihzdGF0
ZSwgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIHRocm93UmVx
dWlyZWRNZW1iZXJUeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsICJwYXJ0aWFsUmVxdWlyZWRM
b25nTWVtYmVyIiwgIlRlc3REZXJpdmVkRGljdGlvbmFyeSIsICJsb25nIik7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorICAgIEpTVmFsdWUgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlOwor
ICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZh
bHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcGFydGlhbFN0cmluZ01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAicGFydGlhbFN0cmluZ01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsU3RyaW5nTWVtYmVyID0g
Y29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAg
IEpTVmFsdWUgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWU7Cisg
ICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0
aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAg
ICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gb2JqZWN0
LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01l
bWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbFN0cmluZ01lbWJlcldp
dGhFbmFibGVkQnlTZXR0aW5nVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQu
cGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nID0gY29udmVydDxJRExET01T
dHJpbmc+KHN0YXRlLCBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9
CisgICAgSlNWYWx1ZSBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNW
YWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHBhcnRpYWxVbnNpZ25l
ZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFz
VmFsdWUgPSBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXMiKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0
aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyID0gY29udmVydDxJ
RExVbnNpZ25lZExvbmc+KHN0YXRlLCBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxl
bWVudGVkQXNWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBzdHJpbmdNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNO
dWxsT3JVbmRlZmluZWQpCisgICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0ganNVbmRlZmluZWQo
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgm
c3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYg
KCFzdHJpbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5zdHJp
bmdNZW1iZXIgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHN0cmluZ01lbWJlclZhbHVl
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0K
KyAgICBKU1ZhbHVlIGRlcml2ZWRCb29sTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQorICAgICAgICBkZXJpdmVkQm9vbE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0
KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyIikp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQor
ICAgIGlmICghZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAg
IHJlc3VsdC5kZXJpdmVkQm9vbE1lbWJlciA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIGRl
cml2ZWRCb29sTWVtYmVyVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQzo6SlNPYmpl
Y3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFRlc3REZXJpdmVkRGljdGlvbmFyeSYgZGlj
dGlvbmFyeSkKK3sKKyAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7CisKKyAgICBhdXRvIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3Rv
dHlwZSgpKTsKKworICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5i
b29sTWVtYmVyKSkgeworICAgICAgICBhdXRvIGJvb2xNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9v
bGVhbj4oSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuYm9v
bE1lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciIpLCBib29sTWVtYmVyVmFsdWUpOworICAgIH0K
KyAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Ojppc051bGxWYWx1
ZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSkgeworICAgICAgICBhdXRvIGNhbGxiYWNrTWVt
YmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihzdGF0
ZSwgZ2xvYmFsT2JqZWN0LCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0
cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIpKTsKKyAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImNhbGxiYWNrTWVtYmVyIiksIGNhbGxiYWNrTWVtYmVyVmFsdWUpOworICAgIH0KKyAgICBpZiAo
IUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIp
KSB7CisgICAgICAgIGF1dG8gcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9v
bGVhbj4oSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFy
dGlhbEJvb2xlYW5NZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIiksIHBhcnRp
YWxCb29sZWFuTWVtYmVyVmFsdWUpOworICAgIH0KKyNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxNSkK
KyAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xl
YW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwpKSB7CisgICAgICAgIGF1dG8gcGFydGlhbEJvb2xlYW5N
ZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4oSURMQm9vbGVhbjo6
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXJX
aXRoQ29uZGl0aW9uYWwpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlv
bmFsIiksIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUpOworICAgIH0K
KyNlbmRpZgorICAgIGlmICghSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46Omlz
TnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbENhbGxiYWNrTWVtYmVyKSkgeworICAgICAgICBh
dXRvIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTVm9pZENhbGxiYWNrPj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgSURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1ZvaWRDYWxsYmFjaz46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBh
cnRpYWxDYWxsYmFja01lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbENhbGxiYWNrTWVtYmVyIiksIHBh
cnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsKKyAgICB9CisgICAgYXV0byBwYXJ0aWFsUmVxdWly
ZWRMb25nTWVtYmVyVmFsdWUgPSB0b0pTPElETExvbmc+KGRpY3Rpb25hcnkucGFydGlhbFJlcXVp
cmVkTG9uZ01lbWJlcik7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiKSwgcGFydGlhbFJl
cXVpcmVkTG9uZ01lbWJlclZhbHVlKTsKKyAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFs
dWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyKSkgeworICAgICAgICBhdXRvIHBhcnRp
YWxTdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgSURMRE9NU3Ry
aW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVt
YmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIiksIHBhcnRpYWxTdHJpbmdNZW1iZXJW
YWx1ZSk7CisgICAgfQorICAgIGlmIChkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNl
dHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKCFJRExET01TdHJp
bmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVk
QnlTZXR0aW5nKSkgeworICAgICAgICAgICAgYXV0byBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVu
YWJsZWRCeVNldHRpbmdWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgSURMRE9NU3Ry
aW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVt
YmVyV2l0aEVuYWJsZWRCeVNldHRpbmcpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVy
V2l0aEVuYWJsZWRCeVNldHRpbmciKSwgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlT
ZXR0aW5nVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghSURMVW5zaWduZWRMb25n
Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXIpKSB7Cisg
ICAgICAgIGF1dG8gcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFs
dWUgPSB0b0pTPElETFVuc2lnbmVkTG9uZz4oSURMVW5zaWduZWRMb25nOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyKSk7CisgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXMiKSwgcGFydGlhbFVu
c2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUpOworICAgIH0KKyAgICBpZiAo
IUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5zdHJpbmdNZW1iZXIpKSB7Cisg
ICAgICAgIGF1dG8gc3RyaW5nTWVtYmVyVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUs
IElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5n
TWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSwgc3RyaW5nTWVtYmVyVmFsdWUpOworICAg
IH0KKyAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuZGVyaXZlZEJv
b2xNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSA9IHRvSlM8
SURMQm9vbGVhbj4oSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25h
cnkuZGVyaXZlZEJvb2xNZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyIiksIGRlcml2
ZWRCb29sTWVtYmVyVmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA0MjAwZTYyNmE4MDBjMDhkMzNjZGM2NjRmZGRlNjQxNzlkYzVlN2QKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVyaXZlZERpY3Rpb25hcnkuaApAQCAtMCwwICsxLDMyIEBACisvKgorICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUg
aGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZ
IQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Db252ZXJ0RGljdGlvbmFyeS5o
IgorI2luY2x1ZGUgIlRlc3REZXJpdmVkRGljdGlvbmFyeS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3RlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3REZXJpdmVkRGljdGlvbmFyeT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwor
CitKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpFeGVjU3RhdGUmLCBK
U0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IFRlc3REZXJpdmVkRGljdGlvbmFyeSYpOworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDEwN2M3ODcxMjlhNDJlM2M5MjVmOTJmMWE3NDA3Zjg0ZjJkYmNiZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcApAQCAtMCwwICsxLDIxOSBAQAorLyoKKyAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisg
ICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0
SW5oZXJpdGVkRGljdGlvbmFyeS5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRCb29sZWFuLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0Q2FsbGJhY2tz
LmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgorI2luY2x1ZGUgIkpTRE9NQ29u
dmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUg
IkpTVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0
Q29uc3RydWN0b3IuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCit0ZW1wbGF0ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9u
YXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5PihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYm9vbCBpc051bGxPclVuZGVmaW5lZCA9IHZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAgYXV0byogb2JqZWN0ID0gaXNOdWxsT3JVbmRl
ZmluZWQgPyBudWxscHRyIDogdmFsdWUuZ2V0T2JqZWN0KCk7CisgICAgaWYgKFVOTElLRUxZKCFp
c051bGxPclVuZGVmaW5lZCAmJiAhb2JqZWN0KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBUZXN0
SW5oZXJpdGVkRGljdGlvbmFyeSByZXN1bHQ7CisgICAgSlNWYWx1ZSBib29sTWVtYmVyVmFsdWU7
CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBq
c1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBib29sTWVtYmVyVmFsdWUgPSBvYmpl
Y3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIikp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQor
ICAgIGlmICghYm9vbE1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0
LmJvb2xNZW1iZXIgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBib29sTWVtYmVyVmFsdWUp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQor
ICAgIEpTVmFsdWUgY2FsbGJhY2tNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCisgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVs
c2UgeworICAgICAgICBjYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFjYWxs
YmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNr
TWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4oc3Rh
dGUsIGNhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0
ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIHBhcnRpYWxCb29sZWFuTWVtYmVy
VmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFsQm9vbGVh
bk1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcGFydGlh
bEJvb2xlYW5NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbEJvb2xl
YW5NZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQm9v
bGVhbk1lbWJlciA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIHBhcnRpYWxCb29sZWFuTWVt
YmVyVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgfQorI2lmIEVOQUJMRShDb25kaXRpb25hbDE1KQorICAgIEpTVmFsdWUgcGFydGlhbEJv
b2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSBq
c1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlcldp
dGhDb25kaXRpb25hbFZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiKSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYg
KCFwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsID0g
Y29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0
aW9uYWxWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKKyAgICB9CisjZW5kaWYKKyAgICBKU1ZhbHVlIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVl
OworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbENhbGxiYWNrTWVt
YmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsQ2Fs
bGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXBhcnRpYWxDYWxsYmFj
a01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxs
YmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+
KHN0YXRlLCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgcGFydGlhbFJl
cXVpcmVkTG9uZ01lbWJlclZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAg
ICAgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0gb2JqZWN0LT5n
ZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9u
Z01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OworICAgIH0KKyAgICBpZiAoIXBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyID0gY29u
dmVydDxJRExMb25nPihzdGF0ZSwgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRocm93UmVxdWlyZWRNZW1iZXJUeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
ICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIiwgIlRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Iiwg
ImxvbmciKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgSlNWYWx1ZSBwYXJ0aWFs
U3RyaW5nTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBw
YXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAg
ICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIikpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFy
dGlhbFN0cmluZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBh
cnRpYWxTdHJpbmdNZW1iZXIgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHBhcnRpYWxT
dHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJs
ZWRCeVNldHRpbmdWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHBh
cnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0ganNVbmRlZmluZWQo
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlT
ZXR0aW5nVmFsdWUgPSBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciKSk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFw
YXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRp
bmcgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRo
RW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1i
ZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAg
ICAgICAgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBq
c1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVt
YmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50
ZWRBcyIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwor
ICAgIH0KKyAgICBpZiAoIXBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRB
c1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxVbnNpZ25lZExv
bmdNZW1iZXIgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZz4oc3RhdGUsIHBhcnRpYWxVbnNpZ25l
ZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIHN0cmluZ01lbWJl
clZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgc3RyaW5nTWVtYmVy
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBzdHJpbmdNZW1iZXJW
YWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0
cmluZ01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOworICAgIH0KKyAgICBpZiAoIXN0cmluZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
KyAgICAgICAgcmVzdWx0LnN0cmluZ01lbWJlciA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0
ZSwgc3RyaW5nTWVtYmVyVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQzo6SlNPYmpl
Y3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5JiBk
aWN0aW9uYXJ5KQoreworICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKKworICAgIGF1dG8gcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlLCBnbG9iYWxPYmplY3Qub2JqZWN0UHJv
dG90eXBlKCkpOworCisgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5
LmJvb2xNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gYm9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExC
b29sZWFuPihJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5i
b29sTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIiksIGJvb2xNZW1iZXJWYWx1ZSk7CisgICAg
fQorICAgIGlmICghSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46OmlzTnVsbFZh
bHVlKGRpY3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gY2FsbGJhY2tN
ZW1iZXJWYWx1ZSA9IHRvSlM8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KHN0
YXRlLCBnbG9iYWxPYmplY3QsIElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Ojpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiY2FsbGJhY2tNZW1iZXIiKSwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgfQorICAgIGlm
ICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJl
cikpIHsKKyAgICAgICAgYXV0byBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gdG9KUzxJRExC
b29sZWFuPihJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5w
YXJ0aWFsQm9vbGVhbk1lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiKSwgcGFy
dGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSk7CisgICAgfQorI2lmIEVOQUJMRShDb25kaXRpb25hbDE1
KQorICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsQm9v
bGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCkpIHsKKyAgICAgICAgYXV0byBwYXJ0aWFsQm9vbGVh
bk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlID0gdG9KUzxJRExCb29sZWFuPihJRExCb29sZWFu
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJl
cldpdGhDb25kaXRpb25hbCkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0
aW9uYWwiKSwgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSk7CisgICAg
fQorI2VuZGlmCisgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6
aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIpKSB7CisgICAgICAg
IGF1dG8gcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVuY3Rp
b248SlNWb2lkQ2FsbGJhY2s+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBJRExDYWxsYmFja0Z1bmN0
aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnku
cGFydGlhbENhbGxiYWNrTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiKSwg
cGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUpOworICAgIH0KKyAgICBhdXRvIHBhcnRpYWxSZXF1
aXJlZExvbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMTG9uZz4oZGljdGlvbmFyeS5wYXJ0aWFsUmVx
dWlyZWRMb25nTWVtYmVyKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciIpLCBwYXJ0aWFs
UmVxdWlyZWRMb25nTWVtYmVyVmFsdWUpOworICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxW
YWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gcGFy
dGlhbFN0cmluZ01lbWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBJRExET01T
dHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdN
ZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiKSwgcGFydGlhbFN0cmluZ01lbWJl
clZhbHVlKTsKKyAgICB9CisgICAgaWYgKGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+
c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkgeworICAgICAgICBpZiAoIUlETERPTVN0
cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJs
ZWRCeVNldHRpbmcpKSB7CisgICAgICAgICAgICBhdXRvIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRo
RW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBJRExET01T
dHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdN
ZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZykpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1i
ZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyIpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRC
eVNldHRpbmdWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFJRExVbnNpZ25lZExv
bmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcikpIHsK
KyAgICAgICAgYXV0byBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNW
YWx1ZSA9IHRvSlM8SURMVW5zaWduZWRMb25nPihJRExVbnNpZ25lZExvbmc6OmV4dHJhY3RWYWx1
ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXIpKTsKKyAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyIpLCBwYXJ0aWFs
VW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSk7CisgICAgfQorICAgIGlm
ICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJlcikpIHsK
KyAgICAgICAgYXV0byBzdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0
ZSwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zdHJp
bmdNZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01lbWJlciIpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7Cisg
ICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmhlcml0ZWREaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0OGU2ZTBiZGRl
YTdlNjA2OTEzZTA4MTA2MWUxOGRlMGViYTM0MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFy
eS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnREaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiVGVz
dEluaGVyaXRlZERpY3Rpb25hcnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0
ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0
ZWREaWN0aW9uYXJ5PihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CisKK0pTQzo6SlNP
YmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFs
T2JqZWN0JiwgY29uc3QgVGVzdEluaGVyaXRlZERpY3Rpb25hcnkmKTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3REZXJpdmVkRGljdGlvbmFyeS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdERlcml2ZWREaWN0aW9uYXJ5LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTNlOTZl
YzhmYjZiNzFmNTk3ZTI2Nzc3OGUxNWFjMjNlMzY0NTFlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZXJpdmVkRGljdGlvbmFyeS5p
ZGwKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKwlKU0dlbmVyYXRlVG9KU09iamVj
dAorXSBkaWN0aW9uYXJ5IFRlc3REZXJpdmVkRGljdGlvbmFyeSA6IFRlc3RJbmhlcml0ZWREaWN0
aW9uYXJ5IHsKKwlib29sZWFuIGRlcml2ZWRCb29sTWVtYmVyOworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5oZXJpdGVkRGljdGlvbmFy
eS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluaGVyaXRl
ZERpY3Rpb25hcnkuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NmRiYjRkNGYwOGUzOTZmMGM1NTZlZjc2Yjkw
MWEzZGY2YjU4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuaWRsCkBAIC0wLDAgKzEsMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitbCisJSlNHZW5lcmF0ZVRvSlNPYmplY3QKK10gZGljdGlvbmFyeSBUZXN0
SW5oZXJpdGVkRGljdGlvbmFyeSB7CisJYm9vbGVhbiBib29sTWVtYmVyOworICAgIERPTVN0cmlu
ZyBzdHJpbmdNZW1iZXI7CisgICAgVm9pZENhbGxiYWNrIGNhbGxiYWNrTWVtYmVyOworfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxl
bWVudGFsLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3Vw
cGxlbWVudGFsLmlkbAppbmRleCAyNDdmZTViYzRmOTljNDU4MjcwZWI0NTA0ZWZlM2EzMzY3MTY2
MTUzLi42ZmE4OTNlOGY4ODQwZjljMDFkNmYyZjEwNGVjODIxOTU2MWIyMzA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFN1cHBsZW1lbnRhbC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RTdXBwbGVt
ZW50YWwuaWRsCkBAIC02NCwzICs2NCwxMyBAQAogICAgIFtDb25kaXRpb25hbD1Db25kaXRpb25h
bDE1XSBib29sZWFuIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aElnbm9yZWRDb25kaXRpb25hbDsK
ICAgICBbRW5hYmxlZEJ5U2V0dGluZz1UZXN0U2V0dGluZ10gRE9NU3RyaW5nIHBhcnRpYWxTdHJp
bmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZzsKIH07CisKK3BhcnRpYWwgZGljdGlvbmFyeSBU
ZXN0SW5oZXJpdGVkRGljdGlvbmFyeSB7CisgICAgcmVxdWlyZWQgbG9uZyBwYXJ0aWFsUmVxdWly
ZWRMb25nTWVtYmVyOworICAgIGJvb2xlYW4gcGFydGlhbEJvb2xlYW5NZW1iZXI7CisgICAgRE9N
U3RyaW5nIHBhcnRpYWxTdHJpbmdNZW1iZXI7CisgICAgVm9pZENhbGxiYWNrIHBhcnRpYWxDYWxs
YmFja01lbWJlcjsKKyAgICBbSW1wbGVtZW50ZWRBcz1wYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVy
XSB1bnNpZ25lZCBsb25nIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRB
czsKKyAgICBbQ29uZGl0aW9uYWw9Q29uZGl0aW9uYWwxNV0gYm9vbGVhbiBwYXJ0aWFsQm9vbGVh
bk1lbWJlcldpdGhDb25kaXRpb25hbDsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1UZXN0U2V0dGlu
Z10gRE9NU3RyaW5nIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZzsKK307
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378831</attachid>
            <date>2019-09-15 16:55:04 -0700</date>
            <delta_ts>2019-09-15 17:41:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201802-20190915165503.patch</filename>
            <type>text/plain</type>
            <size>50910</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2RkZmE0MWYzMzZkYzU3
ZDUwOTdiOWIxZTE5MTA4NDM2Mzc2NmRjZS4uZjA1Y2M2NzQyMDhhZjY0YTE0MzM2Y2IwZGRhMDM3
MWVkMWU5Y2IzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA5LTE0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBEZXJpdmVkIGRp
Y3Rpb25hcmllcyBzaG91bGQgaW5oZXJpdCB0aGVpciBpbmhlcml0ZWQgZGljdGlvbmFyaWVzJyBw
YXJ0aWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBQcmlv
ciB0byB0aGlzIGNoYW5nZSwgYSBkaWN0aW9uYXJ5IEQgdGhhdCBpbmhlcml0cyBmcm9tIGRpY3Rp
b25hcnkgQiB3b3VsZCBub3QgaW5oZXJpdCBCJ3MKKyAgICAgICAgcGFydGlhbCBkaWN0aW9uYXJp
ZXMuIEZpeGVkIHRoaXMgYnkgbW92aW5nIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmNpZXMgcHJvY2Vz
c2luZyBmcm9tCisgICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHRvIENvZGVHZW5lcmF0b3Iu
cG0gYW5kIHJldXNpbmcgaXQgaW4gR2V0RGljdGlvbmFyeUJ5VHlwZS4KKworICAgICAgICBBZGRl
ZCBuZXcgYmluZGluZ3MgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG06CisgICAgICAgIChuZXcpOgorICAgICAgICAoUHJvY2Vzc0RvY3VtZW50KToK
KyAgICAgICAgKFByb2Nlc3NTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMpOgorICAgICAgICAoc2hv
dWxkUHJvcGVydHlCZUV4cG9zZWQpOgorICAgICAgICAoR2V0RGljdGlvbmFyeUJ5VHlwZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbDoKKyAgICAgICAg
KGdlbmVyYXRlQmluZGluZ3MpOgorICAgICAgICAoc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVk
RGljdGlvbmFyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25h
cnk8VGVzdERlcml2ZWREaWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGlj
dGlvbmFyeVRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZXJpdmVkRGljdGlvbmFyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuaDogQWRkZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZXJpdmVkRGljdGlvbmFyeS5pZGw6IEFk
ZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5oZXJpdGVkRGljdGlv
bmFyeS5pZGw6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3Vw
cGxlbWVudGFsLmlkbDoKKwogMjAxOS0wOS0xNCAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIE1ha2UgV2ViR1BVUmVuZGVyUGlwZWxpbmUgYW5k
IFdlYkdQVUNvbXB1dGVQaXBlbGluZSBpbmhlcml0IGZyb20gR1BVT2JqZWN0QmFzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IGRk
NTUyNzlkYzk4MDcyYTk5OGJiNGQ1ZThmYjI5ZTAwODJjZGQyYTYuLjcwZWViZDlhOGEzMDc3Y2U5
YzkwN2I4N2YxNGJiYWY0NDIxMDllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTQzLDYgKzQzLDcgQEAgbXkgJGlkbEF0dHJp
YnV0ZXM7CiBteSAkd3JpdGVEZXBlbmRlbmNpZXMgPSAwOwogbXkgJGRlZmluZXMgPSAiIjsKIG15
ICR0YXJnZXRJZGxGaWxlUGF0aCA9ICIiOworbXkgJHN1cHBsZW1lbnRhbERlcGVuZGVuY2llczsK
IAogbXkgJGNvZGVHZW5lcmF0b3IgPSAwOwogCkBAIC0xNDcsNiArMTQ4LDcgQEAgc3ViIG5ldwog
ICAgICR2ZXJib3NlID0gc2hpZnQ7CiAgICAgJHRhcmdldElkbEZpbGVQYXRoID0gc2hpZnQ7CiAg
ICAgJGlkbEF0dHJpYnV0ZXMgPSBzaGlmdDsKKyAgICAkc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
ID0gc2hpZnQ7CiAKICAgICBibGVzcygkcmVmZXJlbmNlLCAkb2JqZWN0KTsKICAgICByZXR1cm4g
JHJlZmVyZW5jZTsKQEAgLTE1OCw2ICsxNjAsOCBAQCBzdWIgUHJvY2Vzc0RvY3VtZW50CiAgICAg
JHVzZURvY3VtZW50ID0gc2hpZnQ7CiAgICAgJGRlZmluZXMgPSBzaGlmdDsKIAorICAgICRvYmpl
Y3QtPlByb2Nlc3NTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMoJHVzZURvY3VtZW50KTsKKwogICAg
IG15ICRpZmFjZU5hbWUgPSAiQ29kZUdlbmVyYXRvciIgLiAkdXNlR2VuZXJhdG9yOwogICAgIHJl
cXVpcmUgJGlmYWNlTmFtZSAuICIucG0iOwogCkBAIC0yNDMsNiArMjQ3LDEzNCBAQCBzdWIgUHJv
Y2Vzc0RvY3VtZW50CiAgICAgZGllICJQcm9jZXNzaW5nIGRvY3VtZW50ICIgLiAkdXNlRG9jdW1l
bnQtPmZpbGVOYW1lIC4gIiBkaWQgbm90IGdlbmVyYXRlIGFueXRoaW5nIgogfQogCitzdWIgUHJv
Y2Vzc1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcworeworICAgIG15ICgkb2JqZWN0LCAkdGFyZ2V0
RG9jdW1lbnQpID0gQF87CisgICAgbXkgJHRhcmdldEZpbGVOYW1lID0gZmlsZXBhcnNlKCR0YXJn
ZXREb2N1bWVudC0+ZmlsZU5hbWUpOworICAgIG15ICR0YXJnZXRJbnRlcmZhY2VOYW1lID0gZmls
ZXBhcnNlKCR0YXJnZXRGaWxlTmFtZSwgIi5pZGwiKTsKKworICAgIGlmICghJHN1cHBsZW1lbnRh
bERlcGVuZGVuY2llcykgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yZWFjaCBt
eSAkaWRsRmlsZSAoQHskc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLT57JHRhcmdldEZpbGVOYW1l
fX0pIHsKKyAgICAgICAgbmV4dCBpZiBmaWxlcGFyc2UoJGlkbEZpbGUpIGVxICR0YXJnZXRGaWxl
TmFtZTsKKworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IGZpbGVwYXJzZSgkaWRsRmlsZSwg
Ii5pZGwiKTsKKyAgICAgICAgbXkgJHBhcnNlciA9IElETFBhcnNlci0+bmV3KCEkdmVyYm9zZSk7
CisgICAgICAgIG15ICRkb2N1bWVudCA9ICRwYXJzZXItPlBhcnNlKCRpZGxGaWxlLCAkZGVmaW5l
cywgJHByZXByb2Nlc3NvciwgJGlkbEF0dHJpYnV0ZXMpOworCisgICAgICAgIGZvcmVhY2ggbXkg
JGludGVyZmFjZSAoQHskZG9jdW1lbnQtPmludGVyZmFjZXN9KSB7CisgICAgICAgICAgICBuZXh0
IHVubGVzcyAhJGludGVyZmFjZS0+aXNQYXJ0aWFsIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUg
ZXEgJHRhcmdldEludGVyZmFjZU5hbWU7CisKKyAgICAgICAgICAgIG15ICR0YXJnZXREYXRhTm9k
ZTsKKyAgICAgICAgICAgIG15IEB0YXJnZXRHbG9iYWxDb250ZXh0czsKKyAgICAgICAgICAgIGZv
cmVhY2ggbXkgJGludGVyZmFjZSAoQHskdGFyZ2V0RG9jdW1lbnQtPmludGVyZmFjZXN9KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgJHRhcmdldEludGVy
ZmFjZU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgJHRhcmdldERhdGFOb2RlID0gJGludGVy
ZmFjZTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGV4cG9zZWRBdHRyaWJ1dGUgPSAkdGFyZ2V0
RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHBvc2VkIn0gfHwgIldpbmRvdyI7Cisg
ICAgICAgICAgICAgICAgICAgICRleHBvc2VkQXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0
cmlidXRlLCAxLCAtMSkgaWYgc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7
CisgICAgICAgICAgICAgICAgICAgIEB0YXJnZXRHbG9iYWxDb250ZXh0cyA9IHNwbGl0KCIsIiwg
JGV4cG9zZWRBdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgICAgICBsYXN0OworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRpZSAiTm90IGZvdW5kIGFuIGlu
dGVyZmFjZSAke3RhcmdldEludGVyZmFjZU5hbWV9IGluICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0u
aWRsLiIgdW5sZXNzIGRlZmluZWQgJHRhcmdldERhdGFOb2RlOworCisgICAgICAgICAgICAjIFN1
cHBvcnQgZm9yIGF0dHJpYnV0ZXMgb2YgcGFydGlhbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAg
Zm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAg
ICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJGF0dHJpYnV0
ZSwgXEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7CisKKyAgICAgICAgICAgICAgICAjIFJlY29yZCB0
aGF0IHRoaXMgYXR0cmlidXRlIGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgorICAg
ICAgICAgICAgICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRl
ZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlZmxlY3R9OworCisgICAgICAgICAgICAgICAg
IyBBZGQgaW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIGF0dHJpYnV0
ZS4KKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtl
eXMgJXskaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICAgICAg
ICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5h
bWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRl
TmFtZX07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0
RGF0YU5vZGUtPmF0dHJpYnV0ZXN9LCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgIyBTdXBwb3J0IGZvciBtZXRob2RzIG9mIHBhcnRpYWwgaW50ZXJmYWNlcy4KKyAg
ICAgICAgICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25z
fSkgeworICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVFeHBvc2Vk
KCRvcGVyYXRpb24sIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOworCisgICAgICAgICAgICAgICAg
IyBSZWNvcmQgdGhhdCB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFt
ZS4KKyAgICAgICAgICAgICAgICAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1w
bGVtZW50ZWRCeSJ9ID0gJGludGVyZmFjZU5hbWUgaWYgJGludGVyZmFjZS0+aXNQYXJ0aWFsOwor
CisgICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRl
cyB0byBlYWNoIG1ldGhvZC4KKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0
dHJpYnV0ZU5hbWUgKGtleXMgJXskaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXN9KSB7Cisg
ICAgICAgICAgICAgICAgICAgICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRl
bmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4
dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkb3BlcmF0aW9uKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBjb25zdGFudHMgb2YgcGFydGlh
bCBpbnRlcmZhY2VzLgorICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGludGVy
ZmFjZS0+Y29uc3RhbnRzfSkgeworICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFBy
b3BlcnR5QmVFeHBvc2VkKCRjb25zdGFudCwgXEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7CisKKyAg
ICAgICAgICAgICAgICAjIFJlY29yZCB0aGF0IHRoaXMgY29uc3RhbnQgaXMgaW1wbGVtZW50ZWQg
YnkgJGludGVyZmFjZU5hbWUuCisgICAgICAgICAgICAgICAgJGNvbnN0YW50LT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGludGVyZmFjZU5hbWUgaWYgJGludGVyZmFj
ZS0+aXNQYXJ0aWFsOworCisgICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJmYWNlLXdpZGUgZXh0
ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIGNvbnN0YW50LgorICAgICAgICAgICAgICAgIGZvcmVh
Y2ggbXkgJGV4dGVuZGVkQXR0cmlidXRlTmFtZSAoa2V5cyAleyRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAgICAgICAgJGNvbnN0YW50LT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5jb25zdGFudHN9LCAkY29u
c3RhbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yZWFjaCBteSAk
ZGljdGlvbmFyeSAoQHskZG9jdW1lbnQtPmRpY3Rpb25hcmllc30pIHsKKyAgICAgICAgICAgIG5l
eHQgdW5sZXNzICRkaWN0aW9uYXJ5LT5pc1BhcnRpYWwgJiYgJGRpY3Rpb25hcnktPnR5cGUtPm5h
bWUgZXEgJHRhcmdldEludGVyZmFjZU5hbWU7CisKKyAgICAgICAgICAgIG15ICR0YXJnZXREYXRh
Tm9kZTsKKyAgICAgICAgICAgIG15IEB0YXJnZXRHbG9iYWxDb250ZXh0czsKKyAgICAgICAgICAg
IGZvcmVhY2ggbXkgJGRpY3Rpb25hcnkgKEB7JHRhcmdldERvY3VtZW50LT5kaWN0aW9uYXJpZXN9
KSB7CisgICAgICAgICAgICAgICAgaWYgKCRkaWN0aW9uYXJ5LT50eXBlLT5uYW1lIGVxICR0YXJn
ZXRJbnRlcmZhY2VOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICR0YXJnZXREYXRhTm9kZSA9
ICRkaWN0aW9uYXJ5OworICAgICAgICAgICAgICAgICAgICBteSAkZXhwb3NlZEF0dHJpYnV0ZSA9
ICR0YXJnZXREYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV4cG9zZWQifSB8fCAiV2lu
ZG93IjsKKyAgICAgICAgICAgICAgICAgICAgJGV4cG9zZWRBdHRyaWJ1dGUgPSBzdWJzdHIoJGV4
cG9zZWRBdHRyaWJ1dGUsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWRBdHRyaWJ1dGUsIDAsIDEp
IGVxICIoIjsKKyAgICAgICAgICAgICAgICAgICAgQHRhcmdldEdsb2JhbENvbnRleHRzID0gc3Bs
aXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgICAgIGxhc3Q7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZGllICJDb3VsZCBu
b3QgZmluZCBkaWN0aW9uYXJ5ICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRl
cmZhY2VOYW1lfS5pZGwuIiB1bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7CisKKyAgICAg
ICAgICAgICMgU3VwcG9ydCBmb3IgbWVtYmVycyBvZiBwYXJ0aWFsIGRpY3Rpb25hcmllcworICAg
ICAgICAgICAgZm9yZWFjaCBteSAkbWVtYmVyIChAeyRkaWN0aW9uYXJ5LT5tZW1iZXJzfSkgewor
ICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRtZW1i
ZXIsIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOworCisgICAgICAgICAgICAgICAgIyBSZWNvcmQg
dGhhdCB0aGlzIG1lbWJlciBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4KKyAgICAg
ICAgICAgICAgICAkbWVtYmVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9
ID0gJGludGVyZmFjZU5hbWU7CisKKyAgICAgICAgICAgICAgICAjIEFkZCBpbnRlcmZhY2Utd2lk
ZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggbWVtYmVyLgorICAgICAgICAgICAgICAgIGZv
cmVhY2ggbXkgJGV4dGVuZGVkQXR0cmlidXRlTmFtZSAoa2V5cyAleyRkaWN0aW9uYXJ5LT5leHRl
bmRlZEF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICAgICAgICAgICRtZW1iZXItPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGRpY3Rpb25hcnktPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5tZW1iZXJzfSwgJG1l
bWJlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKyMgQXR0cmlidXRl
cyAvIE9wZXJhdGlvbnMgLyBDb25zdGFudHMgb2Ygc3VwcGxlbWVudGFsIGludGVyZmFjZXMgY2Fu
IGhhdmUgYW4gW0V4cG9zZWQ9WFhdIGF0dHJpYnV0ZSB3aGljaCByZXN0cmljdHMKKyMgb24gd2hp
Y2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJlIGV4cG9zZWQuCitzdWIgc2hvdWxkUHJv
cGVydHlCZUV4cG9zZWQKK3sKKyAgICBteSAoJGNvbnRleHQsICR0YXJnZXRHbG9iYWxDb250ZXh0
cykgPSBAXzsKKworICAgIG15ICRleHBvc2VkID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0V4cG9zZWR9OworCisgICAgcmV0dXJuIDEgdW5sZXNzICRleHBvc2VkOworCisgICAgJGV4
cG9zZWQgPSBzdWJzdHIoJGV4cG9zZWQsIDEsIC0xKSBpZiBzdWJzdHIoJGV4cG9zZWQsIDAsIDEp
IGVxICIoIjsKKyAgICBteSBAc291cmNlR2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBv
c2VkKTsKKworICAgIGZvciBteSAkdGFyZ2V0R2xvYmFsQ29udGV4dCAoQCR0YXJnZXRHbG9iYWxD
b250ZXh0cykgeworICAgICAgICByZXR1cm4gMSBpZiBncmVwKC9eJHRhcmdldEdsb2JhbENvbnRl
eHQkLywgQHNvdXJjZUdsb2JhbENvbnRleHRzKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK
IHN1YiBGaWxlTmFtZVByZWZpeAogewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKQEAgLTU1Myw2
ICs2ODUsOCBAQCBzdWIgR2V0RGljdGlvbmFyeUJ5VHlwZQogICAgICAgICBteSAkcGFyc2VyID0g
SURMUGFyc2VyLT5uZXcoMSk7CiAgICAgICAgIG15ICRkb2N1bWVudCA9ICRwYXJzZXItPlBhcnNl
KCRmaWxlbmFtZSwgJGRlZmluZXMsICRwcmVwcm9jZXNzb3IsICRpZGxBdHRyaWJ1dGVzKTsKIAor
ICAgICAgICAkb2JqZWN0LT5Qcm9jZXNzU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzKCRkb2N1bWVu
dCk7CisKICAgICAgICAgZm9yZWFjaCBteSAkZGljdGlvbmFyeSAoQHskZG9jdW1lbnQtPmRpY3Rp
b25hcmllc30pIHsKICAgICAgICAgICAgIG5leHQgdW5sZXNzICRkaWN0aW9uYXJ5LT50eXBlLT5u
YW1lIGVxICRuYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAppbmRleCA0YWI1NmYyNmI4OTQ0MTA4ZjM1ZWQxY2EwYzlh
NGYxMWQ5MzE1YTY5Li41M2VlZWVhNmNjZjgzZGQxMmZkZmVjYWQ0YTY5OGQ0NTliY2E5OTAxIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRp
bmdzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmlu
ZGluZ3MucGwKQEAgLTk0LDcgKzk0LDcgQEAgc3ViIGdlbmVyYXRlQmluZGluZ3MKICAgICBteSAk
dGFyZ2V0SW50ZXJmYWNlTmFtZSA9IGZpbGVwYXJzZSgkdGFyZ2V0SWRsRmlsZSwgIi5pZGwiKTsK
IAogICAgIG15ICRpZGxGb3VuZCA9IDA7Ci0gICAgbXkgQHN1cHBsZW1lbnRlZElkbEZpbGVzOwor
ICAgIG15ICVzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXM7CiAgICAgaWYgKCRzdXBwbGVtZW50YWxE
ZXBlbmRlbmN5RmlsZSkgewogICAgICAgICAjIFRoZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwg
ZGVwZW5kZW5jeSBmaWxlOgogICAgICAgICAjCkBAIC0xMDksMTMgKzEwOSwxNCBAQCBzdWIgZ2Vu
ZXJhdGVCaW5kaW5ncwogICAgICAgICBvcGVuIEZILCAiPCAkc3VwcGxlbWVudGFsRGVwZW5kZW5j
eUZpbGUiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlXG4i
OwogICAgICAgICB3aGlsZSAobXkgJGxpbmUgPSA8Rkg+KSB7CiAgICAgICAgICAgICBteSAoJGlk
bEZpbGUsIEBmb2xsb3dpbmdJZGxGaWxlcykgPSBzcGxpdCgvXHMrLywgJGxpbmUpOwotICAgICAg
ICAgICAgaWYgKCRpZGxGaWxlIGFuZCBmaWxlcGFyc2UoJGlkbEZpbGUpIGVxIGZpbGVwYXJzZSgk
dGFyZ2V0SWRsRmlsZSkpIHsKLSAgICAgICAgICAgICAgICAkaWRsRm91bmQgPSAxOwotICAgICAg
ICAgICAgICAgIEBzdXBwbGVtZW50ZWRJZGxGaWxlcyA9IHNvcnQgQGZvbGxvd2luZ0lkbEZpbGVz
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgJHN1cHBsZW1lbnRhbERlcGVuZGVuY2llc3tm
aWxlcGFyc2UoJGlkbEZpbGUpfSA9IFtzb3J0IEBmb2xsb3dpbmdJZGxGaWxlc10gaWYgJGlkbEZp
bGU7CiAgICAgICAgIH0KICAgICAgICAgY2xvc2UgRkg7CiAKKyAgICAgICAgaWYgKGV4aXN0cyAk
c3VwcGxlbWVudGFsRGVwZW5kZW5jaWVze2ZpbGVwYXJzZSgkdGFyZ2V0SWRsRmlsZSl9KSB7Cisg
ICAgICAgICAgICAkaWRsRm91bmQgPSAxOworICAgICAgICB9CisKICAgICAgICAgIyAkYWRkaXRp
b25hbElkbEZpbGVzIGlzIGxpc3Qgb2YgSURMIGZpbGVzIHdoaWNoIHNob3VsZCBub3QgYmUgaW5j
bHVkZWQgaW4KICAgICAgICAgIyBEZXJpdmVkU291cmNlcyouY3BwIChpLmUuIHRoZXkgYXJlIG5v
dCBkZXNjcmliZWQgaW4gdGhlIHN1cHBsZW1lbnRhbAogICAgICAgICAjIGRlcGVuZGVuY3kgZmls
ZSkgYnV0IHNob3VsZCBnZW5lcmF0ZSAuaCBhbmQgLmNwcCBmaWxlcy4KQEAgLTE0OSwxMjggKzE1
MCwxMSBAQCBzdWIgZ2VuZXJhdGVCaW5kaW5ncwogICAgIG15ICR0YXJnZXRQYXJzZXIgPSBJRExQ
YXJzZXItPm5ldyghJHZlcmJvc2UpOwogICAgIG15ICR0YXJnZXREb2N1bWVudCA9ICR0YXJnZXRQ
YXJzZXItPlBhcnNlKCR0YXJnZXRJZGxGaWxlLCAkZGVmaW5lcywgJHByZXByb2Nlc3NvciwgJGlk
bEF0dHJpYnV0ZXMpOwogCi0gICAgZm9yZWFjaCBteSAkaWRsRmlsZSAoQHN1cHBsZW1lbnRlZElk
bEZpbGVzKSB7Ci0gICAgICAgIG5leHQgaWYgJGlkbEZpbGUgZXEgJHRhcmdldElkbEZpbGU7Ci0K
LSAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2UoJGlkbEZpbGUsICIuaWRsIik7
Ci0gICAgICAgIG15ICRwYXJzZXIgPSBJRExQYXJzZXItPm5ldyghJHZlcmJvc2UpOwotICAgICAg
ICBteSAkZG9jdW1lbnQgPSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRlZmluZXMsICRwcmVw
cm9jZXNzb3IsICRpZGxBdHRyaWJ1dGVzKTsKLQotICAgICAgICBmb3JlYWNoIG15ICRpbnRlcmZh
Y2UgKEB7JGRvY3VtZW50LT5pbnRlcmZhY2VzfSkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3Mg
ISRpbnRlcmZhY2UtPmlzUGFydGlhbCB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICR0YXJn
ZXRJbnRlcmZhY2VOYW1lOwotCi0gICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7Ci0gICAg
ICAgICAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHM7Ci0gICAgICAgICAgICBmb3JlYWNoIG15
ICRpbnRlcmZhY2UgKEB7JHRhcmdldERvY3VtZW50LT5pbnRlcmZhY2VzfSkgewotICAgICAgICAg
ICAgICAgIGlmICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1l
KSB7Ci0gICAgICAgICAgICAgICAgICAgICR0YXJnZXREYXRhTm9kZSA9ICRpbnRlcmZhY2U7Ci0g
ICAgICAgICAgICAgICAgICAgIG15ICRleHBvc2VkQXR0cmlidXRlID0gJHRhcmdldERhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwotICAgICAgICAg
ICAgICAgICAgICAkZXhwb3NlZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwg
MSwgLTEpIGlmIHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEgIigiOwotICAgICAg
ICAgICAgICAgICAgICBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2Vk
QXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICAgICAgbGFzdDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkaWUgIk5vdCBmb3VuZCBhbiBpbnRlcmZhY2Ug
JHt0YXJnZXRJbnRlcmZhY2VOYW1lfSBpbiAke3RhcmdldEludGVyZmFjZU5hbWV9LmlkbC4iIHVu
bGVzcyBkZWZpbmVkICR0YXJnZXREYXRhTm9kZTsKLQotICAgICAgICAgICAgIyBTdXBwb3J0IGZv
ciBhdHRyaWJ1dGVzIG9mIHBhcnRpYWwgaW50ZXJmYWNlcy4KLSAgICAgICAgICAgIGZvcmVhY2gg
bXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAg
ICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRhdHRyaWJ1dGUsIFxAdGFy
Z2V0R2xvYmFsQ29udGV4dHMpOwotCi0gICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlz
IGF0dHJpYnV0ZSBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4KLSAgICAgICAgICAg
ICAgICAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0g
JGludGVyZmFjZU5hbWUgaWYgJGludGVyZmFjZS0+aXNQYXJ0aWFsICYmICEkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntSZWZsZWN0fTsKLQotICAgICAgICAgICAgICAgICMgQWRkIGlu
dGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBhdHRyaWJ1dGUuCi0gICAg
ICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgICAgICAgICAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9Owot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2Rl
LT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICMgU3VwcG9ydCBmb3IgbWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0gICAgICAgICAg
ICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAg
ICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkb3BlcmF0
aW9uLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKLQotICAgICAgICAgICAgICAgICMgUmVjb3Jk
IHRoYXQgdGhpcyBtZXRob2QgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCi0gICAg
ICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKLQotICAgICAg
ICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFj
aCBtZXRob2QuCi0gICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVO
YW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewotICAgICAgICAg
ICAgICAgICAgICAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRy
aWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0
dHJpYnV0ZU5hbWV9OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEB7
JHRhcmdldERhdGFOb2RlLT5vcGVyYXRpb25zfSwgJG9wZXJhdGlvbik7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICMgU3VwcG9ydCBmb3IgY29uc3RhbnRzIG9mIHBhcnRpYWwgaW50ZXJm
YWNlcy4KLSAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0YW50IChAeyRpbnRlcmZhY2UtPmNv
bnN0YW50c30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJl
RXhwb3NlZCgkY29uc3RhbnQsIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOwotCi0gICAgICAgICAg
ICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIGltcGxlbWVudGVkIGJ5ICRpbnRl
cmZhY2VOYW1lLgotICAgICAgICAgICAgICAgICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFy
dGlhbDsKLQotICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0
dHJpYnV0ZXMgdG8gZWFjaCBjb25zdGFudC4KLSAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRl
eHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXN9KSB7Ci0gICAgICAgICAgICAgICAgICAgICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX0gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+Y29uc3RhbnRzfSwgJGNvbnN0YW50KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZvcmVhY2ggbXkgJGRpY3Rpb25h
cnkgKEB7JGRvY3VtZW50LT5kaWN0aW9uYXJpZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVz
cyAkZGljdGlvbmFyeS0+aXNQYXJ0aWFsICYmICRkaWN0aW9uYXJ5LT50eXBlLT5uYW1lIGVxICR0
YXJnZXRJbnRlcmZhY2VOYW1lOwotCi0gICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7Ci0g
ICAgICAgICAgICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHM7Ci0gICAgICAgICAgICBmb3JlYWNo
IG15ICRkaWN0aW9uYXJ5IChAeyR0YXJnZXREb2N1bWVudC0+ZGljdGlvbmFyaWVzfSkgewotICAg
ICAgICAgICAgICAgIGlmICgkZGljdGlvbmFyeS0+dHlwZS0+bmFtZSBlcSAkdGFyZ2V0SW50ZXJm
YWNlTmFtZSkgewotICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0RGF0YU5vZGUgPSAkZGljdGlv
bmFyeTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGV4cG9zZWRBdHRyaWJ1dGUgPSAkdGFyZ2V0
RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHBvc2VkIn0gfHwgIldpbmRvdyI7Ci0g
ICAgICAgICAgICAgICAgICAgICRleHBvc2VkQXR0cmlidXRlID0gc3Vic3RyKCRleHBvc2VkQXR0
cmlidXRlLCAxLCAtMSkgaWYgc3Vic3RyKCRleHBvc2VkQXR0cmlidXRlLCAwLCAxKSBlcSAiKCI7
Ci0gICAgICAgICAgICAgICAgICAgIEB0YXJnZXRHbG9iYWxDb250ZXh0cyA9IHNwbGl0KCIsIiwg
JGV4cG9zZWRBdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgICAgICBsYXN0OwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRpZSAiQ291bGQgbm90IGZpbmQg
ZGljdGlvbmFyeSAke3RhcmdldEludGVyZmFjZU5hbWV9IGluICR7dGFyZ2V0SW50ZXJmYWNlTmFt
ZX0uaWRsLiIgdW5sZXNzIGRlZmluZWQgJHRhcmdldERhdGFOb2RlOwotCi0gICAgICAgICAgICAj
IFN1cHBvcnQgZm9yIG1lbWJlcnMgb2YgcGFydGlhbCBkaWN0aW9uYXJpZXMKLSAgICAgICAgICAg
IGZvcmVhY2ggbXkgJG1lbWJlciAoQHskZGljdGlvbmFyeS0+bWVtYmVyc30pIHsKLSAgICAgICAg
ICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkbWVtYmVyLCBcQHRh
cmdldEdsb2JhbENvbnRleHRzKTsKLQotICAgICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhp
cyBtZW1iZXIgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCi0gICAgICAgICAgICAg
ICAgJG1lbWJlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRl
cmZhY2VOYW1lOwotCi0gICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJmYWNlLXdpZGUgZXh0ZW5k
ZWQgYXR0cmlidXRlcyB0byBlYWNoIG1lbWJlci4KLSAgICAgICAgICAgICAgICBmb3JlYWNoIG15
ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskZGljdGlvbmFyeS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzfSkgewotICAgICAgICAgICAgICAgICAgICAkbWVtYmVyLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRkaWN0aW9uYXJ5LT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+bWVtYmVyc30sICRtZW1iZXIpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgIyBHZW5lcmF0ZSBkZXNpcmVk
IG91dHB1dCBmb3IgdGhlIHRhcmdldCBJREwgZmlsZS4KLSAgICBteSAkY29kZUdlbiA9IENvZGVH
ZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0
b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5k
ZW5jaWVzLCAkdmVyYm9zZSwgJHRhcmdldElkbEZpbGUsICRpZGxBdHRyaWJ1dGVzKTsKKyAgICBt
eSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJh
dG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nl
c3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9zZSwgJHRhcmdldElkbEZpbGUsICRpZGxB
dHRyaWJ1dGVzLCBcJXN1cHBsZW1lbnRhbERlcGVuZGVuY2llcyk7CiAgICAgJGNvZGVHZW4tPlBy
b2Nlc3NEb2N1bWVudCgkdGFyZ2V0RG9jdW1lbnQsICRkZWZpbmVzKTsKIH0KIAotIyBBdHRyaWJ1
dGVzIC8gT3BlcmF0aW9ucyAvIENvbnN0YW50cyBvZiBzdXBwbGVtZW50YWwgaW50ZXJmYWNlcyBj
YW4gaGF2ZSBhbiBbRXhwb3NlZD1YWF0gYXR0cmlidXRlIHdoaWNoIHJlc3RyaWN0cwotIyBvbiB3
aGljaCBnbG9iYWwgY29udGV4dHMgdGhleSBzaG91bGQgYmUgZXhwb3NlZC4KLXN1YiBzaG91bGRQ
cm9wZXJ0eUJlRXhwb3NlZAotewotICAgIG15ICgkY29udGV4dCwgJHRhcmdldEdsb2JhbENvbnRl
eHRzKSA9IEBfOwotCi0gICAgbXkgJGV4cG9zZWQgPSAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RXhwb3NlZH07Ci0KLSAgICByZXR1cm4gMSB1bmxlc3MgJGV4cG9zZWQ7Ci0KLSAgICAk
ZXhwb3NlZCA9IHN1YnN0cigkZXhwb3NlZCwgMSwgLTEpIGlmIHN1YnN0cigkZXhwb3NlZCwgMCwg
MSkgZXEgIigiOwotICAgIG15IEBzb3VyY2VHbG9iYWxDb250ZXh0cyA9IHNwbGl0KCIsIiwgJGV4
cG9zZWQpOwotCi0gICAgZm9yIG15ICR0YXJnZXRHbG9iYWxDb250ZXh0IChAJHRhcmdldEdsb2Jh
bENvbnRleHRzKSB7Ci0gICAgICAgIHJldHVybiAxIGlmIGdyZXAoL14kdGFyZ2V0R2xvYmFsQ29u
dGV4dCQvLCBAc291cmNlR2xvYmFsQ29udGV4dHMpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0K
LQogc3ViIGdlbmVyYXRlRW1wdHlIZWFkZXJBbmRDcHAKIHsKICAgICBteSAoJHByZWZpeCwgJHRh
cmdldEludGVyZmFjZU5hbWUsICRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5LCAkb3V0cHV0RGlyZWN0
b3J5KSA9IEBfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGJhM2RiMTg3N2EwMmNiMzczOTc3ZTc5Y2EwMjFmZmY1Njg5ODY5YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeS5jcHAKQEAgLTAsMCArMSwyMzQgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdERlcml2ZWREaWN0aW9u
YXJ5LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydEJv
b2xlYW4uaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJK
U0RPTUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgor
I2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWb2lkQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgor
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3RlbXBsYXRl
PD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGlj
dGlvbmFyeT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIGJvb2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpOworICAgIGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZh
bHVlLmdldE9iamVjdCgpOworICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYg
IW9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgVGVzdERlcml2ZWREaWN0aW9uYXJ5IHJl
c3VsdDsKKyAgICBKU1ZhbHVlIGJvb2xNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRl
ZmluZWQpCisgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFib29sTWVtYmVyVmFs
dWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuYm9vbE1lbWJlciA9IGNvbnZlcnQ8
SURMQm9vbGVhbj4oc3RhdGUsIGJvb2xNZW1iZXJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBjYWxsYmFja01l
bWJlclZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgY2FsbGJhY2tN
ZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIGNhbGxiYWNr
TWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihzdGF0ZSwgY2FsbGJhY2tNZW1iZXJWYWx1
ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3Qo
KSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAg
fQorICAgIEpTVmFsdWUgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxs
T3JVbmRlZmluZWQpCisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBqc1VuZGVm
aW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0g
b2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJv
b2xlYW5NZW1iZXIiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxCb29sZWFuTWVtYmVyID0gY29udmVydDxJ
RExCb29sZWFuPihzdGF0ZSwgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisjaWYgRU5BQkxFKENv
bmRpdGlvbmFsMTUpCisgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRp
b25hbFZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbEJv
b2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSBv
YmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9v
bGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXBhcnRpYWxCb29sZWFuTWVtYmVy
V2l0aENvbmRpdGlvbmFsVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQucGFy
dGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0
YXRlLCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyNlbmRpZgorICAg
IEpTVmFsdWUgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQorICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7CisgICAgZWxzZSB7CisgICAgICAgIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gb2Jq
ZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbENhbGxi
YWNrTWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CisgICAgfQorICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4oc3RhdGUsIHBhcnRpYWxDYWxsYmFj
a01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEds
b2JhbE9iamVjdCgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWU7
CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25n
TWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFs
UmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIikpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFy
dGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVz
dWx0LnBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIgPSBjb252ZXJ0PElETExvbmc+KHN0YXRlLCBw
YXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhyb3dSZXF1aXJl
ZE1lbWJlclR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgInBhcnRpYWxSZXF1aXJlZExvbmdN
ZW1iZXIiLCAiVGVzdERlcml2ZWREaWN0aW9uYXJ5IiwgImxvbmciKTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisgICAgSlNWYWx1ZSBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWU7CisgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVy
VmFsdWUgPSBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsU3RyaW5nTWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbFN0cmluZ01lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxTdHJpbmdNZW1iZXIgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNW
YWx1ZSBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZTsKKyAgICBp
ZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5h
YmxlZEJ5U2V0dGluZ1ZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
cGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVy
V2l0aEVuYWJsZWRCeVNldHRpbmciKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVu
YWJsZWRCeVNldHRpbmdWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5wYXJ0
aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmcgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oc3RhdGUsIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAg
ICBKU1ZhbHVlIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVl
OworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbFVuc2lnbmVkTG9u
Z01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2Ug
eworICAgICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRp
YWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyIpKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXBhcnRpYWxV
bnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
KyAgICAgICAgcmVzdWx0LnBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXIgPSBjb252ZXJ0PElETFVu
c2lnbmVkTG9uZz4oc3RhdGUsIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50
ZWRBc1ZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OworICAgIH0KKyAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVlOworICAgIGlmIChpc051bGxP
clVuZGVmaW5lZCkKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwor
ICAgIGVsc2UgeworICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01lbWJlciIpKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXN0
cmluZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnN0cmluZ01l
bWJlciA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgc3RyaW5nTWVtYmVyVmFsdWUpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAg
IEpTVmFsdWUgZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCisgICAgICAgIGRlcml2ZWRCb29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAg
IGVsc2UgeworICAgICAgICBkZXJpdmVkQm9vbE1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJnN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIiKSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAg
aWYgKCFkZXJpdmVkQm9vbE1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVz
dWx0LmRlcml2ZWRCb29sTWVtYmVyID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgZGVyaXZl
ZEJvb2xNZW1iZXJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDOjpKU09iamVjdCog
Y29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgVGVzdERlcml2ZWREaWN0aW9uYXJ5JiBkaWN0aW9u
YXJ5KQoreworICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKKworICAgIGF1dG8gcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlLCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBl
KCkpOworCisgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmJvb2xN
ZW1iZXIpKSB7CisgICAgICAgIGF1dG8gYm9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFu
PihJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29sTWVt
YmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJib29sTWVtYmVyIiksIGJvb2xNZW1iZXJWYWx1ZSk7CisgICAgfQorICAg
IGlmICghSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46OmlzTnVsbFZhbHVlKGRp
Y3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gY2FsbGJhY2tNZW1iZXJW
YWx1ZSA9IHRvSlM8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KHN0YXRlLCBn
bG9iYWxPYmplY3QsIElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+OjpleHRyYWN0
VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2Fs
bGJhY2tNZW1iZXIiKSwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgfQorICAgIGlmICghSURM
Qm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJlcikpIHsK
KyAgICAgICAgYXV0byBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFu
PihJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFs
Qm9vbGVhbk1lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiKSwgcGFydGlhbEJv
b2xlYW5NZW1iZXJWYWx1ZSk7CisgICAgfQorI2lmIEVOQUJMRShDb25kaXRpb25hbDE1KQorICAg
IGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1l
bWJlcldpdGhDb25kaXRpb25hbCkpIHsKKyAgICAgICAgYXV0byBwYXJ0aWFsQm9vbGVhbk1lbWJl
cldpdGhDb25kaXRpb25hbFZhbHVlID0gdG9KUzxJRExCb29sZWFuPihJRExCb29sZWFuOjpleHRy
YWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhD
b25kaXRpb25hbCkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwi
KSwgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSk7CisgICAgfQorI2Vu
ZGlmCisgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6aXNOdWxs
VmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIpKSB7CisgICAgICAgIGF1dG8g
cGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVuY3Rpb248SlNW
b2lkQ2FsbGJhY2s+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBJRExDYWxsYmFja0Z1bmN0aW9uPEpT
Vm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlh
bENhbGxiYWNrTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiKSwgcGFydGlh
bENhbGxiYWNrTWVtYmVyVmFsdWUpOworICAgIH0KKyAgICBhdXRvIHBhcnRpYWxSZXF1aXJlZExv
bmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMTG9uZz4oZGljdGlvbmFyeS5wYXJ0aWFsUmVxdWlyZWRM
b25nTWVtYmVyKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciIpLCBwYXJ0aWFsUmVxdWly
ZWRMb25nTWVtYmVyVmFsdWUpOworICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1ZShk
aWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gcGFydGlhbFN0
cmluZ01lbWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBJRExET01TdHJpbmc6
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIp
KTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiKSwgcGFydGlhbFN0cmluZ01lbWJlclZhbHVl
KTsKKyAgICB9CisgICAgaWYgKGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGlu
Z3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkgeworICAgICAgICBpZiAoIUlETERPTVN0cmluZzo6
aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNl
dHRpbmcpKSB7CisgICAgICAgICAgICBhdXRvIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxl
ZEJ5U2V0dGluZ1ZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBJRExET01TdHJpbmc6
OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJX
aXRoRW5hYmxlZEJ5U2V0dGluZykpOworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXJXaXRo
RW5hYmxlZEJ5U2V0dGluZyIpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRp
bmdWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFJRExVbnNpZ25lZExvbmc6Omlz
TnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcikpIHsKKyAgICAg
ICAgYXV0byBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSA9
IHRvSlM8SURMVW5zaWduZWRMb25nPihJRExVbnNpZ25lZExvbmc6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXIpKTsKKyAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBh
cnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyIpLCBwYXJ0aWFsVW5zaWdu
ZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSk7CisgICAgfQorICAgIGlmICghSURM
RE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJlcikpIHsKKyAgICAg
ICAgYXV0byBzdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgSURM
RE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zdHJpbmdNZW1i
ZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInN0cmluZ01lbWJlciIpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgfQor
ICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5kZXJpdmVkQm9vbE1l
bWJlcikpIHsKKyAgICAgICAgYXV0byBkZXJpdmVkQm9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExC
b29sZWFuPihJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5k
ZXJpdmVkQm9vbE1lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIiKSwgZGVyaXZlZEJv
b2xNZW1iZXJWYWx1ZSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDQyMDBlNjI2YTgwMGMwOGQzM2NkYzY2NGZkZGU2NDE3OWRjNWU3ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnREaWN0aW9uYXJ5LmgiCisj
aW5jbHVkZSAiVGVzdERlcml2ZWREaWN0aW9uYXJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVz
dERlcml2ZWREaWN0aW9uYXJ5PihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CisKK0pT
Qzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9N
R2xvYmFsT2JqZWN0JiwgY29uc3QgVGVzdERlcml2ZWREaWN0aW9uYXJ5Jik7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMTA3Yzc4NzEyOWE0MmUzYzkyNWY5MmYxYTc0MDdmODRmMmRiY2JkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwCkBAIC0wLDAgKzEsMjE5IEBACisvKgorICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RJbmhl
cml0ZWREaWN0aW9uYXJ5LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpT
RE9NQ29udmVydEJvb2xlYW4uaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRDYWxsYmFja3MuaCIK
KyNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0
U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNW
b2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25z
dHJ1Y3Rvci5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK3RlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8
VGVzdEluaGVyaXRlZERpY3Rpb25hcnk+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
Cit7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5l
ZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVs
bE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRlc3RJbmhl
cml0ZWREaWN0aW9uYXJ5IHJlc3VsdDsKKyAgICBKU1ZhbHVlIGJvb2xNZW1iZXJWYWx1ZTsKKyAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9IG9iamVjdC0+
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAg
aWYgKCFib29sTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuYm9v
bE1lbWJlciA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIGJvb2xNZW1iZXJWYWx1ZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAg
SlNWYWx1ZSBjYWxsYmFja01lbWJlclZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkK
KyAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7
CisgICAgICAgIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIWNhbGxiYWNr
TWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1i
ZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihzdGF0ZSwg
Y2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxl
eGljYWxHbG9iYWxPYmplY3QoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1
ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVt
YmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsQm9v
bGVhbk1lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0aWFsQm9vbGVhbk1l
bWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxCb29sZWFu
TWVtYmVyID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgcGFydGlhbEJvb2xlYW5NZW1iZXJW
YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAg
ICB9CisjaWYgRU5BQkxFKENvbmRpdGlvbmFsMTUpCisgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVh
bk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkK
KyAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENv
bmRpdGlvbmFsVmFsdWUgPSBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCIpKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXBh
cnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICByZXN1bHQucGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwgPSBjb252
ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25h
bFZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwor
ICAgIH0KKyNlbmRpZgorICAgIEpTVmFsdWUgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWU7Cisg
ICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIHBhcnRpYWxDYWxsYmFj
a01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAicGFydGlhbENhbGxiYWNrTWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVt
YmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNr
TWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4oc3Rh
dGUsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBwYXJ0aWFsUmVxdWly
ZWRMb25nTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBw
YXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2Ug
eworICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgm
c3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVt
YmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Cisg
ICAgfQorICAgIGlmICghcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIgPSBjb252ZXJ0
PElETExvbmc+KHN0YXRlLCBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGhyb3dSZXF1aXJlZE1lbWJlclR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgInBh
cnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiLCAiVGVzdEluaGVyaXRlZERpY3Rpb25hcnkiLCAibG9u
ZyIpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBKU1ZhbHVlIHBhcnRpYWxTdHJp
bmdNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHBhcnRp
YWxTdHJpbmdNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAg
IHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxTdHJpbmdNZW1iZXIiKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0aWFs
U3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQucGFydGlh
bFN0cmluZ01lbWJlciA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgcGFydGlhbFN0cmlu
Z01lbWJlclZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5
U2V0dGluZ1ZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlh
bFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwor
ICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRp
bmdWYWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyIpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXBhcnRp
YWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
KyAgICAgICAgcmVzdWx0LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFi
bGVkQnlTZXR0aW5nVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldp
dGhJbXBsZW1lbnRlZEFzVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAg
ICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJX
aXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAicGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFz
IikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAg
fQorICAgIGlmICghcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFs
dWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQucGFydGlhbFVuc2lnbmVkTG9uZ01l
bWJlciA9IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nPihzdGF0ZSwgcGFydGlhbFVuc2lnbmVkTG9u
Z01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgc3RyaW5nTWVtYmVyVmFs
dWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBzdHJpbmdNZW1iZXJWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIHN0cmluZ01lbWJlclZhbHVl
ID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5n
TWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgfQorICAgIGlmICghc3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICByZXN1bHQuc3RyaW5nTWVtYmVyID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCBz
dHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDOjpKU09iamVjdCog
Y29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgVGVzdEluaGVyaXRlZERpY3Rpb25hcnkmIGRpY3Rp
b25hcnkpCit7CisgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworCisgICAgYXV0byByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3RhdGUsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5
cGUoKSk7CisKKyAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuYm9v
bE1lbWJlcikpIHsKKyAgICAgICAgYXV0byBib29sTWVtYmVyVmFsdWUgPSB0b0pTPElETEJvb2xl
YW4+KElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmJvb2xN
ZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSwgYm9vbE1lbWJlclZhbHVlKTsKKyAgICB9Cisg
ICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6aXNOdWxsVmFsdWUo
ZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpIHsKKyAgICAgICAgYXV0byBjYWxsYmFja01lbWJl
clZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4oc3RhdGUs
IGdsb2JhbE9iamVjdCwgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
YWxsYmFja01lbWJlciIpLCBjYWxsYmFja01lbWJlclZhbHVlKTsKKyAgICB9CisgICAgaWYgKCFJ
RExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyKSkg
eworICAgICAgICBhdXRvIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSB0b0pTPElETEJvb2xl
YW4+KElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRp
YWxCb29sZWFuTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6Oklk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlciIpLCBwYXJ0aWFs
Qm9vbGVhbk1lbWJlclZhbHVlKTsKKyAgICB9CisjaWYgRU5BQkxFKENvbmRpdGlvbmFsMTUpCisg
ICAgaWYgKCFJRExCb29sZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFu
TWVtYmVyV2l0aENvbmRpdGlvbmFsKSkgeworICAgICAgICBhdXRvIHBhcnRpYWxCb29sZWFuTWVt
YmVyV2l0aENvbmRpdGlvbmFsVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KElETEJvb2xlYW46OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxCb29sZWFuTWVtYmVyV2l0
aENvbmRpdGlvbmFsKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25h
bCIpLCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Ojppc051
bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxDYWxsYmFja01lbWJlcikpIHsKKyAgICAgICAgYXV0
byBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQ2FsbGJhY2tGdW5jdGlvbjxK
U1ZvaWRDYWxsYmFjaz4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIElETENhbGxiYWNrRnVuY3Rpb248
SlNWb2lkQ2FsbGJhY2s+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0
aWFsQ2FsbGJhY2tNZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciIpLCBwYXJ0
aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgfQorICAgIGF1dG8gcGFydGlhbFJlcXVpcmVk
TG9uZ01lbWJlclZhbHVlID0gdG9KUzxJRExMb25nPihkaWN0aW9uYXJ5LnBhcnRpYWxSZXF1aXJl
ZExvbmdNZW1iZXIpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIiksIHBhcnRpYWxSZXF1
aXJlZExvbmdNZW1iZXJWYWx1ZSk7CisgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVsbFZhbHVl
KGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcikpIHsKKyAgICAgICAgYXV0byBwYXJ0aWFs
U3RyaW5nTWVtYmVyVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIElETERPTVN0cmlu
Zzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJl
cikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciIpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFs
dWUpOworICAgIH0KKyAgICBpZiAoZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0
aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKSB7CisgICAgICAgIGlmICghSURMRE9NU3RyaW5n
Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5
U2V0dGluZykpIHsKKyAgICAgICAgICAgIGF1dG8gcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFi
bGVkQnlTZXR0aW5nVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIElETERPTVN0cmlu
Zzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJl
cldpdGhFbmFibGVkQnlTZXR0aW5nKSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldp
dGhFbmFibGVkQnlTZXR0aW5nIiksIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0
dGluZ1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIUlETFVuc2lnbmVkTG9uZzo6
aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyKSkgeworICAg
ICAgICBhdXRvIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVl
ID0gdG9KUzxJRExVbnNpZ25lZExvbmc+KElETFVuc2lnbmVkTG9uZzo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcikpOworICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
cGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzIiksIHBhcnRpYWxVbnNp
Z25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlKTsKKyAgICB9CisgICAgaWYgKCFJ
RExET01TdHJpbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuc3RyaW5nTWVtYmVyKSkgeworICAg
ICAgICBhdXRvIHN0cmluZ01lbWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBJ
RExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ01l
bWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIiksIHN0cmluZ01lbWJlclZhbHVlKTsKKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVy
aXRlZERpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ4ZTZlMGJkZGVhN2U2
MDY5MTNlMDgxMDYxZTE4ZGUwZWJhMzQwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmgK
QEAgLTAsMCArMSwzMiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTRE9NQ29udmVydERpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPD4g
VGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdEluaGVyaXRlZERp
Y3Rpb25hcnk+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKKworSlNDOjpKU09iamVj
dCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBjb25zdCBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeSYpOworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdERlcml2ZWREaWN0aW9uYXJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0RGVyaXZlZERpY3Rpb25hcnkuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNTk2N2FhOTk1
ZmI1MGUwY2Y1MDc4OTkwZDk4MzQ0ODA4MWYyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERlcml2ZWREaWN0aW9uYXJ5LmlkbApA
QCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
CitdIGRpY3Rpb25hcnkgVGVzdERlcml2ZWREaWN0aW9uYXJ5IDogVGVzdEluaGVyaXRlZERpY3Rp
b25hcnkgeworICAgIGJvb2xlYW4gZGVyaXZlZEJvb2xNZW1iZXI7Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmhlcml0ZWREaWN0aW9u
YXJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW5oZXJp
dGVkRGljdGlvbmFyeS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg2ZGYzMTNlYjk0ODgwNmRiODM1YTZmMWEz
MTYyZWM0OGRiOThjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5pZGwKQEAgLTAsMCArMSwzMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1sKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdAorXSBkaWN0aW9uYXJ5
IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IHsKKyAgICBib29sZWFuIGJvb2xNZW1iZXI7CisgICAg
RE9NU3RyaW5nIHN0cmluZ01lbWJlcjsKKyAgICBWb2lkQ2FsbGJhY2sgY2FsbGJhY2tNZW1iZXI7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RTdXBwbGVtZW50YWwuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RTdXBwbGVtZW50YWwuaWRsCmluZGV4IDI0N2ZlNWJjNGY5OWM0NTgyNzBlYjQ1MDRlZmUz
YTMzNjcxNjYxNTMuLjZmYTg5M2U4Zjg4NDBmOWMwMWQ2ZjJmMTA0ZWM4MjE5NTYxYjIzMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0U3VwcGxl
bWVudGFsLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dFN1cHBsZW1lbnRhbC5pZGwKQEAgLTY0LDMgKzY0LDEzIEBACiAgICAgW0NvbmRpdGlvbmFsPUNv
bmRpdGlvbmFsMTVdIGJvb2xlYW4gcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoSWdub3JlZENvbmRp
dGlvbmFsOwogICAgIFtFbmFibGVkQnlTZXR0aW5nPVRlc3RTZXR0aW5nXSBET01TdHJpbmcgcGFy
dGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nOwogfTsKKworcGFydGlhbCBkaWN0
aW9uYXJ5IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IHsKKyAgICByZXF1aXJlZCBsb25nIHBhcnRp
YWxSZXF1aXJlZExvbmdNZW1iZXI7CisgICAgYm9vbGVhbiBwYXJ0aWFsQm9vbGVhbk1lbWJlcjsK
KyAgICBET01TdHJpbmcgcGFydGlhbFN0cmluZ01lbWJlcjsKKyAgICBWb2lkQ2FsbGJhY2sgcGFy
dGlhbENhbGxiYWNrTWVtYmVyOworICAgIFtJbXBsZW1lbnRlZEFzPXBhcnRpYWxVbnNpZ25lZExv
bmdNZW1iZXJdIHVuc2lnbmVkIGxvbmcgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBs
ZW1lbnRlZEFzOworICAgIFtDb25kaXRpb25hbD1Db25kaXRpb25hbDE1XSBib29sZWFuIHBhcnRp
YWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsOworICAgIFtFbmFibGVkQnlTZXR0aW5nPVRl
c3RTZXR0aW5nXSBET01TdHJpbmcgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0
aW5nOworfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>