<?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>38531</bug_id>
          
          <creation_ts>2010-05-04 10:43:42 -0700</creation_ts>
          <short_desc>V8 ScriptCallStack does not build on Android due to missing feature guards</short_desc>
          <delta_ts>2010-05-05 08:08:39 -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>Android</rep_platform>
          <op_sys>Android</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>android-webkit-unforking</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jaimeyap</cc>
    
    <cc>pfeldman</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>220657</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-04 10:43:42 -0700</bug_when>
    <thetext>V8&apos;s ScriptCallStack.cpp does not compile on Android because ScriptDebugServer has not been declared.

Changes http://trac.webkit.org/changeset/57231 and http://trac.webkit.org/changeset/55277 modified ScriptCallStack::create() to require ScriptDebugServer::topStackFrame(). ScriptDebugServer.cpp is guarded with ENABLE(JAVASCRIPT_DEBUGGER), which is not defined on Android.

It looks like the correct fix is to guard all of ScriptCallStack.cpp with ENABLE(JAVASCRIPT_DEBUGGER).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220848</commentid>
    <comment_count>1</comment_count>
      <attachid>55067</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-04 16:02:32 -0700</bug_when>
    <thetext>Created attachment 55067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220849</commentid>
    <comment_count>2</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-04 16:06:10 -0700</bug_when>
    <thetext>The patch I&apos;ve uploaded guards all of ScriptCallStack with ENABLE(JAVASCRIPT_DEBUGGER) and adds similar guards to the Console methods that use the class.

This fixes the Android build but is probably overly drastic. However, I&apos;m not familiar with the intended interaction between ENABLE(JAVASCRIPT_DEBUGGER), ENABLE(INSPECTOR) and Console. Pavel, do you know what the correct approach is, or know who might?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220970</commentid>
    <comment_count>3</comment_count>
      <attachid>55067</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-05-04 23:21:54 -0700</bug_when>
    <thetext>Comment on attachment 55067
Patch

This is Ok short term so that you could have the build compiled. However, longer term, I think we should move topStackFrame to the ScriptCallStack so that you did not lose console API functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221015</commentid>
    <comment_count>4</comment_count>
      <attachid>55099</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-05 02:01:00 -0700</bug_when>
    <thetext>Created attachment 55099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221016</commentid>
    <comment_count>5</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-05 02:02:23 -0700</bug_when>
    <thetext>&gt; This is Ok short term so that you could have the build compiled. However,
&gt; longer term, I think we should move topStackFrame to the ScriptCallStack so
&gt; that you did not lose console API functions.
Thanks for the comments Pavel. I&apos;ve updated my patch to reflect this. There&apos;s no huge rush to fix the Android build, as we don&apos;t sync too regularly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221035</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-05-05 02:43:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; This is Ok short term so that you could have the build compiled. However,
&gt; &gt; longer term, I think we should move topStackFrame to the ScriptCallStack so
&gt; &gt; that you did not lose console API functions.
&gt; Thanks for the comments Pavel. I&apos;ve updated my patch to reflect this. There&apos;s
&gt; no huge rush to fix the Android build, as we don&apos;t sync too regularly.

One thing that concerns me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221036</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-05-05 02:48:19 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; &gt; This is Ok short term so that you could have the build compiled. However,
&gt; &gt; &gt; longer term, I think we should move topStackFrame to the ScriptCallStack so
&gt; &gt; &gt; that you did not lose console API functions.
&gt; &gt; Thanks for the comments Pavel. I&apos;ve updated my patch to reflect this. There&apos;s
&gt; &gt; no huge rush to fix the Android build, as we don&apos;t sync too regularly.
&gt; 
&gt; One thing that concerns me ... 

oops - was adding Jaime to the CC list.

So the thing that concerns me now is that it pulled everything together with utility context into the stack class. Initially, utility context lived in the V8Proxy and was used for the debugging needs mostly. At that time I suggested Jaime moving it into the newly create ScriptDebugServer class, but I did not realize ports might want to use console traces and not have javascript debugging enabled back then. It looks like this is the case though, so we might need to move utility context back to the v8 proxy, call it debugger context and use from ScriptDebugServer and this call stack class. I realize that it is too much to ask from you, so I am happy to fix it myself!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221053</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-05-05 04:40:48 -0700</bug_when>
    <thetext>Actually, Jaime is almost done with his v8 refactoring that allows capturing javascript stack without the need in utility context. Why don&apos;t we land first version of your patch now and get rid of the context as a whole in few days (once new stack-related code lands into v8 and rolls into the build)?

Jaime, could you confirm that you are about to land and that the utility context will go away (at least from the ScriptCallStack)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221096</commentid>
    <comment_count>9</comment_count>
    <who name="">jaimeyap</who>
    <bug_when>2010-05-05 07:28:28 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Actually, Jaime is almost done with his v8 refactoring that allows capturing
