<?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>173072</bug_id>
          
          <creation_ts>2017-06-07 13:53:10 -0700</creation_ts>
          <short_desc>[WebIDL] Split up attribute generation to match operation generation</short_desc>
          <delta_ts>2017-06-07 20:25:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1316620</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-07 13:53:10 -0700</bug_when>
    <thetext>[WebIDL] Split up attribute generation to match operation generation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316714</commentid>
    <comment_count>1</comment_count>
      <attachid>312254</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-07 16:50:54 -0700</bug_when>
    <thetext>Created attachment 312254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316774</commentid>
    <comment_count>2</comment_count>
      <attachid>312254</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-07 19:57:19 -0700</bug_when>
    <thetext>Comment on attachment 312254
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316791</commentid>
    <comment_count>3</comment_count>
      <attachid>312254</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 20:25:10 -0700</bug_when>
    <thetext>Comment on attachment 312254
Patch

Clearing flags on attachment: 312254

Committed r217916: &lt;http://trac.webkit.org/changeset/217916&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316792</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 20:25:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312254</attachid>
            <date>2017-06-07 16:50:54 -0700</date>
            <delta_ts>2017-06-07 20:25:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173072-20170607165113.patch</filename>
            <type>text/plain</type>
            <size>71128</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA2LTA3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gU3BsaXQgdXAgYXR0cmli
