<?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>210764</bug_id>
          
          <creation_ts>2020-04-20 13:36:54 -0700</creation_ts>
          <short_desc>Intl classes shouldn&apos;t need an m_initialized* field</short_desc>
          <delta_ts>2020-04-20 21:05:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1643616</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-20 13:36:54 -0700</bug_when>
    <thetext>Intl classes shouldn&apos;t need an m_initialized* field</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643634</commentid>
    <comment_count>1</comment_count>
      <attachid>397012</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-20 14:11:41 -0700</bug_when>
    <thetext>Created attachment 397012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643650</commentid>
    <comment_count>2</comment_count>
      <attachid>397012</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 14:55:48 -0700</bug_when>
    <thetext>Comment on attachment 397012
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=397012&amp;action=review

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:61
&gt; +    IntlNumberFormatField(int32_t type, int32_t size)
&gt; +        : type(type)
&gt; +        , size(size)
&gt; +    { }

Typically this should not be necessary.

&gt; Source/JavaScriptCore/runtime/IntlPluralRules.cpp:94
&gt;      Vector&lt;String&gt; data;
&gt;      return data;

return { };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643670</commentid>
    <comment_count>3</comment_count>
      <attachid>397027</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-20 15:51:30 -0700</bug_when>
    <thetext>Created attachment 397027
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643685</commentid>
    <comment_count>4</comment_count>
      <attachid>397034</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-20 16:15:48 -0700</bug_when>
    <thetext>Created attachment 397034
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643761</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-20 21:04:15 -0700</bug_when>
    <thetext>Committed r260411: &lt;https://trac.webkit.org/changeset/260411&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397034.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643762</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-20 21:05:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/62089736&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397012</attachid>
            <date>2020-04-20 14:11:41 -0700</date>
            <delta_ts>2020-04-20 15:51:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210764-20200420141141.patch</filename>
            <type>text/plain</type>
            <size>29920</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NWU5NjRjMjkxMTlhYzA3MjRlYTc3ZWU2ZDRkNjQ4NmI0MDUyMTQ3Li5jZDA4MGZiZWNjYzBiMzcw
