<?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>131193</bug_id>
          
          <creation_ts>2014-04-03 17:02:20 -0700</creation_ts>
          <short_desc>Web Replay: detect possible replay divergence from unexpected DOM event dispatches</short_desc>
          <delta_ts>2014-04-07 12:58:36 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>131281</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>997380</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-03 17:02:20 -0700</bug_when>
    <thetext>We can assert the following invariant to find divergences:

If a DOM event is dispatched and the page&apos;s EventLoopInputDispatcher::dispatching() is false, then replay divergence is possible.

Let&apos;s unpack that:

1. For a web page&apos;s JS to execute deterministically, the engine must execute code blocks in the same order.
2. To run JS in the same order, DOM events must be dispatched in the same order.
3. For DOM events to be dispatched in the same order, the relevant run loops must be dispatched in the same order.
4. If we are not controlling the dispatch of a run loop that fired a DOM event, then it could potentially execute script in any order with respect to other run loops.

In practice, this assertion finds more nondeterminism (and provides useful stack traces) than any other technique.
In the short term, it will make it really hard to do replay in debug mode without asserting, so it should probably be put behind a guard that is normally compiled out. Once an error reporting mechanism is implemented, it could show a warning in the inspector UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998056</commentid>
    <comment_count>1</comment_count>
      <attachid>228713</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-06 18:58:07 -0700</bug_when>
    <thetext>Created attachment 228713
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998172</commentid>
    <comment_count>2</comment_count>
      <attachid>228713</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-07 10:14:38 -0700</bug_when>
    <thetext>Comment on attachment 228713
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998216</commentid>
    <comment_count>3</comment_count>
      <attachid>228713</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-07 12:58:33 -0700</bug_when>
    <thetext>Comment on attachment 228713
the patch

Clearing flags on attachment: 228713

Committed r166880: &lt;http://trac.webkit.org/changeset/166880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998217</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-07 12:58:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228713</attachid>
            <date>2014-04-06 18:58:07 -0700</date>
            <delta_ts>2014-04-07 12:58:33 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-131193-20140406185544.patch</filename>
            <type>text/plain</type>
            <size>26679</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIwMmU5N2VmYWI4MDFi
