<?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>171588</bug_id>
          
          <creation_ts>2017-05-02 18:11:17 -0700</creation_ts>
          <short_desc>Make the [EnabledBySetting] extended attribute work for any attribute or operation on a prototype</short_desc>
          <delta_ts>2017-05-04 11:39:09 -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>
          
          <blocked>148363</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1303907</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-02 18:11:17 -0700</bug_when>
    <thetext>Make the [EnabledBySetting] extended attribute work for any attribute or operation on a prototype</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303910</commentid>
    <comment_count>1</comment_count>
      <attachid>308876</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-02 18:23:41 -0700</bug_when>
    <thetext>Created attachment 308876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304696</commentid>
    <comment_count>2</comment_count>
      <attachid>308876</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-05-04 10:55:04 -0700</bug_when>
    <thetext>Comment on attachment 308876
Patch

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

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2891
&gt; +}
&gt; +
&gt; +#endif

Nit: the #if had no blank line before the code.

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:4564
&gt; +
&gt; +#endif

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304723</commentid>
    <comment_count>3</comment_count>
      <attachid>308876</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-04 11:39:07 -0700</bug_when>
    <thetext>Comment on attachment 308876
Patch

Clearing flags on attachment: 308876

Committed r216198: &lt;http://trac.webkit.org/changeset/216198&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304724</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-04 11:39:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308876</attachid>
            <date>2017-05-02 18:23:41 -0700</date>
            <delta_ts>2017-05-04 11:39:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171588-20170502182315.patch</filename>
            <type>text/plain</type>
            <size>139489</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExOSBAQAorMjAxNy0wNS0wMiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgdGhlIFtFbmFibGVkQnlTZXR0