MWQ3NTMwYTAyM2FkNjUyNTFjZTQ4Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMC0wNC0yMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgSW50bCBjbGFzc2VzIHNob3VsZG4ndCBuZWVkIGFuIG1faW5pdGlh
bGl6ZWQqIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTA3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFeGlzdGluZyBJbnRsIGNsYXNzZXMgZWFjaCBoYXZlIGEgZmllbGQgbGlrZSBtX2luaXRp
YWxpemVkTnVtYmVyRm9ybWF0LCBidXQgdGhpcyBpcyB1bm5lY2Vzc2FyeSBvbiB0d28gbGV2ZWxz
OgorICAgICAgICAgIDEuIFRoZSB0aGluZyB0aGF0IGdldHMgaW5pdGlhbGl6ZWQgaXMgYSB1bmlx
dWUgcG9pbnRlciB0byBhbiBJQ1Ugc3RydWN0LCBzbyB3ZSBjYW4gY2hlY2sgaXQgZGlyZWN0bHku
CisgICAgICAgICAgMi4gRXZlcnl3aGVyZSB3ZSdyZSBjaGVja2luZyB0aGlzIGlzIHJlZHVuZGFu
dCBzaW5jZSB3ZSd2ZSBhbHJlYWR5IGRvbmUgdGhlIHNhbWUgY2hlY2sgb24gdGhlIHByb3RvdHlw
ZSBzaWRlLAorICAgICAgICAgICAgIHRoZXJlZm9yZSB3ZSBjYW4ganVzdCBBU1NFUlQgYmVmb3Jl
IHVzaW5nIHNhaWQgSUNVIHN0cnVjdC4KKworICAgICAgICBXaGlsZSB3ZSdyZSBhdCBpdCwgY2xl
YW4gdXAgb3RoZXIgc3R1ZmYgbGlrZToKKyAgICAgICAgICAtIE1vdmUgc3R1ZmYgdGhhdCBkb2Vz
bid0IG5lZWQgdG8gYmUgcGFydCBvZiB0aGUgY2xhc3MgdG8gdGhlIENQUCBmaWxlIChlLmcuIFVG
aWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyKS4KKyAgICAgICAgICAtIE1lcmdlIGNyZWF0ZUNv
bGxhdG9yIGludG8gaW5pdGlhbGl6ZUNvbGxhdG9yIChzZWVtcyBsaWtlIHRoaXMgaXMgcHJvYmFi
bHkgdGhlIG9sZGVzdCBjb2RlIGluIHRoaXMgc3BhY2UpLgorCisgICAgICAgICogcnVudGltZS9J
bnRsQ29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVD
b2xsYXRvcik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MpOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIChK
U0M6OkludGxDb2xsYXRvcjo6Y3JlYXRlQ29sbGF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwOgorICAgICAgICAoSlNDOjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3Bl
cmF0b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpy
ZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1h
dCk6CisgICAgICAgIChKU0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6cGFydFR5cGVTdHJp
bmcpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6VUZp
ZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0RmllbGQ6OkludGxOdW1iZXJGb3JtYXRGaWVsZCk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRs
TnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpwYXJ0VHlwZVN0
cmluZyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVs
ZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OnBhcnRUeXBlU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6
CisgICAgICAgIChKU0M6OmxvY2FsZURhdGEpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVs
ZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxl
czo6cmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxl
Y3QpOgorICAgICAgICAoSlNDOjpJbnRsUFJJbnRlcm5hbDo6bG9jYWxlRGF0YSk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKwogMjAyMC0wNC0yMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlICNpbXBvcnQgaW5zdGVh
ZCBvZiAjaW5jbHVkZSBpbiBPYmplY3RpdmUtQyBhbmQgZG9uJ3QgdXNlICNwcmFnbWEgb25jZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXgg
ZjU0ZDBlODJiY2IxOTAxYjY2M2RkZjU4YWFiNTIxYzE2OThlOWY0OS4uYzE0Y2VjMWY2MjQ1Y2I4
NDQyNGJmZGI2M2YxMDFkMTczYzFhNDk4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0xNjUsMTQgKzE2NSwxMiBAQCBzdGF0aWMgVmVj
dG9yPFN0cmluZz4gc2VhcmNoTG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBzaXplX3Qga2V5SW5k
ZXgpCiAgICAgcmV0dXJuIGtleUxvY2FsZURhdGE7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVjb2xsYXRvcgogdm9pZCBJbnRsQ29sbGF0b3I6
OmluaXRpYWxpemVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICAvLyAxMC4xLjEgSW5pdGlhbGl6ZUNvbGxhdG9yIChjb2xsYXRvciwgbG9jYWxlcywgb3B0
aW9ucykgKEVDTUEtNDAyKQotICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8j
c2VjLWluaXRpYWxpemVjb2xsYXRvcgotCiAgICAgYXV0byByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fu
b25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGxvY2FsZXMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKQEAgLTIyOSwxMCArMjI3LDEwIEBAIHZvaWQg
SW50bENvbGxhdG9yOjppbml0aWFsaXplQ29sbGF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBsb2NhCiAgICAgbV9jb2xsYXRpb24gPSBjb2xsYXRpb24uaXNOdWxsKCkg
PyAiZGVmYXVsdCJfcyA6IGNvbGxhdGlvbjsKICAgICBtX251bWVyaWMgPSByZXN1bHQuZ2V0KCJr
biJfcykgPT0gInRydWUiOwogCi0gICAgY29uc3QgU3RyaW5nJiBjYXNlRmlyc3QgPSByZXN1bHQu
Z2V0KCJrZiJfcyk7Ci0gICAgaWYgKGNhc2VGaXJzdCA9PSAibG93ZXIiKQorICAgIGNvbnN0IFN0
cmluZyYgY2FzZUZpcnN0U3RyaW5nID0gcmVzdWx0LmdldCgia2YiX3MpOworICAgIGlmIChjYXNl
Rmlyc3RTdHJpbmcgPT0gImxvd2VyIikKICAgICAgICAgbV9jYXNlRmlyc3QgPSBDYXNlRmlyc3Q6
Okxvd2VyOwotICAgIGVsc2UgaWYgKGNhc2VGaXJzdCA9PSAidXBwZXIiKQorICAgIGVsc2UgaWYg
KGNhc2VGaXJzdFN0cmluZyA9PSAidXBwZXIiKQogICAgICAgICBtX2Nhc2VGaXJzdCA9IENhc2VG
aXJzdDo6VXBwZXI7CiAgICAgZWxzZQogICAgICAgICBtX2Nhc2VGaXJzdCA9IENhc2VGaXJzdDo6
RmFsc2U7CkBAIC0yNTAsMjkgKzI0OCwxNyBAQCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6
ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogCiAg
ICAgYm9vbCB1c2VzRmFsbGJhY2s7CiAgICAgYm9vbCBpZ25vcmVQdW5jdHVhdGlvbiA9IGludGxC
b29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+aWdu
b3JlUHVuY3R1YXRpb24sIHVzZXNGYWxsYmFjayk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICBpZiAodXNlc0ZhbGxiYWNrKQogICAgICAgICBpZ25vcmVQdW5j
dHVhdGlvbiA9IGZhbHNlOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CiAgICAgbV9pZ25vcmVQdW5jdHVhdGlvbiA9IGlnbm9yZVB1bmN0dWF0aW9uOwogCi0gICAgbV9p
bml0aWFsaXplZENvbGxhdG9yID0gdHJ1ZTsKLX0KLQotdm9pZCBJbnRsQ29sbGF0b3I6OmNyZWF0
ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKLSAgICBBU1NFUlQoIW1fY29sbGF0b3IpOwotCi0gICAgaWYgKCFtX2luaXRpYWxpemVk
Q29sbGF0b3IpIHsKLSAgICAgICAgaW5pdGlhbGl6ZUNvbGxhdG9yKGdsb2JhbE9iamVjdCwganNV
bmRlZmluZWQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7Ci0gICAgfQotCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0g
ICAgYXV0byBjb2xsYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxVQ29sbGF0b3IsIFVDb2xsYXRvckRl
bGV0ZXI+KHVjb2xfb3BlbihtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCAmc3RhdHVzKSk7Ci0gICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgIG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8
VUNvbGxhdG9yLCBVQ29sbGF0b3JEZWxldGVyPih1Y29sX29wZW4obV9sb2NhbGUudXRmOCgpLmRh
dGEoKSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUg
Q29sbGF0b3IiX3MpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgVUNvbEF0dHJpYnV0
ZVZhbHVlIHN0cmVuZ3RoID0gVUNPTF9QUklNQVJZOwogICAgIFVDb2xBdHRyaWJ1dGVWYWx1ZSBj
YXNlTGV2ZWwgPSBVQ09MX09GRjsKQEAgLTMwMSwzNiArMjg3LDI5IEBAIHZvaWQgSW50bENvbGxh
dG9yOjpjcmVhdGVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRvci5nZXQoKSwg
VUNPTF9TVFJFTkdUSCwgc3RyZW5ndGgsICZzdGF0dXMpOwotICAgIHVjb2xfc2V0QXR0cmlidXRl
KGNvbGxhdG9yLmdldCgpLCBVQ09MX0NBU0VfTEVWRUwsIGNhc2VMZXZlbCwgJnN0YXR1cyk7Ci0g
ICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xfQ0FTRV9GSVJTVCwgY2Fz
ZUZpcnN0LCAmc3RhdHVzKTsKLSAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRvci5nZXQoKSwg
VUNPTF9OVU1FUklDX0NPTExBVElPTiwgbV9udW1lcmljID8gVUNPTF9PTiA6IFVDT0xfT0ZGLCAm
c3RhdHVzKTsKKyAgICB1Y29sX3NldEF0dHJpYnV0ZShtX2NvbGxhdG9yLmdldCgpLCBVQ09MX1NU
UkVOR1RILCBzdHJlbmd0aCwgJnN0YXR1cyk7CisgICAgdWNvbF9zZXRBdHRyaWJ1dGUobV9jb2xs
YXRvci5nZXQoKSwgVUNPTF9DQVNFX0xFVkVMLCBjYXNlTGV2ZWwsICZzdGF0dXMpOworICAgIHVj
b2xfc2V0QXR0cmlidXRlKG1fY29sbGF0b3IuZ2V0KCksIFVDT0xfQ0FTRV9GSVJTVCwgY2FzZUZp
cnN0LCAmc3RhdHVzKTsKKyAgICB1Y29sX3NldEF0dHJpYnV0ZShtX2NvbGxhdG9yLmdldCgpLCBV
Q09MX05VTUVSSUNfQ09MTEFUSU9OLCBtX251bWVyaWMgPyBVQ09MX09OIDogVUNPTF9PRkYsICZz
dGF0dXMpOwogCiAgICAgLy8gRklYTUU6IFNldHRpbmcgVUNPTF9BTFRFUk5BVEVfSEFORExJTkcg
dG8gVUNPTF9TSElGVEVEIGNhdXNlcyBwdW5jdHVhdGlvbiBhbmQgd2hpdGVzcGFjZSB0byBiZQog
ICAgIC8vIGlnbm9yZWQuIFRoZXJlIGlzIGN1cnJlbnRseSBubyB3YXkgdG8gaWdub3JlIG9ubHkg
cHVuY3R1YXRpb24uCi0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xf
QUxURVJOQVRFX0hBTkRMSU5HLCBtX2lnbm9yZVB1bmN0dWF0aW9uID8gVUNPTF9TSElGVEVEIDog
VUNPTF9ERUZBVUxULCAmc3RhdHVzKTsKKyAgICB1Y29sX3NldEF0dHJpYnV0ZShtX2NvbGxhdG9y
LmdldCgpLCBVQ09MX0FMVEVSTkFURV9IQU5ETElORywgbV9pZ25vcmVQdW5jdHVhdGlvbiA/IFVD
T0xfU0hJRlRFRCA6IFVDT0xfREVGQVVMVCwgJnN0YXR1cyk7CiAKICAgICAvLyAiVGhlIG1ldGhv
ZCBpcyByZXF1aXJlZCB0byByZXR1cm4gMCB3aGVuIGNvbXBhcmluZyBTdHJpbmdzIHRoYXQgYXJl
IGNvbnNpZGVyZWQgY2Fub25pY2FsbHkKICAgICAvLyBlcXVpdmFsZW50IGJ5IHRoZSBVbmljb2Rl
IHN0YW5kYXJkLiIKLSAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRvci5nZXQoKSwgVUNPTF9O
T1JNQUxJWkFUSU9OX01PREUsIFVDT0xfT04sICZzdGF0dXMpOwotICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb2xsYXRvciA9IFdURk1vdmUoY29s
bGF0b3IpOworICAgIHVjb2xfc2V0QXR0cmlidXRlKG1fY29sbGF0b3IuZ2V0KCksIFVDT0xfTk9S
TUFMSVpBVElPTl9NT0RFLCBVQ09MX09OLCAmc3RhdHVzKTsKKyAgICBBU1NFUlQoVV9TVUNDRVNT
KHN0YXR1cykpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWNvbGxhdG9y
LWNvbXBhcmVzdHJpbmdzCiBKU1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyB4LCBTdHJpbmdWaWV3IHkpCiB7
CisgICAgQVNTRVJUKG1fY29sbGF0b3IpOworCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIC8v
IDEwLjMuNCBDb21wYXJlU3RyaW5ncyBhYnN0cmFjdCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkK
LSAgICBpZiAoIW1fY29sbGF0b3IpIHsKLSAgICAgICAgY3JlYXRlQ29sbGF0b3IoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgaWYgKCFtX2NvbGxhdG9yKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwg
IkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIl9zKSk7Ci0gICAgfQotCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVUNvbGxhdGlvblJlc3VsdCByZXN1bHQgPSBV
Q09MX0VRVUFMOwogICAgIGlmICh4LmlzOEJpdCgpICYmIHkuaXM4Qml0KCkgJiYgeC5pc0FsbEFT
Q0lJKCkgJiYgeS5pc0FsbEFTQ0lJKCkpCkBAIC0zOTcsMjUgKzM3NiwxMCBAQCBBU0NJSUxpdGVy
YWwgSW50bENvbGxhdG9yOjpjYXNlRmlyc3RTdHJpbmcoQ2FzZUZpcnN0IGNhc2VGaXJzdCkKICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtaW50bC5jb2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09i
amVjdCogSW50bENvbGxhdG9yOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgLy8gMTAuMy41IEludGwuQ29s
bGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCi0gICAgLy8g
VGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0
dHJpYnV0ZXMgYXJlIHNldCBhcyBpZgotICAgIC8vIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBs
aXRlcmFsIGFzc2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUK
LSAgICAvLyB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRoaXMg
Q29sbGF0b3Igb2JqZWN0IChzZWUgMTAuNCk6IGxvY2FsZSwKLSAgICAvLyB1c2FnZSwgc2Vuc2l0
aXZpdHksIGlnbm9yZVB1bmN0dWF0aW9uLCBjb2xsYXRpb24sIGFzIHdlbGwgYXMgdGhvc2UgcHJv
cGVydGllcyBzaG93bgotICAgIC8vIGluIFRhYmxlIDEgd2hvc2Uga2V5cyBhcmUgaW5jbHVkZWQg
aW4gdGhlICVDb2xsYXRvciVbW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dCi0gICAgLy8gaW50ZXJu
YWwgc2xvdCBvZiB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gb2JqZWN0IHRoYXQgaXMgdGhlIGluaXRp
YWwgdmFsdWUgb2YKLSAgICAvLyBJbnRsLkNvbGxhdG9yLgotCi0gICAgaWYgKCFtX2luaXRpYWxp
emVkQ29sbGF0b3IpIHsKLSAgICAgICAgaW5pdGlhbGl6ZUNvbGxhdG9yKGdsb2JhbE9iamVjdCwg
anNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7Ci0gICAgfQotCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnVzYWdlLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHVzYWdlU3RyaW5nKG1fdXNhZ2UpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvci5oCmluZGV4IDEyN2I1YWViODdlMTM0NzAzMWVmZWIwNTBlZmRi
ZWU2MTVhNDk2NDYuLjdiZmFlZjdjMGE0ODgwYjA1NmUwMzc3NGJlNmFjYmU5OGVlZWNlNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC03Niwy
MSArNzYsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVDb2xsYXRvciop
IGNvbnN0OwogICAgIH07CiAKLSAgICB2b2lkIGNyZWF0ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0
Kik7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB1c2FnZVN0cmluZyhVc2FnZSk7CiAgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBzZW5zaXRpdml0eVN0cmluZyhTZW5zaXRpdml0eSk7CiAgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBjYXNlRmlyc3RTdHJpbmcoQ2FzZUZpcnN0KTsKIAotICAgIFN0cmlu
ZyBtX2xvY2FsZTsKLSAgICBTdHJpbmcgbV9jb2xsYXRpb247CiAgICAgV3JpdGVCYXJyaWVyPEpT
Qm91bmRGdW5jdGlvbj4gbV9ib3VuZENvbXBhcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVDb2xs
YXRvciwgVUNvbGxhdG9yRGVsZXRlcj4gbV9jb2xsYXRvcjsKKworICAgIFN0cmluZyBtX2xvY2Fs
ZTsKKyAgICBTdHJpbmcgbV9jb2xsYXRpb247CiAgICAgVXNhZ2UgbV91c2FnZTsKICAgICBTZW5z
aXRpdml0eSBtX3NlbnNpdGl2aXR5OwogICAgIENhc2VGaXJzdCBtX2Nhc2VGaXJzdDsKICAgICBi
b29sIG1fbnVtZXJpYzsKICAgICBib29sIG1faWdub3JlUHVuY3R1YXRpb247Ci0gICAgYm9vbCBt
X2luaXRpYWxpemVkQ29sbGF0b3IgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcAppbmRleCAyZDEzM2Q2M2FlYmM0ZGI4NzU5OWM4MGRjYmQwZjEwYmY3YTg5ZDE4Li45
MGU5NTkyODZhMzg1MjM1NjZmOTExMTM5NzViMWM4MTc1ZTU1NmYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTU0
LDE4ICs1NCwyMCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGluZGV4T2ZFeHRlbnNpb25LZXlDYSA9
IDA7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGluZGV4T2ZFeHRlbnNpb25LZXlOdSA9IDE7CiBzdGF0
aWMgY29uc3Qgc2l6ZV90IGluZGV4T2ZFeHRlbnNpb25LZXlIYyA9IDI7CiAKK3N0cnVjdCBVRmll
bGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigpKFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGl0ZXJh
dG9yKQorICAgICAgICAgICAgdWZpZWxkcG9zaXRlcl9jbG9zZShpdGVyYXRvcik7CisgICAgfQor
fTsKKwogdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0
b3IoKShVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkgY29uc3QKIHsKICAgICBpZiAoZGF0ZUZvcm1h
dCkKICAgICAgICAgdWRhdF9jbG9zZShkYXRlRm9ybWF0KTsKIH0KIAotdm9pZCBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OlVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyOjpvcGVyYXRvcigpKFVGaWVs
ZFBvc2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9yKSBjb25zdAotewotICAgIGlmIChpdGVyYXRvcikK
LSAgICAgICAgdWZpZWxkcG9zaXRlcl9jbG9zZShpdGVyYXRvcik7Ci19Ci0KIEludGxEYXRlVGlt
ZUZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdD4odm0uaGVhcCkpIEludGxEYXRlVGlt
ZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTQzNywxNCArNDM5LDEyIEBAIHZvaWQgSW50bERh
dGVUaW1lRm9ybWF0OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0
dGVybikKICAgICB9CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2Vj
LWluaXRpYWxpemVkYXRldGltZWZvcm1hdAogdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRp
YWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGxvY2FsZXMsIEpTVmFsdWUgb3JpZ2luYWxPcHRpb25zKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICAvLyAxMi4xLjEgSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0IChkYXRlVGltZUZvcm1h
dCwgbG9jYWxlcywgb3B0aW9ucykgKEVDTUEtNDAyKQotICAgIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVkYXRldGltZWZvcm1hdAotCiAgICAgVmVjdG9y
PFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFs
T2JqZWN0LCBsb2NhbGVzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogCkBAIC03MDEsOCArNzAxLDYgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxp
emVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIC8vIEZh
aWx1cmUgaGVyZSBtZWFucyB1bnN1cHBvcnRlZCBjYWxlbmRhciwgYW5kIGNhbiBzYWZlbHkgYmUg
aWdub3JlZC4KICAgICBVQ2FsZW5kYXIqIGNhbCA9IGNvbnN0X2Nhc3Q8VUNhbGVuZGFyKj4odWRh
dF9nZXRDYWxlbmRhcihtX2RhdGVGb3JtYXQuZ2V0KCkpKTsKICAgICB1Y2FsX3NldEdyZWdvcmlh
bkNoYW5nZShjYWwsIG1pbkVDTUFTY3JpcHRUaW1lLCAmc3RhdHVzKTsKLQotICAgIG1faW5pdGlh
bGl6ZWREYXRlVGltZUZvcm1hdCA9IHRydWU7CiB9CiAKIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OndlZWtkYXlTdHJpbmcoV2Vla2RheSB3ZWVrZGF5KQpAQCAtODUwLDE4ICs4NDgs
MTAgQEAgQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6dGltZVpvbmVOYW1lU3RyaW5n
KFRpbWVab25lTmFtZSB0aW1lWm9uZU5hbWUpCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVs
bCgpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwuZGF0ZXRpbWVm
b3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwogSlNPYmplY3QqIEludGxEYXRlVGltZUZv
cm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIC8vIDEyLjMuNSBJbnRsLkRhdGVUaW1lRm9ybWF0LnBy
b3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQotICAgIC8vIFRoZSBmdW5j
dGlvbiByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVz
IGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5n
IHRvIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRoZSB2YWx1ZSBvZiB0aGUgY29y
cmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IChz
ZWUgMTIuNCk6IGxvY2FsZSwgY2FsZW5kYXIsIG51bWJlcmluZ1N5c3RlbSwgdGltZVpvbmUsIGhv
dXIxMiwgd2Vla2RheSwgZXJhLCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29u
ZCwgYW5kIHRpbWVab25lTmFtZS4gUHJvcGVydGllcyB3aG9zZSBjb3JyZXNwb25kaW5nIGludGVy
bmFsIHNsb3RzIGFyZSBub3QgcHJlc2VudCBhcmUgbm90IGFzc2lnbmVkLgotICAgIC8vIE5vdGU6
IEluIHRoaXMgdmVyc2lvbiBvZiB0aGUgRUNNQVNjcmlwdCAyMDE1IEludGVybmF0aW9uYWxpemF0
aW9uIEFQSSwgdGhlIHRpbWVab25lIHByb3BlcnR5IHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIGRl
ZmF1bHQgdGltZSB6b25lIGlmIG5vIHRpbWVab25lIHByb3BlcnR5IHdhcyBwcm92aWRlZCBpbiB0
aGUgb3B0aW9ucyBvYmplY3QgcHJvdmlkZWQgdG8gdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29u
c3RydWN0b3IuIFRoZSBwcmV2aW91cyB2ZXJzaW9uIGxlZnQgdGhlIHRpbWVab25lIHByb3BlcnR5
IHVuZGVmaW5lZCBpbiB0aGlzIGNhc2UuCi0gICAgaWYgKCFtX2luaXRpYWxpemVkRGF0ZVRpbWVG
b3JtYXQpIHsKLSAgICAgICAgaW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGdsb2JhbE9iamVjdCwg
anNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7Ci0gICAgfQogCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbG9jYWxlKSk7CkBA
IC05MDQsMjIgKzg5NCwxNyBAQCBKU09iamVjdCogSW50bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gb3B0aW9u
czsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRkYXRldGltZQog
SlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibGUgdmFsdWUpCiB7CisgICAgQVNTRVJUKG1fZGF0ZUZvcm1hdCk7CisKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgLy8gMTIuMy40IEZvcm1hdERhdGVUaW1lIGFic3RyYWN0
IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4wKQotICAgIGlmICghbV9pbml0aWFsaXplZERhdGVUaW1l
Rm9ybWF0KSB7Ci0gICAgICAgIGluaXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3Qs
IGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBzY29wZS5hc3NlcnROb0V4
Y2VwdGlvbigpOwotICAgIH0KLQotICAgIC8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJl
ciwgdGhlbiB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmICghc3RkOjppc2Zp
bml0ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdCBmb3Jt
YXQoKSJfcyk7CiAKLSAgICAvLyBEZWxlZ2F0ZSByZW1haW5pbmcgc3RlcHMgdG8gSUNVLgogICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIFZlY3RvcjxVQ2hhciwgMzI+
IHJlc3VsdCgzMik7CiAgICAgYXV0byByZXN1bHRMZW5ndGggPSB1ZGF0X2Zvcm1hdChtX2RhdGVG
b3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBudWxscHRy
LCAmc3RhdHVzKTsKQEAgLTkzNCw3ICs5MTksNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1h
dDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkKICAg
ICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgp
KTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6cGFydFR5cGVTdHJpbmco
VURhdGVGb3JtYXRGaWVsZCBmaWVsZCkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgcGFydFR5cGVTdHJp
bmcoVURhdGVGb3JtYXRGaWVsZCBmaWVsZCkKIHsKICAgICBzd2l0Y2ggKGZpZWxkKSB7CiAgICAg
Y2FzZSBVREFUX0VSQV9GSUVMRDoKQEAgLTk5NiwxNSArOTgxLDE0IEBAIEFTQ0lJTGl0ZXJhbCBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OnBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQgZmllbGQp
CiAgICAgcmV0dXJuICJ1bmtub3duIl9zOwogfQogCi0KKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtZm9ybWF0ZGF0ZXRpbWV0b3BhcnRzCiBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFs
dWUpCiB7CisgICAgQVNTRVJUKG1fZGF0ZUZvcm1hdCk7CisKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgLy8gMTIuMS44IEZvcm1hdERhdGVUaW1lVG9QYXJ0cyAoRUNNQS00MDIgNC4wKQotICAg
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdGRhdGV0aW1ldG9w
YXJ0cwotCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZGF0ZSB2YWx1ZSBpcyBub3QgZmlu
aXRlIGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdFRvUGFydHMoKSJfcyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggNzhl
YzAyY2M0MTNhY2U4MjVhMjgwZTQ1ZmQxZmEwYjIwZTQ2NGI1Zi4uZDg0NTUxNDdjMzZkZTg1ODBj
MDk3ZTM3NzE2NWZhNjM4YTBlODcxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKQEAgLTExMCwxMyArMTEwLDYgQEAgcHJpdmF0
ZToKICAgICBNaW51dGUgbV9taW51dGUgeyBNaW51dGU6Ok5vbmUgfTsKICAgICBTZWNvbmQgbV9z
ZWNvbmQgeyBTZWNvbmQ6Ok5vbmUgfTsKICAgICBUaW1lWm9uZU5hbWUgbV90aW1lWm9uZU5hbWUg
eyBUaW1lWm9uZU5hbWU6Ok5vbmUgfTsKLSAgICBib29sIG1faW5pdGlhbGl6ZWREYXRlVGltZUZv
cm1hdCB7IGZhbHNlIH07Ci0KLSAgICBzdHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0
ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVUZpZWxkUG9zaXRpb25JdGVyYXRvciopIGNv
bnN0OwotICAgIH07Ci0KLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVE
YXRlRm9ybWF0RmllbGQpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IDA2MjFm
M2Q0YWFlYzZiYzgxZTQ5MTY0MTQ0ZjA3NTE2NzZlOWUyNmEuLjQwOWM1YjkyNDZlZGIzNjYxNTU5
ZGZhOTIyYjljOWYxM2NlZDdkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC00NCw2ICs0NCwyMyBAQCBjb25zdCBDbGFz
c0luZm8gSW50bE51bWJlckZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbgogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnROdW1iZXJF
eHRlbnNpb25LZXlzWzFdID0geyAibnUiIH07CiAKK3N0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJh
dG9yRGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3Iq
IGl0ZXJhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGl0ZXJhdG9yKQorICAgICAgICAg
ICAgdWZpZWxkcG9zaXRlcl9jbG9zZShpdGVyYXRvcik7CisgICAgfQorfTsKKworc3RydWN0IElu
dGxOdW1iZXJGb3JtYXRGaWVsZCB7CisgICAgaW50MzJfdCB0eXBlOworICAgIGludDMyX3Qgc2l6
ZTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0RmllbGQoaW50MzJfdCB0eXBlLCBpbnQzMl90IHNpemUp
CisgICAgICAgIDogdHlwZSh0eXBlKQorICAgICAgICAsIHNpemUoc2l6ZSkKKyAgICB7IH0KK307
CisKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9y
KCkoVU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAogewogICAgIGlmIChudW1iZXJG
b3JtYXQpCkBAIC0xNTAsMTQgKzE2NywxMiBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJl
bmN5RGlnaXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgcmV0dXJuIDI7CiB9CiAKKy8v
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJmb3Jt
YXQKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1Zh
bHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAvLyAxMS4xLjIgSW5pdGlhbGl6ZU51
bWJlckZvcm1hdCAobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSAoRUNNQS00MDIpCi0g
ICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlhbGl6ZW51bWJl
cmZvcm1hdAotCiAgICAgYXV0byByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxl
TGlzdChnbG9iYWxPYmplY3QsIGxvY2FsZXMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CiAKQEAgLTI4MCw5ICsyOTUsOSBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YQogCiAgICAgYm9vbCB1c2VzRmFsbGJhY2s7CiAgICAgYm9vbCB1c2VHcm91cGluZyA9IGludGxC
b29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInVzZUdyb3VwaW5nIiksIHVzZXNGYWxsYmFjayk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAodXNlc0ZhbGxiYWNrKQogICAgICAgICB1c2VH
cm91cGluZyA9IHRydWU7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
ICAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmc7CiAKICAgICBVTnVtYmVyRm9ybWF0U3R5
bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7CkBAIC0zMzcsMTkgKzM1MiwxNiBAQCB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYQogICAgIH0KICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1h
dC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3VzZUdyb3VwaW5nKTsKICAgICB1bnVtX3Nl
dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9ST1VORElOR19NT0RFLCBVTlVN
X1JPVU5EX0hBTEZVUCk7Ci0KLSAgICBtX2luaXRpYWxpemVkTnVtYmVyRm9ybWF0ID0gdHJ1ZTsK
IH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFs
dWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGRvdWJsZSB2YWx1ZSkKIHsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOworCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGlmICghbV9pbml0aWFsaXplZE51bWJlckZvcm1hdCkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcyk7Ci0KICAgICBVRXJyb3JDb2Rl
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIoMzIp
OwogICAgIGF1dG8gbGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIHZhbHVlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBudWxscHRyLCAmc3RhdHVz
KTsKQEAgLTM2NCwxNCArMzc2LDE0IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4g
anNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKIH0KIAorLy8gaHR0
cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2
YWx1ZSkKIHsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOworCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIGlmICghbV9pbml0aWFsaXplZE51bWJlckZvcm1hdCkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcyk7Ci0KICAgICBhdXRvIHN0cmluZyA9IHZhbHVl
LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCkBAIC00MjAsMjUgKzQzMiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJl
ckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURp
cwogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWE0MDIvI3NlYy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRp
b25zCiBKU09iamVjdCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIC8vIDEx
LjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEt
NDAyIDIuMCkKLSAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2Ug
cHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmCi0gICAgLy8gY29uc3RydWN0
ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxvd2lu
ZyBwcm9wZXJ0aWVzIHRoZQotICAgIC8vIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVy
bmFsIHNsb3Qgb2YgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0IChzZWUgMTEuNCk6Ci0gICAgLy8g
bG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIHN0eWxlLCBjdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5
LCBtaW5pbXVtSW50ZWdlckRpZ2l0cywKLSAgICAvLyBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIG1h
eGltdW1GcmFjdGlvbkRpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLAotICAgIC8vIG1h
eGltdW1TaWduaWZpY2FudERpZ2l0cywgYW5kIHVzZUdyb3VwaW5nLiBQcm9wZXJ0aWVzIHdob3Nl
IGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwKLSAgICAvLyBzbG90cyBhcmUgbm90IHByZXNlbnQgYXJl
IG5vdCBhc3NpZ25lZC4KLQotICAgIGlmICghbV9pbml0aWFsaXplZE51bWJlckZvcm1hdCkgewot
ICAgICAgICBpbml0aWFsaXplTnVtYmVyRm9ybWF0KGdsb2JhbE9iamVjdCwganNVbmRlZmluZWQo
KSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0g
ICAgfQotCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9i
YWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3RlbSwganNTdHJpbmcodm0sIG1fbnVt
YmVyaW5nU3lzdGVtKSk7CkBAIC00NjQsMTMgKzQ2MSw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1h
dDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKICAgICBt
X2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKIH0KIAotdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKShVRmllbGRQ
b3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikgY29uc3QKLXsKLSAgICBpZiAoaXRlcmF0b3IpCi0g
ICAgICAgIHVmaWVsZHBvc2l0ZXJfY2xvc2UoaXRlcmF0b3IpOwotfQotCi1BU0NJSUxpdGVyYWwg
SW50bE51bWJlckZvcm1hdDo6cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVs
ZCwgZG91YmxlIHZhbHVlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVt
YmVyRm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCiB7CiAgICAgc3dpdGNoIChmaWVs
ZCkgewogICAgIGNhc2UgVU5VTV9JTlRFR0VSX0ZJRUxEOgpAQCAtNTUwLDE4ICs1NDEsMTQgQEAg
dm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICB9CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcnRvcGFydHMKIEpTVmFsdWUgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3Vi
bGUgdmFsdWUpCiB7CisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKKwogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICAvLyBGb3JtYXROdW1iZXJUb1BhcnRzIChFQ01BLTQwMikKLSAgICAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXJ0b3BhcnRzCi0g
ICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtcGFydGl0aW9ubnVtYmVy
cGF0dGVybgotCi0gICAgaWYgKCFtX2luaXRpYWxpemVkTnVtYmVyRm9ybWF0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcyk7Ci0KICAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIGZpZWxkSXRyID0gc3RkOjp1bmlx
dWVfcHRyPFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IsIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxl
dGVyPih1ZmllbGRwb3NpdGVyX29wZW4oJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuaAppbmRleCA5ZjEwYjVkNDM2NzBiOGRlMmY2ZjQwZTRkNzczMzg1ZTM1NmYxODAxLi4xYTli
YzYxZWJjNmJlMDg1ZTY5NzBmZWI1MDRlNTE2MmQ5OWY0YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC04MiwxMSArODIsMTIg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsK
ICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURp
c3BsYXkpOwogCisgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1h
dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0
ZXI+IG1fbnVtYmVyRm9ybWF0OworCiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIFN0cmluZyBt
X251bWJlcmluZ1N5c3RlbTsKICAgICBTdHJpbmcgbV9jdXJyZW5jeTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0
OwotICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7CiAgICAg
dW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKICAgICB1bnNpZ25lZCBtX21p
bmltdW1GcmFjdGlvbkRpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFjdGlv
bkRpZ2l0cyB7IDMgfTsKQEAgLTk1LDIyICs5Niw2IEBAIHByaXZhdGU6CiAgICAgU3R5bGUgbV9z
dHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVuY3lE
aXNwbGF5OwogICAgIGJvb2wgbV91c2VHcm91cGluZyB7IHRydWUgfTsKLSAgICBib29sIG1faW5p
dGlhbGl6ZWROdW1iZXJGb3JtYXQgeyBmYWxzZSB9OwotCi0gICAgc3RydWN0IFVGaWVsZFBvc2l0
aW9uSXRlcmF0b3JEZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0
aW9uSXRlcmF0b3IqKSBjb25zdDsKLSAgICB9OwotCi0gICAgc3RydWN0IEludGxOdW1iZXJGb3Jt
YXRGaWVsZCB7Ci0gICAgICAgIGludDMyX3QgdHlwZTsKLSAgICAgICAgaW50MzJfdCBzaXplOwot
ICAgICAgICBJbnRsTnVtYmVyRm9ybWF0RmllbGQoaW50MzJfdCB0eXBlLCBpbnQzMl90IHNpemUp
Ci0gICAgICAgICAgICA6IHR5cGUodHlwZSkKLSAgICAgICAgICAgICwgc2l6ZShzaXplKQotICAg
ICAgICB7IH0KLSAgICB9OwotCi0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmlu
ZyhVTnVtYmVyRm9ybWF0RmllbGRzLCBkb3VibGUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNw
cAppbmRleCA4NzcxNjAxMjI4NGM4MWFkYzM5MjdjNjMxZDRjMzU4N2EyMDFhYjg5Li4zMGNjYzVh
ZmMzM2QyNzIwYzQ1YjFmMDhlY2UwMjExOTE3YzM2MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKQEAgLTg4LDIxICs4OCwxOCBA
QCB2b2lkIEludGxQbHVyYWxSdWxlczo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CiB9CiAKLW5hbWVzcGFjZSBJbnRsUFJJbnRlcm5hbCB7CiBzdGF0aWMgVmVjdG9yPFN0
cmluZz4gbG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBzaXplX3QpCiB7CiAgICAgVmVjdG9yPFN0
cmluZz4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKIH0KLX0KIAorLy8gaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlhbGl6ZXBsdXJhbHJ1bGVzCiB2b2lkIEludGxQbHVy
YWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIC8vIDEzLjEuMSBJbml0aWFsaXplUGx1cmFsUnVsZXMgKHBsdXJhbFJ1
bGVzLCBsb2NhbGVzLCBvcHRpb25zKQotICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTQwMi8jc2VjLWluaXRpYWxpemVwbHVyYWxydWxlcwogICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVl
c3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwgbG9jYWxl
cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIApAQCAtMTIwLDcg
KzExNyw3IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgbG9jYWxlT3B0LmFkZCh2bS5w
cm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLnN0cmluZygpLCBsb2NhbGVNYXRjaGVyKTsKIAog
ICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxQbHVyYWxS
dWxlc0F2YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNv
bHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1
ZXN0ZWRMb2NhbGVzLCBsb2NhbGVPcHQsIG51bGxwdHIsIDAsIEludGxQUkludGVybmFsOjpsb2Nh
bGVEYXRhKTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9IHJlc29sdmVM
b2NhbGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBs
b2NhbGVPcHQsIG51bGxwdHIsIDAsIGxvY2FsZURhdGEpOwogICAgIG1fbG9jYWxlID0gcmVzb2x2
ZWQuZ2V0KHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZS5zdHJpbmcoKSk7CiAgICAgaWYgKG1fbG9j
YWxlLmlzRW1wdHkoKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMgZHVlIHRvIGludmFsaWQgbG9j
YWxlIl9zKTsKQEAgLTE4MywyMiArMTgwLDE2IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0
aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5p
dGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBt
X2luaXRpYWxpemVkUGx1cmFsUnVsZXMgPSB0cnVlOwogfQogCisvLyBodHRwczovL3RjMzkuZXMv
ZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwog
SlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7CisgICAgQVNTRVJUKG1fcGx1cmFsUnVsZXMpOworCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIC8vIDEzLjQuNCBJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgKCkKLSAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIv
I3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKLSAgICBpZiAo
VU5MSUtFTFkoIW1faW5pdGlhbGl6ZWRQbHVyYWxSdWxlcykpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBQbHVyYWxSdWxlcyJfcyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQogICAgIEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFs
T2JqZWN0KTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxv
Y2FsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCBtX3R5cGUgPT0gVVBMVVJBTF9UWVBFX09SRElOQUwgPyAib3JkaW5hbCJfcyA6ICJjYXJkaW5h
bCJfcykpOwpAQCAtMjMzLDE2ICsyMjQsMTQgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6
cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBvcHRpb25zKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1yZXNvbHZlcGx1cmFsCiBKU1ZhbHVlIEludGxQbHVyYWxSdWxlczo6c2VsZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkKIHsKKyAgICBBU1NF
UlQobV9wbHVyYWxSdWxlcyk7CisKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgLy8gMTMuMS40
IFJlc29sdmVQbHVyYWwgKHBsdXJhbFJ1bGVzLCBuKQotICAgIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTQwMi8jc2VjLXJlc29sdmVwbHVyYWwKLSAgICBpZiAoIW1faW5pdGlhbGl6ZWRQ
bHVyYWxSdWxlcykKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3QgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUGx1cmFsUnVsZXMiX3MpOwot
CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaAppbmRleCAwNTU0N2Y4NGM0ZTcwZDk1MDQ4MDliOTFk
NDc1MGIzM2RlNDNlMGM5Li5jNWVhNjM1N2M4MDdkMWMwOWU1OTM1ODMxMzczMjEwZjM0MDEzYmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMu
aApAQCAtNzAsNyArNzAsNiBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdCopIGNvbnN0OwogICAgIH07CiAKLSAgICBib29sIG1faW5pdGlhbGl6ZWRQbHVy
YWxSdWxlcyB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxSdWxlcywgVVBs
dXJhbFJ1bGVzRGVsZXRlcj4gbV9wbHVyYWxSdWxlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51
bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9ybWF0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397027</attachid>
            <date>2020-04-20 15:51:30 -0700</date>
            <delta_ts>2020-04-20 15:54:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-210764-20200420155129.patch</filename>
            <type>text/plain</type>
            <size>29826</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NWU5NjRjMjkxMTlhYzA3MjRlYTc3ZWU2ZDRkNjQ4NmI0MDUyMTQ3Li4zYzFiOGVhOGZlOWY2ZmY5