ZDBlNzk4YWVjNThmNDYyMjZhOGNkNmE4OC4uMDZhMWI3ZmM1NDI4NmIzYzczMjNjYTgyZmRlMWIx
OWI2MjRlMWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE0LTA0LTA2ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5
OiBkZXRlY3QgcG9zc2libGUgcmVwbGF5IGRpdmVyZ2VuY2UgZnJvbSB1bmV4cGVjdGVkIERPTSBl
dmVudCBkaXNwYXRjaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzExOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYXNzZXJ0aW9ucyB0byBjYXRjaCBwb3RlbnRpYWwgbm9uZGV0ZXJtaW5pc3Rp
YyBiZWhhdmlvci4KKworICAgICAgICBUaGUgYXNzZXJ0aW9uIGFkZGVkIGJ5IHRoaXMgcGF0Y2gg
Y2F0Y2hlcyBkaXNwYXRjaGVkIERPTSBldmVudHMKKyAgICAgICAgdGhhdCBhcmUgdHJpZ2dlcmVk
IGJ5IG5vbmRldGVybWluaXN0aWMgZXZlbnQgbG9vcCBjeWNsZXMuIElmIHdlCisgICAgICAgIGRp
ZCBub3QgY2FwdHVyZSBhbiBldmVudCBsb29wIGlucHV0IGluIHRoZSBjdXJyZW50IGV2ZW50IGxv
b3AKKyAgICAgICAgY3ljbGUgbm9yIGFyZSB3ZSBtYW51YWxseSBzaW11bGF0aW5nIGFuIGV2ZW50
IGxvb3AgaW5wdXQgZHVyaW5nCisgICAgICAgIHBsYXliYWNrLCB0aGVuIERPTSBldmVudHMgZmly
ZWQgZHVyaW5nIHRoZSB1bm9yZGVyZWQgY3ljbGUgY291bGQKKyAgICAgICAgcnVuIEphdmFTY3Jp
cHQgYW5kIGRpdmVyZ2UgdGhlIGV4ZWN1dGlvbi4KKworICAgICAgICBEdXJpbmcgcGxheWJhY2ss
IHdlIGNhbiBhc3NlcnQgdGhhdCBFdmVudExvb3BJbnB1dERpc3BhdGNoZXIgaXMgZGlzcGF0Y2hp
bmcKKyAgICAgICAgd2hlbiBhIERPTSBldmVudCBpcyBiZSBkaXNwYXRjaGVkIHRvIGEgZG9jdW1l
bnQgdGhhdCBpcyBiZWluZyByZXBsYXllZC4KKworICAgICAgICBEdXJpbmcgY2FwdHVyaW5nLCBl
dmVudCBsb29wIGlucHV0cyBhcmUgY2FwdHVyZWQgcmF0aGVyIHRoYW4KKyAgICAgICAgZGlzcGF0
Y2hlZCwgc28gd2UgYWRkIHNvbWUgYWNjb3VudGluZyB0byB0cmFjayB3aGF0IGNhdXNlZCBhIERP
TQorICAgICAgICBldmVudC4gVG8gYXBwcm94aW1hdGUgdGhlIGV4dGVudCBvZiBjb21wdXRhdGlv
biB0cmlnZ2VyZWQgYnkgYW4KKyAgICAgICAgZXZlbnQgbG9vcCBpbnB1dCwgd2UgYWRkIFJBSUkg
aGVscGVycyB0byBjYWxsIHNpdGVzIHdoZXJlIGV2ZW50CisgICAgICAgIGxvb3AgaW5wdXRzIGFy
ZSBjYXB0dXJlZC4KKworICAgICAgICBUaGUgYXNzZXJ0aW9ucyBhcmUgZGlzYWJsZWQgYnkgZGVm
YXVsdCB1bnRpbCB0aGUgbW9zdCBjb21tb24KKyAgICAgICAgc291cmNlcyBvZiBub25kZXRlcm1p
bmlzbSBhcmUgaGFuZGxlZCBhbmQgcGxheWJhY2sgZXJyb3JzIGFyZQorICAgICAgICBncmFjZWZ1
bGx5IHN1cmZhY2VkIHRvIHRoZSB1c2VyLiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMxMjc5Pgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBhZGRzIGV4dHJhIGFzc2VydGlvbnMg
Zm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcDogTm90aWZ5IFJlcGxheUFnZW50IG9mIGRpc3BhdGNoZWQgRE9NIGV2ZW50LgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVu
dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clJlcGxheUFnZW50LmNwcDogRm9yd2FyZCBkaXNwYXRjaGVkIERPTSBldmVudHMgdG8gUmVwbGF5
Q29udHJvbGxlci4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxs
RGlzcGF0Y2hFdmVudCk6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBs
YXlBZ2VudC5oOgorICAgICAgICAqIHJlcGxheS9DYXB0dXJpbmdJbnB1dEN1cnNvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYXB0dXJpbmdJbnB1dEN1cnNvcjo6Q2FwdHVyaW5nSW5wdXRDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyaW5nSW5wdXRDdXJzb3I6OnNldFdpdGhpbkV2
ZW50TG9vcElucHV0RXh0ZW50KTogQWRkZWQuCisgICAgICAgICogcmVwbGF5L0NhcHR1cmluZ0lu
cHV0Q3Vyc29yLmg6CisgICAgICAgICogcmVwbGF5L0V2ZW50TG9vcElucHV0LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpFdmVudExvb3BJbnB1dEV4dGVudDo6RXZlbnRMb29wSW5wdXRF
eHRlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcElucHV0RXh0ZW50Ojp+
RXZlbnRMb29wSW5wdXRFeHRlbnQpOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvRXZlbnRMb29w
SW5wdXQuaDoKKyAgICAgICAgKiByZXBsYXkvRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudExvb3BJbnB1dERpc3BhdGNoZXI6OmlzRGlzcGF0Y2hpbmcp
OiBBZGQgYSBnZXR0ZXIuCisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bG9nRGlzcGF0Y2hlZERPTUV2ZW50KTogQWRkZWQuIFRoaXMgaXMg
dXNlZnVsIGZvciB1bmRlcnN0YW5kaW5nIHNjcmlwdC12aXNpYmxlIGV2ZW50cy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlcGxheUNvbnRyb2xsZXI6OndpbGxEaXNwYXRjaEV2ZW50KTogQWRkZWQuCisg
ICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZXBsYXkvVXNl
cklucHV0QnJpZGdlLmNwcDogQWRkIGV4dGVudCBoZWxwZXJzIHRvIGNhbGwgc2l0ZXMgdGhhdCBj
YXB0dXJlIGlucHV0cy4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6aGFuZGxl
TW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6aGFu
ZGxlTW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJpZGdl
OjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlk
Z2U6OmhhbmRsZU1vdXNlTW92ZU9uU2Nyb2xsYmFyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlcklucHV0QnJpZGdlOjpoYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
SW5wdXRCcmlkZ2U6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklu
cHV0QnJpZGdlOjpzY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5w
dXRCcmlkZ2U6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseSk6CisKIDIwMTQtMDQtMDYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJld29yayBDU1MgY2FsYyBsb2dp
YywgZml4aW5nIHNvbWUgcmVmZXJlbmNlIGNvdW50IG1pc3Rha2VzIGluIExlbmd0aApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlk
ZjZhYjMzNTk2ODRhY2MzYjBmMmI5YWE5YmIwYmFkNjc3ZjE3NzIuLjQzODcwZWU1NGYyNjUyOTJi
MzE5MjNmMzQzY2Y3OTNlMTdjODNhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0NDAsNiArNTQ0MCw3IEBACiAJCUMzQ0Yx
N0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMTE1QjAwNjNGMDAyNzZEMzkg
LyogSWRUYXJnZXRPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUMzQ0YxN0E2MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eS5jcHAgKi87IH07CiAJCUMzQ0YxN0E3MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDNDAw
RDEwOTE4RjFDOEY2MDA5MEQ4NjMgLyogRXZlbnRMb29wSW5wdXQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQwMEQxMDgxOEYxQzhGNjAwOTBEODYz
IC8qIEV2ZW50TG9vcElucHV0LmNwcCAqLzsgfTsKIAkJQzRDRDYyOUExODM4Mzc2NjAwN0VCQUYx
IC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90
dGluZy5jcHAgKi87IH07CiAJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBz
aG90dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYxMjExOUQy
MzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0
dGluZ3MuY3BwICovOyB9OwpAQCAtMTI3NDMsNiArMTI3NDQsNyBAQAogCQlDM0NGMTdBMjE1QjAw
NjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMzRTYxQzY1M0E2NDgwN0E4M0U3NkZCOCAvKiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MTWVuY2xvc2VFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzQwMEQxMDgxOEYxQzhGNjAw
OTBEODYzIC8qIEV2ZW50TG9vcElucHV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEV2ZW50TG9vcElucHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lU25hcHNob3R0aW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8q
IEZyYW1lU25hcHNob3R0aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZy
YW1lU25hcHNob3R0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE0
MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTgwNDMsNiArMTgwNDUsNyBAQAogCQkJCTk5Q0MwQjM4MThCRTk4NDkwMDZD
RUJDQyAvKiBBbGxSZXBsYXlJbnB1dHMuaCAqLywKIAkJCQk5OUNDMEIzOTE4QkU5ODQ5MDA2Q0VC
Q0MgLyogQ2FwdHVyaW5nSW5wdXRDdXJzb3IuY3BwICovLAogCQkJCTk5Q0MwQjNBMThCRTk4NDkw
MDZDRUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5oICovLAorCQkJCUM0MDBEMTA4MThGMUM4
RjYwMDkwRDg2MyAvKiBFdmVudExvb3BJbnB1dC5jcHAgKi8sCiAJCQkJOTlFNDVBMTYxOEEwNjNC
RTAwMjZEODhGIC8qIEV2ZW50TG9vcElucHV0LmggKi8sCiAJCQkJOTlDQzBCM0IxOEJFOTg0OTAw
NkNFQkNDIC8qIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJOTlDQzBCM0Mx
OEJFOTg0OTAwNkNFQkNDIC8qIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5oICovLApAQCAtMjY2
NTAsNiArMjY2NTMsNyBAQAogCQkJCUZEMzE1RkY4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0J1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNUZGQjEyQjAyNjc2MDBDMUEzNTkgLyog
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDdCMTJC
MDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNDAwRDEw
OTE4RjFDOEY2MDA5MEQ4NjMgLyogRXZlbnRMb29wSW5wdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkQzMTYwQkIxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvQnVzTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkQzMTYwN0QxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDMxNjAwNDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhYjRhNGRkMmU5NTMxZDdjY2Y1ODNl
ZTgzYTM1N2YyOGFmOGNmNjJmLi5lYTZjNTljYWVlZTViYWQyNzQ1YTcwOGVkMmMxYjAzNDZhNDRk
ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtMzUwLDYgKzM1MCwxMCBAQCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudElt
cGwoSQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgZG9j
dW1lbnQtPmZyYW1lKCkpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50
LT5pZCgpOwogICAgIH0KKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBpZiAoSW5zcGVjdG9y
UmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
UmVwbGF5QWdlbnQoKSkKKyAgICAgICAgcmVwbGF5QWdlbnQtPndpbGxEaXNwYXRjaEV2ZW50KGV2
ZW50LCBkb2N1bWVudC0+ZnJhbWUoKSk7CisjZW5kaWYKICAgICByZXR1cm4gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7
CiB9CiAKQEAgLTM3OCw2ICszODIsMTAgQEAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmQKICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQoZXZlbnQsIHdpbmRvdyA/IHdpbmRv
dy0+ZnJhbWUoKSA6IG51bGxwdHIpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGlu
ZUFnZW50LT5pZCgpOwogICAgIH0KKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBpZiAoSW5z
cGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICAgICAgcmVwbGF5QWdlbnQtPndpbGxEaXNwYXRjaEV2
ZW50KGV2ZW50LCB3aW5kb3cgPyB3aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyKTsKKyNlbmRpZgog
ICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdGltZWxpbmVBZ2VudElkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggMTFjYzcyNzNjZmJlODkxZTZlMDM5
ODRiODE3MDM2Yjk5MWMyNjhkMS4uOTEyYmVhOGM2MjRjODI5MzllMWM4NjE4YTkzNmE5NjExMTYy
YjY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxh
eUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5
QWdlbnQuY3BwCkBAIC0xOTgsNiArMTk4LDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OmZyYW1lRGV0YWNoZWQoRnJhbWUqIGZyYW1lKQogICAgICAgICBtX3BhZ2UucmVwbGF5Q29udHJv
bGxlcigpLmZyYW1lRGV0YWNoZWQoZnJhbWUpOwogfQogCit2b2lkIEluc3BlY3RvclJlcGxheUFn
ZW50Ojp3aWxsRGlzcGF0Y2hFdmVudChjb25zdCBFdmVudCYgZXZlbnQsIEZyYW1lKiBmcmFtZSkK
K3sKKyAgICBpZiAoc2Vzc2lvblN0YXRlKCkgIT0gU2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSkKKyAg
ICAgICAgbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS53aWxsRGlzcGF0Y2hFdmVudChldmVudCwg
ZnJhbWUpOworfQorCiB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpzZXNzaW9uQ3JlYXRlZChQ
YXNzUmVmUHRyPFJlcGxheVNlc3Npb24+IHBycFNlc3Npb24pCiB7CiAgICAgUmVmUHRyPFJlcGxh
eVNlc3Npb24+IHNlc3Npb24gPSBwcnBTZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAppbmRleCBjNmNlODQ2OGJkMzU3NWY4YjQ5YzNk
MGEzZjk2NjdkYjgzNTU2NjYyLi4wMWVjMWU5ODA4NjdiMWYxNjVlNWZjZjg2OTE2NjcyYjhiYWMy
ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdl
bnQuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1
bWVudExvYWRlcjsKK2NsYXNzIEV2ZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnNwZWN0b3JQ
YWdlQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwpAQCAtNjksNiArNzAsNyBAQCBw
dWJsaWM6CiAgICAgLy8gQ2FsbGJhY2tzIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLgog
ICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZyYW1l
RGV0YWNoZWQoRnJhbWUqKTsKKyAgICB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50KGNvbnN0IEV2ZW50
JiwgRnJhbWUqKTsKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgZnJvbSBSZXBsYXlDb250cm9sbGVy
LgogICAgIHZvaWQgc2Vzc2lvbkNyZWF0ZWQoUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvQ2FwdHVyaW5nSW5wdXRDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lucHV0Q3Vyc29yLmNwcAppbmRleCAy
NTNhNWQxMGUyMTcwNDgwMzBhM2VkZTgyNmYzYWM3NzVkYjIxNjlmLi5jMTg5N2M3NDBhNjM2Nzk1
YzJmNzcwYWU1ZDhkNmI1ZmFmYmM3YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBs
YXkvQ2FwdHVyaW5nSW5wdXRDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9D
YXB0dXJpbmdJbnB1dEN1cnNvci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBDYXB0dXJpbmdJbnB1dEN1cnNvcjo6Q2FwdHVyaW5nSW5wdXRDdXJzb3IoU2VnbWVu
dGVkSW5wdXRTdG9yYWdlJiBzdG9yYWdlKQogICAgIDogbV9zdG9yYWdlKHN0b3JhZ2UpCisgICAg
LCBtX3dpdGhpbkV2ZW50TG9vcElucHV0RXh0ZW50KGZhbHNlKQogewogICAgIExPRyhXZWJSZXBs
YXksICIlLTMwc0NyZWF0ZWQgY2FwdHVyZSBjdXJzb3I9JXAuXG4iLCAiW1JlcGxheUNvbnRyb2xs
ZXJdIiwgdGhpcyk7CiB9CkBAIC03MSw2ICs3MiwxMyBAQCBOb25kZXRlcm1pbmlzdGljSW5wdXRC
YXNlKiBDYXB0dXJpbmdJbnB1dEN1cnNvcjo6dW5jaGVja2VkTG9hZElucHV0KElucHV0UXVldWUp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3ZvaWQgQ2FwdHVyaW5nSW5wdXRDdXJzb3I6OnNl
dFdpdGhpbkV2ZW50TG9vcElucHV0RXh0ZW50KGJvb2wgd2l0aGluRXZlbnRMb29wSW5wdXRFeHRl
bnQpCit7CisgICAgLy8gV2UgY2Fubm90IGVudGVyIG1vcmUgdGhhbiBvbmUgZXh0ZW50IGF0IGEg
dGltZSwgc2luY2UgdGhleSByZXByZXNlbnQgYSBzaW5nbGUgcnVuIGxvb3AuCisgICAgQVNTRVJU
KHdpdGhpbkV2ZW50TG9vcElucHV0RXh0ZW50ICE9IG1fd2l0aGluRXZlbnRMb29wSW5wdXRFeHRl
bnQpOworICAgIG1fd2l0aGluRXZlbnRMb29wSW5wdXRFeHRlbnQgPSB3aXRoaW5FdmVudExvb3BJ
bnB1dEV4dGVudDsKK30KKwogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJfUkVQTEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1
cmluZ0lucHV0Q3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvQ2FwdHVyaW5nSW5wdXRD
dXJzb3IuaAppbmRleCA4ZjBkZjRkYWI4YzQ5MTM1ZTNiZWI4YjZiYjkwYTdlZTAwYjk0NDgxLi5m
YzcyODlhOTBkYjQxNzU4Mzg1ZWVhMDNlNjM4M2Y4OWUxNGFlMDYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvQ2FwdHVyaW5nSW5wdXRDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvQ2FwdHVyaW5nSW5wdXRDdXJzb3IuaApAQCAtMzUsNiArMzUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEV2ZW50TG9vcElucHV0RXh0ZW50OwogY2xhc3Mg
U2VnbWVudGVkSW5wdXRTdG9yYWdlOwogCiBjbGFzcyBDYXB0dXJpbmdJbnB1dEN1cnNvciBmaW5h
bCA6IHB1YmxpYyBJbnB1dEN1cnNvciB7CkBAIC00NiwxNCArNDcsMTkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc0NhcHR1cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXBsYXlpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCisgICAgdm9pZCBzZXRXaXRoaW5FdmVudExvb3BJbnB1dEV4dGVudChib29s
KTsKKyAgICBib29sIHdpdGhpbkV2ZW50TG9vcElucHV0RXh0ZW50KCkgY29uc3QgeyByZXR1cm4g
bV93aXRoaW5FdmVudExvb3BJbnB1dEV4dGVudDsgfQorCiAgICAgdmlydHVhbCBOb25kZXRlcm1p
bmlzdGljSW5wdXRCYXNlKiB1bmNoZWNrZWRMb2FkSW5wdXQoSW5wdXRRdWV1ZSkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlSW5wdXQoc3RkOjp1bmlxdWVfcHRyPE5vbmRldGVybWlu
aXN0aWNJbnB1dEJhc2U+KSBvdmVycmlkZTsKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIE5vbmRl
dGVybWluaXN0aWNJbnB1dEJhc2UqIGxvYWRJbnB1dChJbnB1dFF1ZXVlLCBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhcHR1cmlu
Z0lucHV0Q3Vyc29yKFNlZ21lbnRlZElucHV0U3RvcmFnZSYpOwogCiAgICAgU2VnbWVudGVkSW5w
dXRTdG9yYWdlJiBtX3N0b3JhZ2U7CisgICAgYm9vbCBtX3dpdGhpbkV2ZW50TG9vcElucHV0RXh0
ZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9F
dmVudExvb3BJbnB1dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmIyNzAyNjUyMmI2YmJmMTQ3ZjBhNGNkMGU0
NmNjN2MxNWE4NDUzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9F
dmVudExvb3BJbnB1dC5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcElucHV0LmgiCisKKyNpZiBF
TkFCTEUoV0VCX1JFUExBWSkKKworI2luY2x1ZGUgIkNhcHR1cmluZ0lucHV0Q3Vyc29yLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXZlbnRMb29wSW5wdXRFeHRlbnQ6OkV2ZW50TG9vcElu
cHV0RXh0ZW50KElucHV0Q3Vyc29yJiBjdXJzb3IpCisgICAgOiBtX2N1cnNvcihjdXJzb3IpCit7
CisgICAgaWYgKCFtX2N1cnNvci5pc0NhcHR1cmluZygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzdGF0aWNfY2FzdDxDYXB0dXJpbmdJbnB1dEN1cnNvciY+KGN1cnNvcikuc2V0V2l0aGluRXZl
bnRMb29wSW5wdXRFeHRlbnQodHJ1ZSk7Cit9CisKK0V2ZW50TG9vcElucHV0RXh0ZW50Ojp+RXZl
bnRMb29wSW5wdXRFeHRlbnQoKQoreworICAgIGlmICghbV9jdXJzb3IuaXNDYXB0dXJpbmcoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGljX2Nhc3Q8Q2FwdHVyaW5nSW5wdXRDdXJzb3Im
PihtX2N1cnNvcikuc2V0V2l0aGluRXZlbnRMb29wSW5wdXRFeHRlbnQoZmFsc2UpOworfQorCit9
OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29wSW5wdXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlcGxheS9FdmVudExvb3BJbnB1dC5oCmluZGV4IGI0ZTNiNzBhMDYxMmU1MzE2
NTg0MDA1YmNjYjk4NWFmZWYzMTZhNjcuLjA3OTVkNTMyNDVmZDNjZDg2ZDNiMjRkYjk2ZTYyY2Rh
NmRhOWZmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9FdmVudExvb3BJbnB1
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9FdmVudExvb3BJbnB1dC5oCkBAIC0zMywx
MCArMzMsMjYgQEAKICNpbmNsdWRlIDxyZXBsYXkvTm9uZGV0ZXJtaW5pc3RpY0lucHV0Lmg+CiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgSW5w
dXRDdXJzb3I7Cit9OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlcGxheUNvbnRy
b2xsZXI7CiAKKy8vIFRoaXMgaXMgYW4gUkFJSSBoZWxwZXIgdXNlZCBkdXJpbmcgY2FwdHVyaW5n
IHdoaWNoIHNldHMgYSBmbGFnIG9uIHRoZSBpbnB1dCBjdXJzb3IKKy8vIHRvIHRyYWNrIHRoZSBk
eW5hbWljIGV4dGVudCBvZiBhIGNhcHR1cmVkIGV2ZW50IGxvb3AgaW5wdXQuIFRoaXMgZXh0ZW50
IGFwcHJveGltYXRlcworLy8gdGhlIGludGVydmFsIGluIHdoaWNoIEV2ZW50TG9vcElucHV0RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hpbmcoKSBpcyB0cnVlLgorY2xhc3MgRXZlbnRMb29wSW5wdXRFeHRl
bnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50TG9vcElucHV0RXh0ZW50KTsKK3B1
YmxpYzoKKyAgICBFdmVudExvb3BJbnB1dEV4dGVudChKU0M6OklucHV0Q3Vyc29yJik7CisgICAg
fkV2ZW50TG9vcElucHV0RXh0ZW50KCk7Citwcml2YXRlOgorICAgIEpTQzo6SW5wdXRDdXJzb3Im
IG1fY3Vyc29yOworfTsKKwogY2xhc3MgRXZlbnRMb29wSW5wdXRCYXNlIDogcHVibGljIE5vbmRl
dGVybWluaXN0aWNJbnB1dEJhc2UgewogcHVibGljOgogICAgIEV2ZW50TG9vcElucHV0QmFzZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29wSW5wdXREaXNwYXRj
aGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyLmgK
aW5kZXggNjFjMDEzZjkxZGJhY2QzMTE2MDI4YTRhMjQ4MmI5NGFkNDZlZDgzMC4uZDY0MTM2MWJi
NDhmZDkzMWI0MGU4ZWNiNzhkYzQxMjJkYzdkMWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVwbGF5L0V2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlcGxheS9FdmVudExvb3BJbnB1dERpc3BhdGNoZXIuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJs
aWM6CiAgICAgRGlzcGF0Y2hTcGVlZCBkaXNwYXRjaFNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9z
cGVlZDsgfQogCiAgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiBtX3J1bm5pbmc7
IH0KKyAgICBib29sIGlzRGlzcGF0Y2hpbmcoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoaW5n
OyB9CiBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hJbnB1dFNvb24oKTsKICAgICB2b2lkIGRp
c3BhdGNoSW5wdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNw
cAppbmRleCBjOTA3YmEyNjAwZTE4MzU0Y2JjZGMzMTk3MjM3ZWJkYzA1MTQ0MTU5Li44ZDZhMzRl
YjEyNzcwM2Y5N2FmM2JmYjhmZWM4MDExODQzYjhhODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVw
bGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKKyNpbmNsdWRlICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC00NCw2ICs0NSw3
IEBACiAjaW5jbHVkZSAiUmVwbGF5U2Vzc2lvblNlZ21lbnQuaCIKICNpbmNsdWRlICJSZXBsYXlp
bmdJbnB1dEN1cnNvci5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJTZXJpYWxpemF0aW9uTWV0aG9kcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVXNlcklucHV0QnJpZGdlLmgiCiAjaW5jbHVkZSAiV2ViUmVwbGF5SW5wdXRzLmgiCkBAIC01
Niw2ICs1OCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyB2b2lkIGxvZ0Rp
c3BhdGNoZWRET01FdmVudChjb25zdCBFdmVudCYgZXZlbnQsIGJvb2wgZXZlbnRJc1VucmVsYXRl
ZCkKK3sKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgRXZlbnRUYXJnZXQqIHRhcmdldCA9IGV2ZW50
LnRhcmdldCgpOworICAgIGlmICghdGFyZ2V0KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBB
IERPTSBldmVudCBpcyB1bnJlbGF0ZWQgaWYgaXQgaXMgYmVpbmcgZGlzcGF0Y2hlZCB0byBhIGRv
Y3VtZW50IHRoYXQgaXMgbmVpdGhlciBjYXB0dXJpbmcgbm9yIHJlcGxheWluZy4KKyAgICBpZiAo
Tm9kZSogbm9kZSA9IHRhcmdldC0+dG9Ob2RlKCkpIHsKKyAgICAgICAgTE9HKFdlYlJlcGxheSwg
IiUtMjBzIC0tLT4lcyBET00gZXZlbnQ6IHR5cGU9JXMsIHRhcmdldD0lbHUvbm9kZVslcF0gJXNc
biIsICJSZXBsYXlFdmVudHMiLAorICAgICAgICAgICAgKGV2ZW50SXNVbnJlbGF0ZWQpID8gIlVu
cmVsYXRlZCIgOiAiRGlzcGF0Y2hpbmciLAorICAgICAgICAgICAgZXZlbnQudHlwZSgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICBmcmFtZUluZGV4RnJvbURvY3VtZW50KChu
b2RlLT5pbkRvY3VtZW50KCkpID8gJm5vZGUtPmRvY3VtZW50KCkgOiBub2RlLT5vd25lckRvY3Vt
ZW50KCkpLAorICAgICAgICAgICAgbm9kZSwKKyAgICAgICAgICAgIG5vZGUtPm5vZGVOYW1lKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgfSBlbHNlIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IHRhcmdl
dC0+dG9ET01XaW5kb3coKSkgeworICAgICAgICBMT0coV2ViUmVwbGF5LCAiJS0yMHMgLS0tPiVz
IERPTSBldmVudDogdHlwZT0lcywgdGFyZ2V0PSVsdS93aW5kb3dbJXBdICVzXG4iLCAiUmVwbGF5
RXZlbnRzIiwKKyAgICAgICAgICAgIChldmVudElzVW5yZWxhdGVkKSA/ICJVbnJlbGF0ZWQiIDog
IkRpc3BhdGNoaW5nIiwKKyAgICAgICAgICAgIGV2ZW50LnR5cGUoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLAorICAgICAgICAgICAgZnJhbWVJbmRleEZyb21Eb2N1bWVudCh3aW5kb3ctPmRvY3Vt
ZW50KCkpLAorICAgICAgICAgICAgd2luZG93LAorICAgICAgICAgICAgd2luZG93LT5sb2NhdGlv
bigpLT5ocmVmKCkudXRmOCgpLmRhdGEoKSk7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZXZlbnQpOworICAgIFVOVVNFRF9QQVJBTShldmVudElzVW5yZWxhdGVkKTsKKyNlbmRpZgor
fQorCiBSZXBsYXlDb250cm9sbGVyOjpSZXBsYXlDb250cm9sbGVyKFBhZ2UmIHBhZ2UpCiAgICAg
OiBtX3BhZ2UocGFnZSkKICAgICAsIG1fbG9hZGVkU2VnbWVudChudWxscHRyKQpAQCAtMzYwLDYg
KzM5MSwzNiBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZyYW1lRGV0YWNoZWQoRnJhbWUqIGZy
YW1lKQogICAgIC8vIGlucHV0IGhhcyBiZWVuIGRpc3BhdGNoZWQuIFNvLCBub3RoaW5nIG5lZWRz
IHRvIGJlIGRvbmUgaGVyZS4KIH0KIAordm9pZCBSZXBsYXlDb250cm9sbGVyOjp3aWxsRGlzcGF0
Y2hFdmVudChjb25zdCBFdmVudCYgZXZlbnQsIEZyYW1lKiBmcmFtZSkKK3sKKyAgICBFdmVudFRh
cmdldCogdGFyZ2V0ID0gZXZlbnQudGFyZ2V0KCk7CisgICAgaWYgKCF0YXJnZXQgJiYgIWZyYW1l
KQorICAgICAgICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSA/IGZy
YW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAgICAvLyBGZXRjaCB0aGUgZG9jdW1lbnQgZnJv
bSB0aGUgZXZlbnQgdGFyZ2V0LCBiZWNhdXNlIHRoZSB0YXJnZXQgY291bGQgYmUgZGV0YWNoZWQu
CisgICAgaWYgKE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpKQorICAgICAgICBkb2N1bWVu
dCA9IG5vZGUtPmluRG9jdW1lbnQoKSA/ICZub2RlLT5kb2N1bWVudCgpIDogbm9kZS0+b3duZXJE
b2N1bWVudCgpOworICAgIGVsc2UgaWYgKERPTVdpbmRvdyogd2luZG93ID0gdGFyZ2V0LT50b0RP
TVdpbmRvdygpKQorICAgICAgICBkb2N1bWVudCA9IHdpbmRvdy0+ZG9jdW1lbnQoKTsKKworICAg
IEFTU0VSVChkb2N1bWVudCk7CisKKyAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gZG9jdW1lbnQt
PmlucHV0Q3Vyc29yKCk7CisgICAgYm9vbCBldmVudElzVW5yZWxhdGVkID0gIWN1cnNvci5pc0Nh
cHR1cmluZygpICYmICFjdXJzb3IuaXNSZXBsYXlpbmcoKTsKKyAgICBsb2dEaXNwYXRjaGVkRE9N
RXZlbnQoZXZlbnQsIGV2ZW50SXNVbnJlbGF0ZWQpOworCisjaWYgRU5BQkxFX0FHR1JFU1NJVkVf
REVURVJNSU5JU01fQ0hFQ0tTCisgICAgLy8gVG8gZW5zdXJlIGRldGVybWluaXN0aWMgSlMgZXhl
Y3V0aW9uLCBhbGwgRE9NIGV2ZW50cyBtdXN0IGJlIGRpc3BhdGNoZWQgZGV0ZXJtaW5pc3RpY2Fs
bHkuCisgICAgLy8gSWYgdGhlc2UgYXNzZXJ0aW9ucyBmYWlsLCB0aGVuIHRoaXMgRE9NIGV2ZW50
IGlzIGJlaW5nIGRpc3BhdGNoZWQgYnkgYSBub25kZXRlcm1pbmlzdGljIEV2ZW50TG9vcAorICAg
IC8vIGN5Y2xlLCBhbmQgbWF5IGNhdXNlIHByb2dyYW0gZXhlY3V0aW9uIHRvIGRpdmVyZ2UgaWYg
YW55IEpTIGNvZGUgcnVucyBiZWNhdXNlIG9mIHRoZSBET00gZXZlbnQuCisgICAgaWYgKGN1cnNv
ci5pc0NhcHR1cmluZygpKQorICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Q2FwdHVyaW5nSW5w
dXRDdXJzb3ImPihjdXJzb3IpLndpdGhpbkV2ZW50TG9vcElucHV0RXh0ZW50KCkpOworICAgIGVs
c2UgaWYgKGN1cnNvci5pc1JlcGxheWluZygpKQorICAgICAgICBBU1NFUlQoZGlzcGF0Y2hlcigp
LmlzRGlzcGF0Y2hpbmcoKSk7CisjZW5kaWYKK30KKwogUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9u
PiBSZXBsYXlDb250cm9sbGVyOjpsb2FkZWRTZXNzaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9sb2FkZWRTZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxh
eUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmgK
aW5kZXggZWYwNTc3MTJkZjUxNjRjMDhmZWIyN2RkMWQ5NWRjYThkNThiYjVjYy4uMDc3Y2M4MjU1
OTczNzk0M2Y3ZjUwYTAyOWVhYTVkNjlmMGQ0ODY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkv
UmVwbGF5Q29udHJvbGxlci5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorLy8gRGV0ZXJtaW5pc20gYXNz
ZXJ0aW9ucyBhcmUgZ3VhcmRlZCBieSB0aGlzIG1hY3JvLiBXaGVuIGEgdXNlci1mYWNpbmcgZXJy
b3IgcmVwb3J0aW5nIGFuZAorLy8gcmVjb3ZlcnkgbWVjaGFuaXNtIGlzIGltcGxlbWVudGVkLCB0
aGlzIGd1YXJkIGNhbiBiZSByZW1vdmVkLiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMxMjc5Pgor
I2RlZmluZSBFTkFCTEVfQUdHUkVTU0lWRV9ERVRFUk1JTklTTV9DSEVDS1MgMAorCiBuYW1lc3Bh
Y2UgSlNDIHsKIGNsYXNzIElucHV0Q3Vyc29yOwogfQpAQCAtMTI5LDYgKzEzMyw3IEBAIHB1Ymxp
YzoKICAgICAvLyBJbnNwZWN0b3JSZXBsYXlBZ2VudCBub3RpZmljYXRpb25zLgogICAgIHZvaWQg
ZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZyYW1lRGV0YWNoZWQo
RnJhbWUqKTsKKyAgICB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50KGNvbnN0IEV2ZW50JiwgRnJhbWUq
KTsKIAogICAgIFBhZ2UmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KICAgICBTZXNz
aW9uU3RhdGUgc2Vzc2lvblN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uU3RhdGU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKaW5kZXggZmM4NDU3YTlm
NDgyOTYyZGRlZmFiYTAyNWY2ZTM0YTg5NGFjZTRmMC4uMzY0YTNmMDczZDMzMTBjZDY4YWY3NTZm
ZTZkOTU0NTZiOGUyMDFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJ
bnB1dEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRn
ZS5jcHAKQEAgLTgwLDEwICs4MCwxMiBAQCBib29sIFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlTW91
c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudAogI2lmIEVO
QUJMRShXRUJfUkVQTEFZKQogICAgIEVBUkxZX1JFVFVSTl9JRl9TSE9VTERfSUdOT1JFX0lOUFVU
OwogCi0gICAgaWYgKGFjdGl2ZUN1cnNvcigpLmlzQ2FwdHVyaW5nKCkpIHsKKyAgICBJbnB1dEN1
cnNvciYgY3Vyc29yID0gYWN0aXZlQ3Vyc29yKCk7CisgICAgaWYgKGN1cnNvci5pc0NhcHR1cmlu
ZygpKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1vdXNlRXZlbnQ+IG93bmVk
RXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtTW91c2VFdmVudD4obW91c2VFdmVudCk7
Ci0gICAgICAgIGFjdGl2ZUN1cnNvcigpLmFwcGVuZElucHV0PEhhbmRsZU1vdXNlUHJlc3M+KHN0
ZDo6bW92ZShvd25lZEV2ZW50KSk7CisgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxIYW5kbGVN
b3VzZVByZXNzPihzdGQ6Om1vdmUob3duZWRFdmVudCkpOwogICAgIH0KKyAgICBFdmVudExvb3BJ
bnB1dEV4dGVudCBleHRlbnQoY3Vyc29yKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGlucHV0
U291cmNlKTsKICNlbmRpZgpAQCAtOTYsMTAgKzk4LDEyIEBAIGJvb2wgVXNlcklucHV0QnJpZGdl
OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNl
RXZlCiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgRUFSTFlfUkVUVVJOX0lGX1NIT1VMRF9J
R05PUkVfSU5QVVQ7CiAKLSAgICBpZiAoYWN0aXZlQ3Vyc29yKCkuaXNDYXB0dXJpbmcoKSkgewor
ICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBhY3RpdmVDdXJzb3IoKTsKKyAgICBpZiAoY3Vyc29y
LmlzQ2FwdHVyaW5nKCkpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTW91c2VF
dmVudD4gb3duZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Nb3VzZUV2ZW50Piht
b3VzZUV2ZW50KTsKLSAgICAgICAgYWN0aXZlQ3Vyc29yKCkuYXBwZW5kSW5wdXQ8SGFuZGxlTW91
c2VSZWxlYXNlPihzdGQ6Om1vdmUob3duZWRFdmVudCkpOworICAgICAgICBjdXJzb3IuYXBwZW5k
SW5wdXQ8SGFuZGxlTW91c2VSZWxlYXNlPihzdGQ6Om1vdmUob3duZWRFdmVudCkpOwogICAgIH0K
KyAgICBFdmVudExvb3BJbnB1dEV4dGVudCBleHRlbnQoY3Vyc29yKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGlucHV0U291cmNlKTsKICNlbmRpZgpAQCAtMTEyLDEwICsxMTYsMTIgQEAgYm9v
bCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgbW91c2VFdmVudCwKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBFQVJMWV9S
RVRVUk5fSUZfU0hPVUxEX0lHTk9SRV9JTlBVVDsKIAotICAgIGlmIChhY3RpdmVDdXJzb3IoKS5p
c0NhcHR1cmluZygpKSB7CisgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGFjdGl2ZUN1cnNvcigp
OworICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1Nb3VzZUV2ZW50PiBvd25lZEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybU1vdXNlRXZlbnQ+KG1vdXNlRXZlbnQpOwotICAgICAgICBhY3RpdmVDdXJzb3IoKS5hcHBl
bmRJbnB1dDxIYW5kbGVNb3VzZU1vdmU+KHN0ZDo6bW92ZShvd25lZEV2ZW50KSwgZmFsc2UpOwor
ICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8SGFuZGxlTW91c2VNb3ZlPihzdGQ6Om1vdmUob3du
ZWRFdmVudCksIGZhbHNlKTsKICAgICB9CisgICAgRXZlbnRMb29wSW5wdXRFeHRlbnQgZXh0ZW50
KGN1cnNvcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpbnB1dFNvdXJjZSk7CiAjZW5kaWYK
QEAgLTEyOCwxMCArMTM0LDEyIEBAIGJvb2wgVXNlcklucHV0QnJpZGdlOjpoYW5kbGVNb3VzZU1v
dmVPblNjcm9sbGJhckV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYKICNpZiBFTkFCTEUo
V0VCX1JFUExBWSkKICAgICBFQVJMWV9SRVRVUk5fSUZfU0hPVUxEX0lHTk9SRV9JTlBVVDsKIAot
ICAgIGlmIChhY3RpdmVDdXJzb3IoKS5pc0NhcHR1cmluZygpKSB7CisgICAgSW5wdXRDdXJzb3Im
IGN1cnNvciA9IGFjdGl2ZUN1cnNvcigpOworICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkg
ewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Nb3VzZUV2ZW50PiBvd25lZEV2ZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybU1vdXNlRXZlbnQ+KG1vdXNlRXZlbnQpOwotICAg
ICAgICBhY3RpdmVDdXJzb3IoKS5hcHBlbmRJbnB1dDxIYW5kbGVNb3VzZU1vdmU+KHN0ZDo6bW92
ZShvd25lZEV2ZW50KSwgdHJ1ZSk7CisgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxIYW5kbGVN
b3VzZU1vdmU+KHN0ZDo6bW92ZShvd25lZEV2ZW50KSwgdHJ1ZSk7CiAgICAgfQorICAgIEV2ZW50
TG9vcElucHV0RXh0ZW50IGV4dGVudChjdXJzb3IpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
aW5wdXRTb3VyY2UpOwogI2VuZGlmCkBAIC0xNDQsMTAgKzE1MiwxMiBAQCBib29sIFVzZXJJbnB1
dEJyaWRnZTo6aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXlF
dmVudCwgSW5wdQogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIEVBUkxZX1JFVFVSTl9JRl9T
SE9VTERfSUdOT1JFX0lOUFVUOwogCi0gICAgaWYgKGFjdGl2ZUN1cnNvcigpLmlzQ2FwdHVyaW5n
KCkpIHsKKyAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gYWN0aXZlQ3Vyc29yKCk7CisgICAgaWYg
KGN1cnNvci5pc0NhcHR1cmluZygpKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ+IG93bmVkRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5
Ym9hcmRFdmVudD4oa2V5RXZlbnQpOwotICAgICAgICBhY3RpdmVDdXJzb3IoKS5hcHBlbmRJbnB1
dDxIYW5kbGVLZXlQcmVzcz4oc3RkOjptb3ZlKG93bmVkRXZlbnQpKTsKKyAgICAgICAgY3Vyc29y
LmFwcGVuZElucHV0PEhhbmRsZUtleVByZXNzPihzdGQ6Om1vdmUob3duZWRFdmVudCkpOwogICAg
IH0KKyAgICBFdmVudExvb3BJbnB1dEV4dGVudCBleHRlbnQoY3Vyc29yKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGlucHV0U291cmNlKTsKICNlbmRpZgpAQCAtMTY1LDEwICsxNzUsMTIgQEAg
Ym9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBJbnAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBFQVJM
WV9SRVRVUk5fSUZfU0hPVUxEX0lHTk9SRV9JTlBVVDsKIAotICAgIGlmIChhY3RpdmVDdXJzb3Io
KS5pc0NhcHR1cmluZygpKSB7CisgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGFjdGl2ZUN1cnNv
cigpOworICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewogICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1XaGVlbEV2ZW50PiBvd25lZEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVdoZWVsRXZlbnQ+KHdoZWVsRXZlbnQpOwotICAgICAgICBhY3RpdmVDdXJzb3IoKS5h
cHBlbmRJbnB1dDxIYW5kbGVXaGVlbEV2ZW50PihzdGQ6Om1vdmUob3duZWRFdmVudCkpOworICAg
ICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8SGFuZGxlV2hlZWxFdmVudD4oc3RkOjptb3ZlKG93bmVk
RXZlbnQpKTsKICAgICB9CisgICAgRXZlbnRMb29wSW5wdXRFeHRlbnQgZXh0ZW50KGN1cnNvcik7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpbnB1dFNvdXJjZSk7CiAjZW5kaWYKQEAgLTE5MSw4
ICsyMDMsMTEgQEAgYm9vbCBVc2VySW5wdXRCcmlkZ2U6OnNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9s
bERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGEKICNpZiBFTkFCTEUoV0VCX1JFUExB
WSkKICAgICBFQVJMWV9SRVRVUk5fSUZfU0hPVUxEX0lHTk9SRV9JTlBVVDsKIAotICAgIGlmIChh
Y3RpdmVDdXJzb3IoKS5pc0NhcHR1cmluZygpKQotICAgICAgICBhY3RpdmVDdXJzb3IoKS5hcHBl
bmRJbnB1dDxTY3JvbGxQYWdlPihkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICBJbnB1dEN1
cnNvciYgY3Vyc29yID0gYWN0aXZlQ3Vyc29yKCk7CisgICAgaWYgKGN1cnNvci5pc0NhcHR1cmlu
ZygpKQorICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8U2Nyb2xsUGFnZT4oZGlyZWN0aW9uLCBn
cmFudWxhcml0eSk7CisKKyAgICBFdmVudExvb3BJbnB1dEV4dGVudCBleHRlbnQoY3Vyc29yKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGlucHV0U291cmNlKTsKICNlbmRpZgpAQCAtMjA1LDgg
KzIyMCwxMSBAQCBib29sIFVzZXJJbnB1dEJyaWRnZTo6bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5
KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLAogI2lmIEVOQUJMRShXRUJfUkVQTEFZ
KQogICAgIEVBUkxZX1JFVFVSTl9JRl9TSE9VTERfSUdOT1JFX0lOUFVUOwogCi0gICAgaWYgKGFj
dGl2ZUN1cnNvcigpLmlzQ2FwdHVyaW5nKCkpCi0gICAgICAgIGFjdGl2ZUN1cnNvcigpLmFwcGVu
ZElucHV0PExvZ2ljYWxTY3JvbGxQYWdlPihkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICBJ
bnB1dEN1cnNvciYgY3Vyc29yID0gYWN0aXZlQ3Vyc29yKCk7CisgICAgaWYgKGN1cnNvci5pc0Nh
cHR1cmluZygpKQorICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TG9naWNhbFNjcm9sbFBhZ2U+
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworCisgICAgRXZlbnRMb29wSW5wdXRFeHRlbnQgZXh0
ZW50KGN1cnNvcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpbnB1dFNvdXJjZSk7CiAjZW5k
aWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>