<?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>174238</bug_id>
          
          <creation_ts>2017-07-06 20:47:43 -0700</creation_ts>
          <short_desc>[WebIDL] Move plugin object customization into the generator</short_desc>
          <delta_ts>2017-07-10 11:27:31 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1326351</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-06 20:47:43 -0700</bug_when>
    <thetext>[WebIDL] Move plugin object customization into the generator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326353</commentid>
    <comment_count>1</comment_count>
      <attachid>314807</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-06 20:48:22 -0700</bug_when>
    <thetext>Created attachment 314807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326388</commentid>
    <comment_count>2</comment_count>
      <attachid>314818</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-06 22:17:22 -0700</bug_when>
    <thetext>Created attachment 314818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326466</commentid>
    <comment_count>3</comment_count>
      <attachid>314837</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-07 06:43:41 -0700</bug_when>
    <thetext>Created attachment 314837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326583</commentid>
    <comment_count>4</comment_count>
      <attachid>314869</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-07 13:21:07 -0700</bug_when>
    <thetext>Created attachment 314869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326871</commentid>
    <comment_count>5</comment_count>
      <attachid>314869</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-09 10:17:06 -0700</bug_when>
    <thetext>Comment on attachment 314869
Patch

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

&gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:358
&gt; +bool JSCSSStyleDeclaration::put(JSCell* cell, ExecState* state, PropertyName propertyName, JSValue value, PutPropertySlot&amp; putPropertySlot)

This is more custom code now.

&gt; Source/WebCore/bindings/js/JSLocationCustom.cpp:126
&gt; +bool JSLocation::put(JSCell* cell, ExecState* state, PropertyName propertyName, JSValue value, PutPropertySlot&amp; putPropertySlot)

This is more custom code now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326913</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-09 18:34:56 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 314869 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=314869&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:358
&gt; &gt; +bool JSCSSStyleDeclaration::put(JSCell* cell, ExecState* state, PropertyName propertyName, JSValue value, PutPropertySlot&amp; putPropertySlot)
&gt; 
&gt; This is more custom code now.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSLocationCustom.cpp:126
&gt; &gt; +bool JSLocation::put(JSCell* cell, ExecState* state, PropertyName propertyName, JSValue value, PutPropertySlot&amp; putPropertySlot)
&gt; 
&gt; This is more custom code now.

It is a tiny bit more code, but it allows us to get rid of having two ways to override put, which is confusing and error prone. In reality, Location is custom enough that having the generator do things it doesn&apos;t expect is probably worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327079</commentid>
    <comment_count>7</comment_count>
      <attachid>314869</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-10 11:27:30 -0700</bug_when>
    <thetext>Comment on attachment 314869
Patch

Clearing flags on attachment: 314869

Committed r219302: &lt;http://trac.webkit.org/changeset/219302&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327080</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-10 11:27:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314807</attachid>
            <date>2017-07-06 20:48:22 -0700</date>
            <delta_ts>2017-07-06 22:04:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174238-20170706204952.patch</filename>
            <type>text/plain</type>
            <size>90163</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTIzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAxNy0wNy0wNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIE1vdmUgcGx1Z2luIG9i
amVjdCBjdXN0b21pemF0aW9uIGludG8gdGhlIGdlbmVyYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MjM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHV0Q29tbW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJD
b3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OnB1dENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2Nh
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SlNMb2NhdGlvblByb3RvdHlwZTo6cHV0RGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGx1
Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpw
bHVnaW5FbGVtZW50Q3VzdG9tUHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRDdXN0b21H
ZXRPd25Qcm9wZXJ0eVNsb3QpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbmRleGVkR2V0dGVyKToKKyAg
ICAgICAgKEdlbmVyYXRlTmFtZWRHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KToK
KyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChHZW5lcmF0
ZVB1dCk6CisgICAgICAgIChHZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAgICAoR2VuZXJhdGVE
ZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChHZW5lcmF0ZURlbGV0ZVByb3BlcnR5QnlJbmRleCk6
CisgICAgICAgIChHZW5lcmF0ZU5hbWVkRGVsZXRlckRlZmluaXRpb24pOgorICAgICAgICAoSW5z
dGFuY2VPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSW5zdGFuY2VPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEluc3RhbmNlT3ZlcnJpZGVzUHV0
KToKKyAgICAgICAgKEluc3RhbmNlT3ZlcnJpZGVzRGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
R2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgIChHZW5lcmF0ZUdldENhbGxEYXRhKToKKyAgICAgICAgKEdlbmVyYXRlUGx1Z2luQ2FsbCk6
CisgICAgICAgIChHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zKToKKyAgICAgICAgKEdl
bmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlw
ZURlY2xhcmF0aW9uKToKKyAgICAgICAgKEluc3RhbmNlT3ZlcnJpZGVzR2V0Q2FsbERhdGEpOgor
ICAgICAgICAoSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZURlbGV0ZVByb3BlcnR5RGVmaW5pdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChHZW5lcmF0
ZURlbGV0ZVByb3BlcnR5QnlJbmRleERlZmluaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSW5z
dGFuY2VPdmVycmlkZXNEZWxldGUpOiBEZWxldGVkLgorICAgICAgICAoSW5zdGFuY2VPdmVycmlk
ZXNDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6cHV0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZTo6cHV0QnlJbmRleCk6IERlbGV0
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFjZVBy
b3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFj
ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBs
dWdpbkludGVyZmFjZVByb3RvdHlwZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJm
YWNlQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmNyZWF0ZVByb3Rv
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnByb3RvdHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldENvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFjZTo6ZGVzdHJveSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJm
YWNlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpwdXRC
eUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0Q2Fs
bERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFBsdWdpbklu
dGVyZmFjZU93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVh
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
UGx1Z2luSW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RQbHVnaW5JbnRlcmZhY2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjp3
cmFwcGVyT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlcktleSk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBsdWdpbkludGVyZmFjZS5pZGw6IEFkZGVkLgor
ICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbDoKKyAgICAgICAgKiBodG1sL0hU
TUxBcHBsZXRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRs
OgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsOgorICAgICAgICAqIHBhZ2Uv
RE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmlkbDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2UuaWRsOgorCiAyMDE3LTA3LTA2ICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2
LndzPgogCiAgICAgICAgIFtwcmVsb2FkXSBBdm9pZCByZWZsZWN0aW5nICJ2aWRlbyIgYW5kICJh
dWRpbyIgd2hlbiB0aGV5IGFyZSBub3Qgc3VwcG9ydGVkIGBhc2AgdmFsdWUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTE4OSwxMyArMTE4OSwxMCBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNFeGNlcHRp
b25CYXNlLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRN
TERvY3VtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20u
Y3BwCi0gICAgYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcAotICAgIGJp
bmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSGlzdG9y
eUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0lEQkN1cnNvckN1c3RvbS5jcHAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTYyOCw3ICs1NjI4LDYgQEAKIAkJQkMy
RUQ2QkMwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYg
LyogSlNBdHRyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJQkMzMDVDNzkwQzA3NkJCMzAwQ0QyMEYwIC8q
IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMzMDVDNzcwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVs
ZW1lbnQuY3BwICovOyB9OwogCQlCQzMwNUM3QTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2Jq
ZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzMDVDNzgwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuaCAqLzsg
fTsKLQkJQkMzMDVDQTQwQzA3ODFCQjAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMz
MDVDQTMwQzA3ODFCQjAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwICov
OyB9OwogCQlCQzMzRkIxQjBGMzBFRTg1MDAyQ0REN0MgLyogUmVuZGVyTGluZUJveExpc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzM0ZCMUEw
RjMwRUU4NTAwMkNERDdDIC8qIFJlbmRlckxpbmVCb3hMaXN0LmNwcCAqLzsgfTsKIAkJQkMzNDhC
QkUwREI3RjUzMTAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzNDhCQkQwREI3RjUzMTAw
NEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwICovOyB9OwogCQlCQzM0OEJEMzBE
QjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMTBEQjdGODA0MDA0QUJBQjkgLyog
SlNYTUxIdHRwUmVxdWVzdC5jcHAgKi87IH07CkBAIC01NjY3LDcgKzU2NjYsNiBAQAogCQlCQzQ5
MThDOTBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MSUZyYW1lRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0OTE4QzMwQkZFQTA1MDAwOUQ2
MzE2IC8qIEpTSFRNTElGcmFtZUVsZW1lbnQuaCAqLzsgfTsKIAkJQkM0OTFCNzgwQzAyM0VGRDAw
OUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDkxQjc2MEMwMjNFRkQwMDlENjMxNiAvKiBKU0hU
TUxNYXJxdWVlRWxlbWVudC5jcHAgKi87IH07CiAJCUJDNDkxQjc5MEMwMjNFRkQwMDlENjMxNiAv
KiBKU0hUTUxNYXJxdWVlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM0OTFCNzcwQzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVF
bGVtZW50LmggKi87IH07Ci0JCUJDNEVERUY0MEMwOEYzRkIwMDdFREQ0OSAvKiBKU0hUTUxBcHBs
ZXRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNEVERUYzMEMwOEYzRkIwMDdFREQ0OSAvKiBKU0hUTUxBcHBsZXRFbGVtZW50
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQkM1MTE1NkUxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFu
aW1hdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM1MTE1NkQxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1tICovOyB9
OwogCQlCQzUxNTgwQjBDMDNENDA0MDA4QkIwRUUgLyogSlNIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1MTU4MEEw
QzAzRDQwNDAwOEJCMEVFIC8qIEpTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQkM1
M0M1RjUwREE1NkI5MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzUzQzVGNDBEQTU2QjkyMDAyMUVCNUQgLyogR3Jh
ZGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNTc0Nyw3ICs1NzQ1LDYgQEAKIAkJQkM2NEI0REMwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0Zv
bnRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM2NEI0RDQwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRTZWxlY3Rvci5oICovOyB9Owog
CQlCQzY5MzI3MzBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjkzMjcxMEQ3RTI5Mzkw
MEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3BwICovOyB9OwogCQlCQzY5MzI3NDBEN0UyOTM5
MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY5MzI3MjBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5k
b3dCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJQkM2RDQ0QkUwQzA3RUZCNjAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENDRC
RDBDMDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCAqLzsgfTsK
IAkJQkM2RDQ0RUMwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENDRFQTBDMDdG
MkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQkM2RDQ0RUQw
QzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RDQ0RUIwQzA3RjJFRDAwNzJEMkM5IC8q
IEpTSFRNTEVtYmVkRWxlbWVudC5oICovOyB9OwogCQlCQzZENkUyNjA5QUY5NDM1MDBGNTk3NTkg
LyogU2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM2RDZFMjUwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQxMjYsNyArMTQxMjMs
NiBAQAogCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXR0ckN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA1Qzc3MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hU
TUxPYmplY3RFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0hUTUxPYmplY3RFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMzMDVDNzgwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMzMDVDQTMwQzA3ODFCQjAwQ0QyMEYwIC8qIEpTSFRN
TE9iamVjdEVsZW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMzNGQjFBMEYzMEVFODUwMDJDREQ3QyAvKiBSZW5kZXJMaW5lQm94TGlzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJMaW5lQm94TGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzQ4QkE3MERCN0YxQjgwMDRB
QkFCOSAvKiBYTUxIdHRwUmVxdWVzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1MSHR0
cFJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzM0OEJCRDBEQjdG
NTMxMDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTY1LDcgKzE0MTYxLDYgQEAKIAkJQkM0OTFCNEUw
QzAyM0UyRDAwOUQ2MzE2IC8qIEhUTUxNYXJxdWVlRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSFRNTE1hcnF1ZWVFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM0OTFCNzYwQzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxNYXJxdWVlRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNDkxQjc3MEMwMjNFRkQw
MDlENjMxNiAvKiBKU0hUTUxNYXJxdWVlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNIVE1MTWFycXVlZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQXBw
bGV0RWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTEx
NTZEMTJCMTc0OUMwMEM5Njc1NCAvKiBTY3JvbGxBbmltYXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzUxNTgwQTBDMDNENDA0MDA4QkIwRUUgLyogSlNIVE1M
RG9jdW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM1M0M1RjQwREE1NkI5MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYWRpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNDI1MSw3ICsxNDI0Niw2IEBACiAJCUJDNjRCNEQ0MENCNDI5OEEwMDVGMkI2MiAvKiBDU1NG
b250U2VsZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udFNl
bGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjkzMjcxMEQ3RTI5Mzkw
MEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNET01XaW5kb3dCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM2OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVdpbmRvd0Jhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM2RDQ0QkQwQzA3RUZCNjAwNzJEMkM5IC8qIEpTSFRNTEVt
YmVkRWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzZENDRFQTBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxFbWJlZEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZENDRFQjBDMDdGMkVEMDA3MkQy
QzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0hUTUxFbWJlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM2RDZFMjUwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzNzA1LDExICsyMzY5OSw4IEBACiAJCQkJQkNEOUMyNUUwQzE3QUE2NzAwNUM5MEEy
IC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLywKIAkJCQk2NTJGQkJCQjBERTI3Q0I2MDAwMUQz
ODYgLyogSlNET01XaW5kb3dDdXN0b20uaCAqLywKIAkJCQlCQ0U3QjE5MjBENEU4Njk2MDA3NUE1
MzkgLyogSlNIaXN0b3J5Q3VzdG9tLmNwcCAqLywKLQkJCQlCQzRFREVGMzBDMDhGM0ZCMDA3RURE
NDkgLyogSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJOTM5MjI2MkMxMDMy
MTA3QjAwNkU3RDVEIC8qIEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJD
NTgyM0Y0MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCAqLywKLQkJ
CQlCQzZENDRCRDBDMDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNw
cCAqLywKLQkJCQlCQzMwNUNBMzBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVu
dEN1c3RvbS5jcHAgKi8sCiAJCQkJRDZGNzk2MEMxNjZGRkVDRTAwNzZERDE4IC8qIEpTSFRNTFRl
bXBsYXRlRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlF
IC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0UxQzQzRjBE
OTgzMEY0MDAzQjAyRjIgLyogSlNMb2NhdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0zMjA3Niw3ICsz
MjA2Nyw2IEBACiAJCQkJQkM5N0U0MTIxMDkxNTRGQTAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTJERUYwQTFCODUyQTAwQzgwN0Y4IC8q
IEpTSFRNTEFuY2hvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTJERjEwQTFC
ODUyQTAwQzgwN0Y4IC8qIEpTSFRNTEFwcGxldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQkM0RURFRjQwQzA4RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFBMUUwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRN
TEFyZWFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDOURCRkVEMUE5QzQ5QjEwMDBE
NkIyNSAvKiBKU0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
NDQ2MTQzNzBDRDY4OUM0MDBGQURBNzUgLyogSlNIVE1MQXVkaW9FbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzIxMDAsNyArMzIwOTAsNiBAQAogCQkJCUJDNTgyM0Y1MEMwQTk4REYwMDUz
RjFCNSAvKiBKU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOEU2
NUY3MDlGMDk4NUQwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM2RDQ0RUMwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVk
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQzZENDRCRTBDMDdFRkI2MDA3MkQyQzkg
LyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJB
QTI2MEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFMkFBMjgwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCRjlBODgwMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIxMjcsNyAr
MzIxMTYsNiBAQAogCQkJCUE3QkJFMjY2MTFBRkIzRjIwMDA1RUEwMyAvKiBKU0hUTUxNZXRlckVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjkwQTFDRTYzQjAwQjQyQjI1IC8q
IEpTSFRNTE1vZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzMDVDNzkwQzA3NkJC
MzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QkMzMDVDQTQwQzA3ODFCQjAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4NUIxRUEwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRNTE9M
aXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0U5QzBBMUE4M0UzMDA3RkI4
QzUgLyogSlNIVE1MT3B0R3JvdXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU3
RTlBMEExQTgzRTMwMDdGQjhDNSAvKiBKU0hUTUxPcHRpb25FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxMyArNjQs
MTAgQEAKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuY3BwIgogI2luY2x1ZGUgIkpTRXZlbnRU
YXJnZXRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRXhjZXB0aW9uQmFzZS5jcHAiCi0jaW5jbHVk
ZSAiSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEVs
ZW1lbnRDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAi
Ci0jaW5jbHVkZSAiSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNI
VE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hpc3RvcnlDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTSW1hZ2VEYXRhQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDYg
KzMxMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBzdHlsZVByb3BlcnR5R2V0dGUKICAgICBy
ZXR1cm4gc3R5bGVQcm9wZXJ0eUdldHRlcihzdGF0ZSwgdGhpc09iamVjdCwgcHJvcGVydHlJbmZv
LnByb3BlcnR5SUQpOwogfQogCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgY29udmVydGVkIHRv
IGJlIGEgbmFtZWQgZ2V0dGVyLgogYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blBy
b3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBhdXRvIHByb3BlcnR5SW5mbyA9IHBh
cnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpOwpAQCAtMzIyLDE0ICsz
MjMsMTUgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUo
RXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KQorLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGNvbnZlcnRlZCB0byBiZSBhIG5hbWVkIHNldHRlci4KK3N0YXRpYyBib29sIHB1dENv
bW1vbihKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSYgc3RhdGUs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wmIHB1dFJlc3Vs
dCkKIHsKICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjazsKICAgICBhdXRvIHByb3BlcnR5SW5mbyA9IHBhcnNlSmF2YVNjcmlwdENTU1Byb3Bl
cnR5TmFtZShwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJbmZvLnByb3BlcnR5SUQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IGNvbnZl
cnQ8SURMVHJlYXROdWxsQXNFbXB0eUFkYXB0b3I8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCB2YWx1
ZSk7CisgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5
QWRhcHRvcjxJRExET01TdHJpbmc+PihzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChwcm9wZXJ0eUlu
Zm8uaGFkUGl4ZWxPclBvc1ByZWZpeCkKICAgICAgICAgcHJvcGVydHlWYWx1ZS5hcHBlbmQoInB4
Iik7CiAKQEAgLTM0MiwxNyArMzQ0LDQxIEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpw
dXREZWxlZ2F0ZSgKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gc2V0UHJvcGVydHlJbnRl
cm5hbFJlc3VsdCA9IHdyYXBwZWQoKS5zZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SW5mby5w
cm9wZXJ0eUlELCBwcm9wZXJ0eVZhbHVlLCBpbXBvcnRhbnQpOworICAgIGF1dG8gc2V0UHJvcGVy
dHlJbnRlcm5hbFJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJu
YWwocHJvcGVydHlJbmZvLnByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUsIGltcG9ydGFudCk7CiAg
ICAgaWYgKHNldFByb3BlcnR5SW50ZXJuYWxSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAg
ICAgYXV0byYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgp
OwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAg
IHByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHNjb3BlLCBzZXRQcm9wZXJ0eUludGVybmFsUmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0
ZSwgc2NvcGUsIHNldFByb3BlcnR5SW50ZXJuYWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHB1dFJlc3VsdCA9IHNldFByb3BlcnR5
SW50ZXJuYWxSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIGJvb2wgcHV0UmVzdWx0ID0g
ZmFsc2U7CisgICAgaWYgKHB1dENvbW1vbigqdGhpc09iamVjdCwgKnN0YXRlLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworCisgICAg
cmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHB1dFByb3BlcnR5U2xvdCk7Cit9CisKK2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpw
dXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBib29sIHB1dFJlc3Vs
dCA9IGZhbHNlOworICAgIGlmIChwdXRDb21tb24oKnRoaXNPYmplY3QsICpzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpLCB2YWx1ZSwgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0
dXJuIHB1dFJlc3VsdDsKKworICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBz
dGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7Cit9CisKIEpTVmFsdWUgSlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAy
MTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50
Q3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkpTSFRNTEFwcGxldEVsZW1lbnQuaCIKLQotI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotYm9vbCBKU0hUTUxBcHBsZXRF
bGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICByZXR1cm4g
cGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdDxKU0hUTUxBcHBsZXRFbGVtZW50
LCBCYXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwotfQotCi1ib29sIEpTSFRN
TEFwcGxldEVsZW1lbnQ6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29s
JiBwdXRSZXN1bHQpCi17Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgdGhpcywgc2xvdCwgcHV0UmVzdWx0KTsKLX0KLQotQ2FsbFR5
cGUgSlNIVE1MQXBwbGV0RWxlbWVudDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0
YSYgY2FsbERhdGEpCi17Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRHZXRDYWxsRGF0YShqc0Nh
c3Q8SlNIVE1MQXBwbGV0RWxlbWVudCo+KGNlbGwpLCBjYWxsRGF0YSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRF
bGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCShub25l
eGlzdGVudCkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNIVE1MRW1i
ZWRFbGVtZW50LmgiCi0KLSNpbmNsdWRlICJIVE1MRW1iZWRFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNp
bmcgbmFtZXNwYWNlIEpTQzsKLQotYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OmdldE93blByb3Bl
cnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9t
R2V0T3duUHJvcGVydHlTbG90PEpTSFRNTEVtYmVkRWxlbWVudCwgQmFzZT4oZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90LCB0aGlzKTsKLX0KLQotYm9vbCBKU0hUTUxFbWJlZEVsZW1lbnQ6OnB1dERl
bGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCi17Ci0gICAg
cmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
dGhpcywgc2xvdCwgcHV0UmVzdWx0KTsKLX0KLQotQ2FsbFR5cGUgSlNIVE1MRW1iZWRFbGVtZW50
OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICBy
ZXR1cm4gcGx1Z2luRWxlbWVudEdldENhbGxEYXRhKGpzQ2FzdDxKU0hUTUxFbWJlZEVsZW1lbnQq
PihjZWxsKSwgY2FsbERhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1l
bnRDdXN0b20uY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1
c3RvbS5jcHAJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNIVE1MT2JqZWN0RWxlbWVudC5oIgot
Ci0jaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1BsdWdpbkVsZW1l
bnRGdW5jdGlvbnMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2Ug
SlNDOwotCi1ib29sIEpTSFRNTE9iamVjdEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQotewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90PEpTSFRNTE9iamVjdEVsZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCwgdGhpcyk7Ci19Ci0KLWJvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKLXsKLSAgICByZXR1cm4gcGx1
Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90
LCBwdXRSZXN1bHQpOwotfQotCi1DYWxsVHlwZSBKU0hUTUxPYmplY3RFbGVtZW50OjpnZXRDYWxs
RGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gcGx1
Z2luRWxlbWVudEdldENhbGxEYXRhKGpzQ2FzdDxKU0hUTUxPYmplY3RFbGVtZW50Kj4oY2VsbCks
IGNhbGxEYXRhKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3Rv
bS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5h
dGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMjE5MjMy
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90
RGVsZWdhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQorc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEpT
TG9jYXRpb24mIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSYgc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwor
ICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZSkgewogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTUxLDYwICs1MSwxMDAgQEAgYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3REZWxlZwogICAgIC8vIE91ciBjdXN0b20gY29kZSBpcyBvbmx5IG5lZWRlZCB0byBpbXBs
ZW1lbnQgdGhlIFdpbmRvdyBjcm9zcy1kb21haW4gc2NoZW1lLCBzbyBpZiBhY2Nlc3MgaXMKICAg
ICAvLyBhbGxvd2VkLCByZXR1cm4gZmFsc2Ugc28gdGhlIG5vcm1hbCBsb29rdXAgd2lsbCB0YWtl
IHBsYWNlLgogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlmIChCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9GcmFtZSgqc3RhdGUsICpmcmFtZSwgbWVzc2FnZSkpCisgICAgaWYg
KEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCAqZnJhbWUs
IG1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnLyNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0p
Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5n
VGFnU3ltYm9sIHx8IHByb3BlcnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmhhc0lu
c3RhbmNlU3ltYm9sIHx8IHByb3BlcnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmlz
Q29uY2F0U3ByZWFkYWJsZVN5bWJvbCkgewotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIFJl
YWRPbmx5IHwgRG9udEVudW0sIGpzVW5kZWZpbmVkKCkpOworICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gc3RhdGUucHJvcGVydHlOYW1lcygpLnRvU3RyaW5nVGFnU3ltYm9sIHx8IHByb3BlcnR5TmFt
ZSA9PSBzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkuaGFzSW5zdGFuY2VTeW1ib2wgfHwgcHJvcGVydHlO
YW1lID09IHN0YXRlLnByb3BlcnR5TmFtZXMoKS5pc0NvbmNhdFNwcmVhZGFibGVTeW1ib2wpIHsK
KyAgICAgICAgc2xvdC5zZXRWYWx1ZSgmdGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RW51bSwg
anNVbmRlZmluZWQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8vIFdl
IG9ubHkgYWxsb3cgYWNjZXNzIHRvIExvY2F0aW9uLnJlcGxhY2UoKSBjcm9zcyBvcmlnaW4uCi0g
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLnJlcGxhY2UpIHsK
LSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgUmVhZE9ubHkgfCBEb250RW51bSwgbm9uQ2Fj
aGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzTG9jYXRpb25JbnN0YW5jZUZ1bmN0aW9uUmVwbGFj
ZSwgMT4pOworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGUucHJvcGVydHlOYW1lcygpLnJl
cGxhY2UpIHsKKyAgICAgICAgc2xvdC5zZXRDdXN0b20oJnRoaXNPYmplY3QsIFJlYWRPbmx5IHwg
RG9udEVudW0sIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcjxqc0xvY2F0aW9uSW5zdGFu
Y2VGdW5jdGlvblJlcGxhY2UsIDE+KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAg
ICAgLy8gR2V0dGluZyBsb2NhdGlvbi5ocmVmIGNyb3NzIG9yaWdpbiBuZWVkcyB0byB0aHJvdy4g
SG93ZXZlciwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgbmVlZHMgdG8gcmV0dXJuCiAgICAg
Ly8gYSBkZXNjcmlwdG9yIHRoYXQgaGFzIGEgc2V0dGVyIGJ1dCBubyBnZXR0ZXIuCi0gICAgaWYg
KHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldE93blByb3BlcnR5ICYmIHByb3BlcnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlO
YW1lcygpLmhyZWYpIHsKKyAgICBpZiAoc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkgJiYgcHJvcGVydHlO
YW1lID09IHN0YXRlLnByb3BlcnR5TmFtZXMoKS5ocmVmKSB7CiAgICAgICAgIGF1dG8qIGVudHJ5
ID0gSlNMb2NhdGlvbjo6aW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0
eU5hbWUpOwogICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9
IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBudWxscHRyLCBlbnRyeS0+cHJvcGVydHlQ
dXR0ZXIoKSk7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tR2V0dGVyU2V0dGVyKHRoaXMsIERvbnRF
bnVtIHwgQ3VzdG9tQWNjZXNzb3IsIGN1c3RvbUdldHRlclNldHRlcik7CisgICAgICAgIHNsb3Qu
c2V0Q3VzdG9tR2V0dGVyU2V0dGVyKCZ0aGlzT2JqZWN0LCBEb250RW51bSB8IEN1c3RvbUFjY2Vz
c29yLCBjdXN0b21HZXR0ZXJTZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKnN0YXRlLCBzY29wZSwgbWVzc2FnZSk7CisgICAgdGhy
b3dTZWN1cml0eUVycm9yKHN0YXRlLCBzY29wZSwgbWVzc2FnZSk7CiAgICAgc2xvdC5zZXRVbmRl
ZmluZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCitib29sIEpTTG9jYXRpb246Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgcHV0UmVz
dWx0ID0gZmFsc2U7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4o
b2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKTsKKyAgICBpZiAoZ2V0
T3duUHJvcGVydHlTbG90Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUsIHByb3BlcnR5TmFtZSwg
c2xvdCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KG9iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jv
b2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQor
eworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KG9iamVjdCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAg
aWYgKGdldE93blByb3BlcnR5U2xvdENvbW1vbigqdGhpc09iamVjdCwgKnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tKHN0YXRlLCBpbmRleCksIHNsb3QpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBzdGF0
ZSwgaW5kZXgsIHNsb3QpOworfQorCitzdGF0aWMgYm9vbCBwdXRDb21tb24oSlNMb2NhdGlvbiYg
dGhpc09iamVjdCwgRXhlY1N0YXRlJiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K3sKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5mcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gU2lsZW50bHkgYmxv
Y2sgYWNjZXNzIHRvIHRvU3RyaW5nIGFuZCB2YWx1ZU9mLgotICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gc3RhdGUtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3Rh
dGUucHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBzdGF0ZS5wcm9w
ZXJ0eU5hbWVzKCkudmFsdWVPZikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBBbHdh
eXMgYWxsb3cgYXNzaWduaW5nIHRvIHRoZSB3aG9sZSBsb2NhdGlvbi4KICAgICAvLyBIb3dldmVy
LCBhbGxsb3dpbmcgYXNzaWduaW5nIG9mIHBpZWNlcyBtaWdodCBpbmFkdmVydGVudGx5IGRpc2Ns
b3NlIHBhcnRzIG9mIHRoZSBvcmlnaW5hbCBsb2NhdGlvbi4KICAgICAvLyBTbyBmYWxsIHRocm91
Z2ggdG8gdGhlIGFjY2VzcyBjaGVjayBmb3IgdGhvc2UuCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmhyZWYpCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBz
dGF0ZS5wcm9wZXJ0eU5hbWVzKCkuaHJlZikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gQmxvY2sgYWNjZXNzIGFuZCB0aHJvdyBpZiB0aGVyZSBpcyBhIHNlY3VyaXR5IGVycm9yLgot
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUs
IGZyYW1lLCBUaHJvd1NlY3VyaXR5RXJyb3IpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCBmcmFtZSwgVGhyb3dTZWN1cml0eUVycm9y
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wg
SlNMb2NhdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRQcm9w
ZXJ0eVNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OworCisgICAgaWYgKHB1dENvbW1vbigqdGhpc09iamVjdCwgKnN0YXRlLCBwcm9wZXJ0eU5hbWUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlz
T2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKK30K
KworYm9vbCBKU0xvY2F0aW9uOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBz
dGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7
CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgaWYg
KHB1dENvbW1vbigqdGhpc09iamVjdCwgKnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBp
bmRleCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1
dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworfQorCiBi
b29sIEpTTG9jYXRpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTTG9jYXRpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNMb2NhdGlvbio+KGNlbGwpOwpAQCAtMTg4LDEwICsyMjgsMTIgQEAg
U3RyaW5nIEpTTG9jYXRpb246OnRvU3RyaW5nTmFtZShjb25zdCBKUwogICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIkxvY2F0aW9uIik7CiB9CiAKLWJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0
RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCitib29sIEpTTG9jYXRpb25Q
cm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
LSAgICBwdXRSZXN1bHQgPSBmYWxzZTsKLSAgICByZXR1cm4gKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS52YWx1ZU9mKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9j
YXRpb25Qcm90b3R5cGUqPihjZWxsKTsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBCYXNl
OjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQog
CiBib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1l
bnRGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NCw3ICs5NCw3IEBAIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QoRXhlY1N0YXRlKiAKICAg
ICByZXR1cm4gaW5zdGFuY2UtPmNyZWF0ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiB9CiAgICAgCi1F
bmNvZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTA5LDE5ICsxMDksMjYgQEAgRW5jb2RlZEpTVmFsdWUg
cGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2Ny
aXB0T2JqZWN0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1lKSk7CiB9CiAKLWJvb2wgcGx1Z2luRWxl
bWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNIVE1MRWxlbWVudCogZWxlbWVu
dCkKK2Jvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdChKU0hUTUxFbGVt
ZW50KiBlbGVtZW50LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBpZiAoIWVsZW1lbnQtPmdsb2JhbE9iamVjdCgp
LT53b3JsZCgpLmlzTm9ybWFsKCkpIHsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIHByb3RvID0gZWxl
bWVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIGlmIChwcm90by5pc09iamVjdCgp
ICYmIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChwcm90bykpLT5oYXNQcm9w
ZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKwogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhl
YywgZWxlbWVudCk7CiAgICAgaWYgKCFzY3JpcHRPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmICghc2NyaXB0T2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5h
bWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBzbG90LnNldEN1c3RvbShlbGVtZW50
LCBEb250RGVsZXRlIHwgRG9udEVudW0sIHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcik7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbVB1dChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIEpTSFRN
TEVsZW1lbnQqIGVsZW1lbnQsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0
KQorYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgSlNPYmplY3Qq
IHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBp
ZiAoIXNjcmlwdE9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyMTkyMzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsMjAgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIEpT
Qzo6QmluZGluZ3M6Okluc3RhbmNlKiBwbHVnaW5JbnN0YW5jZShIVE1MRWxlbWVudCYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIEpTQzo6SlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChKU0M6OkV4
ZWNTdGF0ZSosIEpTSFRNTEVsZW1lbnQqKTsKIAotICAgIEpTQzo6RW5jb2RlZEpTVmFsdWUgcGx1
Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdl
dE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OlByb3BlcnR5U2xvdCYsIEpTSFRNTEVsZW1lbnQqKTsKLSAgICBib29sIHBsdWdpbkVsZW1lbnRD
dXN0b21QdXQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVl
LCBKU0hUTUxFbGVtZW50KiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQp
OwotICAgIEpTQzo6Q2FsbFR5cGUgcGx1Z2luRWxlbWVudEdldENhbGxEYXRhKEpTSFRNTEVsZW1l
bnQqLCBKU0M6OkNhbGxEYXRhJik7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHlwZSwgY2xhc3Mg
QmFzZT4gYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90JiBzbG90LCBUeXBlKiBlbGVtZW50KQotICAgIHsKLSAgICAgICAgaWYgKCFlbGVtZW50
LT5nbG9iYWxPYmplY3QoKS0+d29ybGQoKS5pc05vcm1hbCgpKSB7Ci0gICAgICAgICAgICBKU0M6
OkpTVmFsdWUgcHJvdG8gPSBlbGVtZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKLSAgICAgICAg
ICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihh
c09iamVjdChwcm90bykpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBwbHVn
aW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCwgZWxlbWVudCk7Ci0gICAgfQorICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdldE93blBy
b3BlcnR5U2xvdChKU0hUTUxFbGVtZW50KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21Q
dXQoSlNIVE1MRWxlbWVudCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpOworICAg
IEpTQzo6Q2FsbFR5cGUgcGx1Z2luRWxlbWVudEN1c3RvbUdldENhbGxEYXRhKEpTSFRNTEVsZW1l
bnQqLCBKU0M6OkNhbGxEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNTM1LDcgKzUzNSw3IEBAIHN1YiBH
ZW5lcmF0ZUluZGV4ZWRHZXR0ZXIKICAgICAjIDEuMi44IFJldHVybiBkZXNjLgogICAgIAogICAg
IG15IEBhdHRyaWJ1dGVzID0gKCk7Ci0gICAgcHVzaChAYXR0cmlidXRlcywgIlJlYWRPbmx5Iikg
aWYgIUdldEluZGV4ZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSkgJiYgISRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVyfTsKKyAgICBwdXNoKEBhdHRy
aWJ1dGVzLCAiUmVhZE9ubHkiKSBpZiAhR2V0SW5kZXhlZFNldHRlck9wZXJhdGlvbigkaW50ZXJm
YWNlKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufTsKICAgICAK
ICAgICBteSAkYXR0cmlidXRlU3RyaW5nID0gKChAYXR0cmlidXRlcyA+IDApID8gam9pbigiIHwg
IiwgQGF0dHJpYnV0ZXMpIDogIjAiKTsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIHN1YiBHZW5lcmF0
ZU5hbWVkR2V0dGVyCiAgICAgIyAyLjEwIFJldHVybiBkZXNjLgogICAgIAogICAgIG15IEBhdHRy
aWJ1dGVzID0gKCk7Ci0gICAgcHVzaChAYXR0cmlidXRlcywgIlJlYWRPbmx5IikgaWYgIUdldE5h
bWVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDdXN0b21OYW1lZFNldHRlcn07CisgICAgcHVzaChAYXR0cmlidXRlcywgIlJl
YWRPbmx5IikgaWYgIUdldE5hbWVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpICYmICEkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59OwogICAgIHB1c2goQGF0dHJpYnV0
ZXMsICJEb250RW51bSIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2Fj
eVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllc307CiAgICAgCiAgICAgbXkgJGF0dHJpYnV0ZVN0
cmluZyA9ICgoQGF0dHJpYnV0ZXMgPiAwKSA/IGpvaW4oIiB8ICIsIEBhdHRyaWJ1dGVzKSA6ICIw
Iik7CkBAIC02NjcsNyArNjY3LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90CiAg
ICAgICAgICMgMS4zLiBTZXQgaWdub3JlTmFtZWRQcm9wcyB0byB0cnVlLgogICAgICAgICAjIE5P
VEU6IFNldHRpbmcgaWdub3JlTmFtZWRQcm9wcyBoYXMgdGhlIGVmZmVjdCBvZiBza2lwcGluZyBz
dGVwIDIsIHNvIHdlIGNhbiBlYXJseSByZXR1cm4gaGVyZQogICAgICAgICAjICAgICAgIHJhdGhl
ciB0aGFuIGdvaW5nIHRocm91Z2ggdGhlIHBhY2VzIG9mIGhhdmluZyBhbiBhY3R1YWwgaWdub3Jl
TmFtZWRQcm9wcyB1cGRhdGUuCi0gICAgICAgIGlmICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24gfHwg
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90
QW5kRGVzY3JpcHRvcn0pIHsKKyAgICAgICAgaWYgKCRuYW1lZEdldHRlck9wZXJhdGlvbiB8fCAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RB
bmREZXNjcmlwdG9yfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59
KSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xv
dCk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxu
Iik7CkBAIC03MDEsMTIgKzcwMSwxOSBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3QK
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgfQotICAgIAorCisg
ICAgIyBGSVhNRTogVGhlcmUgaXMgb25seSBvbmUgcmVtYWluaW5nIHVzZXIgb2YgdGhpcywgQ1NT
U3R5bGVEZWNsYXJhdGlvbi5pZGwuIExldCdzIGdldCB0aGVtIG9udG8gbmFtZWQgLyBpbmRleGVk
IGdldHRlcnMuCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3Rv
bUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3J9KSB7CiAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBpZiAodGhpc09iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUo
c3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgIH0KLSAgICAKKworICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59KSB7CisgICAgICAgIEFkZFRv
SW5jbHVkZXMoIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAocGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xv
dChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90LCB0aGlzT2JqZWN0KSlcbiIpOworICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CisgICAgfQorCiAg
ICAgIyAzLiBSZXR1cm4gT3JkaW5hcnlHZXRPd25Qcm9wZXJ0eShPLCBQKS4KICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2Jq
ZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwogICAgIApAQCAtNzE4LDcgKzcy
NSw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKIHsKICAgICBteSAo
JG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSA9IEBfOwogICAgIAotICAgIHJl
dHVybiBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4fTsKKyAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90fTsKIAogICAgICMgU2luayB0aGUgaW50
LXRvLXN0cmluZyBjb252ZXJzaW9uIHRoYXQgaGFwcGVucyB3aGVuIHdlIGNyZWF0ZSBhIFByb3Bl
cnR5TmFtZQogICAgICMgdG8gdGhlIHBvaW50IHdoZXJlIHdlIGFjdHVhbGx5IG5lZWQgaXQuCkBA
IC03NzIsNyArNzc5LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleAog
ICAgICAgICAjIDEuMy4gU2V0IGlnbm9yZU5hbWVkUHJvcHMgdG8gdHJ1ZS4KICAgICAgICAgIyBO
T1RFOiBTZXR0aW5nIGlnbm9yZU5hbWVkUHJvcHMgaGFzIHRoZSBlZmZlY3Qgb2Ygc2tpcHBpbmcg
c3RlcCAyLCBzbyB3ZSBjYW4gZWFybHkgcmV0dXJuIGhlcmUKICAgICAgICAgIyAgICAgICByYXRo
ZXIgdGhhbiBnb2luZyB0aHJvdWdoIHRoZSBwYWNlcyBvZiBoYXZpbmcgYW4gYWN0dWFsIGlnbm9y
ZU5hbWVkUHJvcHMgdXBkYXRlLgotICAgICAgICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0aW9uIHx8
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldE93blByb3BlcnR5U2xv
dEFuZERlc2NyaXB0b3J9KSB7CisgICAgICAgIGlmICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24gfHwg
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90
QW5kRGVzY3JpcHRvcn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lu
fSkgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBzdGF0ZSwgaW5kZXgsIHNs
b3QpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1c
biIpOwpAQCAtODA5LDEzICs4MTYsMjIgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgfQog
ICAgIAorICAgICMgRklYTUU6IFRoZXJlIGlzIG9ubHkgb25lIHJlbWFpbmluZyB1c2VyIG9mIHRo
aXMsIENTU1N0eWxlRGVjbGFyYXRpb24uaWRsLiBMZXQncyBnZXQgdGhlbSBvbnRvIG5hbWVkIC8g
aW5kZXhlZCBnZXR0ZXJzLgogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yfSkgewogICAgICAgICAmJHBy
b3BlcnR5TmFtZUdlbmVyYXRpb24oKTsKICAgICAKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGlmICh0aGlzT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShzdGF0ZSwg
cHJvcGVydHlOYW1lLCBzbG90KSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgfQotICAgIAorCisgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0pIHsKKyAgICAgICAgJiRwcm9wZXJ0eU5h
bWVHZW5lcmF0aW9uKCk7CisKKyAgICAgICAgQWRkVG9JbmNsdWRlcygiSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmgiKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChwbHVn
aW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNs
b3QsIHRoaXNPYmplY3QpKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIHRydWU7XG4iKTsKKyAgICB9CisKICAgICAjIDMuIFJldHVybiBPcmRpbmFyeUdl
dE93blByb3BlcnR5KE8sIFApLgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBzdGF0ZSwgaW5kZXgs
IHNsb3QpO1xuIik7CiAgICAgCkBAIC04MjcsNyArODQzLDcgQEAgc3ViIEdlbmVyYXRlR2V0T3du
UHJvcGVydHlOYW1lcwogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFz
c05hbWUpID0gQF87CiAgICAgCi0gICAgcmV0dXJuIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbUVudW1lcmF0ZVByb3BlcnR5fTsKKyAgICByZXR1cm4gaWYgJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlOYW1lc307CiAg
ICAgCiAgICAgbXkgJG5hbWVkR2V0dGVyT3BlcmF0aW9uID0gR2V0TmFtZWRHZXR0ZXJPcGVyYXRp
b24oJGludGVyZmFjZSk7CiAgICAgbXkgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24gPSBHZXRJbmRl
eGVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwpAQCAtOTEzLDcgKzkyOSw3IEBAIHN1YiBH
ZW5lcmF0ZVB1dAogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05h
bWUpID0gQF87CiAgICAgCi0gICAgcmV0dXJuIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0N1c3RvbVB1dEZ1bmN0aW9ufTsKKyAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHV0fTsKICAgICAKICAgICBteSAkbmFtZWRTZXR0ZXJP
cGVyYXRpb24gPSBHZXROYW1lZFNldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKICAgICBteSAk
aW5kZXhlZFNldHRlck9wZXJhdGlvbiA9IEdldEluZGV4ZWRTZXR0ZXJPcGVyYXRpb24oJGludGVy
ZmFjZSk7CkBAIC05NjEsMTMgKzk3NywxNSBAQCBzdWIgR2VuZXJhdGVQdXQKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7CiAgICAgfQogICAgIAotICAgIGFzc2VydCgi
VXNpbmcgYm90aCBhIG5hbWVkIHByb3BlcnR5IHNldHRlciBhbmQgW0N1c3RvbU5hbWVkU2V0dGVy
XSB0b2dldGhlciBpcyBub3Qgc3VwcG9ydGVkLiIpIGlmICRuYW1lZFNldHRlck9wZXJhdGlvbiAm
JiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYW1lZFNldHRlcn07Ci0g
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVy
fSkgeworICAgIGFzc2VydCgiVXNpbmcgYm90aCBhIG5hbWVkIHByb3BlcnR5IHNldHRlciBhbmQg
W1BsdWdpbl0gdG9nZXRoZXIgaXMgbm90IHN1cHBvcnRlZC4iKSBpZiAkbmFtZWRTZXR0ZXJPcGVy
YXRpb24gJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufTsKKyAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSkgeworICAgICAgICBB
ZGRUb0luY2x1ZGVzKCJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIpOworCiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7Ci0gICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUo
c3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCwgcHV0UmVzdWx0KSlc
biIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKHBsdWdpbkVsZW1lbnRD
dXN0b21QdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3Bl
cnR5U2xvdCwgcHV0UmVzdWx0KSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiBwdXRSZXN1bHQ7XG5cbiIpOwogICAgIH0KLSAgICAKKwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBzdGF0
ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTtcbiIpOwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiB9CkBAIC05NzYsMTMgKzk5NCwxMyBAQCBzdWIgR2Vu
ZXJhdGVQdXRCeUluZGV4CiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNs
YXNzTmFtZSkgPSBAXzsKICAgICAKLSAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q3VzdG9tUHV0RnVuY3Rpb259OwotICAgIAorICAgIHJldHVybiBpZiAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21QdXR9OworCiAgICAgbXkgJG5hbWVk
U2V0dGVyT3BlcmF0aW9uID0gR2V0TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CiAg
ICAgbXkgJGluZGV4ZWRTZXR0ZXJPcGVyYXRpb24gPSBHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9u
KCRpbnRlcmZhY2UpOwogICAgIAogICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5l
cmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVp
bHRpbnMiKTsKLSAgICBteSAkZWxsaWRlc0NhbGxzVG9CYXNlID0gKCRuYW1lZFNldHRlck9wZXJh
dGlvbiAmJiAkb3ZlcnJpZGVCdWlsdGlucykgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVyfTsKKyAgICBteSAkZWxsaWRlc0NhbGxzVG9CYXNlID0g
KCRuYW1lZFNldHRlck9wZXJhdGlvbiAmJiAkb3ZlcnJpZGVCdWlsdGlucykgJiYgISRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn07CiAgICAgCiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiYm9vbCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCIgLiAoISRl
bGxpZGVzQ2FsbHNUb0Jhc2UgPyAiIHNob3VsZFRocm93IiA6ICIiKSAuICIpXG4iKTsKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKQEAgLTEwMjEsMTYgKzEwMzksMTcgQEAgc3ViIEdl
bmVyYXRlUHV0QnlJbmRleAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1c
blxuIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYXNzZXJ0KCJVc2luZyBib3RoIGEg
bmFtZWQgcHJvcGVydHkgc2V0dGVyIGFuZCBbQ3VzdG9tTmFtZWRTZXR0ZXJdIHRvZ2V0aGVyIGlz
IG5vdCBzdXBwb3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYmICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVyfTsKLSAgICBpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9KSB7CisKKyAgICBh
c3NlcnQoIlVzaW5nIGJvdGggYSBuYW1lZCBwcm9wZXJ0eSBzZXR0ZXIgYW5kIFtQbHVnaW5dIHRv
Z2V0aGVyIGlzIG5vdCBzdXBwb3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYmICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn07CisgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0pIHsKKyAgICAgICAgQWRkVG9JbmNsdWRl
cygiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5k
ZXgpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqZWN0LCBzaG91bGRUaHJvdyk7XG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgaWYgKHBsdWdpbkVsZW1lbnRDdXN0b21QdXQodGhpc09iamVj
dCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCwgcHV0UmVzdWx0
KSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBwdXRS
ZXN1bHQ7XG5cbiIpOwogICAgIH0KLSAgICAKKwogICAgIGlmICghJGVsbGlkZXNDYWxsc1RvQmFz
ZSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0Ojpw
dXRCeUluZGV4KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTtcbiIpOwog
ICAgIH0KQEAgLTEyNTIsNyArMTI3MSw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5Q29t
bW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogfQogCi1zdWIgR2VuZXJh
dGVEZWxldGVQcm9wZXJ0eURlZmluaXRpb24KK3N1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5CiB7
CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlv
biwgJGNvbmRpdGlvbmFsKSA9IEBfOwogCkBAIC0xMjgzLDcgKzEzMDIsNyBAQCBzdWIgR2VuZXJh
dGVEZWxldGVQcm9wZXJ0eURlZmluaXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5c
biIpOwogfQogCi1zdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eUJ5SW5kZXhEZWZpbml0aW9uCitz
dWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eUJ5SW5kZXgKIHsKICAgICBteSAoJG91dHB1dEFycmF5
LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uLCAkY29uZGl0aW9uYWwpID0gQF87
CiAKQEAgLTEzNDcsOCArMTM2Niw4IEBAIHN1YiBHZW5lcmF0ZU5hbWVkRGVsZXRlckRlZmluaXRp
b24KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9
XG5cbiIpOzsKICAgICB9CiAKLSAgICBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5RGVmaW5pdGlvbigk
b3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZERlbGV0ZXJPcGVyYXRp
b24sICRjb25kaXRpb25hbCk7Ci0gICAgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eUJ5SW5kZXhEZWZp
bml0aW9uKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkRGVsZXRl
ck9wZXJhdGlvbiwgJGNvbmRpdGlvbmFsKTsKKyAgICBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5KCRv
dXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkRGVsZXRlck9wZXJhdGlv
biwgJGNvbmRpdGlvbmFsKTsKKyAgICBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5QnlJbmRleCgkb3V0
cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZERlbGV0ZXJPcGVyYXRpb24s
ICRjb25kaXRpb25hbCk7CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBp
ZiAkY29uZGl0aW9uYWw7CiB9CkBAIC0xODA4LDggKzE4MjcsOCBAQCBzdWIgSW5zdGFuY2VPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAg
ICAgcmV0dXJuICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldE93blBy
b3BlcnR5U2xvdH0KLSAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QnlJbmRleH0KICAgICAgICAgfHwgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRv
cn0KKyAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufQog
ICAgICAgICB8fCBHZXRJbmRleGVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpCiAgICAgICAg
IHx8IEdldE5hbWVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogfQpAQCAtMTgxNyw3ICsx
ODM2LDcgQEAgc3ViIEluc3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90CiBzdWIgSW5z
dGFuY2VPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzCiB7CiAgICAgbXkgJGludGVyZmFjZSA9
IHNoaWZ0OwotICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0
b21FbnVtZXJhdGVQcm9wZXJ0eX0KKyAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlOYW1lc30KICAgICAgICAgfHwgR2V0SW5kZXhl
ZEdldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKQogICAgICAgICB8fCBHZXROYW1lZEdldHRlck9w
ZXJhdGlvbigkaW50ZXJmYWNlKTsKIH0KQEAgLTE4MjUsOCArMTg0NCw4IEBAIHN1YiBJbnN0YW5j
ZU92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMKIHN1YiBJbnN0YW5jZU92ZXJyaWRlc1B1dAog
ewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9Ci0gICAgICAgIHx8ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVB1dEZ1bmN0aW9ufQorICAgIHJldHVybiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21QdXR9CisgICAgICAgIHx8ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0KICAgICAgICAgfHwgR2V0SW5k
ZXhlZFNldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKQogICAgICAgICB8fCBHZXROYW1lZFNldHRl
ck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKIH0KQEAgLTE4MzksNyArMTg1OCw3IEBAIHN1YiBJbnN0
YW5jZU92ZXJyaWRlc0RlZmluZU93blByb3BlcnR5CiAgICAgICAgIHx8IEdldE5hbWVkU2V0dGVy
T3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogfQogCi1zdWIgSW5zdGFuY2VPdmVycmlkZXNEZWxldGUK
K3N1YiBJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5CiB7CiAgICAgbXkgJGludGVyZmFj
ZSA9IHNoaWZ0OwogICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
dXN0b21EZWxldGVQcm9wZXJ0eX0KQEAgLTI1NzIsMTIgKzI1OTEsMTIgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9w
ZXJ0eU5hbWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7XG4iKTsKICAgICB9CiAKLSAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNEZWxldGUoJGludGVy
ZmFjZSkpIHsKKyAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNEZWxldGVQcm9wZXJ0eSgkaW50ZXJm
YWNlKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVu
c2lnbmVkKTtcbiIpOwogICAgIH0KIAotICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0NhbGwoJGlu
dGVyZmFjZSkpIHsKKyAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNHZXRDYWxsRGF0YSgkaW50ZXJm
YWNlKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkNh
bGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYpO1xuXG4iKTsK
ICAgICAgICAgJGhlYWRlckluY2x1ZGVzeyI8cnVudGltZS9DYWxsRGF0YS5oPiJ9ID0gMTsKICAg
ICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSJ9
ID0gMTsKQEAgLTI3OTYsMTEgKzI4MTUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90
QW5kRGVzY3JpcHRvcn0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29s
IGdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKICAgICB9Ci0gICAgCi0gICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVyfSkgewotICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5
U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKTsKLSAgICB9Ci0gICAgCisKICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAifTtcblxuIik7CiAKICAgICBpZiAoU2hvdWxkR2VuZXJhdGVXcmFwcGVy
T3duZXJDb2RlKCRoYXNQYXJlbnQsICRpbnRlcmZhY2UpKSB7CkBAIC00MTAwLDE3ICs0MTE1LDYg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOwogICAgIH0KIAotICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlfSkgewotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihjZWxsKTtcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShz
dGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOwotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfQotCiAgICAgIyAtIEluaXRpYWxpemUgc3RhdGlj
IENsYXNzSW5mbyBvYmplY3QKICAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNzSW5m
byAkY2xhc3NOYW1lIiAuICI6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwi
LCAmQmFzZTo6c19pbmZvLCAiKTsKIApAQCAtNDI5NywxMiArNDMwMSwxMiBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBHZW5lcmF0ZURlZmluZU93blByb3BlcnR5KFxAaW1w
bENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFzc05hbWUpOwogICAgIH0KIAotICAgIGlmIChJbnN0
YW5jZU92ZXJyaWRlc0RlbGV0ZSgkaW50ZXJmYWNlKSkgeworICAgIGlmIChJbnN0YW5jZU92ZXJy
aWRlc0RlbGV0ZVByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIEdlbmVyYXRlTmFtZWRE
ZWxldGVyRGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzQ2FsbCgkaW50ZXJmYWNlKSkg
ewotICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUpOworICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0dldENhbGxEYXRhKCRpbnRlcmZh
Y2UpKSB7CisgICAgICAgIEdlbmVyYXRlR2V0Q2FsbERhdGEoXEBpbXBsQ29udGVudCwgJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSk7CiAgICAgfQogICAgIAogICAgIGlmICgkbnVtQXR0cmlidXRlcyA+
IDApIHsKQEAgLTUyNTAsNzAgKzUyNTQsOTcgQEAgc3ViIEdlbmVyYXRlU2VyaWFsaXplckRlZmlu
aXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiB9CiAKLXN1YiBHZW5lcmF0ZUxl
Z2FjeUNhbGxlckRlZmluaXRpb25zCitzdWIgR2VuZXJhdGVHZXRDYWxsRGF0YQogewotICAgIG15
ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRp
bnRlcmZhY2UsICRjbGFzc05hbWUpID0gQF87CiAKICAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tQ2FsbH07Ci0gICAgCisKKyAgICBpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSkgeworICAgICAgICBHZW5lcmF0ZVBs
dWdpbkNhbGwoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zKCRvdXRwdXRBcnJh
eSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSk7CisgICAgfQorfQorCitzdWIgR2VuZXJhdGVQbHVn
aW5DYWxsCit7CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSkg
PSBAXzsKKworICAgIEFkZFRvSW5jbHVkZXMoIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIik7
CisKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJDYWxsVHlwZSAke2NsYXNzTmFtZX06OmdldENh
bGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKVxuIik7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7XG5cbiIpOworCisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVy
biBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEodGhpc09iamVjdCwgY2FsbERhdGEpO1xu
Iik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuIik7CisgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiXG4iKTsKK30KKworc3ViIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbnMKK3sK
KyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSA9IEBfOworCiAg
ICAgbXkgQGxlZ2FjeUNhbGxlcnMgPSBAeyRpbnRlcmZhY2UtPntMZWdhY3lDYWxsZXJzfX07CiAg
ICAgaWYgKEBsZWdhY3lDYWxsZXJzID4gMSkgewogICAgICAgICBmb3JlYWNoIG15ICRsZWdhY3lD
YWxsZXIgKEBsZWdhY3lDYWxsZXJzKSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxl
ckRlZmluaXRpb24oJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGxlZ2FjeUNhbGxlcik7CisgICAg
ICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbGVnYWN5Q2FsbGVyKTsKICAgICAgICAgfQogCiAgICAgICAg
IG15ICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4ID0gImNhbGwke2NsYXNzTmFtZX0iOwogCi0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke292
ZXJsb2FkRnVuY3Rpb25QcmVmaXh9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgJHtvdmVybG9hZEZ1bmN0aW9uUHJlZml4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xu
Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7XG4iKTsKIAogICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcigkbGVnYWN5
Q2FsbGVyc1swXSwgJGludGVyZmFjZSwgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXgsICIiLCAic3Rh
dGUiKTsKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgR2VuZXJh
dGVMZWdhY3lDYWxsZXJEZWZpbml0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRsZWdhY3lD
YWxsZXJzWzBdKTsKKyAgICAgICAgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9uKCRvdXRw
dXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGxlZ2FjeUNhbGxlcnNbMF0pOwogICAg
IH0KIAotICAgIHB1c2goQGltcGxDb250ZW50LCAiQ2FsbFR5cGUgJHtjbGFzc05hbWV9OjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpXG4iKTsKLSAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGwke2NsYXNzTmFtZX07XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKKyAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJDYWxsVHlwZSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJiBjYWxsRGF0YSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIp
OworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsJHtjbGFzc05hbWV9O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiBDYWxsVHlwZTo6SG9zdDtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIp
OworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiB9CiAKIHN1YiBHZW5lcmF0ZUxlZ2Fj
eUNhbGxlckRlZmluaXRpb24KIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9w
ZXJhdGlvbikgPSBAXzsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkb3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRp
b24tPntvdmVybG9hZHN9ICYmIEB7JG9wZXJhdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKICAgICBp
ZiAoJGlzT3ZlcmxvYWRlZCkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbCR7Y2xhc3NOYW1lfSRvcGVyYXRpb24tPntvdmVybG9h
ZEluZGV4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbCR7Y2xhc3NOYW1lfSRvcGVyYXRp
b24tPntvdmVybG9hZEluZGV4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsJHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CiAgICAgfQogCi0gICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTtcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7Ci0gICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogCiAgICAgbXkg
JGluZGVudCA9ICIgICAgIjsKLSAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBs
Q29udGVudCwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGluZGVudCk7CisgICAgR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwg
JGluZGVudCk7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KHN0YXRlLT5qc0NhbGxlZSgpKTtcbiIpOwotICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVChjYXN0ZWRUaGlzKTtcbiIpOwotICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4i
KTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDwke2NsYXNzTmFtZX0qPihzdGF0ZS0+anNDYWxsZWUoKSk7XG4iKTsKKyAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgQVNTRVJUKGNhc3RlZFRoaXMpO1xuIik7CisgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKIAog
ICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRvcGVyYXRpb24tPm5hbWUpIHx8ICJsZWdhY3lDYWxsZXJPcGVyYXRpb25Gcm9tQmluZGluZ3Mi
OwotICAgIG15ICRmdW5jdGlvblN0cmluZyA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1w
bENvbnRlbnQsICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9u
TmFtZSwgJGluZGVudCk7CisgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2soJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25J
bXBsZW1lbnRhdGlvbk5hbWUsICRpbmRlbnQpOwogCi0gICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bkZ1bmN0aW9uQ2FsbChcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVu
Y3Rpb25TdHJpbmcsICRpbmRlbnQpOworICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlv
bkNhbGwoJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJp
bmcsICRpbmRlbnQpOwogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiB9CiAKIHN1YiBHZW5lcmF0ZUNhbGxXaXRoVXNp
bmdSZWZlcmVuY2VzCkBAIC02ODE4LDEzICs2ODQ5LDEyIEBAIHN1YiBHZW5lcmF0ZVByb3RvdHlw
ZURlY2xhcmF0aW9uCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZX0pIHsKKyAgICAj
IEZJWE1FOiBTaG91bGQgdGhpcyBvdmVycmlkZSBwdXRCeUluZGV4IGFzIHdlbGw/CisgICAgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVB1dE9uUHJvdG90eXBlfSkg
ewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJcbiIpOwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBib29sIHB1dERlbGVn
YXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpO1xuIik7CiAgICAgfQogCi0gICAg
IyBDdXN0b20gZGVmaW5lT3duUHJvcGVydHkgZnVuY3Rpb24KICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZX0p
IHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpO1xuIik7CkBAIC03MDg2LDE3ICs3MTE2
LDE3IEBAIHN1YiBJc0NvbnN0cnVjdGFibGUKICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57SlNCdWlsdGluQ29uc3RydWN0b3J9OwogfQogCi1zdWIgSW5zdGFuY2VP
dmVycmlkZXNDYWxsCitzdWIgSW5zdGFuY2VPdmVycmlkZXNHZXRDYWxsRGF0YQogewogICAgIG15
ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tQ2FsbH0gfHwgJGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9CisgICAg
cmV0dXJuICRpbnRlcmZhY2UtPntMZWdhY3lDYWxsZXJzfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDdXN0b21DYWxsfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntQbHVnaW59OwogfQogCiBzdWIgSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNsYXJhdGlvbgog
ewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICByZXR1cm4gSXNET01HbG9iYWxPYmpl
Y3QoJGludGVyZmFjZSkKLSAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZX0KKyAgICAgICAgfHwgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHV0T25Qcm90b3R5cGV9CiAgICAgICAgIHx8ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbURlZmluZU93blByb3BlcnR5T25Q
cm90b3R5cGV9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkK
QEAgLTk5LDkgKzk5LDYgQEAKICAgICAgICAgIkN1c3RvbUdldE93blByb3BlcnR5U2xvdCI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0s
Ci0gICAgICAgICJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4IjogewotICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAgICAgICAgfSwKICAgICAgICAg
IkN1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LApAQCAtMTE3LDEyICsx
MTQsNiBAQAogICAgICAgICAiQ3VzdG9tSXNSZWFjaGFibGUiOiB7CiAgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiQ3VzdG9t
TmFtZWRHZXR0ZXJPblByb3RvdHlwZSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCi0gICAgICAgICJDdXN0b21OYW1lZFNldHRlciI6
IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAg
IH0sCiAgICAgICAgICJDdXN0b21QcmV2ZW50RXh0ZW5zaW9ucyI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCkBAIC0xMzIsNyArMTIz
LDEwIEBACiAgICAgICAgICJDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUiOiB7CiAgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAg
ICAiQ3VzdG9tUHV0RnVuY3Rpb24iOiB7CisgICAgICAgICJDdXN0b21QdXQiOiB7CisgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQorICAgICAgICB9LAorICAgICAg
ICAiQ3VzdG9tUHV0T25Qcm90b3R5cGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAogICAgICAgICAiQ3VzdG9tU2V0dGVyIjogewpA
QCAtMzQxLDYgKzMzNSwxMCBAQAogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsib3Bl
cmF0aW9uIl0sCiAgICAgICAgICAgICAibm90ZXMiIDogIk9ubHkgdXNlZCBieSBXZWJLaXRUZXN0
UnVubmVyIGFuZCBEdW1wUmVuZGVyVHJlZSIKICAgICAgICAgfSwKKyAgICAgICAgIlBsdWdpbiI6
IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAorICAgICAg
ICAgICAgIm5vdGVzIiA6ICJTaG91bGQgb25seSBiZSB1c2VkIGJ5IGVsZW1lbnRzIHRoYXQgZm9y
d2FyZCB0byBOZXRzY2FwZSBwbHVnLWlucyIKKyAgICAgICAgfSwKICAgICAgICAgIlByaW1hcnlH
bG9iYWwiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwK
ICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwJKHJldmlzaW9u
IDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50
ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogLy8gY2hhbmdlcyBp
biBpdHMgb3V0cHV0LgogWwogICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDdXN0b21OYW1lZFNl
dHRlciwKKyAgICBDdXN0b21QdXQsCiAgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMXxDb25kaXRp
b24yLAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAg
ICBDb25zdHJ1Y3RvcihET01TdHJpbmcgc3RyMSwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cjIgPSAi
ZGVmYXVsdFN0cmluZyIpLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RQbHVnaW5JbnRlcmZhY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGx1Z2luSW50ZXJmYWNlLmlkbAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBsdWdpbklu
dGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1sKKyAgICBQbHVnaW4KK10gaW50ZXJmYWNlIFRlc3RQbHVnaW5JbnRlcmZhY2UgeworfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEzLDMyICs0MTMsNiBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6ZGVzdHJv
eShKU0M6OkpTQ2VsCiAgICAgdGhpc09iamVjdC0+SlNUZXN0SW50ZXJmYWNlOjp+SlNUZXN0SW50
ZXJmYWNlKCk7CiB9CiAKLWJvb2wgSlNUZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKLXsKLSAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGJvb2wgcHV0UmVzdWx0ID0g
ZmFsc2U7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QsIHB1dFJlc3VsdCkpCi0gICAgICAgIHJldHVybiBw
dXRSZXN1bHQ7Ci0KLSAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rlc3RJ
bnRlcmZhY2U6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNp
Z25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKLXsKLSAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwotICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwotICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIHNob3VsZFRocm93KTsKLSAgICBib29sIHB1dFJlc3Vs
dCA9IGZhbHNlOwotICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHB1dFJlc3Vs
dDsKLQotICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgs
IHZhbHVlLCBzaG91bGRUaHJvdyk7Ci19Ci0KIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEludGVy
ZmFjZSogSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OmNhc3QoRXhlY1N0YXRlJiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDYgQEAgcHJvdGVjdGVkOgogICAgIEpTVGVzdEludGVy
ZmFjZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RJbnRlcmZh
Y2U+JiYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci0gICAgYm9vbCBw
dXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFs
dWUsIEpTQzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTsKIH07CiAKIGNsYXNz
IEpTVGVzdEludGVyZmFjZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuaCIKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSA8cnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdFBsdWdpbkludGVy
ZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlw
ZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJh
c2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdFBsdWdpbkludGVy
ZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVz
dFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAg
ICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAg
OiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2VDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTVGVzdFBsdWdpbkludGVyZmFjZT47CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9Q
QVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwor
fQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwo
IlRlc3RQbHVnaW5JbnRlcmZhY2UiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5
IHwgRG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFBsdWdpbkludGVyZmFjZSIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0UGx1Z2luSW50
ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBE
b250RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8g
SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UGx1Z2luSW50
ZXJmYWNlUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUpIH07CisKK3ZvaWQg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGll
cyh2bSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
K30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6c19pbmZvID0geyAi
VGVzdFBsdWdpbkludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UGx1Z2luSW50ZXJmYWNlKSB9OworCitKU1Rlc3RQbHVn
aW5JbnRlcmZhY2U6OkpTVGVzdFBsdWdpbkludGVyZmFjZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQbHVnaW5JbnRlcmZhY2U+
JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0UGx1Z2luSW50ZXJmYWNlPihzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworfQorCitK
U09iamVjdCogSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0
UGx1Z2luSW50ZXJmYWNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0UGx1Z2luSW50
ZXJmYWNlPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UGx1Z2luSW50
ZXJmYWNlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdFBsdWdpbkludGVyZmFjZSogdGhpc09i
amVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZSo+KGNlbGwpOworICAgIHRo
aXNPYmplY3QtPkpTVGVzdFBsdWdpbkludGVyZmFjZTo6fkpTVGVzdFBsdWdpbkludGVyZmFjZSgp
OworfQorCitib29sIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdFBsdWdpbkludGVyZmFjZSo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGlmIChwbHVnaW5FbGVtZW50Q3VzdG9t
R2V0T3duUHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXNPYmplY3Qp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChvYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29sIEpT
VGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBz
bG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJm
YWNlKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRl
LCBpbmRleCk7CisgICAgaWYgKHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Qo
c3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpc09iamVjdCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmpl
Y3QsIHN0YXRlLCBpbmRleCwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0UGx1Z2luSW50ZXJmYWNl
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkK
K3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZSo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKKworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHBsdWdpbkVsZW1lbnRD
dXN0b21QdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3Bl
cnR5U2xvdCwgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKKworICAgIHJl
dHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBwdXRQcm9wZXJ0eVNsb3QpOworfQorCitib29sIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBK
U1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQoreworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CisgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QodGhpc09iamVjdCwgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFs
c2U7CisgICAgaWYgKHBsdWdpbkVsZW1lbnRDdXN0b21QdXQodGhpc09iamVjdCwgc3RhdGUsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCwgcHV0UmVzdWx0KSkKKyAgICAgICAg
cmV0dXJuIHB1dFJlc3VsdDsKKworICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxs
LCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7Cit9CisKK0NhbGxUeXBlIEpTVGVz
dFBsdWdpbkludGVyZmFjZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RQbHVnaW5JbnRl
cmZhY2UqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKworICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEo
dGhpc09iamVjdCwgY2FsbERhdGEpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQbHVnaW5J
bnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpn
ZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwor
fQorCitib29sIHNldEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisg
ICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Cit9
CisKK2Jvb2wgSlNUZXN0UGx1Z2luSW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BB
UkFNKHZpc2l0b3IpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBKU1Rlc3RQbHVnaW5J
bnRlcmZhY2VPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUs
IHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0UGx1Z2luSW50ZXJmYWNlID0gc3Rh
dGljX2Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkp
OworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0UGx1Z2luSW50ZXJmYWNlLT53
cmFwcGVkKCksIGpzVGVzdFBsdWdpbkludGVyZmFjZSk7Cit9CisKKyNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/
XzdUZXN0UGx1Z2luSW50ZXJmYWNlQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUxOVRlc3RQbHVnaW5JbnRlcmZhY2VF
W107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQ
bHVnaW5JbnRlcmZhY2U+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklU
WSkKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0PHZv
aWQqKj4oaW1wbC5wdHIoKSkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIoIj8/
XzdUZXN0UGx1Z2luSW50ZXJmYWNlQFdlYkNvcmVAQDZCQCIpKTsKKyNlbHNlCisgICAgdm9pZCog
ZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUxOVRlc3RQbHVnaW5JbnRlcmZh
Y2VFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RQbHVnaW5JbnRlcmZh
Y2UgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8v
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVm
aW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0UGx1Z2lu
SW50ZXJmYWNlPjo6dmFsdWUsICJUZXN0UGx1Z2luSW50ZXJmYWNlIGlzIG5vdCBwb2x5bW9ycGhp
YyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUg
YSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdFBsdWdpbkludGVyZmFjZSBoYXMg
c3ViY2xhc3Nlcy4gSWYgVGVzdFBsdWdpbkludGVyZmFjZSBoYXMgc3ViY2xhc3NlcyB0aGF0IGdl
dCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdFBsdWdp
bkludGVyZmFjZSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5
IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZh
Y2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVy
ID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcjxUZXN0UGx1Z2luSW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
fQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RQbHVnaW5JbnRlcmZhY2UmIGltcGwpCit7CisgICAg
cmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RQbHVnaW5J
bnRlcmZhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2UqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbklu
dGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRl
c3RQbHVnaW5JbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDxydW50aW1lL0NhbGxEYXRhLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgSlNUZXN0UGx1Z2luSW50ZXJmYWNlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0UGx1Z2lu
SW50ZXJmYWNlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0
UGx1Z2luSW50ZXJmYWNlPjsKKyAgICBzdGF0aWMgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKiBjcmVh
dGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3RQbHVnaW5JbnRlcmZhY2U+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpT
VGVzdFBsdWdpbkludGVyZmFjZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
UGx1Z2luSW50ZXJmYWNlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAg
ICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAg
c3RhdGljIFRlc3RQbHVnaW5JbnRlcmZhY2UqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1Zh
bHVlKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYp
OworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCosIEpT
Qzo6Q2FsbERhdGEmKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCopOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVu
V2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNDOjpUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERhdGEgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
K3Byb3RlY3RlZDoKKyAgICBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0UGx1Z2luSW50ZXJmYWNlPiYmKTsKKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0UGx1Z2luSW50
ZXJmYWNlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAg
IHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQp
OworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3Jh
cHBlcldvcmxkJiwgVGVzdFBsdWdpbkludGVyZmFjZSopCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEpTVGVzdFBsdWdpbkludGVyZmFjZU93bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93
bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0UGx1Z2luSW50ZXJm
YWNlKiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30K
KworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFRlc3RQbHVnaW5JbnRlcmZhY2UmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RQbHVn
aW5JbnRlcmZhY2UqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKHN0YXRlLCBnbG9iYWxPYmpl
Y3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVh
dGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdFBsdWdpbklu
dGVyZmFjZT4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8
VGVzdFBsdWdpbkludGVyZmFjZT4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3Jl
YXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpq
c051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFp
dHM8VGVzdFBsdWdpbkludGVyZmFjZT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVz
dFBsdWdpbkludGVyZmFjZTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdFBs
dWdpbkludGVyZmFjZSo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCShyZXZpc2lvbiAyMTkyMzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTE5LDkgKzE5LDkgQEAKICAqLwogCiBbCi0gICAgQ3VzdG9tRW51bWVyYXRlUHJv
cGVydHksCisgICAgQ3VzdG9tR2V0T3duUHJvcGVydHlOYW1lcywKICAgICBDdXN0b21HZXRPd25Q
cm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yLAotICAgIEN1c3RvbU5hbWVkU2V0dGVyLAorICAgIEN1
c3RvbVB1dCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlLAogICAgIEpTQ3VzdG9tSGVhZGVyLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw5ICsx
OSw3IEBACiAgKi8KIAogWwotICAgIEN1c3RvbUNhbGwsCi0gICAgQ3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90QW5kRGVzY3JpcHRvciwKLSAgICBDdXN0b21OYW1lZFNldHRlciwKKyAgICBQbHVnaW4K
IF0gaW50ZXJmYWNlIEhUTUxBcHBsZXRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGFsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksOSArMTksNyBAQAogICovCiAKIFsKLSAg
ICBDdXN0b21DYWxsLAotICAgIEN1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3Is
Ci0gICAgQ3VzdG9tTmFtZWRTZXR0ZXIsCisgICAgUGx1Z2luCiBdIGludGVyZmFjZSBIVE1MRW1i
ZWRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGFsaWduOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhlaWdodDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCShyZXZpc2lvbiAy
MTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMTksOSArMTksNyBAQAogICovCiAKIFsKLSAgICBDdXN0b21DYWxsLAot
ICAgIEN1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IsCi0gICAgQ3VzdG9tTmFt
ZWRTZXR0ZXIKKyAgICBQbHVnaW4KIF0gaW50ZXJmYWNlIEhUTUxPYmplY3RFbGVtZW50IDogSFRN
TEVsZW1lbnQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRm9ybUVsZW1lbnQgZm9ybTsK
ICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBjb2RlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTIgQEAgdHlwZWRl
ZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7CiAgICAgQ2hlY2tTZWN1cml0eSwKICAgICBDdXN0b21E
ZWZpbmVPd25Qcm9wZXJ0eSwKICAgICBDdXN0b21EZWxldGVQcm9wZXJ0eSwKLSAgICBDdXN0b21F
bnVtZXJhdGVQcm9wZXJ0eSwKKyAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eU5hbWVzLAogICAgIEN1
c3RvbUdldE93blByb3BlcnR5U2xvdCwKLSAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4LAogICAgIEN1c3RvbUdldFByb3RvdHlwZSwKICAgICBDdXN0b21QcmV2ZW50RXh0ZW5zaW9u
cywKICAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCi0gICAgQ3VzdG9tUHV0RnVuY3Rpb24sCisg
ICAgQ3VzdG9tUHV0LAogICAgIEN1c3RvbVRvU3RyaW5nTmFtZSwKICAgICBFeHBvcnRNYWNybz1X
RUJDT1JFX0VYUE9SVCwKICAgICBJbXBsaWNpdFRoaXMsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE2ICszMSwxNiBAQAogICAgIEN1c3RvbURlZmlu
ZU93blByb3BlcnR5LAogICAgIEN1c3RvbURlZmluZU93blByb3BlcnR5T25Qcm90b3R5cGUsCiAg
ICAgQ3VzdG9tRGVsZXRlUHJvcGVydHksCi0gICAgQ3VzdG9tRW51bWVyYXRlUHJvcGVydHksCi0g
ICAgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciwKKyAgICBDdXN0b21HZXRP
d25Qcm9wZXJ0eU5hbWVzLAorICAgIEN1c3RvbUdldE93blByb3BlcnR5U2xvdCwKICAgICBDdXN0
b21HZXRQcm90b3R5cGUsCi0gICAgQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZSwKLSAgICBD
dXN0b21OYW1lZFNldHRlciwKICAgICBDdXN0b21QcmV2ZW50RXh0ZW5zaW9ucywKKyAgICBDdXN0
b21QdXQsCisgICAgQ3VzdG9tUHV0T25Qcm90b3R5cGUsCiAgICAgQ3VzdG9tVG9TdHJpbmdOYW1l
LAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogICAgIElzSW1tdXRhYmxlUHJv
dG90eXBlRXhvdGljT2JqZWN0LAotICAgIFVuZm9yZ2VhYmxlLAorICAgIFVuZm9yZ2VhYmxlCiBd
IGludGVyZmFjZSBMb2NhdGlvbiB7CiAgICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRvdyZG
aXJzdFdpbmRvdywgU2V0dGVyTWF5VGhyb3dFeGNlcHRpb24sIERvTm90Q2hlY2tTZWN1cml0eU9u
U2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhyZWY7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKIFsKLSAgICBDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSwKKyAgICBDdXN0b21HZXRP
d25Qcm9wZXJ0eU5hbWVzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogICAg
IFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgU3RvcmFnZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314818</attachid>
            <date>2017-07-06 22:17:22 -0700</date>
            <delta_ts>2017-07-07 06:43:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174238-20170706221853.patch</filename>
            <type>text/plain</type>
            <size>91021</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTIzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxNy0wNy0wNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIE1vdmUgcGx1Z2luIG9i
amVjdCBjdXN0b21pemF0aW9uIGludG8gdGhlIGdlbmVyYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MjM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBBZGRlZCBbUGx1Z2luXSBleHRlbmRlZCBh
dHRyaWJ1dGUgdG8gZm9yd2FyZCB0aGUgbmVjZXNzYXJ5IGhvb2tzCisgICAgICAgICAgZm9yIGdl
dC9zZXQvZGVsZXRlIHRvIHRoZSBwbHVnaW4gY29kZS4KKyAgICAgICAgLSBSZW1vdmVkIFtDdXN0
b21OYW1lZFNldHRlcl0gYW5kIHJlcGxhY2VkIGl0J3MgcmVtYWluaW5nIHVzZXMKKyAgICAgICAg
ICBbQ3VzdG9tUHV0XSAoZm9ybWFsbHkgY2FsbGVkIFtDdXN0b21QdXRGdW5jdGlvbl0pLgorICAg
ICAgICAtIFJlbmFtZWQgW0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGVdIHRvIFtDdXN0b21Q
dXRPblByb3RvdHlwZV0KKyAgICAgICAgICBiZWNhdXNlIHRoYXQgaXMgYWN0dWFsbHkgd2hhdCBp
dCBkb2VzLgorICAgICAgICAtIFJlbW92ZWQgW0N1c3RvbUdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhdIGFuZCBtYWRlIAorICAgICAgICAgIFtDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RdIGltcGx5
IGl0LCBhcyB0aGUgb3RoZXIgY3VzdG9tIGhvb2tzCisgICAgICAgICAgZG8uCisgICAgICAgIC0g
UmVuYW1lZCBbQ3VzdG9tRW51bWVyYXRlUHJvcGVydHldIHRvIFtDdXN0b21HZXRPd25Qcm9wZXJ0
eU5hbWVzXQorICAgICAgICAgIHRvIGNvbmZvcm0gd2l0aCBvdGhlciBhdHRyaWJ1dGUgbmFtZXMu
CisgICAgICAgIC0gUmVuYW1lZCBbQ3VzdG9tQ2FsbF0gdG8gW0N1c3RvbUdldENhbGxEYXRhXSB0
byBjb25mb3JtIHdpdGggb3RoZXIgCisgICAgICAgICAgYXR0cmlidXRlIG5hbWVzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3Vz
dG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgUmVtb3ZlIGN1c3RvbSBiaW5kaW5ncy4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwdXRDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURl
Y2xhcmF0aW9uOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
cHV0RGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICBVc2UgW0N1c3RvbVB1dF0gcmF0aGVyIHRo
YW4gW0N1c3RvbU5hbWVkU2V0dGVyXSB0byBhbGxvdyB1cworICAgICAgICB0byBnZXQgcmlkIG9m
IFtDdXN0b21OYW1lZFNldHRlcl0uIFJldXNlIHB1dCBkZWxlZ2F0ZSBhcworICAgICAgICBjb21t
b24gY29kZSB0byBzaGFyZSBiZXR3ZWVuIHB1dCBhbmQgcHV0QnlJbmRleC4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgUmVwbGFjZSBbQ3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90QW5kRGVzY3JpcHRvcl0gd2l0aCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQorICAg
ICAgICB3aGljaCBpcyBtb3JlIGNsZWFyIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdmFyaWFu
dHMgb2YgdGhpcyBob29rIG92ZXJyaWRlCisgICAgICAgIHdlIG5lZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OnB1dENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIFVzZSBb
Q3VzdG9tUHV0XSByYXRoZXIgdGhhbiBbQ3VzdG9tTmFtZWRTZXR0ZXJdIHRvIGFsbG93IHVzCisg
ICAgICAgIHRvIGdldCByaWQgb2YgW0N1c3RvbU5hbWVkU2V0dGVyXS4gUmV1c2UgcHV0IGRlbGVn
YXRlIGFzCisgICAgICAgIGNvbW1vbiBjb2RlIHRvIHNoYXJlIGJldHdlZW4gcHV0IGFuZCBwdXRC
eUluZGV4LgorCisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXQpOgor
ICAgICAgICBbQ3VzdG9tUHV0T25Qcm90b3R5cGVdICh3aGljaCB3ZWlyZGx5IHVzZWQgaW5jb3Jy
ZWN0bHkgYmUgY2FsbGVkIAorICAgICAgICBbQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZV0p
IG5vdyB3b3JrcyBsaWtlIFtDdXN0b21QdXRdIG1lYW5pbmcKKyAgICAgICAgeW91IG5lZWQgdG8g
Y2FsbCBCYXNlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRDdXN0b21QdXQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6cGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAg
ICAgIFJlbW92ZSB0ZW1wbGF0aXplZCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90LCB3aGljaCB3YXMgCisgICAgICAgIGNvbXBsZXRlbHkgdW5uZWNlc3NhcnkgYW5kIG1lcmdl
IGl0cyBmdW5jdGlvbmFsaXR5IGludG8gdGhlIG91dCBvZgorICAgICAgICBsaW5lIG92ZXJsb2Fk
LiBSZW1vdmUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyIGZyb20gdGhlIGhlYWRlciwKKyAg
ICAgICAgc2luY2UgaXQgaXMgb25seSB1c2VkIGluIGltcGxlbWVudGF0aW9uLCBhbmQgdW5pZnkg
dGhlIG5hbWluZyBhbmQKKyAgICAgICAgYXJndW1lbnQgcG9zaXRpb24gKEpTSFRNTEVsZW1lbnQq
IGNvbWVzIGZpcnN0KSBvZiB0aGUgaG9va3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW5kZXhlZEdldHRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZU5hbWVkR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6
CisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoR2VuZXJh
dGVQdXQpOgorICAgICAgICAoR2VuZXJhdGVQdXRCeUluZGV4KToKKyAgICAgICAgKEdlbmVyYXRl
RGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0eUJ5SW5kZXgp
OgorICAgICAgICAoR2VuZXJhdGVOYW1lZERlbGV0ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKElu
c3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEluc3RhbmNlT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChJbnN0YW5jZU92ZXJyaWRlc1B1
dCk6CisgICAgICAgIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAoR2VuZXJhdGVHZXRDYWxsRGF0YSk6CisgICAgICAgIChHZW5lcmF0ZVBsdWdpbkNhbGwp
OgorICAgICAgICAoR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucyk6CisgICAgICAgIChH
ZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQcm90b3R5
cGVEZWNsYXJhdGlvbik6CisgICAgICAgIChJbnN0YW5jZU92ZXJyaWRlc0dldENhbGxEYXRhKToK
KyAgICAgICAgKEhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24pOgorICAgICAgICAtIEFk
ZCBzdXBwb3J0IGZvciBbUGx1Z2luXQorICAgICAgICAtIFJlbW92ZSBzdXBwb3J0IGZvciBbQ3Vz
dG9tTmFtZWRTZXR0ZXJdCisgICAgICAgIC0gUmVwbGFjZSBbQ3VzdG9tR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleF0gd2l0aCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQorICAgICAgICAtIFJl
cGxhY2UgW0N1c3RvbUVudW1lcmF0ZVByb3BlcnR5XSB3aXRoIFtDdXN0b21HZXRPd25Qcm9wZXJ0
eU5hbWVzXQorICAgICAgICAtIFJlcGxhY2UgW0N1c3RvbVB1dEZ1bmN0aW9uXSB3aXRoIFtDdXN0
b21QdXRdLgorICAgICAgICAtIE1ha2Ugc3Vicm91dGluZSBuYW1lcyBtb3JlIGNvbnNpc3RlbnQg
KHJlbW92ZSBhIGZldyBEZWZpbml0aW9uIHN1ZmZpeGVzKQorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IC8gcmVt
b3ZlZCBhdHRyaWJ1dGVzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQbHVnaW5JbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdFBsdWdpbkludGVyZmFjZS5pZGw6IEFkZGVkLgorICAgICAgICBVcGRh
dGUgLyBhZGQgdGVzdHMuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlv
bi5pZGw6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmlkbDoKKyAgICAgICAgVXBkYXRlIGZv
ciBuZXcgLyByZW5hbWVkIGF0dHJpYnV0ZXMuCisKIDIwMTctMDctMDYgIFlvYXYgV2Vpc3MgIDx5
b2F2QHlvYXYud3M+CiAKICAgICAgICAgW3ByZWxvYWRdIEF2b2lkIHJlZmxlY3RpbmcgInZpZGVv
IiBhbmQgImF1ZGlvIiB3aGVuIHRoZXkgYXJlIG5vdCBzdXBwb3J0ZWQgYGFzYCB2YWx1ZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5LDEzICsxMTg5LDEwIEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0V4Y2VwdGlvbkJhc2UuY3BwCi0gICAgYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1
c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNIVE1MRWxlbWVu
dEN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3Bw
Ci0gICAgYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSURCQ3Vyc29yQ3VzdG9tLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NjI4LDcgKzU2MjgsNiBA
QAogCQlCQzJFRDZCQzBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkVENkJCMEM2QkQyRjAw
MDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovOyB9OwogCQlCQzMwNUM3OTBDMDc2QkIzMDBD
RDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1M
T2JqZWN0RWxlbWVudC5jcHAgKi87IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBK
U0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVu
dC5oICovOyB9OwotCQlCQzMwNUNBNDBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzMwNUNBMzBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3Rv
bS5jcHAgKi87IH07CiAJCUJDMzNGQjFCMEYzMEVFODUwMDJDREQ3QyAvKiBSZW5kZXJMaW5lQm94
TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzMzRkIxQTBGMzBFRTg1MDAyQ0REN0MgLyogUmVuZGVyTGluZUJveExpc3QuY3BwICovOyB9Owog
CQlCQzM0OEJCRTBEQjdGNTMxMDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJCRDBE
QjdGNTMxMDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgKi87IH07CiAJCUJD
MzQ4QkQzMERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQxMERCN0Y4MDQwMDRB
QkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmNwcCAqLzsgfTsKQEAgLTU2NjcsNyArNTY2Niw2IEBA
CiAJCUJDNDkxOEM5MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxJRnJhbWVFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ5MThDMzBCRkVB
MDUwMDA5RDYzMTYgLyogSlNIVE1MSUZyYW1lRWxlbWVudC5oICovOyB9OwogCQlCQzQ5MUI3ODBD
MDIzRUZEMDA5RDYzMTYgLyogSlNIVE1MTWFycXVlZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0OTFCNzYwQzAyM0VGRDAwOUQ2MzE2
IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQkM0OTFCNzkwQzAyM0VGRDAw
OUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ5MUI3NzBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1M
TWFycXVlZUVsZW1lbnQuaCAqLzsgfTsKLQkJQkM0RURFRjQwQzA4RjNGQjAwN0VERDQ5IC8qIEpT
SFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxl
dEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQzUxMTU2RTEyQjE3NDlDMDBDOTY3NTQgLyog
U2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzUxMTU2RDEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMu
bW0gKi87IH07CiAJCUJDNTE1ODBCMEMwM0Q0MDQwMDhCQjBFRSAvKiBKU0hUTUxEb2N1bWVudEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzUxNTgwQTBDMDNENDA0MDA4QkIwRUUgLyogSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwICovOyB9
OwogCQlCQzUzQzVGNTBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTNDNUY0MERBNTZCOTIwMDIxRUI1
RCAvKiBHcmFkaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC01NzQ3LDcgKzU3NDUsNiBAQAogCQlCQzY0QjREQzBDQjQyOThBMDA1RjJCNjIg
LyogQ1NTRm9udFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzY0QjRENDBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udFNlbGVjdG9yLmgg
Ki87IH07CiAJCUJDNjkzMjczMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2OTMyNzEw
RDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi87IH07CiAJCUJDNjkzMjc0
MEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBK
U0RPTVdpbmRvd0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQlCQzZENDRCRTBDMDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNkQ0NEJEMEMwN0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3Bw
ICovOyB9OwogCQlCQzZENDRFQzBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkQ0
NEVBMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuY3BwICovOyB9OwogCQlC
QzZENDRFRDBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENDRFQjBDMDdGMkVEMDA3
MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggKi87IH07CiAJCUJDNkQ2RTI2MDlBRjk0MzUw
MEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEyNiw3
ICsxNDEyMyw2IEBACiAJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdHRyQ3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzcwQzA3NkJCMzAwQ0QyMEYw
IC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzMwNUNBMzBDMDc4MUJCMDBDRDIwRjAg
LyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkMzM0ZCMUEwRjMwRUU4NTAwMkNERDdDIC8qIFJlbmRlckxpbmVC
b3hMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckxp
bmVCb3hMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzNDhCQTcwREI3
RjFCODAwNEFCQUI5IC8qIFhNTEh0dHBSZXF1ZXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBYTUxIdHRwUmVxdWVzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzQ4
QkJEMERCN0Y1MzEwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNjUsNyArMTQxNjEsNiBAQAogCQlC
QzQ5MUI0RTBDMDIzRTJEMDA5RDYzMTYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBIVE1MTWFycXVlZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ5MUI3NjBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1MTWFycXVlZUVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE1h
cnF1ZWVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0OTFCNzcw
QzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxNYXJxdWVlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQzRFREVGMzBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0
RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkM1MTE1NkQxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTE1ODBBMEMwM0Q0MDQwMDhCQjBFRSAv
KiBKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzUzQzVGNDBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhZGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0MjUxLDcgKzE0MjQ2LDYgQEAKIAkJQkM2NEI0RDQwQ0I0Mjk4QTAwNUYyQjYy
IC8qIENTU0ZvbnRTZWxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NGb250U2VsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2OTMyNzEw
RDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd0Jhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzY5MzI3MjBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzZENDRCRDBDMDdFRkI2MDA3MkQyQzkgLyog
SlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNkQ0NEVBMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEVtYmVk
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNkQ0NEVCMEMwN0Yy
RUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjM3MDUsMTEgKzIzNjk5LDggQEAKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3
MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdD
QjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oICovLAogCQkJCUJDRTdCMTkyMEQ0RTg2
OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLAotCQkJCUJDNEVERUYzMEMwOEYz
RkIwMDdFREQ0OSAvKiBKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk5Mzky
MjYyQzEwMzIxMDdCMDA2RTdENUQgLyogSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgKi8s
CiAJCQkJQkM1ODIzRjQwQzBBOThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRDdXN0b20uY3Bw
ICovLAotCQkJCUJDNkQ0NEJEMEMwN0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRD
dXN0b20uY3BwICovLAotCQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBKU0hUTUxPYmpl
Y3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlENkY3OTYwQzE2NkZGRUNFMDA3NkREMTggLyog
SlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk3QTc0RUNCQzEwMTgzOURB
MDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovLAogCQkJCUJD
RTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTMy
MDc2LDcgKzMyMDY3LDYgQEAKIAkJCQlCQzk3RTQxMjEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1M
QWxsQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBMkRFRjBBMUI4NTJBMDBD
ODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRB
MkRGMTBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1MQXBwbGV0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlCQzRFREVGNDBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0RWxlbWVu
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUExRTBBMUNEQUI0MDBCNDJCMjUg
LyogSlNIVE1MQXJlYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M5REJGRUQxQTlD
NDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUU0NDYxNDM3MENENjg5QzQwMEZBREE3NSAvKiBKU0hUTUxBdWRpb0VsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMjEwMCw3ICszMjA5MCw2IEBACiAJCQkJQkM1ODIzRjUwQzBB
OThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM4RTY1RjcwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9y
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzZENDRFQzBDMDdGMkVEMDA3MkQyQzkgLyogSlNI
VE1MRW1iZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDNkQ0NEJFMEMwN0VGQjYw
MDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFFMkFBMjYwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEyODBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MRm9u
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJGOUE4ODAxNjQ4REQyRjAwMUM2QjIz
IC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MjEyNyw3ICszMjExNiw2IEBACiAJCQkJQTdCQkUyNjYxMUFGQjNGMjAwMDVFQTAzIC8qIEpTSFRN
TE1ldGVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIyOTBBMUNFNjNCMDBC
NDJCMjUgLyogSlNIVE1MTW9kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMwNUM3
OTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCQzMwNUNBNDBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg1QjFFQTBBMUIyNDA1MDBEOEM4N0MgLyog
SlNIVE1MT0xpc3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU3RTlDMEExQTgz
RTMwMDdGQjhDNSAvKiBKU0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTgwRTdFOUEwQTFBODNFMzAwN0ZCOEM1IC8qIEpTSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDEzICs2NCwxMCBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVkZSAi
SlNFdmVudFRhcmdldEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmNwcCIK
LSNpbmNsdWRlICJKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAi
SlNIVE1MRWxlbWVudEN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNIVE1MRW1iZWRFbGVtZW50Q3Vz
dG9tLmNwcCIKLSNpbmNsdWRlICJKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSGlzdG9y
eUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGFDdXN0b20uY3BwIgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTMsNiArMzEzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIHN0eWxlUHJvcGVydHlHZXR0
ZQogICAgIHJldHVybiBzdHlsZVByb3BlcnR5R2V0dGVyKHN0YXRlLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eUluZm8ucHJvcGVydHlJRCk7CiB9CiAKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjb252
ZXJ0ZWQgdG8gYmUgYSBuYW1lZCBnZXR0ZXIuCiBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8gcHJvcGVydHlJ
bmZvID0gcGFyc2VKYXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7CkBAIC0z
MjIsMTQgKzMyMywxNSBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVy
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXRE
ZWxlZ2F0ZShFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCisvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgY29udmVydGVkIHRvIGJlIGEgbmFtZWQgc2V0dGVyLgorc3RhdGljIGJv
b2wgcHV0Q29tbW9uKEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgRXhlY1N0YXRl
JiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCYg
cHV0UmVzdWx0KQogewogICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrOwogICAgIGF1dG8gcHJvcGVydHlJbmZvID0gcGFyc2VKYXZhU2NyaXB0
Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJv
cGVydHlJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBwcm9wZXJ0eVZhbHVl
ID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3Rh
dGUsIHZhbHVlKTsKKyAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBjb252ZXJ0PElETFRyZWF0TnVs
bEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKHBy
b3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4KQogICAgICAgICBwcm9wZXJ0eVZhbHVlLmFw
cGVuZCgicHgiKTsKIApAQCAtMzQyLDE3ICszNDQsNDEgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFy
YXRpb246OnB1dERlbGVnYXRlKAogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBzZXRQcm9w
ZXJ0eUludGVybmFsUmVzdWx0ID0gd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVy
dHlJbmZvLnByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUsIGltcG9ydGFudCk7CisgICAgYXV0byBz
ZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkuc2V0UHJvcGVy
dHlJbnRlcm5hbChwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSwgaW1wb3J0
YW50KTsKICAgICBpZiAoc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkg
ewotICAgICAgICBhdXRvJiB2bSA9IHN0YXRlLT52bSgpOworICAgICAgICBhdXRvJiB2bSA9IHN0
YXRlLnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgc2NvcGUsIHNldFByb3BlcnR5SW50
ZXJuYWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0
aW9uKHN0YXRlLCBzY29wZSwgc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcHV0UmVzdWx0ID0gc2V0
UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQoreworICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgYm9vbCBwdXRS
ZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAocHV0Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7
CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKK30KKworYm9vbCBKU0NTU1N0eWxlRGVjbGFy
YXRpb246OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25l
ZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIGJvb2wg
cHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHB1dENvbW1vbigqdGhpc09iamVjdCwgKnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCksIHZhbHVlLCBwdXRSZXN1bHQpKQorICAg
ICAgICByZXR1cm4gcHV0UmVzdWx0OworCisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4
KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKK30KKwogSlNWYWx1ZSBK
U0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxl
dEVsZW1lbnRDdXN0b20uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSlNIVE1MQXBwbGV0RWxlbWVudC5oIgotCi0jaW5jbHVkZSAiSFRNTEFw
cGxldEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1ib29sIEpTSFRN
TEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAg
IHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpTSFRNTEFwcGxl
dEVsZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7Ci19Ci0KLWJv
b2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QsIGJvb2wmIHB1dFJlc3VsdCkKLXsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1
dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwotfQot
Ci1DYWxsVHlwZSBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGws
IENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEdldENhbGxE
YXRhKGpzQ2FzdDxKU0hUTUxBcHBsZXRFbGVtZW50Kj4oY2VsbCksIGNhbGxEYXRhKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIxOTIzMikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5j
cHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJK
U0hUTUxFbWJlZEVsZW1lbnQuaCIKLQotI2luY2x1ZGUgIkhUTUxFbWJlZEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1l
bnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Q8SlNIVE1MRW1iZWRFbGVtZW50LCBCYXNlPihleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwotfQotCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVu
dDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkK
LXsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwotfQotCi1DYWxsVHlwZSBKU0hUTUxFbWJl
ZEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQot
ewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoanNDYXN0PEpTSFRNTEVtYmVk
RWxlbWVudCo+KGNlbGwpLCBjYWxsRGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVt
YmVkRWxlbWVudEN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RF
bGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0hUTUxPYmplY3RFbGVt
ZW50LmgiCi0KLSNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIG5h
bWVzcGFjZSBKU0M7Ci0KLWJvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRP
d25Qcm9wZXJ0eVNsb3Q8SlNIVE1MT2JqZWN0RWxlbWVudCwgQmFzZT4oZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90LCB0aGlzKTsKLX0KLQotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50OjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQotewotICAgIHJl
dHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRo
aXMsIHNsb3QsIHB1dFJlc3VsdCk7Ci19Ci0KLUNhbGxUeXBlIEpTSFRNTE9iamVjdEVsZW1lbnQ6
OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJl
dHVybiBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoanNDYXN0PEpTSFRNTE9iamVjdEVsZW1lbnQq
PihjZWxsKSwgY2FsbERhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVt
ZW50Q3VzdG9tLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lv
biAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9w
ZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RD
b21tb24oSlNMb2NhdGlvbiYgdGhpc09iamVjdCwgRXhlY1N0YXRlJiBzdGF0ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZy
YW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC53cmFwcGVkKCkuZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNTEsNjAgKzUxLDEwMCBAQCBib29sIEpTTG9jYXRpb246OmdldE93
blByb3BlcnR5U2xvdERlbGVnCiAgICAgLy8gT3VyIGN1c3RvbSBjb2RlIGlzIG9ubHkgbmVlZGVk
IHRvIGltcGxlbWVudCB0aGUgV2luZG93IGNyb3NzLWRvbWFpbiBzY2hlbWUsIHNvIGlmIGFjY2Vz
cyBpcwogICAgIC8vIGFsbG93ZWQsIHJldHVybiBmYWxzZSBzbyB0aGUgbm9ybWFsIGxvb2t1cCB3
aWxsIHRha2UgcGxhY2UuCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKEJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKCpzdGF0ZSwgKmZyYW1lLCBtZXNzYWdlKSkK
KyAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUs
ICpmcmFtZSwgbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXIt
KC1vLC1wLSkKLSAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCku
dG9TdHJpbmdUYWdTeW1ib2wgfHwgcHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVz
KCkuaGFzSW5zdGFuY2VTeW1ib2wgfHwgcHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5h
bWVzKCkuaXNDb25jYXRTcHJlYWRhYmxlU3ltYm9sKSB7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpcywgUmVhZE9ubHkgfCBEb250RW51bSwganNVbmRlZmluZWQoKSk7CisgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmdUYWdTeW1ib2wgfHwgcHJv
cGVydHlOYW1lID09IHN0YXRlLnByb3BlcnR5TmFtZXMoKS5oYXNJbnN0YW5jZVN5bWJvbCB8fCBw
cm9wZXJ0eU5hbWUgPT0gc3RhdGUucHJvcGVydHlOYW1lcygpLmlzQ29uY2F0U3ByZWFkYWJsZVN5
bWJvbCkgeworICAgICAgICBzbG90LnNldFZhbHVlKCZ0aGlzT2JqZWN0LCBSZWFkT25seSB8IERv
bnRFbnVtLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAg
ICAgLy8gV2Ugb25seSBhbGxvdyBhY2Nlc3MgdG8gTG9jYXRpb24ucmVwbGFjZSgpIGNyb3NzIG9y
aWdpbi4KLSAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkucmVw
bGFjZSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBSZWFkT25seSB8IERvbnRFbnVt
LCBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXI8anNMb2NhdGlvbkluc3RhbmNlRnVuY3Rp
b25SZXBsYWNlLCAxPik7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0ZS5wcm9wZXJ0eU5h
bWVzKCkucmVwbGFjZSkgeworICAgICAgICBzbG90LnNldEN1c3RvbSgmdGhpc09iamVjdCwgUmVh
ZE9ubHkgfCBEb250RW51bSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzTG9jYXRp
b25JbnN0YW5jZUZ1bmN0aW9uUmVwbGFjZSwgMT4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICAgICAvLyBHZXR0aW5nIGxvY2F0aW9uLmhyZWYgY3Jvc3Mgb3JpZ2luIG5lZWRzIHRv
IHRocm93LiBIb3dldmVyLCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSBuZWVkcyB0byByZXR1
cm4KICAgICAvLyBhIGRlc2NyaXB0b3IgdGhhdCBoYXMgYSBzZXR0ZXIgYnV0IG5vIGdldHRlci4K
LSAgICBpZiAoc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkgJiYgcHJvcGVydHlOYW1lID09IHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuaHJlZikgeworICAgIGlmIChzbG90LmludGVybmFsTWV0aG9kVHlwZSgp
ID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSAmJiBw
cm9wZXJ0eU5hbWUgPT0gc3RhdGUucHJvcGVydHlOYW1lcygpLmhyZWYpIHsKICAgICAgICAgYXV0
byogZW50cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5
KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0dGVy
U2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIG51bGxwdHIsIGVudHJ5LT5w
cm9wZXJ0eVB1dHRlcigpKTsKLSAgICAgICAgc2xvdC5zZXRDdXN0b21HZXR0ZXJTZXR0ZXIodGhp
cywgRG9udEVudW0gfCBDdXN0b21BY2Nlc3NvciwgY3VzdG9tR2V0dGVyU2V0dGVyKTsKKyAgICAg
ICAgc2xvdC5zZXRDdXN0b21HZXR0ZXJTZXR0ZXIoJnRoaXNPYmplY3QsIERvbnRFbnVtIHwgQ3Vz
dG9tQWNjZXNzb3IsIGN1c3RvbUdldHRlclNldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIHRocm93U2VjdXJpdHlFcnJvcigqc3RhdGUsIHNjb3BlLCBtZXNzYWdlKTsK
KyAgICB0aHJvd1NlY3VyaXR5RXJyb3Ioc3RhdGUsIHNjb3BlLCBtZXNzYWdlKTsKICAgICBzbG90
LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTTG9jYXRpb246
OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKK2Jvb2wgSlNMb2Nh
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3Rh
dGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAg
ICBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9j
YXRpb24qPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOworICAg
IGlmIChnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oKnRoaXNPYmplY3QsICpzdGF0ZSwgcHJvcGVy
dHlOYW1lLCBzbG90KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
K30KKworYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4ob2Jq
ZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisKKyAgICBpZiAoZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUs
IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KSwgc2xvdCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmpl
Y3QsIHN0YXRlLCBpbmRleCwgc2xvdCk7Cit9CisKK3N0YXRpYyBib29sIHB1dENvbW1vbihKU0xv
Y2F0aW9uJiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUmIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBTaWxl
bnRseSBibG9jayBhY2Nlc3MgdG8gdG9TdHJpbmcgYW5kIHZhbHVlT2YuCi0gICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFt
ZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpCisgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IHN0
YXRlLnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIEFsd2F5cyBhbGxvdyBhc3NpZ25pbmcgdG8gdGhlIHdob2xlIGxvY2F0aW9uLgogICAgIC8v
IEhvd2V2ZXIsIGFsbGxvd2luZyBhc3NpZ25pbmcgb2YgcGllY2VzIG1pZ2h0IGluYWR2ZXJ0ZW50
bHkgZGlzY2xvc2UgcGFydHMgb2YgdGhlIG9yaWdpbmFsIGxvY2F0aW9uLgogICAgIC8vIFNvIGZh
bGwgdGhyb3VnaCB0byB0aGUgYWNjZXNzIGNoZWNrIGZvciB0aG9zZS4KLSAgICBpZiAocHJvcGVy
dHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuaHJlZikKKyAgICBpZiAocHJvcGVydHlO
YW1lID09IHN0YXRlLnByb3BlcnR5TmFtZXMoKS5ocmVmKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBCbG9jayBhY2Nlc3MgYW5kIHRocm93IGlmIHRoZXJlIGlzIGEgc2VjdXJpdHkg
ZXJyb3IuCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFt
ZShzdGF0ZSwgZnJhbWUsIFRocm93U2VjdXJpdHlFcnJvcikpCisgICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUsIGZyYW1lLCBUaHJvd1NlY3Vy
aXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorYm9vbCBKU0xvY2F0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHB1dFByb3BlcnR5U2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9j
YXRpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CisKKyAgICBpZiAocHV0Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUsIHByb3Bl
cnR5TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBKU09iamVjdDo6
cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNs
b3QpOworfQorCitib29sIEpTTG9jYXRpb246OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisK
KyAgICBpZiAocHV0Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUsIElkZW50aWZpZXI6OmZyb20o
c3RhdGUsIGluZGV4KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBKU09i
amVjdDo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7
Cit9CisKIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNMb2NhdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CkBAIC0xODgsMTAgKzIy
OCwxMiBAQCBTdHJpbmcgSlNMb2NhdGlvbjo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTCiAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiTG9jYXRpb24iKTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uUHJvdG90
eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKK2Jvb2wgSlNM
b2NhdGlvblByb3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewotICAgIHB1dFJlc3VsdCA9IGZhbHNlOwotICAgIHJldHVybiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNMb2NhdGlvblByb3RvdHlwZSo+KGNlbGwpOworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
c3RhdGUtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRp
b24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk0LDcgKzk0LDcgQEAgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChFeGVjU3Rh
dGUqIAogICAgIHJldHVybiBpbnN0YW5jZS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKIH0K
ICAgICAKLUVuY29kZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDksMTkgKzEwOSwyNiBAQCBFbmNvZGVk
SlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShzY3JpcHRPYmplY3QtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAotYm9vbCBw
bHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBKU0hUTUxFbGVtZW50
KiBlbGVtZW50KQorYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpT
SFRNTEVsZW1lbnQqIGVsZW1lbnQsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGlmICghZWxlbWVudC0+Z2xvYmFs
T2JqZWN0KCktPndvcmxkKCkuaXNOb3JtYWwoKSkgeworICAgICAgICBKU0M6OkpTVmFsdWUgcHJv
dG8gPSBlbGVtZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgaWYgKHByb3RvLmlz
T2JqZWN0KCkgJiYgSlNDOjpqc0Nhc3Q8SlNDOjpKU09iamVjdCo+KGFzT2JqZWN0KHByb3RvKSkt
Pmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9i
amVjdChleGVjLCBlbGVtZW50KTsKICAgICBpZiAoIXNjcmlwdE9iamVjdCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFzY3JpcHRPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHBy
b3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHNsb3Quc2V0Q3VzdG9t
KGVsZW1lbnQsIERvbnREZWxldGUgfCBEb250RW51bSwgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0
dGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBw
dXRSZXN1bHQpCitib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoSlNIVE1MRWxlbWVudCogZWxl
bWVudCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBK
U09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQp
OwogICAgIGlmICghc2NyaXB0T2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgJKHJldmlzaW9uIDIxOTIz
MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMCArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgSlNDOjpCaW5kaW5nczo6SW5zdGFuY2UqIHBsdWdpbkluc3RhbmNlKEhUTUxFbGVtZW50
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0
KEpTQzo6RXhlY1N0YXRlKiwgSlNIVE1MRWxlbWVudCopOwogCi0gICAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0gICAgYm9vbCBwbHVnaW5FbGVtZW50
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCopOwotICAgIGJvb2wgcGx1Z2lu
RWxlbWVudEN1c3RvbVB1dChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIEpTSFRNTEVsZW1lbnQqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1
dFJlc3VsdCk7Ci0gICAgSlNDOjpDYWxsVHlwZSBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoSlNI
VE1MRWxlbWVudCosIEpTQzo6Q2FsbERhdGEmKTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUeXBl
LCBjbGFzcyBCYXNlPiBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmIHNsb3QsIFR5cGUqIGVsZW1lbnQpCi0gICAgewotICAgICAgICBpZiAo
IWVsZW1lbnQtPmdsb2JhbE9iamVjdCgpLT53b3JsZCgpLmlzTm9ybWFsKCkpIHsKLSAgICAgICAg
ICAgIEpTQzo6SlNWYWx1ZSBwcm90byA9IGVsZW1lbnQtPmdldFByb3RvdHlwZURpcmVjdCgpOwot
ICAgICAgICAgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkgJiYgSlNDOjpqc0Nhc3Q8SlNDOjpKU09i
amVjdCo+KGFzT2JqZWN0KHByb3RvKSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90LCBlbGVtZW50KTsKLSAgICB9CisgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9t
R2V0T3duUHJvcGVydHlTbG90KEpTSFRNTEVsZW1lbnQqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgcGx1Z2luRWxlbWVu
dEN1c3RvbVB1dChKU0hUTUxFbGVtZW50KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3Vs
dCk7CisgICAgSlNDOjpDYWxsVHlwZSBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEoSlNI
VE1MRWxlbWVudCosIEpTQzo6Q2FsbERhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNyArNTM1LDcg
QEAgc3ViIEdlbmVyYXRlSW5kZXhlZEdldHRlcgogICAgICMgMS4yLjggUmV0dXJuIGRlc2MuCiAg
ICAgCiAgICAgbXkgQGF0dHJpYnV0ZXMgPSAoKTsKLSAgICBwdXNoKEBhdHRyaWJ1dGVzLCAiUmVh
ZE9ubHkiKSBpZiAhR2V0SW5kZXhlZFNldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKSAmJiAhJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9OworICAgIHB1
c2goQGF0dHJpYnV0ZXMsICJSZWFkT25seSIpIGlmICFHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9u
KCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59
OwogICAgIAogICAgIG15ICRhdHRyaWJ1dGVTdHJpbmcgPSAoKEBhdHRyaWJ1dGVzID4gMCkgPyBq
b2luKCIgfCAiLCBAYXR0cmlidXRlcykgOiAiMCIpOwogCkBAIC01NzIsNyArNTcyLDcgQEAgc3Vi
IEdlbmVyYXRlTmFtZWRHZXR0ZXIKICAgICAjIDIuMTAgUmV0dXJuIGRlc2MuCiAgICAgCiAgICAg
bXkgQGF0dHJpYnV0ZXMgPSAoKTsKLSAgICBwdXNoKEBhdHRyaWJ1dGVzLCAiUmVhZE9ubHkiKSBp
ZiAhR2V0TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSkgJiYgISRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVyfTsKKyAgICBwdXNoKEBhdHRyaWJ1
dGVzLCAiUmVhZE9ubHkiKSBpZiAhR2V0TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSkg
JiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn07CiAgICAgcHVzaChA
YXR0cmlidXRlcywgIkRvbnRFbnVtIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TGVnYWN5VW5lbnVtZXJhYmxlTmFtZWRQcm9wZXJ0aWVzfTsKICAgICAKICAgICBteSAkYXR0
cmlidXRlU3RyaW5nID0gKChAYXR0cmlidXRlcyA+IDApID8gam9pbigiIHwgIiwgQGF0dHJpYnV0
ZXMpIDogIjAiKTsKQEAgLTY2Nyw3ICs2NjcsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0
eVNsb3QKICAgICAgICAgIyAxLjMuIFNldCBpZ25vcmVOYW1lZFByb3BzIHRvIHRydWUuCiAgICAg
ICAgICMgTk9URTogU2V0dGluZyBpZ25vcmVOYW1lZFByb3BzIGhhcyB0aGUgZWZmZWN0IG9mIHNr
aXBwaW5nIHN0ZXAgMiwgc28gd2UgY2FuIGVhcmx5IHJldHVybiBoZXJlCiAgICAgICAgICMgICAg
ICAgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCB0aGUgcGFjZXMgb2YgaGF2aW5nIGFuIGFjdHVh
bCBpZ25vcmVOYW1lZFByb3BzIHVwZGF0ZS4KLSAgICAgICAgaWYgKCRuYW1lZEdldHRlck9wZXJh
dGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3RBbmREZXNjcmlwdG9yfSkgeworICAgICAgICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0
aW9uIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldE93blByb3Bl
cnR5U2xvdEFuZERlc2NyaXB0b3J9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1BsdWdpbn0pIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlO
YW1lLCBzbG90KTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB9XG4iKTsKQEAgLTcwMSwxMiArNzAxLDE5IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3Bl
cnR5U2xvdAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0cnVl
O1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICB9Ci0g
ICAgCisKKyAgICAjIEZJWE1FOiBUaGVyZSBpcyBvbmx5IG9uZSByZW1haW5pbmcgdXNlciBvZiB0
aGlzLCBDU1NTdHlsZURlY2xhcmF0aW9uLmlkbC4gTGV0J3MgZ2V0IHRoZW0gb250byBuYW1lZCAv
IGluZGV4ZWQgZ2V0dGVycy4KICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvcn0pIHsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmICh0aGlzT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3RE
ZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSlcbiIpOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgfQotICAgIAorCisg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0pIHsKKyAgICAg
ICAgQWRkVG9JbmNsdWRlcygiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiKTsKKyAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJv
cGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXNPYmplY3QpKVxuIik7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKKyAg
ICB9CisKICAgICAjIDMuIFJldHVybiBPcmRpbmFyeUdldE93blByb3BlcnR5KE8sIFApLgogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChvYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgCkBAIC03
MTgsNyArNzI1LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogewog
ICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUpID0gQF87CiAgICAg
Ci0gICAgcmV0dXJuIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXh9OworICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3R9OwogCiAgICAgIyBTaW5r
IHRoZSBpbnQtdG8tc3RyaW5nIGNvbnZlcnNpb24gdGhhdCBoYXBwZW5zIHdoZW4gd2UgY3JlYXRl
IGEgUHJvcGVydHlOYW1lCiAgICAgIyB0byB0aGUgcG9pbnQgd2hlcmUgd2UgYWN0dWFsbHkgbmVl
ZCBpdC4KQEAgLTc3Miw3ICs3NzksNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4CiAgICAgICAgICMgMS4zLiBTZXQgaWdub3JlTmFtZWRQcm9wcyB0byB0cnVlLgogICAg
ICAgICAjIE5PVEU6IFNldHRpbmcgaWdub3JlTmFtZWRQcm9wcyBoYXMgdGhlIGVmZmVjdCBvZiBz
a2lwcGluZyBzdGVwIDIsIHNvIHdlIGNhbiBlYXJseSByZXR1cm4gaGVyZQogICAgICAgICAjICAg
ICAgIHJhdGhlciB0aGFuIGdvaW5nIHRocm91Z2ggdGhlIHBhY2VzIG9mIGhhdmluZyBhbiBhY3R1
YWwgaWdub3JlTmFtZWRQcm9wcyB1cGRhdGUuCi0gICAgICAgIGlmICgkbmFtZWRHZXR0ZXJPcGVy
YXRpb24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJv
cGVydHlTbG90QW5kRGVzY3JpcHRvcn0pIHsKKyAgICAgICAgaWYgKCRuYW1lZEdldHRlck9wZXJh
dGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3RBbmREZXNjcmlwdG9yfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntQbHVnaW59KSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJl
dHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIHN0YXRlLCBp
bmRleCwgc2xvdCk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgfVxuIik7CkBAIC04MDksMTMgKzgxNiwyMiBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsK
ICAgICB9CiAgICAgCisgICAgIyBGSVhNRTogVGhlcmUgaXMgb25seSBvbmUgcmVtYWluaW5nIHVz
ZXIgb2YgdGhpcywgQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwuIExldCdzIGdldCB0aGVtIG9udG8g
bmFtZWQgLyBpbmRleGVkIGdldHRlcnMuCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3J9KSB7CiAgICAg
ICAgICYkcHJvcGVydHlOYW1lR2VuZXJhdGlvbigpOwogICAgIAogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgaWYgKHRoaXNPYmplY3QtPmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSkgeworICAgICAgICAmJHBy
b3BlcnR5TmFtZUdlbmVyYXRpb24oKTsKKworICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaCIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
aWYgKHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5
TmFtZSwgc2xvdCwgdGhpc09iamVjdCkpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOworICAgIH0KKwogICAgICMgMy4gUmV0dXJuIE9y
ZGluYXJ5R2V0T3duUHJvcGVydHkoTywgUCkuCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIHN0YXRl
LCBpbmRleCwgc2xvdCk7XG4iKTsKICAgICAKQEAgLTgyNyw3ICs4NDMsNyBAQCBzdWIgR2VuZXJh
dGVHZXRPd25Qcm9wZXJ0eU5hbWVzCiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSkgPSBAXzsKICAgICAKLSAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tRW51bWVyYXRlUHJvcGVydHl9OworICAgIHJldHVybiBp
ZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eU5h
bWVzfTsKICAgICAKICAgICBteSAkbmFtZWRHZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZEdldHRl
ck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKICAgICBteSAkaW5kZXhlZEdldHRlck9wZXJhdGlvbiA9
IEdldEluZGV4ZWRHZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CkBAIC05MTMsNyArOTI5LDcg
QEAgc3ViIEdlbmVyYXRlUHV0CiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwg
JGNsYXNzTmFtZSkgPSBAXzsKICAgICAKLSAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHV0RnVuY3Rpb259OworICAgIHJldHVybiBpZiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21QdXR9OwogICAgIAogICAgIG15ICRuYW1l
ZFNldHRlck9wZXJhdGlvbiA9IEdldE5hbWVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwog
ICAgIG15ICRpbmRleGVkU2V0dGVyT3BlcmF0aW9uID0gR2V0SW5kZXhlZFNldHRlck9wZXJhdGlv
bigkaW50ZXJmYWNlKTsKQEAgLTk2MSwxMyArOTc3LDE1IEBAIHN1YiBHZW5lcmF0ZVB1dAogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKICAgICB9CiAgICAgCi0gICAg
YXNzZXJ0KCJVc2luZyBib3RoIGEgbmFtZWQgcHJvcGVydHkgc2V0dGVyIGFuZCBbQ3VzdG9tTmFt
ZWRTZXR0ZXJdIHRvZ2V0aGVyIGlzIG5vdCBzdXBwb3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyT3Bl
cmF0aW9uICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0
dGVyfTsKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFt
ZWRTZXR0ZXJ9KSB7CisgICAgYXNzZXJ0KCJVc2luZyBib3RoIGEgbmFtZWQgcHJvcGVydHkgc2V0
dGVyIGFuZCBbUGx1Z2luXSB0b2dldGhlciBpcyBub3Qgc3VwcG9ydGVkLiIpIGlmICRuYW1lZFNl
dHRlck9wZXJhdGlvbiAmJiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59
OworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59KSB7Cisg
ICAgICAgIEFkZFRvSW5jbHVkZXMoIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIik7CisKICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4i
KTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXRE
ZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90LCBwdXRS
ZXN1bHQpKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAocGx1Z2lu
RWxlbWVudEN1c3RvbVB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
cHV0UHJvcGVydHlTbG90LCBwdXRSZXN1bHQpKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcblxuIik7CiAgICAgfQotICAgIAorCiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmpl
Y3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpO1xuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KQEAgLTk3NiwxMyArOTk0LDEzIEBA
IHN1YiBHZW5lcmF0ZVB1dEJ5SW5kZXgKIHsKICAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lKSA9IEBfOwogICAgIAotICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21QdXRGdW5jdGlvbn07Ci0gICAgCisgICAgcmV0dXJu
IGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVB1dH07CisKICAgICBt
eSAkbmFtZWRTZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZFNldHRlck9wZXJhdGlvbigkaW50ZXJm
YWNlKTsKICAgICBteSAkaW5kZXhlZFNldHRlck9wZXJhdGlvbiA9IEdldEluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgCiAgICAgbXkgJG92ZXJyaWRlQnVpbHRpbnMgPSAk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3Zl
cnJpZGVCdWlsdGlucyIpOwotICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0
dGVyT3BlcmF0aW9uICYmICRvdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9OworICAgIG15ICRlbGxpZGVzQ2FsbHNU
b0Jhc2UgPSAoJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYmICRvdmVycmlkZUJ1aWx0aW5zKSAmJiAh
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufTsKICAgICAKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJib29sICR7Y2xhc3NOYW1lfTo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29s
IiAuICghJGVsbGlkZXNDYWxsc1RvQmFzZSA/ICIgc2hvdWxkVGhyb3ciIDogIiIpIC4gIilcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpAQCAtMTAyMSwxNiArMTAzOSwxNyBA
QCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgfVxuXG4iKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBhc3NlcnQoIlVzaW5n
IGJvdGggYSBuYW1lZCBwcm9wZXJ0eSBzZXR0ZXIgYW5kIFtDdXN0b21OYW1lZFNldHRlcl0gdG9n
ZXRoZXIgaXMgbm90IHN1cHBvcnRlZC4iKSBpZiAkbmFtZWRTZXR0ZXJPcGVyYXRpb24gJiYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9OwotICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYW1lZFNldHRlcn0pIHsK
KworICAgIGFzc2VydCgiVXNpbmcgYm90aCBhIG5hbWVkIHByb3BlcnR5IHNldHRlciBhbmQgW1Bs
dWdpbl0gdG9nZXRoZXIgaXMgbm90IHN1cHBvcnRlZC4iKSBpZiAkbmFtZWRTZXR0ZXJPcGVyYXRp
b24gJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufTsKKyAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSkgeworICAgICAgICBBZGRU
b0luY2x1ZGVzKCJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIpOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0
YXRlLCBpbmRleCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIHNob3VsZFRocm93KTtcbiIpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTtcbiIpOwotICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRl
KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAocGx1Z2luRWxlbWVudEN1c3RvbVB1dCh0
aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90LCBw
dXRSZXN1bHQpKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIHB1dFJlc3VsdDtcblxuIik7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCEkZWxsaWRlc0Nh
bGxzVG9CYXNlKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNP
YmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cp
O1xuIik7CiAgICAgfQpAQCAtMTI1Miw3ICsxMjcxLDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJv
cGVydHlDb21tb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiB9CiAKLXN1
YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5RGVmaW5pdGlvbgorc3ViIEdlbmVyYXRlRGVsZXRlUHJv
cGVydHkKIHsKICAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
b3BlcmF0aW9uLCAkY29uZGl0aW9uYWwpID0gQF87CiAKQEAgLTEyODMsNyArMTMwMiw3IEBAIHN1
YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5RGVmaW5pdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIn1cblxuIik7CiB9CiAKLXN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5QnlJbmRleERlZmlu
aXRpb24KK3N1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5QnlJbmRleAogewogICAgIG15ICgkb3V0
cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24sICRjb25kaXRpb25h
bCkgPSBAXzsKIApAQCAtMTM0Nyw4ICsxMzY2LDggQEAgc3ViIEdlbmVyYXRlTmFtZWREZWxldGVy
RGVmaW5pdGlvbgogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjaWYgJHtjb25kaXRpb25h
bFN0cmluZ31cblxuIik7OwogICAgIH0KIAotICAgIEdlbmVyYXRlRGVsZXRlUHJvcGVydHlEZWZp
bml0aW9uKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkRGVsZXRl
ck9wZXJhdGlvbiwgJGNvbmRpdGlvbmFsKTsKLSAgICBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5QnlJ
bmRleERlZmluaXRpb24oJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbmFt
ZWREZWxldGVyT3BlcmF0aW9uLCAkY29uZGl0aW9uYWwpOworICAgIEdlbmVyYXRlRGVsZXRlUHJv
cGVydHkoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbmFtZWREZWxldGVy
T3BlcmF0aW9uLCAkY29uZGl0aW9uYWwpOworICAgIEdlbmVyYXRlRGVsZXRlUHJvcGVydHlCeUlu
ZGV4KCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkRGVsZXRlck9w
ZXJhdGlvbiwgJGNvbmRpdGlvbmFsKTsKIAogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlm
XG5cbiIpIGlmICRjb25kaXRpb25hbDsKIH0KQEAgLTE4MDgsOCArMTgyNyw4IEBAIHN1YiBJbnN0
YW5jZU92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdAogewogICAgIG15ICRpbnRlcmZhY2UgPSBz
aGlmdDsKICAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9t
R2V0T3duUHJvcGVydHlTbG90fQotICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4fQogICAgICAgICB8fCAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmRE
ZXNjcmlwdG9yfQorICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQ
bHVnaW59CiAgICAgICAgIHx8IEdldEluZGV4ZWRHZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSkK
ICAgICAgICAgfHwgR2V0TmFtZWRHZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CiB9CkBAIC0x
ODE3LDcgKzE4MzYsNyBAQCBzdWIgSW5zdGFuY2VPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QK
IHN1YiBJbnN0YW5jZU92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMKIHsKICAgICBteSAkaW50
ZXJmYWNlID0gc2hpZnQ7Ci0gICAgcmV0dXJuICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0N1c3RvbUVudW1lcmF0ZVByb3BlcnR5fQorICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eU5hbWVzfQogICAgICAgICB8fCBH
ZXRJbmRleGVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpCiAgICAgICAgIHx8IEdldE5hbWVk
R2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogfQpAQCAtMTgyNSw4ICsxODQ0LDggQEAgc3Vi
IEluc3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcwogc3ViIEluc3RhbmNlT3ZlcnJp
ZGVzUHV0CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIHJldHVybiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYW1lZFNldHRlcn0KLSAgICAgICAgfHwg
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHV0RnVuY3Rpb259CisgICAg
cmV0dXJuICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVB1dH0KKyAgICAg
ICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufQogICAgICAgICB8
fCBHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpCiAgICAgICAgIHx8IEdldE5h
bWVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogfQpAQCAtMTgzOSw3ICsxODU4LDcgQEAg
c3ViIEluc3RhbmNlT3ZlcnJpZGVzRGVmaW5lT3duUHJvcGVydHkKICAgICAgICAgfHwgR2V0TmFt
ZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CiB9CiAKLXN1YiBJbnN0YW5jZU92ZXJyaWRl
c0RlbGV0ZQorc3ViIEluc3RhbmNlT3ZlcnJpZGVzRGVsZXRlUHJvcGVydHkKIHsKICAgICBteSAk
aW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgcmV0dXJuICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0N1c3RvbURlbGV0ZVByb3BlcnR5fQpAQCAtMjU3MiwxMiArMjU5MSwxMiBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgY29uc3QgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTtcbiIpOwogICAgIH0KIAotICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0
ZSgkaW50ZXJmYWNlKSkgeworICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5
KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0
YXRlKiwgdW5zaWduZWQpO1xuIik7CiAgICAgfQogCi0gICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVz
Q2FsbCgkaW50ZXJmYWNlKSkgeworICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0dldENhbGxEYXRh
KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7
XG5cbiIpOwogICAgICAgICAkaGVhZGVySW5jbHVkZXN7IjxydW50aW1lL0NhbGxEYXRhLmg+In0g
PSAxOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6VHlwZU9mU2hvdWxkQ2FsbEdldENh
bGxEYXRhIn0gPSAxOwpAQCAtMjc5NiwxMSArMjgxNSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgog
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3RBbmREZXNjcmlwdG9yfSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwogICAgIH0KLSAgICAKLSAg
ICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9
KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0
UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTtcbiIpOwotICAgIH0KLSAgICAKKwogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuXG4iKTsKIAogICAgIGlmIChTaG91bGRHZW5lcmF0
ZVdyYXBwZXJPd25lckNvZGUoJGhhc1BhcmVudCwgJGludGVyZmFjZSkpIHsKQEAgLTQxMDAsMTcg
KzQxMTUsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgICAgfQogCi0gICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGV9KSB7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KGNlbGwpO1xuIik7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERl
bGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gcHV0UmVzdWx0O1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpO1xuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9Ci0KICAgICAjIC0gSW5pdGlhbGl6
ZSBzdGF0aWMgQ2xhc3NJbmZvIG9iamVjdAogICAgIHB1c2goQGltcGxDb250ZW50LCAiY29uc3Qg
Q2xhc3NJbmZvICRjbGFzc05hbWUiIC4gIjo6c19pbmZvID0geyBcIiR7dmlzaWJsZUludGVyZmFj
ZU5hbWV9XCIsICZCYXNlOjpzX2luZm8sICIpOwogCkBAIC00Mjk3LDEyICs0MzAxLDEyIEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIEdlbmVyYXRlRGVmaW5lT3duUHJvcGVy
dHkoXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSk7CiAgICAgfQogCi0gICAg
aWYgKEluc3RhbmNlT3ZlcnJpZGVzRGVsZXRlKCRpbnRlcmZhY2UpKSB7CisgICAgaWYgKEluc3Rh
bmNlT3ZlcnJpZGVzRGVsZXRlUHJvcGVydHkoJGludGVyZmFjZSkpIHsKICAgICAgICAgR2VuZXJh
dGVOYW1lZERlbGV0ZXJEZWZpbml0aW9uKFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFz
c05hbWUpOwogICAgIH0KICAgICAKLSAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNDYWxsKCRpbnRl
cmZhY2UpKSB7Ci0gICAgICAgIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbnMoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSk7CisgICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzR2V0Q2FsbERhdGEo
JGludGVyZmFjZSkpIHsKKyAgICAgICAgR2VuZXJhdGVHZXRDYWxsRGF0YShcQGltcGxDb250ZW50
LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCRudW1BdHRy
aWJ1dGVzID4gMCkgewpAQCAtNTI1MCw3MCArNTI1NCw5NyBAQCBzdWIgR2VuZXJhdGVTZXJpYWxp
emVyRGVmaW5pdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKIH0KIAorc3ViIEdl
bmVyYXRlR2V0Q2FsbERhdGEKK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lKSA9IEBfOworCisgICAgcmV0dXJuIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbUdldENhbGxEYXRhfTsKKworICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59KSB7CisgICAgICAgIEdlbmVyYXRlUGx1Z2luQ2FsbCgk
b3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbnMoJG91dHB1dEFycmF5LCAkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lKTsKKyAgICB9Cit9CisKK3N1YiBHZW5lcmF0ZVBsdWdpbkNhbGwKK3sK
KyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSA9IEBfOworCisg
ICAgQWRkVG9JbmNsdWRlcygiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiKTsKKworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIkNhbGxUeXBlICR7Y2xhc3NOYW1lfTo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiBjZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CisgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTtcblxuIik7CisKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHBsdWdpbkVs
ZW1lbnRDdXN0b21HZXRDYWxsRGF0YSh0aGlzT2JqZWN0LCBjYWxsRGF0YSk7XG4iKTsKKyAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJ9XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJcbiIp
OworfQorCiBzdWIgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucwogewotICAgIG15ICgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRl
cmZhY2UsICRjbGFzc05hbWUpID0gQF87CiAKLSAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tQ2FsbH07Ci0gICAgCiAgICAgbXkgQGxlZ2FjeUNhbGxl
cnMgPSBAeyRpbnRlcmZhY2UtPntMZWdhY3lDYWxsZXJzfX07CiAgICAgaWYgKEBsZWdhY3lDYWxs
ZXJzID4gMSkgewogICAgICAgICBmb3JlYWNoIG15ICRsZWdhY3lDYWxsZXIgKEBsZWdhY3lDYWxs
ZXJzKSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24oJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJGxlZ2FjeUNhbGxlcik7CisgICAgICAgICAgICBHZW5lcmF0ZUxl
Z2FjeUNhbGxlckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1l
LCAkbGVnYWN5Q2FsbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIG15ICRvdmVybG9hZEZ1bmN0
aW9uUHJlZml4ID0gImNhbGwke2NsYXNzTmFtZX0iOwogCi0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke292ZXJsb2FkRnVuY3Rpb25QcmVm
aXh9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtvdmVybG9hZEZ1bmN0
aW9uUHJlZml4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIntcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKIAogICAg
ICAgICBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcigkbGVnYWN5Q2FsbGVyc1swXSwgJGludGVy
ZmFjZSwgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXgsICIiLCAic3RhdGUiKTsKIAotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
In1cblxuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZp
bml0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRsZWdhY3lDYWxsZXJzWzBdKTsKKyAgICAg
ICAgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJGxlZ2FjeUNhbGxlcnNbMF0pOwogICAgIH0KIAotICAgIHB1c2goQGlt
cGxDb250ZW50LCAiQ2FsbFR5cGUgJHtjbGFzc05hbWV9OjpnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYgY2FsbERhdGEpXG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwot
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNh
bGwke2NsYXNzTmFtZX07XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
Q2FsbFR5cGU6Okhvc3Q7XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwotICAg
IHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJDYWxs
VHlwZSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0
YSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsJHtjbGFzc05hbWV9
O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBDYWxsVHlwZTo6SG9z
dDtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOworICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIlxuIik7CiB9CiAKIHN1YiBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24K
IHsKLSAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbikgPSBAXzsKKyAg
ICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKSA9
IEBfOwogCiAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVybG9hZHN9ICYm
IEB7JG9wZXJhdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKICAgICBpZiAoJGlzT3ZlcmxvYWRlZCkg
ewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgY2FsbCR7Y2xhc3NOYW1lfSRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fShFeGVjU3RhdGUq
IHN0YXRlKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUgY2FsbCR7Y2xhc3NOYW1lfSRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4
fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsJHtjbGFz
c05hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAic3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbCR7Y2xhc3NOYW1lfShF
eGVjU3RhdGUqIHN0YXRlKVxuIik7CiAgICAgfQogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtc
biIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pO1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xu
Iik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xu
Iik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogCiAgICAgbXkgJGluZGVudCA9ICIgICAgIjsK
LSAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVudCwgJG9wZXJhdGlv
biwgJGludGVyZmFjZSwgJGluZGVudCk7CisgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNr
KCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGluZGVudCk7CiAKLSAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PCR7Y2xhc3NO
YW1lfSo+KHN0YXRlLT5qc0NhbGxlZSgpKTtcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEFTU0VSVChjYXN0ZWRUaGlzKTtcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihz
dGF0ZS0+anNDYWxsZWUoKSk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNT
RVJUKGNhc3RlZFRoaXMpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKIAogICAgIG15ICRmdW5jdGlvbklt
cGxlbWVudGF0aW9uTmFtZSA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxl
bWVudGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRvcGVyYXRpb24tPm5hbWUp
IHx8ICJsZWdhY3lDYWxsZXJPcGVyYXRpb25Gcm9tQmluZGluZ3MiOwotICAgIG15ICRmdW5jdGlv
blN0cmluZyA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRvcGVyYXRp
b24sICRpbnRlcmZhY2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJGluZGVudCk7Cisg
ICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJG91dHB1dEFy
cmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUs
ICRpbmRlbnQpOwogCi0gICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbChcQGlt
cGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICRpbmRl
bnQpOworICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJG91dHB1dEFycmF5
LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICRpbmRlbnQpOwogCi0g
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
In1cblxuIik7CiB9CiAKIHN1YiBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzCkBAIC02
ODE4LDEzICs2ODQ5LDEyIEBAIHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZX0pIHsKKyAgICAjIEZJWE1FOiBTaG91bGQgdGhp
cyBvdmVycmlkZSBwdXRCeUluZGV4IGFzIHdlbGw/CisgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0N1c3RvbVB1dE9uUHJvdG90eXBlfSkgewogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
LCBib29sJiBwdXRSZXN1bHQpO1xuIik7CiAgICAgfQogCi0gICAgIyBDdXN0b20gZGVmaW5lT3du
UHJvcGVydHkgZnVuY3Rpb24KICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZX0pIHsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBjb25zdCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpO1xuIik7CkBAIC03MDg2LDE3ICs3MTE2LDE3IEBAIHN1YiBJc0NvbnN0
cnVjdGFibGUKICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNC
dWlsdGluQ29uc3RydWN0b3J9OwogfQogCi1zdWIgSW5zdGFuY2VPdmVycmlkZXNDYWxsCitzdWIg
SW5zdGFuY2VPdmVycmlkZXNHZXRDYWxsRGF0YQogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlm
dDsKLSAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tQ2Fs
bH0gfHwgJGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9CisgICAgcmV0dXJuICRpbnRlcmZhY2Ut
PntMZWdhY3lDYWxsZXJzfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0
b21HZXRDYWxsRGF0YX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lu
fTsKIH0KIAogc3ViIEhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24KIHsKICAgICBteSAk
aW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgcmV0dXJuIElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZh
Y2UpCi0gICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5h
bWVkR2V0dGVyT25Qcm90b3R5cGV9CisgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbVB1dE9uUHJvdG90eXBlfQogICAgICAgICB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eU9uUHJvdG90eXBlfTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExB
dHRyaWJ1dGVzLmpzb24JKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC03OCw5ICs3
OCw2IEBACiAgICAgICAgICJDdXN0b20iOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KICAgICAgICAgfSwKLSAgICAgICAgIkN1c3Rv
bUNhbGwiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQot
ICAgICAgICB9LAogICAgICAgICAiQ3VzdG9tQ29uc3RydWN0b3IiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LApAQCAtOTMsMTMgKzkw
LDEzIEBACiAgICAgICAgICJDdXN0b21EZWxldGVQcm9wZXJ0eSI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJDdXN0
b21FbnVtZXJhdGVQcm9wZXJ0eSI6IHsKKyAgICAgICAgIkN1c3RvbUdldENhbGxEYXRhIjogewog
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwK
LSAgICAgICAgIkN1c3RvbUdldE93blByb3BlcnR5U2xvdCI6IHsKKyAgICAgICAgIkN1c3RvbUdl
dE93blByb3BlcnR5TmFtZXMiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJp
bnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleCI6IHsKKyAgICAgICAgIkN1c3RvbUdldE93blByb3BlcnR5U2xvdCI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCiAgICAg
ICAgICJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yIjogewpAQCAtMTE3LDEy
ICsxMTQsNiBAQAogICAgICAgICAiQ3VzdG9tSXNSZWFjaGFibGUiOiB7CiAgICAgICAgICAgICAi
Y29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiQ3Vz
dG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCi0gICAgICAgICJDdXN0b21OYW1lZFNldHRl
ciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAg
ICAgIH0sCiAgICAgICAgICJDdXN0b21QcmV2ZW50RXh0ZW5zaW9ucyI6IHsKICAgICAgICAgICAg
ICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCkBAIC0xMzIsNyAr
MTIzLDEwIEBACiAgICAgICAgICJDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUiOiB7CiAgICAg
ICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAg
ICAgICAiQ3VzdG9tUHV0RnVuY3Rpb24iOiB7CisgICAgICAgICJDdXN0b21QdXQiOiB7CisgICAg
ICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQorICAgICAgICB9LAorICAg
ICAgICAiQ3VzdG9tUHV0T25Qcm90b3R5cGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAogICAgICAgICAiQ3VzdG9tU2V0dGVyIjog
ewpAQCAtMzQxLDYgKzMzNSwxMCBAQAogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
b3BlcmF0aW9uIl0sCiAgICAgICAgICAgICAibm90ZXMiIDogIk9ubHkgdXNlZCBieSBXZWJLaXRU
ZXN0UnVubmVyIGFuZCBEdW1wUmVuZGVyVHJlZSIKICAgICAgICAgfSwKKyAgICAgICAgIlBsdWdp
biI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAorICAg
ICAgICAgICAgIm5vdGVzIiA6ICJTaG91bGQgb25seSBiZSB1c2VkIGJ5IGVsZW1lbnRzIHRoYXQg
Zm9yd2FyZCB0byBOZXRzY2FwZSBwbHVnLWlucyIKKyAgICAgICAgfSwKICAgICAgICAgIlByaW1h
cnlHbG9iYWwiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2Ui
XSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwJKHJldmlz
aW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
SW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogLy8gY2hhbmdl
cyBpbiBpdHMgb3V0cHV0LgogWwogICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBDdXN0b21OYW1l
ZFNldHRlciwKKyAgICBDdXN0b21QdXQsCiAgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMXxDb25k
aXRpb24yLAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwK
ICAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgc3RyMSwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cjIg
PSAiZGVmYXVsdFN0cmluZyIpLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RQbHVnaW5JbnRlcmZhY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGx1Z2luSW50ZXJmYWNlLmlkbAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBsdWdp
bkludGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK1sKKyAgICBQbHVnaW4KK10gaW50ZXJmYWNlIFRlc3RQbHVnaW5JbnRlcmZhY2UgeworfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDEzLDMyICs0MTMsNiBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6ZGVz
dHJveShKU0M6OkpTQ2VsCiAgICAgdGhpc09iamVjdC0+SlNUZXN0SW50ZXJmYWNlOjp+SlNUZXN0
SW50ZXJmYWNlKCk7CiB9CiAKLWJvb2wgSlNUZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKLXsKLSAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGJvb2wgcHV0UmVzdWx0
ID0gZmFsc2U7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QsIHB1dFJlc3VsdCkpCi0gICAgICAgIHJldHVy
biBwdXRSZXN1bHQ7Ci0KLSAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBzdGF0
ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKLX0KLQotYm9vbCBKU1Rl
c3RJbnRlcmZhY2U6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1
bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKLXsKLSAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwotICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwotICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIHNob3VsZFRocm93KTsKLSAgICBib29sIHB1dFJl
c3VsdCA9IGZhbHNlOwotICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHB1dFJl
c3VsdDsKLQotICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5k
ZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci19Ci0KIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdElu
dGVyZmFjZSogSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OmNhc3QoRXhlY1N0YXRlJiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCShyZXZpc2lvbiAyMTkyMzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDYgQEAgcHJvdGVjdGVkOgogICAgIEpTVGVzdElu
dGVyZmFjZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RJbnRl
cmZhY2U+JiYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci0gICAgYm9v
bCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpT
VmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KTsKIH07CiAKIGNs
YXNzIEpTVGVzdEludGVyZmFjZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVn
aW5JbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuaCIKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSA8cnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5o
PgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdFBsdWdpbklu
dGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3Rv
dHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdFBsdWdpbklu
dGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZT4odm0uaGVhcCkpIEpT
VGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsK
KyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAg
ICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQor
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlPEpTVGVzdFBsdWdpbkludGVyZmFjZT47CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNF
RF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgp
OworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVy
YWwoIlRlc3RQbHVnaW5JbnRlcmZhY2UiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRP
bmx5IHwgRG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFBsdWdpbkludGVyZmFj
ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9y
IHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3Ii
LCBEb250RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSB9IH0sCit9OworCitjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0UGx1Z2lu
SW50ZXJmYWNlUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUpIH07CisKK3Zv
aWQgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlz
KTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6c19pbmZvID0g
eyAiVGVzdFBsdWdpbkludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0UGx1Z2luSW50ZXJmYWNlKSB9OworCitKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2U6OkpTVGVzdFBsdWdpbkludGVyZmFjZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RQbHVnaW5JbnRlcmZh
Y2U+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0UGx1Z2luSW50ZXJmYWNlPihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworfQor
CitKU09iamVjdCogSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0
UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0UGx1Z2lu
SW50ZXJmYWNlPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rlc3RQbHVnaW5J
bnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0UGx1Z2lu
SW50ZXJmYWNlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpkZXN0
cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdFBsdWdpbkludGVyZmFjZSogdGhp
c09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZSo+KGNlbGwpOworICAg
IHRoaXNPYmplY3QtPkpTVGVzdFBsdWdpbkludGVyZmFjZTo6fkpTVGVzdFBsdWdpbkludGVyZmFj
ZSgpOworfQorCitib29sIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZSo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIGlmIChwbHVnaW5FbGVtZW50Q3Vz
dG9tR2V0T3duUHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXNPYmpl
Y3QpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdChvYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29s
IEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50
ZXJmYWNlKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0
YXRlLCBpbmRleCk7CisgICAgaWYgKHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNs
b3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpc09iamVjdCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChv
YmplY3QsIHN0YXRlLCBpbmRleCwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0UGx1Z2luSW50ZXJm
YWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xv
dCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFBsdWdpbkludGVyZmFj
ZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKKworICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHBsdWdpbkVsZW1l
bnRDdXN0b21QdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFBy
b3BlcnR5U2xvdCwgcHV0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKKworICAg
IHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBwdXRQcm9wZXJ0eVNsb3QpOworfQorCitib29sIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6
cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQoreworICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QodGhpc09iamVjdCwgc2hvdWxkVGhyb3cpOworICAgIGJvb2wgcHV0UmVzdWx0ID0g
ZmFsc2U7CisgICAgaWYgKHBsdWdpbkVsZW1lbnRDdXN0b21QdXQodGhpc09iamVjdCwgc3RhdGUs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCwgcHV0UmVzdWx0KSkKKyAgICAg
ICAgcmV0dXJuIHB1dFJlc3VsdDsKKworICAgIHJldHVybiBKU09iamVjdDo6cHV0QnlJbmRleChj
ZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7Cit9CisKK0NhbGxUeXBlIEpT
VGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RQbHVnaW5J
bnRlcmZhY2UqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKKworICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERh
dGEodGhpc09iamVjdCwgY2FsbERhdGEpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQbHVn
aW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBw
cm90b3R5cGUgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5
cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSgh
cHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0UGx1Z2luSW50ZXJmYWNl
OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkp
OworfQorCitib29sIHNldEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Cisg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
CisgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJv
cGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7
Cit9CisKK2Jvb2wgSlNUZXN0UGx1Z2luSW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VE
X1BBUkFNKHZpc2l0b3IpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2VPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0UGx1Z2luSW50ZXJmYWNlID0g
c3RhdGljX2Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxs
KCkpOworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNv
bnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0UGx1Z2luSW50ZXJmYWNl
LT53cmFwcGVkKCksIGpzVGVzdFBsdWdpbkludGVyZmFjZSk7Cit9CisKKyNpZiBFTkFCTEUoQklO
RElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0UGx1Z2luSW50ZXJmYWNlQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitl
eHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUxOVRlc3RQbHVnaW5JbnRlcmZh
Y2VFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RQbHVnaW5JbnRlcmZhY2U+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9jYXN0
PHZvaWQqKj4oaW1wbC5wdHIoKSkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0UGx1Z2luSW50ZXJmYWNlQFdlYkNvcmVAQDZCQCIpKTsKKyNlbHNlCisgICAgdm9p
ZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUxOVRlc3RQbHVnaW5JbnRl
cmZhY2VFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RQbHVnaW5JbnRl
cmZhY2UgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAg
IC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2Ug
ZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0UGx1
Z2luSW50ZXJmYWNlPjo6dmFsdWUsICJUZXN0UGx1Z2luSW50ZXJmYWNlIGlzIG5vdCBwb2x5bW9y
cGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhh
dmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdFBsdWdpbkludGVyZmFjZSBo
YXMgc3ViY2xhc3Nlcy4gSWYgVGVzdFBsdWdpbkludGVyZmFjZSBoYXMgc3ViY2xhc3NlcyB0aGF0
IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdFBs
dWdpbkludGVyZmFjZSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8v
IGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2lu
dGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRl
V3JhcHBlcjxUZXN0UGx1Z2luSW50ZXJmYWNlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkp
OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RQbHVnaW5JbnRlcmZhY2UmIGltcGwpCit7Cisg
ICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RQbHVn
aW5JbnRlcmZhY2UqIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2UqPih2bSwgdmFsdWUpKQorICAgICAgICBy
ZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdp
bkludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUg
IlRlc3RQbHVnaW5JbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDxydW50aW1lL0NhbGxEYXRhLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgSlNUZXN0UGx1Z2luSW50ZXJmYWNlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0UGx1
Z2luSW50ZXJmYWNlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0UGx1Z2luSW50ZXJmYWNlPjsKKyAgICBzdGF0aWMgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RQbHVnaW5JbnRlcmZhY2U+JiYgaW1wbCkKKyAgICB7CisgICAgICAg
IEpTVGVzdFBsdWdpbkludGVyZmFjZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAg
ICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3Jl
YXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Cisg
ICAgc3RhdGljIFRlc3RQbHVnaW5JbnRlcmZhY2UqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpK
U1ZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyBib29sIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0M6OkpTQ2VsbCos
IEpTQzo6Q2FsbERhdGEmKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSlNDOjpUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERhdGEgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0UGx1Z2luSW50ZXJmYWNlPiYmKTsKKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgor
ICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRl
eHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9N
V3JhcHBlcldvcmxkJiwgVGVzdFBsdWdpbkludGVyZmFjZSopCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTVGVzdFBsdWdpbkludGVyZmFjZU93bmVyPiBvd25lcjsKKyAgICByZXR1cm4g
Jm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0UGx1Z2luSW50
ZXJmYWNlKiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsK
K30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFRlc3RQbHVnaW5JbnRlcmZhY2UmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RQ
bHVnaW5JbnRlcmZhY2UqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKHN0YXRlLCBnbG9iYWxP
YmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdFBsdWdp
bkludGVyZmFjZT4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQ
dHI8VGVzdFBsdWdpbkludGVyZmFjZT4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5
Q3JlYXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlND
Ojpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJU
cmFpdHM8VGVzdFBsdWdpbkludGVyZmFjZT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpT
VGVzdFBsdWdpbkludGVyZmFjZTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVz
dFBsdWdpbkludGVyZmFjZSo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCShyZXZpc2lvbiAyMTky
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTE5LDkgKzE5LDkgQEAKICAqLwogCiBbCi0gICAgQ3VzdG9tRW51bWVyYXRl
UHJvcGVydHksCisgICAgQ3VzdG9tR2V0T3duUHJvcGVydHlOYW1lcywKICAgICBDdXN0b21HZXRP
d25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yLAotICAgIEN1c3RvbU5hbWVkU2V0dGVyLAorICAg
IEN1c3RvbVB1dCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBHZW5lcmF0
ZUlzUmVhY2hhYmxlLAogICAgIEpTQ3VzdG9tSGVhZGVyLApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5pZGwJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw5
ICsxOSw3IEBACiAgKi8KIAogWwotICAgIEN1c3RvbUNhbGwsCi0gICAgQ3VzdG9tR2V0T3duUHJv
cGVydHlTbG90QW5kRGVzY3JpcHRvciwKLSAgICBDdXN0b21OYW1lZFNldHRlciwKKyAgICBQbHVn
aW4KIF0gaW50ZXJmYWNlIEhUTUxBcHBsZXRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsaWduOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGFsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksOSArMTksNyBAQAogICovCiAKIFsK
LSAgICBDdXN0b21DYWxsLAotICAgIEN1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0
b3IsCi0gICAgQ3VzdG9tTmFtZWRTZXR0ZXIsCisgICAgUGx1Z2luCiBdIGludGVyZmFjZSBIVE1M
RW1iZWRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGFsaWduOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhlaWdodDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCShyZXZpc2lv
biAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMTksOSArMTksNyBAQAogICovCiAKIFsKLSAgICBDdXN0b21DYWxs
LAotICAgIEN1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IsCi0gICAgQ3VzdG9t
TmFtZWRTZXR0ZXIKKyAgICBQbHVnaW4KIF0gaW50ZXJmYWNlIEhUTUxPYmplY3RFbGVtZW50IDog
SFRNTEVsZW1lbnQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRm9ybUVsZW1lbnQgZm9y
bTsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBjb2RlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTIgQEAgdHlw
ZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7CiAgICAgQ2hlY2tTZWN1cml0eSwKICAgICBDdXN0
b21EZWZpbmVPd25Qcm9wZXJ0eSwKICAgICBDdXN0b21EZWxldGVQcm9wZXJ0eSwKLSAgICBDdXN0
b21FbnVtZXJhdGVQcm9wZXJ0eSwKKyAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eU5hbWVzLAogICAg
IEN1c3RvbUdldE93blByb3BlcnR5U2xvdCwKLSAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4LAogICAgIEN1c3RvbUdldFByb3RvdHlwZSwKICAgICBDdXN0b21QcmV2ZW50RXh0ZW5z
aW9ucywKICAgICBDdXN0b21Qcm94eVRvSlNPYmplY3QsCi0gICAgQ3VzdG9tUHV0RnVuY3Rpb24s
CisgICAgQ3VzdG9tUHV0LAogICAgIEN1c3RvbVRvU3RyaW5nTmFtZSwKICAgICBFeHBvcnRNYWNy
bz1XRUJDT1JFX0VYUE9SVCwKICAgICBJbXBsaWNpdFRoaXMsCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Y2F0aW9uLmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE2ICszMSwxNiBAQAogICAgIEN1c3RvbURl
ZmluZU93blByb3BlcnR5LAogICAgIEN1c3RvbURlZmluZU93blByb3BlcnR5T25Qcm90b3R5cGUs
CiAgICAgQ3VzdG9tRGVsZXRlUHJvcGVydHksCi0gICAgQ3VzdG9tRW51bWVyYXRlUHJvcGVydHks
Ci0gICAgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciwKKyAgICBDdXN0b21H
ZXRPd25Qcm9wZXJ0eU5hbWVzLAorICAgIEN1c3RvbUdldE93blByb3BlcnR5U2xvdCwKICAgICBD
dXN0b21HZXRQcm90b3R5cGUsCi0gICAgQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZSwKLSAg
ICBDdXN0b21OYW1lZFNldHRlciwKICAgICBDdXN0b21QcmV2ZW50RXh0ZW5zaW9ucywKKyAgICBD
dXN0b21QdXQsCisgICAgQ3VzdG9tUHV0T25Qcm90b3R5cGUsCiAgICAgQ3VzdG9tVG9TdHJpbmdO
YW1lLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogICAgIElzSW1tdXRhYmxl
UHJvdG90eXBlRXhvdGljT2JqZWN0LAotICAgIFVuZm9yZ2VhYmxlLAorICAgIFVuZm9yZ2VhYmxl
CiBdIGludGVyZmFjZSBMb2NhdGlvbiB7CiAgICAgW1NldHRlckNhbGxXaXRoPUFjdGl2ZVdpbmRv
dyZGaXJzdFdpbmRvdywgU2V0dGVyTWF5VGhyb3dFeGNlcHRpb24sIERvTm90Q2hlY2tTZWN1cml0
eU9uU2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1dGUgVVNWU3RyaW5nIGhyZWY7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogICovCiAKIFsKLSAgICBDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSwKKyAgICBDdXN0b21H
ZXRPd25Qcm9wZXJ0eU5hbWVzLAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAog
ICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgU3RvcmFnZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314837</attachid>
            <date>2017-07-07 06:43:41 -0700</date>
            <delta_ts>2017-07-07 13:21:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174238-20170707064513.patch</filename>
            <type>text/plain</type>
            <size>91125</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTIzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxNy0wNy0wNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIE1vdmUgcGx1Z2luIG9i
amVjdCBjdXN0b21pemF0aW9uIGludG8gdGhlIGdlbmVyYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MjM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBBZGRlZCBbUGx1Z2luXSBleHRlbmRlZCBh
dHRyaWJ1dGUgdG8gZm9yd2FyZCB0aGUgbmVjZXNzYXJ5IGhvb2tzCisgICAgICAgICAgZm9yIGdl
dC9zZXQvZGVsZXRlIHRvIHRoZSBwbHVnaW4gY29kZS4KKyAgICAgICAgLSBSZW1vdmVkIFtDdXN0
b21OYW1lZFNldHRlcl0gYW5kIHJlcGxhY2VkIGl0J3MgcmVtYWluaW5nIHVzZXMKKyAgICAgICAg
ICBbQ3VzdG9tUHV0XSAoZm9ybWFsbHkgY2FsbGVkIFtDdXN0b21QdXRGdW5jdGlvbl0pLgorICAg
ICAgICAtIFJlbmFtZWQgW0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGVdIHRvIFtDdXN0b21Q
dXRPblByb3RvdHlwZV0KKyAgICAgICAgICBiZWNhdXNlIHRoYXQgaXMgYWN0dWFsbHkgd2hhdCBp
dCBkb2VzLgorICAgICAgICAtIFJlbW92ZWQgW0N1c3RvbUdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhdIGFuZCBtYWRlIAorICAgICAgICAgIFtDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RdIGltcGx5
IGl0LCBhcyB0aGUgb3RoZXIgY3VzdG9tIGhvb2tzCisgICAgICAgICAgZG8uCisgICAgICAgIC0g
UmVuYW1lZCBbQ3VzdG9tRW51bWVyYXRlUHJvcGVydHldIHRvIFtDdXN0b21HZXRPd25Qcm9wZXJ0
eU5hbWVzXQorICAgICAgICAgIHRvIGNvbmZvcm0gd2l0aCBvdGhlciBhdHRyaWJ1dGUgbmFtZXMu
CisgICAgICAgIC0gUmVuYW1lZCBbQ3VzdG9tQ2FsbF0gdG8gW0N1c3RvbUdldENhbGxEYXRhXSB0
byBjb25mb3JtIHdpdGggb3RoZXIgCisgICAgICAgICAgYXR0cmlidXRlIG5hbWVzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3Vz
dG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgUmVtb3ZlIGN1c3RvbSBiaW5kaW5ncy4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwdXRDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURl
Y2xhcmF0aW9uOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
cHV0RGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICBVc2UgW0N1c3RvbVB1dF0gcmF0aGVyIHRo
YW4gW0N1c3RvbU5hbWVkU2V0dGVyXSB0byBhbGxvdyB1cworICAgICAgICB0byBnZXQgcmlkIG9m
IFtDdXN0b21OYW1lZFNldHRlcl0uIFJldXNlIHB1dCBkZWxlZ2F0ZSBhcworICAgICAgICBjb21t
b24gY29kZSB0byBzaGFyZSBiZXR3ZWVuIHB1dCBhbmQgcHV0QnlJbmRleC4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgUmVwbGFjZSBbQ3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90QW5kRGVzY3JpcHRvcl0gd2l0aCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQorICAg
ICAgICB3aGljaCBpcyBtb3JlIGNsZWFyIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdmFyaWFu
dHMgb2YgdGhpcyBob29rIG92ZXJyaWRlCisgICAgICAgIHdlIG5lZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OnB1dENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIFVzZSBb
Q3VzdG9tUHV0XSByYXRoZXIgdGhhbiBbQ3VzdG9tTmFtZWRTZXR0ZXJdIHRvIGFsbG93IHVzCisg
ICAgICAgIHRvIGdldCByaWQgb2YgW0N1c3RvbU5hbWVkU2V0dGVyXS4gUmV1c2UgcHV0IGRlbGVn
YXRlIGFzCisgICAgICAgIGNvbW1vbiBjb2RlIHRvIHNoYXJlIGJldHdlZW4gcHV0IGFuZCBwdXRC
eUluZGV4LgorCisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXQpOgor
ICAgICAgICBbQ3VzdG9tUHV0T25Qcm90b3R5cGVdICh3aGljaCB3ZWlyZGx5IHVzZWQgaW5jb3Jy
ZWN0bHkgYmUgY2FsbGVkIAorICAgICAgICBbQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZV0p
IG5vdyB3b3JrcyBsaWtlIFtDdXN0b21QdXRdIG1lYW5pbmcKKyAgICAgICAgeW91IG5lZWQgdG8g
Y2FsbCBCYXNlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRDdXN0b21QdXQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6cGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAg
ICAgIFJlbW92ZSB0ZW1wbGF0aXplZCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90LCB3aGljaCB3YXMgCisgICAgICAgIGNvbXBsZXRlbHkgdW5uZWNlc3NhcnkgYW5kIG1lcmdl
IGl0cyBmdW5jdGlvbmFsaXR5IGludG8gdGhlIG91dCBvZgorICAgICAgICBsaW5lIG92ZXJsb2Fk
LiBSZW1vdmUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyIGZyb20gdGhlIGhlYWRlciwKKyAg
ICAgICAgc2luY2UgaXQgaXMgb25seSB1c2VkIGluIGltcGxlbWVudGF0aW9uLCBhbmQgdW5pZnkg
dGhlIG5hbWluZyBhbmQKKyAgICAgICAgYXJndW1lbnQgcG9zaXRpb24gKEpTSFRNTEVsZW1lbnQq
IGNvbWVzIGZpcnN0KSBvZiB0aGUgaG9va3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW5kZXhlZEdldHRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZU5hbWVkR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6
CisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoR2VuZXJh
dGVQdXQpOgorICAgICAgICAoR2VuZXJhdGVQdXRCeUluZGV4KToKKyAgICAgICAgKEdlbmVyYXRl
RGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0eUJ5SW5kZXgp
OgorICAgICAgICAoR2VuZXJhdGVOYW1lZERlbGV0ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKElu
c3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEluc3RhbmNlT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChJbnN0YW5jZU92ZXJyaWRlc1B1
dCk6CisgICAgICAgIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAoR2VuZXJhdGVHZXRDYWxsRGF0YSk6CisgICAgICAgIChHZW5lcmF0ZVBsdWdpbkNhbGwp
OgorICAgICAgICAoR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucyk6CisgICAgICAgIChH
ZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQcm90b3R5
cGVEZWNsYXJhdGlvbik6CisgICAgICAgIChJbnN0YW5jZU92ZXJyaWRlc0dldENhbGxEYXRhKToK
KyAgICAgICAgKEhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24pOgorICAgICAgICAtIEFk
ZCBzdXBwb3J0IGZvciBbUGx1Z2luXQorICAgICAgICAtIFJlbW92ZSBzdXBwb3J0IGZvciBbQ3Vz
dG9tTmFtZWRTZXR0ZXJdCisgICAgICAgIC0gUmVwbGFjZSBbQ3VzdG9tR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleF0gd2l0aCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQorICAgICAgICAtIFJl
cGxhY2UgW0N1c3RvbUVudW1lcmF0ZVByb3BlcnR5XSB3aXRoIFtDdXN0b21HZXRPd25Qcm9wZXJ0
eU5hbWVzXQorICAgICAgICAtIFJlcGxhY2UgW0N1c3RvbVB1dEZ1bmN0aW9uXSB3aXRoIFtDdXN0
b21QdXRdLgorICAgICAgICAtIE1ha2Ugc3Vicm91dGluZSBuYW1lcyBtb3JlIGNvbnNpc3RlbnQg
KHJlbW92ZSBhIGZldyBEZWZpbml0aW9uIHN1ZmZpeGVzKQorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IC8gcmVt
b3ZlZCBhdHRyaWJ1dGVzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQbHVnaW5JbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdFBsdWdpbkludGVyZmFjZS5pZGw6IEFkZGVkLgorICAgICAgICBVcGRh
dGUgLyBhZGQgdGVzdHMuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlv
bi5pZGw6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmlkbDoKKyAgICAgICAgVXBkYXRlIGZv
ciBuZXcgLyByZW5hbWVkIGF0dHJpYnV0ZXMuCisKIDIwMTctMDctMDYgIFlvYXYgV2Vpc3MgIDx5
b2F2QHlvYXYud3M+CiAKICAgICAgICAgW3ByZWxvYWRdIEF2b2lkIHJlZmxlY3RpbmcgInZpZGVv
IiBhbmQgImF1ZGlvIiB3aGVuIHRoZXkgYXJlIG5vdCBzdXBwb3J0ZWQgYGFzYCB2YWx1ZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5LDEzICsxMTg5LDEwIEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0V4Y2VwdGlvbkJhc2UuY3BwCi0gICAgYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1
c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNIVE1MRWxlbWVu
dEN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3Bw
Ci0gICAgYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSURCQ3Vyc29yQ3VzdG9tLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NjI4LDcgKzU2MjgsNiBA
QAogCQlCQzJFRDZCQzBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkVENkJCMEM2QkQyRjAw
MDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovOyB9OwogCQlCQzMwNUM3OTBDMDc2QkIzMDBD
RDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1M
T2JqZWN0RWxlbWVudC5jcHAgKi87IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBK
U0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVu
dC5oICovOyB9OwotCQlCQzMwNUNBNDBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzMwNUNBMzBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3Rv
bS5jcHAgKi87IH07CiAJCUJDMzNGQjFCMEYzMEVFODUwMDJDREQ3QyAvKiBSZW5kZXJMaW5lQm94
TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzMzRkIxQTBGMzBFRTg1MDAyQ0REN0MgLyogUmVuZGVyTGluZUJveExpc3QuY3BwICovOyB9Owog
CQlCQzM0OEJCRTBEQjdGNTMxMDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJCRDBE
QjdGNTMxMDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgKi87IH07CiAJCUJD
MzQ4QkQzMERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQxMERCN0Y4MDQwMDRB
QkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmNwcCAqLzsgfTsKQEAgLTU2NjcsNyArNTY2Niw2IEBA
CiAJCUJDNDkxOEM5MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxJRnJhbWVFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ5MThDMzBCRkVB
MDUwMDA5RDYzMTYgLyogSlNIVE1MSUZyYW1lRWxlbWVudC5oICovOyB9OwogCQlCQzQ5MUI3ODBD
MDIzRUZEMDA5RDYzMTYgLyogSlNIVE1MTWFycXVlZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0OTFCNzYwQzAyM0VGRDAwOUQ2MzE2
IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQkM0OTFCNzkwQzAyM0VGRDAw
OUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ5MUI3NzBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1M
TWFycXVlZUVsZW1lbnQuaCAqLzsgfTsKLQkJQkM0RURFRjQwQzA4RjNGQjAwN0VERDQ5IC8qIEpT
SFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxl
dEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQzUxMTU2RTEyQjE3NDlDMDBDOTY3NTQgLyog
U2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzUxMTU2RDEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMu
bW0gKi87IH07CiAJCUJDNTE1ODBCMEMwM0Q0MDQwMDhCQjBFRSAvKiBKU0hUTUxEb2N1bWVudEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzUxNTgwQTBDMDNENDA0MDA4QkIwRUUgLyogSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwICovOyB9
OwogCQlCQzUzQzVGNTBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTNDNUY0MERBNTZCOTIwMDIxRUI1
RCAvKiBHcmFkaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC01NzQ3LDcgKzU3NDUsNiBAQAogCQlCQzY0QjREQzBDQjQyOThBMDA1RjJCNjIg
LyogQ1NTRm9udFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzY0QjRENDBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udFNlbGVjdG9yLmgg
Ki87IH07CiAJCUJDNjkzMjczMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2OTMyNzEw
RDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi87IH07CiAJCUJDNjkzMjc0
MEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBK
U0RPTVdpbmRvd0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQlCQzZENDRCRTBDMDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNkQ0NEJEMEMwN0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3Bw
ICovOyB9OwogCQlCQzZENDRFQzBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkQ0
NEVBMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuY3BwICovOyB9OwogCQlC
QzZENDRFRDBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENDRFQjBDMDdGMkVEMDA3
MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggKi87IH07CiAJCUJDNkQ2RTI2MDlBRjk0MzUw
MEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDEyNiw3
ICsxNDEyMyw2IEBACiAJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdHRyQ3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzcwQzA3NkJCMzAwQ0QyMEYw
IC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzMwNUNBMzBDMDc4MUJCMDBDRDIwRjAg
LyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkMzM0ZCMUEwRjMwRUU4NTAwMkNERDdDIC8qIFJlbmRlckxpbmVC
b3hMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckxp
bmVCb3hMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzNDhCQTcwREI3
RjFCODAwNEFCQUI5IC8qIFhNTEh0dHBSZXF1ZXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBYTUxIdHRwUmVxdWVzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzQ4
QkJEMERCN0Y1MzEwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNjUsNyArMTQxNjEsNiBAQAogCQlC
QzQ5MUI0RTBDMDIzRTJEMDA5RDYzMTYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBIVE1MTWFycXVlZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ5MUI3NjBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1MTWFycXVlZUVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE1h
cnF1ZWVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0OTFCNzcw
QzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxNYXJxdWVlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQzRFREVGMzBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0
RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkM1MTE1NkQxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTE1ODBBMEMwM0Q0MDQwMDhCQjBFRSAv
KiBKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzUzQzVGNDBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhZGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0MjUxLDcgKzE0MjQ2LDYgQEAKIAkJQkM2NEI0RDQwQ0I0Mjk4QTAwNUYyQjYy
IC8qIENTU0ZvbnRTZWxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NGb250U2VsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2OTMyNzEw
RDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd0Jhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzY5MzI3MjBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93QmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzZENDRCRDBDMDdFRkI2MDA3MkQyQzkgLyog
SlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNkQ0NEVBMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEVtYmVk
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNkQ0NEVCMEMwN0Yy
RUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjM3MDUsMTEgKzIzNjk5LDggQEAKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3
MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdD
QjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oICovLAogCQkJCUJDRTdCMTkyMEQ0RTg2
OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLAotCQkJCUJDNEVERUYzMEMwOEYz
RkIwMDdFREQ0OSAvKiBKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk5Mzky
MjYyQzEwMzIxMDdCMDA2RTdENUQgLyogSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgKi8s
CiAJCQkJQkM1ODIzRjQwQzBBOThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRDdXN0b20uY3Bw
ICovLAotCQkJCUJDNkQ0NEJEMEMwN0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRD
dXN0b20uY3BwICovLAotCQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBKU0hUTUxPYmpl
Y3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlENkY3OTYwQzE2NkZGRUNFMDA3NkREMTggLyog
SlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk3QTc0RUNCQzEwMTgzOURB
MDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovLAogCQkJCUJD
RTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTMy
MDc2LDcgKzMyMDY3LDYgQEAKIAkJCQlCQzk3RTQxMjEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1M
QWxsQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBMkRFRjBBMUI4NTJBMDBD
ODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRB
MkRGMTBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1MQXBwbGV0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlCQzRFREVGNDBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0RWxlbWVu
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUExRTBBMUNEQUI0MDBCNDJCMjUg
LyogSlNIVE1MQXJlYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M5REJGRUQxQTlD
NDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUU0NDYxNDM3MENENjg5QzQwMEZBREE3NSAvKiBKU0hUTUxBdWRpb0VsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMjEwMCw3ICszMjA5MCw2IEBACiAJCQkJQkM1ODIzRjUwQzBB
OThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM4RTY1RjcwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9y
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzZENDRFQzBDMDdGMkVEMDA3MkQyQzkgLyogSlNI
VE1MRW1iZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDNkQ0NEJFMEMwN0VGQjYw
MDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFFMkFBMjYwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEyODBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MRm9u
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJGOUE4ODAxNjQ4REQyRjAwMUM2QjIz
IC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MjEyNyw3ICszMjExNiw2IEBACiAJCQkJQTdCQkUyNjYxMUFGQjNGMjAwMDVFQTAzIC8qIEpTSFRN
TE1ldGVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIyOTBBMUNFNjNCMDBC
NDJCMjUgLyogSlNIVE1MTW9kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMwNUM3
OTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCQzMwNUNBNDBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg1QjFFQTBBMUIyNDA1MDBEOEM4N0MgLyog
SlNIVE1MT0xpc3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU3RTlDMEExQTgz
RTMwMDdGQjhDNSAvKiBKU0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTgwRTdFOUEwQTFBODNFMzAwN0ZCOEM1IC8qIEpTSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDEzICs2NCwxMCBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVkZSAi
SlNFdmVudFRhcmdldEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmNwcCIK
LSNpbmNsdWRlICJKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAi
SlNIVE1MRWxlbWVudEN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNIVE1MRW1iZWRFbGVtZW50Q3Vz
dG9tLmNwcCIKLSNpbmNsdWRlICJKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSGlzdG9y
eUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGFDdXN0b20uY3BwIgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTMsNiArMzEzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIHN0eWxlUHJvcGVydHlHZXR0
ZQogICAgIHJldHVybiBzdHlsZVByb3BlcnR5R2V0dGVyKHN0YXRlLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eUluZm8ucHJvcGVydHlJRCk7CiB9CiAKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjb252
ZXJ0ZWQgdG8gYmUgYSBuYW1lZCBnZXR0ZXIuCiBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8gcHJvcGVydHlJ
bmZvID0gcGFyc2VKYXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7CkBAIC0z
MjIsMTQgKzMyMywxNSBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVy
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXRE
ZWxlZ2F0ZShFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCisvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgY29udmVydGVkIHRvIGJlIGEgbmFtZWQgc2V0dGVyLgorc3RhdGljIGJv
b2wgcHV0Q29tbW9uKEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgRXhlY1N0YXRl
JiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCYg
cHV0UmVzdWx0KQogewogICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrOwogICAgIGF1dG8gcHJvcGVydHlJbmZvID0gcGFyc2VKYXZhU2NyaXB0
Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJv
cGVydHlJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBwcm9wZXJ0eVZhbHVl
ID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01TdHJpbmc+Pigqc3Rh
dGUsIHZhbHVlKTsKKyAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBjb252ZXJ0PElETFRyZWF0TnVs
bEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKHBy
b3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4KQogICAgICAgICBwcm9wZXJ0eVZhbHVlLmFw
cGVuZCgicHgiKTsKIApAQCAtMzQyLDE3ICszNDQsNDEgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFy
YXRpb246OnB1dERlbGVnYXRlKAogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBzZXRQcm9w
ZXJ0eUludGVybmFsUmVzdWx0ID0gd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVy
dHlJbmZvLnByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUsIGltcG9ydGFudCk7CisgICAgYXV0byBz
ZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkuc2V0UHJvcGVy
dHlJbnRlcm5hbChwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSwgaW1wb3J0
YW50KTsKICAgICBpZiAoc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkg
ewotICAgICAgICBhdXRvJiB2bSA9IHN0YXRlLT52bSgpOworICAgICAgICBhdXRvJiB2bSA9IHN0
YXRlLnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgc2NvcGUsIHNldFByb3BlcnR5SW50
ZXJuYWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0
aW9uKHN0YXRlLCBzY29wZSwgc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcHV0UmVzdWx0ID0gc2V0
UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQoreworICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgYm9vbCBwdXRS
ZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAocHV0Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7
CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKK30KKworYm9vbCBKU0NTU1N0eWxlRGVjbGFy
YXRpb246OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25l
ZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIGJvb2wg
cHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHB1dENvbW1vbigqdGhpc09iamVjdCwgKnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCksIHZhbHVlLCBwdXRSZXN1bHQpKQorICAg
ICAgICByZXR1cm4gcHV0UmVzdWx0OworCisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4
KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKK30KKwogSlNWYWx1ZSBK
U0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxl
dEVsZW1lbnRDdXN0b20uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSlNIVE1MQXBwbGV0RWxlbWVudC5oIgotCi0jaW5jbHVkZSAiSFRNTEFw
cGxldEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1ib29sIEpTSFRN
TEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAg
IHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpTSFRNTEFwcGxl
dEVsZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7Ci19Ci0KLWJv
b2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QsIGJvb2wmIHB1dFJlc3VsdCkKLXsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1
dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwotfQot
Ci1DYWxsVHlwZSBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGws
IENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEdldENhbGxE
YXRhKGpzQ2FzdDxKU0hUTUxBcHBsZXRFbGVtZW50Kj4oY2VsbCksIGNhbGxEYXRhKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIxOTIzMikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5j
cHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJK
U0hUTUxFbWJlZEVsZW1lbnQuaCIKLQotI2luY2x1ZGUgIkhUTUxFbWJlZEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVudDo6Z2V0
T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1l
bnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Q8SlNIVE1MRW1iZWRFbGVtZW50LCBCYXNlPihleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwotfQotCi1ib29sIEpTSFRNTEVtYmVkRWxlbWVu
dDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkK
LXsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwotfQotCi1DYWxsVHlwZSBKU0hUTUxFbWJl
ZEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQot
ewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoanNDYXN0PEpTSFRNTEVtYmVk
RWxlbWVudCo+KGNlbGwpLCBjYWxsRGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVt
YmVkRWxlbWVudEN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RF
bGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0hUTUxPYmplY3RFbGVt
ZW50LmgiCi0KLSNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIG5h
bWVzcGFjZSBKU0M7Ci0KLWJvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRP
d25Qcm9wZXJ0eVNsb3Q8SlNIVE1MT2JqZWN0RWxlbWVudCwgQmFzZT4oZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90LCB0aGlzKTsKLX0KLQotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50OjpwdXREZWxl
Z2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQotewotICAgIHJl
dHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHRo
aXMsIHNsb3QsIHB1dFJlc3VsdCk7Ci19Ci0KLUNhbGxUeXBlIEpTSFRNTE9iamVjdEVsZW1lbnQ6
OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQotewotICAgIHJl
dHVybiBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoanNDYXN0PEpTSFRNTE9iamVjdEVsZW1lbnQq
PihjZWxsKSwgY2FsbERhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVt
ZW50Q3VzdG9tLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lv
biAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9w
ZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RD
b21tb24oSlNMb2NhdGlvbiYgdGhpc09iamVjdCwgRXhlY1N0YXRlJiBzdGF0ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZy
YW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC53cmFwcGVkKCkuZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNTEsNjAgKzUxLDEwMCBAQCBib29sIEpTTG9jYXRpb246OmdldE93
blByb3BlcnR5U2xvdERlbGVnCiAgICAgLy8gT3VyIGN1c3RvbSBjb2RlIGlzIG9ubHkgbmVlZGVk
IHRvIGltcGxlbWVudCB0aGUgV2luZG93IGNyb3NzLWRvbWFpbiBzY2hlbWUsIHNvIGlmIGFjY2Vz
cyBpcwogICAgIC8vIGFsbG93ZWQsIHJldHVybiBmYWxzZSBzbyB0aGUgbm9ybWFsIGxvb2t1cCB3
aWxsIHRha2UgcGxhY2UuCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKEJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKCpzdGF0ZSwgKmZyYW1lLCBtZXNzYWdlKSkK
KyAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUs
ICpmcmFtZSwgbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXIt
KC1vLC1wLSkKLSAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCku
dG9TdHJpbmdUYWdTeW1ib2wgfHwgcHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVz
KCkuaGFzSW5zdGFuY2VTeW1ib2wgfHwgcHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5h
bWVzKCkuaXNDb25jYXRTcHJlYWRhYmxlU3ltYm9sKSB7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpcywgUmVhZE9ubHkgfCBEb250RW51bSwganNVbmRlZmluZWQoKSk7CisgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmdUYWdTeW1ib2wgfHwgcHJv
cGVydHlOYW1lID09IHN0YXRlLnByb3BlcnR5TmFtZXMoKS5oYXNJbnN0YW5jZVN5bWJvbCB8fCBw
cm9wZXJ0eU5hbWUgPT0gc3RhdGUucHJvcGVydHlOYW1lcygpLmlzQ29uY2F0U3ByZWFkYWJsZVN5
bWJvbCkgeworICAgICAgICBzbG90LnNldFZhbHVlKCZ0aGlzT2JqZWN0LCBSZWFkT25seSB8IERv
bnRFbnVtLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAg
ICAgLy8gV2Ugb25seSBhbGxvdyBhY2Nlc3MgdG8gTG9jYXRpb24ucmVwbGFjZSgpIGNyb3NzIG9y
aWdpbi4KLSAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkucmVw
bGFjZSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBSZWFkT25seSB8IERvbnRFbnVt
LCBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXI8anNMb2NhdGlvbkluc3RhbmNlRnVuY3Rp
b25SZXBsYWNlLCAxPik7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0ZS5wcm9wZXJ0eU5h
bWVzKCkucmVwbGFjZSkgeworICAgICAgICBzbG90LnNldEN1c3RvbSgmdGhpc09iamVjdCwgUmVh
ZE9ubHkgfCBEb250RW51bSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzTG9jYXRp
b25JbnN0YW5jZUZ1bmN0aW9uUmVwbGFjZSwgMT4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICAgICAvLyBHZXR0aW5nIGxvY2F0aW9uLmhyZWYgY3Jvc3Mgb3JpZ2luIG5lZWRzIHRv
IHRocm93LiBIb3dldmVyLCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSBuZWVkcyB0byByZXR1
cm4KICAgICAvLyBhIGRlc2NyaXB0b3IgdGhhdCBoYXMgYSBzZXR0ZXIgYnV0IG5vIGdldHRlci4K
LSAgICBpZiAoc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkgJiYgcHJvcGVydHlOYW1lID09IHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuaHJlZikgeworICAgIGlmIChzbG90LmludGVybmFsTWV0aG9kVHlwZSgp
ID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSAmJiBw
cm9wZXJ0eU5hbWUgPT0gc3RhdGUucHJvcGVydHlOYW1lcygpLmhyZWYpIHsKICAgICAgICAgYXV0
byogZW50cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5
KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0dGVy
U2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIG51bGxwdHIsIGVudHJ5LT5w
cm9wZXJ0eVB1dHRlcigpKTsKLSAgICAgICAgc2xvdC5zZXRDdXN0b21HZXR0ZXJTZXR0ZXIodGhp
cywgRG9udEVudW0gfCBDdXN0b21BY2Nlc3NvciwgY3VzdG9tR2V0dGVyU2V0dGVyKTsKKyAgICAg
ICAgc2xvdC5zZXRDdXN0b21HZXR0ZXJTZXR0ZXIoJnRoaXNPYmplY3QsIERvbnRFbnVtIHwgQ3Vz
dG9tQWNjZXNzb3IsIGN1c3RvbUdldHRlclNldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIHRocm93U2VjdXJpdHlFcnJvcigqc3RhdGUsIHNjb3BlLCBtZXNzYWdlKTsK
KyAgICB0aHJvd1NlY3VyaXR5RXJyb3Ioc3RhdGUsIHNjb3BlLCBtZXNzYWdlKTsKICAgICBzbG90
LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpTTG9jYXRpb246
OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKK2Jvb2wgSlNMb2Nh
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3Rh
dGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAg
ICBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9j
YXRpb24qPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOworICAg
IGlmIChnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oKnRoaXNPYmplY3QsICpzdGF0ZSwgcHJvcGVy
dHlOYW1lLCBzbG90KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
K30KKworYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4ob2Jq
ZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisKKyAgICBpZiAoZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUs
IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KSwgc2xvdCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmpl
Y3QsIHN0YXRlLCBpbmRleCwgc2xvdCk7Cit9CisKK3N0YXRpYyBib29sIHB1dENvbW1vbihKU0xv
Y2F0aW9uJiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUmIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBTaWxl
bnRseSBibG9jayBhY2Nlc3MgdG8gdG9TdHJpbmcgYW5kIHZhbHVlT2YuCi0gICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFt
ZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpCisgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09IHN0
YXRlLnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIEFsd2F5cyBhbGxvdyBhc3NpZ25pbmcgdG8gdGhlIHdob2xlIGxvY2F0aW9uLgogICAgIC8v
IEhvd2V2ZXIsIGFsbGxvd2luZyBhc3NpZ25pbmcgb2YgcGllY2VzIG1pZ2h0IGluYWR2ZXJ0ZW50
bHkgZGlzY2xvc2UgcGFydHMgb2YgdGhlIG9yaWdpbmFsIGxvY2F0aW9uLgogICAgIC8vIFNvIGZh
bGwgdGhyb3VnaCB0byB0aGUgYWNjZXNzIGNoZWNrIGZvciB0aG9zZS4KLSAgICBpZiAocHJvcGVy
dHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuaHJlZikKKyAgICBpZiAocHJvcGVydHlO
YW1lID09IHN0YXRlLnByb3BlcnR5TmFtZXMoKS5ocmVmKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBCbG9jayBhY2Nlc3MgYW5kIHRocm93IGlmIHRoZXJlIGlzIGEgc2VjdXJpdHkg
ZXJyb3IuCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFt
ZShzdGF0ZSwgZnJhbWUsIFRocm93U2VjdXJpdHlFcnJvcikpCisgICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUsIGZyYW1lLCBUaHJvd1NlY3Vy
aXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorYm9vbCBKU0xvY2F0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHB1dFByb3BlcnR5U2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9j
YXRpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CisKKyAgICBpZiAocHV0Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUsIHByb3Bl
cnR5TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBKU09iamVjdDo6
cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNs
b3QpOworfQorCitib29sIEpTTG9jYXRpb246OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRpb24qPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisK
KyAgICBpZiAocHV0Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUsIElkZW50aWZpZXI6OmZyb20o
c3RhdGUsIGluZGV4KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBKU09i
amVjdDo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7
Cit9CisKIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNMb2NhdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CkBAIC0xODgsMTAgKzIy
OCwxMiBAQCBTdHJpbmcgSlNMb2NhdGlvbjo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTCiAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiTG9jYXRpb24iKTsKIH0KIAotYm9vbCBKU0xvY2F0aW9uUHJvdG90
eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKK2Jvb2wgSlNM
b2NhdGlvblByb3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewotICAgIHB1dFJlc3VsdCA9IGZhbHNlOwotICAgIHJldHVybiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNMb2NhdGlvblByb3RvdHlwZSo+KGNlbGwpOworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
c3RhdGUtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRp
b24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk0LDcgKzk0LDcgQEAgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChFeGVjU3Rh
dGUqIAogICAgIHJldHVybiBpbnN0YW5jZS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKTsKIH0K
ICAgICAKLUVuY29kZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDksMTkgKzEwOSwyNiBAQCBFbmNvZGVk
SlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShzY3JpcHRPYmplY3QtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAotYm9vbCBw
bHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBKU0hUTUxFbGVtZW50
KiBlbGVtZW50KQorYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpT
SFRNTEVsZW1lbnQqIGVsZW1lbnQsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGlmICghZWxlbWVudC0+Z2xvYmFs
T2JqZWN0KCktPndvcmxkKCkuaXNOb3JtYWwoKSkgeworICAgICAgICBKU0M6OkpTVmFsdWUgcHJv
dG8gPSBlbGVtZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgaWYgKHByb3RvLmlz
T2JqZWN0KCkgJiYgSlNDOjpqc0Nhc3Q8SlNDOjpKU09iamVjdCo+KGFzT2JqZWN0KHByb3RvKSkt
Pmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9i
amVjdChleGVjLCBlbGVtZW50KTsKICAgICBpZiAoIXNjcmlwdE9iamVjdCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFzY3JpcHRPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHBy
b3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHNsb3Quc2V0Q3VzdG9t
KGVsZW1lbnQsIERvbnREZWxldGUgfCBEb250RW51bSwgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0
dGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBw
dXRSZXN1bHQpCitib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoSlNIVE1MRWxlbWVudCogZWxl
bWVudCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBK
U09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIGVsZW1lbnQp
OwogICAgIGlmICghc2NyaXB0T2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgJKHJldmlzaW9uIDIxOTIz
MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyMCArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgSlNDOjpCaW5kaW5nczo6SW5zdGFuY2UqIHBsdWdpbkluc3RhbmNlKEhUTUxFbGVtZW50
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgSlNDOjpKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0
KEpTQzo6RXhlY1N0YXRlKiwgSlNIVE1MRWxlbWVudCopOwogCi0gICAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0gICAgYm9vbCBwbHVnaW5FbGVtZW50
Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90JiwgSlNIVE1MRWxlbWVudCopOwotICAgIGJvb2wgcGx1Z2lu
RWxlbWVudEN1c3RvbVB1dChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUsIEpTSFRNTEVsZW1lbnQqLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1
dFJlc3VsdCk7Ci0gICAgSlNDOjpDYWxsVHlwZSBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoSlNI
VE1MRWxlbWVudCosIEpTQzo6Q2FsbERhdGEmKTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUeXBl
LCBjbGFzcyBCYXNlPiBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmIHNsb3QsIFR5cGUqIGVsZW1lbnQpCi0gICAgewotICAgICAgICBpZiAo
IWVsZW1lbnQtPmdsb2JhbE9iamVjdCgpLT53b3JsZCgpLmlzTm9ybWFsKCkpIHsKLSAgICAgICAg
ICAgIEpTQzo6SlNWYWx1ZSBwcm90byA9IGVsZW1lbnQtPmdldFByb3RvdHlwZURpcmVjdCgpOwot
ICAgICAgICAgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkgJiYgSlNDOjpqc0Nhc3Q8SlNDOjpKU09i
amVjdCo+KGFzT2JqZWN0KHByb3RvKSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90LCBlbGVtZW50KTsKLSAgICB9CisgICAgYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9t
R2V0T3duUHJvcGVydHlTbG90KEpTSFRNTEVsZW1lbnQqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgcGx1Z2luRWxlbWVu
dEN1c3RvbVB1dChKU0hUTUxFbGVtZW50KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3Vs
dCk7CisgICAgSlNDOjpDYWxsVHlwZSBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEoSlNI
VE1MRWxlbWVudCosIEpTQzo6Q2FsbERhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNyArNTM1LDcg
QEAgc3ViIEdlbmVyYXRlSW5kZXhlZEdldHRlcgogICAgICMgMS4yLjggUmV0dXJuIGRlc2MuCiAg
ICAgCiAgICAgbXkgQGF0dHJpYnV0ZXMgPSAoKTsKLSAgICBwdXNoKEBhdHRyaWJ1dGVzLCAiUmVh
ZE9ubHkiKSBpZiAhR2V0SW5kZXhlZFNldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKSAmJiAhJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9OworICAgIHB1
c2goQGF0dHJpYnV0ZXMsICJSZWFkT25seSIpIGlmICFHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9u
KCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59
OwogICAgIAogICAgIG15ICRhdHRyaWJ1dGVTdHJpbmcgPSAoKEBhdHRyaWJ1dGVzID4gMCkgPyBq
b2luKCIgfCAiLCBAYXR0cmlidXRlcykgOiAiMCIpOwogCkBAIC01NzIsNyArNTcyLDcgQEAgc3Vi
IEdlbmVyYXRlTmFtZWRHZXR0ZXIKICAgICAjIDIuMTAgUmV0dXJuIGRlc2MuCiAgICAgCiAgICAg
bXkgQGF0dHJpYnV0ZXMgPSAoKTsKLSAgICBwdXNoKEBhdHRyaWJ1dGVzLCAiUmVhZE9ubHkiKSBp
ZiAhR2V0TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSkgJiYgISRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVyfTsKKyAgICBwdXNoKEBhdHRyaWJ1
dGVzLCAiUmVhZE9ubHkiKSBpZiAhR2V0TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSkg
JiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn07CiAgICAgcHVzaChA
YXR0cmlidXRlcywgIkRvbnRFbnVtIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TGVnYWN5VW5lbnVtZXJhYmxlTmFtZWRQcm9wZXJ0aWVzfTsKICAgICAKICAgICBteSAkYXR0
cmlidXRlU3RyaW5nID0gKChAYXR0cmlidXRlcyA+IDApID8gam9pbigiIHwgIiwgQGF0dHJpYnV0
ZXMpIDogIjAiKTsKQEAgLTY2Nyw3ICs2NjcsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0
eVNsb3QKICAgICAgICAgIyAxLjMuIFNldCBpZ25vcmVOYW1lZFByb3BzIHRvIHRydWUuCiAgICAg
ICAgICMgTk9URTogU2V0dGluZyBpZ25vcmVOYW1lZFByb3BzIGhhcyB0aGUgZWZmZWN0IG9mIHNr
aXBwaW5nIHN0ZXAgMiwgc28gd2UgY2FuIGVhcmx5IHJldHVybiBoZXJlCiAgICAgICAgICMgICAg
ICAgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCB0aGUgcGFjZXMgb2YgaGF2aW5nIGFuIGFjdHVh
bCBpZ25vcmVOYW1lZFByb3BzIHVwZGF0ZS4KLSAgICAgICAgaWYgKCRuYW1lZEdldHRlck9wZXJh
dGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3RBbmREZXNjcmlwdG9yfSkgeworICAgICAgICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0
aW9uIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldE93blByb3Bl
cnR5U2xvdEFuZERlc2NyaXB0b3J9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1BsdWdpbn0pIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlO
YW1lLCBzbG90KTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB9XG4iKTsKQEAgLTcwMSwxMiArNzAxLDE5IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3Bl
cnR5U2xvdAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0cnVl
O1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICB9Ci0g
ICAgCisKKyAgICAjIEZJWE1FOiBUaGVyZSBpcyBvbmx5IG9uZSByZW1haW5pbmcgdXNlciBvZiB0
aGlzLCBDU1NTdHlsZURlY2xhcmF0aW9uLmlkbC4gTGV0J3MgZ2V0IHRoZW0gb250byBuYW1lZCAv
IGluZGV4ZWQgZ2V0dGVycy4KICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvcn0pIHsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmICh0aGlzT2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3RE
ZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSlcbiIpOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgfQotICAgIAorCisg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0pIHsKKyAgICAg
ICAgQWRkVG9JbmNsdWRlcygiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmgiKTsKKyAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKVxuIik7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKKyAg
ICB9CisKICAgICAjIDMuIFJldHVybiBPcmRpbmFyeUdldE93blByb3BlcnR5KE8sIFApLgogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChvYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgCkBAIC03
MTgsNyArNzI1LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogewog
ICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUpID0gQF87CiAgICAg
Ci0gICAgcmV0dXJuIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXh9OworICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3R9OwogCiAgICAgIyBTaW5r
IHRoZSBpbnQtdG8tc3RyaW5nIGNvbnZlcnNpb24gdGhhdCBoYXBwZW5zIHdoZW4gd2UgY3JlYXRl
IGEgUHJvcGVydHlOYW1lCiAgICAgIyB0byB0aGUgcG9pbnQgd2hlcmUgd2UgYWN0dWFsbHkgbmVl
ZCBpdC4KQEAgLTc3Miw3ICs3NzksNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4CiAgICAgICAgICMgMS4zLiBTZXQgaWdub3JlTmFtZWRQcm9wcyB0byB0cnVlLgogICAg
ICAgICAjIE5PVEU6IFNldHRpbmcgaWdub3JlTmFtZWRQcm9wcyBoYXMgdGhlIGVmZmVjdCBvZiBz
a2lwcGluZyBzdGVwIDIsIHNvIHdlIGNhbiBlYXJseSByZXR1cm4gaGVyZQogICAgICAgICAjICAg
ICAgIHJhdGhlciB0aGFuIGdvaW5nIHRocm91Z2ggdGhlIHBhY2VzIG9mIGhhdmluZyBhbiBhY3R1
YWwgaWdub3JlTmFtZWRQcm9wcyB1cGRhdGUuCi0gICAgICAgIGlmICgkbmFtZWRHZXR0ZXJPcGVy
YXRpb24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJv
cGVydHlTbG90QW5kRGVzY3JpcHRvcn0pIHsKKyAgICAgICAgaWYgKCRuYW1lZEdldHRlck9wZXJh
dGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3RBbmREZXNjcmlwdG9yfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntQbHVnaW59KSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJl
dHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIHN0YXRlLCBp
bmRleCwgc2xvdCk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgfVxuIik7CkBAIC04MDksMTMgKzgxNiwyMiBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsK
ICAgICB9CiAgICAgCisgICAgIyBGSVhNRTogVGhlcmUgaXMgb25seSBvbmUgcmVtYWluaW5nIHVz
ZXIgb2YgdGhpcywgQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwuIExldCdzIGdldCB0aGVtIG9udG8g
bmFtZWQgLyBpbmRleGVkIGdldHRlcnMuCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3J9KSB7CiAgICAg
ICAgICYkcHJvcGVydHlOYW1lR2VuZXJhdGlvbigpOwogICAgIAogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgaWYgKHRoaXNPYmplY3QtPmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSkgeworICAgICAgICAmJHBy
b3BlcnR5TmFtZUdlbmVyYXRpb24oKTsKKworICAgICAgICBBZGRUb0luY2x1ZGVzKCJKU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaCIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
aWYgKHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgc3Rh
dGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOworICAgIH0KKwogICAgICMgMy4gUmV0dXJuIE9y
ZGluYXJ5R2V0T3duUHJvcGVydHkoTywgUCkuCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIHN0YXRl
LCBpbmRleCwgc2xvdCk7XG4iKTsKICAgICAKQEAgLTgyNyw3ICs4NDMsNyBAQCBzdWIgR2VuZXJh
dGVHZXRPd25Qcm9wZXJ0eU5hbWVzCiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSkgPSBAXzsKICAgICAKLSAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tRW51bWVyYXRlUHJvcGVydHl9OworICAgIHJldHVybiBp
ZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eU5h
bWVzfTsKICAgICAKICAgICBteSAkbmFtZWRHZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZEdldHRl
ck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKICAgICBteSAkaW5kZXhlZEdldHRlck9wZXJhdGlvbiA9
IEdldEluZGV4ZWRHZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CkBAIC05MTMsNyArOTI5LDcg
QEAgc3ViIEdlbmVyYXRlUHV0CiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwg
JGNsYXNzTmFtZSkgPSBAXzsKICAgICAKLSAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHV0RnVuY3Rpb259OworICAgIHJldHVybiBpZiAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21QdXR9OwogICAgIAogICAgIG15ICRuYW1l
ZFNldHRlck9wZXJhdGlvbiA9IEdldE5hbWVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwog
ICAgIG15ICRpbmRleGVkU2V0dGVyT3BlcmF0aW9uID0gR2V0SW5kZXhlZFNldHRlck9wZXJhdGlv
bigkaW50ZXJmYWNlKTsKQEAgLTk2MSwxMyArOTc3LDE1IEBAIHN1YiBHZW5lcmF0ZVB1dAogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKICAgICB9CiAgICAgCi0gICAg
YXNzZXJ0KCJVc2luZyBib3RoIGEgbmFtZWQgcHJvcGVydHkgc2V0dGVyIGFuZCBbQ3VzdG9tTmFt
ZWRTZXR0ZXJdIHRvZ2V0aGVyIGlzIG5vdCBzdXBwb3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyT3Bl
cmF0aW9uICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0
dGVyfTsKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFt
ZWRTZXR0ZXJ9KSB7CisgICAgYXNzZXJ0KCJVc2luZyBib3RoIGEgbmFtZWQgcHJvcGVydHkgc2V0
dGVyIGFuZCBbUGx1Z2luXSB0b2dldGhlciBpcyBub3Qgc3VwcG9ydGVkLiIpIGlmICRuYW1lZFNl
dHRlck9wZXJhdGlvbiAmJiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59
OworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59KSB7Cisg
ICAgICAgIEFkZFRvSW5jbHVkZXMoIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIik7CisKICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4i
KTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXRE
ZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90LCBwdXRS
ZXN1bHQpKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAocGx1Z2lu
RWxlbWVudEN1c3RvbVB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
cHV0UHJvcGVydHlTbG90LCBwdXRSZXN1bHQpKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcblxuIik7CiAgICAgfQotICAgIAorCiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmpl
Y3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpO1xuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KQEAgLTk3NiwxMyArOTk0LDEzIEBA
IHN1YiBHZW5lcmF0ZVB1dEJ5SW5kZXgKIHsKICAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lKSA9IEBfOwogICAgIAotICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21QdXRGdW5jdGlvbn07Ci0gICAgCisgICAgcmV0dXJu
IGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVB1dH07CisKICAgICBt
eSAkbmFtZWRTZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZFNldHRlck9wZXJhdGlvbigkaW50ZXJm
YWNlKTsKICAgICBteSAkaW5kZXhlZFNldHRlck9wZXJhdGlvbiA9IEdldEluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgCiAgICAgbXkgJG92ZXJyaWRlQnVpbHRpbnMgPSAk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiT3Zl
cnJpZGVCdWlsdGlucyIpOwotICAgIG15ICRlbGxpZGVzQ2FsbHNUb0Jhc2UgPSAoJG5hbWVkU2V0
dGVyT3BlcmF0aW9uICYmICRvdmVycmlkZUJ1aWx0aW5zKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9OworICAgIG15ICRlbGxpZGVzQ2FsbHNU
b0Jhc2UgPSAoJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYmICRvdmVycmlkZUJ1aWx0aW5zKSAmJiAh
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufTsKICAgICAKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJib29sICR7Y2xhc3NOYW1lfTo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29s
IiAuICghJGVsbGlkZXNDYWxsc1RvQmFzZSA/ICIgc2hvdWxkVGhyb3ciIDogIiIpIC4gIilcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpAQCAtMTAyMSwxNiArMTAzOSwxNyBA
QCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgfVxuXG4iKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBhc3NlcnQoIlVzaW5n
IGJvdGggYSBuYW1lZCBwcm9wZXJ0eSBzZXR0ZXIgYW5kIFtDdXN0b21OYW1lZFNldHRlcl0gdG9n
ZXRoZXIgaXMgbm90IHN1cHBvcnRlZC4iKSBpZiAkbmFtZWRTZXR0ZXJPcGVyYXRpb24gJiYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9OwotICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYW1lZFNldHRlcn0pIHsK
KworICAgIGFzc2VydCgiVXNpbmcgYm90aCBhIG5hbWVkIHByb3BlcnR5IHNldHRlciBhbmQgW1Bs
dWdpbl0gdG9nZXRoZXIgaXMgbm90IHN1cHBvcnRlZC4iKSBpZiAkbmFtZWRTZXR0ZXJPcGVyYXRp
b24gJiYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufTsKKyAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSkgeworICAgICAgICBBZGRU
b0luY2x1ZGVzKCJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIpOwogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0
YXRlLCBpbmRleCk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QsIHNob3VsZFRocm93KTtcbiIpOworICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHV0UHJvcGVydHlTbG90IHB1dFByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBzaG91bGRUaHJvdyk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgaWYgKHBsdWdpbkVsZW1lbnRDdXN0b21QdXQodGhpc09iamVjdCwgc3RhdGUs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCwgcHV0UmVzdWx0KSlcbiIpOwog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7XG5c
biIpOwogICAgIH0KLSAgICAKKwogICAgIGlmICghJGVsbGlkZXNDYWxsc1RvQmFzZSkgewogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUluZGV4
KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTtcbiIpOwogICAgIH0KQEAg
LTEyNTIsNyArMTI3MSw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5Q29tbW9uCiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogfQogCi1zdWIgR2VuZXJhdGVEZWxldGVQ
cm9wZXJ0eURlZmluaXRpb24KK3N1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5CiB7CiAgICAgbXkg
KCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbiwgJGNvbmRp
dGlvbmFsKSA9IEBfOwogCkBAIC0xMjgzLDcgKzEzMDIsNyBAQCBzdWIgR2VuZXJhdGVEZWxldGVQ
cm9wZXJ0eURlZmluaXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogfQog
Ci1zdWIgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eUJ5SW5kZXhEZWZpbml0aW9uCitzdWIgR2VuZXJh
dGVEZWxldGVQcm9wZXJ0eUJ5SW5kZXgKIHsKICAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uLCAkY29uZGl0aW9uYWwpID0gQF87CiAKQEAgLTEz
NDcsOCArMTM2Niw4IEBAIHN1YiBHZW5lcmF0ZU5hbWVkRGVsZXRlckRlZmluaXRpb24KICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpOzsK
ICAgICB9CiAKLSAgICBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5RGVmaW5pdGlvbigkb3V0cHV0QXJy
YXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZERlbGV0ZXJPcGVyYXRpb24sICRjb25k
aXRpb25hbCk7Ci0gICAgR2VuZXJhdGVEZWxldGVQcm9wZXJ0eUJ5SW5kZXhEZWZpbml0aW9uKCRv
dXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkRGVsZXRlck9wZXJhdGlv
biwgJGNvbmRpdGlvbmFsKTsKKyAgICBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5KCRvdXRwdXRBcnJh
eSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkRGVsZXRlck9wZXJhdGlvbiwgJGNvbmRp
dGlvbmFsKTsKKyAgICBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5QnlJbmRleCgkb3V0cHV0QXJyYXks
ICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRuYW1lZERlbGV0ZXJPcGVyYXRpb24sICRjb25kaXRp
b25hbCk7CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0
aW9uYWw7CiB9CkBAIC0xODA4LDggKzE4MjcsOCBAQCBzdWIgSW5zdGFuY2VPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgcmV0dXJu
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldE93blByb3BlcnR5U2xv
dH0KLSAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleH0KICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvcn0KKyAgICAg
ICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufQogICAgICAgICB8
fCBHZXRJbmRleGVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpCiAgICAgICAgIHx8IEdldE5h
bWVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogfQpAQCAtMTgxNyw3ICsxODM2LDcgQEAg
c3ViIEluc3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90CiBzdWIgSW5zdGFuY2VPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzCiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owot
ICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21FbnVtZXJh
dGVQcm9wZXJ0eX0KKyAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q3VzdG9tR2V0T3duUHJvcGVydHlOYW1lc30KICAgICAgICAgfHwgR2V0SW5kZXhlZEdldHRlck9w
ZXJhdGlvbigkaW50ZXJmYWNlKQogICAgICAgICB8fCBHZXROYW1lZEdldHRlck9wZXJhdGlvbigk
aW50ZXJmYWNlKTsKIH0KQEAgLTE4MjUsOCArMTg0NCw4IEBAIHN1YiBJbnN0YW5jZU92ZXJyaWRl
c0dldE93blByb3BlcnR5TmFtZXMKIHN1YiBJbnN0YW5jZU92ZXJyaWRlc1B1dAogewogICAgIG15
ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9Ci0gICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0N1c3RvbVB1dEZ1bmN0aW9ufQorICAgIHJldHVybiAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21QdXR9CisgICAgICAgIHx8ICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0KICAgICAgICAgfHwgR2V0SW5kZXhlZFNldHRl
ck9wZXJhdGlvbigkaW50ZXJmYWNlKQogICAgICAgICB8fCBHZXROYW1lZFNldHRlck9wZXJhdGlv
bigkaW50ZXJmYWNlKTsKIH0KQEAgLTE4MzksNyArMTg1OCw3IEBAIHN1YiBJbnN0YW5jZU92ZXJy
aWRlc0RlZmluZU93blByb3BlcnR5CiAgICAgICAgIHx8IEdldE5hbWVkU2V0dGVyT3BlcmF0aW9u
KCRpbnRlcmZhY2UpOwogfQogCi1zdWIgSW5zdGFuY2VPdmVycmlkZXNEZWxldGUKK3N1YiBJbnN0
YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0
OwogICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21EZWxl
dGVQcm9wZXJ0eX0KQEAgLTI1NzIsMTIgKzI1OTEsMTIgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKTsK
ICAgICB9CiAKLSAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNEZWxldGUoJGludGVyZmFjZSkpIHsK
KyAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNEZWxldGVQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4i
KTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkKTtc
biIpOwogICAgIH0KIAotICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0NhbGwoJGludGVyZmFjZSkp
IHsKKyAgICBpZiAoSW5zdGFuY2VPdmVycmlkZXNHZXRDYWxsRGF0YSgkaW50ZXJmYWNlKSkgewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYpO1xuXG4iKTsKICAgICAgICAg
JGhlYWRlckluY2x1ZGVzeyI8cnVudGltZS9DYWxsRGF0YS5oPiJ9ID0gMTsKICAgICAgICAgJHN0
cnVjdHVyZUZsYWdzeyJKU0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSJ9ID0gMTsKQEAg
LTI3OTYsMTEgKzI4MTUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3Jp
cHRvcn0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIGdldE93blBy
b3BlcnR5U2xvdERlbGVnYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7XG4iKTsKICAgICB9Ci0gICAgCi0gICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVyfSkgewotICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJv
b2wmIHB1dFJlc3VsdCk7XG4iKTsKLSAgICB9Ci0gICAgCisKICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAifTtcblxuIik7CiAKICAgICBpZiAoU2hvdWxkR2VuZXJhdGVXcmFwcGVyT3duZXJDb2Rl
KCRoYXNQYXJlbnQsICRpbnRlcmZhY2UpKSB7CkBAIC00MTAwLDE3ICs0MTE1LDYgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwogICAgIH0KIAotICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0
b21OYW1lZEdldHRlck9uUHJvdG90eXBlfSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
ImJvb2wgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihjZWxsKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICh0aGlzT2JqZWN0LT5wdXREZWxlZ2F0ZShzdGF0ZSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCwgcHV0UmVzdWx0KSlcbiIpOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7Ci0gICAgfQotCiAgICAgIyAtIEluaXRpYWxpemUgc3RhdGljIENsYXNzSW5m
byBvYmplY3QKICAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNzSW5mbyAkY2xhc3NO
YW1lIiAuICI6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiLCAmQmFzZTo6
c19pbmZvLCAiKTsKIApAQCAtNDI5NywxMiArNDMwMSwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICBHZW5lcmF0ZURlZmluZU93blByb3BlcnR5KFxAaW1wbENvbnRlbnQs
ICRpbnRlcmZhY2UsICRjbGFzc05hbWUpOwogICAgIH0KIAotICAgIGlmIChJbnN0YW5jZU92ZXJy
aWRlc0RlbGV0ZSgkaW50ZXJmYWNlKSkgeworICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0
ZVByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIEdlbmVyYXRlTmFtZWREZWxldGVyRGVm
aW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKTsKICAgICB9CiAg
ICAgCi0gICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzQ2FsbCgkaW50ZXJmYWNlKSkgewotICAgICAg
ICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zKCRpbnRlcmZhY2UsICRjbGFzc05hbWUp
OworICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc0dldENhbGxEYXRhKCRpbnRlcmZhY2UpKSB7Cisg
ICAgICAgIEdlbmVyYXRlR2V0Q2FsbERhdGEoXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNs
YXNzTmFtZSk7CiAgICAgfQogICAgIAogICAgIGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsKQEAg
LTUyNTAsNzAgKzUyNTQsOTcgQEAgc3ViIEdlbmVyYXRlU2VyaWFsaXplckRlZmluaXRpb24KICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiB9CiAKK3N1YiBHZW5lcmF0ZUdldENhbGxEYXRh
Cit7CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSkgPSBAXzsK
KworICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21H
ZXRDYWxsRGF0YX07CisKKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
UGx1Z2lufSkgeworICAgICAgICBHZW5lcmF0ZVBsdWdpbkNhbGwoJG91dHB1dEFycmF5LCAkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lKTsKKyAgICB9IGVsc2UgeworICAgICAgICBHZW5lcmF0ZUxlZ2Fj
eUNhbGxlckRlZmluaXRpb25zKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSk7
CisgICAgfQorfQorCitzdWIgR2VuZXJhdGVQbHVnaW5DYWxsCit7CisgICAgbXkgKCRvdXRwdXRB
cnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSkgPSBAXzsKKworICAgIEFkZFRvSW5jbHVkZXMo
IkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIik7CisKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJDYWxsVHlwZSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERh
dGEmIGNhbGxEYXRhKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFz
c05hbWV9Kj4oY2VsbCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuXG4iKTsKKworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbUdldENhbGxE
YXRhKHRoaXNPYmplY3QsIGNhbGxEYXRhKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
In1cbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7Cit9CisKIHN1YiBHZW5lcmF0
ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUpID0gQF87CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSkg
PSBAXzsKIAotICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
dXN0b21DYWxsfTsKLSAgICAKICAgICBteSBAbGVnYWN5Q2FsbGVycyA9IEB7JGludGVyZmFjZS0+
e0xlZ2FjeUNhbGxlcnN9fTsKICAgICBpZiAoQGxlZ2FjeUNhbGxlcnMgPiAxKSB7CiAgICAgICAg
IGZvcmVhY2ggbXkgJGxlZ2FjeUNhbGxlciAoQGxlZ2FjeUNhbGxlcnMpIHsKLSAgICAgICAgICAg
IEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbigkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
bGVnYWN5Q2FsbGVyKTsKKyAgICAgICAgICAgIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlv
bigkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRsZWdhY3lDYWxsZXIpOwog
ICAgICAgICB9CiAKICAgICAgICAgbXkgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXggPSAiY2FsbCR7
Y2xhc3NOYW1lfSI7CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMICR7b3ZlcmxvYWRGdW5jdGlvblByZWZpeH0oRXhlY1N0YXRlKiBzdGF0
ZSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke292ZXJsb2FkRnVuY3Rpb25QcmVmaXh9KEV4ZWNTdGF0
ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOwor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogCiAgICAgICAgIEdlbmVyYXRlT3Zlcmxv
YWREaXNwYXRjaGVyKCRsZWdhY3lDYWxsZXJzWzBdLCAkaW50ZXJmYWNlLCAkb3ZlcmxvYWRGdW5j
dGlvblByZWZpeCwgIiIsICJzdGF0ZSIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
fVxuXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKICAgICB9IGVs
c2UgewotICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24oJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGxlZ2FjeUNhbGxlcnNbMF0pOworICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNh
bGxlckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbGVn
YWN5Q2FsbGVyc1swXSk7CiAgICAgfQogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICJDYWxsVHlw
ZSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSlc
biIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbCR7Y2xhc3NOYW1lfTtcbiIp
OwotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDtcbiIp
OwotICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkNhbGxUeXBlICR7Y2xhc3NOYW1lfTo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKVxuIik7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGwke2NsYXNzTmFtZX07XG4iKTsKKyAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0O1xuIik7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAifVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsKIH0K
IAogc3ViIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbgogewotICAgIG15ICgkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXks
ICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pID0gQF87CiAKICAgICBteSAkaXNP
dmVybG9hZGVkID0gJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30gJiYgQHskb3BlcmF0aW9uLT57b3Zl
cmxvYWRzfX0gPiAxOwogICAgIGlmICgkaXNPdmVybG9hZGVkKSB7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsJHtjbGFzc05hbWV9
JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxs
JHtjbGFzc05hbWV9JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KEV4ZWNTdGF0ZSogc3RhdGUp
XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBz
dGF0ZSlcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsJHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4i
KTsKICAgICB9CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7Ci0gICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpO1xuIik7CiAKICAgICBteSAkaW5kZW50ID0gIiAgICAiOwotICAgIEdlbmVyYXRlQXJndW1l
bnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkaW5k
ZW50KTsKKyAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJG91dHB1dEFycmF5LCAkb3Bl
cmF0aW9uLCAkaW50ZXJmYWNlLCAkaW5kZW50KTsKIAotICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oc3RhdGUtPmpzQ2Fs
bGVlKCkpO1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKGNhc3RlZFRo
aXMpO1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KHN0YXRlLT5qc0NhbGxlZSgpKTtc
biIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoY2FzdGVkVGhpcyk7XG4i
KTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTtcbiIpOwogCiAgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lID0g
JG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJGNvZGVH
ZW5lcmF0b3ItPldLX2xjZmlyc3QoJG9wZXJhdGlvbi0+bmFtZSkgfHwgImxlZ2FjeUNhbGxlck9w
ZXJhdGlvbkZyb21CaW5kaW5ncyI7Ci0gICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gR2VuZXJhdGVQ
YXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1
bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkaW5kZW50KTsKKyAgICBteSAkZnVuY3Rpb25TdHJp
bmcgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRp
bnRlcmZhY2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJGluZGVudCk7CiAKLSAgICBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKFxAaW1wbENvbnRlbnQsICRvcGVyYXRp
b24sICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJGluZGVudCk7CisgICAgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRl
cmZhY2UsICRmdW5jdGlvblN0cmluZywgJGluZGVudCk7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIAogc3Vi
IEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMKQEAgLTY4MTgsMTMgKzY4NDksMTIgQEAg
c3ViIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24KICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYW1lZEdldHRlck9u
UHJvdG90eXBlfSkgeworICAgICMgRklYTUU6IFNob3VsZCB0aGlzIG92ZXJyaWRlIHB1dEJ5SW5k
ZXggYXMgd2VsbD8KKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3Vz
dG9tUHV0T25Qcm90b3R5cGV9KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGJvb2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7
XG4iKTsKICAgICB9CiAKLSAgICAjIEN1c3RvbSBkZWZpbmVPd25Qcm9wZXJ0eSBmdW5jdGlvbgog
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21EZWZpbmVPd25Q
cm9wZXJ0eU9uUHJvdG90eXBlfSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJcbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3du
UHJvcGVydHkoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIGNvbnN0IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4i
KTsKQEAgLTcwODYsMTcgKzcxMTYsMTcgQEAgc3ViIElzQ29uc3RydWN0YWJsZQogICAgICAgICB8
fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0J1aWx0aW5Db25zdHJ1Y3Rvcn07
CiB9CiAKLXN1YiBJbnN0YW5jZU92ZXJyaWRlc0NhbGwKK3N1YiBJbnN0YW5jZU92ZXJyaWRlc0dl
dENhbGxEYXRhCiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIHJldHVybiAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21DYWxsfSB8fCAkaW50ZXJmYWNlLT57
TGVnYWN5Q2FsbGVyc30KKyAgICByZXR1cm4gJGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9IHx8
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldENhbGxEYXRhfSB8fCAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59OwogfQogCiBzdWIgSGVhZGVy
TmVlZHNQcm90b3R5cGVEZWNsYXJhdGlvbgogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
ICAgICByZXR1cm4gSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkKLSAgICAgICAgfHwgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlw
ZX0KKyAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHV0
T25Qcm90b3R5cGV9CiAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0N1c3RvbURlZmluZU93blByb3BlcnR5T25Qcm90b3R5cGV9OwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2
aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTc4LDkgKzc4LDYgQEAKICAgICAgICAgIkN1
c3RvbSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJv
cGVyYXRpb24iXQogICAgICAgICB9LAotICAgICAgICAiQ3VzdG9tQ2FsbCI6IHsKLSAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCiAgICAgICAg
ICJDdXN0b21Db25zdHJ1Y3RvciI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdCiAgICAgICAgIH0sCkBAIC05MywxMyArOTAsMTMgQEAKICAgICAgICAgIkN1
c3RvbURlbGV0ZVByb3BlcnR5IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0KICAgICAgICAgfSwKLSAgICAgICAgIkN1c3RvbUVudW1lcmF0ZVByb3BlcnR5
IjogeworICAgICAgICAiQ3VzdG9tR2V0Q2FsbERhdGEiOiB7CiAgICAgICAgICAgICAiY29udGV4
dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiQ3VzdG9tR2V0
T3duUHJvcGVydHlTbG90IjogeworICAgICAgICAiQ3VzdG9tR2V0T3duUHJvcGVydHlOYW1lcyI6
IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAg
IH0sCi0gICAgICAgICJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4IjogeworICAgICAg
ICAiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKICAgICAgICAgIkN1c3RvbUdldE93blBy
b3BlcnR5U2xvdEFuZERlc2NyaXB0b3IiOiB7CkBAIC0xMTcsMTIgKzExNCw2IEBACiAgICAgICAg
ICJDdXN0b21Jc1JlYWNoYWJsZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJDdXN0b21OYW1lZEdldHRlck9uUHJv
dG90eXBlIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0K
LSAgICAgICAgfSwKLSAgICAgICAgIkN1c3RvbU5hbWVkU2V0dGVyIjogewotICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAgICAgICAgfSwKICAgICAgICAgIkN1
c3RvbVByZXZlbnRFeHRlbnNpb25zIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6
IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKQEAgLTEzMiw3ICsxMjMsMTAgQEAKICAgICAgICAg
IkN1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0Fs
bG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJDdXN0b21QdXRGdW5j
dGlvbiI6IHsKKyAgICAgICAgIkN1c3RvbVB1dCI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0Fs
bG93ZWQiOiBbImludGVyZmFjZSJdCisgICAgICAgIH0sCisgICAgICAgICJDdXN0b21QdXRPblBy
b3RvdHlwZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJd
CiAgICAgICAgIH0sCiAgICAgICAgICJDdXN0b21TZXR0ZXIiOiB7CkBAIC0zNDEsNiArMzM1LDEw
IEBACiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVyYXRpb24iXSwKICAgICAg
ICAgICAgICJub3RlcyIgOiAiT25seSB1c2VkIGJ5IFdlYktpdFRlc3RSdW5uZXIgYW5kIER1bXBS
ZW5kZXJUcmVlIgogICAgICAgICB9LAorICAgICAgICAiUGx1Z2luIjogeworICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAibm90ZXMiIDog
IlNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZWxlbWVudHMgdGhhdCBmb3J3YXJkIHRvIE5ldHNjYXBl
IHBsdWctaW5zIgorICAgICAgICB9LAogICAgICAgICAiUHJpbWFyeUdsb2JhbCI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInZh
bHVlcyI6IFsiKiJdLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RJbnRlcmZhY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAvLyBjaGFuZ2VzIGluIGl0cyBvdXRwdXQuCiBb
CiAgICAgQWN0aXZlRE9NT2JqZWN0LAotICAgIEN1c3RvbU5hbWVkU2V0dGVyLAorICAgIEN1c3Rv
bVB1dCwKICAgICBDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlvbjIsCiAgICAgQ29uc3Ry
dWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIENvbnN0cnVjdG9yKERP
TVN0cmluZyBzdHIxLCBvcHRpb25hbCBET01TdHJpbmcgc3RyMiA9ICJkZWZhdWx0U3RyaW5nIiks
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBsdWdpbklu
dGVyZmFjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RQbHVnaW5JbnRlcmZhY2UuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGx1Z2luSW50ZXJmYWNlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIFBsdWdpbgor
XSBpbnRlcmZhY2UgVGVzdFBsdWdpbkludGVyZmFjZSB7Cit9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTMs
MzIgKzQxMyw2IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlNDZWwKICAg
ICB0aGlzT2JqZWN0LT5KU1Rlc3RJbnRlcmZhY2U6On5KU1Rlc3RJbnRlcmZhY2UoKTsKIH0KIAot
Ym9vbCBKU1Rlc3RJbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgcHV0UHJvcGVydHlTbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0SW50ZXJmYWNlKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwotCi0gICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAo
dGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFBy
b3BlcnR5U2xvdCwgcHV0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKLQotICAg
IHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBwdXRQcm9wZXJ0eVNsb3QpOwotfQotCi1ib29sIEpTVGVzdEludGVyZmFjZTo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1Zh
bHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCwgc2hvdWxkVGhyb3cpOwotICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7Ci0gICAg
aWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90LCBwdXRSZXN1bHQpKQotICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwotCi0gICAgcmV0dXJu
IEpTT2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRo
cm93KTsKLX0KLQogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlKiBJRExBdHRyaWJ1
dGU8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVy
ZmFjZSo+KHN0YXRlLnZtKCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmgJKHJldmlzaW9uIDIxOTIzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NzksNyArNzksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SW50ZXJmYWNlKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEludGVyZmFjZT4mJik7CiAKICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLSAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9w
ZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpOwogfTsKIAogY2xhc3MgSlNUZXN0SW50ZXJmYWNl
T3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFBsdWdpbkludGVyZmFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyNjggQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdFBsdWdpbkludGVyZmFjZS5oIgorCisjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVk
ZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0dl
dFB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RQbHVnaW5JbnRlcmZh
Y2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKKworY2xhc3MgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25G
aW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3RQbHVnaW5JbnRlcmZh
Y2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0UGx1Z2luSW50ZXJmYWNl
UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xB
UkVfSU5GTzsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5h
bE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK3VzaW5nIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0
cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0UGx1Z2luSW50
ZXJmYWNlPjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RQbHVnaW5JbnRlcmZh
Y2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNO
b250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdFBsdWdpbkludGVy
ZmFjZSIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9
CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UGx1Z2luSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZh
Y2VDb25zdHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0UGx1Z2luSW50ZXJmYWNl
Q29uc3RydWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworfQorCitjb25zdCBDbGFz
c0luZm8gSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpzX2luZm8gPSB7ICJUZXN0UGx1Z2luSW50ZXJm
YWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpIH07CisKK0pTVGVzdFBsdWdpbkludGVyZmFjZTo6SlNU
ZXN0UGx1Z2luSW50ZXJmYWNlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFBsdWdpbkludGVyZmFjZT4mJiBpbXBsKQorICAgIDog
SlNET01XcmFwcGVyPFRlc3RQbHVnaW5JbnRlcmZhY2U+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2U6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9i
amVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6
OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RQbHVnaW5JbnRlcmZhY2U+KHZtLCBnbG9i
YWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
K30KKwordm9pZCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0
UGx1Z2luSW50ZXJmYWNlOjp+SlNUZXN0UGx1Z2luSW50ZXJmYWNlKCk7Cit9CisKK2Jvb2wgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50
ZXJmYWNlKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgaWYgKHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwg
c3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0UGx1Z2luSW50ZXJm
YWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2UqPihvYmplY3QpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKKyAgICBp
ZiAocGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBzdGF0
ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgc3RhdGUsIGluZGV4
LCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQoreworICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgYm9vbCBw
dXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAocGx1Z2luRWxlbWVudEN1c3RvbVB1dCh0aGlzT2Jq
ZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90LCBwdXRSZXN1
bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworCisgICAgcmV0dXJuIEpTT2JqZWN0Ojpw
dXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xv
dCk7Cit9CisKK2Jvb2wgSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2UqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20oc3RhdGUsIGluZGV4KTsKKyAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIHNob3VsZFRocm93KTsKKyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOwor
ICAgIGlmIChwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVy
biBwdXRSZXN1bHQ7CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgc3Rh
dGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworfQorCitDYWxsVHlwZSBKU1Rlc3RQbHVn
aW5JbnRlcmZhY2U6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRh
KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNl
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworCisgICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRDYWxsRGF0YSh0aGlzT2Jq
ZWN0LCBjYWxsRGF0YSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdFBsdWdpbkludGVyZmFj
ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jv
b2wgc2V0SlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVz
KCkuY29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKworYm9v
bCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlz
aXRvcik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdFBsdWdpbkludGVyZmFj
ZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3RQbHVnaW5JbnRlcmZhY2UgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2UqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAg
YXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Cisg
ICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RQbHVnaW5JbnRlcmZhY2UtPndyYXBwZWQo
KSwganNUZXN0UGx1Z2luSW50ZXJmYWNlKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykK
K2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RQ
bHVnaW5JbnRlcmZhY2VAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIg
eyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE5VGVzdFBsdWdpbkludGVyZmFjZUVbXTsgfQor
I2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFBsdWdpbklu
dGVyZmFjZT4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAg
IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihp
bXBsLnB0cigpKSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxl
UG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RQ
bHVnaW5JbnRlcmZhY2VAV2ViQ29yZUBANkJAIikpOworI2Vsc2UKKyAgICB2b2lkKiBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTE5VGVzdFBsdWdpbkludGVyZmFjZUVbMl07
CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdFBsdWdpbkludGVyZmFjZSBkb2Vz
IG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9u
CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RQbHVnaW5JbnRlcmZh
Y2U+Ojp2YWx1ZSwgIlRlc3RQbHVnaW5JbnRlcmZhY2UgaXMgbm90IHBvbHltb3JwaGljIik7CisK
KyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBh
ZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0UGx1Z2luSW50ZXJmYWNlIGhhcyBzdWJjbGFz
c2VzLiBJZiBUZXN0UGx1Z2luSW50ZXJmYWNlIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3Nl
ZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0UGx1Z2luSW50ZXJm
YWNlIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5n
IHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwg
ZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhw
ZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRl
c3RQbHVnaW5JbnRlcmZhY2U+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdFBsdWdpbkludGVyZmFjZSYgaW1wbCkKK3sKKyAgICByZXR1cm4g
d3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdFBsdWdpbkludGVyZmFj
ZSogSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdFBsdWdpbkludGVyZmFjZSo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3Jh
cHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFBsdWdpbkludGVyZmFjZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDk0IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdFBsdWdp
bkludGVyZmFjZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQ2FsbERhdGEuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2UgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RQbHVnaW5JbnRlcmZh
Y2U+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RQbHVnaW5J
bnRlcmZhY2U+OworICAgIHN0YXRpYyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UqIGNyZWF0ZShKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWY8VGVzdFBsdWdpbkludGVyZmFjZT4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0UGx1
Z2luSW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dFBsdWdpbkludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RQbHVnaW5J
bnRlcmZhY2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1
cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5
cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMg
VGVzdFBsdWdpbkludGVyZmFjZSogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwor
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6
OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
KyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAg
c3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAg
IHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENhbGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxs
RGF0YSYpOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlR5
cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworcHJvdGVj
dGVkOgorICAgIEpTVGVzdFBsdWdpbkludGVyZmFjZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0JiwgUmVmPFRlc3RQbHVnaW5JbnRlcmZhY2U+JiYpOworCisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VP
d25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVh
bCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9Owor
CitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29y
bGQmLCBUZXN0UGx1Z2luSW50ZXJmYWNlKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SlNUZXN0UGx1Z2luSW50ZXJmYWNlT3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0
KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3RQbHVnaW5JbnRlcmZhY2UqIHdy
YXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdFBs
dWdpbkludGVyZmFjZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFBsdWdpbkludGVy
ZmFjZSogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgKmlt
cGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0UGx1Z2luSW50ZXJmYWNl
PiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0UGx1
Z2luSW50ZXJmYWNlPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKHN0
YXRlLCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgp
OyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0
UGx1Z2luSW50ZXJmYWNlPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0UGx1Z2luSW50
ZXJmYWNlKjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9uIDIxOTIzMikKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMTksOSArMTksOSBAQAogICovCiAKIFsKLSAgICBDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSwK
KyAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eU5hbWVzLAogICAgIEN1c3RvbUdldE93blByb3BlcnR5
U2xvdEFuZERlc2NyaXB0b3IsCi0gICAgQ3VzdG9tTmFtZWRTZXR0ZXIsCisgICAgQ3VzdG9tUHV0
LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGUsCiAgICAgSlNDdXN0b21IZWFkZXIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cHBsZXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cHBsZXRFbGVtZW50LmlkbAkocmV2aXNpb24gMjE5MjMyKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXBwbGV0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDkgKzE5LDcgQEAK
ICAqLwogCiBbCi0gICAgQ3VzdG9tQ2FsbCwKLSAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RB
bmREZXNjcmlwdG9yLAotICAgIEN1c3RvbU5hbWVkU2V0dGVyLAorICAgIFBsdWdpbgogXSBpbnRl
cmZhY2UgSFRNTEFwcGxldEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3RdIGF0
dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJp
bmcgYWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsCShy
ZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw5ICsxOSw3IEBACiAgKi8KIAogWwotICAgIEN1c3Rv
bUNhbGwsCi0gICAgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciwKLSAgICBD
dXN0b21OYW1lZFNldHRlciwKKyAgICBQbHVnaW4KIF0gaW50ZXJmYWNlIEhUTUxFbWJlZEVsZW1l
bnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxp
Z247CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgaGVpZ2h0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5pZGwJKHJldmlzaW9uIDIxOTIzMikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0xOSw5ICsxOSw3IEBACiAgKi8KIAogWwotICAgIEN1c3RvbUNhbGwsCi0gICAgQ3Vz
dG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvciwKLSAgICBDdXN0b21OYW1lZFNldHRl
cgorICAgIFBsdWdpbgogXSBpbnRlcmZhY2UgSFRNTE9iamVjdEVsZW1lbnQgOiBIVE1MRWxlbWVu
dCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3JtRWxlbWVudCBmb3JtOwogICAgIFtS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwxMiBAQCB0eXBlZGVmIFVTVlN0
cmluZyBDU1NPTVN0cmluZzsKICAgICBDaGVja1NlY3VyaXR5LAogICAgIEN1c3RvbURlZmluZU93
blByb3BlcnR5LAogICAgIEN1c3RvbURlbGV0ZVByb3BlcnR5LAotICAgIEN1c3RvbUVudW1lcmF0
ZVByb3BlcnR5LAorICAgIEN1c3RvbUdldE93blByb3BlcnR5TmFtZXMsCiAgICAgQ3VzdG9tR2V0
T3duUHJvcGVydHlTbG90LAotICAgIEN1c3RvbUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsCiAg
ICAgQ3VzdG9tR2V0UHJvdG90eXBlLAogICAgIEN1c3RvbVByZXZlbnRFeHRlbnNpb25zLAogICAg
IEN1c3RvbVByb3h5VG9KU09iamVjdCwKLSAgICBDdXN0b21QdXRGdW5jdGlvbiwKKyAgICBDdXN0
b21QdXQsCiAgICAgQ3VzdG9tVG9TdHJpbmdOYW1lLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVf
RVhQT1JULAogICAgIEltcGxpY2l0VGhpcywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRs
CShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDE2IEBACiAgICAgQ3VzdG9tRGVmaW5lT3duUHJv
cGVydHksCiAgICAgQ3VzdG9tRGVmaW5lT3duUHJvcGVydHlPblByb3RvdHlwZSwKICAgICBDdXN0
b21EZWxldGVQcm9wZXJ0eSwKLSAgICBDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSwKLSAgICBDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yLAorICAgIEN1c3RvbUdldE93blByb3Bl
cnR5TmFtZXMsCisgICAgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90LAogICAgIEN1c3RvbUdldFBy
b3RvdHlwZSwKLSAgICBDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlLAotICAgIEN1c3RvbU5h
bWVkU2V0dGVyLAogICAgIEN1c3RvbVByZXZlbnRFeHRlbnNpb25zLAorICAgIEN1c3RvbVB1dCwK
KyAgICBDdXN0b21QdXRPblByb3RvdHlwZSwKICAgICBDdXN0b21Ub1N0cmluZ05hbWUsCiAgICAg
R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRnJhbWUsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVF
eG90aWNPYmplY3QsCi0gICAgVW5mb3JnZWFibGUsCisgICAgVW5mb3JnZWFibGUKIF0gaW50ZXJm
YWNlIExvY2F0aW9uIHsKICAgICBbU2V0dGVyQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2lu
ZG93LCBTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbiwgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJd
IHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuaWRsCShyZXZpc2lvbiAyMTkyMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8K
IAogWwotICAgIEN1c3RvbUVudW1lcmF0ZVByb3BlcnR5LAorICAgIEN1c3RvbUdldE93blByb3Bl
cnR5TmFtZXMsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRnJhbWUsCiAgICAgU2tpcFZU
YWJsZVZhbGlkYXRpb24sCiBdIGludGVyZmFjZSBTdG9yYWdlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314869</attachid>
            <date>2017-07-07 13:21:07 -0700</date>
            <delta_ts>2017-07-10 11:27:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174238-20170707132239.patch</filename>
            <type>text/plain</type>
            <size>91554</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNCBAQAorMjAxNy0wNy0wNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIE1vdmUgcGx1Z2luIG9i
amVjdCBjdXN0b21pemF0aW9uIGludG8gdGhlIGdlbmVyYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MjM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBBZGRlZCBbUGx1Z2luXSBleHRlbmRlZCBh
dHRyaWJ1dGUgdG8gZm9yd2FyZCB0aGUgbmVjZXNzYXJ5IGhvb2tzCisgICAgICAgICAgZm9yIGdl
dC9zZXQvZGVsZXRlIHRvIHRoZSBwbHVnaW4gY29kZS4KKyAgICAgICAgLSBSZW1vdmVkIFtDdXN0
b21OYW1lZFNldHRlcl0gYW5kIHJlcGxhY2VkIGl0J3MgcmVtYWluaW5nIHVzZXMKKyAgICAgICAg
ICBbQ3VzdG9tUHV0XSAoZm9ybWFsbHkgY2FsbGVkIFtDdXN0b21QdXRGdW5jdGlvbl0pLgorICAg
ICAgICAtIFJlbmFtZWQgW0N1c3RvbU5hbWVkR2V0dGVyT25Qcm90b3R5cGVdIHRvIFtDdXN0b21Q
dXRPblByb3RvdHlwZV0KKyAgICAgICAgICBiZWNhdXNlIHRoYXQgaXMgYWN0dWFsbHkgd2hhdCBp
dCBkb2VzLgorICAgICAgICAtIFJlbW92ZWQgW0N1c3RvbUdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhdIGFuZCBtYWRlIAorICAgICAgICAgIFtDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RdIGltcGx5
IGl0LCBhcyB0aGUgb3RoZXIgY3VzdG9tIGhvb2tzCisgICAgICAgICAgZG8uCisgICAgICAgIC0g
UmVuYW1lZCBbQ3VzdG9tRW51bWVyYXRlUHJvcGVydHldIHRvIFtDdXN0b21HZXRPd25Qcm9wZXJ0
eU5hbWVzXQorICAgICAgICAgIHRvIGNvbmZvcm0gd2l0aCBvdGhlciBhdHRyaWJ1dGUgbmFtZXMu
CisgICAgICAgIC0gUmVuYW1lZCBbQ3VzdG9tQ2FsbF0gdG8gW0N1c3RvbUdldENhbGxEYXRhXSB0
byBjb25mb3JtIHdpdGggb3RoZXIgCisgICAgICAgICAgYXR0cmlidXRlIG5hbWVzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3Vz
dG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgUmVtb3ZlIGN1c3RvbSBiaW5kaW5ncy4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwdXRDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURl
Y2xhcmF0aW9uOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpwdXRCeUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
cHV0RGVsZWdhdGUpOiBEZWxldGVkLgorICAgICAgICBVc2UgW0N1c3RvbVB1dF0gcmF0aGVyIHRo
YW4gW0N1c3RvbU5hbWVkU2V0dGVyXSB0byBhbGxvdyB1cworICAgICAgICB0byBnZXQgcmlkIG9m
IFtDdXN0b21OYW1lZFNldHRlcl0uIFJldXNlIHB1dCBkZWxlZ2F0ZSBhcworICAgICAgICBjb21t
b24gY29kZSB0byBzaGFyZSBiZXR3ZWVuIHB1dCBhbmQgcHV0QnlJbmRleC4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246Omdl
dE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KToKKyAgICAgICAgUmVwbGFjZSBbQ3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90QW5kRGVzY3JpcHRvcl0gd2l0aCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQorICAg
ICAgICB3aGljaCBpcyBtb3JlIGNsZWFyIGFuZCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdmFyaWFu
dHMgb2YgdGhpcyBob29rIG92ZXJyaWRlCisgICAgICAgIHdlIG5lZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OnB1dENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpwdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cHV0QnlJbmRleCk6CisgICAgICAgIFVzZSBb
Q3VzdG9tUHV0XSByYXRoZXIgdGhhbiBbQ3VzdG9tTmFtZWRTZXR0ZXJdIHRvIGFsbG93IHVzCisg
ICAgICAgIHRvIGdldCByaWQgb2YgW0N1c3RvbU5hbWVkU2V0dGVyXS4gUmV1c2UgcHV0IGRlbGVn
YXRlIGFzCisgICAgICAgIGNvbW1vbiBjb2RlIHRvIHNoYXJlIGJldHdlZW4gcHV0IGFuZCBwdXRC
eUluZGV4LgorCisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90eXBlOjpwdXQpOgor
ICAgICAgICBbQ3VzdG9tUHV0T25Qcm90b3R5cGVdICh3aGljaCB3ZWlyZGx5IHVzZWQgaW5jb3Jy
ZWN0bHkgYmUgY2FsbGVkIAorICAgICAgICBbQ3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZV0p
IG5vdyB3b3JrcyBsaWtlIFtDdXN0b21QdXRdIG1lYW5pbmcKKyAgICAgICAgeW91IG5lZWQgdG8g
Y2FsbCBCYXNlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRDdXN0b21QdXQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6cGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdCk6IERlbGV0ZWQuCisgICAg
ICAgIFJlbW92ZSB0ZW1wbGF0aXplZCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90LCB3aGljaCB3YXMgCisgICAgICAgIGNvbXBsZXRlbHkgdW5uZWNlc3NhcnkgYW5kIG1lcmdl
IGl0cyBmdW5jdGlvbmFsaXR5IGludG8gdGhlIG91dCBvZgorICAgICAgICBsaW5lIG92ZXJsb2Fk
LiBSZW1vdmUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyIGZyb20gdGhlIGhlYWRlciwKKyAg
ICAgICAgc2luY2UgaXQgaXMgb25seSB1c2VkIGluIGltcGxlbWVudGF0aW9uLCBhbmQgdW5pZnkg
dGhlIG5hbWluZyBhbmQKKyAgICAgICAgYXJndW1lbnQgcG9zaXRpb24gKEpTSFRNTEVsZW1lbnQq
IGNvbWVzIGZpcnN0KSBvZiB0aGUgaG9va3MuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW5kZXhlZEdldHRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZU5hbWVkR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6
CisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoR2VuZXJh
dGVQdXQpOgorICAgICAgICAoR2VuZXJhdGVQdXRCeUluZGV4KToKKyAgICAgICAgKEdlbmVyYXRl
RGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoR2VuZXJhdGVEZWxldGVQcm9wZXJ0eUJ5SW5kZXgp
OgorICAgICAgICAoR2VuZXJhdGVOYW1lZERlbGV0ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKElu
c3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEluc3RhbmNlT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChJbnN0YW5jZU92ZXJyaWRlc1B1
dCk6CisgICAgICAgIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAoR2VuZXJhdGVHZXRDYWxsRGF0YSk6CisgICAgICAgIChHZW5lcmF0ZVBsdWdpbkNhbGwp
OgorICAgICAgICAoR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucyk6CisgICAgICAgIChH
ZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQcm90b3R5
cGVEZWNsYXJhdGlvbik6CisgICAgICAgIChJbnN0YW5jZU92ZXJyaWRlc0dldENhbGxEYXRhKToK
KyAgICAgICAgKEhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24pOgorICAgICAgICAtIEFk
ZCBzdXBwb3J0IGZvciBbUGx1Z2luXQorICAgICAgICAtIFJlbW92ZSBzdXBwb3J0IGZvciBbQ3Vz
dG9tTmFtZWRTZXR0ZXJdCisgICAgICAgIC0gUmVwbGFjZSBbQ3VzdG9tR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleF0gd2l0aCBbQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90XQorICAgICAgICAtIFJl
cGxhY2UgW0N1c3RvbUVudW1lcmF0ZVByb3BlcnR5XSB3aXRoIFtDdXN0b21HZXRPd25Qcm9wZXJ0
eU5hbWVzXQorICAgICAgICAtIFJlcGxhY2UgW0N1c3RvbVB1dEZ1bmN0aW9uXSB3aXRoIFtDdXN0
b21QdXRdLgorICAgICAgICAtIE1ha2Ugc3Vicm91dGluZSBuYW1lcyBtb3JlIGNvbnNpc3RlbnQg
KHJlbW92ZSBhIGZldyBEZWZpbml0aW9uIHN1ZmZpeGVzKQorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IC8gcmVt
b3ZlZCBhdHRyaWJ1dGVzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RQbHVnaW5JbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdFBsdWdpbkludGVyZmFjZS5pZGw6IEFkZGVkLgorICAgICAgICBVcGRh
dGUgLyBhZGQgdGVzdHMuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGw6
CisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlv
bi5pZGw6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmlkbDoKKyAgICAgICAgVXBkYXRlIGZv
ciBuZXcgLyByZW5hbWVkIGF0dHJpYnV0ZXMuCisKIDIwMTctMDctMDcgIE1hdHQgTGV3aXMgIDxq
bGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5
MjU3LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIxOTI2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5LDEzICsxMTg5
LDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCiAgICAgYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0V4Y2VwdGlvbkJhc2UuY3BwCi0gICAgYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0
RWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNI
VE1MRWxlbWVudEN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRD
dXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwCiAgICAgYmlu
ZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSURCQ3Vyc29y
Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjE5MjY0KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NjI4LDcg
KzU2MjgsNiBAQAogCQlCQzJFRDZCQzBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkVENkJC
MEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovOyB9OwogCQlCQzMwNUM3OTBD
MDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAg
LyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi87IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENE
MjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2Jq
ZWN0RWxlbWVudC5oICovOyB9OwotCQlCQzMwNUNBNDBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1M
T2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzMwNUNBMzBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxl
bWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUJDMzNGQjFCMEYzMEVFODUwMDJDREQ3QyAvKiBSZW5k
ZXJMaW5lQm94TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzMzRkIxQTBGMzBFRTg1MDAyQ0REN0MgLyogUmVuZGVyTGluZUJveExpc3QuY3Bw
ICovOyB9OwogCQlCQzM0OEJCRTBEQjdGNTMxMDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzM0OEJCRDBEQjdGNTMxMDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgKi87
IH07CiAJCUJDMzQ4QkQzMERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQxMERC
N0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmNwcCAqLzsgfTsKQEAgLTU2NjcsNyAr
NTY2Niw2IEBACiAJCUJDNDkxOEM5MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxJRnJhbWVFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ5
MThDMzBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MSUZyYW1lRWxlbWVudC5oICovOyB9OwogCQlC
QzQ5MUI3ODBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1MTWFycXVlZUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0OTFCNzYwQzAyM0VG
RDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQkM0OTFCNzkw
QzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ5MUI3NzBDMDIzRUZEMDA5RDYzMTYg
LyogSlNIVE1MTWFycXVlZUVsZW1lbnQuaCAqLzsgfTsKLQkJQkM0RURFRjQwQzA4RjNGQjAwN0VE
RDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5IC8qIEpT
SFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQzUxMTU2RTEyQjE3NDlDMDBD
OTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzUxMTU2RDEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5p
bWF0b3JNYWMubW0gKi87IH07CiAJCUJDNTE1ODBCMEMwM0Q0MDQwMDhCQjBFRSAvKiBKU0hUTUxE
b2N1bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzUxNTgwQTBDMDNENDA0MDA4QkIwRUUgLyogSlNIVE1MRG9jdW1lbnRDdXN0b20u
Y3BwICovOyB9OwogCQlCQzUzQzVGNTBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTNDNUY0MERBNTZC
OTIwMDIxRUI1RCAvKiBHcmFkaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC01NzQ3LDcgKzU3NDUsNiBAQAogCQlCQzY0QjREQzBDQjQyOThB
MDA1RjJCNjIgLyogQ1NTRm9udFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0QjRENDBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udFNl
bGVjdG9yLmggKi87IH07CiAJCUJDNjkzMjczMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRv
d0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi87IH07CiAJ
CUJDNjkzMjc0MEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjkzMjcyMEQ3RTI5MzkwMEFF
NDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlCQzZENDRCRTBDMDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1i
ZWRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNkQ0NEJEMEMwN0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRD
dXN0b20uY3BwICovOyB9OwogCQlCQzZENDRFQzBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1i
ZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDNkQ0NEVBMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuY3BwICov
OyB9OwogCQlCQzZENDRFRDBDMDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENDRFQjBD
MDdGMkVEMDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmggKi87IH07CiAJCUJDNkQ2RTI2
MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xs
Vmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xNDEyNiw3ICsxNDEyMyw2IEBACiAJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0
dHJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdHRy
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzcwQzA3NkJC
MzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT2JqZWN0
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzMwNUNBMzBDMDc4MUJC
MDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzM0ZCMUEwRjMwRUU4NTAwMkNERDdDIC8qIFJl
bmRlckxpbmVCb3hMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlckxpbmVCb3hMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMz
NDhCQTcwREI3RjFCODAwNEFCQUI5IC8qIFhNTEh0dHBSZXF1ZXN0LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMzQ4QkJEMERCN0Y1MzEwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MSHR0cFJlcXVlc3RD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNjUsNyArMTQxNjEs
NiBAQAogCQlCQzQ5MUI0RTBDMDIzRTJEMDA5RDYzMTYgLyogSFRNTE1hcnF1ZWVFbGVtZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MTWFycXVlZUVsZW1lbnQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ5MUI3NjBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1M
TWFycXVlZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM0OTFCNzcwQzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxNYXJxdWVlRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzRFREVGMzBDMDhGM0ZCMDA3RURENDkgLyogSlNI
VE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM1MTE1NkQxMkIxNzQ5QzAwQzk2NzU0IC8qIFNjcm9sbEFuaW1hdG9yTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQW5pbWF0
b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTE1ODBBMEMwM0Q0MDQw
MDhCQjBFRSAvKiBKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzUzQzVGNDBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhZGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjUxLDcgKzE0MjQ2LDYgQEAKIAkJQkM2NEI0RDQwQ0I0Mjk4
QTAwNUYyQjYyIC8qIENTU0ZvbnRTZWxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDU1NGb250U2VsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd0Jhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY5MzI3MjBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01X
aW5kb3dCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzZENDRCRDBDMDdFRkI2MDA3
MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNkQ0NEVBMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxF
bWJlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SFRNTEVtYmVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNkQ0
NEVCMEMwN0YyRUQwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEVtYmVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsVmlldy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM3MDUsMTEgKzIzNjk5LDggQEAKIAkJCQlCQ0Q5QzI1
RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZC
QkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oICovLAogCQkJCUJDRTdC
MTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLAotCQkJCUJDNEVE
RUYzMEMwOEYzRkIwMDdFREQ0OSAvKiBKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCAqLywK
IAkJCQk5MzkyMjYyQzEwMzIxMDdCMDA2RTdENUQgLyogSlNIVE1MQ2FudmFzRWxlbWVudEN1c3Rv
bS5jcHAgKi8sCiAJCQkJQkM1ODIzRjQwQzBBOThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRD
dXN0b20uY3BwICovLAotCQkJCUJDNkQ0NEJEMEMwN0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJl
ZEVsZW1lbnRDdXN0b20uY3BwICovLAotCQkJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBK
U0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlENkY3OTYwQzE2NkZGRUNFMDA3
NkREMTggLyogSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk3QTc0RUNC
QzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICov
LAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAq
LywKQEAgLTMyMDc2LDcgKzMyMDY3LDYgQEAKIAkJCQlCQzk3RTQxMjEwOTE1NEZBMDAxMEQzNjEg
LyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBMkRFRjBB
MUI4NTJBMDBDODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTRBMkRGMTBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1MQXBwbGV0RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCQzRFREVGNDBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBw
bGV0RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUExRTBBMUNEQUI0
MDBCNDJCMjUgLyogSlNIVE1MQXJlYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M5
REJGRUQxQTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUU0NDYxNDM3MENENjg5QzQwMEZBREE3NSAvKiBKU0hUTUxBdWRpb0Vs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjEwMCw3ICszMjA5MCw2IEBACiAJCQkJQkM1
ODIzRjUwQzBBOThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTM4RTY1RjcwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFw
cGVyRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzZENDRFQzBDMDdGMkVEMDA3MkQy
QzkgLyogSlNIVE1MRW1iZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDNkQ0NEJF
MEMwN0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFMkFBMjYwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEyODBBMUNEQUI0MDBCNDJCMjUgLyog
SlNIVE1MRm9udEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJGOUE4ODAxNjQ4REQy
RjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMjEyNyw3ICszMjExNiw2IEBACiAJCQkJQTdCQkUyNjYxMUFGQjNGMjAwMDVFQTAz
IC8qIEpTSFRNTE1ldGVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIyOTBB
MUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTW9kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzMwNUM3OTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlCQzMwNUNBNDBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0
RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg1QjFFQTBBMUIyNDA1MDBE
OEM4N0MgLyogSlNIVE1MT0xpc3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU3
RTlDMEExQTgzRTMwMDdGQjhDNSAvKiBKU0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgwRTdFOUEwQTFBODNFMzAwN0ZCOEM1IC8qIEpTSFRNTE9wdGlvbkVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIxOTI2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDEzICs2NCwxMCBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5jcHAiCiAj
aW5jbHVkZSAiSlNFdmVudFRhcmdldEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFeGNlcHRpb25C
YXNlLmNwcCIKLSNpbmNsdWRlICJKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNIVE1MRW1iZWRF
bGVtZW50Q3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTSGlzdG9yeUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGFDdXN0b20uY3BwIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMTkyNjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTMsNiArMzEzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIHN0eWxlUHJv
cGVydHlHZXR0ZQogICAgIHJldHVybiBzdHlsZVByb3BlcnR5R2V0dGVyKHN0YXRlLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCk7CiB9CiAKKy8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBjb252ZXJ0ZWQgdG8gYmUgYSBuYW1lZCBnZXR0ZXIuCiBib29sIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGF1dG8g
cHJvcGVydHlJbmZvID0gcGFyc2VKYXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSk7CkBAIC0zMjIsMTQgKzMyMywxNSBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
T3duUHJvcGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNDU1NTdHlsZURlY2xhcmF0
aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCisv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgY29udmVydGVkIHRvIGJlIGEgbmFtZWQgc2V0dGVyLgor
c3RhdGljIGJvb2wgcHV0Q29tbW9uKEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
RXhlY1N0YXRlJiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCYgcHV0UmVzdWx0KQogewogICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrOwogICAgIGF1dG8gcHJvcGVydHlJbmZvID0gcGFyc2VK
YXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0
eUluZm8ucHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBwcm9w
ZXJ0eVZhbHVlID0gY29udmVydDxJRExUcmVhdE51bGxBc0VtcHR5QWRhcHRvcjxJRExET01TdHJp
bmc+Pigqc3RhdGUsIHZhbHVlKTsKKyAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBjb252ZXJ0PElE
TFRyZWF0TnVsbEFzRW1wdHlBZGFwdG9yPElETERPTVN0cmluZz4+KHN0YXRlLCB2YWx1ZSk7CiAg
ICAgaWYgKHByb3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4KQogICAgICAgICBwcm9wZXJ0
eVZhbHVlLmFwcGVuZCgicHgiKTsKIApAQCAtMzQyLDE3ICszNDQsNDEgQEAgYm9vbCBKU0NTU1N0
eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKAogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0
byBzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0ID0gd3JhcHBlZCgpLnNldFByb3BlcnR5SW50ZXJu
YWwocHJvcGVydHlJbmZvLnByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUsIGltcG9ydGFudCk7Cisg
ICAgYXV0byBzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCku
c2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCwgcHJvcGVydHlWYWx1
ZSwgaW1wb3J0YW50KTsKICAgICBpZiAoc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5oYXNFeGNl
cHRpb24oKSkgewotICAgICAgICBhdXRvJiB2bSA9IHN0YXRlLT52bSgpOworICAgICAgICBhdXRv
JiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgc2NvcGUsIHNldFBy
b3BlcnR5SW50ZXJuYWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcHJvcGFn
YXRlRXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcHV0UmVz
dWx0ID0gc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQoreworICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oY2VsbCk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAg
Ym9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAocHV0Q29tbW9uKCp0aGlzT2JqZWN0LCAq
c3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBw
dXRSZXN1bHQ7CisKKyAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKK30KKworYm9vbCBKU0NTU1N0
eWxlRGVjbGFyYXRpb246OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0YXRl
LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKwor
ICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKHB1dENvbW1vbigqdGhpc09iamVj
dCwgKnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCksIHZhbHVlLCBwdXRSZXN1
bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVzdWx0OworCisgICAgcmV0dXJuIEpTT2JqZWN0Ojpw
dXRCeUluZGV4KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKK30KKwog
SlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDIxOTI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCShub25leGlzdGVudCkKQEAgLTEsNTEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNIVE1MQXBwbGV0RWxlbWVudC5oIgotCi0jaW5jbHVk
ZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1i
b29sIEpTSFRNTEFwcGxldEVsZW1lbnQ6OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQotewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90PEpT
SFRNTEFwcGxldEVsZW1lbnQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgdGhpcyk7
Ci19Ci0KLWJvb2wgSlNIVE1MQXBwbGV0RWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkKLXsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVu
dEN1c3RvbVB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1
bHQpOwotfQotCi1DYWxsVHlwZSBKU0hUTUxBcHBsZXRFbGVtZW50OjpnZXRDYWxsRGF0YShKU0Nl
bGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVu
dEdldENhbGxEYXRhKGpzQ2FzdDxKU0hUTUxBcHBsZXRFbGVtZW50Kj4oY2VsbCksIGNhbGxEYXRh
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9u
IDIxOTI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVu
dEN1c3RvbS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJKU0hUTUxFbWJlZEVsZW1lbnQuaCIKLQotI2luY2x1ZGUgIkhUTUxFbWJlZEVsZW1l
bnQuaCIKLSNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1ib29sIEpTSFRNTEVtYmVkRWxl
bWVudDo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJuIHBs
dWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Q8SlNIVE1MRW1iZWRFbGVtZW50LCBC
YXNlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHRoaXMpOwotfQotCi1ib29sIEpTSFRNTEVt
YmVkRWxlbWVudDo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1
dFJlc3VsdCkKLXsKLSAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbVB1dChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCB0aGlzLCBzbG90LCBwdXRSZXN1bHQpOwotfQotCi1DYWxsVHlwZSBK
U0hUTUxFbWJlZEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNh
bGxEYXRhKQotewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoanNDYXN0PEpT
SFRNTEVtYmVkRWxlbWVudCo+KGNlbGwpLCBjYWxsRGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjE5MjY0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAJKG5vbmV4aXN0
ZW50KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0hUTUxP
YmplY3RFbGVtZW50LmgiCi0KLSNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgotI2luY2x1
ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLWJvb2wgSlNIVE1MT2JqZWN0RWxlbWVudDo6Z2V0T3du
UHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJuIHBsdWdpbkVsZW1lbnRD
dXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Q8SlNIVE1MT2JqZWN0RWxlbWVudCwgQmFzZT4oZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90LCB0aGlzKTsKLX0KLQotYm9vbCBKU0hUTUxPYmplY3RFbGVtZW50
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQot
ewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tUHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHRoaXMsIHNsb3QsIHB1dFJlc3VsdCk7Ci19Ci0KLUNhbGxUeXBlIEpTSFRNTE9iamVj
dEVsZW1lbnQ6OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQot
ewotICAgIHJldHVybiBwbHVnaW5FbGVtZW50R2V0Q2FsbERhdGEoanNDYXN0PEpTSFRNTE9iamVj
dEVsZW1lbnQqPihjZWxsKSwgY2FsbERhdGEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxP
YmplY3RFbGVtZW50Q3VzdG9tLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUK
IyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
CShyZXZpc2lvbiAyMTkyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0LDEyIEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBKU0xvY2F0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3RDb21tb24oSlNMb2NhdGlvbiYgdGhpc09iamVjdCwgRXhlY1N0YXRlJiBzdGF0ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgRnJhbWUqIGZyYW1lID0gd3Jh
cHBlZCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpc09iamVjdC53cmFwcGVkKCku
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7CiAgICAgICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTEsNjAgKzUxLDEwMCBAQCBib29sIEpTTG9jYXRp
b246OmdldE93blByb3BlcnR5U2xvdERlbGVnCiAgICAgLy8gT3VyIGN1c3RvbSBjb2RlIGlzIG9u
bHkgbmVlZGVkIHRvIGltcGxlbWVudCB0aGUgV2luZG93IGNyb3NzLWRvbWFpbiBzY2hlbWUsIHNv
IGlmIGFjY2VzcyBpcwogICAgIC8vIGFsbG93ZWQsIHJldHVybiBmYWxzZSBzbyB0aGUgbm9ybWFs
IGxvb2t1cCB3aWxsIHRha2UgcGxhY2UuCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYgKEJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKCpzdGF0ZSwgKmZyYW1lLCBt
ZXNzYWdlKSkKKyAgICBpZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoc3RhdGUsICpmcmFtZSwgbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVy
dHloZWxwZXItKC1vLC1wLSkKLSAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0
eU5hbWVzKCkudG9TdHJpbmdUYWdTeW1ib2wgfHwgcHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9w
ZXJ0eU5hbWVzKCkuaGFzSW5zdGFuY2VTeW1ib2wgfHwgcHJvcGVydHlOYW1lID09IHN0YXRlLT5w
cm9wZXJ0eU5hbWVzKCkuaXNDb25jYXRTcHJlYWRhYmxlU3ltYm9sKSB7Ci0gICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpcywgUmVhZE9ubHkgfCBEb250RW51bSwganNVbmRlZmluZWQoKSk7CisgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmdUYWdTeW1i
b2wgfHwgcHJvcGVydHlOYW1lID09IHN0YXRlLnByb3BlcnR5TmFtZXMoKS5oYXNJbnN0YW5jZVN5
bWJvbCB8fCBwcm9wZXJ0eU5hbWUgPT0gc3RhdGUucHJvcGVydHlOYW1lcygpLmlzQ29uY2F0U3By
ZWFkYWJsZVN5bWJvbCkgeworICAgICAgICBzbG90LnNldFZhbHVlKCZ0aGlzT2JqZWN0LCBSZWFk
T25seSB8IERvbnRFbnVtLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgLy8gV2Ugb25seSBhbGxvdyBhY2Nlc3MgdG8gTG9jYXRpb24ucmVwbGFjZSgp
IGNyb3NzIG9yaWdpbi4KLSAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5h
bWVzKCkucmVwbGFjZSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBSZWFkT25seSB8
IERvbnRFbnVtLCBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXI8anNMb2NhdGlvbkluc3Rh
bmNlRnVuY3Rpb25SZXBsYWNlLCAxPik7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0ZS5w
cm9wZXJ0eU5hbWVzKCkucmVwbGFjZSkgeworICAgICAgICBzbG90LnNldEN1c3RvbSgmdGhpc09i
amVjdCwgUmVhZE9ubHkgfCBEb250RW51bSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVy
PGpzTG9jYXRpb25JbnN0YW5jZUZ1bmN0aW9uUmVwbGFjZSwgMT4pOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKICAgICAvLyBHZXR0aW5nIGxvY2F0aW9uLmhyZWYgY3Jvc3Mgb3JpZ2lu
IG5lZWRzIHRvIHRocm93LiBIb3dldmVyLCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSBuZWVk
cyB0byByZXR1cm4KICAgICAvLyBhIGRlc2NyaXB0b3IgdGhhdCBoYXMgYSBzZXR0ZXIgYnV0IG5v
IGdldHRlci4KLSAgICBpZiAoc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkgJiYgcHJvcGVydHlOYW1lID09
IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuaHJlZikgeworICAgIGlmIChzbG90LmludGVybmFsTWV0
aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9w
ZXJ0eSAmJiBwcm9wZXJ0eU5hbWUgPT0gc3RhdGUucHJvcGVydHlOYW1lcygpLmhyZWYpIHsKICAg
ICAgICAgYXV0byogZW50cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFi
bGUtPmVudHJ5KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIEN1c3RvbUdldHRlclNldHRlciogY3Vz
dG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIG51bGxwdHIs
IGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKLSAgICAgICAgc2xvdC5zZXRDdXN0b21HZXR0ZXJT
ZXR0ZXIodGhpcywgRG9udEVudW0gfCBDdXN0b21BY2Nlc3NvciwgY3VzdG9tR2V0dGVyU2V0dGVy
KTsKKyAgICAgICAgc2xvdC5zZXRDdXN0b21HZXR0ZXJTZXR0ZXIoJnRoaXNPYmplY3QsIERvbnRF
bnVtIHwgQ3VzdG9tQWNjZXNzb3IsIGN1c3RvbUdldHRlclNldHRlcik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIHRocm93U2VjdXJpdHlFcnJvcigqc3RhdGUsIHNjb3BlLCBt
ZXNzYWdlKTsKKyAgICB0aHJvd1NlY3VyaXR5RXJyb3Ioc3RhdGUsIHNjb3BlLCBtZXNzYWdlKTsK
ICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEpT
TG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKK2Jv
b2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKLSAgICBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTG9jYXRpb24qPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFt
ZSgpOworICAgIGlmIChnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oKnRoaXNPYmplY3QsICpzdGF0
ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKK30KKworYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0
aW9uKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CisKKyAgICBpZiAoZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKCp0aGlzT2JqZWN0
LCAqc3RhdGUsIElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KSwgc2xvdCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChvYmplY3QsIHN0YXRlLCBpbmRleCwgc2xvdCk7Cit9CisKK3N0YXRpYyBib29sIHB1dENv
bW1vbihKU0xvY2F0aW9uJiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUmIHN0YXRlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAvLyBTaWxlbnRseSBibG9jayBhY2Nlc3MgdG8gdG9TdHJpbmcgYW5kIHZhbHVlT2YuCi0gICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHBy
b3BlcnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpCisgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlO
YW1lID09IHN0YXRlLnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIEFsd2F5cyBhbGxvdyBhc3NpZ25pbmcgdG8gdGhlIHdob2xlIGxvY2F0aW9u
LgogICAgIC8vIEhvd2V2ZXIsIGFsbGxvd2luZyBhc3NpZ25pbmcgb2YgcGllY2VzIG1pZ2h0IGlu
YWR2ZXJ0ZW50bHkgZGlzY2xvc2UgcGFydHMgb2YgdGhlIG9yaWdpbmFsIGxvY2F0aW9uLgogICAg
IC8vIFNvIGZhbGwgdGhyb3VnaCB0byB0aGUgYWNjZXNzIGNoZWNrIGZvciB0aG9zZS4KLSAgICBp
ZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuaHJlZikKKyAgICBpZiAo
cHJvcGVydHlOYW1lID09IHN0YXRlLnByb3BlcnR5TmFtZXMoKS5ocmVmKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBCbG9jayBhY2Nlc3MgYW5kIHRocm93IGlmIHRoZXJlIGlzIGEg
c2VjdXJpdHkgZXJyb3IuCi0gICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShzdGF0ZSwgZnJhbWUsIFRocm93U2VjdXJpdHlFcnJvcikpCisgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZSgmc3RhdGUsIGZyYW1lLCBU
aHJvd1NlY3VyaXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorYm9vbCBKU0xvY2F0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHB1dFByb3BlcnR5U2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTG9jYXRpb24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBpZiAocHV0Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3Rh
dGUsIHByb3BlcnR5TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBK
U09iamVjdDo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQ
cm9wZXJ0eVNsb3QpOworfQorCitib29sIEpTTG9jYXRpb246OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9v
bCBzaG91bGRUaHJvdykKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTG9jYXRp
b24qPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CisKKyAgICBpZiAocHV0Q29tbW9uKCp0aGlzT2JqZWN0LCAqc3RhdGUsIElkZW50aWZp
ZXI6OmZyb20oc3RhdGUsIGluZGV4KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBKU09iamVjdDo6cHV0QnlJbmRleChjZWxsLCBzdGF0ZSwgaW5kZXgsIHZhbHVlLCBzaG91
bGRUaHJvdyk7Cit9CisKIGJvb2wgSlNMb2NhdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNMb2NhdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4oY2VsbCk7CkBAIC0x
ODgsMTAgKzIyOCwxMiBAQCBTdHJpbmcgSlNMb2NhdGlvbjo6dG9TdHJpbmdOYW1lKGNvbnN0IEpT
CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTG9jYXRpb24iKTsKIH0KIAotYm9vbCBKU0xvY2F0
aW9uUHJvdG90eXBlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkK
K2Jvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBz
dGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewotICAgIHB1dFJlc3VsdCA9IGZhbHNlOwotICAgIHJldHVybiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpOworICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNMb2NhdGlvblByb3RvdHlwZSo+KGNlbGwpOworICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gc3RhdGUtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUg
PT0gc3RhdGUtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhy
b3dFeGNlcHRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIxOTI2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVj
dChFeGVjU3RhdGUqIAogICAgIHJldHVybiBpbnN0YW5jZS0+Y3JlYXRlUnVudGltZU9iamVjdChl
eGVjKTsKIH0KICAgICAKLUVuY29kZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVy
dHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDksMTkgKzEwOSwyNiBA
QCBFbmNvZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShzY3JpcHRPYmplY3QtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0K
IAotYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBKU0hU
TUxFbGVtZW50KiBlbGVtZW50KQorYm9vbCBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90KEpTSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGlmICghZWxlbWVu
dC0+Z2xvYmFsT2JqZWN0KCktPndvcmxkKCkuaXNOb3JtYWwoKSkgeworICAgICAgICBKU0M6OkpT
VmFsdWUgcHJvdG8gPSBlbGVtZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgaWYg
KHByb3RvLmlzT2JqZWN0KCkgJiYgSlNDOjpqc0Nhc3Q8SlNDOjpKU09iamVjdCo+KGFzT2JqZWN0
KHByb3RvKSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdp
blNjcmlwdE9iamVjdChleGVjLCBlbGVtZW50KTsKICAgICBpZiAoIXNjcmlwdE9iamVjdCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFzY3JpcHRPYmplY3QtPmhhc1Byb3BlcnR5
KGV4ZWMsIHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHNsb3Qu
c2V0Q3VzdG9tKGVsZW1lbnQsIERvbnREZWxldGUgfCBEb250RW51bSwgcGx1Z2luRWxlbWVudFBy
b3BlcnR5R2V0dGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBwbHVnaW5FbGVtZW50
Q3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgSlNIVE1MRWxlbWVudCogZWxlbWVudCwgUHV0UHJvcGVydHlTbG90JiBzbG90
LCBib29sJiBwdXRSZXN1bHQpCitib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoSlNIVE1MRWxl
bWVudCogZWxlbWVudCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkK
IHsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMs
IGVsZW1lbnQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0KQpAQCAtMTU0LDcgKzE2MSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLUNhbGxUeXBlIHBsdWdpbkVsZW1lbnRHZXRDYWxsRGF0
YShKU0hUTUxFbGVtZW50KiBlbGVtZW50LCBDYWxsRGF0YSYgY2FsbERhdGEpCitDYWxsVHlwZSBw
bHVnaW5FbGVtZW50Q3VzdG9tR2V0Q2FsbERhdGEoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQogewogICAgIC8vIEZpcnN0LCBhc2sgdGhlIHBsdWctaW4gdmlldyBi
YXNlIGZvciBpdHMgcnVudGltZSBvYmplY3QuCiAgICAgaWYgKEpTT2JqZWN0KiBzY3JpcHRPYmpl
Y3QgPSBwbHVnaW5TY3JpcHRPYmplY3RGcm9tUGx1Z2luVmlld0Jhc2UoZWxlbWVudCkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyMTkyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjAg
KzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIEpTQzo6QmluZGluZ3M6Okluc3RhbmNl
KiBwbHVnaW5JbnN0YW5jZShIVE1MRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTQzo6
SlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTSFRNTEVsZW1l
bnQqKTsKIAotICAgIEpTQzo6RW5jb2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0
dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwotICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYsIEpTSFRN
TEVsZW1lbnQqKTsKLSAgICBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0hUTUxFbGVtZW50KiwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpOwotICAgIEpTQzo6Q2FsbFR5cGUg
cGx1Z2luRWxlbWVudEdldENhbGxEYXRhKEpTSFRNTEVsZW1lbnQqLCBKU0M6OkNhbGxEYXRhJik7
Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHlwZSwgY2xhc3MgQmFzZT4gYm9vbCBwbHVnaW5FbGVt
ZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiBzbG90LCBUeXBlKiBl
bGVtZW50KQotICAgIHsKLSAgICAgICAgaWYgKCFlbGVtZW50LT5nbG9iYWxPYmplY3QoKS0+d29y
bGQoKS5pc05vcm1hbCgpKSB7Ci0gICAgICAgICAgICBKU0M6OkpTVmFsdWUgcHJvdG8gPSBlbGVt
ZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKLSAgICAgICAgICAgIGlmIChwcm90by5pc09iamVj
dCgpICYmIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChwcm90bykpLT5oYXNQ
cm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3du
UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCwgZWxlbWVudCk7Ci0gICAgfQor
ICAgIGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdldE93blByb3BlcnR5U2xvdChKU0hUTUxFbGVt
ZW50KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKKyAgICBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21QdXQoSlNIVE1MRWxlbWVudCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQ
cm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpOworICAgIEpTQzo6Q2FsbFR5cGUgcGx1Z2lu
RWxlbWVudEN1c3RvbUdldENhbGxEYXRhKEpTSFRNTEVsZW1lbnQqLCBKU0M6OkNhbGxEYXRhJik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMTkyNjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29y
a2luZyBjb3B5KQpAQCAtNTM1LDcgKzUzNSw3IEBAIHN1YiBHZW5lcmF0ZUluZGV4ZWRHZXR0ZXIK
ICAgICAjIDEuMi44IFJldHVybiBkZXNjLgogICAgIAogICAgIG15IEBhdHRyaWJ1dGVzID0gKCk7
Ci0gICAgcHVzaChAYXR0cmlidXRlcywgIlJlYWRPbmx5IikgaWYgIUdldEluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24oJGludGVyZmFjZSkgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0N1c3RvbU5hbWVkU2V0dGVyfTsKKyAgICBwdXNoKEBhdHRyaWJ1dGVzLCAiUmVhZE9ubHkiKSBp
ZiAhR2V0SW5kZXhlZFNldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKSAmJiAhJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufTsKICAgICAKICAgICBteSAkYXR0cmlidXRlU3Ry
aW5nID0gKChAYXR0cmlidXRlcyA+IDApID8gam9pbigiIHwgIiwgQGF0dHJpYnV0ZXMpIDogIjAi
KTsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIHN1YiBHZW5lcmF0ZU5hbWVkR2V0dGVyCiAgICAgIyAy
LjEwIFJldHVybiBkZXNjLgogICAgIAogICAgIG15IEBhdHRyaWJ1dGVzID0gKCk7Ci0gICAgcHVz
aChAYXR0cmlidXRlcywgIlJlYWRPbmx5IikgaWYgIUdldE5hbWVkU2V0dGVyT3BlcmF0aW9uKCRp
bnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYW1l
ZFNldHRlcn07CisgICAgcHVzaChAYXR0cmlidXRlcywgIlJlYWRPbmx5IikgaWYgIUdldE5hbWVk
U2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntQbHVnaW59OwogICAgIHB1c2goQGF0dHJpYnV0ZXMsICJEb250RW51bSIpIGlmICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeVVuZW51bWVyYWJsZU5hbWVkUHJv
cGVydGllc307CiAgICAgCiAgICAgbXkgJGF0dHJpYnV0ZVN0cmluZyA9ICgoQGF0dHJpYnV0ZXMg
PiAwKSA/IGpvaW4oIiB8ICIsIEBhdHRyaWJ1dGVzKSA6ICIwIik7CkBAIC02NjcsNyArNjY3LDcg
QEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgICMgMS4zLiBTZXQgaWdu
b3JlTmFtZWRQcm9wcyB0byB0cnVlLgogICAgICAgICAjIE5PVEU6IFNldHRpbmcgaWdub3JlTmFt
ZWRQcm9wcyBoYXMgdGhlIGVmZmVjdCBvZiBza2lwcGluZyBzdGVwIDIsIHNvIHdlIGNhbiBlYXJs
eSByZXR1cm4gaGVyZQogICAgICAgICAjICAgICAgIHJhdGhlciB0aGFuIGdvaW5nIHRocm91Z2gg
dGhlIHBhY2VzIG9mIGhhdmluZyBhbiBhY3R1YWwgaWdub3JlTmFtZWRQcm9wcyB1cGRhdGUuCi0g
ICAgICAgIGlmICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVzY3JpcHRvcn0pIHsKKyAg
ICAgICAgaWYgKCRuYW1lZEdldHRlck9wZXJhdGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yfSB8fCAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59KSB7CiAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KG9iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgfQog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CkBAIC03MDEsMTIgKzcwMSwx
OSBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgfVxuIik7CiAgICAgfQotICAgIAorCisgICAgIyBGSVhNRTogVGhlcmUgaXMg
b25seSBvbmUgcmVtYWluaW5nIHVzZXIgb2YgdGhpcywgQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwu
IExldCdzIGdldCB0aGVtIG9udG8gbmFtZWQgLyBpbmRleGVkIGdldHRlcnMuCiAgICAgaWYgKCRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFu
ZERlc2NyaXB0b3J9KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAodGhp
c09iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwg
c2xvdCkpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
dHJ1ZTtcbiIpOwogICAgIH0KLSAgICAKKworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntQbHVnaW59KSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaCIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
aWYgKHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgc3Rh
dGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOworICAgIH0KKwogICAgICMgMy4gUmV0dXJuIE9y
ZGluYXJ5R2V0T3duUHJvcGVydHkoTywgUCkuCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgc3RhdGUsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAKQEAgLTcxOCw3ICs3MjUsNyBAQCBzdWIgR2VuZXJh
dGVHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4CiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGlu
dGVyZmFjZSwgJGNsYXNzTmFtZSkgPSBAXzsKICAgICAKLSAgICByZXR1cm4gaWYgJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90QnlJbmRleH07
CisgICAgcmV0dXJuIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdl
dE93blByb3BlcnR5U2xvdH07CiAKICAgICAjIFNpbmsgdGhlIGludC10by1zdHJpbmcgY29udmVy
c2lvbiB0aGF0IGhhcHBlbnMgd2hlbiB3ZSBjcmVhdGUgYSBQcm9wZXJ0eU5hbWUKICAgICAjIHRv
IHRoZSBwb2ludCB3aGVyZSB3ZSBhY3R1YWxseSBuZWVkIGl0LgpAQCAtNzcyLDcgKzc3OSw3IEBA
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAgICAgIyAxLjMuIFNl
dCBpZ25vcmVOYW1lZFByb3BzIHRvIHRydWUuCiAgICAgICAgICMgTk9URTogU2V0dGluZyBpZ25v
cmVOYW1lZFByb3BzIGhhcyB0aGUgZWZmZWN0IG9mIHNraXBwaW5nIHN0ZXAgMiwgc28gd2UgY2Fu
IGVhcmx5IHJldHVybiBoZXJlCiAgICAgICAgICMgICAgICAgcmF0aGVyIHRoYW4gZ29pbmcgdGhy
b3VnaCB0aGUgcGFjZXMgb2YgaGF2aW5nIGFuIGFjdHVhbCBpZ25vcmVOYW1lZFByb3BzIHVwZGF0
ZS4KLSAgICAgICAgaWYgKCRuYW1lZEdldHRlck9wZXJhdGlvbiB8fCAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yfSkg
eworICAgICAgICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0aW9uIHx8ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3J9IHx8
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0pIHsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgc3RhdGUsIGluZGV4LCBzbG90KTtcbiIpOwogICAgICAg
ICB9CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKQEAgLTgwOSwxMyAr
ODE2LDIyIEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAgIH0KICAgICAKKyAgICAjIEZJWE1F
OiBUaGVyZSBpcyBvbmx5IG9uZSByZW1haW5pbmcgdXNlciBvZiB0aGlzLCBDU1NTdHlsZURlY2xh
cmF0aW9uLmlkbC4gTGV0J3MgZ2V0IHRoZW0gb250byBuYW1lZCAvIGluZGV4ZWQgZ2V0dGVycy4K
ICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJv
cGVydHlTbG90QW5kRGVzY3JpcHRvcn0pIHsKICAgICAgICAgJiRwcm9wZXJ0eU5hbWVHZW5lcmF0
aW9uKCk7CiAgICAgCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAodGhpc09i
amVjdC0+Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xv
dCkpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdHJ1
ZTtcbiIpOwogICAgIH0KLSAgICAKKworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntQbHVnaW59KSB7CisgICAgICAgICYkcHJvcGVydHlOYW1lR2VuZXJhdGlvbigpOwor
CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIp
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKHBsdWdpbkVsZW1lbnRDdXN0
b21HZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xv
dCkpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdHJ1
ZTtcbiIpOworICAgIH0KKwogICAgICMgMy4gUmV0dXJuIE9yZGluYXJ5R2V0T3duUHJvcGVydHko
TywgUCkuCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIHN0YXRlLCBpbmRleCwgc2xvdCk7XG4iKTsK
ICAgICAKQEAgLTgyNyw3ICs4NDMsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eU5hbWVz
CiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSkgPSBAXzsK
ICAgICAKLSAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3Vz
dG9tRW51bWVyYXRlUHJvcGVydHl9OworICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eU5hbWVzfTsKICAgICAKICAgICBteSAk
bmFtZWRHZXR0ZXJPcGVyYXRpb24gPSBHZXROYW1lZEdldHRlck9wZXJhdGlvbigkaW50ZXJmYWNl
KTsKICAgICBteSAkaW5kZXhlZEdldHRlck9wZXJhdGlvbiA9IEdldEluZGV4ZWRHZXR0ZXJPcGVy
YXRpb24oJGludGVyZmFjZSk7CkBAIC05MTMsNyArOTI5LDcgQEAgc3ViIEdlbmVyYXRlUHV0CiB7
CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSkgPSBAXzsKICAg
ICAKLSAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9t
UHV0RnVuY3Rpb259OworICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDdXN0b21QdXR9OwogICAgIAogICAgIG15ICRuYW1lZFNldHRlck9wZXJhdGlvbiA9IEdl
dE5hbWVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogICAgIG15ICRpbmRleGVkU2V0dGVy
T3BlcmF0aW9uID0gR2V0SW5kZXhlZFNldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKQEAgLTk2
MSwxMyArOTc3LDE1IEBAIHN1YiBHZW5lcmF0ZVB1dAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgfVxuXG4iKTsKICAgICB9CiAgICAgCi0gICAgYXNzZXJ0KCJVc2luZyBib3RoIGEg
bmFtZWQgcHJvcGVydHkgc2V0dGVyIGFuZCBbQ3VzdG9tTmFtZWRTZXR0ZXJdIHRvZ2V0aGVyIGlz
IG5vdCBzdXBwb3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYmICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVyfTsKLSAgICBpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9KSB7CisgICAgYXNz
ZXJ0KCJVc2luZyBib3RoIGEgbmFtZWQgcHJvcGVydHkgc2V0dGVyIGFuZCBbUGx1Z2luXSB0b2dl
dGhlciBpcyBub3Qgc3VwcG9ydGVkLiIpIGlmICRuYW1lZFNldHRlck9wZXJhdGlvbiAmJiAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59OworICAgIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59KSB7CisgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIpOworCiAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlO1xuIik7Ci0gICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoc3RhdGUsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCwgcHV0UmVzdWx0KSlcbiIpOworICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKHBsdWdpbkVsZW1lbnRDdXN0b21QdXQo
dGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCwg
cHV0UmVzdWx0KSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJl
dHVybiBwdXRSZXN1bHQ7XG5cbiIpOwogICAgIH0KLSAgICAKKwogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIn1cblxuIik7CiB9CkBAIC05NzYsMTMgKzk5NCwxMyBAQCBzdWIgR2VuZXJhdGVQdXRC
eUluZGV4CiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSkg
PSBAXzsKICAgICAKLSAgICByZXR1cm4gaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tUHV0RnVuY3Rpb259OwotICAgIAorICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21QdXR9OworCiAgICAgbXkgJG5hbWVkU2V0dGVyT3Bl
cmF0aW9uID0gR2V0TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAgbXkgJGlu
ZGV4ZWRTZXR0ZXJPcGVyYXRpb24gPSBHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZh
Y2UpOwogICAgIAogICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3ItPklu
aGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKTsK
LSAgICBteSAkZWxsaWRlc0NhbGxzVG9CYXNlID0gKCRuYW1lZFNldHRlck9wZXJhdGlvbiAmJiAk
b3ZlcnJpZGVCdWlsdGlucykgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1
c3RvbU5hbWVkU2V0dGVyfTsKKyAgICBteSAkZWxsaWRlc0NhbGxzVG9CYXNlID0gKCRuYW1lZFNl
dHRlck9wZXJhdGlvbiAmJiAkb3ZlcnJpZGVCdWlsdGlucykgJiYgISRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1BsdWdpbn07CiAgICAgCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
Ym9vbCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIHN0
YXRlLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCIgLiAoISRlbGxpZGVzQ2Fs
bHNUb0Jhc2UgPyAiIHNob3VsZFRocm93IiA6ICIiKSAuICIpXG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ7XG4iKTsKQEAgLTEwMjEsMTYgKzEwMzksMTcgQEAgc3ViIEdlbmVyYXRlUHV0
QnlJbmRleAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYXNzZXJ0KCJVc2luZyBib3RoIGEgbmFtZWQgcHJv
cGVydHkgc2V0dGVyIGFuZCBbQ3VzdG9tTmFtZWRTZXR0ZXJdIHRvZ2V0aGVyIGlzIG5vdCBzdXBw
b3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYmICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkU2V0dGVyfTsKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9KSB7CisKKyAgICBhc3NlcnQoIlVz
aW5nIGJvdGggYSBuYW1lZCBwcm9wZXJ0eSBzZXR0ZXIgYW5kIFtQbHVnaW5dIHRvZ2V0aGVyIGlz
IG5vdCBzdXBwb3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyT3BlcmF0aW9uICYmICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn07CisgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1BsdWdpbn0pIHsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTtc
biIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QodGhpc09iamVjdCwgc2hvdWxkVGhyb3cpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIHNo
b3VsZFRocm93KTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYm9vbCBw
dXRSZXN1bHQgPSBmYWxzZTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
aWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90LCBwdXRSZXN1bHQpKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBp
ZiAocGx1Z2luRWxlbWVudEN1c3RvbVB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90LCBwdXRSZXN1bHQpKVxuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDtcblxuIik7CiAgICAgfQot
ICAgIAorCiAgICAgaWYgKCEkZWxsaWRlc0NhbGxzVG9CYXNlKSB7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUs
IGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpO1xuIik7CiAgICAgfQpAQCAtMTI1Miw3ICsxMjcx
LDcgQEAgc3ViIEdlbmVyYXRlRGVsZXRlUHJvcGVydHlDb21tb24KICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgfVxuIik7CiB9CiAKLXN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5RGVmaW5p
dGlvbgorc3ViIEdlbmVyYXRlRGVsZXRlUHJvcGVydHkKIHsKICAgICBteSAoJG91dHB1dEFycmF5
LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uLCAkY29uZGl0aW9uYWwpID0gQF87
CiAKQEAgLTEyODMsNyArMTMwMiw3IEBAIHN1YiBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5RGVmaW5p
dGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiB9CiAKLXN1YiBHZW5lcmF0
ZURlbGV0ZVByb3BlcnR5QnlJbmRleERlZmluaXRpb24KK3N1YiBHZW5lcmF0ZURlbGV0ZVByb3Bl
cnR5QnlJbmRleAogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRvcGVyYXRpb24sICRjb25kaXRpb25hbCkgPSBAXzsKIApAQCAtMTM0Nyw4ICsxMzY2LDgg
QEAgc3ViIEdlbmVyYXRlTmFtZWREZWxldGVyRGVmaW5pdGlvbgogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIik7OwogICAgIH0KIAotICAg
IEdlbmVyYXRlRGVsZXRlUHJvcGVydHlEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJG5hbWVkRGVsZXRlck9wZXJhdGlvbiwgJGNvbmRpdGlvbmFsKTsKLSAg
ICBHZW5lcmF0ZURlbGV0ZVByb3BlcnR5QnlJbmRleERlZmluaXRpb24oJG91dHB1dEFycmF5LCAk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbmFtZWREZWxldGVyT3BlcmF0aW9uLCAkY29uZGl0aW9u
YWwpOworICAgIEdlbmVyYXRlRGVsZXRlUHJvcGVydHkoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkbmFtZWREZWxldGVyT3BlcmF0aW9uLCAkY29uZGl0aW9uYWwpOworICAg
IEdlbmVyYXRlRGVsZXRlUHJvcGVydHlCeUluZGV4KCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJG5hbWVkRGVsZXRlck9wZXJhdGlvbiwgJGNvbmRpdGlvbmFsKTsKIAogICAg
IHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbDsKIH0KQEAg
LTE4MDgsOCArMTgyNyw4IEBAIHN1YiBJbnN0YW5jZU92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dAogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICByZXR1cm4gJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90fQotICAgICAgICB8
fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4fQogICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
dXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yfQorICAgICAgICB8fCAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59CiAgICAgICAgIHx8IEdldEluZGV4ZWRH
ZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSkKICAgICAgICAgfHwgR2V0TmFtZWRHZXR0ZXJPcGVy
YXRpb24oJGludGVyZmFjZSk7CiB9CkBAIC0xODE3LDcgKzE4MzYsNyBAQCBzdWIgSW5zdGFuY2VP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QKIHN1YiBJbnN0YW5jZU92ZXJyaWRlc0dldE93blBy
b3BlcnR5TmFtZXMKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgcmV0dXJuICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUVudW1lcmF0ZVByb3BlcnR5fQor
ICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Q
cm9wZXJ0eU5hbWVzfQogICAgICAgICB8fCBHZXRJbmRleGVkR2V0dGVyT3BlcmF0aW9uKCRpbnRl
cmZhY2UpCiAgICAgICAgIHx8IEdldE5hbWVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwog
fQpAQCAtMTgyNSw4ICsxODQ0LDggQEAgc3ViIEluc3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlOYW1lcwogc3ViIEluc3RhbmNlT3ZlcnJpZGVzUHV0CiB7CiAgICAgbXkgJGludGVyZmFjZSA9
IHNoaWZ0OwotICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0
b21OYW1lZFNldHRlcn0KLSAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tUHV0RnVuY3Rpb259CisgICAgcmV0dXJuICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbVB1dH0KKyAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57UGx1Z2lufQogICAgICAgICB8fCBHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9uKCRp
bnRlcmZhY2UpCiAgICAgICAgIHx8IEdldE5hbWVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2Up
OwogfQpAQCAtMTgzOSw3ICsxODU4LDcgQEAgc3ViIEluc3RhbmNlT3ZlcnJpZGVzRGVmaW5lT3du
UHJvcGVydHkKICAgICAgICAgfHwgR2V0TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7
CiB9CiAKLXN1YiBJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZQorc3ViIEluc3RhbmNlT3ZlcnJpZGVz
RGVsZXRlUHJvcGVydHkKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgcmV0dXJu
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbURlbGV0ZVByb3BlcnR5fQpA
QCAtMjU3MiwxMiArMjU5MSwxMiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgY29uc3QgSlNDOjpQ
cm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtcbiIpOwogICAgIH0KIAotICAg
IGlmIChJbnN0YW5jZU92ZXJyaWRlc0RlbGV0ZSgkaW50ZXJmYWNlKSkgeworICAgIGlmIChJbnN0
YW5jZU92ZXJyaWRlc0RlbGV0ZVByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDOjpKU0Nl
bGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQpO1xuIik7CiAgICAgfQog
Ci0gICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzQ2FsbCgkaW50ZXJmYWNlKSkgeworICAgIGlmIChJ
bnN0YW5jZU92ZXJyaWRlc0dldENhbGxEYXRhKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
OjpKU0NlbGwqLCBKU0M6OkNhbGxEYXRhJik7XG5cbiIpOwogICAgICAgICAkaGVhZGVySW5jbHVk
ZXN7IjxydW50aW1lL0NhbGxEYXRhLmg+In0gPSAxOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7
IkpTQzo6VHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhIn0gPSAxOwpAQCAtMjc5NiwxMSArMjgx
NSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yfSkgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90RGVs
ZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTtcbiIpOwogICAgIH0KLSAgICAKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgYm9vbCBwdXREZWxlZ2F0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0
KTtcbiIpOwotICAgIH0KLSAgICAKKwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuXG4i
KTsKIAogICAgIGlmIChTaG91bGRHZW5lcmF0ZVdyYXBwZXJPd25lckNvZGUoJGhhc1BhcmVudCwg
JGludGVyZmFjZSkpIHsKQEAgLTQxMDAsMTcgKzQxMTUsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCi0g
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkR2V0dGVy
T25Qcm90b3R5cGV9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNz
TmFtZX1Qcm90b3R5cGU6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dClcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1l
fVByb3RvdHlwZSo+KGNlbGwpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKHRoaXNPYmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90LCBwdXRSZXN1bHQpKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gcHV0UmVzdWx0O1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
LSAgICB9Ci0KICAgICAjIC0gSW5pdGlhbGl6ZSBzdGF0aWMgQ2xhc3NJbmZvIG9iamVjdAogICAg
IHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICRjbGFzc05hbWUiIC4gIjo6c19p
bmZvID0geyBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIsICZCYXNlOjpzX2luZm8sICIpOwog
CkBAIC00Mjk3LDEyICs0MzAxLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIEdlbmVyYXRlRGVmaW5lT3duUHJvcGVydHkoXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwg
JGNsYXNzTmFtZSk7CiAgICAgfQogCi0gICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzRGVsZXRlKCRp
bnRlcmZhY2UpKSB7CisgICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzRGVsZXRlUHJvcGVydHkoJGlu
dGVyZmFjZSkpIHsKICAgICAgICAgR2VuZXJhdGVOYW1lZERlbGV0ZXJEZWZpbml0aW9uKFxAaW1w
bENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFzc05hbWUpOwogICAgIH0KICAgICAKLSAgICBpZiAo
SW5zdGFuY2VPdmVycmlkZXNDYWxsKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIEdlbmVyYXRlTGVn
YWN5Q2FsbGVyRGVmaW5pdGlvbnMoJGludGVyZmFjZSwgJGNsYXNzTmFtZSk7CisgICAgaWYgKElu
c3RhbmNlT3ZlcnJpZGVzR2V0Q2FsbERhdGEoJGludGVyZmFjZSkpIHsKKyAgICAgICAgR2VuZXJh
dGVHZXRDYWxsRGF0YShcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKTsKICAg
ICB9CiAgICAgCiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkgewpAQCAtNTI1MCw3MCArNTI1
NCw5NyBAQCBzdWIgR2VuZXJhdGVTZXJpYWxpemVyRGVmaW5pdGlvbgogICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG4iKTsKIH0KIAorc3ViIEdlbmVyYXRlR2V0Q2FsbERhdGEKK3sKKyAgICBteSAo
JG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSA9IEBfOworCisgICAgcmV0dXJu
IGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldENhbGxEYXRhfTsK
KworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59KSB7Cisg
ICAgICAgIEdlbmVyYXRlUGx1Z2luQ2FsbCgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFz
c05hbWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5p
dGlvbnMoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKTsKKyAgICB9Cit9CisK
K3N1YiBHZW5lcmF0ZVBsdWdpbkNhbGwKK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lKSA9IEBfOworCisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5oIik7CisKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJDYWxsVHlw
ZSAke2NsYXNzTmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxE
YXRhKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4o
Y2VsbCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuXG4iKTsKKworICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICByZXR1cm4gcGx1Z2luRWxlbWVudEN1c3RvbUdldENhbGxEYXRhKHRoaXNP
YmplY3QsIGNhbGxEYXRhKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwor
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7Cit9CisKIHN1YiBHZW5lcmF0ZUxlZ2FjeUNh
bGxlckRlZmluaXRpb25zCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUpID0gQF87
CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSkgPSBAXzsKIAot
ICAgIHJldHVybiBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21DYWxs
fTsKLSAgICAKICAgICBteSBAbGVnYWN5Q2FsbGVycyA9IEB7JGludGVyZmFjZS0+e0xlZ2FjeUNh
bGxlcnN9fTsKICAgICBpZiAoQGxlZ2FjeUNhbGxlcnMgPiAxKSB7CiAgICAgICAgIGZvcmVhY2gg
bXkgJGxlZ2FjeUNhbGxlciAoQGxlZ2FjeUNhbGxlcnMpIHsKLSAgICAgICAgICAgIEdlbmVyYXRl
TGVnYWN5Q2FsbGVyRGVmaW5pdGlvbigkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbGVnYWN5Q2Fs
bGVyKTsKKyAgICAgICAgICAgIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbigkb3V0cHV0
QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRsZWdhY3lDYWxsZXIpOwogICAgICAgICB9
CiAKICAgICAgICAgbXkgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXggPSAiY2FsbCR7Y2xhc3NOYW1l
fSI7CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMICR7b3ZlcmxvYWRGdW5jdGlvblByZWZpeH0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCAke292ZXJsb2FkRnVuY3Rpb25QcmVmaXh9KEV4ZWNTdGF0ZSogc3RhdGUp
XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogCiAgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWREaXNwYXRj
aGVyKCRsZWdhY3lDYWxsZXJzWzBdLCAkaW50ZXJmYWNlLCAkb3ZlcmxvYWRGdW5jdGlvblByZWZp
eCwgIiIsICJzdGF0ZSIpOwogCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
KyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24oJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGxlZ2FjeUNhbGxlcnNbMF0pOworICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmlu
aXRpb24oJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbGVnYWN5Q2FsbGVy
c1swXSk7CiAgICAgfQogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICJDYWxsVHlwZSAke2NsYXNz
TmFtZX06OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSlcbiIpOwotICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Y2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbCR7Y2xhc3NOYW1lfTtcbiIpOwotICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDtcbiIpOwotICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwor
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkNhbGxUeXBlICR7Y2xhc3NOYW1lfTo6Z2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAie1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGNhbGxEYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNhbGwke2NsYXNzTmFtZX07XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAifVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsKIH0KIAogc3ViIEdl
bmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbgogewotICAgIG15ICgkaW50ZXJmYWNlLCAkY2xh
c3NOYW1lLCAkb3BlcmF0aW9uKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZh
Y2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pID0gQF87CiAKICAgICBteSAkaXNPdmVybG9hZGVk
ID0gJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30gJiYgQHskb3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0g
PiAxOwogICAgIGlmICgkaXNPdmVybG9hZGVkKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsJHtjbGFzc05hbWV9JG9wZXJhdGlv
bi0+e292ZXJsb2FkSW5kZXh9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjYWxsJHtjbGFzc05h
bWV9JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIp
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsJHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKICAgICB9
CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7
CiAKICAgICBteSAkaW5kZW50ID0gIiAgICAiOwotICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRD
aGVjayhcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkaW5kZW50KTsKKyAg
ICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAk
aW50ZXJmYWNlLCAkaW5kZW50KTsKIAotICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oc3RhdGUtPmpzQ2FsbGVlKCkpO1xu
Iik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKGNhc3RlZFRoaXMpO1xuIik7
Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KHN0YXRlLT5qc0NhbGxlZSgpKTtcbiIpOworICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoY2FzdGVkVGhpcyk7XG4iKTsKKyAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTtcbiIpOwogCiAgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lID0gJG9wZXJhdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJGNvZGVHZW5lcmF0b3It
PldLX2xjZmlyc3QoJG9wZXJhdGlvbi0+bmFtZSkgfHwgImxlZ2FjeUNhbGxlck9wZXJhdGlvbkZy
b21CaW5kaW5ncyI7Ci0gICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2soXEBpbXBsQ29udGVudCwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uSW1w
bGVtZW50YXRpb25OYW1lLCAkaW5kZW50KTsKKyAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2Us
ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJGluZGVudCk7CiAKLSAgICBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKFxAaW1wbENvbnRlbnQsICRvcGVyYXRpb24sICRpbnRl
cmZhY2UsICRmdW5jdGlvblN0cmluZywgJGluZGVudCk7CisgICAgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbkZ1bmN0aW9uQ2FsbCgkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRm
dW5jdGlvblN0cmluZywgJGluZGVudCk7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIAogc3ViIEdlbmVyYXRl
Q2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMKQEAgLTY4MTgsMTMgKzY4NDksMTIgQEAgc3ViIEdlbmVy
YXRlUHJvdG90eXBlRGVjbGFyYXRpb24KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBl
fSkgeworICAgICMgRklYTUU6IFNob3VsZCB0aGlzIG92ZXJyaWRlIHB1dEJ5SW5kZXggYXMgd2Vs
bD8KKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHV0T25Q
cm90b3R5cGV9KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0
UHJvcGVydHlTbG90Jik7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGJv
b2wgcHV0RGVsZWdhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpK
U1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCk7XG4iKTsKICAg
ICB9CiAKLSAgICAjIEN1c3RvbSBkZWZpbmVPd25Qcm9wZXJ0eSBmdW5jdGlvbgogICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21EZWZpbmVPd25Qcm9wZXJ0eU9u
UHJvdG90eXBlfSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJcbiIpOwogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIGNvbnN0
IEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7XG4iKTsKQEAgLTcw
ODYsMTcgKzcxMTYsMTcgQEAgc3ViIElzQ29uc3RydWN0YWJsZQogICAgICAgICB8fCAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0J1aWx0aW5Db25zdHJ1Y3Rvcn07CiB9CiAKLXN1
YiBJbnN0YW5jZU92ZXJyaWRlc0NhbGwKK3N1YiBJbnN0YW5jZU92ZXJyaWRlc0dldENhbGxEYXRh
CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIHJldHVybiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21DYWxsfSB8fCAkaW50ZXJmYWNlLT57TGVnYWN5Q2Fs
bGVyc30KKyAgICByZXR1cm4gJGludGVyZmFjZS0+e0xlZ2FjeUNhbGxlcnN9IHx8ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldENhbGxEYXRhfSB8fCAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQbHVnaW59OwogfQogCiBzdWIgSGVhZGVyTmVlZHNQcm90
b3R5cGVEZWNsYXJhdGlvbgogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICByZXR1
cm4gSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkKLSAgICAgICAgfHwgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRHZXR0ZXJPblByb3RvdHlwZX0KKyAgICAg
ICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHV0T25Qcm90b3R5
cGV9CiAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbURl
ZmluZU93blByb3BlcnR5T25Qcm90b3R5cGV9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjE5
MjY0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpz
b24JKHdvcmtpbmcgY29weSkKQEAgLTc4LDkgKzc4LDYgQEAKICAgICAgICAgIkN1c3RvbSI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24i
XQogICAgICAgICB9LAotICAgICAgICAiQ3VzdG9tQ2FsbCI6IHsKLSAgICAgICAgICAgICJjb250
ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCiAgICAgICAgICJDdXN0b21D
b25zdHJ1Y3RvciI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFj
ZSJdCiAgICAgICAgIH0sCkBAIC05MywxMyArOTAsMTMgQEAKICAgICAgICAgIkN1c3RvbURlbGV0
ZVByb3BlcnR5IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNl
Il0KICAgICAgICAgfSwKLSAgICAgICAgIkN1c3RvbUVudW1lcmF0ZVByb3BlcnR5IjogeworICAg
ICAgICAiQ3VzdG9tR2V0Q2FsbERhdGEiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2Vk
IjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAotICAgICAgICAiQ3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90IjogeworICAgICAgICAiQ3VzdG9tR2V0T3duUHJvcGVydHlOYW1lcyI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCi0gICAg
ICAgICJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4IjogeworICAgICAgICAiQ3VzdG9t
R2V0T3duUHJvcGVydHlTbG90IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0KICAgICAgICAgfSwKICAgICAgICAgIkN1c3RvbUdldE93blByb3BlcnR5U2xv
dEFuZERlc2NyaXB0b3IiOiB7CkBAIC0xMTcsMTIgKzExNCw2IEBACiAgICAgICAgICJDdXN0b21J
c1JlYWNoYWJsZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFj
ZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJDdXN0b21OYW1lZEdldHRlck9uUHJvdG90eXBlIjog
ewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAgICAgICAg
fSwKLSAgICAgICAgIkN1c3RvbU5hbWVkU2V0dGVyIjogewotICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAgICAgICAgfSwKICAgICAgICAgIkN1c3RvbVByZXZl
bnRFeHRlbnNpb25zIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJm
YWNlIl0KICAgICAgICAgfSwKQEAgLTEzMiw3ICsxMjMsMTAgQEAKICAgICAgICAgIkN1c3RvbVB1
c2hFdmVudEhhbmRsZXJTY29wZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdCiAgICAgICAgIH0sCi0gICAgICAgICJDdXN0b21QdXRGdW5jdGlvbiI6IHsK
KyAgICAgICAgIkN1c3RvbVB1dCI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdCisgICAgICAgIH0sCisgICAgICAgICJDdXN0b21QdXRPblByb3RvdHlwZSI6
IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAg
IH0sCiAgICAgICAgICJDdXN0b21TZXR0ZXIiOiB7CkBAIC0zNDEsNiArMzM1LDEwIEBACiAgICAg
ICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJvcGVyYXRpb24iXSwKICAgICAgICAgICAgICJu
b3RlcyIgOiAiT25seSB1c2VkIGJ5IFdlYktpdFRlc3RSdW5uZXIgYW5kIER1bXBSZW5kZXJUcmVl
IgogICAgICAgICB9LAorICAgICAgICAiUGx1Z2luIjogeworICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAibm90ZXMiIDogIlNob3VsZCBv
bmx5IGJlIHVzZWQgYnkgZWxlbWVudHMgdGhhdCBmb3J3YXJkIHRvIE5ldHNjYXBlIHBsdWctaW5z
IgorICAgICAgICB9LAogICAgICAgICAiUHJpbWFyeUdsb2JhbCI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsi
KiJdLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRl
cmZhY2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0SW50ZXJmYWNlLmlkbAkocmV2aXNpb24gMjE5MjY0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw3IEBACiAvLyBjaGFuZ2VzIGluIGl0cyBvdXRwdXQuCiBbCiAgICAgQWN0
aXZlRE9NT2JqZWN0LAotICAgIEN1c3RvbU5hbWVkU2V0dGVyLAorICAgIEN1c3RvbVB1dCwKICAg
ICBDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlvbjIsCiAgICAgQ29uc3RydWN0b3JDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIENvbnN0cnVjdG9yKERPTVN0cmluZyBz
dHIxLCBvcHRpb25hbCBET01TdHJpbmcgc3RyMiA9ICJkZWZhdWx0U3RyaW5nIiksCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFBsdWdpbkludGVyZmFjZS5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RQbHVnaW5JbnRlcmZhY2UuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0UGx1Z2luSW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIFBsdWdpbgorXSBpbnRlcmZh
Y2UgVGVzdFBsdWdpbkludGVyZmFjZSB7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJ
KHJldmlzaW9uIDIxOTI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTMsMzIgKzQxMyw2
IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlNDZWwKICAgICB0aGlzT2Jq
ZWN0LT5KU1Rlc3RJbnRlcmZhY2U6On5KU1Rlc3RJbnRlcmZhY2UoKTsKIH0KIAotYm9vbCBKU1Rl
c3RJbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJv
cGVydHlTbG90KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwotCi0gICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAodGhpc09iamVj
dC0+cHV0RGVsZWdhdGUoc3RhdGUsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xv
dCwgcHV0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKLQotICAgIHJldHVybiBK
U09iamVjdDo6cHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQ
cm9wZXJ0eVNsb3QpOwotfQotCi1ib29sIEpTVGVzdEludGVyZmFjZTo6cHV0QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZFRocm93KQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0SW50ZXJmYWNlKj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwotCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tKHN0YXRlLCBpbmRleCk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwg
c2hvdWxkVGhyb3cpOwotICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKHRoaXNP
YmplY3QtPnB1dERlbGVnYXRlKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LCBwdXRS
ZXN1bHQpKQotICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwotCi0gICAgcmV0dXJuIEpTT2JqZWN0
OjpwdXRCeUluZGV4KGNlbGwsIHN0YXRlLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKLX0K
LQogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlKiBJRExBdHRyaWJ1dGU8SlNUZXN0
SW50ZXJmYWNlPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZSo+KHN0
YXRlLnZtKCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmgJKHJldmlzaW9uIDIxOTI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzks
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SW50ZXJmYWNlKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEludGVyZmFjZT4mJik7CiAKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mKTsKLSAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
LCBib29sJiBwdXRSZXN1bHQpOwogfTsKIAogY2xhc3MgSlNUZXN0SW50ZXJmYWNlT3duZXIgOiBw
dWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbklu
dGVyZmFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyNjkgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTVGVzdFBsdWdpbkludGVyZmFjZS5oIgorCisjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCIKKyNp
bmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNU
ZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0UGx1Z2luSW50
ZXJmYWNlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
eworICAgICAgICBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlPih2
bS5oZWFwKSkgSlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBy
ZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAg
IHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK3Vz
aW5nIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0UGx1Z2luSW50ZXJmYWNlPjsKKwordGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7
CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9u
UHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiVGVzdFBsdWdpbkludGVyZmFjZSIpKSksIFJlYWRPbmx5IHwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0UGx1
Z2luSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvcikgfTsKKworLyogSGFz
aCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJj
b25zdHJ1Y3RvciIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwKK307CisKK2Nv
bnN0IENsYXNzSW5mbyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IlRlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlw
ZSkgfTsKKwordm9pZCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZh
bHVlcywgKnRoaXMpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0UGx1Z2luSW50ZXJmYWNl
OjpzX2luZm8gPSB7ICJUZXN0UGx1Z2luSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RQbHVnaW5JbnRlcmZhY2UpIH07
CisKK0pTVGVzdFBsdWdpbkludGVyZmFjZTo6SlNUZXN0UGx1Z2luSW50ZXJmYWNlKFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFBs
dWdpbkludGVyZmFjZT4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RQbHVnaW5JbnRl
cmZhY2U+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQorCit2
b2lkIEpTVGVzdFBsdWdpbkludGVyZmFjZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmNyZWF0ZVByb3Rv
dHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0
dXJuIEpTVGVzdFBsdWdpbkludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Jmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pT
T2JqZWN0KiBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxK
U1Rlc3RQbHVnaW5JbnRlcmZhY2U+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpT
VGVzdFBsdWdpbkludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxK
U1Rlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3RQbHVnaW5JbnRl
cmZhY2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0UGx1Z2luSW50
ZXJmYWNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4o
Y2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0UGx1Z2luSW50ZXJmYWNlOjp+SlNUZXN0UGx1
Z2luSW50ZXJmYWNlKCk7Cit9CisKK2Jvb2wgSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4ob2JqZWN0KTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgaWYgKHBsdWdp
bkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgc3RhdGUsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCk7
Cit9CisKK2Jvb2wgSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGluZGV4LCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3RQbHVnaW5JbnRlcmZhY2UqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKKyAgICBpZiAocGx1Z2luRWxlbWVudEN1c3RvbUdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KG9iamVjdCwgc3RhdGUsIGluZGV4LCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RQ
bHVnaW5JbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0
UHJvcGVydHlTbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0UGx1
Z2luSW50ZXJmYWNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOworCisgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAo
cGx1Z2luRWxlbWVudEN1c3RvbVB1dCh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgcHV0UHJvcGVydHlTbG90LCBwdXRSZXN1bHQpKQorICAgICAgICByZXR1cm4gcHV0UmVz
dWx0OworCisgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgc3RhdGUsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7Cit9CisKK2Jvb2wgSlNUZXN0UGx1Z2lu
SW50ZXJmYWNlOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBzdGF0ZSwgdW5z
aWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2UqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKKyAgICBQ
dXRQcm9wZXJ0eVNsb3QgcHV0UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIHNob3VsZFRocm93KTsK
KyAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOworICAgIGlmIChwbHVnaW5FbGVtZW50Q3VzdG9t
UHV0KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNs
b3QsIHB1dFJlc3VsdCkpCisgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7CisKKyAgICByZXR1cm4g
SlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOworfQorCitDYWxsVHlwZSBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldENhbGxEYXRhKEpT
Q2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgcmV0dXJuIHBsdWdpbkVs
ZW1lbnRDdXN0b21HZXRDYWxsRGF0YSh0aGlzT2JqZWN0LCBjYWxsRGF0YSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFBs
dWdpbkludGVyZmFjZVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Rlc3RQbHVnaW5JbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBwcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0UGx1Z2luSW50ZXJmYWNl
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0
byogcHJvdG90eXBlID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0UGx1Z2luSW50ZXJmYWNlUHJv
dG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtF
TFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qoc3Rh
dGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpKTsKK30KKworYm9vbCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0o
aGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIEpTVGVzdFBsdWdpbkludGVyZmFjZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rl
c3RQbHVnaW5JbnRlcmZhY2UgPSBzdGF0aWNfY2FzdDxKU1Rlc3RQbHVnaW5JbnRlcmZhY2UqPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZq
c1Rlc3RQbHVnaW5JbnRlcmZhY2UtPndyYXBwZWQoKSwganNUZXN0UGx1Z2luSW50ZXJmYWNlKTsK
K30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4pCisj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAo
KmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RQbHVnaW5JbnRlcmZhY2VAV2ViQ29yZUBANkJA
IilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29y
ZTE5VGVzdFBsdWdpbkludGVyZmFjZUVbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1Zh
bHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWY8VGVzdFBsdWdpbkludGVyZmFjZT4mJiBpbXBsKQoreworCisjaWYg
RU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIg
PSAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7CisjaWYgUExBVEZPUk0o
V0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KF9faWRlbnRpZmllcigiPz9fN1Rlc3RQbHVnaW5JbnRlcmZhY2VAV2ViQ29yZUBANkJA
IikpOworI2Vsc2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2Vi
Q29yZTE5VGVzdFBsdWdpbkludGVyZmFjZUVbMl07CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMg
ZmFpbHMgVGVzdFBsdWdpbkludGVyZmFjZSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3Ug
bmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1
dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3BvbHltb3JwaGljPFRlc3RQbHVnaW5JbnRlcmZhY2U+Ojp2YWx1ZSwgIlRlc3RQbHVnaW5JbnRl
cmZhY2UgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNz
ZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBU
ZXN0UGx1Z2luSW50ZXJmYWNlIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0UGx1Z2luSW50ZXJmYWNl
IGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJy
ZW50bHkgcmVxdWlyZSBUZXN0UGx1Z2luSW50ZXJmYWNlIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRp
bmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBh
dHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNT
RVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRp
ZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RQbHVnaW5JbnRlcmZhY2U+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFBsdWdpbklu
dGVyZmFjZSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBp
bXBsKTsKK30KKworVGVzdFBsdWdpbkludGVyZmFjZSogSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjp0
b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0
byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZSo+KHZt
LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk0IEBACisv
KgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01X
cmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdFBsdWdpbkludGVyZmFjZS5oIgorI2luY2x1ZGUgPHJ1
bnRpbWUvQ2FsbERhdGEuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2UgOiBwdWJsaWMg
SlNET01XcmFwcGVyPFRlc3RQbHVnaW5JbnRlcmZhY2U+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3RQbHVnaW5JbnRlcmZhY2U+OworICAgIHN0YXRpYyBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFBsdWdpbkludGVyZmFjZT4mJiBp
bXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFBsdWdpbkludGVyZmFjZT4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RQbHVnaW5JbnRlcmZhY2Uoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdFBsdWdpbkludGVyZmFjZSogdG9XcmFw
cGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFt
ZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUs
IEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0M6
OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIHN0YXRpYyBKU0M6OkNhbGxUeXBlIGdldENh
bGxEYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDYWxsRGF0YSYpOworCisgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSB8
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworcHJvdGVjdGVkOgorICAgIEpTVGVzdFBsdWdpbkludGVy
ZmFjZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RQbHVnaW5J
bnRlcmZhY2U+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9Owor
CitjbGFzcyBKU1Rlc3RQbHVnaW5JbnRlcmZhY2VPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5k
bGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xv
dFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3du
ZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0UGx1Z2luSW50ZXJmYWNlKikK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0UGx1Z2luSW50ZXJmYWNlT3duZXI+
IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFw
cGVyS2V5KFRlc3RQbHVnaW5JbnRlcmZhY2UqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1
cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdFBsdWdpbkludGVyZmFjZSYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdFBsdWdpbkludGVyZmFjZSogaW1wbCkgeyByZXR1cm4gaW1wbCA/
IHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlND
OjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFJlZjxUZXN0UGx1Z2luSW50ZXJmYWNlPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0UGx1Z2luSW50ZXJmYWNlPiYmIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwucmVs
ZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpT
RE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0UGx1Z2luSW50ZXJmYWNlPiB7CisgICAgdXNp
bmcgV3JhcHBlckNsYXNzID0gSlNUZXN0UGx1Z2luSW50ZXJmYWNlOworICAgIHVzaW5nIFRvV3Jh
cHBlZFJldHVyblR5cGUgPSBUZXN0UGx1Z2luSW50ZXJmYWNlKjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlv
bi5pZGwJKHJldmlzaW9uIDIxOTI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksOSArMTksOSBAQAogICovCiAKIFsK
LSAgICBDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSwKKyAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eU5h
bWVzLAogICAgIEN1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IsCi0gICAgQ3Vz
dG9tTmFtZWRTZXR0ZXIsCisgICAgQ3VzdG9tUHV0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVf
RVhQT1JULAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgSlNDdXN0b21IZWFkZXIsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmlkbAkocmV2aXNpb24g
MjE5MjY0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTE5LDkgKzE5LDcgQEAKICAqLwogCiBbCi0gICAgQ3VzdG9tQ2FsbCwK
LSAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNjcmlwdG9yLAotICAgIEN1c3RvbU5h
bWVkU2V0dGVyLAorICAgIFBsdWdpbgogXSBpbnRlcmZhY2UgSFRNTEFwcGxldEVsZW1lbnQgOiBI
VE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247CiAg
ICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWx0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyMTkyNjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw5
ICsxOSw3IEBACiAgKi8KIAogWwotICAgIEN1c3RvbUNhbGwsCi0gICAgQ3VzdG9tR2V0T3duUHJv
cGVydHlTbG90QW5kRGVzY3JpcHRvciwKLSAgICBDdXN0b21OYW1lZFNldHRlciwKKyAgICBQbHVn
aW4KIF0gaW50ZXJmYWNlIEhUTUxFbWJlZEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1Jl
ZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0
ZSBET01TdHJpbmcgaGVpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5pZGwJKHJldmlzaW9uIDIxOTI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw5ICsxOSw3IEBACiAgKi8K
IAogWwotICAgIEN1c3RvbUNhbGwsCi0gICAgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90QW5kRGVz
Y3JpcHRvciwKLSAgICBDdXN0b21OYW1lZFNldHRlcgorICAgIFBsdWdpbgogXSBpbnRlcmZhY2Ug
SFRNTE9iamVjdEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IEhUTUxGb3JtRWxlbWVudCBmb3JtOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGNvZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAyMTkyNjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDEzICszMCwxMiBAQCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKICAgICBDaGVj
a1NlY3VyaXR5LAogICAgIEN1c3RvbURlZmluZU93blByb3BlcnR5LAogICAgIEN1c3RvbURlbGV0
ZVByb3BlcnR5LAotICAgIEN1c3RvbUVudW1lcmF0ZVByb3BlcnR5LAorICAgIEN1c3RvbUdldE93
blByb3BlcnR5TmFtZXMsCiAgICAgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90LAotICAgIEN1c3Rv
bUdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsCiAgICAgQ3VzdG9tR2V0UHJvdG90eXBlLAogICAg
IEN1c3RvbVByZXZlbnRFeHRlbnNpb25zLAogICAgIEN1c3RvbVByb3h5VG9KU09iamVjdCwKLSAg
ICBDdXN0b21QdXRGdW5jdGlvbiwKKyAgICBDdXN0b21QdXQsCiAgICAgQ3VzdG9tVG9TdHJpbmdO
YW1lLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEltcGxpY2l0VGhpcywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaWRsCShyZXZpc2lvbiAyMTkyNjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMx
LDE2IEBACiAgICAgQ3VzdG9tRGVmaW5lT3duUHJvcGVydHksCiAgICAgQ3VzdG9tRGVmaW5lT3du
UHJvcGVydHlPblByb3RvdHlwZSwKICAgICBDdXN0b21EZWxldGVQcm9wZXJ0eSwKLSAgICBDdXN0
b21FbnVtZXJhdGVQcm9wZXJ0eSwKLSAgICBDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNj
cmlwdG9yLAorICAgIEN1c3RvbUdldE93blByb3BlcnR5TmFtZXMsCisgICAgQ3VzdG9tR2V0T3du
UHJvcGVydHlTbG90LAogICAgIEN1c3RvbUdldFByb3RvdHlwZSwKLSAgICBDdXN0b21OYW1lZEdl
dHRlck9uUHJvdG90eXBlLAotICAgIEN1c3RvbU5hbWVkU2V0dGVyLAogICAgIEN1c3RvbVByZXZl
bnRFeHRlbnNpb25zLAorICAgIEN1c3RvbVB1dCwKKyAgICBDdXN0b21QdXRPblByb3RvdHlwZSwK
ICAgICBDdXN0b21Ub1N0cmluZ05hbWUsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRnJh
bWUsCiAgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCi0gICAgVW5mb3JnZWFi
bGUsCisgICAgVW5mb3JnZWFibGUKIF0gaW50ZXJmYWNlIExvY2F0aW9uIHsKICAgICBbU2V0dGVy
Q2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlv
biwgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZT
dHJpbmcgaHJlZjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCShyZXZpc2lv
biAyMTkyNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogWwotICAgIEN1c3RvbUVudW1lcmF0ZVBy
b3BlcnR5LAorICAgIEN1c3RvbUdldE93blByb3BlcnR5TmFtZXMsCiAgICAgR2VuZXJhdGVJc1Jl
YWNoYWJsZT1JbXBsRnJhbWUsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiBdIGludGVyZmFj
ZSBTdG9yYWdlIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>