NWMyMzllZjIwOTAwYTM0MTk3YWVkZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMC0wNC0yMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgSW50bCBjbGFzc2VzIHNob3VsZG4ndCBuZWVkIGFuIG1faW5pdGlh
bGl6ZWQqIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTA3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBFeGlzdGluZyBJbnRsIGNsYXNzZXMgZWFjaCBoYXZlIGEgZmllbGQgbGlrZSBtX2luaXRpYWxp
emVkTnVtYmVyRm9ybWF0LCBidXQgdGhpcyBpcyB1bm5lY2Vzc2FyeSBvbiB0d28gbGV2ZWxzOgor
ICAgICAgICAgIDEuIFRoZSB0aGluZyB0aGF0IGdldHMgaW5pdGlhbGl6ZWQgaXMgYSB1bmlxdWUg
cG9pbnRlciB0byBhbiBJQ1Ugc3RydWN0LCBzbyB3ZSBjYW4gY2hlY2sgaXQgZGlyZWN0bHkuCisg
ICAgICAgICAgMi4gRXZlcnl3aGVyZSB3ZSdyZSBjaGVja2luZyB0aGlzIGlzIHJlZHVuZGFudCBz
aW5jZSB3ZSd2ZSBhbHJlYWR5IGRvbmUgdGhlIHNhbWUgY2hlY2sgb24gdGhlIHByb3RvdHlwZSBz
aWRlLAorICAgICAgICAgICAgIHRoZXJlZm9yZSB3ZSBjYW4ganVzdCBBU1NFUlQgYmVmb3JlIHVz
aW5nIHNhaWQgSUNVIHN0cnVjdC4KKworICAgICAgICBXaGlsZSB3ZSdyZSBhdCBpdCwgY2xlYW4g
dXAgb3RoZXIgc3R1ZmYgbGlrZToKKyAgICAgICAgICAtIE1vdmUgc3R1ZmYgdGhhdCBkb2Vzbid0
IG5lZWQgdG8gYmUgcGFydCBvZiB0aGUgY2xhc3MgdG8gdGhlIENQUCBmaWxlIChlLmcuIFVGaWVs
ZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyKS4KKyAgICAgICAgICAtIE1lcmdlIGNyZWF0ZUNvbGxh
dG9yIGludG8gaW5pdGlhbGl6ZUNvbGxhdG9yIChzZWVtcyBsaWtlIHRoaXMgaXMgcHJvYmFibHkg
dGhlIG9sZGVzdCBjb2RlIGluIHRoaXMgc3BhY2UpLgorCisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xs
YXRvcik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MpOgorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvcjo6Y3JlYXRlQ29sbGF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwOgorICAgICAgICAoSlNDOjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0
b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6
ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpyZXNv
bHZlZE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdCk6
CisgICAgICAgIChKU0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVU
aW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6cGFydFR5cGVTdHJpbmcp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6VUZpZWxk
UG9zaXRpb25JdGVyYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlND
OjpJbnRsTnVtYmVyRm9ybWF0RmllbGQ6OkludGxOdW1iZXJGb3JtYXRGaWVsZCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVt
YmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpwYXJ0VHlwZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRl
cjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OnBhcnRUeXBlU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6Cisg
ICAgICAgIChKU0M6OmxvY2FsZURhdGEpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6
OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6
cmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3Qp
OgorICAgICAgICAoSlNDOjpJbnRsUFJJbnRlcm5hbDo6bG9jYWxlRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKwogMjAyMC0wNC0yMCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlICNpbXBvcnQgaW5zdGVhZCBv
ZiAjaW5jbHVkZSBpbiBPYmplY3RpdmUtQyBhbmQgZG9uJ3QgdXNlICNwcmFnbWEgb25jZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggZjU0
ZDBlODJiY2IxOTAxYjY2M2RkZjU4YWFiNTIxYzE2OThlOWY0OS4uYzE0Y2VjMWY2MjQ1Y2I4NDQy
NGJmZGI2M2YxMDFkMTczYzFhNDk4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0xNjUsMTQgKzE2NSwxMiBAQCBzdGF0aWMgVmVjdG9y
PFN0cmluZz4gc2VhcmNoTG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBzaXplX3Qga2V5SW5kZXgp
CiAgICAgcmV0dXJuIGtleUxvY2FsZURhdGE7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5naXRodWIu
aW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVjb2xsYXRvcgogdm9pZCBJbnRsQ29sbGF0b3I6Omlu
aXRpYWxpemVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxv
Y2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICAvLyAxMC4xLjEgSW5pdGlhbGl6ZUNvbGxhdG9yIChjb2xsYXRvciwgbG9jYWxlcywgb3B0aW9u
cykgKEVDTUEtNDAyKQotICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2Vj
LWluaXRpYWxpemVjb2xsYXRvcgotCiAgICAgYXV0byByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25p
Y2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGxvY2FsZXMpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKQEAgLTIyOSwxMCArMjI3LDEwIEBAIHZvaWQgSW50
bENvbGxhdG9yOjppbml0aWFsaXplQ29sbGF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBsb2NhCiAgICAgbV9jb2xsYXRpb24gPSBjb2xsYXRpb24uaXNOdWxsKCkgPyAi
ZGVmYXVsdCJfcyA6IGNvbGxhdGlvbjsKICAgICBtX251bWVyaWMgPSByZXN1bHQuZ2V0KCJrbiJf
cykgPT0gInRydWUiOwogCi0gICAgY29uc3QgU3RyaW5nJiBjYXNlRmlyc3QgPSByZXN1bHQuZ2V0
KCJrZiJfcyk7Ci0gICAgaWYgKGNhc2VGaXJzdCA9PSAibG93ZXIiKQorICAgIGNvbnN0IFN0cmlu
ZyYgY2FzZUZpcnN0U3RyaW5nID0gcmVzdWx0LmdldCgia2YiX3MpOworICAgIGlmIChjYXNlRmly
c3RTdHJpbmcgPT0gImxvd2VyIikKICAgICAgICAgbV9jYXNlRmlyc3QgPSBDYXNlRmlyc3Q6Okxv
d2VyOwotICAgIGVsc2UgaWYgKGNhc2VGaXJzdCA9PSAidXBwZXIiKQorICAgIGVsc2UgaWYgKGNh
c2VGaXJzdFN0cmluZyA9PSAidXBwZXIiKQogICAgICAgICBtX2Nhc2VGaXJzdCA9IENhc2VGaXJz
dDo6VXBwZXI7CiAgICAgZWxzZQogICAgICAgICBtX2Nhc2VGaXJzdCA9IENhc2VGaXJzdDo6RmFs
c2U7CkBAIC0yNTAsMjkgKzI0OCwxNyBAQCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNv
bGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogCiAgICAg
Ym9vbCB1c2VzRmFsbGJhY2s7CiAgICAgYm9vbCBpZ25vcmVQdW5jdHVhdGlvbiA9IGludGxCb29s
ZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+aWdub3Jl
UHVuY3R1YXRpb24sIHVzZXNGYWxsYmFjayk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBpZiAodXNlc0ZhbGxiYWNrKQogICAgICAgICBpZ25vcmVQdW5jdHVh
dGlvbiA9IGZhbHNlOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAg
ICAgbV9pZ25vcmVQdW5jdHVhdGlvbiA9IGlnbm9yZVB1bmN0dWF0aW9uOwogCi0gICAgbV9pbml0
aWFsaXplZENvbGxhdG9yID0gdHJ1ZTsKLX0KLQotdm9pZCBJbnRsQ29sbGF0b3I6OmNyZWF0ZUNv
bGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKLSAgICBBU1NFUlQoIW1fY29sbGF0b3IpOwotCi0gICAgaWYgKCFtX2luaXRpYWxpemVkQ29s
bGF0b3IpIHsKLSAgICAgICAgaW5pdGlhbGl6ZUNvbGxhdG9yKGdsb2JhbE9iamVjdCwganNVbmRl
ZmluZWQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7Ci0gICAgfQotCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
YXV0byBjb2xsYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxVQ29sbGF0b3IsIFVDb2xsYXRvckRlbGV0
ZXI+KHVjb2xfb3BlbihtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCAmc3RhdHVzKSk7Ci0gICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQorICAgIG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNv
bGxhdG9yLCBVQ29sbGF0b3JEZWxldGVyPih1Y29sX29wZW4obV9sb2NhbGUudXRmOCgpLmRhdGEo
KSwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgQ29s
bGF0b3IiX3MpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgVUNvbEF0dHJpYnV0ZVZh
bHVlIHN0cmVuZ3RoID0gVUNPTF9QUklNQVJZOwogICAgIFVDb2xBdHRyaWJ1dGVWYWx1ZSBjYXNl
TGV2ZWwgPSBVQ09MX09GRjsKQEAgLTMwMSwzNiArMjg3LDI5IEBAIHZvaWQgSW50bENvbGxhdG9y
OjpjcmVhdGVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRvci5nZXQoKSwgVUNP
TF9TVFJFTkdUSCwgc3RyZW5ndGgsICZzdGF0dXMpOwotICAgIHVjb2xfc2V0QXR0cmlidXRlKGNv
bGxhdG9yLmdldCgpLCBVQ09MX0NBU0VfTEVWRUwsIGNhc2VMZXZlbCwgJnN0YXR1cyk7Ci0gICAg
dWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xfQ0FTRV9GSVJTVCwgY2FzZUZp
cnN0LCAmc3RhdHVzKTsKLSAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRvci5nZXQoKSwgVUNP
TF9OVU1FUklDX0NPTExBVElPTiwgbV9udW1lcmljID8gVUNPTF9PTiA6IFVDT0xfT0ZGLCAmc3Rh
dHVzKTsKKyAgICB1Y29sX3NldEF0dHJpYnV0ZShtX2NvbGxhdG9yLmdldCgpLCBVQ09MX1NUUkVO
R1RILCBzdHJlbmd0aCwgJnN0YXR1cyk7CisgICAgdWNvbF9zZXRBdHRyaWJ1dGUobV9jb2xsYXRv
ci5nZXQoKSwgVUNPTF9DQVNFX0xFVkVMLCBjYXNlTGV2ZWwsICZzdGF0dXMpOworICAgIHVjb2xf
c2V0QXR0cmlidXRlKG1fY29sbGF0b3IuZ2V0KCksIFVDT0xfQ0FTRV9GSVJTVCwgY2FzZUZpcnN0
LCAmc3RhdHVzKTsKKyAgICB1Y29sX3NldEF0dHJpYnV0ZShtX2NvbGxhdG9yLmdldCgpLCBVQ09M
X05VTUVSSUNfQ09MTEFUSU9OLCBtX251bWVyaWMgPyBVQ09MX09OIDogVUNPTF9PRkYsICZzdGF0
dXMpOwogCiAgICAgLy8gRklYTUU6IFNldHRpbmcgVUNPTF9BTFRFUk5BVEVfSEFORExJTkcgdG8g
VUNPTF9TSElGVEVEIGNhdXNlcyBwdW5jdHVhdGlvbiBhbmQgd2hpdGVzcGFjZSB0byBiZQogICAg
IC8vIGlnbm9yZWQuIFRoZXJlIGlzIGN1cnJlbnRseSBubyB3YXkgdG8gaWdub3JlIG9ubHkgcHVu
Y3R1YXRpb24uCi0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xfQUxU
RVJOQVRFX0hBTkRMSU5HLCBtX2lnbm9yZVB1bmN0dWF0aW9uID8gVUNPTF9TSElGVEVEIDogVUNP
TF9ERUZBVUxULCAmc3RhdHVzKTsKKyAgICB1Y29sX3NldEF0dHJpYnV0ZShtX2NvbGxhdG9yLmdl
dCgpLCBVQ09MX0FMVEVSTkFURV9IQU5ETElORywgbV9pZ25vcmVQdW5jdHVhdGlvbiA/IFVDT0xf
U0hJRlRFRCA6IFVDT0xfREVGQVVMVCwgJnN0YXR1cyk7CiAKICAgICAvLyAiVGhlIG1ldGhvZCBp
cyByZXF1aXJlZCB0byByZXR1cm4gMCB3aGVuIGNvbXBhcmluZyBTdHJpbmdzIHRoYXQgYXJlIGNv
bnNpZGVyZWQgY2Fub25pY2FsbHkKICAgICAvLyBlcXVpdmFsZW50IGJ5IHRoZSBVbmljb2RlIHN0
YW5kYXJkLiIKLSAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRvci5nZXQoKSwgVUNPTF9OT1JN
QUxJWkFUSU9OX01PREUsIFVDT0xfT04sICZzdGF0dXMpOwotICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb2xsYXRvciA9IFdURk1vdmUoY29sbGF0
b3IpOworICAgIHVjb2xfc2V0QXR0cmlidXRlKG1fY29sbGF0b3IuZ2V0KCksIFVDT0xfTk9STUFM
SVpBVElPTl9NT0RFLCBVQ09MX09OLCAmc3RhdHVzKTsKKyAgICBBU1NFUlQoVV9TVUNDRVNTKHN0
YXR1cykpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWNvbGxhdG9yLWNv
bXBhcmVzdHJpbmdzCiBKU1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyB4LCBTdHJpbmdWaWV3IHkpCiB7Cisg
ICAgQVNTRVJUKG1fY29sbGF0b3IpOworCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIC8vIDEw
LjMuNCBDb21wYXJlU3RyaW5ncyBhYnN0cmFjdCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKLSAg
ICBpZiAoIW1fY29sbGF0b3IpIHsKLSAgICAgICAgY3JlYXRlQ29sbGF0b3IoZ2xvYmFsT2JqZWN0
KTsKLSAgICAgICAgaWYgKCFtX2NvbGxhdG9yKQotICAgICAgICAgICAgcmV0dXJuIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkZh
aWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIl9zKSk7Ci0gICAgfQotCiAgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVUNvbGxhdGlvblJlc3VsdCByZXN1bHQgPSBVQ09M
X0VRVUFMOwogICAgIGlmICh4LmlzOEJpdCgpICYmIHkuaXM4Qml0KCkgJiYgeC5pc0FsbEFTQ0lJ
KCkgJiYgeS5pc0FsbEFTQ0lJKCkpCkBAIC0zOTcsMjUgKzM3NiwxMCBAQCBBU0NJSUxpdGVyYWwg
SW50bENvbGxhdG9yOjpjYXNlRmlyc3RTdHJpbmcoQ2FzZUZpcnN0IGNhc2VGaXJzdCkKICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtaW50bC5jb2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVj
dCogSW50bENvbGxhdG9yOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgLy8gMTAuMy41IEludGwuQ29sbGF0
b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCi0gICAgLy8gVGhl
IGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJp
YnV0ZXMgYXJlIHNldCBhcyBpZgotICAgIC8vIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRl
cmFsIGFzc2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUKLSAg
ICAvLyB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRoaXMgQ29s
bGF0b3Igb2JqZWN0IChzZWUgMTAuNCk6IGxvY2FsZSwKLSAgICAvLyB1c2FnZSwgc2Vuc2l0aXZp
dHksIGlnbm9yZVB1bmN0dWF0aW9uLCBjb2xsYXRpb24sIGFzIHdlbGwgYXMgdGhvc2UgcHJvcGVy
dGllcyBzaG93bgotICAgIC8vIGluIFRhYmxlIDEgd2hvc2Uga2V5cyBhcmUgaW5jbHVkZWQgaW4g
dGhlICVDb2xsYXRvciVbW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dCi0gICAgLy8gaW50ZXJuYWwg
c2xvdCBvZiB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gb2JqZWN0IHRoYXQgaXMgdGhlIGluaXRpYWwg
dmFsdWUgb2YKLSAgICAvLyBJbnRsLkNvbGxhdG9yLgotCi0gICAgaWYgKCFtX2luaXRpYWxpemVk
Q29sbGF0b3IpIHsKLSAgICAgICAgaW5pdGlhbGl6ZUNvbGxhdG9yKGdsb2JhbE9iamVjdCwganNV
bmRlZmluZWQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7Ci0gICAgfQotCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnVzYWdlLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sIHVzYWdlU3RyaW5nKG1fdXNhZ2UpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5oCmluZGV4IDEyN2I1YWViODdlMTM0NzAzMWVmZWIwNTBlZmRiZWU2
MTVhNDk2NDYuLjdiZmFlZjdjMGE0ODgwYjA1NmUwMzc3NGJlNmFjYmU5OGVlZWNlNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC03NiwyMSAr
NzYsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVDb2xsYXRvciopIGNv
bnN0OwogICAgIH07CiAKLSAgICB2b2lkIGNyZWF0ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0Kik7
CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB1c2FnZVN0cmluZyhVc2FnZSk7CiAgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBzZW5zaXRpdml0eVN0cmluZyhTZW5zaXRpdml0eSk7CiAgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBjYXNlRmlyc3RTdHJpbmcoQ2FzZUZpcnN0KTsKIAotICAgIFN0cmluZyBt
X2xvY2FsZTsKLSAgICBTdHJpbmcgbV9jb2xsYXRpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTQm91
bmRGdW5jdGlvbj4gbV9ib3VuZENvbXBhcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVDb2xsYXRv
ciwgVUNvbGxhdG9yRGVsZXRlcj4gbV9jb2xsYXRvcjsKKworICAgIFN0cmluZyBtX2xvY2FsZTsK
KyAgICBTdHJpbmcgbV9jb2xsYXRpb247CiAgICAgVXNhZ2UgbV91c2FnZTsKICAgICBTZW5zaXRp
dml0eSBtX3NlbnNpdGl2aXR5OwogICAgIENhc2VGaXJzdCBtX2Nhc2VGaXJzdDsKICAgICBib29s
IG1fbnVtZXJpYzsKICAgICBib29sIG1faWdub3JlUHVuY3R1YXRpb247Ci0gICAgYm9vbCBtX2lu
aXRpYWxpemVkQ29sbGF0b3IgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcAppbmRleCAyZDEzM2Q2M2FlYmM0ZGI4NzU5OWM4MGRjYmQwZjEwYmY3YTg5ZDE4Li45MGU5
NTkyODZhMzg1MjM1NjZmOTExMTM5NzViMWM4MTc1ZTU1NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTU0LDE4
ICs1NCwyMCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGluZGV4T2ZFeHRlbnNpb25LZXlDYSA9IDA7
CiBzdGF0aWMgY29uc3Qgc2l6ZV90IGluZGV4T2ZFeHRlbnNpb25LZXlOdSA9IDE7CiBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGluZGV4T2ZFeHRlbnNpb25LZXlIYyA9IDI7CiAKK3N0cnVjdCBVRmllbGRQ
b3NpdGlvbkl0ZXJhdG9yRGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0
aW9uSXRlcmF0b3IqIGl0ZXJhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGl0ZXJhdG9y
KQorICAgICAgICAgICAgdWZpZWxkcG9zaXRlcl9jbG9zZShpdGVyYXRvcik7CisgICAgfQorfTsK
Kwogdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OlVEYXRlRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3Io
KShVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkgY29uc3QKIHsKICAgICBpZiAoZGF0ZUZvcm1hdCkK
ICAgICAgICAgdWRhdF9jbG9zZShkYXRlRm9ybWF0KTsKIH0KIAotdm9pZCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OlVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyOjpvcGVyYXRvcigpKFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9yKSBjb25zdAotewotICAgIGlmIChpdGVyYXRvcikKLSAg
ICAgICAgdWZpZWxkcG9zaXRlcl9jbG9zZShpdGVyYXRvcik7Ci19Ci0KIEludGxEYXRlVGltZUZv
cm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdD4odm0uaGVhcCkpIEludGxEYXRlVGltZUZv
cm1hdCh2bSwgc3RydWN0dXJlKTsKQEAgLTQzNywxNCArNDM5LDEyIEBAIHZvaWQgSW50bERhdGVU
aW1lRm9ybWF0OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVy
bikKICAgICB9CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWlu
aXRpYWxpemVkYXRldGltZWZvcm1hdAogdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxp
emVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxv
Y2FsZXMsIEpTVmFsdWUgb3JpZ2luYWxPcHRpb25zKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICAvLyAxMi4xLjEgSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0IChkYXRlVGltZUZvcm1hdCwg
bG9jYWxlcywgb3B0aW9ucykgKEVDTUEtNDAyKQotICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIu
aW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVkYXRldGltZWZvcm1hdAotCiAgICAgVmVjdG9yPFN0
cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2Jq
ZWN0LCBsb2NhbGVzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
CkBAIC03MDEsOCArNzAxLDYgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVE
YXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIC8vIEZhaWx1
cmUgaGVyZSBtZWFucyB1bnN1cHBvcnRlZCBjYWxlbmRhciwgYW5kIGNhbiBzYWZlbHkgYmUgaWdu
b3JlZC4KICAgICBVQ2FsZW5kYXIqIGNhbCA9IGNvbnN0X2Nhc3Q8VUNhbGVuZGFyKj4odWRhdF9n
ZXRDYWxlbmRhcihtX2RhdGVGb3JtYXQuZ2V0KCkpKTsKICAgICB1Y2FsX3NldEdyZWdvcmlhbkNo
YW5nZShjYWwsIG1pbkVDTUFTY3JpcHRUaW1lLCAmc3RhdHVzKTsKLQotICAgIG1faW5pdGlhbGl6
ZWREYXRlVGltZUZvcm1hdCA9IHRydWU7CiB9CiAKIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OndlZWtkYXlTdHJpbmcoV2Vla2RheSB3ZWVrZGF5KQpAQCAtODUwLDE4ICs4NDgsMTAg
QEAgQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRp
bWVab25lTmFtZSB0aW1lWm9uZU5hbWUpCiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OwogfQogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwuZGF0ZXRpbWVmb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwogSlNPYmplY3QqIEludGxEYXRlVGltZUZvcm1h
dDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLQotICAgIC8vIDEyLjMuNSBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQotICAgIC8vIFRoZSBmdW5jdGlv
biByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFy
ZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRv
IGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRoZSB2YWx1ZSBvZiB0aGUgY29ycmVz
cG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IChzZWUg
MTIuNCk6IGxvY2FsZSwgY2FsZW5kYXIsIG51bWJlcmluZ1N5c3RlbSwgdGltZVpvbmUsIGhvdXIx
Miwgd2Vla2RheSwgZXJhLCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwg
YW5kIHRpbWVab25lTmFtZS4gUHJvcGVydGllcyB3aG9zZSBjb3JyZXNwb25kaW5nIGludGVybmFs
IHNsb3RzIGFyZSBub3QgcHJlc2VudCBhcmUgbm90IGFzc2lnbmVkLgotICAgIC8vIE5vdGU6IElu
IHRoaXMgdmVyc2lvbiBvZiB0aGUgRUNNQVNjcmlwdCAyMDE1IEludGVybmF0aW9uYWxpemF0aW9u
IEFQSSwgdGhlIHRpbWVab25lIHByb3BlcnR5IHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIGRlZmF1
bHQgdGltZSB6b25lIGlmIG5vIHRpbWVab25lIHByb3BlcnR5IHdhcyBwcm92aWRlZCBpbiB0aGUg
b3B0aW9ucyBvYmplY3QgcHJvdmlkZWQgdG8gdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3Ry
dWN0b3IuIFRoZSBwcmV2aW91cyB2ZXJzaW9uIGxlZnQgdGhlIHRpbWVab25lIHByb3BlcnR5IHVu
ZGVmaW5lZCBpbiB0aGlzIGNhc2UuCi0gICAgaWYgKCFtX2luaXRpYWxpemVkRGF0ZVRpbWVGb3Jt
YXQpIHsKLSAgICAgICAgaW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGdsb2JhbE9iamVjdCwganNV
bmRlZmluZWQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7Ci0gICAgfQogCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbG9jYWxlKSk7CkBAIC05
MDQsMjIgKzg5NCwxNyBAQCBKU09iamVjdCogSW50bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gb3B0aW9uczsK
IH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRkYXRldGltZQogSlNW
YWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3VibGUgdmFsdWUpCiB7CisgICAgQVNTRVJUKG1fZGF0ZUZvcm1hdCk7CisKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgLy8gMTIuMy40IEZvcm1hdERhdGVUaW1lIGFic3RyYWN0IG9w
ZXJhdGlvbiAoRUNNQS00MDIgMi4wKQotICAgIGlmICghbV9pbml0aWFsaXplZERhdGVUaW1lRm9y
bWF0KSB7Ci0gICAgICAgIGluaXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3QsIGpz
VW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwotICAgIH0KLQotICAgIC8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwg
dGhlbiB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmICghc3RkOjppc2Zpbml0
ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdCBmb3JtYXQo
KSJfcyk7CiAKLSAgICAvLyBEZWxlZ2F0ZSByZW1haW5pbmcgc3RlcHMgdG8gSUNVLgogICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJl
c3VsdCgzMik7CiAgICAgYXV0byByZXN1bHRMZW5ndGggPSB1ZGF0X2Zvcm1hdChtX2RhdGVGb3Jt
YXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBudWxscHRyLCAm
c3RhdHVzKTsKQEAgLTkzNCw3ICs5MTksNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6
Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkKICAgICBy
ZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgpKTsK
IH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6cGFydFR5cGVTdHJpbmcoVURh
dGVGb3JtYXRGaWVsZCBmaWVsZCkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgcGFydFR5cGVTdHJpbmco
VURhdGVGb3JtYXRGaWVsZCBmaWVsZCkKIHsKICAgICBzd2l0Y2ggKGZpZWxkKSB7CiAgICAgY2Fz
ZSBVREFUX0VSQV9GSUVMRDoKQEAgLTk5NiwxNSArOTgxLDE0IEBAIEFTQ0lJTGl0ZXJhbCBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OnBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQgZmllbGQpCiAg
ICAgcmV0dXJuICJ1bmtub3duIl9zOwogfQogCi0KKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAy
LyNzZWMtZm9ybWF0ZGF0ZXRpbWV0b3BhcnRzCiBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6
Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUp
CiB7CisgICAgQVNTRVJUKG1fZGF0ZUZvcm1hdCk7CisKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgLy8gMTIuMS44IEZvcm1hdERhdGVUaW1lVG9QYXJ0cyAoRUNNQS00MDIgNC4wKQotICAgIC8v
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdGRhdGV0aW1ldG9wYXJ0
cwotCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZGF0ZSB2YWx1ZSBpcyBub3QgZmluaXRl
IGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdFRvUGFydHMoKSJfcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggNzhlYzAy
Y2M0MTNhY2U4MjVhMjgwZTQ1ZmQxZmEwYjIwZTQ2NGI1Zi4uZDg0NTUxNDdjMzZkZTg1ODBjMDk3
ZTM3NzE2NWZhNjM4YTBlODcxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKQEAgLTExMCwxMyArMTEwLDYgQEAgcHJpdmF0ZToK
ICAgICBNaW51dGUgbV9taW51dGUgeyBNaW51dGU6Ok5vbmUgfTsKICAgICBTZWNvbmQgbV9zZWNv
bmQgeyBTZWNvbmQ6Ok5vbmUgfTsKICAgICBUaW1lWm9uZU5hbWUgbV90aW1lWm9uZU5hbWUgeyBU
aW1lWm9uZU5hbWU6Ok5vbmUgfTsKLSAgICBib29sIG1faW5pdGlhbGl6ZWREYXRlVGltZUZvcm1h
dCB7IGZhbHNlIH07Ci0KLSAgICBzdHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXIg
ewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVUZpZWxkUG9zaXRpb25JdGVyYXRvciopIGNvbnN0
OwotICAgIH07Ci0KLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVEYXRl
Rm9ybWF0RmllbGQpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IDA2MjFmM2Q0
YWFlYzZiYzgxZTQ5MTY0MTQ0ZjA3NTE2NzZlOWUyNmEuLmQ4M2M0MGEwNmMzNjZhMjJhOTYxMjI3
N2U4ZDQzMmRmMDBhNjVhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC00NCw2ICs0NCwxOSBAQCBjb25zdCBDbGFzc0lu
Zm8gSW50bE51bWJlckZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbgogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnROdW1iZXJFeHRl
bnNpb25LZXlzWzFdID0geyAibnUiIH07CiAKK3N0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9y
RGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIGl0
ZXJhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGl0ZXJhdG9yKQorICAgICAgICAgICAg
dWZpZWxkcG9zaXRlcl9jbG9zZShpdGVyYXRvcik7CisgICAgfQorfTsKKworc3RydWN0IEludGxO
dW1iZXJGb3JtYXRGaWVsZCB7CisgICAgaW50MzJfdCB0eXBlOworICAgIGludDMyX3Qgc2l6ZTsK
K307CisKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJh
dG9yKCkoVU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAogewogICAgIGlmIChudW1i
ZXJGb3JtYXQpCkBAIC0xNTAsMTQgKzE2MywxMiBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1
cnJlbmN5RGlnaXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgcmV0dXJuIDI7CiB9CiAK
Ky8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJm
b3JtYXQKIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9u
c1ZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAvLyAxMS4xLjIgSW5pdGlhbGl6
ZU51bWJlckZvcm1hdCAobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSAoRUNNQS00MDIp
Ci0gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlhbGl6ZW51
bWJlcmZvcm1hdAotCiAgICAgYXV0byByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9j
YWxlTGlzdChnbG9iYWxPYmplY3QsIGxvY2FsZXMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAKQEAgLTI4MCw5ICsyOTEsOSBAQCB2b2lkIEludGxOdW1iZXJGb3Jt
YXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYQogCiAgICAgYm9vbCB1c2VzRmFsbGJhY2s7CiAgICAgYm9vbCB1c2VHcm91cGluZyA9IGlu
dGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInVzZUdyb3VwaW5nIiksIHVzZXNGYWxsYmFjayk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAodXNlc0ZhbGxiYWNrKQogICAgICAgICB1
c2VHcm91cGluZyA9IHRydWU7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKICAgICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmc7CiAKICAgICBVTnVtYmVyRm9ybWF0
U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7CkBAIC0zMzcsMTkgKzM0OCwxNiBAQCB2b2lkIElu
dGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYQogICAgIH0KICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZv
cm1hdC5nZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3VzZUdyb3VwaW5nKTsKICAgICB1bnVt
X3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9ST1VORElOR19NT0RFLCBV
TlVNX1JPVU5EX0hBTEZVUCk7Ci0KLSAgICBtX2luaXRpYWxpemVkTnVtYmVyRm9ybWF0ID0gdHJ1
ZTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpT
VmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGRvdWJsZSB2YWx1ZSkKIHsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOworCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghbV9pbml0aWFsaXplZE51bWJlckZvcm1hdCkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcyk7Ci0KICAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIo
MzIpOwogICAgIGF1dG8gbGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQu
Z2V0KCksIHZhbHVlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBudWxscHRyLCAmc3Rh
dHVzKTsKQEAgLTM2NCwxNCArMzcyLDE0IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1
cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKIH0KIAorLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiB2YWx1ZSkKIHsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOworCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGlmICghbV9pbml0aWFsaXplZE51bWJlckZvcm1hdCkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcyk7Ci0KICAgICBhdXRvIHN0cmluZyA9IHZh
bHVlLT50b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogCkBAIC00MjAsMjUgKzQyOCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51
bWJlckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5j
eURpcwogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorLy8gaHR0cHM6Ly90
YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRv
cHRpb25zCiBKU09iamVjdCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIC8v
IDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVD
TUEtNDAyIDIuMCkKLSAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qgd2hv
c2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmCi0gICAgLy8gY29uc3Ry
dWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxv
d2luZyBwcm9wZXJ0aWVzIHRoZQotICAgIC8vIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGlu
dGVybmFsIHNsb3Qgb2YgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0IChzZWUgMTEuNCk6Ci0gICAg
Ly8gbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIHN0eWxlLCBjdXJyZW5jeSwgY3VycmVuY3lEaXNw
bGF5LCBtaW5pbXVtSW50ZWdlckRpZ2l0cywKLSAgICAvLyBtaW5pbXVtRnJhY3Rpb25EaWdpdHMs
IG1heGltdW1GcmFjdGlvbkRpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLAotICAgIC8v
IG1heGltdW1TaWduaWZpY2FudERpZ2l0cywgYW5kIHVzZUdyb3VwaW5nLiBQcm9wZXJ0aWVzIHdo
b3NlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwKLSAgICAvLyBzbG90cyBhcmUgbm90IHByZXNlbnQg
YXJlIG5vdCBhc3NpZ25lZC4KLQotICAgIGlmICghbV9pbml0aWFsaXplZE51bWJlckZvcm1hdCkg
ewotICAgICAgICBpbml0aWFsaXplTnVtYmVyRm9ybWF0KGdsb2JhbE9iamVjdCwganNVbmRlZmlu
ZWQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7
Ci0gICAgfQotCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChn
bG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3RlbSwganNTdHJpbmcodm0sIG1f
bnVtYmVyaW5nU3lzdGVtKSk7CkBAIC00NjQsMTMgKzQ1Nyw3IEBAIHZvaWQgSW50bE51bWJlckZv
cm1hdDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKICAg
ICBtX2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKIH0KIAotdm9pZCBJbnRsTnVt
YmVyRm9ybWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKShVRmll
bGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikgY29uc3QKLXsKLSAgICBpZiAoaXRlcmF0b3Ip
Ci0gICAgICAgIHVmaWVsZHBvc2l0ZXJfY2xvc2UoaXRlcmF0b3IpOwotfQotCi1BU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBm
aWVsZCwgZG91YmxlIHZhbHVlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhV
TnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCiB7CiAgICAgc3dpdGNoIChm
aWVsZCkgewogICAgIGNhc2UgVU5VTV9JTlRFR0VSX0ZJRUxEOgpAQCAtNTUwLDE4ICs1MzcsMTQg
QEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmwKICAgICB9CiB9CiAKKy8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcnRvcGFydHMKIEpTVmFsdWUgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3VibGUgdmFsdWUpCiB7CisgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKKwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICAvLyBGb3JtYXROdW1iZXJUb1BhcnRzIChFQ01BLTQwMikKLSAgICAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXJ0b3BhcnRz
Ci0gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtcGFydGl0aW9ubnVt
YmVycGF0dGVybgotCi0gICAgaWYgKCFtX2luaXRpYWxpemVkTnVtYmVyRm9ybWF0KQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcyk7Ci0KICAgICBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIGZpZWxkSXRyID0gc3RkOjp1
bmlxdWVfcHRyPFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IsIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JE
ZWxldGVyPih1ZmllbGRwb3NpdGVyX29wZW4oJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuaAppbmRleCA5ZjEwYjVkNDM2NzBiOGRlMmY2ZjQwZTRkNzczMzg1ZTM1NmYxODAxLi4x
YTliYzYxZWJjNmJlMDg1ZTY5NzBmZWI1MDRlNTE2MmQ5OWY0YzAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC04MiwxMSArODIs
MTIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxl
KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5j
eURpc3BsYXkpOwogCisgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZv
cm1hdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERl
bGV0ZXI+IG1fbnVtYmVyRm9ybWF0OworCiAgICAgU3RyaW5nIG1fbG9jYWxlOwogICAgIFN0cmlu
ZyBtX251bWJlcmluZ1N5c3RlbTsKICAgICBTdHJpbmcgbV9jdXJyZW5jeTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1fbnVtYmVyRm9y
bWF0OwotICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7CiAg
ICAgdW5zaWduZWQgbV9taW5pbXVtSW50ZWdlckRpZ2l0cyB7IDEgfTsKICAgICB1bnNpZ25lZCBt
X21pbmltdW1GcmFjdGlvbkRpZ2l0cyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX21heGltdW1GcmFj
dGlvbkRpZ2l0cyB7IDMgfTsKQEAgLTk1LDIyICs5Niw2IEBAIHByaXZhdGU6CiAgICAgU3R5bGUg
bV9zdHlsZSB7IFN0eWxlOjpEZWNpbWFsIH07CiAgICAgQ3VycmVuY3lEaXNwbGF5IG1fY3VycmVu
Y3lEaXNwbGF5OwogICAgIGJvb2wgbV91c2VHcm91cGluZyB7IHRydWUgfTsKLSAgICBib29sIG1f
aW5pdGlhbGl6ZWROdW1iZXJGb3JtYXQgeyBmYWxzZSB9OwotCi0gICAgc3RydWN0IFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3JEZWxldGVyIHsKLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVGaWVsZFBv
c2l0aW9uSXRlcmF0b3IqKSBjb25zdDsKLSAgICB9OwotCi0gICAgc3RydWN0IEludGxOdW1iZXJG
b3JtYXRGaWVsZCB7Ci0gICAgICAgIGludDMyX3QgdHlwZTsKLSAgICAgICAgaW50MzJfdCBzaXpl
OwotICAgICAgICBJbnRsTnVtYmVyRm9ybWF0RmllbGQoaW50MzJfdCB0eXBlLCBpbnQzMl90IHNp
emUpCi0gICAgICAgICAgICA6IHR5cGUodHlwZSkKLSAgICAgICAgICAgICwgc2l6ZShzaXplKQot
ICAgICAgICB7IH0KLSAgICB9OwotCi0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0
cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzLCBkb3VibGUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
LmNwcAppbmRleCA4NzcxNjAxMjI4NGM4MWFkYzM5MjdjNjMxZDRjMzU4N2EyMDFhYjg5Li5iMmYx
OTE4ODY0YzQxNjgxOTBlYWJhYTkxMWY4ZTVlZTc2ZTA4MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKQEAgLTg4LDIxICs4OCwx
NyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiB9CiAKLW5hbWVzcGFjZSBJbnRsUFJJbnRlcm5hbCB7CiBzdGF0aWMgVmVjdG9y
PFN0cmluZz4gbG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBzaXplX3QpCiB7Ci0gICAgVmVjdG9y
PFN0cmluZz4gZGF0YTsKLSAgICByZXR1cm4gZGF0YTsKLX0KKyAgICByZXR1cm4geyB9OwogfQog
CisvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbml0aWFsaXplcGx1cmFs
cnVsZXMKIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNW
YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgLy8gMTMuMS4xIEluaXRpYWxpemVQ
bHVyYWxSdWxlcyAocGx1cmFsUnVsZXMsIGxvY2FsZXMsIG9wdGlvbnMpCi0gICAgLy8gaHR0cHM6
Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlhbGl6ZXBsdXJhbHJ1bGVzCiAgICAg
VmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3Qo
Z2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogCkBAIC0xMjAsNyArMTE2LDcgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRp
YWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAg
ICBsb2NhbGVPcHQuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIuc3RyaW5nKCks
IGxvY2FsZU1hdGNoZXIpOwogCiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVM
b2NhbGVzID0gaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpOwotICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9iYWxPYmplY3QsIGF2
YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgbnVsbHB0ciwgMCwg
SW50bFBSSW50ZXJuYWw6OmxvY2FsZURhdGEpOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMs
IHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU9wdCwgbnVsbHB0ciwgMCwgbG9jYWxlRGF0YSk7CiAg
ICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQodm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0cmlu
ZygpKTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxl
cyBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3MpOwpAQCAtMTgzLDIyICsxNzksMTYgQEAgdm9pZCBJ
bnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHUKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLQotICAgIG1faW5pdGlhbGl6ZWRQbHVyYWxSdWxlcyA9IHRydWU7CiB9CiAK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5
cGUucmVzb2x2ZWRvcHRpb25zCiBKU09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKKyAgICBBU1NFUlQobV9wbHVy
YWxSdWxlcyk7CisKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgLy8gMTMuNC40IEludGwuUGx1
cmFsUnVsZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAoKQotICAgIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMucHJvdG90eXBlLnJlc29s
dmVkb3B0aW9ucwotICAgIGlmIChVTkxJS0VMWSghbV9pbml0aWFsaXplZFBsdXJhbFJ1bGVzKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVy
YWxSdWxlcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbG9jYWxl
KSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlwZSA9PSBVUExVUkFMX1RZUEVfT1JESU5BTCA/ICJv
cmRpbmFsIl9zIDogImNhcmRpbmFsIl9zKSk7CkBAIC0yMzMsMTYgKzIyMywxNCBAQCBKU09iamVj
dCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9wdGlvbnMpOwogfQogCisv
LyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXJlc29sdmVwbHVyYWwKIEpTVmFsdWUgSW50
bFBsdXJhbFJ1bGVzOjpzZWxlY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ymxl
IHZhbHVlKQogeworICAgIEFTU0VSVChtX3BsdXJhbFJ1bGVzKTsKKwogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICAvLyAxMy4xLjQgUmVzb2x2ZVBsdXJhbCAocGx1cmFsUnVsZXMsIG4pCi0gICAg
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbAotICAg
IGlmICghbV9pbml0aWFsaXplZFBsdXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNl
bGVjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMg
YSBQbHVyYWxSdWxlcyJfcyk7Ci0KICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQogICAg
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAib3RoZXIiX3MpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCmluZGV4IDA1NTQ3
Zjg0YzRlNzBkOTUwNDgwOWI5MWQ0NzUwYjMzZGU0M2UwYzkuLmM1ZWE2MzU3YzgwN2QxYzA5ZTU5
MzU4MzEzNzMyMTBmMzQwMTNiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlcy5oCkBAIC03MCw3ICs3MCw2IEBAIHByaXZhdGU6CiAgICAgICAg
IHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7CiAgICAgfTsKIAotICAgIGJv
b2wgbV9pbml0aWFsaXplZFBsdXJhbFJ1bGVzIHsgZmFsc2UgfTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPiBtX3BsdXJhbFJ1bGVzOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9u
dW1iZXJGb3JtYXQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397034</attachid>
            <date>2020-04-20 16:15:48 -0700</date>
            <delta_ts>2020-04-20 21:04:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-210764-20200420161547.patch</filename>
            <type>text/plain</type>
            <size>30896</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