aW5nXSBleHRlbmRlZCBhdHRyaWJ1dGUgd29yayBmb3IgYW55IGF0dHJpYnV0ZSBvciBvcGVyYXRp
b24gb24gYSBwcm90b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MTU4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01JdGVyYXRvcjo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hl
bGw6OnNldFdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRET01Qcm90b3R5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
aW5pdFNjcmlwdCk6CisgICAgICAgIFVwZGF0ZSB0byBhY2NvdW50IGZvciBjcmVhdGVQcm90b3R5
cGUgYW5kIHByb3RvdHlwZSB0YWtpbmcgdGhlIGdsb2JhbCBvYmplY3QgYnkgcmVmZXJlbmNlLgor
ICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKE5lZWRzU2V0dGluZ3NDaGVja0ZvclByb3RvdHlwZVByb3BlcnR5KToKKyAgICAg
ICAgQWRkIHByZWRpY2F0ZSB0byBkZXRlcm1pbmUgaWYgYW4gaW50ZXJmYWNlIGhhcyBhbnkgc2V0
dGluZ3MgZW5hYmxlZCBwcm9wZXJ0aWVzIG9uIHRoZSBwcm90b3R5cGUsCisgICAgICAgIG5lZWRl
ZCB0byBkZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHBhc3MgdGhlIGdsb2JhbCBvYmplY3QgdG8gZmlu
aXNoQ3JlYXRpb24uCisKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgVXBkYXRl
IHNpZ25hdHVyZSBvZiBib3RoIGNyZWF0ZVByb3RvdHlwZSBhbmQgcHJvdG90eXBlIHRvIHRha2Ug
SlNET01HbG9iYWxPYmplY3QmIHJhdGhlciB0aGFuCisgICAgICAgIGEgSlNDOjpKU0dsb2JhbE9i
amVjdCosIHRoaXMgYWxsb3dzIHVzIHRvIHBhc3MgdGhlIG1vcmUgc3BlY2lmaWMgdHlwZSB0byB0
aGUgcHJvdG90eXBlIGNvbnN0cnVjdG9yLAorICAgICAgICBhbmQgYWNjZXNzIHRoZSBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IGZvciB0aGUgU2V0dGluZ3MuCisKKyAgICAgICAgKEdlbmVyYXRlUHJv
cGVydGllc0hhc2hUYWJsZSk6CisgICAgICAgIFVwZGF0ZSB0byByZXR1cm4sIHZpYSBvdXQgcGFy
YW1ldGVyLCBhcnJheXMgd2l0aCB0aGUgYXR0cmlidXRlcyBhbmQgb3BlcmF0aW9ucyB0aGF0IHNw
ZWNpZnkgRW5hYmxlZEJ5U2V0dGluZy4gVGhpcworICAgICAgICBtaW1pY3MgdGhlIG1vZGVsIHVz
ZWQgZm9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuCisKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICBJbiB7Q2xhc3N9UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbiwg
YWRkIGNvZGUgdG8gY2hlY2sgc2V0dGluZ3MgdG8gc2VlIGlmIGFuIGF0dHJpYnV0ZSBvciBvcGVy
YXRpb24gc2hvdWxkIGJlIGVuYWJsZWQsCisgICAgICAgIGFuZCBpZiBpdCBzaG91bGRuJ3QgcmVt
b3ZlIGl0IGZyb20gdGhlIG9iamVjdC4gVGhpcywgYWdhaW4sIGlzIG1vZGVsZWQgb24gUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy4KKworICAgICAgICAoR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlv
bik6CisgICAgICAgIFVwZGF0ZSBzaWduYXR1cmVzIHRvIHRha2UgSlNET01HbG9iYWxPYmplY3Qm
IGFuZCBzcGVjaWFsaXplIGZpbmlzaENyZWF0aW9uIHRvIHRha2Ugb25lIGlmIHRoZXJlIGFyZSBh
bnkgcHJvcGVydGllcworICAgICAgICB0aGF0IHJlcXVpcmUgc2V0dGluZ3MgdG8gZW5hYmxlLgor
CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcyk6CisgICAgICAgIFVw
ZGF0ZSBmb3IgbmV3IHNpZ25hdHVyZSBvZiBwcm90b3R5cGUoLi4uKS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Lmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaDoKKyAgICAgICAgVXBkYXRlIHRlc3QgcmVzdWx0
cyBmb3IgbmV3IHRlc3QgdmFsdWVzIGFuZCBjaGFuZ2VzIGluIHNpZ25hdHVyZXMgdG8gcGFzcyBK
U0RPTUdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbDoKKyAgICAgICAgQWRkIHRlc3RzIGZvciBbRW5hYmxlQnlTZXR0aW5nXSBmb3IgYXR0
cmlidXRlcyBhbmQgb3BlcmF0aW9ucy4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgIFVw
ZGF0ZSBjcmVhdGVQcm90b3R5cGUgZnVuY3Rpb24gdG8gdGFrZSB0aGUgZ2xvYmFsIG9iamVjdCBi
eSByZWZlcmVuY2UuCisKIDIwMTctMDUtMDIgIEFuZHJldyBHb2xkICA8YWdvbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFR5cG8gaW4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5t
bQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAkocmV2
aXNpb24gMjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw5ICs5OSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIHN0YXRpYyBQcm90b3R5cGUqIGNyZWF0ZVByb3Rv
dHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAg
IHN0YXRpYyBQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFByb3RvdHlw
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90b3R5cGUoKSkpOworICAg
ICAgICByZXR1cm4gUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QuaXRlcmF0
b3JQcm90b3R5cGUoKSkpOwogICAgIH0KIAogICAgIEpTQzo6SlNWYWx1ZSBuZXh0KEpTQzo6RXhl
Y1N0YXRlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDE0ICs4MSwx
NCBAQCB2b2lkIEpTRE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyhSZWZQdHI8CiAgICAgLy8gY29u
c3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24gcHJvdG90eXBlLikKICAgICAKICAgICBWTSYg
dm0gPSBjb21tb25WTSgpOwotICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gSlNE
T01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgMCwganNOdWxsKCkpOwotICAg
IFN0cm9uZzxKU0RPTVdpbmRvd1Byb3RvdHlwZT4gcHJvdG90eXBlKHZtLCBKU0RPTVdpbmRvd1By
b3RvdHlwZTo6Y3JlYXRlKHZtLCAwLCBwcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRE9NV2luZG93UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIG51bGxwdHIsIGpzTnVsbCgpKTsKKyAgICBTdHJvbmc8SlNET01XaW5kb3dQcm90
b3R5cGU+IHByb3RvdHlwZSh2bSwgSlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZSh2bSwgbnVs
bHB0ciwgcHJvdG90eXBlU3RydWN0dXJlKSk7CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIDAsIHByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvdzo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBudWxscHRyLCBwcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTRE9NV2luZG93KiBqc0RPTVdpbmRv
dyA9IEpTRE9NV2luZG93OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgKmRvbVdpbmRvdywgdGhpcyk7
CiAgICAgcHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KHZtLCBqc0RPTVdp
bmRvdyk7CiAKLSAgICBTdHJ1Y3R1cmUqIHdpbmRvd1Byb3BlcnRpZXNTdHJ1Y3R1cmUgPSBKU0RP
TVdpbmRvd1Byb3BlcnRpZXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNET01XaW5kb3csIEpTRXZl
bnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwganNET01XaW5kb3cpKTsKKyAgICBTdHJ1Y3R1cmUqIHdp
bmRvd1Byb3BlcnRpZXNTdHJ1Y3R1cmUgPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwganNET01XaW5kb3csIEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwgKmpz
RE9NV2luZG93KSk7CiAgICAgSlNET01XaW5kb3dQcm9wZXJ0aWVzKiB3aW5kb3dQcm9wZXJ0aWVz
ID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzOjpjcmVhdGUod2luZG93UHJvcGVydGllc1N0cnVjdHVy
ZSwgKmpzRE9NV2luZG93KTsKIAogICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3Rv
dHlwZVdpdGhvdXRUcmFuc2l0aW9uKHZtLCB3aW5kb3dQcm9wZXJ0aWVzKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlckNhY2hlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUuaAkocmV2aXNpb24g
MjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyQ2FjaGUu
aAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFw
cGVyQ2xhc3M+IGlubGluZSBKCiB7CiAgICAgaWYgKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmluZm8o
KSkpCiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7Ci0gICAgcmV0dXJuIGNhY2hlRE9NU3RydWN0
dXJlKGdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9i
YWxPYmplY3QsIFdyYXBwZXJDbGFzczo6Y3JlYXRlUHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0
KSksIFdyYXBwZXJDbGFzczo6aW5mbygpKTsKKyAgICByZXR1cm4gY2FjaGVET01TdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9i
amVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpLCBX
cmFwcGVyQ2xhc3M6OmluZm8oKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFz
cz4gaW5saW5lIEpTQzo6U3RydWN0dXJlKiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlKEpTQzo6
RXhlY1N0YXRlKiBleGVjKQpAQCAtOTMsOSArOTMsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFw
cGVyQ2xhc3M+IGlubGluZSBKCiAgICAgcmV0dXJuIGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xh
c3M+KGV4ZWMtPnZtKCksICpkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMp
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgSlNDOjpKU09i
amVjdCogZ2V0RE9NUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6
OkpTT2JqZWN0KiBnZXRET01Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3Qq
Pihhc09iamVjdChnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPih2bSwgKkpTQzo6anNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSktPnN0b3JlZFByb3RvdHlwZSgpKSk7
CisgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChnZXRET01T
dHJ1Y3R1cmU8V3JhcHBlckNsYXNzPih2bSwgZ2xvYmFsT2JqZWN0KS0+c3RvcmVkUHJvdG90eXBl
KCkpKTsKIH0KIAogaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciopCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KAogICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAg
ICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCktPmdsb2Jh
bE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICAgICAgZGVkaWNh
dGVkQ29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCgqbV92bSwg
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOwotICAgICAgICBkZWRpY2F0ZWRDb250
ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24o
Km1fdm0sIEpTV29ya2VyR2xvYmFsU2NvcGU6OnByb3RvdHlwZSgqbV92bSwgbV93b3JrZXJHbG9i
YWxTY29wZVdyYXBwZXIuZ2V0KCkpKTsKKyAgICAgICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlw
ZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBKU1dv
cmtlckdsb2JhbFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlci5nZXQoKSkpOwogCiAgICAgICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKICAgICAgICAgcHJveHktPnN0cnVjdHVyZSgpLT5z
ZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtOTgzLDYgKzk4Mywy
NCBAQCBzdWIgTmVlZHNSdW50aW1lQ2hlY2sKICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEZvcldvcmxkfTsKIH0KIAorc3ViIE5lZWRzU2V0dGluZ3ND
aGVja0ZvclByb3RvdHlwZVByb3BlcnR5Cit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owor
CisgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewor
ICAgICAgICBuZXh0IGlmIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAk
ZnVuY3Rpb24pOworCisgICAgICAgIHJldHVybiAxIGlmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ307CisgICAgfQorCisgICAgZm9yZWFjaCBteSAkYXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgIG5leHQgaWYgQXR0
cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAg
ICByZXR1cm4gMSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlT
ZXR0aW5nfTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogIyBodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNlcy1vcGVyYXRpb25zCiBzdWIgT3BlcmF0aW9uU2hvdWxkQmVPbklu
c3RhbmNlCiB7CkBAIC0xODAzLDggKzE4MjEsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAg
ICMgUHJvdG90eXBlCiAgICAgdW5sZXNzIChTaG91bGRVc2VHbG9iYWxPYmplY3RQcm90b3R5cGUo
JGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4i
KTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpO1xuIik7Cisg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHBy
b3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTtcbiIpOwogICAgIH0KIAogICAg
ICMgSlNWYWx1ZSB0byBpbXBsZW1lbnRhdGlvbiB0eXBlCkBAIC0yMjY5LDcgKzIyODcsNyBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKIAogc3ViIEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZQogewot
ICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAkaXNJbnN0YW5jZSwgJGhhc2hLZXlzLCAkaGFz
aFNwZWNpYWxzLCAkaGFzaFZhbHVlMSwgJGhhc2hWYWx1ZTIsICRjb25kaXRpb25hbHMsICRydW50
aW1lRW5hYmxlZEZ1bmN0aW9ucywgJHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcykgPSBAXzsKKyAg
ICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlzSW5zdGFuY2UsICRoYXNoS2V5cywgJGhhc2hT
cGVjaWFscywgJGhhc2hWYWx1ZTEsICRoYXNoVmFsdWUyLCAkY29uZGl0aW9uYWxzLCAkcnVudGlt
ZUVuYWJsZWRGdW5jdGlvbnMsICRydW50aW1lRW5hYmxlZEF0dHJpYnV0ZXMsICRzZXR0aW5nc0Vu
YWJsZWRGdW5jdGlvbnMsICRzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzKSA9IEBfOwogCiAgICAg
IyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGZ1bmN0aW9ucyBvbiAkaW50ZXJmYWNlLgogICAgIG15
ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKQEAgLTIzMzEsNiArMjM0
OSwxMCBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIGlmIChOZWVk
c1J1bnRpbWVDaGVjaygkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgcHVzaChAJHJ1bnRpbWVF
bmFibGVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30pIHsKKyAg
ICAgICAgICAgIHB1c2goQCRzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzLCAkYXR0cmlidXRlKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIG15IEBmdW5jdGlvbnMgPSBAeyRpbnRlcmZhY2UtPmZ1
bmN0aW9uc307CkBAIC0yMzcyLDYgKzIzOTQsMTAgQEAgc3ViIEdlbmVyYXRlUHJvcGVydGllc0hh
c2hUYWJsZQogICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hlY2soJGZ1bmN0aW9uKSkgewogICAg
ICAgICAgICAgcHVzaChAJHJ1bnRpbWVFbmFibGVkRnVuY3Rpb25zLCAkZnVuY3Rpb24pOwogICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5h
YmxlZEJ5U2V0dGluZ30pIHsKKyAgICAgICAgICAgIHB1c2goQCRzZXR0aW5nc0VuYWJsZWRGdW5j
dGlvbnMsICRmdW5jdGlvbik7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gJHByb3Bl
cnR5Q291bnQ7CkBAIC0zMTg5LDEyICszMjE1LDE2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgbXkgJGhhc2hOYW1lID0gJGNsYXNzTmFtZSAuICJUYWJsZSI7CiAgICAgbXkgQHJ1
bnRpbWVFbmFibGVkRnVuY3Rpb25zID0gKCk7CiAgICAgbXkgQHJ1bnRpbWVFbmFibGVkQXR0cmli
dXRlcyA9ICgpOworICAgIG15IEBzZXR0aW5nc0VuYWJsZWRGdW5jdGlvbnMgPSAoKTsKKyAgICBt
eSBAc2V0dGluZ3NFbmFibGVkQXR0cmlidXRlcyA9ICgpOwogCiAgICAgIyBHZW5lcmF0ZSBoYXNo
IHRhYmxlIGZvciBwcm9wZXJ0aWVzIG9uIHRoZSBpbnN0YW5jZS4KICAgICBteSAkbnVtSW5zdGFu
Y2VQcm9wZXJ0aWVzID0gR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKCRvYmplY3QsICRpbnRl
cmZhY2UsIDEsCiAgICAgICAgIFxAaGFzaEtleXMsIFxAaGFzaFNwZWNpYWxzLAogICAgICAgICBc
QGhhc2hWYWx1ZTEsIFxAaGFzaFZhbHVlMiwKLSAgICAgICAgXCVjb25kaXRpb25hbHMsIFxAcnVu
dGltZUVuYWJsZWRGdW5jdGlvbnMsIFxAcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzKTsKKyAgICAg
ICAgXCVjb25kaXRpb25hbHMsCisgICAgICAgIFxAcnVudGltZUVuYWJsZWRGdW5jdGlvbnMsIFxA
cnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzLAorICAgICAgICBcQHNldHRpbmdzRW5hYmxlZEZ1bmN0
aW9ucywgXEBzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzKTsKIAogICAgICRvYmplY3QtPkdlbmVy
YXRlSGFzaFRhYmxlKCRoYXNoTmFtZSwgJG51bUluc3RhbmNlUHJvcGVydGllcywKICAgICAgICAg
XEBoYXNoS2V5cywgXEBoYXNoU3BlY2lhbHMsCkBAIC0zMzEyLDEyICszMzQyLDE3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgJWNvbmRpdGlvbmFscyA9ICgpOwogICAgIEBydW50
aW1lRW5hYmxlZEZ1bmN0aW9ucyA9ICgpOwogICAgIEBydW50aW1lRW5hYmxlZEF0dHJpYnV0ZXMg
PSAoKTsKKyAgICBAc2V0dGluZ3NFbmFibGVkRnVuY3Rpb25zID0gKCk7CisgICAgQHNldHRpbmdz
RW5hYmxlZEF0dHJpYnV0ZXMgPSAoKTsKIAogICAgICMgR2VuZXJhdGUgaGFzaCB0YWJsZSBmb3Ig
cHJvcGVydGllcyBvbiB0aGUgcHJvdG90eXBlLgogICAgIG15ICRudW1Qcm90b3R5cGVQcm9wZXJ0
aWVzID0gR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKCRvYmplY3QsICRpbnRlcmZhY2UsIDAs
CiAgICAgICAgIFxAaGFzaEtleXMsIFxAaGFzaFNwZWNpYWxzLAogICAgICAgICBcQGhhc2hWYWx1
ZTEsIFxAaGFzaFZhbHVlMiwKLSAgICAgICAgXCVjb25kaXRpb25hbHMsIFxAcnVudGltZUVuYWJs
ZWRGdW5jdGlvbnMsIFxAcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgXCVjb25k
aXRpb25hbHMsCisgICAgICAgIFxAcnVudGltZUVuYWJsZWRGdW5jdGlvbnMsIFxAcnVudGltZUVu
YWJsZWRBdHRyaWJ1dGVzLAorICAgICAgICBcQHNldHRpbmdzRW5hYmxlZEZ1bmN0aW9ucywgXEBz
ZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzKTsKKwogICAgIG15ICRoYXNoU2l6ZSA9ICRudW1Qcm90
b3R5cGVQcm9wZXJ0aWVzOwogCiAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGludGVyZmFj
ZS0+Y29uc3RhbnRzfSkgewpAQCAtMzM0OCw3ICszMzgzLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKFByb3RvdHlwZUhhc1N0YXRpY1Byb3BlcnR5VGFi
bGUoJGludGVyZmFjZSkgJiYgIUlzR2xvYmFsT3JQcmltYXJ5R2xvYmFsSW50ZXJmYWNlKCRpbnRl
cmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSlcbiIpOworICAgICAgICBteSAkbmVlZHNH
bG9iYWxPYmplY3RJbkZpbmlzaENyZWF0aW9uID0gTmVlZHNTZXR0aW5nc0NoZWNrRm9yUHJvdG90
eXBlUHJvcGVydHkoJGludGVyZmFjZSk7CisKKyAgICAgICAgaWYgKCRuZWVkc0dsb2JhbE9iamVj
dEluRmluaXNoQ3JlYXRpb24pIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9p
ZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdClcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKVxuIik7CisgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgJHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0
aGlzKTtcbiIpOwpAQCAtMzM2OSw2ICszNDEwLDMwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKKyAgICAgICAgbXkgQHNldHRpbmdzRW5hYmxlZFBy
b3BlcnRpZXMgPSBAc2V0dGluZ3NFbmFibGVkRnVuY3Rpb25zOworICAgICAgICBwdXNoKEBzZXR0
aW5nc0VuYWJsZWRQcm9wZXJ0aWVzLCBAc2V0dGluZ3NFbmFibGVkQXR0cmlidXRlcyk7CisgICAg
ICAgIGlmIChzY2FsYXIoQHNldHRpbmdzRW5hYmxlZFByb3BlcnRpZXMpKSB7CisgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGluZ3MuaCIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byogY29udGV4dCA9IGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFT
U0VSVCghY29udGV4dCB8fCBjb250ZXh0LT5pc0RvY3VtZW50KCkpO1xuIik7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUgKEBzZXR0aW5n
c0VuYWJsZWRQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9u
T3JBdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisKKyAgICAgICAg
ICAgICAgICBteSAkZW5hYmxlRnVuY3Rpb24gPSBUb01ldGhvZE5hbWUoJGZ1bmN0aW9uT3JBdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSAuICJFbmFibGVk
IjsKKyAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbk9yQXR0cmlidXRlLT5uYW1l
OworCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjb250ZXh0
IHx8ICFkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnNldHRpbmdzKCkuJHtlbmFibGVGdW5j
dGlvbn0oKSkge1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFt
ZVwiKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QuZ2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CisKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVy
ZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCRmdW5jdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9KTsKICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKQEAgLTM1MjIsMTggKzM1
ODcsMTggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CiAKICAgICB1bmxlc3MgKFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlw
ZSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTT2JqZWN0KiAk
e2NsYXNzTmFtZX06OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtj
bGFzc05hbWV9OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAg
ICAgIGlmICgkaW50ZXJmYWNlLT5wYXJlbnRUeXBlKSB7CiAgICAgICAgICAgICBteSAkcGFyZW50
Q2xhc3NOYW1lRm9yUHJvdG90eXBlID0gIkpTIiAuICRpbnRlcmZhY2UtPnBhcmVudFR5cGUtPm5h
bWU7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJHtjbGFzc05h
bWV9UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgJHtjbGFzc05hbWV9UHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgJHtwYXJlbnRDbGFzc05hbWVG
b3JQcm90b3R5cGV9Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVByb3RvdHlw
ZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgJHtwYXJlbnRDbGFzc05hbWVGb3JQcm90b3R5
cGV9Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTtcbiIpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgbXkgJHByb3RvdHlwZSA9ICRpbnRlcmZhY2UtPmlzRXhjZXB0aW9uID8g
ImVycm9yUHJvdG90eXBlIiA6ICJvYmplY3RQcm90b3R5cGUiOwotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+JHtwcm90b3R5cGV9KCkpKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LiR7cHJvdG90eXBl
fSgpKSk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU09iamVjdCogJHtjbGFzc05hbWV9
Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNPYmplY3QqICR7Y2xhc3NOYW1lfTo6cHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPCR7Y2xhc3NOYW1lfT4odm0sIGdsb2JhbE9iamVj
dCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwpAQCAtNjAwMiwy
NSArNjA2NywzMiBAQCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNsYXJhdGlvbgogCiAgICAgbXkg
JHByb3RvdHlwZUNsYXNzTmFtZSA9ICIke2NsYXNzTmFtZX1Qcm90b3R5cGUiOwogCisgICAgbXkg
JG5lZWRzR2xvYmFsT2JqZWN0SW5GaW5pc2hDcmVhdGlvbiA9IE5lZWRzU2V0dGluZ3NDaGVja0Zv
clByb3RvdHlwZVByb3BlcnR5KCRpbnRlcmZhY2UpOworCiAgICAgbXkgJXN0cnVjdHVyZUZsYWdz
ID0gKCk7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY2xhc3MgJHtwcm90b3R5cGVDbGFzc05h
bWV9IDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7XG4iKTsKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJwdWJsaWM6XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDtcbiIpOwogCi0gICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpYyAke3Byb3RvdHlwZUNsYXNzTmFtZX0qIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyAke3By
b3RvdHlwZUNsYXNzTmFtZX0qIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSlcbiIpOwogICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDwke2NsYXNzTmFtZX1Qcm90b3R5cGU+KHZtLmhlYXApKSAke2NsYXNzTmFtZX1Qcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTtcbiIpOwotICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7XG4iKTsKKworICAgIGlm
ICgkbmVlZHNHbG9iYWxPYmplY3RJbkZpbmlzaENyZWF0aW9uKSB7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVj
dCk7XG4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pO1xuIik7CisgICAgfQorCiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIH1cblxuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgREVDTEFS
RV9JTkZPO1xuIik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksCi0gICAgICAgICIgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIgLgot
ICAgICAgICAiICAgIHtcbiIgLgotICAgICAgICAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7XG4iIC4KLSAgICAgICAgIiAg
ICB9XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIpOworICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICB7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTtc
biIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKIAogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIlxucHJpdmF0ZTpcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAke3Byb3RvdHlwZUNsYXNzTmFtZX0oSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKVxuIik7CkBAIC02MDMzLDcgKzYxMDUsMTEgQEAg
c3ViIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24KICAgICAgICAgICAgICRzdHJ1Y3R1cmVG
bGFnc3siSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIn0gPSAxOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsKLSAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtcbiIp
OworICAgICAgICAgICAgaWYgKCRuZWVkc0dsb2JhbE9iamVjdEluRmluaXNoQ3JlYXRpb24pIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTtcbiIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OlZNJik7XG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KIApAQCAtNjIzMyw3ICs2MzA5LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJN
ZXRob2RzCiAgICAgfSBlbHNpZiAoJGludGVyZmFjZS0+aXNDYWxsYmFjaykgewogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7XG4iKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsICR7Y2xhc3NOYW1lfTo6cHJvdG90eXBl
KHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pO1xu
Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgJHtjbGFzc05hbWV9Ojpwcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTtcbiIpOwogICAgIH0K
IAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwo
XCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxMCBAQCBl
bnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAKICAgICBbRW5hYmxlZEZv
cldvcmxkPXNvbWVXb3JsZF0gdm9pZCB3b3JsZFNwZWNpZmljTWV0aG9kKGxvbmcgdGVzdFBhcmFt
KTsKIAorICAgIC8vIFtFbmFibGVkQnlTZXR0aW5nXSBhdHRyaWJ1dGVzIGFuZCBvcGVyYXRpb25z
LgorICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRCeVNldHRpbmc9VGVzdFNl
dHRpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZTsKKyAg
ICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQnlTZXR0aW5nPVRlc3RTZXR0aW5n
XSB2b2lkIGVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oRE9NU3RyaW5nIHRlc3RQYXJhbSk7CisK
ICAgICAvLyBUeXBlZEFycmF5IGF0dHJpYnV0ZQogICAgIGF0dHJpYnV0ZSBGbG9hdDMyQXJyYXkg
dHlwZWRBcnJheUF0dHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCShyZXZpc2lvbiAy
MTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRl
cmZhY2VOYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBib29sIHNldEpT
SW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKEpTQzo6CiBjbGFzcyBKU0ludGVyZmFjZU5hbWVQcm90
b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU0ludGVyZmFjZU5h
bWVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU0ludGVy
ZmFjZU5hbWVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAg
IEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU0ludGVyZmFjZU5hbWVQcm90b3R5cGU+KHZtLmhlYXApKSBKU0ludGVyZmFjZU5h
bWVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbih2bSk7CkBAIC03Myw3ICs3Myw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBK
U0ludGVyZmFjZU5hbWVDb25zdHIKIAogdGVtcGxhdGU8PiB2b2lkIEpTSW50ZXJmYWNlTmFtZUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTSW50ZXJmYWNlTmFtZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0ludGVyZmFjZU5hbWU6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2
bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiSW50ZXJmYWNlTmFtZSIpKSksIFJlYWRPbmx5IHwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMDksMTIgKzEwOSwxMiBAQCB2
b2lkIEpTSW50ZXJmYWNlTmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAKIH0KIAotSlNPYmplY3Qq
IEpTSW50ZXJmYWNlTmFtZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU0ludGVyZmFjZU5hbWU6OmNyZWF0ZVByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTSW50
ZXJmYWNlTmFtZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNJbnRlcmZhY2VO
YW1lUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTSW50ZXJmYWNlTmFtZVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qu
b2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTSW50ZXJmYWNlTmFtZTo6cHJv
dG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBK
U0ludGVyZmFjZU5hbWU6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU0ludGVyZmFjZU5hbWU+
KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuaAkocmV2aXNpb24g
MjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50
ZXJmYWNlTmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3Jl
YXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpT
RE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShK
U0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICBzdGF0aWMgSW50ZXJmYWNlTmFtZSog
dG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5jcHAJKHJldmlzaW9uIDIxNjA4MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgc2V0SlNNYXBMaWtlQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3QKIGNsYXNzIEpTTWFwTGlrZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmlu
YWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTTWFwTGlrZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTTWFwTGlrZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKICAgICAgICAgSlNNYXBMaWtlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTTWFwTGlrZVByb3RvdHlwZT4odm0uaGVhcCkpIEpT
TWFwTGlrZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTg5LDcgKzg5LDcgQEAgdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTTWFwTGlrZUNvbnN0cnVjdG9yOgogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNNYXBMaWtlQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNNYXBMaWtlOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTTWFwTGlrZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVND
SUlMaXRlcmFsKCJNYXBMaWtlIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8
IERvbnRFbnVtKTsKIH0KQEAgLTEzNywxMiArMTM3LDEyIEBAIHZvaWQgSlNNYXBMaWtlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAgICAgc3luY2hyb25pemVCYWNraW5nTWFwKCpnbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRXhlYygpLCAqZ2xvYmFsT2JqZWN0KCksICp0aGlzKTsKIH0KIAotSlNPYmpl
Y3QqIEpTTWFwTGlrZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU01hcExpa2U6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIEpTTWFwTGlr
ZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTTWFwTGlrZVByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNNYXBMaWtlUHJvdG90eXBlOjpjcmVhdGUodm0sICZn
bG9iYWxPYmplY3QsIEpTTWFwTGlrZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmpl
Y3QqIEpTTWFwTGlrZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK0pTT2JqZWN0KiBKU01hcExpa2U6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU01h
cExpa2U+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuaAkocmV2aXNpb24gMjE2MDgx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFwTGlrZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBl
KEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKICAgICBzdGF0aWMgTWFwTGlrZSogdG9XcmFwcGVkKEpTQzo6Vk0m
LCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9u
bHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGJvb2wgc2V0SlNSZWFkT25seU1h
cExpa2VDb25zdHJ1Y3RvcihKU0MKIGNsYXNzIEpTUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9
IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNSZWFkT25seU1hcExpa2VQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSlNS
ZWFkT25seU1hcExpa2VQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNSZWFkT25seU1hcExpa2VQcm90b3R5cGU+KHZtLmhlYXApKSBKU1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTg2LDcgKzg2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTUmVhZE9ubHlNYXBMaWtlQ29ucwogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNSZWFkT25seU1hcExp
a2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBKU1JlYWRPbmx5TWFwTGlrZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2Jq
ZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1JlYWRPbmx5TWFwTGlrZTo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxT
dHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJSZWFkT25seU1hcExpa2UiKSkpLCBSZWFk
T25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTMxLDEyICsx
MzEsMTIgQEAgdm9pZCBKU1JlYWRPbmx5TWFwTGlrZTo6ZmluaXNoQ3JlYXRpb24oVgogICAgIHN5
bmNocm9uaXplQmFja2luZ01hcCgqZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgKmdsb2Jh
bE9iamVjdCgpLCAqdGhpcyk7CiB9CiAKLUpTT2JqZWN0KiBKU1JlYWRPbmx5TWFwTGlrZTo6Y3Jl
YXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2Jq
ZWN0KiBKU1JlYWRPbmx5TWFwTGlrZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNSZWFkT25seU1hcExpa2VQ
cm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1JlYWRPbmx5TWFwTGlrZVByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNSZWFkT25seU1hcExpa2VQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNSZWFkT25seU1hcExpa2VQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3Rv
dHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1JlYWRPbmx5TWFwTGlrZTo6cHJvdG90eXBlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1JlYWRPbmx5
TWFwTGlrZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTUmVhZE9ubHlNYXBMaWtlPih2bSwg
Z2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5oCShyZXZpc2lvbiAy
MTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFk
T25seU1hcExpa2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNy
ZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUo
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIFJlYWRPbmx5TWFwTGlr
ZSogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw3ICs1MSw3IEBAIGJvb2wgc2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IKIGNs
YXNzIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmpl
Y3Q7Ci0gICAgc3RhdGljIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlw
ZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdEFjdGl2ZURPTU9i
amVjdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTk3LDcgKzk3LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdEFjdGl2ZURPTU9iamVjdAogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojpwcm90b3R5cGUodm0sICZn
bG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEFjdGl2ZURPTU9i
amVjdDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0QWN0aXZlRE9N
T2JqZWN0IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsK
IH0KQEAgLTEzNSwxMiArMTM1LDEyIEBAIHZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpmaW5p
c2hDcmVhdGkKIAogfQogCi1KU09iamVjdCogSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVQ
cm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3Qq
IEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIHJldHVybiBKU1Rlc3RBY3RpdmVET01PYmpl
Y3RQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0QWN0aXZlRE9N
T2JqZWN0Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
SlNPYmplY3QqIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBl
PEpTVGVzdEFjdGl2ZURPTU9iamVjdD4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
cHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUds
b2JhbE9iamVjdCYpOwogICAgIHN0YXRpYyBUZXN0QWN0aXZlRE9NT2JqZWN0KiB0b1dyYXBwZWQo
SlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q0VSZWFjdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAJKHJldmlzaW9uIDIxNjA4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJl
YWN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgYm9vbCBzZXRKU1Rl
c3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKEpTQwogY2xhc3MgSlNUZXN0Q0VSZWFjdGlvbnNQcm90
b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3RDRVJlYWN0
aW9uc1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVz
dENFUmVhY3Rpb25zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAg
ICAgICBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVz
dENFUmVhY3Rpb25zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtODgsNyArODgsNyBAQCB0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0Q0VSZWFjdGlvbnNDb25zCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RD
RVJlYWN0aW9uc0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdENFUmVhY3Rpb25zOjpwcm90b3R5cGUodm0sICZn
bG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdENFUmVhY3Rpb25z
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RDRVJlYWN0aW9ucyIp
KSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0x
MjgsMTIgKzEyOCwxMiBAQCB2b2lkIEpTVGVzdENFUmVhY3Rpb25zOjpmaW5pc2hDcmVhdGlvbihW
CiAKIH0KIAotSlNPYmplY3QqIEpTVGVzdENFUmVhY3Rpb25zOjpjcmVhdGVQcm90b3R5cGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdENFUmVh
Y3Rpb25zOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogewotICAgIHJldHVybiBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkp
OworICAgIHJldHVybiBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xv
YmFsT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAot
SlNPYmplY3QqIEpTVGVzdENFUmVhY3Rpb25zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdENFUmVhY3Rpb25zOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVy
biBnZXRET01Qcm90b3R5cGU8SlNUZXN0Q0VSZWFjdGlvbnM+KHZtLCBnbG9iYWxPYmplY3QpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmgJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01H
bG9iYWxPYmplY3QmKTsKICAgICBzdGF0aWMgVGVzdENFUmVhY3Rpb25zKiB0b1dyYXBwZWQoSlND
OjpWTSYsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2Vs
bCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIu
Y3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29u
cwogY2xhc3MgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ewogICAgICAgICBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXJQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0pOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6cHJvdG90eXBlKHZt
LCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFk
T25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEyMCwxMiArMTIwLDEyIEBAIHZvaWQgSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllcjo6ZmluaXMKIAogfQogCi1KU09iamVjdCogSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpj
cmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0
UHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVy
biBnZXRET01Qcm90b3R5cGU8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj4odm0sIGdsb2Jh
bE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmgJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDggKzM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAot
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYp
OwogICAgIHN0YXRpYyBUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogdG9XcmFwcGVkKEpTQzo6
Vk0mLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwq
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGJvb2wgc2V0SlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWMKIGNsYXNzIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
clByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQ
cm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKQEAgLTc0LDcgKzc0LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dENsYXNzV2l0aEpTQnVpbAogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZt
LCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Ii
KSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAt
MTE1LDEyICsxMTUsMTIgQEAgdm9pZCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
cgogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6
Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pT
T2JqZWN0KiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1
cm4gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2Jq
ZWN0KiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQog
Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUo
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
Jik7CiAgICAgc3RhdGljIFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvciogdG9XcmFw
cGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
OjpKU0NlbGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyMTYw
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIGJvb2wgc2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnQK
IGNsYXNzIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90
eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAg
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTc5LDcg
Kzc5LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEN1c3RvbUNvbnN0cnVjdAogCiB0ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6
cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
JnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3QiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogfQpAQCAtMTE1LDEyICsxMTUsMTIgQEAgdm9pZCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZgogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdDo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdDo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCkpKTsKKyAgICByZXR1cm4gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9
CiAKLUpTT2JqZWN0KiBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dDo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2Jq
ZWN0KiBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6cHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1
cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0Pih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oCShy
ZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQogCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90
b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFs
T2JqZWN0Jik7CiAgICAgc3RhdGljIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdCogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgc2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJD
b25zdHJ1Y3QKIGNsYXNzIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlIDogcHVibGlj
IEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6
SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RDdXN0b21O
YW1lZEdldHRlclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAg
ICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGU+KHZtLmhl
YXApKSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTc5LDcgKzc5
LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEN1c3RvbU5hbWVkR2V0dAogCiB0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDdXN0b21O
YW1lZEdldHRlcjo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJp
bmcoQVNDSUlMaXRlcmFsKCJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiKSkpLCBSZWFkT25seSB8IERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTE2LDEyICsxMTYsMTIgQEAg
dm9pZCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6ZmluaXNoQ3JlYQogCiB9CiAKLUpTT2JqZWN0
KiBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RDdXN0b21OYW1lZEdldHRl
cjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCkpKTsKKyAgICByZXR1cm4gSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFBy
b3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6cHJv
dG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBK
U1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDdXN0b21OYW1lZEdldHRlci5oCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7
CiAgICAgfQogCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBw
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYp
OworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xv
YmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIFRlc3RDdXN0b21OYW1lZEdldHRlciogdG9XcmFwcGVk
KEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwg
SlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCShyZXZpc2lv
biAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBj
b25zdCBKU0M6OkRPTUpJVDo6U2lnbmF0dXJlIERPTUoKIGNsYXNzIEpTVGVzdERPTUpJVFByb3Rv
dHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdERPTUpJVFBy
b3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVzdERPTUpJ
VFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSlNUZXN0
RE9NSklUUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdERPTUpJVFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdERPTUpJVFByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZt
KTsKQEAgLTE2MCw3ICsxNjAsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RE9NSklUQ29u
c3RydWN0CiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RE
T01KSVQ6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0RE9NSklUOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwo
IlRlc3RET01KSVQiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogfQpAQCAtMjM2LDEyICsyMzYsMTIgQEAgdm9pZCBKU1Rlc3RET01KSVQ6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bQogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RET01KSVQ6OmNyZWF0ZVByb3Rv
dHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNU
ZXN0RE9NSklUOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU1Rlc3RET01KSVRQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RET01KSVRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgZ2xvYmFsT2JqZWN0LCBKU05vZGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOwor
ICAgIHJldHVybiBKU1Rlc3RET01KSVRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVj
dCwgSlNUZXN0RE9NSklUUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmpl
Y3QsIEpTTm9kZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7CiB9CiAKLUpTT2JqZWN0
KiBKU1Rlc3RET01KSVQ6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCitKU09iamVjdCogSlNUZXN0RE9NSklUOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
SlNUZXN0RE9NSklUPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmgJKHJl
dmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RET01KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5
cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKICAgICBERUNMQVJFX0lORk87CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIxNjA4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBib29sIHNl
dEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvCiBjbGFzcyBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgc3RhdGljIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXZlbnRDb25zdHJ1
Y3RvclByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bih2bSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV2ZW50
Q29uc3RydWN0bwogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVj
dCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0RXZlbnRDb25zdHJ1Y3RvciIp
KSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0x
ODUsMTIgKzE4NSwxMiBAQCB2b2lkIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0
CiAKIH0KIAotSlNPYmplY3QqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZVByb3RvdHlw
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU0V2ZW50Ojpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTsKKyAgICByZXR1cm4gSlNUZXN0RXZlbnRDb25zdHJ1
Y3RvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIEpTRXZl
bnQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRE
T01Qcm90b3R5cGU8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4odm0sIGdsb2JhbE9iamVjdCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIxNjA4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVh
dGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgYm9vbCBzZXRKU1Rlc3RFdmVudFRhcmdldENv
bnN0cnVjdG9yKEpTQwogY2xhc3MgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUgOiBwdWJsaWMg
SlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpK
U05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVzdEV2ZW50VGFyZ2V0UHJv
dG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBKU1Rlc3RFdmVu
dFRhcmdldFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdEV2ZW50VGFyZ2V0UHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0pOwpAQCAtNzksNyArNzksNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0
RXZlbnRUYXJnZXRDb25zCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RFdmVudFRhcmdldENvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdEV2ZW50VGFyZ2V0Ojpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEV2ZW50VGFyZ2V0Ojpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygm
dm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RFdmVudFRhcmdldCIpKSksIFJlYWRPbmx5IHwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTYsMTIgKzExNiwxMiBA
QCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0OjpmaW5pc2hDcmVhdGlvbihWCiAKIH0KIAotSlNPYmpl
Y3QqIEpTVGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGVQ
cm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgSlNFdmVudFRhcmdldDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7Cisg
ICAgcmV0dXJuIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxP
YmplY3QsIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZn
bG9iYWxPYmplY3QsIEpTRXZlbnRUYXJnZXQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkp
OwogfQogCi1KU09iamVjdCogSlNUZXN0RXZlbnRUYXJnZXQ6OnByb3RvdHlwZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0RXZlbnRUYXJnZXQ6
OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RFdmVudFRhcmdldD4odm0sIGdsb2JhbE9i
amVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkocmV2aXNpb24gMjE2MDgxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90
b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9i
YWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHN0YXRpYyBUZXN0RXZlbnRUYXJnZXQqIHRvV3Jh
cHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cAkocmV2aXNpb24gMjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgYm9vbCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OgogY2xhc3MgSlNUZXN0
RXhjZXB0aW9uUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMg
SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBz
dGF0aWMgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgewogICAgICAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkg
SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtODksNyArODksNyBAQCB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0RXhjZXB0aW9uQ29uc3RyCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rl
c3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFeGNlcHRpb246OnByb3RvdHlwZSh2bSwgJmds
b2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RXhjZXB0aW9uOjpw
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJp
dmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RFeGNlcHRpb24iKSkpLCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTI1LDEy
ICsxMjUsMTIgQEAgdm9pZCBKU1Rlc3RFeGNlcHRpb246OmZpbmlzaENyZWF0aW9uKFZNJgogCiB9
CiAKLUpTT2JqZWN0KiBKU1Rlc3RFeGNlcHRpb246OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0RXhjZXB0aW9uOjpj
cmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewotICAgIHJldHVybiBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmVycm9yUHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4g
SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVz
dEV4Y2VwdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QuZXJyb3JQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0RXhj
ZXB0aW9uOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
SlNPYmplY3QqIEpTVGVzdEV4Y2VwdGlvbjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVz
dEV4Y2VwdGlvbj4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5o
CShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
LSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShK
U0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
cHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHN0YXRpYyBUZXN0
RXhjZXB0aW9uKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgYm9vbCBzZXRKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlQ29uc3RydQogY2xhc3MgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlw
ZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewogICAgICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGVQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24odm0pOwpAQCAtNzMsNyArNzMsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0R2VuZXJh
dGVJc1JlYWNoCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFs
T2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVt
KTsKIH0KQEAgLTEwOSwxMiArMTA5LDEyIEBAIHZvaWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZTo6ZmluaXNoQ3IKIAogfQogCi1KU09iamVjdCogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6
Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pT
T2JqZWN0KiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4g
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwogfQog
Ci1KU09iamVjdCogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6cHJvdG90eXBlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZT4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmgJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDggKzM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAg
IH0KIAotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYs
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAg
ICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9i
amVjdCYpOwogICAgIHN0YXRpYyBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogdG9XcmFwcGVkKEpT
Qzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0Nl
bGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjE2MDgxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIGlubGluZSBKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0MKIGNsYXNzIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlw
ZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdEdsb2JhbE9iamVj
dFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVzdEds
b2JhbE9iamVjdFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAg
ICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVz
dEdsb2JhbE9iamVjdFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
CShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3
IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjoKIGNsYXNzIEpTVGVz
dEludGVyZmFjZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGlj
IEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
c3RhdGljIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKICAgICAgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZVByb3RvdHlwZT4odm0uaGVhcCkp
IEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwog
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlQ29uc3RyCiAKIHRlbXBsYXRlPD4gdm9pZCBK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2U6OnByb3RvdHlwZSh2bSwg
Jmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW50ZXJmYWNl
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9u
dHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RJbnRlcmZhY2UiKSkp
LCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVl
cywgKnRoaXMpOwpAQCAtMzg1LDEyICszODUsMTIgQEAgdm9pZCBKU1Rlc3RJbnRlcmZhY2U6OmZp
bmlzaENyZWF0aW9uKFZNJgogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2U6OmNyZWF0
ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVj
dCogSlNUZXN0SW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpKSk7CisgICAgcmV0dXJuIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6Y3JlYXRlKHZt
LCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9
CiAKLUpTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2U6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0SW50ZXJmYWNlOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVy
biBnZXRET01Qcm90b3R5cGU8SlNUZXN0SW50ZXJmYWNlPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRl
cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsOCArMzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAg
fQogCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5
cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAg
IHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CiAgICAgc3RhdGljIFRlc3RJbnRlcmZhY2UqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlND
OjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUuY3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmUKIGNsYXNzIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJv
dG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIHN0YXRpYyBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSogY3Jl
YXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSlNUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGU+KHZtLmhlYXApKSBK
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTc1LDcg
Kzc1LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEludGVyZmFjZUxlYWRpbgogCiB0ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2Jq
ZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5
IHwgRG9udEVudW0pOwogfQpAQCAtMTEyLDEyICsxMTIsMTIgQEAgdm9pZCBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZTo6ZgogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJz
Y29yZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Jmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpT
T2JqZWN0KiBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6cHJvdG90eXBlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oCShyZXZpc2lvbiAy
MTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYs
OCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0gICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVj
dCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGlj
IFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6
OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SXRlcmFibGUuY3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgc2V0SlNUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihK
U0M6OkUKIGNsYXNzIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9i
amVjdDsKLSAgICBzdGF0aWMgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SXRlcmFibGVQcm90b3R5
cGU+KHZtLmhlYXApKSBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTgyLDcgKzgy
LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEl0ZXJhYmxlQ29uc3RydQogCiB0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJdGVyYWJsZTo6cHJvdG90
eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJ
dGVyYWJsZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0SXRlcmFi
bGUiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpA
QCAtMTIzLDEyICsxMjMsMTIgQEAgdm9pZCBKU1Rlc3RJdGVyYWJsZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIAogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RJdGVyYWJsZTo6Y3JlYXRlUHJvdG90eXBlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RJdGVy
YWJsZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0SXRlcmFibGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICBy
ZXR1cm4gSlNUZXN0SXRlcmFibGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwg
SlNUZXN0SXRlcmFibGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rl
c3RJdGVyYWJsZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK0pTT2JqZWN0KiBKU1Rlc3RJdGVyYWJsZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpT
VGVzdEl0ZXJhYmxlPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5o
CShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SXRlcmFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0gICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwot
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBw
cm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIFRlc3RJ
dGVyYWJsZSogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgc2V0SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHIKIGNsYXNzIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90
eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRp
YyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKICAgICAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtKTsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cgogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZt
LCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5
IHwgRG9udEVudW0pOwogfQpAQCAtMTI2LDEyICsxMjYsMTIgQEAgdm9pZCBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvcjo6ZmluaXNoQwogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlUHJv
dG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBy
ZXR1cm4gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTsKKyAgICByZXR1cm4gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFBy
b3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0
KiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMTYwODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNy
ZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUo
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0M6OkpTQ2VsbCopOwogCiAgICAgREVDTEFSRV9JTkZPOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAkocmV2aXNpb24gMjE2MDgxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGJvb2wgc2V0SlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnMKIGNsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTgwLDcgKzgwLDcgQEAg
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TAogCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
JnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIpKSks
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTcs
MTIgKzExNywxMiBAQCB2b2lkIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmZpbmlzCiAK
IH0KIAotSlNPYmplY3QqIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZVByb3Rv
dHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJuIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9i
amVjdCwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsK
IH0KIAotSlNPYmplY3QqIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnByb3RvdHlwZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCShyZXZpc2lvbiAyMTYwODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3Jl
YXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpT
RE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShK
U0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICBzdGF0aWMgVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JD
b25zdHJ1Y3RvCiBjbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGlj
IEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6
SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAg
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZT4odm0uaGVhcCkp
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CkBAIC03Nyw3ICs3Nyw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG8KIAogdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgiVGVzdE5hbWVkQ29uc3RydWN0b3IiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTExLDcgKzExMSw3IEBAIHRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG8KIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnBy
b3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFs
KCJBdWRpbyIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7
CiB9CkBAIC0xNDcsMTIgKzE0NywxMiBAQCB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmZp
bmlzaENyZWF0CiAKIH0KIAotSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0
ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVj
dCogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0TmFtZWRDb25z
dHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJuIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3I6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCitKU09iamVjdCogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9N
UHJvdG90eXBlPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KHZtLCBnbG9iYWxPYmplY3QpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyMTYwODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHB0cjsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9N
R2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0
b3IqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJldmlzaW9uIDIxNjA4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBib29sIHNldEpTVGVzdE5vZGVD
b25zdHJ1Y3RvcihKU0M6OkV4ZWNTCiBjbGFzcyBKU1Rlc3ROb2RlUHJvdG90eXBlIDogcHVibGlj
IEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6
SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0Tm9kZVByb3RvdHlwZSogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVzdE5vZGVQcm90b3R5cGUqIGNyZWF0
ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEpTVGVzdE5vZGVQcm90b3R5cGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Tm9kZVByb3RvdHlwZT4o
dm0uaGVhcCkpIEpTVGVzdE5vZGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CkBAIC0xMDAsNyArMTAwLDcgQEAg
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5vZGVDb25zdHJ1Y3RvcgogCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5vZGU6OnByb3RvdHlwZSh2bSwgJmdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Tm9kZTo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJp
bmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0Tm9kZSIpKSksIFJlYWRPbmx5IHwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xNjQsMTIgKzE2NCwxMiBAQCB2
b2lkIEpTVGVzdE5vZGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogfQogCi1KU09iamVjdCog
SlNUZXN0Tm9kZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3ROb2RlOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU1Rlc3ROb2Rl
UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0Tm9kZVByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIEpTTm9kZTo6cHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpKSk7CisgICAgcmV0dXJuIEpTVGVzdE5vZGVQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0Tm9kZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCAmZ2xvYmFsT2JqZWN0LCBKU05vZGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOwog
fQogCi1KU09iamVjdCogSlNUZXN0Tm9kZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3ROb2RlOjpwcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Q
cm90b3R5cGU8SlNUZXN0Tm9kZT4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgJ
KHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZN
JiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90
eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MDksNiArMTEwOSw5IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6Q29uZGl0aW9uYWxEaWN0aW9uYXIK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKICNlbmRpZgog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV29ybGRTcGVjaWZpY01ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOworI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7
CisjZW5kaWYKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RX
aXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChKU0M6OkV4ZWNTdGF0ZSop
OwpAQCAtMTM1OCw2ICsxMzYxLDEwIEBAIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9t
VVJMQXR0cigKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0
dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
I2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0T2JqRW5hYmxl
ZEJ5U2V0dGluZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworI2VuZGlmCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialR5cGVkQXJyYXlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwpAQCAtMTQ2MiwxMCArMTQ2OSwxMCBAQCBib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEpT
Qzo6RXhlY1N0CiBjbGFzcyBKU1Rlc3RPYmpQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OwotICAgIHN0YXRpYyBKU1Rlc3RPYmpQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RPYmpQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7CiAgICAgICAgIEpTVGVzdE9ialByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmpQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RP
YmpQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9i
YWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIApAQCAtMTQ4MSw3ICsxNDg4
LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxP
YmplY3QmKTsKIH07CiAKIHVzaW5nIEpTVGVzdE9iakNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1
Y3RvcjxKU1Rlc3RPYmo+OwpAQCAtMTYxNyw3ICsxNjI0LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdE9iakNvbnN0cnVjdG9yOgogCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T2JqQ29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0T2JqOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdE9iajo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlM
aXRlcmFsKCJUZXN0T2JqZWN0IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBSZWFkT25seSB8
IERvbnRFbnVtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE9iakNvbnN0
cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKQEAgLTE2NzksNiArMTY4NiwxMSBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAjZWxzZQogICAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQor
ICAgIHsgImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqRW5hYmxlZEJ5
U2V0dGluZ0F0dHJpYnV0ZSkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7
IDAsIDAgfSB9LAorI2VuZGlmCiAgICAgeyAidHlwZWRBcnJheUF0dHIiLCBDdXN0b21BY2Nlc3Nv
ciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpUeXBlZEFycmF5QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialR5cGVkQXJyYXlB
dHRyKSB9IH0sCiAgICAgeyAiYXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbiIsIEN1c3RvbUFj
Y2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhHZXR0ZXJFeGNlcHRpb24pLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RPYmpBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uKSB9IH0sCiAgICAgeyAiYXR0cmli
dXRlV2l0aFNldHRlckV4Y2VwdGlvbiIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
akF0dHJpYnV0ZVdpdGhTZXR0ZXJFeGNlcHRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoU2V0
dGVyRXhjZXB0aW9uKSB9IH0sCkBAIC0xNzUyLDYgKzE3NjQsMTEgQEAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwg
MCB9IH0sCiAjZW5kaWYKICAgICB7ICJ3b3JsZFNwZWNpZmljTWV0aG9kIiwgSlNDOjpGdW5jdGlv
biwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2QpLCAoaW50cHRyX3Qp
ICgxKSB9IH0sCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICB7ICJlbmFibGVkQnlTZXR0
aW5nT3BlcmF0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJs
ZWRCeVNldHRpbmdPcGVyYXRpb24pLCAoaW50cHRyX3QpICgxKSB9IH0sCisjZWxzZQorICAgIHsg
MCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKICAgICB7ICJ2b2lkTWV0aG9k
IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QpLCAoaW50
cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidm9pZE1ldGhvZFdpdGhBcmdzIiwgSlNDOjpGdW5jdGlv
biwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyksIChpbnRwdHJfdCkg
KDMpIH0gfSwKICAgICB7ICJieXRlTWV0aG9kIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkJ5dGVNZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC0xOTI4LDcgKzE5
NDUsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAKIGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3RQcm90
b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9ialBy
b3RvdHlwZSkgfTsKIAotdm9pZCBKU1Rlc3RPYmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3ZvaWQgSlNUZXN0T2JqUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T2JqUHJvdG90eXBl
VGFibGVWYWx1ZXMsICp0aGlzKTsKQEAgLTE5NTEsNiArMTk2OCwyMiBAQCB2b2lkIEpTVGVzdE9i
alByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oCiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpOwog
ICAgIH0KICNlbmRpZgorICAgIGF1dG8qIGNvbnRleHQgPSBnbG9iYWxPYmplY3Quc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIEFTU0VSVCghY29udGV4dCB8fCBjb250ZXh0LT5pc0RvY3Vt
ZW50KCkpOworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKCFjb250ZXh0IHx8ICFk
b3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVk
KCkpIHsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0
aW5nT3BlcmF0aW9uIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpKTsKKyAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmICghY29udGV4
dCB8fCAhZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KS5zZXR0aW5ncygpLnRlc3RTZXR0aW5n
RW5hYmxlZCgpKSB7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxl
ZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUi
KSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRl
bGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCksIHByb3BlcnR5
TmFtZSk7CisgICAgfQorI2VuZGlmCiAgICAgcHV0RGlyZWN0KHZtLCBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5wcml2YXRlTWV0aG9k
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwg
U3RyaW5nKCksIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZCksIFJlYWRP
bmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVibGljQW5kUHJpdmF0ZU1l
dGhvZFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCks
IDAsIFN0cmluZygpLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVN
ZXRob2QpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnbG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b3R5cGUo
KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQ
cml2YXRlTmFtZSgpKSwgRG9udEVudW0pOwpAQCAtMTk3NSwxMiArMjAwOCwxMiBAQCB2b2lkIEpT
VGVzdE9iajo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RP
Ymo6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CitKU09iamVjdCogSlNUZXN0T2JqOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU1Rlc3RPYmpQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmpQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7
CisgICAgcmV0dXJuIEpTVGVzdE9ialByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0
LCBKU1Rlc3RPYmpQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RP
Ymo6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09i
amVjdCogSlNUZXN0T2JqOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0T2JqPih2bSwg
Z2xvYmFsT2JqZWN0KTsKIH0KQEAgLTI4MzgsNiArMjg3MSwyNSBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0T2JqRW5hYmxlZEF0CiAKICNlbmRpZgogCisjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0
cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE9iaiYsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rl
c3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAi
ZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLmVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUo
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RPYmom
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVHlw
ZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCkBAIC00NDkwLDYgKzQ1NDIsMjcgQEAgc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdE9iakVuYWJsZWRBdAogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE9iaiYsIEpTVmFsdWUsIFRocm93U2NvcGUmKTsK
KworYm9vbCBzZXRKU1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0
ZTxzZXRKU1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKTsKK30K
Kworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1
dGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKKyAgICBpbXBsLnNldEVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUoV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOworICAgIHJldHVybiB0cnVlOworfQorCisjZW5kaWYKKwogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyRnVuY3Rpb24oRXhlY1N0YXRl
JiwgSlNUZXN0T2JqJiwgSlNWYWx1ZSwgVGhyb3dTY29wZSYpOwogCiBib29sIHNldEpTVGVzdE9i
alR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpAQCAtNTMxNiw2ICs1Mzg5LDI5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rl
c3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oRXhl
Y1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+Ojpj
YWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09w
ZXJhdGlvbkNhbGxlcj4oc3RhdGUsICJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaW1wbC5lbmFibGVkQnlTZXR0aW5nT3Bl
cmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKK30KKworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsOCArMzcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQog
Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUo
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
Jik7CiAgICAgc3RhdGljIFRlc3RPYmoqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVl
KTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
CShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDcgQEAgYm9vbCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29ucwog
Y2xhc3MgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9u
RmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewog
ICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24odm0pOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3QKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUodm0s
ICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRP
bmx5IHwgRG9udEVudW0pOwogfQpAQCAtMjEwLDEyICsyMTAsMTIgQEAgdm9pZCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpmaW5pcwogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNy
ZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQ
cm90b3R5cGUoKSkpOworICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJv
dG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJu
IGdldERPTVByb3RvdHlwZTxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPih2bSwgZ2xvYmFs
T2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuaAkocmV2aXNpb24gMjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0g
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Y3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7
CiAgICAgc3RhdGljIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b1dyYXBwZWQoSlNDOjpW
TSYsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCop
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgYm9vbCBz
ZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aAogY2xhc3MgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmpl
Y3Q7Ci0gICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgewogICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGU+KHZtLmhlYXAp
KSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OwpAQCAtMTI1LDcgKzEyNSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RPdmVybG9hZGVk
Q29uc3QKIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlOjpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0p
OwogfQpAQCAtMTYxLDEyICsxNjEsMTIgQEAgdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcQogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2U6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7Ci0gICAgcmV0dXJuIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2VQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIHJldHVy
biBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlOjpjcmVh
dGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2VQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2U6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UuaAkocmV2aXNpb24gMjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQogCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVj
dCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9N
R2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJy
aWRlQnVpbHRpbnMuY3BwCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgYm9vbCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0bwogY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSA6IHB1YmxpYyBK
U0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpT
Tm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGU+KHZtLmhlYXApKSBK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtODAsNyArODAsNyBAQCB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWlsdGluCiAKIHRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
czo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxp
dGVyYWwoIlRlc3RPdmVycmlkZUJ1aWx0aW5zIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTExNywxMiArMTE3LDEyIEBAIHZvaWQgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluczo6ZmluaXNoQ3JlYXQKIAogfQogCi1KU09iamVjdCogSlNUZXN0T3Zl
cnJpZGVCdWlsdGluczo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpjcmVhdGVQcm90
b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHJl
dHVybiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICBy
ZXR1cm4gSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFs
T2JqZWN0LCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwogfQog
Ci1KU09iamVjdCogSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6cHJvdG90eXBlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewogICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4odm0s
IGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgJ
KHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3Rv
dHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHN0YXRp
YyBUZXN0T3ZlcnJpZGVCdWlsdGlucyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUp
OwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAJKHJldmlzaW9uIDIxNjA4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBib29sIHNldEpTVGVz
dFNlcmlhbGl6YXRpb25Db25zdHJ1Y3RvcihKCiBjbGFzcyBKU1Rlc3RTZXJpYWxpemF0aW9uUHJv
dG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNp
bmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0U2VyaWFs
aXphdGlvblByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpT
VGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7
CiAgICAgICAgIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZT4odm0uaGVh
cCkpIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CkBAIC05Miw3ICs5Miw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RTZXJpYWxpemF0aW9uQ28KIAogdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTZXJpYWxpemF0aW9uOjpw
cm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdFNlcmlhbGl6YXRpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
VGVzdFNlcmlhbGl6YXRpb24iKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwg
RG9udEVudW0pOwogfQpAQCAtMTM1LDEyICsxMzUsMTIgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemF0
aW9uOjpmaW5pc2hDcmVhdGlvbgogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RTZXJpYWxpemF0aW9u
OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
SlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6YXRpb246OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIEpTVGVzdFNlcmlh
bGl6YXRpb25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RTZXJpYWxp
emF0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIHJldHVybiBKU1Rlc3RTZXJpYWxpemF0
aW9uUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRp
b25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RTZXJpYWxpemF0
aW9uOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNP
YmplY3QqIEpTVGVzdFNlcmlhbGl6YXRpb246OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rl
c3RTZXJpYWxpemF0aW9uPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6YXRpb24uaAkocmV2aXNpb24gMjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0g
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlND
OjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
Y3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7
CiAgICAgc3RhdGljIFRlc3RTZXJpYWxpemF0aW9uKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6
SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAJKHJldmlzaW9uIDIx
NjA4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
Ym9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdENvbnN0cgogY2xhc3MgSlNUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAg
IHN0YXRpYyBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90
eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBKU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtNzksNyArNzksNyBAQCB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U2VyaWFsaXphdGlvbkluCiAKIHRlbXBsYXRlPD4gdm9p
ZCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0Ojpwcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Ojpwcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0
cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCIpKSksIFJlYWRPbmx5
IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTcsMTIgKzExNywx
MiBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0OjpmaW5pc2hDCiAKIH0KIAotSlNP
YmplY3QqIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6
YXRpb25Jbmhlcml0OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0U2Vy
aWFsaXphdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7CisgICAgcmV0dXJuIEpT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmpl
Y3QsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb246OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6
OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09iamVj
dCogSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxK
U1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdD4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuaAkocmV2aXNpb24gMjE2MDgxKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
YXRpb25Jbmhlcml0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBl
KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXRGaW5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuY3Bw
CShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFs
QwogY2xhc3MgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZSA6IHB1Ymxp
YyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6
OkpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWxQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgewogICAgICAgICBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6
YXRpb25Jbmhlcml0RmluYWxQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAtODEsNyArODEsNyBAQCB0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0U2VyaWFsaXphdGlvbkluCiAKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbDo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygm
dm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsIikp
KSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEy
MCwxMiArMTIwLDEyIEBAIHZvaWQgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6ZmkK
IAogfQogCi1KU09iamVjdCogSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6Y3JlYXRl
UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0
KiBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU1Rlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Ojpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCkpKTsKKyAgICByZXR1cm4gSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbFByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9i
YWxPYmplY3QsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Ojpwcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCkpKTsKIH0KIAotSlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWw6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU09i
amVjdCogSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6cHJvdG90eXBlKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJv
dG90eXBlPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+KHZtLCBnbG9iYWxPYmplY3Qp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5h
bC5oCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw4ICszNiw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAK
LSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDIxNjA4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3
IEBAIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXIKIGNsYXNzIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmlu
YWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIHsKICAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTkzLDcgKzkz
LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcAogCiB0ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpwcm90b3R5cGUodm0sICZnbG9i
YWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIikpKSwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEzNiwxMiArMTM2LDEyIEBAIHZvaWQg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWMKIAogfQogCi1KU09iamVjdCogSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwor
ICAgIHJldHVybiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwogfQogCi1KU09iamVjdCogSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZT4odm0sIGdsb2JhbE9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCShyZXZpc2lvbiAy
MTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDgg
KzM4LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVBy
b3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHN0
YXRpYyBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiB0b1dyYXBwZWQoSlNDOjpW
TSYsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCop
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDIxNjA4MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0
cnVjdG9yKEpTQzo6RQogY2xhc3MgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUgOiBwdWJsaWMgSlND
OjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU05v
bkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgc3RhdGljIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBKU1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwpAQCAt
MTU4LDcgKzE1OCw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RUeXBlZGVmc0NvbnN0cnUK
IAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0VHlwZWRl
ZnM6OnByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0VHlwZWRlZnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
VGVzdFR5cGVkZWZzIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDMpLCBSZWFkT25seSB8IERvbnRF
bnVtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwpAQCAtMjE4LDEyICsyMTgsMTIgQEAgdm9pZCBKU1Rl
c3RUeXBlZGVmczo6ZmluaXNoQ3JlYXRpb24oVk0mIAogCiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RU
eXBlZGVmczo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RUeXBlZGVmczo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gSlNUZXN0VHlw
ZWRlZnNQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU1Rlc3RUeXBlZGVmc1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICByZXR1cm4gSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlw
ZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBKU1Rlc3RUeXBlZGVmczo6cHJvdG90eXBlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTT2JqZWN0KiBKU1Rlc3RUeXBlZGVmczo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdFR5cGVkZWZzPih2bSwgZ2xvYmFsT2JqZWN0
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQogCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90
b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFs
T2JqZWN0Jik7CiAgICAgc3RhdGljIFRlc3RUeXBlZGVmcyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBK
U0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCShyZXZpc2lvbiAyMTYwODEp
CisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw5ICs2OCw5IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIHN0
YXRpYyBBcnJheVByb3RvdHlwZSogY3JlYXRlUHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlw
ZShWTSYsIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpOworICAgICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0LmFycmF5UHJvdG90eXBlKCk7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2Qu
aAkocmV2aXNpb24gMjE2MDgxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogCiAgICAgREVD
TEFSRV9JTkZPOwogCi0gICAgc3RhdGljIEZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGVQcm90b3R5
cGUoVk0mLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBGdW5jdGlv
blByb3RvdHlwZSogY3JlYXRlUHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90
eXBlKCk7CisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAyMTYwODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsOSArNjMsOSBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBzdGF0aWMg
T2JqZWN0UHJvdG90eXBlKiBjcmVhdGVQcm90b3R5cGUoVk0mLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShW
TSYsIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC5vYmplY3RQcm90b3R5cGUoKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oCShyZXZpc2lvbiAyMTYwODEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDkgKzEwOCw5IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pdGVt
OyB9CiAKLSAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVhdGVQcm90b3R5cGUoVk0mLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUq
IGNyZWF0ZVByb3RvdHlwZShWTSYsIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAg
ewotICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKTsKKyAgICAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKTsKICAgICB9CiAKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCShyZXZpc2lvbiAyMTYwODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIEpTVmFsdWUgQ29tbWFuZExpbmVBUElIb3N0Ojp3
cmFwcGVyKEV4ZWMKICAgICBpZiAodmFsdWUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAg
IEpTT2JqZWN0KiBwcm90b3R5cGUgPSBKU0NvbW1hbmRMaW5lQVBJSG9zdDo6Y3JlYXRlUHJvdG90
eXBlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9
IEpTQ29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGVQcm90b3R5cGUoZXhlYy0+dm0oKSwgKmdsb2Jh
bE9iamVjdCk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NvbW1hbmRMaW5lQVBJSG9z
dDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKTsK
ICAgICBKU0NvbW1hbmRMaW5lQVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0ID0gSlNDb21tYW5k
TGluZUFQSUhvc3Q6OmNyZWF0ZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgbWFrZVJlZigqdGhp
cykpOwogICAgIG1fd3JhcHBlcnMuYWRkV3JhcHBlcihnbG9iYWxPYmplY3QsIGNvbW1hbmRMaW5l
QVBJSG9zdCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>