<?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>132301</bug_id>
          
          <creation_ts>2014-04-28 13:51:22 -0700</creation_ts>
          <short_desc>REGRESSION(r167855): Broke the windows build (Requested by bfulgham on #webkit).</short_desc>
          <delta_ts>2014-04-28 13:55:44 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>129795</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>darin</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1004721</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-28 13:51:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/167855 broke the build:
Broke the windows build (Requested by bfulgham on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004723</commentid>
    <comment_count>1</comment_count>
      <attachid>230320</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-28 13:51:42 -0700</bug_when>
    <thetext>Created attachment 230320
ROLLOUT of r167855

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004725</commentid>
    <comment_count>2</comment_count>
      <attachid>230320</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-28 13:55:41 -0700</bug_when>
    <thetext>Comment on attachment 230320
ROLLOUT of r167855

Clearing flags on attachment: 230320

Committed r167904: &lt;http://trac.webkit.org/changeset/167904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004726</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-28 13:55:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230320</attachid>
            <date>2014-04-28 13:51:42 -0700</date>
            <delta_ts>2014-04-28 13:55:41 -0700</delta_ts>
            <desc>ROLLOUT of r167855</desc>
            <filename>bug-132301-20140428135120.patch</filename>
            <type>text/plain</type>
            <size>110147</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNjNTMxNzk3YTM1N2Jk
MGE0NGI0ZTJhYTkyYjdjZTI3OTEyOWY4Yy4uY2EyMzAwNDliNGQzMGQxNjczMjRjMWYyZjYyNWM2
OTViNDQzMWVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA0LTI4ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTY3ODU1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMyMzAxCisKKyAgICAgICAgQnJva2UgdGhlIHdpbmRvd3MgYnVpbGQg
KFJlcXVlc3RlZCBieSBiZnVsZ2hhbSBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBj
aGFuZ2VzZXQ6CisKKyAgICAgICAgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgc2hvdWxk
IHdvcmsgd2VsbCB3aXRoIEMrKzExCisgICAgICAgIGxhbWJkYXMiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk3OTUKKyAgICAgICAgaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTY3ODU1CisKIDIwMTQtMDQtMjQgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEltcGxlbWVudCBXZWJRdWlja0xv
b2tIYW5kbGVDbGllbnQgZm9yIFdlYktpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcXVvdGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9xdW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5jcHAKaW5kZXggMWY1M2IwMzQwNmEyOTdj
MmI1NmIxNjkzZGU0M2I4YTIxOWZhM2IzYi4uOTgzYTU0MmI3OTdhZDkxNWY4ZTMxZjNmY2I0MzQz
NDgzOGNmNDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9y
YWdlRXJyb3JDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9T
dG9yYWdlRXJyb3JDYWxsYmFjay5jcHAKQEAgLTQwLDEzICs0MCwxOSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTdG9yYWdlRXJyb3JDYWxsYmFjazo6Q2FsbGJhY2tUYXNrOjpDYWxsYmFja1Rh
c2soUGFzc1JlZlB0cjxTdG9yYWdlRXJyb3JDYWxsYmFjaz4gY2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUgZWMpCi0gICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKFs9XSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIHsKLSAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgY2Fs
bGJhY2stPmhhbmRsZUV2ZW50KERPTUNvcmVFeGNlcHRpb246OmNyZWF0ZShFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24oZWMpKS5nZXQoKSk7Ci0gICAgfSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJh
Y2spCisgICAgLCBtX2VjKGVjKQogewogfQogCit2b2lkIFN0b3JhZ2VFcnJvckNhbGxiYWNrOjpD
YWxsYmFja1Rhc2s6OnBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQoreworICAg
IGlmICghbV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworICAgIEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiBkZXNjcmlwdGlvbihtX2VjKTsKKyAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChE
T01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoZGVzY3JpcHRpb24pLmdldCgpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFFVT1RBKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5oCmluZGV4IDU2
ZjNiZjY0ZWQ2Nzg3ZWU0YTQyNzNlMTg4ZTNlOTRiNDRjZDQ4OTEuLmZmY2U3YjY3NTE3YjYwYWNm
N2U0ZDU0YzkzYmIzOTQ3NWQ0OWI2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcXVvdGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1N0b3JhZ2VFcnJvckNhbGxiYWNrLmgKQEAgLTUwLDkgKzUwLDE2IEBAIHB1Ymxp
YzoKIAogICAgIGNsYXNzIENhbGxiYWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxiYWNrVGFzayhQYXNzUmVmUHRy
PFN0b3JhZ2VFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSk7CisgICAgICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENhbGxiYWNrVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U3RvcmFnZUVycm9yQ2Fs
bGJhY2s+IGNhbGxiYWNrLCBFeGNlcHRpb25Db2RlIGVjKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENhbGxiYWNrVGFzayhjYWxsYmFjaywgZWMpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBDYWxsYmFja1Rhc2soUGFzc1JlZlB0
cjxTdG9yYWdlRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUpOworCiAgICAgICAgIFJlZlB0
cjxTdG9yYWdlRXJyb3JDYWxsYmFjaz4gbV9jYWxsYmFjazsKICAgICAgICAgRXhjZXB0aW9uQ29k
ZSBtX2VjOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwCmluZGV4IGVmMWUzMzMyYWU4OTcwZmIxNTE4MDYzOGZiNTVkMjU3NTk5MDEy
MTEuLmUxNjFkOWQ0Y2MyZjVmYmE4ZjIxM2ZmNGMyNDdhYWIzNTk3MWIzNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC04NywxNyAr
ODcsMzkgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29u
dGV4dD4gZGF0YWJhc2VDb250ZXh0LAogICAgIEFTU0VSVChtX2RhdGFiYXNlQ29udGV4dC0+ZGF0
YWJhc2VUaHJlYWQoKSk7CiB9CiAKK2NsYXNzIERlcmVmQ29udGV4dFRhc2sgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8RGVyZWZDb250ZXh0VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dD4gY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVyZWZD
b250ZXh0VGFzayhjb250ZXh0KSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQgPT0gbV9jb250ZXh0KTsKKyAgICAgICAgbV9jb250
ZXh0LmNsZWFyKCk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgRGVyZWZDb250ZXh0VGFzayhQ
YXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQpCisgICAgICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCisgICAgeworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OworfTsKKwogRGF0YWJhc2U6On5EYXRhYmFzZSgpCiB7
CiAgICAgLy8gVGhlIHJlZmVyZW5jZSB0byB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBuZWVk
cyB0byBiZSBjbGVhcmVkIG9uIHRoZSBKYXZhU2NyaXB0IHRocmVhZC4gIElmIHdlJ3JlIG9uIHRo
YXQgdGhyZWFkIGFscmVhZHksIHdlIGNhbiBqdXN0IGxldCB0aGUgUmVmUHRyJ3MgZGVzdHJ1Y3Rp
b24gZG8gdGhlIGRlcmVmZmluZy4KICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
aXNDb250ZXh0VGhyZWFkKCkpIHsKICAgICAgICAgLy8gR3JhYiBhIHBvaW50ZXIgdG8gdGhlIHNj
cmlwdCBleGVjdXRpb24gaGVyZSBiZWNhdXNlIHdlJ3JlIHJlbGVhc2luZyBpdCB3aGVuIHdlIHBh
c3MgaXQgdG8KICAgICAgICAgLy8gRGVyZWZDb250ZXh0VGFzazo6Y3JlYXRlLgotICAgICAgICBQ
YXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHBhc3NlZENvbnRleHQgPSBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQucmVsZWFzZSgpOwotICAgICAgICBwYXNzZWRDb250ZXh0LT5wb3N0
VGFzayh7U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFs9XSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewotICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0ID09IHBhc3NlZENvbnRleHQpOwotICAgICAgICAgICAgUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQocGFzc2VkQ29u
dGV4dCk7Ci0gICAgICAgIH19KTsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsKKyAg
ICAgICAgCisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKERlcmVmQ29u
dGV4dFRhc2s6OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucmVsZWFzZSgpKSk7CiAg
ICAgfQogfQogCkBAIC0xNjUsMjUgKzE4Nyw0OSBAQCB2b2lkIERhdGFiYXNlOjpyZWFkVHJhbnNh
Y3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzcwog
ICAgIHJ1blRyYW5zYWN0aW9uKGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJh
Y2ssIHRydWUpOwogfQogCitzdGF0aWMgdm9pZCBjYWxsVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMRXJyb3I+IGVycm9yKQoreworICAgIGNh
bGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7Cit9CisKIHZvaWQgRGF0YWJhc2U6OnJ1
blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ss
IFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLAog
ICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIGJvb2wgcmVhZE9u
bHksIGNvbnN0IENoYW5nZVZlcnNpb25EYXRhKiBjaGFuZ2VWZXJzaW9uRGF0YSkKIHsKLSAgICBS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUHJvdGVjdG9y
KGVycm9yQ2FsbGJhY2spOwotICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24g
PSBTUUxUcmFuc2FjdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2tQcm90ZWN0b3IsIHJlYWRPbmx5KTsKLQotICAgIFJlZlB0cjxTUUxUcmFu
c2FjdGlvbkJhY2tlbmQ+IHRyYW5zYWN0aW9uQmFja2VuZChiYWNrZW5kKCktPnJ1blRyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uLnJlbGVhc2UoKSwgcmVhZE9ubHksIGNoYW5nZVZlcnNpb25EYXRhKSk7
Ci0gICAgaWYgKCF0cmFuc2FjdGlvbkJhY2tlbmQgJiYgZXJyb3JDYWxsYmFja1Byb3RlY3RvcikK
LSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbPV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKSB7Ci0gICAgICAgICAgICBlcnJvckNhbGxiYWNrUHJvdGVjdG9yLT5o
YW5kbGVFdmVudChTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgImRhdGFi
YXNlIGhhcyBiZWVuIGNsb3NlZCIpLmdldCgpKTsKLSAgICAgICAgfSk7CisgICAgUmVmUHRyPFNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gYW5vdGhlclJlZlRvRXJyb3JDYWxsYmFjayA9IGVy
cm9yQ2FsbGJhY2s7CisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IFNR
TFRyYW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFjaywgYW5v
dGhlclJlZlRvRXJyb3JDYWxsYmFjaywgcmVhZE9ubHkpOworCisgICAgUmVmUHRyPFNRTFRyYW5z
YWN0aW9uQmFja2VuZD4gdHJhbnNhY3Rpb25CYWNrZW5kOworICAgIHRyYW5zYWN0aW9uQmFja2Vu
ZCA9IGJhY2tlbmQoKS0+cnVuVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24ucmVsZWFzZSgpLCByZWFk
T25seSwgY2hhbmdlVmVyc2lvbkRhdGEpOworICAgIGlmICghdHJhbnNhY3Rpb25CYWNrZW5kICYm
IGFub3RoZXJSZWZUb0Vycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgUmVmUHRyPFNRTEVycm9yPiBl
cnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAiZGF0YWJhc2Ug
aGFzIGJlZW4gY2xvc2VkIik7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9z
dFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZjYWxsVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLCBh
bm90aGVyUmVmVG9FcnJvckNhbGxiYWNrLCBlcnJvci5yZWxlYXNlKCkpKTsKKyAgICB9CiB9CiAK
K2NsYXNzIERlbGl2ZXJQZW5kaW5nQ2FsbGJhY2tUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPERlbGl2ZXJQ
ZW5kaW5nQ2FsbGJhY2tUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJh
bnNhY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERlbGl2ZXJQZW5k
aW5nQ2FsbGJhY2tUYXNrKHRyYW5zYWN0aW9uKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAgbV90
cmFuc2FjdGlvbi0+cGVyZm9ybVBlbmRpbmdDYWxsYmFjaygpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBEZWxpdmVyUGVuZGluZ0NhbGxiYWNrVGFzayhQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
PiB0cmFuc2FjdGlvbikKKyAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQorICAg
IHsKKyAgICB9CisKKyAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247Cit9
OworCiB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uQ2FsbGJhY2soU1FMVHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uKQogewotICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb25Qcm90ZWN0b3IodHJhbnNhY3Rpb24pOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgewotICAgICAgICB0cmFu
c2FjdGlvblByb3RlY3Rvci0+cGVyZm9ybVBlbmRpbmdDYWxsYmFjaygpOwotICAgIH0pOworICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soRGVsaXZlclBlbmRpbmdDYWxsYmFj
a1Rhc2s6OmNyZWF0ZSh0cmFuc2FjdGlvbikpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBEYXRhYmFz
ZTo6cGVyZm9ybUdldFRhYmxlTmFtZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDc0NGQxYThhNDFkMzc5
YjUxNjNjMzFhOTU4MjNlZWI1MzczYmFhOTYuLjFmMDI1YWRiMGY2OTU5NjFjMTg3NDc5ODJiNDkz
YjIwOThiYmI3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTExNyw2ICsxMTcsMjkgQEAgdm9pZCBEYXRh
YmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogICAgIG1fZGF0YWJh
c2VJc0F2YWlsYWJsZSA9IGF2YWlsYWJsZTsKIH0KIAorY2xhc3MgRGF0YWJhc2VDcmVhdGlvbkNh
bGxiYWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8RGF0YWJhc2VD
YWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayhkYXRhYmFzZSwgY3JlYXRpb25DYWxs
YmFjaykpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIG1fY3JlYXRpb25DYWxsYmFjay0+aGFuZGxl
RXZlbnQobV9kYXRhYmFzZS5nZXQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIERhdGFiYXNl
Q3JlYXRpb25DYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJhc2UsIFBhc3NS
ZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY2FsbGJhY2spCisgICAgICAgIDogbV9kYXRhYmFzZShk
YXRhYmFzZSkKKyAgICAgICAgLCBtX2NyZWF0aW9uQ2FsbGJhY2soY2FsbGJhY2spCisgICAgewor
ICAgIH0KKworICAgIFJlZlB0cjxEYXRhYmFzZT4gbV9kYXRhYmFzZTsKKyAgICBSZWZQdHI8RGF0
YWJhc2VDYWxsYmFjaz4gbV9jcmVhdGlvbkNhbGxiYWNrOworfTsKKwogUGFzc1JlZlB0cjxEYXRh
YmFzZUNvbnRleHQ+IERhdGFiYXNlTWFuYWdlcjo6ZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
c3RkOjptdXRleD4gbG9jayhtX211dGV4KTsKQEAgLTMxMSw5ICszMzQsNyBAQCBQYXNzUmVmUHRy
PERhdGFiYXNlPiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZQogCiAgICAgaWYgKGJhY2tlbmQtPmlzTmV3KCkgJiYgY3JlYXRpb25DYWxs
YmFjay5nZXQoKSkgewogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJh
c2VDcmVhdGlvbkNhbGxiYWNrVGFzayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRhdGFiYXNlLmdldCgp
KTsKLSAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
Wz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgewotICAgICAgICAgICAgY3JlYXRpb25DYWxs
YmFjay0+aGFuZGxlRXZlbnQoZGF0YWJhc2UuZ2V0KCkpOwotICAgICAgICB9KTsKKyAgICAgICAg
ZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soRGF0YWJhc2VDcmVh
dGlvbkNhbGxiYWNrVGFzazo6Y3JlYXRlKGRhdGFiYXNlLCBjcmVhdGlvbkNhbGxiYWNrKSk7CiAg
ICAgfQogCiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAppbmRleCA2NjIyYmMxZjg5MGJjODE0
MzQzZTZiNjU3OTViMGZiYmVkN2I0ZDlmLi5mOTJjMzRmZjBhY2JjOGZmZjIxZTg0NGFhZDY1MGU3
OTAyNjUxMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVN5bmMuY3BwCkBAIC0xNTgsNiArMTU4LDI3IEBAIHZvaWQgRGF0YWJhc2VTeW5j
OjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKQogICAgIC8vIEZJWE1FOiBuZWVkIHRvIGRvIHNvbWV0
aGluZyBzaW1pbGFyIHRvIGNsb3NlSW1tZWRpYXRlbHkoKSwgYnV0IGluIGEgc3luYyB3YXkKIH0K
IAorY2xhc3MgQ2xvc2VTeW5jRGF0YWJhc2VPbkNvbnRleHRUaHJlYWRUYXNrIDogcHVibGljIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPENsb3NlU3luY0RhdGFiYXNlT25Db250ZXh0VGhyZWFkVGFzaz4gY3JlYXRlKFBhc3NSZWZQ
dHI8RGF0YWJhc2VTeW5jPiBkYXRhYmFzZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQ2xvc2VTeW5jRGF0YWJhc2VPbkNvbnRleHRUaHJlYWRUYXNrKGRhdGFiYXNlKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKQorICAgIHsKKyAgICAgICAgbV9kYXRhYmFzZS0+Y2xvc2VJbW1lZGlhdGVseSgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBDbG9zZVN5bmNEYXRhYmFzZU9uQ29udGV4dFRocmVhZFRhc2so
UGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IGRhdGFiYXNlKQorICAgICAgICA6IG1fZGF0YWJhc2Uo
ZGF0YWJhc2UpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxEYXRhYmFzZVN5bmM+IG1fZGF0
YWJhc2U7Cit9OworCiB2b2lkIERhdGFiYXNlU3luYzo6Y2xvc2VJbW1lZGlhdGVseSgpCiB7CiAg
ICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFj
a1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJh
Y2tXcmFwcGVyLmgKaW5kZXggM2RiMGM1MTZjYzliZjgwNzYwYzUwOWYzOWNhNjk3NTRjZjg5NWEy
YS4uNTFkMDA2YzA3MWU0OWFjYTdhOTY4OTFmYTVjMmNhYzcxMzBjMGIxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBl
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXIoKQogICAgIHsK
LSAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dFB0
cjsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dDsKICAgICAgICAgVCog
Y2FsbGJhY2s7CiAgICAgICAgIHsKICAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211
dGV4KTsKQEAgLTcwLDE0ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyID0gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CisgICAgICAgICAgICBjb250ZXh0
ID0gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgICAg
ICAgICBjYWxsYmFjayA9IG1fY2FsbGJhY2sucmVsZWFzZSgpLmxlYWtSZWYoKTsKICAgICAgICAg
fQotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyLT5wb3N0VGFzayh7IFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbPV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dCA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyICYmIGNvbnRleHQtPmlzQ29udGV4dFRo
cmVhZCgpKTsKLSAgICAgICAgICAgIGNhbGxiYWNrLT5kZXJlZigpOwotICAgICAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dFB0ci0+ZGVyZWYoKTsKLSAgICAgICAgfSB9KTsKKyAgICAgICAg
Y29udGV4dC0+cG9zdFRhc2soU2FmZVJlbGVhc2VUYXNrOjpjcmVhdGUoY2FsbGJhY2spKTsKICAg
ICB9CiAKICAgICBQYXNzUmVmUHRyPFQ+IHVud3JhcCgpCkBAIC05Miw2ICs4OCwzMSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2s7IH0K
IAogcHJpdmF0ZToKKyAgICBjbGFzcyBTYWZlUmVsZWFzZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxTYWZlUmVsZWFzZVRhc2s+IGNyZWF0ZShUKiBjYWxsYmFja1RvUmVsZWFzZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTYWZlUmVsZWFzZVRhc2soY2Fs
bGJhY2tUb1JlbGVhc2UpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQobV9jYWxsYmFja1RvUmVsZWFzZSAmJiBjb250ZXh0ICYmIGNvbnRleHQt
PmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICAgICAgICAgIG1fY2FsbGJhY2tUb1JlbGVhc2UtPmRl
cmVmKCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZXJlZigpOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBTYWZlUmVsZWFzZVRhc2soVCogY2FsbGJh
Y2tUb1JlbGVhc2UpCisgICAgICAgICAgICA6IG1fY2FsbGJhY2tUb1JlbGVhc2UoY2FsbGJhY2tU
b1JlbGVhc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFQqIG1fY2FsbGJhY2tU
b1JlbGVhc2U7CisgICAgfTsKKwogICAgIE11dGV4IG1fbXV0ZXg7CiAgICAgUmVmUHRyPFQ+IG1f
Y2FsbGJhY2s7CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHAKaW5kZXggNTRjYzc0NDhjMzczZWVmZmE1MGI0Nzc4NWY2MjE2ZDJiNGI5
YzBhMC4uNTJlMWQ2ZjVkMjkyMDM5YThiMjMxMTAwNTJlOTY3MmQ1OWNlMDcxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTE1
Nyw0OSArMTU3LDQ5IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpjbGVhckNsaWVudCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRDb25uZWN0KCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZENvbm5lY3RDYWxsYmFjaywgdGhpcykpKTsKKyAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb25uZWN0Q2FsbGJhY2ssIHRoaXMpKTsKICAg
ICBpZiAoIW1fc3VzcGVuZGVkKQogICAgICAgICBwcm9jZXNzUGVuZGluZ1Rhc2tzKCk7CiB9CiAK
IHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZl
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oY3JlYXRl
Q2FsbGJhY2tUYXNrKCZkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNrLCB0aGlzLCBtZXNzYWdlKSkp
OworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFJlY2Vp
dmVNZXNzYWdlQ2FsbGJhY2ssIHRoaXMsIG1lc3NhZ2UpKTsKICAgICBpZiAoIW1fc3VzcGVuZGVk
KQogICAgICAgICBwcm9jZXNzUGVuZGluZ1Rhc2tzKCk7CiB9CiAKIHZvaWQgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNzT3du
UHRyPFZlY3RvcjxjaGFyPj4gYmluYXJ5RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihjcmVhdGVD
YWxsYmFja1Rhc2soJmRpZFJlY2VpdmVCaW5hcnlEYXRhQ2FsbGJhY2ssIHRoaXMsIGJpbmFyeURh
dGEpKSk7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlk
UmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjaywgdGhpcywgYmluYXJ5RGF0YSkpOwogICAgIGlmICgh
bV9zdXNwZW5kZWQpCiAgICAgICAgIHByb2Nlc3NQZW5kaW5nVGFza3MoKTsKIH0KIAogdm9pZCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVk
QW1vdW50KHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQpCiB7Ci0gICAgbV9wZW5kaW5nVGFz
a3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRVcGRhdGVCdWZmZXJlZEFtb3VudENhbGxiYWNrLCB0aGlz
LCBidWZmZXJlZEFtb3VudCkpKTsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZkaWRVcGRhdGVCdWZmZXJlZEFtb3VudENhbGxiYWNrLCB0aGlzLCBidWZmZXJl
ZEFtb3VudCkpOwogICAgIGlmICghbV9zdXNwZW5kZWQpCiAgICAgICAgIHByb2Nlc3NQZW5kaW5n
VGFza3MoKTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oY3JlYXRl
Q2FsbGJhY2tUYXNrKCZkaWRTdGFydENsb3NpbmdIYW5kc2hha2VDYWxsYmFjaywgdGhpcykpKTsK
KyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRTdGFydENs
b3NpbmdIYW5kc2hha2VDYWxsYmFjaywgdGhpcykpOwogICAgIGlmICghbV9zdXNwZW5kZWQpCiAg
ICAgICAgIHByb2Nlc3NQZW5kaW5nVGFza3MoKTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVk
QnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9y
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihjcmVhdGVD
YWxsYmFja1Rhc2soJmRpZENsb3NlQ2FsbGJhY2ssIHRoaXMsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1v
dW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKSkpOworICAgIG1f
cGVuZGluZ1Rhc2tzLmFwcGVuZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZENsb3NlQ2FsbGJhY2ss
IHRoaXMsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlv
biwgY29kZSwgcmVhc29uKSk7CiAgICAgaWYgKCFtX3N1c3BlbmRlZCkKICAgICAgICAgcHJvY2Vz
c1BlbmRpbmdUYXNrcygpOwogfQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiB7Ci0gICAgbV9wZW5kaW5nVGFz
a3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWNlaXZlTWVzc2FnZUVycm9yQ2FsbGJhY2ssIHRoaXMp
KSk7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkUmVj
ZWl2ZU1lc3NhZ2VFcnJvckNhbGxiYWNrLCB0aGlzKSk7CiAgICAgaWYgKCFtX3N1c3BlbmRlZCkK
ICAgICAgICAgcHJvY2Vzc1BlbmRpbmdUYXNrcygpOwogfQpAQCAtMjMxLDEwICsyMzEsMTAgQEAg
dm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQZW5k
aW5nVGFza3MoKQogICAgICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFz
aygmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpwcm9jZXNzUGVuZGlu
Z1Rhc2tzQ2FsbGJhY2ssIHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IHBlbmRp
bmdUYXNrcyA9IHN0ZDo6bW92ZShtX3BlbmRpbmdUYXNrcyk7Ci0gICAgZm9yIChhdXRvJiB0YXNr
IDogcGVuZGluZ1Rhc2tzKQotICAgICAgICB0YXNrLT5wZXJmb3JtVGFzayhudWxscHRyKTsKKyAg
ICBWZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+PiB0YXNrczsKKyAg
ICB0YXNrcy5zd2FwKG1fcGVuZGluZ1Rhc2tzKTsKKyAgICBmb3IgKFZlY3RvcjxPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gdGFza3Mu
YmVnaW4oKTsgaXRlciAhPSB0YXNrcy5lbmQoKTsgKytpdGVyKQorICAgICAgICAoKml0ZXIpLT5w
ZXJmb3JtVGFzaygwKTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZENvbm5lY3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
d3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIuaAppbmRleCA5NzZjOTllNzUxMmEzMjBlNWUwNmJlODI5MzkxY2UxODQ3ZTgxZWJlLi4yOWY1
NDk1MGE4YmNhMzRhYWMwZDViZDRlNzA0ZWUxODU0NDYwMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCkBAIC0zNyw3ICszNyw2IEBACiAj
aW5jbHVkZSAiVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuaCIKLSNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTEx
NSw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IG1fc2VuZFJlcXVlc3RSZXN1bHQ7CiAgICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZl
cmVkQW1vdW50OwogICAgIGJvb2wgbV9zdXNwZW5kZWQ7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9wZW5kaW5nVGFza3M7CisgICAg
VmVjdG9yPE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9wZW5kaW5nVGFz
a3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBiZDZiMDc1MTU3N2QxYTI3YTM4YWUyNWRhOGE2MWEw
OWFmYzJkYTI4Li43MjFiYTVkMDkzZTE1NzM2ODAwM2IxOWVkZTc4MjFmZTQxMThiYmUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM1OSw2ICszNTks
NDQgQEAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6fkJyaWRnZSgp
CiAgICAgZGlzY29ubmVjdCgpOwogfQogCitjbGFzcyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6V29ya2VyR2xvYmFsU2NvcGVEaWRJbml0aWFsaXplVGFzayA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGUoV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXIqIHBlZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQ
cm94eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI+IHdvcmtlckNsaWVudFdyYXBwZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2socGVlciwgbG9hZGVyUHJveHks
IHdvcmtlckNsaWVudFdyYXBwZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Xb3JrZXJHbG9i
YWxTY29wZURpZEluaXRpYWxpemVUYXNrKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUo
KSk7CisgICAgICAgIGlmIChtX3dvcmtlckNsaWVudFdyYXBwZXItPmZhaWxlZFdlYlNvY2tldENo
YW5uZWxDcmVhdGlvbigpKSB7CisgICAgICAgICAgICAvLyBJZiBCcmlkZ2U6OmluaXRpYWxpemUo
KSBxdWl0dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBtYWluVGhyZWFkRGVzdHJveSgpIHRv
IGRlbGV0ZSB0aGUgcGVlci4KKyAgICAgICAgICAgIE93blB0cjxXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcj4gcGVlciA9IGFkb3B0UHRyKG1fcGVlcik7CisgICAgICAgICAg
ICBtX3BlZXIgPSAwOworICAgICAgICAgICAgbV9sb2FkZXJQcm94eS0+cG9zdFRhc2tUb0xvYWRl
cihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpt
YWluVGhyZWFkRGVzdHJveSwgcGVlci5yZWxlYXNlKCkpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBtX3dvcmtlckNsaWVudFdyYXBwZXItPmRpZENyZWF0ZVdlYlNvY2tldENoYW5uZWwo
bV9wZWVyKTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgV29ya2VyR2xvYmFsU2Nv
cGVEaWRJbml0aWFsaXplVGFzayhXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
ciogcGVlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29ya2VyTG9hZGVy
UHJveHkqIGxvYWRlclByb3h5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2Vy
Q2xpZW50V3JhcHBlcikKKyAgICAgICAgOiBtX3BlZXIocGVlcikKKyAgICAgICAgLCBtX2xvYWRl
clByb3h5KGxvYWRlclByb3h5KQorICAgICAgICAsIG1fd29ya2VyQ2xpZW50V3JhcHBlcih3b3Jr
ZXJDbGllbnRXcmFwcGVyKQorICAgIHsKKyAgICB9CisKKyAgICBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlciogbV9wZWVyOworICAgIFdvcmtlckxvYWRlclByb3h5KiBtX2xv
YWRlclByb3h5OworICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI+IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKK307CisKIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyTG9hZGVyUHJveHkqIGxvYWRlclByb3h5LCBQ
YXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gcHJwQ2xp
ZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwpAQCAtMzY2LDE4ICs0MDQsMTIgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXQK
IAogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNs
aWVudFdyYXBwZXIgPSBwcnBDbGllbnRXcmFwcGVyOwogCi0gICAgUGVlciogcGVlclB0ciA9IFBl
ZXI6OmNyZWF0ZShjbGllbnRXcmFwcGVyLCAqbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2Rl
KTsKLSAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZSh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBb
PV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICBp
ZiAoY2xpZW50V3JhcHBlci0+ZmFpbGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0aW9uKCkpIHsKLSAg
ICAgICAgICAgIC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFybGllciwgd2Ug
bmVlZCB0byBraWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBwZWVyLgotICAg
ICAgICAgICAgbG9hZGVyUHJveHktPnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZERlc3Ryb3ksIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MocGVlclB0cikpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBjbGllbnRXcmFwcGVyLT5kaWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKHBlZXJQdHIpOwot
ICAgIH0gfSwgdGFza01vZGUpOworICAgIFBlZXIqIHBlZXIgPSBQZWVyOjpjcmVhdGUoY2xpZW50
V3JhcHBlciwgKmxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSk7CisgICAgYm9vbCBzZW50
ID0gbG9hZGVyUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoCisgICAg
ICAgIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpXb3JrZXJHbG9iYWxTY29wZURp
ZEluaXRpYWxpemVUYXNrOjpjcmVhdGUocGVlciwgbG9hZGVyUHJveHksIGNsaWVudFdyYXBwZXIp
LCB0YXNrTW9kZSk7CiAgICAgaWYgKCFzZW50KSB7CiAgICAgICAgIGNsaWVudFdyYXBwZXItPmNs
ZWFyUGVlcigpOwotICAgICAgICBkZWxldGUgcGVlclB0cjsKKyAgICAgICAgZGVsZXRlIHBlZXI7
CiAgICAgfQogfQogCkBAIC01NDMsMjEgKzU3NSwyNSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRGYWlsLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKG1fcGVlciksIHJlYXNvbikpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQZWVyKiBwZWVyUHRyKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc093blB0cjxQZWVyPiBwZWVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxQZWVyPiBwZWVyKHBlZXJQdHIpOworICAgIEFTU0VSVF9VTlVTRUQo
cGVlciwgcGVlcik7CisKKyAgICAvLyBQZWVyIG9iamVjdCB3aWxsIGJlIGRlbGV0ZWQgZXZlbiBp
ZiB0aGUgdGFzayBkb2VzIG5vdCBydW4gaW4gdGhlIG1haW4gdGhyZWFkJ3MgY2xlYW51cCBwZXJp
b2QsIGJlY2F1c2UKKyAgICAvLyB0aGUgZGVzdHJ1Y3RvciBmb3IgdGhlIHRhc2sgb2JqZWN0IChj
cmVhdGVkIGJ5IGNyZWF0ZUNhbGxiYWNrVGFzaygpKSB3aWxsIGF1dG9tYXRpY2FsbHkgZGVsZXRl
IHRoZSBwZWVyLgogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OmRpc2Nvbm5lY3QoKQogewogICAgIGNsZWFyQ2xpZW50V3JhcHBlcigpOwogICAgIGlm
IChtX3BlZXIpIHsKLSAgICAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0
ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJl
YWREZXN0cm95LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikpKTsKLSAgICAgICAgbV9w
ZWVyID0gbnVsbHB0cjsKKyAgICAgICAgT3duUHRyPFBlZXI+IHBlZXIgPSBhZG9wdFB0cihtX3Bl
ZXIpOworICAgICAgICBtX3BlZXIgPSAwOworICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZERlc3Ryb3ksIHBlZXIucmVsZWFzZSgpKSk7CiAgICAgfQotICAgIG1f
d29ya2VyR2xvYmFsU2NvcGUgPSBudWxscHRyOworICAgIG1fd29ya2VyR2xvYmFsU2NvcGUgPSAw
OwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFk
U3VzcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCA1ZmJhMzY3MjIxYTQ5YTU0
ZTljYmEwMmM4ZDQ1MWU2MzUzNmIzNGYxLi45MGIwZWEwN2UzMWE4NWI1MGYzZjc1OTczZGU2NDFj
MjE0OWNjNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAt
MTc2LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZEJ1ZmZl
cmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CiAgICAgc3RhdGljIHZv
aWQgbWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgaW50IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRmFp
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgcmVhc29uKTsK
LSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGVlciopOworICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPFBlZXI+KTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkU3VzcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwogICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWRSZXN1bWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKaW5kZXggMDA0OTUz
ZWU5MGQ0YWMyOWRhYzBjNmMwMjJiYWNhNjFmYWExYTc2NS4uYzlkNGY2MTU0NzYzYmNlZGE4MDE4
MDE4N2E3MjJjZjMyY2UyYTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nh
bGxiYWNrRGF0YS5oCkBAIC03OSwxMiArNzksMjEgQEAgcHJpdmF0ZToKIAogY2xhc3MgRGVsZXRl
Q2FsbGJhY2tEYXRhVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
IHB1YmxpYzoKLSAgICBEZWxldGVDYWxsYmFja0RhdGFUYXNrKEpTQ2FsbGJhY2tEYXRhKiBkYXRh
KQotICAgICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soeyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KikgewotICAgICAgICAgICAgZGVsZXRlIGRhdGE7Ci0gICAgICAgIH0gfSkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxEZWxldGVDYWxsYmFja0RhdGFUYXNrPiBjcmVhdGUoSlNDYWxsYmFja0RhdGEq
IGRhdGEpCiAgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERlbGV0ZUNhbGxiYWNr
RGF0YVRhc2soZGF0YSkpOwogICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtX2RhdGE7Cisg
ICAgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorcHJpdmF0ZToKKworICAgIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2soSlNDYWxsYmFja0Rh
dGEqIGRhdGEpIDogbV9kYXRhKGRhdGEpIHt9CisKKyAgICBKU0NhbGxiYWNrRGF0YSogbV9kYXRh
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKaW5kZXggOTQ0YjIwMWRkZWY0
YTE1ZTMwZWNhMmQ1MzE5Yzg1ZTcyNGQ4MTIyYi4uOWNjYTg5YmViNDU5YTFiYjczYzA4NWI0ZTQ1
MGYxNGY3ZjgwNGUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCkBAIC04MCwxMiArODAsMTcgQEAgcHJpdmF0ZToKIH07
CiAKIEpTR2xvYmFsT2JqZWN0VGFzazo6SlNHbG9iYWxPYmplY3RUYXNrKEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8TWljcm90YXNrPiB0YXNrKQotICAgIDogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayhudWxscHRyKQorICAgIDogbV9jYWxsYmFjayhKU0ds
b2JhbE9iamVjdENhbGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB0YXNrKSkKIHsKLSAgICBS
ZWZQdHI8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0dsb2JhbE9iamVjdENh
bGxiYWNrOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB0YXNrKTsKLSAgICBtX3Rhc2sgPSBbPV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7Ci0gICAg
fTsKK30KKworSlNHbG9iYWxPYmplY3RUYXNrOjp+SlNHbG9iYWxPYmplY3RUYXNrKCkKK3sKK30K
Kwordm9pZCBKU0dsb2JhbE9iamVjdFRhc2s6OnBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKQoreworICAgIG1fY2FsbGJhY2stPmNhbGwoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3RUYXNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdFRhc2suaAppbmRleCA4N2JlMzJkNjAwNzNhNmU1MGZhZWNlYjQxZmRhOWRjYmMwODE1OTNh
Li4zY2I5M2YzMTEzZDNiNGY2YmIzMDYxYTVjNWQwYjE3NjBmZjMwM2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suaApAQCAtMzEs
OSArMzEsMjMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU0dsb2JhbE9iamVj
dFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitjbGFzcyBKU0ds
b2JhbE9iamVjdENhbGxiYWNrOworCitjbGFzcyBKU0dsb2JhbE9iamVjdFRhc2sgZmluYWwgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8SlNHbG9iYWxPYmplY3RUYXNrPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxKU0M6Ok1pY3JvdGFzaz4gdGFzaykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSlNHbG9iYWxPYmplY3RUYXNrKGdsb2JhbE9iamVj
dCwgdGFzaykpOworICAgIH0KKworICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0VGFzaygpOwor
Citwcml2YXRlOgogICAgIEpTR2xvYmFsT2JqZWN0VGFzayhKU0RPTUdsb2JhbE9iamVjdCosIFBh
c3NSZWZQdHI8SlNDOjpNaWNyb3Rhc2s+KTsKKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8SlNHbG9i
YWxPYmplY3RDYWxsYmFjaz4gbV9jYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmlu
ZGV4IGM2ZmViMWYyNjY1MzRlMTk3MjIxZDJlMzcwNWZhMGZiZDZhZGVkZTMuLjNhMDdiYmMyM2E3
ZThkZjliMWI1MDMzOTQyY2Y0NDRkNDhiMzk4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIGJvb2wgSlNE
T01XaW5kb3dCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBvYmplY3QpCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExv
b3AoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgUGFzc1JlZlB0cjxNaWNyb3Rhc2s+IHRh
c2spCiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgSlNET01XaW5kb3dCYXNlKj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKEpTR2xvYmFsT2JqZWN0VGFzaygoSlNET01X
aW5kb3dCYXNlKil0aGlzT2JqZWN0LCB0YXNrKSk7CisgICAgdGhpc09iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhKU0dsb2JhbE9iamVjdFRhc2s6OmNyZWF0ZSgoSlNE
T01XaW5kb3dCYXNlKil0aGlzT2JqZWN0LCB0YXNrKSk7CiB9CiAKIHZvaWQgSlNET01XaW5kb3dC
YXNlOjp3aWxsUmVtb3ZlRnJvbVdpbmRvd1NoZWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCA4OGMwNzE2
Mjc3NzE2MTA4OTU0MGI3MGE5MzA4ZWYxNDM4ODg1Y2QzLi5hNDkzY2IwYTI5OTIxMzVlMGM2M2Y0
ODI1ZjE4OTIxOWI1ZjA4N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgYm9v
bCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChj
b25zdCBKU0dsb2JhbE9iamVjdCoKIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVl
VGFza1RvRXZlbnRMb29wKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIFBhc3NSZWZQdHI8
TWljcm90YXNrPiB0YXNrKQogewogICAgIGNvbnN0IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UqPihv
YmplY3QpOwotICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRh
c2soSlNHbG9iYWxPYmplY3RUYXNrKChKU0RPTUdsb2JhbE9iamVjdCopdGhpc09iamVjdCwgdGFz
aykpOworICAgIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2so
SlNHbG9iYWxPYmplY3RUYXNrOjpjcmVhdGUoKEpTRE9NR2xvYmFsT2JqZWN0Kil0aGlzT2JqZWN0
LCB0YXNrKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiwgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1
YzVkNDRkYjZiMTI5NjllZDQ5ZTk3NTUyM2EwMDYwZmQ5ZThhNGU0Li5jMDcwYmJhMDE1NGMwODE3
Njg5NzFkMzBkZTg5NTEyOTgzZTdkOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzQzNSw3ICszNDM1LDcgQEAgc3Vi
IEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSlcbiIpOwogICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBkZWxldGUgbV9kYXRhO1xuIik7CiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgZWxzZVxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKERlbGV0ZUNhbGxiYWNrRGF0YVRhc2sobV9kYXRhKSk7
XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgY29udGV4dC0+cG9zdFRhc2so
RGVsZXRlQ2FsbGJhY2tEYXRhVGFzazo6Y3JlYXRlKG1fZGF0YSkpO1xuIik7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWZuZGVmIE5ERUJVR1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgbV9kYXRhID0gMDtcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaAppbmRleCBhZjAxZmM4Nzc0MWVkMjk5
YjhiOGU4NjhjYjhmNjI5N2FmNTFiNGNjLi42Y2M1Zjg0MjE1NmQyMGU4MDg2NWNhMzQ4NTYyOGQx
YTcyNTc3ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRUYXNr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC01NywxOSAr
NTcsMjUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkVGFza1RyYWl0
czxQYXNzT3duUHRyPFQ+PiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
TVAxPgotY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrMSB7CitjbGFzcyBDcm9zc1RocmVhZFRhc2sxIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgogICAgIHR5cGVk
ZWYgdm9pZCAoKk1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSk7CiAgICAgdHlw
ZWRlZiBDcm9zc1RocmVhZFRhc2sxPFAxLCBNUDE+IENyb3NzVGhyZWFkVGFzazsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMT46OlBhcmFtVHlwZSBQYXJhbTE7
CiAKKyAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2Qg
bWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSkpOworICAgIH0KKworcHJp
dmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2sxKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0
ZXIxKQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBtX3BhcmFtZXRlcjEo
cGFyYW1ldGVyMSkKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKICAgICAgICAgKCptX21ldGhv
ZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxKTsKICAgICB9CkBAIC04MCwxMyArODYsMTkgQEAgcHJp
dmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1l
IFAyLCB0eXBlbmFtZSBNUDI+Ci1jbGFzcyBDcm9zc1RocmVhZFRhc2syIHsKK2NsYXNzIENyb3Nz
VGhyZWFkVGFzazIgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
TVAxLCBNUDIpOwogICAgIHR5cGVkZWYgQ3Jvc3NUaHJlYWRUYXNrMjxQMSwgTVAxLCBQMiwgTVAy
PiBDcm9zc1RocmVhZFRhc2s7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tU
cmFpdHM8UDE+OjpQYXJhbVR5cGUgUGFyYW0xOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRUYXNrVHJhaXRzPFAyPjo6UGFyYW1UeXBlIFBhcmFtMjsKIAorICAgIHN0YXRpYyBQYXNz
T3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJh
bWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMikpOwor
ICAgIH0KKworcHJpdmF0ZToKICAgICBDcm9zc1RocmVhZFRhc2syKE1ldGhvZCBtZXRob2QsIFBh
cmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMikKICAgICAgICAgOiBtX21ldGhvZCht
ZXRob2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC05NCw3ICsxMDYs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAgICgqbV9tZXRo
b2QpKGNvbnRleHQsIG1fcGFyYW1ldGVyMSwgbV9wYXJhbWV0ZXIyKTsKICAgICB9CkBAIC0xMDYs
NyArMTE4LDcgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBN
UDM+Ci1jbGFzcyBDcm9zc1RocmVhZFRhc2szIHsKK2NsYXNzIENyb3NzVGhyZWFkVGFzazMgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMyk7
CiAgICAgdHlwZWRlZiBDcm9zc1RocmVhZFRhc2szPFAxLCBNUDEsIFAyLCBNUDIsIFAzLCBNUDM+
IENyb3NzVGhyZWFkVGFzazsKQEAgLTExNCw2ICsxMjYsMTIgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFAyPjo6UGFyYW1UeXBlIFBhcmFtMjsK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQMz46OlBhcmFtVHlw
ZSBQYXJhbTM7CiAKKyAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0
ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBh
cmFtMyBwYXJhbWV0ZXIzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9z
c1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzKSk7
CisgICAgfQorCitwcml2YXRlOgogICAgIENyb3NzVGhyZWFkVGFzazMoTWV0aG9kIG1ldGhvZCwg
UGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMykK
ICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJhbWV0ZXIxKHBhcmFt
ZXRlcjEpCkBAIC0xMjIsNyArMTQwLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgewogICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1l
dGVyMiwgbV9wYXJhbWV0ZXIzKTsKICAgICB9CkBAIC0xMzUsNyArMTUzLDcgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0
eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBl
bmFtZSBNUDQ+Ci1jbGFzcyBDcm9zc1RocmVhZFRhc2s0IHsKK2NsYXNzIENyb3NzVGhyZWFkVGFz
azQgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIs
IE1QMywgTVA0KTsKICAgICB0eXBlZGVmIENyb3NzVGhyZWFkVGFzazQ8UDEsIE1QMSwgUDIsIE1Q
MiwgUDMsIE1QMywgUDQsIE1QND4gQ3Jvc3NUaHJlYWRUYXNrOwpAQCAtMTQ0LDYgKzE2MiwxMiBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDM+
OjpQYXJhbVR5cGUgUGFyYW0zOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRUYXNr
VHJhaXRzPFA0Pjo6UGFyYW1UeXBlIFBhcmFtNDsKIAorICAgIHN0YXRpYyBQYXNzT3duUHRyPENy
b3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQ
YXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9k
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0KSk7CisgICAg
fQorCitwcml2YXRlOgogICAgIENyb3NzVGhyZWFkVGFzazQoTWV0aG9kIG1ldGhvZCwgUGFyYW0x
IHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00
IHBhcmFtZXRlcjQpCiAgICAgICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICAgICAsIG1fcGFy
YW1ldGVyMShwYXJhbWV0ZXIxKQpAQCAtMTUzLDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgIHsKICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0
ZXIxLCBtX3BhcmFtZXRlcjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0KTsKICAgICB9CkBA
IC0xNjcsNyArMTkxLDcgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0
eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBl
bmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFt
ZSBNUDU+Ci1jbGFzcyBDcm9zc1RocmVhZFRhc2s1IHsKK2NsYXNzIENyb3NzVGhyZWFkVGFzazUg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1Q
MywgTVA0LCBNUDUpOwogICAgIHR5cGVkZWYgQ3Jvc3NUaHJlYWRUYXNrNTxQMSwgTVAxLCBQMiwg
TVAyLCBQMywgTVAzLCBQNCwgTVA0LCBQNSwgTVA1PiBDcm9zc1RocmVhZFRhc2s7CkBAIC0xNzcs
NiArMjAxLDEyIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFz
a1RyYWl0czxQND46OlBhcmFtVHlwZSBQYXJhbTQ7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9z
c1RocmVhZFRhc2tUcmFpdHM8UDU+OjpQYXJhbVR5cGUgUGFyYW01OwogCisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBh
cmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBh
cmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBw
YXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1KSk7CisgICAgfQorCitwcml2YXRlOgog
ICAgIENyb3NzVGhyZWFkVGFzazUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBh
cmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBh
cmFtNSBwYXJhbWV0ZXI1KQogICAgICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAgICAgLCBt
X3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKQEAgLTE4Nyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICB7CiAgICAgICAgICgqbV9tZXRob2QpKGNvbnRleHQsIG1fcGFy
YW1ldGVyMSwgbV9wYXJhbWV0ZXIyLCBtX3BhcmFtZXRlcjMsIG1fcGFyYW1ldGVyNCwgbV9wYXJh
bWV0ZXI1KTsKICAgICB9CkBAIC0yMDIsNyArMjMyLDcgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIs
IHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5
cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+Ci1jbGFz
cyBDcm9zc1RocmVhZFRhc2s2IHsKK2NsYXNzIENyb3NzVGhyZWFkVGFzazYgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB2b2lkICgq
TWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUs
IE1QNik7CiAgICAgdHlwZWRlZiBDcm9zc1RocmVhZFRhc2s2PFAxLCBNUDEsIFAyLCBNUDIsIFAz
LCBNUDMsIFA0LCBNUDQsIFA1LCBNUDUsIFA2LCBNUDY+IENyb3NzVGhyZWFkVGFzazsKQEAgLTIx
Myw2ICsyNDMsMTIgQEAgcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRU
YXNrVHJhaXRzPFA1Pjo6UGFyYW1UeXBlIFBhcmFtNTsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENy
b3NzVGhyZWFkVGFza1RyYWl0czxQNj46OlBhcmFtVHlwZSBQYXJhbTY7CiAKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEg
cGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJhbTQg
cGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJh
bWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBw
YXJhbWV0ZXI2KSk7CisgICAgfQorCitwcml2YXRlOgogICAgIENyb3NzVGhyZWFkVGFzazYoTWV0
aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMg
cGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYg
cGFyYW1ldGVyNikKICAgICAgICAgOiBtX21ldGhvZChtZXRob2QpCiAgICAgICAgICwgbV9wYXJh
bWV0ZXIxKHBhcmFtZXRlcjEpCkBAIC0yMjQsNyArMjYwLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgewogICAgICAgICAoKm1fbWV0aG9kKShjb250ZXh0LCBtX3BhcmFtZXRl
cjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBtX3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVy
NSwgbV9wYXJhbWV0ZXI2KTsKICAgICB9CkBAIC0yNDAsNyArMjc2LDcgQEAgcHJpdmF0ZToKIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFt
ZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBN
UDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+Ci1jbGFzcyBDcm9zc1RocmVhZFRhc2s3IHsK
K2NsYXNzIENyb3NzVGhyZWFkVGFzazcgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB2b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KTsKICAgICB0eXBl
ZGVmIENyb3NzVGhyZWFkVGFzazc8UDEsIE1QMSwgUDIsIE1QMiwgUDMsIE1QMywgUDQsIE1QNCwg
UDUsIE1QNSwgUDYsIE1QNiwgUDcsIE1QNz4gQ3Jvc3NUaHJlYWRUYXNrOwpAQCAtMjUyLDYgKzI4
OCwxMiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFp
dHM8UDY+OjpQYXJhbVR5cGUgUGFyYW02OwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3Jvc3NUaHJl
YWRUYXNrVHJhaXRzPFA3Pjo6UGFyYW1UeXBlIFBhcmFtNzsKIAorICAgIHN0YXRpYyBQYXNzT3du
UHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0
ZXIxLCBQYXJhbTIgcGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0
ZXI0LCBQYXJhbTUgcGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0
ZXI3KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1RocmVhZFRhc2so
bWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBw
YXJhbWV0ZXI1LCBwYXJhbWV0ZXI2LCBwYXJhbWV0ZXI3KSk7CisgICAgfQorCitwcml2YXRlOgog
ICAgIENyb3NzVGhyZWFkVGFzazcoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBh
cmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBh
cmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNiwgUGFyYW03IHBhcmFtZXRlcjcpCiAg
ICAgICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICAgICAsIG1fcGFyYW1ldGVyMShwYXJhbWV0
ZXIxKQpAQCAtMjY0LDcgKzMwNiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAg
IHsKICAgICAgICAgKCptX21ldGhvZCkoY29udGV4dCwgbV9wYXJhbWV0ZXIxLCBtX3BhcmFtZXRl
cjIsIG1fcGFyYW1ldGVyMywgbV9wYXJhbWV0ZXI0LCBtX3BhcmFtZXRlcjUsIG1fcGFyYW1ldGVy
NiwgbV9wYXJhbWV0ZXI3KTsKICAgICB9CkBAIC0yODEsNyArMzIzLDcgQEAgcHJpdmF0ZToKIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFt
ZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBN
UDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDcsIHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBNUDg+
Ci1jbGFzcyBDcm9zc1RocmVhZFRhc2s4IHsKK2NsYXNzIENyb3NzVGhyZWFkVGFzazggOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB2
b2lkICgqTWV0aG9kKShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0
LCBNUDUsIE1QNiwgTVA3LCBNUDgpOwogICAgIHR5cGVkZWYgQ3Jvc3NUaHJlYWRUYXNrODxQMSwg
TVAxLCBQMiwgTVAyLCBQMywgTVAzLCBQNCwgTVA0LCBQNSwgTVA1LCBQNiwgTVA2LCBQNywgTVA3
LCBQOCwgTVA4PiBDcm9zc1RocmVhZFRhc2s7CkBAIC0yOTQsNiArMzM2LDEyIEBAIHB1YmxpYzoK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIENyb3NzVGhyZWFkVGFza1RyYWl0czxQNz46OlBhcmFtVHlw
ZSBQYXJhbTc7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDcm9zc1RocmVhZFRhc2tUcmFpdHM8UDg+
OjpQYXJhbVR5cGUgUGFyYW04OwogICAgIAorICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkVGFzaz4gY3JlYXRlKE1ldGhvZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxLCBQYXJhbTIg
cGFyYW1ldGVyMiwgUGFyYW0zIHBhcmFtZXRlcjMsIFBhcmFtNCBwYXJhbWV0ZXI0LCBQYXJhbTUg
cGFyYW1ldGVyNSwgUGFyYW02IHBhcmFtZXRlcjYsIFBhcmFtNyBwYXJhbWV0ZXI3LCBQYXJhbTgg
cGFyYW1ldGVyOCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJl
YWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1l
dGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1ldGVyNywgcGFyYW1ldGVyOCkpOwor
ICAgIH0KKyAgICAKK3ByaXZhdGU6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrOChNZXRob2QgbWV0aG9k
LCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIz
LCBQYXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2
LCBQYXJhbTcgcGFyYW1ldGVyNywgUGFyYW04IHBhcmFtZXRlcjgpCiAgICAgOiBtX21ldGhvZCht
ZXRob2QpCiAgICAgLCBtX3BhcmFtZXRlcjEocGFyYW1ldGVyMSkKQEAgLTMwNyw3ICszNTUsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkIHBlcmZvcm1UYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewogICAgICAgICAoKm1fbWV0
aG9kKShjb250ZXh0LCBtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzLCBt
X3BhcmFtZXRlcjQsIG1fcGFyYW1ldGVyNSwgbV9wYXJhbWV0ZXI2LCBtX3BhcmFtZXRlcjcsIG1f
cGFyYW1ldGVyOCk7CiAgICAgfQpAQCAtMzI1LDEzNCArMzczLDEwMiBAQCBwcml2YXRlOgogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KLVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgY3JlYXRlQ2FsbGJhY2tUYXNrKAorUGFzc093blB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEp
CiB7Ci0gICAgYXV0byB0YXNrUHRyID0gbmV3IENyb3NzVGhyZWFkVGFzazE8dHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDE+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRh
c2sxPHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxPjo6Y3JlYXRlKAog
ICAgICAgICBtZXRob2QsCiAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJh
bWV0ZXIxKSk7Ci0gICAgcmV0dXJuIFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRl
cjxkZWNsdHlwZSh0YXNrUHRyKT46OnR5cGU+IHRhc2sodGFza1B0cik7Ci0gICAgICAgIHRhc2st
PnBlcmZvcm1UYXNrKGNvbnRleHQpOwotICAgIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAx
LCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDI+Ci1TY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrIGNyZWF0ZUNhbGxiYWNrVGFzaygKK1Bhc3NPd25QdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRo
b2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiksCiAgICAgY29uc3QgUDEmIHBh
cmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyKQogewotICAgIGF1dG8gdGFza1B0ciA9IG5l
dyBDcm9zc1RocmVhZFRhc2syPHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwg
TVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMj4oCisgICAgcmV0
dXJuIENyb3NzVGhyZWFkVGFzazI8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBl
LCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyPjo6Y3JlYXRl
KAogICAgICAgICBtZXRob2QsCiAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShw
YXJhbWV0ZXIxKSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpKTsKLSAg
ICByZXR1cm4gWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPGRlY2x0eXBlKHRh
c2tQdHIpPjo6dHlwZT4gdGFzayh0YXNrUHRyKTsKLSAgICAgICAgdGFzay0+cGVyZm9ybVRhc2so
Y29udGV4dCk7Ci0gICAgfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMz4K
LVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgY3JlYXRlQ2FsbGJhY2tUYXNrKAorUGFzc093
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAg
ICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMp
LAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLCBjb25zdCBQMiYgcGFyYW1ldGVyMiwgY29uc3Qg
UDMmIHBhcmFtZXRlcjMpCiB7Ci0gICAgYXV0byB0YXNrUHRyID0gbmV3IENyb3NzVGhyZWFkVGFz
azM8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENy
b3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMz46OlR5cGUsIE1QMz4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzazM8dHlwZW5hbWUg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29w
aWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUs
IE1QMz46OmNyZWF0ZSgKICAgICAgICAgbWV0aG9kLAogICAgICAgICBDcm9zc1RocmVhZENvcGll
cjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJh
bWV0ZXIyKSwKICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMp
KTsKLSAgICByZXR1cm4gWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPGRlY2x0
eXBlKHRhc2tQdHIpPjo6dHlwZT4gdGFzayh0YXNrUHRyKTsKLSAgICAgICAgdGFzay0+cGVyZm9y
bVRhc2soY29udGV4dCk7Ci0gICAgfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVu
YW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1l
IE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgY3JlYXRlQ2FsbGJhY2tUYXNrKAorUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiBjcmVhdGVDYWxsYmFja1Rhc2soCiAgICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCksCiAgICAgY29uc3QgUDEmIHBh
cmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25zdCBQMyYgcGFyYW1ldGVyMywgY29u
c3QgUDQmIHBhcmFtZXRlcjQpCiB7Ci0gICAgYXV0byB0YXNrUHRyID0gbmV3IENyb3NzVGhyZWFk
VGFzazQ8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQMz46OlR5cGUsIE1QMywKLSAgICAgICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDQ+OjpUeXBlLCBNUDQ+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2s0PHR5cGVuYW1lIENy
b3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGll
cjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBN
UDMsCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0Pjo6
Y3JlYXRlKAogICAgICAgICAgICAgbWV0aG9kLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFy
YW1ldGVyMiksCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1l
dGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSk7Ci0gICAgcmV0
dXJuIFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxkZWNsdHlwZSh0YXNrUHRy
KT46OnR5cGU+IHRhc2sodGFza1B0cik7Ci0gICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKGNvbnRl
eHQpOwotICAgIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5
cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVu
YW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDU+Ci1TY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIGNyZWF0ZUNhbGxiYWNrVGFzaygKK1Bhc3NPd25QdHI8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQg
KCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1Q
NSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLCBjb25z
dCBQMyYgcGFyYW1ldGVyMywgY29uc3QgUDQmIHBhcmFtZXRlcjQsIGNvbnN0IFA1JiBwYXJhbWV0
ZXI1KQogewotICAgIGF1dG8gdGFza1B0ciA9IG5ldyBDcm9zc1RocmVhZFRhc2s1PHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9zc1RocmVhZENv
cGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+OjpUeXBl
LCBNUDMsCi0gICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0
LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNT4oCisgICAgcmV0dXJu
IENyb3NzVGhyZWFkVGFzazU8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+OjpUeXBlLCBN
UDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlwZSwgTVAyLCB0eXBlbmFtZSBD
cm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICAgICAgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDQ+OjpUeXBlLCBNUDQsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA1
Pjo6VHlwZSwgTVA1Pjo6Y3JlYXRlKAogICAgICAgICAgICAgbWV0aG9kLAogICAgICAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLCBDcm9zc1RocmVhZENvcGll
cjxQMj46OmNvcHkocGFyYW1ldGVyMiksCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQ
Mz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0
ZXI0KSwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1
KSk7Ci0gICAgcmV0dXJuIFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxkZWNs
dHlwZSh0YXNrUHRyKT46OnR5cGU+IHRhc2sodGFza1B0cik7Ci0gICAgICAgIHRhc2stPnBlcmZv
cm1UYXNrKGNvbnRleHQpOwotICAgIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFt
ZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBN
UDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+Ci1TY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrIGNyZWF0ZUNhbGxiYWNrVGFzaygKK1Bhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gY3JlYXRlQ2FsbGJhY2tUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0
ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2
JiBwYXJhbWV0ZXI2KQogewotICAgIGF1dG8gdGFza1B0ciA9IG5ldyBDcm9zc1RocmVhZFRhc2s2
PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFtZSBDcm9z
c1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDM+OjpUeXBlLCBNUDMsCi0gICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6
VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1QNSwgdHlw
ZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDY+KAorICAgIHJldHVybiBDcm9z
c1RocmVhZFRhc2s2PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0
eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NU
aHJlYWRDb3BpZXI8UDM+OjpUeXBlLCBNUDMsCisgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFk
Q29waWVyPFA0Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5
cGUsIE1QNSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDY+OjpjcmVh
dGUoCiAgICAgICAgICAgICBtZXRob2QsCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQ
MT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0
ZXIyKSwKICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIz
KSwgQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAogICAgICAgICAgICAg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZENvcGll
cjxQNj46OmNvcHkocGFyYW1ldGVyNikpOwotICAgIHJldHVybiBbPV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8ZGVjbHR5cGUodGFza1B0cik+Ojp0eXBlPiB0YXNrKHRhc2tQdHIp
OwotICAgICAgICB0YXNrLT5wZXJmb3JtVGFzayhjb250ZXh0KTsKLSAgICB9OwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAy
LCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0
eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBl
bmFtZSBQNywgdHlwZW5hbWUgTVA3PgotU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayBjcmVh
dGVDYWxsYmFja1Rhc2soCitQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IGNyZWF0ZUNhbGxiYWNrVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKICAgICBjb25zdCBQ
MSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIz
LCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBw
YXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNykKIHsKLSAgICBhdXRvIHRhc2tQdHIgPSBu
ZXcgQ3Jvc3NUaHJlYWRUYXNrNzx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5cGUs
IE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAorICAgIHJldHVybiBDcm9zc1RocmVh
ZFRhc2s3PHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAxPjo6VHlwZSwgTVAxLCB0eXBlbmFt
ZSBDcm9zc1RocmVhZENvcGllcjxQMj46OlR5cGUsIE1QMiwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDM+OjpUeXBlLCBNUDMsCiAgICAgICAgIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFA0Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQNT46OlR5cGUsIE1Q
NSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDYsCi0gICAgICAgIHR5
cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6VHlwZSwgTVA3PigKKyAgICAgICAgdHlwZW5h
bWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBlLCBNUDc+OjpjcmVhdGUoCiAgICAgICAgICAg
ICBtZXRob2QsCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1l
dGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKICAgICAgICAg
ICAgIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAogICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLCBDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkocGFy
YW1ldGVyNiksCiAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNz46OmNvcHkocGFyYW1l
dGVyNykpOwotICAgIHJldHVybiBbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8
ZGVjbHR5cGUodGFza1B0cik+Ojp0eXBlPiB0YXNrKHRhc2tQdHIpOwotICAgICAgICB0YXNrLT5w
ZXJmb3JtVGFzayhjb250ZXh0KTsKLSAgICB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwg
dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlw
ZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5h
bWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUg
TVA3LCB0eXBlbmFtZSBQOCwgdHlwZW5hbWUgTVA4PgotU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayBjcmVhdGVDYWxsYmFja1Rhc2soCi0gICAgdm9pZCAoKm1ldGhvZCkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwKLSAg
ICBjb25zdCBQMSYgcGFyYW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBw
YXJhbWV0ZXIzLCBjb25zdCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNv
bnN0IFA2JiBwYXJhbWV0ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNywgY29uc3QgUDgmIHBhcmFt
ZXRlcjgpCitQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZUNh
bGxiYWNrVGFzaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKCptZXRob2QpKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBN
UDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1QOCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQMSYgcGFy
YW1ldGVyMSwgY29uc3QgUDImIHBhcmFtZXRlcjIsIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLCBjb25z
dCBQNCYgcGFyYW1ldGVyNCwgY29uc3QgUDUmIHBhcmFtZXRlcjUsIGNvbnN0IFA2JiBwYXJhbWV0
ZXI2LCBjb25zdCBQNyYgcGFyYW1ldGVyNywgY29uc3QgUDgmIHBhcmFtZXRlcjgpCiB7Ci0gICAg
YXV0byB0YXNrUHRyID0gbmV3IENyb3NzVGhyZWFkVGFzazg8dHlwZW5hbWUgQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+OjpUeXBlLCBNUDEsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6VHlw
ZSwgTVAyLCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMz46OlR5cGUsIE1QMywKKyAgICBy
ZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrODx0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQMT46OlR5
cGUsIE1QMSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+OjpUeXBlLCBNUDIsIHR5cGVu
YW1lIENyb3NzVGhyZWFkQ29waWVyPFAzPjo6VHlwZSwgTVAzLAogICAgIHR5cGVuYW1lIENyb3Nz
VGhyZWFkQ29waWVyPFA0Pjo6VHlwZSwgTVA0LCB0eXBlbmFtZSBDcm9zc1RocmVhZENvcGllcjxQ
NT46OlR5cGUsIE1QNSwgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+OjpUeXBlLCBNUDYs
Ci0gICAgdHlwZW5hbWUgQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBlLCBNUDcsIHR5cGVuYW1l
IENyb3NzVGhyZWFkQ29waWVyPFA4Pjo6VHlwZSwgTVA4PigKLSAgICAgICAgbWV0aG9kLAotICAg
ICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFk
Q29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8
UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLCBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1l
dGVyNCksCi0gICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwg
Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYpLAotICAgICAgICBDcm9zc1Ro
cmVhZENvcGllcjxQNz46OmNvcHkocGFyYW1ldGVyNyksIENyb3NzVGhyZWFkQ29waWVyPFA4Pjo6
Y29weShwYXJhbWV0ZXI4KSk7Ci0gICAgcmV0dXJuIFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dHlwZW5hbWUgc3RkOjpyZW1v
dmVfcG9pbnRlcjxkZWNsdHlwZSh0YXNrUHRyKT46OnR5cGU+IHRhc2sodGFza1B0cik7Ci0gICAg
ICAgIHRhc2stPnBlcmZvcm1UYXNrKGNvbnRleHQpOwotICAgIH07CisgICAgdHlwZW5hbWUgQ3Jv
c3NUaHJlYWRDb3BpZXI8UDc+OjpUeXBlLCBNUDcsIHR5cGVuYW1lIENyb3NzVGhyZWFkQ29waWVy
PFA4Pjo6VHlwZSwgTVA4Pjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQMT46OmNv
cHkocGFyYW1ldGVyMSksIENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
cm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksIENyb3NzVGhyZWFkQ29waWVy
PFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1l
dGVyNSksIENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcm9zc1RocmVh
ZENvcGllcjxQNz46OmNvcHkocGFyYW1ldGVyNyksIENyb3NzVGhyZWFkQ29waWVyPFA4Pjo6Y29w
eShwYXJhbWV0ZXI4KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDE1MjBlYjMwOTBhMGE2MzliNzM0MzlmM2JjNTBhMGJlMGZlM2Y1MzQu
LmQ4OTZkNjFhMDVjY2ZjNzE2Y2U2M2QzYTIyZmRkOTAzZjY0NmNjMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNDg3Niw3ICs0ODc2LDcgQEAgdm9pZCBEb2N1bWVudDo6cGFyc2VETlNQ
cmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJiBkbnNQcmVmZXRjaENvbnRyb2wpCiB2
b2lkIERvY3VtZW50OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAg
ICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVzc2FnZS5p
c29sYXRlZENvcHkoKSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6
OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ4ODcsNyArNDg4Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0CiB2b2lkIERv
Y3VtZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVu
c2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJl
YWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBs
ZXZlbCwgbWVzc2FnZSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2s6
OmNyZWF0ZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ5MDAsMzIgKzQ5MDAsNTEgQEAgU2VjdXJpdHlPcmlnaW4qIERvY3VtZW50Ojp0b3BP
cmlnaW4oKSBjb25zdAogICAgIHJldHVybiB0b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnBvc3RUYXNrKFRhc2sgdGFzaykKK3N0cnVjdCBQZXJmb3Jt
VGFza0NvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlcmZvcm1UYXNrQ29udGV4
dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFBlcmZvcm1UYXNrQ29u
dGV4dChXZWFrUHRyPERvY3VtZW50PiBkb2N1bWVudCwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPiB0YXNrKQorICAgICAgICA6IGRvY3VtZW50UmVmZXJlbmNlKGRvY3Vt
ZW50KQorICAgICAgICAsIHRhc2sodGFzaykKKyAgICB7CisgICAgfQorCisgICAgV2Vha1B0cjxE
b2N1bWVudD4gZG9jdW1lbnRSZWZlcmVuY2U7CisgICAgT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+IHRhc2s7Cit9OworCit2b2lkIERvY3VtZW50OjpkaWRSZWNlaXZlVGFzayh2
b2lkKiB1bnR5cGVkQ29udGV4dCkKIHsKLSAgICBUYXNrKiB0YXNrUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUYXNrPihzdGQ6Om1vdmUodGFzaykpLnJlbGVhc2UoKTsKLSAgICBXZWFrUHRyPERvY3Vt
ZW50PiBkb2N1bWVudFJlZmVyZW5jZShtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKSk7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoWz1dIHsK
LSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFRhc2s+IHRhc2sodGFza1B0cik7CisgICAgT3duUHRyPFBlcmZvcm1UYXNrQ29udGV4dD4gY29u
dGV4dCA9IGFkb3B0UHRyKHN0YXRpY19jYXN0PFBlcmZvcm1UYXNrQ29udGV4dCo+KHVudHlwZWRD
b250ZXh0KSk7CisgICAgQVNTRVJUKGNvbnRleHQpOwogCi0gICAgICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpOwotICAgICAgICBpZiAoIWRvY3VtZW50KQot
ICAgICAgICAgICAgcmV0dXJuOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHQtPmRv
Y3VtZW50UmVmZXJlbmNlLmdldCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKLSAgICAgICAgaWYg
KChwYWdlICYmIHBhZ2UtPmRlZmVyc0xvYWRpbmcoKSkgfHwgIWRvY3VtZW50LT5tX3BlbmRpbmdU
YXNrcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuYXBw
ZW5kKHN0ZDo6bW92ZSgqdGFzay5yZWxlYXNlKCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgdGFzay0+cGVyZm9ybVRhc2soZG9jdW1lbnQpOwotICAgIH0pOworICAgIFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudC0+cGFnZSgpOworICAgIGlmICgocGFnZSAmJiBwYWdlLT5kZWZlcnNMb2FkaW5n
KCkpIHx8ICFkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGRv
Y3VtZW50LT5tX3BlbmRpbmdUYXNrcy5hcHBlbmQoY29udGV4dC0+dGFzay5yZWxlYXNlKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udGV4dC0+dGFzay0+cGVyZm9ybVRhc2so
ZG9jdW1lbnQpOworfQorCit2b2lkIERvY3VtZW50Ojpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+
IHRhc2spCit7CisgICAgY2FsbE9uTWFpblRocmVhZChkaWRSZWNlaXZlVGFzaywgbmV3IFBlcmZv
cm1UYXNrQ29udGV4dChtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKSwgdGFzaykpOwogfQog
CiB2b2lkIERvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiYp
CiB7Ci0gICAgVmVjdG9yPFRhc2s+IHBlbmRpbmdUYXNrcyA9IHN0ZDo6bW92ZShtX3BlbmRpbmdU
YXNrcyk7Ci0gICAgZm9yIChhdXRvJiB0YXNrIDogcGVuZGluZ1Rhc2tzKQotICAgICAgICB0YXNr
LnBlcmZvcm1UYXNrKHRoaXMpOworICAgIHdoaWxlICghbV9wZW5kaW5nVGFza3MuaXNFbXB0eSgp
KSB7CisgICAgICAgIE93blB0cjxUYXNrPiB0YXNrID0gbV9wZW5kaW5nVGFza3NbMF0ucmVsZWFz
ZSgpOworICAgICAgICBtX3BlbmRpbmdUYXNrcy5yZW1vdmUoMCk7CisgICAgICAgIHRhc2stPnBl
cmZvcm1UYXNrKHRoaXMpOworICAgIH0KIH0KIAogdm9pZCBEb2N1bWVudDo6c3VzcGVuZFNjaGVk
dWxlZFRhc2tzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDY1NWVkZmM4YTkyM2E0ODkzMWJkZmUzZGVlNjgyZWI0Y2Jk
MTdmMDQuLjIyZjAzNWI1MDNjYjA1ODk1YTg4OTgyZTU1YTFhNTk2ZTUwZjZlNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RO
U1ByZWZldGNoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNETlNQcmVmZXRjaEVuYWJsZWQ7
IH0KICAgICB2b2lkIHBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFRhc2spIG92ZXJyaWRlOyAvLyBFeGVjdXRl
cyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgorICAgIHZpcnR1
YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KSBvdmVycmlkZTsgLy8gRXhlY3V0ZXMg
dGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgIHZvaWQg
c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQg
cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CkBAIC0xMzM2LDYg
KzEzMzYsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwZW5kaW5nVGFza3NUaW1lckZpcmVkKFRp
bWVyPERvY3VtZW50PiYpOwogCisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRhc2sodm9pZCop
OworICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogICAgIHZvaWQg
ZGlzcGxheUJ1ZmZlck1vZGlmaWVkQnlFbmNvZGluZ0ludGVybmFsKENoYXJhY3RlclR5cGUqLCB1
bnNpZ25lZCkgY29uc3Q7CiAKQEAgLTE2NDEsNyArMTY0Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIFRpbWVyPERvY3VtZW50PiBtX3BlbmRpbmdUYXNrc1RpbWVyOwotICAgIFZlY3RvcjxU
YXNrPiBtX3BlbmRpbmdUYXNrczsKKyAgICBWZWN0b3I8T3duUHRyPFRhc2s+PiBtX3BlbmRpbmdU
YXNrczsKIAogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGNhODY5MDEx
NzFhNWNmODdlNmExMDk2OWY2YmJmNGU4NDVlOGIwYTMuLmZjNTBjNjQ3NDExOTM4YTI0NDU4ZDhj
NjRkZjUyOTQ4NDk5ZTVkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKQEAgLTU1LDYgKzU1LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUHJvY2Vzc01lc3NhZ2VzU29vblRh
c2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8UHJvY2Vzc01lc3NhZ2VzU29vblRhc2s+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmRpc3BhdGNo
TWVzc2FnZVBvcnRFdmVudHMoKTsKKyAgICB9Cit9OworCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpQZW5kaW5nRXhjZXB0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5k
aW5nRXhjZXB0aW9uKTsKIHB1YmxpYzoKQEAgLTczLDYgKzg2LDExIEBAIHB1YmxpYzoKICAgICBS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBtX2NhbGxTdGFjazsKIH07CiAKK3ZvaWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6QWRkQ29uc29sZU1lc3NhZ2VUYXNrOjpwZXJmb3JtVGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKG1fc291cmNlLCBtX2xldmVsLCBtX21lc3NhZ2UpOworfQorCiBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICA6IG1fY2lyY3VsYXJTZXF1ZW50
aWFsSUQoMCkKICAgICAsIG1faW5EaXNwYXRjaEVycm9yRXZlbnQoZmFsc2UpCkBAIC0xMzIsOSAr
MTUwLDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnByb2Nlc3NNZXNzYWdlUG9ydE1lc3Nh
Z2VzU29vbigpCiB7Ci0gICAgcG9zdFRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpIHsKLSAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hNZXNzYWdlUG9ydEV2ZW50cygpOwot
ICAgIH0pOworICAgIHBvc3RUYXNrKFByb2Nlc3NNZXNzYWdlc1Nvb25UYXNrOjpjcmVhdGUoKSk7
CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlUG9ydEV2
ZW50cygpCkBAIC00NDQsNiArNDYwLDEwIEBAIGRvdWJsZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp0aW1lckFsaWdubWVudEludGVydmFsKCkgY29uc3QKICAgICByZXR1cm4gU2V0dGluZ3M6OmRl
ZmF1bHRET01UaW1lckFsaWdubWVudEludGVydmFsKCk7CiB9CiAKK1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s6On5UYXNrKCkKK3sKK30KKwogSlNDOjpWTSYgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6dm0oKQogewogICAgICBpZiAoaXNEb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggNzEyNGZmZTlhNmQ2NDAyODg4YzY5MjJk
ZTcyYjAzNzA4MmIzMjQxZi4uMjhmOGRiYmRjZDFkYWE4NGYwYjk0Mjg4MTM4YjZhODAzNDVjNWJh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0x
MTUsMzUgKzExNSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIGNsYXNzIFRhc2sgeworICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShUYXNrKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgotICAgICAgICBlbnVtIENsZWFudXBUYXNrVGFnIHsgQ2xlYW51cFRhc2sgfTsK
LQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29u
dmVydGlibGU8VCwgc3RkOjpmdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik+
Pjo6dmFsdWU+Ojp0eXBlPgotICAgICAgICBUYXNrKFQgdGFzaykKLSAgICAgICAgICAgIDogbV90
YXNrKHN0ZDo6bW92ZSh0YXNrKSkKLSAgICAgICAgICAgICwgbV9pc0NsZWFudXBUYXNrKGZhbHNl
KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8VCwg
c3RkOjpmdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik+Pjo6dmFsdWU+Ojp0
eXBlPgotICAgICAgICBUYXNrKENsZWFudXBUYXNrVGFnLCBUIHRhc2spCi0gICAgICAgICAgICA6
IG1fdGFzayhzdGQ6Om1vdmUodGFzaykpCi0gICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayh0
cnVlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBUYXNrKFRhc2smJikgPSBkZWZh
dWx0OwotCi0gICAgICAgIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkgeyBtX3Rhc2soY29udGV4dCk7IH0KLSAgICAgICAgYm9vbCBpc0NsZWFudXBUYXNr
KCkgY29uc3QgeyByZXR1cm4gbV9pc0NsZWFudXBUYXNrOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopPiBtX3Rh
c2s7Ci0gICAgICAgIGJvb2wgbV9pc0NsZWFudXBUYXNrOworICAgICAgICBUYXNrKCkgeyB9Cisg
ICAgICAgIHZpcnR1YWwgflRhc2soKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CisgICAgICAgIC8vIENlcnRhaW4gdGFza3Mg
Z2V0IG1hcmtlZCBzcGVjaWFsbHkgc28gdGhhdCB0aGV5IGFyZW4ndCBkaXNjYXJkZWQsIGFuZCBh
cmUgZXhlY3V0ZWQsIHdoZW4gdGhlIGNvbnRleHQgaXMgc2h1dHRpbmcgZG93biBpdHMgbWVzc2Fn
ZSBxdWV1ZS4KKyAgICAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soVGFzaykg
PSAwOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91
c2x5LgorICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KSA9IDA7IC8v
IEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAK
ICAgICAvLyBHZXRzIHRoZSBuZXh0IGlkIGluIGEgY2lyY3VsYXIgc2VxdWVuY2UgZnJvbSAxIHRv
IDJeMzEtMS4KICAgICBpbnQgY2lyY3VsYXJTZXF1ZW50aWFsSUQoKTsKQEAgLTE3NSwxMiArMTU3
LDIxIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRh
c2sgOiBwdWJsaWMgVGFzayB7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0
cjxBZGRDb25zb2xlTWVzc2FnZVRhc2s+IGNyZWF0ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwg
bGV2ZWwsIG1lc3NhZ2UpKTsKKyAgICAgICAgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOworICAgIHByaXZhdGU6CiAg
ICAgICAgIEFkZENvbnNvbGVNZXNzYWdlVGFzayhNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi0gICAgICAgICAgICA6IFRhc2so
Wz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7Ci0gICAg
ICAgICAgICB9KQorICAgICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCisgICAgICAgICAgICAs
IG1fbGV2ZWwobGV2ZWwpCisgICAgICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlLmlzb2xhdGVk
Q29weSgpKQogICAgICAgICB7CiAgICAgICAgIH0KKyAgICAgICAgTWVzc2FnZVNvdXJjZSBtX3Nv
dXJjZTsKKyAgICAgICAgTWVzc2FnZUxldmVsIG1fbGV2ZWw7CisgICAgICAgIFN0cmluZyBtX21l
c3NhZ2U7CiAgICAgfTsKIAogICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lv
biByZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3Ry
aW5nQ2FsbGJhY2suY3BwCmluZGV4IGRhNmI5NmVhOWU0NmFmNjRkNGM5YTJhODdiOTUwYTE1ZWIz
NDEyMjUuLmI1NDEwNWZlYTRmMWYzZGMwYmI5ZjZjZjc1Yjc5NTQ4YTdiNjJiMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApAQCAtMzYsMTIgKzM2LDM2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgRGlzcGF0Y2hDYWxsYmFja1Rh
c2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8RGlzcGF0Y2hDYWxsYmFja1Rhc2s+IGNyZWF0ZShQYXNzUmVmUHRy
PFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBkYXRhKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEaXNwYXRjaENhbGxiYWNrVGFzayhjYWxsYmFjaywg
ZGF0YSkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2stPmhhbmRs
ZUV2ZW50KG1fZGF0YSk7CisgICAgfQorCitwcml2YXRlOgorICAgIERpc3BhdGNoQ2FsbGJhY2tU
YXNrKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGRh
dGEpCisgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX2RhdGEoZGF0
YSkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBtX2NhbGxiYWNr
OworICAgIGNvbnN0IFN0cmluZyBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCiB2b2lk
IFN0cmluZ0NhbGxiYWNrOjpzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKLSAgICBSZWZQdHI8U3RyaW5nQ2FsbGJh
Y2s+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBjb250ZXh0LT5wb3N0VGFzayhbPV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKSB7Ci0gICAgICAgIHRoaXMtPmhhbmRsZUV2ZW50KGRhdGEpOwotICAg
IH0pOworICAgIGNvbnRleHQtPnBvc3RUYXNrKERpc3BhdGNoQ2FsbGJhY2tUYXNrOjpjcmVhdGUo
dGhpcywgZGF0YSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
CmluZGV4IDU0Yzg1NGJjYzZiNDI3OWQ3YTRhYWVjNThlOTAyMTNlMTg5ODNlOTcuLjMwMGFhNjNk
OGY0Mjk5M2ZlMDk3OGExZDdmNmRkYzcwNDEzYWViZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0x
MTAwLDYgKzExMDAsNDEgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVh
Y2hlZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNrKCkKICAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxl
dGUgaXRzZWxmIG9uY2UgaXQgZmlyZXMuCiB9CiAKK2NsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFz
ayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRy
PERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2
ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxsQ2FjaGVMaXN0ZW5lclRhc2sobG9hZGVyLCBldmVu
dElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIAorICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnRMb2Fk
ZXItPmZyYW1lKCk7CisgICAgICAgIGlmICghZnJhbWUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgICAgIEFTU0VSVChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBt
X2RvY3VtZW50TG9hZGVyLmdldCgpKTsKKworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5hcHBs
aWNhdGlvbkNhY2hlSG9zdCgpLT5ub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKG1fZXZlbnRJRCwg
bV9wcm9ncmVzc1RvdGFsLCBtX3Byb2dyZXNzRG9uZSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IENhbGxDYWNoZUxpc3RlbmVyVGFzayhQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIs
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFs
LCBpbnQgcHJvZ3Jlc3NEb25lKQorICAgICAgICA6IG1fZG9jdW1lbnRMb2FkZXIobG9hZGVyKQor
ICAgICAgICAsIG1fZXZlbnRJRChldmVudElEKQorICAgICAgICAsIG1fcHJvZ3Jlc3NUb3RhbChw
cm9ncmVzc1RvdGFsKQorICAgICAgICAsIG1fcHJvZ3Jlc3NEb25lKHByb2dyZXNzRG9uZSkKKyAg
ICB7CisgICAgfQorCisgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBtX2RvY3VtZW50TG9hZGVy
OworICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIG1fZXZlbnRJRDsKKyAgICBpbnQg
bV9wcm9ncmVzc1RvdGFsOworICAgIGludCBtX3Byb2dyZXNzRG9uZTsKK307CisKIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lLCBj
b25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNldCkKIHsKICAgICBIYXNoU2V0
PERvY3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9yIGxvYWRlclNldEVuZCA9IGxvYWRlclNl
dC5lbmQoKTsKQEAgLTExMTUsMTcgKzExNTAsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudAog
ICAgIAogICAgIEFTU0VSVChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBsb2Fk
ZXIpOwogCi0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXJQcm90ZWN0b3IobG9hZGVy
KTsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC0+aXNEb2N1bWVudCgpKTsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gbG9hZGVyUHJvdGVjdG9y
LT5mcmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIEFTU0VSVChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBsb2FkZXJQ
cm90ZWN0b3IpOwotCi0gICAgICAgIGxvYWRlclByb3RlY3Rvci0+YXBwbGljYXRpb25DYWNoZUhv
c3QoKS0+bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShldmVudElELCBwcm9ncmVzc1RvdGFsLCBw
cm9ncmVzc0RvbmUpOwotICAgIH0pOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wb3N0VGFzayhD
YWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2ZW50SUQsIHByb2dyZXNzVG90
YWwsIHByb2dyZXNzRG9uZSkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2V0
VXBkYXRlU3RhdHVzKFVwZGF0ZVN0YXR1cyBzdGF0dXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCmluZGV4IGNi
MThkMjVkN2Q2OGZlODIyZGJjZThhMzk4NGNmNDlhMTNiZjQ0MjQuLmM1OWQ1NjM1MzNlYTBjNjVi
NDczNGI0YjQ0MjI0NTVjZTdhYTYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC04MCw4ICs4MCw4
IEBAIHB1YmxpYzoKICAgICBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsVG9NYXRjaCkgY29uc3Q7
CiAKICAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1Rv
TG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2spOwotICAgIHZpcnR1YWwgYm9vbCBw
b3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2ssIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVy
KFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOworICAgIHZpcnR1YWwg
Ym9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV29ya2Vy
UmVwb3J0aW5nUHJveHkKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIGJv
b2wgU2hhcmVkV29ya2VyUHJveHk6Om1hdGNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvCiAgICAgcmV0dXJuIG5hbWUgPT0gbV9uYW1lOwogfQogCi12
b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgdGFzaykKK3ZvaWQgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrVG9Mb2Fk
ZXIoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewogICAg
IE11dGV4TG9ja2VyIGxvY2sobV93b3JrZXJEb2N1bWVudHNMb2NrKTsKIApAQCAtMTUzLDE1ICsx
NTMsMTUgQEAgdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2spCiAgICAgLy8gSnVzdCBwaWNrIGFuIGFyYml0cmFy
eSBhY3RpdmUgZG9jdW1lbnQgZnJvbSB0aGUgSGFzaFNldCBhbmQgcGFzcyBsb2FkIHJlcXVlc3Rz
IHRvIGl0LgogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRlYWwgd2l0aCB0aGUgY2FzZSB3
aGVyZSB0aGUgdXNlciBjbG9zZXMgdGhlIGRvY3VtZW50IG1pZC1sb2FkLCB2aWEgYSBzaGFkb3cg
ZG9jdW1lbnQgb3Igc29tZSBvdGhlciBzb2x1dGlvbj8KICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSAqKG1fd29ya2VyRG9jdW1lbnRzLmJlZ2luKCkpOwotICAgIGRvY3VtZW50LT5wb3N0VGFzayhz
dGQ6Om1vdmUodGFzaykpOworICAgIGRvY3VtZW50LT5wb3N0VGFzayh0YXNrKTsKIH0KIAotYm9v
bCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK2Jv
b2wgU2hhcmVkV29ya2VyUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
UGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiB7CiAgICAgaWYgKGlzQ2xvc2luZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsKLSAgICBtX3RocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShzdGQ6Om1vdmUodGFzayksIG1vZGUpOworICAgIG1fdGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2tGb3JNb2RlKHRhc2ssIG1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0y
NTQsMTkgKzI1NCwzMCBAQCB2b2lkIFNoYXJlZFdvcmtlclByb3h5OjpjbG9zZSgpCiAKIGNsYXNz
IFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewogcHVibGljOgotICAgIFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKE1lc3NhZ2VQb3J0
Q2hhbm5lbCogY2hhbm5lbCkKLSAgICAgICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
KFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewotICAgICAgICAgICAgUmVm
UHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZSgqY29udGV4dCk7Ci0g
ICAgICAgICAgICBwb3J0LT5lbnRhbmdsZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFu
bmVsPihjaGFubmVsKSk7Ci0gICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgV29ya2Vy
R2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29wZShjb250
ZXh0KTsKLSAgICAgICAgICAgIC8vIFNpbmNlIGNsb3NlKCkgc3RvcHMgdGhlIHRocmVhZCBldmVu
dCBsb29wLCB0aGlzIHNob3VsZCBub3QgZXZlciBnZXQgY2FsbGVkIHdoaWxlIGNsb3NpbmcuCi0g
ICAgICAgICAgICBBU1NFUlQoIXdvcmtlckdsb2JhbFNjb3BlLT5pc0Nsb3NpbmcoKSk7Ci0gICAg
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih3b3JrZXJHbG9iYWxTY29w
ZS0+aXNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgIHdvcmtlckdsb2Jh
bFNjb3BlLT5kaXNwYXRjaEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7Ci0gICAgICAg
IH0pCisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s+IGNyZWF0
ZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQogICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayhzdGQ6Om1v
dmUoY2hhbm5lbCkpKTsKICAgICB9CisKK3ByaXZhdGU6CisgICAgU2hhcmVkV29ya2VyQ29ubmVj
dFRhc2soc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKKyAgICAg
ICAgOiBtX2NoYW5uZWwoc3RkOjptb3ZlKGNoYW5uZWwpKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29u
dGV4dCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQ
b3J0OjpjcmVhdGUoKnNjcmlwdENvbnRleHQpOworICAgICAgICBwb3J0LT5lbnRhbmdsZShzdGQ6
Om1vdmUobV9jaGFubmVsKSk7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKHNjcmlwdENvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgIFdvcmtl
ckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoc2Ny
aXB0Q29udGV4dCk7CisgICAgICAgIC8vIFNpbmNlIGNsb3NlKCkgc3RvcHMgdGhlIHRocmVhZCBl
dmVudCBsb29wLCB0aGlzIHNob3VsZCBub3QgZXZlciBnZXQgY2FsbGVkIHdoaWxlIGNsb3Npbmcu
CisgICAgICAgIEFTU0VSVCghd29ya2VyR2xvYmFsU2NvcGUtPmlzQ2xvc2luZygpKTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04od29ya2VyR2xvYmFsU2NvcGUtPmlz
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5k
aXNwYXRjaEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CisgICAgfQorCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9jaGFubmVsOwogfTsKIAogLy8gTG9h
ZHMgdGhlIHNjcmlwdCBvbiBiZWhhbGYgb2YgYSB3b3JrZXIuCkBAIC0zNTYsOCArMzY3LDcgQEAg
dm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6d29ya2VyU2NyaXB0TG9hZGVkKFNo
YXJlZFdvcmtlclByb3h5JiBwcm94eSwKICAgICAgICAgcHJveHkuc2V0VGhyZWFkKHRocmVhZCk7
CiAgICAgICAgIHRocmVhZC0+c3RhcnQoKTsKICAgICB9Ci0KLSAgICBwcm94eS50aHJlYWQoKS0+
cnVuTG9vcCgpLnBvc3RUYXNrKFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKHBvcnQucmVsZWFzZSgp
KSk7CisgICAgcHJveHkudGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTaGFyZWRXb3JrZXJD
b25uZWN0VGFzazo6Y3JlYXRlKHN0ZDo6bW92ZShwb3J0KSkpOwogfQogCiBib29sIERlZmF1bHRT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3JrZXJzKERvY3VtZW50KiBkb2N1bWVu
dCkKQEAgLTQwNSw3ICs0MTUsNyBAQCB2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
Ojpjb25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcgogICAgIH0KICAg
ICAvLyBJZiBwcm94eSBpcyBhbHJlYWR5IHJ1bm5pbmcsIGp1c3QgY29ubmVjdCB0byBpdCAtIG90
aGVyd2lzZSwga2ljayBvZmYgYSBsb2FkZXIgdG8gbG9hZCB0aGUgc2NyaXB0LgogICAgIGlmIChw
cm94eS0+dGhyZWFkKCkpCi0gICAgICAgIHByb3h5LT50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RU
YXNrKFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKHBvcnQucmVsZWFzZSgpKSk7CisgICAgICAgIHBy
b3h5LT50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFNoYXJlZFdvcmtlckNvbm5lY3RUYXNr
OjpjcmVhdGUoc3RkOjptb3ZlKHBvcnQpKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIFJlZlB0cjxT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBTaGFyZWRXb3Jr
ZXJTY3JpcHRMb2FkZXIod29ya2VyLCBzdGQ6Om1vdmUocG9ydCksIHByb3h5LnJlbGVhc2UoKSkp
OwogICAgICAgICBsb2FkZXItPmxvYWQodXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuY3BwCmluZGV4IDQ2YTBlMzBmMGU4MmRjYzQ2NmViNDJkOGM4NTIzZjdk
N2M4NDU4ZDMuLjc0NTQ5OGM4MWI0NGZiYTcyNzA5MmFhMzg1NzcxMTMyMjQzMWM0YWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtNDYsMjggKzQ2
LDMwIEBAIFdvcmtlckV2ZW50UXVldWU6On5Xb3JrZXJFdmVudFF1ZXVlKCkKICAgICBjbG9zZSgp
OwogfQogCi1jbGFzcyBXb3JrZXJFdmVudFF1ZXVlOjpFdmVudERpc3BhdGNoZXIKLXsKK2NsYXNz
IFdvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2sgZmluYWwgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgRXZlbnREaXNwYXRjaGVy
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBXb3JrZXJFdmVudFF1ZXVlJiBldmVudFF1ZXVlKQot
ICAgICAgICA6IG1fZXZlbnQoZXZlbnQpCi0gICAgICAgICwgbV9ldmVudFF1ZXVlKGV2ZW50UXVl
dWUpCi0gICAgICAgICwgbV9pc0NhbmNlbGxlZChmYWxzZSkKKyAgICBzdGF0aWMgUGFzc093blB0
cjxFdmVudERpc3BhdGNoZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFdv
cmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUpCiAgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEV2ZW50RGlzcGF0Y2hlclRhc2soZXZlbnQsIGV2ZW50UXVldWUpKTsKICAgICB9CiAK
LSAgICB+RXZlbnREaXNwYXRjaGVyKCkKKyAgICB2aXJ0dWFsIH5FdmVudERpc3BhdGNoZXJUYXNr
KCkKICAgICB7CiAgICAgICAgIGlmIChtX2V2ZW50KQotICAgICAgICAgICAgbV9ldmVudFF1ZXVl
Lm1fZXZlbnREaXNwYXRjaGVyTWFwLnJlbW92ZShtX2V2ZW50LmdldCgpKTsKKyAgICAgICAgICAg
IG1fZXZlbnRRdWV1ZS5tX2V2ZW50VGFza01hcC5yZW1vdmUobV9ldmVudC5nZXQoKSk7CiAgICAg
fQogCi0gICAgdm9pZCBkaXNwYXRjaCgpCisgICAgdm9pZCBkaXNwYXRjaEV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKyAgICB7CisgICAgICAg
IGV2ZW50LT50YXJnZXQoKS0+ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9pc0NhbmNlbGxlZCkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgbV9ldmVudFF1ZXVlLm1fZXZlbnREaXNwYXRjaGVyTWFwLnJlbW92ZSht
X2V2ZW50LmdldCgpKTsKLSAgICAgICAgbV9ldmVudC0+dGFyZ2V0KCktPmRpc3BhdGNoRXZlbnQo
bV9ldmVudCk7CisgICAgICAgIG1fZXZlbnRRdWV1ZS5tX2V2ZW50VGFza01hcC5yZW1vdmUobV9l
dmVudC5nZXQoKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoY29udGV4dCwgbV9ldmVudCk7CiAg
ICAgICAgIG1fZXZlbnQuY2xlYXIoKTsKICAgICB9CiAKQEAgLTc4LDI5ICs4MCwzMiBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgorICAgIEV2ZW50RGlzcGF0Y2hlclRhc2soUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUpCisgICAgICAgIDog
bV9ldmVudChldmVudCkKKyAgICAgICAgLCBtX2V2ZW50UXVldWUoZXZlbnRRdWV1ZSkKKyAgICAg
ICAgLCBtX2lzQ2FuY2VsbGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKICAgICBSZWZQdHI8RXZl
bnQ+IG1fZXZlbnQ7CiAgICAgV29ya2VyRXZlbnRRdWV1ZSYgbV9ldmVudFF1ZXVlOwogICAgIGJv
b2wgbV9pc0NhbmNlbGxlZDsKIH07CiAKLWJvb2wgV29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjplbnF1
ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiB7CiAgICAgaWYgKG1faXNDbG9z
ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEV2ZW50RGlzcGF0Y2hlciogZXZlbnRE
aXNwYXRjaGVyUHRyID0gbmV3IEV2ZW50RGlzcGF0Y2hlcihldmVudC5nZXQoKSwgKnRoaXMpOwot
ICAgIG1fZXZlbnREaXNwYXRjaGVyTWFwLmFkZChldmVudCwgZXZlbnREaXNwYXRjaGVyUHRyKTsK
LSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnREaXNwYXRjaGVyPiBl
dmVudERpc3BhdGNoZXIoZXZlbnREaXNwYXRjaGVyUHRyKTsKLSAgICAgICAgZXZlbnREaXNwYXRj
aGVyLT5kaXNwYXRjaCgpOwotICAgIH0pOwotCisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IHBy
cEV2ZW50OworICAgIE93blB0cjxFdmVudERpc3BhdGNoZXJUYXNrPiB0YXNrID0gRXZlbnREaXNw
YXRjaGVyVGFzazo6Y3JlYXRlKGV2ZW50LCAqdGhpcyk7CisgICAgbV9ldmVudFRhc2tNYXAuYWRk
KGV2ZW50LnJlbGVhc2UoKSwgdGFzay5nZXQoKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LnBvc3RUYXNrKHRhc2sucmVsZWFzZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9v
bCBXb3JrZXJFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAgRXZl
bnREaXNwYXRjaGVyKiB0YXNrID0gbV9ldmVudERpc3BhdGNoZXJNYXAudGFrZSgmZXZlbnQpOwor
ICAgIEV2ZW50RGlzcGF0Y2hlclRhc2sqIHRhc2sgPSBtX2V2ZW50VGFza01hcC50YWtlKCZldmVu
dCk7CiAgICAgaWYgKCF0YXNrKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdGFzay0+Y2Fu
Y2VsKCk7CkBAIC0xMTAsOSArMTE1LDExIEBAIGJvb2wgV29ya2VyRXZlbnRRdWV1ZTo6Y2FuY2Vs
RXZlbnQoRXZlbnQmIGV2ZW50KQogdm9pZCBXb3JrZXJFdmVudFF1ZXVlOjpjbG9zZSgpCiB7CiAg
ICAgbV9pc0Nsb3NlZCA9IHRydWU7Ci0gICAgZm9yIChhdXRvJiBkaXNwYXRjaGVyIDogbV9ldmVu
dERpc3BhdGNoZXJNYXAudmFsdWVzKCkpCi0gICAgICAgIGRpc3BhdGNoZXItPmNhbmNlbCgpOwot
ICAgIG1fZXZlbnREaXNwYXRjaGVyTWFwLmNsZWFyKCk7CisgICAgZm9yIChFdmVudFRhc2tNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9ldmVudFRhc2tNYXAuYmVnaW4oKTsgaXQgIT0gbV9ldmVudFRhc2tN
YXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgRXZlbnREaXNwYXRjaGVyVGFzayogdGFzayA9IGl0
LT52YWx1ZTsKKyAgICAgICAgdGFzay0+Y2FuY2VsKCk7CisgICAgfQorICAgIG1fZXZlbnRUYXNr
TWFwLmNsZWFyKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmgKaW5kZXggMWM5Mjg0NGY5MjBkN2UxMjAxNGIyMWRkYTlkODExNWRiNzYyM2EyNi4uNWZh
ZTFkNmNjYzYwYmExYWU5OTE1ZDg0OWFiZGJkZjJkNTIzNjNkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgcHJpdmF0ZToKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAg
Ym9vbCBtX2lzQ2xvc2VkOwogCi0gICAgY2xhc3MgRXZlbnREaXNwYXRjaGVyOwotICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8RXZlbnQ+LCBFdmVudERpc3BhdGNoZXIqPiBFdmVudERpc3BhdGNo
ZXJNYXA7Ci0gICAgRXZlbnREaXNwYXRjaGVyTWFwIG1fZXZlbnREaXNwYXRjaGVyTWFwOworICAg
IGNsYXNzIEV2ZW50RGlzcGF0Y2hlclRhc2s7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxF
dmVudD4sIEV2ZW50RGlzcGF0Y2hlclRhc2sqPiBFdmVudFRhc2tNYXA7CisgICAgRXZlbnRUYXNr
TWFwIG1fZXZlbnRUYXNrTWFwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3MjJkNmI5NjRiZWU3ODg0NzUzOTY2MWJiNDI3ODE1
NmI1MWI3NmI5Li40MTcxYzJmMzdmM2E2OTMxZmIyYjY4ZDJjOGY3NTQyYTU0ODhkOGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjQsNiAr
NjQsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDbG9zZVdvcmtlckdsb2JhbFNjb3BlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDbG9z
ZVdvcmtlckdsb2JhbFNjb3BlVGFzaz4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2spOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0ICpjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgLy8gTm90aWZ5IHBhcmVudCB0aGF0IHRoaXMgY29udGV4dCBpcyBjbG9z
ZWQuIFBhcmVudCBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBXb3JrZXJUaHJlYWQ6OnN0b3Ao
KS4KKyAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KS0+dGhyZWFkKCkud29ya2Vy
UmVwb3J0aW5nUHJveHkoKS53b3JrZXJHbG9iYWxTY29wZUNsb3NlZCgpOworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCBpc0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsK
KwogV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgc3RkOjp1bmlxdWVfcHRyPEdyb3VwU2V0dGluZ3M+IHNl
dHRpbmdzLCBXb3JrZXJUaHJlYWQmIHRocmVhZCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
dG9wT3JpZ2luKQogICAgIDogbV91cmwodXJsKQogICAgICwgbV91c2VyQWdlbnQodXNlckFnZW50
KQpAQCAtMTMzLDEyICsxNDksNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbG9zZSgpCiAg
ICAgLy8gQWZ0ZXIgbV9jbG9zaW5nIGlzIHNldCwgYWxsIHRoZSB0YXNrcyBpbiB0aGUgcXVldWUg
Y29udGludWUgdG8gYmUgZmV0Y2hlZCBidXQgb25seQogICAgIC8vIHRhc2tzIHdpdGggaXNDbGVh
bnVwVGFzaygpPT10cnVlIHdpbGwgYmUgZXhlY3V0ZWQuCiAgICAgbV9jbG9zaW5nID0gdHJ1ZTsK
LSAgICBwb3N0VGFzayh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNr
LCBbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewotICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OwotICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSB0b1dvcmtl
ckdsb2JhbFNjb3BlKGNvbnRleHQpOwotICAgICAgICAvLyBOb3RpZnkgcGFyZW50IHRoYXQgdGhp
cyBjb250ZXh0IGlzIGNsb3NlZC4gUGFyZW50IGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIFdv
cmtlclRocmVhZDo6c3RvcCgpLgotICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCku
d29ya2VyUmVwb3J0aW5nUHJveHkoKS53b3JrZXJHbG9iYWxTY29wZUNsb3NlZCgpOwotICAgIH0g
fSk7CisgICAgcG9zdFRhc2soQ2xvc2VXb3JrZXJHbG9iYWxTY29wZVRhc2s6OmNyZWF0ZSgpKTsK
IH0KIAogV29ya2VyTmF2aWdhdG9yKiBXb3JrZXJHbG9iYWxTY29wZTo6bmF2aWdhdG9yKCkgY29u
c3QKQEAgLTE0OCw5ICsxNTksOSBAQCBXb3JrZXJOYXZpZ2F0b3IqIFdvcmtlckdsb2JhbFNjb3Bl
OjpuYXZpZ2F0b3IoKSBjb25zdAogICAgIHJldHVybiBtX25hdmlnYXRvci5nZXQoKTsKIH0KIAot
dm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2soVGFzayB0YXNrKQordm9pZCBXb3JrZXJH
bG9iYWxTY29wZTo6cG9zdFRhc2soUGFzc093blB0cjxUYXNrPiB0YXNrKQogewotICAgIHRocmVh
ZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1vdmUodGFzaykpOworICAgIHRocmVhZCgpLnJ1
bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsKIH0KIAogaW50IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRU
aW1lb3V0KFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0KQpA
QCAtMjIzLDcgKzIzNCw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRv
Q29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QKIHZvaWQgV29ya2VyR2xv
YmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0
SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBv
c3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7Cisg
ICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzazo6Y3JlYXRlKHNvdXJjZSwgbGV2
ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjM0LDcgKzI0NSw3
IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2CiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNh
bGxTdGFjaywgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyKQogewogICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRh
c2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKKyAgICAg
ICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrOjpjcmVhdGUoc291cmNlLCBsZXZlbCwg
bWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggMDAxODQ2Njc4NjlkNDUxMjFjYWZhZTEzYzg3
OWRjMmUwYTQ2ZTlhNC4uMTlkMjBlZWJiYjA4Yzg5NzM4MzJkNmU5MTI3Y2NiNjI5NjM4Y2EzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNzgsNyAr
NzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdXNpbmcgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBw
b3N0VGFzayhUYXNrKSBvdmVycmlkZTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdz
IHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBh
c3NPd25QdHI8VGFzaz4pIG92ZXJyaWRlOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0
J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCiAgICAgICAgIC8vIFdvcmtlckdsb2JhbFNjb3Bl
CiAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiBzZWxmKCkgeyByZXR1cm4gdGhpczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCmluZGV4IGRmMzA0ZGM1ZDUw
MjU4Yzk3MTIwYWY3MGI2MjkwOTBkNjk1NDZmMzkuLjYyOTMxMjQ4ZDcxODc5ZDUzZjQyZTBhMjZh
NWMzNzJiMTBlMDk5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TG9hZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclBy
b3h5LmgKQEAgLTQ3LDEyICs0NywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgfldvcmtlckxvYWRlclByb3h5KCkgeyB9CiAKICAgICAgICAgLy8gUG9zdHMgYSB0YXNr
IHRvIHRoZSB0aHJlYWQgd2hpY2ggcnVucyB0aGUgbG9hZGluZyBjb2RlIChub3JtYWxseSwgdGhl
IG1haW4gdGhyZWFkKS4KLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaykgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9z
dFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KSA9
IDA7CiAKICAgICAgICAgLy8gUG9zdHMgY2FsbGJhY2tzIGZyb20gbG9hZGluZyBjb2RlIHRvIHRo
ZSBXb3JrZXJHbG9iYWxTY29wZS4gVGhlICdtb2RlJyBpcyB1c2VkIHRvIGRpZmZlcmVudGlhdGUK
ICAgICAgICAgLy8gc3BlY2lmaWMgc3luY2hyb25vdXMgbG9hZGluZyByZXF1ZXN0cyBzbyB0aGV5
IGNhbiBiZSAnbmVzdGVkJywgcGVyIHNwZWMuCiAgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgdGFzayB3YXMgcG9zdGVkIHN1Y2Nlc3NmdWxseS4KLSAgICAgICAgdmlydHVhbCBib29sIHBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSkgPSAwOwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAKaW5kZXggMTNhNmNlZDYyMmI1YjgzY2YwZjRhM2E5ZTMzZWVkYWU5OGRm
MjQxYy4uYmQyNDM5ZDliMmIzZTYzOTEzNWZmODc0MzMxNzkyYzVmYjc1MTYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTUzLDYg
KzUzLDIxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lc3NhZ2VXb3JrZXJH
bG9iYWxTY29wZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFz
az4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrKG1l
c3NhZ2UsIHN0ZDo6bW92ZShjaGFubmVscykpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTWVz
c2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFu
bmVscykKKyAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgLCBtX2NoYW5uZWxz
KHN0ZDo6bW92ZShjaGFubmVscykpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQorICAgIHsK
KyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4dC0+
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KHNj
cmlwdENvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4g
cG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqc2NyaXB0Q29udGV4dCwgc3RkOjpt
b3ZlKG1fY2hhbm5lbHMpKTsKKyAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShzdGQ6Om1vdmUocG9ydHMpLCBtX21lc3NhZ2UpKTsKKyAgICAgICAgY29u
dGV4dC0+dGhyZWFkKCkud29ya2VyT2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3Jr
ZXJPYmplY3QoY29udGV4dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBtX2NoYW5uZWxzOworfTsKKwor
Y2xhc3MgTWVzc2FnZVdvcmtlclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlclRhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgV29ya2VyTWVzc2Fn
aW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBNZXNzYWdlV29ya2VyVGFzayhtZXNzYWdlLCBzdGQ6Om1vdmUoY2hhbm5lbHMpLCBtZXNz
YWdpbmdQcm94eSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNZXNzYWdlV29ya2VyVGFzayhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywgV29ya2VyTWVzc2FnaW5nUHJveHkq
IG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICA6IG1fbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAs
IG1fY2hhbm5lbHMoc3RkOjptb3ZlKGNoYW5uZWxzKSkKKyAgICAgICAgLCBtX21lc3NhZ2luZ1By
b3h5KG1lc3NhZ2luZ1Byb3h5KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkKKyAgICB7Cisg
ICAgICAgIFdvcmtlciogd29ya2VyT2JqZWN0ID0gbV9tZXNzYWdpbmdQcm94eS0+d29ya2VyT2Jq
ZWN0KCk7CisgICAgICAgIGlmICghd29ya2VyT2JqZWN0IHx8IG1fbWVzc2FnaW5nUHJveHktPmFz
a2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cygqc2NyaXB0Q29udGV4dCwgc3RkOjptb3ZlKG1fY2hhbm5lbHMpKTsKKyAgICAgICAgd29y
a2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHN0ZDo6bW92ZShw
b3J0cyksIG1fbWVzc2FnZSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBtX2NoYW5uZWxzOworICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBt
X21lc3NhZ2luZ1Byb3h5OworfTsKKworY2xhc3MgV29ya2VyRXhjZXB0aW9uVGFzayA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxXb3JrZXJFeGNlcHRpb25UYXNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJFeGNlcHRpb25UYXNrKGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwsIG1lc3NhZ2luZ1Byb3h5KSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFdvcmtlckV4Y2VwdGlvblRhc2soY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQor
ICAgICAgICA6IG1fZXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZS5pc29sYXRlZENvcHkoKSkKKyAg
ICAgICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAgICAgICAgLCBtX2NvbHVtbk51bWJl
cihjb2x1bW5OdW1iZXIpCisgICAgICAgICwgbV9zb3VyY2VVUkwoc291cmNlVVJMLmlzb2xhdGVk
Q29weSgpKQorICAgICAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgV29ya2VyKiB3b3JrZXJPYmplY3QgPSBt
X21lc3NhZ2luZ1Byb3h5LT53b3JrZXJPYmplY3QoKTsKKyAgICAgICAgaWYgKCF3b3JrZXJPYmpl
Y3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gV2UgZG9uJ3QgYm90aGVyIGNo
ZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBiZWNhdXNlIGV4Y2VwdGlv
bnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIHRocmVhZCBpcyB0ZXJt
aW5hdGVkLgorICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgZGlmZmVyZW50IHRoYW4g
dGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNlIHRlcm1pbmF0ZWQgd29y
a2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0LjYgb2YgdGhlIFdlYldv
cmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgYm9v
bCBlcnJvckhhbmRsZWQgPSAhd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KEVycm9yRXZlbnQ6
OmNyZWF0ZShtX2Vycm9yTWVzc2FnZSwgbV9zb3VyY2VVUkwsIG1fbGluZU51bWJlciwgbV9jb2x1
bW5OdW1iZXIpKTsKKyAgICAgICAgaWYgKCFlcnJvckhhbmRsZWQpCisgICAgICAgICAgICBjb250
ZXh0LT5yZXBvcnRFeGNlcHRpb24obV9lcnJvck1lc3NhZ2UsIG1fbGluZU51bWJlciwgbV9jb2x1
bW5OdW1iZXIsIG1fc291cmNlVVJMLCAwKTsKKyAgICB9CisKKyAgICBTdHJpbmcgbV9lcnJvck1l
c3NhZ2U7CisgICAgaW50IG1fbGluZU51bWJlcjsKKyAgICBpbnQgbV9jb2x1bW5OdW1iZXI7Cisg
ICAgU3RyaW5nIG1fc291cmNlVVJMOworICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3Nh
Z2luZ1Byb3h5OworfTsKKworY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRUYXNrIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFzaz4gY3JlYXRlKFdvcmtl
ck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgV29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRUYXNrKG1lc3NhZ2luZ1Byb3h5
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkVGFz
ayhXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCisgICAgICAgIDogbV9tZXNz
YWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAg
bV9tZXNzYWdpbmdQcm94eS0+d29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJbnRlcm5hbCgpOwor
ICAgIH0KKworICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OworfTsK
KworY2xhc3MgV29ya2VyVGVybWluYXRlVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUZXJtaW5h
dGVUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUZXJtaW5hdGVUYXNrKG1lc3Nh
Z2luZ1Byb3h5KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdvcmtlclRlcm1pbmF0ZVRhc2so
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICA6IG1fbWVzc2Fn
aW5nUHJveHkobWVzc2FnaW5nUHJveHkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIG1f
bWVzc2FnaW5nUHJveHktPnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7CisgICAgfQorCisg
ICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJveHk7Cit9OworCitjbGFzcyBX
b3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhyZWFk
QWN0aXZpdHlSZXBvcnRUYXNrPiBjcmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2lu
Z1Byb3h5LCBib29sIGNvbmZpcm1pbmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGhyZWFkQWN0aXZpdHlS
ZXBvcnRUYXNrKG1lc3NhZ2luZ1Byb3h5LCBjb25maXJtaW5nTWVzc2FnZSwgaGFzUGVuZGluZ0Fj
dGl2aXR5KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdvcmtlclRocmVhZEFjdGl2aXR5UmVw
b3J0VGFzayhXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIGJvb2wgY29uZmly
bWluZ01lc3NhZ2UsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQorICAgICAgICA6IG1fbWVzc2Fn
aW5nUHJveHkobWVzc2FnaW5nUHJveHkpCisgICAgICAgICwgbV9jb25maXJtaW5nTWVzc2FnZShj
b25maXJtaW5nTWVzc2FnZSkKKyAgICAgICAgLCBtX2hhc1BlbmRpbmdBY3Rpdml0eShoYXNQZW5k
aW5nQWN0aXZpdHkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIG1fbWVzc2FnaW5nUHJv
eHktPnJlcG9ydFBlbmRpbmdBY3Rpdml0eUludGVybmFsKG1fY29uZmlybWluZ01lc3NhZ2UsIG1f
aGFzUGVuZGluZ0FjdGl2aXR5KTsKKyAgICB9CisKKyAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSog
bV9tZXNzYWdpbmdQcm94eTsKKyAgICBib29sIG1fY29uZmlybWluZ01lc3NhZ2U7CisgICAgYm9v
bCBtX2hhc1BlbmRpbmdBY3Rpdml0eTsKK307CisKK2NsYXNzIFBvc3RNZXNzYWdlVG9QYWdlSW5z
cGVjdG9yVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2s+
IGNyZWF0ZShXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUG9zdE1lc3Nh
Z2VUb1BhZ2VJbnNwZWN0b3JUYXNrKG1lc3NhZ2luZ1Byb3h5LCBtZXNzYWdlKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIFBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yVGFzayhXb3JrZXJNZXNz
YWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKKyAgICAg
ICAgOiBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQorICAgICAgICAsIG1fbWVzc2Fn
ZShtZXNzYWdlLmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAgeworI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgICAgIGlmIChXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5z
cGVjdG9yKiBwYWdlSW5zcGVjdG9yID0gbV9tZXNzYWdpbmdQcm94eS0+bV9wYWdlSW5zcGVjdG9y
KQorICAgICAgICAgICAgcGFnZUluc3BlY3Rvci0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtlciht
X21lc3NhZ2UpOworI2VuZGlmCisgICAgfQorCisgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1f
bWVzc2FnaW5nUHJveHk7CisgICAgU3RyaW5nIG1fbWVzc2FnZTsKK307CisKK2NsYXNzIE5vdGlm
eU5ldHdvcmtTdGF0ZUNoYW5nZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Tm90aWZ5TmV0d29ya1N0YXRl
Q2hhbmdlVGFzaz4gY3JlYXRlKGJvb2wgaXNPbkxpbmUpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IE5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZVRhc2soaXNPbkxpbmUpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgTm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlVGFzayhib29sIGlz
T25MaW5lKQorICAgICAgICA6IG1faXNPbkxpbmUoaXNPbkxpbmUpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0ICpjb250
ZXh0KQorICAgIHsKKyAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9IG1faXNPbkxpbmUg
PyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50Owor
ICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLT5kaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgZmFsc2UpKTsKKyAgICB9CisKKyAgICBib29sIG1f
aXNPbkxpbmU7Cit9OworCisKIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIFdvcmtlckdsb2JhbFNj
b3BlUHJveHk6OmNyZWF0ZShXb3JrZXIqIHdvcmtlcikKIHsKICAgICByZXR1cm4gbmV3IFdvcmtl
ck1lc3NhZ2luZ1Byb3h5KHdvcmtlcik7CkBAIC05NywxNSArMzEwLDcgQEAgdm9pZCBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVS
TCwgY29uc3QgU3QKIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dv
cmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsKLSAgICBN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheSogY2hhbm5lbHNQdHIgPSBjaGFubmVscy5yZWxlYXNlKCk7
Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbPV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpIHsKLSAgICAgICAgV29ya2VyKiB3b3JrZXJPYmplY3QgPSB0
aGlzLT53b3JrZXJPYmplY3QoKTsKLSAgICAgICAgaWYgKCF3b3JrZXJPYmplY3QgfHwgdGhpcy0+
YXNrZWRUb1Rlcm1pbmF0ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmds
ZVBvcnRzKCpjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
KGNoYW5uZWxzUHRyKSk7Ci0gICAgICAgIHdvcmtlck9iamVjdC0+ZGlzcGF0Y2hFdmVudChNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShzdGQ6Om1vdmUocG9ydHMpLCBtZXNzYWdlKSk7Ci0gICAgfSk7Cisg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhNZXNzYWdlV29ya2VyVGFzazo6
Y3JlYXRlKG1lc3NhZ2UsIHN0ZDo6bW92ZShjaGFubmVscyksIHRoaXMpKTsKIH0KIAogdm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQpAQCAtMTEzLDU1ICszMTgsMzMgQEAgdm9p
ZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFMKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogY2hhbm5lbHNQdHIgPSBj
aGFubmVscy5yZWxlYXNlKCk7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNr
KFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkgewotICAgICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRDb250ZXh0LT5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwotICAgICAgICBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSogY29udGV4
dCA9IHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oc2NyaXB0Q29udGV4
dCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1l
c3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpzY3JpcHRDb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KGNoYW5uZWxzUHRyKSk7Ci0gICAgICAgIGNvbnRleHQt
PmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoc3RkOjptb3ZlKHBvcnRzKSwgbWVz
c2FnZSkpOwotICAgICAgICBjb250ZXh0LT50aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLmNv
bmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChjb250ZXh0LT5oYXNQZW5kaW5nQWN0aXZpdHko
KSk7Ci0gICAgfSk7Ci0KICAgICBpZiAobV93b3JrZXJUaHJlYWQpIHsKICAgICAgICAgKyttX3Vu
Y29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrKHN0ZDo6bW92ZSh0YXNrKSk7CisgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzazo6Y3JlYXRlKG1lc3Nh
Z2UsIHN0ZDo6bW92ZShjaGFubmVscykpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9xdWV1ZWRF
YXJseVRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KHN0ZDo6bW92ZSh0YXNrKSkpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBw
ZW5kKE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s6OmNyZWF0ZShtZXNzYWdlLCBzdGQ6Om1v
dmUoY2hhbm5lbHMpKSk7CiB9CiAKLWJvb2wgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0
YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCitib29sIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmIChtX2Fz
a2VkVG9UZXJtaW5hdGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChtX3dv
cmtlclRocmVhZCk7Ci0gICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1v
ZGUoc3RkOjptb3ZlKHRhc2spLCBtb2RlKTsKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZSh0YXNrLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHRhc2spCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1Rv
TG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKIHsK
ICAgICAvLyBGSVhNRTogSW4gY2FzZSBvZiBuZXN0ZWQgd29ya2VycywgdGhpcyBzaG91bGQgZ28g
ZGlyZWN0bHkgdG8gdGhlIHJvb3QgRG9jdW1lbnQgY29udGV4dC4KICAgICBBU1NFUlQobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soc3RkOjptb3ZlKHRhc2spKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKHRhc2spOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKIHsKLSAgICBTdHJpbmcgZXJyb3JNZXNzYWdlQ29weSA9IGVycm9yTWVzc2FnZS5pc29sYXRl
ZENvcHkoKTsKLSAgICBTdHJpbmcgc291cmNlVVJMQ29weSA9IHNvdXJjZVVSTC5pc29sYXRlZENv
cHkoKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFs9XSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgewotICAgICAgICBXb3JrZXIqIHdvcmtlck9iamVj
dCA9IHRoaXMtPndvcmtlck9iamVjdCgpOwotICAgICAgICBpZiAoIXdvcmtlck9iamVjdCkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcg
dGhlIGFza2VkVG9UZXJtaW5hdGUoKSBmbGFnIGhlcmUsIGJlY2F1c2UgZXhjZXB0aW9ucyBzaG91
bGQgKmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZlbiBpZiB0aGUgdGhyZWFkIGlzIHRlcm1pbmF0ZWQu
Ci0gICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBkaWZmZXJlbnQgdGhhbiB0aGUgYmVo
YXZpb3IgaW4gTWVzc2FnZVdvcmtlclRhc2ssIGJlY2F1c2UgdGVybWluYXRlZCB3b3JrZXJzIG5v
IGxvbmdlciBkZWxpdmVyIG1lc3NhZ2VzIChzZWN0aW9uIDQuNiBvZiB0aGUgV2ViV29ya2VyIHNw
ZWMpLCBidXQgdGhleSBkbyByZXBvcnQgZXhjZXB0aW9ucy4KLQotICAgICAgICBib29sIGVycm9y
SGFuZGxlZCA9ICF3b3JrZXJPYmplY3QtPmRpc3BhdGNoRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRl
KGVycm9yTWVzc2FnZUNvcHksIHNvdXJjZVVSTENvcHksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikpOwotICAgICAgICBpZiAoIWVycm9ySGFuZGxlZCkKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
cG9ydEV4Y2VwdGlvbihlcnJvck1lc3NhZ2VDb3B5LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHNvdXJjZVVSTENvcHksIDApOwotICAgIH0pOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soV29ya2VyRXhjZXB0aW9uVGFzazo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwsIHRoaXMpKTsKIH0KIAogc3RhdGljIHZv
aWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHksIE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQg
bGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCkKQEAgLTE4NCwxMyArMzY3LDE0IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtl
clRocmVhZENyZWF0ZWQoUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+CiAgICAgICAg
IC8vIFdvcmtlci50ZXJtaW5hdGUoKSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBKUyBiZWZvcmUgdGhl
IHRocmVhZCB3YXMgY3JlYXRlZC4KICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0b3AoKTsKICAg
ICB9IGVsc2UgeworICAgICAgICB1bnNpZ25lZCB0YXNrQ291bnQgPSBtX3F1ZXVlZEVhcmx5VGFz
a3Muc2l6ZSgpOwogICAgICAgICBBU1NFUlQoIW1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQpOwot
ICAgICAgICBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50ID0gbV9xdWV1ZWRFYXJseVRhc2tzLnNp
emUoKTsKKyAgICAgICAgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCA9IHRhc2tDb3VudDsKICAg
ICAgICAgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZpdHkgPSB0cnVlOyAvLyBXb3JrZXIg
aW5pdGlhbGl6YXRpb24gbWVhbnMgYSBwZW5kaW5nIGFjdGl2aXR5LgogCi0gICAgICAgIGF1dG8g
cXVldWVkRWFybHlUYXNrcyA9IHN0ZDo6bW92ZShtX3F1ZXVlZEVhcmx5VGFza3MpOwotICAgICAg
ICBmb3IgKGF1dG8mIHRhc2sgOiBxdWV1ZWRFYXJseVRhc2tzKQotICAgICAgICAgICAgbV93b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhzdGQ6Om1vdmUoKnRhc2spKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhc2tDb3VudDsgKytpKQorICAgICAgICAgICAgbV93
b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhtX3F1ZXVlZEVhcmx5VGFza3NbaV0ucmVs
ZWFzZSgpKTsKKyAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmNsZWFyKCk7CiAgICAgfQogfQog
CkBAIC0yMDgsMTAgKzM5Miw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Om5vdGlmeU5l
dHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogICAgIGlmICghbV93b3JrZXJUaHJlYWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7Ci0gICAgICAgIFdvcmtl
ckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29u
dGV4dCk7Ci0gICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVudE5hbWVzKCku
b2ZmbGluZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICB9KTsKKyAgICBtX3dvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrKE5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZVRhc2s6OmNyZWF0
ZShpc09ubGluZSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJPYmpl
Y3REZXN0cm95ZWRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyTWVzc2Fn
aW5nUHJveHkqIHByb3h5KQpAQCAtMjY3LDE4ICs0NDgsMTQgQEAgdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6c2VuZE1lc3NhZ2VUb0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAK
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6Ondvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkK
IHsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopIHsKLSAgICAgICAgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRJ
bnRlcm5hbCgpOwotICAgIH0pOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soV29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWRUYXNrOjpjcmVhdGUodGhpcykpOwogICAgIC8v
IFdpbGwgZXhlY3V0ZSB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZEludGVybmFsKCkgb24gY29u
dGV4dCdzIHRocmVhZC4KIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyR2xv
YmFsU2NvcGVDbG9zZWQoKQogewogICAgIC8vIEV4ZWN1dGVzIHRlcm1pbmF0ZVdvcmtlckdsb2Jh
bFNjb3BlKCkgb24gcGFyZW50IGNvbnRleHQncyB0aHJlYWQuCi0gICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7Ci0g
ICAgICAgIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7Ci0gICAgfSk7CisgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJUZXJtaW5hdGVUYXNrOjpjcmVhdGUo
dGhpcykpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJHbG9iYWxTY29w
ZURlc3Ryb3llZEludGVybmFsKCkKQEAgLTMwOSwyNiArNDg2LDE5IEBAIHZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1BhZ2VJbnNw
ZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIFN0cmluZyBtZXNzYWdlQ29weSA9
IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7Ci0gICAgICAgIHRoaXMtPm1f
cGFnZUluc3BlY3Rvci0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtlcihtZXNzYWdlQ29weSk7Ci0g
ICAgfSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhQb3N0TWVzc2Fn
ZVRvUGFnZUluc3BlY3RvclRhc2s6OmNyZWF0ZSh0aGlzLCBtZXNzYWdlKSk7CiB9CiAjZW5kaWYK
IAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2Jq
ZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQogewotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgewotICAgICAgICB0
aGlzLT5yZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbCh0cnVlLCBoYXNQZW5kaW5nQWN0aXZp
dHkpOwotICAgIH0pOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV29y
a2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrOjpjcmVhdGUodGhpcywgdHJ1ZSwgaGFzUGVuZGlu
Z0FjdGl2aXR5KSk7CiAgICAgLy8gV2lsbCBleGVjdXRlIHJlcG9ydFBlbmRpbmdBY3Rpdml0eUlu
dGVybmFsKCkgb24gY29udGV4dCdzIHRocmVhZC4KIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQogewot
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soWz1dIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikgewotICAgICAgICB0aGlzLT5yZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5h
bChmYWxzZSwgaGFzUGVuZGluZ0FjdGl2aXR5KTsKLSAgICB9KTsKKyAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazo6Y3Jl
YXRlKHRoaXMsIGZhbHNlLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKICAgICAvLyBXaWxsIGV4ZWN1
dGUgcmVwb3J0UGVuZGluZ0FjdGl2aXR5SW50ZXJuYWwoKSBvbiBjb250ZXh0J3MgdGhyZWFkLgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5k
ZXggMDJiMDhkNjAzY2E0ZTRkN2RmNWIzNWZjMDM2MTBmOWRjNmY2Njg0NC4uNjA2ZDAxM2VlNjEz
OGVlMDU1M2Q4YjA3ZWE0YjJiNDJiYmVjZjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtODAsOCArODAsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFdvcmtlckxvYWRlclByb3h5Lgog
ICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgb24gZGlmZmVyZW50IHRocmVhZHMg
dG8gc2NoZWR1bGUgbG9hZGluZwogICAgICAgICAvLyByZXF1ZXN0cyBhbmQgdG8gc2VuZCBjYWxs
YmFja3MgYmFjayB0byBXb3JrZXJHbG9iYWxTY29wZS4KLSAgICAgICAgdmlydHVhbCB2b2lkIHBv
c3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaykgb3ZlcnJpZGU7Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkgb3ZlcnJpZGU7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIGJvb2wg
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpIG92ZXJyaWRlOwogCiAgICAg
ICAgIHZvaWQgd29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRo
cmVhZD4pOwogCkBAIC0xMTMsNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIGJvb2wgbV9hc2tlZFRvVGVybWluYXRlOwogCi0gICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IG1fcXVldWVkRWFybHlUYXNrczsg
Ly8gVGFza3MgYXJlIHF1ZXVlZCBoZXJlIHVudGlsIHRoZXJlJ3MgYSB0aHJlYWQgb2JqZWN0IGNy
ZWF0ZWQuCisgICAgICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4+IG1fcXVldWVkRWFybHlUYXNrczsgLy8gVGFza3MgYXJlIHF1ZXVlZCBoZXJlIHVudGlsIHRo
ZXJlJ3MgYSB0aHJlYWQgb2JqZWN0IGNyZWF0ZWQuCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICAgICAgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6UGFnZUluc3BlY3RvciogbV9wYWdlSW5zcGVj
dG9yOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1
bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRl
eCBiNjRjMmU2Njk3YmM2NTU4MWQxZGVhMjA0OTBhZWQyNTQyOTMzZTZlLi40OWUwNjFjMGEyMzNi
NGFlZmE5YjA1Nzk1MzI4OWE2OWM5MmE5Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHAKQEAgLTE5MiwzNCArMTkyLDM0IEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6
dGVybWluYXRlKCkKICAgICBtX21lc3NhZ2VRdWV1ZS5raWxsKCk7CiB9CiAKLXZvaWQgV29ya2Vy
UnVuTG9vcDo6cG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKQordm9p
ZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IHRhc2spCiB7Ci0gICAgcG9zdFRhc2tGb3JNb2RlKHN0ZDo6bW92ZSh0YXNrKSwg
ZGVmYXVsdE1vZGUoKSk7CisgICAgcG9zdFRhc2tGb3JNb2RlKHRhc2ssIGRlZmF1bHRNb2RlKCkp
OwogfQogCi12b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzaykKK3ZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tB
bmRUZXJtaW5hdGUoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNr
KQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwoVGFzazo6Y3JlYXRlKHN0ZDo6
bW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKS5pc29sYXRlZENvcHkoKSkpOworICAgIG1fbWVzc2Fn
ZVF1ZXVlLmFwcGVuZEFuZEtpbGwoVGFzazo6Y3JlYXRlKHRhc2ssIGRlZmF1bHRNb2RlKCkuaXNv
bGF0ZWRDb3B5KCkpKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2
b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtX21l
c3NhZ2VRdWV1ZS5hcHBlbmQoVGFzazo6Y3JlYXRlKHN0ZDo6bW92ZSh0YXNrKSwgbW9kZS5pc29s
YXRlZENvcHkoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUodGFz
aywgbW9kZS5pc29sYXRlZENvcHkoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V29ya2VyUnVu
TG9vcDo6VGFzaz4gV29ya2VyUnVuTG9vcDo6VGFzazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorc3RkOjp1bmlxdWVfcHRyPFdv
cmtlclJ1bkxvb3A6OlRhc2s+IFdvcmtlclJ1bkxvb3A6OlRhc2s6OmNyZWF0ZShQYXNzT3duUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkK
IHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFRhc2s+KG5ldyBUYXNrKHN0ZDo6bW92ZSh0
YXNrKSwgbW9kZSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VGFzaz4obmV3IFRhc2so
dGFzaywgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNr
KGNvbnN0IFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiB7Ci0gICAgaWYgKCghdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KS0+aXNDbG9z
aW5nKCkgJiYgIXJ1bkxvb3AudGVybWluYXRlZCgpKSB8fCBtX3Rhc2suaXNDbGVhbnVwVGFzaygp
KQotICAgICAgICBtX3Rhc2sucGVyZm9ybVRhc2soY29udGV4dCk7CisgICAgaWYgKCghdG9Xb3Jr
ZXJHbG9iYWxTY29wZShjb250ZXh0KS0+aXNDbG9zaW5nKCkgJiYgIXJ1bkxvb3AudGVybWluYXRl
ZCgpKSB8fCBtX3Rhc2stPmlzQ2xlYW51cFRhc2soKSkKKyAgICAgICAgbV90YXNrLT5wZXJmb3Jt
VGFzayhjb250ZXh0KTsKIH0KIAotV29ya2VyUnVuTG9vcDo6VGFzazo6VGFzayhTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKLSAgICA6IG1fdGFz
ayhzdGQ6Om1vdmUodGFzaykpCitXb3JrZXJSdW5Mb29wOjpUYXNrOjpUYXNrKFBhc3NPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQor
ICAgIDogbV90YXNrKHRhc2spCiAgICAgLCBtX21vZGUobW9kZS5pc29sYXRlZENvcHkoKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKaW5kZXggZjIzYzMwZjViMzJh
N2Q0ZjlkMTkxODViYmRiNGExMDg3YTY5NzE1Ni4uMTBhYTgxYjU0NDA1YTg0YTkwYmY3MTc4ODk4
NDAwN2RmYzIwODJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKQEAg
LTU4LDkgKzU4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRlcm1pbmF0
ZSgpOwogICAgICAgICBib29sIHRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2VR
dWV1ZS5raWxsZWQoKTsgfQogCi0gICAgICAgIHZvaWQgcG9zdFRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayk7Ci0gICAgICAgIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayk7Ci0gICAgICAgIHZvaWQgcG9zdFRhc2tGb3JNb2RlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgICAg
IHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7
CisgICAgICAgIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5hdGUoUGFzc093blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPik7CisgICAgICAgIHZvaWQgcG9zdFRhc2tGb3JNb2RlKFBhc3NP
d25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7
CiAKICAgICAgICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZCgpIHsgcmV0dXJuICsrbV91
bmlxdWVJZDsgfQogCkBAIC02OSwxNSArNjksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBjbGFzcyBUYXNrIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2sp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUYXNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VGFzaz4gY3JlYXRlKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgICAgICAgICB+VGFzaygpIHsgfQogICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAg
ICAgICAgICAgICB2b2lkIHBlcmZvcm1UYXNrKGNvbnN0IFdvcmtlclJ1bkxvb3AmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CiAKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIFRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpOwor
ICAgICAgICAgICAgVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgICAgIAotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayBtX3Rhc2s7CisgICAgICAgICAgICBPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gbV90YXNrOwogICAgICAgICAgICAgU3RyaW5nIG1fbW9k
ZTsKICAgICAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmlu
ZGV4IDQ0MGIwNmNjZjQxMDZjMjcyOGZiMjEwZmU1ZjI5YzIzMTI2ODFmZmEuLmNkZjZiMjU3YmVl
MTQzZDU0ODQ5OGMxMjNiYzc0NmVmMWQwZjEzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5jcHAKQEAgLTIwNSw2MyArMjA1LDg5IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpy
dW5FdmVudExvb3AoKQogICAgIG1fcnVuTG9vcC5ydW4obV93b3JrZXJHbG9iYWxTY29wZS5nZXQo
KSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkOjpzdG9wKCkKLXsKLSAgICAvLyBNdXRleCBwcm90
ZWN0aW9uIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHN0b3AoKSBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0
aGUgY29udGV4dCBpcyBmdWxseSBjcmVhdGVkLgotICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJl
YWRDcmVhdGlvbk11dGV4KTsKK2NsYXNzIFdvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzayA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTaHV0ZG93bkZpbmlzaFRhc2s+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlclRocmVhZFNodXRkb3duRmlu
aXNoVGFzaygpKTsKKyAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhhdCB0YXNrcyBhcmUgYmVpbmcg
aGFuZGxlZCBieSB0aHJlYWQgZXZlbnQgbG9vcC4gSWYgc2NyaXB0IGV4ZWN1dGlvbiB3ZXJlbid0
IGZvcmJpZGRlbiwgYSB3aGlsZSgxKSBsb29wIGluIEpTIGNvdWxkIGtlZXAgdGhlIHRocmVhZCBh
bGl2ZSBmb3JldmVyLgotICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlKSB7Ci0gICAgICAgIG1f
d29ya2VyR2xvYmFsU2NvcGUtPnNjcmlwdCgpLT5zY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9u
KCk7CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
KmNvbnRleHQpCisgICAgeworICAgICAgICAvLyBJdCdzIG5vdCBzYWZlIHRvIGNhbGwgY2xlYXJT
Y3JpcHQgdW50aWwgYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHBvc3RlZCBieSBmdW5jdGlvbnMgaW5p
dGlhdGVkIGJ5IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrIGhhdmUgY29tcGxldGVkLgor
ICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLT5jbGVhclNjcmlwdCgpOworICAg
IH0KIAotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgIERhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQobV93b3JrZXJHbG9iYWxT
Y29wZS5nZXQoKSk7Ci0jZW5kaWYKLSAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWlu
YXRlKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ICkgewotICAgICAgICAgICAgV29ya2VyR2xvYmFs
U2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
K307CisKK2NsYXNzIFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrIDogcHVibGljIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFzaygpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCAqY29udGV4dCkKKyAgICB7CisgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9i
YWxTY29wZSA9IHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCk7CiAKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQotICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRoZSBkYXRh
YmFzZXMgYXMgcGFydCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PwotICAgICAgICAg
ICAgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyIGNsZWFudXBTeW5jOwotICAgICAgICAgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc3RvcERhdGFiYXNlcyh3b3JrZXJHbG9iYWxTY29wZSwg
JmNsZWFudXBTeW5jKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRoZSBkYXRh
YmFzZXMgYXMgcGFydCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PworICAgICAgICBE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgY2xlYW51cFN5bmM7CisgICAgICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnN0b3BEYXRhYmFzZXMod29ya2VyR2xvYmFsU2NvcGUsICZjbGVhbnVw
U3luYyk7CiAjZW5kaWYKIAotICAgICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPnN0b3BBY3Rp
dmVET01PYmplY3RzKCk7CisgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5zdG9wQWN0aXZlRE9N
T2JqZWN0cygpOwogCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+bm90aWZ5T2JzZXJ2
ZXJzT2ZTdG9wKCk7CisgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5ub3RpZnlPYnNlcnZlcnNP
ZlN0b3AoKTsKIAotICAgICAgICAgICAgLy8gRXZlbnQgbGlzdGVuZXJzIHdvdWxkIGtlZXAgRE9N
V3JhcHBlcldvcmxkIG9iamVjdHMgYWxpdmUgZm9yIHRvbyBsb25nLiBBbHNvLCB0aGV5IGhhdmUg
cmVmZXJlbmNlcyB0byBKUyBvYmplY3RzLAotICAgICAgICAgICAgLy8gd2hpY2ggYmVjb21lIGRh
bmdsaW5nIG9uY2UgSGVhcCBpcyBkZXN0cm95ZWQuCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxT
Y29wZS0+cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICAgICAgLy8gRXZlbnQgbGlzdGVu
ZXJzIHdvdWxkIGtlZXAgRE9NV3JhcHBlcldvcmxkIG9iamVjdHMgYWxpdmUgZm9yIHRvbyBsb25n
LiBBbHNvLCB0aGV5IGhhdmUgcmVmZXJlbmNlcyB0byBKUyBvYmplY3RzLAorICAgICAgICAvLyB3
aGljaCBiZWNvbWUgZGFuZ2xpbmcgb25jZSBIZWFwIGlzIGRlc3Ryb3llZC4KKyAgICAgICAgd29y
a2VyR2xvYmFsU2NvcGUtPnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiAKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotICAgICAgICAgICAgLy8gV2Ugd2FpdCBmb3IgdGhlIGRhdGFiYXNlIHRo
cmVhZCB0byBjbGVhbiB1cCBhbGwgaXRzIHN0dWZmIHNvIHRoYXQgd2UKLSAgICAgICAgICAgIC8v
IGNhbiBkbyBtb3JlIHN0cmluZ2VudCBsZWFrIGNoZWNrcyBhcyB3ZSBleGl0LgotICAgICAgICAg
ICAgY2xlYW51cFN5bmMud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CisgICAgICAgIC8vIFdlIHdh
aXQgZm9yIHRoZSBkYXRhYmFzZSB0aHJlYWQgdG8gY2xlYW4gdXAgYWxsIGl0cyBzdHVmZiBzbyB0
aGF0IHdlCisgICAgICAgIC8vIGNhbiBkbyBtb3JlIHN0cmluZ2VudCBsZWFrIGNoZWNrcyBhcyB3
ZSBleGl0LgorICAgICAgICBjbGVhbnVwU3luYy53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKICNl
bmRpZgogCi0gICAgICAgICAgICAvLyBTdGljayBhIHNodXRkb3duIGNvbW1hbmQgYXQgdGhlIGVu
ZCBvZiB0aGUgcXVldWUsIHNvIHRoYXQgd2UgZGVhbAotICAgICAgICAgICAgLy8gd2l0aCBhbGwg
dGhlIGNsZWFudXAgdGFza3MgdGhlIGRhdGFiYXNlcyBwb3N0IGZpcnN0LgotICAgICAgICAgICAg
d29ya2VyR2xvYmFsU2NvcGUtPnBvc3RUYXNrKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
azo6Q2xlYW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gdG9X
b3JrZXJHbG9iYWxTY29wZShjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBz
YWZlIHRvIGNhbGwgY2xlYXJTY3JpcHQgdW50aWwgYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHBvc3Rl
ZCBieSBmdW5jdGlvbnMgaW5pdGlhdGVkIGJ5IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNr
IGhhdmUgY29tcGxldGVkLgotICAgICAgICAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5jbGVh
clNjcmlwdCgpOwotICAgICAgICAgICAgfSB9KTsKKyAgICAgICAgLy8gU3RpY2sgYSBzaHV0ZG93
biBjb21tYW5kIGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLCBzbyB0aGF0IHdlIGRlYWwKKyAgICAg
ICAgLy8gd2l0aCBhbGwgdGhlIGNsZWFudXAgdGFza3MgdGhlIGRhdGFiYXNlcyBwb3N0IGZpcnN0
LgorICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+cG9zdFRhc2soV29ya2VyVGhyZWFkU2h1dGRv
d25GaW5pc2hUYXNrOjpjcmVhdGUoKSk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGlzQ2xl
YW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cit9OworCit2b2lkIFdvcmtlclRocmVh
ZDo6c3RvcCgpCit7CisgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgYmVjYXVz
ZSBzdG9wKCkgY2FuIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGNvbnRleHQgaXMgZnVsbHkgY3JlYXRl
ZC4KKyAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAKLSAgICAg
ICAgfSB9KTsKKyAgICAvLyBFbnN1cmUgdGhhdCB0YXNrcyBhcmUgYmVpbmcgaGFuZGxlZCBieSB0
aHJlYWQgZXZlbnQgbG9vcC4gSWYgc2NyaXB0IGV4ZWN1dGlvbiB3ZXJlbid0IGZvcmJpZGRlbiwg
YSB3aGlsZSgxKSBsb29wIGluIEpTIGNvdWxkIGtlZXAgdGhlIHRocmVhZCBhbGl2ZSBmb3JldmVy
LgorICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlKSB7CisgICAgICAgIG1fd29ya2VyR2xvYmFs
U2NvcGUtPnNjcmlwdCgpLT5zY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCk7CisKKyNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQorICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5p
bnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KG1fd29ya2VyR2xvYmFsU2NvcGUuZ2V0KCkp
OworI2VuZGlmCisgICAgICAgIG1fcnVuTG9vcC5wb3N0VGFza0FuZFRlcm1pbmF0ZShXb3JrZXJU
aHJlYWRTaHV0ZG93blN0YXJ0VGFzazo6Y3JlYXRlKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIG1fcnVuTG9vcC50ZXJtaW5hdGUoKTsKIH0KIAorY2xhc3MgUmVsZWFzZUZhc3RNYWxs
b2NGcmVlTWVtb3J5VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
KyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92
ZXJyaWRlIHsgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsgfQorfTsKKwogdm9p
ZCBXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygp
CiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sodGhyZWFkU2V0TXV0ZXgo
KSk7CiAKICAgICBmb3IgKGF1dG8qIHdvcmtlclRocmVhZCA6IHdvcmtlclRocmVhZHMoKSkKLSAg
ICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW10gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSB7Ci0gICAgICAgICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eSgpOwotICAgICAgICB9KTsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soYWRvcHRQdHIobmV3IFJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeVRhc2spKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>