M2JhNDI0YzhlYTFkOWVlNjM3ZmI1NzM3MTFkZDZlYmJkMTM4MGZlLi4wNTI0ZjU2Yjc3MjI3OTdk
YzRkZmEyODg3Y2UyN2IxNmQ1ZWQ4ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMC0wNC0yMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgSW50bCBjbGFzc2VzIHNob3VsZG4ndCBuZWVkIGFuIG1faW5pdGlh
bGl6ZWQqIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTA3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBFeGlzdGluZyBJbnRsIGNsYXNzZXMgZWFjaCBoYXZlIGEgZmllbGQgbGlrZSBtX2luaXRpYWxp
emVkTnVtYmVyRm9ybWF0LCBidXQgdGhpcyBpcyB1bm5lY2Vzc2FyeSBvbiB0d28gbGV2ZWxzOgor
ICAgICAgICAgIDEuIFRoZSB0aGluZyB0aGF0IGdldHMgaW5pdGlhbGl6ZWQgaXMgYSB1bmlxdWUg
cG9pbnRlciB0byBhbiBJQ1Ugc3RydWN0LCBzbyB3ZSBjYW4gY2hlY2sgaXQgZGlyZWN0bHkuCisg
ICAgICAgICAgMi4gRXZlcnl3aGVyZSB3ZSdyZSBjaGVja2luZyB0aGlzIGlzIHJlZHVuZGFudCBz
aW5jZSB3ZSd2ZSBhbHJlYWR5IGRvbmUgdGhlIHNhbWUgY2hlY2sgb24gdGhlIHByb3RvdHlwZSBz
aWRlLAorICAgICAgICAgICAgIHRoZXJlZm9yZSB3ZSBjYW4ganVzdCBBU1NFUlQgYmVmb3JlIHVz
aW5nIHNhaWQgSUNVIHN0cnVjdC4KKworICAgICAgICBXaGlsZSB3ZSdyZSBhdCBpdCwgY2xlYW4g
dXAgb3RoZXIgc3R1ZmYgbGlrZToKKyAgICAgICAgICAtIE1vdmUgc3R1ZmYgdGhhdCBkb2Vzbid0
IG5lZWQgdG8gYmUgcGFydCBvZiB0aGUgY2xhc3MgdG8gdGhlIENQUCBmaWxlIChlLmcuIFVGaWVs
ZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyKS4KKyAgICAgICAgICAtIE1lcmdlIGNyZWF0ZUNvbGxh
dG9yIGludG8gaW5pdGlhbGl6ZUNvbGxhdG9yIChzZWVtcyBsaWtlIHRoaXMgaXMgcHJvYmFibHkg
dGhlIG9sZGVzdCBjb2RlIGluIHRoaXMgc3BhY2UpLgorCisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xs
YXRvcik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MpOgorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvcjo6Y3JlYXRlQ29sbGF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwOgorICAgICAgICAoSlNDOjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0
b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6
ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpyZXNv
bHZlZE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdCk6
CisgICAgICAgIChKU0M6OnBhcnRUeXBlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVU
aW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6cGFydFR5cGVTdHJpbmcp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6CisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6VUZpZWxk
UG9zaXRpb25JdGVyYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlND
OjpJbnRsTnVtYmVyRm9ybWF0RmllbGQ6OkludGxOdW1iZXJGb3JtYXRGaWVsZCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVt
YmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpwYXJ0VHlwZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRl
cjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OnBhcnRUeXBlU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6Cisg
ICAgICAgIChKU0M6OmxvY2FsZURhdGEpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6
OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6
cmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3Qp
OgorICAgICAgICAoSlNDOjpJbnRsUFJJbnRlcm5hbDo6bG9jYWxlRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuaDoKKwogMjAyMC0wNC0yMCAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEwgZG9lc24ndCBv
YnNlcnZlIHRoZSB1c2Uga2luZCBvZiBDaGVja0lzQ29uc3RhbnQncyBjaGlsZDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCmluZGV4IGY1NGQwZTgy
YmNiMTkwMWI2NjNkZGY1OGFhYjUyMWMxNjk4ZTlmNDkuLmMxNGNlYzFmNjI0NWNiODQ0MjRiZmRi
NjNmMTAxZDE3M2MxYTQ5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yLmNwcApAQCAtMTY1LDE0ICsxNjUsMTIgQEAgc3RhdGljIFZlY3RvcjxTdHJp
bmc+IHNlYXJjaExvY2FsZURhdGEoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGtleUluZGV4KQogICAg
IHJldHVybiBrZXlMb2NhbGVEYXRhOwogfQogCisvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWE0MDIvI3NlYy1pbml0aWFsaXplY29sbGF0b3IKIHZvaWQgSW50bENvbGxhdG9yOjppbml0aWFs
aXplQ29sbGF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVz
LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgLy8g
MTAuMS4xIEluaXRpYWxpemVDb2xsYXRvciAoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpIChF
Q01BLTQwMikKLSAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbml0
aWFsaXplY29sbGF0b3IKLQogICAgIGF1dG8gcmVxdWVzdGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6
ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogCkBAIC0yMjksMTAgKzIyNywxMCBAQCB2b2lkIEludGxDb2xs
YXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgbG9jYQogICAgIG1fY29sbGF0aW9uID0gY29sbGF0aW9uLmlzTnVsbCgpID8gImRlZmF1
bHQiX3MgOiBjb2xsYXRpb247CiAgICAgbV9udW1lcmljID0gcmVzdWx0LmdldCgia24iX3MpID09
ICJ0cnVlIjsKIAotICAgIGNvbnN0IFN0cmluZyYgY2FzZUZpcnN0ID0gcmVzdWx0LmdldCgia2Yi
X3MpOwotICAgIGlmIChjYXNlRmlyc3QgPT0gImxvd2VyIikKKyAgICBjb25zdCBTdHJpbmcmIGNh
c2VGaXJzdFN0cmluZyA9IHJlc3VsdC5nZXQoImtmIl9zKTsKKyAgICBpZiAoY2FzZUZpcnN0U3Ry
aW5nID09ICJsb3dlciIpCiAgICAgICAgIG1fY2FzZUZpcnN0ID0gQ2FzZUZpcnN0OjpMb3dlcjsK
LSAgICBlbHNlIGlmIChjYXNlRmlyc3QgPT0gInVwcGVyIikKKyAgICBlbHNlIGlmIChjYXNlRmly
c3RTdHJpbmcgPT0gInVwcGVyIikKICAgICAgICAgbV9jYXNlRmlyc3QgPSBDYXNlRmlyc3Q6OlVw
cGVyOwogICAgIGVsc2UKICAgICAgICAgbV9jYXNlRmlyc3QgPSBDYXNlRmlyc3Q6OkZhbHNlOwpA
QCAtMjUwLDI5ICsyNDgsMTcgQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgIGJvb2wg
dXNlc0ZhbGxiYWNrOwogICAgIGJvb2wgaWdub3JlUHVuY3R1YXRpb24gPSBpbnRsQm9vbGVhbk9w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmlnbm9yZVB1bmN0
dWF0aW9uLCB1c2VzRmFsbGJhY2spOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CiAgICAgaWYgKHVzZXNGYWxsYmFjaykKICAgICAgICAgaWdub3JlUHVuY3R1YXRpb24g
PSBmYWxzZTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIG1f
aWdub3JlUHVuY3R1YXRpb24gPSBpZ25vcmVQdW5jdHVhdGlvbjsKIAotICAgIG1faW5pdGlhbGl6
ZWRDb2xsYXRvciA9IHRydWU7Ci19Ci0KLXZvaWQgSW50bENvbGxhdG9yOjpjcmVhdGVDb2xsYXRv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0g
ICAgQVNTRVJUKCFtX2NvbGxhdG9yKTsKLQotICAgIGlmICghbV9pbml0aWFsaXplZENvbGxhdG9y
KSB7Ci0gICAgICAgIGluaXRpYWxpemVDb2xsYXRvcihnbG9iYWxPYmplY3QsIGpzVW5kZWZpbmVk
KCksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwot
ICAgIH0KLQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGF1dG8g
Y29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBVQ29sbGF0b3JEZWxldGVyPih1
Y29sX29wZW4obV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykpOwotICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKKyAgICBtX2NvbGxhdG9yID0gc3RkOjp1bmlxdWVfcHRyPFVDb2xsYXRv
ciwgVUNvbGxhdG9yRGVsZXRlcj4odWNvbF9vcGVuKG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksICZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIENvbGxhdG9y
Il9zKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFVDb2xBdHRyaWJ1dGVWYWx1ZSBz
dHJlbmd0aCA9IFVDT0xfUFJJTUFSWTsKICAgICBVQ29sQXR0cmlidXRlVmFsdWUgY2FzZUxldmVs
ID0gVUNPTF9PRkY7CkBAIC0zMDEsMzYgKzI4NywyOSBAQCB2b2lkIEludGxDb2xsYXRvcjo6Y3Jl
YXRlQ29sbGF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xfU1RS
RU5HVEgsIHN0cmVuZ3RoLCAmc3RhdHVzKTsKLSAgICB1Y29sX3NldEF0dHJpYnV0ZShjb2xsYXRv
ci5nZXQoKSwgVUNPTF9DQVNFX0xFVkVMLCBjYXNlTGV2ZWwsICZzdGF0dXMpOwotICAgIHVjb2xf
c2V0QXR0cmlidXRlKGNvbGxhdG9yLmdldCgpLCBVQ09MX0NBU0VfRklSU1QsIGNhc2VGaXJzdCwg
JnN0YXR1cyk7Ci0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xfTlVN
RVJJQ19DT0xMQVRJT04sIG1fbnVtZXJpYyA/IFVDT0xfT04gOiBVQ09MX09GRiwgJnN0YXR1cyk7
CisgICAgdWNvbF9zZXRBdHRyaWJ1dGUobV9jb2xsYXRvci5nZXQoKSwgVUNPTF9TVFJFTkdUSCwg
c3RyZW5ndGgsICZzdGF0dXMpOworICAgIHVjb2xfc2V0QXR0cmlidXRlKG1fY29sbGF0b3IuZ2V0
KCksIFVDT0xfQ0FTRV9MRVZFTCwgY2FzZUxldmVsLCAmc3RhdHVzKTsKKyAgICB1Y29sX3NldEF0
dHJpYnV0ZShtX2NvbGxhdG9yLmdldCgpLCBVQ09MX0NBU0VfRklSU1QsIGNhc2VGaXJzdCwgJnN0
YXR1cyk7CisgICAgdWNvbF9zZXRBdHRyaWJ1dGUobV9jb2xsYXRvci5nZXQoKSwgVUNPTF9OVU1F
UklDX0NPTExBVElPTiwgbV9udW1lcmljID8gVUNPTF9PTiA6IFVDT0xfT0ZGLCAmc3RhdHVzKTsK
IAogICAgIC8vIEZJWE1FOiBTZXR0aW5nIFVDT0xfQUxURVJOQVRFX0hBTkRMSU5HIHRvIFVDT0xf
U0hJRlRFRCBjYXVzZXMgcHVuY3R1YXRpb24gYW5kIHdoaXRlc3BhY2UgdG8gYmUKICAgICAvLyBp
Z25vcmVkLiBUaGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IHRvIGlnbm9yZSBvbmx5IHB1bmN0dWF0
aW9uLgotICAgIHVjb2xfc2V0QXR0cmlidXRlKGNvbGxhdG9yLmdldCgpLCBVQ09MX0FMVEVSTkFU
RV9IQU5ETElORywgbV9pZ25vcmVQdW5jdHVhdGlvbiA/IFVDT0xfU0hJRlRFRCA6IFVDT0xfREVG
QVVMVCwgJnN0YXR1cyk7CisgICAgdWNvbF9zZXRBdHRyaWJ1dGUobV9jb2xsYXRvci5nZXQoKSwg
VUNPTF9BTFRFUk5BVEVfSEFORExJTkcsIG1faWdub3JlUHVuY3R1YXRpb24gPyBVQ09MX1NISUZU
RUQgOiBVQ09MX0RFRkFVTFQsICZzdGF0dXMpOwogCiAgICAgLy8gIlRoZSBtZXRob2QgaXMgcmVx
dWlyZWQgdG8gcmV0dXJuIDAgd2hlbiBjb21wYXJpbmcgU3RyaW5ncyB0aGF0IGFyZSBjb25zaWRl
cmVkIGNhbm9uaWNhbGx5CiAgICAgLy8gZXF1aXZhbGVudCBieSB0aGUgVW5pY29kZSBzdGFuZGFy
ZC4iCi0gICAgdWNvbF9zZXRBdHRyaWJ1dGUoY29sbGF0b3IuZ2V0KCksIFVDT0xfTk9STUFMSVpB
VElPTl9NT0RFLCBVQ09MX09OLCAmc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29sbGF0b3IgPSBXVEZNb3ZlKGNvbGxhdG9yKTsK
KyAgICB1Y29sX3NldEF0dHJpYnV0ZShtX2NvbGxhdG9yLmdldCgpLCBVQ09MX05PUk1BTElaQVRJ
T05fTU9ERSwgVUNPTF9PTiwgJnN0YXR1cyk7CisgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMp
KTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1jb2xsYXRvci1jb21wYXJl
c3RyaW5ncwogSlNWYWx1ZSBJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZ1ZpZXcgeCwgU3RyaW5nVmlldyB5KQogeworICAgIEFT
U0VSVChtX2NvbGxhdG9yKTsKKwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAvLyAxMC4zLjQg
Q29tcGFyZVN0cmluZ3MgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCi0gICAgaWYg
KCFtX2NvbGxhdG9yKSB7Ci0gICAgICAgIGNyZWF0ZUNvbGxhdG9yKGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgIGlmICghbV9jb2xsYXRvcikKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQg
dG8gY29tcGFyZSBzdHJpbmdzLiJfcykpOwotICAgIH0KLQogICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwogICAgIFVDb2xsYXRpb25SZXN1bHQgcmVzdWx0ID0gVUNPTF9FUVVB
TDsKICAgICBpZiAoeC5pczhCaXQoKSAmJiB5LmlzOEJpdCgpICYmIHguaXNBbGxBU0NJSSgpICYm
IHkuaXNBbGxBU0NJSSgpKQpAQCAtMzk3LDI1ICszNzYsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxD
b2xsYXRvcjo6Y2FzZUZpcnN0U3RyaW5nKENhc2VGaXJzdCBjYXNlRmlyc3QpCiAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogfQogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLWludGwuY29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwogSlNPYmplY3QqIElu
dGxDb2xsYXRvcjo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIC8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnBy
b3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQotICAgIC8vIFRoZSBmdW5j
dGlvbiByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVz
IGFyZSBzZXQgYXMgaWYKLSAgICAvLyBjb25zdHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbCBh
c3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhlCi0gICAgLy8g
dmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIENvbGxhdG9y
IG9iamVjdCAoc2VlIDEwLjQpOiBsb2NhbGUsCi0gICAgLy8gdXNhZ2UsIHNlbnNpdGl2aXR5LCBp
Z25vcmVQdW5jdHVhdGlvbiwgY29sbGF0aW9uLCBhcyB3ZWxsIGFzIHRob3NlIHByb3BlcnRpZXMg
c2hvd24KLSAgICAvLyBpbiBUYWJsZSAxIHdob3NlIGtleXMgYXJlIGluY2x1ZGVkIGluIHRoZSAl
Q29sbGF0b3IlW1tyZWxldmFudEV4dGVuc2lvbktleXNdXQotICAgIC8vIGludGVybmFsIHNsb3Qg
b2YgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0aGF0IGlzIHRoZSBpbml0aWFsIHZhbHVl
IG9mCi0gICAgLy8gSW50bC5Db2xsYXRvci4KLQotICAgIGlmICghbV9pbml0aWFsaXplZENvbGxh
dG9yKSB7Ci0gICAgICAgIGluaXRpYWxpemVDb2xsYXRvcihnbG9iYWxPYmplY3QsIGpzVW5kZWZp
bmVkKCksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OwotICAgIH0KLQogICAgIEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51c2FnZSwganNOb250cml2aWFsU3RyaW5nKHZtLCB1
c2FnZVN0cmluZyhtX3VzYWdlKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3IuaAppbmRleCAxMjdiNWFlYjg3ZTEzNDcwMzFlZmViMDUwZWZkYmVlNjE1YTQ5
NjQ2Li43YmZhZWY3YzBhNDg4MGIwNTZlMDM3NzRiZTZhY2JlOThlZWVjZTRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApAQCAtNzYsMjEgKzc2LDIw
IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgb3BlcmF0b3IoKShVQ29sbGF0b3IqKSBjb25zdDsK
ICAgICB9OwogCi0gICAgdm9pZCBjcmVhdGVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCopOwogICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgdXNhZ2VTdHJpbmcoVXNhZ2UpOwogICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgc2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkpOwogICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgY2FzZUZpcnN0U3RyaW5nKENhc2VGaXJzdCk7CiAKLSAgICBTdHJpbmcgbV9sb2Nh
bGU7Ci0gICAgU3RyaW5nIG1fY29sbGF0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVu
Y3Rpb24+IG1fYm91bmRDb21wYXJlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVQ29sbGF0b3IsIFVD
b2xsYXRvckRlbGV0ZXI+IG1fY29sbGF0b3I7CisKKyAgICBTdHJpbmcgbV9sb2NhbGU7CisgICAg
U3RyaW5nIG1fY29sbGF0aW9uOwogICAgIFVzYWdlIG1fdXNhZ2U7CiAgICAgU2Vuc2l0aXZpdHkg
bV9zZW5zaXRpdml0eTsKICAgICBDYXNlRmlyc3QgbV9jYXNlRmlyc3Q7CiAgICAgYm9vbCBtX251
bWVyaWM7CiAgICAgYm9vbCBtX2lnbm9yZVB1bmN0dWF0aW9uOwotICAgIGJvb2wgbV9pbml0aWFs
aXplZENvbGxhdG9yIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAK
aW5kZXggMmQxMzNkNjNhZWJjNGRiODc1OTljODBkY2JkMGYxMGJmN2E4OWQxOC4uOTBlOTU5Mjg2
YTM4NTIzNTY2ZjkxMTEzOTc1YjFjODE3NWU1NTZmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC01NCwxOCArNTQs
MjAgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBpbmRleE9mRXh0ZW5zaW9uS2V5Q2EgPSAwOwogc3Rh
dGljIGNvbnN0IHNpemVfdCBpbmRleE9mRXh0ZW5zaW9uS2V5TnUgPSAxOwogc3RhdGljIGNvbnN0
IHNpemVfdCBpbmRleE9mRXh0ZW5zaW9uS2V5SGMgPSAyOwogCitzdHJ1Y3QgVUZpZWxkUG9zaXRp
b25JdGVyYXRvckRlbGV0ZXIgeworICAgIHZvaWQgb3BlcmF0b3IoKShVRmllbGRQb3NpdGlvbkl0
ZXJhdG9yKiBpdGVyYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpdGVyYXRvcikKKyAg
ICAgICAgICAgIHVmaWVsZHBvc2l0ZXJfY2xvc2UoaXRlcmF0b3IpOworICAgIH0KK307CisKIHZv
aWQgSW50bERhdGVUaW1lRm9ybWF0OjpVRGF0ZUZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkoVURh
dGVGb3JtYXQqIGRhdGVGb3JtYXQpIGNvbnN0CiB7CiAgICAgaWYgKGRhdGVGb3JtYXQpCiAgICAg
ICAgIHVkYXRfY2xvc2UoZGF0ZUZvcm1hdCk7CiB9CiAKLXZvaWQgSW50bERhdGVUaW1lRm9ybWF0
OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKShVRmllbGRQb3NpdGlv
bkl0ZXJhdG9yKiBpdGVyYXRvcikgY29uc3QKLXsKLSAgICBpZiAoaXRlcmF0b3IpCi0gICAgICAg
IHVmaWVsZHBvc2l0ZXJfY2xvc2UoaXRlcmF0b3IpOwotfQotCiBJbnRsRGF0ZVRpbWVGb3JtYXQq
IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7CiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXQo
dm0sIHN0cnVjdHVyZSk7CkBAIC00MzcsMTQgKzQzOSwxMiBAQCB2b2lkIEludGxEYXRlVGltZUZv
cm1hdDo6c2V0Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmIHBhdHRlcm4pCiAg
ICAgfQogfQogCisvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbml0aWFs
aXplZGF0ZXRpbWVmb3JtYXQKIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0
ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVz
LCBKU1ZhbHVlIG9yaWdpbmFsT3B0aW9ucykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
Ly8gMTIuMS4xIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdCAoZGF0ZVRpbWVGb3JtYXQsIGxvY2Fs
ZXMsIG9wdGlvbnMpIChFQ01BLTQwMikKLSAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWE0MDIvI3NlYy1pbml0aWFsaXplZGF0ZXRpbWVmb3JtYXQKLQogICAgIFZlY3RvcjxTdHJpbmc+
IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwg
bG9jYWxlcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIApAQCAt
NzAxLDggKzcwMSw2IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRp
bWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAvLyBGYWlsdXJlIGhl
cmUgbWVhbnMgdW5zdXBwb3J0ZWQgY2FsZW5kYXIsIGFuZCBjYW4gc2FmZWx5IGJlIGlnbm9yZWQu
CiAgICAgVUNhbGVuZGFyKiBjYWwgPSBjb25zdF9jYXN0PFVDYWxlbmRhcio+KHVkYXRfZ2V0Q2Fs
ZW5kYXIobV9kYXRlRm9ybWF0LmdldCgpKSk7CiAgICAgdWNhbF9zZXRHcmVnb3JpYW5DaGFuZ2Uo
Y2FsLCBtaW5FQ01BU2NyaXB0VGltZSwgJnN0YXR1cyk7Ci0KLSAgICBtX2luaXRpYWxpemVkRGF0
ZVRpbWVGb3JtYXQgPSB0cnVlOwogfQogCiBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0
Ojp3ZWVrZGF5U3RyaW5nKFdlZWtkYXkgd2Vla2RheSkKQEAgLTg1MCwxOCArODQ4LDEwIEBAIEFT
Q0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9u
ZU5hbWUgdGltZVpvbmVOYW1lKQogICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0K
IAorLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLmRhdGV0aW1lZm9ybWF0LnBy
b3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKIEpTT2JqZWN0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnJl
c29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0KLSAgICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKLSAgICAvLyBUaGUgZnVuY3Rpb24gcmV0
dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0
IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsIGFzc2lnbmluZyB0byBlYWNo
IG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdCAoc2VlIDEyLjQp
OiBsb2NhbGUsIGNhbGVuZGFyLCBudW1iZXJpbmdTeXN0ZW0sIHRpbWVab25lLCBob3VyMTIsIHdl
ZWtkYXksIGVyYSwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGFuZCB0
aW1lWm9uZU5hbWUuIFByb3BlcnRpZXMgd2hvc2UgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90
cyBhcmUgbm90IHByZXNlbnQgYXJlIG5vdCBhc3NpZ25lZC4KLSAgICAvLyBOb3RlOiBJbiB0aGlz
IHZlcnNpb24gb2YgdGhlIEVDTUFTY3JpcHQgMjAxNSBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEks
IHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHRp
bWUgem9uZSBpZiBubyB0aW1lWm9uZSBwcm9wZXJ0eSB3YXMgcHJvdmlkZWQgaW4gdGhlIG9wdGlv
bnMgb2JqZWN0IHByb3ZpZGVkIHRvIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9y
LiBUaGUgcHJldmlvdXMgdmVyc2lvbiBsZWZ0IHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB1bmRlZmlu
ZWQgaW4gdGhpcyBjYXNlLgotICAgIGlmICghbV9pbml0aWFsaXplZERhdGVUaW1lRm9ybWF0KSB7
Ci0gICAgICAgIGluaXRpYWxpemVEYXRlVGltZUZvcm1hdChnbG9iYWxPYmplY3QsIGpzVW5kZWZp
bmVkKCksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OwotICAgIH0KIAogICAgIEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxvY2FsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwpAQCAtOTA0LDIy
ICs4OTQsMTcgQEAgSlNPYmplY3QqIEludGxEYXRlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRpb25z
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9ybWF0ZGF0ZXRpbWUKIEpTVmFsdWUg
SW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlIHZhbHVlKQogeworICAgIEFTU0VSVChtX2RhdGVGb3JtYXQpOworCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIC8vIDEyLjMuNCBGb3JtYXREYXRlVGltZSBhYnN0cmFjdCBvcGVyYXRp
b24gKEVDTUEtNDAyIDIuMCkKLSAgICBpZiAoIW1faW5pdGlhbGl6ZWREYXRlVGltZUZvcm1hdCkg
ewotICAgICAgICBpbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZ2xvYmFsT2JqZWN0LCBqc1VuZGVm
aW5lZCgpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24o
KTsKLSAgICB9Ci0KLSAgICAvLyAxLiBJZiB4IGlzIG5vdCBhIGZpbml0ZSBOdW1iZXIsIHRoZW4g
dGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFs
dWUpKQogICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiX3Mp
OwogCi0gICAgLy8gRGVsZWdhdGUgcmVtYWluaW5nIHN0ZXBzIHRvIElDVS4KICAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQo
MzIpOwogICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gdWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0Lmdl
dCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1
cyk7CkBAIC05MzQsNyArOTE5LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKSk7CiB9CiAK
LUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnBhcnRUeXBlU3RyaW5nKFVEYXRlRm9y
bWF0RmllbGQgZmllbGQpCitzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVEYXRl
Rm9ybWF0RmllbGQgZmllbGQpCiB7CiAgICAgc3dpdGNoIChmaWVsZCkgewogICAgIGNhc2UgVURB
VF9FUkFfRklFTEQ6CkBAIC05OTYsMTUgKzk4MSwxNCBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0OjpwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZpZWxkIGZpZWxkKQogICAgIHJl
dHVybiAidW5rbm93biJfczsKIH0KIAotCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LWZvcm1hdGRhdGV0aW1ldG9wYXJ0cwogSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1h
dFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKQogewor
ICAgIEFTU0VSVChtX2RhdGVGb3JtYXQpOworCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIC8v
IDEyLjEuOCBGb3JtYXREYXRlVGltZVRvUGFydHMgKEVDTUEtNDAyIDQuMCkKLSAgICAvLyBodHRw
czovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1mb3JtYXRkYXRldGltZXRvcGFydHMKLQog
ICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBE
YXRlVGltZUZvcm1hdCBmb3JtYXRUb1BhcnRzKCkiX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDc4ZWMwMmNjNDEz
YWNlODI1YTI4MGU0NWZkMWZhMGIyMGU0NjRiNWYuLmQ4NDU1MTQ3YzM2ZGU4NTgwYzA5N2UzNzcx
NjVmYTYzOGEwZTg3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC0xMTAsMTMgKzExMCw2IEBAIHByaXZhdGU6CiAgICAg
TWludXRlIG1fbWludXRlIHsgTWludXRlOjpOb25lIH07CiAgICAgU2Vjb25kIG1fc2Vjb25kIHsg
U2Vjb25kOjpOb25lIH07CiAgICAgVGltZVpvbmVOYW1lIG1fdGltZVpvbmVOYW1lIHsgVGltZVpv
bmVOYW1lOjpOb25lIH07Ci0gICAgYm9vbCBtX2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXQgeyBm
YWxzZSB9OwotCi0gICAgc3RydWN0IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyIHsKLSAg
ICAgICAgdm9pZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqKSBjb25zdDsKLSAg
ICB9OwotCi0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1h
dEZpZWxkKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCAwNjIxZjNkNGFhZWM2
YmM4MWU0OTE2NDE0NGYwNzUxNjc2ZTllMjZhLi41YTZiMjk5YjA0N2Y4OWZlNTc4MDlmNzQ0NmQ5
ZjRmYWEwZGE2NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtNDQsNiArNDQsMTkgQEAgY29uc3QgQ2xhc3NJbmZvIElu
dGxOdW1iZXJGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG4KIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJlbGV2YW50TnVtYmVyRXh0ZW5zaW9u
S2V5c1sxXSA9IHsgIm51IiB9OwogCitzdHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0
ZXIgeworICAgIHZvaWQgb3BlcmF0b3IoKShVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRv
cikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpdGVyYXRvcikKKyAgICAgICAgICAgIHVmaWVs
ZHBvc2l0ZXJfY2xvc2UoaXRlcmF0b3IpOworICAgIH0KK307CisKK3N0cnVjdCBJbnRsTnVtYmVy
Rm9ybWF0RmllbGQgeworICAgIGludDMyX3QgdHlwZTsKKyAgICBzaXplX3Qgc2l6ZTsKK307CisK
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCko
VU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAogewogICAgIGlmIChudW1iZXJGb3Jt
YXQpCkBAIC0xNTAsMTQgKzE2MywxMiBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUN1cnJlbmN5
RGlnaXRzKGNvbnN0IFN0cmluZyYgY3VycmVuY3kpCiAgICAgcmV0dXJuIDI7CiB9CiAKKy8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVudW1iZXJmb3JtYXQK
IHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAvLyAxMS4xLjIgSW5pdGlhbGl6ZU51bWJl
ckZvcm1hdCAobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSAoRUNNQS00MDIpCi0gICAg
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW5pdGlhbGl6ZW51bWJlcmZv
cm1hdAotCiAgICAgYXV0byByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlz
dChnbG9iYWxPYmplY3QsIGxvY2FsZXMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAKQEAgLTI4MCw5ICsyOTEsOSBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6Omlu
aXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQog
CiAgICAgYm9vbCB1c2VzRmFsbGJhY2s7CiAgICAgYm9vbCB1c2VHcm91cGluZyA9IGludGxCb29s
ZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInVzZUdyb3VwaW5nIiksIHVzZXNGYWxsYmFjayk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAodXNlc0ZhbGxiYWNrKQogICAgICAgICB1c2VHcm91
cGluZyA9IHRydWU7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAg
ICBtX3VzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmc7CiAKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUg
c3R5bGUgPSBVTlVNX0RFRkFVTFQ7CkBAIC0zMzcsMTkgKzM0OCwxNiBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYQogICAgIH0KICAgICB1bnVtX3NldEF0dHJpYnV0ZShtX251bWJlckZvcm1hdC5n
ZXQoKSwgVU5VTV9HUk9VUElOR19VU0VELCBtX3VzZUdyb3VwaW5nKTsKICAgICB1bnVtX3NldEF0
dHJpYnV0ZShtX251bWJlckZvcm1hdC5nZXQoKSwgVU5VTV9ST1VORElOR19NT0RFLCBVTlVNX1JP
VU5EX0hBTEZVUCk7Ci0KLSAgICBtX2luaXRpYWxpemVkTnVtYmVyRm9ybWF0ID0gdHJ1ZTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUg
SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWJsZSB2YWx1ZSkKIHsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOworCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAotICAgIGlmICghbV9pbml0aWFsaXplZE51bWJlckZvcm1hdCkKLSAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcyk7Ci0KICAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIoMzIpOwog
ICAgIGF1dG8gbGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQuZ2V0KCks
IHZhbHVlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBudWxscHRyLCAmc3RhdHVzKTsK
QEAgLTM2NCwxNCArMzcyLDE0IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4ganNT
dHJpbmcodm0sIFN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKIH0KIAorLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKIEpTVmFsdWUgSW50bE51bWJlckZv
cm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1
ZSkKIHsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOworCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIGlmICghbV9pbml0aWFsaXplZE51bWJlckZvcm1hdCkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIE51bWJlckZvcm1hdCJfcyk7Ci0KICAgICBhdXRvIHN0cmluZyA9IHZhbHVlLT50
b1N0cmluZyhnbG9iYWxPYmplY3QsIDEwKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogCkBAIC00MjAsMjUgKzQyOCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZv
cm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURpcwog
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIH0KIAorLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1pbnRsLm51bWJlcmZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25z
CiBKU09iamVjdCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwot
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIC8vIDExLjMu
NSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAy
IDIuMCkKLSAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJv
cGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmCi0gICAgLy8gY29uc3RydWN0ZWQg
YnkgYW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBw
cm9wZXJ0aWVzIHRoZQotICAgIC8vIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFs
IHNsb3Qgb2YgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0IChzZWUgMTEuNCk6Ci0gICAgLy8gbG9j
YWxlLCBudW1iZXJpbmdTeXN0ZW0sIHN0eWxlLCBjdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5LCBt
aW5pbXVtSW50ZWdlckRpZ2l0cywKLSAgICAvLyBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIG1heGlt
dW1GcmFjdGlvbkRpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLAotICAgIC8vIG1heGlt
dW1TaWduaWZpY2FudERpZ2l0cywgYW5kIHVzZUdyb3VwaW5nLiBQcm9wZXJ0aWVzIHdob3NlIGNv
cnJlc3BvbmRpbmcgaW50ZXJuYWwKLSAgICAvLyBzbG90cyBhcmUgbm90IHByZXNlbnQgYXJlIG5v
dCBhc3NpZ25lZC4KLQotICAgIGlmICghbV9pbml0aWFsaXplZE51bWJlckZvcm1hdCkgewotICAg
ICAgICBpbml0aWFsaXplTnVtYmVyRm9ybWF0KGdsb2JhbE9iamVjdCwganNVbmRlZmluZWQoKSwg
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAg
fQotCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9j
YWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3RlbSwganNTdHJpbmcodm0sIG1fbnVtYmVy
aW5nU3lzdGVtKSk7CkBAIC00NjQsMTMgKzQ1Nyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6
c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKICAgICBtX2Jv
dW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKIH0KIAotdm9pZCBJbnRsTnVtYmVyRm9y
bWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKShVRmllbGRQb3Np
dGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikgY29uc3QKLXsKLSAgICBpZiAoaXRlcmF0b3IpCi0gICAg
ICAgIHVmaWVsZHBvc2l0ZXJfY2xvc2UoaXRlcmF0b3IpOwotfQotCi1BU0NJSUxpdGVyYWwgSW50
bE51bWJlckZvcm1hdDo6cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwg
ZG91YmxlIHZhbHVlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVy
Rm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUgdmFsdWUpCiB7CiAgICAgc3dpdGNoIChmaWVsZCkg
ewogICAgIGNhc2UgVU5VTV9JTlRFR0VSX0ZJRUxEOgpAQCAtNTEyLDE3ICs0OTksMTcgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmwKICAgICBhdXRvIHN0cmluZ0xlbmd0aCA9IGZvcm1hdHRlZC5s
ZW5ndGgoKTsKIAogICAgIGludDMyX3QgbGl0ZXJhbEZpZWxkVHlwZSA9IC0xOwotICAgIGF1dG8g
bGl0ZXJhbEZpZWxkID0gSW50bE51bWJlckZvcm1hdEZpZWxkKGxpdGVyYWxGaWVsZFR5cGUsIHN0
cmluZ0xlbmd0aCk7CisgICAgSW50bE51bWJlckZvcm1hdEZpZWxkIGxpdGVyYWxGaWVsZCB7IGxp
dGVyYWxGaWVsZFR5cGUsIHN0cmluZ0xlbmd0aCB9OwogICAgIFZlY3RvcjxJbnRsTnVtYmVyRm9y
bWF0RmllbGQsIDMyPiBmaWVsZHMoc3RyaW5nTGVuZ3RoLCBsaXRlcmFsRmllbGQpOwogICAgIGlu
dDMyX3QgYmVnaW5JbmRleCA9IDA7CiAgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7CiAgICAgYXV0
byBmaWVsZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAm
ZW5kSW5kZXgpOwogICAgIHdoaWxlIChmaWVsZFR5cGUgPj0gMCkgewotICAgICAgICBhdXRvIHNp
emUgPSBlbmRJbmRleCAtIGJlZ2luSW5kZXg7CisgICAgICAgIHNpemVfdCBzaXplID0gZW5kSW5k
ZXggLSBiZWdpbkluZGV4OwogICAgICAgICBmb3IgKGF1dG8gaSA9IGJlZ2luSW5kZXg7IGkgPCBl
bmRJbmRleDsgKytpKSB7CiAgICAgICAgICAgICAvLyBPbmx5IG92ZXJyaWRlIHByZXZpb3VzIHZh
bHVlIGlmIG5ldyB2YWx1ZSBpcyBtb3JlIHNwZWNpZmljLgogICAgICAgICAgICAgaWYgKGZpZWxk
c1tpXS5zaXplID49IHNpemUpCi0gICAgICAgICAgICAgICAgZmllbGRzW2ldID0gSW50bE51bWJl
ckZvcm1hdEZpZWxkKGZpZWxkVHlwZSwgc2l6ZSk7CisgICAgICAgICAgICAgICAgZmllbGRzW2ld
ID0gSW50bE51bWJlckZvcm1hdEZpZWxkIHsgZmllbGRUeXBlLCBzaXplIH07CiAgICAgICAgIH0K
ICAgICAgICAgZmllbGRUeXBlID0gdWZpZWxkcG9zaXRlcl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5J
bmRleCwgJmVuZEluZGV4KTsKICAgICB9CkBAIC01NTAsMTggKzUzNywxNCBAQCB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibAogICAgIH0KIH0KIAorLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
NDAyLyNzZWMtZm9ybWF0bnVtYmVydG9wYXJ0cwogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkK
IHsKKyAgICBBU1NFUlQobV9udW1iZXJGb3JtYXQpOworCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIC8vIEZvcm1hdE51bWJlclRvUGFydHMgKEVDTUEtNDAyKQotICAgIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcnRvcGFydHMKLSAgICAvLyBodHRw
czovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1wYXJ0aXRpb25udW1iZXJwYXR0ZXJuCi0K
LSAgICBpZiAoIW1faW5pdGlhbGl6ZWROdW1iZXJGb3JtYXQpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90
eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGlu
aXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Il9zKTsKLQogICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZp
ZWxkUG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVs
ZHBvc2l0ZXJfb3Blbigmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4
IDlmMTBiNWQ0MzY3MGI4ZGUyZjZmNDBlNGQ3NzMzODVlMzU2ZjE4MDEuLjFhOWJjNjFlYmM2YmUw
ODVlNjk3MGZlYjUwNGU1MTYyZDk5ZjRjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTgyLDExICs4MiwxMiBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwogICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSk7CiAK
KyAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1i
ZXJGb3JtYXQ7CisKICAgICBTdHJpbmcgbV9sb2NhbGU7CiAgICAgU3RyaW5nIG1fbnVtYmVyaW5n
U3lzdGVtOwogICAgIFN0cmluZyBtX2N1cnJlbmN5OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1iZXJGb3JtYXQ7Ci0gICAgV3Jp
dGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKICAgICB1bnNpZ25lZCBt
X21pbmltdW1JbnRlZ2VyRGlnaXRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fbWluaW11bUZyYWN0
aW9uRGlnaXRzIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbWF4aW11bUZyYWN0aW9uRGlnaXRzIHsg
MyB9OwpAQCAtOTUsMjIgKzk2LDYgQEAgcHJpdmF0ZToKICAgICBTdHlsZSBtX3N0eWxlIHsgU3R5
bGU6OkRlY2ltYWwgfTsKICAgICBDdXJyZW5jeURpc3BsYXkgbV9jdXJyZW5jeURpc3BsYXk7CiAg
ICAgYm9vbCBtX3VzZUdyb3VwaW5nIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9pbml0aWFsaXplZE51
bWJlckZvcm1hdCB7IGZhbHNlIH07Ci0KLSAgICBzdHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRv
ckRlbGV0ZXIgewotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVUZpZWxkUG9zaXRpb25JdGVyYXRv
ciopIGNvbnN0OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgSW50bE51bWJlckZvcm1hdEZpZWxkIHsK
LSAgICAgICAgaW50MzJfdCB0eXBlOwotICAgICAgICBpbnQzMl90IHNpemU7Ci0gICAgICAgIElu
dGxOdW1iZXJGb3JtYXRGaWVsZChpbnQzMl90IHR5cGUsIGludDMyX3Qgc2l6ZSkKLSAgICAgICAg
ICAgIDogdHlwZSh0eXBlKQotICAgICAgICAgICAgLCBzaXplKHNpemUpCi0gICAgICAgIHsgfQot
ICAgIH07Ci0KLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJG
b3JtYXRGaWVsZHMsIGRvdWJsZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IDg3
NzE2MDEyMjg0YzgxYWRjMzkyN2M2MzFkNGMzNTg3YTIwMWFiODkuLmIyZjE5MTg4NjRjNDE2ODE5
MGVhYmFhOTExZjhlNWVlNzZlMDgyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtODgsMjEgKzg4LDE3IEBAIHZvaWQgSW50
bFBsdXJhbFJ1bGVzOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIH0K
IAotbmFtZXNwYWNlIEludGxQUkludGVybmFsIHsKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2Nh
bGVEYXRhKGNvbnN0IFN0cmluZyYsIHNpemVfdCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBkYXRh
OwotICAgIHJldHVybiBkYXRhOwotfQorICAgIHJldHVybiB7IH07CiB9CiAKKy8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVwbHVyYWxydWxlcwogdm9pZCBJ
bnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICAvLyAxMy4xLjEgSW5pdGlhbGl6ZVBsdXJhbFJ1bGVzIChw
bHVyYWxSdWxlcywgbG9jYWxlcywgb3B0aW9ucykKLSAgICAvLyBodHRwczovL3RjMzkuZ2l0aHVi
LmlvL2VjbWE0MDIvI3NlYy1pbml0aWFsaXplcGx1cmFscnVsZXMKICAgICBWZWN0b3I8U3RyaW5n
PiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3Qs
IGxvY2FsZXMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKQEAg
LTEyMCw3ICsxMTYsNyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1
bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAgIGxvY2FsZU9wdC5h
ZGQodm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlci5zdHJpbmcoKSwgbG9jYWxlTWF0Y2hl
cik7CiAKICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRs
UGx1cmFsUnVsZXNBdmFpbGFibGVMb2NhbGVzKCk7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gcmVzb2x2ZWQgPSByZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxlT3B0LCBudWxscHRyLCAwLCBJbnRsUFJJbnRlcm5h
bDo6bG9jYWxlRGF0YSk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQgPSBy
ZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9j
YWxlcywgbG9jYWxlT3B0LCBudWxscHRyLCAwLCBsb2NhbGVEYXRhKTsKICAgICBtX2xvY2FsZSA9
IHJlc29sdmVkLmdldCh2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUuc3RyaW5nKCkpOwogICAgIGlm
IChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIGR1ZSB0byBpbnZh
bGlkIGxvY2FsZSJfcyk7CkBAIC0xODMsMjIgKzE3OSwxNiBAQCB2b2lkIEludGxQbHVyYWxSdWxl
czo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdQogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
Ci0gICAgbV9pbml0aWFsaXplZFBsdXJhbFJ1bGVzID0gdHJ1ZTsKIH0KIAorLy8gaHR0cHM6Ly90
YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLnBsdXJhbHJ1bGVzLnByb3RvdHlwZS5yZXNvbHZlZG9w
dGlvbnMKIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogeworICAgIEFTU0VSVChtX3BsdXJhbFJ1bGVzKTsKKwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAvLyAxMy40LjQgSW50bC5QbHVyYWxSdWxlcy5wcm90
b3R5cGUucmVzb2x2ZWRPcHRpb25zICgpCi0gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hNDAyLyNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCi0g
ICAgaWYgKFVOTElLRUxZKCFtX2luaXRpYWxpemVkUGx1cmFsUnVsZXMpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgUGx1cmFsUnVsZXMiX3MpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0KICAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sb2NhbGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgbV90eXBlID09IFVQTFVSQUxfVFlQRV9PUkRJTkFMID8gIm9yZGluYWwiX3MgOiAi
Y2FyZGluYWwiX3MpKTsKQEAgLTIzMywxNiArMjIzLDE0IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFs
UnVsZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3B0aW9ucyk7CiB9CiAKKy8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtcmVzb2x2ZXBsdXJhbAogSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6
OnNlbGVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpCiB7Cisg
ICAgQVNTRVJUKG1fcGx1cmFsUnVsZXMpOworCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIC8v
IDEzLjEuNCBSZXNvbHZlUGx1cmFsIChwbHVyYWxSdWxlcywgbikKLSAgICAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1yZXNvbHZlcGx1cmFsCi0gICAgaWYgKCFtX2luaXRp
YWxpemVkUGx1cmFsUnVsZXMpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0IGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVz
Il9zKTsKLQogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJvdGhlciJfcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmgKaW5kZXggMDU1NDdmODRjNGU3MGQ5NTA0
ODA5YjkxZDQ3NTBiMzNkZTQzZTBjOS4uYzVlYTYzNTdjODA3ZDFjMDllNTkzNTgzMTM3MzIxMGYz
NDAxM2JlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBs
dXJhbFJ1bGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzLmgKQEAgLTcwLDcgKzcwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBvcGVyYXRv
cigpKFVOdW1iZXJGb3JtYXQqKSBjb25zdDsKICAgICB9OwogCi0gICAgYm9vbCBtX2luaXRpYWxp
emVkUGx1cmFsUnVsZXMgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVUGx1cmFsUnVs
ZXMsIFVQbHVyYWxSdWxlc0RlbGV0ZXI+IG1fcGx1cmFsUnVsZXM7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>