dXRlIGdlbmVyYXRpb24gdG8gbWF0Y2ggb3BlcmF0aW9uIGdlbmVyYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzA3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01B
dHRyaWJ1dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklETEF0dHJpYnV0ZTo6c2V0U3RhdGljKToK
KyAgICAgICAgKFdlYkNvcmU6OklETEF0dHJpYnV0ZTo6Z2V0U3RhdGljKToKKyAgICAgICAgQWRk
IHN0YXRpYyB2YXJpYW50cyBvZiBnZXQvc2V0IG1hdGNoaW5nIHRoZSBvbmUgaW4gSURMT3BlcmF0
aW9uLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZXRGdWxseVF1YWxpZmllZEltcGxlbWVudGF0aW9uQ2FsbE5hbWUpOgorICAgICAg
ICBGYWN0b3Igb3V0IGR1cGxpY2F0ZSBjb2RlIHRvIGNvbXB1dGUgdGhlIHF1YWxpZmllZCBuYW1l
IGZvciBhIGZ1bmN0aW9uIGNhbGwuCisKKyAgICAgICAgKEFkZEFkZGl0aW9uYWxBcmd1bWVudHNG
b3JJbXBsZW1lbnRhdGlvbkNhbGwpOgorICAgICAgICBGYWN0b3Igb3V0IGR1cGxpY2F0ZSBjb2Rl
IHRvIGNvbXB1dGUgdGhlIHNvbWUgc3RhbmRhcmQgYXJndW1lbnRzIGZvciBhIGZ1bmN0aW9uCisg
ICAgICAgIGNhbGwuIFdlIG1heSB3YW50IHRvIG1lcmdlIHRoaXMgd2l0aCBHZW5lcmF0ZUNhbGxX
aXRoLgorCisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3
IHNpZ25hdHVyZSBvZiBIYXNDdXN0b20uLi4gc3Vicm91dGluZXMuCisgICAgICAgIAorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIFBhc3MgQGltcGxDb250ZW50IHRv
IG1vcmUgaGVscGVyIGdlbmVyYXRvcnMgdG8gY29udGludWUgcHJvcGFnYXRpbmcgdGhlIGlkaW9t
LgorCisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9uKToKKyAg
ICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgorICAg
ICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVy
YXRlQXR0cmlidXRlU2V0dGVyQm9keURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRy
aWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJp
YnV0ZVNldHRlckRlZmluaXRpb24pOgorICAgICAgICBTcGxpdCBhdHRyaWJ1dGUgZ2V0dGVyIGFu
ZCBzZXR0ZXIgZ2VuZXJhdGlvbiB1cCBieSBoYXZpbmcgc2VwYXJhdGUgc3Vicm91dGluZXMgCisg
ICAgICAgIHRvIGdlbmVyYXRlIHRoZSB0cmFtcG9saW5lIGFuZCBib2R5LiBBbHNvLCBtYWtlIGFs
bCBhdHRyaWJ1dGVzLCBldmVuIHN0YXRpYyBvbmVzCisgICAgICAgIHVzZSBhIHRyYW1wb2xpbmUg
dG8gc2ltcGxpZnkgdGhlIGNvZGUuIFN0YXRpYyBhdHRyaWJ1dGVzIGdvdCB0aHJvdWdoIGEgbm8t
b3AgCisgICAgICAgIHRyYW1wb2xpbmUsIHRoYXQgZ2V0cyBjb21waWxlZCBhd2F5LiBBbHNvIGFk
b3B0IEdldEZ1bGx5UXVhbGlmaWVkSW1wbGVtZW50YXRpb25DYWxsTmFtZQorICAgICAgICBhbmQg
QWRkQWRkaXRpb25hbEFyZ3VtZW50c0ZvckltcGxlbWVudGF0aW9uQ2FsbCB0byByZWR1Y2UgZHVw
bGljYXRpb24uCisKKyAgICAgICAgKEdlbmVyYXRlT3BlcmF0aW9uQm9keURlZmluaXRpb24pOgor
ICAgICAgICAoR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKToKKyAgICAgICAgQWRvcHQgJG91
dHB1dEFycmF5IGlkaW9tIGFuZCBhZG9wdCBHZXRGdWxseVF1YWxpZmllZEltcGxlbWVudGF0aW9u
Q2FsbE5hbWUKKyAgICAgICAgYW5kIEFkZEFkZGl0aW9uYWxBcmd1bWVudHNGb3JJbXBsZW1lbnRh
dGlvbkNhbGwgdG8gcmVkdWNlIGR1cGxpY2F0aW9uCisKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrKToKKyAgICAgICAgQWRvcHQgR2V0RnVsbHlRdWFsaWZpZWRJbXBsZW1lbnRhdGlv
bkNhbGxOYW1lIGFuZCBBZGRBZGRpdGlvbmFsQXJndW1lbnRzRm9ySW1wbGVtZW50YXRpb25DYWxs
IAorICAgICAgICB0byByZWR1Y2UgZHVwbGljYXRpb24uCisKKyAgICAgICAgKEhhc0N1c3RvbUdl
dHRlcik6CisgICAgICAgIChIYXNDdXN0b21TZXR0ZXIpOgorICAgICAgICAoSGFzQ3VzdG9tTWV0
aG9kKToKKyAgICAgICAgQ29udmVydCBIYXNDdXN0b20uLi4gc3Vicm91dGluZXMgdG8gdGFrZSBh
biBJRExBdHRyaWJ1dGUgcmF0aGVyIHRoYW4gdGhlIGV4dGVuZGVkCisgICAgICAgIGF0dHJpYnV0
ZXMsIG1hdGNoaW5nIG90aGVyIHByZWRpY2F0ZXMKKworICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIFVwZGF0ZSB0ZXN0IHJlc3VsdHMuCisK
IDIwMTctMDYtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IGdldFVzZXJNZWRpYSBpcyBwcm9tcHRpbmcgdG9vIG9mdGVuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHJldmlzaW9uIDIxNzkxMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDggKzMyLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+CiBjbGFzcyBJRExB
dHRyaWJ1dGUgewogcHVibGljOgogICAgIHVzaW5nIFNldHRlciA9IGJvb2woSlNDOjpFeGVjU3Rh
dGUmLCBKU0NsYXNzJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlRocm93U2NvcGUmKTsKKyAgICB1c2lu
ZyBTdGF0aWNTZXR0ZXIgPSBib29sKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlRocm93U2NvcGUmKTsKICAgICB1c2luZyBHZXR0ZXIgPSBKU0M6OkpTVmFsdWUoSlNDOjpFeGVj
U3RhdGUmLCBKU0NsYXNzJiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KKyAgICB1c2luZyBTdGF0aWNH
ZXR0ZXIgPSBKU0M6OkpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmKTsK
KyAgICAKICAgICBzdGF0aWMgSlNDbGFzcyogY2FzdChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogCiAgICAgdGVtcGxhdGU8U2V0dGVyIHNldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+
CkBAIC00Nyw3ICs0OSwxNSBAQCBwdWJsaWM6CiAKICAgICAgICAgcmV0dXJuIHNldHRlcihzdGF0
ZSwgKnRoaXNPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHRocm93
U2NvcGUpOwogICAgIH0KLQorICAgIAorICAgIHRlbXBsYXRlPFN0YXRpY1NldHRlciBzZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OlRocm93PgorICAgIHN0YXRpYyBib29sIHNldFN0YXRpYyhKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBjb25zdCBjaGFyKikKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoc3RhdGUudm0oKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gc2V0
dGVyKHN0YXRlLCBKU0M6OkpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCB0aHJvd1Njb3Bl
KTsKKyAgICB9CisgICAgCiAgICAgdGVtcGxhdGU8R2V0dGVyIGdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+
CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5h
bWUpCiAgICAgewpAQCAtNjQsNiArNzQsMTQgQEAgcHVibGljOgogCiAgICAgICAgIHJldHVybiBK
U0M6OkpTVmFsdWU6OmVuY29kZShnZXR0ZXIoc3RhdGUsICp0aGlzT2JqZWN0LCB0aHJvd1Njb3Bl
KSk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPFN0YXRpY0dldHRlciBnZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OlRocm93PgorICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIGdldFN0YXRpYyhKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6RW5jb2RlZEpTVmFsdWUsIGNvbnN0IGNoYXIqKQorICAgIHsK
KyAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgp
KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShnZXR0ZXIo
c3RhdGUsIHRocm93U2NvcGUpKTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQkocmV2aXNpb24gMjE3OTEwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTEzMDAsNiArMTMw
MCw0MSBAQCBzdWIgR2V0RnVuY3Rpb25OYW1lCiAgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5X
S19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gJGtpbmQgLiAiRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CiB9CiAKK3N1YiBHZXRGdWxseVF1YWxpZmll
ZEltcGxlbWVudGF0aW9uQ2FsbE5hbWUKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJHByb3BlcnR5
LCAkaW1wbGVtZW50YXRpb25OYW1lLCAkaW1wbEV4cHJlc3Npb24sICRjb25kaXRpb25hbCkgPSBA
XzsKKyAgICAKKyAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRwcm9wZXJ0eS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07CisgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7CisgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkY29uZGl0aW9uYWwp
OworICAgICAgICByZXR1cm4gIldlYkNvcmU6OiR7aW1wbGVtZW50ZWRCeX06OiR7aW1wbGVtZW50
YXRpb25OYW1lfSI7CisgICAgfQorICAgIAorICAgIGlmICgkcHJvcGVydHktPmlzU3RhdGljIHx8
ICRwcm9wZXJ0eS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3J9IHx8ICRwcm9wZXJ0
eS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn0pIHsKKyAgICAgICAgcmV0
dXJuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAiOjoke2ltcGxlbWVudGF0aW9uTmFtZX0iOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoJHByb3BlcnR5LT5pc01hcExpa2UpIHsKKyAgICAgICAgcmV0
dXJuICJmb3J3YXJkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRwcm9wZXJ0eS0+bmFt
ZSkgLiAiVG9NYXBMaWtlIjsKKyAgICB9CisgICAgCisgICAgcmV0dXJuICIke2ltcGxFeHByZXNz
aW9ufS4ke2ltcGxlbWVudGF0aW9uTmFtZX0iOworfQorCitzdWIgQWRkQWRkaXRpb25hbEFyZ3Vt
ZW50c0ZvckltcGxlbWVudGF0aW9uQ2FsbAoreworICAgIG15ICgkYXJndW1lbnRzLCAkaW50ZXJm
YWNlLCAkcHJvcGVydHksICRpbXBsRXhwcmVzc2lvbiwgJHN0YXRlRXhwcmVzc2lvbiwgJHRoaXNP
YmplY3RFeHByZXNzaW9uKSA9IEBfOworICAgIAorICAgIGlmICgkcHJvcGVydHktPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9ICYmICEkcHJvcGVydHktPmlzU3RhdGljKSB7Cisg
ICAgICAgIHVuc2hpZnQoQCRhcmd1bWVudHMsICRpbXBsRXhwcmVzc2lvbik7CisgICAgfQorICAg
IAorICAgIGlmICgkcHJvcGVydHktPmlzTWFwTGlrZSkgeworICAgICAgICBwdXNoKEAkYXJndW1l
bnRzLCAkc3RhdGVFeHByZXNzaW9uKTsKKyAgICAgICAgcHVzaChAJGFyZ3VtZW50cywgJHRoaXNP
YmplY3RFeHByZXNzaW9uKTsKKyAgICB9Cit9CisKIHN1YiBHZXRTcGVjaWFsQWNjZXNzb3JPcGVy
YXRpb25Gb3JUeXBlCiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRzcGVjaWFsLCAkZmlyc3RQYXJh
bWV0ZXJUeXBlLCAkbnVtYmVyT2ZQYXJhbWV0ZXJzKSA9IEBfOwpAQCAtMjM2NCw4ICsyMzk5LDgg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBBdHRyaWJ1dGUgYW5kIGZ1bmN0aW9uIGVudW1z
CiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkgewogICAgICAgICBmb3JlYWNoIG15ICRhdHRy
aWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgICRudW1DdXN0
b21BdHRyaWJ1dGVzKysgaWYgSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcyk7Ci0gICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmIEhhc0N1c3Rv
bVNldHRlcigkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAgICAgJG51
bUN1c3RvbUF0dHJpYnV0ZXMrKyBpZiBIYXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0ZSk7CisgICAg
ICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmIEhhc0N1c3RvbVNldHRlcigkYXR0cmli
dXRlKTsKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
YWNoZWRBdHRyaWJ1dGV9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7
CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMjQwOCwxMyArMjQ0MywxMyBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7
JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0
cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1
dGUpOwotICAgICAgICAgICAgaWYgKEhhc0N1c3RvbUdldHRlcigkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMpKSB7CisgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1
dGUpKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgICAg
IG15ICRtZXRob2ROYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+
bmFtZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBKU0M6OkpT
VmFsdWUgIiAuICRtZXRob2ROYW1lIC4gIihKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0O1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKEhhc0N1c3RvbVNl
dHRlcigkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpICYmICFJc1JlYWRvbmx5KCRhdHRy
aWJ1dGUpKSB7CisgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUpICYm
ICFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQi
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+bmFtZSkgLiAiKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI0MjMs
NyArMjQ1OCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0KIAogICAgIGZvcmVhY2ggbXkg
JG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewotICAgICAgICAkbnVtQ3Vz
dG9tT3BlcmF0aW9ucysrIGlmIEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMpOworICAgICAgICAkbnVtQ3VzdG9tT3BlcmF0aW9ucysrIGlmIEhhc0N1c3RvbU1l
dGhvZCgkb3BlcmF0aW9uKTsKICAgICAgICAgJGhhc0ZvcndhcmREZWNsYXJpbmdPcGVyYXRpb25z
ID0gMSBpZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyfTsKICAgICB9CiAKQEAgLTI0MzEsNyArMjQ2Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJcbiAgICAvLyBDdXN0b20gZnVuY3Rpb25zXG4iKTsKICAgICAgICAgZm9yZWFj
aCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7Ci0gICAgICAgICAg
ICBuZXh0IHVubGVzcyBIYXNDdXN0b21NZXRob2QoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKTsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzIEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9u
KTsKICAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30gJiYgJG9wZXJh
dGlvbi0+e292ZXJsb2FkSW5kZXh9ICE9IDE7CiAKICAgICAgICAgICAgIGlmICgkb3BlcmF0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHlyaWdodH0pIHsKQEAgLTQwOTQsMTIgKzQx
MjksMTIgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBmb3JlYWNo
IG15ICRhdHRyaWJ1dGUgKEBhdHRyaWJ1dGVzKSB7Ci0gICAgICAgIEdlbmVyYXRlQXR0cmlidXRl
R2V0dGVyRGVmaW5pdGlvbigkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAg
ICAgICAgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJEZWZpbml0aW9uKCRpbnRlcmZhY2UsICRjbGFz
c05hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckRlZmlu
aXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7
CisgICAgICAgIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyRGVmaW5pdGlvbihcQGltcGxDb250ZW50
LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICB9CiAKICAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb24gKEBvcGVyYXRpb25zKSB7Ci0gICAgICAgIEdlbmVyYXRlT3BlcmF0
aW9uRGVmaW5pdGlvbigkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKKyAgICAg
ICAgR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRvcGVyYXRpb24pOwogICAgIH0KICAgICAKICAgICBHZW5lcmF0ZUl0ZXJh
YmxlRGVmaW5pdGlvbigkaW50ZXJmYWNlKSBpZiAkaW50ZXJmYWNlLT5pdGVyYWJsZTsKQEAgLTQz
MjksMTM5ICs0MzY0LDEzNiBAQCBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlm
IC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAK
LXN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24KK3N1YiBHZW5lcmF0ZUF0dHJp
YnV0ZUdldHRlckJvZHlEZWZpbml0aW9uCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpID0gQF87Ci0KLSAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7Ci0KLSAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7Ci0g
ICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT50eXBlOwotICAgIG15ICRnZXRGdW5jdGlvbk5hbWUg
PSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpOwotICAgIG15ICRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldL
X2xjZmlyc3QoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30g
fHwgJG5hbWUpOwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFt
ZTsKLQotICAgIG15ICRjb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbmRpdGlvbmFsfTsKLSAgICBpZiAoJGNvbmRpdGlvbmFsKSB7Ci0gICAgICAgIG15ICRj
b25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3Ry
aW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbCk7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTs7Ci0gICAgfQotCi0gICAgaWYg
KCEkYXR0cmlidXRlLT5pc1N0YXRpYyB8fCAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5
cGUoJHR5cGUpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBK
U1ZhbHVlICR7Z2V0RnVuY3Rpb25OYW1lfUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCAke2NsYXNz
TmFtZX0mIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpXG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgaW5saW5lIEpTVmFsdWUgJHtnZXRGdW5jdGlvbk5h
bWV9R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKLSAgICB9Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTtcbiIpOwotCisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJGF0dHJpYnV0ZSwgJGF0dHJpYnV0ZUdldHRlckJvZHlOYW1lLCAkY29uZGl0aW9u
YWwpID0gQF87CisgICAgCisgICAgbXkgQHNpZ25hdHVyZUFyZ3VtZW50cyA9ICgpOworICAgIHB1
c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIkV4ZWNTdGF0ZSYgc3RhdGUiKTsKKyAgICBwdXNoKEBz
aWduYXR1cmVBcmd1bWVudHMsICIke2NsYXNzTmFtZX0mIHRoaXNPYmplY3QiKSBpZiAhJGF0dHJp
YnV0ZS0+aXNTdGF0aWM7CisgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRzLCAiVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSIpOworICAgIAorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSAke2F0dHJpYnV0ZUdldHRlckJvZHlOYW1lfSgiIC4gam9pbigiLCAiLCBA
c2lnbmF0dXJlQXJndW1lbnRzKSAuICIpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7
XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7XG4iKTsKKyAgICAKICAgICAjIEdsb2JhbCBjb25zdHJ1Y3RvcnMgY2FuIGJlIGRpc2FibGVk
IGF0IHJ1bnRpbWUuCi0gICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgk
dHlwZSkpIHsKKyAgICAjIEZJWE1FOiBSZXR1cm5pbmcgdW5kZWZpbmVkIGlzIG5vdCB0aGUgc2Ft
ZSBhcyBkaWFzYWJsaW5nLiBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBiZSByZW1vdmVkCisgICAg
IyBmcm9tIHRoZSBvYmplY3QgaW5zdGVhZC4KKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29u
c3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpKSB7CiAgICAgICAgIGlmICgkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewogICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkZyYW1lLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIlNldHRpbmdzLmgiLCAkY29uZGl0aW9uYWwpOwotCisgICAgICAg
ICAgICAKICAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IFRvTWV0aG9kTmFtZSgkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgLiAiRW5hYmxl
ZCI7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmplY3Qud3JhcHBlZCgpLmZyYW1lKCkpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpLmZyYW1lKCktPnNldHRpbmdzKCk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmICghc2V0dGluZ3MuJGVuYWJsZUZ1bmN0aW9uKCkpXG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VM
WSghdGhpc09iamVjdC53cmFwcGVkKCkuZnJhbWUoKSkpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFzZXR0aW5ncy4kZW5hYmxlRnVuY3Rpb24oKSlc
biIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTtcbiIpOwogICAgICAgICB9CiAgICAgfQotCisgICAgCiAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9ICYmCiAgICAgICAgICEk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmCiAg
ICAgICAgICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJp
dHlPbkdldHRlcn0pIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NQmluZGluZ1Nl
Y3VyaXR5LmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
IkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCZzdGF0ZSwgdGhp
c09iamVjdC53cmFwcGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikpXG4iKTsKKyAgICAgICAgaWYg
KCRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsIHRoaXNPYmplY3Qud3JhcHBlZCgpLCBUaHJvd1NlY3Vy
aXR5RXJyb3IpKVxuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0Zy
YW1lKCZzdGF0ZSwgdGhpc09iamVjdC53cmFwcGVkKCkuZnJhbWUoKSwgVGhyb3dTZWN1cml0eUVy
cm9yKSlcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCB0aGlzT2JqZWN0
LndyYXBwZWQoKS5mcmFtZSgpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKVxuIik7CiAgICAgICAgIH0K
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7XG4iKTsKICAgICB9Ci0KLSAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIHRoaXNPYmplY3QuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoc3RhdGUpO1xuIik7
Ci0gICAgfSBlbHNpZiAoJHR5cGUtPm5hbWUgZXEgIkV2ZW50SGFuZGxlciIpIHsKKyAgICAKKyAg
ICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUpKSB7CisgICAgICAgIG15ICRpbXBsR2V0
dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJGF0dHJpYnV0ZS0+bmFtZSk7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gdGhpc09iamVjdC4ke2lt
cGxHZXR0ZXJGdW5jdGlvbk5hbWV9KHN0YXRlKTtcbiIpOworICAgIH0gZWxzaWYgKCRhdHRyaWJ1
dGUtPnR5cGUtPm5hbWUgZXEgIkV2ZW50SGFuZGxlciIpIHsKICAgICAgICAgJGltcGxJbmNsdWRl
c3siRXZlbnROYW1lcy5oIn0gPSAxOwogICAgICAgICBteSAkZ2V0dGVyID0gJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57V2luZG93RXZlbnRIYW5kbGVyfSA/ICJ3aW5kb3dFdmVudEhh
bmRsZXJBdHRyaWJ1dGUiCiAgICAgICAgICAgICA6ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0RvY3VtZW50RXZlbnRIYW5kbGVyfSA/ICJkb2N1bWVudEV2ZW50SGFuZGxlckF0dHJp
YnV0ZSIKICAgICAgICAgICAgIDogImV2ZW50SGFuZGxlckF0dHJpYnV0ZSI7CiAgICAgICAgIG15
ICRldmVudE5hbWUgPSBFdmVudEhhbmRsZXJBdHRyaWJ1dGVFdmVudE5hbWUoJGF0dHJpYnV0ZSk7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkZ2V0dGVyKHRoaXNPYmpl
Y3Qud3JhcHBlZCgpLCAkZXZlbnROYW1lLCB3b3JsZEZvckRPTU9iamVjdCgmdGhpc09iamVjdCkp
O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJGdldHRlcih0
aGlzT2JqZWN0LndyYXBwZWQoKSwgJGV2ZW50TmFtZSwgd29ybGRGb3JET01PYmplY3QoJnRoaXNP
YmplY3QpKTtcbiIpOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9y
VHlwZSgkYXR0cmlidXRlLT50eXBlKSkgewogICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0g
JGF0dHJpYnV0ZS0+dHlwZS0+bmFtZTsKICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0Nv
bnN0cnVjdG9yJC8vOwogICAgICAgICAjIFdoZW4gQ29uc3RydWN0b3IgYXR0cmlidXRlIGlzIHVz
ZWQgYnkgRE9NV2luZG93LmlkbCwgaXQncyBjb3JyZWN0IHRvIHBhc3MgdGhpc09iamVjdCBhcyB0
aGUgZ2xvYmFsIG9iamVjdAogICAgICAgICAjIFdoZW4gSlNET01XcmFwcGVycyBoYXZlIGEgYmFj
ay1wb2ludGVyIHRvIHRoZSBnbG9iYWxPYmplY3Qgd2UgY2FuIHBhc3MgdGhpc09iamVjdC0+Z2xv
YmFsT2JqZWN0KCkKLSAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7
CisgICAgICAgIGlmICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciKSB7CiAg
ICAgICAgICAgICBteSAkbmFtZWQgPSAoJGNvbnN0cnVjdG9yVHlwZSA9fiAvTmFtZWQkLykgPyAi
TmFtZWQiIDogIiI7CiAgICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvTmFtZWQkLy87
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0
cnVjdG9yVHlwZSAuICI6OmdldCR7bmFtZWR9Q29uc3RydWN0b3Ioc3RhdGUudm0oKSwgJnRoaXNP
YmplY3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJu
IEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXQke25hbWVkfUNvbnN0cnVjdG9yKHN0YXRl
LnZtKCksICZ0aGlzT2JqZWN0KTtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkY29uZGl0
aW9uYWwpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTIiAu
ICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS52bSgpLCB0aGlzT2Jq
ZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUudm0oKSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7XG4iKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDYWNoZWRBdHRyaWJ1dGV9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IHRoaXNPYmplY3QubV8iIC4gJGF0dHJpYnV0ZS0+
bmFtZSAuICIuZ2V0KCkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIG15IEBj
YWxsV2l0aEFyZ3MgPSBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgXEBpbXBsQ29udGVudCwgImpzVW5kZWZp
bmVkKCkiKTsKLQotICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29k
ZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5h
bWUsICRhdHRyaWJ1dGUpOwotICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OwotICAgICAgICBpZiAoJGltcGxl
bWVudGVkQnkpIHsKLSAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0u
aCJ9ID0gMTsKLSAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1l
bnRlZEJ5fTo6JHtmdW5jdGlvbk5hbWV9IjsKLSAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50
cywgImltcGwiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7Ci0gICAgICAgIH0gZWxzaWYgKCRh
dHRyaWJ1dGUtPmlzU3RhdGljKSB7Ci0gICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW50
ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSI7Ci0gICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1
dGUtPmlzTWFwTGlrZSkgewotICAgICAgICAgICAgbXkgJHVjUHJvcGVydHlOYW1lID0gJGNvZGVH
ZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICAkZnVuY3Rp
b25OYW1lID0gImZvcndhcmQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9u
TmFtZSkgLiAiVG9NYXBMaWtlIjsKLSAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgInN0YXRl
Iik7Ci0gICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJ0aGlzT2JqZWN0Iik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbk5h
bWV9IjsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoSlNWYWx1ZSBj
YWNoZWRWYWx1ZSA9IHRoaXNPYmplY3QubV8iIC4gJGF0dHJpYnV0ZS0+bmFtZSAuICIuZ2V0KCkp
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIGNh
Y2hlZFZhbHVlO1xuIik7CiAgICAgICAgIH0KLQorICAgICAgICAKKyAgICAgICAgbXkgQGNhbGxX
aXRoQXJncyA9IEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJqc1VuZGVmaW5lZCgp
Iik7CisgICAgICAgIAorICAgICAgICBteSAoJGJhc2VGdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMp
ID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRl
cmZhY2UtPnR5cGUtPm5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICBteSAkZnVuY3Rpb25OYW1l
ID0gR2V0RnVsbHlRdWFsaWZpZWRJbXBsZW1lbnRhdGlvbkNhbGxOYW1lKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUsICRiYXNlRnVuY3Rpb25OYW1lLCAiaW1wbCIsICRjb25kaXRpb25hbCk7CisgICAg
ICAgIEFkZEFkZGl0aW9uYWxBcmd1bWVudHNGb3JJbXBsZW1lbnRhdGlvbkNhbGwoXEBhcmd1bWVu
dHMsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUsICJpbXBsIiwgInN0YXRlIiwgInRoaXNPYmplY3Qi
KTsKKyAgICAgICAgCiAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgQGNhbGxXaXRoQXJncyk7
Ci0gICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0
dHJpYnV0ZSwgJGludGVyZmFjZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJn
dW1lbnRzKSAuICIpIiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTtc
biIpIHVubGVzcyAkYXR0cmlidXRlLT5pc1N0YXRpYyBvciAkYXR0cmlidXRlLT5pc01hcExpa2U7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gJGpzVHlw
ZTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0Lm1fIiAu
ICRhdHRyaWJ1dGUtPm5hbWUgLiAiLnNldChzdGF0ZS52bSgpLCAmdGhpc09iamVjdCwgcmVzdWx0
KTtcbiIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0
ZX07Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiByZXN1bHQ7XG4iKTsK
KyAgICAgICAgCisgICAgICAgIG15ICR0b0pTRXhwcmVzc2lvbiA9IE5hdGl2ZVRvSlNWYWx1ZVVz
aW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiJHtmdW5jdGlvbk5hbWV9KCIg
LiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCkiKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTtcbiIpIHVubGVzcyAkYXR0cmlidXRlLT5pc1N0YXRpYyBvciAkYXR0
cmlidXRlLT5pc01hcExpa2U7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU1Zh
bHVlIHJlc3VsdCA9ICR7dG9KU0V4cHJlc3Npb259O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiLnNldChz
dGF0ZS52bSgpLCAmdGhpc09iamVjdCwgcmVzdWx0KTtcbiIpIGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX07CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgfQotICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOworfQorCitz
dWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5lRGVmaW5pdGlvbgoreworICAgIG15
ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUsICRhdHRy
aWJ1dGVHZXR0ZXJOYW1lLCAkYXR0cmlidXRlR2V0dGVyQm9keU5hbWUsICRjb25kaXRpb25hbCkg
PSBAXzsKKyAgICAKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01BdHRyaWJ1dGUuaCIsICRj
b25kaXRpb25hbCk7CisgICAgCisgICAgbXkgJGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1lID0gImdl
dCI7CisgICAgJGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1lIC49ICJTdGF0aWMiIGlmICRhdHRyaWJ1
dGUtPmlzU3RhdGljOworICAgIAorICAgIG15IEB0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAoKTsKKyAg
ICBwdXNoKEB0ZW1wbGF0ZVBhcmFtZXRlcnMsICRhdHRyaWJ1dGVHZXR0ZXJCb2R5TmFtZSk7Cisg
ICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlbmllbnRUaGlzfSkgewor
ICAgICAgICBwdXNoKEB0ZW1wbGF0ZVBhcmFtZXRlcnMsICJDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6UmV0dXJuRWFybHkiKQorICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VU
eXBlKCRhdHRyaWJ1dGUtPnR5cGUpKSB7CisgICAgICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVy
cywgIkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZWplY3RQcm9taXNlIikKKyAgICB9CisgICAg
CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgJHthdHRyaWJ1dGVHZXR0
ZXJOYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSURMQXR0cmlidXRlPCR7Y2xhc3NOYW1lfT46OiR7
Y2FsbEF0dHJpYnV0ZUdldHRlck5hbWV9PCIgLiBqb2luKCIsICIsIEB0ZW1wbGF0ZVBhcmFtZXRl
cnMpIC4gIj4oKnN0YXRlLCB0aGlzVmFsdWUsIFwiIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAgIlwi
KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7Cit9CiAKLSAgICBpZiAo
ISRhdHRyaWJ1dGUtPmlzU3RhdGljIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlw
ZSgkdHlwZSkpIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NQXR0cmlidXRlLmgi
LCAkY29uZGl0aW9uYWwpOworc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyRGVmaW5pdGlvbgor
eworICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpID0gQF87CiAKLSAgICAgICAgbXkgQHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwotICAgICAg
ICBwdXNoKEB0ZW1wbGF0ZVBhcmFtZXRlcnMsICIke2dldEZ1bmN0aW9uTmFtZX1HZXR0ZXIiKTsK
LSAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlbmllbnRUaGlz
fSkgewotICAgICAgICAgICAgcHVzaChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAiQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OlJldHVybkVhcmx5IikKLSAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0
b3ItPklzUHJvbWlzZVR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKLSAgICAgICAgICAgIHB1c2go
QHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZWplY3RQcm9t
aXNlIikKLSAgICAgICAgfQorICAgIHJldHVybiBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAk
YXR0cmlidXRlKTsKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVl
ICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSURMQXR0cmlidXRl
PCR7Y2xhc3NOYW1lfT46OmdldDwiIC4gam9pbigiLCAiLCBAdGVtcGxhdGVQYXJhbWV0ZXJzKSAu
ICI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBcIiRuYW1lXCIpO1xuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoJHtnZXRGdW5jdGlvbk5hbWV9R2V0dGVyKCpzdGF0ZSkpO1xuIik7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICBteSAkYXR0cmlidXRlR2V0
dGVyTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSk7CisgICAgbXkgJGF0dHJpYnV0ZUdldHRlckJvZHlOYW1lID0gJGF0dHJpYnV0
ZUdldHRlck5hbWUgLiAiR2V0dGVyIjsKKyAgICAKKyAgICBteSAkY29uZGl0aW9uYWwgPSAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CisgICAgaWYgKCRjb25k
aXRpb25hbCkgeworICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0aW9u
YWwpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpOzsKICAgICB9Ci0KKyAgICAKKyAgICBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlE
ZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0
ZSwgJGF0dHJpYnV0ZUdldHRlckJvZHlOYW1lLCAkY29uZGl0aW9uYWwpOworICAgIEdlbmVyYXRl
QXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24oJG91dHB1dEFycmF5LCAkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlLCAkYXR0cmlidXRlR2V0dGVyTmFtZSwgJGF0dHJp
YnV0ZUdldHRlckJvZHlOYW1lLCAkY29uZGl0aW9uYWwpOworICAgIAogICAgIGlmICgkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKICAgICAgICAgYXNzZXJ0KCJP
bmx5IERPTUpJVD1HZXR0ZXIgaXMgc3VwcG9ydGVkIGZvciBhdHRyaWJ1dGVzIikgdW5sZXNzICRj
b2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0sICJHZXR0ZXIiKTsKIApAQCAtNDQ3NCw4OSArNDUwNiw3
MiBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJEZWZpbml0aW9uCiAgICAgICAgIG15ICRz
ZXR0ZXIgPSBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpID8gIm51bGxwdHIiIDogR2V0QXR0cmlidXRl
U2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAg
ICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkYXR0
cmlidXRlLT50eXBlKTsKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7ZG9tSklUQ2xh
c3NOYW1lfTo6JHtkb21KSVRDbGFzc05hbWV9KClcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoJGdldHRlciwgJHNldHRlciwg
JHtjbGFzc05hbWV9OjppbmZvKCksICRyZXN1bHRUeXBlKVxuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
KyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJHtkb21KSVRDbGFzc05hbWV9Ojoke2RvbUpJ
VENsYXNzTmFtZX0oKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoJGdldHRlciwgJHNldHRlciwgJHtjbGFzc05hbWV9Ojpp
bmZvKCksICRyZXN1bHRUeXBlKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntc
biIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCi0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVy
U2V0dGVyRm9yIiAuICRnZW5lcmF0b3JOYW1lIC4gIigpXG4iKTsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPCR7ZG9tSklUQ2xhc3NOYW1lfT4gY29tcGlsZXI7XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTtcbiIpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIkpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZv
ciIgLiAkZ2VuZXJhdG9yTmFtZSAuICIoKVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIntcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPCR7ZG9tSklUQ2xhc3NOYW1lfT4gY29tcGlsZXI7XG4iKTsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKICAgICB9Ci0KLSAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CisgICAgCisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbDsKIH0KIAotc3ViIEdl
bmVyYXRlQXR0cmlidXRlU2V0dGVyRGVmaW5pdGlvbgorc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0
dGVyQm9keURlZmluaXRpb24KIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSkgPSBAXzsKLQotICAgIHJldHVybiBpZiBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpOwot
ICAgIHJldHVybiBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLQotICAg
IG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKLSAgICBteSAkdHlwZSA9ICRhdHRyaWJ1dGUt
PnR5cGU7Ci0gICAgbXkgJGF0dHJpYnV0ZVNldHRlck5hbWUgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJO
YW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgIG15ICRpbXBsU2V0
dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwotICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKLQotICAgIG15ICRj
b25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFs
fTsKLSAgICBpZiAoJGNvbmRpdGlvbmFsKSB7Ci0gICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0
ZVZhbHVlKCRjb25kaXRpb25hbCk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTs7Ci0gICAgfQotCi0gICAgaWYgKCEkYXR0cmlidXRlLT5p
c1N0YXRpYykgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBpbmxpbmUgYm9v
bCAke2F0dHJpYnV0ZVNldHRlck5hbWV9U2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsICR7Y2xhc3NO
YW1lfSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSlc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2F0dHJpYnV0ZVNldHRl
ck5hbWV9KEV4ZWNTdGF0ZSogc3RhdGVQb2ludGVyLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVChzdGF0ZVBvaW50ZXIp
O1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIHN0YXRlID0gKnN0
YXRlUG9pbnRlcjtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURf
UEFSQU0oc3RhdGUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8g
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwotICAgIH0KKyAgICBt
eSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlLCAkYXR0
cmlidXRlU2V0dGVyQm9keU5hbWUsICRjb25kaXRpb25hbCkgPSBAXzsKIAorICAgIG15IEBzaWdu
YXR1cmVBcmd1bWVudHMgPSAoKTsKKyAgICBwdXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICJFeGVj
U3RhdGUmIHN0YXRlIik7CisgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRzLCAiJHtjbGFzc05h
bWV9JiB0aGlzT2JqZWN0IikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAgIHB1c2goQHNp
Z25hdHVyZUFyZ3VtZW50cywgIkpTVmFsdWUgdmFsdWUiKTsKKyAgICBwdXNoKEBzaWduYXR1cmVB
cmd1bWVudHMsICJUaHJvd1Njb3BlJiB0aHJvd1Njb3BlIik7CisgICAgCisgICAgcHVzaChAJG91
dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBib29sICR7YXR0cmlidXRlU2V0dGVyQm9keU5hbWV9
KCIgLiBqb2luKCIsICIsIEBzaWduYXR1cmVBcmd1bWVudHMpIC4gIilcbiIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVT
RURfUEFSQU0oc3RhdGUpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOworICAgIAogICAgIGlmICgkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDRVJlYWN0aW9uc30pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2s7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrO1xuIik7CiAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIiwgJGNvbmRp
dGlvbmFsKTsKICAgICB9Ci0KKyAgICAKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0gJiYgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0RvTm90Q2hlY2tTZWN1cml0eX0gJiYgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0RvTm90Q2hlY2tTZWN1cml0eU9uU2V0dGVyfSkgewogICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiSlNET01CaW5kaW5nU2VjdXJpdHkuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIGlm
ICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coJnN0YXRlLCB0aGlzT2JqZWN0LndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9y
KSlcbiIpOworICAgICAgICBpZiAoJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93
IikgeworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCZzdGF0ZSwgdGhpc09iamVjdC53
cmFwcGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikpXG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoJnN0YXRlLCB0aGlzT2JqZWN0LndyYXBwZWQoKS5mcmFt
ZSgpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFt
ZSgmc3RhdGUsIHRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1lKCksIFRocm93U2VjdXJpdHlFcnJv
cikpXG4iKTsKICAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIGZhbHNlO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
cmV0dXJuIGZhbHNlO1xuIik7CiAgICAgfQotCi0gICAgaWYgKEhhc0N1c3RvbVNldHRlcigkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHRoaXNPYmplY3Quc2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoc3RhdGUsIHZhbHVl
KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdHJ1ZTtcbiIp
OwotICAgIH0gZWxzaWYgKCR0eXBlLT5uYW1lIGVxICJFdmVudEhhbmRsZXIiKSB7CisgICAgCisg
ICAgaWYgKEhhc0N1c3RvbVNldHRlcigkYXR0cmlidXRlKSkgeworICAgICAgICBteSAkaW1wbFNl
dHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUt
Pm5hbWUpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdGhpc09iamVjdC5zZXQk
e2ltcGxTZXR0ZXJGdW5jdGlvbk5hbWV9KHN0YXRlLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xuIik7CisgICAgfSBlbHNpZiAoJGF0
dHJpYnV0ZS0+dHlwZS0+bmFtZSBlcSAiRXZlbnRIYW5kbGVyIikgewogICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiSlNFdmVudExpc3RlbmVyLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICBt
eSAkZXZlbnROYW1lID0gRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lKCRhdHRyaWJ1dGUp
OwogICAgICAgICAjIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGRvIHRoaXMgc3BlY2lhbCBjYXNlIHdp
dGhvdXQgaGFyZGNvZGluZyB0aGUgY2xhc3MgYW5kIGF0dHJpYnV0ZSBuYW1lcyBoZXJlLgotICAg
ICAgICBpZiAoKCgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikgb3IgKCRpbnRlcmZhY2VO
YW1lIGVxICJXb3JrZXJHbG9iYWxTY29wZSIpKSBhbmQgJG5hbWUgZXEgIm9uZXJyb3IiKSB7Cisg
ICAgICAgIGlmICgoJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IiBvciAkaW50
ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJXb3JrZXJHbG9iYWxTY29wZSIpIGFuZCAkYXR0cmlidXRl
LT5uYW1lIGVxICJvbmVycm9yIikgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpT
RXJyb3JIYW5kbGVyLmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgdGhpc09iamVjdC53cmFwcGVkKCkuc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cigkZXZlbnROYW1lLCBjcmVhdGVKU0Vycm9ySGFuZGxlcigmc3RhdGUsIHZhbHVlLCAmdGhpc09i
amVjdCksIHdvcmxkRm9yRE9NT2JqZWN0KCZ0aGlzT2JqZWN0KSk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB0aGlzT2JqZWN0LndyYXBwZWQoKS5zZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKCRldmVudE5hbWUsIGNyZWF0ZUpTRXJyb3JIYW5kbGVyKCZzdGF0ZSwg
dmFsdWUsICZ0aGlzT2JqZWN0KSwgd29ybGRGb3JET01PYmplY3QoJnRoaXNPYmplY3QpKTtcbiIp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRXZl
bnRMaXN0ZW5lci5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSAk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntXaW5kb3dFdmVudEhhbmRsZXJ9ID8gInNl
dFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIKICAgICAgICAgICAgICAgICA6ICRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvY3VtZW50RXZlbnRIYW5kbGVyfSA/ICJzZXREb2N1
bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZSIKICAgICAgICAgICAgICAgICA6ICJzZXRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUiOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHNl
dHRlcihzdGF0ZSwgdGhpc09iamVjdCwgdGhpc09iamVjdC53cmFwcGVkKCksICRldmVudE5hbWUs
IHZhbHVlKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICRzZXR0
ZXIoc3RhdGUsIHRoaXNPYmplY3QsIHRoaXNPYmplY3Qud3JhcHBlZCgpLCAke2V2ZW50TmFtZX0s
IHZhbHVlKTtcbiIpOwogICAgICAgICB9Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiB0cnVlO1xuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3Ry
dWN0b3JUeXBlKCR0eXBlKSkgewotICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJHR5cGUt
Pm5hbWU7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gdHJ1ZTtcbiIp
OworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmli
dXRlLT50eXBlKSkgeworICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+
dHlwZS0+bmFtZTsKICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8v
OwogICAgICAgICAjICRjb25zdHJ1Y3RvclR5cGUgfj0gL0NvbnN0cnVjdG9yJC8gaW5kaWNhdGVz
IHRoYXQgaXQgaXMgTmFtZWRDb25zdHJ1Y3Rvci4KICAgICAgICAgIyBXZSBkbyBub3QgZ2VuZXJh
dGUgdGhlIGhlYWRlciBmaWxlIGZvciBOYW1lZENvbnN0cnVjdG9yIG9mIGNsYXNzIFhYWFgsCkBA
IC00NTY0LDEwMCArNDU3OSwxMjIgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyRGVmaW5p
dGlvbgogICAgICAgICBpZiAoJGNvbnN0cnVjdG9yVHlwZSBuZSAiYW55IiBhbmQgJGNvbnN0cnVj
dG9yVHlwZSAhfiAvTmFtZWQkLykgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpT
IiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICB9Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yLlxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0
aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CisgICAgICAgIG15ICRpZCA9ICRhdHRyaWJ1
dGUtPm5hbWU7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3Rvci5cbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihc
IiR7aWR9XCIpLCBzdHJsZW4oXCIke2lkfVwiKSksIHZhbHVlKTtcbiIpOwogICAgIH0gZWxzaWYg
KCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcGxhY2VhYmxlfSkgewotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBwcm9wZXJ0
eS5cbiIpOworICAgICAgICBteSAkaWQgPSAkYXR0cmlidXRlLT5uYW1lOworICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gcHJvcGVydHkuXG4i
KTsKICAgICAgICAgaWYgKEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAk
YXR0cmlidXRlKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IHJlcGxhY2VTdGF0aWNQcm9wZXJ0eVNsb3Qoc3RhdGUudm0oKSwgJnRoaXNPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gcmVwbGFjZVN0YXRpY1Byb3Bl
cnR5U2xvdChzdGF0ZS52bSgpLCAmdGhpc09iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
c3RhdGUudm0oKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJHtpZH1cIiksIHN0
cmxlbihcIiR7aWR9XCIpKSwgdmFsdWUpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qo
c3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIFwiJG5hbWVcIiksIHZh
bHVlKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0
aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIke2lkfVwiKSwgc3Ry
bGVuKFwiJHtpZH1cIikpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgfQogICAgIH0gZWxzaWYgKCRh
dHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1B1dEZvcndhcmRzfSkgewogICAgICAgICBh
c3NlcnQoIltQdXRGb3J3YXJkc10gaXMgbm90IGNvbXBhdGlibGUgd2l0aCBzdGF0aWMgYXR0cmli
dXRlcyIpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgICAgICAKICAgICAgICAgIyAzLjUu
OS4xLiBMZXQgUSBiZSA/IEdldChPLCBpZCkuCiAgICAgICAgIG15ICRpZCA9ICRhdHRyaWJ1dGUt
Pm5hbWU7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gaWQgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oXCIke2lkfVwiKSwgc3RybGVuKFwiJHtpZH1cIikpO1xuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8gdmFsdWVUb0ZvcndhcmRUbyA9IHRoaXNPYmplY3QuZ2V0KCZz
dGF0ZSwgaWQpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBhdXRvIGlkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUudm0o
KSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJHtpZH1cIiksIHN0cmxlbihcIiR7
aWR9XCIpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB2YWx1
ZVRvRm9yd2FyZFRvID0gdGhpc09iamVjdC5nZXQoJnN0YXRlLCBpZCk7XG4iKTsKKyAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpO1xuIik7CiAgICAgICAgIAogICAgICAgICAjIDMuNS45LjIuIElmIFR5cGUoUSkgaXMg
bm90IE9iamVjdCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4KLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCF2YWx1ZVRvRm9yd2FyZFRvLmlzT2JqZWN0KCkpKSB7
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICB9XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSgh
dmFsdWVUb0ZvcndhcmRUby5pc09iamVjdCgpKSkge1xuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTtcbiIp
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIp
OworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgIAogICAg
ICAgICAjIDMuNS45LjMuIExldCBmb3J3YXJkSWQgYmUgdGhlIGlkZW50aWZpZXIgYXJndW1lbnQg
b2YgdGhlIFtQdXRGb3J3YXJkc10gZXh0ZW5kZWQgYXR0cmlidXRlLgogICAgICAgICBteSAkZm9y
d2FyZElkID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHV0Rm9yd2FyZHN9Owot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIGZvcndhcmRJZCA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihcIiR7Zm9yd2FyZElkfVwiKSwgc3RybGVuKFwiJHtmb3J3YXJkSWR9XCIpKTtcbiIpOworICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBmb3J3YXJkSWQgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZzdGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
XCIke2ZvcndhcmRJZH1cIiksIHN0cmxlbihcIiR7Zm9yd2FyZElkfVwiKSk7XG4iKTsKICAgICAg
ICAgCiAgICAgICAgICMgMy41LjkuNC4gUGVyZm9ybSA/IFNldChRLCBmb3J3YXJkSWQsIFYpLgog
ICAgICAgICAjIEZJWE1FOiBXaGF0IHNob3VsZCB0aGUgc2Vjb25kIHZhbHVlIHRvIHRoZSBQdXRQ
cm9wZXJ0eVNsb3QgYmU/CiAgICAgICAgICMgKGh0dHBzOi8vZ2l0aHViLmNvbS9oZXljYW0vd2Vi
aWRsL2lzc3Vlcy8zNjgpCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHZhbHVlVG9Gb3J3YXJkVG8sIGZhbHNlKTtcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhc09iamVjdCh2YWx1ZVRvRm9yd2FyZFRvKS0+bWV0aG9kVGFi
bGUoc3RhdGUudm0oKSktPnB1dChhc09iamVjdCh2YWx1ZVRvRm9yd2FyZFRvKSwgJnN0YXRlLCBm
b3J3YXJkSWQsIHZhbHVlLCBzbG90KTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpOworICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodmFsdWVUb0Zv
cndhcmRUbywgZmFsc2UpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBh
c09iamVjdCh2YWx1ZVRvRm9yd2FyZFRvKS0+bWV0aG9kVGFibGUoc3RhdGUudm0oKSktPnB1dChh
c09iamVjdCh2YWx1ZVRvRm9yd2FyZFRvKSwgJnN0YXRlLCBmb3J3YXJkSWQsIHZhbHVlLCBzbG90
KTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKTsKICAgICAgICAgCi0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiB0cnVlO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTtcbiIp
IGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTtcbiIpIGlmICEkYXR0cmlidXRl
LT5pc1N0YXRpYzsKICAgICAgICAKLSAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1U
eXBlKCR0eXBlKSkgeworICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJGF0
dHJpYnV0ZS0+dHlwZSkpIHsKICAgICAgICAgICAgICMgQXMgcGVyIHNlY3Rpb24gMy41LjYgb2Yg
aHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWF0dHJpYnV0ZS1zZXR0ZXIsIGVu
dW1lcmF0aW9ucyBkbyBub3QgdXNlCiAgICAgICAgICAgICAjIHRoZSBzdGFuZGFyZCBjb252ZXJz
aW9uLCBidXQgcmF0aGVyIHNpbGVudGx5IGZhaWwgb24gaW52YWxpZCBlbnVtZXJhdGlvbiB2YWx1
ZXMuCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIG9wdGlvbmFsTmF0
aXZlVmFsdWUgPSBwYXJzZUVudW1lcmF0aW9uPCIgLiBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgk
dHlwZSwgJGludGVyZmFjZSkgLiAiPihzdGF0ZSwgdmFsdWUpO1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElL
RUxZKCFvcHRpb25hbE5hdGl2ZVZhbHVlKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byBuYXRpdmVWYWx1ZSA9IG9wdGlvbmFsTmF0aXZlVmFsdWUudmFs
dWUoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gb3B0
aW9uYWxOYXRpdmVWYWx1ZSA9IHBhcnNlRW51bWVyYXRpb248IiAuIEdldEVudW1lcmF0aW9uQ2xh
c3NOYW1lKCRhdHRyaWJ1dGUtPnR5cGUsICRpbnRlcmZhY2UpIC4gIj4oc3RhdGUsIHZhbHVlKTtc
biIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFvcHRpb25hbE5hdGl2ZVZhbHVlKSlcbiIpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
b3B0aW9uYWxOYXRpdmVWYWx1ZS52YWx1ZSgpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBteSAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlID0gJGF0dHJpYnV0ZS0+aXNTdGF0aWMg
PyAiKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpIiA6ICIqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSI7CiAgICAgICAgICAgICBteSAkZXhj
ZXB0aW9uVGhyb3dlciA9IEdldEF0dHJpYnV0ZUV4Y2VwdGlvblRocm93ZXIoJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgICAgIG15ICRuYXRpdmVWYWx1ZSA9IEpTVmFsdWVUb05h
dGl2ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0sICImc3RhdGUiLCAic3RhdGUiLCAidGhpc09iamVj
dCIsICRnbG9iYWxPYmplY3RSZWZlcmVuY2UsICRleGNlcHRpb25UaHJvd2VyKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gbmF0aXZlVmFsdWUgPSAkbmF0aXZlVmFs
dWU7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CisgICAgICAgICAgICBteSAkdG9OYXRp
dmVFeHByZXNzaW9uID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUsICJ2
YWx1ZSIsICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSwgIiZz
dGF0ZSIsICJzdGF0ZSIsICJ0aGlzT2JqZWN0IiwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSwgJGV4
Y2VwdGlvblRocm93ZXIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSAke3RvTmF0aXZlRXhwcmVzc2lvbn07XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTtcbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBh
cmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVk
ZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgbXkgKCRiYXNlRnVuY3Rp
b25OYW1lLCBAYXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uKFwl
aW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lLCAkYXR0cmlidXRlKTsKIAogICAg
ICAgICBwdXNoKEBhcmd1bWVudHMsIFBhc3NBcmd1bWVudEV4cHJlc3Npb24oIm5hdGl2ZVZhbHVl
IiwgJGF0dHJpYnV0ZSkpOwogCi0gICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07Ci0gICAgICAgIGlmICgkaW1w
bGVtZW50ZWRCeSkgewotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50
ZWRCeX0uaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMs
ICJpbXBsIikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwotICAgICAgICAgICAgJGZ1bmN0aW9u
TmFtZSA9ICJXZWJDb3JlOjoke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uTmFtZX0iOwotICAg
ICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICAgICAgJGZ1bmN0
aW9uTmFtZSA9ICIke2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0aW9uTmFtZX0iOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25OYW1l
fSI7Ci0gICAgICAgIH0KKyAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bGx5UXVhbGlm
aWVkSW1wbGVtZW50YXRpb25DYWxsTmFtZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlLCAkYmFzZUZ1
bmN0aW9uTmFtZSwgImltcGwiLCAkY29uZGl0aW9uYWwpOworICAgICAgICBBZGRBZGRpdGlvbmFs
QXJndW1lbnRzRm9ySW1wbGVtZW50YXRpb25DYWxsKFxAYXJndW1lbnRzLCAkaW50ZXJmYWNlLCAk
YXR0cmlidXRlLCAiaW1wbCIsICJzdGF0ZSIsICJ0aGlzT2JqZWN0Iik7CiAKLSAgICAgICAgdW5z
aGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlckNhbGxXaXRofSwgXEBpbXBsQ29udGVudCwg
ImZhbHNlIikpOwotICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhV
c2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9
LCBcQGltcGxDb250ZW50LCAiZmFsc2UiKSk7CisgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywg
R2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntTZXR0ZXJDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgImZhbHNlIikpOworICAgICAg
ICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJm
YWxzZSIpKTsKIAotICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGZ1bmN0aW9uTmFtZSgi
IC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsKKyAgICAgICAgbXkgJGZ1bmN0aW9uU3Ry
aW5nID0gIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsK
ICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhy
b3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57U2V0dGVyTWF5VGhyb3dFeGNlcHRpb259OwogCi0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRmdW5jdGlvblN0cmluZztcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgJHtmdW5jdGlvblN0cmluZ307XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgfQotICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOworfQogCi0gICAgaWYgKCEk
YXR0cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICBteSBAdGVtcGxhdGVQYXJhbWV0ZXJzID0g
KCk7Ci0gICAgICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIiR7YXR0cmlidXRlU2V0dGVy
TmFtZX1TZXR0ZXIiKTsKLSAgICAgICAgcHVzaChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAiQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5IikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57TGVuaWVudFRoaXN9Oworc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyVHJh
bXBvbGluZURlZmluaXRpb24KK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkYXR0cmlidXRlLCAkYXR0cmlidXRlU2V0dGVyTmFtZSwgJGF0dHJpYnV0ZVNl
dHRlckJvZHlOYW1lLCAkY29uZGl0aW9uYWwpID0gQF87CisgICAgCisgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkpTRE9NQXR0cmlidXRlLmgiLCAkY29uZGl0aW9uYWwpOworICAgIAorICAgIG15ICRj
YWxsQXR0cmlidXRlU2V0dGVyTmFtZSA9ICJzZXQiOworICAgICRjYWxsQXR0cmlidXRlU2V0dGVy
TmFtZSAuPSAiU3RhdGljIiBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICAKKyAgICBteSBA
dGVtcGxhdGVQYXJhbWV0ZXJzID0gKCk7CisgICAgcHVzaChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAk
YXR0cmlidXRlU2V0dGVyQm9keU5hbWUpOworICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywg
IkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1cm5FYXJseSIpIGlmICRhdHRyaWJ1dGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0xlbmllbnRUaGlzfTsKKyAgICAKKyAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJib29sICR7YXR0cmlidXRlU2V0dGVyTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgcmV0dXJuIElETEF0dHJpYnV0ZTwke2NsYXNzTmFtZX0+Ojoke2NhbGxBdHRyaWJ1dGVT
ZXR0ZXJOYW1lfTwiIC4gam9pbigiLCAiLCBAdGVtcGxhdGVQYXJhbWV0ZXJzKSAuICI+KCpzdGF0
ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIFwiIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiXCIp
O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKK30KIAotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHthdHRyaWJ1dGVTZXR0ZXJOYW1lfShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSURMQXR0cmlidXRlPCR7Y2xhc3NOYW1lfT46
OnNldDwiIC4gam9pbigiLCAiLCBAdGVtcGxhdGVQYXJhbWV0ZXJzKSAuICI+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsIFwiJG5hbWVcIik7XG4iKTsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOworc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyRGVmaW5pdGlv
bgoreworICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRy
aWJ1dGUpID0gQF87CisgICAgCisgICAgcmV0dXJuIGlmIElzUmVhZG9ubHkoJGF0dHJpYnV0ZSk7
CisgICAgcmV0dXJuIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAg
IAorICAgIG15ICRjb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NvbmRpdGlvbmFsfTsKKyAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CisgICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5n
RnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbCk7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7OwogICAgIH0KLQotICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbDsKKyAgICAKKyAgICBt
eSAkYXR0cmlidXRlU2V0dGVyTmFtZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgbXkgJGF0dHJpYnV0ZVNldHRlckJvZHlO
YW1lID0gJGF0dHJpYnV0ZVNldHRlck5hbWUgLiAiU2V0dGVyIjsKKyAgICAKKyAgICBHZW5lcmF0
ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSwgJGF0dHJpYnV0ZVNldHRlckJvZHlOYW1lLCAkY29uZGl0
aW9uYWwpOworICAgIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24o
JG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlLCAkYXR0cmli
dXRlU2V0dGVyTmFtZSwgJGF0dHJpYnV0ZVNldHRlckJvZHlOYW1lLCAkY29uZGl0aW9uYWwpOwor
ICAgIAorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9u
YWw7CiB9CiAKIHN1YiBHZW5lcmF0ZU9wZXJhdGlvblRyYW1wb2xpbmVEZWZpbml0aW9uCkBAIC00
NzM1LDcgKzQ3NzIsNyBAQCBzdWIgR2VuZXJhdGVPcGVyYXRpb25Cb2R5RGVmaW5pdGlvbgogICAg
ICAgICBwdXNoKEBhcmd1bWVudHNUb0ZvcndhcmQsICJ0aHJvd1Njb3BlIik7CiAKICAgICAgICAg
R2VuZXJhdGVPdmVybG9hZERpc3BhdGNoZXIoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0
aW9uTmFtZSwgIkJvZHkiLCBqb2luKCIsICIsIEBhcmd1bWVudHNUb0ZvcndhcmQpKTsKLSAgICB9
IGVsc2lmIChIYXNDdXN0b21NZXRob2QoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkg
eworICAgIH0gZWxzaWYgKEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9uKSkgewogICAgICAgICBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uQ3VzdG9tRnVuY3Rpb25DYWxsKCRvdXRwdXRBcnJheSwgJG9w
ZXJhdGlvbiwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lLCAkaW5kZW50KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoISRvcGVyYXRpb24tPmlz
TWFwTGlrZSAmJiAhJG9wZXJhdGlvbi0+aXNTdGF0aWMpIHsKQEAgLTQ3NTIsMTMgKzQ3ODksMTMg
QEAgc3ViIEdlbmVyYXRlT3BlcmF0aW9uQm9keURlZmluaXRpb24KIAogc3ViIEdlbmVyYXRlT3Bl
cmF0aW9uRGVmaW5pdGlvbgogewotICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3Bl
cmF0aW9uKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRvcGVyYXRpb24pID0gQF87CiAKICAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgcmV0dXJuIGlmICRvcGVyYXRpb24tPmlzSXRlcmFibGU7
CiAgICAgcmV0dXJuIGlmICRvcGVyYXRpb24tPmlzU2VyaWFsaXplcjsKIAotICAgIG15ICRpc0N1
c3RvbSA9IEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMpOwor
ICAgIG15ICRpc0N1c3RvbSA9IEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9uKTsKICAgICBteSAk
aXNPdmVybG9hZGVkID0gJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30gJiYgQHskb3BlcmF0aW9uLT57
b3ZlcmxvYWRzfX0gPiAxOwogCiAgICAgYXNzZXJ0KCJbQ3VzdG9tXSBpcyBub3Qgc3VwcG9ydGVk
IGZvciBvdmVybG9hZGVkIG9wZXJhdGlvbnMuIikgaWYgJGlzQ3VzdG9tICYmICRpc092ZXJsb2Fk
ZWQ7CkBAIC00NzY3LDE4ICs0ODA0LDE4IEBAIHN1YiBHZW5lcmF0ZU9wZXJhdGlvbkRlZmluaXRp
b24KIAogICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHly
aWdodH0pIHsKICAgICAgICAgaWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgewotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9yU291cmNlRmlsZXMpOwor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvclNv
dXJjZUZpbGVzKTsKICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMTsKICAgICAgICAg
fQogICAgIH0gZWxzaWYgKCRpbkFwcGxlQ29weXJpZ2h0KSB7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICRlbmRBcHBsZUNvcHlyaWdodCk7CiAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAg
ICB9CiAKICAgICBteSAkY29uZGl0aW9uYWwgPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDb25kaXRpb25hbH07CiAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0
cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0aW9uYWwpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CiAgICAgfQogCiAgICAg
bXkgJGhhc1Byb21pc2VSZXR1cm5UeXBlID0gJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUo
JG9wZXJhdGlvbi0+dHlwZSk7CkBAIC00NzkxLDY4ICs0ODI4LDYwIEBAIHN1YiBHZW5lcmF0ZU9w
ZXJhdGlvbkRlZmluaXRpb24KICAgICBteSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgPSAk
b3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkb3BlcmF0aW9uLT5uYW1lKTsKICAgICBteSAkZnVuY3Rpb25C
b2R5TmFtZSA9ICgkaXNPdmVybG9hZGVkID8gJGZ1bmN0aW9uTmFtZSAuICRvcGVyYXRpb24tPntv
dmVybG9hZEluZGV4fSA6ICRmdW5jdGlvbk5hbWUpIC4gIkJvZHkiOwogCi0gICAgR2VuZXJhdGVP
cGVyYXRpb25Cb2R5RGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkb3BlcmF0aW9uLCAkZnVuY3Rpb25OYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5h
bWUsICRmdW5jdGlvbkJvZHlOYW1lKTsKKyAgICBHZW5lcmF0ZU9wZXJhdGlvbkJvZHlEZWZpbml0
aW9uKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbiwgJGZ1
bmN0aW9uTmFtZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkZnVuY3Rpb25Cb2R5TmFt
ZSk7CiAKICAgICAjIE92ZXJsb2FkZWQgb3BlcmF0aW9ucyBkb24ndCBnZW5lcmF0ZSBhIHRyYW1w
b2xpbmUgZm9yIGVhY2ggb3ZlcmxvYWQsIGFuZCBpbnN0ZWFkIGhhdmUgYSBzaW5nbGUgZGlzcGF0
Y2ggdHJhbXBvbGluZQogICAgICMgdGhhdCBnZXRzIGdlbmVyYXRlZCBhZnRlciB0aGUgbGFzdCBv
dmVybG9hZCBib2R5IGhhcyBiZWVuIGdlbmVyYXRlZC4KICAgICB1bmxlc3MgKCRpc092ZXJsb2Fk
ZWQpIHsKLSAgICAgICAgR2VuZXJhdGVPcGVyYXRpb25UcmFtcG9saW5lRGVmaW5pdGlvbihcQGlt
cGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uLCAkZnVuY3Rpb25O
YW1lLCAkZnVuY3Rpb25Cb2R5TmFtZSk7CisgICAgICAgIEdlbmVyYXRlT3BlcmF0aW9uVHJhbXBv
bGluZURlZmluaXRpb24oJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3Bl
cmF0aW9uLCAkZnVuY3Rpb25OYW1lLCAkZnVuY3Rpb25Cb2R5TmFtZSk7CiAgICAgfQogCi0gICAg
cHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYgJGNvbmRpdGlvbmFsOworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CiAKICAgICAj
IEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUg
b3ZlcmxvYWRzLgogICAgIGlmICgkaXNPdmVybG9hZGVkICYmICRvcGVyYXRpb24tPntvdmVybG9h
ZEluZGV4fSA9PSBAeyRvcGVyYXRpb24tPntvdmVybG9hZHN9fSkgewogICAgICAgICBteSAkb3Zl
cmxvYWRzQ29uZGl0aW9uYWxBdHRyaWJ1dGUgPSBHZXRDb25kaXRpb25hbEZvck9wZXJhdGlvbkNv
bnNpZGVyaW5nT3ZlcmxvYWRzKCRvcGVyYXRpb24pOwogICAgICAgICBteSAkb3ZlcmxvYWRzQ29u
ZGl0aW9uYWxTdHJpbmcgPSAkb3ZlcmxvYWRzQ29uZGl0aW9uYWxBdHRyaWJ1dGUgPyAkY29kZUdl
bmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkb3Zl
cmxvYWRzQ29uZGl0aW9uYWxBdHRyaWJ1dGUpIDogdW5kZWY7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7b3ZlcmxvYWRzQ29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRvdmVy
bG9hZHNDb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lm
ICR7b3ZlcmxvYWRzQ29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRvdmVybG9hZHNDb25kaXRp
b25hbFN0cmluZzsKIAogICAgICAgICBteSAkb3ZlcmxvYWREaXNwYXRjaGVyRnVuY3Rpb25Cb2R5
TmFtZSA9ICRmdW5jdGlvbk5hbWUgLiAiT3ZlcmxvYWREaXNwYXRjaGVyIjsKLSAgICAgICAgR2Vu
ZXJhdGVPcGVyYXRpb25Cb2R5RGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkb3BlcmF0aW9uLCAkZnVuY3Rpb25OYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRh
dGlvbk5hbWUsICRvdmVybG9hZERpc3BhdGNoZXJGdW5jdGlvbkJvZHlOYW1lLCAxKTsKLSAgICAg
ICAgR2VuZXJhdGVPcGVyYXRpb25UcmFtcG9saW5lRGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uLCAkZnVuY3Rpb25OYW1lLCAkb3Zlcmxv
YWREaXNwYXRjaGVyRnVuY3Rpb25Cb2R5TmFtZSk7CisgICAgICAgIEdlbmVyYXRlT3BlcmF0aW9u
Qm9keURlZmluaXRpb24oJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3Bl
cmF0aW9uLCAkZnVuY3Rpb25OYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRvdmVy
bG9hZERpc3BhdGNoZXJGdW5jdGlvbkJvZHlOYW1lLCAxKTsKKyAgICAgICAgR2VuZXJhdGVPcGVy
YXRpb25UcmFtcG9saW5lRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFz
c05hbWUsICRvcGVyYXRpb24sICRmdW5jdGlvbk5hbWUsICRvdmVybG9hZERpc3BhdGNoZXJGdW5j
dGlvbkJvZHlOYW1lKTsKICAgICAKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZc
blxuIikgaWYgJG92ZXJsb2Fkc0NvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIjZW5kaWZcblxuIikgaWYgJG92ZXJsb2Fkc0NvbmRpdGlvbmFsU3RyaW5nOwog
ICAgIH0KIAogCiAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJ
VH0pIHsKICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdG
cm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CiAgICAgICAgIH0K
IAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPGludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5o
PiIsICRjb25kaXRpb25hbCk7CiAgICAgICAgIG15ICR1bnNhZmVGdW5jdGlvbk5hbWUgPSAidW5z
YWZlIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOwotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAk
e3Vuc2FmZUZ1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCAkY2xhc3NOYW1lKiBj
YXN0ZWRUaGlzIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkpTQzo6RW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiAke3Vuc2FmZUZ1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGFy
Z3VtZW50IChAeyRvcGVyYXRpb24tPmFyZ3VtZW50c30pIHsKICAgICAgICAgICAgIG15ICR0eXBl
ID0gJGFyZ3VtZW50LT50eXBlOwogICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVu
c2FmZUFyZ3VtZW50VHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAgICAgICAgICAgICBteSAkbmFt
ZSA9ICRhcmd1bWVudC0+bmFtZTsKICAgICAgICAgICAgIG15ICRlbmNvZGVkTmFtZSA9ICJlbmNv
ZGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiLCAke2FyZ3VtZW50VHlwZX0gJHtlbmNvZGVkTmFtZX0iKTsKLSAg
ICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIilcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBV
TlVTRURfUEFSQU0oc3RhdGUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIHN0YXRlKTtcbiIpOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwotICAgICAgICBt
eSBAYXJndW1lbnRzOwotICAgICAgICBteSAkaW1wbEZ1bmN0aW9uTmFtZTsKLSAgICAgICAgbXkg
JGltcGxlbWVudGVkQnkgPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1l
bnRlZEJ5fTsKLQotICAgICAgICBpZiAoJGltcGxlbWVudGVkQnkpIHsKLSAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkY29uZGl0aW9uYWwpOwotICAg
ICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkb3BlcmF0aW9uLT5pc1N0
YXRpYzsKLSAgICAgICAgICAgICRpbXBsRnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiIgLiAkaW1w
bGVtZW50ZWRCeSAuICI6OiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWU7Ci0gICAgICAg
IH0gZWxzaWYgKCRvcGVyYXRpb24tPmlzU3RhdGljKSB7Ci0gICAgICAgICAgICAkaW1wbEZ1bmN0
aW9uTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAiOjoiIC4gJGZ1bmN0aW9uSW1wbGVt
ZW50YXRpb25OYW1lOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGltcGxGdW5jdGlv
bk5hbWUgPSAiaW1wbC4iIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiLCAke2FyZ3VtZW50VHlwZX0gJHtlbmNvZGVkTmFtZX0i
KTsKICAgICAgICAgfQotCisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIilcbiIpOworICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBz
dGF0ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKKyAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
XG4iKTsKKyAgICAgICAgCisgICAgICAgIG15ICRpbXBsRnVuY3Rpb25OYW1lID0gR2V0RnVsbHlR
dWFsaWZpZWRJbXBsZW1lbnRhdGlvbkNhbGxOYW1lKCRpbnRlcmZhY2UsICRvcGVyYXRpb24sICRm
dW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgImltcGwiLCAkY29uZGl0aW9uYWwpOworICAgICAg
ICAKKyAgICAgICAgbXkgQGFyZ3VtZW50cyA9ICgpOworICAgICAgICBBZGRBZGRpdGlvbmFsQXJn
dW1lbnRzRm9ySW1wbGVtZW50YXRpb25DYWxsKFxAYXJndW1lbnRzLCAkaW50ZXJmYWNlLCAkb3Bl
cmF0aW9uLCAiaW1wbCIsICIqc3RhdGUiLCAiKmNhc3RlZFRoaXMiKTsKKyAgICAgICAgCiAgICAg
ICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRvcGVyYXRpb24tPmFyZ3VtZW50c30pIHsKICAg
ICAgICAgICAgIG15ICR2YWx1ZSA9ICIiOwogICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1l
bnQtPnR5cGU7CkBAIC00ODYxLDggKzQ4OTAsOCBAQCBzdWIgR2VuZXJhdGVPcGVyYXRpb25EZWZp
bml0aW9uCiAgICAgICAgICAgICBteSAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID0gU2hvdWxkUGFz
c0FyZ3VtZW50QnlSZWZlcmVuY2UoJGFyZ3VtZW50KTsKIAogICAgICAgICAgICAgbXkgKCRuYXRp
dmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IFVuc2FmZVRvTmF0aXZlKCRpbnRlcmZhY2Us
ICRhcmd1bWVudCwgJGVuY29kZWROYW1lLCAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDb25kaXRpb25hbH0pOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byAkbmFtZSA9ICR7bmF0aXZlVmFsdWV9O1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpO1xuIikgaWYgJG1heVRocm93RXhjZXB0aW9uOworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CiAgICAgICAg
ICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOwogCiAgICAgICAgICAgICBpZiAoJHNob3Vs
ZFBhc3NCeVJlZmVyZW5jZSkgewpAQCAtNDg3MiwxMyArNDkwMSwxMyBAQCBzdWIgR2VuZXJhdGVP
cGVyYXRpb25EZWZpbml0aW9uCiAgICAgICAgIH0KICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5n
ID0gIiRpbXBsRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwog
ICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhy
b3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgTmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2Vw
dGlvbkNhbGwoJG9wZXJhdGlvbik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJG9w
ZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAiKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpIikgLiAiKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKCIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24sICRpbnRlcmZh
Y2UsICRmdW5jdGlvblN0cmluZywgIipjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSIpIC4gIik7
XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIAotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CisgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CiAgICAg
fQogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkgaWYgJGluQXBw
bGVDb3B5cmlnaHQ7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAkZW5kQXBwbGVDb3B5cmlnaHQp
IGlmICRpbkFwcGxlQ29weXJpZ2h0OwogfQogCiBzdWIgR2VuZXJhdGVTZXJpYWxpemVyRGVmaW5p
dGlvbgpAQCAtNTE5NSwyOCArNTIyNCwxNSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sK
IAogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKICAgICBt
eSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+R2V0VmlzaWJsZUludGVy
ZmFjZU5hbWUoJGludGVyZmFjZSk7Ci0gICAgbXkgJGltcGxlbWVudGVkQnkgPSAkb3BlcmF0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKICAgICBteSAkbnVtQXJndW1l
bnRzID0gQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9OwogICAgIG15ICRjb25kaXRpb25hbCA9ICRv
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKICAgICBteSAkaXND
b25zdHJ1Y3RvciA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9y
fSB8fCAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsK
IAotICAgIG15IEBhcmd1bWVudHM7Ci0gICAgbXkgJGZ1bmN0aW9uTmFtZTsKLQotICAgIGlmICgk
aW1wbGVtZW50ZWRCeSkgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRl
ZEJ5fS5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1w
bCIpIHVubGVzcyAkb3BlcmF0aW9uLT5pc1N0YXRpYzsKLSAgICAgICAgJGZ1bmN0aW9uTmFtZSA9
ICJXZWJDb3JlOjoke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1l
fSI7Ci0gICAgfSBlbHNpZiAoJG9wZXJhdGlvbi0+aXNTdGF0aWMgfHwgJGlzQ29uc3RydWN0b3Ip
IHsKLSAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICIke2ludGVyZmFjZU5hbWV9Ojoke2Z1bmN0aW9u
SW1wbGVtZW50YXRpb25OYW1lfSI7Ci0gICAgfSBlbHNpZiAoJG9wZXJhdGlvbi0+aXNNYXBMaWtl
KSB7Ci0gICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZm9yd2FyZCIgLiAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkb3BlcmF0aW9uLT5uYW1lKSAuICJUb01hcExpa2UiOwotICAgICAgICBwdXNo
KEBhcmd1bWVudHMsICIqc3RhdGUiKTsKLSAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiKmNhc3Rl
ZFRoaXMiKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7
ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKLSAgICB9Ci0KKyAgICBteSAkZnVuY3Rpb25O
YW1lID0gR2V0RnVsbHlRdWFsaWZpZWRJbXBsZW1lbnRhdGlvbkNhbGxOYW1lKCRpbnRlcmZhY2Us
ICRvcGVyYXRpb24sICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgImltcGwiLCAkY29uZGl0
aW9uYWwpOworICAgIAorICAgIG15IEBhcmd1bWVudHMgPSAoKTsKKyAgICBBZGRBZGRpdGlvbmFs
QXJndW1lbnRzRm9ySW1wbGVtZW50YXRpb25DYWxsKFxAYXJndW1lbnRzLCAkaW50ZXJmYWNlLCAk
b3BlcmF0aW9uLCAiaW1wbCIsICIqc3RhdGUiLCAiKmNhc3RlZFRoaXMiKTsKKyAgICAKICAgICBt
eSAkcXVvdGVkRnVuY3Rpb25OYW1lOwogICAgIGlmICghJGlzQ29uc3RydWN0b3IpIHsKICAgICAg
ICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uLT5uYW1lOwpAQCAtNjczNywyMCArNjc1MywyMCBAQCBz
dWIgSGFzQ3VzdG9tQ29uc3RydWN0b3IKIAogc3ViIEhhc0N1c3RvbUdldHRlcgogewotICAgIG15
ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBzaGlmdDsKLSAgICByZXR1cm4gJGV4dGVuZGVkQXR0cmli
dXRlcy0+e0N1c3RvbX0gfHwgJGV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldHRlcn0gOwor
ICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKKyAgICByZXR1cm4gJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q3VzdG9tfSB8fCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDdXN0b21HZXR0ZXJ9OwogfQogCiBzdWIgSGFzQ3VzdG9tU2V0dGVyCiB7Ci0gICAgbXkgJGV4
dGVuZGVkQXR0cmlidXRlcyA9IHNoaWZ0OwotICAgIHJldHVybiAkZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tfSB8fCAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tU2V0dGVyfTsKKyAgICBt
eSAkYXR0cmlidXRlID0gc2hpZnQ7CisgICAgcmV0dXJuICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbX0gfHwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3Vz
dG9tU2V0dGVyfTsKIH0KIAogc3ViIEhhc0N1c3RvbU1ldGhvZAogewotICAgIG15ICRleHRlbmRl
ZEF0dHJpYnV0ZXMgPSBzaGlmdDsKLSAgICByZXR1cm4gJGV4dGVuZGVkQXR0cmlidXRlcy0+e0N1
c3RvbX07CisgICAgbXkgJG9wZXJhdGlvbiA9IHNoaWZ0OworICAgIHJldHVybiAkb3BlcmF0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b219OwogfQogCiBzdWIgTmVlZHNDb25zdHJ1Y3Rv
clByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjE3OTEwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Nyw0OCArNDY3LDUzIEBAIGJvb2wgc2V0SlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1MKIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY1JlYWRPbmx5QXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9ySW1wbGVtZW50c1N0YXRpY1JlYWRPbmx5QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogeworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExM
b25nPihUZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlBdHRyKCkpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9ySW1wbGVtZW50c1N0YXRpY1JlYWRPbmx5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGlj
UmVhZE9ubHlBdHRyR2V0dGVyKCpzdGF0ZSkpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0SW50ZXJmYWNlPjo6Z2V0U3RhdGljPGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVt
ZW50c1N0YXRpY1JlYWRPbmx5QXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJpbXBsZW1l
bnRzU3RhdGljUmVhZE9ubHlBdHRyIik7CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9ySW1wbGVtZW50c1N0YXRpY0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5n
PihzdGF0ZSwgVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c1N0YXRpY0F0dHIoKSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JJbXBsZW1lbnRzU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJ
bXBsZW1lbnRzU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHJHZXR0ZXIoKnN0YXRlKSk7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpnZXRTdGF0aWM8anNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0ckdldHRlcj4oKnN0YXRl
LCB0aGlzVmFsdWUsICJpbXBsZW1lbnRzU3RhdGljQXR0ciIpOwogfQogCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotYm9vbCBzZXRKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGVQb2ludGVyLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50
c1N0YXRpY0F0dHJTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBBU1NFUlQoc3RhdGVQb2ludGVyKTsKLSAgICBhdXRv
JiBzdGF0ZSA9ICpzdGF0ZVBvaW50ZXI7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICBh
dXRvIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oc3RhdGUsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgICBUZXN0SW50ZXJmYWNlOjpzZXRJbXBsZW1lbnRzU3RhdGljQXR0cihXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgc2V0SlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
K3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNldFN0YXRpYzxz
ZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyU2V0dGVyPigq
c3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW1wbGVtZW50c1N0YXRpY0F0dHIiKTsK
K30KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKQEAgLTYzMiw0OCArNjM3LDUzIEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50c05vZGUoRXgKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3JTdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBs
ZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogeworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExMb25nPihX
ZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIo
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBw
bGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJHZXR0ZXIoKnN0YXRlKSk7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpnZXRTdGF0aWM8anNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCAic3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyIik7CiB9CiAKICNlbmRpZgog
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi1zdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0
aWNBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6
OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHJHZXR0ZXIoKnN0YXRlKSk7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpnZXRTdGF0aWM8anNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwg
InN1cHBsZW1lbnRhbFN0YXRpY0F0dHIiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLWJvb2wgc2V0SlNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGVQb2ludGVy
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGlj
QXR0clNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewotICAgIEFTU0VSVChzdGF0ZVBvaW50ZXIpOwotICAgIGF1dG8mIHN0YXRl
ID0gKnN0YXRlUG9pbnRlcjsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIGF1dG8gdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihz
dGF0ZSwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0YXRpY0F0
dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIHNl
dEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEludGVyZmFjZT46OnNl
dFN0YXRpYzxzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0
dHJTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdXBwbGVtZW50YWxT
dGF0aWNBdHRyIik7Cit9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjE3OTEwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMTAsNDMgKzIxMTAsNDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUmVhZE9ubHlUZXN0T2JqQQogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6
Z2V0PGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVl
LCAicmVhZE9ubHlUZXN0T2JqQXR0ciIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNS
ZWFkT25seUxvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KFRlc3RPYmo6OnN0
YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1JlYWRPbmx5TG9u
Z0F0dHJHZXR0ZXIoKnN0YXRlKSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+
OjpnZXRTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyR2V0
dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIiKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9i
akNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogeworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01T
dHJpbmc+KHN0YXRlLCBUZXN0T2JqOjpzdGF0aWNTdHJpbmdBdHRyKCkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3Ry
aW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQor
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJp
bmdBdHRyR2V0dGVyKCpzdGF0ZSkpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2Jq
Pjo6Z2V0U3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0ckdldHRlcj4o
KnN0YXRlLCB0aGlzVmFsdWUsICJzdGF0aWNTdHJpbmdBdHRyIik7CiB9CiAKLWJvb2wgc2V0SlNU
ZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGVQb2ludGVy
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0clNldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewotICAgIEFTU0VSVChzdGF0ZVBvaW50ZXIpOwotICAgIGF1dG8mIHN0YXRlID0gKnN0YXRlUG9p
bnRlcjsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIGF1dG8gdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIFRlc3RP
Ymo6OnNldFN0YXRpY1N0cmluZ0F0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JU
ZXN0U3ViT2JqR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0
aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0T2JqPjo6c2V0U3RhdGljPHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5n
QXR0clNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0YXRpY1N0cmlu
Z0F0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9y
VGVzdFN1Yk9iakdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwpAQCAtMjE1NSw3ICsyMTYwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9i
akNvbnN0cnVjdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJP
YmooRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2Jq
Q29uc3RydWN0b3JUZXN0U3ViT2JqR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgIlRlc3RTdWJP
YmoiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldFN0YXRpYzxqc1Rl
c3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmpHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiVGVz
dFN1Yk9iaiIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVGVzdFN1Yk9i
akVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yMTgwLDcgKzIx
ODUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iCiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmplY3Qu
cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiVGVz
dFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0
LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZS52bSgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nIiksIHN0cmxlbigiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSksIHZhbHVlKTsKIH0K
IAogYm9vbCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQpAQCAtNDE2NCw3ICs0MTY5LDcgQEAgc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9iakNvbmRpdGlvbgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yLgotICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOwor
ICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNv
bmRpdGlvbmFsQXR0cjQiKSwgc3RybGVuKCJjb25kaXRpb25hbEF0dHI0IikpLCB2YWx1ZSk7CiB9
CiAKIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQpAQCAtNDE5NSw3ICs0MjAwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dE9iakNvbmRpdGlvbgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgot
ICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjUiKSwgdmFsdWUpOworICAgIHJldHVy
biB0aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlvbmFs
QXR0cjUiKSwgc3RybGVuKCJjb25kaXRpb25hbEF0dHI1IikpLCB2YWx1ZSk7CiB9CiAKIGJvb2wg
c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpA
QCAtNDIyNiw3ICs0MjMxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakNvbmRp
dGlvbgogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIHJldHVy
biB0aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjYiKSwgdmFsdWUpOworICAgIHJldHVybiB0aGlzT2Jq
ZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZS52
bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImNvbmRpdGlvbmFsQXR0cjYiKSwg
c3RybGVuKCJjb25kaXRpb25hbEF0dHI2IikpLCB2YWx1ZSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpAQCAtNDQ4MSw3
ICs0NDg2LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlcGxhY2VhYgogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIHByb3BlcnR5LgotICAgIHJldHVybiB0aGlzT2JqZWN0
LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJl
cGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUudm0oKSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCBzdHJs
ZW4oInJlcGxhY2VhYmxlQXR0cmlidXRlIikpLCB2YWx1ZSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0
T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAJKHJldmlzaW9uIDIxNzkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw3
ICszMzMsNyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzU2VyaWFsaXplZFNjcmlwdFZhCiAgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RUeXBlZGVmcz46OnNldDxzZXRKU1Rlc3RUeXBlZGVm
c1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJPYmpHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJP
YmpHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKQEAg
LTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25z
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0VHlwZWRlZnM+OjpnZXQ8anNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJPYmpHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiVGVz
dFN1Yk9iaiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0VHlwZWRlZnM+OjpnZXRT
dGF0aWM8anNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJPYmpHZXR0ZXI+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCAiVGVzdFN1Yk9iaiIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNBdHRyaWJ1dGVXaXRoQ2xhbXBHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>