<?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>121988</bug_id>
          
          <creation_ts>2013-09-26 15:34:43 -0700</creation_ts>
          <short_desc>Remove Windows code</short_desc>
          <delta_ts>2013-09-26 15:45:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>933745</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-26 15:34:43 -0700</bug_when>
    <thetext>Remove Windows code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933749</commentid>
    <comment_count>1</comment_count>
      <attachid>212761</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-26 15:37:03 -0700</bug_when>
    <thetext>Created attachment 212761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933751</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-26 15:45:06 -0700</bug_when>
    <thetext>Committed r156508: &lt;http://trac.webkit.org/changeset/156508&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212761</attachid>
            <date>2013-09-26 15:37:03 -0700</date>
            <delta_ts>2013-09-26 15:41:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121988-20130926153703.patch</filename>
            <type>text/plain</type>
            <size>42985</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWExMDVlNGZjMDkwMGZk
MjM1M2I0ZjBiNWJmODIzZjg5Mzc2NmY3OC4uZWE4N2Q0MjFiNjAyOTUyMTViMmU4NjI5YjgwMGJl
Mzk5MjczODNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDEzLTA5LTI2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIFdpbmRv
d3MgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIxOTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBQ
bGF0Zm9ybS93aW4vV29ya1F1ZXVlV2luLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQv
Q2hpbGRQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6OmxvYWRQbHVnaW5zSWZOZWNlc3NhcnkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisKKzIwMTMtMDktMjYgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBTdG9wIHVzaW5nIFBh
c3NXZWFrCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjE5NjgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApp
bmRleCA2NDg2MmM4NDZjMzhkODQxM2Q4MzYwOTk3YTY1ZGRjN2EzOTMyM2Y5Li5lMDU5ZWJhZGZk
YThlYTEzZjQ3YjE5MzgzOWMzYTc5ZTk3ZGZlODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTI2LDEwICsxMjYsNiBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB9OwogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmll
ciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyLnBvcnQgPT0gTUFDSF9QT1JUX05VTEw7
IH0KLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgdHlwZWRlZiBIQU5ETEUgSWRlbnRpZmllcjsKLSAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhJZGVudGlmaWVy
JiBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyJiBjbGllbnRJZGVudGlmaWVyKTsKLSAgICBz
dGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1
cm4gIWlkZW50aWZpZXI7IH0KICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHR5
cGVkZWYgaW50IElkZW50aWZpZXI7CiAgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9CkBAIC0zMTIsMjMg
KzMwOCw2IEBAIHByaXZhdGU6CiAgICAgeHBjX2Nvbm5lY3Rpb25fdCBtX3hwY0Nvbm5lY3Rpb247
CiAjZW5kaWYKIAotI2VsaWYgT1MoV0lORE9XUykKLSAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5l
Y3Rpb24gcXVldWUuCi0gICAgdm9pZCByZWFkRXZlbnRIYW5kbGVyKCk7Ci0gICAgdm9pZCB3cml0
ZUV2ZW50SGFuZGxlcigpOwotCi0gICAgLy8gQ2FsbGVkIGJ5IENvbm5lY3Rpb246OlN5bmNNZXNz
YWdlU3RhdGU6OndhaXRXaGlsZURpc3BhdGNoaW5nU2VudFdpbjMyTWVzc2FnZXMuCi0gICAgLy8g
VGhlIGFic29sdXRlVGltZSBpcyBpbiBzZWNvbmRzLCBzdGFydGluZyBvbiBKYW51YXJ5IDEsIDE5
NzAuIFRoZSB0aW1lIGlzIGFzc3VtZWQgdG8gdXNlIHRoZQotICAgIC8vIHNhbWUgdGltZSB6b25l
IGFzIFdURjo6Y3VycmVudFRpbWUoKS4gRGlzcGF0Y2hlcyBzZW50IChub3QgcG9zdGVkKSBtZXNz
YWdlcyB0byB0aGUgcGFzc2VkLWluCi0gICAgLy8gc2V0IG9mIEhXTkRzIHVudGlsIHRoZSBzZW1h
cGhvcmUgaXMgc2lnbmFsZWQgb3IgYWJzb2x1dGVUaW1lIGlzIHJlYWNoZWQuIFJldHVybnMgdHJ1
ZSBpZiB0aGUKLSAgICAvLyBzZW1hcGhvcmUgaXMgc2lnbmFsZWQsIGZhbHNlIG90aGVyd2lzZS4K
LSAgICBzdGF0aWMgYm9vbCBkaXNwYXRjaFNlbnRNZXNzYWdlc1VudGlsKGNvbnN0IFZlY3RvcjxI
V05EPiYgd2luZG93cywgV1RGOjpCaW5hcnlTZW1hcGhvcmUmIHNlbWFwaG9yZSwgZG91YmxlIGFi
c29sdXRlVGltZSk7Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gbV9yZWFkQnVmZmVyOwotICAgIE9W
RVJMQVBQRUQgbV9yZWFkU3RhdGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVy
PiBtX3BlbmRpbmdXcml0ZUVuY29kZXI7Ci0gICAgT1ZFUkxBUFBFRCBtX3dyaXRlU3RhdGU7Ci0g
ICAgSEFORExFIG1fY29ubmVjdGlvblBpcGU7CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VU
UykKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24gcXVldWUuCiAgICAgdm9pZCByZWFk
eVJlYWRIYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
NWEwZWQyZmQ5NjRmOWZjN2EzYjg4ZTE5Mzg3MTUwMGYxN2MzZWQwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzUxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgotCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgot
Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgQ29yZUlQQyB7Ci0KLS8vIEZJWE1F
OiBSZW5hbWUgdGhpcyBvciB1c2UgYSBkaWZmZXJlbnQgY29uc3RhbnQgb24gd2luZG93cy4KLXN0
YXRpYyBjb25zdCBzaXplX3QgaW5saW5lTWVzc2FnZU1heFNpemUgPSA0MDk2OwotCi1ib29sIENv
bm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJzKEhBTkRMRSYgc2VydmVy
SWRlbnRpZmllciwgSEFORExFJiBjbGllbnRJZGVudGlmaWVyKQotewotICAgIFN0cmluZyBwaXBl
TmFtZTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHVuc2lnbmVkIHVuaXF1ZUlEID0g
cmFuZG9tTnVtYmVyKCkgKiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7Ci0g
ICAgICAgIHBpcGVOYW1lID0gU3RyaW5nOjpmb3JtYXQoIlxcXFwuXFxwaXBlXFxjb20uYXBwbGUu
V2ViS2l0LiV4IiwgdW5pcXVlSUQpOwotCi0gICAgICAgIHNlcnZlcklkZW50aWZpZXIgPSA6OkNy
ZWF0ZU5hbWVkUGlwZShwaXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJUEVf
QUNDRVNTX0RVUExFWCB8IEZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFIHwgRklMRV9GTEFH
X09WRVJMQVBQRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQSVBFX1RZUEVfTUVTU0FHRSB8IFBJUEVfUkVBRE1PREVfTUVTU0FHRSwgMSwgaW5saW5lTWVz
c2FnZU1heFNpemUsIGlubGluZU1lc3NhZ2VNYXhTaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7Ci0gICAgICAgIGlmICghc2VydmVySWRlbnRp
ZmllciAmJiA6OkdldExhc3RFcnJvcigpID09IEVSUk9SX1BJUEVfQlVTWSkgewotICAgICAgICAg
ICAgLy8gVGhlcmUgd2FzIGFscmVhZHkgYSBwaXBlIHdpdGggdGhpcyBuYW1lLCB0cnkgYWdhaW4u
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIGlmICghc2VydmVySWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgY2xpZW50SWRlbnRpZmllciA9IDo6Q3JlYXRlRmlsZVcocGlwZU5hbWUuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJ
VEUsIDAsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfRkxBR19PVkVSTEFQUEVELCAwKTsKLSAgICBp
ZiAoIWNsaWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgOjpDbG9zZUhhbmRsZShzZXJ2ZXJJZGVu
dGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIERXT1JEIG1vZGUg
PSBQSVBFX1JFQURNT0RFX01FU1NBR0U7Ci0gICAgaWYgKCE6OlNldE5hbWVkUGlwZUhhbmRsZVN0
YXRlKGNsaWVudElkZW50aWZpZXIsICZtb2RlLCAwLCAwKSkgewotICAgICAgICA6OkNsb3NlSGFu
ZGxlKHNlcnZlcklkZW50aWZpZXIpOwotICAgICAgICA6OkNsb3NlSGFuZGxlKGNsaWVudElkZW50
aWZpZXIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIgaWRl
bnRpZmllcikKLXsKLSAgICBtZW1zZXQoJm1fcmVhZFN0YXRlLCAwLCBzaXplb2YobV9yZWFkU3Rh
dGUpKTsKLSAgICBtX3JlYWRTdGF0ZS5oRXZlbnQgPSA6OkNyZWF0ZUV2ZW50VygwLCBGQUxTRSwg
RkFMU0UsIDApOwotCi0gICAgbWVtc2V0KCZtX3dyaXRlU3RhdGUsIDAsIHNpemVvZihtX3dyaXRl
U3RhdGUpKTsKLSAgICBtX3dyaXRlU3RhdGUuaEV2ZW50ID0gOjpDcmVhdGVFdmVudFcoMCwgRkFM
U0UsIEZBTFNFLCAwKTsKLQotICAgIG1fY29ubmVjdGlvblBpcGUgPSBpZGVudGlmaWVyOwotfQot
Ci12b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgaWYgKG1fY29u
bmVjdGlvblBpcGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1faXNDb25uZWN0ZWQgPSBmYWxzZTsKLQotICAgIG1fY29ubmVjdGlvblF1ZXVlLT51bnJl
Z2lzdGVyQW5kQ2xvc2VIYW5kbGUobV9yZWFkU3RhdGUuaEV2ZW50KTsKLSAgICBtX3JlYWRTdGF0
ZS5oRXZlbnQgPSAwOwotCi0gICAgbV9jb25uZWN0aW9uUXVldWUtPnVucmVnaXN0ZXJBbmRDbG9z
ZUhhbmRsZShtX3dyaXRlU3RhdGUuaEV2ZW50KTsKLSAgICBtX3dyaXRlU3RhdGUuaEV2ZW50ID0g
MDsKLQotICAgIDo6Q2xvc2VIYW5kbGUobV9jb25uZWN0aW9uUGlwZSk7Ci0gICAgbV9jb25uZWN0
aW9uUGlwZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotfQotCi12b2lkIENvbm5lY3Rpb246OnJl
YWRFdmVudEhhbmRsZXIoKQotewotICAgIGlmIChtX2Nvbm5lY3Rpb25QaXBlID09IElOVkFMSURf
SEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm47Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAg
ICAgICAvLyBDaGVjayBpZiB3ZSBnb3Qgc29tZSBkYXRhLgotICAgICAgICBEV09SRCBudW1iZXJP
ZkJ5dGVzUmVhZCA9IDA7Ci0gICAgICAgIGlmICghOjpHZXRPdmVybGFwcGVkUmVzdWx0KG1fY29u
bmVjdGlvblBpcGUsICZtX3JlYWRTdGF0ZSwgJm51bWJlck9mQnl0ZXNSZWFkLCBGQUxTRSkpIHsK
LSAgICAgICAgICAgIERXT1JEIGVycm9yID0gOjpHZXRMYXN0RXJyb3IoKTsKLQotICAgICAgICAg
ICAgc3dpdGNoIChlcnJvcikgewotICAgICAgICAgICAgY2FzZSBFUlJPUl9CUk9LRU5fUElQRToK
LSAgICAgICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBjYXNlIEVSUk9SX01PUkVfREFUQTogewotICAgICAgICAgICAg
ICAgIC8vIFJlYWQgdGhlIHJlc3Qgb2YgdGhlIG1lc3NhZ2Ugb3V0IG9mIHRoZSBwaXBlLgotCi0g
ICAgICAgICAgICAgICAgRFdPUkQgYnl0ZXNUb1JlYWQgPSAwOwotICAgICAgICAgICAgICAgIGlm
ICghOjpQZWVrTmFtZWRQaXBlKG1fY29ubmVjdGlvblBpcGUsIDAsIDAsIDAsIDAsICZieXRlc1Rv
UmVhZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJv
cigpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfQlJPS0VOX1BJUEUp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gOjpHZXRPdmVy
bGFwcGVkUmVzdWx0IHRvbGQgdXMgdGhlcmUncyBtb3JlIGRhdGEuIDo6UGVla05hbWVkUGlwZSBz
aG91bGRuJ3QKLSAgICAgICAgICAgICAgICAvLyBjb250cmFkaWN0IGl0IQotICAgICAgICAgICAg
ICAgIEFTU0VSVChieXRlc1RvUmVhZCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFieXRlc1RvUmVh
ZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBtX3JlYWRC
dWZmZXIuZ3JvdyhtX3JlYWRCdWZmZXIuc2l6ZSgpICsgYnl0ZXNUb1JlYWQpOwotICAgICAgICAg
ICAgICAgIGlmICghOjpSZWFkRmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBtX3JlYWRCdWZmZXIuZGF0
YSgpICsgbnVtYmVyT2ZCeXRlc1JlYWQsIGJ5dGVzVG9SZWFkLCAwLCAmbV9yZWFkU3RhdGUpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIERXT1JEIGVycm9yID0gOjpHZXRMYXN0RXJyb3IoKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZmlndXJl
IG91dCB3aHkgd2UncmUgZ2V0dGluZyB0aGlzIGVycm9yLgotICAgICAgICAgICAgY2FzZSBFUlJP
Ul9JT19JTkNPTVBMRVRFOgotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW1fcmVhZEJ1ZmZlci5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtZXNzYWdlLCBsZXQncyBkaXNwYXRjaCBpdC4KLQot
ICAgICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gTWVzc2FnZURlY29k
ZXI6OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZl
ci5zaXplKCkpKTsKLSAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoZGVjb2Rlci5y
ZWxlYXNlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmluZCBvdXQgdGhlIHNpemUgb2Yg
dGhlIG5leHQgbWVzc2FnZSBpbiB0aGUgcGlwZSAoaWYgdGhlcmUgaXMgb25lKSBzbyB0aGF0IHdl
IGNhbiByZWFkCi0gICAgICAgIC8vIGl0IGFsbCBpbiBvbmUgb3BlcmF0aW9uLiAoVGhpcyBpcyBq
dXN0IGFuIG9wdGltaXphdGlvbiB0byBhdm9pZCBhbiBleHRyYSBwYXNzIHRocm91Z2ggdGhlCi0g
ICAgICAgIC8vIGxvb3AgKGlmIHdlIGNob3NlIGEgYnVmZmVyIHNpemUgdGhhdCB3YXMgdG9vIHNt
YWxsKSBvciBhbGxvY2F0aW5nIGV4dHJhIG1lbW9yeSAoaWYgd2UKLSAgICAgICAgLy8gY2hvc2Ug
YSBidWZmZXIgc2l6ZSB0aGF0IHdhcyB0b28gbGFyZ2UpLikKLSAgICAgICAgRFdPUkQgYnl0ZXNU
b1JlYWQgPSAwOwotICAgICAgICBpZiAoITo6UGVla05hbWVkUGlwZShtX2Nvbm5lY3Rpb25QaXBl
LCAwLCAwLCAwLCAwLCAmYnl0ZXNUb1JlYWQpKSB7Ci0gICAgICAgICAgICBEV09SRCBlcnJvciA9
IDo6R2V0TGFzdEVycm9yKCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfQlJPS0VO
X1BJUEUpIHsKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWJ5dGVzVG9SZWFkKSB7Ci0gICAgICAg
ICAgICAvLyBUaGVyZSdzIG5vIG1lc3NhZ2Ugd2FpdGluZyBpbiB0aGUgcGlwZS4gU2NoZWR1bGUg
YSByZWFkIG9mIHRoZSBmaXJzdCBieXRlIG9mIHRoZQotICAgICAgICAgICAgLy8gbmV4dCBtZXNz
YWdlLiBXZSdsbCBmaW5kIG91dCB0aGUgbWVzc2FnZSdzIGFjdHVhbCBzaXplIHdoZW4gaXQgYXJy
aXZlcy4gKElmIHdlCi0gICAgICAgICAgICAvLyBjaGFuZ2UgdGhpcyB0byByZWFkIG1vcmUgdGhh
biBhIHNpbmdsZSBieXRlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB3ZSdsbCBoYXZlIHRvCi0g
ICAgICAgICAgICAvLyBkZWFsIHdpdGggbV9yZWFkQnVmZmVyIHBvdGVudGlhbGx5IGJlaW5nIGxh
cmdlciB0aGFuIHRoZSBtZXNzYWdlIHdlIHJlYWQgYWZ0ZXIKLSAgICAgICAgICAgIC8vIGNhbGxp
bmcgOjpHZXRPdmVybGFwcGVkUmVzdWx0IGFib3ZlLikKLSAgICAgICAgICAgIGJ5dGVzVG9SZWFk
ID0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fcmVhZEJ1ZmZlci5yZXNpemUoYnl0ZXNUb1Jl
YWQpOwotCi0gICAgICAgIC8vIEVpdGhlciByZWFkIHRoZSBuZXh0IGF2YWlsYWJsZSBtZXNzYWdl
ICh3aGljaCBzaG91bGQgb2NjdXIgc3luY2hyb25vdXNseSksIG9yIHN0YXJ0IGFuCi0gICAgICAg
IC8vIGFzeW5jaHJvbm91cyByZWFkIG9mIHRoZSBuZXh0IG1lc3NhZ2UgdGhhdCBiZWNvbWVzIGF2
YWlsYWJsZS4KLSAgICAgICAgQk9PTCByZXN1bHQgPSA6OlJlYWRGaWxlKG1fY29ubmVjdGlvblBp
cGUsIG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIDAsICZtX3JlYWRT
dGF0ZSk7Ci0gICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIHdhcyBh
bHJlYWR5IGEgbWVzc2FnZSB3YWl0aW5nIGluIHRoZSBwaXBlLCBhbmQgd2UgcmVhZCBpdCBzeW5j
aHJvbm91c2x5LgotICAgICAgICAgICAgLy8gUHJvY2VzcyBpdC4KLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJvcigp
OwotCi0gICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9JT19QRU5ESU5HKSB7Ci0gICAgICAgICAg
ICAvLyBUaGVyZSBhcmUgbm8gbWVzc2FnZXMgaW4gdGhlIHBpcGUgY3VycmVudGx5LiByZWFkRXZl
bnRIYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGFnYWluIG9uY2UgdGhlcmUgaXMgYSBtZXNzYWdlLgot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVycm9yID09IEVS
Uk9SX01PUkVfREFUQSkgewotICAgICAgICAgICAgLy8gRWl0aGVyIGEgbWVzc2FnZSBpcyBhdmFp
bGFibGUgd2hlbiB3ZSBkaWRuJ3QgdGhpbmsgb25lIHdhcywgb3IgdGhlIG1lc3NhZ2UgaXMgbGFy
Z2VyCi0gICAgICAgICAgICAvLyB0aGFuIDo6UGVla05hbWVkUGlwZSB0b2xkIHVzLiBUaGUgZm9y
bWVyIHNlZW1zIGZhciBtb3JlIGxpa2VseS4gUHJvYmFibHkgdGhlIG1lc3NhZ2UKLSAgICAgICAg
ICAgIC8vIGJlY2FtZSBhdmFpbGFibGUgYmV0d2VlbiBvdXIgY2FsbHMgdG8gOjpQZWVrTmFtZWRQ
aXBlIGFuZCA6OlJlYWRGaWxlIGFib3ZlLiBHbyBiYWNrCi0gICAgICAgICAgICAvLyB0byB0aGUg
dG9wIG9mIHRoZSBsb29wIHRvIHVzZSA6OkdldE92ZXJsYXBwZWRSZXN1bHQgdG8gcmV0cmlldmUg
dGhlIGF2YWlsYWJsZSBkYXRhLgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBoYW5kbGUgb3RoZXIgZXJyb3JzIGhlcmUuCi0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0KLQotdm9pZCBDb25uZWN0aW9u
Ojp3cml0ZUV2ZW50SGFuZGxlcigpCi17Ci0gICAgaWYgKG1fY29ubmVjdGlvblBpcGUgPT0gSU5W
QUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybjsKLQotICAgIERXT1JEIG51bWJlck9m
Qnl0ZXNXcml0dGVuID0gMDsKLSAgICBpZiAoITo6R2V0T3ZlcmxhcHBlZFJlc3VsdChtX2Nvbm5l
Y3Rpb25QaXBlLCAmbV93cml0ZVN0YXRlLCAmbnVtYmVyT2ZCeXRlc1dyaXR0ZW4sIEZBTFNFKSkg
ewotICAgICAgICBEV09SRCBlcnJvciA9IDo6R2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGlmIChl
cnJvciA9PSBFUlJPUl9JT19JTkNPTVBMRVRFKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGZpZ3VyZSBvdXQgd2h5IHdlJ3JlIGdldHRpbmcgdGhpcyBlcnJvci4KLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfQlJPS0VO
X1BJUEUpIHsKLSAgICAgICAgICAgIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0K
LQotICAgIC8vIFRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgc28gd2UgYXJlIG5vdyBk
b25lIHdpdGggaXRzIGVuY29kZXIuIENsZWFyaW5nIHRoaXMgbWVtYmVyCi0gICAgLy8gd2lsbCBh
bGxvdyB1cyB0byBzZW5kIG1lc3NhZ2VzIGFnYWluLgotICAgIG1fcGVuZGluZ1dyaXRlRW5jb2Rl
ciA9IG51bGxwdHI7Ci0KLSAgICAvLyBOb3cgdGhhdCB0aGUgcGVuZGluZyB3cml0ZSBoYXMgZmlu
aXNoZWQsIHdlIGNhbiB0cnkgdG8gc2VuZCBhIG5ldyBtZXNzYWdlLgotICAgIHNlbmRPdXRnb2lu
Z01lc3NhZ2VzKCk7Ci19Ci0KLWJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCi17Ci0gICAgLy8gV2Ug
Y29ubmVjdGVkIHRoZSB0d28gZW5kcyBvZiB0aGUgcGlwZSBpbiBjcmVhdGVTZXJ2ZXJBbmRDbGll
bnRJZGVudGlmaWVycy4KLSAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKLQotICAgIC8vIFN0YXJ0
IGxpc3RlbmluZyBmb3IgcmVhZCBhbmQgd3JpdGUgc3RhdGUgZXZlbnRzLgotICAgIG1fY29ubmVj
dGlvblF1ZXVlLT5yZWdpc3RlckhhbmRsZShtX3JlYWRTdGF0ZS5oRXZlbnQsIGJpbmQoJkNvbm5l
Y3Rpb246OnJlYWRFdmVudEhhbmRsZXIsIHRoaXMpKTsKLSAgICBtX2Nvbm5lY3Rpb25RdWV1ZS0+
cmVnaXN0ZXJIYW5kbGUobV93cml0ZVN0YXRlLmhFdmVudCwgYmluZCgmQ29ubmVjdGlvbjo6d3Jp
dGVFdmVudEhhbmRsZXIsIHRoaXMpKTsKLQotICAgIC8vIFNjaGVkdWxlIGEgcmVhZC4KLSAgICBt
X2Nvbm5lY3Rpb25RdWV1ZS0+ZGlzcGF0Y2goYmluZCgmQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFu
ZGxlciwgdGhpcykpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQ29ubmVjdGlvbjo6
cGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygpIGNvbnN0Ci17Ci0gICAgLy8gV2Ugb25s
eSBhbGxvdyBzZW5kaW5nIG9uZSBhc3luY2hyb25vdXMgbWVzc2FnZSBhdCBhIHRpbWUuIElmIHdl
IHdhbnRlZCB0byBzZW5kIG1vcmUgdGhhbiBvbmUKLSAgICAvLyBhdCBvbmNlLCB3ZSdkIGhhdmUg
dG8gdXNlIG11bHRpcGxlIE9WRVJMQVBQRUQgc3RydWN0dXJlcyBhbmQgaG9sZCBvbnRvIG11bHRp
cGxlIHBlbmRpbmcKLSAgICAvLyBNZXNzYWdlRW5jb2RlcnMgKG9uZSBvZiBlYWNoIGZvciBlYWNo
IHNpbXVsdGFuZW91cyBhc3luY2hyb25vdXMgbWVzc2FnZSkuCi0gICAgcmV0dXJuICFtX3BlbmRp
bmdXcml0ZUVuY29kZXI7Ci19Ci0KLWJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2Fn
ZShQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQotewotICAgIEFTU0VSVCghbV9w
ZW5kaW5nV3JpdGVFbmNvZGVyKTsKLQotICAgIC8vIEp1c3QgYmFpbCBpZiB0aGUgaGFuZGxlIGhh
cyBiZWVuIGNsb3NlZC4KLSAgICBpZiAobV9jb25uZWN0aW9uUGlwZSA9PSBJTlZBTElEX0hBTkRM
RV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gV2UgcHV0IHRoZSBtZXNz
YWdlIElEIGxhc3QuCi0gICAgKmVuY29kZXIgPDwgMDsKLQotICAgIC8vIFdyaXRlIHRoZSBvdXRn
b2luZyBtZXNzYWdlLgotCi0gICAgaWYgKDo6V3JpdGVGaWxlKG1fY29ubmVjdGlvblBpcGUsIGVu
Y29kZXItPmJ1ZmZlcigpLCBlbmNvZGVyLT5idWZmZXJTaXplKCksIDAsICZtX3dyaXRlU3RhdGUp
KSB7Ci0gICAgICAgIC8vIFdlIHN1Y2Nlc3NmdWxseSBzZW50IHRoaXMgbWVzc2FnZS4KLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJv
cigpOwotCi0gICAgaWYgKGVycm9yID09IEVSUk9SX05PX0RBVEEpIHsKLSAgICAgICAgLy8gVGhl
IHBpcGUgaXMgYmVpbmcgY2xvc2VkLgotICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChlcnJvciAhPSBFUlJPUl9JT19Q
RU5ESU5HKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBzZW50IHNvb24uIEhv
bGQgb250byB0aGUgZW5jb2RlciBzbyB0aGF0IGl0IHdvbid0IGJlIGRlc3Ryb3llZAotICAgIC8v
IGJlZm9yZSB0aGUgd3JpdGUgY29tcGxldGVzLgotICAgIG1fcGVuZGluZ1dyaXRlRW5jb2RlciA9
IGVuY29kZXI7Ci0KLSAgICAvLyBXZSBjYW4gb25seSBzZW5kIG9uZSBhc3luY2hyb25vdXMgbWVz
c2FnZSBhdCBhIHRpbWUgKHNlZSBjb21tZW50IGluIHBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVz
c2FnZXMpLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBDb25uZWN0aW9uOjpkaXNwYXRj
aFNlbnRNZXNzYWdlc1VudGlsKGNvbnN0IFZlY3RvcjxIV05EPiYgd2luZG93cywgV1RGOjpCaW5h
cnlTZW1hcGhvcmUmIHNlbWFwaG9yZSwgZG91YmxlIGFic29sdXRlVGltZSkKLXsKLSAgICBpZiAo
d2luZG93cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzZW1hcGhvcmUud2FpdChhYnNvbHV0
ZVRpbWUpOwotCi0gICAgSEFORExFIGhhbmRsZSA9IHNlbWFwaG9yZS5ldmVudCgpOwotICAgIERX
T1JEIGhhbmRsZUNvdW50ID0gMTsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIERXT1JE
IGludGVydmFsID0gYWJzb2x1dGVUaW1lVG9XYWl0VGltZW91dEludGVydmFsKGFic29sdXRlVGlt
ZSk7Ci0gICAgICAgIGlmICghaW50ZXJ2YWwpIHsKLSAgICAgICAgICAgIC8vIENvbnNpZGVyIHRo
ZSB3YWl0IHRvIGhhdmUgdGltZWQgb3V0LCBldmVuIGlmIHRoZSBzZW1hcGhvcmUgaXMgY3VycmVu
dGx5IHNpZ25hbGVkLgotICAgICAgICAgICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBXVEY6OlRocmVh
ZENvbmRpdGlvbiBpbXBsZW1lbnRhdGlvbiBvZiBCaW5hcnlTZW1hcGhvcmU6OndhaXQuCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBEV09SRCByZXN1bHQg
PSA6Ok1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNFeChoYW5kbGVDb3VudCwgJmhhbmRsZSwgaW50
ZXJ2YWwsIFFTX1NFTkRNRVNTQUdFLCAwKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBXQUlUX09C
SkVDVF8wKSB7Ci0gICAgICAgICAgICAvLyBUaGUgc2VtYXBob3JlIHdhcyBzaWduYWxlZC4KLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXN1bHQgPT0g
V0FJVF9USU1FT1VUKSB7Ci0gICAgICAgICAgICAvLyBhYnNvbHV0ZVRpbWUgd2FzIHJlYWNoZWQu
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3Vs
dCA9PSBXQUlUX09CSkVDVF8wICsgaGFuZGxlQ291bnQpIHsKLSAgICAgICAgICAgIC8vIE9uZSBv
ciBtb3JlIHNlbnQgbWVzc2FnZXMgYXJlIGF2YWlsYWJsZS4gUHJvY2VzcyBzZW50IG1lc3NhZ2Vz
IGZvciBhbGwgdGhlIHdpbmRvd3MKLSAgICAgICAgICAgIC8vIHdlIHdlcmUgZ2l2ZW4sIHNpbmNl
IHdlIGRvbid0IGhhdmUgYSB3YXkgb2Yga25vd2luZyB3aGljaCB3aW5kb3cgaGFzIGF2YWlsYWJs
ZSBzZW50Ci0gICAgICAgICAgICAvLyBtZXNzYWdlcy4KLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgd2luZG93cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIE1TRyBt
ZXNzYWdlOwotICAgICAgICAgICAgICAgIDo6UGVla01lc3NhZ2VXKCZtZXNzYWdlLCB3aW5kb3dz
W2ldLCAwLCAwLCBQTV9OT1JFTU9WRSB8IFBNX1FTX1NFTkRNRVNTQUdFKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UocmVzdWx0ICE9IFdBSVRfRkFJTEVELCAiOjpNc2dXYWl0Rm9yTXVsdGlwbGVPYmpl
Y3RzRXggZmFpbGVkIHdpdGggZXJyb3IgJWx1IiwgOjpHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICI6Ok1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNF
eCByZXR1cm5lZCB1bmV4cGVjdGVkIHJlc3VsdCAlbHUiLCByZXN1bHQpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IDU3OTdmYWIzNzM5ZTBkZmEyM2U5ODEzNzMy
NDNiN2QyMzNlMjM5N2MuLjA1Mjg5YjA1MmE1NWU1ZjFhYjI1ZmU2YjAwODU2YmY4MmNjOTY2NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC02OCw4ICs2OCw2IEBA
IHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZE1lbW9yeTsKICNpZiBPUyhEQVJX
SU4pCiAgICAgICAgIG11dGFibGUgbWFjaF9wb3J0X3QgbV9wb3J0OwotI2VsaWYgT1MoV0lORE9X
UykKLSAgICAgICAgbXV0YWJsZSBIQU5ETEUgbV9oYW5kbGU7CiAjZWxpZiBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKICAgICAgICAgbXV0YWJsZSBpbnQgbV9maWxlRGVzY3JpcHRvcjsKICNlbmRp
ZgpAQCAtODYsMTkgKzg0LDEyIEBAIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiAwIG9uIGZh
aWx1cmUuCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5PiBjcmVhdGVGcm9tVk1C
dWZmZXIodm9pZCosIHNpemVfdCk7CiAKLSNpZiBPUyhXSU5ET1dTKQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNoYXJlZE1lbW9yeT4gYWRvcHQoSEFORExFLCBzaXplX3QsIFByb3RlY3Rpb24pOwot
I2VuZGlmCi0KICAgICB+U2hhcmVkTWVtb3J5KCk7CiAKICAgICBib29sIGNyZWF0ZUhhbmRsZShI
YW5kbGUmLCBQcm90ZWN0aW9uKTsKIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9CiAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQotI2lm
IE9TKFdJTkRPV1MpCi0gICAgSEFORExFIGhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxl
OyB9Ci0jZW5kaWYKIAogICAgIC8vIENyZWF0ZXMgYSBjb3B5LW9uLXdyaXRlIGNvcHkgb2YgdGhl
IGZpcnN0IHxzaXplfCBieXRlcy4KICAgICBQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRl
Q29weU9uV3JpdGVDb3B5KHNpemVfdCkgY29uc3Q7CkBAIC0xMTMsOCArMTA0LDYgQEAgcHJpdmF0
ZToKIAogI2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BvcnQ7Ci0jZWxpZiBPUyhX
SU5ET1dTKQotICAgIEhBTkRMRSBtX2hhbmRsZTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQogICAgIGludCBtX2ZpbGVEZXNjcmlwdG9yOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1dvcmtRdWV1ZS5oCmluZGV4IGQ5NTRmNTdkYjRmNmRkNzBjMmI2MWUwZjhmN2I0NmExZTExMWY0
OTAuLmE0ZmE5ZGNmMmZiNWFhYjdjNThlZWJhZGYxNTA5ZTg5YTA1MDdkZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL1dvcmtRdWV1ZS5oCkBAIC03MSwxMCArNzEsNiBAQCBwdWJsaWM6CiAKICNpZiBP
UyhEQVJXSU4pCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9Ci0KLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgdm9pZCBy
ZWdpc3RlckhhbmRsZShIQU5ETEUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKLSAgICB2b2lk
IHVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShIQU5ETEUpOwogI2VsaWYgUExBVEZPUk0oUVQpCiAg
ICAgUVNvY2tldE5vdGlmaWVyKiByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIFFTb2Nr
ZXROb3RpZmllcjo6VHlwZSwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogICAgIHZvaWQgZGlz
cGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgY29u
c3QgRnVuY3Rpb248dm9pZCgpPiYpOwpAQCAtOTYsNTggKzkyLDYgQEAgcHJpdmF0ZToKICNpZiBP
UyhEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKICAgICBk
aXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAg
Y2xhc3MgV29ya0l0ZW1XaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya0l0ZW1X
aW4+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtJdGVtV2lu
PiBjcmVhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYsIFdvcmtRdWV1ZSopOwotICAgICAgICB2
aXJ0dWFsIH5Xb3JrSXRlbVdpbigpOwotCi0gICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0
aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQotICAgICAgICBXb3JrUXVldWUqIHF1ZXVlKCkg
Y29uc3QgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQotCi0gICAgcHJvdGVjdGVkOgotICAgICAg
ICBXb3JrSXRlbVdpbihjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiwgV29ya1F1ZXVlKik7Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247Ci0gICAgICAg
IFJlZlB0cjxXb3JrUXVldWU+IG1fcXVldWU7Ci0gICAgfTsKLQotICAgIGNsYXNzIEhhbmRsZVdv
cmtJdGVtIDogcHVibGljIFdvcmtJdGVtV2luIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBjcmVhdGVCeUFkb3B0aW5nSGFuZGxlKEhBTkRM
RSwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYsIFdvcmtRdWV1ZSopOwotICAgICAgICB2aXJ0dWFs
IH5IYW5kbGVXb3JrSXRlbSgpOwotCi0gICAgICAgIHZvaWQgc2V0V2FpdEhhbmRsZShIQU5ETEUg
d2FpdEhhbmRsZSkgeyBtX3dhaXRIYW5kbGUgPSB3YWl0SGFuZGxlOyB9Ci0gICAgICAgIEhBTkRM
RSB3YWl0SGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV93YWl0SGFuZGxlOyB9Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICBIYW5kbGVXb3JrSXRlbShIQU5ETEUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
KT4mLCBXb3JrUXVldWUqKTsKLQotICAgICAgICBIQU5ETEUgbV9oYW5kbGU7Ci0gICAgICAgIEhB
TkRMRSBtX3dhaXRIYW5kbGU7Ci0gICAgfTsKLQotICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIGhh
bmRsZUNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7Ci0g
ICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09M
RUFOIHRpbWVyT3JXYWl0RmlyZWQpOwotICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29ya1RocmVh
ZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwotCi0gICAgYm9vbCB0cnlSZWdpc3RlckFzV29ya1Ro
cmVhZCgpOwotICAgIHZvaWQgdW5yZWdpc3RlckFzV29ya1RocmVhZCgpOwotICAgIHZvaWQgcGVy
Zm9ybVdvcmtPblJlZ2lzdGVyZWRXb3JrVGhyZWFkKCk7Ci0KLSAgICBzdGF0aWMgdm9pZCB1bnJl
Z2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihQYXNzUmVmUHRyPEhhbmRsZVdvcmtJdGVtPik7
Ci0gICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2Fs
bGJhY2sodm9pZCogY29udGV4dCk7Ci0KLSAgICB2b2xhdGlsZSBMT05HIG1faXNXb3JrVGhyZWFk
UmVnaXN0ZXJlZDsKLQotICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7Ci0gICAgVmVjdG9y
PFJlZlB0cjxXb3JrSXRlbVdpbj4+IG1fd29ya0l0ZW1RdWV1ZTsKLQotICAgIE11dGV4IG1faGFu
ZGxlc0xvY2s7Ci0gICAgSGFzaE1hcDxIQU5ETEUsIFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4+IG1f
aGFuZGxlczsKLQotICAgIEhBTkRMRSBtX3RpbWVyUXVldWU7CiAjZWxpZiBQTEFURk9STShRVCkK
ICAgICBjbGFzcyBXb3JrSXRlbVF0OwogICAgIFFUaHJlYWQqIG1fd29ya1RocmVhZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZTkwMWU3NTg2ZGNjYmI0MjM1NDQyZGI2MGI3NzFkNzk0
NjA5OTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwyNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgot
I2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLVNoYXJlZE1lbW9yeTo6SGFuZGxlOjpIYW5kbGUoKQotICAg
IDogbV9oYW5kbGUoMCkKLSAgICAsIG1fc2l6ZSgwKQotewotfQotCi1TaGFyZWRNZW1vcnk6Okhh
bmRsZTo6fkhhbmRsZSgpCi17Ci0gICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgOjpDbG9zZUhhbmRsZShtX2hhbmRsZSk7Ci19Ci0KLWJvb2wgU2hhcmVkTWVtb3J5OjpI
YW5kbGU6OmlzTnVsbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2hhbmRsZTsKLX0KLQotdm9p
ZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Piht
X3NpemUpOwotCi0gICAgLy8gSGFuZCBvZmYgb3duZXJzaGlwIG9mIG91ciBIQU5ETEUgdG8gdGhl
IHJlY2VpdmluZyBwcm9jZXNzLiBJdCB3aWxsIGNsb3NlIGl0IGZvciB1cy4KLSAgICAvLyBGSVhN
RTogSWYgdGhlIHJlY2VpdmluZyBwcm9jZXNzIGNyYXNoZXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRo
ZSBtZW1vcnksIHRoZSBtZW1vcnkgd2lsbCBiZQotICAgIC8vIGxlYWtlZC4gU2VlIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzQ3NTAyPi4KLSAgICBlbmNvZGVyIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDY0X3Q+KG1faGFuZGxlKTsKLSAgICBtX2hhbmRsZSA9IDA7Ci0KLSAgICAvLyBTZW5kIGFsb25n
IG91ciBQSUQgc28gdGhhdCB0aGUgcmVjZWl2aW5nIHByb2Nlc3MgY2FuIGR1cGxpY2F0ZSB0aGUg
SEFORExFIGZvciBpdHMgb3duIHVzZS4KLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQz
Ml90Pig6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSk7Ci19Ci0KLXN0YXRpYyBib29sIGdldER1cGxp
Y2F0ZWRIYW5kbGUoSEFORExFIHNvdXJjZUhhbmRsZSwgRFdPUkQgc291cmNlUElELCBIQU5ETEUm
IGR1cGxpY2F0ZWRIYW5kbGUpCi17Ci0gICAgZHVwbGljYXRlZEhhbmRsZSA9IDA7Ci0gICAgaWYg
KCFzb3VyY2VIYW5kbGUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgSEFORExFIHNvdXJj
ZVByb2Nlc3MgPSA6Ok9wZW5Qcm9jZXNzKFBST0NFU1NfRFVQX0hBTkRMRSwgRkFMU0UsIHNvdXJj
ZVBJRCk7Ci0gICAgaWYgKCFzb3VyY2VQcm9jZXNzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAvLyBDb3B5IHRoZSBoYW5kbGUgaW50byBvdXIgcHJvY2VzcyBhbmQgY2xvc2UgdGhlIGhh
bmRsZSB0aGF0IHRoZSBzZW5kaW5nIHByb2Nlc3MgY3JlYXRlZCBmb3IgdXMuCi0gICAgQk9PTCBz
dWNjZXNzID0gOjpEdXBsaWNhdGVIYW5kbGUoc291cmNlUHJvY2Vzcywgc291cmNlSGFuZGxlLCA6
OkdldEN1cnJlbnRQcm9jZXNzKCksICZkdXBsaWNhdGVkSGFuZGxlLCAwLCBGQUxTRSwgRFVQTElD
QVRFX1NBTUVfQUNDRVNTIHwgRFVQTElDQVRFX0NMT1NFX1NPVVJDRSk7Ci0gICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShzdWNjZXNzLCAiOjpEdXBsaWNhdGVIYW5kbGUgZmFpbGVkIHdpdGggZXJyb3Ig
JWx1IiwgOjpHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICA6OkNsb3NlSGFuZGxlKHNvdXJjZVByb2Nl
c3MpOwotCi0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLWJvb2wgU2hhcmVkTWVtb3J5OjpIYW5k
bGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFu
ZGxlKQotewotICAgIEFTU0VSVF9BUkcoaGFuZGxlLCAhaGFuZGxlLm1faGFuZGxlKTsKLSAgICBB
U1NFUlRfQVJHKGhhbmRsZSwgIWhhbmRsZS5tX3NpemUpOwotCi0gICAgdWludDY0X3Qgc2l6ZTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICB1aW50NjRfdCBzb3VyY2VIYW5kbGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3Vy
Y2VIYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1aW50MzJfdCBzb3VyY2VQ
SUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2VQSUQpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBIQU5ETEUgZHVwbGljYXRlZEhhbmRsZTsKLSAgICBpZiAoIWdldER1cGxp
Y2F0ZWRIYW5kbGUocmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KHNvdXJjZUhhbmRsZSksIHNvdXJj
ZVBJRCwgZHVwbGljYXRlZEhhbmRsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGhh
bmRsZS5tX2hhbmRsZSA9IGR1cGxpY2F0ZWRIYW5kbGU7Ci0gICAgaGFuZGxlLm1fc2l6ZSA9IHNp
emU7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZShzaXplX3Qgc2l6ZSkKLXsKLSAgICBIQU5ETEUgaGFuZGxlID0gOjpD
cmVhdGVGaWxlTWFwcGluZ1coSU5WQUxJRF9IQU5ETEVfVkFMVUUsIDAsIFBBR0VfUkVBRFdSSVRF
LCAwLCBzaXplLCAwKTsKLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICB2b2lkKiBiYXNlQWRkcmVzcyA9IDo6TWFwVmlld09mRmlsZShoYW5kbGUsIEZJTEVfTUFQX0FM
TF9BQ0NFU1MsIDAsIDAsIHNpemUpOwotICAgIGlmICghYmFzZUFkZHJlc3MpIHsKLSAgICAgICAg
OjpDbG9zZUhhbmRsZShoYW5kbGUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBtZW1vcnkgPSBhZG9wdFJlZihuZXcgU2hhcmVkTWVtb3J5KTsK
LSAgICBtZW1vcnktPm1fc2l6ZSA9IHNpemU7Ci0gICAgbWVtb3J5LT5tX2RhdGEgPSBiYXNlQWRk
cmVzczsKLSAgICBtZW1vcnktPm1faGFuZGxlID0gaGFuZGxlOwotCi0gICAgcmV0dXJuIG1lbW9y
eS5yZWxlYXNlKCk7Ci19Ci0KLXN0YXRpYyBEV09SRCBhY2Nlc3NSaWdodHMoU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCi17Ci0gICAgc3dpdGNoIChwcm90ZWN0aW9uKSB7Ci0g
ICAgY2FzZSBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5OgotICAgICAgICByZXR1cm4gRklMRV9NQVBf
UkVBRDsKLSAgICBjYXNlIFNoYXJlZE1lbW9yeTo6UmVhZFdyaXRlOgotICAgICAgICByZXR1cm4g
RklMRV9NQVBfUkVBRCB8IEZJTEVfTUFQX1dSSVRFOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4g
U2hhcmVkTWVtb3J5OjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFByb3RlY3Rpb24gcHJv
dGVjdGlvbikKLXsKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtZW1vcnkgPSBhZG9wdChoYW5k
bGUubV9oYW5kbGUsIGhhbmRsZS5tX3NpemUsIHByb3RlY3Rpb24pOwotICAgIGlmICghbWVtb3J5
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFRoZSBTaGFyZWRNZW1vcnkgb2JqZWN0IG5v
dyBvd25zIHRoZSBIQU5ETEUuCi0gICAgaGFuZGxlLm1faGFuZGxlID0gMDsKLQotICAgIHJldHVy
biBtZW1vcnkucmVsZWFzZSgpOwotfQotCi1QYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVk
TWVtb3J5OjphZG9wdChIQU5ETEUgaGFuZGxlLCBzaXplX3Qgc2l6ZSwgUHJvdGVjdGlvbiBwcm90
ZWN0aW9uKQotewotICAgIGlmICghaGFuZGxlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIERX
T1JEIGRlc2lyZWRBY2Nlc3MgPSBhY2Nlc3NSaWdodHMocHJvdGVjdGlvbik7Ci0KLSAgICB2b2lk
KiBiYXNlQWRkcmVzcyA9IDo6TWFwVmlld09mRmlsZShoYW5kbGUsIGRlc2lyZWRBY2Nlc3MsIDAs
IDAsIHNpemUpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYmFzZUFkZHJlc3MsICI6Ok1hcFZp
ZXdPZkZpbGUgZmFpbGVkIHdpdGggZXJyb3IgJWx1IiwgOjpHZXRMYXN0RXJyb3IoKSk7Ci0gICAg
aWYgKCFiYXNlQWRkcmVzcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBtZW1vcnkgPSBhZG9wdFJlZihuZXcgU2hhcmVkTWVtb3J5KTsKLSAgICBtZW1vcnkt
Pm1fc2l6ZSA9IHNpemU7Ci0gICAgbWVtb3J5LT5tX2RhdGEgPSBiYXNlQWRkcmVzczsKLSAgICBt
ZW1vcnktPm1faGFuZGxlID0gaGFuZGxlOwotCi0gICAgcmV0dXJuIG1lbW9yeS5yZWxlYXNlKCk7
Ci19Ci0KLVNoYXJlZE1lbW9yeTo6flNoYXJlZE1lbW9yeSgpCi17Ci0gICAgQVNTRVJUKG1fZGF0
YSk7Ci0gICAgQVNTRVJUKG1faGFuZGxlKTsKLQotICAgIDo6VW5tYXBWaWV3T2ZGaWxlKG1fZGF0
YSk7Ci0gICAgOjpDbG9zZUhhbmRsZShtX2hhbmRsZSk7Ci19Ci0KLWJvb2wgU2hhcmVkTWVtb3J5
OjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFByb3RlY3Rpb24gcHJvdGVjdGlvbikKLXsK
LSAgICBBU1NFUlRfQVJHKGhhbmRsZSwgIWhhbmRsZS5tX2hhbmRsZSk7Ci0gICAgQVNTRVJUX0FS
RyhoYW5kbGUsICFoYW5kbGUubV9zaXplKTsKLQotICAgIEhBTkRMRSBwcm9jZXNzSGFuZGxlID0g
OjpHZXRDdXJyZW50UHJvY2VzcygpOwotCi0gICAgSEFORExFIGR1cGxpY2F0ZWRIYW5kbGU7Ci0g
ICAgaWYgKCE6OkR1cGxpY2F0ZUhhbmRsZShwcm9jZXNzSGFuZGxlLCBtX2hhbmRsZSwgcHJvY2Vz
c0hhbmRsZSwgJmR1cGxpY2F0ZWRIYW5kbGUsIGFjY2Vzc1JpZ2h0cyhwcm90ZWN0aW9uKSwgRkFM
U0UsIDApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBoYW5kbGUubV9oYW5kbGUgPSBk
dXBsaWNhdGVkSGFuZGxlOwotICAgIGhhbmRsZS5tX3NpemUgPSBtX3NpemU7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLVBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0
ZUNvcHlPbldyaXRlQ29weShzaXplX3Qgc2l6ZSkgY29uc3QKLXsKLSAgICBBU1NFUlRfQVJHKHNp
emUsIHNpemUgPD0gdGhpcy0+c2l6ZSgpKTsKLQotICAgIEhBTkRMRSBkdXBsaWNhdGVkSGFuZGxl
OwotICAgIEJPT0wgcmVzdWx0ID0gOjpEdXBsaWNhdGVIYW5kbGUoOjpHZXRDdXJyZW50UHJvY2Vz
cygpLCBtX2hhbmRsZSwgOjpHZXRDdXJyZW50UHJvY2VzcygpLCAmZHVwbGljYXRlZEhhbmRsZSwg
MCwgRkFMU0UsIERVUExJQ0FURV9TQU1FX0FDQ0VTUyk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShyZXN1bHQsICI6OkR1cGxpY2F0ZUhhbmRsZSBmYWlsZWQgd2l0aCBlcnJvciAlbHUiLCA6Okdl
dExhc3RFcnJvcigpKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICB2b2lkKiBuZXdNYXBwaW5nID0gOjpNYXBWaWV3T2ZGaWxlKGR1cGxpY2F0ZWRIYW5kbGUsIEZJ
TEVfTUFQX0NPUFksIDAsIDAsIHNpemUpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobmV3TWFw
cGluZywgIjo6TWFwVmlld09mRmlsZSBmYWlsZWQgd2l0aCBlcnJvciAlbHUiLCA6OkdldExhc3RF
cnJvcigpKTsKLSAgICBpZiAoIW5ld01hcHBpbmcpIHsKLSAgICAgICAgOjpDbG9zZUhhbmRsZShk
dXBsaWNhdGVkSGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gbWVtb3J5ID0gYWRvcHRSZWYobmV3IFNoYXJlZE1lbW9yeSk7Ci0gICAg
bWVtb3J5LT5tX3NpemUgPSBzaXplOwotICAgIG1lbW9yeS0+bV9kYXRhID0gbmV3TWFwcGluZzsK
LSAgICBtZW1vcnktPm1faGFuZGxlID0gZHVwbGljYXRlZEhhbmRsZTsKLQotICAgIHJldHVybiBt
ZW1vcnkucmVsZWFzZSgpOwotfQotCi11bnNpZ25lZCBTaGFyZWRNZW1vcnk6OnN5c3RlbVBhZ2VT
aXplKCkKLXsKLSAgICBzdGF0aWMgdW5zaWduZWQgcGFnZVNpemUgPSAwOwotCi0gICAgaWYgKCFw
YWdlU2l6ZSkgewotICAgICAgICBTWVNURU1fSU5GTyBzeXN0ZW1JbmZvOwotICAgICAgICA6Okdl
dFN5c3RlbUluZm8oJnN5c3RlbUluZm8pOwotICAgICAgICBwYWdlU2l6ZSA9IHN5c3RlbUluZm8u
ZHdQYWdlU2l6ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcGFnZVNpemU7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vd2luL1dv
cmtRdWV1ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS93aW4vV29ya1F1ZXVlV2lu
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRkNjg4NDQzMzhjOTk5NGMzMjI1
ZjU1ODBiZDExYjQ0YWUxOWE1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS93aW4vV29ya1F1ZXVlV2luLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDI4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi0jaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgotCi1pbmxpbmUgV29ya1F1ZXVlOjpXb3JrSXRlbVdpbjo6V29ya0l0ZW1XaW4oY29uc3Qg
RnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCi0gICAgOiBtX2Z1
bmN0aW9uKGZ1bmN0aW9uKQotICAgICwgbV9xdWV1ZShxdWV1ZSkKLXsKLX0KLQotUGFzc1JlZlB0
cjxXb3JrUXVldWU6OldvcmtJdGVtV2luPiBXb3JrUXVldWU6OldvcmtJdGVtV2luOjpjcmVhdGUo
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrSXRlbVdpbihmdW5jdGlvbiwgcXVldWUpKTsKLX0K
LQotV29ya1F1ZXVlOjpXb3JrSXRlbVdpbjo6fldvcmtJdGVtV2luKCkKLXsKLX0KLQotaW5saW5l
IFdvcmtRdWV1ZTo6SGFuZGxlV29ya0l0ZW06OkhhbmRsZVdvcmtJdGVtKEhBTkRMRSBoYW5kbGUs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQotICAg
IDogV29ya0l0ZW1XaW4oZnVuY3Rpb24sIHF1ZXVlKQotICAgICwgbV9oYW5kbGUoaGFuZGxlKQot
ICAgICwgbV93YWl0SGFuZGxlKDApCi17Ci0gICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhhbmRsZSk7
Ci19Ci0KLVBhc3NSZWZQdHI8V29ya1F1ZXVlOjpIYW5kbGVXb3JrSXRlbT4gV29ya1F1ZXVlOjpI
YW5kbGVXb3JrSXRlbTo6Y3JlYXRlQnlBZG9wdGluZ0hhbmRsZShIQU5ETEUgaGFuZGxlLCBjb25z
dCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhhbmRsZVdvcmtJdGVtKGhhbmRsZSwgZnVuY3Rpb24sIHF1ZXVl
KSk7Ci19Ci0KLVdvcmtRdWV1ZTo6SGFuZGxlV29ya0l0ZW06On5IYW5kbGVXb3JrSXRlbSgpCi17
Ci0gICAgOjpDbG9zZUhhbmRsZShtX2hhbmRsZSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpoYW5k
bGVDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpCi17Ci0g
ICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKLSAgICBBU1NFUlRfQVJHKHRpbWVyT3JX
YWl0RmlyZWQsICF0aW1lck9yV2FpdEZpcmVkKTsKLQotICAgIFdvcmtJdGVtV2luKiBpdGVtID0g
c3RhdGljX2Nhc3Q8V29ya0l0ZW1XaW4qPihjb250ZXh0KTsKLSAgICBSZWZQdHI8V29ya1F1ZXVl
PiBxdWV1ZSA9IGl0ZW0tPnF1ZXVlKCk7Ci0KLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2socXVldWUtPm1fd29ya0l0ZW1RdWV1ZUxvY2spOwotICAgICAgICBxdWV1ZS0+bV93b3JrSXRl
bVF1ZXVlLmFwcGVuZChpdGVtKTsKLQotICAgICAgICAvLyBJZiBubyBvdGhlciB0aHJlYWQgaXMg
cGVyZm9ybWluZyB3b3JrLCB3ZSBjYW4gZG8gaXQgb24gdGhpcyB0aHJlYWQuCi0gICAgICAgIGlm
ICghcXVldWUtPnRyeVJlZ2lzdGVyQXNXb3JrVGhyZWFkKCkpIHsKLSAgICAgICAgICAgIC8vIFNv
bWUgb3RoZXIgdGhyZWFkIGlzIHBlcmZvcm1pbmcgd29yay4gU2luY2Ugd2UgaG9sZCB0aGUgcXVl
dWUgbG9jaywgd2UgY2FuIGJlIHN1cmUKLSAgICAgICAgICAgIC8vIHRoYXQgdGhlIHdvcmsgdGhy
ZWFkIGlzIG5vdCBleGl0aW5nIGR1ZSB0byBhbiBlbXB0eSBxdWV1ZSBhbmQgd2lsbCBwcm9jZXNz
IHRoZSB3b3JrCi0gICAgICAgICAgICAvLyBpdGVtIHdlIGp1c3QgYWRkZWQgdG8gaXQuIElmIHdl
IHdlcmVuJ3QgaG9sZGluZyB0aGUgbG9jayB3ZSdkIGhhdmUgdG8gc2lnbmFsCi0gICAgICAgICAg
ICAvLyBtX3BlcmZvcm1Xb3JrRXZlbnQgdG8gbWFrZSBzdXJlIHRoZSB3b3JrIGl0ZW0gZ290IHBp
Y2tlZCB1cC4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHF1
ZXVlLT5wZXJmb3JtV29ya09uUmVnaXN0ZXJlZFdvcmtUaHJlYWQoKTsKLX0KLQotdm9pZCBXb3Jr
UXVldWU6OnJlZ2lzdGVySGFuZGxlKEhBTkRMRSBoYW5kbGUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
KT4mIGZ1bmN0aW9uKQotewotICAgIFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4gaGFuZGxlSXRlbSA9
IEhhbmRsZVdvcmtJdGVtOjpjcmVhdGVCeUFkb3B0aW5nSGFuZGxlKGhhbmRsZSwgZnVuY3Rpb24s
IHRoaXMpOwotCi0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1faGFuZGxlc0xvY2sp
OwotICAgICAgICBBU1NFUlRfQVJHKGhhbmRsZSwgIW1faGFuZGxlcy5jb250YWlucyhoYW5kbGUp
KTsKLSAgICAgICAgbV9oYW5kbGVzLnNldChoYW5kbGUsIGhhbmRsZUl0ZW0pOwotICAgIH0KLQot
ICAgIEhBTkRMRSB3YWl0SGFuZGxlOwotICAgIGlmICghOjpSZWdpc3RlcldhaXRGb3JTaW5nbGVP
YmplY3QoJndhaXRIYW5kbGUsIGhhbmRsZSwgaGFuZGxlQ2FsbGJhY2ssIGhhbmRsZUl0ZW0uZ2V0
KCksIElORklOSVRFLCBXVF9FWEVDVVRFREVGQVVMVCkpIHsKLSAgICAgICAgRFdPUkQgZXJyb3Ig
PSA6OkdldExhc3RFcnJvcigpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci0gICAgaGFuZGxlSXRlbS0+c2V0V2FpdEhhbmRsZSh3YWl0SGFuZGxlKTsKLX0KLQotdm9pZCBX
b3JrUXVldWU6OnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShIQU5ETEUgaGFuZGxlKQotewotICAg
IFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4gaXRlbTsKLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2hhbmRsZXNMb2NrKTsKLSAgICAgICAgQVNTRVJUX0FSRyhoYW5kbGUsIG1faGFu
ZGxlcy5jb250YWlucyhoYW5kbGUpKTsKLSAgICAgICAgaXRlbSA9IG1faGFuZGxlcy50YWtlKGhh
bmRsZSk7Ci0gICAgfQotCi0gICAgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24oaXRl
bS5yZWxlYXNlKCkpOwotfQotCi1EV09SRCBXb3JrUXVldWU6OndvcmtUaHJlYWRDYWxsYmFjayh2
b2lkKiBjb250ZXh0KQotewotICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7Ci0KLSAg
ICBXb3JrUXVldWUqIHF1ZXVlID0gc3RhdGljX2Nhc3Q8V29ya1F1ZXVlKj4oY29udGV4dCk7Ci0K
LSAgICBpZiAoIXF1ZXVlLT50cnlSZWdpc3RlckFzV29ya1RocmVhZCgpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIHF1ZXVlLT5wZXJmb3JtV29ya09uUmVnaXN0ZXJlZFdvcmtUaHJlYWQoKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBlcmZvcm1Xb3JrT25SZWdpc3Rl
cmVkV29ya1RocmVhZCgpCi17Ci0gICAgQVNTRVJUKG1faXNXb3JrVGhyZWFkUmVnaXN0ZXJlZCk7
Ci0KLSAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKLQotICAgIHdoaWxlICghbV93b3Jr
SXRlbVF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBWZWN0b3I8UmVmUHRyPFdvcmtJdGVtV2lu
PiA+IHdvcmtJdGVtUXVldWU7Ci0gICAgICAgIG1fd29ya0l0ZW1RdWV1ZS5zd2FwKHdvcmtJdGVt
UXVldWUpOwotCi0gICAgICAgIC8vIEFsbG93IG1vcmUgd29yayB0byBiZSBzY2hlZHVsZWQgd2hp
bGUgd2UncmUgbm90IHVzaW5nIHRoZSBxdWV1ZSBkaXJlY3RseS4KLSAgICAgICAgbV93b3JrSXRl
bVF1ZXVlTG9jay51bmxvY2soKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jr
SXRlbVF1ZXVlLnNpemUoKTsgKytpKQotICAgICAgICAgICAgd29ya0l0ZW1RdWV1ZVtpXS0+ZnVu
Y3Rpb24oKSgpOwotICAgICAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKLSAgICB9Ci0K
LSAgICAvLyBPbmUgaW52YXJpYW50IHdlIG1haW50YWluIGlzIHRoYXQgYW55IHdvcmsgc2NoZWR1
bGVkIHdoaWxlIGEgd29yayB0aHJlYWQgaXMgcmVnaXN0ZXJlZCB3aWxsCi0gICAgLy8gYmUgaGFu
ZGxlZCBieSB0aGF0IHdvcmsgdGhyZWFkLiBVbnJlZ2lzdGVyIGFzIHRoZSB3b3JrIHRocmVhZCB3
aGlsZSB0aGUgcXVldWUgbG9jayBpcyBzdGlsbAotICAgIC8vIGhlbGQgc28gdGhhdCBubyB3b3Jr
IGNhbiBiZSBzY2hlZHVsZWQgd2hpbGUgd2UncmUgc3RpbGwgcmVnaXN0ZXJlZC4KLSAgICB1bnJl
Z2lzdGVyQXNXb3JrVGhyZWFkKCk7Ci0KLSAgICBtX3dvcmtJdGVtUXVldWVMb2NrLnVubG9jaygp
OwotfQotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5h
bWUpCi17Ci0gICAgbV9pc1dvcmtUaHJlYWRSZWdpc3RlcmVkID0gMDsKLSAgICBtX3RpbWVyUXVl
dWUgPSA6OkNyZWF0ZVRpbWVyUXVldWUoKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fdGlt
ZXJRdWV1ZSwgIjo6Q3JlYXRlVGltZXJRdWV1ZSBmYWlsZWQgd2l0aCBlcnJvciAlbHUiLCA6Okdl
dExhc3RFcnJvcigpKTsKLX0KLQotYm9vbCBXb3JrUXVldWU6OnRyeVJlZ2lzdGVyQXNXb3JrVGhy
ZWFkKCkKLXsKLSAgICBMT05HIHJlc3VsdCA9IDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2Uo
Jm1faXNXb3JrVGhyZWFkUmVnaXN0ZXJlZCwgMSwgMCk7Ci0gICAgQVNTRVJUKCFyZXN1bHQgfHwg
cmVzdWx0ID09IDEpOwotICAgIHJldHVybiAhcmVzdWx0OwotfQotCi12b2lkIFdvcmtRdWV1ZTo6
dW5yZWdpc3RlckFzV29ya1RocmVhZCgpCi17Ci0gICAgTE9ORyByZXN1bHQgPSA6OkludGVybG9j
a2VkQ29tcGFyZUV4Y2hhbmdlKCZtX2lzV29ya1RocmVhZFJlZ2lzdGVyZWQsIDAsIDEpOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gMSk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVl
OjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBNdXRl
eExvY2tlciBsb2NrKG1faGFuZGxlc0xvY2spOwotICAgIEFTU0VSVChtX2hhbmRsZXMuaXNFbXB0
eSgpKTsKLSNlbmRpZgotCi0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgYW55
IHRpbWVyLXF1ZXVlIHRpbWVycyB0aGF0IGZpcmUgYWZ0ZXIgdGhpcyBwb2ludCBkb24ndCB0cnkg
dG8KLSAgICAvLyBhY2Nlc3MgdGhpcyBXb3JrUXVldWUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNDQ2
OTA+LgotICAgIDo6RGVsZXRlVGltZXJRdWV1ZUV4KG1fdGltZXJRdWV1ZSwgMCk7Ci19Ci0KLXZv
aWQgV29ya1F1ZXVlOjpkaXNwYXRjaChjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikK
LXsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbVF1ZXVlTG9jayk7Ci0KLSAgICBt
X3dvcmtJdGVtUXVldWUuYXBwZW5kKFdvcmtJdGVtV2luOjpjcmVhdGUoZnVuY3Rpb24sIHRoaXMp
KTsKLQotICAgIC8vIFNwYXduIGEgd29yayB0aHJlYWQgdG8gcGVyZm9ybSB0aGUgd29yayB3ZSBq
dXN0IGFkZGVkLiBBcyBhbiBvcHRpbWl6YXRpb24sIHdlIGF2b2lkCi0gICAgLy8gc3Bhd25pbmcg
dGhlIHRocmVhZCBpZiBhIHdvcmsgdGhyZWFkIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4gVGhpcyBw
cmV2ZW50cyBtdWx0aXBsZSB3b3JrCi0gICAgLy8gdGhyZWFkcyBmcm9tIGJlaW5nIHNwYXduZWQg
aW4gbW9zdCBjYXNlcy4gKE5vdGUgdGhhdCB3aGVuIGEgd29yayB0aHJlYWQgaGFzIGJlZW4gc3Bh
d25lZCBidXQKLSAgICAvLyBoYXNuJ3QgcmVnaXN0ZXJlZCBpdHNlbGYgeWV0LCBtX2lzV29ya1Ro
cmVhZFJlZ2lzdGVyZWQgd2lsbCBiZSBmYWxzZSBhbmQgd2UnbGwgZW5kIHVwCi0gICAgLy8gc3Bh
d25pbmcgYSBzZWNvbmQgd29yayB0aHJlYWQgaGVyZS4gQnV0IHdvcmsgdGhyZWFkIHJlZ2lzdHJh
dGlvbiBwcm9jZXNzIHdpbGwgZW5zdXJlIHRoYXQKLSAgICAvLyBvbmx5IG9uZSB0aHJlYWQgYWN0
dWFsbHkgZW5kcyB1cCBwZXJmb3JtaW5nIHdvcmsuKQotICAgIGlmICghbV9pc1dvcmtUaHJlYWRS
ZWdpc3RlcmVkKQotICAgICAgICA6OlF1ZXVlVXNlcldvcmtJdGVtKHdvcmtUaHJlYWRDYWxsYmFj
aywgdGhpcywgV1RfRVhFQ1VURURFRkFVTFQpOwotfQotCi1zdHJ1Y3QgVGltZXJDb250ZXh0IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRpbWVyQ29udGV4dD4gewotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFRpbWVyQ29udGV4dD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRp
bWVyQ29udGV4dCk7IH0KLQotICAgIFdvcmtRdWV1ZSogcXVldWU7Ci0gICAgRnVuY3Rpb248dm9p
ZCgpPiBmdW5jdGlvbjsKLSAgICBNdXRleCB0aW1lck11dGV4OwotICAgIEhBTkRMRSB0aW1lcjsK
LQotcHJpdmF0ZToKLSAgICBUaW1lckNvbnRleHQoKSA6IHF1ZXVlKDApLCB0aW1lcigwKSB7IH0K
LX07Ci0KLXZvaWQgV29ya1F1ZXVlOjp0aW1lckNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xF
QU4gdGltZXJPcldhaXRGaXJlZCkKLXsKLSAgICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQp
OwotICAgIEFTU0VSVF9VTlVTRUQodGltZXJPcldhaXRGaXJlZCwgdGltZXJPcldhaXRGaXJlZCk7
Ci0KLSAgICAvLyBCYWxhbmNlZCBieSBsZWFrUmVmIGluIHNjaGVkdWxlV29ya0FmdGVyRGVsYXku
Ci0gICAgUmVmUHRyPFRpbWVyQ29udGV4dD4gdGltZXJDb250ZXh0ID0gYWRvcHRSZWYoc3RhdGlj
X2Nhc3Q8VGltZXJDb250ZXh0Kj4oY29udGV4dCkpOwotCi0gICAgdGltZXJDb250ZXh0LT5xdWV1
ZS0+ZGlzcGF0Y2godGltZXJDb250ZXh0LT5mdW5jdGlvbik7Ci0KLSAgICBNdXRleExvY2tlciBs
b2NrKHRpbWVyQ29udGV4dC0+dGltZXJNdXRleCk7Ci0gICAgQVNTRVJUKHRpbWVyQ29udGV4dC0+
dGltZXIpOwotICAgIEFTU0VSVCh0aW1lckNvbnRleHQtPnF1ZXVlLT5tX3RpbWVyUXVldWUpOwot
ICAgIGlmICghOjpEZWxldGVUaW1lclF1ZXVlVGltZXIodGltZXJDb250ZXh0LT5xdWV1ZS0+bV90
aW1lclF1ZXVlLCB0aW1lckNvbnRleHQtPnRpbWVyLCAwKSkgewotICAgICAgICAvLyBHZXR0aW5n
IEVSUk9SX0lPX1BFTkRJTkcgaGVyZSBtZWFucyB0aGF0IHRoZSB0aW1lciB3aWxsIGJlIGRlc3Ry
b3llZCBvbmNlIHRoZSBjYWxsYmFjayBpcyBkb25lIGV4ZWN1dGluZy4KLSAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSg6OkdldExhc3RFcnJvcigpID09IEVSUk9SX0lPX1BFTkRJTkcsICI6OkRl
bGV0ZVRpbWVyUXVldWVUaW1lciBmYWlsZWQgd2l0aCBlcnJvciAlbHUiLCA6OkdldExhc3RFcnJv
cigpKTsKLSAgICB9Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkoY29u
c3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIGRvdWJsZSBkZWxheSkKLXsKLSAgICBBU1NF
UlQobV90aW1lclF1ZXVlKTsKLQotICAgIFJlZlB0cjxUaW1lckNvbnRleHQ+IGNvbnRleHQgPSBU
aW1lckNvbnRleHQ6OmNyZWF0ZSgpOwotICAgIGNvbnRleHQtPnF1ZXVlID0gdGhpczsKLSAgICBj
b250ZXh0LT5mdW5jdGlvbiA9IGZ1bmN0aW9uOwotCi0gICAgewotICAgICAgICAvLyBUaGUgdGlt
ZXIgY2FsbGJhY2sgY291bGQgZmlyZSBiZWZvcmUgOjpDcmVhdGVUaW1lclF1ZXVlVGltZXIgZXZl
biByZXR1cm5zLCBzbyB3ZSBwcm90ZWN0Ci0gICAgICAgIC8vIGNvbnRleHQtPnRpbWVyIHdpdGgg
YSBtdXRleCB0byBlbnN1cmUgdGhlIHRpbWVyIGNhbGxiYWNrIGRvZXNuJ3QgYWNjZXNzIGl0IGJl
Zm9yZSB0aGUKLSAgICAgICAgLy8gdGltZXIgaGFuZGxlIGhhcyBiZWVuIHN0b3JlZCBpbiBpdC4K
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhjb250ZXh0LT50aW1lck11dGV4KTsKLQotICAgICAg
ICAvLyBTaW5jZSBvdXIgdGltZXIgY2FsbGJhY2sgaXMgcXVpY2ssIHdlIGNhbiBleGVjdXRlIGlu
IHRoZSB0aW1lciB0aHJlYWQgaXRzZWxmIGFuZCBhdm9pZAotICAgICAgICAvLyBhbiBleHRyYSB0
aHJlYWQgc3dpdGNoIG92ZXIgdG8gYSB3b3JrZXIgdGhyZWFkLgotICAgICAgICBpZiAoITo6Q3Jl
YXRlVGltZXJRdWV1ZVRpbWVyKCZjb250ZXh0LT50aW1lciwgbV90aW1lclF1ZXVlLCB0aW1lckNh
bGxiYWNrLCBjb250ZXh0LmdldCgpLCBkZWxheSAqIDEwMDAsIDAsIFdUX0VYRUNVVEVJTlRJTUVS
VEhSRUFEKSkgewotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShmYWxzZSwgIjo6Q3Jl
YXRlVGltZXJRdWV1ZVRpbWVyIGZhaWxlZCB3aXRoIGVycm9yICVsdSIsIDo6R2V0TGFzdEVycm9y
KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhl
IHRpbWVyIGNhbGxiYWNrIHdpbGwgaGFuZGxlIGRlc3Ryb3lpbmcgY29udGV4dC4KLSAgICBjb250
ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVy
V2FpdEFuZERlc3Ryb3lJdGVtU29vbihQYXNzUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBpdGVtKQot
ewotICAgIC8vIFdlJ3JlIGdvaW5nIHRvIG1ha2UgYSBibG9ja2luZyBjYWxsIHRvIDo6VW5yZWdp
c3RlcldhaXRFeCBiZWZvcmUgY2xvc2luZyB0aGUgaGFuZGxlLiAoVGhlCi0gICAgLy8gYmxvY2tp
bmcgdmVyc2lvbiBvZiA6OlVucmVnaXN0ZXJXYWl0RXggaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGhl
IG5vbi1ibG9ja2luZyB2ZXJzaW9uLikgSWYgd2UKLSAgICAvLyBkbyB0aGlzIG9uIHRoZSBjdXJy
ZW50IHRocmVhZCwgd2UnbGwgZGVhZGxvY2sgaWYgd2UncmUgY3VycmVudGx5IGluIGEgY2FsbGJh
Y2sgZnVuY3Rpb24gZm9yCi0gICAgLy8gdGhlIHdhaXQgd2UncmUgdW5yZWdpc3RlcmluZy4gU28g
aW5zdGVhZCB3ZSBkbyBpdCBhc3luY2hyb25vdXNseSBvbiBzb21lIG90aGVyIHdvcmtlciB0aHJl
YWQuCi0KLSAgICA6OlF1ZXVlVXNlcldvcmtJdGVtKHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0
ZW1DYWxsYmFjaywgaXRlbS5sZWFrUmVmKCksIFdUX0VYRUNVVEVERUZBVUxUKTsKLX0KLQotRFdP
UkQgV0lOQVBJIFdvcmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNr
KHZvaWQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKLSAg
ICBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+IGl0ZW0gPSBhZG9wdFJlZihzdGF0aWNfY2FzdDxIYW5k
bGVXb3JrSXRlbSo+KGNvbnRleHQpKTsKLQotICAgIC8vIE5vdyB0aGF0IHdlIGtub3cgd2UncmUg
bm90IGluIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSB3YWl0IHdlJ3JlIHVucmVnaXN0ZXJp
bmcsIHdlIGNhbgotICAgIC8vIG1ha2UgYSBibG9ja2luZyBjYWxsIHRvIDo6VW5yZWdpc3Rlcldh
aXRFeC4KLSAgICBpZiAoITo6VW5yZWdpc3RlcldhaXRFeChpdGVtLT53YWl0SGFuZGxlKCksIElO
VkFMSURfSEFORExFX1ZBTFVFKSkgewotICAgICAgICBEV09SRCBlcnJvciA9IDo6R2V0TGFzdEVy
cm9yKCk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHJldHVy
biAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAppbmRleCA3YzI3MGU4
NzY2OThlYTg0Nzg2NWQ3OWZiNDJmOTUwM2I3MTU1OTExLi43MjAwMzE3Nzc0ODRkZTEzYWM1YjRk
MTU1NDlhYzE0OTk2NWI0NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hp
bGRQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNw
cApAQCAtMjcsMTAgKzI3LDcgQEAKICNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKIAogI2luY2x1
ZGUgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKLQotI2lmICFPUyhXSU5ET1dT
KQogI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBj
NjMyNWZkYmI3OGVlNjRmZDg2MjI1MjMxYTFiZDQwODBhMGZmYWU3Li5lOWJhZjkxNjRiZDg5OThm
ZGZkYmY0OWY2NTljNzU1NzU3NjQ1OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3NQcm94eS5jcHAKQEAgLTEyNyw4ICsxMjcsNiBAQCB2b2lkIENoaWxkUHJvY2Vzc1By
b3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVj
dGlvbgogICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZl
ckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7
CiAjaWYgT1MoREFSV0lOKQogICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0
aW9uT25NYWNoRXhjZXB0aW9ucygpOwotI2VsaWYgUExBVEZPUk0oUVQpICYmICFPUyhXSU5ET1dT
KQotICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVy
bWluYXRpb24ocHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKIAogICAgIGNvbm5lY3Rpb25X
aWxsT3BlbihtX2Nvbm5lY3Rpb24uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKaW5kZXggYWU5NWEwYjY4N2Y4MWM4
NjlmOWQ2ODI2YjEyZmFlNWU5N2RiNDZhMC4uODZjYmJhZGJkZWM3NDM4OTVmOTM4NmIyNDAyMjM5
YzYzMmQxMThiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5JbmZvU3RvcmUuY3BwCkBAIC02MywyMCArNjMsMTIgQEAgc3RhdGljIHZvaWQgYWRk
RnJvbVZlY3RvcihUJiBoYXNoU2V0LCBjb25zdCBVJiB2ZWN0b3IpCiAgICAgICAgIGhhc2hTZXQu
YWRkKHZlY3RvcltpXSk7CiB9CiAKLS8vIFdlIHVzZSBhIExpc3RIYXNoU2V0IHNvIHRoYXQgcGx1
Z2lucyB3aWxsIGJlIGxvYWRlZCBmcm9tIHRoZSBhZGRpdGlvbmFsIHBsdWdpbnMgZGlyZWN0b3Jp
ZXMgZmlyc3QKLS8vICh3aGljaCBpbiB0dXJuIG1lYW5zIHRob3NlIHBsdWdpbnMgd2lsbCBiZSBw
cmVmZXJyZWQgaWYgdHdvIHBsdWdpbnMgY2xhaW0gdGhlIHNhbWUgTUlNRSB0eXBlKS4KLSNpZiBP
UyhXSU5ET1dTKQotdHlwZWRlZiBMaXN0SGFzaFNldDxTdHJpbmcsIDMyLCBDYXNlRm9sZGluZ0hh
c2g+IFBhdGhIYXNoU2V0OwotI2Vsc2UKLXR5cGVkZWYgTGlzdEhhc2hTZXQ8U3RyaW5nLCAzMj4g
UGF0aEhhc2hTZXQ7Ci0jZW5kaWYKLQogdm9pZCBQbHVnaW5JbmZvU3RvcmU6OmxvYWRQbHVnaW5z
SWZOZWNlc3NhcnkoKQogewogICAgIGlmIChtX3BsdWdpbkxpc3RJc1VwVG9EYXRlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBQYXRoSGFzaFNldCB1bmlxdWVQbHVnaW5QYXRoczsKKyAgICBMaXN0
SGFzaFNldDxTdHJpbmcsIDMyPiB1bmlxdWVQbHVnaW5QYXRoczsKIAogICAgIC8vIEZpcnN0LCBs
b2FkIHBsdWctaW5zIGZyb20gdGhlIGFkZGl0aW9uYWwgcGx1Zy1pbnMgZGlyZWN0b3JpZXMgc3Bl
Y2lmaWVkLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hZGRpdGlvbmFsUGx1Z2luc0Rp
cmVjdG9yaWVzLnNpemUoKTsgKytpKQpAQCAtOTIsOSArODQsOCBAQCB2b2lkIFBsdWdpbkluZm9T
dG9yZTo6bG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSgpCiAKICAgICBtX3BsdWdpbnMuY2xlYXIoKTsK
IAotICAgIFBhdGhIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSB1bmlxdWVQbHVnaW5QYXRo
cy5lbmQoKTsKLSAgICBmb3IgKFBhdGhIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHVuaXF1
ZVBsdWdpblBhdGhzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgbG9hZFBsdWdp
bihtX3BsdWdpbnMsICppdCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBwbHVnaW5QYXRoIDogdW5p
cXVlUGx1Z2luUGF0aHMpCisgICAgICAgIGxvYWRQbHVnaW4obV9wbHVnaW5zLCBwbHVnaW5QYXRo
KTsKIAogICAgIG1fcGx1Z2luTGlzdElzVXBUb0RhdGUgPSB0cnVlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBlYjFlMzc2N2YwMzExNmJkZTgwNDQ5MmE2
Y2ZiNjBhNGI3YTkyN2VjLi5lYmI0ODY2NDRhZWQ3ZWUxNGQwOGQxMmZiOTcxYWMzNjFkOTZlZmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTc5LDYgKzc5
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVRyYWNrZXIuaD4KKyNp
bmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
OTQsOSArOTUsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2Vu
ZGlmCiAKLSNpZiAhT1MoV0lORE9XUykKLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgogCiAj
aWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgiCg==
</data>
<flag name="review"
          id="235010"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>