&gt; javascript stack without the need in utility context. Why don&apos;t we land first
&gt; version of your patch now and get rid of the context as a whole in few days
&gt; (once new stack-related code lands into v8 and rolls into the build)?
&gt; 
&gt; Jaime, could you confirm that you are about to land and that the utility
&gt; context will go away (at least from the ScriptCallStack)?

Yes. I am about to land a new StackTrace API to V8 bleeding edge. Should go in today or tomorrow depending on when I can get a committer.  See http://codereview.chromium.org/1694011/show

Yes, this means that I can remove the utility context entirely from ScriptDebugServer. I plan on updating https://bugs.webkit.org/show_bug.cgi?id=37502 to use that API and in the process resolve this bug.

I think we should wait until bleeding edge V8 gets merged to trunk and that gets deps rolled into Chromium before updating webkit. This should happen I think by Friday. But I will try and submit the updated WebKit patch for review sometime today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221098</commentid>
    <comment_count>10</comment_count>
    <who name="">jaimeyap</who>
    <bug_when>2010-05-05 07:31:15 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Actually, Jaime is almost done with his v8 refactoring that allows capturing
&gt; &gt; javascript stack without the need in utility context. Why don&apos;t we land first
&gt; &gt; version of your patch now and get rid of the context as a whole in few days
&gt; &gt; (once new stack-related code lands into v8 and rolls into the build)?
&gt; &gt; 
&gt; &gt; Jaime, could you confirm that you are about to land and that the utility
&gt; &gt; context will go away (at least from the ScriptCallStack)?
&gt; 
&gt; Yes. I am about to land a new StackTrace API to V8 bleeding edge. Should go in
&gt; today or tomorrow depending on when I can get a committer.  See
&gt; http://codereview.chromium.org/1694011/show
&gt; 
&gt; Yes, this means that I can remove the utility context entirely from
&gt; ScriptDebugServer. I plan on updating
&gt; https://bugs.webkit.org/show_bug.cgi?id=37502 to use that API and in the
&gt; process resolve this bug.
&gt; 
&gt; I think we should wait until bleeding edge V8 gets merged to trunk and that
&gt; gets deps rolled into Chromium before updating webkit. This should happen I
&gt; think by Friday. But I will try and submit the updated WebKit patch for review
&gt; sometime today.

To clarify, after catching up on this bug, I agree with Pavel. Land this now to remove the utility context from ScriptDebugServer.

I will follow up later to use the new stack trace API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221107</commentid>
    <comment_count>11</comment_count>
      <attachid>55099</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-05 08:08:32 -0700</bug_when>
    <thetext>Comment on attachment 55099
Patch

Clearing flags on attachment: 55099

Committed r58818: &lt;http://trac.webkit.org/changeset/58818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221108</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-05 08:08:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55067</attachid>
            <date>2010-05-04 16:02:32 -0700</date>
            <delta_ts>2010-05-05 02:00:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38531-20100505000229.patch</filename>
            <type>text/plain</type>
            <size>3372</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODc4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMDQgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEd1YXJkIFNjcmlwdENhbGxTdGFjayB3aXRoIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg1MzEKKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIGJ1aWxkIGZpeCBvbmx5LgorCisgICAgICAgICogYmluZGlu
