<?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>232973</bug_id>
          
          <creation_ts>2021-11-10 17:08:08 -0800</creation_ts>
          <short_desc>[CF] Create a CFAllocator based on FastMalloc and use it wherever we can pass an allocator</short_desc>
          <delta_ts>2021-11-17 17:09:43 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813849</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-10 17:08:08 -0800</bug_when>
    <thetext>[CF] Create a CFAllocator based on FastMalloc and use it in bytesAsCFData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813868</commentid>
    <comment_count>1</comment_count>
      <attachid>443888</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-10 18:00:49 -0800</bug_when>
    <thetext>Created attachment 443888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813870</commentid>
    <comment_count>2</comment_count>
      <attachid>443889</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-10 18:06:36 -0800</bug_when>
    <thetext>Created attachment 443889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813871</commentid>
    <comment_count>3</comment_count>
      <attachid>443890</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-10 18:12:20 -0800</bug_when>
    <thetext>Created attachment 443890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814335</commentid>
    <comment_count>4</comment_count>
      <attachid>444035</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-11 19:01:00 -0800</bug_when>
    <thetext>Created attachment 444035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816230</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-17 17:09:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/85527538&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443888</attachid>
            <date>2021-11-10 18:00:49 -0800</date>
            <delta_ts>2021-11-10 18:20:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232973-20211110180048.patch</filename>
            <type>text/plain</type>
            <size>10291</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFhNGE1NTdlZjZjNDUwMmNlMjY5NTJi
MzVmOWM1MDBiN2FjNzQyNjAuLmExNTlkMjc2ZDYwOTFiNDM3NzI0Yjc3MGYxMTZkYWJjOTI3Mzgz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTEtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtDRl0gQ3JlYXRlIGEgQ0ZBbGxvY2F0b3IgYmFzZWQgb24g
RmFzdE1hbGxvYyBhbmQgdXNlIGl0IGluIGJ5dGVzQXNDRkRhdGEKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjk3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuY3BwOgorICAg
ICAgICAoV1RGOjpmYXN0TWFsbG9jQ2hlY2tDb25zaXN0ZW5jeSk6IFJlbmFtZWQgZnJvbSBmYXN0
TWFsbG9jU2l6ZSwgc2luY2UgdGhpcworICAgICAgICBkZWZpbml0ZWx5IGRvZXMgbm90IHJldHVy
biBhbiBhY2N1cmF0ZSBzaXplLgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9jQ0ZBbGxvY2F0b3Ip
OiBBZGRlZC4gUmV0dXJucyBhIENGQWxsb2NhdG9yIHRoYXQgdXNlcyBmYXN0TWFsbG9jL2ZyZWUu
CisKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOiBSZW5hbWVkIGZhc3RNYWxsb2NTaXplIHRv
IGZhc3RNYWxsb2NDaGVja0NvbnNpc3RlbmN5LgorICAgICAgICBBZGRlZCBmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IuIFJlbW92ZWQgc29tZSB1bm5lZWRlZCBtZW1iZXJzIGZyb20gdGhlIHN0YWNrCisg
ICAgICAgIHNjb3BlIGNsYXNzZXMsIGFuZCB1c2VkICJ1c2luZyIgaW5zdGVhZCBvZiB0eXBlZGVm
LgorCisgICAgICAgICogd3RmL1ZhbHVlQ2hlY2suaDogVXNlIGZhc3RNYWxsb2NDaGVja0NvbnNp
c3RlbmN5LgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNwcDoKKyAgICAgICAgKFdU
Rjo6Ynl0ZXNBc0NGRGF0YSk6IFVzZSBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IuCisKIDIwMjEtMTEt
MTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDRl0gUmVkdWNl
IGR1cGxpY2F0aW9uIGFuZCB1bm5lZWRlZCBidWZmZXIgYWxsb2NhdGlvbnMgYW5kIGNvcHlpbmcg
aW4gVVJMIGNvZGUsIGFsc28gcmVtb3ZlIHVudXNlZCBtZXRob2RzIGFuZCBmdW5jdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwIGIvU291cmNlL1dURi93dGYv
RmFzdE1hbGxvYy5jcHAKaW5kZXggZjU2MGY1NmIwMmE4Yzk2MWUwY2ZmOTg4ZjQwODkyNDMxNzY5
ZTdmZC4uNDMyMWM1NzYzNTk2YmEyOWU4YjFmMGZkYjkxZjM2OWRlN2RjZWY0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmFz
dE1hbGxvYy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA1LCAy
MDA3LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6CkBAIC0zMSwxMCArMzEsMTQgQEAKIAogI2lmIE9T
KFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UKLSNpZiBIQVZFKFJFU09VUkNF
X0gpCisjZW5kaWYKKworI2lmICFPUyhXSU5ET1dTKSAmJiBIQVZFKFJFU09VUkNFX0gpCiAjaW5j
bHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jZW5kaWYgLy8gSEFWRShSRVNPVVJDRV9IKQorI2VuZGlm
CisKKyNpZiBVU0UoQ0YpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24u
aD4KICNlbmRpZgogCiAjaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKQEAgLTQ0LDEx
ICs0OCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1Nob3QuaD4KLQotI2lmIFBMQVRG
T1JNKENPQ09BKQotI2luY2x1ZGUgPG5vdGlmeS5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUFM
TE9DX0hFQVBfQlJFQUtET1dOKSAmJiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxub3RpZnku
aD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTI3Niw4ICsyNzksMTMgQEAgVHJ5TWFs
bG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pCiAgICAgcmV0
dXJuIHJlYWxsb2MocCwgbik7CiB9CiAKLXZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5
KCkgeyB9Ci12b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUZvclRoaXNUaHJlYWQoKSB7
IH0KK3ZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCkKK3sKK30KKwordm9pZCByZWxl
YXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlGb3JUaGlzVGhyZWFkKCkKK3sKK30KIAogRmFzdE1hbGxv
Y1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MoKQogewpAQCAtMjg1LDcgKzI5Myw3IEBA
IEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCkKICAgICByZXR1cm4g
c3RhdGlzdGljczsKIH0KIAotc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqIHApCiti
b29sIGZhc3RNYWxsb2NDaGVja0NvbnNpc3RlbmN5KGNvbnN0IHZvaWQqIHApCiB7CiAjaWYgT1Mo
REFSV0lOKQogICAgIHJldHVybiBtYWxsb2Nfc2l6ZShwKTsKQEAgLTI5Myw3ICszMDEsNyBAQCBz
aXplX3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9pZCogcCkKICAgICByZXR1cm4gX21zaXplKGNv
bnN0X2Nhc3Q8dm9pZCo+KHApKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHApOwotICAgIHJl
dHVybiAxOworICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CiAKQEAgLTMwNywxMSArMzE1LDE3
IEBAIHZvaWQgZmFzdERlY29tbWl0QWxpZ25lZE1lbW9yeSh2b2lkKiBwdHIsIHNpemVfdCBzaXpl
KQogICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdChwdHIsIHNpemUpOwogfQogCi12b2lkIGZhc3RF
bmFibGVNaW5pTW9kZSgpIHsgfQordm9pZCBmYXN0RW5hYmxlTWluaU1vZGUoKQoreworfQogCi12
b2lkIGZhc3REaXNhYmxlU2NhdmVuZ2VyKCkgeyB9Cit2b2lkIGZhc3REaXNhYmxlU2NhdmVuZ2Vy
KCkKK3sKK30KIAotdm9pZCBmYXN0TWFsbG9jRHVtcE1hbGxvY1N0YXRzKCkgeyB9Cit2b2lkIGZh
c3RNYWxsb2NEdW1wTWFsbG9jU3RhdHMoKQoreworfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApA
QCAtNTYyLDE3ICs1NzYsMTAgQEAgdm9pZCBmYXN0RnJlZSh2b2lkKiBvYmplY3QpCiAjZW5kaWYK
IH0KIAotc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqKQotewotICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGluY29ycmVjdDsgYmVzdCBmaXggaXMgcHJvYmFibHkgdG8gcmVtb3ZlIHRoaXMg
ZnVuY3Rpb24uCi0gICAgLy8gQ2FsbGVyIGN1cnJlbnRseSBhcmUgYWxsIHVzaW5nIHRoaXMgZm9y
IGFzc2VydGlvbiwgbm90IHRvIGFjdHVhbGx5IGNoZWNrCi0gICAgLy8gdGhlIHNpemUgb2YgdGhl
IGFsbG9jYXRpb24sIHNvIG1heWJlIHdlIGNhbiBjb21lIHVwIHdpdGggc29tZXRoaW5nIGZvciB0
aGF0LgotICAgIHJldHVybiAxOwotfQotCi1zaXplX3QgZmFzdE1hbGxvY0dvb2RTaXplKHNpemVf
dCBzaXplKQorYm9vbCBmYXN0TWFsbG9jQ2hlY2tDb25zaXN0ZW5jeShjb25zdCB2b2lkKikKIHsK
LSAgICByZXR1cm4gc2l6ZTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGZhbHNl
IGlmIHRoZSBwb2ludGVyIGlzIG5vdCBhIG1hbGxvYyBibG9jaywgb3Igd2Ugc2hvdWxkIHJlbW92
ZSB0aGlzIGZ1bmN0aW9uLgorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkKiBmYXN0QWxpZ25l
ZE1hbGxvYyhzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKQEAgLTY4NywzICs2OTQsMzEg
QEAgdm9pZCBmYXN0RGlzYWJsZVNjYXZlbmdlcigpCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2Vu
ZGlmIC8vIFVTRShTWVNURU1fTUFMTE9DKQorCisjaWYgVVNFKENGKQorCituYW1lc3BhY2UgV1RG
IHsKKworQ0ZBbGxvY2F0b3JSZWYgZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCkKK3sKKyAgICBzdGF0
aWMgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2UsIFsmXSB7CisgICAgICAgIENGQWxsb2NhdG9y
Q29udGV4dCBjb250ZXh0IHsgfTsKKyAgICAgICAgY29udGV4dC5hbGxvY2F0ZSA9IFtdIChDRklu
ZGV4IHNpemUsIENGT3B0aW9uRmxhZ3MsIHZvaWQqKSB7CisgICAgICAgICAgICByZXR1cm4gZmFz
dE1hbGxvYyhzaXplKTsKKyAgICAgICAgfTsKKyAgICAgICAgY29udGV4dC5yZWFsbG9jYXRlID0g
W10gKHZvaWQqIG9iamVjdCwgQ0ZJbmRleCBzaXplLCBDRk9wdGlvbkZsYWdzLCB2b2lkKikgewor
ICAgICAgICAgICAgcmV0dXJuIGZhc3RSZWFsbG9jKG9iamVjdCwgc2l6ZSk7CisgICAgICAgIH07
CisgICAgICAgIGNvbnRleHQuZGVhbGxvY2F0ZSA9IFtdICh2b2lkKiBvYmplY3QsIHZvaWQqKSB7
CisgICAgICAgICAgICBmYXN0RnJlZShvYmplY3QpOworICAgICAgICB9OworICAgICAgICBhbGxv
Y2F0b3IgPSBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JVc2VDb250ZXh0LCAmY29udGV4
dCk7CisgICAgfSk7CisgICAgcmV0dXJuIGFsbG9jYXRvcjsKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zh
c3RNYWxsb2MuaAppbmRleCAxMjY1MjY2ZDE5NWQxZjg4OWJhYjg3MDM1NDA2NGM3ODE3NmZmNGUz
Li43ZTMwYzY2MmEwNDFjNDlkNGYzMzFmMmU0ZmY3NTQ0NTFiZjE1Mzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxv
Yy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTI1LDYgKzI1LDEwIEBACiAjaW5jbHVkZSA8d3RmL0RlYnVnSGVhcC5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIFVTRShDRikKK3VzaW5nIENGQWxsb2NhdG9yUmVmID0g
Y29uc3Qgc3RydWN0IF9fQ0ZBbGxvY2F0b3IqOworI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewog
CiAvLyBUaGVyZSBhcmUgc2V2ZXJhbCBtYWxsb2MtcmVsYXRlZCBtYWNyb3MgdG8gYW5ub3RhdGUg
Y2xhc3MgLyBzdHJ1Y3QuIElmIHRoZXNlIGFubm90YXRpb25zIGFyZSBhdHRhY2hlZCwKQEAgLTEw
NywxMCArMTExLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RBbGlnbmVkTWFsbG9j
KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCkgUkVUVVJOU19OT04KIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkKiB0cnlGYXN0QWxpZ25lZE1hbGxvYyhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwog
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdEFsaWduZWRGcmVlKHZvaWQqKTsKIAotV1RGX0VY
UE9SVF9QUklWQVRFIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7Ci0KLS8vIEZJ
WE1FOiBUaGlzIGlzIG5vbi1oZWxwZnVsOyBmYXN0TWFsbG9jR29vZFNpemUgd2lsbCBiZSByZW1v
dmVkIHNvb24uCi1XVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZhc3RNYWxsb2NHb29kU2l6ZShz
aXplX3QpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZmFzdE1hbGxvY0NoZWNrQ29uc2lzdGVu
Y3koY29uc3Qgdm9pZCopOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWxlYXNlRmFzdE1h
bGxvY0ZyZWVNZW1vcnkoKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VGYXN0TWFs
bG9jRnJlZU1lbW9yeUZvclRoaXNUaHJlYWQoKTsKQEAgLTEyMiw2ICsxMjMsMTAgQEAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZmFzdEVuYWJsZU1pbmlNb2RlKCk7CiAKIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGZhc3REaXNhYmxlU2NhdmVuZ2VyKCk7CiAKKyNpZiBVU0UoQ0YpCitXVEZfRVhQ
T1JUX1BSSVZBVEUgQ0ZBbGxvY2F0b3JSZWYgZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCk7CisjZW5k
aWYKKwogY2xhc3MgRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3BlIHsKIHB1Ymxp
YzoKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMTI5LDEzICsxMzQsMTAgQEAgcHVibGljOgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSB+Rm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3Bl
KCk7CiAjZWxzZQogICAgIEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJlYWRTY29wZSgpID0g
ZGVmYXVsdDsKLSAgICB+Rm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3BlKCkgeyB9
CiAjZW5kaWYKIAogICAgIEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJlYWRTY29wZShjb25z
dCBGb3JiaWRNYWxsb2NVc2VGb3JDdXJyZW50VGhyZWFkU2NvcGUmKSA9IGRlbGV0ZTsKLSAgICBG
b3JiaWRNYWxsb2NVc2VGb3JDdXJyZW50VGhyZWFkU2NvcGUoRm9yYmlkTWFsbG9jVXNlRm9yQ3Vy
cmVudFRocmVhZFNjb3BlJiYpID0gZGVsZXRlOwogICAgIEZvcmJpZE1hbGxvY1VzZUZvckN1cnJl
bnRUaHJlYWRTY29wZSYgb3BlcmF0b3I9KGNvbnN0IEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRU
aHJlYWRTY29wZSYpID0gZGVsZXRlOwotICAgIEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJl
YWRTY29wZSYgb3BlcmF0b3I9KEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJlYWRTY29wZSYm
KSA9IGRlbGV0ZTsKIH07CiAKIGNsYXNzIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJy
ZW50VGhyZWFkU2NvcGUgewpAQCAtMTQ1LDEzICsxNDcsMTAgQEAgcHVibGljOgogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB+RGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRT
Y29wZSgpOwogI2Vsc2UKICAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRo
cmVhZFNjb3BlKCkgPSBkZWZhdWx0OwotICAgIH5EaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9y
Q3VycmVudFRocmVhZFNjb3BlKCkgeyB9CiAjZW5kaWYKIAogICAgIERpc2FibGVNYWxsb2NSZXN0
cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUoY29uc3QgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0
aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSYpID0gZGVsZXRlOwotICAgIERpc2FibGVNYWxsb2NS
ZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUoRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9u
c0ZvckN1cnJlbnRUaHJlYWRTY29wZSYmKSA9IGRlbGV0ZTsKICAgICBEaXNhYmxlTWFsbG9jUmVz
dHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlJiBvcGVyYXRvcj0oY29uc3QgRGlzYWJsZU1h
bGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSYpID0gZGVsZXRlOwotICAgIERp
c2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUmIG9wZXJhdG9yPShE
aXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlJiYpID0gZGVsZXRl
OwogfTsKIAogc3RydWN0IEZhc3RNYWxsb2NTdGF0aXN0aWNzIHsKQEAgLTE2NSw3ICsxNjQsNyBA
QCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBmYXN0TWFsbG9jRHVtcE1hbGxvY1N0YXRzKCk7CiAK
IC8vIFRoaXMgZGVmaW5lcyBhIHR5cGUgd2hpY2ggaG9sZHMgYW4gdW5zaWduZWQgaW50ZWdlciBh
bmQgaXMgdGhlIHNhbWUKIC8vIHNpemUgYXMgdGhlIG1pbmltYWxseSBhbGlnbmVkIG1lbW9yeSBh
bGxvY2F0aW9uLgotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQWxsb2NBbGlnbm1lbnRJbnRl
Z2VyOwordXNpbmcgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyID0gdW5zaWduZWQgbG9uZyBsb25nOwog
CiBpbmxpbmUgVHJ5TWFsbG9jUmV0dXJuVmFsdWU6OlRyeU1hbGxvY1JldHVyblZhbHVlKHZvaWQq
IGRhdGEpCiAgICAgOiBtX2RhdGEoZGF0YSkKQEAgLTI4Nyw4ICsyODYsNyBAQCB1c2luZyBXVEY6
OmlzRmFzdE1hbGxvY0VuYWJsZWQ7CiB1c2luZyBXVEY6OmZhc3RDYWxsb2M7CiB1c2luZyBXVEY6
OmZhc3RGcmVlOwogdXNpbmcgV1RGOjpmYXN0TWFsbG9jOwotdXNpbmcgV1RGOjpmYXN0TWFsbG9j
R29vZFNpemU7Ci11c2luZyBXVEY6OmZhc3RNYWxsb2NTaXplOwordXNpbmcgV1RGOjpmYXN0TWFs
bG9jQ2hlY2tDb25zaXN0ZW5jeTsKIHVzaW5nIFdURjo6ZmFzdE1lbUR1cDsKIHVzaW5nIFdURjo6
ZmFzdFJlYWxsb2M7CiB1c2luZyBXVEY6OmZhc3RTdHJEdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9WYWx1ZUNoZWNrLmggYi9Tb3VyY2UvV1RGL3d0Zi9WYWx1ZUNoZWNrLmgKaW5kZXgg
MjZlYWE1MzhlYmRlYzNkMjMyZWZiY2IyYmM2ZDFlNmJmMmU5N2E1Yy4uNDE4NWI2N2Y5MDljNjcx
OTc4MmI2NDE1MTFlNmM4ZDRjN2QxZGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmFs
dWVDaGVjay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZhbHVlQ2hlY2suaApAQCAtNDEsNyArNDEs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmFsdWVDaGVjazxQKj4gewogICAgIHsK
ICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBBU1NFUlQoZmFz
dE1hbGxvY1NpemUocCkpOworICAgICAgICBBU1NFUlQoZmFzdE1hbGxvY0NoZWNrQ29uc2lzdGVu
Y3kocCkpOwogICAgICAgICBWYWx1ZUNoZWNrPFA+OjpjaGVja0NvbnNpc3RlbmN5KCpwKTsKICAg
ICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwIGIv
U291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCmluZGV4IDI5ZTAxNzk1NmVkZDcwNGJi
NzRiOGZkNzcwNTFhYzBiYjQ4MTdhOWYuLmNlZWJmNzcyNzRhNjc4YmFlMDhlZjAxNTkyZWIzNzBh
MmYzYmM1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKQEAgLTM2LDEwICszNiwxMSBA
QCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBieXRlc0FzQ0ZEYXRhKENGVVJMUmVmIHVybCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXMo
dXJsLCBudWxscHRyLCAwKTsKICAgICBSRUxFQVNFX0FTU0VSVChieXRlc0xlbmd0aCAhPSAtMSk7
Ci0gICAgYXV0byBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFsbG9jKGJ5dGVzTGVu
Z3RoKSk7CisgICAgYXV0byBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxv
YyhieXRlc0xlbmd0aCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJ1ZmZlcik7CiAgICAgQ0ZVUkxH
ZXRCeXRlcyh1cmwsIGJ1ZmZlciwgYnl0ZXNMZW5ndGgpOwotICAgIHJldHVybiBhZG9wdENGKENG
RGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShudWxscHRyLCBidWZmZXIsIGJ5dGVzTGVuZ3RoLCBr
Q0ZBbGxvY2F0b3JNYWxsb2MpKTsKKyAgICBhdXRvIGFsbG9jYXRvciA9IGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29w
eShhbGxvY2F0b3IsIGJ1ZmZlciwgYnl0ZXNMZW5ndGgsIGFsbG9jYXRvcikpOwogfQogCiBTdHJp
bmcgYnl0ZXNBc1N0cmluZyhDRlVSTFJlZiB1cmwpCg==
</data>
<flag name="commit-queue"
          id="468723"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443889</attachid>
            <date>2021-11-10 18:06:36 -0800</date>
            <delta_ts>2021-11-10 18:28:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232973-20211110180636.patch</filename>
            <type>text/plain</type>
            <size>10418</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFhNGE1NTdlZjZjNDUwMmNlMjY5NTJi
MzVmOWM1MDBiN2FjNzQyNjAuLmExNTlkMjc2ZDYwOTFiNDM3NzI0Yjc3MGYxMTZkYWJjOTI3Mzgz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTEtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtDRl0gQ3JlYXRlIGEgQ0ZBbGxvY2F0b3IgYmFzZWQgb24g
RmFzdE1hbGxvYyBhbmQgdXNlIGl0IGluIGJ5dGVzQXNDRkRhdGEKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjk3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuY3BwOgorICAg
ICAgICAoV1RGOjpmYXN0TWFsbG9jQ2hlY2tDb25zaXN0ZW5jeSk6IFJlbmFtZWQgZnJvbSBmYXN0
TWFsbG9jU2l6ZSwgc2luY2UgdGhpcworICAgICAgICBkZWZpbml0ZWx5IGRvZXMgbm90IHJldHVy
biBhbiBhY2N1cmF0ZSBzaXplLgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9jQ0ZBbGxvY2F0b3Ip
OiBBZGRlZC4gUmV0dXJucyBhIENGQWxsb2NhdG9yIHRoYXQgdXNlcyBmYXN0TWFsbG9jL2ZyZWUu
CisKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOiBSZW5hbWVkIGZhc3RNYWxsb2NTaXplIHRv
IGZhc3RNYWxsb2NDaGVja0NvbnNpc3RlbmN5LgorICAgICAgICBBZGRlZCBmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IuIFJlbW92ZWQgc29tZSB1bm5lZWRlZCBtZW1iZXJzIGZyb20gdGhlIHN0YWNrCisg
ICAgICAgIHNjb3BlIGNsYXNzZXMsIGFuZCB1c2VkICJ1c2luZyIgaW5zdGVhZCBvZiB0eXBlZGVm
LgorCisgICAgICAgICogd3RmL1ZhbHVlQ2hlY2suaDogVXNlIGZhc3RNYWxsb2NDaGVja0NvbnNp
c3RlbmN5LgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNwcDoKKyAgICAgICAgKFdU
Rjo6Ynl0ZXNBc0NGRGF0YSk6IFVzZSBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IuCisKIDIwMjEtMTEt
MTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDRl0gUmVkdWNl
IGR1cGxpY2F0aW9uIGFuZCB1bm5lZWRlZCBidWZmZXIgYWxsb2NhdGlvbnMgYW5kIGNvcHlpbmcg
aW4gVVJMIGNvZGUsIGFsc28gcmVtb3ZlIHVudXNlZCBtZXRob2RzIGFuZCBmdW5jdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwIGIvU291cmNlL1dURi93dGYv
RmFzdE1hbGxvYy5jcHAKaW5kZXggZjU2MGY1NmIwMmE4Yzk2MWUwY2ZmOTg4ZjQwODkyNDMxNzY5
ZTdmZC4uNjMxYjM1NTRmMWMxYjU2N2RhMDQyYzBiMGVkNTZhNTdjNGE4YWFlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmFz
dE1hbGxvYy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA1LCAy
MDA3LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6CkBAIC0yNiwxNSArMjYsMjAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCisjaW5jbHVkZSA8bXV0
ZXg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGlj
Lmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaWYg
SEFWRShSRVNPVVJDRV9IKQorI2VuZGlmCisKKyNpZiAhT1MoV0lORE9XUykgJiYgSEFWRShSRVNP
VVJDRV9IKQogI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2VuZGlmIC8vIEhBVkUoUkVTT1VS
Q0VfSCkKKyNlbmRpZgorCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0Nv
cmVGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNQUxMT0NfSEVBUF9CUkVBS0RP
V04pCkBAIC00NCwxMSArNDksMTAgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+
Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDxub3RpZnkuaD4KICNlbmRpZgogCisj
aWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikgJiYgUExBVEZPUk0oQ09DT0EpCisjaW5j
bHVkZSA8bm90aWZ5Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yNzYsOCArMjgw
LDEzIEBAIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVf
dCBuKQogICAgIHJldHVybiByZWFsbG9jKHAsIG4pOwogfQogCi12b2lkIHJlbGVhc2VGYXN0TWFs
bG9jRnJlZU1lbW9yeSgpIHsgfQotdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlGb3JU
aGlzVGhyZWFkKCkgeyB9Cit2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpCit7Cit9
CisKK3ZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5Rm9yVGhpc1RocmVhZCgpCit7Cit9
CiAKIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCkKIHsKQEAgLTI4
NSw3ICsyOTQsNyBAQCBGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcygp
CiAgICAgcmV0dXJuIHN0YXRpc3RpY3M7CiB9CiAKLXNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25z
dCB2b2lkKiBwKQorYm9vbCBmYXN0TWFsbG9jQ2hlY2tDb25zaXN0ZW5jeShjb25zdCB2b2lkKiBw
KQogewogI2lmIE9TKERBUldJTikKICAgICByZXR1cm4gbWFsbG9jX3NpemUocCk7CkBAIC0yOTMs
NyArMzAyLDcgQEAgc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqIHApCiAgICAgcmV0
dXJuIF9tc2l6ZShjb25zdF9jYXN0PHZvaWQqPihwKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShwKTsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQogCkBAIC0z
MDcsMTEgKzMxNiwxNyBAQCB2b2lkIGZhc3REZWNvbW1pdEFsaWduZWRNZW1vcnkodm9pZCogcHRy
LCBzaXplX3Qgc2l6ZSkKICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXQocHRyLCBzaXplKTsKIH0K
IAotdm9pZCBmYXN0RW5hYmxlTWluaU1vZGUoKSB7IH0KK3ZvaWQgZmFzdEVuYWJsZU1pbmlNb2Rl
KCkKK3sKK30KIAotdm9pZCBmYXN0RGlzYWJsZVNjYXZlbmdlcigpIHsgfQordm9pZCBmYXN0RGlz
YWJsZVNjYXZlbmdlcigpCit7Cit9CiAKLXZvaWQgZmFzdE1hbGxvY0R1bXBNYWxsb2NTdGF0cygp
IHsgfQordm9pZCBmYXN0TWFsbG9jRHVtcE1hbGxvY1N0YXRzKCkKK3sKK30KIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKQEAgLTU2MiwxNyArNTc3LDEwIEBAIHZvaWQgZmFzdEZyZWUodm9pZCogb2Jq
ZWN0KQogI2VuZGlmCiB9CiAKLXNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKikKLXsK
LSAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmNvcnJlY3Q7IGJlc3QgZml4IGlzIHByb2JhYmx5IHRv
IHJlbW92ZSB0aGlzIGZ1bmN0aW9uLgotICAgIC8vIENhbGxlciBjdXJyZW50bHkgYXJlIGFsbCB1
c2luZyB0aGlzIGZvciBhc3NlcnRpb24sIG5vdCB0byBhY3R1YWxseSBjaGVjawotICAgIC8vIHRo
ZSBzaXplIG9mIHRoZSBhbGxvY2F0aW9uLCBzbyBtYXliZSB3ZSBjYW4gY29tZSB1cCB3aXRoIHNv
bWV0aGluZyBmb3IgdGhhdC4KLSAgICByZXR1cm4gMTsKLX0KLQotc2l6ZV90IGZhc3RNYWxsb2NH
b29kU2l6ZShzaXplX3Qgc2l6ZSkKK2Jvb2wgZmFzdE1hbGxvY0NoZWNrQ29uc2lzdGVuY3koY29u
c3Qgdm9pZCopCiB7Ci0gICAgcmV0dXJuIHNpemU7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHJldHVybiBmYWxzZSBpZiB0aGUgcG9pbnRlciBpcyBub3QgYSBtYWxsb2MgYmxvY2ssIG9yIHdl
IHNob3VsZCByZW1vdmUgdGhpcyBmdW5jdGlvbi4KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9p
ZCogZmFzdEFsaWduZWRNYWxsb2Moc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCkBAIC02
ODcsMyArNjk1LDMxIEBAIHZvaWQgZmFzdERpc2FibGVTY2F2ZW5nZXIoKQogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKICNlbmRpZiAvLyBVU0UoU1lTVEVNX01BTExPQykKKworI2lmIFVTRShDRikKKwor
bmFtZXNwYWNlIFdURiB7CisKK0NGQWxsb2NhdG9yUmVmIGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
Cit7CisgICAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvcjsKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlLCBbJl0geworICAgICAg
ICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCB7IH07CisgICAgICAgIGNvbnRleHQuYWxsb2Nh
dGUgPSBbXSAoQ0ZJbmRleCBzaXplLCBDRk9wdGlvbkZsYWdzLCB2b2lkKikgeworICAgICAgICAg
ICAgcmV0dXJuIGZhc3RNYWxsb2Moc2l6ZSk7CisgICAgICAgIH07CisgICAgICAgIGNvbnRleHQu
cmVhbGxvY2F0ZSA9IFtdICh2b2lkKiBvYmplY3QsIENGSW5kZXggc2l6ZSwgQ0ZPcHRpb25GbGFn
cywgdm9pZCopIHsKKyAgICAgICAgICAgIHJldHVybiBmYXN0UmVhbGxvYyhvYmplY3QsIHNpemUp
OworICAgICAgICB9OworICAgICAgICBjb250ZXh0LmRlYWxsb2NhdGUgPSBbXSAodm9pZCogb2Jq
ZWN0LCB2b2lkKikgeworICAgICAgICAgICAgZmFzdEZyZWUob2JqZWN0KTsKKyAgICAgICAgfTsK
KyAgICAgICAgYWxsb2NhdG9yID0gQ0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9yVXNlQ29u
dGV4dCwgJmNvbnRleHQpOworICAgIH0pOworICAgIHJldHVybiBhbGxvY2F0b3I7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggMTI2NTI2NmQxOTVkMWY4ODliYWI4NzAzNTQw
NjRjNzgxNzZmZjRlMy4uN2UzMGM2NjJhMDQxYzQ5ZDRmMzMxZjJlNGZmNzU0NDUxYmYxNTM3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Zhc3RNYWxsb2MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0yNSw2ICsyNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9EZWJ1Z0hlYXAuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKKyNpZiBVU0UoQ0YpCit1c2luZyBDRkFs
bG9jYXRvclJlZiA9IGNvbnN0IHN0cnVjdCBfX0NGQWxsb2NhdG9yKjsKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV1RGIHsKIAogLy8gVGhlcmUgYXJlIHNldmVyYWwgbWFsbG9jLXJlbGF0ZWQgbWFjcm9z
IHRvIGFubm90YXRlIGNsYXNzIC8gc3RydWN0LiBJZiB0aGVzZSBhbm5vdGF0aW9ucyBhcmUgYXR0
YWNoZWQsCkBAIC0xMDcsMTAgKzExMSw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0
QWxpZ25lZE1hbGxvYyhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpIFJFVFVSTlNfTk9OCiBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCogdHJ5RmFzdEFsaWduZWRNYWxsb2Moc2l6ZV90IGFsaWdubWVu
dCwgc2l6ZV90KTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZhc3RBbGlnbmVkRnJlZSh2b2lk
Kik7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9p
ZCopOwotCi0vLyBGSVhNRTogVGhpcyBpcyBub24taGVscGZ1bDsgZmFzdE1hbGxvY0dvb2RTaXpl
IHdpbGwgYmUgcmVtb3ZlZCBzb29uLgotV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmYXN0TWFs
bG9jR29vZFNpemUoc2l6ZV90KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGZhc3RNYWxsb2ND
aGVja0NvbnNpc3RlbmN5KGNvbnN0IHZvaWQqKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlGb3JUaGlzVGhyZWFkKCk7CkBAIC0xMjIsNiArMTIz
LDEwIEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZhc3RFbmFibGVNaW5pTW9kZSgpOwogCiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBmYXN0RGlzYWJsZVNjYXZlbmdlcigpOwogCisjaWYgVVNF
KENGKQorV1RGX0VYUE9SVF9QUklWQVRFIENGQWxsb2NhdG9yUmVmIGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpOworI2VuZGlmCisKIGNsYXNzIEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJlYWRT
Y29wZSB7CiBwdWJsaWM6CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTEyOSwxMyArMTM0LDEwIEBA
IHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkZvcmJpZE1hbGxvY1VzZUZvckN1cnJl
bnRUaHJlYWRTY29wZSgpOwogI2Vsc2UKICAgICBGb3JiaWRNYWxsb2NVc2VGb3JDdXJyZW50VGhy
ZWFkU2NvcGUoKSA9IGRlZmF1bHQ7Ci0gICAgfkZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJl
YWRTY29wZSgpIHsgfQogI2VuZGlmCiAKICAgICBGb3JiaWRNYWxsb2NVc2VGb3JDdXJyZW50VGhy
ZWFkU2NvcGUoY29uc3QgRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3BlJikgPSBk
ZWxldGU7Ci0gICAgRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3BlKEZvcmJpZE1h
bGxvY1VzZUZvckN1cnJlbnRUaHJlYWRTY29wZSYmKSA9IGRlbGV0ZTsKICAgICBGb3JiaWRNYWxs
b2NVc2VGb3JDdXJyZW50VGhyZWFkU2NvcGUmIG9wZXJhdG9yPShjb25zdCBGb3JiaWRNYWxsb2NV
c2VGb3JDdXJyZW50VGhyZWFkU2NvcGUmKSA9IGRlbGV0ZTsKLSAgICBGb3JiaWRNYWxsb2NVc2VG
b3JDdXJyZW50VGhyZWFkU2NvcGUmIG9wZXJhdG9yPShGb3JiaWRNYWxsb2NVc2VGb3JDdXJyZW50
VGhyZWFkU2NvcGUmJikgPSBkZWxldGU7CiB9OwogCiBjbGFzcyBEaXNhYmxlTWFsbG9jUmVzdHJp
Y3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIHsKQEAgLTE0NSwxMyArMTQ3LDEwIEBAIHB1Ymxp
YzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkRpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JD
dXJyZW50VGhyZWFkU2NvcGUoKTsKICNlbHNlCiAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9u
c0ZvckN1cnJlbnRUaHJlYWRTY29wZSgpID0gZGVmYXVsdDsKLSAgICB+RGlzYWJsZU1hbGxvY1Jl
c3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSgpIHsgfQogI2VuZGlmCiAKICAgICBEaXNh
YmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlKGNvbnN0IERpc2FibGVN
YWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUmKSA9IGRlbGV0ZTsKLSAgICBE
aXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlKERpc2FibGVNYWxs
b2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUmJikgPSBkZWxldGU7CiAgICAgRGlz
YWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSYgb3BlcmF0b3I9KGNv
bnN0IERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUmKSA9IGRl
bGV0ZTsKLSAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3Bl
JiBvcGVyYXRvcj0oRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29w
ZSYmKSA9IGRlbGV0ZTsKIH07CiAKIHN0cnVjdCBGYXN0TWFsbG9jU3RhdGlzdGljcyB7CkBAIC0x
NjUsNyArMTY0LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdE1hbGxvY0R1bXBNYWxs
b2NTdGF0cygpOwogCiAvLyBUaGlzIGRlZmluZXMgYSB0eXBlIHdoaWNoIGhvbGRzIGFuIHVuc2ln
bmVkIGludGVnZXIgYW5kIGlzIHRoZSBzYW1lCiAvLyBzaXplIGFzIHRoZSBtaW5pbWFsbHkgYWxp
Z25lZCBtZW1vcnkgYWxsb2NhdGlvbi4KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEFsbG9j
QWxpZ25tZW50SW50ZWdlcjsKK3VzaW5nIEFsbG9jQWxpZ25tZW50SW50ZWdlciA9IHVuc2lnbmVk
IGxvbmcgbG9uZzsKIAogaW5saW5lIFRyeU1hbGxvY1JldHVyblZhbHVlOjpUcnlNYWxsb2NSZXR1
cm5WYWx1ZSh2b2lkKiBkYXRhKQogICAgIDogbV9kYXRhKGRhdGEpCkBAIC0yODcsOCArMjg2LDcg
QEAgdXNpbmcgV1RGOjppc0Zhc3RNYWxsb2NFbmFibGVkOwogdXNpbmcgV1RGOjpmYXN0Q2FsbG9j
OwogdXNpbmcgV1RGOjpmYXN0RnJlZTsKIHVzaW5nIFdURjo6ZmFzdE1hbGxvYzsKLXVzaW5nIFdU
Rjo6ZmFzdE1hbGxvY0dvb2RTaXplOwotdXNpbmcgV1RGOjpmYXN0TWFsbG9jU2l6ZTsKK3VzaW5n
IFdURjo6ZmFzdE1hbGxvY0NoZWNrQ29uc2lzdGVuY3k7CiB1c2luZyBXVEY6OmZhc3RNZW1EdXA7
CiB1c2luZyBXVEY6OmZhc3RSZWFsbG9jOwogdXNpbmcgV1RGOjpmYXN0U3RyRHVwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVmFsdWVDaGVjay5oIGIvU291cmNlL1dURi93dGYvVmFsdWVD
aGVjay5oCmluZGV4IDI2ZWFhNTM4ZWJkZWMzZDIzMmVmYmNiMmJjNmQxZTZiZjJlOTdhNWMuLjQx
ODViNjdmOTA5YzY3MTk3ODJiNjQxNTExZTZjOGQ0YzdkMWRmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1ZhbHVlQ2hlY2suaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WYWx1ZUNoZWNrLmgK
QEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZhbHVlQ2hlY2s8
UCo+IHsKICAgICB7CiAgICAgICAgIGlmICghcCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgQVNTRVJUKGZhc3RNYWxsb2NTaXplKHApKTsKKyAgICAgICAgQVNTRVJUKGZhc3RNYWxsb2ND
aGVja0NvbnNpc3RlbmN5KHApKTsKICAgICAgICAgVmFsdWVDaGVjazxQPjo6Y2hlY2tDb25zaXN0
ZW5jeSgqcCk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJM
RXh0cmFzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcAppbmRleCAyOWUw
MTc5NTZlZGQ3MDRiYjc0YjhmZDc3MDUxYWMwYmI0ODE3YTlmLi5jZWViZjc3Mjc0YTY3OGJhZTA4
ZWYwMTU5MmViMzcwYTJmM2JjNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVS
TEV4dHJhcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCkBAIC0z
NiwxMCArMzYsMTEgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnl0ZXNBc0NGRGF0YShDRlVSTFJl
ZiB1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gYnl0ZXNMZW5ndGggPSBD
RlVSTEdldEJ5dGVzKHVybCwgbnVsbHB0ciwgMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZXNM
ZW5ndGggIT0gLTEpOwotICAgIGF1dG8gYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1h
bGxvYyhieXRlc0xlbmd0aCkpOworICAgIGF1dG8gYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGZhc3RNYWxsb2MoYnl0ZXNMZW5ndGgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChidWZmZXIp
OwogICAgIENGVVJMR2V0Qnl0ZXModXJsLCBidWZmZXIsIGJ5dGVzTGVuZ3RoKTsKLSAgICByZXR1
cm4gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkobnVsbHB0ciwgYnVmZmVyLCBi
eXRlc0xlbmd0aCwga0NGQWxsb2NhdG9yTWFsbG9jKSk7CisgICAgYXV0byBhbGxvY2F0b3IgPSBm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGVX
aXRoQnl0ZXNOb0NvcHkoYWxsb2NhdG9yLCBidWZmZXIsIGJ5dGVzTGVuZ3RoLCBhbGxvY2F0b3Ip
KTsKIH0KIAogU3RyaW5nIGJ5dGVzQXNTdHJpbmcoQ0ZVUkxSZWYgdXJsKQo=
</data>
<flag name="commit-queue"
          id="468724"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443890</attachid>
            <date>2021-11-10 18:12:20 -0800</date>
            <delta_ts>2021-11-11 18:35:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232973-20211110181219.patch</filename>
            <type>text/plain</type>
            <size>10032</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFhNGE1NTdlZjZjNDUwMmNlMjY5NTJi
MzVmOWM1MDBiN2FjNzQyNjAuLmExNTlkMjc2ZDYwOTFiNDM3NzI0Yjc3MGYxMTZkYWJjOTI3Mzgz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTEtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtDRl0gQ3JlYXRlIGEgQ0ZBbGxvY2F0b3IgYmFzZWQgb24g
RmFzdE1hbGxvYyBhbmQgdXNlIGl0IGluIGJ5dGVzQXNDRkRhdGEKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjk3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuY3BwOgorICAg
ICAgICAoV1RGOjpmYXN0TWFsbG9jQ2hlY2tDb25zaXN0ZW5jeSk6IFJlbmFtZWQgZnJvbSBmYXN0
TWFsbG9jU2l6ZSwgc2luY2UgdGhpcworICAgICAgICBkZWZpbml0ZWx5IGRvZXMgbm90IHJldHVy
biBhbiBhY2N1cmF0ZSBzaXplLgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9jQ0ZBbGxvY2F0b3Ip
OiBBZGRlZC4gUmV0dXJucyBhIENGQWxsb2NhdG9yIHRoYXQgdXNlcyBmYXN0TWFsbG9jL2ZyZWUu
CisKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOiBSZW5hbWVkIGZhc3RNYWxsb2NTaXplIHRv
IGZhc3RNYWxsb2NDaGVja0NvbnNpc3RlbmN5LgorICAgICAgICBBZGRlZCBmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IuIFJlbW92ZWQgc29tZSB1bm5lZWRlZCBtZW1iZXJzIGZyb20gdGhlIHN0YWNrCisg
ICAgICAgIHNjb3BlIGNsYXNzZXMsIGFuZCB1c2VkICJ1c2luZyIgaW5zdGVhZCBvZiB0eXBlZGVm
LgorCisgICAgICAgICogd3RmL1ZhbHVlQ2hlY2suaDogVXNlIGZhc3RNYWxsb2NDaGVja0NvbnNp
c3RlbmN5LgorCisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNwcDoKKyAgICAgICAgKFdU
Rjo6Ynl0ZXNBc0NGRGF0YSk6IFVzZSBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IuCisKIDIwMjEtMTEt
MTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDRl0gUmVkdWNl
IGR1cGxpY2F0aW9uIGFuZCB1bm5lZWRlZCBidWZmZXIgYWxsb2NhdGlvbnMgYW5kIGNvcHlpbmcg
aW4gVVJMIGNvZGUsIGFsc28gcmVtb3ZlIHVudXNlZCBtZXRob2RzIGFuZCBmdW5jdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwIGIvU291cmNlL1dURi93dGYv
RmFzdE1hbGxvYy5jcHAKaW5kZXggZjU2MGY1NmIwMmE4Yzk2MWUwY2ZmOTg4ZjQwODkyNDMxNzY5
ZTdmZC4uNjMxYjM1NTRmMWMxYjU2N2RhMDQyYzBiMGVkNTZhNTdjNGE4YWFlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmFz
dE1hbGxvYy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDA1LCAy
MDA3LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6CkBAIC0yNiwxNSArMjYsMjAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCisjaW5jbHVkZSA8bXV0
ZXg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGlj
Lmg+CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jaWYg
SEFWRShSRVNPVVJDRV9IKQorI2VuZGlmCisKKyNpZiAhT1MoV0lORE9XUykgJiYgSEFWRShSRVNP
VVJDRV9IKQogI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2VuZGlmIC8vIEhBVkUoUkVTT1VS
Q0VfSCkKKyNlbmRpZgorCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0Nv
cmVGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNQUxMT0NfSEVBUF9CUkVBS0RP
V04pCkBAIC00NCwxMSArNDksMTAgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+
Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDxub3RpZnkuaD4KICNlbmRpZgogCisj
aWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikgJiYgUExBVEZPUk0oQ09DT0EpCisjaW5j
bHVkZSA8bm90aWZ5Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yNzYsOCArMjgw
LDEzIEBAIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVf
dCBuKQogICAgIHJldHVybiByZWFsbG9jKHAsIG4pOwogfQogCi12b2lkIHJlbGVhc2VGYXN0TWFs
bG9jRnJlZU1lbW9yeSgpIHsgfQotdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlGb3JU
aGlzVGhyZWFkKCkgeyB9Cit2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpCit7Cit9
CisKK3ZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5Rm9yVGhpc1RocmVhZCgpCit7Cit9
CiAKIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCkKIHsKQEAgLTI4
NSw3ICsyOTQsNyBAQCBGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcygp
CiAgICAgcmV0dXJuIHN0YXRpc3RpY3M7CiB9CiAKLXNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25z
dCB2b2lkKiBwKQorYm9vbCBmYXN0TWFsbG9jQ2hlY2tDb25zaXN0ZW5jeShjb25zdCB2b2lkKiBw
KQogewogI2lmIE9TKERBUldJTikKICAgICByZXR1cm4gbWFsbG9jX3NpemUocCk7CkBAIC0yOTMs
NyArMzAyLDcgQEAgc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqIHApCiAgICAgcmV0
dXJuIF9tc2l6ZShjb25zdF9jYXN0PHZvaWQqPihwKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShwKTsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQogCkBAIC0z
MDcsMTEgKzMxNiwxNyBAQCB2b2lkIGZhc3REZWNvbW1pdEFsaWduZWRNZW1vcnkodm9pZCogcHRy
LCBzaXplX3Qgc2l6ZSkKICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXQocHRyLCBzaXplKTsKIH0K
IAotdm9pZCBmYXN0RW5hYmxlTWluaU1vZGUoKSB7IH0KK3ZvaWQgZmFzdEVuYWJsZU1pbmlNb2Rl
KCkKK3sKK30KIAotdm9pZCBmYXN0RGlzYWJsZVNjYXZlbmdlcigpIHsgfQordm9pZCBmYXN0RGlz
YWJsZVNjYXZlbmdlcigpCit7Cit9CiAKLXZvaWQgZmFzdE1hbGxvY0R1bXBNYWxsb2NTdGF0cygp
IHsgfQordm9pZCBmYXN0TWFsbG9jRHVtcE1hbGxvY1N0YXRzKCkKK3sKK30KIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKQEAgLTU2MiwxNyArNTc3LDEwIEBAIHZvaWQgZmFzdEZyZWUodm9pZCogb2Jq
ZWN0KQogI2VuZGlmCiB9CiAKLXNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKikKLXsK
LSAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmNvcnJlY3Q7IGJlc3QgZml4IGlzIHByb2JhYmx5IHRv
IHJlbW92ZSB0aGlzIGZ1bmN0aW9uLgotICAgIC8vIENhbGxlciBjdXJyZW50bHkgYXJlIGFsbCB1
c2luZyB0aGlzIGZvciBhc3NlcnRpb24sIG5vdCB0byBhY3R1YWxseSBjaGVjawotICAgIC8vIHRo
ZSBzaXplIG9mIHRoZSBhbGxvY2F0aW9uLCBzbyBtYXliZSB3ZSBjYW4gY29tZSB1cCB3aXRoIHNv
bWV0aGluZyBmb3IgdGhhdC4KLSAgICByZXR1cm4gMTsKLX0KLQotc2l6ZV90IGZhc3RNYWxsb2NH
b29kU2l6ZShzaXplX3Qgc2l6ZSkKK2Jvb2wgZmFzdE1hbGxvY0NoZWNrQ29uc2lzdGVuY3koY29u
c3Qgdm9pZCopCiB7Ci0gICAgcmV0dXJuIHNpemU7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHJldHVybiBmYWxzZSBpZiB0aGUgcG9pbnRlciBpcyBub3QgYSBtYWxsb2MgYmxvY2ssIG9yIHdl
IHNob3VsZCByZW1vdmUgdGhpcyBmdW5jdGlvbi4KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9p
ZCogZmFzdEFsaWduZWRNYWxsb2Moc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCkBAIC02
ODcsMyArNjk1LDMxIEBAIHZvaWQgZmFzdERpc2FibGVTY2F2ZW5nZXIoKQogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKICNlbmRpZiAvLyBVU0UoU1lTVEVNX01BTExPQykKKworI2lmIFVTRShDRikKKwor
bmFtZXNwYWNlIFdURiB7CisKK0NGQWxsb2NhdG9yUmVmIGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
Cit7CisgICAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvcjsKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlLCBbJl0geworICAgICAg
ICBDRkFsbG9jYXRvckNvbnRleHQgY29udGV4dCB7IH07CisgICAgICAgIGNvbnRleHQuYWxsb2Nh
dGUgPSBbXSAoQ0ZJbmRleCBzaXplLCBDRk9wdGlvbkZsYWdzLCB2b2lkKikgeworICAgICAgICAg
ICAgcmV0dXJuIGZhc3RNYWxsb2Moc2l6ZSk7CisgICAgICAgIH07CisgICAgICAgIGNvbnRleHQu
cmVhbGxvY2F0ZSA9IFtdICh2b2lkKiBvYmplY3QsIENGSW5kZXggc2l6ZSwgQ0ZPcHRpb25GbGFn
cywgdm9pZCopIHsKKyAgICAgICAgICAgIHJldHVybiBmYXN0UmVhbGxvYyhvYmplY3QsIHNpemUp
OworICAgICAgICB9OworICAgICAgICBjb250ZXh0LmRlYWxsb2NhdGUgPSBbXSAodm9pZCogb2Jq
ZWN0LCB2b2lkKikgeworICAgICAgICAgICAgZmFzdEZyZWUob2JqZWN0KTsKKyAgICAgICAgfTsK
KyAgICAgICAgYWxsb2NhdG9yID0gQ0ZBbGxvY2F0b3JDcmVhdGUoa0NGQWxsb2NhdG9yVXNlQ29u
dGV4dCwgJmNvbnRleHQpOworICAgIH0pOworICAgIHJldHVybiBhbGxvY2F0b3I7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggMTI2NTI2NmQxOTVkMWY4ODliYWI4NzAzNTQw
NjRjNzgxNzZmZjRlMy4uMTM3M2U4MDhjNWExNDEwZTQ5NWZhN2Y0Mjc0MDBlNTg2ZmVhZmQ3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0Zhc3RNYWxsb2MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0yNSw2ICsyNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9EZWJ1Z0hlYXAuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKKyNpZiBVU0UoQ0YpCit1c2luZyBDRkFs
bG9jYXRvclJlZiA9IGNvbnN0IHN0cnVjdCBfX0NGQWxsb2NhdG9yKjsKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV1RGIHsKIAogLy8gVGhlcmUgYXJlIHNldmVyYWwgbWFsbG9jLXJlbGF0ZWQgbWFjcm9z
IHRvIGFubm90YXRlIGNsYXNzIC8gc3RydWN0LiBJZiB0aGVzZSBhbm5vdGF0aW9ucyBhcmUgYXR0
YWNoZWQsCkBAIC0xMDcsMTAgKzExMSw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0
QWxpZ25lZE1hbGxvYyhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpIFJFVFVSTlNfTk9OCiBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCogdHJ5RmFzdEFsaWduZWRNYWxsb2Moc2l6ZV90IGFsaWdubWVu
dCwgc2l6ZV90KTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZhc3RBbGlnbmVkRnJlZSh2b2lk
Kik7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9p
ZCopOwotCi0vLyBGSVhNRTogVGhpcyBpcyBub24taGVscGZ1bDsgZmFzdE1hbGxvY0dvb2RTaXpl
IHdpbGwgYmUgcmVtb3ZlZCBzb29uLgotV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmYXN0TWFs
bG9jR29vZFNpemUoc2l6ZV90KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGZhc3RNYWxsb2ND
aGVja0NvbnNpc3RlbmN5KGNvbnN0IHZvaWQqKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlGb3JUaGlzVGhyZWFkKCk7CkBAIC0xMjIsNiArMTIz
LDEwIEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZhc3RFbmFibGVNaW5pTW9kZSgpOwogCiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBmYXN0RGlzYWJsZVNjYXZlbmdlcigpOwogCisjaWYgVVNF
KENGKQorV1RGX0VYUE9SVF9QUklWQVRFIENGQWxsb2NhdG9yUmVmIGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpOworI2VuZGlmCisKIGNsYXNzIEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJlYWRT
Y29wZSB7CiBwdWJsaWM6CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTEzMyw5ICsxMzgsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJlYWRTY29w
ZShjb25zdCBGb3JiaWRNYWxsb2NVc2VGb3JDdXJyZW50VGhyZWFkU2NvcGUmKSA9IGRlbGV0ZTsK
LSAgICBGb3JiaWRNYWxsb2NVc2VGb3JDdXJyZW50VGhyZWFkU2NvcGUoRm9yYmlkTWFsbG9jVXNl
Rm9yQ3VycmVudFRocmVhZFNjb3BlJiYpID0gZGVsZXRlOwogICAgIEZvcmJpZE1hbGxvY1VzZUZv
ckN1cnJlbnRUaHJlYWRTY29wZSYgb3BlcmF0b3I9KGNvbnN0IEZvcmJpZE1hbGxvY1VzZUZvckN1
cnJlbnRUaHJlYWRTY29wZSYpID0gZGVsZXRlOwotICAgIEZvcmJpZE1hbGxvY1VzZUZvckN1cnJl
bnRUaHJlYWRTY29wZSYgb3BlcmF0b3I9KEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJlYWRT
Y29wZSYmKSA9IGRlbGV0ZTsKIH07CiAKIGNsYXNzIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNG
b3JDdXJyZW50VGhyZWFkU2NvcGUgewpAQCAtMTQ5LDkgKzE1Miw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZShj
b25zdCBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlJikgPSBk
ZWxldGU7Ci0gICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29w
ZShEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlJiYpID0gZGVs
ZXRlOwogICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUm
IG9wZXJhdG9yPShjb25zdCBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVh
ZFNjb3BlJikgPSBkZWxldGU7Ci0gICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJl
bnRUaHJlYWRTY29wZSYgb3BlcmF0b3I9KERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJy
ZW50VGhyZWFkU2NvcGUmJikgPSBkZWxldGU7CiB9OwogCiBzdHJ1Y3QgRmFzdE1hbGxvY1N0YXRp
c3RpY3MgewpAQCAtMTY1LDcgKzE2Niw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZhc3RN
YWxsb2NEdW1wTWFsbG9jU3RhdHMoKTsKIAogLy8gVGhpcyBkZWZpbmVzIGEgdHlwZSB3aGljaCBo
b2xkcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGFuZCBpcyB0aGUgc2FtZQogLy8gc2l6ZSBhcyB0aGUg
bWluaW1hbGx5IGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb24uCi10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBBbGxvY0FsaWdubWVudEludGVnZXI7Cit1c2luZyBBbGxvY0FsaWdubWVudEludGVn
ZXIgPSB1bnNpZ25lZCBsb25nIGxvbmc7CiAKIGlubGluZSBUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6
VHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9pZCogZGF0YSkKICAgICA6IG1fZGF0YShkYXRhKQpAQCAt
Mjg3LDggKzI4OCw3IEBAIHVzaW5nIFdURjo6aXNGYXN0TWFsbG9jRW5hYmxlZDsKIHVzaW5nIFdU
Rjo6ZmFzdENhbGxvYzsKIHVzaW5nIFdURjo6ZmFzdEZyZWU7CiB1c2luZyBXVEY6OmZhc3RNYWxs
b2M7Ci11c2luZyBXVEY6OmZhc3RNYWxsb2NHb29kU2l6ZTsKLXVzaW5nIFdURjo6ZmFzdE1hbGxv
Y1NpemU7Cit1c2luZyBXVEY6OmZhc3RNYWxsb2NDaGVja0NvbnNpc3RlbmN5OwogdXNpbmcgV1RG
OjpmYXN0TWVtRHVwOwogdXNpbmcgV1RGOjpmYXN0UmVhbGxvYzsKIHVzaW5nIFdURjo6ZmFzdFN0
ckR1cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZhbHVlQ2hlY2suaCBiL1NvdXJjZS9X
VEYvd3RmL1ZhbHVlQ2hlY2suaAppbmRleCAyNmVhYTUzOGViZGVjM2QyMzJlZmJjYjJiYzZkMWU2
YmYyZTk3YTVjLi40MTg1YjY3ZjkwOWM2NzE5NzgyYjY0MTUxMWU2YzhkNGM3ZDFkZjMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WYWx1ZUNoZWNrLmgKKysrIGIvU291cmNlL1dURi93dGYv
VmFsdWVDaGVjay5oCkBAIC00MSw3ICs0MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVj
dCBWYWx1ZUNoZWNrPFAqPiB7CiAgICAgewogICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIEFTU0VSVChmYXN0TWFsbG9jU2l6ZShwKSk7CisgICAgICAgIEFTU0VS
VChmYXN0TWFsbG9jQ2hlY2tDb25zaXN0ZW5jeShwKSk7CiAgICAgICAgIFZhbHVlQ2hlY2s8UD46
OmNoZWNrQ29uc2lzdGVuY3koKnApOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5j
cHAKaW5kZXggMjllMDE3OTU2ZWRkNzA0YmI3NGI4ZmQ3NzA1MWFjMGJiNDgxN2E5Zi4uY2VlYmY3
NzI3NGE2NzhiYWUwOGVmMDE1OTJlYjM3MGEyZjNiYzU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0
cmFzLmNwcApAQCAtMzYsMTAgKzM2LDExIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ5dGVzQXND
RkRhdGEoQ0ZVUkxSZWYgdXJsKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGJ5
dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIG51bGxwdHIsIDApOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGJ5dGVzTGVuZ3RoICE9IC0xKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihtYWxsb2MoYnl0ZXNMZW5ndGgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKGJ5dGVzTGVuZ3RoKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoYnVmZmVyKTsKICAgICBDRlVSTEdldEJ5dGVzKHVybCwgYnVmZmVyLCBieXRlc0xlbmd0
aCk7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KG51bGxw
dHIsIGJ1ZmZlciwgYnl0ZXNMZW5ndGgsIGtDRkFsbG9jYXRvck1hbGxvYykpOworICAgIGF1dG8g
YWxsb2NhdG9yID0gZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgYnVmZmVyLCBieXRlc0xlbmd0
aCwgYWxsb2NhdG9yKSk7CiB9CiAKIFN0cmluZyBieXRlc0FzU3RyaW5nKENGVVJMUmVmIHVybCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444035</attachid>
            <date>2021-11-11 19:01:00 -0800</date>
            <delta_ts>2021-11-12 10:21:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232973-20211111190059.patch</filename>
            <type>text/plain</type>
            <size>320910</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NTViN2Y3MWFkZDVhZDgzOTVjY2IzMjhkZmI4YTBjMGYxZDZmMTM5Li40OWI0YjY1ZjRhZjBjZTA3
MzI5YzZjNTlmMjM3ZGM0ZWRiMzQxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0xMS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NGXSBDcmVhdGUgYSBDRkFsbG9jYXRvciBiYXNlZCBvbiBGYXN0TWFsbG9jIGFu
ZCB1c2UgaXQgd2hlcmV2ZXIgd2UgY2FuIHBhc3MgYW4gYWxsb2NhdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5NzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06Cisg
ICAgICAgICgtW0pTQ29udGV4dCBuYW1lXSk6IFVzZSBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IuCisg
ICAgICAgICogQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKEpTUmVtb3RlSW5z
cGVjdG9yU2V0UGFyZW50UHJvY2Vzc0luZm9ybWF0aW9uKTogRGl0dG8uCisgICAgICAgICogQVBJ
L0pTVmFsdWUubW06CisgICAgICAgICh2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkpOiBEaXR0by4K
KyAgICAgICAgKGNvbnRhaW5lclZhbHVlVG9PYmplY3QpOiBEaXR0by4KKyAgICAgICAgKHZhbHVl
VG9TdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVU
YXJnZXRJbml0aWFsaXplR2xvYmFsUXVldWUpOiBEaXR0by4KKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cFJ1bkxvb3ApOiBEaXR0by4KKwogMjAyMS0x
MS0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBpbl9ieV92
YWwgc2hvdWxkIG5vdCBjb25zdGFudCBmb2xkIHRvIGluX2J5X2lkIHdoZW4gdGhlIHByb3BlcnR5
IGlzIGEgcHJvcGVydHkgaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMWE0YTU1N2VmNmM0NTAyY2UyNjk1MmIzNWY5YzUw
MGI3YWM3NDI2MC4uODJjMDE3MGEyNDQ0Njg4NTE3MjFhZTEyZTM1OWRlYzYzZGIwOTY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NiBAQAorMjAyMS0xMS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NGXSBDcmVhdGUgYSBDRkFsbG9jYXRvciBiYXNlZCBvbiBGYXN0TWFs
bG9jIGFuZCB1c2UgaXQgd2hlcmV2ZXIgd2UgY2FuIHBhc3MgYW4gYWxsb2NhdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5NzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25z
LmNwcDoKKyAgICAgICAgKFdURjo6Y3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyk6IFVzZSBm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IuCisKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5jcHA6Cisg
ICAgICAgIChXVEY6OmZhc3RNYWxsb2NDaGVja0NvbnNpc3RlbmN5KTogUmVuYW1lZCBmcm9tIGZh
c3RNYWxsb2NTaXplLCBzaW5jZSB0aGlzCisgICAgICAgIGRlZmluaXRlbHkgZG9lcyBub3QgcmV0
dXJuIGFuIGFjY3VyYXRlIHNpemUuCisgICAgICAgIChXVEY6OmZhc3RNYWxsb2NDRkFsbG9jYXRv
cik6IEFkZGVkLiBSZXR1cm5zIGEgQ0ZBbGxvY2F0b3IgdGhhdCB1c2VzIGZhc3RNYWxsb2MvZnJl
ZS4KKworICAgICAgICAqIHd0Zi9TY2hlZHVsZVBhaXIuaDoKKyAgICAgICAgKFdURjo6U2NoZWR1
bGVQYWlyOjpTY2hlZHVsZVBhaXIpOiBVc2UgZmFzdE1hbGxvY0NGQWxsb2NhdG9yLgorCisgICAg
ICAgICogd3RmL1ZhbHVlQ2hlY2suaDogVXNlIGZhc3RNYWxsb2NDaGVja0NvbnNpc3RlbmN5Lgor
CisgICAgICAgICogd3RmL2NmL0NGVVJMRXh0cmFzLmNwcDoKKyAgICAgICAgKFdURjo6Ynl0ZXNB
c0NGRGF0YSk6IFVzZSBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IuCisgICAgICAgICogd3RmL2NmL0Zp
bGVTeXN0ZW1DRi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbTo6
cGF0aEFzVVJMKTogRGl0dG8uCisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0YuY3BwOgorICAg
ICAgICAoV1RGOjpodHRwU3R5bGVMYW5ndWFnZUNvZGUpOiBEaXR0by4KKyAgICAgICAgKiB3dGYv
Y2YvUnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdURjo6Y3JlYXRlVGltZXIpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6UnVuTG9vcCk6IERpdHRvLgorICAgICAgICAqIHd0Zi9jZi9V
UkxDRi5jcHA6CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOiBEaXR0by4K
KyAgICAgICAgKiB3dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tOgorICAgICAgICAoV1RGOjpoYXNF
bnRpdGxlbWVudCk6IERpdHRvLgorICAgICAgICAoV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQp
OiBEaXR0by4KKyAgICAgICAgKFdURjo6aGFzRW50aXRsZW1lbnRWYWx1ZSk6IERpdHRvLgorICAg
ICAgICAqIHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKFdURjo6ZGVjb2RlUGVy
Y2VudEVzY2FwZXMpOiBEaXR0by4KKyAgICAgICAgKFdURjo6VVJMQnlUcnVuY2F0aW5nT25lQ2hh
cmFjdGVyQmVmb3JlQ29tcG9uZW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OlVSTFdpdGhEYXRh
KTogRGl0dG8uCisgICAgICAgIChXVEY6OlVSTEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1
ZW50Q2hhcmFjdGVyKTogRGl0dG8uCisgICAgICAgICogd3RmL21hYy9GaWxlU3lzdGVtTWFjLm1t
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCk6IERpdHRvLgorICAg
ICAgICAqIHd0Zi9tYWMvU2NoZWR1bGVQYWlyTWFjLm1tOgorICAgICAgICAoV1RGOjpTY2hlZHVs
ZVBhaXI6OlNjaGVkdWxlUGFpcik6IERpdHRvLgorICAgICAgICAqIHd0Zi90ZXh0L2NmL1N0cmlu
Z0ltcGxDRi5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKTog
RGl0dG8uCisgICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nVmlld0NGLmNwcDoKKyAgICAgICAg
KFdURjo6U3RyaW5nVmlldzo6Y3JlYXRlQ0ZTdHJpbmcgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdURjo6U3RyaW5nVmlldzo6Y3JlYXRlQ0ZTdHJpbmdXaXRob3V0Q29weWluZyBjb25zdCk6IERp
dHRvLgorICAgICAgICAqIHd0Zi90ZXh0L2NvY29hL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VDb2NvYS5jcHA6CisgICAgICAgIChXVEY6OnRleHRCcmVha0xvY2FsZSk6IERpdHRvLgorCiAy
MDIxLTExLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ0Zd
IFJlZHVjZSBkdXBsaWNhdGlvbiBhbmQgdW5uZWVkZWQgYnVmZmVyIGFsbG9jYXRpb25zIGFuZCBj
b3B5aW5nIGluIFVSTCBjb2RlLCBhbHNvIHJlbW92ZSB1bnVzZWQgbWV0aG9kcyBhbmQgZnVuY3Rp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYTY3NmY1ZDQyNjg5MGZiOWE2NGY3NTY1ZGIyZWE5NTJmMDhlODMx
Ny4uMjEyMzVkZWNlYmIxOGNiOTYwNWZkOGQ2NTU2MzhhZjhlYzk0ZTZkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1MiBAQAorMjAyMS0xMS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NGXSBDcmVhdGUgYSBDRkFsbG9jYXRvciBiYXNlZCBvbiBGYXN0TWFs
bG9jIGFuZCB1c2UgaXQgd2hlcmV2ZXIgd2UgY2FuIHBhc3MgYW4gYWxsb2NhdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5NzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWFRleHRNYXJrZXJS
YW5nZSk6IFVzZSBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0
TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp0ZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzdGFy
dE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgIChuZXh0
VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldCk6IERpdHRvLgorICAgICAgICAocHJldmlvdXNU
ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KTogRGl0dG8uCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29u
dHJvbDpdKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6d3JpdGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkKTogRGl0dG8uCisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6Ol9jcmVhdGVDbGFzc2VzQnlJc0FJZk5lY2Vzc2FyeSk6IERpdHRvLgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6T2JqY0NsYXNzOjptZXRob2ROYW1lZCBjb25zdCk6IERpdHRvLgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNzOjpmaWVsZE5hbWVkIGNvbnN0KTogRGl0dG8uCisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6T2JqY0ZpZWxkOjpPYmpjRmllbGQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL1Nt
YXJ0UmVwbGFjZUNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFNtYXJ0U2V0KTogRGl0dG8u
CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6ZGV0ZWN0SXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRRdWVyeSk6
IERpdHRvLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVS
TCk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlM
aXN0UmVwcmVzZW50YXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6cmF3RGF0YVJlcHJlc2VudGF0aW9uKTogRGl0dG8uCisgICAgICAgICogcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFja0Rpc3Bs
YXlOYW1lKTogRGl0dG8uCisgICAgICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3Zlcmxh
eUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvd1RleHQpOiBEaXR0by4KKyAgICAgICAg
KiBwYWdlL21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVjdG9ySGlnaGxpZ2h0cyk6
IERpdHRvLgorICAgICAgICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFBob25l
TnVtYmVySGlnaGxpZ2h0cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6YnVpbGRTZWxlY3Rpb25IaWdobGlnaHQpOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1h
dExvY2FsaXplZFN0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VUaXRsZSk6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNv
Y29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVjb2RlV2ViTURh
dGEgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyQ0Y6
OktleWVkRGVjb2RlckNGKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGljdGlvbmFyeSk6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZW5jb2RlQnl0ZXMpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjplbmNvZGVVSW50MzIpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjplbmNvZGVVSW50NjQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjplbmNvZGVJbnQzMik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmVuY29kZUludDY0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6ZW5jb2RlRmxvYXQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OktleWVkRW5jb2RlckNGOjplbmNvZGVEb3VibGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OktleWVkRW5jb2RlckNGOjpiZWdpbkFycmF5KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01lZGlhVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24pOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYTo6dXBkYXRlU3Vw
cG9ydGVkQ29tbWFuZHMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VNYXRjaGluZ0Rp
Y3Rpb25hcnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6
SElER2FtZXBhZFByb3ZpZGVyKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmNyZWF0ZU1peElmTmVlZGVkKTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpvZmZzZXRUaW1lc3RhbXBzQnkp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0VGltZXN0
YW1wcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpkaXZp
ZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRl
Tm9uRGlzcGxheWluZ0NvcHkgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U2FtcGxlQVZGT2JqQzo6Z2V0UkdCQUltYWdlRGF0YSBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpkaXZpZGVJbnRvSG9tb2dlbmVvdXNTYW1wbGVz
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNsb25lU2Ft
cGxlQnVmZmVyQW5kU2V0QXNEaXNwbGF5SW1tZWRpYXRlbHkpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0Qnl0ZVJhbmdlT2Zmc2V0KTogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXI6OmRyYXdUZXh0QXRQb2ludCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6
OmNyZWF0ZUNHR3JhZGllbnQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6aW1hZ2VTb3VyY2VPcHRpb25zKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjppbWFnZVNvdXJjZUFzeW5jT3B0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0cmFuc2NvZGVJbWFnZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFn
ZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRUcnVlVHlwZUZlYXR1cmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVu
ZE9wZW5UeXBlRmVhdHVyZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6YWRkTGlnaHRQYWxl
dHRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjphZGREYXJrUGFsZXR0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6YWRkQXR0cmlidXRlc0ZvckN1c3RvbUZvbnRQYWxldHRlcyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6cHJlcGFyZVBsYXRmb3JtRm9udCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udERhdGFiYXNlOjpJbnN0YWxsZWRGb250OjpJbnN0YWxsZWRGb250
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RGF0YWJhc2U6OmNvbGxlY3Rpb25Gb3JG
YW1pbHkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhYmFzZTo6Zm9udEZvclBv
c3RTY3JpcHROYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpmb250V2l0aEZhbWlseVNw
ZWNpYWxDYXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjphdXRvQWN0aXZhdGVGb250KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpsb29rdXBGYWxsYmFja0ZvbnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmFkZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEZvckluc3RhbGxlZEZvbnRzKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjphZGRBdHRyaWJ1dGVzRm9yV2ViRm9udHMpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Omluc3RhbGxlZEZvbnRNYW5kYXRvcnlBdHRyaWJ1dGVzKTogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVIRVZDUGFyYW1ldGVycyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6dmFsaWRhdGVEb1ZpUGFyYW1ldGVycyk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpjb250aWd1b3Vz
Q29tcGxldGVCbG9ja0J1ZmZlciBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6VHJhY2tEYXRhOjpyZWFkRnJhbWVEYXRhKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6
Y3JlYXRlU2FtcGxlQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OmNyZWF0ZUZvbnRCeUFwcGx5aW5nV2VpZ2h0V2lkdGhJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlv
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OnJlbW92ZUNhc2NhZGVMaXN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Y29tcHV0ZUNhc2NhZGVMaXN0KTogRGl0dG8uCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjppc1ZQOURlY29kZXJBdmFpbGFibGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmlzVlA4RGVjb2RlckF2YWlsYWJsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNl
c3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246
OmVucXVldWVTYW1wbGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbjo6ZW5zdXJlRGVjb21wcmVzc2lvblNlc3Npb25Gb3JTYW1wbGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6aGFuZGxl
RGVjb21wcmVzc2lvbk91dHB1dCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbWFsbENhcHNP
cGVuVHlwZURpY3Rpb25hcnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNtYWxsQ2Fwc1Ry
dWVUeXBlRGljdGlvbmFyeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlZEZlYXR1
cmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNURm9udFdpdGhvdXRTeW50aGVz
aXphYmxlRmVhdHVyZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2Fz
Y2FkZVRvTGFzdFJlc29ydEF0dHJpYnV0ZXNEaWN0aW9uYXJ5KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpjdEZvbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUlPU3VyZmFjZUNWUGl4ZWxCdWZmZXJQb29sKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyRnJvbVBvb2wpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6aW5pdGlhbGl6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRD
TVNhbXBsZUJ1ZmZlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNl
c3Npb25WVDo6Y3JlYXRlUGl4ZWxCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZUNNU2FtcGxlQnVmZmVyKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhU
ZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRD
b250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9y
bURhdGEpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2VudGF0aW9uKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVz
IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZHJhd0xheWVyKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcubW06CisgICAgICAgIChXS1ZpZXdB
ZGRTdWJ2aWV3KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhy
ZWFkLm1tOgorICAgICAgICAoV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKTogRGl0dG8uCisgICAg
ICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjp2aWRlb1NhbXBsZUF2
YWlsYWJsZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVl
ZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNrZXRzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJr
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvcHlTYW1wbGVCdWZmZXJXaXRoQ3VycmVu
dFRpbWVTdGFtcCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNz
aW9uKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRp
b0NhcHR1cmVEZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZURl
dmljZTo6ZGV2aWNlQ2xvY2spOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVCbGFja1BpeGVsQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFt
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2E6Ok9uRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nl
cnRpZmljYXRlSW5mb0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
bzo6Y2VydGlmaWNhdGVDaGFpbkZyb21TZWNUcnVzdCk6IERpdHRvLgorICAgICAgICAoV1RGOjpQ
ZXJzaXN0ZW5jZTo6ZGVjb2RlQ2VydGlmaWNhdGVDaGFpbik6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZSk6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphZHZhbmNlQ3VycmVudFN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Zm9ybUNvcHlQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmll
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVTdG9yYWdlIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2ll
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCk6IERpdHRvLiBBbHNvIHJlbW92ZQorICAgICAgICB1bm5lY2Vzc2FyeSB1
c2Ugb2YgQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbik6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Omh0dHBIZWFkZXJWYWx1ZVVzaW5nU3VpdGFibGVFbmNvZGluZyk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWFt
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlv
bkZvclN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpj
b3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzRm9yVVJMIGNvbnN0KTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRSZXNwb25zZUZvclJlcXVlc3QpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6dXBkYXRlU3RhdGVX
aXRob3V0Tm90aWZ5aW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVO
b3RpZmllcjo6c3RhcnRPYnNlcnZpbmcpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1RleHRC
b3VuZGFyaWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6dG9rZW5pemVyRm9yU3RyaW5nKTogRGl0
dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoLVtX
ZWJDb3JlVGV4dEZpZWxkQ2VsbCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRyYXdpbmdC
b3JkZXJzT25seTpdKTogRGl0dG8uCisgICAgICAgICogdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZl
RHVtcFN1cHBvcnQubW06CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZUNGVVJM
UmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlVGVzdFN1
cHBvcnQ6OmNvbnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZVRlc3RTdXBwb3J0Ojpub3JtYWxpemVXZWJSZXNvdXJjZVVSTCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGlj
dGlvbmFyeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxT
dHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEpOiBEaXR0by4KKyAgICAgICAgKiB0ZXN0aW5nL2NvY29h
L1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW06CisgICAgICAgIChkcmF3UGF0
dGVybik6IERpdHRvLgorCiAyMDIxLTExLTEwICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIG5vbi1zdGFuZGFyZCAtd2Via2l0LWJvcmRlci1maXQgQ1NTIHBy
b3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA5Y2VhMzBiMmYxZTU4ZDA0ZDExZmEyNTIzYjk0
NDhiMjFkYTI2MGQ1Li5jMDVhMDIzMDU0OWU1OTY0MTk4NzY2MjI4ZWFkYzQ1ZWQ4OGJiYmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMS0xMSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NGXSBDcmVhdGUgYSBDRkFsbG9jYXRv
ciBiYXNlZCBvbiBGYXN0TWFsbG9jIGFuZCB1c2UgaXQgd2hlcmV2ZXIgd2UgY2FuIHBhc3MgYW4g
YWxsb2NhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzI5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcDoKKyAgICAgICAgKFBB
TDo6U2xlZXBEaXNhYmxlckNvY29hOjpTbGVlcERpc2FibGVyQ29jb2EpOiBVc2UgZmFzdE1hbGxv
Y0NGQWxsb2NhdG9yLgorCiAyMDIxLTExLTEwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEFkb3B0IC1bQVZBdWRpb1Nlc3Npb24gc2V0QXVkaXRUb2tl
bnNGb3JQcm9jZXNzQXNzZXJ0aW9uOl0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2JhYTgzM2UxNzAwNjBiYjUxYzU3
MjRmYTk5M2JmZjg3NmYzZTJiNi4uNzU5MDc5ZDI5NjY5ZWM4NThkZGJjNWU3ZmY3ZDczZmM4YjJh
OWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDUgQEAKKzIwMjEtMTEtMTEgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDRl0gQ3JlYXRlIGEgQ0ZBbGxvY2F0b3Ig
YmFzZWQgb24gRmFzdE1hbGxvYyBhbmQgdXNlIGl0IHdoZXJldmVyIHdlIGNhbiBwYXNzIGFuIGFs
bG9jYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMyOTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNz
Ojppbml0aWFsaXplR1BVUHJvY2Vzcyk6IFVzZSBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6bmV3VGVzdGluZ1Nlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQpOiBEaXR0by4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vZHVsZTo6
bG9hZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpNb2R1bGU6OnBsYXRmb3JtRnVuY3Rpb25Q
b2ludGVyIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm0vY2xhc3NpZmllci9jb2Nv
YS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYTo6c3RvcmFnZVBhdGgp
OiBEaXR0by4KKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOgorICAg
ICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyk6IERpdHRvLgorICAgICAg
ICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbToKKyAgICAgICAgKHRy
YW5zZm9ybURhdGFUb0NlcnRpZmljYXRlcyk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9BUEkv
Yy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOiBEaXR0by4KKyAgICAg
ICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6aW5pdGlhbGl6
ZUNvbm5lY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbToKKyAgICAgICAgKC1bV0tTZWN1cmVDb2RpbmdVUkxXcmFwcGVyIGluaXRXaXRo
Q29kZXI6XSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9Db2RlU2lnbmluZy5tbToK
KyAgICAgICAgKFdlYktpdDo6Y29kZVNpZ25pbmdJZGVudGlmaWVyRm9yQ3VycmVudFByb2Nlc3Mp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6Y3VycmVudFByb2Nlc3NJc1BsYXRmb3JtQmluYXJ5
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmNvZGVTaWduaW5nSWRlbnRpZmllckFuZFBsYXRm
b3JtQmluYXJ5U3RhdHVzKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0NvY29hL1dLTlNVUkwu
bW06CisgICAgICAgICgtW1dLTlNVUkwgX3dlYl9jcmVhdGVUYXJnZXRdKTogRGl0dG8uCisgICAg
ICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAg
ICAoSVBDOjpmaW5kRm9udERlc2NyaXB0b3IpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4+OjpkZWNvZGUpOiBEaXR0by4KKyAg
ICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpj
cmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmV0YWluUHRyPENGQXJyYXlSZWY+Pjo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+OjpkZWNvZGUp
OiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+Pjo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmV0YWlu
UHRyPENGVVJMUmVmPj46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4+OjpkZWNvZGUpOiBEaXR0by4KKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8U2VjQWNjZXNzQ29udHJvbFJlZj4+Ojpk
ZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvY2YvQ29va2llU3RvcmFnZVV0aWxzQ0Yu
bW06CisgICAgICAgIChXZWJLaXQ6OmNvb2tpZVN0b3JhZ2VGcm9tSWRlbnRpZnlpbmdEYXRhKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZ5aW5nRGF0YUZyb21Db29raWVTdG9yYWdl
KTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMu
bW06CisgICAgICAgIChJUEM6OmVuY29kZU5TRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKElQQzo6
ZGVjb2RlTlNFcnJvcik6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b25uZWN0aW9uLm1tOgorICAgICAgICAoZGlkUmVjZWl2ZU1lc3NhZ2UpOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vbWFjL1dlYkNyZWRlbnRpYWxN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNyZWRlbnRpYWw6OldlYkNyZWRlbnRpYWwpOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2Vy
dmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6SGlkU2VydmljZSk6IERpdHRv
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhl
bnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGlu
dWVNYWtlQ3JlZGVudGlhbEFmdGVyRGVjaWRlUG9saWN5KTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVjZWl2
aW5nTEFDb250ZXh0KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xv
Y2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0
ZXJzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
X1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbToKKyAgICAgICAgKC1bX1dLVG91Y2hFdmVudEdlbmVy
YXRvciBfY3JlYXRlSU9ISURFdmVudFR5cGU6XSk6IERpdHRvLgorICAgICAgICAoLVtfV0tUb3Vj
aEV2ZW50R2VuZXJhdG9yIF9zZW5kSElERXZlbnQ6XSk6IERpdHRvLgorICAgICAgICAoLVtfV0tU
b3VjaEV2ZW50R2VuZXJhdG9yIF9zZW5kTWFya2VySElERXZlbnRXaXRoQ29tcGxldGlvbkJsb2Nr
Ol0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOl0p
OiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBwcm92aWRlRGF0YUZvckl0ZW06XSk6IERp
dHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6ZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEpOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlRGljdGlvbmFyeSk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojpl
bmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6ZGVjb2Rl
TGVnYWN5U2Vzc2lvblN0YXRlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0ltYWdl
SW5RdWlja0xvb2tQcmV2aWV3UGFuZWwpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6Z2V0QWxsU2NyaXB0c0lu
UERGRG9jdW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6ZGF0YVByb3ZpZGVyR2V0Qnl0
ZVJhbmdlc0NhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c3Ry
ZWFtRGlkUmVjZWl2ZURhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpl
bnN1cmVEYXRhQnVmZmVyTGVuZ3RoKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwZGZTbmFwc2hvdEF0U2l6ZSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1BhZ2VzVG9Q
REZJbXBsKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkZyb21QREZE
b2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25l
bnRSZWdpc3RyYXRpb25zKTogRGl0dG8uCisKIDIwMjEtMTEtMTAgIFBlciBBcm5lIFZvbGxhbiA8
cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQmxvY2sgc2FuZGJveCBhY2Nlc3MgdG8gY29u
c3VtZSBtYWNoIGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMjQ0YjhhYmZmY2I4
MTQwMTRmYjQwZDFiYWFmNzg3Mjk5YzVkZTY3ZS4uNzkyYjJkNGNhYjgxNGIwYmQ4MjE2N2NhNTBk
ZTIwMTFhNjgxMGMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MS0xMS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NGXSBD
cmVhdGUgYSBDRkFsbG9jYXRvciBiYXNlZCBvbiBGYXN0TWFsbG9jIGFuZCB1c2UgaXQgd2hlcmV2
ZXIgd2UgY2FuIHBhc3MgYW4gYWxsb2NhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcC5jcHA6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3
VGVzdGluZ1Nlc3Npb24pOiBVc2UgZmFzdE1hbGxvY0NGQWxsb2NhdG9yLgorICAgICAgICAoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKTogRGl0dG8uCisKIDIwMjEtMTEt
MDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDbGlja2luZyBh
IGxpbmsgc2hvdWxkIHByZWNvbm5lY3QgdG8gZGVzdGluYXRpb24gYXMgZmlyc3QgcGFydHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggMDA2NzM2NzA5YTJjMTJhMjYwOTg4N2M5ZDc3ODQy
YzM0MDQ1Y2UyNi4uNTMyMDRiODc0MDAyNzJiOWUyOTM1Mjk4NWNlZjIzNTBmZjlkYzhiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMS0xMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NGXSBDcmVhdGUgYSBDRkFs
bG9jYXRvciBiYXNlZCBvbiBGYXN0TWFsbG9jIGFuZCB1c2UgaXQgd2hlcmV2ZXIgd2UgY2FuIHBh
c3MgYW4gYWxsb2NhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzI5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKyAgICAg
ICAgKGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKTogVXNlIGZhc3RNYWxsb2NDRkFsbG9jYXRvci4K
KwogMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
Q3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5z
dGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRl
eCBmNzcxMzBmZjc5ZWU3ZjJjZjQ0YWIyMmVhMGZjMTI3NDc0MDllYTEyLi5iMjZjMWVkYTZjZTEy
MGQ5YTY2MDQ3YjAzYWEwZTA1MDUxN2ZhZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTEtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFtDRl0gQ3JlYXRlIGEgQ0ZBbGxvY2F0b3IgYmFzZWQgb24gRmFzdE1h
bGxvYyBhbmQgdXNlIGl0IHdoZXJldmVyIHdlIGNhbiBwYXNzIGFuIGFsbG9jYXRvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTczCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYlVJS2l0
U3VwcG9ydC5tbToKKyAgICAgICAgKExvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzKTogVXNlIGZhc3RN
YWxsb2NDRkFsbG9jYXRvci4KKwogMjAyMS0xMC0yMiAgSWFuIEFuZGVyc29uICA8aWFuYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIGEgbW9kdWxlIG1hcCBmaWxlIGZvciBQcml2YXRlRnJhbWV3
b3Jrcy9XZWJLaXRMZWdhY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBiYjgwODY0
OWNlNDYyZTUxMDhjMWVhNGFlZmRiYWJlYTk2YzA4OTlhLi5iNjI1YzllMTM5MTQxODg0ZWZhNzFj
YjkzNjIzMDg2NmUyNTllN2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjEtMTEtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtDRl0gQ3JlYXRlIGEgQ0ZBbGxvY2F0b3IgYmFzZWQgb24gRmFzdE1hbGxvYyBhbmQg
dXNlIGl0IHdoZXJldmVyIHdlIGNhbiBwYXNzIGFuIGFsbG9jYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyOTczCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L0hpc3RvcnlQcm9wZXJ0
eUxpc3QubW06CisgICAgICAgIChIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyOjpyZWxlYXNlRGF0
YSk6IFVzZSBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IuCisgICAgICAgICogTWlzYy9XZWJFbGVtZW50
RGljdGlvbmFyeS5tbToKKyAgICAgICAgKCtbV2ViRWxlbWVudERpY3Rpb25hcnkgaW5pdGlhbGl6
ZUxvb2t1cFRhYmxlXSk6IERpdHRvLgorICAgICAgICAqIE1pc2MvV2ViTG9jYWxpemFibGVTdHJp
bmdzLm1tOgorICAgICAgICAoV2ViTG9jYWxpemVkU3RyaW5nKTogRGl0dG8uCisgICAgICAgICog
TWlzYy9XZWJOU0RhdGFFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfY2FwaXRh
bGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFtZV0pOiBEaXR0by4KKyAgICAgICAgKiBQbHVnaW5zL1dl
YkJhc2VQbHVnaW5QYWNrYWdlLm1tOgorICAgICAgICAoLVtXZWJCYXNlUGx1Z2luUGFja2FnZSBp
bml0V2l0aFBhdGg6XSk6IERpdHRvLgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luQ29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBpbml0V2l0aERvY3VtZW50
VmlldzpdKTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpwcm9ncmVz
c0VzdGltYXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06
CisgICAgICAgIChjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKTogRGl0dG8uCisgICAgICAgICogV2Vi
Vmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViUERGUmVwcmVzZW50
YXRpb24gY29udmVydFBvc3RTY3JpcHREYXRhU291cmNlVG9QREY6XSk6IERpdHRvLgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfYWRkVG9BbGxXZWJW
aWV3c1NldF0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViVmlldyBwcmV2aW91c1ZhbGlkS2V5Vmll
d10pOiBEaXR0by4KKwogMjAyMS0xMS0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NGXSBSZWR1Y2UgZHVwbGljYXRpb24gYW5kIHVubmVlZGVkIGJ1ZmZlciBh
bGxvY2F0aW9ucyBhbmQgY29weWluZyBpbiBVUkwgY29kZSwgYWxzbyByZW1vdmUgdW51c2VkIG1l
dGhvZHMgYW5kIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQpp
bmRleCBlOTA3ZDY5YTZmZjVlYTNhN2Y1OGMyNmNhNzQwYjIzYTAyMTEyNjE0Li5lYjkzODM1YWI3
YjEyNDg4Y2FjNmM5ZTRmM2RhM2U0NDM3ODlmNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5tbQpAQCAtMjYyLDcgKzI2Miw3IEBAIC0gKE5TU3RyaW5nICopbmFtZQogICAg
IGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBhZG9wdENGKEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKS5icmlkZ2luZ0F1
dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoZmFz
dE1hbGxvY0NGQWxsb2NhdG9yKCksIG5hbWUpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3IuY3BwCmluZGV4IDk2NzJlZjAyMTQ0NDdjZGJhNDFm
ODA3NTVhY2QxZmRhMWUwMGJjMWMuLjkwMjU0Yzg1YzFlNWYxNzc0ZTcyZmNhNGI2NzU2MjViNWY0
YjVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNw
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0
b3IuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgSlNSZW1vdGVJbnNwZWN0b3JTdGFydCh2b2lk
KQogdm9pZCBKU1JlbW90ZUluc3BlY3RvclNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihQcm9j
ZXNzSUQgcGlkLCBjb25zdCB1aW50OF90KiBhdWRpdERhdGEsIHNpemVfdCBhdWRpdExlbmd0aCkK
IHsKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gYXVkaXREYXRhUmVmID0gYWRvcHRDRihDRkRhdGFDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgYXVkaXREYXRhLCBhdWRpdExlbmd0aCkpOworICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGF1ZGl0RGF0YVJlZiA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCBhdWRpdERhdGEsIGF1ZGl0TGVuZ3RoKSk7CiAgICAgUmVtb3Rl
SW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24ocGlkLCBh
dWRpdERhdGFSZWYpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGlkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRleCAyMWY5MTkwNjcxMWRmNjRhZjhjNzViMjkyMzZlNTc4
ODkxNzI3NjViLi4yOGY3Y2E4OTEyMTUwOTQ2ZTllYzJhNjBhZDdiMzhkNTY2YmFlNDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC03NzMsNyArNzczLDcgQEAgc3RhdGlj
IEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIHZhbHVlVG9PYmplY3RXaXRob3V0Q29weShKU0ds
b2JhbENvbnRleHRSZWYgY28KICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29u
dGV4dCwgdmFsdWUpKSB7CiAgICAgICAgICAgICAvLyBXb3VsZCBiZSBuaWNlIHRvIHVuaXF1ZSBz
dHJpbmdzLCB0b28uCiAgICAgICAgICAgICBhdXRvIGpzc3RyaW5nID0gYWRvcHRSZWYoSlNWYWx1
ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwgMCkpOwotICAgICAgICAgICAgcHJpbWl0aXZl
ID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc3N0
cmluZy5nZXQoKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKKyAgICAgICAgICAgIHByaW1pdGl2
ZSA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IGpzc3RyaW5nLmdldCgpKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9IGVsc2Ug
aWYgKEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpKQogICAgICAgICAgICAgcHJpbWl0aXZl
ID0gW05TTnVsbCBudWxsXTsKICAgICAgICAgZWxzZSB7CkBAIC04MzMsNyArODMzLDcgQEAgc3Rh
dGljIGlkIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQs
IEpTQ29udGFpbmVyQ29udmVydG8KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUg
PSBKU1Byb3BlcnR5TmFtZUFycmF5R2V0TmFtZUF0SW5kZXgocHJvcGVydHlOYW1lQXJyYXksIGkp
OwogICAgICAgICAgICAgICAgIGlmIChpZCBvYmpjID0gY29udmVydG9yLmNvbnZlcnQoSlNPYmpl
Y3RHZXRQcm9wZXJ0eShjb250ZXh0LCBqcywgcHJvcGVydHlOYW1lLCAwKSkpCi0gICAgICAgICAg
ICAgICAgICAgIGRpY3Rpb25hcnlbKF9fYnJpZGdlIE5TU3RyaW5nICopYWRvcHRDRihKU1N0cmlu
Z0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm9wZXJ0eU5hbWUpKS5nZXQoKV0g
PSBvYmpjOworICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5WyhfX2JyaWRnZSBOU1N0cmlu
ZyAqKWFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IHByb3BlcnR5TmFtZSkpLmdldCgpXSA9IG9iamM7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWxlYXNlKHByb3BlcnR5TmFtZUFycmF5KTsKQEAgLTg4
MSw3ICs4ODEsNyBAQCBpZCB2YWx1ZVRvU3RyaW5nKEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcAogICAgICAgICByZXR1cm4gbmls
OwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nLmdldCgpKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwor
ICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpLCBqc3N0cmluZy5nZXQoKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogaWQg
dmFsdWVUb0RhdGUoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KaW5kZXggYTFkZTFmNTJjN2RlOGY3Y2RmZDExYjdkNjRh
NzE5M2JhMDI5Y2QzOS4uMDRkN2M5MGIzOTNhMGQzZTJkY2E2MWQ0MGMwZWIwN2IwNjc1NzQ3MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2Eu
bW0KQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgUmVtb3RlVGFyZ2V0SW5pdGlhbGl6ZUds
b2JhbFF1ZXVlKCkKICAgICAgICAgcndpUXVldWUgPSBuZXcgUmVtb3RlVGFyZ2V0UXVldWU7CiAK
ICAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHsg
MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgUmVtb3RlVGFyZ2V0SGFuZGxlUnVuU291cmNlR2xvYmFsIH07Ci0g
ICAgICAgIHJ3aVJ1bkxvb3BTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMSwgJnJ1bkxvb3BTb3VyY2VDb250ZXh0KTsKKyAgICAgICAgcndpUnVuTG9v
cFNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwg
MSwgJnJ1bkxvb3BTb3VyY2VDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgdG8gdGhlIGRlZmF1
bHQgcnVuIGxvb3AgbW9kZSBmb3IgZGVmYXVsdCBoYW5kbGluZywgYW5kIHRoZSBKU0NvbnRleHQg
cmVtb3RlIGluc3BlY3RvciBydW4gbG9vcCBtb2RlIHdoZW4gcGF1c2VkLgogICAgICAgICBDRlJ1
bkxvb3BBZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0TWFpbigpLCByd2lSdW5Mb29wU291cmNlLCBrQ0ZS
dW5Mb29wRGVmYXVsdE1vZGUpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0OjpzZXR1cFJ1bkxvb3AoKQogICAgIG1fcnVuTG9vcCA9IHRhcmdldFJ1bkxv
b3A7CiAKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0g
eyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBSZW1vdGVUYXJnZXRIYW5kbGVSdW5Tb3VyY2VXaXRoSW5mbyB9Owot
ICAgIG1fcnVuTG9vcFNvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIDEsICZydW5Mb29wU291cmNlQ29udGV4dCkpOworICAgIG1fcnVuTG9v
cFNvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpLCAxLCAmcnVuTG9vcFNvdXJjZUNvbnRleHQpKTsKIAogICAgIENGUnVuTG9vcEFkZFNv
dXJjZShtX3J1bkxvb3AuZ2V0KCksIG1fcnVuTG9vcFNvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKICAgICBhdXRvIG1vZGUgPSBKU0dsb2JhbE9iamVjdERlYnVnZ2VyOjpydW5M
b29wTW9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAppbmRleCA5ZjNmYmE0YzQxMDA3M2VhM2UxYzNm
ZTY3MzI3MTBmZWQ3MDlhYjZlLi45MTM2YTMxODQ3MTZhMDZkOTg0NGMwOGY2OWE4MjRkNTAzYjMy
ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcApAQCAtNzksOCArNzksOCBAQCBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0
IGFyZ3MpCiAKICNpZiBVU0UoQ0YpICYmICFPUyhXSU5ET1dTKQogICAgIGlmIChzdHJzdHIoZm9y
bWF0LCAiJUAiKSkgewotICAgICAgICBhdXRvIGNmRm9ybWF0ID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvcm1hdCwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4KSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0
ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgY2ZG
b3JtYXQuZ2V0KCksIGFyZ3MpKTsKKyAgICAgICAgYXV0byBjZkZvcm1hdCA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgZm9ybWF0LCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3Io
KSwgbnVsbHB0ciwgY2ZGb3JtYXQuZ2V0KCksIGFyZ3MpKTsKICAgICAgICAgdmFfZW5kKGFyZ3ND
b3B5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKICAgICB9CkBAIC0xNDAsMTAgKzE0
MCwxMCBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl9jb21tb24oY29uc3QgY2hhciogZm9y
bWF0LCB2YV9saXN0IGFyZ3MpCiB7CiAjaWYgVVNFKENGKSAmJiAhT1MoV0lORE9XUykKICAgICBp
ZiAoc3Ryc3RyKGZvcm1hdCwgIiVAIikpIHsKLSAgICAgICAgYXV0byBjZkZvcm1hdCA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhudWxscHRyLCBmb3JtYXQsIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCkpOworICAgICAgICBhdXRvIGNmRm9ybWF0ID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDU3RyaW5nKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBmb3JtYXQsIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCkpOwogCiAgICAgICAgIEFMTE9XX05PTkxJVEVSQUxfRk9STUFUX0JFR0lO
Ci0gICAgICAgIGF1dG8gc3RyID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRB
cmd1bWVudHMobnVsbHB0ciwgbnVsbHB0ciwgY2ZGb3JtYXQuZ2V0KCksIGFyZ3MpKTsKKyAgICAg
ICAgYXV0byBzdHIgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50
cyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbnVsbHB0ciwgY2ZGb3JtYXQuZ2V0KCksIGFyZ3Mp
KTsKICAgICAgICAgQUxMT1dfTk9OTElURVJBTF9GT1JNQVRfRU5ECiAgICAgICAgIENGSW5kZXgg
bGVuZ3RoID0gQ0ZTdHJpbmdHZXRNYXhpbXVtU2l6ZUZvckVuY29kaW5nKENGU3RyaW5nR2V0TGVu
Z3RoKHN0ci5nZXQoKSksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CiAgICAgICAgIGNvbnN0ZXhw
ciB1bnNpZ25lZCBJbml0aWFsQnVmZmVyU2l6ZSB7IDI1NiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRmFzdE1hbGxvYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcApp
bmRleCBmNTYwZjU2YjAyYThjOTYxZTBjZmY5ODhmNDA4OTI0MzE3NjllN2ZkLi42MzFiMzU1NGYx
YzFiNTY3ZGEwNDJjMGIwZWQ1NmE1N2M0YThhYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9GYXN0TWFsbG9jLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDcsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwog
ICogYXJlIG1ldDoKQEAgLTI2LDE1ICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKKyNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDxz
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogI2lmIE9TKFdJ
TkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2Vsc2UKLSNpZiBIQVZFKFJFU09VUkNFX0gp
CisjZW5kaWYKKworI2lmICFPUyhXSU5ET1dTKSAmJiBIQVZFKFJFU09VUkNFX0gpCiAjaW5jbHVk
ZSA8c3lzL3Jlc291cmNlLmg+Ci0jZW5kaWYgLy8gSEFWRShSRVNPVVJDRV9IKQorI2VuZGlmCisK
KyNpZiBVU0UoQ0YpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKQEAgLTQ0LDExICs0
OSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
ZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1Nob3QuaD4KLQotI2lmIFBMQVRGT1JN
KENPQ09BKQotI2luY2x1ZGUgPG5vdGlmeS5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUFMTE9D
X0hFQVBfQlJFQUtET1dOKSAmJiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxub3RpZnkuaD4K
ICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTI3Niw4ICsyODAsMTMgQEAgVHJ5TWFsbG9j
UmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pCiAgICAgcmV0dXJu
IHJlYWxsb2MocCwgbik7CiB9CiAKLXZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCkg
eyB9Ci12b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUZvclRoaXNUaHJlYWQoKSB7IH0K
K3ZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCkKK3sKK30KKwordm9pZCByZWxlYXNl
RmFzdE1hbGxvY0ZyZWVNZW1vcnlGb3JUaGlzVGhyZWFkKCkKK3sKK30KIAogRmFzdE1hbGxvY1N0
YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MoKQogewpAQCAtMjg1LDcgKzI5NCw3IEBAIEZh
c3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCkKICAgICByZXR1cm4gc3Rh
dGlzdGljczsKIH0KIAotc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqIHApCitib29s
IGZhc3RNYWxsb2NDaGVja0NvbnNpc3RlbmN5KGNvbnN0IHZvaWQqIHApCiB7CiAjaWYgT1MoREFS
V0lOKQogICAgIHJldHVybiBtYWxsb2Nfc2l6ZShwKTsKQEAgLTI5Myw3ICszMDIsNyBAQCBzaXpl
X3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9pZCogcCkKICAgICByZXR1cm4gX21zaXplKGNvbnN0
X2Nhc3Q8dm9pZCo+KHApKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHApOwotICAgIHJldHVy
biAxOworICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CiAKQEAgLTMwNywxMSArMzE2LDE3IEBA
IHZvaWQgZmFzdERlY29tbWl0QWxpZ25lZE1lbW9yeSh2b2lkKiBwdHIsIHNpemVfdCBzaXplKQog
ICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdChwdHIsIHNpemUpOwogfQogCi12b2lkIGZhc3RFbmFi
bGVNaW5pTW9kZSgpIHsgfQordm9pZCBmYXN0RW5hYmxlTWluaU1vZGUoKQoreworfQogCi12b2lk
IGZhc3REaXNhYmxlU2NhdmVuZ2VyKCkgeyB9Cit2b2lkIGZhc3REaXNhYmxlU2NhdmVuZ2VyKCkK
K3sKK30KIAotdm9pZCBmYXN0TWFsbG9jRHVtcE1hbGxvY1N0YXRzKCkgeyB9Cit2b2lkIGZhc3RN
YWxsb2NEdW1wTWFsbG9jU3RhdHMoKQoreworfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApAQCAt
NTYyLDE3ICs1NzcsMTAgQEAgdm9pZCBmYXN0RnJlZSh2b2lkKiBvYmplY3QpCiAjZW5kaWYKIH0K
IAotc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqKQotewotICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGluY29ycmVjdDsgYmVzdCBmaXggaXMgcHJvYmFibHkgdG8gcmVtb3ZlIHRoaXMgZnVu
Y3Rpb24uCi0gICAgLy8gQ2FsbGVyIGN1cnJlbnRseSBhcmUgYWxsIHVzaW5nIHRoaXMgZm9yIGFz
c2VydGlvbiwgbm90IHRvIGFjdHVhbGx5IGNoZWNrCi0gICAgLy8gdGhlIHNpemUgb2YgdGhlIGFs
bG9jYXRpb24sIHNvIG1heWJlIHdlIGNhbiBjb21lIHVwIHdpdGggc29tZXRoaW5nIGZvciB0aGF0
LgotICAgIHJldHVybiAxOwotfQotCi1zaXplX3QgZmFzdE1hbGxvY0dvb2RTaXplKHNpemVfdCBz
aXplKQorYm9vbCBmYXN0TWFsbG9jQ2hlY2tDb25zaXN0ZW5jeShjb25zdCB2b2lkKikKIHsKLSAg
ICByZXR1cm4gc2l6ZTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGZhbHNlIGlm
IHRoZSBwb2ludGVyIGlzIG5vdCBhIG1hbGxvYyBibG9jaywgb3Igd2Ugc2hvdWxkIHJlbW92ZSB0
aGlzIGZ1bmN0aW9uLgorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkKiBmYXN0QWxpZ25lZE1h
bGxvYyhzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKQEAgLTY4NywzICs2OTUsMzEgQEAg
dm9pZCBmYXN0RGlzYWJsZVNjYXZlbmdlcigpCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlm
IC8vIFVTRShTWVNURU1fTUFMTE9DKQorCisjaWYgVVNFKENGKQorCituYW1lc3BhY2UgV1RGIHsK
KworQ0ZBbGxvY2F0b3JSZWYgZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCkKK3sKKyAgICBzdGF0aWMg
Q0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2UsIFsmXSB7CisgICAgICAgIENGQWxsb2NhdG9yQ29u
dGV4dCBjb250ZXh0IHsgfTsKKyAgICAgICAgY29udGV4dC5hbGxvY2F0ZSA9IFtdIChDRkluZGV4
IHNpemUsIENGT3B0aW9uRmxhZ3MsIHZvaWQqKSB7CisgICAgICAgICAgICByZXR1cm4gZmFzdE1h
bGxvYyhzaXplKTsKKyAgICAgICAgfTsKKyAgICAgICAgY29udGV4dC5yZWFsbG9jYXRlID0gW10g
KHZvaWQqIG9iamVjdCwgQ0ZJbmRleCBzaXplLCBDRk9wdGlvbkZsYWdzLCB2b2lkKikgeworICAg
ICAgICAgICAgcmV0dXJuIGZhc3RSZWFsbG9jKG9iamVjdCwgc2l6ZSk7CisgICAgICAgIH07Cisg
ICAgICAgIGNvbnRleHQuZGVhbGxvY2F0ZSA9IFtdICh2b2lkKiBvYmplY3QsIHZvaWQqKSB7Cisg
ICAgICAgICAgICBmYXN0RnJlZShvYmplY3QpOworICAgICAgICB9OworICAgICAgICBhbGxvY2F0
b3IgPSBDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0b3JVc2VDb250ZXh0LCAmY29udGV4dCk7
CisgICAgfSk7CisgICAgcmV0dXJuIGFsbG9jYXRvcjsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RN
YWxsb2MuaAppbmRleCAxMjY1MjY2ZDE5NWQxZjg4OWJhYjg3MDM1NDA2NGM3ODE3NmZmNGUzLi5i
NTM2NDYwYjYwMzEwNWQwMGZiY2QzY2Y2YjlhMjU1OWRlZTIwMDJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1
LDYgKzI1LDEwIEBACiAjaW5jbHVkZSA8d3RmL0RlYnVnSGVhcC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAorI2lmIFVTRShDRikKK3VzaW5nIENGQWxsb2NhdG9yUmVmID0gY29u
c3Qgc3RydWN0IF9fQ0ZBbGxvY2F0b3IqOworI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewogCiAv
LyBUaGVyZSBhcmUgc2V2ZXJhbCBtYWxsb2MtcmVsYXRlZCBtYWNyb3MgdG8gYW5ub3RhdGUgY2xh
c3MgLyBzdHJ1Y3QuIElmIHRoZXNlIGFubm90YXRpb25zIGFyZSBhdHRhY2hlZCwKQEAgLTEwNywx
MCArMTExLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RBbGlnbmVkTWFsbG9jKHNp
emVfdCBhbGlnbm1lbnQsIHNpemVfdCkgUkVUVVJOU19OT04KIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkKiB0cnlGYXN0QWxpZ25lZE1hbGxvYyhzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdEFsaWduZWRGcmVlKHZvaWQqKTsKIAotV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7Ci0KLS8vIEZJWE1F
OiBUaGlzIGlzIG5vbi1oZWxwZnVsOyBmYXN0TWFsbG9jR29vZFNpemUgd2lsbCBiZSByZW1vdmVk
IHNvb24uCi1XVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZhc3RNYWxsb2NHb29kU2l6ZShzaXpl
X3QpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZmFzdE1hbGxvY0NoZWNrQ29uc2lzdGVuY3ko
Y29uc3Qgdm9pZCopOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWxlYXNlRmFzdE1hbGxv
Y0ZyZWVNZW1vcnkoKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VGYXN0TWFsbG9j
RnJlZU1lbW9yeUZvclRoaXNUaHJlYWQoKTsKQEAgLTEyMiw2ICsxMjMsMTAgQEAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZmFzdEVuYWJsZU1pbmlNb2RlKCk7CiAKIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGZhc3REaXNhYmxlU2NhdmVuZ2VyKCk7CiAKKyNpZiBVU0UoQ0YpCitXVEZfRVhQT1JU
X1BSSVZBVEUgQ0ZBbGxvY2F0b3JSZWYgZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCk7CisjZW5kaWYK
KwogY2xhc3MgRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3BlIHsKIHB1YmxpYzoK
ICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMTMzLDkgKzEzOCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3BlKGNvbnN0IEZvcmJpZE1h
bGxvY1VzZUZvckN1cnJlbnRUaHJlYWRTY29wZSYpID0gZGVsZXRlOwotICAgIEZvcmJpZE1hbGxv
Y1VzZUZvckN1cnJlbnRUaHJlYWRTY29wZShGb3JiaWRNYWxsb2NVc2VGb3JDdXJyZW50VGhyZWFk
U2NvcGUmJikgPSBkZWxldGU7CiAgICAgRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNj
b3BlJiBvcGVyYXRvcj0oY29uc3QgRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3Bl
JikgPSBkZWxldGU7Ci0gICAgRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3BlJiBv
cGVyYXRvcj0oRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3BlJiYpID0gZGVsZXRl
OwogfTsKIAogY2xhc3MgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRT
Y29wZSB7CkBAIC0xNDksOSArMTUyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBEaXNhYmxl
TWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlKGNvbnN0IERpc2FibGVNYWxs
b2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUmKSA9IGRlbGV0ZTsKLSAgICBEaXNh
YmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlKERpc2FibGVNYWxsb2NS
ZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUmJikgPSBkZWxldGU7CiAgICAgRGlzYWJs
ZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSYgb3BlcmF0b3I9KGNvbnN0
IERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUmKSA9IGRlbGV0
ZTsKLSAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlJiBv
cGVyYXRvcj0oRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSYm
KSA9IGRlbGV0ZTsKIH07CiAKIHN0cnVjdCBGYXN0TWFsbG9jU3RhdGlzdGljcyB7CkBAIC0xNjUs
NyArMTY2LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdE1hbGxvY0R1bXBNYWxsb2NT
dGF0cygpOwogCiAvLyBUaGlzIGRlZmluZXMgYSB0eXBlIHdoaWNoIGhvbGRzIGFuIHVuc2lnbmVk
IGludGVnZXIgYW5kIGlzIHRoZSBzYW1lCiAvLyBzaXplIGFzIHRoZSBtaW5pbWFsbHkgYWxpZ25l
ZCBtZW1vcnkgYWxsb2NhdGlvbi4KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEFsbG9jQWxp
Z25tZW50SW50ZWdlcjsKK3VzaW5nIEFsbG9jQWxpZ25tZW50SW50ZWdlciA9IHVuc2lnbmVkIGxv
bmcgbG9uZzsKIAogaW5saW5lIFRyeU1hbGxvY1JldHVyblZhbHVlOjpUcnlNYWxsb2NSZXR1cm5W
YWx1ZSh2b2lkKiBkYXRhKQogICAgIDogbV9kYXRhKGRhdGEpCkBAIC0yODcsOCArMjg4LDcgQEAg
dXNpbmcgV1RGOjppc0Zhc3RNYWxsb2NFbmFibGVkOwogdXNpbmcgV1RGOjpmYXN0Q2FsbG9jOwog
dXNpbmcgV1RGOjpmYXN0RnJlZTsKIHVzaW5nIFdURjo6ZmFzdE1hbGxvYzsKLXVzaW5nIFdURjo6
ZmFzdE1hbGxvY0dvb2RTaXplOwotdXNpbmcgV1RGOjpmYXN0TWFsbG9jU2l6ZTsKK3VzaW5nIFdU
Rjo6ZmFzdE1hbGxvY0NoZWNrQ29uc2lzdGVuY3k7CiB1c2luZyBXVEY6OmZhc3RNZW1EdXA7CiB1
c2luZyBXVEY6OmZhc3RSZWFsbG9jOwogdXNpbmcgV1RGOjpmYXN0U3RyRHVwOwpAQCAtMzAwLDYg
KzMwMCwxMCBAQCB1c2luZyBXVEY6OnRyeUZhc3RaZXJvZWRNYWxsb2M7CiB1c2luZyBXVEY6OmZh
c3RBbGlnbmVkTWFsbG9jOwogdXNpbmcgV1RGOjpmYXN0QWxpZ25lZEZyZWU7CiAKKyNpZiBVU0Uo
Q0YpCit1c2luZyBXVEY6OmZhc3RNYWxsb2NDRkFsbG9jYXRvcjsKKyNlbmRpZgorCiAjaWYgQ09N
UElMRVIoR0NDX0NPTVBBVElCTEUpICYmIE9TKERBUldJTikKICNkZWZpbmUgV1RGX1BSSVZBVEVf
SU5MSU5FIF9fcHJpdmF0ZV9leHRlcm5fXyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lu
bGluZSkpCiAjZWxpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1NjaGVkdWxlUGFpci5oIGIvU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmgK
aW5kZXggNDQ3M2M1Y2NmMDA3YjdlZjVjNDkzOWFiNGY4N2QxNGI2NWUwNzNhYi4uYmRlZjNmMjE1
ZDhjY2ZhY2MzNmFjMTliODVjZWQzMjMzNzE1YWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvU2NoZWR1bGVQYWlyLmgKKysrIGIvU291cmNlL1dURi93dGYvU2NoZWR1bGVQYWlyLmgKQEAg
LTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKICAg
ICB7CiAgICAgICAgIGlmIChtb2RlKQotICAgICAgICAgICAgbV9tb2RlID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZUNvcHkobnVsbHB0ciwgbW9kZSkpOworICAgICAgICAgICAgbV9tb2RlID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZUNvcHkoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIG1vZGUpKTsK
ICAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1ZhbHVlQ2hlY2suaCBiL1NvdXJjZS9XVEYvd3RmL1ZhbHVlQ2hlY2suaAppbmRleCAyNmVhYTUz
OGViZGVjM2QyMzJlZmJjYjJiYzZkMWU2YmYyZTk3YTVjLi40MTg1YjY3ZjkwOWM2NzE5NzgyYjY0
MTUxMWU2YzhkNGM3ZDFkZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WYWx1ZUNoZWNr
LmgKKysrIGIvU291cmNlL1dURi93dGYvVmFsdWVDaGVjay5oCkBAIC00MSw3ICs0MSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBWYWx1ZUNoZWNrPFAqPiB7CiAgICAgewogICAgICAg
ICBpZiAoIXApCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChmYXN0TWFsbG9j
U2l6ZShwKSk7CisgICAgICAgIEFTU0VSVChmYXN0TWFsbG9jQ2hlY2tDb25zaXN0ZW5jeShwKSk7
CiAgICAgICAgIFZhbHVlQ2hlY2s8UD46OmNoZWNrQ29uc2lzdGVuY3koKnApOwogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9jZi9DRlVSTEV4dHJhcy5jcHAKaW5kZXggMjllMDE3OTU2ZWRkNzA0YmI3NGI4ZmQ3
NzA1MWFjMGJiNDgxN2E5Zi4uY2VlYmY3NzI3NGE2NzhiYWUwOGVmMDE1OTJlYjM3MGEyZjNiYzU5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcApAQCAtMzYsMTAgKzM2LDExIEBAIFJldGFp
blB0cjxDRkRhdGFSZWY+IGJ5dGVzQXNDRkRhdGEoQ0ZVUkxSZWYgdXJsKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBhdXRvIGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIG51
bGxwdHIsIDApOwogICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVzTGVuZ3RoICE9IC0xKTsKLSAgICBh
dXRvIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYWxsb2MoYnl0ZXNMZW5ndGgpKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKGJ5dGVz
TGVuZ3RoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYnVmZmVyKTsKICAgICBDRlVSTEdldEJ5dGVz
KHVybCwgYnVmZmVyLCBieXRlc0xlbmd0aCk7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlV2l0aEJ5dGVzTm9Db3B5KG51bGxwdHIsIGJ1ZmZlciwgYnl0ZXNMZW5ndGgsIGtDRkFsbG9j
YXRvck1hbGxvYykpOworICAgIGF1dG8gYWxsb2NhdG9yID0gZmFzdE1hbGxvY0NGQWxsb2NhdG9y
KCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9j
YXRvciwgYnVmZmVyLCBieXRlc0xlbmd0aCwgYWxsb2NhdG9yKSk7CiB9CiAKIFN0cmluZyBieXRl
c0FzU3RyaW5nKENGVVJMUmVmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0Zp
bGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4
IGRjNjlmZmJmMTYwN2NkM2M2NjkyZGUzMWFlMTlhNmEyYjA1MmE0YjIuLjk3OWY3MTlkZTE1Mzc1
NzkxZmJkMmM5NGY0NTRhNmYxYjVhMWUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nm
L0ZpbGVTeXN0ZW1DRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvRmlsZVN5c3RlbUNGLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBDU3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiAKIFN0cmluZyBGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKSkuZ2V0KCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24pKS5nZXQoKTsKIH0KIAogUmV0YWluUHRyPENGVVJMUmVmPiBGaWxlU3lz
dGVtOjpwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtNjgsNyArNjgsNyBAQCBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgp
CiAjZWxzZQogICAgIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwogI2VuZGlmCi0g
ICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgobnVsbHB0ciwg
cGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoZmFzdE1hbGxvY0NGQWxs
b2NhdG9yKCksIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2Nm
L0xhbmd1YWdlQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKaW5kZXgg
YmJjMWVmNmY0ZWZlMDMwNTljZTU1MTMxZTA4YzEwMzMyMjQ4OGU1Ni4uMjE0MTE1OTk1Y2FmMzEz
ZGVhODQzNjlhMDU2ZjgwOWMyMDJjMzAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2Yv
TGFuZ3VhZ2VDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgc3RhdGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoQ0ZTdHJp
bmdSZWYgbGFuZ3VhZ2UsIFNob3VsZE1pbmltaXplTGFuZ3VhZ2UKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHByZWZlcnJlZExhbmd1YWdlQ29kZTsKICAgICAvLyBJZiB3ZSBjYW4gbWluaW1p
emUgdGhlIGxhbmd1YWdlIGxpc3QgdG8gcmVkdWNlIGZpbmdlcnByaW50aW5nLCB3ZSBjYW4gYWZm
b3JkIHRvIGJlIG1vcmUgbG9zc2xlc3Mgd2hlbiBjYW5vbmljYWxpemluZyB0aGUgbG9jYWxlIGxp
c3QuCiAgICAgaWYgKHNob3VsZE1pbmltaXplTGFuZ3VhZ2VzID09IFNob3VsZE1pbmltaXplTGFu
Z3VhZ2VzOjpObyB8fCBjYW5NaW5pbWl6ZUxhbmd1YWdlcygpKQotICAgICAgICBwcmVmZXJyZWRM
YW5ndWFnZUNvZGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTGFuZ3VhZ2VJZGVu
dGlmaWVyRnJvbVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsYW5ndWFnZSkpOworICAgICAg
ICBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2Fs
TGFuZ3VhZ2VJZGVudGlmaWVyRnJvbVN0cmluZyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbGFu
Z3VhZ2UpKTsKICAgICBlbHNlIHsKICAgICAgICAgU0ludDMyIGxhbmd1YWdlQ29kZTsKICAgICAg
ICAgU0ludDMyIHJlZ2lvbkNvZGU7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBTdHJpbmcgaHR0
cFN0eWxlTGFuZ3VhZ2VDb2RlKENGU3RyaW5nUmVmIGxhbmd1YWdlLCBTaG91bGRNaW5pbWl6ZUxh
bmd1YWdlCiAKICAgICBpZiAoIXByZWZlcnJlZExhbmd1YWdlQ29kZSkKICAgICAgICAgcHJlZmVy
cmVkTGFuZ3VhZ2VDb2RlID0gbGFuZ3VhZ2U7Ci0gICAgYXV0byBtdXRhYmxlTGFuZ3VhZ2VDb2Rl
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsIHByZWZlcnJlZExhbmd1YWdlQ29kZS5nZXQoKSkpOworICAgIGF1dG8gbXV0YWJsZUxhbmd1
YWdlQ29kZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IoKSwgMCwgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlLmdldCgpKSk7CiAKICAgICAvLyBU
dXJuIGEgJ18nIGludG8gYSAnLScgaWYgaXQgYXBwZWFycyBhZnRlciBhIDItbGV0dGVyIGxhbmd1
YWdlIGNvZGUKICAgICBpZiAoQ0ZTdHJpbmdHZXRMZW5ndGgobXV0YWJsZUxhbmd1YWdlQ29kZS5n
ZXQoKSkgPj0gMyAmJiBDRlN0cmluZ0dldENoYXJhY3RlckF0SW5kZXgobXV0YWJsZUxhbmd1YWdl
Q29kZS5nZXQoKSwgMikgPT0gJ18nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvUnVu
TG9vcENGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAKaW5kZXggMGM4ZmEz
MzI5ZDhhNmU3MTg1OGI3ZTI0NTY1NTljZGM3NTQ2MjI0NS4uMWE4YWRhNDNkMTRiODg0Njk0YmQz
YTFkZDM0MmNkMTY1Nzg3ZTY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvUnVuTG9v
cENGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9SdW5Mb29wQ0YuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IGNyZWF0ZVRpbWVyKFNl
Y29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCB2CiB7CiAgICAgQ0ZSdW5Mb29wVGltZXJDb250
ZXh0IGNvbnRleHQgPSB7IDAsIGluZm8sIDAsIDAsIDAgfTsKICAgICBTZWNvbmRzIHJlcGVhdElu
dGVydmFsID0gcmVwZWF0ID8gaW50ZXJ2YWwgOiAwX3M7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZS
dW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRD
dXJyZW50KCkgKyBpbnRlcnZhbC5zZWNvbmRzKCksIHJlcGVhdEludGVydmFsLnNlY29uZHMoKSwg
MCwgMCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlJ1bkxv
b3BUaW1lckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRD
dXJyZW50KCkgKyBpbnRlcnZhbC5zZWNvbmRzKCksIHJlcGVhdEludGVydmFsLnNlY29uZHMoKSwg
MCwgMCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsKIH0KIAogdm9pZCBSdW5Mb29wOjpwZXJmb3Jt
V29yayh2b2lkKiBjb250ZXh0KQpAQCAtNTAsNyArNTAsNyBAQCBSdW5Mb29wOjpSdW5Mb29wKCkK
ICAgICA6IG1fcnVuTG9vcChDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCiB7CiAgICAgQ0ZSdW5Mb29w
U291cmNlQ29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBw
ZXJmb3JtV29yayB9OwotICAgIG1fcnVuTG9vcFNvdXJjZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wU291
cmNlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZjb250ZXh0KSk7CisgICAgbV9ydW5M
b29wU291cmNlID0gYWRvcHRDRihDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoZmFzdE1hbGxvY0NGQWxs
b2NhdG9yKCksIDAsICZjb250ZXh0KSk7CiAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKG1fcnVuTG9v
cC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9jZi9VUkxDRi5jcHAKaW5kZXggNDljYjcwN2YyYWIwM2M0MmEzYTBiMzc4OTU4MzBhZGFl
ZmU3N2JiMi4uNWViY2UwNmI1NTdlOTg1ZTdjN2RiMDQ2Zjk0MDdlMjQxNzIxNjhhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2Nm
L1VSTENGLmNwcApAQCAtNjEsMTAgKzYxLDEwIEBAIFJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpj
cmVhdGVDRlVSTCgpIGNvbnN0CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJlc3VsdDsKICAg
ICBpZiAoTElLRUxZKG1fc3RyaW5nLmlzOEJpdCgpICYmIG1fc3RyaW5nLmlzQWxsQVNDSUkoKSkp
Ci0gICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRl
cyhudWxscHRyLCBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpLCBtX3N0cmluZy5sZW5ndGgoKSwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CisgICAgICAgIHJlc3VsdCA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhmYXN0TWFsbG9jQ0ZBbGxvY2F0
b3IoKSwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3RoKCksIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBDU3Ry
aW5nIHV0ZjggPSBtX3N0cmluZy51dGY4KCk7Ci0gICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCB1dGY4LmRhdGFBc1VJbnQ4UHRy
KCksIHV0ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkp
OworICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0
ZXMoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5s
ZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CiAgICAgfQog
CiAgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhaXNTYW1lT3JpZ2luKHJlc3Vs
dC5nZXQoKSwgKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRs
ZW1lbnRzLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tCmluZGV4IDlk
OTQ2YWQwZGYxMGM4YzZjODkxMmVhOTM2MTY1Y2Y4ZmU1MTU0OTguLjg3ZWYxYTBkMWEyMTk0ZmRm
MDc1NTRmMzQ5ZjJjNzAwMTdjMTVkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29h
L0VudGl0bGVtZW50cy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMu
bW0KQEAgLTM4LDEzICszOCwxMyBAQCBzdGF0aWMgYm9vbCBoYXNFbnRpdGxlbWVudChTZWNUYXNr
UmVmIHRhc2ssIGNvbnN0IGNoYXIqIGVudGl0bGVtZW50KQogewogICAgIGlmICghdGFzaykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGVudGl0bGVtZW50LCBr
Q0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgYXV0byBzdHJp
bmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoZmFzdE1hbGxvY0NG
QWxsb2NhdG9yKCksIGVudGl0bGVtZW50LCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBrQ0ZBbGxv
Y2F0b3JOdWxsKSk7CiAgICAgcmV0dXJuIGFkb3B0Q0YoU2VjVGFza0NvcHlWYWx1ZUZvckVudGl0
bGVtZW50KHRhc2ssIHN0cmluZy5nZXQoKSwgbnVsbHB0cikpID09IGtDRkJvb2xlYW5UcnVlOwog
fQogCiBib29sIGhhc0VudGl0bGVtZW50KGF1ZGl0X3Rva2VuX3QgdG9rZW4sIGNvbnN0IGNoYXIq
IGVudGl0bGVtZW50KQogewotICAgIHJldHVybiBoYXNFbnRpdGxlbWVudChhZG9wdENGKFNlY1Rh
c2tDcmVhdGVXaXRoQXVkaXRUb2tlbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0b2tlbikpLmdldCgp
LCBlbnRpdGxlbWVudCk7CisgICAgcmV0dXJuIGhhc0VudGl0bGVtZW50KGFkb3B0Q0YoU2VjVGFz
a0NyZWF0ZVdpdGhBdWRpdFRva2VuKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCB0b2tlbikpLmdl
dCgpLCBlbnRpdGxlbWVudCk7CiB9CiAKIGJvb2wgaGFzRW50aXRsZW1lbnQoeHBjX2Nvbm5lY3Rp
b25fdCBjb25uZWN0aW9uLCBjb25zdCBjaGFyICplbnRpdGxlbWVudCkKQEAgLTU1LDE2ICs1NSwx
NiBAQCBib29sIGhhc0VudGl0bGVtZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgY29u
c3QgY2hhciAqZW50aXRsZW1lbnQpCiAKIGJvb2wgcHJvY2Vzc0hhc0VudGl0bGVtZW50KGNvbnN0
IGNoYXIqIGVudGl0bGVtZW50KQogewotICAgIHJldHVybiBoYXNFbnRpdGxlbWVudChhZG9wdENG
KFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSkuZ2V0KCksIGVudGl0
bGVtZW50KTsKKyAgICByZXR1cm4gaGFzRW50aXRsZW1lbnQoYWRvcHRDRihTZWNUYXNrQ3JlYXRl
RnJvbVNlbGYoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCkpKS5nZXQoKSwgZW50aXRsZW1lbnQpOwog
fQogCiBib29sIGhhc0VudGl0bGVtZW50VmFsdWUoYXVkaXRfdG9rZW5fdCB0b2tlbiwgY29uc3Qg
Y2hhciogZW50aXRsZW1lbnQsIGNvbnN0IGNoYXIqIHZhbHVlKQogewotICAgIGF1dG8gc2VjVGFz
a0ZvclRva2VuID0gYWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgdG9rZW4pKTsKKyAgICBhdXRvIHNlY1Rhc2tGb3JUb2tlbiA9IGFkb3B0Q0Yo
U2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCB0b2tl
bikpOwogICAgIGlmICghc2VjVGFza0ZvclRva2VuKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHko
a0NGQWxsb2NhdG9yRGVmYXVsdCwgZW50aXRsZW1lbnQsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUks
IGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVXaXRoQ1N0cmluZ05vQ29weShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgZW50aXRsZW1l
bnQsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICBTdHJp
bmcgZW50aXRsZW1lbnRWYWx1ZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oYWRvcHRD
RihTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQoc2VjVGFza0ZvclRva2VuLmdldCgpLCBz
dHJpbmcuZ2V0KCksIG51bGxwdHIpKS5nZXQoKSk7CiAgICAgcmV0dXJuIGVudGl0bGVtZW50VmFs
dWUgPT0gdmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCmluZGV4IDIwODc0
NDBiMGY2ZmRjNGQ1YjAzYzI5MmM3ZTM2MjhlZjIzOGRiNDkuLmEyMmM5NDljZmE4YWEyODNiMGE2
OTM4YzM2M2Y2ZTEwODM0ZmZjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05T
VVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCkBA
IC04OSw3ICs4OSw3IEBAIHZvaWQgbG9hZElETkFsbG93ZWRTY3JpcHRMaXN0KCkKICAgICAKIHN0
YXRpYyBTdHJpbmcgZGVjb2RlUGVyY2VudEVzY2FwZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
Ci0gICAgYXV0byBzdWJzdHJpbmcgPSBhZG9wdENGKENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNp
bmdQZXJjZW50RXNjYXBlcyhudWxscHRyLCBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
Q0ZTVFIoIiIpKSk7CisgICAgYXV0byBzdWJzdHJpbmcgPSBhZG9wdENGKENGVVJMQ3JlYXRlU3Ry
aW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgc3Ry
aW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIENGU1RSKCIiKSkpOwogICAgIGlmICghc3Vic3Ry
aW5nKQogICAgICAgICByZXR1cm4gc3RyaW5nOwogICAgIHJldHVybiBzdWJzdHJpbmcuZ2V0KCk7
CkBAIC0xMjksOSArMTI5LDkgQEAgTlNVUkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJl
Zm9yZUNvbXBvbmVudChOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUKIAogICAgIGF1dG8g
Ynl0ZXMgPSBieXRlc0FzVmVjdG9yKGJyaWRnZV9jYXN0KFVSTCkpOwogCi0gICAgYXV0byByZXN1
bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLmRhdGEoKSwg
cmFuZ2UubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMoZmFzdE1hbGxvY0NG
QWxsb2NhdG9yKCksIGJ5dGVzLmRhdGEoKSwgcmFuZ2UubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0
ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCBieXRlcy5kYXRhKCksIHJh
bmdlLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKTsK
KyAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhmYXN0TWFsbG9j
Q0ZBbGxvY2F0b3IoKSwgYnl0ZXMuZGF0YSgpLCByYW5nZS5sb2NhdGlvbiAtIDEsIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CiAKICAgICByZXR1cm4gcmVzdWx0ID8gcmVz
dWx0LmJyaWRnaW5nQXV0b3JlbGVhc2UoKSA6IFVSTDsKIH0KQEAgLTE1Niw5ICsxNTYsOSBAQCBO
U1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAgICAgICAg
Ly8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMg
bm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAogICAgICAgICAv
LyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVy
ZW50IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCiAgICAgICAgIC8v
IG9udG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCi0gICAgICAgIGF1dG8gcmVz
dWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5
dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJh
c2VVUkwsIFlFUykpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVB
YnNvbHV0ZVVSTFdpdGhCeXRlcyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgYnl0ZXMsIGxlbmd0
aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVT
KSk7CiAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihD
RlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtD
RlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVT
KSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxX
aXRoQnl0ZXMoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW4xLCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgIH0KICAgICBy
ZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKQEAgLTI5NCw5ICsyOTQsOSBAQCBzdGF0
aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5T
VVJMICpVUkwsIENGVVJMQ29tcAogCiAgICAgbWVtbW92ZSh1cmxCeXRlcyArIHJhbmdlLmxvY2F0
aW9uLCB1cmxCeXRlcyArIHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoLCBudW1CeXRlcyAt
IHJhbmdlLmxvY2F0aW9uICsgcmFuZ2UubGVuZ3RoKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSBy
YW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cikpOworICAgIGF1dG8g
cmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhmYXN0TWFsbG9jQ0ZBbGxvY2F0
b3IoKSwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIG51bGxwdHIpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSBy
YW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CisgICAg
ICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMoZmFzdE1hbGxvY0NGQWxs
b2NhdG9yKCksIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdlLmxlbmd0aCwga0NGU3RyaW5nRW5j
b2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKTsKIAogICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQu
YnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogVVJMOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvbWFjL0ZpbGVTeXN0ZW1NYWMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1h
Yy5tbQppbmRleCAyYWQ5MTVjYWY2Nzg5NzRlOWQ0YzBmZmVmZDk5MDFlMjRlYThiMWQyLi5lODlh
ODczZDJmNTc2Y2RhNzJhMTNmZDljOWVhYmIwNDU2NzA1YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9tYWMvRmlsZVN5c3RlbU1hYy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRmls
ZVN5c3RlbU1hYy5tbQpAQCAtNDQsNyArNDQsNyBAQCB2b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFk
YXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cgog
CiAgICAgLy8gQ2FsbCBNZXRhZGF0YSBBUEkgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlIGJlY2F1c2Ug
aXQgY2FuIHRha2Ugc29tZSB0aW1lLgogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9n
bG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFtwYXRoID0g
cGF0aC5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgp
LCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGF1dG8gaXRl
bSA9IGFkb3B0Q0YoTURJdGVtQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGguY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkpOworICAgICAgICBhdXRvIGl0ZW0gPSBhZG9wdENGKE1ESXRlbUNy
ZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiAgICAgICAgIGlmICghaXRlbSkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvbWFjL1NjaGVkdWxlUGFpck1hYy5tbSBiL1NvdXJjZS9XVEYvd3Rm
L21hYy9TY2hlZHVsZVBhaXJNYWMubW0KaW5kZXggMTk3OGY2MzliY2M0NDdkNTIxNTI5ZDJiYjY1
OWZlNzNjN2RkZTA0Yy4uMDNjZDEwODhiMDk4NGJlN2E4ZWJlM2MzNzE0MzllM2M2OGIzNzIxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvbWFjL1NjaGVkdWxlUGFpck1hYy5tbQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9tYWMvU2NoZWR1bGVQYWlyTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIFNj
aGVkdWxlUGFpcjo6U2NoZWR1bGVQYWlyKE5TUnVuTG9vcCogcnVuTG9vcCwgQ0ZTdHJpbmdSZWYg
bW9kZSkKICAgICAsIG1fcnVuTG9vcChbcnVuTG9vcCBnZXRDRlJ1bkxvb3BdKQogewogICAgIGlm
IChtb2RlKQotICAgICAgICBtX21vZGUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlQ29weSgwLCBt
b2RlKSk7CisgICAgICAgIG1fbW9kZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVDb3B5KGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCBtb2RlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggMWUyMzY0NzE0ZjhiNzgwYTQ3MTA2
Y2IwOTJlYjg3ZWIzMTJlNGFlYy4uZTUyZTYyOWUzZmI0ZWJiODg5ODlmNGI3NmQ0MjFjZTQzZGY5
ODFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTE5LDgg
KzExOSw4IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJp
bmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAg
IGlmIChpczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aEJ5dGVzKG51bGxwdHIsIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNo
YXIqPihjaGFyYWN0ZXJzMTYoKSksIG1fbGVuZ3RoKSk7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgY2hh
cmFjdGVyczgoKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkp
OworICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihj
aGFyYWN0ZXJzMTYoKSksIG1fbGVuZ3RoKSk7CiAgICAgfQogICAgIENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciA9IFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6YWxsb2NhdG9yKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nVmlld0NGLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvY2YvU3RyaW5nVmlld0NGLmNwcAppbmRleCA4ZWUyOTMzZTIyYjg5NjYxYTlh
YzAzMGZjNThiMWY3MTA2MDZiMGU1Li43NTQ0MmMzZWE5ZDM0ODc0ODUwY2VhZWIyYTdjZWZjMmU3
MDg4M2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ1ZpZXdDRi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdWaWV3Q0YuY3BwCkBAIC0zNiwx
NyArMzYsMTcgQEAgbmFtZXNwYWNlIFdURiB7CiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmlu
Z1ZpZXc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoaXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGlu
MSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXMoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBrQ0ZT
dHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsKICAgICAKLSAgICByZXR1cm4gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoKCkpKTsK
KyAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihjaGFyYWN0
ZXJzMTYoKSksIGxlbmd0aCgpKSk7CiB9CiAKIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5n
Vmlldzo6Y3JlYXRlQ0ZTdHJpbmdXaXRob3V0Q29weWluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlz
OEJpdCgpKQotICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05v
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSwga0NGU3Ry
aW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgICAg
IHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGZhc3RNYWxsb2ND
RkFsbG9jYXRvcigpLCBjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdJ
U09MYXRpbjEsIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAKLSAgICByZXR1cm4gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbGVuZ3Ro
KCksIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IFVuaUNoYXIqPihjaGFyYWN0ZXJzMTYoKSksIGxlbmd0aCgpLCBrQ0ZBbGxv
Y2F0b3JOdWxsKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY29j
b2EvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvY29jb2EvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcAppbmRleCBh
ODc0NWM5YzU1OWU3Y2ZmNGI1ZTliMTlhOGNjMGE0ODM2Yzc4YzM2Li43YjViN2Q5ZTUwYTgzMmVh
YTEwNjIzMTUyNmUwNjRlOTBlZWQ1MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2NvY29hL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VDb2NvYS5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9jb2NvYS9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVQ29jb2EuY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRleHRCcmVh
a0xvY2FsZSgpCiAgICAgYXV0byBsb2NhbGUgPSB0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCk7
CiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiB0b3BMYW5ndWFnZVByZWZlcmVuY2Uo
KTsKLSAgICBpZiAoYXV0byBjYW5vbmljYWxMb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRl
Q2Fub25pY2FsTGFuZ3VhZ2VJZGVudGlmaWVyRnJvbVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBsb2NhbGUuZ2V0KCkpKSkKKyAgICBpZiAoYXV0byBjYW5vbmljYWxMb2NhbGUgPSBhZG9wdENG
KENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTGFuZ3VhZ2VJZGVudGlmaWVyRnJvbVN0cmluZyhmYXN0
TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbG9jYWxlLmdldCgpKSkpCiAgICAgICAgIHJldHVybiBjYW5v
bmljYWxMb2NhbGU7CiAgICAgcmV0dXJuIGxvY2FsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3lzdGVtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9jb2NvYS9TbGVlcERpc2FibGVyQ29jb2EuY3BwCmlu
ZGV4IGUxYzBkMjAwOTBkMzZhNjdjZTliNTEwYTBiZjAxMDBiOTkxNzg0ODguLjkwMjI0MDdhZGM5
ZmMyZjkyY2I4YjdiNzYwOTc2MTE1MGQ1ZmIwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3lzdGVtL2NvY29hL1NsZWVwRGlzYWJsZXJDb2NvYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vY29jb2EvU2xlZXBEaXNhYmxlckNvY29hLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2xlZXBEaXNhYmxlcj4gU2xlZXBEaXNhYmxl
cjo6Y3JlYXRlKGNvbnN0IGNoYXIqIHJlYXNvbiwgVHlwZSB0eQogU2xlZXBEaXNhYmxlckNvY29h
OjpTbGVlcERpc2FibGVyQ29jb2EoY29uc3QgY2hhciogcmVhc29uLCBUeXBlIHR5cGUpCiAgICAg
OiBTbGVlcERpc2FibGVyKHJlYXNvbiwgdHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHJlYXNvbkNGID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHJlYXNvbiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CisgICAgYXV0byBy
ZWFzb25DRiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IoKSwgcmVhc29uLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKIAogICAgIENGU3Ry
aW5nUmVmIGFzc2VydGlvblR5cGU7CiAgICAgc3dpdGNoICh0eXBlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBh
NDNhOTcyNWY0ZjA3ZDQ5ZDI4YmNhY2E0Y2VmMGZkNmRkZDI0ZTVmLi4wOWJkY2NkYWI4YTdkMzYw
ZmIxYjQzODMxMGFlZmYxNmE3ZTAwZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTY3Nyw3ICs2NzcsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiBBWFRleHRNYXJrZXJSYW5nZShB
WFRleHRNYXJrZXJSZWYgc3RhcnRNYQogICAgIEFTU0VSVChlbmRNYXJrZXIpOwogICAgIEFTU0VS
VChDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKXN0YXJ0TWFya2VyKSA9PSBBWFRleHRN
YXJrZXJHZXRUeXBlSUQoKSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5
cGVSZWYpZW5kTWFya2VyKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJu
IGFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3Rh
cnRNYXJrZXIsIGVuZE1hcmtlcikpOworICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlclJh
bmdlQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBzdGFydE1hcmtlciwgZW5kTWFya2Vy
KSk7CiB9CiAKIFJldGFpblB0cjxBWFRleHRNYXJrZXJSYW5nZVJlZj4gdGV4dE1hcmtlclJhbmdl
RnJvbU1hcmtlcnMoQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXIxLCBBWFRleHRNYXJrZXJSZWYg
dGV4dE1hcmtlcjIpCkBAIC03NDUsNyArNzQ1LDcgQEAgQVhUZXh0TWFya2VyUmVmIHRleHRNYXJr
ZXJGb3JWaXNpYmxlUG9zaXRpb24oQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IFZpc2libGUK
ICAgICBpZiAoIXRleHRNYXJrZXJEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVlKCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52
YWx1ZSgpKSkpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2Vy
Q3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2Vy
RGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkpKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihB
WE9iamVjdENhY2hlKiBjYWNoZSwgQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXIpCkBAIC03OTUs
NyArNzk1LDcgQEAgQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQo
QVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IENoYXJhY3QKICAgICBpZiAoIXRleHRNYXJrZXJE
YXRhLmF4SUQgfHwgdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRh
KSkpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRl
KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwg
c2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIENoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBB
WFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcikKQEAgLTgyMSw3ICs4MjEsNyBAQCBBWFRleHRNYXJr
ZXJSZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwg
Y29uc3Qgc3RkOjpvcAogICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRN
YXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFy
a2VyQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoY29uc3QgVUludDgqKSZ0ZXh0TWFy
a2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEFY
VGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hl
KiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCBhMWQ2NWNjMGEwYWFjMTEzNzBm
ZDM3YWVkZTIyYWI0ODc0Y2Q2YWE1Li44NWY3MmUxMmJmY2U2NmZjOTAzZGRkZTBlOGM5NjcwNjVk
MjM0NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNzQ4
LDcgKzc0OCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBuZXh0VGV4dE1h
cmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlCiAgICAgY2FjaGUtPnRleHRNYXJr
ZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zm
c2V0KTsKICAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEp
KSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJr
ZXJEYXRhKSkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlv
dXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFy
YWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKQEAgLTc2MCw3ICs3NjAsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVy
T2Zmc2V0KEFYT2JqZWN0QwogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hh
cmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICgh
dGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gYWRv
cHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4
KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4g
YWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CiB9CiAK
IC0gKFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+KW5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVy
T2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldApAQCAtNzk4LDcgKzc5OCw3
IEBAIC0gKFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+KXRleHRNYXJrZXJGb3JGaXJzdFBvc2l0
aW9uSW5UZXh0Q29udHJvbDooSFRNTFRleHRGCiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YS52YWx1
ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkpKTsKKyAgICByZXR1cm4gYWRvcHRD
RihBWFRleHRNYXJrZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIChjb25zdCBVSW50
OCopJnRleHRNYXJrZXJEYXRhLnZhbHVlKCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgp
KSkpOwogfQogCiAvLyBXaGVuIG1vZGlmeWluZyBhdHRyaWJ1dGVkIHN0cmluZ3MsIHRoZSByYW5n
ZSBjYW4gY29tZSBmcm9tIGEgc291cmNlIHdoaWNoIG1heSBwcm92aWRlIGZhdWx0eSBpbmZvcm1h
dGlvbiAoZS5nLiB0aGUgc3BlbGwgY2hlY2tlcikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAwYmFmYTc5ODMwOWMx
NjUwYzY0MDJiZDA2ZWVhNzMwMTE5NmUzZTMzLi4zMTg0ODVhMDc0NjQyODZhZGE3NGI3ZGQ0ZDM3
NzFhNTBmZmVkNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE2NTUsNyArMTY1NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IGRlc3RpbmF0aW9uQ29sb3JTcGFjZS5wbGF0Zm9ybUNv
bG9yU3BhY2UoKTsKIAogICAgICAgICBpZiAoYXV0byBuYW1lID0gQ0dDb2xvclNwYWNlR2V0TmFt
ZShjb2xvclNwYWNlKSkgewotICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZUV4dGVybmFsUmVwcmVzZW50YXRpb24obnVsbHB0ciwgbmFtZSwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4LCAwKSk7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbmFt
ZSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAwKSk7CiAgICAgICAgICAgICBpZiAoIWRhdGEpIHsK
ICAgICAgICAgICAgICAgICB3cml0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2VTUkdCVGFnKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjY3LDcgKzE2NjcsNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGF1dG8gcHJvcGVydHlMaXN0ID0gYWRvcHRDRihDR0NvbG9y
U3BhY2VDb3B5UHJvcGVydHlMaXN0KGNvbG9yU3BhY2UpKSkgewotICAgICAgICAgICAgYXV0byBk
YXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEobnVsbHB0ciwgcHJvcGVydHlM
aXN0LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikp
OworICAgICAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURh
dGEoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHByb3BlcnR5TGlzdC5nZXQoKSwga0NGUHJvcGVy
dHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICAgICAgICAgIGlmICgh
ZGF0YSkgewogICAgICAgICAgICAgICAgIHdyaXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZVNSR0JU
YWcpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3MTMsNyArMjcxMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGlmICghcmVhZChkYXRhTGVuZ3RoKSB8fCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9lbmQgLSBtX3B0cikgPCBkYXRhTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShu
dWxscHRyLCBtX3B0ciwgZGF0YUxlbmd0aCwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAgICBk
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoZmFzdE1hbGxvY0NGQWxs
b2NhdG9yKCksIG1fcHRyLCBkYXRhTGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgICAg
IGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjc0OCw3ICsyNzQ4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICghcmVhZChkYXRhKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGF1dG8gbmFtZSA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihudWxscHRyLCBkYXRhLmdldCgp
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKKyAgICAgICAgICAgIGF1dG8gbmFtZSA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IoKSwgZGF0YS5nZXQoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CiAgICAgICAg
ICAgICBpZiAoIW5hbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNzY0
LDcgKzI3NjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKCFyZWFkKGRhdGEpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgYXV0byBwcm9wZXJ0eUxp
c3QgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEobnVsbHB0ciwgZGF0YS5n
ZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCBudWxscHRyLCBudWxscHRyKSk7CisgICAg
ICAgICAgICBhdXRvIHByb3BlcnR5TGlzdCA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVX
aXRoRGF0YShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgZGF0YS5nZXQoKSwga0NGUHJvcGVydHlM
aXN0SW1tdXRhYmxlLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgICAgICAgICBpZiAoIXByb3Bl
cnR5TGlzdCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IDRiMDFlYzM3OWViYTlmY2UxZDhhNDg2OTFj
NThhODA1YjgzODQ2YTIuLjcwMzgwZTBlNDkyNjFlNjMxNmM5ZjJkMTRkZGMzY2UwZDk4OGNkZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtNTAsNyArNTAs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+JiBjbGFzc2VzQnlJ
c0EoKQogc3RhdGljIHZvaWQgX2NyZWF0ZUNsYXNzZXNCeUlzQUlmTmVjZXNzYXJ5KCkKIHsKICAg
ICBpZiAoIWNsYXNzZXNCeUlzQSgpKQotICAgICAgICBjbGFzc2VzQnlJc0EoKSA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCBOVUxMLCBOVUxMKSk7CisgICAgICAg
IGNsYXNzZXNCeUlzQSgpID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCAwLCBOVUxMLCBOVUxMKSk7CiB9CiAKIE9iamNDbGFzcyogT2Jq
Y0NsYXNzOjpjbGFzc0ZvcklzQShDbGFzc1N0cnVjdFB0ciBpc2EpCkBAIC0xMTUsNyArMTE1LDcg
QEAgTWV0aG9kKiBPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEluc3RhbmNlKikgY29uc3QKICAgICBDU3RyaW5nIGpzTmFtZSA9IG5hbWUuYXNjaWkoKTsK
ICAgICBKU05hbWVDb252ZXJzaW9uQnVmZmVyIGJ1ZmZlcjsKICAgICBjb252ZXJ0SlNNZXRob2RO
YW1lVG9PYmpjKGpzTmFtZSwgYnVmZmVyKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1l
dGhvZE5hbWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgYnVmZmVy
LmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOworICAgIGF1dG8gbWV0aG9kTmFtZSA9
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3Io
KSwgYnVmZmVyLmRhdGEoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOwogCiAgICAgTWV0aG9k
KiBtZXRob2RQdHIgPSAwOwogICAgIENsYXNzU3RydWN0UHRyIHRoaXNDbGFzcyA9IF9pc2E7CkBA
IC0xNjcsNyArMTY3LDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICBDbGFzc1N0cnVj
dFB0ciB0aGlzQ2xhc3MgPSBfaXNhOwogCiAgICAgQ1N0cmluZyBqc05hbWUgPSBuYW1lLmFzY2lp
KCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWVsZE5hbWUgPSBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwganNOYW1lLmRhdGEoKSwga0NGU3RyaW5nRW5jb2Rp
bmdBU0NJSSkpOworICAgIGF1dG8gZmllbGROYW1lID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhDU3RyaW5nKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBqc05hbWUuZGF0YSgpLCBrQ0ZTdHJp
bmdFbmNvZGluZ0FTQ0lJKSk7CiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PE9i
amNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bmRlY2xhcmVkLXNlbGVjdG9yIikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCA3MTAyOGQz
NTBlZWVmZDViZWExMjU3ZWZjZWQyZTg2N2I0OGNiZmIzLi5jMjJiZDQxYzY3Y2YyY2U4ZDllY2Rj
N2M0OTA0MDVhM2Q1OTE2NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgT2JqY01ldGhvZDo6aXNGYWxsYmFja01l
dGhvZCgpIGNvbnN0CiAKIE9iamNGaWVsZDo6T2JqY0ZpZWxkKEl2YXIgaXZhcikgCiAgICAgOiBf
aXZhcihpdmFyKQotICAgICwgX25hbWUoYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5n
KDAsIGl2YXJfZ2V0TmFtZShfaXZhciksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKSkKKyAgICAs
IF9uYW1lKGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhmYXN0TWFsbG9jQ0ZBbGxv
Y2F0b3IoKSwgaXZhcl9nZXROYW1lKF9pdmFyKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwCmluZGV4IDdk
OTIwOGEzZmNlZDAyNjYzODI1MjAwMzZkMWQ2ODIyYWZhMWQ5NzguLmI0MTYyNTYzYjgxMmIwOGM1
ZDc1Y2JkZGYwZjU2N2I4MDBiNGY5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU21hcnRSZXBsYWNlQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRS
ZXBsYWNlQ0YuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJT
ZXRSZWYgZ2V0U21hcnRTZXQoYm9vbCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmPj4gcG9zdFNt
YXJ0U2V0OwogICAgIFJldGFpblB0cjxDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWY+JiBzbWFydFNl
dCA9IGlzUHJldmlvdXNDaGFyYWN0ZXIgPyBwcmVTbWFydFNldC5nZXQoKSA6IHBvc3RTbWFydFNl
dC5nZXQoKTsKICAgICBpZiAoIXNtYXJ0U2V0KSB7Ci0gICAgICAgIHNtYXJ0U2V0ID0gYWRvcHRD
RihDRkNoYXJhY3RlclNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAg
ICAgICBzbWFydFNldCA9IGFkb3B0Q0YoQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVNdXRhYmxlKGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpKSk7CiAgICAgICAgIENGQ2hhcmFjdGVyU2V0QWRkQ2hhcmFjdGVy
c0luU3RyaW5nKHNtYXJ0U2V0LmdldCgpLCBpc1ByZXZpb3VzQ2hhcmFjdGVyID8gQ0ZTVFIoIihb
XCJcJyMkLy1geyIpIDogQ0ZTVFIoIildLiw7Oj9cJyFcIiUqLS99IikpOwogICAgICAgICBDRkNo
YXJhY3RlclNldFVuaW9uKHNtYXJ0U2V0LmdldCgpLCBDRkNoYXJhY3RlclNldEdldFByZWRlZmlu
ZWQoa0NGQ2hhcmFjdGVyU2V0V2hpdGVzcGFjZUFuZE5ld2xpbmUpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IGMzMjc2OGE5YTgxM2Zl
YmFjMjBhY2Y3Mjg1ZWQ1N2Y2N2U5ZTJiOTQuLmRkMTJkMzJlOTM1NDY2ZTNlYjQ0NTJmMzU0NWI5
OTVhYjU3NzhmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0
YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24ubW0KQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGV0ZWN0ZWRJ
dGVtPiBkZXRlY3RJdGVtKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGMKICAgICBD
RkluZGV4IGhpdExvY2F0aW9uID0gY2hhcmFjdGVyQ291bnQoKm1ha2VTaW1wbGVSYW5nZShjb250
ZXh0UmFuZ2Uuc3RhcnQsIHBvc2l0aW9uKSk7CiAKICAgICBhdXRvIHNjYW5uZXIgPSBhZG9wdENG
KEREU2Nhbm5lckNyZWF0ZShERFNjYW5uZXJUeXBlU3RhbmRhcmQsIDAsIG51bGxwdHIpKTsKLSAg
ICBhdXRvIHNjYW5RdWVyeSA9IGFkb3B0Q0YoRERTY2FuUXVlcnlDcmVhdGVGcm9tU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGZ1bGxQbGFpblRleHRTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgZnVsbFBsYWluVGV4dFN0cmluZy5sZW5ndGgoKSkpKTsKKyAg
ICBhdXRvIHNjYW5RdWVyeSA9IGFkb3B0Q0YoRERTY2FuUXVlcnlDcmVhdGVGcm9tU3RyaW5nKGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCBmdWxsUGxhaW5UZXh0U3RyaW5nLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIGZ1bGxQbGFpblRleHRTdHJpbmcubGVuZ3RoKCkpKSk7
CiAKICAgICBpZiAoIUREU2Nhbm5lclNjYW5RdWVyeShzY2FubmVyLmdldCgpLCBzY2FuUXVlcnku
Z2V0KCkpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtNDEyLDcgKzQxMiw3IEBAIHN0YXRpYyB2
b2lkIGJ1aWxkUXVlcnkoRERTY2FuUXVlcnlSZWYgc2NhblF1ZXJ5LCBjb25zdCBTaW1wbGVSYW5n
ZSYgY29udGV4dFJhbmdlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgYXV0byBjdXJyZW50VGV4dENGU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVW5pQ2hhcio+KGN1cnJlbnRUZXh0VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLmdldCgpKSwg
Y3VycmVudFRleHRMZW5ndGgpKTsKKyAgICAgICAgYXV0byBjdXJyZW50VGV4dENGU3RyaW5nID0g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGZhc3RNYWxsb2NDRkFsbG9jYXRv
cigpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihjdXJyZW50VGV4dFVwY29udmVy
dGVkQ2hhcmFjdGVycy5nZXQoKSksIGN1cnJlbnRUZXh0TGVuZ3RoKSk7CiAgICAgICAgIFBBTDo6
c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FuUXVlcnlBZGRUZXh0RnJhZ21lbnQoc2Nh
blF1ZXJ5LCBjdXJyZW50VGV4dENGU3RyaW5nLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBjdXJyZW50
VGV4dExlbmd0aCksICh2b2lkICopaXRlcmF0b3JDb3VudCwgKEREVGV4dEZyYWdtZW50TW9kZSkw
LCBERFRleHRDb2FsZXNjaW5nVHlwZU5vbmUpOwogICAgICAgICBmcmFnbWVudENvdW50Kys7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEz
Njg5MmVlNi4uYzViNWUyYmZlMmY4MGI5OWEyNWVlNTVmMWUzMDQ4NjgwYzllZDhkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpj
cmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICNpZiBVU0UoQ0YpICYmIFBMQVRG
T1JNKFdJTikKICAgICAvLyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PyBTZWVtcyBpbXByb2JhYmxl
IHRoYXQgdGhlIHBhc3NlZC1pbiBwYXRocyB3b3VsZCBiZSBpbiB0aGUgV2luZG93cyBwYXRoIHN0
eWxlLgotICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAs
IHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFs
c2UpKS5nZXQoKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aChmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpLmdldCgpOwogI2Vsc2UKICAgICByZXR1
cm4gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKHBhdGgpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLjg1ZDVlODJm
NWZjMzgzMGU2YzYxNTc3YTFhMGMyY2VhZGFmMjNjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC03OCwxNCAr
NzgsMTQgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAgICAgLy8gVGhlIHByb3BlcnR5
IGxpc3QgcmVwcmVzZW50YXRpb24gb2YgYSBudWxsL2VtcHR5IFdlYlJlc291cmNlIGhhcyB0aGUg
Zm9sbG93aW5nIDMgb2JqZWN0cyBzdG9yZWQgYXMgbmlsLgogICAgICAgICAvLyBGSVhNRTogMCBp
cyBub3Qgc2VyaWFsaXphYmxlLiBQcmVzdW1hYmx5IHdlIG5lZWQgdG8gdXNlIGtDRk51bGwgaGVy
ZSBpbnN0ZWFkIGZvciBjb21wYXRpYmlsaXR5LgogICAgICAgICAvLyBGSVhNRTogQnV0IHdoeSBk
byB3ZSBuZWVkIHRvIHN1cHBvcnQgYSByZXNvdXJjZSBvZiAwPyBXaG8gcmVsaWVzIG9uIHRoYXQ/
Ci0gICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0eUxpc3Qg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMywgMCwgMCkpOworICAgICAg
ICBhdXRvIHByb3BlcnR5TGlzdCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMywgMCwgMCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFL
ZXksIDApOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVVSTEtleSwgMCk7CiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlTUlN
RVR5cGVLZXksIDApOwogICAgICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogICAgIH0KIAotICAg
IGF1dG8gcHJvcGVydHlMaXN0ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAs
IDYsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0byBwcm9w
ZXJ0eUxpc3QgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NG
QWxsb2NhdG9yKCksIDYsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAK
ICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50
ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKIAogUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0
UmVwcmVzZW50YXRpb24oQXJjaGl2ZSYgYXJjaGl2ZSkKIHsKLSAgICBhdXRvIHByb3BlcnR5TGlz
dCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAzLCAwLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gcHJvcGVydHlMaXN0ID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAzLCAw
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgYXV0byBtYWluUmVz
b3VyY2VEaWN0ID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oYXJjaGl2ZS5tYWlu
UmVzb3VyY2UoKSwgTWFpblJlc291cmNlKTsKICAgICBBU1NFUlQobWFpblJlc291cmNlRGljdCk7
CkBAIC0xMzMsNyArMTMzLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgp
LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5LCBtYWluUmVzb3VyY2VEaWN0LmdldCgp
KTsKIAotICAgIGF1dG8gc3VicmVzb3VyY2VzQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVN
dXRhYmxlKDAsIGFyY2hpdmUuc3VicmVzb3VyY2VzKCkuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7CisgICAgYXV0byBzdWJyZXNvdXJjZXNBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGFyY2hpdmUuc3VicmVzb3VyY2Vz
KCkuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAgICAgZm9yIChhdXRvJiByZXNv
dXJjZSA6IGFyY2hpdmUuc3VicmVzb3VyY2VzKCkpIHsKICAgICAgICAgaWYgKGF1dG8gc3VicmVz
b3VyY2UgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS5wdHIoKSwg
U3VicmVzb3VyY2UpKQogICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKHN1YnJlc291cmNl
c0FycmF5LmdldCgpLCBzdWJyZXNvdXJjZS5nZXQoKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlM
aXN0UmVwcmVzZW50YXRpb24oQXIKICAgICBpZiAoQ0ZBcnJheUdldENvdW50KHN1YnJlc291cmNl
c0FycmF5LmdldCgpKSkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0
LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlU3VicmVzb3VyY2VzS2V5LCBzdWJyZXNvdXJjZXNBcnJh
eS5nZXQoKSk7CiAKLSAgICBhdXRvIHN1YmZyYW1lc0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3Jl
YXRlTXV0YWJsZSgwLCBhcmNoaXZlLnN1YmZyYW1lQXJjaGl2ZXMoKS5zaXplKCksICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpKTsKKyAgICBhdXRvIHN1YmZyYW1lc0FycmF5ID0gYWRvcHRDRihDRkFy
cmF5Q3JlYXRlTXV0YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgYXJjaGl2ZS5zdWJmcmFt
ZUFyY2hpdmVzKCkuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAgICAgZm9yIChh
dXRvJiBzdWJmcmFtZSA6IGFyY2hpdmUuc3ViZnJhbWVBcmNoaXZlcygpKSB7CiAgICAgICAgIGlm
IChhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9u
KHN1YmZyYW1lLmdldCgpKSkKICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShzdWJmcmFt
ZXNBcnJheS5nZXQoKSwgc3ViZnJhbWVBcmNoaXZlLmdldCgpKTsKQEAgLTI2NSw3ICsyNjUsNyBA
QCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0
IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAKICAgICBDRkVycm9yUmVmIGVycm9y
ID0gbnVsbHB0cjsKICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9
IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0
ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAm
ZXJyb3IpKSk7CisgICAgYXV0byBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKGZhc3RNYWxsb2NDRkFsbG9jYXRv
cigpLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkp
OwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZXJyb3JTdHJpbmcgPSBlcnJvciA/IGFkb3B0Q0YoQ0ZFcnJvckNvcHlEZXNj
cmlwdGlvbihlcnJvcikpIDogMDsKQEAgLTM3NCw3ICszNzQsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpyYXdEYXRhUmVwcmVzZW50YXRpb24oKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHN0cmVhbSA9IGFkb3B0Q0YoQ0ZXcml0
ZVN0cmVhbUNyZWF0ZVdpdGhBbGxvY2F0ZWRCdWZmZXJzKDAsIDApKTsKKyAgICBhdXRvIHN0cmVh
bSA9IGFkb3B0Q0YoQ0ZXcml0ZVN0cmVhbUNyZWF0ZVdpdGhBbGxvY2F0ZWRCdWZmZXJzKGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCAwKSk7CiAKICAgICBDRldyaXRlU3RyZWFtT3BlbihzdHJlYW0u
Z2V0KCkpOwogICAgIENGUHJvcGVydHlMaXN0V3JpdGUocHJvcGVydHlMaXN0LmdldCgpLCBzdHJl
YW0uZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAKaW5kZXggZjg5NzU4ZTlkNmM0MDU5ZjQ1NTI3ZDg3NWZhM2FmYzNlOTZlYjExYS4uYWM2ZGM1
MDI4OTA1Y2Q4OGExNzJhMmFmYTA5M2E2MzNlODIxMzc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTc2OCw4
ICs3NjgsOCBAQCBzdGF0aWMgU3RyaW5nIHRyYWNrRGlzcGxheU5hbWUoY29uc3QgVHJhY2tCYXNl
JiB0cmFjaykKIAogICAgIGF1dG8gcHJlZmVycmVkTGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExh
bmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1YWdlczo6Tm8pOwogICAgIGF1dG8gZGVmYXVsdExh
bmd1YWdlID0gIXByZWZlcnJlZExhbmd1YWdlcy5pc0VtcHR5KCkgPyBwcmVmZXJyZWRMYW5ndWFn
ZXNbMF0gOiBlbXB0eVN0cmluZygpOyAvLyBUaGlzIG1hdGNoZXMgYGRlZmF1bHRMYW5ndWFnZWAu
Ci0gICAgYXV0byBjdXJyZW50TG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBkZWZhdWx0TGFuZ3VhZ2UuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIGF1dG8gbG9jYWxlSWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDYW5vbmlj
YWxMb2NhbGVJZGVudGlmaWVyRnJvbVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0cmFja0xh
bmd1YWdlSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgYXV0byBjdXJy
ZW50TG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3Io
KSwgZGVmYXVsdExhbmd1YWdlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBhdXRvIGxv
Y2FsZUlkZW50aWZpZXIgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRl
bnRpZmllckZyb21TdHJpbmcoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHRyYWNrTGFuZ3VhZ2VJ
ZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICBTdHJpbmcgbGFuZ3VhZ2VE
aXNwbGF5TmFtZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5RGlzcGxheU5hbWVGb3JQcm9wZXJ0eVZh
bHVlKGN1cnJlbnRMb2NhbGUuZ2V0KCksIGtDRkxvY2FsZUxhbmd1YWdlQ29kZSwgbG9jYWxlSWRl
bnRpZmllci5nZXQoKSkpLmdldCgpOwogCiAgICAgYm9vbCBleGFjdE1hdGNoOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1t
CmluZGV4IGQzMjhmYWI5NzUxN2NlZWUwZWY0MDc1YTY4ODAxNTcwYmM4ZWYxODUuLmI1NGQzYWMx
ZjE4MDliOGM1YzhjNWQ0OTAwM2I5NzgxNTU5YTg2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KQEAgLTI2Nywx
MCArMjY3LDggQEAgc3RhdGljIHZvaWQgc2hvd1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZs
b2F0IHgsIGZsb2F0IHksIENHQ29sb3JSZWYgY29sb3IsIGMKICAgICBhdXRvIGZvbnQgPSBhZG9w
dENGKENURm9udENyZWF0ZVdpdGhOYW1lKGZvbnROYW1lLCBmb250U2l6ZSwgJm1hdHJpeCkpOwog
ICAgIENGVHlwZVJlZiBrZXlzW10gPSB7IGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBrQ1RGb3JlZ3Jv
dW5kQ29sb3JGcm9tQ29udGV4dEF0dHJpYnV0ZU5hbWUgfTsKICAgICBDRlR5cGVSZWYgdmFsdWVz
W10gPSB7IGZvbnQuZ2V0KCksIGtDRkJvb2xlYW5UcnVlIH07Ci0gICAgYXV0byBhdHRyaWJ1dGVz
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywg
dmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0gICAgQ1N0cmluZyBj
c3RyID0gdGV4dC5hc2NpaSgpOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjc3RyLmRhdGFBc1VJbnQ4
UHRyKCksIGNzdHIubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZB
bGxvY2F0b3JOdWxsKSk7Ci0gICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0
dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLmdldCgpLCBh
dHRyaWJ1dGVzLmdldCgpKSk7CisgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rp
b25hcnlDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtleXMsIHZhbHVlcywgc3RkOjpz
aXplKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRD
RihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHRleHQu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXR0cmlidXRlcy5nZXQoKSkpOwogICAgIGF1dG8gbGlu
ZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0
cmluZy5nZXQoKSkpOwogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB4LCB5
KTsKICAgICBDVExpbmVEcmF3KGxpbmUuZ2V0KCksIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0KaW5kZXggMjJj
ZDMyNzM5ZWJmMDgzZDI1ZmM4YmM0MTM0ZTI5MDAwYzdjODU5NS4uZWM4ZWRiMDJlMTRmYjZhZWUw
ZTJkMzllZTQxNmNjMDhkNTE3OWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvSW1hZ2VPdmVybGF5Q29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9JbWFnZU92ZXJsYXlDb250cm9sbGVyTWFjLm1tCkBAIC04OSw5ICs4OSw5IEBAIHZvaWQg
SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRGF0YURldGVjdG9ySGlnaGxpZ2h0cyhjb25z
dCBIVE1MRWxlbWVudCYgb3ZlCiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0ZWFjaCBE
YXRhRGV0ZWN0b3JIaWdobGlnaHQgdG8gcmVuZGVyIHF1YWRzIGluc3RlYWQgb2YgYWx3YXlzIGZh
bGxpbmcgYmFjayB0byBheGlzLWFsaWduZWQgYm91bmRpbmcgcmVjdHMuCiAjaWYgSEFWRShERF9I
SUdITElHSFRfQ1JFQVRFX1dJVEhfU0NBTEUpCi0gICAgICAgIGF1dG8gaGlnaGxpZ2h0ID0gYWRv
cHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVj
dHNJblZpc2libGVSZWN0V2l0aFN0eWxlU2NhbGVBbmREaXJlY3Rpb24obnVsbHB0ciwgJmVsZW1l
bnRCb3VuZHMsIDEsIG1haW5GcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLCBEREhpZ2hs
aWdodFN0eWxlQnViYmxlU3RhbmRhcmQgfCBEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29uQXJy
b3csIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUywgMCkpOworICAgICAg
ICBhdXRvIGhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RE
SGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdFdpdGhTdHlsZVNjYWxlQW5kRGly
ZWN0aW9uKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAmZWxlbWVudEJvdW5kcywgMSwgbWFpbkZy
YW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFu
ZGFyZCB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdE
aXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTLCAwKSk7CiAjZWxzZQotICAgICAgICBhdXRvIGhpZ2hs
aWdodCA9IGFkb3B0Q0YoUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3Jl
YXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVjdFdpdGhTdHlsZUFuZERpcmVjdGlvbihudWxscHRyLCAm
ZWxlbWVudEJvdW5kcywgMSwgbWFpbkZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCksIERE
SGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZElj
b25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTKSk7CisgICAg
ICAgIGF1dG8gaGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNf
RERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxlQW5kRGlyZWN0
aW9uKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAmZWxlbWVudEJvdW5kcywgMSwgbWFpbkZyYW1l
Vmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFy
ZCB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJl
Y3Rpb25OYXR1cmFsLCBOTywgWUVTKSk7CiAjZW5kaWYKICAgICAgICAgbV9kYXRhRGV0ZWN0b3JD
b250YWluZXJzQW5kSGlnaGxpZ2h0cy5hcHBlbmQoeyBlbGVtZW50LCBEYXRhRGV0ZWN0b3JIaWdo
bGlnaHQ6OmNyZWF0ZUZvckltYWdlT3ZlcmxheSgqbV9wYWdlLCAqdGhpcywgV1RGTW92ZShoaWdo
bGlnaHQpLCAqbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50LmdldCgpKSkgfSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW0KaW5kZXggZGNmMWFjNjEwM2ZkMmUzODdjZjIxM2I4YTc2Njg5YjZlY2Q2YWZlOS4u
MzMyNmMxMGQ2M2VhZTUxODMyMWIyZDRhZjEwZTU3OTZkM2UxNzIwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0z
NjgsOSArMzY4LDkgQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFBob25l
TnVtYmVySGlnaGxpZ2h0cygpCiAKICAgICAgICAgQ0dSZWN0IGNnUmVjdCA9IHJlY3Q7CiAjaWYg
SEFWRShERF9ISUdITElHSFRfQ1JFQVRFX1dJVEhfU0NBTEUpCi0gICAgICAgIGF1dG8gZGRIaWdo
bGlnaHQgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENy
ZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVTY2FsZUFuZERpcmVjdGlvbihudWxs
cHRyLCAmY2dSZWN0LCAxLCBtYWluRnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpLCBEREhp
Z2hsaWdodFN0eWxlQnViYmxlU3RhbmRhcmQgfCBEREhpZ2hsaWdodFN0eWxlU3RhbmRhcmRJY29u
QXJyb3csIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUywgMCkpOworICAg
ICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3Rv
cnNfRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxlU2NhbGVB
bmREaXJlY3Rpb24oZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksICZjZ1JlY3QsIDEsIG1haW5GcmFt
ZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFy
ZCB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJl
Y3Rpb25OYXR1cmFsLCBOTywgWUVTLCAwKSk7CiAjZWxzZQotICAgICAgICBhdXRvIGRkSGlnaGxp
Z2h0ID0gYWRvcHRDRihQQUw6OnNvZnRMaW5rX0RhdGFEZXRlY3RvcnNfRERIaWdobGlnaHRDcmVh
dGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0aFN0eWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZj
Z1JlY3QsIDEsIG1haW5GcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCksIERESGlnaGxpZ2h0
U3R5bGVCdWJibGVTdGFuZGFyZCB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdywg
WUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBOTywgWUVTKSk7CisgICAgICAgIGF1dG8g
ZGRIaWdobGlnaHQgPSBhZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hs
aWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVBbmREaXJlY3Rpb24oZmFz
dE1hbGxvY0NGQWxsb2NhdG9yKCksICZjZ1JlY3QsIDEsIG1haW5GcmFtZVZpZXcudmlzaWJsZUNv
bnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCB8IERESGlnaGxpZ2h0
U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsLCBO
TywgWUVTKSk7CiAjZW5kaWYKICAgICAgICAgYXV0byBoaWdobGlnaHQgPSBEYXRhRGV0ZWN0b3JI
aWdobGlnaHQ6OmNyZWF0ZUZvclRlbGVwaG9uZU51bWJlcihtX3BhZ2UsICp0aGlzLCBXVEZNb3Zl
KGRkSGlnaGxpZ2h0KSwgV1RGTW92ZShyYW5nZSkpOwogICAgICAgICBtX2hpZ2hsaWdodHMuYWRk
KGhpZ2hsaWdodC5nZXQoKSk7CkBAIC00MTMsOSArNDEzLDkgQEAgdm9pZCBTZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hsaWdodCgpCiAgICAgICAgIGlmICghY2dS
ZWN0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIENHUmVjdCB2aXNpYmxlUmVjdCA9IG1haW5G
cmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwogI2lmIEhBVkUoRERfSElHSExJR0hUX0NS
RUFURV9XSVRIX1NDQUxFKQotICAgICAgICAgICAgYXV0byBkZEhpZ2hsaWdodCA9IGFkb3B0Q0Yo
UEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5W
aXNpYmxlUmVjdFdpdGhTdHlsZVNjYWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsIGNnUmVjdHMuYmVn
aW4oKSwgY2dSZWN0cy5zaXplKCksIHZpc2libGVSZWN0LCBEREhpZ2hsaWdodFN0eWxlQnViYmxl
Tm9uZSB8IERESGlnaGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdyB8IERESGlnaGxpZ2h0U3R5
bGVCdXR0b25TaG93QWx3YXlzLCBZRVMsIE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwsIE5PLCBZ
RVMsIDApKTsKKyAgICAgICAgICAgIGF1dG8gZGRIaWdobGlnaHQgPSBhZG9wdENGKFBBTDo6c29m
dExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJl
Y3RXaXRoU3R5bGVTY2FsZUFuZERpcmVjdGlvbihmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgY2dS
ZWN0cy5iZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgdmlzaWJsZVJlY3QsIERESGlnaGxpZ2h0U3R5
bGVCdWJibGVOb25lIHwgRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93IHwgRERIaWdo
bGlnaHRTdHlsZUJ1dHRvblNob3dBbHdheXMsIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJh
bCwgTk8sIFlFUywgMCkpOwogI2Vsc2UKLSAgICAgICAgICAgIGF1dG8gZGRIaWdobGlnaHQgPSBh
ZG9wdENGKFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc19EREhpZ2hsaWdodENyZWF0ZVdpdGhS
ZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVBbmREaXJlY3Rpb24obnVsbHB0ciwgY2dSZWN0cy5i
ZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgdmlzaWJsZVJlY3QsIERESGlnaGxpZ2h0U3R5bGVCdWJi
bGVOb25lIHwgRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93IHwgRERIaWdobGlnaHRT
dHlsZUJ1dHRvblNob3dBbHdheXMsIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8s
IFlFUykpOworICAgICAgICAgICAgYXV0byBkZEhpZ2hsaWdodCA9IGFkb3B0Q0YoUEFMOjpzb2Z0
TGlua19EYXRhRGV0ZWN0b3JzX0RESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxlUmVj
dFdpdGhTdHlsZUFuZERpcmVjdGlvbihmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgY2dSZWN0cy5i
ZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgdmlzaWJsZVJlY3QsIERESGlnaGxpZ2h0U3R5bGVCdWJi
bGVOb25lIHwgRERIaWdobGlnaHRTdHlsZVN0YW5kYXJkSWNvbkFycm93IHwgRERIaWdobGlnaHRT
dHlsZUJ1dHRvblNob3dBbHdheXMsIFlFUywgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8s
IFlFUykpOwogI2VuZGlmCiAgICAgICAgICAgICBhdXRvIGhpZ2hsaWdodCA9IERhdGFEZXRlY3Rv
ckhpZ2hsaWdodDo6Y3JlYXRlRm9yU2VsZWN0aW9uKG1fcGFnZSwgKnRoaXMsIFdURk1vdmUoZGRI
aWdobGlnaHQpLCBXVEZNb3ZlKCpzZWxlY3Rpb25SYW5nZSkpOwogICAgICAgICAgICAgbV9oaWdo
bGlnaHRzLmFkZChoaWdobGlnaHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCAxMTczZWY2YTFiMjg3MzhmMTAxMTBhYjBjNzM4OWFl
YWY1ODQxYzY0Li5jNzc5OGI1Y2MzZTBjNDU1OTAyMGFjMDJiYzYyODcxYzI3MDQwZjgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikK
ICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7CiAKICAgICBBTExPV19OT05MSVRFUkFM
X0ZPUk1BVF9CRUdJTgotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGFyZ3VtZW50cykpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhGb3JtYXRBbmRBcmd1bWVudHMoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsIGZvcm1hdC5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBhcmd1bWVudHMpKTsKICAgICBBTExPV19OT05MSVRFUkFM
X0ZPUk1BVF9FTkQKIAogICAgIHZhX2VuZChhcmd1bWVudHMpOwpAQCAtODQwLDExICs4NDAsMTEg
QEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIAogICAgIGludCB3aWR0aEludCA9IHNpemUud2lkdGgoKTsKICAgICBhdXRvIHdp
ZHRoID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmd2lkdGhJ
bnQpKTsKLSAgICBhdXRvIHdpZHRoU3RyaW5nID0gYWRvcHRDRihDRk51bWJlckZvcm1hdHRlckNy
ZWF0ZVN0cmluZ1dpdGhOdW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCB3aWR0aC5nZXQoKSkpOwor
ICAgIGF1dG8gd2lkdGhTdHJpbmcgPSBhZG9wdENGKENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlU3Ry
aW5nV2l0aE51bWJlcihmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgZm9ybWF0dGVyLmdldCgpLCB3
aWR0aC5nZXQoKSkpOwogCiAgICAgaW50IGhlaWdodEludCA9IHNpemUuaGVpZ2h0KCk7CiAgICAg
YXV0byBoZWlnaHQgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUs
ICZoZWlnaHRJbnQpKTsKLSAgICBhdXRvIGhlaWdodFN0cmluZyA9IGFkb3B0Q0YoQ0ZOdW1iZXJG
b3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1hdHRlci5nZXQoKSwgaGVpZ2h0
LmdldCgpKSk7CisgICAgYXV0byBoZWlnaHRTdHJpbmcgPSBhZG9wdENGKENGTnVtYmVyRm9ybWF0
dGVyQ3JlYXRlU3RyaW5nV2l0aE51bWJlcihmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgZm9ybWF0
dGVyLmdldCgpLCBoZWlnaHQuZ2V0KCkpKTsKIAogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0NGU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBm
b3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgp
IiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBo
ZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5j
cHAKaW5kZXggMmNkNzg0MjllMjg1ZGU5YWViNzExMmY2MzY2ZmYyMTJkMzU2MjY5Yi4uZWRiOTFk
MjRlYzRjMjU2MDRhNjNkM2I0NTUxMDAzZWVhNTdhYzY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29h
LmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBBdWRpb0ZpbGVS
ZWFkZXI6OmRlY29kZVdlYk1EYXRhKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzCiAgICAgICAg
IC8vIE1ha2Ugc3VyZSBibG9jayBidWZmZXIgaXMgY29udGlndW91cy4KICAgICAgICAgaWYgKCFQ
QUw6OkNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhyYXdCdWZmZXIsIDAsIDApKSB7CiAg
ICAgICAgICAgICBDTUJsb2NrQnVmZmVyUmVmIGNvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwot
ICAgICAgICAgICAgaWYgKFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMobnVsbHB0
ciwgcmF3QnVmZmVyLCBudWxscHRyLCBudWxscHRyLCAwLCAwLCAwLCAmY29udGlndW91c0J1ZmZl
cikgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikgeworICAgICAgICAgICAgaWYgKFBBTDo6Q01CbG9j
a0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHJhd0J1ZmZl
ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgMCwgMCwgJmNvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJs
b2NrQnVmZmVyTm9FcnIpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChXZWJB
dWRpbywgImZhaWxlZCB0byBjcmVhdGUgY29udGlndW91cyBibG9jayBidWZmZXIiKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUu
LmZhMjc4MTlhOGU4ODJiNmI3MTcyMDcxMWRlNDJiYTEyZWJhY2YxZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW0KQEAgLTMxNSwyOSArMzE1LDI5IEBAIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxp
Y2F0aW9uCiAgICAgaWYgKHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKQogICAgICAgICBNUk1l
ZGlhUmVtb3RlU2V0Q2FuQmVOb3dQbGF5aW5nQXBwbGljYXRpb24odHJ1ZSk7CiAKLSAgICBhdXRv
IGluZm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgNCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gaW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgNCwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydGlzdCwgbm93UGxheWluZ0luZm8uYXJ0aXN0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9BbGJ1bSwgbm93UGxheWluZ0luZm8uYWxidW0uY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlLCBub3dQbGF5aW5nSW5mby50aXRsZS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKIAogICAgIGlmIChzdGQ6OmlzZmluaXRlKG5vd1BsYXlpbmdJbmZvLmR1
cmF0aW9uKSAmJiBub3dQbGF5aW5nSW5mby5kdXJhdGlvbiAhPSBNZWRpYVBsYXllcjo6aW52YWxp
ZFRpbWUoKSkgewotICAgICAgICBhdXRvIGNmRHVyYXRpb24gPSBhZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICZub3dQbGF5aW5n
SW5mby5kdXJhdGlvbikpOworICAgICAgICBhdXRvIGNmRHVyYXRpb24gPSBhZG9wdENGKENGTnVt
YmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAm
bm93UGxheWluZ0luZm8uZHVyYXRpb24pKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
aW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uLCBjZkR1cmF0
aW9uLmdldCgpKTsKICAgICB9CiAKICAgICBkb3VibGUgcmF0ZSA9IG5vd1BsYXlpbmdJbmZvLmlz
UGxheWluZyA/IDEgOiAwOwotICAgIGF1dG8gY2ZSYXRlID0gYWRvcHRDRihDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmcmF0ZSkpOworICAg
IGF1dG8gY2ZSYXRlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0
b3IoKSwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnJhdGUpKTsKICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRl
LCBjZlJhdGUuZ2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIENv
bnRyb2wgQ2VudGVyIG5vdCB1cGRhdGluZyB0aGUgYXJ0d29yayB3aGVuIHJlZnJlc2hlZC4KICAg
ICAvLyBXZSBmb3JjZSB0aGUgaWRlbnRpZmllciB0byBiZSByZWxvYWRlZCB0byB0aGUgbmV3IGFy
dHdvcmsgaWYgYXZhaWxhYmxlLgogICAgIGF1dG8gbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1Vu
aXF1ZUlkZW50aWZpZXIgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrID8gbm93UGxheWluZ0luZm8u
YXJ0d29yay0+c3JjLmhhc2goKSA6IG5vd1BsYXlpbmdJbmZvLnVuaXF1ZUlkZW50aWZpZXIudG9V
SW50NjQoKTsKLSAgICBhdXRvIGNmSWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyTG9uZ0xvbmdUeXBlLCAmbGFzdFVwZGF0ZWRO
b3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGNmSWRlbnRpZmllciA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtDRk51bWJl
ckxvbmdMb25nVHlwZSwgJmxhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVy
KSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIGNmSWRlbnRpZmllci5nZXQoKSk7CiAKICAg
ICBpZiAoc3RkOjppc2Zpbml0ZShub3dQbGF5aW5nSW5mby5jdXJyZW50VGltZSkgJiYgbm93UGxh
eWluZ0luZm8uY3VycmVudFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkgJiYgbm93
UGxheWluZ0luZm8uc3VwcG9ydHNTZWVraW5nKSB7Ci0gICAgICAgIGF1dG8gY2ZDdXJyZW50VGlt
ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVy
RG91YmxlVHlwZSwgJm5vd1BsYXlpbmdJbmZvLmN1cnJlbnRUaW1lKSk7CisgICAgICAgIGF1dG8g
Y2ZDdXJyZW50VGltZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2Nh
dG9yKCksIGtDRk51bWJlckRvdWJsZVR5cGUsICZub3dQbGF5aW5nSW5mby5jdXJyZW50VGltZSkp
OwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0K
ICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5pbWFnZURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRGVjb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2Rl
ckNGLmNwcAppbmRleCA3YTQ3ZjU2MDhiYmI2ZGU5ZDM3NzNiMTdlOThlNDc2NGEyNDIyMmM3Li5m
YWQxMWQ4MjEwNTQyMWE2ODM0MjNjOGIxYzkwZGUwMzk2MGIwNDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCkBAIC0zOCwxMyArMzgsMTMgQEAg
c3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdAogCiBLZXllZERlY29kZXJDRjo6S2V5ZWREZWNvZGVyQ0Yo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXV0byBjZkRhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBk
YXRhLCBzaXplLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgYXV0byBjZlByb3BlcnR5TGlzdCA9
IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgbnVsbHB0ciwgbnVsbHB0
cikpOworICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0Nv
cHkoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGRhdGEsIHNpemUsIGtDRkFsbG9jYXRvck51bGwp
KTsKKyAgICBhdXRvIGNmUHJvcGVydHlMaXN0ID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0
ZVdpdGhEYXRhKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBjZkRhdGEuZ2V0KCksIGtDRlByb3Bl
cnR5TGlzdEltbXV0YWJsZSwgbnVsbHB0ciwgbnVsbHB0cikpOwogCiAgICAgaWYgKGR5bmFtaWNf
Y2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KGNmUHJvcGVydHlMaXN0LmdldCgpKSkKICAgICAgICAg
bV9yb290RGljdGlvbmFyeSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihj
ZlByb3BlcnR5TGlzdC5sZWFrUmVmKCkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcm9vdERpY3Rp
b25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBu
dWxscHRyLCBudWxscHRyLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIG1fcm9vdERpY3Rpb25hcnkg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbnVs
bHB0ciwgbnVsbHB0ciwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlw
ZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVu
ZChtX3Jvb3REaWN0aW9uYXJ5LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdi
ZjJjOWNkN2RlZDIxMzIuLmY2YWViOTdmZDkyNjNhNWJjMmI1Y2Q5ZDE1OWQ3NzEyMmM2NmY3ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVy
OjplbmNvZGVyKCkKIAogc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBj
cmVhdGVEaWN0aW9uYXJ5KCkKIHsKLSAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICByZXR1cm4g
YWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiB9CiAKIEtleWVkRW5jb2RlckNGOjpLZXllZEVuY29kZXJDRigpCkBA
IC01Nyw3ICs1Nyw3IEBAIEtleWVkRW5jb2RlckNGOjp+S2V5ZWRFbmNvZGVyQ0YoKQogCiB2b2lk
IEtleWVkRW5jb2RlckNGOjplbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBzaXplKQogewotICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ5dGVzLCBzaXpl
LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGVXaXRoQnl0ZXNOb0NvcHkoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGJ5dGVzLCBzaXplLCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUobV9kaWN0aW9uYXJ5
U3RhY2subGFzdCgpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZGF0YS5nZXQoKSk7CiB9
CiAKQEAgLTY4LDM3ICs2OCwzNyBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKQogCiB2b2lkIEtleWVkRW5jb2RlckNGOjplbmNv
ZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90IHZhbHVlKQogewotICAgIGF1dG8g
bnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZO
dW1iZXJTSW50MzJUeXBlLCAmdmFsdWUpKTsKKyAgICBhdXRvIG51bWJlciA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtDRk51bWJlclNJbnQzMlR5cGUs
ICZ2YWx1ZSkpOwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG1fZGljdGlvbmFyeVN0YWNrLmxh
c3QoKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG51bWJlci5nZXQoKSk7CiB9CiAgICAg
CiB2b2lkIEtleWVkRW5jb2RlckNGOjplbmNvZGVVSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIHVp
bnQ2NF90IHZhbHVlKQogewotICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmdmFsdWUpKTsKKyAg
ICBhdXRvIG51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2Nh
dG9yKCksIGtDRk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZSkpOwogICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIG51bWJlci5nZXQoKSk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuY29kZUludDMy
KGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90IHZhbHVlKQogewotICAgIGF1dG8gbnVtYmVyID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50
MzJUeXBlLCAmdmFsdWUpKTsKKyAgICBhdXRvIG51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVh
dGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtDRk51bWJlclNJbnQzMlR5cGUsICZ2YWx1ZSkp
OwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKSwga2V5
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG51bWJlci5nZXQoKSk7CiB9CiAKIHZvaWQgS2V5ZWRF
bmNvZGVyQ0Y6OmVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90IHZhbHVlKQog
ewotICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmdmFsdWUpKTsKKyAgICBhdXRvIG51bWJlciA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtDRk51bWJl
clNJbnQ2NFR5cGUsICZ2YWx1ZSkpOwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG1fZGljdGlv
bmFyeVN0YWNrLmxhc3QoKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG51bWJlci5nZXQo
KSk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYg
a2V5LCBmbG9hdCB2YWx1ZSkKIHsKLSAgICBhdXRvIG51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWUpKTsK
KyAgICBhdXRvIG51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxs
b2NhdG9yKCksIGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUobV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgbnVtYmVyLmdldCgpKTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5jb2RlRG91
YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUgdmFsdWUpCiB7Ci0gICAgYXV0byBudW1iZXIg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRv
dWJsZVR5cGUsICZ2YWx1ZSkpOworICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNy
ZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnZhbHVl
KSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUobV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLCBr
ZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbnVtYmVyLmdldCgpKTsKIH0KIApAQCAtMTIyLDcg
KzEyMiw3IEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZE9iamVjdCgpCiAKIHZvaWQgS2V5ZWRF
bmNvZGVyQ0Y6OmJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgYXV0byBhcnJh
eSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIGF1dG8gYXJyYXkgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwLCAma0NGVHlwZUFycmF5
Q2FsbEJhY2tzKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUobV9kaWN0aW9uYXJ5U3RhY2su
bGFzdCgpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXJyYXkuZ2V0KCkpOwogCiAgICAg
bV9hcnJheVN0YWNrLmFwcGVuZChhcnJheS5nZXQoKSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9p
ZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXll
ZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0Yo
Q0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rp
b25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRy
KSk7CisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoZmFz
dE1hbGxvY0NGQWxsb2NhdG9yKCksIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5
TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uYWRmNzhk
MWMyNjZkNDM2MDA5ZjdkMTMxOTk1MmE3MDhjY2Y0NWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDcsNyArNDcsNyBAQCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiAgICAgICAg
IGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3Nl
Z21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4g
KmRhdGE7CiAgICAgfQotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRh
YmxlKG51bGxwdHIsIHNpemUoKSkpOworICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBzaXplKCkpKTsKICAgICBmb3JF
YWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBDRkRhdGFBcHBlbmRCeXRl
cyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJp
bmdzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJp
bmdzQ29jb2EubW0KaW5kZXggZmMzNmJmY2EyNWYwMzBiOWY4MjljMjRiNWI5NWVmMjZkMmE0YTBm
My4uMjBiZmQ4MWMwNjZhNTRjOWE0MmVmZWVmNzIxNTJiZjUzYjVjN2E5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5t
bQpAQCAtNDksNyArNDksNyBAQCBOU1N0cmluZyAqbG9jYWxpemVkTlNTdHJpbmcoTlNTdHJpbmcg
KmtleSkKIAogU3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7Ci0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENTdHJpbmdOb0NvcHkoMCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9j
YXRvck51bGwpKTsKKyAgICBhdXRvIGtleVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQ1N0cmluZ05vQ29weShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwga2V5LCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICByZXR1cm4gbG9jYWxpemVkTlNT
dHJpbmcoKF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVkaWFVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVkaWFVdGlsaXRpZXMuY3BwCmluZGV4IGM1
NWQyYTU2ZGU5NzM0MGJhMWM0YWI3ODYwOTE0ZmZmYWZmOTBjNWUuLjlhMTQzZWQyMTJmNzViNzU1
MWYzZWQ0ODY4MGExM2RmMjVhZmJhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL01lZGlhVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9NZWRpYVV0aWxpdGllcy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUmV0YWluUHRyPENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uc3Qg
QXVkaW9TdHJlYW0KIHsKICAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBzdGQ6OmdldDxjb25z
dCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2Ny
aXB0aW9uKCkuZGVzY3JpcHRpb24pOwogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
ID0gbnVsbHB0cjsKLSAgICBhdXRvIGVycm9yID0gUEFMOjpDTUF1ZGlvRm9ybWF0RGVzY3JpcHRp
b25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzaWNEZXNjcmlwdGlvbiwgMCwgbnVsbHB0
ciwgbWFnaWNDb29raWVTaXplLCBtYWdpY0Nvb2tpZSwgbnVsbHB0ciwgJmZvcm1hdCk7CisgICAg
YXV0byBlcnJvciA9IFBBTDo6Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpLCBiYXNpY0Rlc2NyaXB0aW9uLCAwLCBudWxscHRyLCBtYWdpY0Nvb2tp
ZVNpemUsIG1hZ2ljQ29va2llLCBudWxscHRyLCAmZm9ybWF0KTsKICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uIGZhaWxlZCB3
aXRoICVkIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvcikpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTUzLDE0ICs1MywxNCBAQCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNyZWF0
ZUF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciA9IG51
bGxwdHI7Ci0gICAgYXV0byBlcnJvciA9IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdp
dGhQYWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgZmFsc2Us
IG51bGxwdHIsIG51bGxwdHIsIGZvcm1hdC5nZXQoKSwgc2FtcGxlQ291bnQsIHRpbWUsIG51bGxw
dHIsICZzYW1wbGVCdWZmZXIpOworICAgIGF1dG8gZXJyb3IgPSBQQUw6OkNNQXVkaW9TYW1wbGVC
dWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCBudWxscHRyLCBmYWxzZSwgbnVsbHB0ciwgbnVsbHB0ciwgZm9ybWF0LmdldCgpLCBzYW1wbGVD
b3VudCwgdGltZSwgbnVsbHB0ciwgJnNhbXBsZUJ1ZmZlcik7CiAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgIExPR19FUlJPUigiY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIgd2l0aCBwYWNrZXQgZGVz
Y3JpcHRpb25zIGZhaWxlZCAtICVkIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvcikpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKHNhbXBs
ZUJ1ZmZlcik7CiAKLSAgICBlcnJvciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVy
RnJvbUF1ZGlvQnVmZmVyTGlzdChidWZmZXIuZ2V0KCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsIGRvd25jYXN0PFdlYkF1ZGlvQnVmZmVyTGlzdD4oZGF0YSku
bGlzdCgpKTsKKyAgICBlcnJvciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJTZXREYXRhQnVmZmVyRnJv
bUF1ZGlvQnVmZmVyTGlzdChidWZmZXIuZ2V0KCksIGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0Pihk
YXRhKS5saXN0KCkpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBMT0dfRVJST1IoImNyZWF0
ZUF1ZGlvU2FtcGxlQnVmZmVyIGZyb20gYXVkaW8gYnVmZmVyIGxpc3QgZmFpbGVkIC0gJWQiLCBz
dGF0aWNfY2FzdDxpbnQ+KGVycm9yKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlz
dGVuZXJDb2NvYS5tbQppbmRleCBmMzA4YThkMmNhOGU5OGZiY2JmYjA5ZTc0NGQ3MzdlZmQ0YjZh
OWYzLi5iN2Q2MzUwY2U0MTY2YWMxZjdiODVlYWE5Y2IxNDVjYTg0NWVlMzA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlz
dGVuZXJDb2NvYS5tbQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUmVtb3RlQ29tbWFuZExpc3Rl
bmVyQ29jb2E6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkKICAgICBpZiAobV9jdXJyZW50Q29t
bWFuZHMgPT0gY3VycmVudENvbW1hbmRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNv
bW1hbmRJbmZvQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGN1cnJlbnRDb21tYW5kcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
KTsKKyAgICBhdXRvIGNvbW1hbmRJbmZvQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRh
YmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBjdXJyZW50Q29tbWFuZHMuc2l6ZSgpLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAgICAgZm9yIChhdXRvIHBsYXRmb3JtQ29tbWFuZCA6IGN1
cnJlbnRDb21tYW5kcykgewogICAgICAgICBpZiAoaXNTZWVrQ29tbWFuZChwbGF0Zm9ybUNvbW1h
bmQpICYmICFzdXBwb3J0c1NlZWtpbmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTE1
LDcgKzExNSw3IEBAIHZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6OnVwZGF0ZVN1cHBv
cnRlZENvbW1hbmRzKCkKICAgICAgICAgaWYgKCFjb21tYW5kKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgYXV0byBjb21tYW5kSW5mbyA9IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNv
bW1hbmRJbmZvQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICAgICAgYXV0byBjb21t
YW5kSW5mbyA9IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvQ3JlYXRlKGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpKSk7CiAgICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldENv
bW1hbmQoY29tbWFuZEluZm8uZ2V0KCksIGNvbW1hbmQudmFsdWUoKSk7CiAgICAgICAgIE1STWVk
aWFSZW1vdGVDb21tYW5kSW5mb1NldEVuYWJsZWQoY29tbWFuZEluZm8uZ2V0KCksIHRydWUpOwog
ICAgICAgICBpZiAocGxhdGZvcm1Db21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lw
Rm9yd2FyZENvbW1hbmQgfHwgcGxhdGZvcm1Db21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTa2lwQmFja3dhcmRDb21tYW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGEzMmRmNjIwNDhk
MzJkN2IxMzRkYmY1NmRhMDA3YjcwZWMyNDczZjQuLmEwYzhmYTFiOWI5OTQ2MmMzYjdlNjU0NTg1
ZWNkZjZmM2RkYjA0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIubW0KQEAgLTUxLDEzICs1MSwxMyBAQCBz
dGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGV2aWNlTWF0Y2hpbmdEaWN0aW9uYXJ5
KHVpbnQzMl90IHVzYWdlUGFnZSwgdQogICAgIEFTU0VSVCh1c2FnZVBhZ2UpOwogICAgIEFTU0VS
VCh1c2FnZSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHBhZ2VOdW1iZXIgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUs
ICZ1c2FnZVBhZ2UpKTsKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHVzYWdlTnVtYmVyID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmdXNhZ2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHBhZ2VOdW1iZXIgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJJ
bnRUeXBlLCAmdXNhZ2VQYWdlKSk7CisgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB1c2FnZU51
bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtD
Rk51bWJlckludFR5cGUsICZ1c2FnZSkpOwogCiAgICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0geyBD
RlNUUihrSU9ISUREZXZpY2VVc2FnZVBhZ2VLZXkpLCBDRlNUUihrSU9ISUREZXZpY2VVc2FnZUtl
eSkgfTsKICAgICBDRk51bWJlclJlZiB2YWx1ZXNbXSA9IHsgcGFnZU51bWJlci5nZXQoKSwgdXNh
Z2VOdW1iZXIuZ2V0KCkgfTsKIAotICAgIHJldHVybiBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKWtleXMsIChjb25zdCB2b2lkKiop
dmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoY29uc3Qgdm9pZCoqKWtleXMsIChjb25zdCB2
b2lkKiopdmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRldmljZUFkZGVk
Q2FsbGJhY2sodm9pZCogY29udGV4dCwgSU9SZXR1cm4sIHZvaWQqLCBJT0hJRERldmljZVJlZiBk
ZXZpY2UpCkBAIC05MiwxNCArOTIsMTQgQEAgSElER2FtZXBhZFByb3ZpZGVyOjpISURHYW1lcGFk
UHJvdmlkZXIoKQogICAgIDogbV9pbml0aWFsR2FtZXBhZHNDb25uZWN0ZWRUaW1lcigqdGhpcywg
JkhJREdhbWVwYWRQcm92aWRlcjo6aW5pdGlhbEdhbWVwYWRzQ29ubmVjdGVkVGltZXJGaXJlZCkK
ICAgICAsIG1faW5wdXROb3RpZmljYXRpb25UaW1lcigqdGhpcywgJkhJREdhbWVwYWRQcm92aWRl
cjo6aW5wdXROb3RpZmljYXRpb25UaW1lckZpcmVkKQogewotICAgIG1fbWFuYWdlciA9IGFkb3B0
Q0YoSU9ISURNYW5hZ2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtJT0hJRE9wdGlvbnNU
eXBlTm9uZSkpOworICAgIG1fbWFuYWdlciA9IGFkb3B0Q0YoSU9ISURNYW5hZ2VyQ3JlYXRlKGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrSU9ISURPcHRpb25zVHlwZU5vbmUpKTsKIAogICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGpveXN0aWNrRGljdGlvbmFyeSA9IGRldmljZU1hdGNo
aW5nRGljdGlvbmFyeShrSElEUGFnZV9HZW5lcmljRGVza3RvcCwga0hJRFVzYWdlX0dEX0pveXN0
aWNrKTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBnYW1lcGFkRGljdGlvbmFyeSA9
IGRldmljZU1hdGNoaW5nRGljdGlvbmFyeShrSElEUGFnZV9HZW5lcmljRGVza3RvcCwga0hJRFVz
YWdlX0dEX0dhbWVQYWQpOwogCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGRldmljZXNbXSA9IHsgam95
c3RpY2tEaWN0aW9uYXJ5LmdldCgpLCBnYW1lcGFkRGljdGlvbmFyeS5nZXQoKSB9OwogCi0gICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IG1hdGNoaW5nQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZvaWQqKilkZXZpY2VzLCAyLCAma0NGVHlw
ZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1hdGNoaW5nQXJy
YXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIChjb25z
dCB2b2lkKiopZGV2aWNlcywgMiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogCiAgICAgSU9I
SURNYW5hZ2VyU2V0RGV2aWNlTWF0Y2hpbmdNdWx0aXBsZShtX21hbmFnZXIuZ2V0KCksIG1hdGNo
aW5nQXJyYXkuZ2V0KCkpOwogICAgIElPSElETWFuYWdlclJlZ2lzdGVyRGV2aWNlTWF0Y2hpbmdD
YWxsYmFjayhtX21hbmFnZXIuZ2V0KCksIGRldmljZUFkZGVkQ2FsbGJhY2ssIHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IGRm
ZjRmYTRlZGYyNjRiNDUyYmY4ZGE3YWZhZWY0Y2JkN2EwMjdiMDIuLmU0MWY0OTZmYzVlODBlMTI5
ZWFjMDlhNzVlZWQwZTUzZjYzMGRlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIEF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGVNaXhJZk5lZWRlZCgpCiAgICAgfTsKIAogICAgIE1U
QXVkaW9Qcm9jZXNzaW5nVGFwUmVmIHRhcCA9IG51bGxwdHI7Ci0gICAgT1NTdGF0dXMgc3RhdHVz
ID0gUEFMOjpNVEF1ZGlvUHJvY2Vzc2luZ1RhcENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAm
Y2FsbGJhY2tzLCAxLCAmdGFwKTsKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBQQUw6Ok1UQXVkaW9Q
cm9jZXNzaW5nVGFwQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAmY2FsbGJhY2tzLCAx
LCAmdGFwKTsKICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CiAgICAgICAgIGlmICh0YXApCiAg
ICAgICAgICAgICBDRlJlbGVhc2UodGFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEw
Y2MxNGY0YmYuLjFkN2Q3NmFjMzMzYmViNzhlNmM2NzE1MmU4NGIzYzY4NjA2NTdiMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtNjA2LDcg
KzYwNiw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzCiAgICAgICAgICAgICAgICAgW2RhdGEg
cmV0YWluXQogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3
QmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKG5vRXJyICE9IFBBTDo6Q01C
bG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb25z
dF9jYXN0PHZvaWQqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgsIG51bGxwdHIsICZzb3VyY2Us
IGJ5dGVSYW5nZVZhbHVlLmJ5dGVPZmZzZXQsIGJ5dGVSYW5nZVZhbHVlLmJ5dGVMZW5ndGgsIDAs
ICZyYXdCbG9ja0J1ZmZlcikpCisgICAgICAgICAgICBpZiAobm9FcnIgIT0gUEFMOjpDTUJsb2Nr
QnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBjb25z
dF9jYXN0PHZvaWQqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgsIG51bGxwdHIsICZzb3VyY2Us
IGJ5dGVSYW5nZVZhbHVlLmJ5dGVPZmZzZXQsIGJ5dGVSYW5nZVZhbHVlLmJ5dGVMZW5ndGgsIDAs
ICZyYXdCbG9ja0J1ZmZlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAgICAgICAgIGlmICghcmF3QmxvY2tCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggN2ExYTAwZmU5MDNlNzk1NzEyYWQyZWEzYWZlNTIw
OTZjN2I0NGJiMC4uZWFkNzYyYzAyMTg4NzRlMDg5MzcxN2I0ZTBjNDY1NDdmMTE0OWYwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpAQCAtODcsNyAr
ODcsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBNZWRpYVNhbXBsZUFWRk9iakM6OmNy
ZWF0ZUltYWdlU2FtcGxlKFBpeGVsQnVmZmVyJiYgcAogICAgIH07CiAKICAgICBDVlBpeGVsQnVm
ZmVyUmVmIGN2UGl4ZWxCdWZmZXJSYXcgPSBudWxscHRyOwotICAgIGF1dG8gc3RhdHVzID0gQ1ZQ
aXhlbEJ1ZmZlckNyZWF0ZVdpdGhCeXRlcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3aWR0aCwgaGVp
Z2h0LCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBkYXRhQmFzZUFkZHJlc3MsIHdpZHRoICog
NCwgZGVyZWZCdWZmZXIsIGxlYWtlZERhdGEsIG51bGxwdHIsICZjdlBpeGVsQnVmZmVyUmF3KTsK
KyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJDcmVhdGVXaXRoQnl0ZXMoZmFzdE1hbGxv
Y0NGQWxsb2NhdG9yKCksIHdpZHRoLCBoZWlnaHQsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEs
IGRhdGFCYXNlQWRkcmVzcywgd2lkdGggKiA0LCBkZXJlZkJ1ZmZlciwgbGVha2VkRGF0YSwgbnVs
bHB0ciwgJmN2UGl4ZWxCdWZmZXJSYXcpOwogCiAgICAgYXV0byBjdlBpeGVsQnVmZmVyID0gYWRv
cHRDRihjdlBpeGVsQnVmZmVyUmF3KTsKICAgICBpZiAoIWN2UGl4ZWxCdWZmZXIpIHsKQEAgLTEw
MSw3ICsxMDEsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBNZWRpYVNhbXBsZUFWRk9i
akM6OmNyZWF0ZUltYWdlU2FtcGxlKFBpeGVsQnVmZmVyJiYgcAogUmVmUHRyPE1lZGlhU2FtcGxl
QVZGT2JqQz4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBwaXhlbEJ1ZmZlciwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwg
Ym9vbCBtaXJyb3JlZCkKIHsKICAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
RGVzY3JpcHRpb25SYXcgPSBudWxscHRyOwotICAgIGF1dG8gc3RhdHVzID0gUEFMOjpDTVZpZGVv
Rm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBwaXhlbEJ1ZmZlci5nZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uUmF3KTsKKyAgICBhdXRvIHN0
YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIo
ZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHBpeGVsQnVmZmVyLmdldCgpLCAmZm9ybWF0RGVzY3Jp
cHRpb25SYXcpOwogICAgIGlmIChzdGF0dXMgfHwgIWZvcm1hdERlc2NyaXB0aW9uUmF3KSB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTExMCw3ICsxMTAsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBNZWRpYVNhbXBsZUFW
Rk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFJldGFpblB0cjxDVlBpeAogCiAgICAgQ01TYW1wbGVU
aW1pbmdJbmZvIHNhbXBsZVRpbWluZ0luZm9ybWF0aW9uID0geyBQQUw6OmtDTVRpbWVJbnZhbGlk
LCBQQUw6OmtDTVRpbWVJbnZhbGlkLCBQQUw6OmtDTVRpbWVJbnZhbGlkIH07CiAgICAgQ01TYW1w
bGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyUmF3ID0gbnVsbHB0cjsKLSAgICBzdGF0dXMgPSBQQUw6
OkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoSW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcGl4ZWxCdWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uLmdldCgpLCAmc2FtcGxl
VGltaW5nSW5mb3JtYXRpb24sICZzYW1wbGVCdWZmZXJSYXcpOworICAgIHN0YXR1cyA9IFBBTDo6
Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihmYXN0TWFsbG9jQ0ZBbGxv
Y2F0b3IoKSwgcGl4ZWxCdWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uLmdldCgpLCAmc2Ft
cGxlVGltaW5nSW5mb3JtYXRpb24sICZzYW1wbGVCdWZmZXJSYXcpOwogICAgIGlmIChzdGF0dXMg
fHwgIXNhbXBsZUJ1ZmZlclJhdykgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBNZWRpYVNhbXBs
ZUFWRk9iakM6Om9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkKICAg
ICB9CiAgICAgCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3U2FtcGxlOwotICAgIGlmIChub0Vy
ciAhPSBQQUw6OkNNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbV9zYW1wbGUuZ2V0KCksIGl0ZW1Db3VudCwgdGltaW5nSW5mb0FycmF5LmRh
dGEoKSwgJm5ld1NhbXBsZSkpCisgICAgaWYgKG5vRXJyICE9IFBBTDo6Q01TYW1wbGVCdWZmZXJD
cmVhdGVDb3B5V2l0aE5ld1RpbWluZyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbV9zYW1wbGUu
Z2V0KCksIGl0ZW1Db3VudCwgdGltaW5nSW5mb0FycmF5LmRhdGEoKSwgJm5ld1NhbXBsZSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3NhbXBsZSA9IGFkb3B0Q0YobmV3U2FtcGxlKTsK
QEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0VGltZXN0YW1w
cyhjb25zdCBXVEY6Ok1lZGlhVGltZSAmcHJlc2VudGF0aW9uVGltZXN0YQogICAgIH0KICAgICAK
ICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdTYW1wbGU7Ci0gICAgaWYgKG5vRXJyICE9IFBBTDo6
Q01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBtX3NhbXBsZS5nZXQoKSwgaXRlbUNvdW50LCB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpLCAmbmV3
U2FtcGxlKSkKKyAgICBpZiAobm9FcnIgIT0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlX
aXRoTmV3VGltaW5nKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBtX3NhbXBsZS5nZXQoKSwgaXRl
bUNvdW50LCB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpLCAmbmV3U2FtcGxlKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIG1fc2FtcGxlID0gYWRvcHRDRihuZXdTYW1wbGUpOwpAQCAtMzI4LDEz
ICszMjgsMTMgQEAgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNh
bXBsZT4+IE1lZGlhU2FtcGxlQVZGT2JqQzo6ZGl2aWRlKGMKIAogICAgIENNU2FtcGxlQnVmZmVy
UmVmIHJhd1NhbXBsZUJlZm9yZSA9IG51bGxwdHI7CiAgICAgQ0ZSYW5nZSByYW5nZUJlZm9yZSA9
IENGUmFuZ2VNYWtlKDAsIHNhbXBsZXNCZWZvcmVQcmVzZW50YXRpb25UaW1lKTsKLSAgICBpZiAo
UEFMOjpDTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJGb3JSYW5nZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBtX3NhbXBsZS5nZXQoKSwgcmFuZ2VCZWZvcmUsICZyYXdTYW1wbGVCZWZvcmUpICE9
IG5vRXJyKQorICAgIGlmIChQQUw6OkNNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJh
bmdlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBtX3NhbXBsZS5nZXQoKSwgcmFuZ2VCZWZvcmUs
ICZyYXdTYW1wbGVCZWZvcmUpICE9IG5vRXJyKQogICAgICAgICByZXR1cm4geyBudWxscHRyLCBu
dWxscHRyIH07CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBzYW1wbGVCZWZvcmUg
PSBhZG9wdENGKHJhd1NhbXBsZUJlZm9yZSk7CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdT
YW1wbGVBZnRlciA9IG51bGxwdHI7CiAgICAgQ0ZSYW5nZSByYW5nZUFmdGVyID0gQ0ZSYW5nZU1h
a2Uoc2FtcGxlc0JlZm9yZVByZXNlbnRhdGlvblRpbWUsIHNhbXBsZUNvdW50IC0gc2FtcGxlc0Jl
Zm9yZVByZXNlbnRhdGlvblRpbWUpOwotICAgIGlmIChQQUw6OkNNU2FtcGxlQnVmZmVyQ29weVNh
bXBsZUJ1ZmZlckZvclJhbmdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fc2FtcGxlLmdldCgpLCBy
YW5nZUFmdGVyLCAmcmF3U2FtcGxlQWZ0ZXIpICE9IG5vRXJyKQorICAgIGlmIChQQUw6OkNNU2Ft
cGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCBtX3NhbXBsZS5nZXQoKSwgcmFuZ2VBZnRlciwgJnJhd1NhbXBsZUFmdGVyKSAhPSBub0VycikK
ICAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIFJldGFpblB0cjxDTVNh
bXBsZUJ1ZmZlclJlZj4gc2FtcGxlQWZ0ZXIgPSBhZG9wdENGKHJhd1NhbXBsZUFmdGVyKTsKIApA
QCAtMzQ0LDcgKzM0NCw3IEBAIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8
TWVkaWFTYW1wbGU+PiBNZWRpYVNhbXBsZUFWRk9iakM6OmRpdmlkZShjCiBSZWY8TWVkaWFTYW1w
bGU+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdAog
ewogICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld1NhbXBsZUJ1ZmZlciA9IDA7Ci0gICAgUEFMOjpD
TVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9zYW1wbGUuZ2V0
KCksICZuZXdTYW1wbGVCdWZmZXIpOworICAgIFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5
KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBtX3NhbXBsZS5nZXQoKSwgJm5ld1NhbXBsZUJ1ZmZl
cik7CiAgICAgQVNTRVJUKG5ld1NhbXBsZUJ1ZmZlcik7CiAKICAgICBDRkFycmF5UmVmIGF0dGFj
aG1lbnRzQXJyYXkgPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJh
eShuZXdTYW1wbGVCdWZmZXIsIHRydWUpOwpAQCAtMzU5LDkgKzM1OSw5IEBAIFJlZjxNZWRpYVNh
bXBsZT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0
CiBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRS
R0JBSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICBjb25zdCBPU1R5cGUgaW1hZ2VGb3JtYXQgPSBr
Q1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBOwotICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gaW1h
Z2VGb3JtYXROdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsICBrQ0ZOdW1i
ZXJJbnRUeXBlLCAgJmltYWdlRm9ybWF0KSk7CisgICAgYXV0byBpbWFnZUZvcm1hdE51bWJlciA9
IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUobnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmaW1h
Z2VGb3JtYXQpKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjb25m
b3JtZXJPcHRpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDEsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKKyAgICBhdXRvIGNvbmZvcm1lck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDEsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjb25mb3JtZXJPcHRpb25zLmdldCgpLCBrQ1ZQaXhlbEJ1
ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwgaW1hZ2VGb3JtYXROdW1iZXIuZ2V0KCkpOwogICAgIFBp
eGVsQnVmZmVyQ29uZm9ybWVyQ1YgcGl4ZWxCdWZmZXJDb25mb3JtZXIoY29uZm9ybWVyT3B0aW9u
cy5nZXQoKSk7CiAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBWZWN0b3I8UmVmPE1lZGlhU2FtcGxlQVZG
T2JqQz4+IE1lZGlhU2FtcGxlQVZGT2JqQzo6ZGl2aWRlSW50b0hvbW9nZW5lb3VzU2FtcGxlcwog
ICAgIHNhbXBsZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyYW5nZXMuc2l6ZSgpKTsKICAgICBm
b3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzKSB7CiAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmIHJh
d1NhbXBsZSA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChQQUw6OkNNU2FtcGxlQnVmZmVyQ29weVNh
bXBsZUJ1ZmZlckZvclJhbmdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fc2FtcGxlLmdldCgpLCBy
YW5nZSwgJnJhd1NhbXBsZSkgIT0gbm9FcnIgfHwgIXJhd1NhbXBsZSkKKyAgICAgICAgaWYgKFBB
TDo6Q01TYW1wbGVCdWZmZXJDb3B5U2FtcGxlQnVmZmVyRm9yUmFuZ2UoZmFzdE1hbGxvY0NGQWxs
b2NhdG9yKCksIG1fc2FtcGxlLmdldCgpLCByYW5nZSwgJnJhd1NhbXBsZSkgIT0gbm9FcnIgfHwg
IXJhd1NhbXBsZSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIHNhbXBsZXMudW5j
aGVja2VkQXBwZW5kKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKGFkb3B0Q0YocmF3U2FtcGxl
KS5nZXQoKSwgbV9pZCkpOwogICAgIH0KQEAgLTQ3MSw3ICs0NzEsNyBAQCBSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y2xvbmVTYW1wbGVCdWZmZXJBbmRT
ZXRBc0Rpc3BsYQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIENNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgYXV0byBzdGF0
dXMgPSBQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZUZvckltYWdlQnVmZmVyKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHBpeGVsQnVmZmVyLCAmZm9ybWF0RGVzY3JpcHRpb24pOworICAg
IGF1dG8gc3RhdHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFn
ZUJ1ZmZlcihmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgcGl4ZWxCdWZmZXIsICZmb3JtYXREZXNj
cmlwdGlvbik7CiAgICAgaWYgKHN0YXR1cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
YXV0byByZXRhaW5lZEZvcm1hdERlc2NyaXB0aW9uID0gYWRvcHRDRihmb3JtYXREZXNjcmlwdGlv
bik7CkBAIC00ODgsNyArNDg4LDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBNZWRp
YVNhbXBsZUFWRk9iakM6OmNsb25lU2FtcGxlQnVmZmVyQW5kU2V0QXNEaXNwbGEKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBuZXdTYW1wbGVCdWZmZXI7
Ci0gICAgc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVm
ZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBpeGVsQnVmZmVyLCBmb3JtYXREZXNjcmlwdGlvbiwg
dGltaW5nSW5mb0FycmF5LmRhdGEoKSwgJm5ld1NhbXBsZUJ1ZmZlcik7CisgICAgc3RhdHVzID0g
UEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGZhc3RNYWxsb2ND
RkFsbG9jYXRvcigpLCBwaXhlbEJ1ZmZlciwgZm9ybWF0RGVzY3JpcHRpb24sIHRpbWluZ0luZm9B
cnJheS5kYXRhKCksICZuZXdTYW1wbGVCdWZmZXIpOwogICAgIGlmIChzdGF0dXMpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC01MTEsNyArNTExLDcgQEAgc3RkOjpvcHRpb25hbDxNZWRp
YVNhbXBsZTo6Qnl0ZVJhbmdlPiBNZWRpYVNhbXBsZUFWRk9iakM6OmJ5dGVSYW5nZSgpIGNvbnN0
CiB2b2lkIE1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0Qnl0ZVJhbmdlT2Zmc2V0KHNpemVfdCBieXRl
T2Zmc2V0KQogewogICAgIGludDY0X3QgY2hlY2tlZE9mZnNldCA9IENoZWNrZWRJbnQ2NChieXRl
T2Zmc2V0KTsKLSAgICBhdXRvIG9mZnNldE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmNoZWNrZWRPZmZzZXQp
KTsKKyAgICBhdXRvIG9mZnNldE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIGtDRk51bWJlclNJbnQ2NFR5cGUsICZjaGVja2VkT2Zmc2V0KSk7
CiAgICAgUEFMOjpDTVNldEF0dGFjaG1lbnQobV9zYW1wbGUuZ2V0KCksIGJ5dGVSYW5nZU9mZnNl
dEF0dGFjaG1lbnRLZXkoKSwgb2Zmc2V0TnVtYmVyLmdldCgpLCBrQ01BdHRhY2htZW50TW9kZV9T
aG91bGRQcm9wYWdhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDNhMjg2N2ExYWMyNDNiYjljOTNjOWQ2
YjcwY2E1NmIwMjk0OGZjOWMuLjRjMzA0Y2E2MTBmOTcyZjRlZGVhOGMyNDVhMmU2ZTBmYWVjZjY4
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0
CiAKICAgICAgICAgICAgIGlmICghaGF2ZVByZXJvbGxEZWNvZGVXaXRoQ29tcGxldGlvbkhhbmRs
ZXIpIHsKICAgICAgICAgICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVDb3B5Owot
ICAgICAgICAgICAgICAgIFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHBsYXRmb3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlciwgJnJhd1NhbXBs
ZUNvcHkpOworICAgICAgICAgICAgICAgIFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5KGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCBwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZm
ZXIsICZyYXdTYW1wbGVDb3B5KTsKICAgICAgICAgICAgICAgICBhdXRvIHNhbXBsZUNvcHkgPSBh
ZG9wdENGKHJhd1NhbXBsZUNvcHkpOwogICAgICAgICAgICAgICAgIFBBTDo6Q01TZXRBdHRhY2ht
ZW50KHNhbXBsZUNvcHkuZ2V0KCksIFBBTDo6a0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9Q
b3N0Tm90aWZpY2F0aW9uV2hlbkNvbnN1bWVkLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7
IChfX2JyaWRnZSBOU1N0cmluZyAqKVBBTDo6a0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9Q
b3N0Tm90aWZpY2F0aW9uV2hlbkNvbnN1bWVkIDogQFlFUyB9LCBrQ01BdHRhY2htZW50TW9kZV9T
aG91bGROb3RQcm9wYWdhdGUpOwogICAgICAgICAgICAgICAgIFttX2Rpc3BsYXlMYXllciBlbnF1
ZXVlU2FtcGxlQnVmZmVyOnNhbXBsZUNvcHkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKaW5kZXggMWVl
ODliM2VlZDU3ZmQ0NjAwMDBiMzMzMDQ3MmM5YzFhNWZjNWJkYy4uNWYxNGM1Yjk3MmM3ZDZmNzI1
YzBmZTk0ZTI1ZWRiZjYwNWZmMmU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCkBAIC0xNTEsNyArMTUxLDcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdUZXh0QXRQb2ludChDR0NvbnRleHRSZWYgY29u
dGV4dCwgQ0dGbG9hdCB4LCBDR0Zsb2F0IHkKIHsKICAgICBhdXRvIG1hdHJpeCA9IENHQWZmaW5l
VHJhbnNmb3JtTWFrZVNjYWxlKHNjYWxlLndpZHRoLCBzY2FsZS5oZWlnaHQpOwogICAgIGF1dG8g
Zm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIoIkhlbHZldGljYSIpLCBm
b250U2l6ZSwgJm1hdHJpeCkpOwotICAgIGF1dG8gc3Ryb2tlV2lkdGhOdW1iZXIgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNHRmxvYXRUeXBl
LCAmc3Ryb2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplKSk7CisgICAgYXV0byBzdHJva2VX
aWR0aE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9y
KCksIGtDRk51bWJlckNHRmxvYXRUeXBlLCAmc3Ryb2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRT
aXplKSk7CiAKICAgICBDRlR5cGVSZWYga2V5c1tdID0gewogICAgICAgICBrQ1RGb250QXR0cmli
dXRlTmFtZSwKQEAgLTE2Nyw5ICsxNjcsOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1Rl
eHRBdFBvaW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0Zsb2F0IHgsIENHRmxvYXQgeQogICAg
ICAgICBzdHJva2VDR0NvbG9yLmdldCgpLAogICAgIH07CiAKLSAgICBhdXRvIGF0dHJpYnV0ZXMg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2
YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICBhdXRvIHN0cmlu
ZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHRleHQpLCBsZW5ndGgsIGtDRlN0
cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsKLSAgICBhdXRvIGF0
dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGF0dHJpYnV0ZXMuZ2V0KCkpKTsKKyAgICBhdXRv
IGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxv
Y2F0b3IoKSwga2V5cywgdmFsdWVzLCBzdGQ6OnNpemUoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBh
dXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih0ZXh0KSwg
bGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7
CisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdD
cmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHN0cmluZy5nZXQoKSwgYXR0cmlidXRlcy5n
ZXQoKSkpOwogICAgIGF1dG8gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0
ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwogICAgIENHQ29udGV4dFNldFRleHRQ
b3NpdGlvbihjb250ZXh0LCB4LCB5KTsKICAgICBDVExpbmVEcmF3KGxpbmUuZ2V0KCksIGNvbnRl
eHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVu
dENHLmNwcAppbmRleCA5OThiNTQ1M2JlMjdlYTVkNThjYmM5YzcwYmE5OGMyN2RhZDAzM2EzLi5k
NWE0MTdmMTM5YjljN2ZkOGFlN2IyMzhlOTgyYmUzYWE4MDQ1NDhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcApAQCAtODAsNyAr
ODAsNyBAQCB2b2lkIEdyYWRpZW50OjpjcmVhdGVDR0dyYWRpZW50KCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gY29sb3JzQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVN
dXRhYmxlKDAsIG1fc3RvcHMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAg
YXV0byBjb2xvcnNBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoZmFzdE1hbGxv
Y0NGQWxsb2NhdG9yKCksIG1fc3RvcHMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogbV9zdG9wcykgewogICAgICAgICBDRkFycmF5
QXBwZW5kVmFsdWUoY29sb3JzQXJyYXkuZ2V0KCksIGNhY2hlZENHQ29sb3Ioc3RvcC5jb2xvciku
Z2V0KCkpOwogICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKaW5kZXggYWVkZGRmMDlhMTEyNDM2N2Q1MWEwNGUw
MzcwMmUxOTgyYmQwOTA1Yi4uMGE2Nzk3Njg2NDVkNzY5ZWQwNDQ1Mzc2YzNkODUwM2ZhNWQwOGYx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKQEAgLTExNSwxMCArMTE1LDEwIEBAIHN0
YXRpYyBib29sIGVuY29kZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiBkZXN0aW5hdGlv
blVUSSwgc3RkOjpvcHRpb25hbDxkCiAgICAgYXV0byBpbWFnZVByb3BlcnRpZXMgPSBbJl0gKCkg
LT4gUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gewogICAgICAgICBpZiAoQ0ZFcXVhbChkZXN0
aW5hdGlvblVUSSwganBlZ1VUSSgpKSAmJiBxdWFsaXR5ICYmICpxdWFsaXR5ID49IDAuMCAmJiAq
cXVhbGl0eSA8PSAxLjApIHsKICAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBjb21wcmVzc2lvbiBx
dWFsaXR5IHRvIHRoZSBKUEVHIGltYWdlIGRlc3RpbmF0aW9uLgotICAgICAgICAgICAgYXV0byBj
b21wcmVzc2lvblF1YWxpdHkgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICYqcXVhbGl0eSkpOworICAgICAgICAgICAgYXV0
byBjb21wcmVzc2lvblF1YWxpdHkgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2ND
RkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmKnF1YWxpdHkpKTsKICAgICAgICAg
ICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlRGVzdGluYXRpb25Mb3NzeUNvbXByZXNzaW9u
UXVhbGl0eTsKICAgICAgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlID0gY29tcHJlc3Npb25RdWFs
aXR5LmdldCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KDAsICZrZXksICZ2YWx1ZSwgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAma2V5LCAmdmFs
dWUsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUyZDA0YmVk
M2Q1MGMwNi4uNDgxY2FlOTBlNDZlMWZkMDA4MTYwZTAxOTk0YjExZDhkNDA2ZTg4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcApAQCAtNjAsNyArNjAsNyBAQCBjb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNvdXJj
ZVNob3VsZENhY2hlSW1tZWRpYXRlbHkgPSBDRlNUUigia0NHSW1hZ2VTb3VyY2VTaAogCiBzdGF0
aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZUltYWdlU291cmNlT3B0
aW9ucygpCiB7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IG9wdGlvbnMg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUobnVsbHB0ciwgMCwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OworICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBvcHRpb25zID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUob3B0aW9ucy5nZXQoKSwga0NHSW1h
Z2VTb3VyY2VTaG91bGRDYWNoZSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKG9wdGlvbnMuZ2V0KCksIGtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdCMzIsIGtD
RkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShvcHRpb25zLmdldCgpLCBr
Q0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSwga0NGQm9vbGVhblRydWUpOwpAQCAtMTEzLDEzICsx
MTMsMTMgQEAgc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlU291cmNlT3B0
aW9ucyhTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW4KICAgICBzdGF0aWMgY29uc3QgYXV0byBv
cHRpb25zID0gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKCkubGVha1JlZigpOwogICAgIGlmIChz
dWJzYW1wbGluZ0xldmVsID09IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpCiAgICAgICAgIHJl
dHVybiBvcHRpb25zOwotICAgIHJldHVybiBhcHBlbmRJbWFnZVNvdXJjZU9wdGlvbihhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KG51bGxwdHIsIDAsIG9wdGlvbnMpKSwgc3Vi
c2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGFwcGVuZEltYWdlU291cmNlT3B0aW9uKGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IDAsIG9wdGlvbnMpKSwgc3Vic2FtcGxpbmdMZXZlbCk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZVNvdXJjZUFzeW5jT3B0aW9ucyhTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IEludFNpemUmIHNpemVGb3JEcmF3aW5nKQogewogICAg
IHN0YXRpYyBjb25zdCBhdXRvIG9wdGlvbnMgPSBjcmVhdGVJbWFnZVNvdXJjZUFzeW5jT3B0aW9u
cygpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gYXBwZW5kSW1hZ2VTb3VyY2VPcHRpb25zKGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkobnVsbHB0ciwgMCwgb3B0aW9ucykpLCBz
dWJzYW1wbGluZ0xldmVsLCBzaXplRm9yRHJhd2luZyk7CisgICAgcmV0dXJuIGFwcGVuZEltYWdl
U291cmNlT3B0aW9ucyhhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCAwLCBvcHRpb25zKSksIHN1YnNhbXBsaW5nTGV2ZWwsIHNpemVG
b3JEcmF3aW5nKTsKIH0KIAogc3RhdGljIENGRGljdGlvbmFyeVJlZiBhbmltYXRpb25Qcm9wZXJ0
aWVzRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmIHByb3BlcnRpZXMpCkBAIC0yNTgsNyAr
MjU4LDcgQEAgSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8KICAgICBpZiAodXRpSGludCkgewogICAg
ICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsK
ICAgICAgICAgY29uc3Qgdm9pZCogdmFsdWUgPSB1dGlIaW50LmdldCgpOwotICAgICAgICBhdXRv
IG9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAma2V5LCAmdmFsdWUsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAgICAgYXV0byBvcHRpb25zID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksICZrZXksICZ2
YWx1ZSwgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICBtX25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDcmVhdGVJbmNyZW1lbnRhbChvcHRpb25zLmdldCgpKSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIG1fbmF0aXZlRGVjb2RlciA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUlu
Y3JlbWVudGFsKG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKaW5kZXggYTFlNWI3MzJmYjBiZjRl
NTQyZDQxYmE5ZTg2OWRmMDFkNjU5ZTM1NC4uOTA5YzhiOGQ0ZTNmYjg5MTA4YjhjNDE1N2RlMGRh
YWI1YjU0ODg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VVdGlsaXRpZXNDRy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgV29ya1F1ZXVl
JiBzaGFyZWRJbWFnZVRyYW5zY29kaW5nUXVldWUoKQogCiBzdGF0aWMgU3RyaW5nIHRyYW5zY29k
ZUltYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVUSSwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkV4dGVuc2lvbikKIHsKLSAgICBhdXRvIHNvdXJjZVVS
TCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwg
ZmFsc2UpKTsKKyAgICBhdXRvIHNvdXJjZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmls
ZVN5c3RlbVBhdGgoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHBhdGguY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgYXV0byBzb3VyY2Ug
PSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKHNvdXJjZVVSTC5nZXQoKSwgbnVs
bHB0cikpOwogICAgIGlmICghc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0
ZTZlLi5kYTZiNWNmZTQyM2I2ZDlkYjBkZjhjMjVjZjUwY2IzZDVhMTYwMWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBQ
REZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihSZXRhaW5QCiAgICAg
Q0dQU0NvbnZlcnRlckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7IH07CiAgICAgYXV0byBjb252ZXJ0
ZXIgPSBhZG9wdENGKENHUFNDb252ZXJ0ZXJDcmVhdGUoMCwgJmNhbGxiYWNrcywgMCkpOwogICAg
IGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShw
b3N0U2NyaXB0RGF0YS5nZXQoKSkpOwotICAgIGF1dG8gcGRmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgYXV0byBwZGZEYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAw
KSk7CiAgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRo
Q0ZEYXRhKHBkZkRhdGEuZ2V0KCkpKTsKIAogICAgIENHUFNDb252ZXJ0ZXJDb252ZXJ0KGNvbnZl
cnRlci5nZXQoKSwgcHJvdmlkZXIuZ2V0KCksIGNvbnN1bWVyLmdldCgpLCAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAppbmRleCBjZmQwZjlhZTVkNTdlNGQ0MDM2MWI1ZTJiOGM0NmQwMzEwZjRm
ZGNkLi44MTA0OTg2MDM4YjNlMzAwMDlmYmM3NjY5MjExNmQ5ZWYwMjQzMWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCkBAIC01MiwxMSArNTIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kVHJ1ZVR5cGVGZWF0dXJlKENGTXV0YWJsZUFycmF5
UmVmIGZlYXR1cmVzLCBpbnQgdHlwZSwgaW50IHNlbGVjdG9yKQogewotICAgIGF1dG8gdHlwZU51
bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVySW50VHlwZSwgJnR5cGUpKTsKLSAgICBhdXRvIHNlbGVjdG9yTnVtYmVyID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc2Vs
ZWN0b3IpKTsKKyAgICBhdXRvIHR5cGVOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdHlwZSkpOworICAgIGF1
dG8gc2VsZWN0b3JOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc2VsZWN0b3IpKTsKICAgICBDRlR5cGVSZWYg
ZmVhdHVyZUtleXNbXSA9IHsga0NURm9udEZlYXR1cmVUeXBlSWRlbnRpZmllcktleSwga0NURm9u
dEZlYXR1cmVTZWxlY3RvcklkZW50aWZpZXJLZXkgfTsKICAgICBDRlR5cGVSZWYgZmVhdHVyZVZh
bHVlc1tdID0geyB0eXBlTnVtYmVyLmdldCgpLCBzZWxlY3Rvck51bWJlci5nZXQoKSB9OwotICAg
IGF1dG8gZmVhdHVyZSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGZlYXR1cmVLZXlzLCBmZWF0dXJlVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZlYXR1
cmVLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gZmVhdHVyZSA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBmZWF0dXJlS2V5cywgZmVhdHVyZVZh
bHVlcywgV1RGX0FSUkFZX0xFTkdUSChmZWF0dXJlS2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICBDRkFy
cmF5QXBwZW5kVmFsdWUoZmVhdHVyZXMsIGZlYXR1cmUuZ2V0KCkpOwogfQogCkBAIC02NywxMiAr
NjcsMTIgQEAgc3RhdGljIGlubGluZSBib29sIHRhZ0VxdWFscyhGb250VGFnIHRhZywgY29uc3Qg
Y2hhciBjb21wYXJpc29uWzRdKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kT3BlblR5cGVG
ZWF0dXJlKENGTXV0YWJsZUFycmF5UmVmIGZlYXR1cmVzLCBjb25zdCBGb250RmVhdHVyZSYgZmVh
dHVyZSkKIHsKLSAgICBhdXRvIGZlYXR1cmVLZXkgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihmZWF0dXJlLnRhZygpLmRhdGEoKSksIGZlYXR1cmUudGFnKCkuc2l6ZSgpICogc2l6ZW9mKEZv
bnRUYWc6OnZhbHVlX3R5cGUpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSkpOworICAg
IGF1dG8gZmVhdHVyZUtleSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihmZWF0dXJl
LnRhZygpLmRhdGEoKSksIGZlYXR1cmUudGFnKCkuc2l6ZSgpICogc2l6ZW9mKEZvbnRUYWc6OnZh
bHVlX3R5cGUpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSkpOwogICAgIGludCByYXdG
ZWF0dXJlVmFsdWUgPSBmZWF0dXJlLnZhbHVlKCk7Ci0gICAgYXV0byBmZWF0dXJlVmFsdWUgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5
cGUsICZyYXdGZWF0dXJlVmFsdWUpKTsKKyAgICBhdXRvIGZlYXR1cmVWYWx1ZSA9IGFkb3B0Q0Yo
Q0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtDRk51bWJlckludFR5cGUs
ICZyYXdGZWF0dXJlVmFsdWUpKTsKICAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlLZXlz
W10gPSB7IGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVUYWcsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVW
YWx1ZSB9OwogICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyBmZWF0
dXJlS2V5LmdldCgpLCBmZWF0dXJlVmFsdWUuZ2V0KCkgfTsKLSAgICBhdXRvIGZlYXR1cmVEaWN0
aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgV1RGX0FSUkFZ
X0xFTkdUSChmZWF0dXJlRGljdGlvbmFyeVZhbHVlcyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBhdXRvIGZl
YXR1cmVEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoZmFzdE1hbGxvY0NG
QWxsb2NhdG9yKCksIGZlYXR1cmVEaWN0aW9uYXJ5S2V5cywgZmVhdHVyZURpY3Rpb25hcnlWYWx1
ZXMsIFdURl9BUlJBWV9MRU5HVEgoZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXMpLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CiAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGZlYXR1cmVzLCBmZWF0dXJlRGljdGlvbmFyeS5nZXQo
KSk7CiB9CiAKQEAgLTQ2MSwxNCArNDYxLDE0IEBAIHN0cnVjdCBGb250VHlwZSB7CiBzdGF0aWMg
dm9pZCBhZGRMaWdodFBhbGV0dGUoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzKQog
ewogICAgIENGSW5kZXggbGlnaHQgPSBrQ1RGb250UGFsZXR0ZUxpZ2h0OwotICAgIGF1dG8gbnVt
YmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJDRkluZGV4VHlwZSwgJmxpZ2h0KSk7CisgICAgYXV0byBudW1iZXIgPSBhZG9wdENGKENGTnVt
YmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwg
JmxpZ2h0KSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9udFBh
bGV0dGVBdHRyaWJ1dGUsIG51bWJlci5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkZERhcmtQ
YWxldHRlKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0cmlidXRlcykKIHsKICAgICBDRkluZGV4
IGRhcmsgPSBrQ1RGb250UGFsZXR0ZURhcms7Ci0gICAgYXV0byBudW1iZXIgPSBhZG9wdENGKENG
TnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNGSW5kZXhUeXBlLCAm
ZGFyaykpOworICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShmYXN0TWFs
bG9jQ0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZkYXJrKSk7CiAgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9udFBhbGV0dGVBdHRyaWJ1dGUsIG51
bWJlci5nZXQoKSk7CiB9CiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgdm9pZCBhZGRBdHRy
aWJ1dGVzRm9yQ3VzdG9tRm9udFBhbGV0dGVzKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0cmli
dXRlcwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6
VHlwZTo6SW50ZWdlcjogewogICAgICAgICAgICAgaW50NjRfdCByYXdJbmRleCA9IGJhc2VQYWxl
dHRlLT5pbnRlZ2VyOyAvLyBUaGVyZSBpcyBubyBrQ0ZOdW1iZXJVSW50VHlwZS4KLSAgICAgICAg
ICAgIGF1dG8gbnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmcmF3SW5kZXgpKTsKKyAgICAgICAgICAgIGF1dG8g
bnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwg
a0NGTnVtYmVyU0ludDY0VHlwZSwgJnJhd0luZGV4KSk7CiAgICAgICAgICAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShhdHRyaWJ1dGVzLCBrQ1RGb250UGFsZXR0ZUF0dHJpYnV0ZSwgbnVtYmVyLmdl
dCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00OTIsMTEgKzQ5MiwxMSBA
QCBzdGF0aWMgdm9pZCBhZGRBdHRyaWJ1dGVzRm9yQ3VzdG9tRm9udFBhbGV0dGVzKENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgYXR0cmlidXRlcwogICAgIH0KIAogICAgIGlmICghb3ZlcnJpZGVDb2xv
cnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gb3ZlcnJpZGVEaWN0aW9uYXJ5ID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKKyAgICAgICAgYXV0byBvdmVycmlkZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlv
bmFyeUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogb3ZlcnJpZGVDb2xvcnMpIHsKICAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIGNvbG9yID0gcGFpci5zZWNvbmQ7CiAgICAgICAgICAgICBpbnQ2
NF90IHJhd0luZGV4ID0gcGFpci5maXJzdDsgLy8gVGhlcmUgaXMgbm8ga0NGTnVtYmVyVUludFR5
cGUuCi0gICAgICAgICAgICBhdXRvIG51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnJhd0luZGV4KSk7CisgICAg
ICAgICAgICBhdXRvIG51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NG
QWxsb2NhdG9yKCksIGtDRk51bWJlclNJbnQ2NFR5cGUsICZyYXdJbmRleCkpOwogICAgICAgICAg
ICAgYXV0byBjb2xvck9iamVjdCA9IGNhY2hlZENHQ29sb3IoY29sb3IpOwogICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUob3ZlcnJpZGVEaWN0aW9uYXJ5LmdldCgpLCBudW1iZXIuZ2V0
KCksIGNvbG9yT2JqZWN0LmdldCgpKTsKICAgICAgICAgfQpAQCAtNjU5LDkgKzY1OSw5IEBAIFJl
dGFpblB0cjxDVEZvbnRSZWY+IHByZXBhcmVQbGF0Zm9ybUZvbnQoQ1RGb250UmVmIG9yaWdpbmFs
Rm9udCwgY29uc3QgRm9udERlc2NyCiAgICAgZm9yIChhdXRvJiBuZXdWYXJpYXRpb24gOiB2YXJp
YXRpb25zKQogICAgICAgICBhcHBseVZhcmlhdGlvbihuZXdWYXJpYXRpb24udGFnKCksIG5ld1Zh
cmlhdGlvbi52YWx1ZSgpKTsKIAotICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgaWYgKCFmZWF0dXJlc1Rv
QmVBcHBsaWVkLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGZlYXR1cmVBcnJheSA9IGFkb3B0
Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZXMuc2l6
ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgICAgIGF1dG8gZmVhdHVyZUFycmF5
ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwg
ZmVhdHVyZXMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAgICAgICAgIGZvciAo
YXV0byYgcCA6IGZlYXR1cmVzVG9CZUFwcGxpZWQpIHsKICAgICAgICAgICAgIGF1dG8gZmVhdHVy
ZSA9IEZvbnRGZWF0dXJlKHAua2V5LCBwLnZhbHVlKTsKIApAQCAtNjc5LDExICs2NzksMTEgQEAg
UmV0YWluUHRyPENURm9udFJlZj4gcHJlcGFyZVBsYXRmb3JtRm9udChDVEZvbnRSZWYgb3JpZ2lu
YWxGb250LCBjb25zdCBGb250RGVzY3IKICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0
cmlidXRlcy5nZXQoKSwga0NURm9udEZlYXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSwgZmVhdHVyZUFy
cmF5LmdldCgpKTsKICAgICB9CiAgICAgaWYgKCF2YXJpYXRpb25zVG9CZUFwcGxpZWQuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGF1dG8gdmFyaWF0aW9uRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgICAgIGF1dG8gdmFyaWF0aW9uRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlTXV0YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAg
ICBmb3IgKGF1dG8mIHAgOiB2YXJpYXRpb25zVG9CZUFwcGxpZWQpIHsKICAgICAgICAgICAgIGxv
bmcgbG9uZyBiaXR3aXNlVGFnID0gcC5rZXlbMF0gPDwgMjQgfCBwLmtleVsxXSA8PCAxNiB8IHAu
a2V5WzJdIDw8IDggfCBwLmtleVszXTsKLSAgICAgICAgICAgIGF1dG8gdGFnTnVtYmVyID0gYWRv
cHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJMb25nTG9u
Z1R5cGUsICZiaXR3aXNlVGFnKSk7Ci0gICAgICAgICAgICBhdXRvIHZhbHVlTnVtYmVyID0gYWRv
cHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5
cGUsICZwLnZhbHVlKSk7CisgICAgICAgICAgICBhdXRvIHRhZ051bWJlciA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtDRk51bWJlckxvbmdMb25nVHlw
ZSwgJmJpdHdpc2VUYWcpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWVOdW1iZXIgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJGbG9hdFR5
cGUsICZwLnZhbHVlKSk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh2YXJpYXRp
b25EaWN0aW9uYXJ5LmdldCgpLCB0YWdOdW1iZXIuZ2V0KCksIHZhbHVlTnVtYmVyLmdldCgpKTsK
ICAgICAgICAgfQogICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVzLmdldCgp
LCBrQ1RGb250VmFyaWF0aW9uQXR0cmlidXRlLCB2YXJpYXRpb25EaWN0aW9uYXJ5LmdldCgpKTsK
QEAgLTY5Niw3ICs2OTYsNyBAQCBSZXRhaW5QdHI8Q1RGb250UmVmPiBwcmVwYXJlUGxhdGZvcm1G
b250KENURm9udFJlZiBvcmlnaW5hbEZvbnQsIGNvbnN0IEZvbnREZXNjcgogICAgICAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVzLmdldCgpLCBrQ1RGb250T3B0aWNhbFNpemVBdHRy
aWJ1dGUsIENGU1RSKCJhdXRvIikpOwogI2Vsc2UKICAgICAgICAgYXV0byBzaXplID0gQ1RGb250
R2V0U2l6ZShvcmlnaW5hbEZvbnQpOwotICAgICAgICBhdXRvIHNpemVOdW1iZXIgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNHRmxvYXRUeXBl
LCAmc2l6ZSkpOworICAgICAgICBhdXRvIHNpemVOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJDR0Zsb2F0VHlwZSwgJnNpemUp
KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcy5nZXQoKSwga0NURm9u
dE9wdGljYWxTaXplQXR0cmlidXRlLCBzaXplTnVtYmVyLmdldCgpKTsKICNlbmRpZgogICAgIH0g
ZWxzZSBpZiAoZm9udE9wdGljYWxTaXppbmcgPT0gRm9udE9wdGljYWxTaXppbmc6OkRpc2FibGVk
KSB7CkBAIC04ODcsNyArODg3LDcgQEAgcHVibGljOgogI2Vsc2UKICAgICAgICAgICAgIGlmIChh
bGxvd1VzZXJJbnN0YWxsZWRGb250cyAhPSBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKKyAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwog
ICAgICAgICAgICAgYWRkQXR0cmlidXRlc0Zvckluc3RhbGxlZEZvbnRzKGF0dHJpYnV0ZXMuZ2V0
KCksIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKICAgICAgICAgICAgIHRoaXMtPmZvbnREZXNj
cmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVz
KGZvbnREZXNjcmlwdG9yLCBhdHRyaWJ1dGVzLmdldCgpKSk7CiAjZW5kaWYKQEAgLTk0MCw3ICs5
NDAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgYXV0byBpbnN0YWxsZWRGb250RmFtaWx5ID0gWyZd
IHsKICAgICAgICAgICAgIGF1dG8gZmFtaWx5TmFtZVN0cmluZyA9IGZvbGRlZC5jcmVhdGVDRlN0
cmluZygpOwotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25h
cnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAg
ICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcy5nZXQoKSwga0NURm9udEZhbWlseU5hbWVBdHRy
aWJ1dGUsIGZhbWlseU5hbWVTdHJpbmcuZ2V0KCkpOwogICAgICAgICAgICAgYWRkQXR0cmlidXRl
c0Zvckluc3RhbGxlZEZvbnRzKGF0dHJpYnV0ZXMuZ2V0KCksIG1fYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpOwogICAgICAgICAgICAgYXV0byBmb250RGVzY3JpcHRvclRvTWF0Y2ggPSBhZG9wdENG
KENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVzLmdldCgpKSk7
CkBAIC05NjgsNyArOTY4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9wb3N0U2NyaXB0
TmFtZVRvRm9udERlc2NyaXB0b3JzLmVuc3VyZShmb2xkZWQsIFsmXSB7CiAgICAgICAgICAgICBh
dXRvIHBvc3RTY3JpcHROYW1lU3RyaW5nID0gZm9sZGVkLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAg
ICAgICAgICBDRlN0cmluZ1JlZiBuYW1lQXR0cmlidXRlID0ga0NURm9udFBvc3RTY3JpcHROYW1l
QXR0cmlidXRlOwotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAg
ICAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0
YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcy5nZXQoKSwga0NURm9udEVuYWJsZWRBdHRy
aWJ1dGUsIGtDRkJvb2xlYW5UcnVlKTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGF0dHJpYnV0ZXMuZ2V0KCksIG5hbWVBdHRyaWJ1dGUsIHBvc3RTY3JpcHROYW1lU3RyaW5nLmdl
dCgpKTsKICAgICAgICAgICAgIGFkZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhhdHRyaWJ1
dGVzLmdldCgpLCBtX2FsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKQEAgLTEzMTIsOCArMTMxMiw4
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb250V2l0aEZhbWlseVNwZWNpYWxDYXNl
KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZmFtaWx5LCAiLWFwcGxlLXN5c3RlbS1tb25vc3BhY2VkLW51bWJlcnMiKSkgewog
ICAgICAgICBpbnQgbnVtYmVyU3BhY2luZ1R5cGUgPSBrTnVtYmVyU3BhY2luZ1R5cGU7CiAgICAg
ICAgIGludCBtb25vc3BhY2VkTnVtYmVyc1NlbGVjdG9yID0ga01vbm9zcGFjZWROdW1iZXJzU2Vs
ZWN0b3I7Ci0gICAgICAgIGF1dG8gbnVtYmVyU3BhY2luZ051bWJlciA9IGFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJm51bWJlclNw
YWNpbmdUeXBlKSk7Ci0gICAgICAgIGF1dG8gbW9ub3NwYWNlZE51bWJlcnNOdW1iZXIgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUs
ICZtb25vc3BhY2VkTnVtYmVyc1NlbGVjdG9yKSk7CisgICAgICAgIGF1dG8gbnVtYmVyU3BhY2lu
Z051bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IGtDRk51bWJlckludFR5cGUsICZudW1iZXJTcGFjaW5nVHlwZSkpOworICAgICAgICBhdXRvIG1v
bm9zcGFjZWROdW1iZXJzTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShmYXN0TWFsbG9j
Q0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVySW50VHlwZSwgJm1vbm9zcGFjZWROdW1iZXJzU2VsZWN0
b3IpKTsKICAgICAgICAgYXV0byBzeXN0ZW1Gb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250
RGVzY3JpcHRvckNyZWF0ZUZvclVJVHlwZShrQ1RGb250VUlGb250U3lzdGVtLCBzaXplLCBudWxs
cHRyKSk7CiAgICAgICAgIGF1dG8gbW9ub3NwYWNlRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENU
Rm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEZlYXR1cmUoc3lzdGVtRm9udERlc2NyaXB0b3Iu
Z2V0KCksIG51bWJlclNwYWNpbmdOdW1iZXIuZ2V0KCksIG1vbm9zcGFjZWROdW1iZXJzTnVtYmVy
LmdldCgpKSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMobW9u
b3NwYWNlRm9udERlc2NyaXB0b3IuZ2V0KCksIHNpemUsIGFsbG93VXNlckluc3RhbGxlZEZvbnRz
KTsKQEAgLTEzNTksNyArMTM1OSw3IEBAIHN0YXRpYyB2b2lkIGF1dG9BY3RpdmF0ZUZvbnQoY29u
c3QgU3RyaW5nJiBuYW1lLCBDR0Zsb2F0IHNpemUpCiAgICAgYXV0byBmb250TmFtZSA9IG5hbWUu
Y3JlYXRlQ0ZTdHJpbmcoKTsKICAgICBDRlR5cGVSZWYga2V5c1tdID0geyBrQ1RGb250TmFtZUF0
dHJpYnV0ZSwga0NURm9udEVuYWJsZWRBdHRyaWJ1dGUgfTsKICAgICBDRlR5cGVSZWYgdmFsdWVz
W10gPSB7IGZvbnROYW1lLmdldCgpLCBrQ0ZCb29sZWFuVHJ1ZSB9OwotICAgIGF1dG8gYXR0cmli
dXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtl
eXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8g
YXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpLCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGF1
dG8gZGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRyaWJ1
dGVzKGF0dHJpYnV0ZXMuZ2V0KCkpKTsKICAgICBhdXRvIG5ld0ZvbnQgPSBhZG9wdENGKENURm9u
dENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihkZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRy
KSk7CiB9CkBAIC0xNDcxLDcgKzE0NzEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4g
bG9va3VwRmFsbGJhY2tGb250KENURm9udFJlZiBmb250LCBGb250U2VsZWN0aW9uVmFsdQogICAg
ICAgICAgICAgQ0ZTdHJpbmdSZWYgbmV3RmFtaWx5TmFtZSA9IGlzRm9udFdlaWdodEJvbGQoZm9u
dFdlaWdodCkgPyBDRlNUUigiR2VlemFQcm8tQm9sZCIpIDogQ0ZTVFIoIkdlZXphUHJvIik7CiAg
ICAgICAgICAgICBDRlR5cGVSZWYga2V5c1tdID0geyBrQ1RGb250TmFtZUF0dHJpYnV0ZSB9Owog
ICAgICAgICAgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBuZXdGYW1pbHlOYW1lIH07Ci0gICAg
ICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKKyAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6
ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICAgICAgYXV0byBtb2RpZmljYXRpb24gPSBhZG9w
dENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVzLmdldCgp
KSk7CiAgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENURm9udENyZWF0ZUNvcHlXaXRoQXR0
cmlidXRlcyhyZXN1bHQuZ2V0KCksIENURm9udEdldFNpemUocmVzdWx0LmdldCgpKSwgbnVsbHB0
ciwgbW9kaWZpY2F0aW9uLmdldCgpKSk7CiAgICAgICAgIH0KQEAgLTE1NjMsMTQgKzE1NjMsMTQg
QEAgdm9pZCBhZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9udHMoQ0ZNdXRhYmxlRGljdGlvbmFy
eVJlZiBhdHRyaWJ1dGVzLCBBbGxvd1VzZXIKICAgICBpZiAoYWxsb3dVc2VySW5zdGFsbGVkRm9u
dHMgPT0gQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vKSB7CiAgICAgICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGF0dHJpYnV0ZXMsIGtDVEZvbnRVc2VySW5zdGFsbGVkQXR0cmlidXRlLCBrQ0ZC
b29sZWFuRmFsc2UpOwogICAgICAgICBDVEZvbnRGYWxsYmFja09wdGlvbiBmYWxsYmFja09wdGlv
biA9IGtDVEZvbnRGYWxsYmFja09wdGlvblN5c3RlbTsKLSAgICAgICAgYXV0byBmYWxsYmFja09w
dGlvbk51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
a0NGTnVtYmVyU0ludDY0VHlwZSwgJmZhbGxiYWNrT3B0aW9uKSk7CisgICAgICAgIGF1dG8gZmFs
bGJhY2tPcHRpb25OdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmZmFsbGJhY2tPcHRpb24pKTsKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9udEZhbGxiYWNrT3B0aW9u
QXR0cmlidXRlLCBmYWxsYmFja09wdGlvbk51bWJlci5nZXQoKSk7CiAgICAgfQogfQogCiBSZXRh
aW5QdHI8Q1RGb250UmVmPiBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMoQ1RGb250RGVzY3Jp
cHRvclJlZiBmb250RGVzY3JpcHRvciwgQ0dGbG9hdCBzaXplLCBBbGxvd1VzZXJJbnN0YWxsZWRG
b250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykKIHsKLSAgICBhdXRvIGF0dHJpYnV0ZXMgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlTXV0YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGFk
ZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhhdHRyaWJ1dGVzLmdldCgpLCBhbGxvd1VzZXJJ
bnN0YWxsZWRGb250cyk7CiAgICAgaWYgKENGRGljdGlvbmFyeUdldENvdW50KGF0dHJpYnV0ZXMu
Z2V0KCkpKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0Rm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENU
Rm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGF0
dHJpYnV0ZXMuZ2V0KCkpKTsKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIFJldGFpblB0cjxDVEZvbnRS
ZWY+IGNyZWF0ZUZvbnRGb3JJbnN0YWxsZWRGb250cyhDVEZvbnRSZWYgZm9udCwgQWxsb3dVc2Vy
SW5zdGFsCiAgICAgaWYgKGlzRm9udE1hdGNoaW5nVXNlckluc3RhbGxlZEZvbnRGYWxsYmFjayhm
b250LCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cykpCiAgICAgICAgIHJldHVybiBmb250OwogCi0g
ICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtD
RlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpKTsKICAgICBhZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9udHMoYXR0cmli
dXRlcy5nZXQoKSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogICAgIGlmIChDRkRpY3Rpb25h
cnlHZXRDb3VudChhdHRyaWJ1dGVzLmdldCgpKSkgewogICAgICAgICBhdXRvIG1vZGlmaWNhdGlv
biA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMuZ2V0KCkpKTsKQEAgLTE2MTAsNyArMTYxMCw3IEBAIHZvaWQgYWRkQXR0cmlidXRlc0Zvcldl
YkZvbnRzKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0cmlidXRlcywgQWxsb3dVc2VySW5zdGFs
CiB7CiAgICAgaWYgKGFsbG93VXNlckluc3RhbGxlZEZvbnRzID09IEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzOjpObykgewogICAgICAgICBDVEZvbnRGYWxsYmFja09wdGlvbiBmYWxsYmFja09wdGlv
biA9IGtDVEZvbnRGYWxsYmFja09wdGlvblN5c3RlbTsKLSAgICAgICAgYXV0byBmYWxsYmFja09w
dGlvbk51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
a0NGTnVtYmVyU0ludDY0VHlwZSwgJmZhbGxiYWNrT3B0aW9uKSk7CisgICAgICAgIGF1dG8gZmFs
bGJhY2tPcHRpb25OdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmZmFsbGJhY2tPcHRpb24pKTsKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcywga0NURm9udEZhbGxiYWNrT3B0aW9u
QXR0cmlidXRlLCBmYWxsYmFja09wdGlvbk51bWJlci5nZXQoKSk7CiAgICAgfQogfQpAQCAtMTYx
OSw3ICsxNjE5LDcgQEAgUmV0YWluUHRyPENGU2V0UmVmPiBpbnN0YWxsZWRGb250TWFuZGF0b3J5
QXR0cmlidXRlcyhBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGwKIHsKICAgICBpZiAoYWxsb3dV
c2VySW5zdGFsbGVkRm9udHMgPT0gQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vKSB7CiAgICAg
ICAgIENGVHlwZVJlZiBtYW5kYXRvcnlBdHRyaWJ1dGVzVmFsdWVzW10gPSB7IGtDVEZvbnRGYW1p
bHlOYW1lQXR0cmlidXRlLCBrQ1RGb250UG9zdFNjcmlwdE5hbWVBdHRyaWJ1dGUsIGtDVEZvbnRF
bmFibGVkQXR0cmlidXRlLCBrQ1RGb250VXNlckluc3RhbGxlZEF0dHJpYnV0ZSwga0NURm9udEZh
bGxiYWNrT3B0aW9uQXR0cmlidXRlIH07Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENGU2V0Q3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1hbmRhdG9yeUF0dHJpYnV0ZXNWYWx1ZXMsIFdURl9B
UlJBWV9MRU5HVEgobWFuZGF0b3J5QXR0cmlidXRlc1ZhbHVlcyksICZrQ0ZUeXBlU2V0Q2FsbEJh
Y2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdENGKENGU2V0Q3JlYXRlKGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCBtYW5kYXRvcnlBdHRyaWJ1dGVzVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1h
bmRhdG9yeUF0dHJpYnV0ZXNWYWx1ZXMpLCAma0NGVHlwZVNldENhbGxCYWNrcykpOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQppbmRleCA2NDgz
YzI4NzNmZGJmNzYwNmUwMzk5NGVmODViOWQyOWQ4ZWFkNTUxLi44MGUyNzE3NDE5NTdmYzgzMzgw
YzQwY2Y1Yzc0Yzg4ZWM5Y2E3NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCkBAIC02Myw3
ICs2Myw3IEBAIHN0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZUhF
VkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJhbWV0ZXJzCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2VsZWN0QW5kQ3Jl
YXRlVmlkZW9EZWNvZGVySW5zdGFuY2UoY29kZWMsIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxw
dHIsIG51bGxwdHIpOworICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2VsZWN0QW5kQ3JlYXRlVmlk
ZW9EZWNvZGVySW5zdGFuY2UoY29kZWMsIGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBudWxscHRy
LCBudWxscHRyKTsKICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCkBAIC04NCw3ICs4NCw3IEBAIHN0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmls
aXRpZXNJbmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJhbWV0ZXJzCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQxNl90IGdlbmVyYWxQcm9maWxl
SURDID0gcGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZUlEQzsKLSAgICBhdXRvIGNmR2VuZXJhbFBy
b2ZpbGVJREMgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNJbnQxNlR5cGUsICZnZW5lcmFsUHJvZmlsZUlEQykpOworICAgIGF1dG8gY2ZHZW5l
cmFsUHJvZmlsZUlEQyA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2Nh
dG9yKCksIGtDRk51bWJlclNJbnQxNlR5cGUsICZnZW5lcmFsUHJvZmlsZUlEQykpOwogICAgIGF1
dG8gc2VhcmNoUmFuZ2UgPSBDRlJhbmdlTWFrZSgwLCBDRkFycmF5R2V0Q291bnQoc3VwcG9ydGVk
UHJvZmlsZXMpKTsKICAgICBpZiAoIUNGQXJyYXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZFByb2Zp
bGVzLCBzZWFyY2hSYW5nZSwgY2ZHZW5lcmFsUHJvZmlsZUlEQy5nZXQoKSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RkOjpvcHRpb25hbDxNZWRp
YUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMoY29uc3QgRG9WaVBhcmFt
ZXRlcnMKICAgICAgICAgfQogICAgIH0KIAotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2VsZWN0
QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2UoY29kZWNUeXBlKHBhcmFtZXRlcnMuY29kZWMp
LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBPU1N0YXR1cyBz
dGF0dXMgPSBWVFNlbGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rlckluc3RhbmNlKGNvZGVjVHlwZShw
YXJhbWV0ZXJzLmNvZGVjKSwgZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIG51bGxwdHIsIG51bGxw
dHIpOwogICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQz
NzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uNjdmNDdkZjA1ODNlOTQyOWY0OTYyMjc1OWFj
ZGU4MTAxN2EzMDZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM5
NCw3ICszOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25PZmZz
ZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICAgICAgICAgIGlmICghc2hhcmVkQnVm
ZmVyKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgY291bGQgcG90ZW50aWFsbHkgYWxsb2NhdGUg
bW9yZSBtZW1vcnkgdGhhbiBuZWVkZWQgaWYgdGhlIHJlYWQgaXMgcGFydGlhbC4KLSAgICAgICAg
ICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9j
ayhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudW1Ub1JlYWQsIGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG51bGxwdHIsIDAsIG51bVRvUmVhZCwga0NNQmxvY2tCdWZmZXJBc3N1cmVNZW1vcnlO
b3dGbGFnLCAmcmF3QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFM
OjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGZhc3RNYWxsb2NDRkFsbG9jYXRv
cigpLCBudWxscHRyLCBudW1Ub1JlYWQsIGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBudWxscHRy
LCAwLCBudW1Ub1JlYWQsIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93RmxhZywgJnJhd0Js
b2NrQnVmZmVyKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJsb2NrQnVmZmVyTm9F
cnIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdo
TWVtb3J5KTsKICAgICAgICAgICAgICAgICB1aW50OF90KiBibG9ja0J1ZmZlckRhdGEgPSBudWxs
cHRyOwpAQCAtNDIzLDcgKzQyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBhbGxvY2F0
b3IuRnJlZUJsb2NrID0gRnJlZURhdGFTZWdtZW50OwogICAgICAgICAgICAgICAgIGFsbG9jYXRv
ci5yZWZDb24gPSBmaXJzdFNlZ21lbnQucHRyKCk7CiAgICAgICAgICAgICAgICAgZmlyc3RTZWdt
ZW50LT5yZWYoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZl
ckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhudWxscHRyLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3Rf
Y2FzdDx1aW50OF90Kj4oZmlyc3RTZWdtZW50LT5kYXRhKCkpKSwgZmlyc3RTZWdtZW50LT5zaXpl
KCksIG51bGxwdHIsICZhbGxvY2F0b3IsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50LCBjYW5SZWFk
LCAwLCAmcmF3QmxvY2tCdWZmZXIpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpD
TUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDx1aW50OF90Kj4oZmlyc3RTZWdtZW50LT5k
YXRhKCkpKSwgZmlyc3RTZWdtZW50LT5zaXplKCksIG51bGxwdHIsICZhbGxvY2F0b3IsIG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50LCBjYW5SZWFkLCAwLCAmcmF3QmxvY2tCdWZmZXIpOwogICAgICAg
ICAgICAgICAgIGlmIChlcnIgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOwogICAgICAgICAg
ICAgICAgIGxhc3RSZWFkID0gY2FuUmVhZDsKQEAgLTEyMjksNyArMTIyOSw3IEBAIFJldGFpblB0
cjxDTUJsb2NrQnVmZmVyUmVmPiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpUcmFja0RhdGE6OmNv
bnRpZ3VvdXNDb21wbGV0CiAgICAgaWYgKCFvZmZzZXQgJiYgIWxlbmd0aCAmJiBQQUw6OkNNQmxv
Y2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhtX2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIDAs
IDApKQogICAgICAgICByZXR1cm4gbV9jb21wbGV0ZUJsb2NrQnVmZmVyOwogICAgIENNQmxvY2tC
dWZmZXJSZWYgcmF3Q29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7Ci0gICAgaWYgKFBBTDo6Q01C
bG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMobnVsbHB0ciwgbV9jb21wbGV0ZUJsb2NrQnVmZmVy
LmdldCgpLCBudWxscHRyLCBudWxscHRyLCBvZmZzZXQsIGxlbmd0aCwgMCwgJnJhd0NvbnRpZ3Vv
dXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKKyAgICBpZiAoUEFMOjpDTUJsb2Nr
QnVmZmVyQ3JlYXRlQ29udGlndW91cyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbV9jb21wbGV0
ZUJsb2NrQnVmZmVyLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBvZmZzZXQsIGxlbmd0aCwgMCwg
JnJhd0NvbnRpZ3VvdXNCdWZmZXIpICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfRkFVTFQoV2ViQXVkaW8sICJmYWlsZWQgdG8gY3JlYXRlIGNvbnRpZ3VvdXMg
YmxvY2sgYnVmZmVyIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNTAs
NyArMTI1MCw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpUcmFja0Rh
dGE6OnJlYWRGcmFtZURhdGEod2VibTo6UmVhZGVyJiByZWFkCiAgICAgaWYgKCFtX2N1cnJlbnRC
bG9ja0J1ZmZlcikgewogICAgICAgICBBU1NFUlQoIW1fcGFydGlhbEJ5dGVzUmVhZCk7CiAgICAg
ICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgICAgICBh
dXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUVtcHR5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1NYXhCbG9ja0J1ZmZlckNhcGFjaXR5LCAwLCAmcmF3QmxvY2tCdWZmZXIpOworICAgICAg
ICBhdXRvIGVyciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZUVtcHR5KGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCBtTWF4QmxvY2tCdWZmZXJDYXBhY2l0eSwgMCwgJnJhd0Jsb2NrQnVmZmVyKTsK
ICAgICAgICAgaWYgKGVyciAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyIHx8ICFyYXdCbG9ja0J1ZmZl
cikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1
ZmZlckNyZWF0ZUVtcHR5IGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAgICAgIHJl
dHVybiBTa2lwKCZyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKQEAgLTEzNjEsNyArMTM2MSw3IEBA
IHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBs
ZUJ1ZmZlcihjb25zdCBDTVRpbWUmIHByCiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1w
bGVCdWZmZXIgPSBudWxscHRyOwogICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmcgPSB7IFBB
TDo6Q01UaW1lTWFrZShkdXJhdGlvbiwgcHJlc2VudGF0aW9uVGltZS50aW1lc2NhbGUpLCBwcmVz
ZW50YXRpb25UaW1lLCBwcmVzZW50YXRpb25UaW1lIH07Ci0gICAgZXJyID0gUEFMOjpDTVNhbXBs
ZUJ1ZmZlckNyZWF0ZVJlYWR5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY29tcGxldGVCbG9ja0J1
ZmZlci5nZXQoKSwgdGhpcy0+Zm9ybWF0RGVzY3JpcHRpb24oKS5nZXQoKSwgc2FtcGxlQ291bnQs
IDEsICZ0aW1pbmcsIDEsICYqbV9jb21wbGV0ZVBhY2tldFNpemUsICZyYXdTYW1wbGVCdWZmZXIp
OworICAgIGVyciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeShmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IoKSwgbV9jb21wbGV0ZUJsb2NrQnVmZmVyLmdldCgpLCB0aGlzLT5mb3JtYXREZXNj
cmlwdGlvbigpLmdldCgpLCBzYW1wbGVDb3VudCwgMSwgJnRpbWluZywgMSwgJiptX2NvbXBsZXRl
UGFja2V0U2l6ZSwgJnJhd1NhbXBsZUJ1ZmZlcik7CiAgICAgaWYgKGVycikgewogICAgICAgICBQ
QVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5IGZh
aWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTUwNyw3ICsxNTA3
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y3JlYXRl
U2FtcGxlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2kKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ01T
YW1wbGVCdWZmZXJSZWYgcmF3U2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKLSAgICBhdXRvIGVyciA9
IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aFBhY2tldERlc2NyaXB0aW9u
cyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2NvbXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIGZvcm1h
dERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFja2V0RGVzY3JpcHRpb25zLnNpemUoKSwgbV9zYW1w
bGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tldERlc2NyaXB0aW9ucy5kYXRhKCksICZyYXdTYW1w
bGVCdWZmZXIpOworICAgIGF1dG8gZXJyID0gUEFMOjpDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRl
UmVhZHlXaXRoUGFja2V0RGVzY3JpcHRpb25zKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBtX2Nv
bXBsZXRlQmxvY2tCdWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uKCkuZ2V0KCksIG1fcGFj
a2V0RGVzY3JpcHRpb25zLnNpemUoKSwgbV9zYW1wbGVQcmVzZW50YXRpb25UaW1lLCBtX3BhY2tl
dERlc2NyaXB0aW9ucy5kYXRhKCksICZyYXdTYW1wbGVCdWZmZXIpOwogICAgIGlmIChlcnIpIHsK
ICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01BdWRpb1NhbXBsZUJ1ZmZl
ckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGggJWQiLCBlcnIpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAKaW5k
ZXggZjNlNmZiYzg4MmEwYzJkNTE1YjhlOGY2MWY2OWMxZDJlM2JlMjM5Ny4uNTVhMzZiNmM4MTIz
ZjYxOTE5ODdkNjZlYTBiYTIxZTU5NDdmYTM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0LmNwcApAQCAtMTM3LDE1ICsxMzcsMTUgQEAgdm9pZCBTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dDo6Y2xlYXIoKQogCiBSZXRhaW5QdHI8Q1RGb250UmVmPiBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6Y3JlYXRlRm9udEJ5QXBwbHlpbmdXZWlnaHRXaWR0aEl0YWxpY3NB
bmRGYWxsYmFja0JlaGF2aW9yKENURm9udFJlZiBmb250LCBDR0Zsb2F0IHdlaWdodCwgQ0dGbG9h
dCB3aWR0aCwgYm9vbCBpdGFsaWMsIGZsb2F0IHNpemUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRz
IGFsbG93VXNlckluc3RhbGxlZEZvbnRzLCBDRlN0cmluZ1JlZiBkZXNpZ24pCiB7Ci0gICAgYXV0
byB3ZWlnaHROdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlckNHRmxvYXRUeXBlLCAmd2VpZ2h0KSk7Ci0gICAgYXV0byB3aWR0aE51bWJl
ciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVy
Q0dGbG9hdFR5cGUsICZ3aWR0aCkpOworICAgIGF1dG8gd2VpZ2h0TnVtYmVyID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVyQ0dGbG9hdFR5
cGUsICZ3ZWlnaHQpKTsKKyAgICBhdXRvIHdpZHRoTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNy
ZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVyQ0dGbG9hdFR5cGUsICZ3aWR0
aCkpOwogICAgIGNvbnN0IGZsb2F0IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA9IDAuMDc7CiAgICAg
ZmxvYXQgaXRhbGljc1Jhd051bWJlciA9IGl0YWxpYyA/IHN5c3RlbUZvbnRJdGFsaWNTbG9wZSA6
IDA7Ci0gICAgYXV0byBpdGFsaWNzTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZpdGFsaWNzUmF3TnVtYmVyKSk7
CisgICAgYXV0byBpdGFsaWNzTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShmYXN0TWFs
bG9jQ0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmaXRhbGljc1Jhd051bWJlcikp
OwogICAgIENGVHlwZVJlZiB0cmFpdHNLZXlzW10gPSB7IGtDVEZvbnRXZWlnaHRUcmFpdCwga0NU
Rm9udFdpZHRoVHJhaXQsIGtDVEZvbnRTbGFudFRyYWl0LCBrQ1RGb250VUlGb250RGVzaWduVHJh
aXQgfTsKICAgICBDRlR5cGVSZWYgdHJhaXRzVmFsdWVzW10gPSB7IHdlaWdodE51bWJlci5nZXQo
KSwgd2lkdGhOdW1iZXIuZ2V0KCksIGl0YWxpY3NOdW1iZXIuZ2V0KCksIGRlc2lnbiA/IHN0YXRp
Y19jYXN0PENGVHlwZVJlZj4oZGVzaWduKSA6IHN0YXRpY19jYXN0PENGVHlwZVJlZj4oa0NURm9u
dFVJRm9udERlc2lnbkRlZmF1bHQpIH07Ci0gICAgYXV0byB0cmFpdHNEaWN0aW9uYXJ5ID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdHJhaXRzS2V5cywg
dHJhaXRzVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYWl0c0tleXMpLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0g
ICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtD
RlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBhdXRvIHRyYWl0c0RpY3Rpb25h
cnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwg
dHJhaXRzS2V5cywgdHJhaXRzVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYWl0c0tleXMpLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7CisgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoYXR0cmlidXRlcy5nZXQoKSwga0NURm9udFRyYWl0c0F0dHJpYnV0
ZSwgdHJhaXRzRGljdGlvbmFyeS5nZXQoKSk7CiAgICAgYWRkQXR0cmlidXRlc0Zvckluc3RhbGxl
ZEZvbnRzKGF0dHJpYnV0ZXMuZ2V0KCksIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKICAgICBh
dXRvIG1vZGlmaWNhdGlvbiA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMuZ2V0KCkpKTsKQEAgLTE1NiwxMCArMTU2LDEwIEBAIFJldGFpblB0
cjxDVEZvbnRSZWY+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpjcmVhdGVGb250QnlBcHBs
eWluZ1dlaWdodFdpZHRoCiAKIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6cmVtb3ZlQ2FzY2FkZUxpc3QoQ1RGb250RGVzY3JpcHRvclJl
ZiBmb250RGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIGVtcHR5QXJyYXkgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgMCwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcykpOworICAgIGF1dG8gZW1wdHlBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbnVsbHB0ciwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOwogICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRD
YXNjYWRlTGlzdEF0dHJpYnV0ZSB9OwogICAgIENGVHlwZVJlZiBmYWxsYmFja0RpY3Rpb25hcnlW
YWx1ZXNbXSA9IHsgZW1wdHlBcnJheS5nZXQoKSB9OwotICAgIGF1dG8gZmFsbGJhY2tEaWN0aW9u
YXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmFs
bGJhY2tEaWN0aW9uYXJ5S2V5cywgZmFsbGJhY2tEaWN0aW9uYXJ5VmFsdWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGZhbGxiYWNrRGljdGlvbmFyeUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0byBmYWxs
YmFja0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IoKSwgZmFsbGJhY2tEaWN0aW9uYXJ5S2V5cywgZmFsbGJhY2tEaWN0aW9uYXJ5VmFs
dWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZhbGxiYWNrRGljdGlvbmFyeUtleXMpLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CiAgICAgYXV0byBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlw
dG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmYWxsYmFja0RpY3Rp
b25hcnkuZ2V0KCkpKTsKICAgICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKIH0KQEAg
LTE2Nyw3ICsxNjcsNyBAQCBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gU3lzdGVtRm9u
dERhdGFiYXNlQ29yZVRleHQ6OnJlbW92ZUNhc2NhZGVMaXN0KENURgogVmVjdG9yPFJldGFpblB0
cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNvbXB1
dGVDYXNjYWRlTGlzdChDVEZvbnRSZWYgZm9udCwgQ0ZTdHJpbmdSZWYgbG9jYWxlKQogewogICAg
IENGVHlwZVJlZiBhcnJheVZhbHVlc1tdID0geyBsb2NhbGUgfTsKLSAgICBhdXRvIGxvY2FsZUFy
cmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFycmF5VmFs
dWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5VmFsdWVzKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOworICAgIGF1dG8gbG9jYWxlQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIGFycmF5VmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5VmFs
dWVzKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBh
ZG9wdENGKENURm9udENvcHlEZWZhdWx0Q2FzY2FkZUxpc3RGb3JMYW5ndWFnZXMoZm9udCwgbG9j
YWxlQXJyYXkuZ2V0KCkpKTsKICAgICBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JS
ZWY+PiByZXN1bHQ7CiAgICAgLy8gV2ViS2l0IGhhbmRsZXMgdGhlIGNhc2NhZGUgbGlzdCwgYW5k
IFdlYktpdCAyJ3MgSVBDIGNvZGUgZG9lc24ndCBrbm93IGhvdyB0byBzZXJpYWxpemUgQ29yZSBU
ZXh0J3MgY2FzY2FkZSBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQppbmRleCA1YzBkZmFmZGIy
ZTY3ZjA0ODA1MDVmZWFjNjZhNGVkNTQ0YTI5ZTMzLi42MDk3ZDIyYzBjZjBkNzk4NDI4MTFlMzI2
YTQ1NDQ3YjZjZWFiM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMTI4LDcgKzEyOCw3
IEBAIGJvb2wgaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkKICNlbHNlCiAgICAgaWYgKCFWaWRlb1Rv
b2xib3hMaWJyYXJ5KHRydWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG5v
RXJyID09IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2Uoa0NNVmlkZW9Db2Rl
Y1R5cGVfVlA5LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBy
ZXR1cm4gbm9FcnIgPT0gVlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0YW5jZShrQ01W
aWRlb0NvZGVjVHlwZV9WUDksIGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBudWxscHRyLCBudWxs
cHRyKTsKICNlbmRpZgogfQogCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBpc1ZQOERlY29kZXJB
dmFpbGFibGUoKQogewogICAgIGlmICghVmlkZW9Ub29sYm94TGlicmFyeSh0cnVlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBub0VyciA9PSBWVFNlbGVjdEFuZENyZWF0ZVZp
ZGVvRGVjb2Rlckluc3RhbmNlKCd2cDA4Jywga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwg
bnVsbHB0cik7CisgICAgcmV0dXJuIG5vRXJyID09IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9EZWNv
ZGVySW5zdGFuY2UoJ3ZwMDgnLCBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbnVsbHB0ciwgbnVs
bHB0cik7CiB9CiAKIGJvb2wgdnA5SGFyZHdhcmVEZWNvZGVyQXZhaWxhYmxlKCkKQEAgLTUzNiwx
MSArNTM2LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3Jl
YXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpCiAgICAgdmlldy0+c2V0KDksIHJl
Y29yZC5tYXRyaXhDb2VmZmljaWVudHMsIGZhbHNlKTsKICAgICB2aWV3LT5zZXQoMTAsIGNvZGVj
SW50aWFsaXphdGlvbkRhdGFTaXplLCBmYWxzZSk7CiAKLSAgICBhdXRvIGRhdGEgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDggKil2aWV3LT5k
YXRhKCksIHZpZXctPmJ5dGVMZW5ndGgoKSkpOworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoY29uc3QgVUludDggKil2aWV3LT5k
YXRhKCksIHZpZXctPmJ5dGVMZW5ndGgoKSkpOwogCiAgICAgQ0ZUeXBlUmVmIGNvbmZpZ3VyYXRp
b25LZXlzW10gPSB7IENGU1RSKCJ2cGNDIikgfTsKICAgICBDRlR5cGVSZWYgY29uZmlndXJhdGlv
blZhbHVlc1tdID0geyBkYXRhLmdldCgpIH07Ci0gICAgYXV0byBjb25maWd1cmF0aW9uRGljdCA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvbmZpZ3Vy
YXRpb25LZXlzLCBjb25maWd1cmF0aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbmZpZ3Vy
YXRpb25LZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gY29uZmlndXJhdGlvbkRpY3QgPSBhZG9w
dENGKENGRGljdGlvbmFyeUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgY29uZmlndXJh
dGlvbktleXMsIGNvbmZpZ3VyYXRpb25WYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoY29uZmlndXJh
dGlvbktleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKICAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBleHRlbnNpb25z
S2V5cyB7IFBBTDo6a0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRp
b25FeHRlbnNpb25BdG9tcyB9OwogICAgIFZlY3RvcjxDRlR5cGVSZWY+IGV4dGVuc2lvbnNWYWx1
ZXMgPSB7IGNvbmZpZ3VyYXRpb25EaWN0LmdldCgpIH07CkBAIC01NjUsMTEgKzU2NSwxMSBAQCBz
dGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2Ny
aXB0aW9uRnJvbVZQQ29kZWNDb25maQogICAgICAgICBleHRlbnNpb25zVmFsdWVzLmFwcGVuZChj
bU1hdHJpeCk7CiAgICAgfQogCi0gICAgYXV0byBleHRlbnNpb25zID0gYWRvcHRDRihDRkRpY3Rp
b25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZXh0ZW5zaW9uc0tleXMuZGF0YSgpLCBl
eHRlbnNpb25zVmFsdWVzLmRhdGEoKSwgZXh0ZW5zaW9uc0tleXMuc2l6ZSgpLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CisgICAgYXV0byBleHRlbnNpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIGV4dGVuc2lvbnNLZXlzLmRhdGEoKSwgZXh0ZW5zaW9uc1ZhbHVl
cy5kYXRhKCksIGV4dGVuc2lvbnNLZXlzLnNpemUoKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgQ01WaWRl
b0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uID0gbnVsbHB0cjsKICAgICBD
TVZpZGVvQ29kZWNUeXBlIGNvZGVjID0gcmVjb3JkLmNvZGVjTmFtZSA9PSAidnAwOSIgPyBrQ01W
aWRlb0NvZGVjVHlwZV9WUDkgOiAndnAwOCc7Ci0gICAgaWYgKG5vRXJyICE9IENNVmlkZW9Gb3Jt
YXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb2RlYywgd2lkdGgsIGhl
aWdodCwgZXh0ZW5zaW9ucy5nZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uKSkKKyAgICBpZiAobm9F
cnIgIT0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRv
cigpLCBjb2RlYywgd2lkdGgsIGhlaWdodCwgZXh0ZW5zaW9ucy5nZXQoKSwgJmZvcm1hdERlc2Ny
aXB0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGFkb3B0Q0YoZm9y
bWF0RGVzY3JpcHRpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
Lm1tCmluZGV4IDRiN2UzODQ0MTg0NGFmYmE4MWY2Yzk0ZmM1MTNhZjVkZmMxZjA4NGMuLmMyNWNj
MTc3ZTJjZGM3MDIzZDg4ZTlkZGYyMTI0ODdmZjM0MDE3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lv
bi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3Jl
RGVjb21wcmVzc2lvblNlc3Npb24ubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbjo6ZW5xdWV1ZVNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGVCdWZmZXIsCiAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGNhbGxiYWNrcy5jYWxsYmFj
a3MudmVyc2lvbikgPT0gc2l6ZW9mKHVpbnQzMl90KSwgIlZlcnNpb24gZmllbGQgbXVzdCBiZSA0
IGJ5dGVzIik7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoYWxpZ25vZihCdWZmZXJDYWxsYmFja3Mp
ID09IDQsICJDTUJ1ZmZlckNhbGxiYWNrcyBzdHJ1Y3QgbXVzdCBoYXZlIDQgYnl0ZSBhbGlnbm1l
bnQiKTsKIAotICAgICAgICBQQUw6OkNNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga01heGltdW1DYXBhY2l0eSwgJmNhbGxiYWNrcy5jYWxsYmFja3MsICZvdXRRdWV1ZSk7
CisgICAgICAgIFBBTDo6Q01CdWZmZXJRdWV1ZUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3Io
KSwga01heGltdW1DYXBhY2l0eSwgJmNhbGxiYWNrcy5jYWxsYmFja3MsICZvdXRRdWV1ZSk7CiAg
ICAgICAgIG1fcHJvZHVjZXJRdWV1ZSA9IGFkb3B0Q0Yob3V0UXVldWUpOwogICAgIH0KIApAQCAt
MTYwLDcgKzE2MCw3IEBAIHZvaWQgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjplbnF1ZXVl
U2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwKICAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoY2FsbGJhY2tzLmNhbGxiYWNrcy52ZXJzaW9uKSA9PSBzaXplb2YodWludDMy
X3QpLCAiVmVyc2lvbiBmaWVsZCBtdXN0IGJlIDQgYnl0ZXMiKTsKICAgICAgICAgc3RhdGljX2Fz
c2VydChhbGlnbm9mKEJ1ZmZlckNhbGxiYWNrcykgPT0gNCwgIkNNQnVmZmVyQ2FsbGJhY2tzIHN0
cnVjdCBhbGlnbm1lbnQgbXVzdCBiZSA0Iik7CiAKLSAgICAgICAgUEFMOjpDTUJ1ZmZlclF1ZXVl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtNYXhpbXVtQ2FwYWNpdHksICZjYWxsYmFja3Mu
Y2FsbGJhY2tzLCAmb3V0UXVldWUpOworICAgICAgICBQQUw6OkNNQnVmZmVyUXVldWVDcmVhdGUo
ZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtNYXhpbXVtQ2FwYWNpdHksICZjYWxsYmFja3MuY2Fs
bGJhY2tzLCAmb3V0UXVldWUpOwogICAgICAgICBtX2NvbnN1bWVyUXVldWUgPSBhZG9wdENGKG91
dFF1ZXVlKTsKICAgICB9CiAKQEAgLTIyNywxMCArMjI3LDEwIEBAIHZvaWQgV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uOjplbnN1cmVEZWNvbXByZXNzaW9uU2Vzc2lvbkZvclNhbXBsZShDTVNh
bXBsZUJ1CiAgICAgICAgIH0KIAogICAgICAgICBWVERlY29tcHJlc3Npb25TZXNzaW9uUmVmIGRl
Y29tcHJlc3Npb25TZXNzaW9uT3V0ID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKG5vRXJyID09IFZU
RGVjb21wcmVzc2lvblNlc3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdmlkZW9Gb3Jt
YXREZXNjcmlwdGlvbiwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZil2aWRlb0RlY29kZXJTcGVj
aWZpY2F0aW9uLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMsIG51bGxwdHIs
ICZkZWNvbXByZXNzaW9uU2Vzc2lvbk91dCkpIHsKKyAgICAgICAgaWYgKG5vRXJyID09IFZURGVj
b21wcmVzc2lvblNlc3Npb25DcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHZpZGVvRm9y
bWF0RGVzY3JpcHRpb24sIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpdmlkZW9EZWNvZGVyU3Bl
Y2lmaWNhdGlvbiwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzLCBudWxscHRy
LCAmZGVjb21wcmVzc2lvblNlc3Npb25PdXQpKSB7CiAgICAgICAgICAgICBtX2RlY29tcHJlc3Np
b25TZXNzaW9uID0gYWRvcHRDRihkZWNvbXByZXNzaW9uU2Vzc2lvbk91dCk7CiAgICAgICAgICAg
ICBDRkFycmF5UmVmIHJhd1N1Z2dlc3RlZFF1YWxpdHlPZlNlcnZpY2VUaWVycyA9IG51bGxwdHI7
Ci0gICAgICAgICAgICBWVFNlc3Npb25Db3B5UHJvcGVydHkoZGVjb21wcmVzc2lvblNlc3Npb25P
dXQsIGtWVERlY29tcHJlc3Npb25Qcm9wZXJ0eUtleV9TdWdnZXN0ZWRRdWFsaXR5T2ZTZXJ2aWNl
VGllcnMsIGtDRkFsbG9jYXRvckRlZmF1bHQsICZyYXdTdWdnZXN0ZWRRdWFsaXR5T2ZTZXJ2aWNl
VGllcnMpOworICAgICAgICAgICAgVlRTZXNzaW9uQ29weVByb3BlcnR5KGRlY29tcHJlc3Npb25T
ZXNzaW9uT3V0LCBrVlREZWNvbXByZXNzaW9uUHJvcGVydHlLZXlfU3VnZ2VzdGVkUXVhbGl0eU9m
U2VydmljZVRpZXJzLCBmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgJnJhd1N1Z2dlc3RlZFF1YWxp
dHlPZlNlcnZpY2VUaWVycyk7CiAgICAgICAgICAgICBtX3Fvc1RpZXJzID0gYWRvcHRDRihyYXdT
dWdnZXN0ZWRRdWFsaXR5T2ZTZXJ2aWNlVGllcnMpOwogICAgICAgICAgICAgbV9jdXJyZW50UW9z
VGllciA9IDA7CiAgICAgICAgICAgICByZXNldFFvc1RpZXIoKTsKQEAgLTI5Miw3ICsyOTIsNyBA
QCB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6aGFuZGxlRGVjb21wcmVzc2lvbk91
dHB1dChib29sIGRpc3BsYXlpbmcsIE9TUwogICAgICAgICArK21fZHJvcHBlZFZpZGVvRnJhbWVz
OwogCiAgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIHJhd0ltYWdlQnVmZmVyRGVzY3Jp
cHRpb24gPSBudWxscHRyOwotICAgIGlmIChzdGF0dXMgIT0gbm9FcnIgfHwgbm9FcnIgIT0gUEFM
OjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCByYXdJbWFnZUJ1ZmZlciwgJnJhd0ltYWdlQnVmZmVyRGVzY3JpcHRpb24pKSB7
CisgICAgaWYgKHN0YXR1cyAhPSBub0VyciB8fCBub0VyciAhPSBQQUw6OkNNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvbkNyZWF0ZUZvckltYWdlQnVmZmVyKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBy
YXdJbWFnZUJ1ZmZlciwgJnJhd0ltYWdlQnVmZmVyRGVzY3JpcHRpb24pKSB7CiAgICAgICAgICsr
bV9jb3JydXB0ZWRWaWRlb0ZyYW1lczsKICAgICAgICAgLS1tX2ZyYW1lc0JlaW5nRGVjb2RlZDsK
ICAgICAgICAgbWF5YmVCZWNvbWVSZWFkeUZvck1vcmVNZWRpYURhdGEoKTsKQEAgLTMwNyw3ICsz
MDcsNyBAQCB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6aGFuZGxlRGVjb21wcmVz
c2lvbk91dHB1dChib29sIGRpc3BsYXlpbmcsIE9TUwogICAgIH07CiAKICAgICBDTVNhbXBsZUJ1
ZmZlclJlZiByYXdJbWFnZVNhbXBsZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgaWYgKG5vRXJyICE9
IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCByYXdJbWFnZUJ1ZmZlciwgaW1hZ2VCdWZmZXJEZXNjcmlwdGlvbi5nZXQoKSwg
JmltYWdlQnVmZmVyVGltaW5nLCAmcmF3SW1hZ2VTYW1wbGVCdWZmZXIpKSB7CisgICAgaWYgKG5v
RXJyICE9IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihmYXN0
TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgcmF3SW1hZ2VCdWZmZXIsIGltYWdlQnVmZmVyRGVzY3JpcHRp
b24uZ2V0KCksICZpbWFnZUJ1ZmZlclRpbWluZywgJnJhd0ltYWdlU2FtcGxlQnVmZmVyKSkgewog
ICAgICAgICArK21fY29ycnVwdGVkVmlkZW9GcmFtZXM7CiAgICAgICAgIC0tbV9mcmFtZXNCZWlu
Z0RlY29kZWQ7CiAgICAgICAgIG1heWJlQmVjb21lUmVhZHlGb3JNb3JlTWVkaWFEYXRhKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
Q29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udENvcmVUZXh0LmNwcAppbmRleCAzNmRkNzBjYjVhNmQyNGVkYzk3MjgwYTc2NDE0N2Q1ODU5
YzQyZDU3Li41NDAzZDU5M2Y1ZGU1MGIxZmM2MThhMzMzMDBiNjMyMWE5YTU2OWJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRDb3JlVGV4dC5jcHAKQEAgLTMxOCwxOSArMzE4LDE5IEBAIGJvb2wgRm9udDo6dmFyaWFudENh
cHNTdXBwb3J0c0NoYXJhY3RlckZvclN5bnRoZXNpcyhGb250VmFyaWFudENhcHMgZm9udFZhcmlh
bnRDCiAjaWYgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFRBUkdFVF9PU19JT1MpIHx8IFBMQVRG
T1JNKE1BQykKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBzbWFsbENhcHNPcGVu
VHlwZURpY3Rpb25hcnkoQ0ZTdHJpbmdSZWYga2V5LCBpbnQgcmF3VmFsdWUpCiB7Ci0gICAgUmV0
YWluUHRyPENGTnVtYmVyUmVmPiB2YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnJhd1ZhbHVlKSk7CisgICAgYXV0byB2
YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtD
Rk51bWJlckludFR5cGUsICZyYXdWYWx1ZSkpOwogICAgIENGVHlwZVJlZiBrZXlzW10gPSB7IGtD
VEZvbnRPcGVuVHlwZUZlYXR1cmVUYWcsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVWYWx1ZSB9Owog
ICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsga2V5LCB2YWx1ZS5nZXQoKSB9OwotICAgIHJldHVy
biBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2
YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICByZXR1cm4gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtleXMsIHZh
bHVlcywgc3RkOjpzaXplKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBzbWFsbENhcHNUcnVlVHlwZURpY3Rpb25hcnkoaW50IHJhd0tleSwg
aW50IHJhd1ZhbHVlKQogewotICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4ga2V5ID0gYWRvcHRD
RihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAm
cmF3S2V5KSk7Ci0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB2YWx1ZSA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnJhd1Zh
bHVlKSk7CisgICAgYXV0byBrZXkgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2ND
RkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmcmF3S2V5KSk7CisgICAgYXV0byB2YWx1
ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtDRk51
bWJlckludFR5cGUsICZyYXdWYWx1ZSkpOwogICAgIENGVHlwZVJlZiBrZXlzW10gPSB7IGtDVEZv
bnRGZWF0dXJlVHlwZUlkZW50aWZpZXJLZXksIGtDVEZvbnRGZWF0dXJlU2VsZWN0b3JJZGVudGlm
aWVyS2V5IH07CiAgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBrZXkuZ2V0KCksIHZhbHVlLmdl
dCgpIH07Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OworICAgIHJldHVybiBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxv
Y2F0b3IoKSwga2V5cywgdmFsdWVzLCBzdGQ6OnNpemUoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIH0KIAog
c3RhdGljIHZvaWQgdW5pb25CaXRWZWN0b3JzKEJpdFZlY3RvciYgcmVzdWx0LCBDRkJpdFZlY3Rv
clJlZiBzb3VyY2UpCkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiByZW1vdmVkRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSwK
ICAgICBib29sIGlzVHJ1ZVR5cGUgPSBpc1RydWVUeXBlRmVhdHVyZShmZWF0dXJlKTsKICAgICBp
ZiAoIWlzT3BlblR5cGUgJiYgIWlzVHJ1ZVR5cGUpCiAgICAgICAgIHJldHVybiBmZWF0dXJlOyAv
LyBXZSBkb24ndCB1bmRlcnN0YW5kIHRoaXMgZm9udCBmb3JtYXQuCi0gICAgUmV0YWluUHRyPENG
TXV0YWJsZURpY3Rpb25hcnlSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgYXV0byByZXN1
bHQgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2Nh
dG9yKCksIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICBpZiAoaXNPcGVuVHlwZSkgewogICAgICAgICBhdXRv
IGZlYXR1cmVUYWcgPSBvcGVuVHlwZUZlYXR1cmUoZmVhdHVyZSk7CiAgICAgICAgIGlmIChmZWF0
dXJlVGFnICYmIChDRkVxdWFsKGZlYXR1cmVUYWcudmFsdWUoKSwgQ0ZTVFIoInNtY3AiKSkKQEAg
LTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHJlbW92ZWRGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlLAogICAgICAgICAgICAgfHwg
Q0ZFcXVhbChmZWF0dXJlVGFnLnZhbHVlKCksIENGU1RSKCJwY2FwIikpCiAgICAgICAgICAgICB8
fCBDRkVxdWFsKGZlYXR1cmVUYWcudmFsdWUoKSwgQ0ZTVFIoImMycGMiKSkpKSB7CiAgICAgICAg
ICAgICBpbnQgcmF3WmVybyA9IDA7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+
IHplcm8gPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckludFR5cGUsICZyYXdaZXJvKSk7CisgICAgICAgICAgICBhdXRvIHplcm8gPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJJbnRUeXBl
LCAmcmF3WmVybykpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUocmVzdWx0Lmdl
dCgpLCBrQ1RGb250T3BlblR5cGVGZWF0dXJlVGFnLCBmZWF0dXJlVGFnLnZhbHVlKCkpOwogICAg
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUocmVzdWx0LmdldCgpLCBrQ1RGb250T3BlblR5
cGVGZWF0dXJlVmFsdWUsIHplcm8uZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewpAQCAtNTM3LDE5
ICs1MzcsMTkgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiByZW1v
dmVkRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSwKIAogc3RhdGljIFJldGFpblB0cjxD
VEZvbnRSZWY+IGNyZWF0ZUNURm9udFdpdGhvdXRTeW50aGVzaXphYmxlRmVhdHVyZXMoQ1RGb250
UmVmIGZvbnQpCiB7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGZlYXR1cmVzID0gYWRvcHRD
RihzdGF0aWNfY2FzdDxDRkFycmF5UmVmPihDVEZvbnRDb3B5QXR0cmlidXRlKGZvbnQsIGtDVEZv
bnRGZWF0dXJlU2V0dGluZ3NBdHRyaWJ1dGUpKSk7CisgICAgYXV0byBmZWF0dXJlcyA9IGFkb3B0
Q0Yoc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ1RGb250Q29weUF0dHJpYnV0ZShmb250LCBrQ1RG
b250RmVhdHVyZVNldHRpbmdzQXR0cmlidXRlKSkpOwogICAgIGlmICghZmVhdHVyZXMpCiAgICAg
ICAgIHJldHVybiBmb250OwogICAgIENGSW5kZXggZmVhdHVyZUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGZlYXR1cmVzLmdldCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IG5l
d0ZlYXR1cmVzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBmZWF0dXJlQ291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBhdXRvIG5l
d0ZlYXR1cmVzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShmYXN0TWFsbG9jQ0ZBbGxv
Y2F0b3IoKSwgZmVhdHVyZUNvdW50LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgQ0ZEaWN0
aW9uYXJ5UmVmIGZlYXR1cmUgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMuZ2V0KCksIGkpKTsKICAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKG5ld0ZlYXR1cmVzLmdldCgpLCByZW1vdmVkRmVhdHVyZShmZWF0dXJlLCBmb250KS5n
ZXQoKSk7CiAgICAgfQogICAgIENGVHlwZVJlZiBrZXlzW10gPSB7IGtDVEZvbnRGZWF0dXJlU2V0
dGluZ3NBdHRyaWJ1dGUgfTsKICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IG5ld0ZlYXR1cmVz
LmdldCgpIH07Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gYXR0cmlidXRlcyA9IGFk
b3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVl
cywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgIFJldGFpblB0cjxDVEZv
bnREZXNjcmlwdG9yUmVmPiBuZXdEZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5nZXQoKSkpOworICAgIGF1dG8gYXR0cmli
dXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gbmV3
RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMuZ2V0KCkpKTsKICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVDb3B5
V2l0aEF0dHJpYnV0ZXMoZm9udCwgQ1RGb250R2V0U2l6ZShmb250KSwgbnVsbHB0ciwgbmV3RGVz
Y3JpcHRvci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcAppbmRleCA1OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhLi4y
Y2E4ZDIxNzhhYzZlZDc1OTM3NWFlNjRiNGY3OGQ0MjY5YWY0M2Y5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29y
ZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0
L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTk4LDExICs5OCwxMSBAQCBzdGF0aWMg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY2FzY2FkZVRvTGFzdFJlc29ydEF0dHJpYnV0ZXNE
aWN0aW9uYXJ5KCkKICAgICBhdXRvIGxhc3RSZXNvcnQgPSBhZG9wdENGKENURm9udERlc2NyaXB0
b3JDcmVhdGVXaXRoTmFtZUFuZFNpemUoQ0ZTVFIoIkxhc3RSZXNvcnQiKSwgMCkpOwogCiAgICAg
Q0ZUeXBlUmVmIGRlc2NyaXB0b3JzW10gPSB7IGxhc3RSZXNvcnQuZ2V0KCkgfTsKLSAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gYXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZGVzY3JpcHRvcnMsIFdURl9BUlJBWV9MRU5HVEgoZGVzY3JpcHRvcnMpLCAm
a0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgYXV0byBhcnJheSA9IGFkb3B0Q0YoQ0ZBcnJh
eUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgZGVzY3JpcHRvcnMsIHN0ZDo6c2l6ZShk
ZXNjcmlwdG9ycyksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIAogICAgIENGVHlwZVJlZiBr
ZXlzW10gPSB7IGtDVEZvbnRDYXNjYWRlTGlzdEF0dHJpYnV0ZSB9OwogICAgIENGVHlwZVJlZiB2
YWx1ZXNbXSA9IHsgYXJyYXkuZ2V0KCkgfTsKLSAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25h
cnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVO
R1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlz
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwogfQogCiBzdGF0aWMgQ1RGb250RGVzY3JpcHRvclJlZiBjYXNjYWRlVG9M
YXN0UmVzb3J0QW5kVmFyaWF0aW9uc0ZvbnREZXNjcmlwdG9yKCkKQEAgLTEyMiwxNCArMTIyLDEy
IEBAIENURm9udFJlZiBGb250UGxhdGZvcm1EYXRhOjpjdEZvbnQoKSBjb25zdAogICAgIGlmICht
X3dpZHRoVmFyaWFudCAhPSBGb250V2lkdGhWYXJpYW50OjpSZWd1bGFyV2lkdGgpIHsKICAgICAg
ICAgaW50IGZlYXR1cmVUeXBlVmFsdWUgPSBrVGV4dFNwYWNpbmdUeXBlOwogICAgICAgICBpbnQg
ZmVhdHVyZVNlbGVjdG9yVmFsdWUgPSBtYXBGb250V2lkdGhWYXJpYW50VG9DVEZlYXR1cmVTZWxl
Y3RvcihtX3dpZHRoVmFyaWFudCk7Ci0gICAgICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9y
UmVmPiBzb3VyY2VEZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRDb3B5Rm9udERlc2NyaXB0b3Io
bV9jdEZvbnQuZ2V0KCkpKTsKLSAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBmZWF0dXJl
VHlwZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVySW50VHlwZSwgJmZlYXR1cmVUeXBlVmFsdWUpKTsKLSAgICAgICAgUmV0YWluUHRyPENGTnVt
YmVyUmVmPiBmZWF0dXJlU2VsZWN0b3IgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZmZWF0dXJlU2VsZWN0b3JWYWx1ZSkpOwot
ICAgICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gbmV3RGVzY3JpcHRvciA9IGFk
b3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoRmVhdHVyZShzb3VyY2VEZXNjcmlw
dG9yLmdldCgpLCBmZWF0dXJlVHlwZS5nZXQoKSwgZmVhdHVyZVNlbGVjdG9yLmdldCgpKSk7Ci0g
ICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IG5ld0ZvbnQgPSBhZG9wdENGKENURm9udENyZWF0
ZVdpdGhGb250RGVzY3JpcHRvcihuZXdEZXNjcmlwdG9yLmdldCgpLCBtX3NpemUsIDApKTsKLQot
ICAgICAgICBpZiAobmV3Rm9udCkKLSAgICAgICAgICAgIG1fY3RGb250ID0gbmV3Rm9udDsKKyAg
ICAgICAgYXV0byBzb3VyY2VEZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRDb3B5Rm9udERlc2Ny
aXB0b3IobV9jdEZvbnQuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBmZWF0dXJlVHlwZSA9IGFkb3B0
Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtDRk51bWJlckludFR5
cGUsICZmZWF0dXJlVHlwZVZhbHVlKSk7CisgICAgICAgIGF1dG8gZmVhdHVyZVNlbGVjdG9yID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVy
SW50VHlwZSwgJmZlYXR1cmVTZWxlY3RvclZhbHVlKSk7CisgICAgICAgIGF1dG8gbmV3RGVzY3Jp
cHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoRmVhdHVyZShzb3Vy
Y2VEZXNjcmlwdG9yLmdldCgpLCBmZWF0dXJlVHlwZS5nZXQoKSwgZmVhdHVyZVNlbGVjdG9yLmdl
dCgpKSk7CisgICAgICAgIGlmIChhdXRvIG5ld0ZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdp
dGhGb250RGVzY3JpcHRvcihuZXdEZXNjcmlwdG9yLmdldCgpLCBtX3NpemUsIDApKSkKKyAgICAg
ICAgICAgIG1fY3RGb250ID0gV1RGTW92ZShuZXdGb250KTsKICAgICB9CiAKICAgICByZXR1cm4g
bV9jdEZvbnQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9DVlV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0NWVXRpbGl0aWVzLm1tCmluZGV4IDQwNzI3MDQzZmQxMmQ2MmE0Y2JkN2RiYjU5ZTQxMTYw
YTI4ZGRmMjIuLmQwYjc5NDlmNTM3OTkyZjEyZmMxNzIzY2VjYjgyMTdjZmZhNzljMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1t
CkBAIC01MCw3ICs1MCw3IEBAIEV4cGVjdGVkPFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9vbFJl
Zj4sIENWUmV0dXJuPiBjcmVhdGVJT1N1cmZhY2VDVlBpeGVsQnVmZmVyCiAgICAgICAgIH07CiAg
ICAgfQogICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBvb2wgPSBudWxscHRyOwotICAgIGF1dG8g
c3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9f
YnJpZGdlIENGRGljdGlvbmFyeVJlZilwb29sT3B0aW9ucywgKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilwaXhlbEF0dHJpYnV0ZXMsICZwb29sKTsKKyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxC
dWZmZXJQb29sQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKXBvb2xPcHRpb25zLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXBpeGVsQXR0
cmlidXRlcywgJnBvb2wpOwogICAgIGlmIChzdGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcyB8fCAh
cG9vbCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHN0YXR1cyk7CiAgICAgcmV0dXJu
IGFkb3B0Q0YocG9vbCk7CkBAIC01OSw3ICs1OSw3IEBAIEV4cGVjdGVkPFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUG9vbFJlZj4sIENWUmV0dXJuPiBjcmVhdGVJT1N1cmZhY2VDVlBpeGVsQnVmZmVy
CiBFeHBlY3RlZDxSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4sIENWUmV0dXJuPiBjcmVhdGVD
VlBpeGVsQnVmZmVyRnJvbVBvb2woQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29s
KQogewogICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOwotICAgIGF1
dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBwaXhlbEJ1ZmZlclBvb2wsICZwaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzdGF0
dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpLCBwaXhlbEJ1ZmZlclBvb2wsICZwaXhlbEJ1ZmZlcik7CiAgICAgaWYgKHN0YXR1cyAh
PSBrQ1ZSZXR1cm5TdWNjZXNzIHx8ICFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKHN0YXR1cyk7CiAgICAgcmV0dXJuIGFkb3B0Q0YocGl4ZWxCdWZmZXIpOwpAQCAt
MTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgcGl4ZWxCdWZmZXJDcmVhdGlv
bk9wdGlvbnMoSU9TdXJmYWNlUmVmIHN1cmZhY2UpCiBFeHBlY3RlZDxSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4sIENWUmV0dXJuPiBjcmVhdGVDVlBpeGVsQnVmZmVyKElPU3VyZmFjZVJlZiBz
dXJmYWNlKQogewogICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOwot
ICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckNyZWF0ZVdpdGhJT1N1cmZhY2Uoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc3VyZmFjZSwgcGl4ZWxCdWZmZXJDcmVhdGlvbk9wdGlvbnMoc3VyZmFj
ZSksICZwaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyQ3JlYXRl
V2l0aElPU3VyZmFjZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgc3VyZmFjZSwgcGl4ZWxCdWZm
ZXJDcmVhdGlvbk9wdGlvbnMoc3VyZmFjZSksICZwaXhlbEJ1ZmZlcik7CiAgICAgaWYgKHN0YXR1
cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzIHx8ICFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKHN0YXR1cyk7CiAgICAgcmV0dXJuIGFkb3B0Q0YocGl4ZWxCdWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0lt
YWdlUm90YXRpb25TZXNzaW9uVlQubW0KaW5kZXggYWNjYmIwYjFhZTJlMzUwMTg4MTVlMzk2MWNj
ZGU3MTYzNDRhOGU2Yi4uNzYzNjU3Nzc1YTNmYWVjZDk5YzM2NmE4ZGJiNTNjMDRiNDg4YmQ5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6aW5pdGlhbGl6ZShjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmIHJv
dGF0aW9uLCBGbG9hCiAgICAgbV9yb3RhdGVkU2l6ZSA9IGV4cGFuZGVkSW50U2l6ZShzaXplKTsK
IAogICAgIFZUSW1hZ2VSb3RhdGlvblNlc3Npb25SZWYgcmF3Um90YXRpb25TZXNzaW9uID0gbnVs
bHB0cjsKLSAgICBWVEltYWdlUm90YXRpb25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fcm90YXRpb25Qcm9wZXJ0aWVzLmFuZ2xlLCAmcmF3Um90YXRpb25TZXNzaW9uKTsKKyAg
ICBWVEltYWdlUm90YXRpb25TZXNzaW9uQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBt
X3JvdGF0aW9uUHJvcGVydGllcy5hbmdsZSwgJnJhd1JvdGF0aW9uU2Vzc2lvbik7CiAgICAgbV9y
b3RhdGlvblNlc3Npb24gPSBhZG9wdENGKHJhd1JvdGF0aW9uU2Vzc2lvbik7CiAgICAgVlRJbWFn
ZVJvdGF0aW9uU2Vzc2lvblNldFByb3BlcnR5KG1fcm90YXRpb25TZXNzaW9uLmdldCgpLCBrVlRJ
bWFnZVJvdGF0aW9uUHJvcGVydHlLZXlfRW5hYmxlSGlnaFNwZWVkVHJhbnNmZXIsIGtDRkJvb2xl
YW5UcnVlKTsKIApAQCAtMTA4LDcgKzEwOCw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlCiAg
ICAgICAgIH07CiAKICAgICAgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcmF3UG9vbCA9IG51bGxw
dHI7Ci0gICAgICAgIGlmIChhdXRvIGVyciA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcGl4ZWxB
dHRyaWJ1dGVzLCAmcmF3UG9vbCk7IGVyciAhPSBub0VycikgeworICAgICAgICBpZiAoYXV0byBl
cnIgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbnVs
bHB0ciwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilwaXhlbEF0dHJpYnV0ZXMsICZyYXdQb29s
KTsgZXJyICE9IG5vRXJyKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMs
ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIGZhaWxlZCBjcmVhdGluZyBidWZmZXIgcG9vbCB3aXRo
IGVycm9yICVkIiwgZXJyKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CkBAIC0xMTgsNyArMTE4LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdlUm90
YXRpb25TZXNzaW9uVlQ6OnJvdGF0ZShDVlBpeGVsQnVmZmVyUmVmIHBpeGUKIAogICAgIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiByZXN1bHQ7CiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiByYXdS
b3RhdGVkQnVmZmVyID0gbnVsbHB0cjsKLSAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQ
b29sQ3JlYXRlUGl4ZWxCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb3RhdGlvblBvb2wu
Z2V0KCksICZyYXdSb3RhdGVkQnVmZmVyKTsKKyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZm
ZXJQb29sQ3JlYXRlUGl4ZWxCdWZmZXIoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIG1fcm90YXRp
b25Qb29sLmdldCgpLCAmcmF3Um90YXRlZEJ1ZmZlcik7CiAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZS
ZXR1cm5TdWNjZXNzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkltYWdl
Um90YXRpb25TZXNzaW9uVlQgZmFpbGVkIGNyZWF0aW5nIGJ1ZmZlciBmcm9tIHBvb2wgd2l0aCBl
cnJvciAlZCIsIHN0YXR1cyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJT
ZXNzaW9uVlQubW0KaW5kZXggYWJiOTkyMzkzZTU3NTNiMzY5ZTdjNTU0NDZhMTFiZDA3MzdhZDk0
Yi4uYjMxY2ZiMTVmMzcxODczMzYwMGMwYTdiM2E0NDk0ODFkNGJkZGIzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5z
ZmVyU2Vzc2lvblZULm1tCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIElt
YWdlVHJhbnNmZXJTZXNzaW9uVlQ6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQodWludDMyX3QgcGl4
ZWxGb3JtYXQpCiB7CiAgICAgVlRQaXhlbFRyYW5zZmVyU2Vzc2lvblJlZiB0cmFuc2ZlclNlc3Np
b247Ci0gICAgVlRQaXhlbFRyYW5zZmVyU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAmdHJhbnNmZXJTZXNzaW9uKTsKKyAgICBWVFBpeGVsVHJhbnNmZXJTZXNzaW9uQ3JlYXRlKGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCAmdHJhbnNmZXJTZXNzaW9uKTsKICAgICBBU1NFUlQodHJh
bnNmZXJTZXNzaW9uKTsKICAgICBtX3RyYW5zZmVyU2Vzc2lvbiA9IGFkb3B0Q0YodHJhbnNmZXJT
ZXNzaW9uKTsKIApAQCAtMTUzLDE0ICsxNTMsMTQgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0Q01TYW1wbGVCdWZmZXIoQ01TYW0K
ICAgICB9CiAKICAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRp
b24gPSBudWxscHRyOwotICAgIHN0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9u
Q3JlYXRlRm9ySW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29udmVydGVkUGl4ZWxC
dWZmZXIuZ2V0KCksICZmb3JtYXREZXNjcmlwdGlvbik7CisgICAgc3RhdHVzID0gUEFMOjpDTVZp
ZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1ZmZlcihmYXN0TWFsbG9jQ0ZBbGxv
Y2F0b3IoKSwgY29udmVydGVkUGl4ZWxCdWZmZXIuZ2V0KCksICZmb3JtYXREZXNjcmlwdGlvbik7
CiAgICAgaWYgKHN0YXR1cyAhPSBub0VycikgewogICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwg
IkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1ZmZlcjogQ01WaWRlb0Zv
cm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIgcmV0dXJuZWQ6ICVkIiwgc3RhdGlj
X2Nhc3Q8aW50PihzdGF0dXMpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAg
ICAgQ01TYW1wbGVCdWZmZXJSZWYgcmVzaXplZFNhbXBsZUJ1ZmZlcjsKLSAgICBzdGF0dXMgPSBQ
QUw6OkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoSW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgY29udmVydGVkUGl4ZWxCdWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uLCB0
aW1laW5nSW5mb1B0ciwgJnJlc2l6ZWRTYW1wbGVCdWZmZXIpOworICAgIHN0YXR1cyA9IFBBTDo6
Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihmYXN0TWFsbG9jQ0ZBbGxv
Y2F0b3IoKSwgY29udmVydGVkUGl4ZWxCdWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uLCB0
aW1laW5nSW5mb1B0ciwgJnJlc2l6ZWRTYW1wbGVCdWZmZXIpOwogICAgIENGUmVsZWFzZShmb3Jt
YXREZXNjcmlwdGlvbik7CiAgICAgaWYgKHN0YXR1cyAhPSBub0VycikgewogICAgICAgICBSRUxF
QVNFX0xPRyhNZWRpYSwgIkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRDTVNhbXBsZUJ1
ZmZlcjogZmFpbGVkIHRvIGNyZWF0ZSBDTVNhbXBsZUJ1ZmZlciB3aXRoIGVycm9yIGNvZGU6ICVk
Iiwgc3RhdGljX2Nhc3Q8aW50PihzdGF0dXMpKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlUGl4ZWxC
dWZmZXIoQ0dJbWFnZVJlZgogCiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiByZ2JCdWZmZXI7CiAgICAg
YXV0byBpbWFnZVNpemUgPSBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UpKTsKLSAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQo
KSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQVJHQiwgbnVsbHB0ciwgJnJnYkJ1ZmZlcik7CisgICAg
YXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCBrQ1ZQaXhlbEZvcm1hdFR5
cGVfMzJBUkdCLCBudWxscHRyLCAmcmdiQnVmZmVyKTsKICAgICBpZiAoc3RhdHVzICE9IGtDVlJl
dHVyblN1Y2Nlc3MpIHsKICAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJJbWFnZVRyYW5zZmVy
U2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZlcjogQ1ZQaXhlbEJ1ZmZlckNyZWF0ZSBmYWlsZWQg
d2l0aCBlcnJvciBjb2RlOiAlZCIsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjEyLDcgKzIxMiw3IEBAIFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlQ01TYW1wbGVCdWZmZXIoQ1ZQ
aXhlCiAgICAgfQogCiAgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uID0gbnVsbHB0cjsKLSAgICBhdXRvIHN0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERl
c2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENWSW1h
Z2VCdWZmZXJSZWYpaW5wdXRCdWZmZXIuZ2V0KCksICZmb3JtYXREZXNjcmlwdGlvbik7CisgICAg
YXV0byBzdGF0dXMgPSBQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZUZvckltYWdl
QnVmZmVyKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoQ1ZJbWFnZUJ1ZmZlclJlZilpbnB1dEJ1
ZmZlci5nZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uKTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydFBp
eGVsQnVmZmVyOiBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb24g
d2l0aCBlcnJvciBjb2RlOiAlZCIsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjIxLDcgKzIyMSw3IEBAIFJldGFpblB0cjxDTVNhbXBsZUJ1
ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlQ01TYW1wbGVCdWZmZXIoQ1ZQ
aXhlCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOwogICAgIGF1dG8gY21UaW1l
ID0gUEFMOjp0b0NNVGltZShzYW1wbGVUaW1lKTsKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGlt
aW5nSW5mbyA9IHsgUEFMOjprQ01UaW1lSW52YWxpZCwgY21UaW1lLCBjbVRpbWUgfTsKLSAgICBz
dGF0dXMgPSBQQUw6OkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoSW1hZ2VCdWZmZXIoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgKENWSW1hZ2VCdWZmZXJSZWYpaW5wdXRCdWZmZXIuZ2V0KCksIGZv
cm1hdERlc2NyaXB0aW9uLCAmdGltaW5nSW5mbywgJnNhbXBsZUJ1ZmZlcik7CisgICAgc3RhdHVz
ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpLCAoQ1ZJbWFnZUJ1ZmZlclJlZilpbnB1dEJ1ZmZlci5nZXQoKSwgZm9y
bWF0RGVzY3JpcHRpb24sICZ0aW1pbmdJbmZvLCAmc2FtcGxlQnVmZmVyKTsKICAgICBDRlJlbGVh
c2UoZm9ybWF0RGVzY3JpcHRpb24pOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgUkVMRUFT
RV9MT0coTWVkaWEsICJJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0UGl4ZWxCdWZmZXI6
IGZhaWxlZCB0byBpbml0aWFsaXplIENNU2FtcGxlQnVmZmVyIHdpdGggZXJyb3IgY29kZTogJWQi
LCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcApp
bmRleCA1ZmFhMzFmYjk4MjI5NDQwMDVmYmY4ZGEzMWE5N2QwNmY0ZTgzZTA0Li5jMjlkYzkxYTIz
NzE2Y2M3NDk5NzVhNTZmZGMzNDBkYzZjNDAwZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNW
LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWOjpQaXhlbEJ1ZmZlckNvbmZvcm1lckNWKENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1
dGVzKQogewogICAgIFZUUGl4ZWxCdWZmZXJDb25mb3JtZXJSZWYgY29uZm9ybWVyID0gbnVsbHB0
cjsKLSAgICBWVFBpeGVsQnVmZmVyQ29uZm9ybWVyQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXR0cmlidXRlcywgJmNvbmZvcm1lcik7CisgICAgVlRQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBh
dHRyaWJ1dGVzLCAmY29uZm9ybWVyKTsKICAgICBBU1NFUlQoY29uZm9ybWVyKTsKICAgICBtX3Bp
eGVsQ29uZm9ybWVyID0gYWRvcHRDRihjb25mb3JtZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVU
ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0Lm1tCmluZGV4IDMzMmQxZWYyNmE5ZWI4YzNhYWM0OWUyMWExYjk5
MGJlYjJkZGM0ZGMuLjhiMzlkYWI1MjY5ZTY2YTUwMGQ2NTdkMWI1YWU2YmE1Y2Q1MGViMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTE1NCw3ICsxNTQs
NyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICBmb250ID0gbV9mb250LmZhbGxi
YWNrUmFuZ2VzQXQoMCkuZm9udEZvckNoYXJhY3RlcihiYXNlQ2hhcmFjdGVyKTsKICAgICAgICAg
aWYgKCFmb250KQogICAgICAgICAgICAgZm9udCA9ICZtX2ZvbnQuZmFsbGJhY2tSYW5nZXNBdCgw
KS5mb250Rm9yRmlyc3RSYW5nZSgpOwotICAgICAgICBzdHJpbmdBdHRyaWJ1dGVzID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBm
b250LT5nZXRDRlN0cmluZ0F0dHJpYnV0ZXMobV9mb250LmVuYWJsZUtlcm5pbmcoKSwgZm9udC0+
cGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSwgbV9mb250LmZvbnREZXNjcmlwdGlvbigpLmNv
bXB1dGVkTG9jYWxlKCkpLmdldCgpKSk7CisgICAgICAgIHN0cmluZ0F0dHJpYnV0ZXMgPSBhZG9w
dENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCAwLCBmb250LT5nZXRDRlN0cmluZ0F0dHJpYnV0ZXMobV9mb250LmVuYWJsZUtlcm5pbmcoKSwg
Zm9udC0+cGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSwgbV9mb250LmZvbnREZXNjcmlwdGlv
bigpLmNvbXB1dGVkTG9jYWxlKCkpLmdldCgpKSk7CiAgICAgICAgIC8vIFdlIGRvbid0IGtub3cg
d2hpY2ggZm9udCBzaG91bGQgYmUgdXNlZCB0byByZW5kZXIgdGhpcyBncmFwaGVtZSBjbHVzdGVy
LCBzbyBlbmFibGUgQ29yZVRleHQncyBmYWxsYmFjayBtZWNoYW5pc20gYnkgdXNpbmcgdGhlIENU
Rm9udCB3aGljaCBkb2Vzbid0IGhhdmUgQ29yZVRleHQncyBmYWxsYmFjayBkaXNhYmxlZC4KICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29uc3RfY2FzdDxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPihzdHJpbmdBdHRyaWJ1dGVzLmdldCgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIGZvbnQt
PnBsYXRmb3JtRGF0YSgpLmZvbnQoKSk7CiAgICAgfSBlbHNlCkBAIC0xNzQsMTAgKzE3NCwxMCBA
QCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNo
YXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICBjb25zdCBzaG9ydCBsdHJGb3JjZWRF
bWJlZGRpbmdMZXZlbFZhbHVlID0gMDsKICAgICAgICAgY29uc3Qgc2hvcnQgcnRsRm9yY2VkRW1i
ZWRkaW5nTGV2ZWxWYWx1ZSA9IDE7CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBvcHRpb25L
ZXlzW10gPSB7IGtDVFR5cGVzZXR0ZXJPcHRpb25Gb3JjZWRFbWJlZGRpbmdMZXZlbCB9OwotICAg
ICAgICBzdGF0aWMgY29uc3Qgdm9pZCogbHRyT3B0aW9uVmFsdWVzW10gPSB7IENGTnVtYmVyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNob3J0VHlwZSwgJmx0ckZvcmNlZEVt
YmVkZGluZ0xldmVsVmFsdWUpIH07Ci0gICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBydGxPcHRp
b25WYWx1ZXNbXSA9IHsgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyU2hvcnRUeXBlLCAmcnRsRm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSkgfTsKLSAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBsdHJUeXBl
c2V0dGVyT3B0aW9ucyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG9wdGlvbktleXMsIGx0ck9wdGlvblZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChvcHRp
b25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IHJ0bFR5cGVzZXR0ZXJPcHRpb25zID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgcnRs
T3B0aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmlu
Z0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CisgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBsdHJPcHRpb25WYWx1ZXNbXSA9IHsgQ0ZO
dW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtDRk51bWJlclNob3J0VHlwZSwg
Jmx0ckZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07CisgICAgICAgIHN0YXRpYyBjb25zdCB2
b2lkKiBydGxPcHRpb25WYWx1ZXNbXSA9IHsgQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxs
b2NhdG9yKCksIGtDRk51bWJlclNob3J0VHlwZSwgJnJ0bEZvcmNlZEVtYmVkZGluZ0xldmVsVmFs
dWUpIH07CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPj4gbHRyVHlwZXNldHRlck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFsdWVzLCBX
VEZfQVJSQVlfTEVOR1RIKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gcnRsVHlwZXNl
dHRlck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxv
Y2F0b3IoKSwgb3B0aW9uS2V5cywgcnRsT3B0aW9uVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKG9w
dGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKICAgICAgICAgUHJvdmlkZXJJbmZvIGluZm8g
PSB7IGNwLCBsZW5ndGgsIHN0cmluZ0F0dHJpYnV0ZXMuZ2V0KCkgfTsKICAgICAgICAgLy8gRklY
TUU6IFNvbWUgU0RLcyBjb21wbGFpbiB0aGF0IHRoZSBzZWNvbmQgcGFyYW1ldGVyIGJlbG93IGNh
bm5vdCBiZSBudWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2
YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjVkNzI5ZWMyNmMwYWVmNTRhMzk0NzI1
OTY0NzY2OTVhN2M4MTMzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoKSA9IGRlZmF1bHQ7CiAKIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
biwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYgZm9u
dENyZWF0aW9uQ29udGV4dCkKIHsKLSAgICBhdXRvIGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwor
ICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGFkZEF0dHJpYnV0ZXNG
b3JXZWJGb250cyhhdHRyaWJ1dGVzLmdldCgpLCBmb250RGVzY3JpcHRpb24uc2hvdWxkQWxsb3dV
c2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgYXV0byBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0g
YWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNj
cmlwdG9yLmdldCgpLCBhdHRyaWJ1dGVzLmdldCgpKSk7CiAgICAgQVNTRVJUKG1vZGlmaWVkRm9u
dERlc2NyaXB0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tCmluZGV4IDUzNmJkZWIyMzAxMDhkOWNlZjc3NDJmMzA0MGJhNmVjNjVmNzYx
ZWIuLjM1ZTNhY2Y4MGFiNmE5ZDM4NDQ5YjNhM2NiMzU4MmU4NTYxMmM1ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTgyLDEw
ICs4MiwxMCBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBCaXRtYXBJbWFnZTo6dGlmZlJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFZlY3RvcjxSZWY8TmF0aXZlSW1hZwogICAgIGlmICghbmF0aXZlSW1hZ2Vz
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7Cisg
ICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCAwKSk7CiAKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0g
ICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gZGVzdGluYXRpb24gPSBhZG9wdENG
KENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIGtVVFR5cGVUSUZG
LCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAwKSk7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0
Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VUVHlwZVRJ
RkYsIG5hdGl2ZUltYWdlcy5zaXplKCksIDApKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAgICAgaWYgKCFkZXN0aW5hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0
LmNwcAppbmRleCBmYWFiNmUxNGYwMjdhNDQ0YmQ2ZGUyNzEyZTY2OTU0YTc2NTVkZDFiLi5hMDZl
NDQ0N2RhYmJlYzIyNjk4MzA0ZmRmN2M1ODUyOWJiNzQ4ODNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRh
Q29yZVRleHQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IEZvbnQ6OmdldENGU3RyaW5nQXR0cmlidXRlcyhib29sIGVuYWJsZUtlcm5pbmcsIEZvbnRPCiAK
ICAgICBpZiAoIWVuYWJsZUtlcm5pbmcpIHsKICAgICAgICAgY29uc3QgZmxvYXQgemVybyA9IDA7
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+PiB6
ZXJvS2VybmluZ1ZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6ZXJvKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+PiB6ZXJvS2VybmluZ1ZhbHVlID0gYWRvcHRD
RihDRk51bWJlckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVyRmxvYXRU
eXBlLCAmemVybykpOwogICAgICAgICBrZXlzW2NvdW50XSA9IGtDVEtlcm5BdHRyaWJ1dGVOYW1l
OwogICAgICAgICB2YWx1ZXNbY291bnRdID0gemVyb0tlcm5pbmdWYWx1ZS5nZXQoKS5nZXQoKTsK
ICAgICAgICAgKytjb3VudDsKQEAgLTc1LDkgKzc1LDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gRm9udDo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKGJvb2wgZW5hYmxlS2VybmluZywgRm9u
dE8KICAgICAgICAgKytjb3VudDsKICAgICB9CiAKLSAgICBBU1NFUlQoY291bnQgPD0gV1RGX0FS
UkFZX0xFTkdUSChrZXlzKSk7CisgICAgQVNTRVJUKGNvdW50IDw9IHN0ZDo6c2l6ZShrZXlzKSk7
CiAKLSAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga2V5cywgdmFsdWVzLCBjb3VudCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIHJldHVybiBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwga2V5cywgdmFsdWVz
LCBjb3VudCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEy
NGU4NTQyYWY5NTE5NzE3ODRiODBmMjA0YzgxOTVmY2U4Li5iYThhNThkZDNhOGE3OTQxNGJjZTY2
MTAzNjMwOWZkOWNiMDUxY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTU4NCw5ICs1ODQsOSBAQCB2b2lkIExlZ2FjeVRpbGVDYWNo
ZTo6ZHJhd0xheWVyKExlZ2FjeVRpbGVMYXllciogbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0
LCBEcgogICAgICAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1lKENG
U1RSKCJIZWx2ZXRpY2EiKSwgMjUsICZtYXRyaXgpKTsKICAgICAgICAgQ0ZUeXBlUmVmIGtleXNb
XSA9IHsga0NURm9udEF0dHJpYnV0ZU5hbWUsIGtDVEZvcmVncm91bmRDb2xvckZyb21Db250ZXh0
QXR0cmlidXRlTmFtZSB9OwogICAgICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnQuZ2V0
KCksIGtDRkJvb2xlYW5UcnVlIH07Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RG
X0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotICAgICAgICBhdXRvIHN0cmluZyA9IGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHRleHQpLCBzdHJsZW4odGV4dCksIGtDRlN0
cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsKLSAgICAgICAgYXV0
byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLmdldCgpLCBhdHRyaWJ1dGVzLmdldCgpKSk7CisgICAg
ICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpLCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OworICAgICAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNO
b0NvcHkoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUlu
dDgqPih0ZXh0KSwgc3RybGVuKHRleHQpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlLCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBzdHJp
bmcuZ2V0KCksIGF0dHJpYnV0ZXMuZ2V0KCkpKTsKICAgICAgICAgYXV0byBsaW5lID0gYWRvcHRD
RihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgp
KSk7CiAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCBsYWJlbEJvdW5k
cy5vcmlnaW4ueCArIDMsIGxhYmVsQm91bmRzLm9yaWdpbi55ICsgMjApOwogICAgICAgICBDVExp
bmVEcmF3KGxpbmUuZ2V0KCksIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dLVmlldy5tbQppbmRleCBlYTVhNThlNDcxMDBjZTY3MjkyMTQzYmM1NTA2ZDAyNGIwNTEy
ZjYzLi43MDg5MDk5NDQ0NTQxNmNhMjEwZGFkMWY1YWI0Mjk2OTZjODc2OGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLVmlldy5tbQpAQCAtNDEwLDkgKzQxMCw4IEBAIHZv
aWQgV0tWaWV3QWRkU3VidmlldyAoV0tWaWV3UmVmIHZpZXcsIFdLVmlld1JlZiBzdWJ2aWV3KQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGlmICghdmlldy0+c3Vidmlld3MpIHsK
LSAgICAgICAgdmlldy0+c3Vidmlld3MgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCAm
V0tDb2xsZWN0aW9uQXJyYXlDYWxsQmFja3MpOwotICAgIH0KKyAgICBpZiAoIXZpZXctPnN1YnZp
ZXdzKQorICAgICAgICB2aWV3LT5zdWJ2aWV3cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCAwLCAmV0tDb2xsZWN0aW9uQXJyYXlDYWxsQmFja3MpOwogICAg
IENGQXJyYXlBcHBlbmRWYWx1ZSAodmlldy0+c3Vidmlld3MsIHN1YnZpZXcpOwogICAgIF9XS1Zp
ZXdTZXRTdXBlcnZpZXcgKHN1YnZpZXcsIHZpZXcpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDk1NDRiNTFjMjc4ZGY1
NjllYTRhYjBiZmVmN2VmNzQ0YWM1MmM3MzUuLjEzZDE3NjIxYjJhMGUzYjg0MTY4MDA1OWJmMWI2
Nzc1N2E5ODBiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWQubW0KQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFdlYlRocmVhZEFkb3B0QW5k
UmVsZWFzZShpZCBvYmopCiAgICAgTG9ja2VyIGxvY2tlciB7IHdlYlRocmVhZFJlbGVhc2VMb2Nr
IH07CiAKICAgICBpZiAod2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkgPT0gbmlsKQotICAgICAg
ICB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwgbnVsbHB0cikpOworICAgICAgICB3ZWJU
aHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoZmFz
dE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsIG51bGxwdHIpKTsKICAgICBDRkFycmF5QXBwZW5kVmFs
dWUod2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkuZ2V0KCksIG9iaik7CiAgICAgQ0ZSdW5Mb29w
U291cmNlU2lnbmFsKHdlYlRocmVhZFJlbGVhc2VTb3VyY2UoKS5nZXQoKSk7CiAgICAgQ0ZSdW5M
b29wV2FrZVVwKHdlYlRocmVhZFJ1bkxvb3ApOwpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyB2
b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9pZCopCiAgICAgewogICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgd2ViVGhyZWFkUmVsZWFzZUxvY2sgfTsKICAgICAgICAgaWYgKENGQXJy
YXlHZXRDb3VudCh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSkpIHsKLSAgICAgICAg
ICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAw
LCB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSkpOworICAgICAgICAgICAgb2JqZWN0
cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5KGZhc3RNYWxsb2NDRkFsbG9jYXRv
cigpLCAwLCB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSkpOwogICAgICAgICAgICAg
Q0ZBcnJheVJlbW92ZUFsbFZhbHVlcyh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKaW5kZXggZjk1ZDhmMDFhZmFlYjQ4YWViODAxYTM2MmVlNDY0MWIyNjI0NDFjMy4uMmJmMmIx
OTVlOTc4MjE5MDBjNjM3MjQzNzgxYWRjMDAyMGM5YzU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbDo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBs
ZUJ1ZmZlcgogICAgICAgICAgICAgbV9ibGFja0ZyYW1lID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZl
cihkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCk7CiAKICAgICAgICAgICAgIENN
VmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0g
ICAgICAgICAgICBhdXRvIHN0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3Jl
YXRlRm9ySW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9ibGFja0ZyYW1lLmdldCgp
LCAmZm9ybWF0RGVzY3JpcHRpb24pOworICAgICAgICAgICAgYXV0byBzdGF0dXMgPSBQQUw6OkNN
VmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZUZvckltYWdlQnVmZmVyKGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCBtX2JsYWNrRnJhbWUuZ2V0KCksICZmb3JtYXREZXNjcmlwdGlvbik7CiAgICAg
ICAgICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlIDo6dW5hYmxlIHRvIGNyZWF0ZSBhIGJsYWNrIGZyYW1lIGRlc2NyaXB0aW9uOiAl
ZCIsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSk7CiAgICAgICAgICAgICAgICAgbV9ibGFja0Zy
YW1lID0gbnVsbHB0cjsKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbDo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZUJ1ZmZl
cgogCiAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSA9IG51bGxwdHI7CiAgICAgICAg
IENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvIHsgUEFMOjprQ01UaW1lSW52YWxpZCwgUEFM
Ojp0b0NNVGltZShzYW1wbGVCdWZmZXIucHJlc2VudGF0aW9uVGltZSgpKSwgUEFMOjp0b0NNVGlt
ZShzYW1wbGVCdWZmZXIuZGVjb2RlVGltZSgpKSB9OwotICAgICAgICBhdXRvIHN0YXR1cyA9IFBB
TDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoQ1ZJbWFnZUJ1ZmZlclJlZiltX2JsYWNrRnJhbWUuZ2V0KCksIG1fYmxhY2tGcmFt
ZURlc2NyaXB0aW9uLmdldCgpLCAmdGltaW5nSW5mbywgJnNhbXBsZSk7CisgICAgICAgIGF1dG8g
c3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoQ1ZJbWFnZUJ1ZmZlclJlZiltX2JsYWNrRnJhbWUuZ2V0
KCksIG1fYmxhY2tGcmFtZURlc2NyaXB0aW9uLmdldCgpLCAmdGltaW5nSW5mbywgJnNhbXBsZSk7
CiAKICAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VycikgewogICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OnZpZGVv
U2FtcGxlQXZhaWxhYmxlIC0gdW5hYmxlIHRvIGNyZWF0ZSBhIGJsYWNrIGZyYW1lOiAlZCIsIHN0
YXRpY19jYXN0PGludD4oc3RhdHVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tCmluZGV4IGMzNjA4YzlmYTMxMGNlNWE5OTE5ZDFlYWYzODFkZmQ3
ZGY5M2YxMTQuLmQ4OTcwNTdjMzhkZmNhN2I3ZjVhZWQ1MzIxYTMyMjRlN2ZiMTU2NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC02Nywx
NCArNjcsMTQgQEAgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+QXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yKCkKIGJvb2wgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFs
aXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNr
T2JqZWN0KQogewogICAgIENNQnVmZmVyUXVldWVSZWYgaW5wdXRCdWZmZXJRdWV1ZTsKLSAgICBp
ZiAoYXV0byBlcnJvciA9IFBBTDo6Q01CdWZmZXJRdWV1ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAwLCBQQUw6OkNNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1
ZmZlcnMoKSwgJmlucHV0QnVmZmVyUXVldWUpKSB7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBQQUw6
OkNNQnVmZmVyUXVldWVDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsIFBBTDo6Q01C
dWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmaW5wdXRC
dWZmZXJRdWV1ZSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUNyZWF0ZSBmb3IgbV9pbnB1
dEJ1ZmZlclF1ZXVlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIG1faW5wdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0YoaW5wdXRCdWZmZXJR
dWV1ZSk7CiAKICAgICBDTUJ1ZmZlclF1ZXVlUmVmIG91dHB1dEJ1ZmZlclF1ZXVlOwotICAgIGlm
IChhdXRvIGVycm9yID0gUEFMOjpDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDAsIFBBTDo6Q01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVm
ZmVycygpLCAmb3V0cHV0QnVmZmVyUXVldWUpKSB7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBQQUw6
OkNNQnVmZmVyUXVldWVDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsIFBBTDo6Q01C
dWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmb3V0cHV0
QnVmZmVyUXVldWUpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVDcmVhdGUgZm9yIG1fb3V0
cHV0QnVmZmVyUXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGIK
ICAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmlu
Z1ByaW1lRHVyYXRpb24pKSB7CiAgICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2Ft
cGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKICAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlv
biA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlv
bik7Ci0gICAgICAgIGF1dG8gdHJpbUF0U3RhcnREaWN0ID0gYWRvcHRDRihDTVRpbWVDb3B5QXNE
aWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgICAgICBh
dXRvIHRyaW1BdFN0YXJ0RGljdCA9IGFkb3B0Q0YoQ01UaW1lQ29weUFzRGljdGlvbmFyeSh0cmlt
RHVyYXRpb24sIGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpKSk7CiAgICAgICAgIENNU2V0QXR0YWNo
bWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRT
dGFydCwgdHJpbUF0U3RhcnREaWN0LmdldCgpLCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9w
YWdhdGUpOwogICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0cmFj
dChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24sIHRyaW1EdXJhdGlvbik7CiAgICAgfQpAQCAtMjc5
LDcgKzI3OSw3IEBAIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpzYW1wbGVCdWZmZXJXaXRoTnVtUGFjCiAgICAgICAgIH0KIAogICAgICAg
ICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb247Ci0g
ICAgICAgIGlmIChhdXRvIGVycm9yID0gUEFMOjpDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEwsIGNv
b2tpZVNpemUsIGNvb2tpZS5kYXRhKCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2NyaXB0
aW9uKSkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IFBBTDo6Q01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAmbV9kZXN0aW5hdGlvbkZvcm1h
dCwgMCwgTlVMTCwgY29va2llU2l6ZSwgY29va2llLmRhdGEoKSwgTlVMTCwgJmRlc3RpbmF0aW9u
Rm9ybWF0RGVzY3JpcHRpb24pKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb25DcmVhdGUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4g
bmlsOwogICAgICAgICB9CkBAIC0yOTEsNyArMjkxLDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVm
ZmVyUmVmPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1Q
YWMKICAgICBzaXplX3QgZGF0YVNpemUgPSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0
YUJ5dGVTaXplOwogCiAgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsKLSAgICBpZiAo
YXV0byBlcnJvciA9IFBBTDo6Q01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBOVUxMLCBkYXRhU2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVM
TCwgMCwgZGF0YVNpemUsIGtDTUJsb2NrQnVmZmVyQXNzdXJlTWVtb3J5Tm93RmxhZywgJmJsb2Nr
QnVmZmVyKSkgeworICAgIGlmIChhdXRvIGVycm9yID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRl
V2l0aE1lbW9yeUJsb2NrKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBOVUxMLCBkYXRhU2l6ZSwg
ZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIE5VTEwsIDAsIGRhdGFTaXplLCBrQ01CbG9ja0J1ZmZl
ckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9j
a0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CkBAIC0zMDMsNyArMzAzLDcgQEAgUmV0YWluUHRyPENN
U2FtcGxlQnVmZmVyUmVmPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZl
cldpdGhOdW1QYWMKICAgICB9CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZm
ZXI7Ci0gICAgYXV0byBlcnJvciA9IFBBTDo6Q01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQ
YWNrZXREZXNjcmlwdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyLmdldCgpLCB0cnVl
LCBOVUxMLCBOVUxMLCBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksIG51bVBh
Y2tldHMsIG1fY3VycmVudE5hdGl2ZVByZXNlbnRhdGlvblRpbWVTdGFtcCwgbV9kZXN0aW5hdGlv
blBhY2tldERlc2NyaXB0aW9ucy5kYXRhKCksICZyYXdTYW1wbGVCdWZmZXIpOworICAgIGF1dG8g
ZXJyb3IgPSBQQUw6OkNNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRp
b25zKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBidWZmZXIuZ2V0KCksIHRydWUsIE5VTEwsIE5V
TEwsIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgbnVtUGFja2V0cywgbV9j
dXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVz
Y3JpcHRpb25zLmRhdGEoKSwgJnJhd1NhbXBsZUJ1ZmZlcik7CiAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25z
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhj
MWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLmQwYzA0MWFlMWY5MjRiYzhl
Yzk2Mjc0NTc1MDVjNjZhNTc0MzBmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTMyMCw3ICszMjAsNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIoQVZBc3Nl
dFdyaXRlcklucHV0ICphcwogICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvID0geyBQ
QUw6OmtDTVRpbWVJbnZhbGlkLCBwcmVzZW50YXRpb25UaW1lU3RhbXAsIGRlY29kaW5nVGltZVN0
YW1wfTsKIAogICAgIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciA9IE5VTEw7Ci0gICAgYXV0byBl
cnJvciA9IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVM
TCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEwsICZi
dWZmZXIpOworICAgIGF1dG8gZXJyb3IgPSBQQUw6OkNNU2FtcGxlQnVmZmVyQ3JlYXRlKGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCBOVUxMLCB0cnVlLCBOVUxMLCBOVUxMLCBOVUxMLCAwLCAxLCAm
dGltaW5nSW5mbywgMCwgTlVMTCwgJmJ1ZmZlcik7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXIgYXBwZW5kRW5kc1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIgZmFpbGVkIENNU2FtcGxl
QnVmZmVyQ3JlYXRlIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTM5Niw3
ICszOTYsNyBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29w
eVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKAogICAgIH0KIAogICAgIENNU2FtcGxl
QnVmZmVyUmVmIG5ld0J1ZmZlciA9IG51bGxwdHI7Ci0gICAgaWYgKGF1dG8gZXJyb3IgPSBQQUw6
OkNNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgb3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZuZXdCdWZmZXIpKSB7
CisgICAgaWYgKGF1dG8gZXJyb3IgPSBQQUw6OkNNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhO
ZXdUaW1pbmcoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwg
dGltZUluZm8uZGF0YSgpLCAmbmV3QnVmZmVyKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVy
Q3JlYXRlQ29weVdpdGhOZXdUaW1pbmcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IubW0KaW5kZXggYjg5ZGYwNDRkNzRjYjEwN2U2ZGNhOGE5ZDJlZmJmMjFi
ZTQ1MTFkMS4uMWNkMDI3Y2NhMzk5MjdkYmQ2ZDYwNTdiMDBiYzkzZGNkOWYzYTAyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTc2LDcg
Kzc2LDcgQEAgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yKCkKIGJvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXpl
KENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2Jq
ZWN0KQogewogICAgIENNQnVmZmVyUXVldWVSZWYgb3V0cHV0QnVmZmVyUXVldWU7Ci0gICAgaWYg
KGF1dG8gZXJyb3IgPSBQQUw6OkNNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgMCwgUEFMOjpDTUJ1ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZm
ZXJzKCksICZvdXRwdXRCdWZmZXJRdWV1ZSkpIHsKKyAgICBpZiAoYXV0byBlcnJvciA9IFBBTDo6
Q01CdWZmZXJRdWV1ZUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgUEFMOjpDTUJ1
ZmZlclF1ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzKCksICZvdXRwdXRC
dWZmZXJRdWV1ZSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJW
aWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgdW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgcXVldWUg
JWQiLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMjAsNyArMTIw
LDcgQEAgdm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25D
YWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLAogc3RhdGljIGlubGluZSBPU1N0YXR1cyBzZXRD
b21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eShWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Np
b24sIENGU3RyaW5nUmVmIGtleSwgdWludDMyX3QgdmFsdWUpCiB7CiAgICAgaW50NjRfdCB2YWx1
ZTY0ID0gdmFsdWU7Ci0gICAgYXV0byBjZlZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmdmFsdWU2NCkpOworICAg
IGF1dG8gY2ZWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2Nh
dG9yKCksIGtDRk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZTY0KSk7CiAgICAgT1NTdGF0dXMgc3Rh
dHVzID0gVlRTZXNzaW9uU2V0UHJvcGVydHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUuZ2V0KCkp
OwogICAgIHJldHVybiBzdGF0dXM7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgYm9vbCBWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1h
dERlc2NyaXB0aW8KICNlbmRpZgogCiAgICAgVlRDb21wcmVzc2lvblNlc3Npb25SZWYgdnRTZXNz
aW9uOwotICAgIGF1dG8gZXJyb3IgPSBQQUw6OlZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBt
X291dHB1dENvZGVjVHlwZSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZillbmNvZGVyU3BlY2lm
aWNhdGlvbnMsIE5VTEwsIE5VTEwsIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjaywgdGhpcywgJnZ0
U2Vzc2lvbik7CisgICAgYXV0byBlcnJvciA9IFBBTDo6VlRDb21wcmVzc2lvblNlc3Npb25DcmVh
dGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMu
aGVpZ2h0LCBtX291dHB1dENvZGVjVHlwZSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZillbmNv
ZGVyU3BlY2lmaWNhdGlvbnMsIE5VTEwsIE5VTEwsIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjaywg
dGhpcywgJnZ0U2Vzc2lvbik7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJl
c3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogICAgICAgICByZXR1
cm4gTk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKaW5kZXggZTE1NTQ2MmY1
MTgxNTg4YmEzYmM5NDU2YzZiNmFlOWFmZTIxYjVjMS4uNmFkZTBmMmIzYjdhMzU0ZjgwMTEzMDVh
MDQ3NDUzM2ViNTRkNGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcApA
QCAtMjA0LDcgKzIwNCw3IEBAIFJldGFpblB0cjxDTUNsb2NrUmVmPiBDb3JlQXVkaW9DYXB0dXJl
RGV2aWNlOjpkZXZpY2VDbG9jaygpCiAgICAgICAgIHJldHVybiBtX2RldmljZUNsb2NrOwogCiAg
ICAgQ01DbG9ja1JlZiBjbG9jazsKLSAgICBhdXRvIGVyciA9IFBBTDo6Q01BdWRpb0RldmljZUNs
b2NrQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBlcnNpc3RlbnRJZCgpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksICZjbG9jayk7CisgICAgYXV0byBlcnIgPSBQQUw6OkNNQXVkaW9EZXZpY2VD
bG9ja0NyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgcGVyc2lzdGVudElkKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgJmNsb2NrKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFdlYlJUQywgIkNvcmVBdWRpb0NhcHR1cmVEZXZpY2U6OkNNQXVkaW9EZXZp
Y2VDbG9ja0NyZWF0ZSglcCkgQ01BdWRpb0RldmljZUNsb2NrQ3JlYXRlIGZhaWxlZCB3aXRoIGVy
cm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUNvY29hLm1tCmluZGV4IDllY2E2Zjc3YzdmNDQyOWMyNWJhMjZlYWJkZDYxMGQwMmZiYWIzODQu
LjVhMzI0OWY2YmEwYWVmNmU5ZmJjMGMzYjQ0MzZiZDI0ODA3MTYwMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTY4LDcgKzY4LDcg
QEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQogICAgIEFTU0VSVChmb3JtYXQgPT0ga0NWUGl4ZWxG
b3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2UgfHwgZm9ybWF0ID09IGtDVlBp
eGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UpOwogCiAgICAgQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0byBzdGF0dXMgPSBDVlBp
eGVsQnVmZmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgbnVsbHB0ciwgJnBpeGVsQnVmZmVyKTsKKyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZm
ZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
bnVsbHB0ciwgJnBpeGVsQnVmZmVyKTsKICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgc3RhdHVz
ID09IG5vRXJyKTsKIAogICAgIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3Mo
cGl4ZWxCdWZmZXIsIDApOwpAQCAtMTI3LDcgKzEyNyw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9t
VmlkCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVs
QnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxC
dWZmZXJQb29sLmdldCgpLCAmcGl4ZWxCdWZmZXIpOworICAgICAgICBhdXRvIHN0YXR1cyA9IENW
UGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4ZWxCdWZmZXIoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpLCAmcGl4ZWxCdWZmZXIpOwogCiAgICAgICAgIGlmIChz
dGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcykgewogICAgICAgICAgICAgRVJST1JfTE9HX0lGKGxv
Z2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEgcGl4ZWwgYnVmZmVy
IHdpdGggZXJyb3IgIiwgc3RhdHVzKTsKQEAgLTE3OSwxNCArMTc5LDE0IEBAIHZvaWQgUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0Zy
YW1lJiBmcmFtZSkKICAgICB0aW1pbmdJbmZvLmR1cmF0aW9uID0gUEFMOjprQ01UaW1lSW52YWxp
ZDsKIAogICAgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsK
LSAgICBPU1N0YXR1cyBvc3RhdHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVh
dGVGb3JJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ1ZJbWFnZUJ1ZmZlclJlZilw
aXhlbEJ1ZmZlciwgJmZvcm1hdERlc2NyaXB0aW9uKTsKKyAgICBPU1N0YXR1cyBvc3RhdHVzID0g
UEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1ZmZlcihmYXN0TWFs
bG9jQ0ZBbGxvY2F0b3IoKSwgKENWSW1hZ2VCdWZmZXJSZWYpcGl4ZWxCdWZmZXIsICZmb3JtYXRE
ZXNjcmlwdGlvbik7CiAgICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKICAgICAgICAgRVJST1Jf
TE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGluaXRpYWxpemUg
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uIHdpdGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50Pihv
c3RhdHVzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBDTVNhbXBsZUJ1ZmZlclJl
ZiBzYW1wbGVCdWZmZXI7Ci0gICAgb3N0YXR1cyA9IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVS
ZWFkeVdpdGhJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ1ZJbWFnZUJ1ZmZlclJl
ZilwaXhlbEJ1ZmZlciwgZm9ybWF0RGVzY3JpcHRpb24sICZ0aW1pbmdJbmZvLCAmc2FtcGxlQnVm
ZmVyKTsKKyAgICBvc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aElt
YWdlQnVmZmVyKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoQ1ZJbWFnZUJ1ZmZlclJlZilwaXhl
bEJ1ZmZlciwgZm9ybWF0RGVzY3JpcHRpb24sICZ0aW1pbmdJbmZvLCAmc2FtcGxlQnVmZmVyKTsK
ICAgICBDRlJlbGVhc2UoZm9ybWF0RGVzY3JpcHRpb24pOwogICAgIGlmIChvc3RhdHVzICE9IG5v
RXJyKSB7CiAgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwg
IkZhaWxlZCB0byBjcmVhdGUgdGhlIHNhbXBsZSBidWZmZXIgd2l0aCBlcnJvciAiLCBzdGF0aWNf
Y2FzdDxpbnQ+KG9zdGF0dXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKaW5kZXggNmI2MmNiNDY4
NGU3MmUwYzIzNTY5ZWUzOWYwYmZiMWM1MjcwODUzOC4uNzBkZjQ1NmZlYWMyOWMzZmMwYWIzNzMz
NjMyMTM4ZjhiZWJjZTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgUmV0YWluUHRyPENGQXJyYXlSZWY+IENlcnRpZmljYXRlSW5mbzo6Y2VydGlmaWNhdGVDaGFp
bkZyb21TZWNUcnVzdChTZWNUcnVzdFJlZgogICAgIHJldHVybiBhZG9wdENGKFNlY1RydXN0Q29w
eUNlcnRpZmljYXRlQ2hhaW4odHJ1c3QpKTsKICNlbHNlCiAgICAgYXV0byBjb3VudCA9IFNlY1Ry
dXN0R2V0Q2VydGlmaWNhdGVDb3VudCh0cnVzdCk7Ci0gICAgYXV0byBjZXJ0aWZpY2F0ZUNoYWlu
ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBjb3VudCwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcykpOworICAgIGF1dG8gY2VydGlmaWNhdGVDaGFpbiA9IGFkb3B0Q0YoQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGNvdW50LCAma0NGVHlwZUFycmF5
Q2FsbEJhY2tzKSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAg
ICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNlcnRpZmljYXRlQ2hhaW4uZ2V0KCksIFNlY1RydXN0
R2V0Q2VydGlmaWNhdGVBdEluZGV4KHRydXN0LCBpKSk7CiAgICAgcmV0dXJuIGNlcnRpZmljYXRl
Q2hhaW47CkBAIC0yODcsMTQgKzI4NywxNCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4+IGRlY29kZUNlcnRpZmljYXRlQ2hhaW4oRGVjb2RlciYgZGVjbwogICAg
IGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gYXJy
YXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlQXJyYXlDYWxs
QmFja3MpKTsKKyAgICBhdXRvIGFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAqc2l6ZTsgKytpKSB7CiAgICAgICAgIGF1dG8gZGF0
YSA9IGRlY29kZUNGRGF0YShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBhdXRvIGNlcnRpZmljYXRlID0gYWRv
cHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEtPmdldCgpKSk7CisgICAg
ICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERh
dGEoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGRhdGEtPmdldCgpKSk7CiAgICAgICAgIENGQXJy
YXlBcHBlbmRWYWx1ZShhcnJheS5nZXQoKSwgY2VydGlmaWNhdGUuZ2V0KCkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZl
UXVldWVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jl
c29sdmVRdWV1ZUNGTmV0LmNwcAppbmRleCBiMzgyYTBkN2VkZjE2NTQzY2EzY2Y0N2IzZGUxYzc3
MTVlYjE3NDUwLi43OTJiN2I5MzhkY2Y1YzQ2NDRjOGM2NzE1ZDcxZjhjYWE0MDAxYjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1
ZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jl
c29sdmVRdWV1ZUNGTmV0LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEROU1Jlc29sdmVRdWV1
ZUNGTmV0OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9
IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSkpOworICAgIGF1dG8gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUo
ZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
KTsKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IGI5MDI5YmNlNjU0MDkyZDli
OTE3MmIzOTE2MTMwNmY0YTc2YmNlMzUuLjRiMjM0ZmYyN2IxMDkzMjQxNDA3NjQ3NDdkMDkwMGVk
MTUyN2Q5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRp
YyBib29sIGFkdmFuY2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAg
ICAgIFtmb3JtXSAoVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykgewogICAgICAgICAgICAgc2l6ZV90
IHNpemUgPSBieXRlcy5zaXplKCk7CiAgICAgICAgICAgICBNYWxsb2NQdHI8dWludDhfdCwgV1RG
OjpWZWN0b3JNYWxsb2M+IGRhdGEgPSBieXRlcy5yZWxlYXNlQnVmZmVyKCk7Ci0gICAgICAgICAg
ICBmb3JtLT5jdXJyZW50U3RyZWFtID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVhdGVXaXRoQnl0
ZXNOb0NvcHkoMCwgZGF0YS5nZXQoKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAg
ICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0
aEJ5dGVzTm9Db3B5KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBkYXRhLmdldCgpLCBzaXplLCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgICAgICAgICBmb3JtLT5jdXJyZW50RGF0YSA9IFdURk1v
dmUoZGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSwgW2Zvcm1dIChj
b25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKQEAgLTE1
MCw3ICsxNTAsNyBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFt
RmllbGRzKiBmb3JtKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBwYXRoID0gZmlsZURhdGEuZmlsZW5hbWU7Ci0gICAgICAgICAgICBm
b3JtLT5jdXJyZW50U3RyZWFtID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgw
LCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpKTsKKyAgICAgICAgICAgIGZvcm0t
PmN1cnJlbnRTdHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpKTsK
ICAgICAgICAgICAgIGlmICghZm9ybS0+Y3VycmVudFN0cmVhbSkgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBmaWxlIG11c3QgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgYmVjb21lIHVucmVhZGFibGUu
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIHN0YXRp
YyBDRlR5cGVSZWYgZm9ybUNvcHlQcm9wZXJ0eShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgdm9pCiAgICAgfQogCiAgICAgaWYgKGtDRkNvbXBhcmVFcXVhbFRvID09
IENGU3RyaW5nQ29tcGFyZShwcm9wZXJ0eU5hbWUsIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVy
dHlOYW1lKCksIDApKQotICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAs
IDAsIENGU1RSKCIlbGx1IiksIGZvcm0tPnN0cmVhbUxlbmd0aCk7CisgICAgICAgIHJldHVybiBD
RlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsIENGU1RS
KCIlbGx1IiksIGZvcm0tPnN0cmVhbUxlbmd0aCk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKaW5kZXggNDhmYWQ4MmQzMThkMTcyNmU0YmIyMzFi
M2YzYmYzOWNkOWViOWQ3MC4uZTkzNmFkZjYxNTdhN2QyMjQ1NTQwMjc5ZmI2NjMwNjQ5MDRjOGIw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKQEAgLTQxLDEyICs0MSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlm
aWVyKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBzdG9yYWdlU2Vzc2lvbiA9
IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
aWRlbnRpZmllciwgbnVsbHB0cikpOworICAgIGF1dG8gc3RvcmFnZVNlc3Npb24gPSBhZG9wdENG
KF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBpZGVu
dGlmaWVyLCBudWxscHRyKSk7CiAKICAgICBpZiAoIXN0b3JhZ2VTZXNzaW9uKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgp
KSk7CisgICAgYXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2Fj
aGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAg
aWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTYwLDExICs2MCwxMSBA
QCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRgogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCi0gICAgYXV0byBj
b29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9y
YWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CisgICAgYXV0
byBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVT
dG9yYWdlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwog
ICAgIGlmICghY29va2llU3RvcmFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIHNoYXJlZENvb2tpZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQo
a0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgYXV0byBzaGFyZWRDb29raWVTdG9yYWdlID0gX0NG
SFRUUENvb2tpZVN0b3JhZ2VHZXREZWZhdWx0KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpKTsKICAg
ICBhdXRvIHNoYXJlZFBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQ
b2xpY3koc2hhcmVkQ29va2llU3RvcmFnZSk7CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENv
b2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBzaGFyZWRQb2xpY3kpOwogCkBA
IC05NiwxMCArOTYsMTAgQEAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBt
X3BsYXRmb3JtQ29va2llU3RvcmFnZTsKIAogICAgIGlmIChtX3BsYXRmb3JtU2Vzc2lvbikKLSAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFn
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BsYXRmb3JtU2Vzc2lvbi5nZXQoKSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCBtX3BsYXRmb3JtU2Vzc2lvbi5nZXQoKSkpOwogCiAjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKLSAgICByZXR1cm4gX0NGSFRUUENvb2tpZVN0b3JhZ2VHZXRE
ZWZhdWx0KGtDRkFsbG9jYXRvckRlZmF1bHQpOworICAgIHJldHVybiBfQ0ZIVFRQQ29va2llU3Rv
cmFnZUdldERlZmF1bHQoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCkpOwogI2Vsc2UKICAgICAvLyBX
aGVuIHVzaW5nIE5TVVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBjb29raWUg
c3RvcmFnZS4KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXgg
MTNhZjkxNmNlZWY5Nzk4ZDE0YzI1MjFlMmY4MzE2ZDE5MzM4N2Y3MS4uZDJiOWQxNDRjOTdiNjVm
ZTZkZjY1NWFkYWU4ZmI0NTUxMjQ1Y2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTE2
NSw3ICsxNjUsNyBAQCBzdGF0aWMgQ0ZVUkxSZWYgc2l0ZUZvckNvb2tpZXMoUmVzb3VyY2VSZXF1
ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLAogICAgIGNhc2UgUmVzb3VyY2VS
ZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uOjpTYW1lU2l0ZToKICAgICAgICAgcmV0dXJuIHVy
bDsKICAgICBjYXNlIFJlc291cmNlUmVxdWVzdDo6U2FtZVNpdGVEaXNwb3NpdGlvbjo6Q3Jvc3NT
aXRlOgotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGVVJMUmVmPj4g
ZW1wdHlVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxscHRyLCBDRlNUUigi
IiksIG51bGxwdHIpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxD
RlVSTFJlZj4+IGVtcHR5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIENGU1RSKCIiKSwgbnVsbHB0cikpOwogICAgICAgICByZXR1cm4g
ZW1wdHlVUkwuZ2V0KCkuZ2V0KCk7CiAgICAgfQogfQpAQCAtMTc5LDEzICsxNzksMTMgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29raWVzID0gUmVzb3VyY2VSZXF1ZXN0OjpmaXJz
dFBhcnR5Rm9yQ29va2llcygpLmNyZWF0ZUNGVVJMKCk7CiAgICAgZG91YmxlIHRpbWVvdXRJbnRl
cnZhbCA9IFJlc291cmNlUmVxdWVzdEJhc2U6OnRpbWVvdXRJbnRlcnZhbCgpID8gUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgOiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWZh
dWx0VGltZW91dEludGVydmFsKCk7CiAgICAgaWYgKG1fY2ZSZXF1ZXN0KSB7Ci0gICAgICAgIGNm
UmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJl
cXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlQ29weShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbV9jZlJlcXVlc3QuZ2V0
KCkpKTsKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJMKGNmUmVxdWVzdC5nZXQoKSwgdXJsLmdl
dCgpKTsKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdC5n
ZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOwogICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRDYWNoZVBvbGljeShjZlJlcXVlc3QuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xp
Y3koY2FjaGVQb2xpY3koKSkpOwogICAgICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2
YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1lb3V0SW50ZXJ2YWwpOwogICAgIH0gZWxzZQotICAgICAg
ICBjZlJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdl
dCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkpLCB0aW1lb3V0
SW50ZXJ2YWwsIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKSk7CisgICAgICAgIGNmUmVxdWVz
dCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0
b3IoKSwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5
KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKSk7CiAKICAg
ICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QuZ2V0KCksIGh0dHBN
ZXRob2QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIApAQCAtMjEzLDcgKzIxMyw3IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAjZW5kaWYKIAog
ICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJy
YXlSZWY+IGVuY29kaW5nRmFsbGJhY2tzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0NvdW50LCAwKSk7CisgICAgUmV0YWluUHRyPENG
TXV0YWJsZUFycmF5UmVmPiBlbmNvZGluZ0ZhbGxiYWNrcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0
ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGZhbGxiYWNrQ291bnQsIDApKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGZhbGxiYWNrQ291bnQ7ICsraSkgewogICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZSA9IG1fcmVzcG9uc2VDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKTsKICAg
ICAgICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IENGU3RyaW5nQ29udmVydElBTkFDaGFy
U2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKTsKQEAgLTIyMywxMiArMjIzLDgg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBz
ZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoY2ZSZXF1ZXN0LmdldCgp
LCBlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSk7CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9O
SU5HKQotICAgIFN0cmluZyBwYXJ0aXRpb24gPSBjYWNoZVBhcnRpdGlvbigpOwotICAgIGlmICgh
cGFydGl0aW9uLmlzTnVsbCgpICYmICFwYXJ0aXRpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgIENT
dHJpbmcgdXRmOFN0cmluZyA9IHBhcnRpdGlvbi51dGY4KCk7Ci0gICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcGFydGl0aW9uVmFsdWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5
dGVzKDAsIHV0ZjhTdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSwg
a0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSkpOwotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0
UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktl
eSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAoYXV0byBwYXJ0aXRpb24g
PSBjYWNoZVBhcnRpdGlvbigpOyAhcGFydGl0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgX0NGVVJM
UmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgpLCBfa0NGVVJMQ2FjaGVQ
YXJ0aXRpb25LZXksIHBhcnRpdGlvbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbmRpZgog
CiAgICAgbV9jZlJlcXVlc3QgPSBXVEZNb3ZlKGNmUmVxdWVzdCk7CkBAIC0yNDIsMTMgKzIzOCwx
MyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKICAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29raWVzID0gUmVzb3VyY2VSZXF1
ZXN0OjpmaXJzdFBhcnR5Rm9yQ29va2llcygpLmNyZWF0ZUNGVVJMKCk7CiAgICAgZG91YmxlIHRp
bWVvdXRJbnRlcnZhbCA9IFJlc291cmNlUmVxdWVzdEJhc2U6OnRpbWVvdXRJbnRlcnZhbCgpID8g
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6dGltZW91dEludGVydmFsKCkgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CiAgICAgaWYgKG1fY2ZSZXF1ZXN0KSB7Ci0g
ICAgICAgIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHko
MCwgbV9jZlJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVS
TFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbV9jZlJl
cXVlc3QuZ2V0KCkpKTsKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJMKGNmUmVxdWVzdC5nZXQo
KSwgdXJsLmdldCgpKTsKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNm
UmVxdWVzdC5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOwogICAgICAgICBDRlVS
TFJlcXVlc3RTZXRDYWNoZVBvbGljeShjZlJlcXVlc3QuZ2V0KCksIHRvUGxhdGZvcm1SZXF1ZXN0
Q2FjaGVQb2xpY3koY2FjaGVQb2xpY3koKSkpOwogICAgICAgICBDRlVSTFJlcXVlc3RTZXRUaW1l
b3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LmdldCgpLCB0aW1lb3V0SW50ZXJ2YWwpOwogICAgIH0gZWxz
ZQotICAgICAgICBjZlJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGUo
MCwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNhY2hlUG9saWN5KCkp
LCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKSk7CisgICAgICAg
IGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZShmYXN0TWFsbG9j
Q0ZBbGxvY2F0b3IoKSwgdXJsLmdldCgpLCB0b1BsYXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KGNh
Y2hlUG9saWN5KCkpLCB0aW1lb3V0SW50ZXJ2YWwsIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgp
KSk7CiAKICAgICBGb3JtRGF0YSogZm9ybURhdGEgPSBodHRwQm9keSgpOwogICAgIGlmIChmb3Jt
RGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKQEAgLTM1Myw3ICszNDksNyBAQCB2b2lkIFJl
c291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbikKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKIAotICAgIGF1
dG8gY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBt
X2NmUmVxdWVzdC5nZXQoKSkpOworICAgIGF1dG8gY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJl
cXVlc3RDcmVhdGVNdXRhYmxlQ29weShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbV9jZlJlcXVl
c3QuZ2V0KCkpKTsKICAgICBpZiAoc3RvcmFnZVNlc3Npb24pCiAgICAgICAgIF9DRlVSTFJlcXVl
c3RTZXRTdG9yYWdlU2Vzc2lvbihjZlJlcXVlc3QuZ2V0KCksIHN0b3JhZ2VTZXNzaW9uKTsKICAg
ICBtX2NmUmVxdWVzdCA9IFdURk1vdmUoY2ZSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAppbmRl
eCA5NjE2MGMyZTY3MzQ2Njc3YjBiMGI2ODE4MGI3YTMyODFjNTc3MjM5Li4xZDZjNTllYThkNWI2
Njk0MjQwODU3NmM1YWVjMGMxYmUwZDZkYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCkBAIC0xMzEs
NyArMTMxLDcgQEAgaW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaHR0cEhlYWRlclZhbHVl
VXNpbmdTdWl0YWJsZUVuY29kaW5nKEhUVFBIZWFkZXJNYXAKICAgICBpZiAoaGVhZGVyLmtleUFz
SFRUUEhlYWRlck5hbWUgJiYgKmhlYWRlci5rZXlBc0hUVFBIZWFkZXJOYW1lID09IEhUVFBIZWFk
ZXJOYW1lOjpMYXN0RXZlbnRJRCAmJiAhaGVhZGVyLnZhbHVlLmlzQWxsQVNDSUkoKSkgewogICAg
ICAgICBhdXRvIHV0ZjhWYWx1ZSA9IGhlYWRlci52YWx1ZS51dGY4KCk7CiAgICAgICAgIC8vIENv
bnN0cnVjdGluZyBhIHN0cmluZyB3aXRoIHRoZSBVVEYtOCBieXRlcyBidXQgY2xhaW1pbmcgdGhh
dCBpdOKAmXMgTGF0aW4tMSBpcyB0aGUgd2F5IHRvIGdldCBDRk5ldHdvcmsgdG8gcHV0IHRob3Nl
IFVURi04IGJ5dGVzIG9uIHRoZSB3aXJlLgotICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1dGY4VmFsdWUuZGF0YUFzVUludDhQdHIoKSwgdXRm
OFZhbHVlLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoZmFzdE1hbGxvY0NG
QWxsb2NhdG9yKCksIHV0ZjhWYWx1ZS5kYXRhQXNVSW50OFB0cigpLCB1dGY4VmFsdWUubGVuZ3Ro
KCksIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOwogICAgIH0KICAgICByZXR1
cm4gaGVhZGVyLnZhbHVlLmNyZWF0ZUNGU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDRk5ldC5jcHAKaW5kZXggMzExYWVmMmQ4MGZlNzMzNmNkOGU1MTEzYzM5ZDk1MGRiOGY0
Mzk0Yy4uYmMzZjliMGYyMWNmZTNiOWU0YTQwOWM3YzllNDlhNGYxMDYxNWY0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcApAQCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyB2
b2lkIHNldENPTk5FQ1RQcm94eUZvclN0cmVhbShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0
cmluZ1JlZiBwcm94eUhvCiB7CiAgICAgY29uc3Qgdm9pZCogcHJveHlLZXlzW10gPSB7IGtDRlN0
cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5SG9zdCwga0NGU3RyZWFtUHJvcGVydHlDT05ORUNUUHJv
eHlQb3J0IH07CiAgICAgY29uc3Qgdm9pZCogcHJveHlWYWx1ZXNbXSA9IHsgcHJveHlIb3N0LCBw
cm94eVBvcnQgfTsKLSAgICBhdXRvIGNvbm5lY3REaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rp
b25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJveHlLZXlzLCBwcm94eVZhbHVlcywg
c2l6ZW9mKHByb3h5S2V5cykgLyBzaXplb2YoKnByb3h5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBh
dXRvIGNvbm5lY3REaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIHByb3h5S2V5cywgcHJveHlWYWx1ZXMsIHNpemVvZihwcm94eUtl
eXMpIC8gc2l6ZW9mKCpwcm94eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgQ0ZSZWFkU3RyZWFtU2V0
UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSwgY29ubmVjdERp
Y3Rpb25hcnkuZ2V0KCkpOwogfQogCkBAIC0zMjEsOSArMzIxLDkgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGhvc3QgPSBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIENyZWF0aW5n
IHN0cmVhbXMgdG8gZmluYWwgZGVzdGluYXRpb24sIG5vdCB0byBwcm94eS4KLSAgICBDRlJlYWRT
dHJlYW1SZWYgcmVhZFN0cmVhbSA9IDA7Ci0gICAgQ0ZXcml0ZVN0cmVhbVJlZiB3cml0ZVN0cmVh
bSA9IDA7Ci0gICAgQ0ZTdHJlYW1DcmVhdGVQYWlyV2l0aFNvY2tldFRvSG9zdCgwLCBob3N0Lmdl
dCgpLCBwb3J0KCksICZyZWFkU3RyZWFtLCAmd3JpdGVTdHJlYW0pOworICAgIENGUmVhZFN0cmVh
bVJlZiByZWFkU3RyZWFtID0gbnVsbHB0cjsKKyAgICBDRldyaXRlU3RyZWFtUmVmIHdyaXRlU3Ry
ZWFtID0gbnVsbHB0cjsKKyAgICBDRlN0cmVhbUNyZWF0ZVBhaXJXaXRoU29ja2V0VG9Ib3N0KGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCBob3N0LmdldCgpLCBwb3J0KCksICZyZWFkU3RyZWFtLCAm
d3JpdGVTdHJlYW0pOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS8xMjg1NTU4Nz4gX2tDRlN0cmVhbVNvY2tldFNldE5vRGVsYXkgaXMgbm90IGV4cG9ydGVkIG9u
IFdpbmRvd3MKICAgICBDRldyaXRlU3RyZWFtU2V0UHJvcGVydHkod3JpdGVTdHJlYW0sIF9rQ0ZT
dHJlYW1Tb2NrZXRTZXROb0RlbGF5LCBrQ0ZCb29sZWFuVHJ1ZSk7CkBAIC0zNDcsNyArMzQ3LDcg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkKICAgICAgICAg
Ly8gQnV0IFNPQ0tTNSBjcmVkZW50aWFscyBkb24ndCB3b3JrIGF0IHRoZSB0aW1lIG9mIHRoaXMg
d3JpdGluZyBhbnl3YXksIHNlZSA8cmRhcjovLzY3NzY2OTg+LgogICAgICAgICBjb25zdCB2b2lk
KiBwcm94eUtleXNbXSA9IHsga0NGU3RyZWFtUHJvcGVydHlTT0NLU1Byb3h5SG9zdCwga0NGU3Ry
ZWFtUHJvcGVydHlTT0NLU1Byb3h5UG9ydCB9OwogICAgICAgICBjb25zdCB2b2lkKiBwcm94eVZh
bHVlc1tdID0geyBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkgfTsKLSAgICAg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdERpY3Rpb25hcnkgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZSgwLCBwcm94eUtleXMsIHByb3h5VmFsdWVzLCBXVEZfQVJSQVlf
TEVOR1RIKHByb3h5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAgICAgYXV0byBjb25uZWN0RGljdGlv
bmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCBwcm94eUtleXMsIHByb3h5VmFsdWVzLCBzdGQ6OnNpemUocHJveHlLZXlzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwogICAgICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShtX3JlYWRTdHJlYW0uZ2V0KCksIGtD
RlN0cmVhbVByb3BlcnR5U09DS1NQcm94eSwgY29ubmVjdERpY3Rpb25hcnkuZ2V0KCkpOwogICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWFtcygpCiAjZW5kaWYKICAgICAgICAgICAgIHZhbGlk
YXRlQ2VydGlmaWNhdGVDaGFpbgogICAgICAgICB9OwotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBzZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIGtleXMs
IHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgICAgICBhdXRv
IHNldHRpbmdzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2Nh
dG9yKCksIGtleXMsIHZhbHVlcywgc3RkOjpzaXplKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgICAg
IENGUmVhZFN0cmVhbVNldFByb3BlcnR5KG1fcmVhZFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJv
cGVydHlTU0xTZXR0aW5ncywgc2V0dGluZ3MuZ2V0KCkpOwogICAgICAgICBDRldyaXRlU3RyZWFt
U2V0UHJvcGVydHkobV93cml0ZVN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJvcGVydHlTU0xTZXR0
aW5ncywgc2V0dGluZ3MuZ2V0KCkpOwogICAgIH0KQEAgLTQxNiwxMSArNDE2LDExIEBAIHN0YXRp
YyBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBhdXRoZW50aWNhdGlvblNjaGVt
ZUZyb21BdXRoZW50aWNhdGlvCiBzdGF0aWMgdm9pZCBzZXRDT05ORUNUUHJveHlBdXRob3JpemF0
aW9uRm9yU3RyZWFtKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyaW5nUmVmIHByb3h5QXV0
aG9yaXphdGlvblN0cmluZykKIHsKICAgICBhdXRvIG9yaWdpbmFsQ09OTkVDVERpY3Rpb25hcnkg
PSBhZG9wdENGKChDRkRpY3Rpb25hcnlSZWYpQ0ZSZWFkU3RyZWFtQ29weVByb3BlcnR5KHN0cmVh
bSwga0NGU3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHkpKTsKLSAgICBhdXRvIGNvbm5lY3REaWN0
aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBvcmlnaW5hbENPTk5FQ1REaWN0aW9uYXJ5LmdldCgpKSk7CisgICAgYXV0
byBjb25uZWN0RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNv
cHkoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsIG9yaWdpbmFsQ09OTkVDVERpY3Rpb25hcnku
Z2V0KCkpKTsKIAogICAgIGNvbnN0IHZvaWQqIGhlYWRlckZpZWxkTmFtZXNbXSA9IHsgQ0ZTVFIo
IlByb3h5LUF1dGhvcml6YXRpb24iKSB9OwogICAgIGNvbnN0IHZvaWQqIGhlYWRlckZpZWxkVmFs
dWVzW10gPSB7IHByb3h5QXV0aG9yaXphdGlvblN0cmluZyB9OwotICAgIGF1dG8gYWRkaXRpb25h
bEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGhlYWRlckZpZWxkTmFtZXMsIGhlYWRlckZpZWxkVmFsdWVzLCBzaXplb2YoaGVhZGVy
RmllbGROYW1lcykgLyBzaXplb2YoKmhlYWRlckZpZWxkVmFsdWVzKSwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAg
IGF1dG8gYWRkaXRpb25hbEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBoZWFkZXJGaWVsZE5hbWVzLCBoZWFkZXJGaWVsZFZh
bHVlcywgc2l6ZW9mKGhlYWRlckZpZWxkTmFtZXMpIC8gc2l6ZW9mKCpoZWFkZXJGaWVsZFZhbHVl
cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpKTsKIAogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvbm5lY3REaWN0aW9u
YXJ5LmdldCgpLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RBZGRpdGlvbmFsSGVhZGVycywgYWRk
aXRpb25hbEhlYWRlckZpZWxkcy5nZXQoKSk7CiAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHko
c3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSwgY29ubmVjdERpY3Rpb25hcnku
Z2V0KCkpOwpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyB2b2lkIHNldENPTk5FQ1RQcm94eUF1
dGhvcml6YXRpb25Gb3JTdHJlYW0oQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJpCiAKIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1l
c3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQXV0aGVudGlj
YXRpb25SZWY+IGF1dGhlbnRpY2F0aW9uID0gYWRvcHRDRihDRkhUVFBBdXRoZW50aWNhdGlvbkNy
ZWF0ZUZyb21SZXNwb25zZSgwLCBwcm94eVJlc3BvbnNlKSk7CisgICAgYXV0byBhdXRoZW50aWNh
dGlvbiA9IGFkb3B0Q0YoQ0ZIVFRQQXV0aGVudGljYXRpb25DcmVhdGVGcm9tUmVzcG9uc2UoZmFz
dE1hbGxvY0NGQWxsb2NhdG9yKCksIHByb3h5UmVzcG9uc2UpKTsKIAogICAgIGlmICghQ0ZIVFRQ
QXV0aGVudGljYXRpb25SZXF1aXJlc1VzZXJOYW1lQW5kUGFzc3dvcmQoYXV0aGVudGljYXRpb24u
Z2V0KCkpKSB7CiAgICAgICAgIC8vIFRoYXQncyBhbGwgd2UgY2FuIG9mZmVyLi4uCkBAIC00NTMs
MTIgKzQ1MywxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVk
ZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogICAgIGlmICghbV9zZW50U3Rv
cmVkQ3JlZGVudGlhbHMgJiYgZ2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMocHJvdGVj
dGlvblNwYWNlLCBsb2dpbiwgcGFzc3dvcmQpKSB7CiAgICAgICAgIC8vIFRyeSB0byBhcHBseSBz
dG9yZWQgY3JlZGVudGlhbHMsIGlmIHdlIGhhdmVuJ3QgdHJpZWQgdGhvc2UgYWxyZWFkeS4KICAg
ICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBw
bHkgY3JlZGVudGlhbHMgdG8gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0
aCBOVExNIGF1dGhlbnRpY2F0aW9uLgotICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJl
Zj4gZHVtbXlSZXF1ZXN0ID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ3JlYXRlUmVxdWVzdCgwLCBD
RlNUUigiR0VUIiksIG1faHR0cHNVUkwuZ2V0KCksIGtDRkhUVFBWZXJzaW9uMV8xKSk7CisgICAg
ICAgIGF1dG8gZHVtbXlSZXF1ZXN0ID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ3JlYXRlUmVxdWVz
dChmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgQ0ZTVFIoIkdFVCIpLCBtX2h0dHBzVVJMLmdldCgp
LCBrQ0ZIVFRQVmVyc2lvbjFfMSkpOwogCiAgICAgICAgIEJvb2xlYW4gYXBwbGllZENyZWRlbnRp
YWxzID0gQ0ZIVFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlhbHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBh
dXRoZW50aWNhdGlvbi5nZXQoKSwgbG9naW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGFzc3dv
cmQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYXBw
bGllZENyZWRlbnRpYWxzLCBhcHBsaWVkQ3JlZGVudGlhbHMpOwogCi0gICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcHJveHlBdXRob3JpemF0aW9uU3RyaW5nID0gYWRvcHRDRihDRkhUVFBN
ZXNzYWdlQ29weUhlYWRlckZpZWxkVmFsdWUoZHVtbXlSZXF1ZXN0LmdldCgpLCBDRlNUUigiUHJv
eHktQXV0aG9yaXphdGlvbiIpKSk7CisgICAgICAgIGF1dG8gcHJveHlBdXRob3JpemF0aW9uU3Ry
aW5nID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weUhlYWRlckZpZWxkVmFsdWUoZHVtbXlSZXF1
ZXN0LmdldCgpLCBDRlNUUigiUHJveHktQXV0aG9yaXphdGlvbiIpKSk7CiAKICAgICAgICAgaWYg
KCFwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpIHsKICAgICAgICAgICAgIC8vIEZhaWxzIGUuZy4g
Zm9yIE5UTE0gYXV0aC4KQEAgLTUzNCw4ICs1MzQsOCBAQCBzdGF0aWMgUmV0YWluUHRyPENGSFRU
UE1lc3NhZ2VSZWY+IGNvcHlDT05ORUNUUHJveHlSZXNwb25zZShDRlJlYWRTdHJlYW1SZWYgc3Ry
ZQogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRGl0dG8gZm9yIHByb3h5IFVS
TC4KLSAgICBhdXRvIHByb3h5VVJMU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhG
b3JtYXQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgQ0ZTVFIoImh0dHBzOi8vJUA6JUAi
KSwgcHJveHlIb3N0LCBwcm94eVBvcnQpKTsKLSAgICBhdXRvIHByb3h5VVJMID0gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJveHlVUkxTdHJpbmcu
Z2V0KCksIG51bGxwdHIpKTsKKyAgICBhdXRvIHByb3h5VVJMU3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhGb3JtYXQoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIG51bGxwdHIsIENG
U1RSKCJodHRwczovLyVAOiVAIiksIHByb3h5SG9zdCwgcHJveHlQb3J0KSk7CisgICAgYXV0byBw
cm94eVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpLCBwcm94eVVSTFN0cmluZy5nZXQoKSwgbnVsbHB0cikpOwogICAgIHNldFJlc3BvbnNl
UHJveHlVUkwobWVzc2FnZS5nZXQoKSwgcHJveHlVUkwuZ2V0KCkpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0ocHJveHlIb3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1t
CmluZGV4IGIyOGViYmRkZWE0ZmJhMDBhMzIxZDE4ZDIwYmVmNDViZDAzOTJhYzcuLmZlYjRiMzRk
NzE1Nzc0ZjkzMTczZTgxNjhkZmQxY2QwY2QxNjA0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Db2NvYS5tbQpAQCAtMTc1LDggKzE3NSw4IEBAIFJldGFpblB0cjxDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRl
bnRpCiB7CiAgICAgY29uc3Qgdm9pZCogc2Vzc2lvblByb3BlcnR5S2V5c1tdID0geyBfa0NGVVJM
U3RvcmFnZVNlc3Npb25Jc1ByaXZhdGUgfTsKICAgICBjb25zdCB2b2lkKiBzZXNzaW9uUHJvcGVy
dHlWYWx1ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsKLSAgICBhdXRvIHNlc3Npb25Qcm9wZXJ0
aWVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vz
c2lvblByb3BlcnR5S2V5cywgc2Vzc2lvblByb3BlcnR5VmFsdWVzLCBzaXplb2Yoc2Vzc2lvblBy
b3BlcnR5S2V5cykgLyBzaXplb2YoKnNlc3Npb25Qcm9wZXJ0eUtleXMpLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0g
ICAgYXV0byBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25DcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaWRlbnRpZmllciwgc2Vzc2lvblByb3BlcnRpZXMuZ2V0
KCkpKTsKKyAgICBhdXRvIHNlc3Npb25Qcm9wZXJ0aWVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHNlc3Npb25Qcm9wZXJ0eUtleXMsIHNlc3Np
b25Qcm9wZXJ0eVZhbHVlcywgc2l6ZW9mKHNlc3Npb25Qcm9wZXJ0eUtleXMpIC8gc2l6ZW9mKCpz
ZXNzaW9uUHJvcGVydHlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gc3RvcmFnZVNlc3Npb24g
PSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRv
cigpLCBpZGVudGlmaWVyLCBzZXNzaW9uUHJvcGVydGllcy5nZXQoKSkpOwogCiAgICAgaWYgKCFz
dG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODgsMTQgKzE4OCwx
NCBAQCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aQogICAgIC8vIFRoaXMgY291bGQgb2NjdXIgaWYg
dGhlcmUgaXMgYW4gaXNzdWUgZmlndXJpbmcgb3V0IHdoZXJlIHRvIHBsYWNlIGEgc3RvcmFnZSBv
biBkaXNrIChlLmcuIHRoZQogICAgIC8vIHNhbmRib3ggZG9lcyBub3QgYWxsb3cgQ0ZOZXR3b3Jr
IGFjY2VzcykuCiAKLSAgICBhdXRvIGNhY2hlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lv
bkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwor
ICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGZh
c3RNYWxsb2NDRkFsbG9jYXRvcigpLCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIGlmICgh
Y2FjaGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQ0ZVUkxDYWNoZVNldERpc2tD
YXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNob3Vs
ZCBub3QgYmUgbmVjZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhl
ZC4KICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxD
YWNoZSBzaGFyZWRVUkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGF1dG8gY29va2ll
U3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOworICAgIGF1dG8gY29v
a2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFn
ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBp
ZiAoIWNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0zMDQsNyAr
MzA0LDcgQEAgUmV0YWluUHRyPE5TQXJyYXk+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENv
b2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVIKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1By
aXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5N
ZW1vcnlDb29raWVTdG9yZSk7CiAgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7Ci0gICAgICAgIGNvb2tpZVN0
b3JhZ2UgPSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVs
dCk7CisgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1
bHQoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBTdG9w
IGNyZWF0aW5nIGEgbmV3IE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2JqZWN0IGVhY2ggdGltZSB3ZSB3
YW50IHRvIHF1ZXJ5IHRoZSBjb29raWUgamFyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5k
ZXggYTdmYjQ5MjlkMTZjODk1NjI2MzVmMDAzNzMxODEzZjE4NWYzZGI0MS4uYmYyYzZmMDBiOWZl
ZjA3MTU0YmVjYWJmM2M4MzNkYzNjYTBiOWU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
CkBAIC0yNzcsNyArMjc3LDcgQEAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gY29weVJlcXVlc3RX
aXRoU3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG8KICAgICBpZiAoIXN0
b3JhZ2VTZXNzaW9uIHx8ICFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gYWRvcHROUyhbcmVxdWVz
dCBjb3B5XSk7CiAKLSAgICBhdXRvIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3Jl
YXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgW3JlcXVlc3QgX0NGVVJMUmVxdWVz
dF0pKTsKKyAgICBhdXRvIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0
YWJsZUNvcHkoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIFtyZXF1ZXN0IF9DRlVSTFJlcXVlc3Rd
KSk7CiAgICAgX0NGVVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdC5nZXQoKSwg
c3RvcmFnZVNlc3Npb24pOwogICAgIHJldHVybiBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9j
XSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6Y2ZSZXF1ZXN0LmdldCgpXSk7CiB9CkBAIC0yODcsNyAr
Mjg3LDcgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3MKICAgICBpZiAoIXN0b3JhZ2VTZXNzaW9u
KQogICAgICAgICByZXR1cm4gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNw
b25zZUZvclJlcXVlc3Q6cmVxdWVzdF07CiAKLSAgICBhdXRvIGNhY2hlID0gYWRvcHRDRihfQ0ZV
UkxTdG9yYWdlU2Vzc2lvbkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vz
c2lvbikpOworICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29w
eUNhY2hlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBzdG9yYWdlU2Vzc2lvbikpOwogICAgIGF1
dG8gY2FjaGVkUmVzcG9uc2UgPSBhZG9wdENGKENGVVJMQ2FjaGVDb3B5UmVzcG9uc2VGb3JSZXF1
ZXN0KGNhY2hlLmdldCgpLCBbcmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkpOwogICAgIGlmICghY2Fj
aGVkUmVzcG9uc2UpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1h
Yy5jcHAKaW5kZXggZGQ5N2NlYTRkODljZDdkYjAwYjY0NDA0MDVjMWUwM2VjNzg4ZDI4Ni4uMmVi
YTQwNzRmYTE4OGQ3Y2I3ZTJlNWM4ZDllNzE5MTExZTQ4YjUyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL05ldHdvcmtTdGF0ZU5v
dGlmaWVyTWFjLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OnVwZGF0ZVN0YXRlV2l0aG91dE5vdGlmeWluZygpCiB7
Ci0gICAgYXV0byBrZXkgPSBhZG9wdENGKFNDRHluYW1pY1N0b3JlS2V5Q3JlYXRlTmV0d29ya0lu
dGVyZmFjZSgwLCBrU0NEeW5hbWljU3RvcmVEb21haW5TdGF0ZSkpOworICAgIGF1dG8ga2V5ID0g
YWRvcHRDRihTQ0R5bmFtaWNTdG9yZUtleUNyZWF0ZU5ldHdvcmtJbnRlcmZhY2UoZmFzdE1hbGxv
Y0NGQWxsb2NhdG9yKCksIGtTQ0R5bmFtaWNTdG9yZURvbWFpblN0YXRlKSk7CiAgICAgYXV0byBw
cm9wZXJ0eUxpc3QgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihhZG9wdENGKFND
RHluYW1pY1N0b3JlQ29weVZhbHVlKG1fc3RvcmUuZ2V0KCksIGtleS5nZXQoKSkpKTsKICAgICBp
ZiAoIXByb3BlcnR5TGlzdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjEsNyArNjEsNyBAQCB2b2lk
IE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKQogICAg
ICAgICBpZiAoQ0ZTdHJpbmdIYXNQcmVmaXgoaW50ZXJmYWNlTmFtZSwgQ0ZTVFIoInZtbmV0Iikp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBrZXkgPSBhZG9wdENGKFND
RHluYW1pY1N0b3JlS2V5Q3JlYXRlTmV0d29ya0ludGVyZmFjZUVudGl0eSgwLCBrU0NEeW5hbWlj
U3RvcmVEb21haW5TdGF0ZSwgaW50ZXJmYWNlTmFtZSwga1NDRW50TmV0SVB2NCkpOworICAgICAg
ICBhdXRvIGtleSA9IGFkb3B0Q0YoU0NEeW5hbWljU3RvcmVLZXlDcmVhdGVOZXR3b3JrSW50ZXJm
YWNlRW50aXR5KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrU0NEeW5hbWljU3RvcmVEb21haW5T
dGF0ZSwgaW50ZXJmYWNlTmFtZSwga1NDRW50TmV0SVB2NCkpOwogICAgICAgICBpZiAoYXV0byB2
YWx1ZSA9IGFkb3B0Q0YoU0NEeW5hbWljU3RvcmVDb3B5VmFsdWUobV9zdG9yZS5nZXQoKSwga2V5
LmdldCgpKSkpIHsKICAgICAgICAgICAgIG1faXNPbkxpbmUgPSB0cnVlOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtODEsMTggKzgxLDIwIEBAIHZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OnN0
YXJ0T2JzZXJ2aW5nKCkKICAgICBpZiAoIW1fc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gc291cmNlID0gYWRvcHRDRihTQ0R5bmFtaWNTdG9yZUNyZWF0ZVJ1bkxvb3BTb3VyY2Uo
MCwgbV9zdG9yZS5nZXQoKSwgMCkpOworICAgIGF1dG8gc291cmNlID0gYWRvcHRDRihTQ0R5bmFt
aWNTdG9yZUNyZWF0ZVJ1bkxvb3BTb3VyY2UoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIG1fc3Rv
cmUuZ2V0KCksIDApKTsKICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Q0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9vcEdldE1haW4oKSwgc291cmNlLmdldCgpLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOwogCi0gICAgYXV0byBrZXlzID0gYWRvcHRDRihDRkFycmF5Q3Jl
YXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGtleXMuZ2V0KCksIGFkb3B0Q0YoU0NEeW5hbWljU3RvcmVLZXlDcmVhdGVOZXR3
b3JrR2xvYmFsRW50aXR5KDAsIGtTQ0R5bmFtaWNTdG9yZURvbWFpblN0YXRlLCBrU0NFbnROZXRJ
UHY0KSkuZ2V0KCkpOwotICAgIENGQXJyYXlBcHBlbmRWYWx1ZShrZXlzLmdldCgpLCBhZG9wdENG
KFNDRHluYW1pY1N0b3JlS2V5Q3JlYXRlTmV0d29ya0dsb2JhbEVudGl0eSgwLCBrU0NEeW5hbWlj
U3RvcmVEb21haW5TdGF0ZSwga1NDRW50TmV0RE5TKSkuZ2V0KCkpOworICAgIGF1dG8gYWxsb2Nh
dG9yID0gZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCk7CiAKLSAgICBhdXRvIHBhdHRlcm5zID0gYWRv
cHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7
Ci0gICAgQ0ZBcnJheUFwcGVuZFZhbHVlKHBhdHRlcm5zLmdldCgpLCBhZG9wdENGKFNDRHluYW1p
Y1N0b3JlS2V5Q3JlYXRlTmV0d29ya0ludGVyZmFjZUVudGl0eSgwLCBrU0NEeW5hbWljU3RvcmVE
b21haW5TdGF0ZSwga1NDQ29tcEFueVJlZ2V4LCBrU0NFbnROZXRJUHY0KSkuZ2V0KCkpOworICAg
IGF1dG8ga2V5cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoYWxsb2NhdG9yLCAwLCAm
a0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGtleXMuZ2V0
KCksIGFkb3B0Q0YoU0NEeW5hbWljU3RvcmVLZXlDcmVhdGVOZXR3b3JrR2xvYmFsRW50aXR5KGFs
bG9jYXRvciwga1NDRHluYW1pY1N0b3JlRG9tYWluU3RhdGUsIGtTQ0VudE5ldElQdjQpKS5nZXQo
KSk7CisgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGtleXMuZ2V0KCksIGFkb3B0Q0YoU0NEeW5hbWlj
U3RvcmVLZXlDcmVhdGVOZXR3b3JrR2xvYmFsRW50aXR5KGFsbG9jYXRvciwga1NDRHluYW1pY1N0
b3JlRG9tYWluU3RhdGUsIGtTQ0VudE5ldEROUykpLmdldCgpKTsKKworICAgIGF1dG8gcGF0dGVy
bnMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGFsbG9jYXRvciwgMCwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOworICAgIENGQXJyYXlBcHBlbmRWYWx1ZShwYXR0ZXJucy5nZXQoKSwg
YWRvcHRDRihTQ0R5bmFtaWNTdG9yZUtleUNyZWF0ZU5ldHdvcmtJbnRlcmZhY2VFbnRpdHkoYWxs
b2NhdG9yLCBrU0NEeW5hbWljU3RvcmVEb21haW5TdGF0ZSwga1NDQ29tcEFueVJlZ2V4LCBrU0NF
bnROZXRJUHY0KSkuZ2V0KCkpOwogCiAgICAgU0NEeW5hbWljU3RvcmVTZXROb3RpZmljYXRpb25L
ZXlzKG1fc3RvcmUuZ2V0KCksIGtleXMuZ2V0KCksIHBhdHRlcm5zLmdldCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4
IDY2Njk2ZTRiNzQwMzU4YzI1ZjIyY2JiYWVkYjAxODVlNGFlNGY4M2MuLjA3YWQzMmU3MzllODIy
NjRkNWMwMDI0OWUxM2ZiZTg2MWUwZTU3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAtNTMsMTMgKzUzLDEzIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIC8vIENGIGh5cGhlbmF0aW9uIGZ1bmN0aW9ucyB1c2UgbG9jYWxl
IChyZWdpb25hbCBmb3JtYXRzKSBsYW5ndWFnZSwgd2hpY2ggZG9lc24ndCBuZWNlc3NhcmlseSBt
YXRjaCBwcmltYXJ5IFVJIGxhbmd1YWdlLAogICAgICAgICAvLyBzbyB3ZSBjYW4ndCB1c2UgZGVm
YXVsdCBsb2NhbGUgaGVyZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNDg5NzY2ND4uCi0gICAgICAg
IFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBkZWZhdWx0TGFuZ3VhZ2UoKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKSk7CisgICAgICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihD
RkxvY2FsZUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgZGVmYXVsdExhbmd1YWdlKCku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgICAgICByZXR1cm4gQ0ZTdHJpbmdJc0h5cGhl
bmF0aW9uQXZhaWxhYmxlRm9yTG9jYWxlKGxvY2FsZS5nZXQoKSkgPyBsb2NhbGUgOiBudWxscHRy
OwogICAgIH0KIAogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGNyZWF0ZVZhbHVl
Rm9yS2V5KGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiAgICAgewotICAgICAg
ICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxlSWRlbnRpZmllci5zdHJpbmcoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKSk7CisgICAgICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0g
YWRvcHRDRihDRkxvY2FsZUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbG9jYWxlSWRl
bnRpZmllci5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiAKICAgICAgICAgcmV0
dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkp
ID8gbG9jYWxlIDogbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCmluZGV4IGUxOTQwMDk1MTdkYTI3YWYzMTIz
YWZhMDZkNGI3YTFmYzUyYzU1MmUuLjUyMmM4YTg1Njc5MmM1YzIxMDcxNzcyYzdmNThkMGMwMmM2
MWY4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRC
b3VuZGFyaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRC
b3VuZGFyaWVzLm1tCkBAIC03Myw4ICs3Myw4IEBAIHN0YXRpYyBDRlN0cmluZ1Rva2VuaXplclJl
ZiB0b2tlbml6ZXJGb3JTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogewogICAgIHN0YXRpYyBhdXRv
IGxvY2FsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGxv
Y2FsSUQgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKLSAgICAgICAgYXV0byBjdXJyZW50
TG9jYWxlSUQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9j
YXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihsb2NhbElEKSwgc3Ry
bGVuKGxvY2FsSUQpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxsb2NhdG9y
TnVsbCkpOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBjdXJyZW50TG9jYWxlSUQuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBjdXJyZW50
TG9jYWxlSUQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obG9jYWxJRCks
IHN0cmxlbihsb2NhbElEKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFsc2UsIGtDRkFsbG9j
YXRvck51bGwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUoZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIGN1cnJlbnRMb2NhbGVJRC5nZXQoKSkpOwogICAgIH0oKSk7CiAK
ICAgICBpZiAoIWxvY2FsZS5nZXQoKSkKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIENGU3RyaW5n
VG9rZW5pemVyUmVmIHRva2VuaXplckZvclN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiAKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGU3RyaW5nVG9rZW5pemVyUmVmPj4gdG9r
ZW5pemVyOwogICAgIGlmICghdG9rZW5pemVyLmdldCgpKQotICAgICAgICB0b2tlbml6ZXIuZ2V0
KCkgPSBhZG9wdENGKENGU3RyaW5nVG9rZW5pemVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHN0ciwgZW50aXJlUmFuZ2UsIGtDRlN0cmluZ1Rva2VuaXplclVuaXRXb3JkQm91bmRhcnksIGxv
Y2FsZS5nZXQoKS5nZXQoKSkpOworICAgICAgICB0b2tlbml6ZXIuZ2V0KCkgPSBhZG9wdENGKENG
U3RyaW5nVG9rZW5pemVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBzdHIsIGVudGly
ZVJhbmdlLCBrQ0ZTdHJpbmdUb2tlbml6ZXJVbml0V29yZEJvdW5kYXJ5LCBsb2NhbGUuZ2V0KCku
Z2V0KCkpKTsKICAgICBlbHNlCiAgICAgICAgIENGU3RyaW5nVG9rZW5pemVyU2V0U3RyaW5nKHRv
a2VuaXplci5nZXQoKS5nZXQoKSwgc3RyLCBlbnRpcmVSYW5nZSk7CiAgICAgcmV0dXJuIHRva2Vu
aXplci5nZXQoKS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQppbmRleCBhYTYwZjJlYjJjNDIzMmVjOTBmYTkzZmVhMGZlODA3MDYxYjM1OGMyLi44ZGU0
YjE5YWUwOTgwZDJjMjg5NjUyZDAwMGNhYTg1MjM5ZDQ4MDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgLSAoQ0ZEaWN0
aW9uYXJ5UmVmKV9hZGp1c3RlZENvcmVVSURyYXdPcHRpb25zRm9yRHJhd2luZ0JvcmRlcnNPbmx5
OihDRkRpY3Rpb25hcnkKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3Ig
PHJkYXI6Ly9wcm9ibGVtLzExMzg1NDYxPi4gV2hlbiB0aGF0IGJ1ZyBpcyByZXNvbHZlZCwgd2Ug
c2hvdWxkIHJlbW92ZSB0aGlzIGNvZGUsCiAgICAgLy8gYXMgd2VsbCBhcyB0aGUgaW50ZXJuYWwg
bWV0aG9kIG92ZXJyaWRlcyBiZWxvdy4KLSAgICBhdXRvIGNvcmVVSURyYXdPcHRpb25zID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBkZWZhdWx0T3B0aW9u
cykpOworICAgIGF1dG8gY29yZVVJRHJhd09wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNy
ZWF0ZU11dGFibGVDb3B5KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwLCBkZWZhdWx0T3B0aW9u
cykpOwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvcmVVSURyYXdPcHRpb25zLmdldCgpLCBD
RlNUUigiYm9yZGVycyBvbmx5IiksIGtDRkJvb2xlYW5UcnVlKTsKICAgICByZXR1cm4gY29yZVVJ
RHJhd09wdGlvbnMuYXV0b3JlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KaW5kZXggYmEyZjI5NTViZDYx
NWRmZDVlMTQzZjc2NDhmMmUwMGVkYmU5YTlhZC4uODM2NzAxOGY2OWEzMDNiNWMzMjg1N2I5MDBj
ZDkwZTA4YWUyZThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9X
ZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2Nv
YS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KQEAgLTUzLDE4ICs1MywxOCBAQCBzdGF0aWMgUmV0
YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VE
YXRhKENGRGF0YVJlZgogICAgIH0KIAogICAgIGlmICghW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6
W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBhZG9wdENGKENGVVJM
UmVzcG9uc2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9fYnJpZGdlIENGVVJMUmVmKXJl
c3BvbnNlLlVSTCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXJlc3BvbnNlLk1JTUVUeXBlLCByZXNw
b25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgsIChfX2JyaWRnZSBDRlN0cmluZ1JlZilyZXNwb25z
ZS50ZXh0RW5jb2RpbmdOYW1lLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CisgICAgICAg
IHJldHVybiBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9y
KCksIChfX2JyaWRnZSBDRlVSTFJlZilyZXNwb25zZS5VUkwsIChfX2JyaWRnZSBDRlN0cmluZ1Jl
ZilyZXNwb25zZS5NSU1FVHlwZSwgcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSwga0NGVVJMQ2FjaGVT
dG9yYWdlQWxsb3dlZCkpOwogCiAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9
IChOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwogCiAgICAgLy8gTlNVUkxSZXNwb25zZSBp
cyBub3QgdG9sbC1mcmVlIGJyaWRnZWQgdG8gQ0ZVUkxSZXNwb25zZS4KLSAgICBSZXRhaW5QdHI8
Q0ZIVFRQTWVzc2FnZVJlZj4gaHR0cE1lc3NhZ2UgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDcmVh
dGVSZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBodHRwUmVzcG9uc2Uuc3RhdHVzQ29kZSwg
bnVsbHB0ciwga0NGSFRUUFZlcnNpb24xXzEpKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2Fn
ZVJlZj4gaHR0cE1lc3NhZ2UgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDcmVhdGVSZXNwb25zZShm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgaHR0cFJlc3BvbnNlLnN0YXR1c0NvZGUsIG51bGxwdHIs
IGtDRkhUVFBWZXJzaW9uMV8xKSk7CiAKICAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9
IGh0dHBSZXNwb25zZS5hbGxIZWFkZXJGaWVsZHM7CiAgICAgZm9yIChOU1N0cmluZyAqaGVhZGVy
RmllbGQgaW4gW2hlYWRlckZpZWxkcyBrZXlFbnVtZXJhdG9yXSkKICAgICAgICAgQ0ZIVFRQTWVz
c2FnZVNldEhlYWRlckZpZWxkVmFsdWUoaHR0cE1lc3NhZ2UuZ2V0KCksIChfX2JyaWRnZSBDRlN0
cmluZ1JlZiloZWFkZXJGaWVsZCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKVtoZWFkZXJGaWVsZHMg
b2JqZWN0Rm9yS2V5OmhlYWRlckZpZWxkXSk7CiAKLSAgICByZXR1cm4gYWRvcHRDRihDRlVSTFJl
c3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlk
Z2UgQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCBodHRwTWVzc2FnZS5nZXQoKSwga0NGVVJMQ2FjaGVT
dG9yYWdlQWxsb3dlZCkpOworICAgIHJldHVybiBhZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGVX
aXRoSFRUUFJlc3BvbnNlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoX19icmlkZ2UgQ0ZVUkxS
ZWYpcmVzcG9uc2UuVVJMLCBodHRwTWVzc2FnZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxs
b3dlZCkpOwogfQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0TUlNRVR5cGUoQ0ZNdXRhYmxlU3RyaW5n
UmVmIG1pbWVUeXBlKQpAQCAtODksNyArODksNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0V2ViUmVz
b3VyY2VEYXRhVG9TdHJpbmcoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZXNvdXJjZSkKICAgICAg
ICAgICAgIHN0cmluZ0VuY29kaW5nID0ga0NGU3RyaW5nRW5jb2RpbmdVVEY4OwogCiAgICAgICAg
IENGRGF0YVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291cmNlRGF0YSIpKSk7Ci0gICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gZGF0YUFzU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUZy
b21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIHN0cmlu
Z0VuY29kaW5nKSk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGF0YUFzU3RyaW5n
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCBkYXRhLCBzdHJpbmdFbmNvZGluZykpOwogICAgICAgICBpZiAo
ZGF0YUFzU3RyaW5nKQogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzb3VyY2Us
IENGU1RSKCJXZWJSZXNvdXJjZURhdGEiKSwgZGF0YUFzU3RyaW5nLmdldCgpKTsKICAgICB9CkBA
IC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHZvaWQgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoQ0ZN
dXRhYmxlU3RyaW5nUmVmIHdlYlJlc291cmNlVVJMKQogICAgIGlmIChyZXBsYWNlbWVudEVuZCA9
PSBrQ0ZOb3RGb3VuZCkKICAgICAgICAgcmVwbGFjZW1lbnRFbmQgPSBDRlN0cmluZ0dldExlbmd0
aCh3ZWJSZXNvdXJjZVVSTCk7CiAKLSAgICBhdXRvIG9sZFJlc291cmNlVVJMID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgd2ViUmVzb3VyY2VVUkwpKTsK
KyAgICBhdXRvIG9sZFJlc291cmNlVVJMID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUNvcHkoZmFz
dE1hbGxvY0NGQWxsb2NhdG9yKCksIHdlYlJlc291cmNlVVJMKSk7CiAgICAgQ0ZTdHJpbmdSZXBs
YWNlKHdlYlJlc291cmNlVVJMLCBDRlJhbmdlTWFrZShxdWlja0xvb2tTY2hlbWVMZW5ndGgsIHJl
cGxhY2VtZW50RW5kIC0gcXVpY2tMb29rU2NoZW1lTGVuZ3RoKSwgQ0ZTVFIoInJlc291cmNlIikp
OwogICAgIHF1aWNrTG9va1VSTFJlcGxhY2VtZW50cygpLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihX
VEZNb3ZlKG9sZFJlc291cmNlVVJMKSwgd2ViUmVzb3VyY2VVUkwpKTsKICNlbmRpZgpAQCAtMTYw
LDEzICsxNjAsMTMgQEAgc3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0Rp
Y3Rpb25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBwcm9wZXIKICAgICBpZiAoIXJlc3BvbnNl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlc3BvbnNlRGljdGlvbmFyeSA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKSk7CisgICAgYXV0byByZXNwb25zZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAot
ICAgIGF1dG8gdXJsU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJMR2V0U3RyaW5nKENGVVJMUmVzcG9uc2VHZXRVUkwo
cmVzcG9uc2UuZ2V0KCkpKSkpOworICAgIGF1dG8gdXJsU3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZU11dGFibGVDb3B5KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwLCBDRlVSTEdldFN0
cmluZyhDRlVSTFJlc3BvbnNlR2V0VVJMKHJlc3BvbnNlLmdldCgpKSkpKTsKICAgICBub3JtYWxp
emVXZWJSZXNvdXJjZVVSTCh1cmxTdHJpbmcuZ2V0KCkpOwogICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIlVSTCIpLCB1cmxTdHJpbmcuZ2V0
KCkpOwogCi0gICAgYXV0byBtaW1lVHlwZVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVN
dXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5
cGUocmVzcG9uc2UuZ2V0KCkpKSk7CisgICAgYXV0byBtaW1lVHlwZVN0cmluZyA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgQ0ZV
UkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3BvbnNlLmdldCgpKSkpOwogICAgIGNvbnZlcnRNSU1F
VHlwZShtaW1lVHlwZVN0cmluZy5nZXQoKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVz
cG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiTUlNRVR5cGUiKSwgbWltZVR5cGVTdHJpbmcu
Z2V0KCkpOwogCkBAIC0xNzUsMTcgKzE3NSwxNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0V2ViUmVz
b3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeShDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb3Blcgog
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENG
U1RSKCJ0ZXh0RW5jb2RpbmdOYW1lIiksIHRleHRFbmNvZGluZ05hbWUpOwogCiAgICAgU0ludDY0
IGV4cGVjdGVkQ29udGVudExlbmd0aCA9IENGVVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRM
ZW5ndGgocmVzcG9uc2UuZ2V0KCkpOwotICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVt
YmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJTSW50NjRUeXBlLCAmZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSk7CisgICAgYXV0byBleHBlY3Rl
ZENvbnRlbnRMZW5ndGhOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2ND
RkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBD
RlNUUigiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiksIGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJl
ci5nZXQoKSk7CiAKICAgICBpZiAoQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJM
UmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpKSB7CiAgICAgICAgIGF1dG8g
YWxsSGVhZGVycyA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMoaHR0
cE1lc3NhZ2UpKTsKLSAgICAgICAgYXV0byBhbGxIZWFkZXJGaWVsZHMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGFsbEhlYWRl
cnMuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBhbGxIZWFkZXJGaWVsZHMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwLCBhbGxI
ZWFkZXJzLmdldCgpKSk7CiAgICAgICAgIG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRlckZpZWxk
cyhhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShy
ZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJhbGxIZWFkZXJGaWVsZHMiKSwgYWxsSGVh
ZGVyRmllbGRzLmdldCgpKTsKIAogICAgICAgICBDRkluZGV4IHN0YXR1c0NvZGUgPSBDRkhUVFBN
ZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKTsKLSAgICAgICAgYXV0byBz
dGF0dXNDb2RlTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnN0YXR1c0NvZGUpKTsKKyAgICAgICAgYXV0byBz
dGF0dXNDb2RlTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxv
Y2F0b3IoKSwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZzdGF0dXNDb2RlKSk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInN0YXR1
c0NvZGUiKSwgc3RhdHVzQ29kZU51bWJlci5nZXQoKSk7CiAgICAgfQogCkBAIC0yMDQsNyArMjA0
LDcgQEAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2
ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXQKIHsKICAgICBDRkVycm9yUmVmIGVycm9yID0g
MDsKICAgICBDRlByb3BlcnR5TGlzdEZvcm1hdCBmb3JtYXQgPSBrQ0ZQcm9wZXJ0eUxpc3RCaW5h
cnlGb3JtYXRfdjFfMDsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJv
cGVydHlMaXN0ID0gYWRvcHRDRihjaGVja2VkX2NmX2Nhc3Q8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3ZWJB
cmNoaXZlRGF0YSwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNBbmRMZWF2ZXMsICZm
b3JtYXQsICZlcnJvcikpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4g
cHJvcGVydHlMaXN0ID0gYWRvcHRDRihjaGVja2VkX2NmX2Nhc3Q8Q0ZNdXRhYmxlRGljdGlvbmFy
eVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3Io
KSwgd2ViQXJjaGl2ZURhdGEsIGtDRlByb3BlcnR5TGlzdE11dGFibGVDb250YWluZXJzQW5kTGVh
dmVzLCAmZm9ybWF0LCAmZXJyb3IpKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TGlzdCkgewogICAg
ICAgICBpZiAoZXJyb3IpCkBAIC0yMTIsNyArMjEyLDcgQEAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVE
YXQKICAgICAgICAgcmV0dXJuIENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZl
cnRpbmcgZGF0YSB0byBwcm9wZXJ0eSBsaXN0LiIpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxD
Rk11dGFibGVBcnJheVJlZj4gcmVzb3VyY2VzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAg
UmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiByZXNvdXJjZXMgPSBhZG9wdENGKENGQXJyYXlD
cmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7CiAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKHJlc291cmNlcy5nZXQoKSwgcHJvcGVy
dHlMaXN0LmdldCgpKTsKIAogICAgIHdoaWxlIChDRkFycmF5R2V0Q291bnQocmVzb3VyY2VzLmdl
dCgpKSkgewpAQCAtMjQ2LDcgKzI0Niw3IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRl
WE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0CiAKICAg
ICBlcnJvciA9IDA7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB4bWxEYXRhID0gYWRvcHRD
RihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJvcGVydHlM
aXN0LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMCwgMCwgJmVycm9yKSk7Cisg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4geG1sRGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RD
cmVhdGVEYXRhKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBwcm9wZXJ0eUxpc3QuZ2V0KCksIGtD
RlByb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wLCAwLCAmZXJyb3IpKTsKIAogICAgIGlmICgheG1s
RGF0YSkgewogICAgICAgICBpZiAoZXJyb3IpCkBAIC0yNTQsOCArMjU0LDggQEAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVm
IHdlYkFyY2hpdmVEYXQKICAgICAgICAgcmV0dXJuIENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9j
Y3VycmVkIGNvbnZlcnRpbmcgcHJvcGVydHkgbGlzdCB0byBkYXRhLiIpOwogICAgIH0KIAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4geG1sU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0
ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIHhtbERhdGEu
Z2V0KCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwotICAgIFJldGFpblB0cjxDRk11dGFibGVT
dHJpbmdSZWY+IHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCB4bWxTdHJpbmcuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHhtbFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgeG1sRGF0YS5nZXQoKSwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4KSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4g
c3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCAwLCB4bWxTdHJpbmcuZ2V0KCkpKTsKIAogICAgIC8vIFJlcGxhY2UgIkFwcGxl
IENvbXB1dGVyIiB3aXRoICJBcHBsZSIgaW4gdGhlIERURCBkZWNsYXJhdGlvbi4KICAgICBDRlN0
cmluZ0ZpbmRBbmRSZXBsYWNlKHN0cmluZy5nZXQoKSwgQ0ZTVFIoIi0vL0FwcGxlIENvbXB1dGVy
Ly8iKSwgQ0ZTVFIoIi0vL0FwcGxlLy8iKSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5n
dGgoc3RyaW5nLmdldCgpKSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1t
CmluZGV4IDk1YzI4MWE2YjE5N2Y2OWQ1ZGM2MDYwOTc5MTlmOWFmNGYzMTQwYmUuLjVkOWQzYmU3
NzRiN2FhYmY0ZjdlY2YzNDdiN2M3M2EyOWU2YzVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNh
dGlvbk92ZXJsYXkubW0KQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVy
bih2b2lkICpvdmVybGF5UHRyLCBDR0NvbnRleHRSZWYgY3R4KQogICAgICAgICAoaWQpa0NURm9u
dEF0dHJpYnV0ZU5hbWUgOiAoaWQpY3JlYXRlSWRlbnRpZmljYXRpb25Gb250KCkuZ2V0KCksCiAg
ICAgICAgIChpZClrQ1RGb3JlZ3JvdW5kQ29sb3JGcm9tQ29udGV4dEF0dHJpYnV0ZU5hbWUgOiBA
WUVTCiAgICAgfTsKLSAgICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmli
dXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpb3ZlcmxheS0+X2tpbmQuZ2V0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmli
dXRlcykpOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVk
U3RyaW5nQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpb3ZlcmxheS0+X2tpbmQuZ2V0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmli
dXRlcykpOwogICAgIGF1dG8gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0
ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwogCiAgICAgQ0dTaXplIHRleHRTaXpl
ID0gW292ZXJsYXktPl9raW5kIHNpemVXaXRoQXR0cmlidXRlczphdHRyaWJ1dGVzXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCBjMDc2ZGU0ZjhhMGFkMjliYjQy
NTczMzE4NTViMGM2OTcwMTVkODQ4Li4zY2Q5YTU4ZDJhNWExMzllM2FjNzFlYWQwZWMxMDg2Yzdl
YmU1YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBAIC0yNDMs
NyArMjQzLDcgQEAgdm9pZCBHUFVQcm9jZXNzOjppbml0aWFsaXplR1BVUHJvY2VzcyhHUFVQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogCiAjaWYgSEFWRShD
R0lNQUdFU09VUkNFX1dJVEhfU0VUX0FMTE9XQUJMRV9UWVBFUykKLSAgICBhdXRvIGVtcHR5QXJy
YXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwg
MCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIGF1dG8gZW1wdHlBcnJheSA9IGFkb3B0
Q0YoQ0ZBcnJheUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbnVsbHB0ciwgMCwgJmtD
RlR5cGVBcnJheUNhbGxCYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VTZXRBbGxvd2FibGVUeXBl
cyhlbXB0eUFycmF5LmdldCgpKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGJlMDAwNjZiYTAzMzUwY2U5NjU3OTVj
NThiYWZhNDEyYmM0OTU5MDcuLjkwYzgyYWQ5YmFlZTU4NDVmODAyODNmNDEyZTAwNmJjMTM1MTc4
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC00ODEsNyArNDgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6Om5ld1Rlc3RpbmdTZXNzaW8KICAgICBpZiAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkp
IHsKICAgICAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykpOwogICAgICAgICBpZiAoc2Vzc2lvbikKLSAgICAgICAgICAg
IGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0
b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQoKSkpOworICAgICAgICAgICAg
Y29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3Rv
cmFnZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgc2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Np
b25JRCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZWxpZiBV
U0UoQ1VSTCkgfHwgVVNFKFNPVVApCkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZW5zdXJlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgc2hvdWxk
VXNlVGVzdGkKICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29v
a2llQVBJKCkpIHsKICAgICAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogICAgICAgICBpZiAoIWNvb2tpZVN0b3Jh
Z2UgJiYgc3RvcmFnZVNlc3Npb24pCi0gICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRD
RihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CisgICAgICAgICAgICBjb29raWVTdG9yYWdlID0g
YWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGZhc3RNYWxsb2ND
RkFsbG9jYXRvcigpLCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAogICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4o
c2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKaW5kZXggZTE0Zjg3M2I3YzgxN2M3OTdl
YzRmM2I1NjgwYjIxMmUzY2Y2YjlmMS4uOWZjMzE1NjhkY2I2ODdmM2E2ODRlM2E5ZDc5ZTY5ZjQz
ODdhN2VlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApAQCAtODMsNyArODMsNyBA
QCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkKIAog
dm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KQogewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgbV9ob3N0
ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwg
YWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiAgICAgQ0ZIb3N0Q2xpZW50Q29udGV4
dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAgICAg
Q0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CiAg
ICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1
cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY2YvTW9kdWxlQ0YuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZi9N
b2R1bGVDRi5jcHAKaW5kZXggNmQwZWNmOTZkMDNiYTk5OGM5ZDNkM2Q4M2Q2YWVmOTg5ZDc0Zjc4
Yy4uYmUwNmIwM2FjY2I2Y2YwYTRjZmI1YzExMDIzZTJlMDdlZGY4OWM1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jZi9Nb2R1bGVDRi5jcHAKQEAgLTMwLDExICszMCwxMSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogYm9vbCBNb2R1bGU6OmxvYWQoKQogewotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9T
SVhQYXRoU3R5bGUsIEZBTFNFKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwg
PSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpLCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5
bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVVUkwpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoZmFzdE1hbGxv
Y0NGQWxsb2NhdG9yKCksIGJ1bmRsZVVSTC5nZXQoKSkpOwogICAgIGlmICghYnVuZGxlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCogTW9kdWxlOjpwbGF0
Zm9ybUZ1bmN0aW9uUG9pbnRlcihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2J1bmRsZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBmdW5jdGlvbk5hbWVTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENT
dHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZnVuY3Rpb25OYW1lLCBrQ0ZTdHJpbmdF
bmNvZGluZ0FTQ0lJLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBmdW5jdGlvbk5hbWVTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJp
bmdOb0NvcHkoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGZ1bmN0aW9uTmFtZSwga0NGU3RyaW5n
RW5jb2RpbmdBU0NJSSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIHJldHVybiBDRkJ1bmRsZUdl
dEZ1bmN0aW9uUG9pbnRlckZvck5hbWUobV9idW5kbGUuZ2V0KCksIGZ1bmN0aW9uTmFtZVN0cmlu
Zy5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3Np
Zmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xhc3NpZmllckNvY29hLmNwcAppbmRleCBkYTZiYmFlNGY1ZGNhZGJhYjA4ZmQ2ZWU0ZTk5
N2JlMzc4YWFlZmIzLi44MmVkNDQ0MzdiMTRkNWQ2N2ZhZTI1YmEzNzdlZDUzYzY1ZDEwYTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NsYXNzaWZpZXIvY29jb2EvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jbGFzc2lmaWVyL2NvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Q29jb2EuY3BwCkBAIC02NCw5ICs2NCw5IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Q2xhc3NpZmllckNvY29hOjpzdG9yYWdlUGF0aCgpCiB7CiAgICAgQ0ZCdW5kbGVSZWYgd2ViS2l0
QnVuZGxlID0gQ0ZCdW5kbGVHZXRCdW5kbGVXaXRoSWRlbnRpZmllcihDRlNUUigiY29tLmFwcGxl
LldlYktpdCIpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJlc291cmNlVXJsID0gYWRvcHRD
RihDRkJ1bmRsZUNvcHlSZXNvdXJjZXNEaXJlY3RvcnlVUkwod2ViS2l0QnVuZGxlKSk7Ci0gICAg
cmVzb3VyY2VVcmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQ29weUFwcGVuZGluZ1BhdGhDb21wb25l
bnQobnVsbHB0ciwgcmVzb3VyY2VVcmwuZ2V0KCksIENGU1RSKCJjb3JlUHJlZGljdGlvbl9tb2Rl
bCIpLCBmYWxzZSkpOworICAgIHJlc291cmNlVXJsID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCByZXNvdXJjZVVy
bC5nZXQoKSwgQ0ZTVFIoImNvcmVQcmVkaWN0aW9uX21vZGVsIiksIGZhbHNlKSk7CiAgICAgQ0ZF
cnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgcmVzb3VyY2VVcmwgPSBhZG9wdENGKENGVVJM
Q3JlYXRlRmlsZVBhdGhVUkwobnVsbHB0ciwgcmVzb3VyY2VVcmwuZ2V0KCksICZlcnJvcikpOwor
ICAgIHJlc291cmNlVXJsID0gYWRvcHRDRihDRlVSTENyZWF0ZUZpbGVQYXRoVVJMKGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpLCByZXNvdXJjZVVybC5nZXQoKSwgJmVycm9yKSk7CiAKICAgICBpZiAo
ZXJyb3IgfHwgIXJlc291cmNlVXJsKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KaW5kZXggNmUyZWU2ZTNi
MzBiNmZkNGNmOTA0MmI0OWJkYmU1ZGY3MmMxMDcxYy4uNGRiZWRkNDE1NDU2ZGZkOTA3NjU1YWFm
YzAwNmNjZjI2MGJjMWU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
U3RyaW5nVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmlu
Z1V0aWxpdGllcy5tbQpAQCAtNjEsNyArNjEsNyBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVO
dW1iZXJTdHJpbmcoTlNTdHJpbmcgKm9yaWdpbmFsUGhvbmVOdW1iZXIpCiB7CiAgICAgTlNTdHJp
bmcgKmNvdW50cnlDb2RlID0gW1tbTlNMb2NhbGUgY3VycmVudExvY2FsZV0gb2JqZWN0Rm9yS2V5
Ok5TTG9jYWxlQ291bnRyeUNvZGVdIGxvd2VyY2FzZVN0cmluZ107CiAKLSAgICBSZXRhaW5QdHI8
Q0ZQaG9uZU51bWJlclJlZj4gcGhvbmVOdW1iZXIgPSBhZG9wdENGKENGUGhvbmVOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKW9yaWdpbmFsUGhv
bmVOdW1iZXIsIChfX2JyaWRnZSBDRlN0cmluZ1JlZiljb3VudHJ5Q29kZSkpOworICAgIFJldGFp
blB0cjxDRlBob25lTnVtYmVyUmVmPiBwaG9uZU51bWJlciA9IGFkb3B0Q0YoQ0ZQaG9uZU51bWJl
ckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKW9y
aWdpbmFsUGhvbmVOdW1iZXIsIChfX2JyaWRnZSBDRlN0cmluZ1JlZiljb3VudHJ5Q29kZSkpOwog
ICAgIGlmICghcGhvbmVOdW1iZXIpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbFBob25lTnVtYmVy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9i
amVjdENvZGVyLm1tCmluZGV4IDM4ODhhOTEwZTY1ODQ2NWE1NmUxMDVlNDU0Y2QzNGFmODM1MTVl
MWYuLmMyYmM3ZTdlNTdjNTczYTMzMTE4YjQyYTRhYmVmNWZjMTk1OTMzNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1t
CkBAIC0zNzgsMTAgKzM3OCwxMCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRyYW5zZm9y
bURhdGFUb0NlcnRpZmljYXRlcyhOU0FycmF5ICppbnB1dCkKICAgICBmb3IgKE5TRGF0YSAqZGF0
YSBpbiBpbnB1dCkgewogICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoZGF0YSkgIT0gQ0ZEYXRhR2V0
VHlwZUlEKCkpCiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNo
aXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkVycm9yIGRlY29kaW5nIGNlcnRpZmljYXRl
IGZyb20gb2JqZWN0IHRoYXQgaXMgbm90IGRhdGEgJUAiLCBOU1N0cmluZ0Zyb21DbGFzcyhbZGF0
YSBjbGFzc10pXTsKLSAgICAgICAgYXV0byBjZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlm
aWNhdGVDcmVhdGVXaXRoRGF0YShudWxscHRyLCAoQ0ZEYXRhUmVmKWRhdGEpKTsKKyAgICAgICAg
YXV0byBjZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgYnJpZGdlX2Nhc3QoZGF0YSkpKTsKICAgICAgICAgaWYg
KCFjZXJ0aWZpY2F0ZSkKICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRV
bmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiRXJyb3IgZGVjb2RpbmcgbnZhbGlk
IGNlcnRpZmljYXRlIGluIGNoYWluIl07Ci0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6KGlkKWNl
cnRpZmljYXRlLmdldCgpXTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpicmlkZ2VfaWRfY2Fz
dChjZXJ0aWZpY2F0ZS5nZXQoKSldOwogICAgIH0KICAgICByZXR1cm4gYXJyYXk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQppbmRleCBjY2U4Mjc2NWFkOWIxNjk1
ZDkzYWI4N2E1OTM5YmUzNTk2MTcwNzdiLi4zZDQzODRjMWU0NzJiMzE5NTIwZjIwZGY3ZDBiYWI5
ZDQwY2I2Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VS
TENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KQEAg
LTY0LDUgKzY0LDUgQEAgQ0ZVUkxSZWYgV0tVUkxDb3B5Q0ZVUkwoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yUmVmLCBXS1VSTFJlZiBVUkxSZWYpCiAgICAgLy8gVVRGLTggd2hpY2ggdXNlcyBsZXNz
IG1lbW9yeSBhbmQgaXMgd2hhdCBXZWJLaXQgY2xpZW50cyBtaWdodCBleHBlY3QuCiAKICAgICBD
U3RyaW5nIGJ1ZmZlciA9IHN0cmluZy51dGY4KCk7Ci0gICAgcmV0dXJuIENGVVJMQ3JlYXRlQWJz
b2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZl
ci5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKTsKKyAgICBy
ZXR1cm4gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhmYXN0TWFsbG9jQ0ZBbGxvY2F0
b3IoKSwgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci5sZW5ndGgoKSwga0NGU3RyaW5n
RW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGlj
YXRpb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggMDlkZmY0MjI0ODRjNjQ1MmJiODUyYTkwNjUzMzFk
MDNkNDE4OTA1Ni4uZGNhOTY5NTliNTQzODI2MzU4N2U3ZDJlZjExMDExMGIyODY1ODBjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVu
dGljYXRpb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0LDYgKzM0
LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNYUENDb25uZWN0aW9uU1BJLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL1NlY0tleVByb3h5U1BJLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC04NiwxMSArODcsMTEgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICAg
ICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2Fw
YWNpdHk6dG90YWxdOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG90
YWw7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBhdXRvIGNlcnRpZmljYXRlRGF0YSA9IHhw
Y19hcnJheV9nZXRfdmFsdWUoY2VydGlmaWNhdGVEYXRhQXJyYXksIGkpOwotICAgICAgICAgICAg
ICAgICAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih4cGNfZGF0YV9nZXRfYnl0ZXNfcHRyKGNlcnRpZmlj
YXRlRGF0YSkpLCB4cGNfZGF0YV9nZXRfbGVuZ3RoKGNlcnRpZmljYXRlRGF0YSkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgYXV0byBjZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVD
cmVhdGVXaXRoRGF0YShudWxscHRyLCBjZkRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0
b3IoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHhwY19kYXRhX2dldF9ieXRlc19w
dHIoY2VydGlmaWNhdGVEYXRhKSksIHhwY19kYXRhX2dldF9sZW5ndGgoY2VydGlmaWNhdGVEYXRh
KSkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGNlcnRpZmljYXRlID0gYWRvcHRDRihTZWND
ZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBjZkRhdGEu
Z2V0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgW2NlcnRpZmljYXRl
cyBhZGRPYmplY3Q6KF9fYnJpZGdlIGlkKWNlcnRpZmljYXRlLmdldCgpXTsKKyAgICAgICAgICAg
ICAgICAgICAgW2NlcnRpZmljYXRlcyBhZGRPYmplY3Q6YnJpZGdlX2lkX2Nhc3QoY2VydGlmaWNh
dGUuZ2V0KCkpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDYx
Mjg0YjA0ZDExNmNmYjg3YTIzZDMwNjhhOGMyYzJiNTA5ZDY2MWIuLjhiY2Q0YTIwNTE2YWEwNTM1
YzhmNTZiMDVjMWVlODEyN2JhMGQzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMTIzLDcgKzEyMyw3IEBAIC0gKF9OdWxs
YWJsZSBpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAKICAgICBO
U1VJbnRlZ2VyIGxlbmd0aDsKICAgICBpZiAoYXV0byBieXRlcyA9IChVSW50OCAqKVtjb2RlciBk
ZWNvZGVCeXRlc1dpdGhSZXR1cm5lZExlbmd0aDombGVuZ3RoXSkgewotICAgICAgICBtX3dyYXBw
ZWRVUkwgPSBicmlkZ2VfY2FzdChhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0
ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBicmlkZ2Vf
Y2FzdChiYXNlVVJMLmdldCgpKSwgdHJ1ZSkpKTsKKyAgICAgICAgbV93cmFwcGVkVVJMID0gYnJp
ZGdlX2Nhc3QoYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJy
aWRnZV9jYXN0KGJhc2VVUkwuZ2V0KCkpLCB0cnVlKSkpOwogICAgICAgICBpZiAoIW1fd3JhcHBl
ZFVSTCkKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBOU1VSTCBkdWUg
dG8gaW52YWxpZCBlbmNvZGluZyBvZiBsZW5ndGggJWQuIFN1YnN0aXR1dGluZyBhIGJsYW5rIFVS
TCIsIGxlbmd0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQ29kZVNpZ25pbmcubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db2RlU2lnbmlu
Zy5tbQppbmRleCA2ZGQ1YzU0MTE4YzU3MGFhNWY2MjI0NzViYjk3MzIyOTVhYTA2M2YyLi5hMWQ1
MzdhYjcxM2JiNGMyMTdkYWZmOTg4YmNhYjQ0NjNlZjQ0ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9Db2RlU2lnbmluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9Db2RlU2lnbmluZy5tbQpAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgU3RyaW5n
IGNvZGVTaWduaW5nSWRlbnRpZmllcihTZWNUYXNrUmVmIHRhc2spCiAKIFN0cmluZyBjb2RlU2ln
bmluZ0lkZW50aWZpZXJGb3JDdXJyZW50UHJvY2VzcygpCiB7Ci0gICAgcmV0dXJuIGNvZGVTaWdu
aW5nSWRlbnRpZmllcihhZG9wdENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0KSkuZ2V0KCkpOworICAgIHJldHVybiBjb2RlU2lnbmluZ0lkZW50aWZpZXIoYWRvcHRD
RihTZWNUYXNrQ3JlYXRlRnJvbVNlbGYoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCkpKS5nZXQoKSk7
CiB9CiAKIFN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25u
ZWN0aW9uKQpAQCAtNTMsNyArNTMsNyBAQCBTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhw
Y19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIAogYm9vbCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZv
cm1CaW5hcnkoKQogewotICAgIGF1dG8gdGFzayA9IGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21T
ZWxmKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICBhdXRvIHRhc2sgPSBhZG9wdENGKFNlY1Rh
c2tDcmVhdGVGcm9tU2VsZihmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSkpOwogICAgIHJldHVybiBT
ZWNUYXNrR2V0Q29kZVNpZ25TdGF0dXModGFzay5nZXQoKSkgJiBDU19QTEFURk9STV9CSU5BUlk7
CiB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29kZVNpZ25p
bmdJZGVudGlmaWVyQW5kUGxhdGZvcm1CaW5hcnlTdGF0dXMoeHBjX2Nvbm5lY3QKIHsKICAgICBh
dWRpdF90b2tlbl90IGF1ZGl0VG9rZW47CiAgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rv
a2VuKGNvbm5lY3Rpb24sICZhdWRpdFRva2VuKTsKLSAgICBhdXRvIHRhc2sgPSBhZG9wdENGKFNl
Y1Rhc2tDcmVhdGVXaXRoQXVkaXRUb2tlbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdWRpdFRva2Vu
KSk7CisgICAgYXV0byB0YXNrID0gYWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4o
ZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGF1ZGl0VG9rZW4pKTsKICAgICBib29sIGlzUGxhdGZv
cm1CaW5hcnkgPSBTZWNUYXNrR2V0Q29kZVNpZ25TdGF0dXModGFzay5nZXQoKSkgJiBDU19QTEFU
Rk9STV9CSU5BUlk7CiAgICAgYXV0byBzaWduaW5nSWRlbnRpZmllciA9IGNvZGVTaWduaW5nSWRl
bnRpZmllcih0YXNrLmdldCgpKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc2lnbmluZ0lk
ZW50aWZpZXIsIGlzUGxhdGZvcm1CaW5hcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV0tOU1VSTC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNV
UkwubW0KaW5kZXggYTM0NDA3ZjUzMzgyZTJlMmM4NzdiZGQ2ZDAzNWY0OGI2MmJhNjRlMS4uYzgz
NWQ5NmI0MzczZTQ4MjA1ZGFmZTUzZjdlNmI2ZTA0MTIzYmE2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XS05TVVJMLm1tCkBAIC0zNCw3ICszNCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS05T
VVJMCiAKIC0gKE5TT2JqZWN0ICopX3dlYl9jcmVhdGVUYXJnZXQKIHsKLSAgICByZXR1cm4gKE5T
VVJMICopV0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVmYXVsdCwgV2ViS2l0Ojp0b0FQSShy
ZWludGVycHJldF9jYXN0PEFQSTo6VVJMKj4oJnNlbGYuX2FwaU9iamVjdCkpKTsKKyAgICByZXR1
cm4gKE5TVVJMICopV0tVUkxDb3B5Q0ZVUkwoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIFdlYktp
dDo6dG9BUEkocmVpbnRlcnByZXRfY2FzdDxBUEk6OlVSTCo+KCZzZWxmLl9hcGlPYmplY3QpKSk7
CiB9CiAKICNwcmFnbWEgbWFyayBOU0NvcHlpbmcgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0
NC4uMzA5YWEyZjU5NjVjMjVmMWViNDhhODc4ZTc5MGYyNmFlZmI3Mjc2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0KQEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkZvbnQ+Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbgogCiBzdGF0
aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGZpbmRGb250RGVzY3JpcHRvcihjb25z
dCBTdHJpbmcmIHJlZmVyZW5jZVVSTCwgY29uc3QgU3RyaW5nJiBwb3N0U2NyaXB0TmFtZSkKIHsK
LSAgICBhdXRvIHVybCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHJlZmVyZW5jZVVSTC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBudWxscHRyKSk7
CisgICAgYXV0byB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmluZyhmYXN0TWFsbG9j
Q0ZBbGxvY2F0b3IoKSwgcmVmZXJlbmNlVVJMLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG51bGxw
dHIpKTsKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBm
b250RGVzY3JpcHRvcnMgPSBhZG9wdENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRv
cnNGcm9tVVJMKHVybC5nZXQoKSkpOwpAQCAtNzg1LDcgKzc4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PiBBcmd1bWVudENvZGVyPFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyCiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcmF3QnVmZmVyID0gbnVsbHB0cjsK
LSAgICAgICAgYXV0byBzdGF0dXMgPSBXZWJDb3JlOjpDVlBpeGVsQnVmZmVyQ3JlYXRlV2l0aElP
U3VyZmFjZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdXJmYWNlLmdldCgpLCBudWxscHRyLCAmcmF3
QnVmZmVyKTsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBXZWJDb3JlOjpDVlBpeGVsQnVmZmVyQ3Jl
YXRlV2l0aElPU3VyZmFjZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgc3VyZmFjZS5nZXQoKSwg
bnVsbHB0ciwgJnJhd0J1ZmZlcik7CiAgICAgICAgIGlmIChzdGF0dXMgIT0gbm9FcnIgfHwgIXJh
d0J1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHBpeGVs
QnVmZmVyID0gYWRvcHRDRihyYXdCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwCmluZGV4IDBjMGYwOGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1
NmUxNjQuLjM1NDUyMjNiOGIyMWIwYThjNjMwM2U3YzJjZDYwZTIxNmZkNjVkNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAg
c3RhdGljIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VE
ZWFsbG9jYXRvcihTaGFyZWFibGVSZXMKICAgICAgICAgTlVMTCwgLy8gcHJlZmVycmVkU2l6ZQog
ICAgIH07CiAKLSAgICByZXR1cm4gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAmY29udGV4dCkpOworICAgIHJldHVybiBhZG9wdENGKENGQWxsb2NhdG9yQ3Jl
YXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAmY29udGV4dCkpOwogfQogI2VuZGlmCiAKQEAg
LTg0LDcgKzg0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6Ondy
YXBJblNoYXJlZEJ1ZmZlcigpCiAKICNpZiBVU0UoQ0YpCiAgICAgYXV0byBkZWFsbG9jYXRvciA9
IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0byBjZkRh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBkYXRhKCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdl
dCgpKSk7CisgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05v
Q29weShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgZGF0YSgpLCBzdGF0aWNfY2FzdDxDRkluZGV4
PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwogI2VsaWYgVVNFKEdMSUIpCiAgICAgR1JlZlB0cjxHQnl0
ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwg
c2l6ZSgpLCBbXSh2b2lkKiBkYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3Vt
ZW50Q29kZXJzQ0YuY3BwCmluZGV4IDQ2MmU4NTk0MmJmNWQ0MWFiMDk3NGY0NGI5NGQ0N2I2MzFh
ZGFkMDIuLjk3ZDk1ZjM4MDgyMWE3OGNjNmIzODIwODM0YmRlZjk0NWI5MDQ5YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCkBAIC0zNjIsNyArMzYy
LDcgQEAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZBcnJheVJlZj4+IEFyZ3VtZW50Q29kZXI8
UmV0YWluUHRyPENGQXJyYXlSZWY+Pjo6ZGVjb2QKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3Jl
YXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgYXV0byBhcnJh
eSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgKnNpemU7ICsraSkgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRlR5cGVS
ZWY+PiBlbGVtZW50OwpAQCAtNDk2LDcgKzQ5Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4+IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGRGljdGlvbmFyeVJl
CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUmV0
YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIFJldGFpblB0cjxDRk11
dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgZm9y
ICh1aW50NjRfdCBpID0gMDsgaSA8ICpzaXplOyArK2kpIHsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxSZXRhaW5QdHI8Q0ZUeXBlUmVmPj4ga2V5OwogICAgICAgICBkZWNvZGVyID4+IGtleTsKQEAg
LTYyOCw3ICs2MjgsNyBAQCBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IEFy
Z3VtZW50Q29kZXI8UmV0YWluUHRyPENGU3RyaW5nUmVmPj46OmRlYwogICAgIGlmICghZGF0YVJl
ZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gc3RyaW5n
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCBkYXRhUmVmZXJlbmNlLT5kYXRh
KCksIGRhdGFSZWZlcmVuY2UtPnNpemUoKSwgZW5jb2RpbmcsIGZhbHNlKSk7CisgICAgYXV0byBz
dHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpLCBkYXRhUmVmZXJlbmNlLT5kYXRhKCksIGRhdGFSZWZlcmVuY2UtPnNpemUoKSwgZW5j
b2RpbmcsIGZhbHNlKSk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKQEAgLTY3OSw3ICs2NzksNyBAQCBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRlVS
TFJlZj4+IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGVVJMUmVmPj46OmRlY29kZShEZQogICAg
IH0KICNlbmRpZgogCi0gICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1
dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHVy
bEJ5dGVzLT5kYXRhKCkpLCB1cmxCeXRlcy0+c2l6ZSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IGJhc2VVUkwuZ2V0KCksIHRydWUpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHVybEJ5dGVzLT5kYXRhKCkpLCB1cmxCeXRlcy0+c2l6
ZSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJhc2VVUkwuZ2V0KCksIHRydWUpKTsKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gV1RG
TW92ZShyZXN1bHQpOwpAQCAtNzU2LDcgKzc1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRy
PFNlY0NlcnRpZmljYXRlUmVmPj4gQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8U2VjQ2VydGlmaWNh
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIGFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YSgwLCBkYXRhLT5nZXQoKSkp
OworICAgIHJldHVybiBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIGRhdGEtPmdldCgpKSk7CiB9CiAKICNpZiBIQVZFKFNFQ19LRVlD
SEFJTikKQEAgLTgxNiw3ICs4MTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxTZWNBY2Nl
c3NDb250cm9sUmVmPj4gQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8U2VjQWNjZXNzQwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHRDRihTZWNBY2Nlc3NDb250cm9sQ3JlYXRlRnJvbURhdGEoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZGF0YS0+Z2V0KCksIG51bGxwdHIpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0Yo
U2VjQWNjZXNzQ29udHJvbENyZWF0ZUZyb21EYXRhKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBk
YXRhLT5nZXQoKSwgbnVsbHB0cikpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Db29r
aWVTdG9yYWdlVXRpbHNDRi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0Nvb2tpZVN0b3Jh
Z2VVdGlsc0NGLm1tCmluZGV4IGNhYTg2MzdiYWU5YTc4MzZmYmQwZDFmZDk3MjIxNjFiN2RiM2Qz
ZWEuLjliNDcwYjAxNzYyMDkzZjllYWYwMTNiMGRmOWRjZGE2N2RhNjVkYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0Nvb2tpZVN0b3JhZ2VVdGlsc0NGLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2NmL0Nvb2tpZVN0b3JhZ2VVdGlsc0NGLm1tCkBAIC0zNiw4ICsz
Niw4IEBAIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlRnJv
bUlkZW50aWZ5aW5nRGF0YShjb25zdCBWZWN0b3I8CiAgICAgQVNTRVJUKCFkYXRhLmlzRW1wdHko
KSk7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2Fu
QWNjZXNzUmF3Q29va2llcykpOwogCi0gICAgYXV0byBjb29raWVTdG9yYWdlRGF0YSA9IGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSkpOwotICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3Rv
cmFnZUNyZWF0ZUZyb21JZGVudGlmeWluZ0RhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2ll
U3RvcmFnZURhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGNvb2tpZVN0b3JhZ2VEYXRhID0gYWRvcHRD
RihDRkRhdGFDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSkpOworICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoQ0ZIVFRQQ29va2ll
U3RvcmFnZUNyZWF0ZUZyb21JZGVudGlmeWluZ0RhdGEoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IGNvb2tpZVN0b3JhZ2VEYXRhLmdldCgpKSk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwog
CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3AoY29va2llU3RvcmFn
ZS5nZXQoKSwgW05TVVJMQ29ubmVjdGlvbiByZXNvdXJjZUxvYWRlclJ1bkxvb3BdLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwpAQCAtNTEsNyArNTEsNyBAQCBWZWN0b3I8dWludDhfdD4gaWRlbnRp
ZnlpbmdEYXRhRnJvbUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dAogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKIAotICAgIGF1dG8gY2ZEYXRhID0gYWRv
cHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ3JlYXRlSWRlbnRpZnlpbmdEYXRhKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZI
VFRQQ29va2llU3RvcmFnZUNyZWF0ZUlkZW50aWZ5aW5nRGF0YShmYXN0TWFsbG9jQ0ZBbGxvY2F0
b3IoKSwgY29va2llU3RvcmFnZSkpOwogICAgIHJlc3VsdC5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0
cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggYTRjYjhjOWQ2NjQwM2YzMDRiNWUwNmY3MjljY2U2
OTRmNzQzNjkzYS4uOWQxYzQ5ODliNGQyZjU0ZDJjMDI3ODdhZGE3OTg0YTUxZjJkZTBmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
TWFjLm1tCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlTlNFcnJvcihFbmNv
ZGVyJiBlbmNvZGVyLCBOU0Vycm9yICpuc0Vycm9yKQogCiAgICAgTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyA9IFtuc0Vycm9yIHVzZXJJbmZvXTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0
aW9uYXJ5UmVmPiBmaWx0ZXJlZFVzZXJJbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVN
dXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVzZXJJbmZvLmNvdW50LCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGZpbHRlcmVkVXNlckluZm8gPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IHVzZXJJbmZvLmNvdW50LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKICAgICBbdXNlckluZm8gZW51bWVyYXRlS2V5
c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwgQk9PTCopIHsKICAgICAg
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8IFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dIHx8IFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQpAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJv
cj4gZGVjb2RlTlNFcnJvcihEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoIXVuZGVybHlp
bmdOU0Vycm9yKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICBhdXRvIG11dGFi
bGVVc2VySW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgQ0ZEaWN0aW9uYXJ5R2V0Q291bnQodXNlckluZm8uZ2V0KCkpICsgMSwg
dXNlckluZm8uZ2V0KCkpKTsKKyAgICAgICAgYXV0byBtdXRhYmxlVXNlckluZm8gPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBD
RkRpY3Rpb25hcnlHZXRDb3VudCh1c2VySW5mby5nZXQoKSkgKyAxLCB1c2VySW5mby5nZXQoKSkp
OwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShtdXRhYmxlVXNlckluZm8uZ2V0KCksIChf
X2JyaWRnZSBDRlN0cmluZ1JlZilOU1VuZGVybHlpbmdFcnJvcktleSwgKF9fYnJpZGdlIENGVHlw
ZVJlZil1bmRlcmx5aW5nTlNFcnJvci5nZXQoKSk7CiAgICAgICAgIHVzZXJJbmZvID0gV1RGTW92
ZShtdXRhYmxlVXNlckluZm8pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCmluZGV4IDk3ZmQxODdmYTY1YjhjMTExMDc4NTU5
NjBmZGRjMTljMDEzYmQ3YmIuLmMxMzg5YTBjYmIwYjNkMjdkOTVhOTAxMzA3M2YyNzg2MmM5YWQ2
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5l
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVj
dGlvbi5tbQpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShX
S0Nvbm5lY3Rpb25SZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZQogICAgIGF1
dG8gZGVsZWdhdGUgPSBjb25uZWN0aW9uLT5fZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29ubmVjdGlvbjpkaWRSZWNlaXZl
TWVzc2FnZVdpdGhOYW1lOmJvZHk6KV0pIHsKLSAgICAgICAgYXV0byBuYW1lID0gYnJpZGdlX2Nh
c3QoYWRvcHRDRihXS1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtZXNz
YWdlTmFtZSkpKTsKKyAgICAgICAgYXV0byBuYW1lID0gYnJpZGdlX2Nhc3QoYWRvcHRDRihXS1N0
cmluZ0NvcHlDRlN0cmluZyhmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbWVzc2FnZU5hbWUpKSk7
CiAgICAgICAgIGlkIGJvZHkgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaCo+
KFdlYktpdDo6dG9JbXBsKG1lc3NhZ2VCb2R5KSktPnJvb3RPYmplY3QoKTsKICAgICAgICAgW2Rl
bGVnYXRlIGNvbm5lY3Rpb246Y29ubmVjdGlvbiBkaWRSZWNlaXZlTWVzc2FnZVdpdGhOYW1lOm5h
bWUuZ2V0KCkgYm9keTpib2R5XTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBhMjU2NGRmMmE1YWIxNzAxMDU5MjNlNWU3ZGU5
ZDRiODM2MzQwODllLi4yMDhjYWY3ODE3Y2U1MDNmYjE4NTZiNGM2NDhjMTIxNjQ5MDAxOTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTE2NDQsNyArMTY0NCw3IEBAIC0gKHZvaWQpY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246KFdL
UERGQ29uZmlndXJhdGlvbiAqKXBkZkNvbmZpZ3VyYXRpb24gY29tcGxlCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkp
KTsKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoZmFzdE1hbGxvY0NG
QWxsb2NhdG9yKCksIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOwogICAgICAgICBo
YW5kbGVyKChOU0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vbWFjL1dlYkNyZWRlbnRp
YWxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9tYWMvV2Vi
Q3JlZGVudGlhbE1hYy5tbQppbmRleCBiOGU3NWUyNGU4N2ZiYWM5Y2RlMjA3N2I3MWQ5NzE2MDZh
ZTU2NmRkLi5jYTRmNWI0OGVmZDY3YmUzMzE5YzQ4MjMzYTZlMDA2ODliOTUxZGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9tYWMvV2ViQ3JlZGVu
dGlhbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9t
YWMvV2ViQ3JlZGVudGlhbE1hYy5tbQpAQCAtODUsNyArODUsNyBAQCBXZWJDcmVkZW50aWFsOjpX
ZWJDcmVkZW50aWFsKFdlYkNlcnRpZmljYXRlSW5mbyogY2VydGlmaWNhdGVJbmZvKQogCiAgICAg
Ly8gVGhlIHBhc3NlZC1pbiBjZXJ0aWZpY2F0ZSBjaGFpbiBpbmNsdWRlcyB0aGUgaWRlbnRpdHkg
Y2VydGlmaWNhdGUgYXQgaW5kZXggMCwgYW5kIGFkZGl0aW9uYWwgY2VydGlmaWNhdGVzIHN0YXJ0
aW5nIGF0IGluZGV4IDEuCiAgICAgU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHk7Ci0gICAgT1NTdGF0
dXMgcmVzdWx0ID0gU2VjSWRlbnRpdHlDcmVhdGVXaXRoQ2VydGlmaWNhdGUoTlVMTCwgbGVhZkNl
cnRpZmljYXRlKGNlcnRpZmljYXRlSW5mby0+Y2VydGlmaWNhdGVJbmZvKCkpLmdldCgpLCAmaWRl
bnRpdHkpOworICAgIE9TU3RhdHVzIHJlc3VsdCA9IFNlY0lkZW50aXR5Q3JlYXRlV2l0aENlcnRp
ZmljYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBsZWFmQ2VydGlmaWNhdGUoY2VydGlmaWNh
dGVJbmZvLT5jZXJ0aWZpY2F0ZUluZm8oKSkuZ2V0KCksICZpZGVudGl0eSk7CiAgICAgaWYgKHJl
c3VsdCAhPSBlcnJTZWNTdWNjZXNzKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNy
ZWF0ZSBTZWNJZGVudGl0eVJlZiB3aXRoIGNlcnRpZmljYXRlIC0gJWkiLCByZXN1bHQpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQppbmRleCAyYjg4YzlmYzcyMmU2
MGRmYTU1YjE3ZDk4MTFmYmY5MmJmYzE5ODI3Li44MjU0ZjViM2NhNDM1MDRjZGU3MjQ5NzI5OWYx
NjlkZjZmNmMxYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KQEAgLTUxLDcgKzUxLDcg
QEAgc3RhdGljIHZvaWQgZGV2aWNlUmVtb3ZlZENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIElPUmV0
dXJuLCB2b2lkKiwgSU9ISUREZXZpY2VSZWYKIEhpZFNlcnZpY2U6OkhpZFNlcnZpY2UoT2JzZXJ2
ZXImIG9ic2VydmVyKQogICAgIDogRmlkb1NlcnZpY2Uob2JzZXJ2ZXIpCiB7Ci0gICAgbV9tYW5h
Z2VyID0gYWRvcHRDRihJT0hJRE1hbmFnZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0lP
SElET3B0aW9uc1R5cGVOb25lKSk7CisgICAgbV9tYW5hZ2VyID0gYWRvcHRDRihJT0hJRE1hbmFn
ZXJDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGtJT0hJRE9wdGlvbnNUeXBlTm9uZSkp
OwogICAgIE5TRGljdGlvbmFyeSAqbWF0Y2hpbmdEaWN0aW9uYXJ5ID0gQHsKICAgICAgICAgQGtJ
T0hJRFByaW1hcnlVc2FnZVBhZ2VLZXk6IEAoa0N0YXBIaWRVc2FnZVBhZ2UpLAogICAgICAgICBA
a0lPSElEUHJpbWFyeVVzYWdlS2V5OiBAKGtDdGFwSGlkVXNhZ2UpLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50
aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDUzMzQ2ZGQ1MTM3ODZmNWIxN2NmMzcxZGE2
OTg3YzJiNzEzOWY3NjkuLjg3NTc3ODkwNTJmMTBhNTg4YmQ1ZGQ4NGEwNjkwMjMzMWQyZDE2NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTI4Nyw3ICsy
ODcsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFm
dGVyRGVjaWRlUG9saWN5KExvY2FsQXV0aGVudGljYQogICAgIFJldGFpblB0cjxTZWNBY2Nlc3ND
b250cm9sUmVmPiBhY2Nlc3NDb250cm9sOwogICAgIHsKICAgICAgICAgQ0ZFcnJvclJlZiBlcnJv
clJlZiA9IG51bGxwdHI7Ci0gICAgICAgIGFjY2Vzc0NvbnRyb2wgPSBhZG9wdENGKFNlY0FjY2Vz
c0NvbnRyb2xDcmVhdGVXaXRoRmxhZ3MoTlVMTCwga1NlY0F0dHJBY2Nlc3NpYmxlV2hlblBhc3Nj
b2RlU2V0VGhpc0RldmljZU9ubHksIGtTZWNBY2Nlc3NDb250cm9sUHJpdmF0ZUtleVVzYWdlIHwg
a1NlY0FjY2Vzc0NvbnRyb2xVc2VyUHJlc2VuY2UsICZlcnJvclJlZikpOworICAgICAgICBhY2Nl
c3NDb250cm9sID0gYWRvcHRDRihTZWNBY2Nlc3NDb250cm9sQ3JlYXRlV2l0aEZsYWdzKGZhc3RN
YWxsb2NDRkFsbG9jYXRvcigpLCBrU2VjQXR0ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlz
RGV2aWNlT25seSwga1NlY0FjY2Vzc0NvbnRyb2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNz
Q29udHJvbFVzZXJQcmVzZW5jZSwgJmVycm9yUmVmKSk7CiAgICAgICAgIGF1dG8gcmV0YWluRXJy
b3IgPSBhZG9wdENGKGVycm9yUmVmKTsKICAgICAgICAgaWYgKGVycm9yUmVmKSB7CiAgICAgICAg
ICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4n
dCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5s
b2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOwpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgTG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZWNlaXZpbmdMQUNvbnRl
eHQoTEFDb250ZXh0CiAgICAgUmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0Nv
bnRyb2w7CiAgICAgewogICAgICAgICBDRkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKLSAg
ICAgICAgYWNjZXNzQ29udHJvbCA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhG
bGFncyhOVUxMLCBrU2VjQXR0ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25s
eSwga1NlY0FjY2Vzc0NvbnRyb2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVz
ZXJQcmVzZW5jZSwgJmVycm9yUmVmKSk7CisgICAgICAgIGFjY2Vzc0NvbnRyb2wgPSBhZG9wdENG
KFNlY0FjY2Vzc0NvbnRyb2xDcmVhdGVXaXRoRmxhZ3MoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCks
IGtTZWNBdHRyQWNjZXNzaWJsZVdoZW5QYXNzY29kZVNldFRoaXNEZXZpY2VPbmx5LCBrU2VjQWNj
ZXNzQ29udHJvbFByaXZhdGVLZXlVc2FnZSB8IGtTZWNBY2Nlc3NDb250cm9sVXNlclByZXNlbmNl
LCAmZXJyb3JSZWYpKTsKICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JS
ZWYpOwogICAgICAgICBpZiAoZXJyb3JSZWYpIHsKICAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRp
b24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGNyZWF0ZSBhY2Nlc3MgY29u
dHJvbDogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9u
KSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggOGM4
MmI3ZTVkOTYzYjFhMTgxNDExYjgyMTMzOTk1N2MxYzhiYTI2MS4uMTNiOTBlMWQzZGMzYWNkNTc0
NmI4ZjU1MzA5NDY2ZGJkZWQwZGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29u
bmVjdGlvbi5tbQpAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6
Z2V0QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKiwgTlNEYXRhICosIEF0dGVzdGF0CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGF0dGVzdGF0aW9u
Q2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoTlVMTCwg
KF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2
NEVuY29kZWRTdHJpbmc6Y29uZmlndXJhdGlvbi5sb2NhbC0+dXNlckNlcnRpZmljYXRlQmFzZTY0
IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdl
dCgpKSk7Ci0gICAgICAgIGF1dG8gYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZSA9IGFk
b3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShOVUxMLCAoX19icmlkZ2UgQ0ZEYXRh
UmVmKWFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpj
b25maWd1cmF0aW9uLmxvY2FsLT5pbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0IG9wdGlv
bnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpKSk7
CisgICAgICAgIGF1dG8gYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlm
aWNhdGVDcmVhdGVXaXRoRGF0YShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgKF9fYnJpZGdlIENG
RGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJp
bmc6Y29uZmlndXJhdGlvbi5sb2NhbC0+dXNlckNlcnRpZmljYXRlQmFzZTY0IG9wdGlvbnM6TlNE
YXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpKSk7CisgICAg
ICAgIGF1dG8gYXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2Vy
dGlmaWNhdGVDcmVhdGVXaXRoRGF0YShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgKF9fYnJpZGdl
IENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRT
dHJpbmc6Y29uZmlndXJhdGlvbi5sb2NhbC0+aW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2
NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5n
ZXQoKSkpOwogICAgICAgICBjYWxsYmFjayhAWyAoX19icmlkZ2UgaWQpYXR0ZXN0YXRpb25DZXJ0
aWZpY2F0ZS5nZXQoKSwgKF9fYnJpZGdlIGlkKWF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNh
dGUuZ2V0KCldLCBOVUxMKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbQppbmRleCA3MGUzYzE3ZDEzNzFiMTkzNzg1ZmRjZWYyYjdmYTM3NjQyMWU2MDFiLi41
N2ExM2I4MGI0YjkzZWE4ZDQ2MzAzZTI1MDM4MGRjZTcxZWM4ZWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xOTYsOCArMTk2LDggQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzJgogCiAgICAgaWYgKG1fdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRmOEZpbGUgPSBjb29raWVGaWxlLnV0ZjgoKTsKLSAg
ICAgICAgYXV0byB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDggKil1dGY4RmlsZS5kYXRh
KCksIChDRkluZGV4KXV0ZjhGaWxlLmxlbmd0aCgpLCB0cnVlKSk7Ci0gICAgICAgIG1fY2ZDb29r
aWVTdG9yYWdlID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ3JlYXRlRnJvbUZpbGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgdXJsLmdldCgpLCBudWxscHRyKSk7CisgICAgICAgIGF1dG8gdXJs
ID0gYWRvcHRDRihDRlVSTENyZWF0ZUZyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmFzdE1h
bGxvY0NGQWxsb2NhdG9yKCksIChjb25zdCBVSW50OCAqKXV0ZjhGaWxlLmRhdGEoKSwgKENGSW5k
ZXgpdXRmOEZpbGUubGVuZ3RoKCksIHRydWUpKTsKKyAgICAgICAgbV9jZkNvb2tpZVN0b3JhZ2Ug
PSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDcmVhdGVGcm9tRmlsZShmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IoKSwgdXJsLmdldCgpLCBudWxscHRyKSk7CiAgICAgICAgIG1fdWlQcm9jZXNzQ29v
a2llU3RvcmFnZUlkZW50aWZpZXIgPSBpZGVudGlmeWluZ0RhdGFGcm9tQ29va2llU3RvcmFnZSht
X2NmQ29va2llU3RvcmFnZS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggYzBmNGI1MWIxNjA3YzU4ZWI2ZmFmNTZiMmExYjNhNDU4
MmUwZTVmZi4uOWFkZjE1YmZhM2EyZDFjZjQ3N2UyYjcwYmU2MTMzZTI2NTIxZDI5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb246OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fd2ViUHVzaE1hY2hTZXJ2aWNlTmFt
ZSA9IHRoaXMtPm1fd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZTsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBpZiAobV9wcm94eUNvbmZpZ3VyYXRpb24pCi0gICAgICAgIGNvcHktPm1fcHJveHlDb25m
aWd1cmF0aW9uID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVDb3B5KG51bGxwdHIsIHRoaXMt
Pm1fcHJveHlDb25maWd1cmF0aW9uLmdldCgpKSk7CisgICAgICAgIGNvcHktPm1fcHJveHlDb25m
aWd1cmF0aW9uID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVDb3B5KGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCB0aGlzLT5tX3Byb3h5Q29uZmlndXJhdGlvbi5nZXQoKSkpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQogICAgIGNvcHktPm1fbW9kZWxFbGVtZW50
Q2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW0KaW5k
ZXggMjE5ZGJhNTdlZjBmNTA0NDkzMDU4YzYwY2I0ZGVjY2U4MmFmODRjNC4uNGE0OTQ5ZmNiYzMx
MzBhMjQ0NWY0MGNkMTg1NzI3MTE2Y2EzYTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgLSAo
SU9ISURFdmVudFJlZilfY3JlYXRlSU9ISURFdmVudFR5cGU6KEhhbmRFdmVudFR5cGUpZXZlbnRU
eXBlCiAgICAgICAgIGV2ZW50TWFzayB8PSBrSU9ISUREaWdpdGl6ZXJFdmVudElkZW50aXR5Owog
CiAgICAgdWludDY0X3QgbWFjaFRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKLSAgICBSZXRh
aW5QdHI8SU9ISURFdmVudFJlZj4gZXZlbnRSZWYgPSBhZG9wdENGKElPSElERXZlbnRDcmVhdGVE
aWdpdGl6ZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwKKyAgICBSZXRhaW5Q
dHI8SU9ISURFdmVudFJlZj4gZXZlbnRSZWYgPSBhZG9wdENGKElPSElERXZlbnRDcmVhdGVEaWdp
dGl6ZXJFdmVudChmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgbWFjaFRpbWUsCiAgICAgICAgIGtJ
T0hJRERpZ2l0aXplclRyYW5zZHVjZXJUeXBlSGFuZCwKICAgICAgICAgMCwKICAgICAgICAgMCwK
QEAgLTE4NCw3ICsxODQsNyBAQCAtIChJT0hJREV2ZW50UmVmKV9jcmVhdGVJT0hJREV2ZW50VHlw
ZTooSGFuZEV2ZW50VHlwZSlldmVudFR5cGUKICAgICAgICAgQ0dQb2ludCBwb2ludCA9IHBvaW50
SW5mby0+cG9pbnQ7CiAgICAgICAgIHBvaW50ID0gQ0dQb2ludE1ha2Uocm91bmRmKHBvaW50Lngp
LCByb3VuZGYocG9pbnQueSkpOwogICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPElPSElERXZl
bnRSZWY+IHN1YkV2ZW50ID0gYWRvcHRDRihJT0hJREV2ZW50Q3JlYXRlRGlnaXRpemVyRmluZ2Vy
RXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbWFjaFRpbWUsCisgICAgICAgIFJldGFpblB0cjxJ
T0hJREV2ZW50UmVmPiBzdWJFdmVudCA9IGFkb3B0Q0YoSU9ISURFdmVudENyZWF0ZURpZ2l0aXpl
ckZpbmdlckV2ZW50KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBtYWNoVGltZSwKICAgICAgICAg
ICAgIHBvaW50SW5mby0+aWRlbnRpZmllciwKICAgICAgICAgICAgIHBvaW50SW5mby0+aWRlbnRp
ZmllciwKICAgICAgICAgICAgIGV2ZW50TWFzaywKQEAgLTIwNyw3ICsyMDcsNyBAQCAtIChJT0hJ
REV2ZW50UmVmKV9jcmVhdGVJT0hJREV2ZW50VHlwZTooSGFuZEV2ZW50VHlwZSlldmVudFR5cGUK
IC0gKEJPT0wpX3NlbmRISURFdmVudDooSU9ISURFdmVudFJlZilldmVudFJlZgogewogICAgIGlm
ICghX2lvU3lzdGVtQ2xpZW50KQotICAgICAgICBfaW9TeXN0ZW1DbGllbnQgPSBhZG9wdENGKElP
SElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgICAg
ICBfaW9TeXN0ZW1DbGllbnQgPSBhZG9wdENGKElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUo
ZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCkpKTsKIAogICAgIGlmIChldmVudFJlZikgewogICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0cm9uZ0V2ZW50ID0gcmV0YWluUHRyKGV2ZW50
UmVmKV0gewpAQCAtMjI3LDcgKzIyNyw3IEBAIC0gKEJPT0wpX3NlbmRNYXJrZXJISURFdmVudFdp
dGhDb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jawogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IFtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIG5leHRFdmVudENhbGxiYWNr
SURdOwogICAgIFtfZXZlbnRDYWxsYmFja3Mgc2V0T2JqZWN0OkJsb2NrX2NvcHkoY29tcGxldGlv
bkJsb2NrKSBmb3JLZXk6QChjYWxsYmFja0lEKV07CiAKLSAgICBhdXRvIG1hcmtlckV2ZW50ID0g
YWRvcHRDRihJT0hJREV2ZW50Q3JlYXRlVmVuZG9yRGVmaW5lZEV2ZW50KGtDRkFsbG9jYXRvckRl
ZmF1bHQsCisgICAgYXV0byBtYXJrZXJFdmVudCA9IGFkb3B0Q0YoSU9ISURFdmVudENyZWF0ZVZl
bmRvckRlZmluZWRFdmVudChmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwKICAgICAgICAgbWFjaF9h
YnNvbHV0ZV90aW1lKCksCiAgICAgICAgIGtISURQYWdlX1ZlbmRvckRlZmluZWRTdGFydCArIDEw
MCwKICAgICAgICAgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KaW5kZXggZDExZjcxZmIxMWQyMWZhYTVmNzE5M2JkZjUwMWU4ZmFlMGRkMGEyMC4uMmRk
MDVhNDJlMjg4NWExZTZlMDdlMTVkMGExNThlYzU2YzQyNDg2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTkwMyw3ICs5MDMsNyBAQCAtIChO
U1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50
Rm9ybWF0dGVyICopcHJpbnRGbwogICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7
CisgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGZhc3RNYWxsb2NDRkFs
bG9jYXRvcigpLCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkpKTsKICAgICAgICAgYXV0
byBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShk
YXRhLmdldCgpKSk7CiAgICAgICAgIHJldGFpbmVkU2VsZi0+X3ByaW50ZWREb2N1bWVudCA9IGFk
b3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkp
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDM5NDM4YmYxZDc1NTMxOTQ1NjYwNDAyMDU1
MDBiYjc0OGUxMmMzOTEuLjQzMWUxYzRjM2EzZTg3ZmExMjUxZTYzNGJlMWNkNTExM2Q3Y2ZhYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTAwMDcsNyArMTAwMDcsNyBAQCAtIChOU0RhdGEgKilwcm92
aWRlRGF0YUZvckl0ZW06KFFMSXRlbSAqKWl0ZW0KIHsKICAgICBBU1NFUlQoX3Zpc3VhbFNlYXJj
aFByZXZpZXdJbWFnZSk7CiAKLSAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11
dGFibGUoTlVMTCwgMCkpOworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0
YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCkpOwogICAgIGF1dG8gZGVzdGluYXRpb24g
PSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIChf
X2JyaWRnZSBDRlN0cmluZ1JlZilVVFR5cGVUSUZGLmlkZW50aWZpZXIsIDEsIE5VTEwpKTsKICAg
ICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgW192aXN1YWxT
ZWFyY2hQcmV2aWV3SW1hZ2UgQ0dJbWFnZV0sIG5pbCk7CiAgICAgaWYgKCFDR0ltYWdlRGVzdGlu
YXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDY1
NWI5ODUwNDcxNjA1MTg3ZjZhNTk4YjI3ZjE1OTJkMWY1NTg3MDAuLjNmZTZiMzBlZDFlZWY2M2Q5
MTg1NDdhZDJiMzZkNzNlMGFlM2U3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC00MDIsMTMgKzQw
MiwxMyBAQCBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gZW5jb2RlU2Vzc2lvbkhpc3RvcnlF
bnRyeURhdGEoY29uc3QgRnJhbWVTdGF0ZSYgZnJhbQogICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgIG51bGxwdHIsIC8vIHByZWZlcnJlZFNpemUKICAgICAgICAgfTsKLSAgICAgICAgZmFzdE1h
bGxvY0RlYWxsb2NhdG9yLmdldCgpID0gYWRvcHRDRihDRkFsbG9jYXRvckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAmY29udGV4dCkpOworICAgICAgICBmYXN0TWFsbG9jRGVhbGxvY2F0b3Iu
Z2V0KCkgPSBhZG9wdENGKENGQWxsb2NhdG9yQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCAmY29udGV4dCkpOwogICAgIH0pOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemU7CiAgICAgYXV0
byBidWZmZXIgPSBlbmNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShmcmFtZVN0YXRlLCBidWZm
ZXJTaXplKTsKIAotICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29w
eShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIubGVha1B0cigpLCBidWZmZXJTaXplLCBmYXN0
TWFsbG9jRGVhbGxvY2F0b3IuZ2V0KCkuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRh
dGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGJ1ZmZlci5s
ZWFrUHRyKCksIGJ1ZmZlclNpemUsIGZhc3RNYWxsb2NEZWFsbG9jYXRvci5nZXQoKS5nZXQoKSkp
OwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRGljdGlvbmFy
eShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPENGU3RyaW5nUmVmLCBDRlR5cGVSZWY+
PiBrZXlWYWx1ZVBhaXJzKQpAQCAtNDI0LDE5ICs0MjQsMTkgQEAgc3RhdGljIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGNyZWF0ZURpY3Rpb25hcnkoc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGEKICAgICAgICAgdmFsdWVzLnVuY2hlY2tlZEFwcGVuZChrZXlWYWx1ZVBhaXIuc2Vjb25k
KTsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga2V5cy5kYXRhKCksIHZhbHVlcy5kYXRhKCksIGtleVZhbHVlUGFpcnMu
c2l6ZSgpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSwga2V5
VmFsdWVQYWlycy5zaXplKCksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGVuY29kZVNlc3Npb25IaXN0b3J5KGNvbnN0IEJhY2tGb3J3YXJkTGlzdFN0
YXRlJiBiYWNrRm9yd2FyZExpc3RTdGF0ZSkKIHsKICAgICBBU1NFUlQoIWJhY2tGb3J3YXJkTGlz
dFN0YXRlLmN1cnJlbnRJbmRleCB8fCBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgu
dmFsdWUoKSA8IGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zLnNpemUoKSk7CiAKLSAgICBhdXRv
IHNlc3Npb25IaXN0b3J5VmVyc2lvbk51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJnNlc3Npb25IaXN0b3J5VmVy
c2lvbikpOworICAgIGF1dG8gc2Vzc2lvbkhpc3RvcnlWZXJzaW9uTnVtYmVyID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVyU0ludDMyVHlw
ZSwgJnNlc3Npb25IaXN0b3J5VmVyc2lvbikpOwogCiAgICAgaWYgKCFiYWNrRm9yd2FyZExpc3RT
dGF0ZS5jdXJyZW50SW5kZXgpCiAgICAgICAgIHJldHVybiBjcmVhdGVEaWN0aW9uYXJ5KHsgeyBz
ZXNzaW9uSGlzdG9yeVZlcnNpb25LZXksIHNlc3Npb25IaXN0b3J5VmVyc2lvbk51bWJlci5nZXQo
KSB9IH0pOwogCi0gICAgYXV0byBlbnRyaWVzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYWNrRm9yd2FyZExpc3RTdGF0ZS5pdGVtcy5zaXplKCks
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBhdXRvIGVudHJpZXMgPSBhZG9wdENGKENG
QXJyYXlDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBiYWNrRm9yd2FyZExp
c3RTdGF0ZS5pdGVtcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKICAgICBzaXpl
X3QgdG90YWxEYXRhU2l6ZSA9IDA7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBiYWNr
Rm9yd2FyZExpc3RTdGF0ZS5pdGVtcykgewpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBlbmNvZGVTZXNzaW9uSGlzdG9yeShjb25zdCBCYWNrRm9y
d2FyZExpc3RTdGF0CiAgICAgICAgIGF1dG8gb3JpZ2luYWxVUkwgPSBpdGVtLnBhZ2VTdGF0ZS5t
YWluRnJhbWVTdGF0ZS5vcmlnaW5hbFVSTFN0cmluZy5jcmVhdGVDRlN0cmluZygpOwogICAgICAg
ICBhdXRvIGRhdGEgPSB0b3RhbERhdGFTaXplIDw9IG1heGltdW1TZXNzaW9uU3RhdGVEYXRhU2l6
ZSA/IGVuY29kZVNlc3Npb25IaXN0b3J5RW50cnlEYXRhKGl0ZW0ucGFnZVN0YXRlLm1haW5GcmFt
ZVN0YXRlKSA6IG51bGxwdHI7CiAgICAgICAgIGF1dG8gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVZhbHVlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGl0ZW0ucGFnZVN0YXRlLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwotICAgICAgICBhdXRvIHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNJbnQ2NFR5cGUsICZzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VmFsdWUpKTsK
KyAgICAgICAgYXV0byBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gYWRvcHRDRihDRk51
bWJlckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwga0NGTnVtYmVyU0ludDY0VHlwZSwg
JnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lWYWx1ZSkpOwogCiAgICAgICAgIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IGVudHJ5RGljdGlvbmFyeTsKIApAQCAtNDcyLDcgKzQ3Miw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBlbmNvZGVTZXNzaW9uSGlzdG9yeShj
b25zdCBCYWNrRm9yd2FyZExpc3RTdGF0CiAgICAgfQogCiAgICAgdWludDMyX3QgY3VycmVudElu
ZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4LnZhbHVlKCk7Ci0gICAgYXV0
byBjdXJyZW50SW5kZXhOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZjdXJyZW50SW5kZXgpKTsKKyAgICBhdXRv
IGN1cnJlbnRJbmRleE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoZmFzdE1hbGxvY0NG
QWxsb2NhdG9yKCksIGtDRk51bWJlclNJbnQzMlR5cGUsICZjdXJyZW50SW5kZXgpKTsKIAogICAg
IHJldHVybiBjcmVhdGVEaWN0aW9uYXJ5KHsgeyBzZXNzaW9uSGlzdG9yeVZlcnNpb25LZXksIHNl
c3Npb25IaXN0b3J5VmVyc2lvbk51bWJlci5nZXQoKSB9LCB7IHNlc3Npb25IaXN0b3J5Q3VycmVu
dEluZGV4S2V5LCBjdXJyZW50SW5kZXhOdW1iZXIuZ2V0KCkgfSwgeyBzZXNzaW9uSGlzdG9yeUVu
dHJpZXNLZXksIGVudHJpZXMuZ2V0KCkgfSB9KTsKIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCBSZWZQ
dHI8QVBJOjpEYXRhPiBlbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoY29uc3QgU2Vzc2lvblN0YXRl
JiBzZXNzaW9uU3RhdGUpCiB7CiAgICAgYXV0byBzZXNzaW9uSGlzdG9yeURpY3Rpb25hcnkgPSBl
bmNvZGVTZXNzaW9uSGlzdG9yeShzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3RhdGUpOwog
ICAgIGF1dG8gcHJvdmlzaW9uYWxVUkxTdHJpbmcgPSBzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxV
UkwuaXNOdWxsKCkgPyBudWxscHRyIDogc2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMLnN0cmlu
ZygpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiByZW5kZXJU
cmVlU2l6ZU51bWJlcihhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGtDRk51bWJlclNJbnQ2NFR5cGUsICZzZXNzaW9uU3RhdGUucmVuZGVyVHJlZVNpemUpKSk7Cisg
ICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiByZW5kZXJUcmVlU2l6ZU51bWJlcihhZG9wdENGKENG
TnVtYmVyQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCBrQ0ZOdW1iZXJTSW50NjRUeXBl
LCAmc2Vzc2lvblN0YXRlLnJlbmRlclRyZWVTaXplKSkpOwogICAgIFJldGFpblB0cjxDRkJvb2xl
YW5SZWY+IGlzQXBwSW5pdGlhdGVkID0gYWRvcHRDRihzZXNzaW9uU3RhdGUuaXNBcHBJbml0aWF0
ZWQgPyBrQ0ZCb29sZWFuVHJ1ZSA6IGtDRkJvb2xlYW5GYWxzZSk7CiAKICAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBzdGF0ZURpY3Rpb25hcnk7CkBAIC01MDAsNyArNTAwLDcgQEAgUmVm
UHRyPEFQSTo6RGF0YT4gZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKGNvbnN0IFNlc3Npb25TdGF0
ZSYgc2Vzc2lvblN0YXRlKQogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBhdXRvIHdyaXRlU3Ry
ZWFtID0gYWRvcHRDRihDRldyaXRlU3RyZWFtQ3JlYXRlV2l0aEFsbG9jYXRlZEJ1ZmZlcnMoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0cikpOworICAgIGF1dG8gd3JpdGVTdHJlYW0gPSBhZG9w
dENGKENGV3JpdGVTdHJlYW1DcmVhdGVXaXRoQWxsb2NhdGVkQnVmZmVycyhmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IoKSwgbnVsbHB0cikpOwogICAgIGlmICghd3JpdGVTdHJlYW0pCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC0xMTM1LDcgKzExMzUsNyBAQCBib29sIGRlY29kZUxlZ2FjeVNl
c3Npb25TdGF0ZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IHNpemUsIFNlc3Npb25TdGF0
ZSYgcwogICAgIGlmICh2ZXJzaW9uTnVtYmVyICE9IHNlc3Npb25TdGF0ZURhdGFWZXJzaW9uKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNmUHJvcGVydHlMaXN0ID0gYWRvcHRD
RihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ5dGVzICsgc2l6ZW9mKHVpbnQz
Ml90KSwgc2l6ZSAtIHNpemVvZih1aW50MzJfdCkpKS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1t
dXRhYmxlLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgYXV0byBjZlByb3BlcnR5TGlzdCA9IGFk
b3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3Io
KSwgYWRvcHRDRihDRkRhdGFDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGJ5dGVzICsg
c2l6ZW9mKHVpbnQzMl90KSwgc2l6ZSAtIHNpemVvZih1aW50MzJfdCkpKS5nZXQoKSwga0NGUHJv
cGVydHlMaXN0SW1tdXRhYmxlLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgYXV0byBzZXNzaW9u
U3RhdGVEaWN0aW9uYXJ5ID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oY2ZQcm9w
ZXJ0eUxpc3QuZ2V0KCkpOwogICAgIGlmICghc2Vzc2lvblN0YXRlRGljdGlvbmFyeSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KaW5kZXggNmQzMzM4NjllNGUwMDEyZDI3ZDNmZTg1ZDg1ZTUzYTRlZDk2OTYw
YS4uZDRiOTI3NWQ3MDYwZThkOWFjY2NjNTAyZGIyZTY5MGUwYTk3N2NlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC03NjgsNyArNzY4
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dJbWFnZUluUXVpY2tMb29rUHJldmlld1BhbmVs
KFNoYXJlYWJsZUJpdG1hcCYgaW1hZ2VCaXRtYXAKICAgICBpZiAoIWltYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGltYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDApKTsKICAgICBh
dXRvIGRlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0
YShpbWFnZURhdGEuZ2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZilVVFR5cGVQTkcuaWRlbnRp
ZmllciwgMSwgbnVsbHB0cikpOwogICAgIGlmICghZGVzdGluYXRpb24pCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IDIyOWQ2MmQyZjBkMjBlODk0MTcyZTI0MWZiYjE3ZjYxYTNkZTM0ZjYuLmE0YTk5
YjM2MmQwNzkzNzAzZWExM2Y5ZjY2MmVjNjQzMjA1NzBhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNjE5LDcgKzYxOSw3
IEBAIHN0YXRpYyB2b2lkIGdldEFsbFNjcmlwdHNJblBERkRvY3VtZW50KENHUERGRG9jdW1lbnRS
ZWYgcGRmRG9jdW1lbnQsIFZlY3RvcjxSZXRhCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gKGxlbmd0aCA+IDEgJiYgYnl0ZXNbMF0g
PT0gMHhGRSAmJiBieXRlc1sxXSA9PSAweEZGKSA/IGtDRlN0cmluZ0VuY29kaW5nVW5pY29kZSA6
IGtDRlN0cmluZ0VuY29kaW5nVVRGODsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBz
Y3JpcHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGJ5dGVzLCBsZW5ndGgsIGVuY29kaW5nLCB0cnVlKSk7CisgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gc2NyaXB0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhmYXN0
TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgYnl0ZXMsIGxlbmd0aCwgZW5jb2RpbmcsIHRydWUpKTsKICAg
ICAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC04
NzQsNyArODc0LDcgQEAgc3RhdGljIHZvaWQgZGF0YVByb3ZpZGVyR2V0Qnl0ZVJhbmdlc0NhbGxi
YWNrKHZvaWQqIGluZm8sIENGTXV0YWJsZUFycmF5UmVmIGJ1ZmYKICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3BsdWdpbiA9IFdURk1vdmUocGx1Z2luKSwgJmRhdGFSZXN1bHRzLCByYW5n
ZXMsIGNvdW50LCAmZGF0YVNlbWFwaG9yZV0gewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgICAgIHBsdWdpbi0+Z2V0UmVzb3VyY2VCeXRlc0F0
UG9zaXRpb24ocmFuZ2VzW2ldLmxlbmd0aCwgcmFuZ2VzW2ldLmxvY2F0aW9uLCBbaSwgJmRhdGFS
ZXN1bHRzLCAmZGF0YVNlbWFwaG9yZV0oY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBieXRl
c0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgZGF0YVJlc3VsdHNbaV0gPSBhZG9wdENGKENGRGF0
YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBieXRlcywgYnl0ZXNDb3VudCkpOworICAgICAg
ICAgICAgICAgIGRhdGFSZXN1bHRzW2ldID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoZmFzdE1hbGxv
Y0NGQWxsb2NhdG9yKCksIGJ5dGVzLCBieXRlc0NvdW50KSk7CiAgICAgICAgICAgICAgICAgZGF0
YVNlbWFwaG9yZS5zaWduYWwoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CkBAIC04OTAs
NyArODkwLDcgQEAgc3RhdGljIHZvaWQgZGF0YVByb3ZpZGVyR2V0Qnl0ZVJhbmdlc0NhbGxiYWNr
KHZvaWQqIGluZm8sIENGTXV0YWJsZUFycmF5UmVmIGJ1ZmYKIAogICAgIGZvciAoYXV0byYgcmVz
dWx0IDogZGF0YVJlc3VsdHMpIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAwKSk7
CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShmYXN0TWFsbG9jQ0ZB
bGxvY2F0b3IoKSwgMCwgMCkpOwogICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYnVmZmVycywg
cmVzdWx0LmdldCgpKTsKICAgICB9CiB9CkBAIC0xNzI0LDcgKzE3MjQsNyBAQCB2b2lkIFBERlBs
dWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbgogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlEID09IHBk
ZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOworICAgICAgICBtX2RhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDApKTsK
IAogICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0ZXMsIGxlbmd0aCk7CiAg
ICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKQEAgLTE3NTYsNyArMTc1Niw3IEBAIHZvaWQg
UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3QKIHZvaWQgUERGUGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3Ro
KHVpbnQ2NF90IHRhcmdldExlbmd0aCkKIHsKICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9k
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKKyAgICAgICAgbV9kYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAw
KSk7CiAKICAgICBhdXRvIGN1cnJlbnRMZW5ndGggPSBDRkRhdGFHZXRMZW5ndGgobV9kYXRhLmdl
dCgpKTsKICAgICBBU1NFUlQoY3VycmVudExlbmd0aCA+PSAwKTsKQEAgLTE3NjcsNyArMTc2Nyw3
IEBAIHZvaWQgUERGUGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKHVpbnQ2NF90IHRhcmdl
dExlbmd0aCkKIHZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGF0YSkKLSAgICAg
ICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKKyAgICAgICAg
bV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRv
cigpLCAwKSk7CiAKICAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyAr
IGxlbmd0aCk7CiAgICAgbWVtY3B5KENGRGF0YUdldE11dGFibGVCeXRlUHRyKG1fZGF0YS5nZXQo
KSkgKyBtX3N0cmVhbWVkQnl0ZXMsIGJ5dGVzLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IGEy
NzM3NWIyOWNlZWZhYjM4NWU0OGQwODNkZWM1YjdhMGViZDc0MTEuLjYxNjBmZjFlNzQ3OTcwZGI0
ZWQ5OWVjMjMzNzY0YWRjYWFjZTU3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTI5Niw3ICsyOTYsNyBA
QCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShJbnRSZWN0
IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZQogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0
YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgYXV0byBkYXRhID0gYWRvcHRDRihD
RkRhdGFDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwKSk7CiAKICAgICBh
dXRvIGRhdGFDb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRh
KGRhdGEuZ2V0KCkpKTsKICAgICBhdXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRt
YXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpOwpAQCAtMzEzLDcgKzMxMyw3IEBA
IFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKEludFJlY3Qg
cmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplCiAgICAgICAgIHJlY3Quc2V0WShuZXh0UmVjdFkpOwog
CiAgICAgICAgIENHUmVjdCBtZWRpYUJveCA9IENHUmVjdE1ha2UoMCwgMCwgYml0bWFwU2l6ZS53
aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKTsKLSAgICAgICAgYXV0byBtZWRpYUJveERhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZShOVUxMLCAoY29uc3QgVUludDggKikmbWVkaWFCb3gsIHNp
emVvZihDR1JlY3QpKSk7CisgICAgICAgIGF1dG8gbWVkaWFCb3hEYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIChjb25zdCBVSW50OCAqKSZtZWRpYUJv
eCwgc2l6ZW9mKENHUmVjdCkpKTsKICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gKENGRGljdGlv
bmFyeVJlZilAewogICAgICAgICAgICAgKE5TU3RyaW5nICopa0NHUERGQ29udGV4dE1lZGlhQm94
IDogKE5TRGF0YSAqKW1lZGlhQm94RGF0YS5nZXQoKQogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkNTQwOWJlZGNlNTYxN2E0
YTA3ZjcyMTJhODdmZmQ2MmQ2ZjAwMGY3Li5lYjI1MjFjZGFjNzE1M2MyZDM1YzdhYmI1YzVhMmZj
YTEyMDUxNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNTQ2OSw3ICs1NDY5LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERklt
cGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnQKICAgICBX
ZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAw
OwogCi0gICAgcGRmUGFnZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkp
OworICAgIHBkZlBhZ2VEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpLCAwKSk7CiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKGNvcmVGcmFtZSkg
ewpAQCAtNTQ5OCw3ICs1NDk4LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnQKICAgICAgICAg
ICAgICAgICBpZiAocGFnZSA+PSBwYWdlQ291bnQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGFnZUluZm8g
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAg
ICAgICAgICAgICAgIGF1dG8gcGFnZUluZm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICAgICAgICAg
ICAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UoY29udGV4dC5nZXQoKSwgcGFnZUluZm8uZ2V0KCkp
OwogCiAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0Q0cgY3R4KGNvbnRleHQuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCAxZTIzYWZmZWRlY2FmZGJjZGEzMTAzOGM5MWJmODA4ZGFhODgzZWMxLi5mMDZk
YWYwYzNlZTNlM2RjYWZkMDQxMzEwZGFlNzI5YzhiZDM4MTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNzc1LDcgKzc3
NSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZGcm9tUERGRG9jdW1lbnQoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIFBERkRvY3VtZW50ICpwCiAgICAgICAgIGlmIChwYWdlID49IHBhZ2VD
b3VudCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IHBhZ2VJbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAs
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKKyAgICAgICAgYXV0byBwYWdlSW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAg
ICAgICAgIENHUERGQ29udGV4dEJlZ2luUGFnZShjb250ZXh0LCBwYWdlSW5mby5nZXQoKSk7CiAg
ICAgICAgIGRyYXdQREZQYWdlKHBkZkRvY3VtZW50LCBwYWdlLCBjb250ZXh0LCBwcmludEluZm8u
cGFnZVNldHVwU2NhbGVGYWN0b3IsIENHU2l6ZU1ha2UocHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVy
V2lkdGgsIHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMDM0ZTJiNDhh
YTAxNWFmN2NlZDc2NmRlOWFjZTgyOGRlZDEyMjY0OS4uZjQ3MTM2NGZjNGY3ZWUxZThmMWVkODA3
YTM3NDEzNjcyYTI3MTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYQogICAgIGlmICghUEFMOjppc0F1ZGlvVG9vbGJveENvcmVGcmFtZXdvcmtBdmFp
bGFibGUoKSB8fCAhUEFMOjpjYW5Mb2FkX0F1ZGlvVG9vbGJveENvcmVfQXVkaW9Db21wb25lbnRB
cHBseVNlcnZlclJlZ2lzdHJhdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBy
ZWdpc3RyYXRpb25zID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CisgICAgYXV0byByZWdpc3RyYXRpb25zID0gYWRv
cHRDRihDRkRhdGFDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkpOwogICAgIGlmICghcmVnaXN0cmF0aW9ucykKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKaW5kZXggNGQwYjI2ZDJjZGUzYmZjMDMzNjZl
Yzk5MTUwM2RmYmU1YWEyMmE1Ni4uYmY3OTdkOWNlM2E3MDQwZWFkNjQxMmNhNmM0YmIwNjNmMjQx
YjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
CiAgICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNv
b2tpZUFQSSgpKSB7CiAgICAgICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICAgICAgaWYgKHNlc3Npb24pCi0g
ICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNv
cHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKKyAg
ICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29w
eUNvb2tpZVN0b3JhZ2UoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIHNlc3Npb24uZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CkBA
IC05Niw3ICs5Niw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyCiAgICAgaWYgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKSB7CiAgICAg
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpKTsKICAgICAgICAgaWYgKHN0b3JhZ2VTZXNzaW9uKQotICAgICAgICAgICAg
Y29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3Rv
cmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOworICAgICAg
ICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29v
a2llU3RvcmFnZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgc3RvcmFnZVNlc3Npb24uZ2V0KCkp
KTsKICAgICB9CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdl
U2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENG
LmNwcAppbmRleCAzZTU1MmRlYjlhOWUzNGQwMzgwZmRjMzdkZmQ5NGY5NWE3YTlkZDFhLi4wMzM1
NWE3YTExM2RmYWJlMzhhY2U3ZmNmZGJiNjZhNzVhNTFlZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudENGLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIq
IGluc3BlY3RvckF0dGFjaERpc2FibGVkU2V0dGluZyA9ICJpbnNwZWN0b3JBdHRhY2hEaQogCiBz
dGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25z
dCBTdHJpbmcmIGtleSkKIHsKLSAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhG
b3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIgSW5zcGVjdG9yIFNldHRpbmcgLSAlQCIpLCBr
ZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEZvcm1hdChmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgQ0ZTVFIoIldlYktp
dCBXZWIgSW5zcGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSkpOwogfQogCiBzdGF0aWMgU3RyaW5nIGxvYWRTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9ydC5tbQppbmRl
eCA5OGE2Y2ZmZTU3NWE4MTNiNzNhZTEwMWU4YzJjMzM4NmNkYWRlM2M5Li44NGQ3OWNlYzMyMjUy
MzExOWI1YWE4MTJmOGY2Zjk0OGRhNTc1Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9ydC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9ydC5tbQpAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgdm9p
ZCBMb2FkV2ViTG9jYWxpemVkU3RyaW5nc1RpbWVyQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJSZWYg
dGltZXIsIHZvaWQgKgogCiBzdGF0aWMgdm9pZCBMb2FkV2ViTG9jYWxpemVkU3RyaW5ncygpCiB7
Ci0gICAgYXV0byB0aW1lciA9IGFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAsIDAsIDAsICZMb2FkV2Vi
TG9jYWxpemVkU3RyaW5nc1RpbWVyQ2FsbGJhY2ssIE5VTEwpKTsKKyAgICBhdXRvIHRpbWVyID0g
YWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgQ0ZB
YnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAsIDAsIDAsICZMb2FkV2ViTG9jYWxpemVkU3RyaW5n
c1RpbWVyQ2FsbGJhY2ssIE5VTEwpKTsKICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BH
ZXRDdXJyZW50KCksIHRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0
eUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0
eUxpc3QubW0KaW5kZXggNDc5MTZlNzgxYTI0MzA0MWUxZDU4MjQ4YWJmYWVhYWMwYzU3YmI1OS4u
ZWU2NGEyYWZiYjliMDg3NGUzZTJkZDE1MDdiZjE2YzkxYzdiMjI1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbQpA
QCAtNTcsNyArNTcsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBIaXN0b3J5UHJvcGVydHlMaXN0
V3JpdGVyOjpyZWxlYXNlRGF0YSgpCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiAw
OwogICAgIG1fYnVmZmVyID0gMDsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoMCwgYnVmZmVyLCBtX2J1ZmZlclNpemUs
IDApKTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29w
eShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgYnVmZmVyLCBtX2J1ZmZlclNpemUsIDApKTsKICAg
ICBpZiAoIWRhdGEpIHsKICAgICAgICAgQ0ZBbGxvY2F0b3JEZWFsbG9jYXRlKDAsIGJ1ZmZlcik7
CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJFbGVtZW50RGljdGlvbmFyeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViRWxlbWVudERpY3Rpb25hcnkubW0KaW5kZXggMDI2NGI1N2MyM2UyYjdjYzg4N2I5ZDYw
YTI1NmYxNzc4YTNhYjRmYy4uNzVlMzgxMDBmNjIwYTEyOGI2MWE2ZTBjYmNhZTcyMWFiOTcyMWVj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJFbGVtZW50RGlj
dGlvbmFyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkVsZW1lbnRE
aWN0aW9uYXJ5Lm1tCkBAIC04Miw3ICs4Miw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZUxvb2t1cFRh
YmxlCiAgICAgaWYgKGxvb2t1cFRhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxvb2t1
cFRhYmxlKCkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgMCwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCBOVUxMKSk7
CisgICAgbG9va3VwVGFibGUoKSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShm
YXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgMCwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCBOVUxMKSk7CiAKICAgICBhZGRMb29rdXBLZXkoV2ViRWxlbWVudERPTU5vZGVLZXks
IEBzZWxlY3RvcihfZG9tTm9kZSkpOwogICAgIGFkZExvb2t1cEtleShXZWJFbGVtZW50RnJhbWVL
ZXksIEBzZWxlY3Rvcihfd2ViRnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KaW5kZXggYWZmZDIxMTE4NjcwMzM5
MTBkM2EyYjc1OGQ5MjcyOTVmM2Y1ZGY1Yi4uZTg5N2I4MjgxMGU4ZGYzYmMwMDMzZWYzN2Y2MmUy
YTJhNWNkYWRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJM
b2NhbGl6YWJsZVN0cmluZ3MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KQEAgLTU1LDcgKzU1LDcgQEAgTlNTdHJpbmcgKldlYkxv
Y2FsaXplZFN0cmluZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgKnN0cmluZ3NCdW5kbGUs
IGNvbnN0IGMKICAgICAgICAgfQogICAgIH0KICAgICBOU1N0cmluZyAqbm90Rm91bmQgPSBAImxv
Y2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIjsKLSAgICBhdXRvIGtleVN0cmluZyA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShOVUxMLCBrZXksIGtDRlN0cmluZ0VuY29k
aW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIGF1dG8ga2V5U3RyaW5nID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGZhc3RNYWxsb2NDRkFsbG9jYXRvcigp
LCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIE5T
U3RyaW5nICpyZXN1bHQgPSBbYnVuZGxlIGxvY2FsaXplZFN0cmluZ0ZvcktleTooX19icmlkZ2Ug
TlNTdHJpbmcgKilrZXlTdHJpbmcuZ2V0KCkgdmFsdWU6bm90Rm91bmQgdGFibGU6bmlsXTsKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5k
IGxvY2FsaXphYmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBrZXkpOwogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4
dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1t
CmluZGV4IDhkNTA2YTIzZmM2NGEwZTk2MjkyYjZlMWYxMGUzZjI0ODA2OGU0MDMuLjMwZDZlMWIz
NDZiMDZhMWUxYjNjNzZkZTliMjJmM2M4ZmU1MmY3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tCkBAIC02MywxMSArNjMsMTEgQEAgLSAo
TlNTdHJpbmcgKilfd2ViX2NhcGl0YWxpemVSRkM4MjJIZWFkZXJGaWVsZE5hbWUKICAgICAgICAg
ICAgICAgICBpZiAoQ0ZTdHJpbmdHZXRCeXRlcyhuYW1lLCBDRlJhbmdlTWFrZSgwLCBsZW4pLCBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgMCwgRkFMU0UsIE5VTEwsIDAsIE5VTEwpID09IGxl
bikgewogICAgICAgICAgICAgICAgICAgICAvLyBDYW4gYmUgZW5jb2RlZCBpbiBJU09MYXRpbjEK
ICAgICAgICAgICAgICAgICAgICAgdXNlVW5pQ2hhclB0ciA9IEZBTFNFOwotICAgICAgICAgICAg
ICAgICAgICBjaGFyUHRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KENGQWxsb2NhdG9yQWxsb2NhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbGVuICsgMSwgMCkpOworICAgICAgICAgICAgICAgICAgICBj
aGFyUHRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KENGQWxsb2NhdG9yQWxsb2NhdGUoZmFzdE1hbGxv
Y0NGQWxsb2NhdG9yKCksIGxlbiArIDEsIDApKTsKICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJp
bmdHZXRDU3RyaW5nKG5hbWUsIGNoYXJQdHIsIGxlbisxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xh
dGluMSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdXNl
VW5pQ2hhclB0ciA9IFRSVUU7Ci0gICAgICAgICAgICAgICAgICAgIHVuaUNoYXJQdHIgPSBzdGF0
aWNfY2FzdDxVbmlDaGFyKj4oQ0ZBbGxvY2F0b3JBbGxvY2F0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBsZW4gKiBzaXplb2YoVW5pQ2hhciksIDApKTsKKyAgICAgICAgICAgICAgICAgICAgdW5pQ2hh
clB0ciA9IHN0YXRpY19jYXN0PFVuaUNoYXIqPihDRkFsbG9jYXRvckFsbG9jYXRlKGZhc3RNYWxs
b2NDRkFsbG9jYXRvcigpLCBsZW4gKiBzaXplb2YoVW5pQ2hhciksIDApKTsKICAgICAgICAgICAg
ICAgICAgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKG5hbWUsIENGUmFuZ2VNYWtlKDAsIGxlbiks
IHVuaUNoYXJQdHIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTgzLDkg
KzgzLDkgQEAgLSAoTlNTdHJpbmcgKilfd2ViX2NhcGl0YWxpemVSRkM4MjJIZWFkZXJGaWVsZE5h
bWUKICAgICB9CiAgICAgaWYgKHNvbWV0aGluZ0NoYW5nZWQpIHsKICAgICAgICAgaWYgKHVzZVVu
aUNoYXJQdHIpCi0gICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdW5pQ2hhclB0ciwgbGVuLCBu
dWxscHRyKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGZhc3RNYWxsb2NDRkFsbG9j
YXRvcigpLCB1bmlDaGFyUHRyLCBsZW4sIG51bGxwdHIpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoQ1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjaGFyUHRyLCBrQ0ZTdHJp
bmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29w
eShmYXN0TWFsbG9jQ0ZBbGxvY2F0b3IoKSwgY2hhclB0ciwga0NGU3RyaW5nRW5jb2RpbmdJU09M
YXRpbjEsIG51bGxwdHIpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHJlc3VsdCA9IHNlbGY7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCmluZGV4IDlkZjRjNDk0NThlMzljYWZl
ZWRhZDYxZGRlNTJlNjg1Y2NlMDBmMWYuLjk4MDRiOWVmNWEzYjc3NDBmZWZmNDA5OTdlMWNlOTI5
N2JlZTYwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
QmFzZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQpAQCAtNzUsNyArNzUsNyBAQCAtIChpZClpbml0V2l0
aFBhdGg6KE5TU3RyaW5nICopcGx1Z2luUGF0aAogICAgICAgICByZXR1cm4gbmlsOwogICAgIAog
ICAgIHBhdGggPSBbcGx1Z2luUGF0aCBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoXTsK
LSAgICBjZkJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKENGVVJMUmVmKVtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF0pKTsKKyAgICBjZkJ1bmRs
ZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIChDRlVS
TFJlZilbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdKSk7CiAKICAgICBpZiAoIWNmQnVuZGxl
KSB7CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250cm9sbGVyLm1tCmluZGV4IGY3MDI1ZmE0Nzhj
MWY3MTU4OWQ1NjZhNGU3NjAxMTNjZjNiZGI4YjMuLjA4YTc2NGE3ZDU0ZjFhYjZlZTMzNWE4Yzhk
NWNiOGQ5YjliYWQxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KQEAgLTE4NCw3ICsxODQsNyBAQCAtIChpZClp
bml0V2l0aERvY3VtZW50VmlldzooTlNWaWV3ICopdmlldwogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIF9kb2N1bWVudFZpZXcgPSB2aWV3OwogICAgIF92aWV3cyA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdOwotICAgIF9jaGVja3NJblByb2dyZXNzID0gKE5TTXV0YWJsZVNldCAqKUNG
U2V0Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCBOVUxMKTsKKyAgICBfY2hlY2tzSW5Qcm9ncmVzcyA9
IChOU011dGFibGVTZXQgKilDRlNldENyZWF0ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9y
KCksIDAsIE5VTEwpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1Ry
YWNrZXJDbGllbnQubW0KaW5kZXggOGY0NzgzY2IzMDhhNjRkZGNhNWIxMzQ0MzU1MDgyMzYwNDE3
ZTA1Mi4uYWFjMTYzNTNjYjY5MGZlZDAyMWNmMTJkOWJhYzllZjc5Y2ZjMmIxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5tbQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFdlYlBy
b2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoV2ViQ29yZTo6RnJh
bWUmKQogICAgIAogICAgIC8vIFVzZSBhIENGRGljdGlvbmFyeSBzbyB3ZSBjYW4gYWRkIHRoZSBD
R0NvbG9yUmVmIHdpdGhvdXQgY29tcGlsZSBlcnJvcnMuIEFuZCB0aGVuIHRoYW5rcyB0bwogICAg
IC8vIHRvbGwtZnJlZSBicmlkZ2luZyB3ZSBjYW4gcGFzcyB0aGUgQ0ZEaWN0aW9uYXJ5IGFzIGFu
IE5TRGljdGlvbmFyeSB0byBwb3N0Tm90aWZpY2F0aW9uLgotICAgIGF1dG8gdXNlckluZm8gPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMiwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGUoZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDIsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZSh1c2VySW5mby5nZXQoKSwgV2ViVmlld1Byb2dyZXNzRXN0aW1hdGVk
UHJvZ3Jlc3NLZXksIHByb2dyZXNzKTsKICAgICBpZiAoYm9keUJhY2tncm91bmRDb2xvcikKICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCksIFdlYlZpZXdQcm9ncmVz
c0JhY2tncm91bmRDb2xvcktleSwgYm9keUJhY2tncm91bmRDb2xvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA2M2Q3ODE5OTRmYWJmNDY1YmU4
ZTU1MGVhOGNmOGI2Yzc4MmIzMjkyLi44MDdmZDBjODM3ZDY3NmRlMjU1ZGFkOTgxNTg3NzE1NzU1
ODc0OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
QEAgLTI0MjgsOCArMjQyOCw4IEBAIC0gKHZvaWQpbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKIAogc3RhdGljIE5TVVJMICpjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkKIHsKLSAg
ICBhdXRvIFVVSURSZWYgPSBhZG9wdENGKENGVVVJRENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
KSk7Ci0gICAgYXV0byBVVUlEU3RyaW5nID0gYWRvcHRDRihDRlVVSURDcmVhdGVTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgVVVJRFJlZi5nZXQoKSkpOworICAgIGF1dG8gVVVJRFJlZiA9IGFk
b3B0Q0YoQ0ZVVUlEQ3JlYXRlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpKSk7CisgICAgYXV0byBV
VUlEU3RyaW5nID0gYWRvcHRDRihDRlVVSURDcmVhdGVTdHJpbmcoZmFzdE1hbGxvY0NGQWxsb2Nh
dG9yKCksIFVVSURSZWYuZ2V0KCkpKTsKICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJhcHBsZXdlYmRhdGE6Ly8lQCIsIChfX2JyaWRn
ZSBOU1N0cmluZyAqKVVVSURTdHJpbmcuZ2V0KCldXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0KaW5kZXgg
NWVhYWZlMTJlMGQ2Nzc0MzRjNmUyMjU2YmYxMzE1ZTE5M2IzNWNjMy4uOTAzZTk2MzA2NTQ1NTdl
NDk1NDcxZDY4YTE4NGE2NzNjNmI3YTllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCkBAIC05NSw3ICs5NSw3
IEBAIC0gKE5TRGF0YSAqKWNvbnZlcnRQb3N0U2NyaXB0RGF0YVNvdXJjZVRvUERGOihOU0RhdGEg
KilkYXRhCiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBwcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFSZWYpZGF0YSkpOwogICAg
IEFTU0VSVChwcm92aWRlci5nZXQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJl
Zj4gcmVzdWx0ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDApKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcmVzdWx0ID0gYWRvcHRD
RihDRkRhdGFDcmVhdGVNdXRhYmxlKGZhc3RNYWxsb2NDRkFsbG9jYXRvcigpLCAwKSk7CiAgICAg
QVNTRVJUKHJlc3VsdC5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dEYXRhQ29uc3VtZXJSZWY+
IGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEocmVzdWx0
LmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5k
ZXggMGMzOTZjOGIyNzg4YjdhMmVkZTc0MTUyZWNkZGExYTI5OGUwNTkxOS4uYzE2ZDRjZDNkOGM0
ODUwZjlmY2IxNzkyN2NmMmRiZTNjYjc4MGZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTMwMiw3ICsxMzAyLDcgQEAgLSAodm9pZClfcmVtb3Zl
RnJvbUFsbFdlYlZpZXdzU2V0CiAtICh2b2lkKV9hZGRUb0FsbFdlYlZpZXdzU2V0CiB7CiAgICAg
aWYgKCFhbGxXZWJWaWV3c1NldCgpKQotICAgICAgICBhbGxXZWJWaWV3c1NldCgpID0gYWRvcHRD
RihDRlNldENyZWF0ZU11dGFibGUoTlVMTCwgMCwgJk5vblJldGFpbmluZ1NldENhbGxiYWNrcykp
OworICAgICAgICBhbGxXZWJWaWV3c1NldCgpID0gYWRvcHRDRihDRlNldENyZWF0ZU11dGFibGUo
ZmFzdE1hbGxvY0NGQWxsb2NhdG9yKCksIDAsICZOb25SZXRhaW5pbmdTZXRDYWxsYmFja3MpKTsK
IAogICAgIENGU2V0U2V0VmFsdWUoYWxsV2ViVmlld3NTZXQoKS5nZXQoKSwgKF9fYnJpZGdlIENG
VHlwZVJlZilzZWxmKTsKIH0KQEAgLTY4MTUsNyArNjgxNSw3IEBAIC0gKE5TVmlldyAqKXByZXZp
b3VzVmFsaWRLZXlWaWV3CiAKICAgICAvLyBVc2UgYSB2aXNpdGVkIHNldCBzbyB3ZSBkb24ndCBs
b29wIGluZGVmaW5pdGVseSB3aGVuIHdhbGtpbmcgY3Jhenkga2V5IGxvb3BzLgogICAgIC8vIEFw
cEtpdCB1c2VzIHN1Y2ggc2V0cyBpbnRlcm5hbGx5IGFuZCB3ZSB3YW50IG91ciBsb29wIHRvIGJl
IGFzIHJvYnVzdCBhcyBpdHMgbG9vcHMuCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZVNldFJlZj4g
dmlzaXRlZFZpZXdzID0gYWRvcHRDRihDRlNldENyZWF0ZU11dGFibGUoMCwgMCwgMCkpOworICAg
IGF1dG8gdmlzaXRlZFZpZXdzID0gYWRvcHRDRihDRlNldENyZWF0ZU11dGFibGUoZmFzdE1hbGxv
Y0NGQWxsb2NhdG9yKCksIDAsIG51bGxwdHIpKTsKICAgICBDRlNldEFkZFZhbHVlKHZpc2l0ZWRW
aWV3cy5nZXQoKSwgcmVzdWx0KTsKIAogICAgIE5TVmlldyAqcHJldmlvdXNWaWV3ID0gc2VsZjsK
</data>
<flag name="commit-queue"
          id="468936"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>