<?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>140034</bug_id>
          
          <creation_ts>2015-01-01 16:32:20 -0800</creation_ts>
          <short_desc>Kill the DeprecatedStyleBuilder</short_desc>
          <delta_ts>2015-01-02 14:40:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>
          <dependson>137910</dependson>
    
    <dependson>140010</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058368</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-01 16:32:20 -0800</bug_when>
    <thetext>Kill the DeprecatedStyleBuilder by moving the remaining CSS properties to the new StyleBuilder (finally!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058385</commentid>
    <comment_count>1</comment_count>
      <attachid>243880</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-01 19:35:25 -0800</bug_when>
    <thetext>Created attachment 243880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058477</commentid>
    <comment_count>2</comment_count>
      <attachid>243880</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-02 13:59:36 -0800</bug_when>
    <thetext>Comment on attachment 243880
Patch

It seems like we are a little overboard on the generated code now. I wish more of the loops and such could db in shared code rather than all in the generated files. But I suppose the only way to do that would be templates, and that was madness before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058480</commentid>
    <comment_count>3</comment_count>
      <attachid>243880</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-02 14:40:17 -0800</bug_when>
    <thetext>Comment on attachment 243880
Patch

Clearing flags on attachment: 243880

Committed r177869: &lt;http://trac.webkit.org/changeset/177869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058481</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-02 14:40:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243880</attachid>
            <date>2015-01-01 19:35:25 -0800</date>
            <delta_ts>2015-01-02 14:40:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140034-20150101193528.patch</filename>
            <type>text/plain</type>
            <size>72285</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGE0NzlhZWJmMTEyNjg5
ZTlmMDBmZTUwOTYzODFmYjdmNmNkYWI5NC4uOWM5MzlhZWI4OTFjYzgxZTdiNjViNzU3YWEzY2Vi
OTE4ZGM0NjI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTAxLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgS2lsbCB0aGUgRGVwcmVjYXRl
ZFN0eWxlQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQwMDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW92ZSBGaWxsTGF5ZXIgcHJvcGVydGllcyB0byB0aGUgbmV3IFN0eWxlQnVpbGRlciBh
bmQgZ2V0IHJpZCBvZiB0aGUKKyAgICAgICAgRGVwcmVjYXRlZFN0eWxlQnVpbGRlciBub3cgdGhh
dCBhbGwgaXRzIENTUyBwcm9wZXJ0aWVzIGhhdmUgYmVlbiBwb3J0ZWQKKyAgICAgICAgdG8gdGhl
IG5ldyBTdHlsZUJ1aWxkZXIuCisKIDIwMTQtMTItMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBNb3ZlICdmb250LXNpemUnIENTUyBwcm9wZXJ0eSB0byB0aGUg
bmV3IFN0eWxlQnVpbGRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4ZTlkZDJkZWRmYzcwY2Q4
ODZhZjExMmI3MDQ2MTRmYzk5ZjAxN2YwLi5jNWNmOWYwNTcyYWU1ZTYxMjI3M2U2YTc3ZDA3N2Rk
Mjc4NjI4NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTI1NCw3ICsxMjU0LDYgQEAgc2V0
KFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwCiAgICAgY3NzL0NTU1Zh
bHVlUG9vbC5jcHAKICAgICBjc3MvRE9NV2luZG93Q1NTLmNwcAotICAgIGNzcy9EZXByZWNhdGVk
U3R5bGVCdWlsZGVyLmNwcAogICAgIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAogICAgIGNzcy9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKICAgICBjc3MvRm9udExvYWRlci5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2Nj
Nzk4YzNmMDNiZmZlMTE1MGU1MzQyMTdiNGQyNzk3YTU2NTU0Li43ZjgyYTExYmYyY2RhYmVjZTkz
MmFiMDgwNTJmMGI5M2YyODBiMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01OTAyLDggKzU5MDIsNiBAQAogCQlFMEZFRjM3
MkIyN0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTBGRUYzNzFCMjdDNTNFQUMxQzFGQkVFIC8qIEV2
ZW50U291cmNlLmNwcCAqLzsgfTsKIAkJRTBGRUYzNzJCMzdDNTNFQUMxQzFGQkVFIC8qIEpTRXZl
bnRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUwRkVGMzcxQjM3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmggKi87IH07CiAJCUUw
RkVGMzcyQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUwRkVGMzcxQjQ3QzUzRUFDMUMxRkJF
RSAvKiBKU0V2ZW50U291cmNlLmNwcCAqLzsgfTsKLQkJRTEwMEVFNzUxNTQ2RUFDMTAwQkExMUQx
IC8qIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwMEVFNzMxNTQ2RUFDMTAwQkExMUQxIC8qIERlcHJlY2F0
ZWRTdHlsZUJ1aWxkZXIuY3BwICovOyB9OwotCQlFMTAwRUU3NjE1NDZFQUMxMDBCQTExRDEgLyog
RGVwcmVjYXRlZFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEwMEVFNzQxNTQ2RUFDMTAwQkExMUQxIC8qIERlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXIuaCAqLzsgfTsKIAkJRTEwNzQwMEQwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2Fn
ZUNoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTEwNzQwMEIwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwICovOyB9
OwogCQlFMTA3NDAwRTBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNzQwMEMwRTc3QkRD
MDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuaCAqLzsgfTsKIAkJRTEwQjkzN0MwQjczQzAw
QTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAgLyog
SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLzsgfTsKQEAgLTEzNDI4LDggKzEzNDI2LDYgQEAK
IAkJRTBGRUYzNzFCMjdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50U291cmNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTBGRUYzNzFCMzdDNTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMEZFRjM3MUI0N0M1M0VBQzFDMUZCRUUgLyog
SlNFdmVudFNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0V2ZW50U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTEwMEVFNzMx
NTQ2RUFDMTAwQkExMUQxIC8qIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxMDBFRTc0MTU0NkVBQzEwMEJBMTFEMSAvKiBE
ZXByZWNhdGVkU3R5bGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTEwNzQwMEIwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMDc0MDBDMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01l
c3NhZ2VDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVzc2Fn
ZUNoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwQjkzN0IwQjczQzAw
QTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMjIxMyw4ICsyMjIwOSw2IEBACiAJCQkJRTQ5QkRBMEExMzFGRDNF
NTAwM0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5jcHAgKi8sCiAJCQkJRTQ5QkQ5RjkxMzFGRDJFRDAw
M0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5oICovLAogCQkJCUE4MEU2Q0UxMEExOTg5Q0EwMDdGQjhD
NSAvKiBEYXNoYm9hcmRSZWdpb24uaCAqLywKLQkJCQlFMTAwRUU3MzE1NDZFQUMxMDBCQTExRDEg
LyogRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgKi8sCi0JCQkJRTEwMEVFNzQxNTQ2RUFDMTAw
QkExMUQxIC8qIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuaCAqLywKIAkJCQk0QTRGNDhBNzE2QjBE
RkMwMDBFREJCMjkgLyogRG9jdW1lbnRSdWxlU2V0cy5jcHAgKi8sCiAJCQkJNEE0RjQ4QTgxNkIw
REZDMDAwRURCQjI5IC8qIERvY3VtZW50UnVsZVNldHMuaCAqLywKIAkJCQlGRDY3NzczNTE5NUNB
QjIwMDA3MkUwRDMgLyogRE9NV2luZG93Q1NTLmNwcCAqLywKQEAgLTIzODg5LDcgKzIzODgzLDYg
QEAKIAkJCQk5MzMwOURERjA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlRnJvbVRleHROb2RlQ29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERTEwOTlFNjQ5MjAwNTZFNTgxIC8qIERl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMTY2MEE1MTM3ODdD
NkQwMDFGRkE3QiAvKiBEZW5vcm1hbERpc2FibGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTAw
RUU3NjE1NDZFQUMxMDBCQTExRDEgLyogRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdDOUFCRjkxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJDb250
cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQlDQ0MyQjUxNDE1RjYxMzA2MDA0OENERDYgLyogRGV2
aWNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDQ0MyQjUxNjE1RjYxMzA2MDA0OENERDYg
LyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzU4NSw3ICsyNzU3OCw2
IEBACiAJCQkJRkQzMTYwMzAxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzMzA5RERFMDk5RTY0OTIwMDU2RTU4MSAvKiBEZWxldGVGcm9t
VGV4dE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5REUwMDk5RTY0OTIw
MDU2RTU4MSAvKiBEZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUUxMDBFRTc1MTU0NkVBQzEwMEJBMTFEMSAvKiBEZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3QzlBQkY4MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDQ0MyQjUxNTE1RjYxMzA2MDA0OENE
RDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUVBRjk3RjEy
MTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAppbmRleCAwMjFlZjZkNTEyM2NiNmE5NTA5ZTY1
YjM3ZWE3OGQ3YzlhMzNhYzczLi41NmZlNTRmMDhhMmE4N2NiOTU2NGNlZjZhMTgyYzRjZjcyZTcz
N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKQEAgLTc1LDcgKzc1LDYgQEAKICNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuY3BwIgogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5jcHAiCiAj
aW5jbHVkZSAiRE9NV2luZG93Q1NTLmNwcCIKLSNpbmNsdWRlICJEZXByZWNhdGVkU3R5bGVCdWls
ZGVyLmNwcCIKICNpbmNsdWRlICJEb2N1bWVudFJ1bGVTZXRzLmNwcCIKICNpbmNsdWRlICJFbGVt
ZW50UnVsZUNvbGxlY3Rvci5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5j
cHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDA2MjZkZDYyZTBi
ODY4Yzc3NDI1YWYzZGUwMDUxMjA4MGE4MjljYTkuLjg3MjlkYjA2ZGRkMjUwZThjMWRkYjNiNWRi
NzNjMzcxM2VlZTA1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBA
IC04MCw2ICs4MCwxMCBAQAogLy8gKiBGb250UHJvcGVydHk6CiAvLyBJbmRpY2F0ZXMgdGhhdCB0
aGlzIENTUyBwcm9wZXJ0eSBpcyBmb250LXJlbGF0ZWQuIEl0IG11c3QgaGF2ZSBjb3JyZXNwb25k
aW5nCiAvLyBtZXRob2RzIG9uIHRoZSBGb250RGVzY3JpcHRpb24gY2xhc3MuCisvLworLy8gKiBG
aWxsTGF5ZXJQcm9wZXJ0eToKKy8vIEluZGljYXRlcyB0aGF0IHRoaXMgQ1NTIHByb3BlcnR5IGlz
IGEgRmlsbExheWVyIHByb3BlcnR5LiBJdCBtdXN0IGhhdmUKKy8vIGNvcnJlc3BvbmRpbmcgbWV0
aG9kcyBvbiB0aGUgRmlsbExheWVyIGNsYXNzLgogCiAKIC8vIGhpZ2gtcHJpb3JpdHkgcHJvcGVy
dHkgbmFtZXMgaGF2ZSB0byBiZSBsaXN0ZWQgZmlyc3QsIHRvIHNpbXBsaWZ5IHRoZSBjaGVjawpA
QCAtMTI5LDE5ICsxMzMsMTkgQEAgYW5pbWF0aW9uLW5hbWUgW0FuaW1hdGlvblByb3BlcnR5LCBU
eXBlTmFtZT1TdHJpbmcsIE5hbWVGb3JNZXRob2RzPU5hbWVdCiBhbmltYXRpb24tcGxheS1zdGF0
ZSBbQW5pbWF0aW9uUHJvcGVydHksIFR5cGVOYW1lPUVBbmltUGxheVN0YXRlLCBOYW1lRm9yTWV0
aG9kcz1QbGF5U3RhdGVdCiBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIFtBbmltYXRpb25Qcm9w
ZXJ0eSwgVHlwZU5hbWU9UGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4sIE5hbWVGb3JNZXRob2Rz
PVRpbWluZ0Z1bmN0aW9uXQogYmFja2dyb3VuZCBbTGVnYWN5U3R5bGVCdWlsZGVyXQotYmFja2dy
b3VuZC1hdHRhY2htZW50IFtMZWdhY3lTdHlsZUJ1aWxkZXJdCi1iYWNrZ3JvdW5kLWJsZW5kLW1v
ZGUgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KLWJhY2tncm91bmQtY2xpcCBbTGVnYWN5U3R5bGVCdWls
ZGVyXQorYmFja2dyb3VuZC1hdHRhY2htZW50IFtGaWxsTGF5ZXJQcm9wZXJ0eSwgVHlwZU5hbWU9
RUZpbGxBdHRhY2htZW50LCBOYW1lRm9yTWV0aG9kcz1BdHRhY2htZW50XQorYmFja2dyb3VuZC1i
bGVuZC1tb2RlIFtGaWxsTGF5ZXJQcm9wZXJ0eSwgVHlwZU5hbWU9QmxlbmRNb2RlLCBOYW1lRm9y
TWV0aG9kcz1CbGVuZE1vZGVdCitiYWNrZ3JvdW5kLWNsaXAgW0ZpbGxMYXllclByb3BlcnR5LCBU
eXBlTmFtZT1FRmlsbEJveCwgTmFtZUZvck1ldGhvZHM9Q2xpcF0KIGJhY2tncm91bmQtY29sb3Ig
W1Zpc2l0ZWRMaW5rQ29sb3JTdXBwb3J0LCBJbml0aWFsPWludmFsaWRDb2xvciwgTm9EZWZhdWx0
Q29sb3JdCi1iYWNrZ3JvdW5kLWltYWdlIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCi1iYWNrZ3JvdW5k
LW9yaWdpbiBbTGVnYWN5U3R5bGVCdWlsZGVyXQorYmFja2dyb3VuZC1pbWFnZSBbRmlsbExheWVy
UHJvcGVydHksIFR5cGVOYW1lPVN0eWxlSW1hZ2UqLCBOYW1lRm9yTWV0aG9kcz1JbWFnZV0KK2Jh
Y2tncm91bmQtb3JpZ2luIFtGaWxsTGF5ZXJQcm9wZXJ0eSwgVHlwZU5hbWU9RUZpbGxCb3gsIE5h
bWVGb3JNZXRob2RzPU9yaWdpbl0KIGJhY2tncm91bmQtcG9zaXRpb24gW0xlZ2FjeVN0eWxlQnVp
bGRlcl0KLWJhY2tncm91bmQtcG9zaXRpb24teCBbTGVnYWN5U3R5bGVCdWlsZGVyXQotYmFja2dy
b3VuZC1wb3NpdGlvbi15IFtMZWdhY3lTdHlsZUJ1aWxkZXJdCitiYWNrZ3JvdW5kLXBvc2l0aW9u
LXggW0ZpbGxMYXllclByb3BlcnR5LCBUeXBlTmFtZT1MZW5ndGgsIE5hbWVGb3JNZXRob2RzPVhQ
b3NpdGlvbl0KK2JhY2tncm91bmQtcG9zaXRpb24teSBbRmlsbExheWVyUHJvcGVydHksIFR5cGVO
YW1lPUxlbmd0aCwgTmFtZUZvck1ldGhvZHM9WVBvc2l0aW9uXQogYmFja2dyb3VuZC1yZXBlYXQg
W0xlZ2FjeVN0eWxlQnVpbGRlcl0KLWJhY2tncm91bmQtcmVwZWF0LXggW0xlZ2FjeVN0eWxlQnVp
bGRlcl0KLWJhY2tncm91bmQtcmVwZWF0LXkgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KLWJhY2tncm91
bmQtc2l6ZSBbTGVnYWN5U3R5bGVCdWlsZGVyXQorYmFja2dyb3VuZC1yZXBlYXQteCBbRmlsbExh
eWVyUHJvcGVydHksIFR5cGVOYW1lPUVGaWxsUmVwZWF0LCBOYW1lRm9yTWV0aG9kcz1SZXBlYXRY
XQorYmFja2dyb3VuZC1yZXBlYXQteSBbRmlsbExheWVyUHJvcGVydHksIFR5cGVOYW1lPUVGaWxs
UmVwZWF0LCBOYW1lRm9yTWV0aG9kcz1SZXBlYXRZXQorYmFja2dyb3VuZC1zaXplIFtGaWxsTGF5
ZXJQcm9wZXJ0eSwgVHlwZU5hbWU9RUZpbGxTaXplLCBOYW1lRm9yTWV0aG9kcz1TaXplXQogYm9y
ZGVyIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCiBib3JkZXItYm90dG9tIFtMZWdhY3lTdHlsZUJ1aWxk
ZXJdCiBib3JkZXItYm90dG9tLWNvbG9yIFtWaXNpdGVkTGlua0NvbG9yU3VwcG9ydCwgSW5pdGlh
bD1pbnZhbGlkQ29sb3JdCkBAIC0zMTIsMTMgKzMxNiwxMyBAQCBhbHQgW0xlZ2FjeVN0eWxlQnVp
bGRlcl0KIC13ZWJraXQtYXBwZWFyYW5jZSBbVHlwZU5hbWU9Q29udHJvbFBhcnRdCiAtd2Via2l0
LWFzcGVjdC1yYXRpbyBbSW5oZXJpdGVkLCBDdXN0b209QWxsXQogLXdlYmtpdC1iYWNrZmFjZS12
aXNpYmlsaXR5Ci0td2Via2l0LWJhY2tncm91bmQtY2xpcCBbTGVnYWN5U3R5bGVCdWlsZGVyXQot
LXdlYmtpdC1iYWNrZ3JvdW5kLWNvbXBvc2l0ZSBbTGVnYWN5U3R5bGVCdWlsZGVyXQotLXdlYmtp
dC1iYWNrZ3JvdW5kLW9yaWdpbiBbTGVnYWN5U3R5bGVCdWlsZGVyXQorLXdlYmtpdC1iYWNrZ3Jv
dW5kLWNsaXAgW0ZpbGxMYXllclByb3BlcnR5LCBUeXBlTmFtZT1FRmlsbEJveCwgTmFtZUZvck1l
dGhvZHM9Q2xpcF0KKy13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGUgW0ZpbGxMYXllclByb3Bl
cnR5LCBUeXBlTmFtZT1Db21wb3NpdGVPcGVyYXRvciwgTmFtZUZvck1ldGhvZHM9Q29tcG9zaXRl
XQorLXdlYmtpdC1iYWNrZ3JvdW5kLW9yaWdpbiBbRmlsbExheWVyUHJvcGVydHksIFR5cGVOYW1l
PUVGaWxsQm94LCBOYW1lRm9yTWV0aG9kcz1PcmlnaW5dCiAvLyAtd2Via2l0LWJhY2tncm91bmQt
c2l6ZSBkaWZmZXJzIGZyb20gYmFja2dyb3VuZC1zaXplIG9ubHkgaW4gdGhlIGludGVycHJldGF0
aW9uIG9mCiAvLyBhIHNpbmdsZSB2YWx1ZTogLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IGw7IGlz
IGVxdWl2YWxlbnQgdG8gYmFja2dyb3VuZC1zaXplOiBsIGw7CiAvLyB3aGVyZWFzIGJhY2tncm91
bmQtc2l6ZTogbDsgaXMgZXF1aXZhbGVudCB0byBiYWNrZ3JvdW5kLXNpemU6IGwgYXV0bzsKLS13
ZWJraXQtYmFja2dyb3VuZC1zaXplIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCistd2Via2l0LWJhY2tn
cm91bmQtc2l6ZSBbRmlsbExheWVyUHJvcGVydHksIFR5cGVOYW1lPUVGaWxsU2l6ZSwgTmFtZUZv
ck1ldGhvZHM9U2l6ZV0KIC13ZWJraXQtYm9yZGVyLWFmdGVyIFtMZWdhY3lTdHlsZUJ1aWxkZXJd
CiAtd2Via2l0LWJvcmRlci1hZnRlci1jb2xvciBbTGVnYWN5U3R5bGVCdWlsZGVyXQogLXdlYmtp
dC1ib3JkZXItYWZ0ZXItc3R5bGUgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KQEAgLTQ3MiwxOCArNDc2
LDE4IEBAIGp1c3RpZnktY29udGVudAogLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSBbQ3Vz
dG9tPUFsbF0KIC13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc291cmNlIFtDb252ZXJ0ZXI9U3R5bGVJ
bWFnZTxDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZT5dCiAtd2Via2l0LW1hc2st
Ym94LWltYWdlLXdpZHRoIFtDdXN0b209QWxsXQotLXdlYmtpdC1tYXNrLWNsaXAgW0xlZ2FjeVN0
eWxlQnVpbGRlcl0KLS13ZWJraXQtbWFzay1jb21wb3NpdGUgW0xlZ2FjeVN0eWxlQnVpbGRlcl0K
Ky13ZWJraXQtbWFzay1jbGlwIFtGaWxsTGF5ZXJQcm9wZXJ0eSwgVHlwZU5hbWU9RUZpbGxCb3gs
IE5hbWVGb3JNZXRob2RzPUNsaXBdCistd2Via2l0LW1hc2stY29tcG9zaXRlIFtGaWxsTGF5ZXJQ
cm9wZXJ0eSwgVHlwZU5hbWU9Q29tcG9zaXRlT3BlcmF0b3IsIE5hbWVGb3JNZXRob2RzPUNvbXBv
c2l0ZV0KIC13ZWJraXQtbWFzay1pbWFnZSBbTGVnYWN5U3R5bGVCdWlsZGVyXQotLXdlYmtpdC1t
YXNrLW9yaWdpbiBbTGVnYWN5U3R5bGVCdWlsZGVyXQorLXdlYmtpdC1tYXNrLW9yaWdpbiBbRmls
bExheWVyUHJvcGVydHksIFR5cGVOYW1lPUVGaWxsQm94LCBOYW1lRm9yTWV0aG9kcz1PcmlnaW5d
CiAtd2Via2l0LW1hc2stcG9zaXRpb24gW0xlZ2FjeVN0eWxlQnVpbGRlcl0KLS13ZWJraXQtbWFz
ay1wb3NpdGlvbi14IFtMZWdhY3lTdHlsZUJ1aWxkZXJdCi0td2Via2l0LW1hc2stcG9zaXRpb24t
eSBbTGVnYWN5U3R5bGVCdWlsZGVyXQorLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXggW0ZpbGxMYXll
clByb3BlcnR5LCBUeXBlTmFtZT1MZW5ndGgsIE5hbWVGb3JNZXRob2RzPVhQb3NpdGlvbl0KKy13
ZWJraXQtbWFzay1wb3NpdGlvbi15IFtGaWxsTGF5ZXJQcm9wZXJ0eSwgVHlwZU5hbWU9TGVuZ3Ro
LCBOYW1lRm9yTWV0aG9kcz1ZUG9zaXRpb25dCiAtd2Via2l0LW1hc2stcmVwZWF0IFtMZWdhY3lT
dHlsZUJ1aWxkZXJdCi0td2Via2l0LW1hc2stcmVwZWF0LXggW0xlZ2FjeVN0eWxlQnVpbGRlcl0K
LS13ZWJraXQtbWFzay1yZXBlYXQteSBbTGVnYWN5U3R5bGVCdWlsZGVyXQotLXdlYmtpdC1tYXNr
LXNpemUgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KLS13ZWJraXQtbWFzay1zb3VyY2UtdHlwZSBbTGVn
YWN5U3R5bGVCdWlsZGVyXQorLXdlYmtpdC1tYXNrLXJlcGVhdC14IFtGaWxsTGF5ZXJQcm9wZXJ0
eSwgVHlwZU5hbWU9RUZpbGxSZXBlYXQsIE5hbWVGb3JNZXRob2RzPVJlcGVhdFhdCistd2Via2l0
LW1hc2stcmVwZWF0LXkgW0ZpbGxMYXllclByb3BlcnR5LCBUeXBlTmFtZT1FRmlsbFJlcGVhdCwg
TmFtZUZvck1ldGhvZHM9UmVwZWF0WV0KKy13ZWJraXQtbWFzay1zaXplIFtGaWxsTGF5ZXJQcm9w
ZXJ0eSwgVHlwZU5hbWU9RmlsbFNpemUsIE5hbWVGb3JNZXRob2RzPVNpemVdCistd2Via2l0LW1h
c2stc291cmNlLXR5cGUgW0ZpbGxMYXllclByb3BlcnR5LCBUeXBlTmFtZT1FTWFza1NvdXJjZVR5
cGUsIE5hbWVGb3JNZXRob2RzPU1hc2tTb3VyY2VUeXBlXQogLXdlYmtpdC1tYXgtbG9naWNhbC13
aWR0aCBbTGVnYWN5U3R5bGVCdWlsZGVyXQogLXdlYmtpdC1tYXgtbG9naWNhbC1oZWlnaHQgW0xl
Z2FjeVN0eWxlQnVpbGRlcl0KIC13ZWJraXQtbWluLWxvZ2ljYWwtd2lkdGggW0xlZ2FjeVN0eWxl
QnVpbGRlcl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAppbmRleCAxNmE3ZGQ3M2Nk
MGY3OWIxNWQ0MzllOWNhODY5NmY3OGFmZjFjNTZkLi4wNzE5YWJkMDkwMDAyYzE2YTI4MWNmOTY3
Y2I2Y2JkYTU0MzNhNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHls
ZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCkBAIC03
MCwxNDUgKzcwLDEzOSBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1RvU3R5bGVNYXA6OnN0
eWxlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBDU1NWYQogICAgIHJldHVybiBtX3Jl
c29sdmVyLT5zdHlsZUltYWdlKHByb3BlcnR5SWQsIHZhbHVlKTsKIH0KIAotdm9pZCBDU1NUb1N0
eWxlTWFwOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVy
LCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxBdHRhY2htZW50
KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAg
ICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNldEF0dGFj
aG1lbnQoRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQobGF5ZXItPnR5cGUoKSkpOwor
ICAgIGlmICh2YWx1ZS5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLnNldEF0dGFj
aG1lbnQoRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQobGF5ZXIudHlwZSgpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigq
dmFsdWUpKQorICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVl
KS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkuZ2V0VmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUZpeGVkOgotICAgICAg
ICBsYXllci0+c2V0QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRhY2htZW50KTsKKyAgICAg
ICAgbGF5ZXIuc2V0QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRhY2htZW50KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVNjcm9sbDoKLSAgICAgICAgbGF5ZXItPnNldEF0
dGFjaG1lbnQoU2Nyb2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpOworICAgICAgICBsYXllci5zZXRB
dHRhY2htZW50KFNjcm9sbEJhY2tncm91bmRBdHRhY2htZW50KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDU1NWYWx1ZUxvY2FsOgotICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChMb2Nh
bEJhY2tncm91bmRBdHRhY2htZW50KTsKKyAgICAgICAgbGF5ZXIuc2V0QXR0YWNobWVudChMb2Nh
bEJhY2tncm91bmRBdHRhY2htZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAotdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQ2xp
cChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lk
IENTU1RvU3R5bGVNYXA6Om1hcEZpbGxDbGlwKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5
ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkp
IHsKLSAgICAgICAgbGF5ZXItPnNldENsaXAoRmlsbExheWVyOjppbml0aWFsRmlsbENsaXAobGF5
ZXItPnR5cGUoKSkpOworICAgIGlmICh2YWx1ZS5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAg
IGxheWVyLnNldENsaXAoRmlsbExheWVyOjppbml0aWFsRmlsbENsaXAobGF5ZXIudHlwZSgpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFsdWUpKQorICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7Ci0gICAgbGF5ZXItPnNldENsaXAocHJp
bWl0aXZlVmFsdWUpOworICAgIGxheWVyLnNldENsaXAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSk7CiB9CiAKLXZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENvbXBvc2l0ZShD
U1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENT
U1RvU3R5bGVNYXA6Om1hcEZpbGxDb21wb3NpdGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyJiBs
YXllciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUo
KSkgewotICAgICAgICBsYXllci0+c2V0Q29tcG9zaXRlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxD
b21wb3NpdGUobGF5ZXItPnR5cGUoKSkpOworICAgIGlmICh2YWx1ZS5pc0luaXRpYWxWYWx1ZSgp
KSB7CisgICAgICAgIGxheWVyLnNldENvbXBvc2l0ZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29t
cG9zaXRlKGxheWVyLnR5cGUoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKSkKKyAgICBpZiAoIWlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVl
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpOwot
ICAgIGxheWVyLT5zZXRDb21wb3NpdGUocHJpbWl0aXZlVmFsdWUpOworICAgIGxheWVyLnNldENv
bXBvc2l0ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKIH0KIAotdm9pZCBD
U1NUb1N0eWxlTWFwOjptYXBGaWxsQmxlbmRNb2RlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciog
bGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbEJsZW5k
TW9kZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRC
bGVuZE1vZGUoRmlsbExheWVyOjppbml0aWFsRmlsbEJsZW5kTW9kZShsYXllci0+dHlwZSgpKSk7
CisgICAgaWYgKHZhbHVlLmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXIuc2V0Qmxl
bmRNb2RlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxCbGVuZE1vZGUobGF5ZXIudHlwZSgpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigq
dmFsdWUpKQorICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7Ci0gICAgbGF5ZXItPnNldEJsZW5kTW9kZShw
cmltaXRpdmVWYWx1ZSk7CisgICAgbGF5ZXIuc2V0QmxlbmRNb2RlKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkpOwogfQogCi12b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxPcmln
aW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9p
ZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsT3JpZ2luKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciYg
bGF5ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVl
KCkpIHsKLSAgICAgICAgbGF5ZXItPnNldE9yaWdpbihGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3Jp
Z2luKGxheWVyLT50eXBlKCkpKTsKKyAgICBpZiAodmFsdWUuaXNJbml0aWFsVmFsdWUoKSkgewor
ICAgICAgICBsYXllci5zZXRPcmlnaW4oRmlsbExheWVyOjppbml0aWFsRmlsbE9yaWdpbihsYXll
ci50eXBlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSkpCisgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKLSAgICBsYXllci0+
c2V0T3JpZ2luKHByaW1pdGl2ZVZhbHVlKTsKKyAgICBsYXllci5zZXRPcmlnaW4oZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiB9CiAKIAotdm9pZCBDU1NUb1N0eWxlTWFwOjpt
YXBGaWxsSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsSW1hZ2UoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgRmlsbExheWVyJiBsYXllciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAg
IGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+c2V0SW1hZ2Uo
RmlsbExheWVyOjppbml0aWFsRmlsbEltYWdlKGxheWVyLT50eXBlKCkpKTsKKyAgICBpZiAodmFs
dWUuaXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBsYXllci5zZXRJbWFnZShGaWxsTGF5ZXI6
OmluaXRpYWxGaWxsSW1hZ2UobGF5ZXIudHlwZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBsYXllci0+c2V0SW1hZ2Uoc3R5bGVJbWFnZShwcm9wZXJ0eSwgKnZhbHVlKSk7Cisg
ICAgbGF5ZXIuc2V0SW1hZ2Uoc3R5bGVJbWFnZShwcm9wZXJ0eSwgdmFsdWUpKTsKIH0KIAotdm9p
ZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBl
YXRYKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
LSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNldFJl
cGVhdFgoRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFgobGF5ZXItPnR5cGUoKSkpOworICAg
IGlmICh2YWx1ZS5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLnNldFJlcGVhdFgo
RmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFgobGF5ZXIudHlwZSgpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpKQor
ICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSk7Ci0gICAgbGF5ZXItPnNldFJlcGVhdFgocHJpbWl0aXZlVmFs
dWUpOworICAgIGxheWVyLnNldFJlcGVhdFgoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKSk7CiB9CiAKLXZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVy
dHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBDU1NUb1N0eWxl
TWFwOjptYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLCBDU1NW
YWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAg
ICAgIGxheWVyLT5zZXRSZXBlYXRZKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRZKGxheWVy
LT50eXBlKCkpKTsKKyAgICBpZiAodmFsdWUuaXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBs
YXllci5zZXRSZXBlYXRZKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRZKGxheWVyLnR5cGUo
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFpczxDU1NQcmltaXRpdmVW
YWx1ZT4oKnZhbHVlKSkKKyAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpOwotICAgIGxheWVyLT5zZXRSZXBl
YXRZKHByaW1pdGl2ZVZhbHVlKTsKKyAgICBsYXllci5zZXRSZXBlYXRZKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogfQogCi12b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxT
aXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3Zv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyJiBs
YXllciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSkpIHsKLSAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKFNpemVOb25lKTsKKyAgICBp
ZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKKyAgICAgICAgbGF5ZXIuc2V0U2l6
ZVR5cGUoU2l6ZU5vbmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUHJpbWl0
aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2
YWx1ZSk7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVDb250YWluKQotICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoQ29udGFpbik7CisgICAg
ICAgIGxheWVyLnNldFNpemVUeXBlKENvbnRhaW4pOwogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNvdmVyKQotICAgICAgICBsYXllci0+c2V0U2l6
ZVR5cGUoQ292ZXIpOworICAgICAgICBsYXllci5zZXRTaXplVHlwZShDb3Zlcik7CiAgICAgZWxz
ZQotICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZUxlbmd0aCk7CisgICAgICAgIGxheWVy
LnNldFNpemVUeXBlKFNpemVMZW5ndGgpOwogCi0gICAgTGVuZ3RoU2l6ZSBiID0gRmlsbExheWVy
Ojppbml0aWFsRmlsbFNpemVMZW5ndGgobGF5ZXItPnR5cGUoKSk7CisgICAgTGVuZ3RoU2l6ZSBi
ID0gRmlsbExheWVyOjppbml0aWFsRmlsbFNpemVMZW5ndGgobGF5ZXIudHlwZSgpKTsKIAotICAg
IGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSB8fCBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVDb250YWluIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUNvdmVyKSB7Ci0gICAgICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIpOworICAgIGlm
ICh2YWx1ZS5pc0luaXRpYWxWYWx1ZSgpIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUNvbnRhaW4gfHwgcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlQ292ZXIpIHsKKyAgICAgICAgbGF5ZXIuc2V0U2l6ZUxlbmd0aChiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMjMwLDIwICsyMjQsMjAgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjpt
YXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFs
dWUKIAogICAgIGIuc2V0V2lkdGgoZmlyc3RMZW5ndGgpOwogICAgIGIuc2V0SGVpZ2h0KHNlY29u
ZExlbmd0aCk7Ci0gICAgbGF5ZXItPnNldFNpemVMZW5ndGgoYik7CisgICAgbGF5ZXIuc2V0U2l6
ZUxlbmd0aChiKTsKIH0KIAotdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVl
KQordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgRmlsbExheWVyJiBsYXllciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGlmICh2
YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+c2V0WFBvc2l0aW9uKEZp
bGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24obGF5ZXItPnR5cGUoKSkpOworICAgIGlmICh2
YWx1ZS5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLnNldFhQb3NpdGlvbihGaWxs
TGF5ZXI6OmluaXRpYWxGaWxsWFBvc2l0aW9uKGxheWVyLnR5cGUoKSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKSkKKyAg
ICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CisgICAgYXV0byogcHJpbWl0aXZlVmFsdWUgPSAmZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFs
dWUtPmdldFBhaXJWYWx1ZSgpOwogICAgIGlmIChwYWlyKSB7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQocHJvcGVydHlJRCwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blggfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpOwpAQCAt
MjYwLDIyICsyNTQsMjIgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwKICAgICBlbHNlCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGxheWVyLT5zZXRYUG9zaXRpb24obGVuZ3RoKTsKKyAgICBsYXll
ci5zZXRYUG9zaXRpb24obGVuZ3RoKTsKICAgICBpZiAocGFpcikKLSAgICAgICAgbGF5ZXItPnNl
dEJhY2tncm91bmRYT3JpZ2luKCoocGFpci0+Zmlyc3QoKSkpOworICAgICAgICBsYXllci5zZXRC
YWNrZ3JvdW5kWE9yaWdpbigqcGFpci0+Zmlyc3QoKSk7CiB9CiAKLXZvaWQgQ1NTVG9TdHlsZU1h
cDo6bWFwRmlsbFlQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciog
bGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFlQb3Np
dGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAg
bGF5ZXItPnNldFlQb3NpdGlvbihGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWVBvc2l0aW9uKGxheWVy
LT50eXBlKCkpKTsKKyAgICBpZiAodmFsdWUuaXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBs
YXllci5zZXRZUG9zaXRpb24oRmlsbExheWVyOjppbml0aWFsRmlsbFlQb3NpdGlvbihsYXllci50
eXBlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkpCisgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIGF1dG8qIHByaW1p
dGl2ZVZhbHVlID0gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgUGFp
ciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKICAgICBpZiAocGFpcikg
ewogICAgICAgICBBU1NFUlRfVU5VU0VEKHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25ZKTsKQEAgLTI5MiwyNCArMjg2LDIzIEBAIHZvaWQgQ1NTVG9TdHlsZU1h
cDo6bWFwRmlsbFlQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciog
bGF5ZXIsCiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXllci0+c2V0WVBvc2l0
aW9uKGxlbmd0aCk7CisgICAgbGF5ZXIuc2V0WVBvc2l0aW9uKGxlbmd0aCk7CiAgICAgaWYgKHBh
aXIpCi0gICAgICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kWU9yaWdpbigqKHBhaXItPmZpcnN0KCkp
KTsKKyAgICAgICAgbGF5ZXIuc2V0QmFja2dyb3VuZFlPcmlnaW4oKnBhaXItPmZpcnN0KCkpOwog
fQogCi12b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxNYXNrU291cmNlVHlwZShDU1NQcm9wZXJ0
eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcEZpbGxNYXNrU291cmNlVHlwZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVy
LCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgRU1hc2tTb3VyY2VUeXBlIHR5cGUgPSBGaWxsTGF5
ZXI6OmluaXRpYWxNYXNrU291cmNlVHlwZShsYXllci0+dHlwZSgpKTsKLSAgICBpZiAodmFsdWUt
PmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNldE1hc2tTb3VyY2VUeXBlKHR5
cGUpOworICAgIEVNYXNrU291cmNlVHlwZSB0eXBlID0gRmlsbExheWVyOjppbml0aWFsRmlsbE1h
c2tTb3VyY2VUeXBlKGxheWVyLnR5cGUoKSk7CisgICAgaWYgKHZhbHVlLmlzSW5pdGlhbFZhbHVl
KCkpIHsKKyAgICAgICAgbGF5ZXIuc2V0TWFza1NvdXJjZVR5cGUodHlwZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpKQor
ICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSk7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1
ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
Z2V0VmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUFscGhhOgogICAgICAgICB0eXBlID0g
RU1hc2tTb3VyY2VUeXBlOjpNYXNrQWxwaGE7CiAgICAgICAgIGJyZWFrOwpAQCAtMzIyLDcgKzMx
NSw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE1hc2tTb3VyY2VUeXBlKENTU1Byb3Bl
cnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIAotICAgIGxheWVyLT5zZXRNYXNrU291cmNlVHlwZSh0eXBlKTsKKyAgICBs
YXllci5zZXRNYXNrU291cmNlVHlwZSh0eXBlKTsKIH0KIAogdm9pZCBDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25EZWxheShBbmltYXRpb24mIGFuaW1hdGlvbiwgQ1NTVmFsdWUmIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmgKaW5kZXggODBmMDNjNThjOWI2ODI2OGU5YWNlY2Vk
ZGExNDIyNDk0MzZhNDMxNC4uYWExYjQ4NjJmNmFkMDQ0ODQxNmIwYTdkMTczMTI0ZjBmZjU4ZDFi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5oCkBAIC00NSwxOCArNDUsMTggQEAgY2xh
c3MgQ1NTVG9TdHlsZU1hcCB7CiBwdWJsaWM6CiAgICAgQ1NTVG9TdHlsZU1hcChTdHlsZVJlc29s
dmVyKik7CiAKLSAgICB2b2lkIG1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBG
aWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbENvbXBvc2l0ZShDU1NQcm9w
ZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbEJsZW5kTW9k
ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmls
bE9yaWdpbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQg
bWFwRmlsbEltYWdlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAg
dm9pZCBtYXBGaWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSop
OwotICAgIHZvaWQgbWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NT
VmFsdWUqKTsKLSAgICB2b2lkIG1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllcios
IENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZp
bGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBGaWxsWVBvc2l0aW9uKENTU1Byb3Bl
cnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBGaWxsTWFza1NvdXJj
ZVR5cGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1h
cEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciYsIENTU1ZhbHVlJik7Cisg
ICAgdm9pZCBtYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXImLCBDU1NWYWx1ZSYp
OworICAgIHZvaWQgbWFwRmlsbENvbXBvc2l0ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXImLCBD
U1NWYWx1ZSYpOworICAgIHZvaWQgbWFwRmlsbEJsZW5kTW9kZShDU1NQcm9wZXJ0eUlELCBGaWxs
TGF5ZXImLCBDU1NWYWx1ZSYpOworICAgIHZvaWQgbWFwRmlsbE9yaWdpbihDU1NQcm9wZXJ0eUlE
LCBGaWxsTGF5ZXImLCBDU1NWYWx1ZSYpOworICAgIHZvaWQgbWFwRmlsbEltYWdlKENTU1Byb3Bl
cnR5SUQsIEZpbGxMYXllciYsIENTU1ZhbHVlJik7CisgICAgdm9pZCBtYXBGaWxsUmVwZWF0WChD
U1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXImLCBDU1NWYWx1ZSYpOworICAgIHZvaWQgbWFwRmlsbFJl
cGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyJiwgQ1NTVmFsdWUmKTsKKyAgICB2b2lkIG1h
cEZpbGxTaXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciYsIENTU1ZhbHVlJik7CisgICAgdm9p
ZCBtYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciYsIENTU1ZhbHVlJik7
CisgICAgdm9pZCBtYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciYsIENT
U1ZhbHVlJik7CisgICAgdm9pZCBtYXBGaWxsTWFza1NvdXJjZVR5cGUoQ1NTUHJvcGVydHlJRCwg
RmlsbExheWVyJiwgQ1NTVmFsdWUmKTsKIAogICAgIHZvaWQgbWFwQW5pbWF0aW9uRGVsYXkoQW5p
bWF0aW9uJiwgQ1NTVmFsdWUmKTsKICAgICB2b2lkIG1hcEFuaW1hdGlvbkRpcmVjdGlvbihBbmlt
YXRpb24mLCBDU1NWYWx1ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJl
Y2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2NhNTk3ZWJhOTQ4
NDgwNDRkYWYwMzliOGY5YmRjMzk0N2NjZGJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWls
ZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRlcHJlY2F0
ZWRTdHlsZUJ1aWxkZXIuaCIKLQotI2luY2x1ZGUgIkNTU0ltYWdlU2V0VmFsdWUuaCIKLSNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaCIKLSNpbmNsdWRlICJDU1NUb1N0eWxlTWFwLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVM
aXN0LmgiCi0jaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgotI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVzIHsKLSAg
ICB0eXBlZGVmIFQgU2V0dGVyOwotICAgIHR5cGVkZWYgVCBHZXR0ZXI7Ci0gICAgdHlwZWRlZiBU
IEluaXRpYWxHZXR0ZXI7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IEZpbGxMYXllckFjY2Vz
c29yVHlwZXM8U3R5bGVJbWFnZSo+IHsKLSAgICB0eXBlZGVmIFBhc3NSZWZQdHI8U3R5bGVJbWFn
ZT4gU2V0dGVyOwotICAgIHR5cGVkZWYgU3R5bGVJbWFnZSogR2V0dGVyOwotICAgIHR5cGVkZWYg
U3R5bGVJbWFnZSogSW5pdGlhbEdldHRlcjsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBGaWxs
TGF5ZXJBY2Nlc3NvclR5cGVzPExlbmd0aD4KLXsKLSAgICB0eXBlZGVmIExlbmd0aCBTZXR0ZXI7
Ci0gICAgdHlwZWRlZiBjb25zdCBMZW5ndGgmIEdldHRlcjsKLSAgICB0eXBlZGVmIExlbmd0aCBJ
bml0aWFsR2V0dGVyOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlkLAotICAgICAgICAgIEVGaWxsTGF5ZXJUeXBlIGZpbGxMYXll
clR5cGUsCi0gICAgICAgICAgRmlsbExheWVyKiAoUmVuZGVyU3R5bGU6OiphY2Nlc3NMYXllcnNG
dW5jdGlvbikoKSwKLSAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIChSZW5kZXJTdHlsZTo6Kmxh
eWVyc0Z1bmN0aW9uKSgpIGNvbnN0LAotICAgICAgICAgIGJvb2wgKEZpbGxMYXllcjo6KnRlc3RG
dW5jdGlvbikoKSBjb25zdCwKLSAgICAgICAgICB0eXBlbmFtZSBGaWxsTGF5ZXJBY2Nlc3NvclR5
cGVzPFQ+OjpHZXR0ZXIgKEZpbGxMYXllcjo6KmdldEZ1bmN0aW9uKSgpIGNvbnN0LAotICAgICAg
ICAgIHZvaWQgKEZpbGxMYXllcjo6KnNldEZ1bmN0aW9uKSh0eXBlbmFtZSBGaWxsTGF5ZXJBY2Nl
c3NvclR5cGVzPFQ+OjpTZXR0ZXIpLAotICAgICAgICAgIHZvaWQgKEZpbGxMYXllcjo6KmNsZWFy
RnVuY3Rpb24pKCksCi0gICAgICAgICAgdHlwZW5hbWUgRmlsbExheWVyQWNjZXNzb3JUeXBlczxU
Pjo6SW5pdGlhbEdldHRlciAoKmluaXRpYWxGdW5jdGlvbikoRUZpbGxMYXllclR5cGUpLAotICAg
ICAgICAgIHZvaWQgKENTU1RvU3R5bGVNYXA6OiptYXBGaWxsRnVuY3Rpb24pKENTU1Byb3BlcnR5
SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik+Ci1jbGFzcyBBcHBseVByb3BlcnR5RmlsbExheWVy
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NQcm9wZXJ0
eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQotICAgIHsKLSAgICAgICAgLy8gQ2hl
Y2sgZm9yIG5vLW9wIGJlZm9yZSBjb3B5aW5nIGFueXRoaW5nLgotICAgICAgICBpZiAoKihzdHls
ZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpLT4qbGF5ZXJzRnVuY3Rpb24pKCkgPT0gKihzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLT4qbGF5ZXJzRnVuY3Rpb24pKCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgYXV0byogY2hpbGQgPSAoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KmFjY2Vz
c0xheWVyc0Z1bmN0aW9uKSgpOwotICAgICAgICBGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSBu
dWxscHRyOwotICAgICAgICBmb3IgKGF1dG8qIHBhcmVudCA9IChzdHlsZVJlc29sdmVyLT5wYXJl
bnRTdHlsZSgpLT4qbGF5ZXJzRnVuY3Rpb24pKCk7IHBhcmVudCAmJiAocGFyZW50LT4qdGVzdEZ1
bmN0aW9uKSgpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQoKSkgewotICAgICAgICAgICAgaWYgKCFj
aGlsZCkgewotICAgICAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjptYWtl
X3VuaXF1ZTxGaWxsTGF5ZXI+KGZpbGxMYXllclR5cGUpKTsKLSAgICAgICAgICAgICAgICBjaGls
ZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIChj
aGlsZC0+KnNldEZ1bmN0aW9uKSgocGFyZW50LT4qZ2V0RnVuY3Rpb24pKCkpOwotICAgICAgICAg
ICAgcHJldmlvdXNDaGlsZCA9IGNoaWxkOwotICAgICAgICAgICAgY2hpbGQgPSBwcmV2aW91c0No
aWxkLT5uZXh0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICg7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0KCkpCi0gICAgICAgICAgICAoY2hpbGQtPipjbGVhckZ1bmN0aW9uKSgpOwotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1Byb3BlcnR5SUQsIFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCi0gICAgewotICAgICAgICAvLyBDaGVjayBmb3Ig
KHNpbmdsZS1sYXllcikgbm8tb3AgYmVmb3JlIGNsZWFyaW5nIGFueXRoaW5nLgotICAgICAgICBj
b25zdCBGaWxsTGF5ZXImIGxheWVycyA9ICooc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KmxheWVy
c0Z1bmN0aW9uKSgpOwotICAgICAgICBpZiAoIWxheWVycy5uZXh0KCkgJiYgKCEobGF5ZXJzLip0
ZXN0RnVuY3Rpb24pKCkgfHwgKGxheWVycy4qZ2V0RnVuY3Rpb24pKCkgPT0gKCppbml0aWFsRnVu
Y3Rpb24pKGZpbGxMYXllclR5cGUpKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBG
aWxsTGF5ZXIqIGNoaWxkID0gKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPiphY2Nlc3NMYXllcnNG
dW5jdGlvbikoKTsKLSAgICAgICAgKGNoaWxkLT4qc2V0RnVuY3Rpb24pKCgqaW5pdGlhbEZ1bmN0
aW9uKShmaWxsTGF5ZXJUeXBlKSk7Ci0gICAgICAgIGZvciAoY2hpbGQgPSBjaGlsZC0+bmV4dCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dCgpKQotICAgICAgICAgICAgKGNoaWxkLT4qY2xl
YXJGdW5jdGlvbikoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1By
b3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIEZpbGxMYXllciogY2hpbGQgPSAoc3R5bGVSZXNvbHZlci0+c3R5bGUo
KS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwotICAgICAgICBGaWxsTGF5ZXIqIHByZXZpb3Vz
Q2hpbGQgPSBudWxscHRyOwotICAgICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0PigqdmFsdWUpCi0j
aWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCi0gICAgICAgICYmICFpczxDU1NJbWFnZVNldFZhbHVl
PigqdmFsdWUpCi0jZW5kaWYKLSAgICAgICAgKSB7Ci0gICAgICAgICAgICAvLyBXYWxrIGVhY2gg
dmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVl
ZGVkLgotICAgICAgICAgICAgQ1NTVmFsdWVMaXN0JiB2YWx1ZUxpc3QgPSBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KCp2YWx1ZSk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dmFsdWVMaXN0Lmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjptYWtlX3Vu
aXF1ZTxGaWxsTGF5ZXI+KGZpbGxMYXllclR5cGUpKTsKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIChzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgpLT4qbWFwRmlsbEZ1bmN0aW9uKShwcm9w
ZXJ0eUlkLCBjaGlsZCwgdmFsdWVMaXN0Lml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwotICAg
ICAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQgPSBjaGlsZDsKLSAgICAgICAgICAgICAgICBjaGls
ZCA9IGNoaWxkLT5uZXh0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAoc3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+Km1hcEZpbGxGdW5jdGlvbikocHJv
cGVydHlJZCwgY2hpbGQsIHZhbHVlKTsKLSAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHQo
KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKDsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHQo
KSkKLSAgICAgICAgICAgIChjaGlsZC0+KmNsZWFyRnVuY3Rpb24pKCk7Ci0gICAgfQotCi0gICAg
c3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlI
YW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1
ZSk7IH0KLX07Ci0KLWNvbnN0IERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXImIERlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXI6OnNoYXJlZFN0eWxlQnVpbGRlcigpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXI+IHN0eWxlQnVpbGRlckluc3RhbmNlOwotICAgIHJl
dHVybiBzdHlsZUJ1aWxkZXJJbnN0YW5jZTsKLX0KLQotRGVwcmVjYXRlZFN0eWxlQnVpbGRlcjo6
RGVwcmVjYXRlZFN0eWxlQnVpbGRlcigpCi17Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1D
U1NQcm9wZXJ0aWVzOyArK2kpCi0gICAgICAgIG1fcHJvcGVydHlNYXBbaV0gPSBQcm9wZXJ0eUhh
bmRsZXIoKTsKLQotICAgIC8vIFBsZWFzZSBrZWVwIENTUyBwcm9wZXJ0eSBsaXN0IGluIGFscGhh
YmV0aWNhbCBvcmRlci4KLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQXR0YWNobWVudCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEF0dGFjaG1lbnQsIENT
U1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5k
TGF5ZXJzLCAmRmlsbExheWVyOjppc0F0dGFjaG1lbnRTZXQsICZGaWxsTGF5ZXI6OmF0dGFjaG1l
bnQsICZGaWxsTGF5ZXI6OnNldEF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmNsZWFyQXR0YWNobWVu
dCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50LCAmQ1NTVG9TdHlsZU1hcDo6bWFw
RmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8
QmxlbmRNb2RlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGUsIEJhY2tncm91bmRGaWxs
TGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxl
OjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0JsZW5kTW9kZVNldCwgJkZpbGxMYXll
cjo6YmxlbmRNb2RlLCAmRmlsbExheWVyOjpzZXRCbGVuZE1vZGUsICZGaWxsTGF5ZXI6OmNsZWFy
QmxlbmRNb2RlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbEJsZW5kTW9kZSwgJkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxCbGVuZE1vZGU+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PEVGaWxsQm94LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBCYWNrZ3JvdW5kRmlsbExheWVy
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFj
a2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNDbGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAm
RmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExheWVyOjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6Omlu
aXRpYWxGaWxsQ2xpcCwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxl
cigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2Us
IEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8U3R5bGVJbWFnZSosIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEltYWdlLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91
bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNJ
bWFnZVNldCwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlLCAmRmlsbExh
eWVyOjpjbGVhckltYWdlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbEltYWdlLCAmQ1NTVG9TdHls
ZU1hcDo6bWFwRmlsbEltYWdlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PEVGaWxsQm94LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIEJhY2tncm91bmRGaWxsTGF5
ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpi
YWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXllcjo6b3Jp
Z2luLCAmRmlsbExheWVyOjpzZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2luLCAmRmls
bExheWVyOjppbml0aWFsRmlsbE9yaWdpbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxPcmlnaW4+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHls
ZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJz
LCAmRmlsbExheWVyOjppc1hQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmls
bExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0aW9uLCAmRmlsbExh
eWVyOjppbml0aWFsRmlsbFhQb3NpdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRp
b24+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJT
dHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5
ZXJzLCAmRmlsbExheWVyOjppc1lQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAm
RmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWVBvc2l0aW9uLCAmRmls
bExheWVyOjppbml0aWFsRmlsbFlQb3NpdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9z
aXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0
LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVu
ZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3Vu
ZExheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRYU2V0LCAmRmlsbExheWVyOjpyZXBlYXRYLCAm
RmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFgsICZGaWxsTGF5
ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRYPjo6
Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxl
OjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMs
ICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6cmVwZWF0WSwgJkZpbGxMYXll
cjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZLCAmRmlsbExheWVyOjppbml0
aWFsRmlsbFJlcGVhdFksICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WT46OmNyZWF0ZUhh
bmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFNp
emUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFNpemUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3Vu
ZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc1Np
emVTZXQsICZGaWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6
OmNsZWFyU2l6ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXplLCAmQ1NTVG9TdHlsZU1hcDo6
bWFwRmlsbFNpemU+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlw
KTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29t
cG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPENvbXBvc2l0ZU9wZXJhdG9yLCBDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5k
TGF5ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9zaXRl
LCAmRmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRlLCAm
RmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxD
b21wb3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4sIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdp
bik7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNp
emUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6
aXNDbGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExh
eWVyOjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PENvbXBvc2l0ZU9wZXJhdG9yLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIE1hc2tG
aWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjpt
YXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9z
aXRlLCAmRmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRl
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZp
bGxDb21wb3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxC
b3gsIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0
eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5
ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmlnaW4sICZGaWxsTGF5ZXI6OnNldE9yaWdp
biwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3JpZ2lu
LCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9yaWdpbj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQXBwbHlQ
cm9wZXJ0eUZpbGxMYXllcjxMZW5ndGgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwg
TWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5
bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzWFBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp4
UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJYUG9z
aXRpb24sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWFBvc2l0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6
bWFwRmlsbFhQb3NpdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXll
cjxMZW5ndGgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgTWFza0ZpbGxMYXllciwg
JlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMs
ICZGaWxsTGF5ZXI6OmlzWVBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxs
TGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJZUG9zaXRpb24sICZGaWxsTGF5
ZXI6OmluaXRpYWxGaWxsWVBvc2l0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlv
bj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxSZXBlYXQsIENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6
YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjpp
c1JlcGVhdFhTZXQsICZGaWxsTGF5ZXI6OnJlcGVhdFgsICZGaWxsTGF5ZXI6OnNldFJlcGVhdFgs
ICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRY
LCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFg+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBBcHBseVBy
b3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZ
LCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJT
dHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRZU2V0LCAmRmlsbExheWVyOjpy
ZXBlYXRZLCAmRmlsbExheWVyOjpzZXRSZXBlYXRZLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFks
ICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxS
ZXBlYXRZPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRNYXNrU2l6ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NT
UHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nl
c3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzU2l6
ZVNldCwgJkZpbGxMYXllcjo6c2l6ZSwgJkZpbGxMYXllcjo6c2V0U2l6ZSwgJkZpbGxMYXllcjo6
Y2xlYXJTaXplLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFNpemUsICZDU1NUb1N0eWxlTWFwOjpt
YXBGaWxsU2l6ZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0TWFza1NvdXJjZVR5cGUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RU1h
c2tTb3VyY2VUeXBlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTb3VyY2VUeXBlLCBNYXNrRmlsbExh
eWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xh
eWVycywgJkZpbGxMYXllcjo6aXNNYXNrU291cmNlVHlwZVNldCwgJkZpbGxMYXllcjo6bWFza1Nv
dXJjZVR5cGUsICZGaWxsTGF5ZXI6OnNldE1hc2tTb3VyY2VUeXBlLCAmRmlsbExheWVyOjpjbGVh
ck1hc2tTb3VyY2VUeXBlLCAmRmlsbExheWVyOjppbml0aWFsTWFza1NvdXJjZVR5cGUsICZDU1NU
b1N0eWxlTWFwOjptYXBGaWxsTWFza1NvdXJjZVR5cGU+OjpjcmVhdGVIYW5kbGVyKCkpOwotfQot
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRl
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTViZjgyZWQ4ZDNkYWExNGFmOGM4NGQyMTFlNDc1NTI0
ZmZmM2M3MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGVwcmVjYXRlZFN0eWxl
QnVpbGRlcl9oCi0jZGVmaW5lIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXJfaAotCi0jaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIK
LSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgQ1NTVmFsdWU7Ci1jbGFzcyBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOwotY2xhc3Mg
U3R5bGVSZXNvbHZlcjsKLQotY2xhc3MgUHJvcGVydHlIYW5kbGVyIHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIHZvaWQgKCpJbmhlcml0RnVuY3Rpb24pKENTU1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2
ZXIqKTsKLSAgICB0eXBlZGVmIHZvaWQgKCpJbml0aWFsRnVuY3Rpb24pKENTU1Byb3BlcnR5SUQs
IFN0eWxlUmVzb2x2ZXIqKTsKLSAgICB0eXBlZGVmIHZvaWQgKCpBcHBseUZ1bmN0aW9uKShDU1NQ
cm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiwgQ1NTVmFsdWUqKTsKLSAgICBQcm9wZXJ0eUhhbmRs
ZXIoKSA6IG1faW5oZXJpdCgwKSwgbV9pbml0aWFsKDApLCBtX2FwcGx5KDApIHsgfQotICAgIFBy
b3BlcnR5SGFuZGxlcihJbmhlcml0RnVuY3Rpb24gaW5oZXJpdCwgSW5pdGlhbEZ1bmN0aW9uIGlu
aXRpYWwsIEFwcGx5RnVuY3Rpb24gYXBwbHkpIDogbV9pbmhlcml0KGluaGVyaXQpLCBtX2luaXRp
YWwoaW5pdGlhbCksIG1fYXBwbHkoYXBwbHkpIHsgfQotICAgIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVy
KSBjb25zdCB7IEFTU0VSVChtX2luaGVyaXQpOyAoKm1faW5oZXJpdCkocHJvcGVydHlJRCwgc3R5
bGVSZXNvbHZlcik7IH0KLSAgICB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikgY29uc3QgeyBBU1NFUlQo
bV9pbml0aWFsKTsgKCptX2luaXRpYWwpKHByb3BlcnR5SUQsIHN0eWxlUmVzb2x2ZXIpOyB9Ci0g
ICAgdm9pZCBhcHBseVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdCB7IEFTU0VSVChtX2FwcGx5
KTsgKCptX2FwcGx5KShwcm9wZXJ0eUlELCBzdHlsZVJlc29sdmVyLCB2YWx1ZSk7IH0KLSAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2luaGVyaXQgJiYgbV9pbml0aWFsICYmIG1f
YXBwbHk7IH0KLSAgICBJbmhlcml0RnVuY3Rpb24gaW5oZXJpdEZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmhlcml0OyB9Ci0gICAgSW5pdGlhbEZ1bmN0aW9uIGluaXRpYWxGdW5jdGlvbigp
IHsgcmV0dXJuIG1faW5pdGlhbDsgfQotICAgIEFwcGx5RnVuY3Rpb24gYXBwbHlGdW5jdGlvbigp
IHsgcmV0dXJuIG1fYXBwbHk7IH0KLXByaXZhdGU6Ci0gICAgSW5oZXJpdEZ1bmN0aW9uIG1faW5o
ZXJpdDsKLSAgICBJbml0aWFsRnVuY3Rpb24gbV9pbml0aWFsOwotICAgIEFwcGx5RnVuY3Rpb24g
bV9hcHBseTsKLX07Ci0KLWNsYXNzIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgRGVwcmVjYXRlZFN0eWxlQnVpbGRl
ciYgc2hhcmVkU3R5bGVCdWlsZGVyKCk7Ci0KLSAgICBjb25zdCBQcm9wZXJ0eUhhbmRsZXImIHBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKHZhbGlkKHByb3BlcnR5KSk7Ci0gICAgICAgIHJldHVybiBtX3Byb3BlcnR5TWFw
W2luZGV4KHByb3BlcnR5KV07Ci0gICAgfQotcHJpdmF0ZToKLSAgICBEZXByZWNhdGVkU3R5bGVC
dWlsZGVyKCk7Ci0gICAgc3RhdGljIGludCBpbmRleChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5IC0gZmlyc3RDU1NQcm9wZXJ0eTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgYm9vbCB2YWxpZChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQotICAgIHsK
LSAgICAgICAgaW50IGkgPSBpbmRleChwcm9wZXJ0eSk7Ci0gICAgICAgIHJldHVybiBpID49IDAg
JiYgaSA8IG51bUNTU1Byb3BlcnRpZXM7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUHJvcGVydHlIYW5kbGVyJiBoYW5k
bGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbGlkKHByb3BlcnR5KSk7Ci0gICAgICAgIEFT
U0VSVCghcHJvcGVydHlIYW5kbGVyKHByb3BlcnR5KS5pc1ZhbGlkKCkpOwotICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFpc0V4cGFuZGVkU2hvcnRoYW5kKHByb3BlcnR5KSwgIlNob3J0aGFu
ZCBwcm9wZXJ0eSBpZCA9ICVkIHNob3VsZG4ndCBiZSBpbnNlcnRlZCBpbnRvIFN0eWxlQnVpbGRl
ci4gU2hvcnRoYW5kcyBzaG91bGQgYmUgZXhwYW5kZWQgYXQgcGFyc2luZyB0aW1lLiIsIHByb3Bl
cnR5KTsKLSAgICAgICAgbV9wcm9wZXJ0eU1hcFtpbmRleChwcm9wZXJ0eSldID0gaGFuZGxlcjsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUlEIG5ld1By
b3BlcnR5LCBDU1NQcm9wZXJ0eUlEIGVxdWl2YWxlbnRQcm9wZXJ0eSkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCh2YWxpZChuZXdQcm9wZXJ0eSkpOwotICAgICAgICBBU1NFUlQodmFsaWQoZXF1aXZh
bGVudFByb3BlcnR5KSk7Ci0gICAgICAgIEFTU0VSVCghcHJvcGVydHlIYW5kbGVyKG5ld1Byb3Bl
cnR5KS5pc1ZhbGlkKCkpOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFpc0V4cGFuZGVk
U2hvcnRoYW5kKG5ld1Byb3BlcnR5KSwgIlNob3J0aGFuZCBwcm9wZXJ0eSBpZCA9ICVkIHNob3Vs
ZG4ndCBiZSBpbnNlcnRlZCBpbnRvIFN0eWxlQnVpbGRlci4gU2hvcnRoYW5kcyBzaG91bGQgYmUg
ZXhwYW5kZWQgYXQgcGFyc2luZyB0aW1lLiIsIG5ld1Byb3BlcnR5KTsKLSAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghaXNFeHBhbmRlZFNob3J0aGFuZChlcXVpdmFsZW50UHJvcGVydHkpLCAi
U2hvcnRoYW5kIHByb3BlcnR5IGlkID0gJWQgc2hvdWxkbid0IGJlIGluc2VydGVkIGludG8gU3R5
bGVCdWlsZGVyLiBTaG9ydGhhbmRzIHNob3VsZCBiZSBleHBhbmRlZCBhdCBwYXJzaW5nIHRpbWUu
IiwgZXF1aXZhbGVudFByb3BlcnR5KTsKLSAgICAgICAgbV9wcm9wZXJ0eU1hcFtpbmRleChuZXdQ
cm9wZXJ0eSldID0gbV9wcm9wZXJ0eU1hcFtpbmRleChlcXVpdmFsZW50UHJvcGVydHkpXTsKLSAg
ICB9Ci0KLSAgICBQcm9wZXJ0eUhhbmRsZXIgbV9wcm9wZXJ0eU1hcFtudW1DU1NQcm9wZXJ0aWVz
XTsKLQotICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPERlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXI+OwotfTsKLQotfQotCi0jZW5kaWYgLy8gRGVwcmVjYXRlZFN0eWxlQnVpbGRlcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZTEzNDM1Yzc1Nzg2NzBhYzUz
YzY0YzgwOTcwNmYyZmI4OTY5MWMyOC4uZjE2ZmFjMDBkMGRiZmYyM2FjMzU3NzZhZTAwZjgxNjNk
YWJkOWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjUsNyArNjUs
NiBAQAogI2luY2x1ZGUgIkNvdW50ZXIuaCIKICNpbmNsdWRlICJDb3VudGVyQ29udGVudC5oIgog
I2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKLSNpbmNsdWRlICJEZXByZWNhdGVkU3R5bGVCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkVsZW1lbnRSdWxlQ29sbGVjdG9yLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9uLmgiCkBA
IC0yNjAsNyArMjU5LDYgQEAgU3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcihEb2N1bWVudCYg
ZG9jdW1lbnQsIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQogI2lmIEVOQUJMRShDU1Nf
REVWSUNFX0FEQVBUQVRJT04pCiAgICAgLCBtX3ZpZXdwb3J0U3R5bGVSZXNvbHZlcihWaWV3cG9y
dFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZSgmZG9jdW1lbnQpKQogI2VuZGlmCi0gICAgLCBtX2RlcHJl
Y2F0ZWRTdHlsZUJ1aWxkZXIoRGVwcmVjYXRlZFN0eWxlQnVpbGRlcjo6c2hhcmVkU3R5bGVCdWls
ZGVyKCkpCiAgICAgLCBtX3N0eWxlTWFwKHRoaXMpCiB7CiAgICAgRWxlbWVudCogcm9vdCA9IG1f
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7CkBAIC0xMTgyLDcgKzExODAsNyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFkanVzdFN0eWxlRm9yTWFza0ltYWdlcygpCiAgICAgICAgIC8vIFRyeSB0
byBtYXRjaCB0aGUgbmV3IG1hc2sgb2JqZWN0cyB0aHJvdWdoIHRoZSBsaXN0IGZyb20gdGhlIG9s
ZCBzdHlsZS4KICAgICAgICAgLy8gVGhpcyBzaG91bGQgd29yayBwZXJmZWN0bHkgYW5kIG9wdGlt
YWwgd2hlbiB0aGUgbGlzdCBvZiBtYXNrcyByZW1haW5lZAogICAgICAgICAvLyB0aGUgc2FtZSBh
bmQgYWxzbyB3b3JrIGNvcnJlY3RseSAoYnV0IHNsb3dlcikgd2hlbiB0aGV5IHdlcmUgcmVvcmRl
cmVkLgotICAgICAgICBGaWxsTGF5ZXIqIG5ld01hc2tMYXllciA9IG5ld1N0eWxlLT5hY2Nlc3NN
YXNrTGF5ZXJzKCk7CisgICAgICAgIEZpbGxMYXllciogbmV3TWFza0xheWVyID0gJm5ld1N0eWxl
LT5lbnN1cmVNYXNrTGF5ZXJzKCk7CiAgICAgICAgIGludCBjb3VudE9sZFN0eWxlTWFza0ltYWdl
cyA9IG9sZFN0eWxlTWFza0ltYWdlcy5zaXplKCk7CiAgICAgICAgIHdoaWxlIChuZXdNYXNrTGF5
ZXIgJiYgY291bnRPbGRTdHlsZU1hc2tJbWFnZXMpIHsKICAgICAgICAgICAgIFJlZlB0cjxNYXNr
SW1hZ2VPcGVyYXRpb24+IG5ld01hc2tJbWFnZSA9IG5ld01hc2tMYXllci0+bWFza0ltYWdlKCk7
CkBAIC0yMTgxLDE5ICsyMTc5LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5
KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBpZiAoaXNJbmhlcml0ICYm
ICFzdGF0ZS5wYXJlbnRTdHlsZSgpLT5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygp
ICYmICFDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAgIHN0YXRl
LnBhcmVudFN0eWxlKCktPnNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7CiAK
LSAgICAvLyBDaGVjayBsb29rdXAgdGFibGUgZm9yIGltcGxlbWVudGF0aW9ucyBhbmQgdXNlIHdo
ZW4gYXZhaWxhYmxlLgotICAgIGNvbnN0IFByb3BlcnR5SGFuZGxlciYgaGFuZGxlciA9IG1fZGVw
cmVjYXRlZFN0eWxlQnVpbGRlci5wcm9wZXJ0eUhhbmRsZXIoaWQpOwotICAgIGlmIChoYW5kbGVy
LmlzVmFsaWQoKSkgewotICAgICAgICBpZiAoaXNJbmhlcml0KQotICAgICAgICAgICAgaGFuZGxl
ci5hcHBseUluaGVyaXRWYWx1ZShpZCwgdGhpcyk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlh
bCkKLSAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlJbml0aWFsVmFsdWUoaWQsIHRoaXMpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBoYW5kbGVyLmFwcGx5VmFsdWUoaWQsIHRoaXMsIHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFVzZSB0aGUgbmV3IFN0eWxlQnVp
bGRlci4KKyAgICAvLyBVc2UgdGhlIFN0eWxlQnVpbGRlci4KICAgICBpZiAoU3R5bGVCdWlsZGVy
OjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlLCBpc0luaXRpYWwsIGlzSW5oZXJpdCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMjgxNCw3ICsyODAwLDcgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICB9CiAjZW5kaWYKICAgICAKLSAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBhbGlhc2VkIGFu
ZCBEZXByZWNhdGVkU3R5bGVCdWlsZGVyIGFscmVhZHkgYXBwbGllZCB0aGUgcHJvcGVydHkgb24g
dGhlIHByZWZpeGVkIHZlcnNpb24uCisgICAgLy8gVGhlc2UgcHJvcGVydGllcyBhcmUgYWxpYXNl
ZCBhbmQgU3R5bGVCdWlsZGVyIGFscmVhZHkgYXBwbGllZCB0aGUgcHJvcGVydHkgb24gdGhlIHBy
ZWZpeGVkIHZlcnNpb24uCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRlbGF5OgogICAg
IGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eUFuaW1hdGlvbkR1cmF0aW9uOgpAQCAtMjgyOCw3ICsyODE0LDcgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5OgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246CiAgICAgICAgIHJldHVybjsKLSAgICAvLyBUaGVz
ZSBwcm9wZXJ0aWVzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgRGVwcmVjYXRlZFN0eWxlQnVpbGRl
ciBsb29rdXAgdGFibGUgb3IgaW4gdGhlIG5ldyBTdHlsZUJ1aWxkZXIuCisgICAgLy8gVGhlc2Ug
cHJvcGVydGllcyBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIFN0eWxlQnVpbGRlciBsb29rdXAgdGFi
bGUgb3IgaW4gdGhlIG5ldyBTdHlsZUJ1aWxkZXIuCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRBdHRhY2htZW50OgogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKICAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgpAQCAtMzY2MCw3ICszNjQ2LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ0ltYWdlcygpCiAKICAgICAgICAgc3dpdGNo
IChjdXJyZW50UHJvcGVydHkpIHsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJ
bWFnZTogewotICAgICAgICAgICAgZm9yIChGaWxsTGF5ZXIqIGJhY2tncm91bmRMYXllciA9IG1f
c3RhdGUuc3R5bGUoKS0+YWNjZXNzQmFja2dyb3VuZExheWVycygpOyBiYWNrZ3JvdW5kTGF5ZXI7
IGJhY2tncm91bmRMYXllciA9IGJhY2tncm91bmRMYXllci0+bmV4dCgpKSB7CisgICAgICAgICAg
ICBmb3IgKEZpbGxMYXllciogYmFja2dyb3VuZExheWVyID0gJm1fc3RhdGUuc3R5bGUoKS0+ZW5z
dXJlQmFja2dyb3VuZExheWVycygpOyBiYWNrZ3JvdW5kTGF5ZXI7IGJhY2tncm91bmRMYXllciA9
IGJhY2tncm91bmRMYXllci0+bmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogc3R5bGVJ
bWFnZSA9IGJhY2tncm91bmRMYXllci0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8
U3R5bGVQZW5kaW5nSW1hZ2U+KHN0eWxlSW1hZ2UpKQogICAgICAgICAgICAgICAgICAgICBiYWNr
Z3JvdW5kTGF5ZXItPnNldEltYWdlKGxvYWRQZW5kaW5nSW1hZ2UoZG93bmNhc3Q8U3R5bGVQZW5k
aW5nSW1hZ2U+KCpzdHlsZUltYWdlKSkpOwpAQCAtMzcyMCw3ICszNzA2LDcgQEAgdm9pZCBTdHls
ZVJlc29sdmVyOjpsb2FkUGVuZGluZ0ltYWdlcygpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOiB7Ci0gICAgICAg
ICAgICBmb3IgKEZpbGxMYXllciogbWFza0xheWVyID0gbV9zdGF0ZS5zdHlsZSgpLT5hY2Nlc3NN
YXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5uZXh0KCkpIHsK
KyAgICAgICAgICAgIGZvciAoRmlsbExheWVyKiBtYXNrTGF5ZXIgPSAmbV9zdGF0ZS5zdHlsZSgp
LT5lbnN1cmVNYXNrTGF5ZXJzKCk7IG1hc2tMYXllcjsgbWFza0xheWVyID0gbWFza0xheWVyLT5u
ZXh0KCkpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8TWFza0ltYWdlT3BlcmF0aW9uPiBtYXNr
SW1hZ2UgPSBtYXNrTGF5ZXItPm1hc2tJbWFnZSgpOwogICAgICAgICAgICAgICAgIGF1dG8qIHN0
eWxlSW1hZ2UgPSBtYXNrSW1hZ2UuZ2V0KCkgPyBtYXNrSW1hZ2UtPmltYWdlKCkgOiBudWxscHRy
OwogICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZVBlbmRpbmdJbWFnZT4oc3R5bGVJbWFnZSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBkODg2NzhlMDY3MzE0OWNkNjA2MGIy
NzhlOWExNzhjNzFmYTc2YjAwLi4wZDZhNTc3ZWE2NzMwM2QyOWU5MTRlNGY3MDdlMjA1M2MzMzBl
YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTY0LDcgKzY0LDYgQEAgY2xh
c3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgQ29udGFpbmVyTm9kZTsK
IGNsYXNzIERvY3VtZW50OwotY2xhc3MgRGVwcmVjYXRlZFN0eWxlQnVpbGRlcjsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKQEAgLTUzMywxNCArNTMyLDEx
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFZpZXdwb3J0U3R5bGVSZXNvbHZlcj4gbV92aWV3cG9y
dFN0eWxlUmVzb2x2ZXI7CiAjZW5kaWYKIAotICAgIGNvbnN0IERlcHJlY2F0ZWRTdHlsZUJ1aWxk
ZXImIG1fZGVwcmVjYXRlZFN0eWxlQnVpbGRlcjsKLQogICAgIENTU1RvU3R5bGVNYXAgbV9zdHls
ZU1hcDsKICAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVy
czsKIAogICAgIFN0YXRlIG1fc3RhdGU7CiAKLSAgICBmcmllbmQgY2xhc3MgRGVwcmVjYXRlZFN0
eWxlQnVpbGRlcjsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdGNoZWRQcm9w
ZXJ0aWVzJiwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmKTsKICAgICBmcmllbmQgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMm
KTsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdGNoUmFuZ2VzJiwgY29uc3Qg
TWF0Y2hSYW5nZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5w
bCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCBjYjQxZWIwYjVhODRkMzBi
ZjY4OTMwOGExYmY0MDBkOWZhOGU2MGNjLi43NDExYTE4YjExYzUxZTk4YWE2NzBlNTU4NjY2ODgw
ZWE1YTQ1ZDQ3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC00Nyw2ICs0Nyw3IEBAIG15ICVz
dHlsZUJ1aWxkZXJPcHRpb25zID0gKAogICBBdXRvRnVuY3Rpb25zID0+IDEsCiAgIENvbnZlcnRl
ciA9PiAxLAogICBDdXN0b20gPT4gMSwKKyAgRmlsbExheWVyUHJvcGVydHkgPT4gMSwKICAgRm9u
dFByb3BlcnR5ID0+IDEsCiAgIEdldHRlciA9PiAxLAogICBJbml0aWFsID0+IDEsCkBAIC0zNzQs
NyArMzc1LDcgQEAgc3ViIGdldFZpc2l0ZWRMaW5rU2V0dGVyIHsKICAgcmV0dXJuICRyZW5kZXJT
dHlsZSAuICItPnNldFZpc2l0ZWRMaW5rIiAuIGdldE5hbWVGb3JNZXRob2RzKCRuYW1lKTsKIH0K
IAotc3ViIGdldEFuaW1hdGlvbkNsZWFyTWV0aG9kIHsKK3N1YiBnZXRDbGVhckZ1bmN0aW9uIHsK
ICAgbXkgJG5hbWUgPSBzaGlmdDsKIAogICByZXR1cm4gImNsZWFyIiAuIGdldE5hbWVGb3JNZXRo
b2RzKCRuYW1lKTsKQEAgLTM5Niw3ICszOTcsNyBAQCBzdWIgZ2V0QW5pbWF0aW9uc09yVHJhbnNp
dGlvbnNNZXRob2QgewogICBkaWUgIlVucmVjb2duaXplZCBhbmltYXRpb24gcHJvcGVydHkgbmFt
ZS4iOwogfQogCi1zdWIgZ2V0QW5pbWF0aW9uVGVzdE1ldGhvZCB7CitzdWIgZ2V0VGVzdEZ1bmN0
aW9uIHsKICAgbXkgJG5hbWUgPSBzaGlmdDsKIAogICByZXR1cm4gImlzIiAuIGdldE5hbWVGb3JN
ZXRob2RzKCRuYW1lKSAuICJTZXQiOwpAQCAtNDA4LDYgKzQwOSwzNiBAQCBzdWIgZ2V0QW5pbWF0
aW9uTWFwZnVuY3Rpb24gewogICByZXR1cm4gIm1hcEFuaW1hdGlvbiIgLiBnZXROYW1lRm9yTWV0
aG9kcygkbmFtZSk7CiB9CiAKK3N1YiBnZXRMYXllcnNGdW5jdGlvbiB7CisgIG15ICRuYW1lID0g
c2hpZnQ7CisKKyAgcmV0dXJuICJiYWNrZ3JvdW5kTGF5ZXJzIiBpZiAkbmFtZSA9fiAvYmFja2dy
b3VuZC0vOworICByZXR1cm4gIm1hc2tMYXllcnMiIGlmICRuYW1lID1+IC9tYXNrLS87CisgIGRp
ZSAiVW5yZWNvZ25pemVkIEZpbGxMYXllciBwcm9wZXJ0eSBuYW1lLiI7Cit9CisKK3N1YiBnZXRM
YXllcnNBY2Nlc3NvckZ1bmN0aW9uIHsKKyAgbXkgJG5hbWUgPSBzaGlmdDsKKworICByZXR1cm4g
ImVuc3VyZUJhY2tncm91bmRMYXllcnMiIGlmICRuYW1lID1+IC9iYWNrZ3JvdW5kLS87CisgIHJl
dHVybiAiZW5zdXJlTWFza0xheWVycyIgaWYgJG5hbWUgPX4gL21hc2stLzsKKyAgZGllICJVbnJl
Y29nbml6ZWQgRmlsbExheWVyIHByb3BlcnR5IG5hbWUuIjsKK30KKworc3ViIGdldEZpbGxMYXll
clR5cGUgeworbXkgJG5hbWUgPSBzaGlmdDsKKworICByZXR1cm4gIkJhY2tncm91bmRGaWxsTGF5
ZXIiIGlmICRuYW1lID1+IC9iYWNrZ3JvdW5kLS87CisgIHJldHVybiAiTWFza0ZpbGxMYXllciIg
aWYgJG5hbWUgPX4gL21hc2stLzsKK30KKworc3ViIGdldEZpbGxMYXllck1hcGZ1bmN0aW9uIHsK
KyAgbXkgJG5hbWUgPSBzaGlmdDsKKworICByZXR1cm4gIm1hcEZpbGwiIC4gZ2V0TmFtZUZvck1l
dGhvZHMoJG5hbWUpOworfQorCisKIGZvcmVhY2ggbXkgJG5hbWUgKEBuYW1lcykgewogICAjIFNr
aXAgcHJvcGVydGllcyBzdGlsbCB1c2luZyB0aGUgbGVnYWN5IHN0eWxlIGJ1aWxkZXIuCiAgIG5l
eHQgdW5sZXNzIGV4aXN0cygkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1l
fSk7CkBAIC00MjgsNyArNDU5LDExIEBAIGZvcmVhY2ggbXkgJG5hbWUgKEBuYW1lcykgewogICAg
ICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJTZXR0ZXIifSA9ICJz
ZXQiIC4gJG5hbWVGb3JNZXRob2RzOwogICB9CiAgIGlmICghZXhpc3RzKCRwcm9wZXJ0aWVzV2l0
aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJJbml0aWFsIn0pKSB7Ci0gICAgJHByb3BlcnRp
ZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17IkluaXRpYWwifSA9ICJpbml0aWFsIiAu
ICRuYW1lRm9yTWV0aG9kczsKKyAgICBpZiAoZXhpc3RzKCRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVp
bGRlck9wdGlvbnN7JG5hbWV9eyJGaWxsTGF5ZXJQcm9wZXJ0eSJ9KSkgeworICAgICAgJHByb3Bl
cnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17IkluaXRpYWwifSA9ICJpbml0aWFs
RmlsbCIgLiAkbmFtZUZvck1ldGhvZHM7CisgICAgfSBlbHNlIHsKKyAgICAgICRwcm9wZXJ0aWVz
V2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJJbml0aWFsIn0gPSAiaW5pdGlhbCIgLiAk
bmFtZUZvck1ldGhvZHM7CisgICAgfQogICB9CiAgIGlmICghZXhpc3RzKCRwcm9wZXJ0aWVzV2l0
aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJDdXN0b20ifSkpIHsKICAgICAkcHJvcGVydGll
c1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiQ3VzdG9tIn0gPSAiIjsKQEAgLTUwMSw3
ICs1MzYsNyBAQCBzdWIgZ2VuZXJhdGVBbmltYXRpb25Qcm9wZXJ0eUluaXRpYWxWYWx1ZVNldHRl
ciB7CiAgICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJsaXN0LmFuaW1hdGlvbigwKS5z
ZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7XG4iOwogICB9CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yIChzaXplX3QgaSA9IDE7IGkgPCBsaXN0LnNpemUo
KTsgKytpKVxuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgbGlzdC5hbmlt
YXRpb24oaSkuIiAuIGdldEFuaW1hdGlvbkNsZWFyTWV0aG9kKCRuYW1lKSAuICIoKTtcbiI7Cisg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGxpc3QuYW5pbWF0aW9uKGkpLiIgLiBn
ZXRDbGVhckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAKICAgcmV0dXJuICRzZXR0ZXJDb250
ZW50OwogfQpAQCAtNTE0LDcgKzU0OSw3IEBAIHN1YiBnZW5lcmF0ZUFuaW1hdGlvblByb3BlcnR5
SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJBbmlt
YXRpb25MaXN0JiBsaXN0ID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0RW5zdXJlQW5p
bWF0aW9uc09yVHJhbnNpdGlvbnNNZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gc3R5
bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT4iIC4gZ2V0QW5pbWF0aW9uc09yVHJhbnNpdGlvbnNN
ZXRob2QoJG5hbWUpIC4gIigpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJz
aXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgp
IDogMDtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yICggOyBpIDwgcGFy
ZW50U2l6ZSAmJiBwYXJlbnRMaXN0LT5hbmltYXRpb24oaSkuIiAuIGdldEFuaW1hdGlvblRlc3RN
ZXRob2QoJG5hbWUpIC4gIigpOyArK2kpIHtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiZm9yICggOyBpIDwgcGFyZW50U2l6ZSAmJiBwYXJlbnRMaXN0LT5hbmltYXRpb24oaSku
IiAuIGdldFRlc3RGdW5jdGlvbigkbmFtZSkgLiAiKCk7ICsraSkge1xuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKGxpc3Quc2l6ZSgpIDw9IGkpXG4iOwogICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgbGlzdC5hcHBlbmQoQW5pbWF0aW9uOjpj
cmVhdGUoKSk7XG4iOwogICBteSAkZ2V0dGVyID0gJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVy
T3B0aW9uc3skbmFtZX17IkdldHRlciJ9OwpAQCAtNTI1LDcgKzU2MCw3IEBAIHN1YiBnZW5lcmF0
ZUFuaW1hdGlvblByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQg
Lj0gIlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIvKiBSZXNldCBhbnkgcmVt
YWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi9cbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yICggOyBpIDwgbGlzdC5zaXplKCk7ICsr
aSlcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGxpc3QuYW5pbWF0aW9u
KGkpLiIgLiBnZXRBbmltYXRpb25DbGVhck1ldGhvZCgkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBsaXN0LmFuaW1hdGlvbihpKS4iIC4gZ2V0Q2xl
YXJGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOwogCiAgIHJldHVybiAkc2V0dGVyQ29udGVudDsK
IH0KQEAgLTU1MywxMiArNTg4LDEwMSBAQCBzdWIgZ2VuZXJhdGVBbmltYXRpb25Qcm9wZXJ0eVZh
bHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJ9XG4iOwogICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoIDsgY2hpbGRJbmRleCA8IGxpc3Quc2l6ZSgp
OyArK2NoaWxkSW5kZXgpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAg
IC8qIFJlc2V0IGFsbCByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVy
dHkgc2V0LiAqL1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgbGlzdC5h
bmltYXRpb24oY2hpbGRJbmRleCkuIiAuIGdldEFuaW1hdGlvbkNsZWFyTWV0aG9kKCRuYW1lKSAu
ICIoKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGxpc3QuYW5pbWF0
aW9uKGNoaWxkSW5kZXgpLiIgLiBnZXRDbGVhckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAifVxuIjsKIAogICByZXR1cm4gJHNldHRlckNv
bnRlbnQ7CiB9CiAKK3N1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5pdGlhbFZhbHVlU2V0
dGVyIHsKKyAgbXkgJG5hbWUgPSBzaGlmdDsKKyAgbXkgJGluZGVudCA9IHNoaWZ0OworCisgIG15
ICRnZXR0ZXIgPSAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiR2V0
dGVyIn07CisgIG15ICRzZXR0ZXIgPSAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25z
eyRuYW1lfXsiU2V0dGVyIn07CisgIG15ICRjbGVhckZ1bmN0aW9uID0gZ2V0Q2xlYXJGdW5jdGlv
bigkbmFtZSk7CisgIG15ICR0ZXN0RnVuY3Rpb24gPSBnZXRUZXN0RnVuY3Rpb24oJG5hbWUpOwor
ICBteSAkaW5pdGlhbCA9ICJGaWxsTGF5ZXI6OiIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxk
ZXJPcHRpb25zeyRuYW1lfXsiSW5pdGlhbCJ9IC4gIigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFt
ZSkgLiAiKSI7CisKKyAgbXkgJHNldHRlckNvbnRlbnQgPSAiIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIvLyBDaGVjayBmb3IgKHNpbmdsZS1sYXllcikgbm8tb3AgYmVmb3JlIGNs
ZWFyaW5nIGFueXRoaW5nLlxuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJjb25z
dCBGaWxsTGF5ZXImIGxheWVycyA9ICpzdHlsZVJlc29sdmVyLnN0eWxlKCktPiIgLiBnZXRMYXll
cnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gImlmICghbGF5ZXJzLm5leHQoKSAmJiAoIWxheWVycy4iIC4gJHRlc3RGdW5jdGlvbiAuICIo
KSB8fCBsYXllcnMuIiAuICRnZXR0ZXIgLiAiKCkgPT0gJGluaXRpYWwpKVxuIjsKKyAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gIlxuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIqIGNoaWxk
ID0gJnN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+IiAuIGdldExheWVyc0FjY2Vzc29yRnVuY3Rpb24o
JG5hbWUpIC4gIigpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJjaGlsZC0+
IiAuICRzZXR0ZXIgLiAiKCIgLiAkaW5pdGlhbCAuICIpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICJmb3IgKGNoaWxkID0gY2hpbGQtPm5leHQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHQoKSlcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGNo
aWxkLT4iIC4gJGNsZWFyRnVuY3Rpb24gLiAiKCk7XG4iOworCisgIHJldHVybiAkc2V0dGVyQ29u
dGVudDsKK30KKworc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0
ZXIgeworICBteSAkbmFtZSA9IHNoaWZ0OworICBteSAkaW5kZW50ID0gc2hpZnQ7CisKKyAgbXkg
JGdldHRlciA9ICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJHZXR0
ZXIifTsKKyAgbXkgJHNldHRlciA9ICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7
JG5hbWV9eyJTZXR0ZXIifTsKKyAgbXkgJGNsZWFyRnVuY3Rpb24gPSBnZXRDbGVhckZ1bmN0aW9u
KCRuYW1lKTsKKyAgbXkgJHRlc3RGdW5jdGlvbiA9IGdldFRlc3RGdW5jdGlvbigkbmFtZSk7CisK
KyAgbXkgJHNldHRlckNvbnRlbnQgPSAiIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICIvLyBDaGVjayBmb3Igbm8tb3AgYmVmb3JlIGNvcHlpbmcgYW55dGhpbmcuXG4iOworICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImlmICgqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgp
LT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4iKCkgPT0gKnN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKSlcbiI7CisgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgIHJldHVybjtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49
ICJcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiYXV0byogY2hpbGQgPSAmc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNzb3JGdW5jdGlvbigkbmFtZSkg
LiAiKCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogcHJl
dmlvdXNDaGlsZCA9IG51bGxwdHI7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
ImZvciAoYXV0byogcGFyZW50ID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT4iIC4gZ2V0
TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBwYXJlbnQgJiYgcGFyZW50LT4iIC4gJHRlc3RG
dW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50LT5uZXh0KCkpIHtcbiI7CisgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmICghY2hpbGQpIHtcbiI7CisgICRzZXR0ZXJDb250
ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KHN0ZDo6bWFr
ZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4i
OworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgY2hpbGQgPSBwcmV2aW91
c0NoaWxkLT5uZXh0KCk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICB9
XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBjaGlsZC0+IiAuICRzZXR0
ZXIgLiAiKHBhcmVudC0+IiAuICRnZXR0ZXIgLiAiKCkpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgcHJldmlvdXNDaGlsZCA9IGNoaWxkO1xuIjsKKyAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIgICAgY2hpbGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7XG4i
OworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIn1cbiI7CisgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiZm9yICg7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0KCkpXG4iOwor
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBjaGlsZC0+IiAuICRjbGVhckZ1bmN0
aW9uIC4gIigpO1xuIjsKKworICByZXR1cm4gJHNldHRlckNvbnRlbnQ7Cit9CisKK3N1YiBnZW5l
cmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIgeworICBteSAkbmFtZSA9IHNoaWZ0Owor
ICBteSAkaW5kZW50ID0gc2hpZnQ7CisKKyAgbXkgJENTU1Byb3BlcnR5SWQgPSAiQ1NTUHJvcGVy
dHkiIC4gJG5hbWVUb0lkeyRuYW1lfTsKKworICBteSAkc2V0dGVyQ29udGVudCA9ICIiOworICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogY2hpbGQgPSAmc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzQWNjZXNzb3JGdW5jdGlvbigkbmFtZSkgLiAiKCk7
XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogcHJldmlvdXND
aGlsZCA9IG51bGxwdHI7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImlmIChp
czxDU1NWYWx1ZUxpc3Q+KHZhbHVlKVxuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gIiNpZiBFTkFC
TEUoQ1NTX0lNQUdFX1NFVClcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiJiYg
IWlzPENTU0ltYWdlU2V0VmFsdWU+KHZhbHVlKVxuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gIiNl
bmRpZlxuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIpIHtcbiI7CisgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0
IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuXG4iOworICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxD
U1NWYWx1ZUxpc3Q+KHZhbHVlKSkge1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICIgICAgICAgIGlmICghY2hpbGQpIHtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZp
bGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQt
Pm5leHQoKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICB9XG4i
OworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZU1hcCgpLT4iIC4gZ2V0RmlsbExheWVyTWFwZnVuY3Rpb24oJG5hbWUpIC4gIigiIC4gJENT
U1Byb3BlcnR5SWQgLiAiLCAqY2hpbGQsIGl0ZW0pO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hpbGQgPSBjaGlsZDtcbiI7CisgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0KCk7XG4iOwor
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICB9XG4iOworICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIn0gZWxzZSB7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICBzdHlsZVJlc29sdmVyLnN0eWxlTWFwKCktPiIgLiBnZXRGaWxsTGF5ZXJNYXBmdW5j
dGlvbigkbmFtZSkgLiAiKCIgLiAkQ1NTUHJvcGVydHlJZCAuICIsICpjaGlsZCwgdmFsdWUpO1xu
IjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgY2hpbGQgPSBjaGlsZC0+bmV4
dCgpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJ9XG4iOworICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gImZvciAoOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dCgp
KVxuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgY2hpbGQtPiIgLiBnZXRD
bGVhckZ1bmN0aW9uKCRuYW1lKSAuICIoKTtcbiI7CisKKyAgcmV0dXJuICRzZXR0ZXJDb250ZW50
OworfQorCiBzdWIgZ2VuZXJhdGVJbml0aWFsVmFsdWVTZXR0ZXIgewogICBteSAkbmFtZSA9IHNo
aWZ0OwogICBteSAkaW5kZW50ID0gc2hpZnQ7CkBAIC01ODAsNiArNzA0LDggQEAgc3ViIGdlbmVy
YXRlSW5pdGlhbFZhbHVlU2V0dGVyIHsKICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
IiAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci5mb250
RGVzY3JpcHRpb24oKTtcbiI7CiAgICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
Zm9udERlc2NyaXB0aW9uLiIgLiAkc2V0dGVyIC4gIihGb250RGVzY3JpcHRpb246OiIgLiAkaW5p
dGlhbCAuICIoKSk7XG4iOwogICAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIHN0
eWxlUmVzb2x2ZXIuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7XG4iOworICB9
IGVsc2lmIChleGlzdHMgJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17
IkZpbGxMYXllclByb3BlcnR5In0pIHsKKyAgICAkc2V0dGVyQ29udGVudCAuPSBnZW5lcmF0ZUZp
bGxMYXllclByb3BlcnR5SW5pdGlhbFZhbHVlU2V0dGVyKCRuYW1lLCAkaW5kZW50IC4gIiAgICAi
KTsKICAgfSBlbHNlIHsKICAgICBteSAkc2V0VmFsdWUgPSAkc3R5bGUgLiAiLT4iIC4gJHNldHRl
cjsKICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAiIC4gJHNldFZhbHVlIC4g
IihSZW5kZXJTdHlsZTo6IiAuICRpbml0aWFsIC4gIigpKTtcbiI7CkBAIC02MjIsNiArNzQ4LDkg
QEAgc3ViIGdlbmVyYXRlSW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgICAkc2V0dGVyQ29udGVudCAu
PSAkaW5kZW50IC4gIiAgICBmb250RGVzY3JpcHRpb24uIiAuICRzZXR0ZXIgLiAiKHN0eWxlUmVz
b2x2ZXIucGFyZW50Rm9udERlc2NyaXB0aW9uKCkuIiAuICRnZXR0ZXIgLiAiKCkpO1xuIjsKICAg
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBzdHlsZVJlc29sdmVyLnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pO1xuIjsKICAgICAkZGlkQ2FsbFNldFZhbHVlID0g
MTsKKyAgfSBlbHNpZiAoZXhpc3RzICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7
JG5hbWV9eyJGaWxsTGF5ZXJQcm9wZXJ0eSJ9KSB7CisgICAgJHNldHRlckNvbnRlbnQgLj0gZ2Vu
ZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcigkbmFtZSwgJGluZGVudCAu
ICIgICAgIik7CisgICAgJGRpZENhbGxTZXRWYWx1ZSA9IDE7CiAgIH0KICAgaWYgKCEkZGlkQ2Fs
bFNldFZhbHVlKSB7CiAgICAgbXkgJGluaGVyaXRlZFZhbHVlID0gJHBhcmVudFN0eWxlIC4gIi0+
IiAuICAkZ2V0dGVyIC4gIigpIjsKQEAgLTY3MSw2ICs4MDAsOSBAQCBzdWIgZ2VuZXJhdGVWYWx1
ZVNldHRlciB7CiAgICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgZm9udERlc2Ny
aXB0aW9uLiIgLiAkc2V0dGVyIC4gIigiIC4gJGNvbnZlcnRlZFZhbHVlIC4gIik7XG4iOwogICAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIHN0eWxlUmVzb2x2ZXIuc2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7XG4iOwogICAgICRkaWRDYWxsU2V0VmFsdWUgPSAx
OworICB9IGVsc2lmIChleGlzdHMgJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3sk
bmFtZX17IkZpbGxMYXllclByb3BlcnR5In0pIHsKKyAgICAkc2V0dGVyQ29udGVudCAuPSBnZW5l
cmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIoJG5hbWUsICRpbmRlbnQgLiAiICAgICIp
OworICAgICRkaWRDYWxsU2V0VmFsdWUgPSAxOwogICB9CiAgIGlmICghJGRpZENhbGxTZXRWYWx1
ZSkgewogICAgIG15ICRzZXRWYWx1ZSA9ICRzdHlsZSAuICItPiIgLiAkc2V0dGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwCmluZGV4IDM1NDM1NGYzN2IyNGJiZWNjODI4NDBhMzg3NTQzNDI1ZmQwZDk4YjguLjFkMTZl
ODZlOTA5ZDgzMDZmODk1ZGFiYmMxNjQ4NjMxN2NmMjhiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTky
MCw3ICs5MjAsNyBAQCBwdWJsaWM6CiBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDog
cHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewogcHVibGljOgogICAgIHR5cGVk
ZWYgY29uc3QgRmlsbExheWVyKiAoUmVuZGVyU3R5bGU6OipMYXllcnNHZXR0ZXIpKCkgY29uc3Q7
Ci0gICAgdHlwZWRlZiBGaWxsTGF5ZXIqIChSZW5kZXJTdHlsZTo6KkxheWVyc0FjY2Vzc29yKSgp
OworICAgIHR5cGVkZWYgRmlsbExheWVyJiAoUmVuZGVyU3R5bGU6OipMYXllcnNBY2Nlc3Nvciko
KTsKIAogICAgIEZpbGxMYXllcnNQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wLCBM
YXllcnNHZXR0ZXIgZ2V0dGVyLCBMYXllcnNBY2Nlc3NvciBhY2Nlc3NvcikKICAgICAgICAgOiBB
bmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCkBAIC05NjksNyArOTY5LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgY29uc3QgRmlsbExheWVyKiBhTGF5ZXIgPSAoYS0+Km1fbGF5
ZXJzR2V0dGVyKSgpOwogICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGJMYXllciA9IChiLT4qbV9s
YXllcnNHZXR0ZXIpKCk7Ci0gICAgICAgIEZpbGxMYXllciogZHN0TGF5ZXIgPSAoZHN0LT4qbV9s
YXllcnNBY2Nlc3NvcikoKTsKKyAgICAgICAgRmlsbExheWVyKiBkc3RMYXllciA9ICYoZHN0LT4q
bV9sYXllcnNBY2Nlc3NvcikoKTsKIAogICAgICAgICB3aGlsZSAoYUxheWVyICYmIGJMYXllciAm
JiBkc3RMYXllcikgewogICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXItPmJs
ZW5kKGFuaW0sIGRzdExheWVyLCBhTGF5ZXIsIGJMYXllciwgcHJvZ3Jlc3MpOwpAQCAtMTE4OCw3
ICsxMTg4LDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFu
aW1hdGlvbldyYXBwZXJNYXAoKQogCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVk
QWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgJlJlbmRlclN0eWxlOjpi
YWNrZ3JvdW5kQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0QmFja2dyb3VuZENvbG9yLCAmUmVuZGVy
U3R5bGU6OnZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0
ZWRMaW5rQmFja2dyb3VuZENvbG9yKSwKIAotICAgICAgICBuZXcgRmlsbExheWVyc1Byb3BlcnR5
V3JhcHBlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgJlJlbmRlclN0eWxlOjpiYWNrZ3Jv
dW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMpLAorICAgICAg
ICBuZXcgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFn
ZSwgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmVuc3VyZUJh
Y2tncm91bmRMYXllcnMpLAogICAgICAgICBuZXcgU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcihD
U1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCAmUmVuZGVyU3R5bGU6Omxpc3RTdHlsZUltYWdlLCAm
UmVuZGVyU3R5bGU6OnNldExpc3RTdHlsZUltYWdlKSwKICAgICAgICAgbmV3IE1hc2tJbWFnZVBy
b3BlcnR5V3JhcHBlcigpLAogCkBAIC0xMjAwLDE0ICsxMjAwLDE0IEBAIENTU1Byb3BlcnR5QW5p
bWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkKICAgICAg
ICAgbmV3IFN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2VTb3VyY2UsICZSZW5kZXJTdHlsZTo6bWFza0JveEltYWdlU291cmNlLCAmUmVuZGVyU3R5
bGU6OnNldE1hc2tCb3hJbWFnZVNvdXJjZSksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8
Y29uc3QgTmluZVBpZWNlSW1hZ2UmPihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgJlJl
bmRlclN0eWxlOjptYXNrQm94SW1hZ2UsICZSZW5kZXJTdHlsZTo6c2V0TWFza0JveEltYWdlKSwK
IAotICAgICAgICBuZXcgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblgsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJlJlbmRlclN0
eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzKSwKLSAgICAgICAgbmV3IEZpbGxMYXllcnNQcm9w
ZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCAmUmVuZGVyU3R5bGU6
OmJhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycyks
Ci0gICAgICAgIG5ldyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5QmFja2dy
b3VuZFNpemUsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjph
Y2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzKSwKLSAgICAgICAgbmV3IEZpbGxMYXllcnNQcm9wZXJ0eVdy
YXBwZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSwgJlJlbmRlclN0eWxlOjpiYWNr
Z3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMpLAorICAg
ICAgICBuZXcgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvblgsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpl
bnN1cmVCYWNrZ3JvdW5kTGF5ZXJzKSwKKyAgICAgICAgbmV3IEZpbGxMYXllcnNQcm9wZXJ0eVdy
YXBwZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCAmUmVuZGVyU3R5bGU6OmJhY2tn
cm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6ZW5zdXJlQmFja2dyb3VuZExheWVycyksCisgICAg
ICAgIG5ldyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFNp
emUsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjplbnN1cmVC
YWNrZ3JvdW5kTGF5ZXJzKSwKKyAgICAgICAgbmV3IEZpbGxMYXllcnNQcm9wZXJ0eVdyYXBwZXIo
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSwgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5k
TGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmVuc3VyZUJhY2tncm91bmRMYXllcnMpLAogCi0gICAgICAg
IG5ldyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uWCwgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tM
YXllcnMpLAotICAgICAgICBuZXcgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblksICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJlJlbmRlclN0
eWxlOjphY2Nlc3NNYXNrTGF5ZXJzKSwKLSAgICAgICAgbmV3IEZpbGxMYXllcnNQcm9wZXJ0eVdy
YXBwZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJz
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMpLAorICAgICAgICBuZXcgRmlsbExheWVy
c1Byb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsICZSZW5kZXJT
dHlsZTo6bWFza0xheWVycywgJlJlbmRlclN0eWxlOjplbnN1cmVNYXNrTGF5ZXJzKSwKKyAgICAg
ICAgbmV3IEZpbGxMYXllcnNQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25ZLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6ZW5zdXJlTWFz
a0xheWVycyksCisgICAgICAgIG5ldyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyKENTU1Byb3Bl
cnR5V2Via2l0TWFza1NpemUsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJlJlbmRlclN0eWxl
OjplbnN1cmVNYXNrTGF5ZXJzKSwKIAogICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0
PihDU1NQcm9wZXJ0eUZvbnRTaXplLAogICAgICAgICAgICAgLy8gTXVzdCBwYXNzIGEgc3BlY2lm
aWVkIHNpemUgdG8gc2V0Rm9udFNpemUgaWYgVGV4dCBBdXRvc2l6aW5nIGlzIGVuYWJsZWQsIGJ1
dCBhIGNvbXB1dGVkIHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxM
YXllci5jcHAKaW5kZXggNTU1ZTAyODAyYTc4OTljMjE4NDRjNjAxYjY2MTdlNzZlNjU1OTc3OS4u
ZmMxMTU5MzY1NGFhM2QxODAxNjBhYTBmYmJhNmQyYjY2OTBlOWFmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgRmls
bExheWVyOjpGaWxsTGF5ZXIoRUZpbGxMYXllclR5cGUgdHlwZSkKICAgICAsIG1fY29tcG9zaXRl
KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUodHlwZSkpCiAgICAgLCBtX3NpemVUeXBl
KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXplVHlwZSh0eXBlKSkKICAgICAsIG1fYmxlbmRNb2Rl
KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxCbGVuZE1vZGUodHlwZSkpCi0gICAgLCBtX21hc2tTb3Vy
Y2VUeXBlKEZpbGxMYXllcjo6aW5pdGlhbE1hc2tTb3VyY2VUeXBlKHR5cGUpKQorICAgICwgbV9t
YXNrU291cmNlVHlwZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsTWFza1NvdXJjZVR5cGUodHlwZSkp
CiAgICAgLCBtX2ltYWdlU2V0KGZhbHNlKQogICAgICwgbV9hdHRhY2htZW50U2V0KGZhbHNlKQog
ICAgICwgbV9jbGlwU2V0KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5oCmluZGV4IGE2Mzg1YTIwMDg1MWRhZDVkNTdmYjM4MjFlODEzZDNiZTAyZWFjM2Uu
LjJmODQwZjA1YzI3NWRhZTM4YmUyOGFiYzg2MDA5NTQ5ZDliNzFkZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsRmlsbFhQb3NpdGlvbihFRmlsbExheWVyVHlw
ZSkgeyByZXR1cm4gTGVuZ3RoKDAuMGYsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBp
bml0aWFsRmlsbFlQb3NpdGlvbihFRmlsbExheWVyVHlwZSkgeyByZXR1cm4gTGVuZ3RoKDAuMGYs
IFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2UqIGluaXRpYWxGaWxsSW1hZ2UoRUZp
bGxMYXllclR5cGUpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgRU1hc2tTb3VyY2VUeXBlIGlu
aXRpYWxNYXNrU291cmNlVHlwZShFRmlsbExheWVyVHlwZSkgeyByZXR1cm4gTWFza0FscGhhOyB9
CisgICAgc3RhdGljIEVNYXNrU291cmNlVHlwZSBpbml0aWFsRmlsbE1hc2tTb3VyY2VUeXBlKEVG
aWxsTGF5ZXJUeXBlKSB7IHJldHVybiBNYXNrQWxwaGE7IH0KIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgUmVuZGVyU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCmluZGV4IGY1ZDQ1YTZiYTI5OTM5NmM2OGVmOGFhMTRkNjJiY2MyNjYwYTRm
NWYuLjM2YTU3MGZlNmI2MmEyMmRhNWQwNTUwZDU0MTg4NmE5MWNhMDBhY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMjMsNyArMTIzLDYg
QEAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFJlbmRlclN0eWxlPiwgND4gUHNldWRvU3R5bGVDYWNo
ZTsKIGNsYXNzIFJlbmRlclN0eWxlOiBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJTdHlsZT4gewog
ICAgIGZyaWVuZCBjbGFzcyBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA7IC8vIFVzZWQg
YnkgQ1NTIGFuaW1hdGlvbnMuIFdlIGNhbid0IGFsbG93IHRoZW0gdG8gYW5pbWF0ZSBiYXNlZCBv
ZmYgdmlzaXRlZCBjb2xvcnMuCiAgICAgZnJpZW5kIGNsYXNzIEFwcGx5U3R5bGVDb21tYW5kOyAv
LyBFZGl0aW5nIGhhcyB0byBvbmx5IHJldmVhbCB1bnZpc2l0ZWQgaW5mby4KLSAgICBmcmllbmQg
Y2xhc3MgRGVwcmVjYXRlZFN0eWxlQnVpbGRlcjsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5Lgog
ICAgIGZyaWVuZCBjbGFzcyBFZGl0aW5nU3R5bGU7IC8vIEVkaXRpbmcgaGFzIHRvIG9ubHkgcmV2
ZWFsIHVudmlzaXRlZCBpbmZvLgogICAgIGZyaWVuZCBjbGFzcyBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOyAvLyBJZ25vcmVzIHZpc2l0ZWQgc3R5bGVzLCBzbyBuZWVkcyB0byBiZSBhYmxlIHRvIHNl
ZSB1bnZpc2l0ZWQgaW5mby4KICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlXcmFwcGVyTWF5YmVJ
bnZhbGlkQ29sb3I7IC8vIFVzZWQgYnkgQ1NTIGFuaW1hdGlvbnMuIFdlIGNhbid0IGFsbG93IHRo
ZW0gdG8gYW5pbWF0ZSBiYXNlZCBvZmYgdmlzaXRlZCBjb2xvcnMuCkBAIC03OTcsNyArNzk2LDcg
QEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aCYgYmFja2dyb3VuZFlQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnlQb3NpdGlvbigpOyB9CiAgICAg
RUZpbGxTaXplVHlwZSBiYWNrZ3JvdW5kU2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tn
cm91bmQtPmJhY2tncm91bmQoKS5zaXplVHlwZSgpOyB9CiAgICAgY29uc3QgTGVuZ3RoU2l6ZSYg
YmFja2dyb3VuZFNpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQtPmJhY2tn
cm91bmQoKS5zaXplTGVuZ3RoKCk7IH0KLSAgICBGaWxsTGF5ZXIqIGFjY2Vzc0JhY2tncm91bmRM
YXllcnMoKSB7IHJldHVybiAmKG1fYmFja2dyb3VuZC5hY2Nlc3MoKS0+bV9iYWNrZ3JvdW5kKTsg
fQorICAgIEZpbGxMYXllciYgZW5zdXJlQmFja2dyb3VuZExheWVycygpIHsgcmV0dXJuIG1fYmFj
a2dyb3VuZC5hY2Nlc3MoKS0+bV9iYWNrZ3JvdW5kOyB9CiAgICAgY29uc3QgRmlsbExheWVyKiBi
YWNrZ3JvdW5kTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gJihtX2JhY2tncm91bmQtPmJhY2tncm91
bmQoKSk7IH0KIAogICAgIEVGaWxsUmVwZWF0IG1hc2tSZXBlYXRYKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUZpbGxSZXBlYXQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sucmVw
ZWF0WCgpKTsgfQpAQCAtODA5LDcgKzgwOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgm
IG1hc2tZUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9t
YXNrLnlQb3NpdGlvbigpOyB9CiAgICAgRUZpbGxTaXplVHlwZSBtYXNrU2l6ZVR5cGUoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLnNpemVUeXBlKCk7IH0KICAg
ICBjb25zdCBMZW5ndGhTaXplJiBtYXNrU2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX21hc2suc2l6ZUxlbmd0aCgpOyB9Ci0gICAgRmlsbExheWVyKiBh
Y2Nlc3NNYXNrTGF5ZXJzKCkgeyByZXR1cm4gJihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9tYXNrKTsgfQorICAgIEZpbGxMYXllciYgZW5zdXJlTWFza0xheWVycygpIHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2s7IH0KICAgICBjb25zdCBGaWxs
TGF5ZXIqIG1hc2tMYXllcnMoKSBjb25zdCB7IHJldHVybiAmKHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX21hc2spOyB9CiAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG1hc2tCb3hJbWFnZSgpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZTsgfQogICAg
IFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZS5pbWFnZSgpOyB9CkBAIC0xMzY1LDggKzEzNjQs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGp1c3RCYWNrZ3JvdW5kTGF5ZXJzKCkKICAgICB7CiAg
ICAgICAgIGlmIChiYWNrZ3JvdW5kTGF5ZXJzKCktPm5leHQoKSkgewotICAgICAgICAgICAgYWNj
ZXNzQmFja2dyb3VuZExheWVycygpLT5jdWxsRW1wdHlMYXllcnMoKTsKLSAgICAgICAgICAgIGFj
Y2Vzc0JhY2tncm91bmRMYXllcnMoKS0+ZmlsbFVuc2V0UHJvcGVydGllcygpOworICAgICAgICAg
ICAgZW5zdXJlQmFja2dyb3VuZExheWVycygpLmN1bGxFbXB0eUxheWVycygpOworICAgICAgICAg
ICAgZW5zdXJlQmFja2dyb3VuZExheWVycygpLmZpbGxVbnNldFByb3BlcnRpZXMoKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMTM3Niw4ICsxMzc1LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRq
dXN0TWFza0xheWVycygpCiAgICAgewogICAgICAgICBpZiAobWFza0xheWVycygpLT5uZXh0KCkp
IHsKLSAgICAgICAgICAgIGFjY2Vzc01hc2tMYXllcnMoKS0+Y3VsbEVtcHR5TGF5ZXJzKCk7Ci0g
ICAgICAgICAgICBhY2Nlc3NNYXNrTGF5ZXJzKCktPmZpbGxVbnNldFByb3BlcnRpZXMoKTsKKyAg
ICAgICAgICAgIGVuc3VyZU1hc2tMYXllcnMoKS5jdWxsRW1wdHlMYXllcnMoKTsKKyAgICAgICAg
ICAgIGVuc3VyZU1hc2tMYXllcnMoKS5maWxsVW5zZXRQcm9wZXJ0aWVzKCk7CiAgICAgICAgIH0K
ICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>