Z3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgor
ICAgICAgICAqIHBhZ2UvQ29uc29sZS5pZGw6CisKIDIwMTAtMDUtMDQgIEtlbnQgVGFtdXJhICA8
dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluIChh
bmQgdW5vZmZpY2lhbGx5IGJ5IEVucmljYSBDYXN1Y2NpKS4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFjay5jcHAJKHJldmlzaW9uIDU4Nzc1KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAK
KyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKwogI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogCkBAIC03NiwzICs3OCw1
IEBAIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgU2NyaXB0Q2FsbFN0YWNrOjoKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL0NvbnNvbGUuY3BwCShyZXZpc2lvbiA1ODc3NSkKKysrIFdlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw3IEBAIHZvaWQgQ29uc29sZTo6YWRk
TWVzc2FnZShNZXNzYWdlU291cmNlIHMKICAgICBwcmludGYoIiAlc1xuIiwgbWVzc2FnZS51dGY4
KCkuZGF0YSgpKTsKIH0KIAorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogdm9pZCBD
b25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
U2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIGJvb2wgYWNjZXB0Tm9Bcmd1bWVudHMpCiB7CiAg
ICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKQEAgLTI4NSw2ICsyODYsNyBAQCB2b2lkIENv
bnNvbGU6Om1hcmtUaW1lbGluZShTY3JpcHRDYWxsU3RhCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxT
dGFjayk7CiAjZW5kaWYKIH0KKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdNTCkKIFN0cmluZyBDb25z
b2xlOjpsYXN0V01MRXJyb3JNZXNzYWdlKCkgY29uc3QKQEAgLTQzOCwxMCArNDQwLDEyIEBAIHZv
aWQgQ29uc29sZTo6Z3JvdXBFbmQoKQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKIHZvaWQgQ29uc29sZTo6d2FybihTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFj
aykKIHsKICAgICBhZGRNZXNzYWdlKExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVs
LCBjYWxsU3RhY2spOwogfQorI2VuZGlmCiAKIHN0YXRpYyBib29sIHByaW50RXhjZXB0aW9ucyA9
IGZhbHNlOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCShyZXZpc2lvbiA1ODc3NSkKKysrIFdlYkNvcmUvcGFn
ZS9Db25zb2xlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBAQCBtb2R1bGUgd2lu
ZG93IHsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9t
R2V0dGVyXSBBcnJheSBwcm9maWxlczsKLSNlbmRpZgotICAgIAorCiAgICAgICAgIFtDdXN0b21B
cmd1bWVudEhhbmRsaW5nXSB2b2lkIGRlYnVnKCk7CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhh
bmRsaW5nXSB2b2lkIGVycm9yKCk7CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2
b2lkIGluZm8oKTsKQEAgLTQ1LDYgKzQ0LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIFtD
dXN0b21Bcmd1bWVudEhhbmRsaW5nLCBJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPWFzc2VydENvbmRp
dGlvbl0gdm9pZCBhc3NlcnQoaW4gYm9vbGVhbiBjb25kaXRpb24pOwogICAgICAgICBbQ3VzdG9t
QXJndW1lbnRIYW5kbGluZ10gdm9pZCBjb3VudCgpOwogICAgICAgICBbQ3VzdG9tQXJndW1lbnRI
YW5kbGluZ10gdm9pZCBtYXJrVGltZWxpbmUoKTsKKyNlbmRpZgogCiAjaWYgZGVmaW5lZChFTkFC
TEVfV01MKSAmJiBFTkFCTEVfV01MCiAgICAgICAgIFtEb250RW51bV0gRE9NU3RyaW5nIGxhc3RX
TUxFcnJvck1lc3NhZ2UoKTsKQEAgLTU2LDggKzU2LDEwIEBAIG1vZHVsZSB3aW5kb3cgewogI2Vu
ZGlmCiAKICAgICAgICAgdm9pZCB0aW1lKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOworI2lmIGRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAgICAgICAgIFtDdXN0b21B
cmd1bWVudEhhbmRsaW5nXSB2b2lkIHRpbWVFbmQoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhh
bmRsaW5nXSB2b2lkIGdyb3VwKCk7CisjZW5kaWYKICAgICAgICAgdm9pZCBncm91cEVuZCgpOwog
ICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55099</attachid>
            <date>2010-05-05 02:01:00 -0700</date>
            <delta_ts>2010-05-05 08:08:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38531-20100505100057.patch</filename>
            <type>text/plain</type>
            <size>13420</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODgwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDUtMDUgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmUgVjggU2NyaXB0RGVidWdTZXJ2ZXI6OnRvcFN0YWNrRnJhbWUoKSB0byBTY3JpcHRDYWxs
