<?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>35022</bug_id>
          
          <creation_ts>2010-02-17 01:45:34 -0800</creation_ts>
          <short_desc>[V8] Refactor ScheduledAction to support different kinds of actions</short_desc>
          <delta_ts>2013-05-02 11:09:58 -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 JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dominic Cooney">dominicc</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>190929</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2010-02-17 01:45:34 -0800</bug_when>
    <thetext>ScheduledAction is hard-wired to invoke V8 functions; separating the ScheduledAction interface and implementation which invokes a V8 function permits other kinds of scheduled actions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190934</commentid>
    <comment_count>1</comment_count>
      <attachid>48872</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2010-02-17 01:53:13 -0800</bug_when>
    <thetext>Created attachment 48872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191065</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-02-17 09:55:02 -0800</bug_when>
    <thetext>How does this look performance-wise? Any visible regressions? I am ok with the change if it doesn&apos;t introduce perf regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191078</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-02-17 10:30:03 -0800</bug_when>
    <thetext>Why is this useful?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191486</commentid>
    <comment_count>4</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2010-02-18 01:28:16 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; How does this look performance-wise? Any visible regressions? I am ok with the
&gt; change if it doesn&apos;t introduce perf regressions.

I wrote a microbenchmark, first just calling execute (with no context =&gt; execute doesn&apos;t find a V8 context and exits); then creating and destroying the (V8)ScheduledAction as well. The difference looks to be within noise, &lt;0.5%. I ran the Chromium perf test suite.