U3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4
NTMxCisKKyAgICAgICAgU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoKSB1c2VzIFNjcmlwdERlYnVn
U2VydmVyOjp0b3BTdGFja0ZyYW1lKCksIGJ1dCBTY3JpcHREZWJ1Z1NlcnZlcgorICAgICAgICBp
cyBndWFyZGVkIHdpdGggRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpLiBUaGlzIHByZXZlbnRz
IFNjcmlwdENhbGxTdGFjayBmcm9tIGJlaW5nCisgICAgICAgIGJ1aWx0IG9uIHBsYXRmb3JtcyB0
aGF0IGRvIG5vdCBkZWZpbmUgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgYnVpbGQgZml4IG9ubHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
Y3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpj
YWxsTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGVV
dGlsaXR5Q29udGV4dCk6IEhlbHBlciBmb3IgdG9wU3RhY2tGcmFtZSwgbW92ZWQgZnJvbSBTY3Jp
cHREZWJ1Z1NlcnZlcgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjp0b3BTdGFj
a0ZyYW1lKTogTW92ZWQgZnJvbSBTY3JpcHREZWJ1Z1NlcnZlcgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFjay5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNr
Ojp1dGlsaXR5Q29udGV4dCk6IEhlbHBlciBmb3IgdG9wU3RhY2tGcmFtZSwgbW92ZWQgZnJvbSBT
Y3JpcHREZWJ1Z1NlcnZlcgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgorCiAyMDEw
LTA1LTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFjay5jcHAJKHJldmlzaW9uIDU4Nzc1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDYWxsU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMTYgQEAKIAog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZl
ci5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgogCisjaW5jbHVkZSA8djgtZGVidWcuaD4KICNp
bmNsdWRlIDx2OC5oPgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPiAvLyBGb3IgREVGSU5FX1NUQVRJQ19MT0NBTAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK3Y4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBTY3JpcHRDYWxsU3RhY2s6OnNf
dXRpbGl0eUNvbnRleHQ7CisKIFNjcmlwdENhbGxTdGFjayogU2NyaXB0Q2FsbFN0YWNrOjpjcmVh
dGUoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRD
b3VudCkgewogICAgIFN0cmluZyBzb3VyY2VOYW1lOwogICAgIGludCBzb3VyY2VMaW5lTnVtYmVy
OwpAQCAtNTEsNyArNTQsNyBAQCBTY3JpcHRDYWxsU3RhY2sqIFNjcmlwdENhbGxTdGFjazo6Y3Jl
YXRlCiAKIGJvb2wgU2NyaXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VO
YW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKQogewotICAg
IGlmICghU2NyaXB0RGVidWdTZXJ2ZXI6OnRvcFN0YWNrRnJhbWUoKnNvdXJjZU5hbWUsICpzb3Vy
Y2VMaW5lTnVtYmVyLCAqZnVuY3Rpb25OYW1lKSkKKyAgICBpZiAoIXRvcFN0YWNrRnJhbWUoKnNv
dXJjZU5hbWUsICpzb3VyY2VMaW5lTnVtYmVyLCAqZnVuY3Rpb25OYW1lKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICpzb3VyY2VMaW5lTnVtYmVyICs9IDE7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC03NSw0ICs3OCw2NyBAQCBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIFNjcmlwdENhbGxTdGFj
azo6CiAgICAgcmV0dXJuIG1fbGFzdENhbGxlcjsKIH0KIAorLy8gQ3JlYXRlIHRoZSB1dGlsaXR5
IGNvbnRleHQgZm9yIGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5
CisvLyB3aGljaCBhcmUgbm90IHZpc2libGUgdG8gSmF2YVNjcmlwdCBleGVjdXRpbmcgb24gdGhl
IHBhZ2UuCit2b2lkIFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlVXRpbGl0eUNvbnRleHQoKQorewor
ICAgIEFTU0VSVChzX3V0aWxpdHlDb250ZXh0LklzRW1wdHkoKSk7CisKKyAgICB2ODo6SGFuZGxl
U2NvcGUgc2NvcGU7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGdsb2JhbFRl
bXBsYXRlID0gdjg6Ok9iamVjdFRlbXBsYXRlOjpOZXcoKTsKKyAgICBzX3V0aWxpdHlDb250ZXh0
ID0gdjg6OkNvbnRleHQ6Ok5ldygwLCBnbG9iYWxUZW1wbGF0ZSk7CisgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIGNvbnRleHRTY29wZShzX3V0aWxpdHlDb250ZXh0KTsKKworICAgIC8vIENvbXBpbGUg
SmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgc291cmNlIGxpbmUsIHRoZSBz
b3VyY2UKKyAgICAvLyBuYW1lIGFuZCB0aGUgc3ltYm9sIG5hbWUgZm9yIHRoZSB0b3AgSmF2YVNj
cmlwdCBzdGFjayBmcmFtZS4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IGNoYXIqLCB0
b3BTdGFja0ZyYW1lLAorICAgICAgICAoImZ1bmN0aW9uIHRvcFN0YWNrRnJhbWUoZXhlY19zdGF0
ZSkgeyIKKyAgICAgICAgIiAgaWYgKCFleGVjX3N0YXRlLmZyYW1lQ291bnQoKSkiCisgICAgICAg
ICIgICAgICByZXR1cm4gdW5kZWZpbmVkOyIKKyAgICAgICAgIiAgdmFyIGZyYW1lID0gZXhlY19z
dGF0ZS5mcmFtZSgwKTsiCisgICAgICAgICIgIHZhciBmdW5jID0gZnJhbWUuZnVuYygpOyIKKyAg
ICAgICAgIiAgdmFyIHNjcmlwdE5hbWU7IgorICAgICAgICAiICBpZiAoZnVuYy5yZXNvbHZlZCgp
ICYmIGZ1bmMuc2NyaXB0KCkpIgorICAgICAgICAiICAgICAgc2NyaXB0TmFtZSA9IGZ1bmMuc2Ny
aXB0KCkubmFtZSgpOyIKKyAgICAgICAgIiAgcmV0dXJuIFtzY3JpcHROYW1lLCBmcmFtZS5zb3Vy
Y2VMaW5lKCksIChmdW5jLm5hbWUoKSB8fCBmdW5jLmluZmVycmVkTmFtZSgpKV07IgorICAgICAg
ICAifSIpKTsKKyAgICB2ODo6U2NyaXB0OjpDb21waWxlKHY4OjpTdHJpbmc6Ok5ldyh0b3BTdGFj
a0ZyYW1lKSktPlJ1bigpOworfQorCitib29sIFNjcmlwdENhbGxTdGFjazo6dG9wU3RhY2tGcmFt
ZShTdHJpbmcmIHNvdXJjZU5hbWUsIGludCYgbGluZU51bWJlciwgU3RyaW5nJiBmdW5jdGlvbk5h
bWUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IHY4VXRpbGl0eUNvbnRleHQgPSB1dGlsaXR5Q29udGV4dCgpOworICAgIGlmICh2OFV0
aWxpdHlDb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHY4OjpD
b250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjhVdGlsaXR5Q29udGV4dCk7CisgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IHRvcFN0YWNrRnJhbWU7CisgICAgdG9wU3RhY2tGcmFtZSA9IHY4
OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KHY4VXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpLT5H
ZXQodjg6OlN0cmluZzo6TmV3KCJ0b3BTdGFja0ZyYW1lIikpKTsKKyAgICBpZiAodG9wU3RhY2tG
cmFtZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUgPSB2ODo6RGVidWc6OkNhbGwodG9wU3RhY2tGcmFtZSk7CisgICAgaWYg
KHZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIElmIHRoZXJl
IGlzIG5vIHRvcCBzdGFjayBmcmFtZSwgd2Ugc3RpbGwgcmV0dXJuIHN1Y2Nlc3MsIGJ1dCBmaWxs
IHRoZSBpbnB1dCBwYXJhbXMgd2l0aCBkZWZhdWx0cy4KKyAgICBpZiAodmFsdWUtPklzVW5kZWZp
bmVkKCkpIHsKKyAgICAgIC8vIEZhbGxiYWNrIHRvIHNldHRpbmcgbGluZU51bWJlciB0byAwLCBh
bmQgc291cmNlIGFuZCBmdW5jdGlvbiBuYW1lIHRvICJ1bmRlZmluZWQiLgorICAgICAgc291cmNl
TmFtZSA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7CisgICAgICBsaW5lTnVtYmVyID0gMDsKKyAg
ICAgIGZ1bmN0aW9uTmFtZSA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7CisgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgaWYgKCF2YWx1ZS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGpzQXJyYXkgPSB2YWx1ZS0+VG9PYmpl
Y3QoKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBzb3VyY2VOYW1lVmFsdWUgPSBqc0FycmF5
LT5HZXQoMCk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGluZU51bWJlclZhbHVlID0ganNB
cnJheS0+R2V0KDEpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGZ1bmN0aW9uTmFtZVZhbHVl
ID0ganNBcnJheS0+R2V0KDIpOworICAgIGlmIChzb3VyY2VOYW1lVmFsdWUuSXNFbXB0eSgpIHx8
IGxpbmVOdW1iZXJWYWx1ZS5Jc0VtcHR5KCkgfHwgZnVuY3Rpb25OYW1lVmFsdWUuSXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc291cmNlTmFtZSA9IHRvV2ViQ29yZVN0cmlu
Zyhzb3VyY2VOYW1lVmFsdWUpOworICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyVmFsdWUtPklu
dDMyVmFsdWUoKTsKKyAgICBmdW5jdGlvbk5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rpb25O
YW1lVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgJKHJldmlzaW9uIDU4Nzc1
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsMjYgKzQyLDQ4IEBAIG5hbWVzcGFjZSB2OCB7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotICAgIGNsYXNzIFNjcmlwdENhbGxTdGFjayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0g
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgU2NyaXB0Q2FsbFN0YWNrKiBjcmVhdGUoY29uc3Qg
djg6OkFyZ3VtZW50cyYsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50ID0gMCk7Ci0gICAgICAg
IH5TY3JpcHRDYWxsU3RhY2soKTsKLQotICAgICAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24o
U3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rp
b25OYW1lKTsKLQotICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGF0KHVuc2lnbmVkKSBj
b25zdDsKLSAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCByZXRyaWV2aW5nIGFuZCBzdG9yaW5n
IGNhbGwgc3RhY2sgdHJhY2UKLSAgICAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IDE7IH0KLQotICAgICAgICBTY3JpcHRTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Nj
cmlwdFN0YXRlOyB9Ci0gICAgICAgIFNjcmlwdFN0YXRlKiBnbG9iYWxTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNjcmlwdENh
bGxTdGFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1
bWVudENvdW50LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIsIFN0cmlu
ZyBmdW5jTmFtZSk7Ci0gICAgCi0gICAgICAgIFNjcmlwdENhbGxGcmFtZSBtX2xhc3RDYWxsZXI7
Ci0gICAgICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOwotICAgIH07CitjbGFzcyBTY3Jp
cHRDYWxsU3RhY2sgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBT
Y3JpcHRDYWxsU3RhY2sqIGNyZWF0ZShjb25zdCB2ODo6QXJndW1lbnRzJiwgdW5zaWduZWQgc2tp
cEFyZ3VtZW50Q291bnQgPSAwKTsKKyAgICB+U2NyaXB0Q2FsbFN0YWNrKCk7CisKKyAgICBzdGF0
aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVO
dW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKTsKKworICAgIGNvbnN0IFNjcmlwdENhbGxGcmFt
ZSYgYXQodW5zaWduZWQpIGNvbnN0OworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgcmV0cmlldmlu
ZyBhbmQgc3RvcmluZyBjYWxsIHN0YWNrIHRyYWNlCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIDE7IH0KKworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NyaXB0U3RhdGU7IH0KKyAgICBTY3JpcHRTdGF0ZSogZ2xvYmFsU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CisKK3ByaXZhdGU6CisgICAgU2NyaXB0Q2FsbFN0YWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291
bnQsIFN0cmluZyBzb3VyY2VOYW1lLCBpbnQgc291cmNlTGluZU51bWJlciwgU3RyaW5nIGZ1bmNO
YW1lKTsKKworICAgIC8vIEZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSBzb3VyY2UgbmFtZSwg
bGluZSBudW1iZXIgYW5kIGZ1bmN0aW9uIG5hbWUgZm9yIHRoZSB0b3AKKyAgICAvLyBKYXZhU2Ny
aXB0IHN0YWNrIGZyYW1lLgorICAgIC8vCisgICAgLy8gSXQgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0
aGUgY2FsbGVyIGluZm9ybWF0aW9uIHdhcyBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGFuZCB3cml0
dGVuCisgICAgLy8gaW50byB0aGUgZnVuY3Rpb24gcGFyYW1ldGVycywgb3RoZXJ3aXNlIHRoZSBm
dW5jdGlvbiB3aWxsIHJldHVybiBmYWxzZS4gSXQgbWF5CisgICAgLy8gZmFpbCBkdWUgdG8gYSBz
dGFjayBvdmVyZmxvdyBpbiB0aGUgdW5kZXJseWluZyBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9u
LCBoYW5kbGluZworICAgIC8vIG9mIHN1Y2ggZXhjZXB0aW9uIGlzIHVwIHRvIHRoZSBjYWxsZXIu
CisgICAgc3RhdGljIGJvb2wgdG9wU3RhY2tGcmFtZShTdHJpbmcmIHNvdXJjZU5hbWUsIGludCYg
bGluZU51bWJlciwgU3RyaW5nJiBmdW5jdGlvbk5hbWUpOworCisgICAgc3RhdGljIHZvaWQgY3Jl
YXRlVXRpbGl0eUNvbnRleHQoKTsKKworICAgICAvLyBSZXR1cm5zIGEgbG9jYWwgaGFuZGxlIG9m
IHRoZSB1dGlsaXR5IGNvbnRleHQuCisgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
dXRpbGl0eUNvbnRleHQoKQorICAgIHsKKyAgICAgIGlmIChzX3V0aWxpdHlDb250ZXh0LklzRW1w
dHkoKSkKKyAgICAgICAgICBjcmVhdGVVdGlsaXR5Q29udGV4dCgpOworICAgICAgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhzX3V0aWxpdHlDb250ZXh0KTsKKyAgICB9CisKKyAg
ICBTY3JpcHRDYWxsRnJhbWUgbV9sYXN0Q2FsbGVyOworICAgIFNjcmlwdFN0YXRlKiBtX3Njcmlw
dFN0YXRlOworCisgICAgLy8gVXRpbGl0eSBjb250ZXh0IGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5j
dGlvbnMgdXNlZCBpbnRlcm5hbGx5LgorICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6Q29u
dGV4dD4gc191dGlsaXR5Q29udGV4dDsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHJldmlzaW9u
IDU4Nzc1KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gU2NyaXB0RGVidWdTZXJ2ZXI6OnNfdXRpbGl0eUNv
bnRleHQ7Ci0KIFNjcmlwdERlYnVnU2VydmVyOjpNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlciBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c19tZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlciA9IDA7CiAKIFNj
cmlwdERlYnVnU2VydmVyJiBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkKQEAgLTM1OCw2OSAr
MzU2LDYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVzdW1lKCkKICAgICBtX2V4ZWN1
dGlvblN0YXRlLmNsZWFyKCk7CiB9CiAKLS8vIENyZWF0ZSB0aGUgdXRpbGl0eSBjb250ZXh0IGZv
ciBob2xkaW5nIEphdmFTY3JpcHQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseQotLy8gd2hpY2gg
YXJlIG5vdCB2aXNpYmxlIHRvIEphdmFTY3JpcHQgZXhlY3V0aW5nIG9uIHRoZSBwYWdlLgotdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlVXRpbGl0eUNvbnRleHQoKQotewotICAgIEFTU0VS
VChzX3V0aWxpdHlDb250ZXh0LklzRW1wdHkoKSk7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUgc2Nv
cGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGdsb2JhbFRlbXBsYXRlID0g
djg6Ok9iamVjdFRlbXBsYXRlOjpOZXcoKTsKLSAgICBzX3V0aWxpdHlDb250ZXh0ID0gdjg6OkNv
bnRleHQ6Ok5ldygwLCBnbG9iYWxUZW1wbGF0ZSk7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNv
bnRleHRTY29wZShzX3V0aWxpdHlDb250ZXh0KTsKLQotICAgIC8vIENvbXBpbGUgSmF2YVNjcmlw
dCBmdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgc291cmNlIGxpbmUsIHRoZSBzb3VyY2UKLSAg
ICAvLyBuYW1lIGFuZCB0aGUgc3ltYm9sIG5hbWUgZm9yIHRoZSB0b3AgSmF2YVNjcmlwdCBzdGFj
ayBmcmFtZS4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IGNoYXIqLCB0b3BTdGFja0Zy
YW1lLAotICAgICAgICAoImZ1bmN0aW9uIHRvcFN0YWNrRnJhbWUoZXhlY19zdGF0ZSkgeyIKLSAg
ICAgICAgIiAgaWYgKCFleGVjX3N0YXRlLmZyYW1lQ291bnQoKSkiCi0gICAgICAgICIgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOyIKLSAgICAgICAgIiAgdmFyIGZyYW1lID0gZXhlY19zdGF0ZS5mcmFt
ZSgwKTsiCi0gICAgICAgICIgIHZhciBmdW5jID0gZnJhbWUuZnVuYygpOyIKLSAgICAgICAgIiAg
dmFyIHNjcmlwdE5hbWU7IgotICAgICAgICAiICBpZiAoZnVuYy5yZXNvbHZlZCgpICYmIGZ1bmMu
c2NyaXB0KCkpIgotICAgICAgICAiICAgICAgc2NyaXB0TmFtZSA9IGZ1bmMuc2NyaXB0KCkubmFt
ZSgpOyIKLSAgICAgICAgIiAgcmV0dXJuIFtzY3JpcHROYW1lLCBmcmFtZS5zb3VyY2VMaW5lKCks
IChmdW5jLm5hbWUoKSB8fCBmdW5jLmluZmVycmVkTmFtZSgpKV07IgotICAgICAgICAifSIpKTsK
LSAgICB2ODo6U2NyaXB0OjpDb21waWxlKHY4OjpTdHJpbmc6Ok5ldyh0b3BTdGFja0ZyYW1lKSkt
PlJ1bigpOwotfQotCi1ib29sIFNjcmlwdERlYnVnU2VydmVyOjp0b3BTdGFja0ZyYW1lKFN0cmlu
ZyYgc291cmNlTmFtZSwgaW50JiBsaW5lTnVtYmVyLCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSkKLXsK
LSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
djhVdGlsaXR5Q29udGV4dCA9IHV0aWxpdHlDb250ZXh0KCk7Ci0gICAgaWYgKHY4VXRpbGl0eUNv
bnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkNvbnRleHQ6
OlNjb3BlIGNvbnRleHRTY29wZSh2OFV0aWxpdHlDb250ZXh0KTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4gdG9wU3RhY2tGcmFtZTsKLSAgICB0b3BTdGFja0ZyYW1lID0gdjg6OkxvY2Fs
PHY4OjpGdW5jdGlvbj46OkNhc3QodjhVdGlsaXR5Q29udGV4dC0+R2xvYmFsKCktPkdldCh2ODo6
U3RyaW5nOjpOZXcoInRvcFN0YWNrRnJhbWUiKSkpOwotICAgIGlmICh0b3BTdGFja0ZyYW1lLklz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSA9IHY4OjpEZWJ1Zzo6Q2FsbCh0b3BTdGFja0ZyYW1lKTsKLSAgICBpZiAodmFsdWUu
SXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7ICAgIAotICAgIC8vIElmIHRoZXJlIGlz
IG5vIHRvcCBzdGFjayBmcmFtZSwgd2Ugc3RpbGwgcmV0dXJuIHN1Y2Nlc3MsIGJ1dCBmaWxsIHRo
ZSBpbnB1dCBwYXJhbXMgd2l0aCBkZWZhdWx0cy4KLSAgICBpZiAodmFsdWUtPklzVW5kZWZpbmVk
KCkpIHsKLSAgICAgIC8vIEZhbGxiYWNrIHRvIHNldHRpbmcgbGluZU51bWJlciB0byAwLCBhbmQg
c291cmNlIGFuZCBmdW5jdGlvbiBuYW1lIHRvICJ1bmRlZmluZWQiLgotICAgICAgc291cmNlTmFt
ZSA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7Ci0gICAgICBsaW5lTnVtYmVyID0gMDsKLSAgICAg
IGZ1bmN0aW9uTmFtZSA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7Ci0gICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgaWYgKCF2YWx1ZS0+SXNBcnJheSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGpzQXJyYXkgPSB2YWx1ZS0+VG9PYmplY3Qo
KTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBzb3VyY2VOYW1lVmFsdWUgPSBqc0FycmF5LT5H
ZXQoMCk7Ci0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGluZU51bWJlclZhbHVlID0ganNBcnJh
eS0+R2V0KDEpOwotICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGZ1bmN0aW9uTmFtZVZhbHVlID0g
anNBcnJheS0+R2V0KDIpOwotICAgIGlmIChzb3VyY2VOYW1lVmFsdWUuSXNFbXB0eSgpIHx8IGxp
bmVOdW1iZXJWYWx1ZS5Jc0VtcHR5KCkgfHwgZnVuY3Rpb25OYW1lVmFsdWUuSXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc291cmNlTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhz
b3VyY2VOYW1lVmFsdWUpOwotICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyVmFsdWUtPkludDMy
VmFsdWUoKTsKLSAgICBmdW5jdGlvbk5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rpb25OYW1l
VmFsdWUpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgJKHJldmlzaW9uIDU4Nzc1KQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNSAr
NTEsNiBAQCBjbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2
ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIHN0YXRpYyBTY3JpcHREZWJ1
Z1NlcnZlciYgc2hhcmVkKCk7Ci0gICAgCi0gICAgLy8gRnVuY3Rpb24gZm9yIHJldHJpZXZpbmcg
dGhlIHNvdXJjZSBuYW1lLCBsaW5lIG51bWJlciBhbmQgZnVuY3Rpb24gbmFtZSBmb3IgdGhlIHRv
cAotICAgIC8vIEphdmFTY3JpcHQgc3RhY2sgZnJhbWUuCi0gICAgLy8KLSAgICAvLyBJdCB3aWxs
IHJldHVybiB0cnVlIGlmIHRoZSBjYWxsZXIgaW5mb3JtYXRpb24gd2FzIHN1Y2Nlc3NmdWxseSBy
ZXRyaWV2ZWQgYW5kIHdyaXR0ZW4KLSAgICAvLyBpbnRvIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXJz
LCBvdGhlcndpc2UgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGZhbHNlLiBJdCBtYXkKLSAgICAv
LyBmYWlsIGR1ZSB0byBhIHN0YWNrIG92ZXJmbG93IGluIHRoZSB1bmRlcmx5aW5nIEphdmFTY3Jp
cHQgaW1wbGVtZW50YXRpb24sIGhhbmRsaW5nCi0gICAgLy8gb2Ygc3VjaCBleGNlcHRpb24gaXMg
dXAgdG8gdGhlIGNhbGxlci4KLSAgICBzdGF0aWMgYm9vbCB0b3BTdGFja0ZyYW1lKFN0cmluZyYg
c291cmNlTmFtZSwgaW50JiBsaW5lTnVtYmVyLCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSk7CiAKICAg
ICB2b2lkIGFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKik7CiAgICAgdm9p
ZCByZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOwpAQCAtMTEzLDE5
ICsxMDQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxl
ZCgpOwogICAgIHZvaWQgZGlkUmVzdW1lKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVVdGls
aXR5Q29udGV4dCgpOwotCi0gICAgLy8gUmV0dXJucyBhIGxvY2FsIGhhbmRsZSBvZiB0aGUgdXRp
bGl0eSBjb250ZXh0LgotICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHV0aWxpdHlD
b250ZXh0KCkKLSAgICB7Ci0gICAgICBpZiAoc191dGlsaXR5Q29udGV4dC5Jc0VtcHR5KCkpCi0g
ICAgICAgICAgY3JlYXRlVXRpbGl0eUNvbnRleHQoKTsKLSAgICAgIHJldHVybiB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+OjpOZXcoc191dGlsaXR5Q29udGV4dCk7Ci0gICAgfQotCi0gICAgLy8gVXRp
bGl0eSBjb250ZXh0IGhvbGRpbmcgSmF2YVNjcmlwdCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5
LgotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gc191dGlsaXR5Q29udGV4
dDsKLQogICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgU2NyaXB0RGVidWdMaXN0ZW5lcio+IExp
c3RlbmVyc01hcDsKICAgICBMaXN0ZW5lcnNNYXAgbV9saXN0ZW5lcnNNYXA7CiAgICAgU3RyaW5n
IG1fZGVidWdnZXJTY3JpcHRTb3VyY2U7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>