(In reply to comment #3)
&gt; Why is this useful?

V8 has two scheduled actions--one with a window context; one with a worker context. I&apos;m separating the interface so that we can have different kinds of scheduled actions in Chromium without having to wind them together in the same file with if statements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192009</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-19 11:58:42 -0800</bug_when>
    <thetext>Please see bug 23229 for alternative idea.

I guess the motivation here is to remove multiple execute() methods and the &apos;if&apos; that checks the type of context... So perhaps the plan is to have another patch after this one, which will split the V8ScheduledAction into 2 classes, one for Document context and another for Worker context, is that your intention?

If that&apos;s true, perhaps indeed moving execute() to SEC is a better way then creating more classes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198402</commentid>
    <comment_count>6</comment_count>
      <attachid>48872</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-03-10 16:06:29 -0800</bug_when>
    <thetext>Comment on attachment 48872
Patch

In a separate discussion, it was said that this is a part of a feature that is being worked on but is not ready enough yet. So it&apos;s hard to see how (or when) the change will be used in WebKit, so it&apos;s hard to get the best possible feedback. I&apos;m going to r- it for now. When we have more &apos;complete&apos; chunk or more info that can be evaluated by the open project reviewers, we should look at it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883838</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-02 11:09:58 -0700</bug_when>
    <thetext>V8 is gone from WebKit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48872</attachid>
            <date>2010-02-17 01:53:13 -0800</date>
            <delta_ts>2010-06-11 10:02:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Refactors-ScheduledAction-to-support-different-kinds.patch</filename>
            <type>text/plain</type>
            <size>26085</size>
            <attacher name="Dominic Cooney">dominicc</attacher>
            
              <data encoding="base64">RnJvbSA4MTU3NWRmZDhiYmYzYjJhZjE3Zjk1YjhmZjA2OWUwMGE4OTk2Y2JjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEb21pbmljIENvb25leSA8ZG9taW5pY2NAZ29vZ2xlLmNvbT4K
RGF0ZTogV2VkLCAxNyBGZWIgMjAxMCAxNTo0Njo1MyArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIFJl
ZmFjdG9ycyBTY2hlZHVsZWRBY3Rpb24gdG8gc3VwcG9ydCBkaWZmZXJlbnQga2luZHMgb2YgYWN0
aW9ucy4KCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDMyICsrKysrCiBXZWJDb3JlL1dlYkNvcmUuZ3lwaSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9TY2hlZHVs
ZWRBY3Rpb24uaCAgICAgICAgIHwgICA0NyArKysrKysKIFdlYkNvcmUvYmluZGluZ3MvdjgvU2No
ZWR1bGVkQWN0aW9uLmNwcCAgICAgICAgICAgIHwgIDE0NyAtLS0tLS0tLS0tLS0tLS0tLS0tLQog
V2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCAgICAgICAgICAgICAgfCAgIDc2
IC0tLS0tLS0tLS0KIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhTY2hlZHVsZWRBY3Rpb24uY3BwICAg
ICAgICAgIHwgIDE0NyArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFNjaGVkdWxlZEFjdGlvbi5oICAgICAgICAgICAgfCAgIDc2ICsrKysrKysrKysKIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCAgIHwgICAgNSArLQogLi4u
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwICAgfCAgICA3ICst
CiA5IGZpbGVzIGNoYW5nZWQsIDMxMiBpbnNlcnRpb25zKCspLCAyMzAgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1NjaGVkdWxlZEFjdGlv
bi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rp
b24uY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRB
Y3Rpb24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhTY2hlZHVs
ZWRBY3Rpb24uY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFNj
aGVkdWxlZEFjdGlvbi5oCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA4ZjZiNDUwLi5mY2M1NmIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEwLTAy
LTE3ICBEb21pbmljIENvb25leSAgPGRvbWluaWNjQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JzIFNjaGVkdWxlZEFj
dGlvbiB0byBzdXBwb3J0IGRpZmZlcmVudCBraW5kcyBvZiBhY3Rpb25zLgorCisgICAgICAgIEN1
cnJlbnRseSBWOCdzIFNjaGVkdWxlZEFjdGlvbiBvbmx5IHBlcm1pdHMgb25lIGltcGxlbWVudGF0
aW9uLAorICAgICAgICB3aGljaCBhY3RpdmF0ZXMgYSBWOCBmdW5jdGlvbiBpbiBhIGRvY3VtZW50
IG9yIGEgd29ya2VyIGRlcGVuZGluZworICAgICAgICBvbiB0aGUgY29udGV4dDsgYnkgc2VwYXJh
dGluZyB0aGUgU2NoZWR1bGVkQWN0aW9uIGludGVyZmFjZSB3ZSBjYW4KKyAgICAgICAgaGF2ZSBk
aWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGZvciBkaWZmZXJlbnQga2luZHMgb2YgYWN0aW9ucy4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwMjIK
KworICAgICAgICBMYXlvdXRUZXN0czogTm9uZQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvU2NoZWR1bGVkQWN0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjp+U2NoZWR1bGVkQWN0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4U2NoZWR1bGVkQWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOFNj
aGVkdWxlZEFjdGlvbjo6VjhTY2hlZHVsZWRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhT
Y2hlZHVsZWRBY3Rpb246On5WOFNjaGVkdWxlZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpW
OFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhTY2hl
ZHVsZWRBY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOFNjaGVkdWxlZEFjdGlv
bjo6VjhTY2hlZHVsZWRBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dTZXRUaW1lb3V0SW1w
bCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXRUaW1lb3V0T3JJbnRlcnZhbCk6CisKIDIwMTAtMDIt
MTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjllMjA2Ni4uZmMyYWUwZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ1
Nyw2ICs0NTcsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2dlbmVyaWMvR2VuZXJpY0JpbmRp
bmcuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2dlbmVyaWMvU2NoZWR1bGVkQWN0aW9u
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0RPTU9iamVjdFdpdGhTVkdDb250ZXh0Lmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAnLApAQCAtNzkyLDgg
Kzc5Myw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvT3duSGFuZGxlLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFj
dGlvbi5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvU2NyaXB0QXJyYXkuY3BwJywKQEAgLTg3NSw2ICs4NzQsOCBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9WOFByb3h5LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4U1ZHUE9EVHlwZVdyYXBw
ZXIuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhTY2hlZHVsZWRBY3Rpb24uY3BwJywK
KyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFNjaGVkdWxlZEFjdGlvbi5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4VXRpbGl0aWVzLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29u
dGV4dEV2ZW50TGlzdGVuZXIuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9TY2hlZHVsZWRBY3Rpb24uaCBiL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9TY2hlZHVs
ZWRBY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWY0MDVmCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1NjaGVkdWxlZEFjdGlv
bi5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NoZWR1bGVkQWN0aW9uX2gKKyNkZWZp
bmUgU2NoZWR1bGVkQWN0aW9uX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBTY2hlZHVsZWRBY3Rpb24geworcHVibGljOgor
ICAgIFNjaGVkdWxlZEFjdGlvbigpIHsgfQorICAgIHZpcnR1YWwgflNjaGVkdWxlZEFjdGlvbigp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9
IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY2hlZHVsZWRB
Y3Rpb24KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjUxMWUyYi4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgotCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
Ci0KLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0jaW5jbHVk
ZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eS5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jLCBpbnQgYXJnYywgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwg
bV9jb2RlKFN0cmluZygpLCBLVVJMKCksIDApCi17Ci0gICAgbV9mdW5jdGlvbiA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyhmdW5jKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICBW
OEdDQ29udHJvbGxlcjo6cmVnaXN0ZXJHbG9iYWxIYW5kbGUoU0NIRURVTEVEX0FDVElPTiwgdGhp
cywgbV9mdW5jdGlvbik7Ci0jZW5kaWYKLQotICAgIG1fYXJnYyA9IGFyZ2M7Ci0gICAgaWYgKGFy
Z2MgPiAwKSB7Ci0gICAgICAgIG1fYXJndiA9IG5ldyB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+
W2FyZ2NdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAg
ICAgICAgbV9hcmd2W2ldID0gdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPjo6TmV3KGFyZ3ZbaV0p
OwotCi0jaWZuZGVmIE5ERUJVRwotICAgIFY4R0NDb250cm9sbGVyOjpyZWdpc3Rlckdsb2JhbEhh
bmRsZShTQ0hFRFVMRURfQUNUSU9OLCB0aGlzLCBtX2FyZ3ZbaV0pOwotI2VuZGlmCi0gICAgICAg
IH0KLSAgICB9IGVsc2UKLSAgICAgICAgbV9hcmd2ID0gMDsKLX0KLQotU2NoZWR1bGVkQWN0aW9u
Ojp+U2NoZWR1bGVkQWN0aW9uKCkKLXsKLSAgICBpZiAobV9mdW5jdGlvbi5Jc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotI2lmbmRlZiBOREVCVUcKLSAgICBWOEdDQ29udHJvbGxlcjo6dW5y
ZWdpc3Rlckdsb2JhbEhhbmRsZSh0aGlzLCBtX2Z1bmN0aW9uKTsKLSNlbmRpZgotICAgIG1fZnVu
Y3Rpb24uRGlzcG9zZSgpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2FyZ2M7IGkrKykg
ewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVjhHQ0NvbnRyb2xsZXI6OnVucmVnaXN0ZXJHbG9i
YWxIYW5kbGUodGhpcywgbV9hcmd2W2ldKTsKLSNlbmRpZgotICAgICAgICBtX2FyZ3ZbaV0uRGlz
cG9zZSgpOwotICAgIH0KLQotICAgIGlmIChtX2FyZ2MgPiAwKQotICAgICAgICBkZWxldGVbXSBt
X2FyZ3Y7Ci19Ci0KLXZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRy
aWV2ZShjb250ZXh0KTsKLSAgICBpZiAocHJveHkpCi0gICAgICAgIGV4ZWN1dGUocHJveHkpOwot
I2lmIEVOQUJMRShXT1JLRVJTKQotICAgIGVsc2UgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4
dCgpKQotICAgICAgICBleGVjdXRlKHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0
KSk7Ci0jZW5kaWYKLSAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgSmF2YXNjcmlwdCBpcyBkaXNh
YmxlZCBhbmQgdGhhdCB3ZSBoYXZlIG5laXRoZXIgYSBWOFByb3h5Ci0gICAgLy8gbm9yIGEgV29y
a2VyQ29udGV4dC4gIERvIG5vdGhpbmcgaW4gdGhhdCBjYXNlLgotfQotCi12b2lkIFNjaGVkdWxl
ZEFjdGlvbjo6ZXhlY3V0ZShWOFByb3h5KiBwcm94eSkKLXsKLSAgICBBU1NFUlQocHJveHkpOwot
Ci0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IHY4Q29udGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQu
Z2V0KCkpOwotICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm47IC8v
IEpTIG1heSBub3QgYmUgZW5hYmxlZC4KLQotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2
OENvbnRleHQpOwotCi0gICAgcHJveHktPnNldFRpbWVyQ2FsbGJhY2sodHJ1ZSk7Ci0KLSAgICAv
LyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGltZW91dHMgZm9yIHByZWVtcHRpbmcgYSBsb25n
LXJ1bm5pbmcgc2NyaXB0LgotICAgIGlmICghbV9mdW5jdGlvbi5Jc0VtcHR5KCkgJiYgbV9mdW5j
dGlvbi0+SXNGdW5jdGlvbigpKSB7Ci0gICAgICAgIHByb3h5LT5jYWxsRnVuY3Rpb24odjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2Z1bmN0aW9uKSwgdjhDb250ZXh0LT5HbG9i
YWwoKSwgbV9hcmdjLCBtX2FyZ3YpOwotICAgICAgICBEb2N1bWVudDo6dXBkYXRlU3R5bGVGb3JB
bGxEb2N1bWVudHMoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcHJveHktPmV2YWx1YXRlKG1fY29k
ZSwgMCk7Ci0KLSAgICBwcm94eS0+c2V0VGltZXJDYWxsYmFjayhmYWxzZSk7Ci19Ci0KLSNpZiBF
TkFCTEUoV09SS0VSUykKLXZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQpCi17Ci0gICAgLy8gSW4gYSBXb3JrZXIsIHRoZSBleGVjdXRpb24g
c2hvdWxkIGFsd2F5cyBoYXBwZW4gb24gYSB3b3JrZXIgdGhyZWFkLgotICAgIEFTU0VSVCh3b3Jr
ZXJDb250ZXh0LT50aHJlYWQoKS0+dGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOwotICAK
LSAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gd29ya2VyQ29u
dGV4dC0+c2NyaXB0KCk7Ci0KLSAgICBpZiAoIW1fZnVuY3Rpb24uSXNFbXB0eSgpICYmIG1fZnVu
Y3Rpb24tPklzRnVuY3Rpb24oKSkgewotICAgICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICBBU1NFUlQoIXY4
Q29udGV4dC5Jc0VtcHR5KCkpOwotICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhD
b250ZXh0KTsKLSAgICAgICAgbV9mdW5jdGlvbi0+Q2FsbCh2OENvbnRleHQtPkdsb2JhbCgpLCBt
X2FyZ2MsIG1fYXJndik7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV2
YWx1YXRlKG1fY29kZSk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMzg4NWYuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRB
Y3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2NoZWR1
bGVkQWN0aW9uX2gKLSNkZWZpbmUgU2NoZWR1bGVkQWN0aW9uX2gKLQotI2luY2x1ZGUgIk93bkhh
bmRsZS5oIgotI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJWOEdDQ29u
dHJvbGxlci5oIgotCi0jaW5jbHVkZSA8djguaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0g
ICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAg
Y2xhc3MgVjhQcm94eTsKLSAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwotCi0gICAgY2xhc3MgU2No
ZWR1bGVkQWN0aW9uIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjaGVkdWxlZEFjdGlvbih2ODo6
SGFuZGxlPHY4OjpDb250ZXh0Piwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCBpbnQgYXJnYywg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7Ci0gICAgICAgIGV4cGxpY2l0IFNjaGVkdWxl
ZEFjdGlvbih2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIGNvZGUsIGNvbnN0IEtVUkwmIHVybCA9IEtVUkwoKSkKLSAgICAgICAgICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCi0gICAgICAgICAgICAsIG1fYXJnYygwKQotICAgICAgICAgICAgLCBt
X2FyZ3YoMCkKLSAgICAgICAgICAgICwgbV9jb2RlKGNvZGUsIHVybCkKLSAgICAgICAgewotICAg
ICAgICB9Ci0KLSAgICAgICAgdmlydHVhbCB+U2NoZWR1bGVkQWN0aW9uKCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQotICAgIHByaXZh
dGU6Ci0gICAgICAgIHZvaWQgZXhlY3V0ZShWOFByb3h5Kik7Ci0jaWYgRU5BQkxFKFdPUktFUlMp
Ci0gICAgICAgIHZvaWQgZXhlY3V0ZShXb3JrZXJDb250ZXh0Kik7Ci0jZW5kaWYKLQotICAgICAg
ICBPd25IYW5kbGU8djg6OkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uPiBtX2Z1bmN0aW9uOwotICAgICAgICBpbnQgbV9hcmdjOwotICAgICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+KiBtX2FyZ3Y7Ci0gICAgICAgIFNjcmlwdFNvdXJj
ZUNvZGUgbV9jb2RlOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFNjaGVkdWxlZEFjdGlvbgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFNj
aGVkdWxlZEFjdGlvbi5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U2NoZWR1bGVkQWN0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWFhNzgyCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFNjaGVkdWxlZEFjdGlvbi5jcHAKQEAg
LTAsMCArMSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOFNjaGVk
dWxlZEFjdGlvbi5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJW
OFByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eS5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Y4U2NoZWR1bGVkQWN0aW9uOjpWOFNjaGVkdWxlZEFjdGlvbih2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4g
ZnVuYywgaW50IGFyZ2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pCisgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKKyAgICAsIG1fY29kZShTdHJpbmcoKSwgS1VSTCgpLCAwKQoreworICAg
IG1fZnVuY3Rpb24gPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+OjpOZXcoZnVuYyk7CisK
KyNpZm5kZWYgTkRFQlVHCisgICAgVjhHQ0NvbnRyb2xsZXI6OnJlZ2lzdGVyR2xvYmFsSGFuZGxl
KFNDSEVEVUxFRF9BQ1RJT04sIHRoaXMsIG1fZnVuY3Rpb24pOworI2VuZGlmCisKKyAgICBtX2Fy
Z2MgPSBhcmdjOworICAgIGlmIChhcmdjID4gMCkgeworICAgICAgICBtX2FyZ3YgPSBuZXcgdjg6
OlBlcnNpc3RlbnQ8djg6OlZhbHVlPlthcmdjXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBhcmdjOyBpKyspIHsKKyAgICAgICAgICAgIG1fYXJndltpXSA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpWYWx1ZT46Ok5ldyhhcmd2W2ldKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBWOEdDQ29udHJv
bGxlcjo6cmVnaXN0ZXJHbG9iYWxIYW5kbGUoU0NIRURVTEVEX0FDVElPTiwgdGhpcywgbV9hcmd2
W2ldKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIG1fYXJndiA9IDA7
Cit9CisKK1Y4U2NoZWR1bGVkQWN0aW9uOjp+VjhTY2hlZHVsZWRBY3Rpb24oKQoreworICAgIGlm
IChtX2Z1bmN0aW9uLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWZuZGVmIE5ERUJV
RworICAgIFY4R0NDb250cm9sbGVyOjp1bnJlZ2lzdGVyR2xvYmFsSGFuZGxlKHRoaXMsIG1fZnVu
Y3Rpb24pOworI2VuZGlmCisgICAgbV9mdW5jdGlvbi5EaXNwb3NlKCk7CisKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG1fYXJnYzsgaSsrKSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBWOEdD
Q29udHJvbGxlcjo6dW5yZWdpc3Rlckdsb2JhbEhhbmRsZSh0aGlzLCBtX2FyZ3ZbaV0pOworI2Vu
ZGlmCisgICAgICAgIG1fYXJndltpXS5EaXNwb3NlKCk7CisgICAgfQorCisgICAgaWYgKG1fYXJn
YyA+IDApCisgICAgICAgIGRlbGV0ZVtdIG1fYXJndjsKK30KKwordm9pZCBWOFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFY4
UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCk7CisgICAgaWYgKHByb3h5
KQorICAgICAgICBleGVjdXRlKHByb3h5KTsKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBlbHNl
IGlmIChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKKyAgICAgICAgZXhlY3V0ZShzdGF0aWNf
Y2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCkpOworI2VuZGlmCisgICAgLy8gSXQncyBwb3Nz
aWJsZSB0aGF0IEphdmFzY3JpcHQgaXMgZGlzYWJsZWQgYW5kIHRoYXQgd2UgaGF2ZSBuZWl0aGVy
IGEgVjhQcm94eQorICAgIC8vIG5vciBhIFdvcmtlckNvbnRleHQuICBEbyBub3RoaW5nIGluIHRo
YXQgY2FzZS4KK30KKwordm9pZCBWOFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShWOFByb3h5KiBw
cm94eSkKK3sKKyAgICBBU1NFUlQocHJveHkpOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRs
ZVNjb3BlOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmICh2OENvbnRleHQu
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm47IC8vIEpTIG1heSBub3QgYmUgZW5hYmxlZC4KKwor
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOworCisgICAgcHJveHktPnNl
dFRpbWVyQ2FsbGJhY2sodHJ1ZSk7CisKKyAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQg
dGltZW91dHMgZm9yIHByZWVtcHRpbmcgYSBsb25nLXJ1bm5pbmcgc2NyaXB0LgorICAgIGlmICgh
bV9mdW5jdGlvbi5Jc0VtcHR5KCkgJiYgbV9mdW5jdGlvbi0+SXNGdW5jdGlvbigpKSB7CisgICAg
ICAgIHByb3h5LT5jYWxsRnVuY3Rpb24odjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPjo6Q2Fz
dChtX2Z1bmN0aW9uKSwgdjhDb250ZXh0LT5HbG9iYWwoKSwgbV9hcmdjLCBtX2FyZ3YpOworICAg
ICAgICBEb2N1bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcHJveHktPmV2YWx1YXRlKG1fY29kZSwgMCk7CisKKyAgICBwcm94eS0+c2V0VGlt
ZXJDYWxsYmFjayhmYWxzZSk7Cit9CisKKyNpZiBFTkFCTEUoV09SS0VSUykKK3ZvaWQgVjhTY2hl
ZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKK3sKKyAg
ICAvLyBJbiBhIFdvcmtlciwgdGhlIGV4ZWN1dGlvbiBzaG91bGQgYWx3YXlzIGhhcHBlbiBvbiBh
IHdvcmtlciB0aHJlYWQuCisgICAgQVNTRVJUKHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT50aHJl
YWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7CisgIAorICAgIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKKworICAgIGlm
ICghbV9mdW5jdGlvbi5Jc0VtcHR5KCkgJiYgbV9mdW5jdGlvbi0+SXNGdW5jdGlvbigpKSB7Cisg
ICAgICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICAgICAgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29u
dGV4dC5nZXQoKSk7CisgICAgICAgIEFTU0VSVCghdjhDb250ZXh0LklzRW1wdHkoKSk7CisgICAg
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOworICAgICAgICBtX2Z1bmN0
aW9uLT5DYWxsKHY4Q29udGV4dC0+R2xvYmFsKCksIG1fYXJnYywgbV9hcmd2KTsKKyAgICB9IGVs
c2UKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXZhbHVhdGUobV9jb2RlKTsKK30KKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4U2NoZWR1bGVkQWN0aW9uLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U2NoZWR1bGVk
QWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJmNDRiNAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhTY2hlZHVsZWRBY3Rpb24uaApA
QCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4U2NoZWR1bGVkQWN0aW9uX2gKKyNkZWZpbmUg
VjhTY2hlZHVsZWRBY3Rpb25faAorCisjaW5jbHVkZSAiT3duSGFuZGxlLmgiCisjaW5jbHVkZSAi
U2NoZWR1bGVkQWN0aW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorI2luY2x1
ZGUgIlY4R0NDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlIDx2OC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFN0cmluZzsKK2NsYXNzIFY4UHJveHk7CitjbGFzcyBXb3JrZXJDb250
ZXh0OworCitjbGFzcyBWOFNjaGVkdWxlZEFjdGlvbiA6IHB1YmxpYyBTY2hlZHVsZWRBY3Rpb24g
eworcHVibGljOgorICAgIFY4U2NoZWR1bGVkQWN0aW9uKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
LCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXJndltdKTsKKyAgICBleHBsaWNpdCBWOFNjaGVkdWxlZEFjdGlvbih2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGNvZGUsIGNvbnN0IEtV
UkwmIHVybCA9IEtVUkwoKSkKKyAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAgICAg
LCBtX2FyZ2MoMCkKKyAgICAgICAgLCBtX2FyZ3YoMCkKKyAgICAgICAgLCBtX2NvZGUoY29kZSwg
dXJsKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5WOFNjaGVkdWxlZEFjdGlvbigpOwor
ICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIGV4ZWN1dGUoVjhQcm94eSopOworI2lmIEVOQUJMRShXT1JLRVJTKQor
ICAgIHZvaWQgZXhlY3V0ZShXb3JrZXJDb250ZXh0Kik7CisjZW5kaWYKKworICAgIE93bkhhbmRs
ZTx2ODo6Q29udGV4dD4gbV9jb250ZXh0OworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
bj4gbV9mdW5jdGlvbjsKKyAgICBpbnQgbV9hcmdjOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpW
YWx1ZT4qIG1fYXJndjsKKyAgICBTY3JpcHRTb3VyY2VDb2RlIG1fY29kZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFY4U2NoZWR1bGVkQWN0aW9uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggOTcx
OTgzNy4uMjU4ZmRhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9N
V2luZG93Q3VzdG9tLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIlY4TWVzc2FnZVBv
cnRDdXN0b20uaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisj
aW5jbHVkZSAiVjhTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgog
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKQEAgLTEyNiwx
MyArMTI3LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1wbChj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsCiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBwYXJhbXMgaXMgcGFzc2VkIHRvIGFjdGlvbiwgYW5kIHJlbGVhc2VkIGluIGFjdGlvbidz
IGRlc3RydWN0b3IKLSAgICAgICAgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24gPSBuZXcgU2NoZWR1
bGVkQWN0aW9uKFY4UHJveHk6OmNvbnRleHQoaW1wLT5mcmFtZSgpKSwgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+OjpDYXN0KGZ1bmN0aW9uKSwgcGFyYW1Db3VudCwgcGFyYW1zKTsKKyAgICAgICAg
U2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24gPSBuZXcgVjhTY2hlZHVsZWRBY3Rpb24oVjhQcm94eTo6
Y29udGV4dChpbXAtPmZyYW1lKCkpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNhc3QoZnVu
Y3Rpb24pLCBwYXJhbUNvdW50LCBwYXJhbXMpOwogCiAgICAgICAgIGRlbGV0ZVtdIHBhcmFtczsK
IAogICAgICAgICBpZCA9IERPTVRpbWVyOjppbnN0YWxsKHNjcmlwdENvbnRleHQsIGFjdGlvbiwg
dGltZW91dCwgc2luZ2xlU2hvdCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWQgPSBET01UaW1l
cjo6aW5zdGFsbChzY3JpcHRDb250ZXh0LCBuZXcgU2NoZWR1bGVkQWN0aW9uKFY4UHJveHk6OmNv
bnRleHQoaW1wLT5mcmFtZSgpKSwgZnVuY3Rpb25TdHJpbmcpLCB0aW1lb3V0LCBzaW5nbGVTaG90
KTsKKyAgICAgICAgaWQgPSBET01UaW1lcjo6aW5zdGFsbChzY3JpcHRDb250ZXh0LCBuZXcgVjhT
Y2hlZHVsZWRBY3Rpb24oVjhQcm94eTo6Y29udGV4dChpbXAtPmZyYW1lKCkpLCBmdW5jdGlvblN0
cmluZyksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogICAgIH0KIAogICAgIHJldHVybiB2ODo6SW50
ZWdlcjo6TmV3KGlkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdv
cmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDc2NzdlMjcuLjAwOWM3MjggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFNjaGVkdWxl
ZEFjdGlvbi5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiVjhXb3JrZXJD
b250ZXh0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgpAQCAtNjEsNyAr
NjIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2YWwoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IHY4Q29udGV4dCA9IHdvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5wcm94eSgpLT5jb250ZXh0
KCk7CiAgICAgaWYgKGZ1bmN0aW9uLT5Jc1N0cmluZygpKSB7CiAgICAgICAgIFdlYkNvcmU6OlN0
cmluZyBzdHJpbmdGdW5jdGlvbiA9IHRvV2ViQ29yZVN0cmluZyhmdW5jdGlvbik7Ci0gICAgICAg
IHRpbWVySWQgPSBET01UaW1lcjo6aW5zdGFsbCh3b3JrZXJDb250ZXh0LCBuZXcgU2NoZWR1bGVk
QWN0aW9uKHY4Q29udGV4dCwgc3RyaW5nRnVuY3Rpb24sIHdvcmtlckNvbnRleHQtPnVybCgpKSwg
dGltZW91dCwgc2luZ2xlU2hvdCk7CisgICAgICAgIHRpbWVySWQgPSBET01UaW1lcjo6aW5zdGFs
bCh3b3JrZXJDb250ZXh0LCBuZXcgVjhTY2hlZHVsZWRBY3Rpb24odjhDb250ZXh0LCBzdHJpbmdG
dW5jdGlvbiwgd29ya2VyQ29udGV4dC0+dXJsKCkpLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKICAg
ICB9IGVsc2UgaWYgKGZ1bmN0aW9uLT5Jc0Z1bmN0aW9uKCkpIHsKICAgICAgICAgc2l6ZV90IHBh
cmFtQ291bnQgPSBhcmd1bWVudENvdW50ID49IDIgPyBhcmd1bWVudENvdW50IC0gMiA6IDA7CiAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+KiBwYXJhbXMgPSAwOwpAQCAtNzAsOCArNzEsOCBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2YWwoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwYXJhbUNvdW50OyArK2kpCiAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gYXJnc1tp
KzJdOwogICAgICAgICB9Ci0gICAgICAgIC8vIFNjaGVkdWxlZEFjdGlvbiB0YWtlcyBvd25lcnNo
aXAgb2YgYWN0dWFsIHBhcmFtcyBhbmQgcmVsZWFzZXMgdGhlbSBpbiBpdHMgZGVzdHJ1Y3Rvci4K
LSAgICAgICAgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24gPSBuZXcgU2NoZWR1bGVkQWN0aW9uKHY4
Q29udGV4dCwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGZ1bmN0aW9uKSwgcGFyYW1D
b3VudCwgcGFyYW1zKTsKKyAgICAgICAgLy8gVjhTY2hlZHVsZWRBY3Rpb24gdGFrZXMgb3duZXJz
aGlwIG9mIGFjdHVhbCBwYXJhbXMgYW5kIHJlbGVhc2VzIHRoZW0gaW4gaXRzIGRlc3RydWN0b3Iu
CisgICAgICAgIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uID0gbmV3IFY4U2NoZWR1bGVkQWN0aW9u
KHY4Q29udGV4dCwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGZ1bmN0aW9uKSwgcGFy
YW1Db3VudCwgcGFyYW1zKTsKICAgICAgICAgZGVsZXRlIFtdIHBhcmFtczsKICAgICAgICAgdGlt
ZXJJZCA9IERPTVRpbWVyOjppbnN0YWxsKHdvcmtlckNvbnRleHQsIGFjdGlvbiwgdGltZW91dCwg
c2luZ2xlU2hvdCk7CiAgICAgfSBlbHNlCi0tIAoxLjYuNgoK
</data>
<flag name="review"
          id="31612"
          type_id="1"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>