<?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>94593</bug_id>
          
          <creation_ts>2012-08-21 06:04:01 -0700</creation_ts>
          <short_desc>[V8] Move context() from V8Proxy to ScriptController</short_desc>
          <delta_ts>2012-08-22 15:51: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>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>
          
          <blocked>85330</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>700680</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 06:04:01 -0700</bug_when>
    <thetext>To kill V8Proxy, we can move context() from V8Proxy to ScriptController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700700</commentid>
    <comment_count>1</comment_count>
      <attachid>159677</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 06:35:58 -0700</bug_when>
    <thetext>Created attachment 159677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700792</commentid>
    <comment_count>2</comment_count>
      <attachid>159677</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-21 08:30:11 -0700</bug_when>
    <thetext>Comment on attachment 159677
Patch

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

Let&apos;s iterate on this patch for a bit.  I wonder if we can get rid of ScriptController::context entirely and use the less-magical frame-&gt;script()-&gt;context(), which we might want to rename to contextForCurrentWorld() to mirror contextForMainWorld().

&gt; Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp:194
&gt; -        context = proxy-&gt;context();
&gt; +        context = proxy-&gt;frame()-&gt;script()-&gt;context();

We should re-write this function to not use V8Proxy anymore.

&gt; Source/WebCore/bindings/v8/ScriptController.cpp:379
&gt; +v8::Local&lt;v8::Context&gt; ScriptController::context(Frame* frame)

How is this function different from:

return frame ? frame-&gt;script()-&gt;context() : v8::Local&lt;v8::Context&gt;();

?

&gt; Source/WebCore/bindings/v8/V8DOMWrapper.cpp:138
&gt; -    v8::Handle&lt;v8::Context&gt; context = V8Proxy::context(frame);
&gt; +    v8::Handle&lt;v8::Context&gt; context = ScriptController::context(frame);

We already know that frame is non-0 at this point, so can&apos;t we just use frame-&gt;script()-&gt;context() ?

&gt; Source/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:156
&gt; -    v8::Local&lt;v8::Context&gt; context = V8Proxy::context(frame);
&gt; +    v8::Local&lt;v8::Context&gt; context = ScriptController::context(frame);

Here we also know that frame is non-0 because shouldAllowAccessToFrame returns false for 0 frames.

&gt; Source/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:177
&gt; -    v8::Local&lt;v8::Context&gt; context = V8Proxy::context(frame);
&gt; +    v8::Local&lt;v8::Context&gt; context = ScriptController::context(frame);

Ditto

&gt; Source/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp:623
&gt; -    v8::Handle&lt;v8::Context&gt; context = V8Proxy::context(frame);
&gt; +    v8::Handle&lt;v8::Context&gt; context = ScriptController::context(frame);

Here also frame is non-0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701519</commentid>
    <comment_count>3</comment_count>
      <attachid>159849</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 20:11:30 -0700</bug_when>
    <thetext>Created attachment 159849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701529</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 20:15:09 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebCore/bindings/v8/ScriptController.cpp:379
&gt; &gt; +v8::Local&lt;v8::Context&gt; ScriptController::context(Frame* frame)
&gt; 
&gt; How is this function different from:
&gt; 
&gt; return frame ? frame-&gt;script()-&gt;context() : v8::Local&lt;v8::Context&gt;();

Same.

- I removed ScriptController::context(Frame*).

- I renamed ScriptController::context() to ScriptController::currentWorldContext().

- I used frame-&gt;script()-&gt;currentWorldContext() where frame exists. I used frame ? frame-&gt;script()-&gt;currentWorldContext() : v8::Local&lt;v8::Context&gt;() where frame might not exist.


&gt; &gt; Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp:194
&gt; &gt; -        context = proxy-&gt;context();
&gt; &gt; +        context = proxy-&gt;frame()-&gt;script()-&gt;context();
&gt; 
&gt; We should re-write this function to not use V8Proxy anymore.

I found that simple rewriting crashes a couple of tests. Let me work on it in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702127</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 11:50:41 -0700</bug_when>
    <thetext>&gt; I found that simple rewriting crashes a couple of tests. Let me work on it in a follow-up patch.

Sounds good.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702131</commentid>
    <comment_count>6</comment_count>
      <attachid>159849</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-22 11:53:43 -0700</bug_when>
    <thetext>Comment on attachment 159849
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptController.h:159
&gt;      static v8::Local&lt;v8::Context&gt; mainWorldContext(Frame*);

This is another function we should consider removing in a similar way.  (In a later patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702428</commentid>
    <comment_count>7</comment_count>
      <attachid>159849</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 15:28:31 -0700</bug_when>
    <thetext>Comment on attachment 159849
Patch

Rejecting attachment 159849 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Reduce Font.h includes across project -- improves RenderObject.h compile time

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.

Full output: http://queues.webkit.org/results/13571386</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702477</commentid>
    <comment_count>8</comment_count>
      <attachid>159849</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 15:51:55 -0700</bug_when>
    <thetext>Comment on attachment 159849
Patch

Clearing flags on attachment: 159849

Committed r126363: &lt;http://trac.webkit.org/changeset/126363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702478</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 15:51:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159677</attachid>
            <date>2012-08-21 06:35:58 -0700</date>
            <delta_ts>2012-08-21 20:11:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94593-20120821223517.patch</filename>
            <type>text/plain</type>
            <size>17558</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFhNTc1ZmE1OGUzOWM3
NmZjZjNmOTY1Y2ZhMmYwZTM3ZDY5ZWM0NC4uYjAzNTFlMTZiMWQxYWU5MzViMTYxMzhkYzYxMmU1
N2U3NTM0OWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTIxICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgY29u
dGV4dCgpIGZyb20gVjhQcm94eSB0byBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDU5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGtpbGwgVjhQcm94eSwgd2UgY2FuIG1v
dmUgY29udGV4dCgpIGZyb20gVjhQcm94eSB0byBTY3JpcHRDb250cm9sbGVyLgorCisgICAgICAg
IE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlVG9WOENvbnZlcnRl
cnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp3cmFw
U2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6d3JhcFNsb3cpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlbldpbmRvd1JlZmVyZW5jZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94
eS5oOgorICAgICAgICAoVjhQcm94eSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1NldFRpbWVvdXRJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yU2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpYWxvZ0hhbmRsZXI6OmRpYWxvZ0NyZWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpvcGVu
Q2FsbGJhY2spOgorCiAyMDEyLTA4LTE3ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5u
QG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIFJFR1JFU1NJT04ocjEyNTQyOCk6IGZhc3QvcHJv
ZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLmh0bWwgZmFpbHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggM2Q0MmJhYTk3MWEzOTZiODlmM2NhZTRhNTcwYjFmNzQ5MWY1
OTdjNi4uNzM2ZTQxZjc0Y2UzNjdmNzgzMjg3MTZjMTI0NGI0OWQxOTk0ODFlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0yMSAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBNb3ZlIGNvbnRleHQo
KSBmcm9tIFY4UHJveHkgdG8gU2NyaXB0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ1OTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBraWxsIFY4UHJveHksIHdlIGNhbiBtb3ZlIGNv
bnRleHQoKSBmcm9tIFY4UHJveHkgdG8gU2NyaXB0Q29udHJvbGxlci4KKworICAgICAgICBObyB0
ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogc3JjL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50SW1wbDo6d2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgICogc3JjL1dlYkRldlRv
b2xzRnJvbnRlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVu
ZEltcGw6OmRpc3BhdGNoT25JbnNwZWN0b3JGcm9udGVuZCk6CisKIDIwMTItMDgtMjAgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bS13aW5dIFVz
ZSBuYXRpdmUgZGlnaXRzIGluIHBhcnNpbmcvZm9ybWF0dGluZyBkYXRlcyBpbiB0aGUgdGV4dGZp
ZWxkIHBhcnQgb2YgaW5wdXRbdHlwZT1kYXRlXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAyYzE3MGUyYzkyNDA4NWMwNjA2
NDM2ZjIwN2YwOTI2YWJiYTAzNmZhLi41OWE3NjM1NTE3MGNjYWUyODgzY2QwNGJjZmE2ZDhkYjhk
Y2EzMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQpAQCAtMzM5Nyw3ICszMzk3LDcgQEAgRU5ECiAgICAgaWYgKHByb3h5ICYm
ICFwcm94eS0+bWF0Y2hlc0N1cnJlbnRDb250ZXh0KCkpIHsKICAgICAgICAgLy8gRm9yIHBlcmZv
cm1hbmNlLCB3ZSBlbnRlciB0aGUgY29udGV4dCBvbmx5IGlmIHRoZSBjdXJyZW50bHkgcnVubmlu
ZyBjb250ZXh0CiAgICAgICAgIC8vIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjb250ZXh0IHRoYXQg
d2UgYXJlIGFib3V0IHRvIGVudGVyLgotICAgICAgICBjb250ZXh0ID0gcHJveHktPmNvbnRleHQo
KTsKKyAgICAgICAgY29udGV4dCA9IHByb3h5LT5mcmFtZSgpLT5zY3JpcHQoKS0+Y29udGV4dCgp
OwogICAgICAgICBpZiAoIWNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGV4dC0+
RW50ZXIoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDg2
YjFmZDJjODYzMTZjNjhjZjQ4YmNiOTU4MjMzNzA2Y2YzYjM2OTQuLmQyYzcyYTJjMWE3MDczNGFj
ZTQxOTM0YmVjYTdiYmNiMjIyN2RhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RBY3Rp
dmVET01PYmplY3Q6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEFjdGl2ZURPTU8KICAgICBpZiAo
cHJveHkgJiYgIXByb3h5LT5tYXRjaGVzQ3VycmVudENvbnRleHQoKSkgewogICAgICAgICAvLyBG
b3IgcGVyZm9ybWFuY2UsIHdlIGVudGVyIHRoZSBjb250ZXh0IG9ubHkgaWYgdGhlIGN1cnJlbnRs
eSBydW5uaW5nIGNvbnRleHQKICAgICAgICAgLy8gaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnRl
eHQgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50ZXIuCi0gICAgICAgIGNvbnRleHQgPSBwcm94eS0+
Y29udGV4dCgpOworICAgICAgICBjb250ZXh0ID0gcHJveHktPmZyYW1lKCktPnNjcmlwdCgpLT5j
b250ZXh0KCk7CiAgICAgICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250ZXh0LT5FbnRlcigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCA3YjM4MGEwMGE3MDkxOTYw
MDAyYWFjOGE5NjI5ZjgzYjQ0M2NmZTliLi5jMjc2YTZiYzBkNDEwYmFjZDU0Nzg0NTM3M2NlYjBl
MjZlYzljZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBWOFRlc3ROb2RlOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3ROb2RlPiBpbXBs
LCB2ODo6SXNvbGEKICAgICBpZiAocHJveHkgJiYgIXByb3h5LT5tYXRjaGVzQ3VycmVudENvbnRl
eHQoKSkgewogICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UsIHdlIGVudGVyIHRoZSBjb250ZXh0
IG9ubHkgaWYgdGhlIGN1cnJlbnRseSBydW5uaW5nIGNvbnRleHQKICAgICAgICAgLy8gaXMgZGlm
ZmVyZW50IGZyb20gdGhlIGNvbnRleHQgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50ZXIuCi0gICAg
ICAgIGNvbnRleHQgPSBwcm94eS0+Y29udGV4dCgpOworICAgICAgICBjb250ZXh0ID0gcHJveHkt
PmZyYW1lKCktPnNjcmlwdCgpLT5jb250ZXh0KCk7CiAgICAgICAgIGlmICghY29udGV4dC5Jc0Vt
cHR5KCkpCiAgICAgICAgICAgICBjb250ZXh0LT5FbnRlcigpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggOTk1NWNhOTA3
MGYxMzBiODI0YmMzMzM4NGQ5ZjRmOGJiMjRkNzFkMi4uYzE4ZDcwYjc0NzViMzE3MzM3NDlmYjQ4
NzkyODFjZDA4MTgxNzkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTM3Niw2ICszNzYsMzIgQEAgdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpmaW5pc2hlZFdpdGhFdmVudChFdmVudCogZXZlbnQpCiAgICAgbV9wcm94eS0+ZmluaXNo
ZWRXaXRoRXZlbnQoZXZlbnQpOwogfQogCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFNjcmlwdENv
bnRyb2xsZXI6OmNvbnRleHQoRnJhbWUqIGZyYW1lKQoreworICAgIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gY29udGV4dCA9IFNjcmlwdENvbnRyb2xsZXI6Om1haW5Xb3JsZENvbnRleHQoZnJhbWUp
OworICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4oKTsKKworICAgIGlmIChWOElzb2xhdGVkQ29udGV4dCogaXNvbGF0ZWRDb250
ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKSkgeworICAgICAgICBjb250ZXh0
ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGlzb2xhdGVkQ29udGV4dC0+Y29udGV4dCgp
KTsKKyAgICAgICAgaWYgKGZyYW1lICE9IHRvRnJhbWVJZk5vdERldGFjaGVkKGNvbnRleHQpKQor
ICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gY29udGV4dDsKK30KKwordjg6OkxvY2FsPHY4OjpDb250ZXh0PiBTY3JpcHRDb250
cm9sbGVyOjpjb250ZXh0KCkKK3sKKyAgICBpZiAoVjhJc29sYXRlZENvbnRleHQqIGlzb2xhdGVk
Q29udGV4dCA9IFY4SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCkpIHsKKyAgICAgICAgUmVm
UHRyPFNoYXJlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+ID4gY29udGV4dCA9IGlzb2xhdGVkQ29u
dGV4dC0+c2hhcmVkQ29udGV4dCgpOworICAgICAgICBpZiAobV9mcmFtZSAhPSB0b0ZyYW1lSWZO
b3REZXRhY2hlZChjb250ZXh0LT5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PigpOworICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6
TmV3KGNvbnRleHQtPmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1haW5Xb3JsZENvbnRleHQo
KTsKK30KKwogdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBTY3JpcHRDb250cm9sbGVyOjptYWluV29y
bGRDb250ZXh0KCkKIHsKICAgICB3aW5kb3dTaGVsbCgpLT5pbml0Q29udGV4dElmTmVlZGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXgg
ZGE2ZWY5MmRiZmM0Nzg4MGE0NmM5NWNiM2Y5OGUzNzUyYzg3ZjMyNi4uYjlmYjBmMzE1MWM4NjVk
Yzk2OTUwYTI3MTExYmUwODUwNjJhOTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTU4LDYgKzE1OCw4IEBAIHB1YmxpYzoKIAogICAg
IC8vIFJldHVybnMgVjggQ29udGV4dCBvZiBhIGZyYW1lLiBJZiBub25lIGV4aXN0cywgY3JlYXRl
cwogICAgIC8vIGEgbmV3IGNvbnRleHQuIEl0IGlzIHBvdGVudGlhbGx5IHNsb3cgYW5kIGNvbnN1
bWVzIG1lbW9yeS4KKyAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KEZy
YW1lKik7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KCk7CiAgICAgc3RhdGlj
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkQ29udGV4dChGcmFtZSopOwogICAgIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCAzMWZmMzFkYTNkMDgyOGEyNmE5
NGM3ZGQ4YTI2ZTNkN2FlMzFjMGY0Li43Yjk4MDMzYzY3OWFjMTAxZDUyZjY0NTg2MzM4ZjJlOWI2
MTVhYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
QEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRIaWRkZW5XaW5k
b3dSZWZlcmVuY2UoRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBuYW1lLAogICAgIC8vIEdldCBE
T01XaW5kb3cKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47IC8vIE9iamVjdCBtaWdo
dCBiZSBkZXRhY2hlZCBmcm9tIHdpbmRvdwotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNv
bnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjb250ZXh0ID0gU2NyaXB0Q29udHJvbGxlcjo6Y29udGV4dChmcmFtZSk7CiAgICAgaWYg
KGNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5jcHAKaW5kZXggYjFhMGZhMGE0MDAwZTU0YmE0NWFiZDBiYzJiOTRlN2Q3
YzNmNjRiNC4uZWM1MzBjYzI1NDU5MmM3NDk3NDMyMmJkMWRiNjE3NzQyNTE5OTRlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTIzOCwzMiArMjM4LDYgQEAgVjhE
T01XaW5kb3dTaGVsbCogVjhQcm94eTo6d2luZG93U2hlbGwoKSBjb25zdAogICAgIHJldHVybiBm
cmFtZSgpLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKTsKIH0KIAotdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBWOFByb3h5Ojpjb250ZXh0KEZyYW1lKiBmcmFtZSkKLXsKLSAgICB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IGNvbnRleHQgPSBTY3JpcHRDb250cm9sbGVyOjptYWluV29ybGRDb250ZXh0KGZy
YW1lKTsKLSAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+KCk7Ci0KLSAgICBpZiAoVjhJc29sYXRlZENvbnRleHQqIGlzb2xhdGVk
Q29udGV4dCA9IFY4SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCkpIHsKLSAgICAgICAgY29u
dGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhpc29sYXRlZENvbnRleHQtPmNvbnRl
eHQoKSk7Ci0gICAgICAgIGlmIChmcmFtZSAhPSB0b0ZyYW1lSWZOb3REZXRhY2hlZChjb250ZXh0
KSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGNvbnRleHQ7Ci19Ci0KLXY4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94
eTo6Y29udGV4dCgpCi17Ci0gICAgaWYgKFY4SXNvbGF0ZWRDb250ZXh0KiBpc29sYXRlZENvbnRl
eHQgPSBWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJlZCgpKSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiA+IGNvbnRleHQgPSBpc29sYXRlZENvbnRleHQt
PnNoYXJlZENvbnRleHQoKTsKLSAgICAgICAgaWYgKG1fZnJhbWUgIT0gdG9GcmFtZUlmTm90RGV0
YWNoZWQoY29udGV4dC0+Z2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
Q29udGV4dD4oKTsKLSAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhj
b250ZXh0LT5nZXQoKSk7Ci0gICAgfQotICAgIHJldHVybiBmcmFtZSgpLT5zY3JpcHQoKS0+bWFp
bldvcmxkQ29udGV4dCgpOwotfQotCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFY4UHJveHk6Omlz
b2xhdGVkV29ybGRDb250ZXh0KGludCB3b3JsZElkKQogewogICAgIElzb2xhdGVkV29ybGRNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtX2lzb2xhdGVkV29ybGRzLmZpbmQod29ybGRJZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKaW5kZXggMWUzZDY3YjQ2ODdlZDYwMmFlYmYyYmJjYjk5
NzhlYmQzOTgxZGNlYi4uM2JkNDYzN2JiN2VlZDg5M2NjMzQ5ZTQ4OGU4M2M3OTE2NmFlOWY2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAtMTAwLDEzICsxMDAsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIGFzIGNvbnN0
cnVjdG9yIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4KICAgICAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gbmV3SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCBpbnQgYXJnYywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7CiAKLSAgICAgICAgLy8gUmV0dXJucyBWOCBDb250
ZXh0IG9mIGEgZnJhbWUuIElmIG5vbmUgZXhpc3RzLCBjcmVhdGVzCi0gICAgICAgIC8vIGEgbmV3
IGNvbnRleHQuIEl0IGlzIHBvdGVudGlhbGx5IHNsb3cgYW5kIGNvbnN1bWVzIG1lbW9yeS4KLSAg
ICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dChGcmFtZSopOwotCiAg
ICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVTY3JpcHQodjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiBjb2RlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBUZXh0
UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24sIHY4OjpTY3JpcHREYXRhKiA9IDApOwogCi0g
ICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCgpOwogICAgICAgICB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGlzb2xhdGVkV29ybGRDb250ZXh0KGludCB3b3JsZElkKTsKICAgICAg
ICAgYm9vbCBtYXRjaGVzQ3VycmVudENvbnRleHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggYjhh
YTRmYWNlOTZiN2VlOTkxODNmNWYxOTRmNzE4NGQ3YWEwZWVlYS4uMGQ4NDQwYTYzMDc5NzhlODgx
ZGVhNDVkMmYwN2ViMWY1ZTAxMzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MSw3ICs2MSw2IEBA
CiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOEhUTUxDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2lu
Y2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KQEAgLTEyMSw3ICsxMjAsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywg
Ym9vbCBzaW5nbAogICAgICAgICB9CiAKICAgICAgICAgLy8gcGFyYW1zIGlzIHBhc3NlZCB0byBh
Y3Rpb24sIGFuZCByZWxlYXNlZCBpbiBhY3Rpb24ncyBkZXN0cnVjdG9yCi0gICAgICAgIE93blB0
cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rpb24o
VjhQcm94eTo6Y29udGV4dChpbXAtPmZyYW1lKCkpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46
OkNhc3QoZnVuY3Rpb24pLCBwYXJhbUNvdW50LCBwYXJhbXMpKTsKKyAgICAgICAgT3duUHRyPFNj
aGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gYWRvcHRQdHIobmV3IFNjaGVkdWxlZEFjdGlvbihTY3Jp
cHRDb250cm9sbGVyOjpjb250ZXh0KGltcC0+ZnJhbWUoKSksIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPjo6Q2FzdChmdW5jdGlvbiksIHBhcmFtQ291bnQsIHBhcmFtcykpOwogCiAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXNlIE93bkFycmF5UHRyIGZvciBwYXJhbXMuCiAgICAgICAgIGRl
bGV0ZVtdIHBhcmFtczsKQEAgLTEzMSw3ICsxMzAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
V2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5n
bAogICAgICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKCkpOwogICAgICAgICBpZiAoaW1wLT5kb2N1bWVudCgpICYm
ICFpbXAtPmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0V2YWwoY2Fs
bFN0YWNrLnJlbGVhc2UoKSkpCiAgICAgICAgICAgICByZXR1cm4gdjhJbnRlZ2VyKDAsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgaWQgPSBET01UaW1lcjo6aW5zdGFsbChzY3JpcHRDb250
ZXh0LCBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9uKFY4UHJveHk6OmNvbnRleHQoaW1wLT5m
cmFtZSgpKSwgZnVuY3Rpb25TdHJpbmcpKSwgdGltZW91dCwgc2luZ2xlU2hvdCk7CisgICAgICAg
IGlkID0gRE9NVGltZXI6Omluc3RhbGwoc2NyaXB0Q29udGV4dCwgYWRvcHRQdHIobmV3IFNjaGVk
dWxlZEFjdGlvbihTY3JpcHRDb250cm9sbGVyOjpjb250ZXh0KGltcC0+ZnJhbWUoKSksIGZ1bmN0
aW9uU3RyaW5nKSksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogICAgIH0KIAogICAgIC8vIFRyeSB0
byBkbyB0aGUgaWRsZSBub3RpZmljYXRpb24gYmVmb3JlIHRoZSB0aW1lb3V0IGV4cGlyZXMgdG8g
Z2V0IGJldHRlcgpAQCAtMTU0LDcgKzE1Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5n
U3RhdGU6Omluc3RhbmNlKCksIGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIAotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IFY4UHJveHk6OmNvbnRl
eHQoZnJhbWUpOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IFNjcmlwdENv
bnRyb2xsZXI6OmNvbnRleHQoZnJhbWUpOwogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIApAQCAtMTc1LDcgKzE3NCw3IEBAIHZvaWQg
VjhET01XaW5kb3c6OmV2ZW50QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93
QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGZyYW1lKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6
Y29udGV4dChmcmFtZSk7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gU2Ny
aXB0Q29udHJvbGxlcjo6Y29udGV4dChmcmFtZSk7CiAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTQwMiw3ICs0MDEsNyBAQCBwcml2YXRlOgogCiBpbmxp
bmUgdm9pZCBEaWFsb2dIYW5kbGVyOjpkaWFsb2dDcmVhdGVkKERPTVdpbmRvdyogZGlhbG9nRnJh
bWUpCiB7Ci0gICAgbV9kaWFsb2dDb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChkaWFsb2dGcmFt
ZS0+ZnJhbWUoKSk7CisgICAgbV9kaWFsb2dDb250ZXh0ID0gU2NyaXB0Q29udHJvbGxlcjo6Y29u
dGV4dChkaWFsb2dGcmFtZS0+ZnJhbWUoKSk7CiAgICAgaWYgKG1fZGlhbG9nQ29udGV4dC5Jc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9kaWFsb2dBcmd1bWVudHMuSXNFbXB0
eSgpKQpAQCAtNjIxLDcgKzYyMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERPTVdp
bmRvdyogd2luZG93LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB9CiAKICAgICAvLyBPdGhl
cndpc2UsIHJldHVybiB0aGUgZ2xvYmFsIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBmcmFt
ZS4KLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4
dChmcmFtZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IFNjcmlwdENv
bnRyb2xsZXI6OmNvbnRleHQoZnJhbWUpOwogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGZi
ODAxYTc2MTQ0MjNjNTE1NjIyZWJiNjQxNDQ0M2IwY2QwMjAwM2EuLjEzNjYwZTFiYWFjNGUwOGU5
NzIwZTQzYThmMjhlNzEwM2FlZDhiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDQsNyAr
NDQsNiBAQAogI2luY2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOElzb2xh
dGVkQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIK
ICNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgpAQCAtMTQyLDcgKzE0MSw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6b3BlbkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7CiAg
ICAgICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gaHRtbERvY3VtZW50LT5mcmFtZSgpKSB7
CiAgICAgICAgICAgICAvLyBGZXRjaCB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgdGhlIGZyYW1lLgot
ICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29u
dGV4dChmcmFtZS5nZXQoKSk7CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNv
bnRleHQgPSBTY3JpcHRDb250cm9sbGVyOjpjb250ZXh0KGZyYW1lLmdldCgpKTsKICAgICAgICAg
ICAgIC8vIEJhaWwgb3V0IGlmIHdlIGNhbm5vdCBnZXQgdGhlIGNvbnRleHQuCiAgICAgICAgICAg
ICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwCmluZGV4IDAzMzhkM2YyZGViOTNmYTVkOGVkYTEw
ODczOTY5NWJhZmVhMDUzZWUuLjFlNmY4Yjg3N2MxOTJjMGU0OWVlZmQ2N2I3ODQ5M2MwZGQyNTc5
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kSG9zdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJW
OEluc3BlY3RvckZyb250ZW5kSG9zdC5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRl
ICJXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNGcm9u
dGVuZEltcGwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCkBAIC02Myw3
ICs2Myw3IEBAIEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6fkluc3BlY3RvckZyb250ZW5k
Q2xpZW50SW1wbCgpCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6d2luZG93T2Jq
ZWN0Q2xlYXJlZCgpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGZyYW1lQ29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQobV9m
cm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBm
cmFtZUNvbnRleHQgPSBTY3JpcHRDb250cm9sbGVyOjpjb250ZXh0KG1fZnJvbnRlbmRQYWdlLT5t
YWluRnJhbWUoKSk7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShmcmFtZUNv
bnRleHQpOwogCiAgICAgQVNTRVJUKCFtX2Zyb250ZW5kSG9zdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAKaW5kZXgg
OTQxOGMwZGMwZDNkZTVkNTZhNDVlMDg1YWQ2NTVhMWZmMzQwY2RmOC4uYmNjOGM5NDRiY2VkMDBl
YTQyMzcyMjYzNjk0MzQ5NTJiZjU4YTdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcApAQCAtNDQsNiArNDQsNyBA
QAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgpAQCAtNTEsNyArNTIsNiBAQAogI2luY2x1ZGUgIlY4SW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmgiCiAjaW5jbHVkZSAiVjhNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgi
Ci0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5o
IgpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViRGV2VG9vbHNGcm9udGVuZEltcGw6OmRpc3Bh
dGNoT25JbnNwZWN0b3JGcm9udGVuZChjb25zdCBXZWJTdHJpbmcmIG1lc3NhCiB7CiAgICAgV2Vi
RnJhbWVJbXBsKiBmcmFtZSA9IG1fd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKTsKICAgICB2
ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gZnJhbWVD
b250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZS0+ZnJhbWUoKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gZnJhbWVDb250ZXh0ID0gU2NyaXB0Q29udHJvbGxlcjo6Y29udGV4dChm
cmFtZS0+ZnJhbWUoKSk7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShmcmFt
ZUNvbnRleHQpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbnNwZWN0b3JCYWNrZW5kVmFs
dWUgPSBmcmFtZUNvbnRleHQtPkdsb2JhbCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJJbnNwZWN0
b3JCYWNrZW5kIikpOwogICAgIGlmICghaW5zcGVjdG9yQmFja2VuZFZhbHVlLT5Jc09iamVjdCgp
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159849</attachid>
            <date>2012-08-21 20:11:30 -0700</date>
            <delta_ts>2012-08-22 15:51:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94593-20120822121128.patch</filename>
            <type>text/plain</type>
            <size>17662</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZkMzQyMTI1OWI0YTFk
ZWE4YjI3ZTEwZjZhYTFjM2UzZjBlZGY2Ni4uM2ExMzc5YmRkMmRjNGM4OTQxZmE0MzczNjM3ZmM4
YjJmOGZjNGE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA4LTIxICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgY29u
dGV4dCgpIGZyb20gVjhQcm94eSB0byBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDU5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gVGhpcyBwYXRjaCByZW1vdmVzIFY4UHJv
eHk6OmNvbnRleHQoRnJhbWUqKS4KKyAgICAgICAgLSBUaGlzIHBhdGNoIG1vdmVzIFY4UHJveHk6
OmNvbnRleHQoKSB0byBTY3JpcHRDb250cm9sbGVyOjpjb250ZXh0KCkuCisgICAgICAgIC0gVGhp
cyBwYXRjaCByZW5hbWVzIFNjcmlwdENvbnRyb2xsZXI6OmNvbnRleHQoKSB0byBTY3JpcHRDb250
cm9sbGVyOjpjdXJyZW50V29ybGRDb250ZXh0KCksCisgICAgICAgIGZvciBuYW1pbmcgY29uc2lz
dGVuY3kgd2l0aCBTY3JpcHRDb250cm9sbGVyOjptYWludFdvcmxkQ29udGV4dCgpLgorCisgICAg
ICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlVG9WOENvbnZl
cnRlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVE
T01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp3
cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6d3JhcFNsb3cpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlbldpbmRvd1JlZmVyZW5jZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQ
cm94eS5oOgorICAgICAgICAoVjhQcm94eSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1NldFRpbWVv
dXRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpYWxvZ0hhbmRsZXI6OmRpYWxvZ0NyZWF0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojpv
cGVuQ2FsbGJhY2spOgorCiAyMDEyLTA4LTIwICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbVjhdIFJlbW92ZSBnZXRUb1N0cmluZ05hbWUoKSBhbmQgZ2V0
VG9TdHJpbmdUZW1wbGF0ZSgpIGZyb20gVjhCaW5kaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDE4MTA2ODQ1ZTA2NDEyMzgzNzE2ZWI2M2QxZDNjMjg1NTA2NTVhOWUuLmRlZjdkOWUw
NjA0MTFmZjVmZmY3NjdiMmYwMWQ2ODMyY2VhMTE1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMjEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtWOF0gTW92ZSBjb250ZXh0KCkgZnJvbSBWOFByb3h5
IHRvIFNjcmlwdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk0NTkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVG8ga2lsbCBWOFByb3h5LCB3ZSBjYW4gbW92ZSBjb250ZXh0KCkgZnJvbSBW
OFByb3h5IHRvIFNjcmlwdENvbnRyb2xsZXIuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHNyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6Ondp
bmRvd09iamVjdENsZWFyZWQpOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzRnJvbnRlbmRJbXBsOjpkaXNwYXRj
aE9uSW5zcGVjdG9yRnJvbnRlbmQpOgorCiAyMDEyLTA4LTIxICBMZWFuZHJvIEdyYWNpYSBHaWwg
IDxsZWFuZHJvZ3JhY2lhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZpbmQt
aW4tcGFnZSBjb29yZGluYXRlcyBzaG91bGQgdXNlIGNvbnRhaW5pbmdCbG9jawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAz
MDBhMzY1YmUzN2ZjY2EzMjA1ZjQyMDEwOTZhMDU2YjE1MDFjZTQ0Li5hYTdkOTVkMjhiZGIxYmNh
MWVkYjUzYTVlMzU4MzFhODEyNzIwMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzM5Nyw3ICszMzk3LDcgQEAgRU5E
CiAgICAgaWYgKHByb3h5ICYmICFwcm94eS0+bWF0Y2hlc0N1cnJlbnRDb250ZXh0KCkpIHsKICAg
ICAgICAgLy8gRm9yIHBlcmZvcm1hbmNlLCB3ZSBlbnRlciB0aGUgY29udGV4dCBvbmx5IGlmIHRo
ZSBjdXJyZW50bHkgcnVubmluZyBjb250ZXh0CiAgICAgICAgIC8vIGlzIGRpZmZlcmVudCBmcm9t
IHRoZSBjb250ZXh0IHRoYXQgd2UgYXJlIGFib3V0IHRvIGVudGVyLgotICAgICAgICBjb250ZXh0
ID0gcHJveHktPmNvbnRleHQoKTsKKyAgICAgICAgY29udGV4dCA9IHByb3h5LT5mcmFtZSgpLT5z
Y3JpcHQoKS0+Y3VycmVudFdvcmxkQ29udGV4dCgpOwogICAgICAgICBpZiAoIWNvbnRleHQuSXNF
bXB0eSgpKQogICAgICAgICAgICAgY29udGV4dC0+RW50ZXIoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDY1M2ViMWU0MmIzMjEwM2IwNWI0MWU0NzEyNDhk
ZDFjZmYyMjNjNzAuLmI1M2M1NTBiOTg5YjZmZDU2MWZhYjE4ZmQ3Mjc4MzNlMWY3ZDdjM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OndyYXBTbG93KFBhc3NS
ZWZQdHI8VGVzdEFjdGl2ZURPTU8KICAgICBpZiAocHJveHkgJiYgIXByb3h5LT5tYXRjaGVzQ3Vy
cmVudENvbnRleHQoKSkgewogICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UsIHdlIGVudGVyIHRo
ZSBjb250ZXh0IG9ubHkgaWYgdGhlIGN1cnJlbnRseSBydW5uaW5nIGNvbnRleHQKICAgICAgICAg
Ly8gaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnRleHQgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50
ZXIuCi0gICAgICAgIGNvbnRleHQgPSBwcm94eS0+Y29udGV4dCgpOworICAgICAgICBjb250ZXh0
ID0gcHJveHktPmZyYW1lKCktPnNjcmlwdCgpLT5jdXJyZW50V29ybGRDb250ZXh0KCk7CiAgICAg
ICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250ZXh0LT5FbnRlcigp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCBjMmExMDlmMDViMGI0MTMxMjY5YzNmOWMwNmE0NGIw
NTY5YTA1ODA5Li45M2MyNjdmOTk4ZWMzM2JmOTUzZGM3ZmEwZDc0NjM2MzhmOWJiNzZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5vZGUuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRl
c3ROb2RlOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3ROb2RlPiBpbXBsLCB2ODo6SXNvbGEKICAg
ICBpZiAocHJveHkgJiYgIXByb3h5LT5tYXRjaGVzQ3VycmVudENvbnRleHQoKSkgewogICAgICAg
ICAvLyBGb3IgcGVyZm9ybWFuY2UsIHdlIGVudGVyIHRoZSBjb250ZXh0IG9ubHkgaWYgdGhlIGN1
cnJlbnRseSBydW5uaW5nIGNvbnRleHQKICAgICAgICAgLy8gaXMgZGlmZmVyZW50IGZyb20gdGhl
IGNvbnRleHQgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50ZXIuCi0gICAgICAgIGNvbnRleHQgPSBw
cm94eS0+Y29udGV4dCgpOworICAgICAgICBjb250ZXh0ID0gcHJveHktPmZyYW1lKCktPnNjcmlw
dCgpLT5jdXJyZW50V29ybGRDb250ZXh0KCk7CiAgICAgICAgIGlmICghY29udGV4dC5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICBjb250ZXh0LT5FbnRlcigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggOTk1NWNhOTA3MGYx
MzBiODI0YmMzMzM4NGQ5ZjRmOGJiMjRkNzFkMi4uZjkzYWEwZTUxMDMyYjFjODhhZWFkZWU1NzRl
OGIwOGFmOTBlMzY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTM3Niw2ICszNzYsMTcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVy
OjpmaW5pc2hlZFdpdGhFdmVudChFdmVudCogZXZlbnQpCiAgICAgbV9wcm94eS0+ZmluaXNoZWRX
aXRoRXZlbnQoZXZlbnQpOwogfQogCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFNjcmlwdENvbnRy
b2xsZXI6OmN1cnJlbnRXb3JsZENvbnRleHQoKQoreworICAgIGlmIChWOElzb2xhdGVkQ29udGV4
dCogaXNvbGF0ZWRDb250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKSkgewor
ICAgICAgICBSZWZQdHI8U2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4gPiBjb250ZXh0ID0g
aXNvbGF0ZWRDb250ZXh0LT5zaGFyZWRDb250ZXh0KCk7CisgICAgICAgIGlmIChtX2ZyYW1lICE9
IHRvRnJhbWVJZk5vdERldGFjaGVkKGNvbnRleHQtPmdldCgpKSkKKyAgICAgICAgICAgIHJldHVy
biB2ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+OjpOZXcoY29udGV4dC0+Z2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbWFpbldv
cmxkQ29udGV4dCgpOworfQorCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFNjcmlwdENvbnRyb2xs
ZXI6Om1haW5Xb3JsZENvbnRleHQoKQogewogICAgIHdpbmRvd1NoZWxsKCktPmluaXRDb250ZXh0
SWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuaAppbmRleCBkNjc4MzYwMzAxNThkZDg1YzRhZTQzM2ZlOGZiYjc1ZGJlMWEwNzU5Li5jZjFi
MTU1NjE1ODE1MjI3MDIyZTY2MjJkZmZhYjliZTliZWU0Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNTQsMTAgKzE1NCwxMSBAQCBw
dWJsaWM6CiAgICAgLy8gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCkg
Zm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgc3RhdGljIEZyYW1lKiByZXRyaWV2ZUZyYW1lRm9y
Q3VycmVudENvbnRleHQoKTsKIAotICAgIC8vIFJldHVybnMgVjggQ29udGV4dCBvZiBhIGZyYW1l
LiBJZiBub25lIGV4aXN0cywgY3JlYXRlcwotICAgIC8vIGEgbmV3IGNvbnRleHQuIEl0IGlzIHBv
dGVudGlhbGx5IHNsb3cgYW5kIGNvbnN1bWVzIG1lbW9yeS4KKyAgICAvLyBSZXR1cm5zIFY4IENv
bnRleHQuIElmIG5vbmUgZXhpc3RzLCBjcmVhdGVzIGEgbmV3IGNvbnRleHQuCisgICAgLy8gSXQg
aXMgcG90ZW50aWFsbHkgc2xvdyBhbmQgY29uc3VtZXMgbWVtb3J5LgogICAgIHN0YXRpYyB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IG1haW5Xb3JsZENvbnRleHQoRnJhbWUqKTsKICAgICB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IG1haW5Xb3JsZENvbnRleHQoKTsKKyAgICB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+IGN1cnJlbnRXb3JsZENvbnRleHQoKTsKIAogICAgIC8vIFBhc3MgY29tbWFuZC1saW5l
IGZsYWdzIHRvIHRoZSBKUyBlbmdpbmUuCiAgICAgc3RhdGljIHZvaWQgc2V0RmxhZ3MoY29uc3Qg
Y2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCmluZGV4IDMxZmYzMWRhM2QwODI4YTI2YTk0YzdkZDhhMjZlM2Q3YWUz
MWMwZjQuLjNjMjhiMzkxZDc3MzFmZGM2NTYwMmJjMjlkMGQyMzU0N2Q4MjUxMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtMTM1LDcgKzEzNSw3
IEBAIHZvaWQgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlbldpbmRvd1JlZmVyZW5jZShGcmFt
ZSogZnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUsCiAgICAgLy8gR2V0IERPTVdpbmRvdwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsgLy8gT2JqZWN0IG1pZ2h0IGJlIGRldGFjaGVkIGZy
b20gd2luZG93Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IFY4UHJveHk6
OmNvbnRleHQoZnJhbWUpOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBm
cmFtZS0+c2NyaXB0KCktPmN1cnJlbnRXb3JsZENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dC5J
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcAppbmRleCA4YTEyM2M2MGE5YWM1Njg0M2M3OGRhM2VjMTQyYjk1N2IxNjQwY2VkLi5l
MTMyY2M1MDU0YmJhMTc0ODZkNDU4NTRmZmIyYjk0MDQyNjExZmU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtMjI3LDMyICsyMjcsNiBAQCBWOERPTVdpbmRvd1No
ZWxsKiBWOFByb3h5Ojp3aW5kb3dTaGVsbCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCktPnNj
cmlwdCgpLT53aW5kb3dTaGVsbCgpOwogfQogCi12ODo6TG9jYWw8djg6OkNvbnRleHQ+IFY4UHJv
eHk6OmNvbnRleHQoRnJhbWUqIGZyYW1lKQotewotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
Y29udGV4dCA9IFNjcmlwdENvbnRyb2xsZXI6Om1haW5Xb3JsZENvbnRleHQoZnJhbWUpOwotICAg
IGlmIChjb250ZXh0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4oKTsKLQotICAgIGlmIChWOElzb2xhdGVkQ29udGV4dCogaXNvbGF0ZWRDb250ZXh0ID0g
VjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKSkgewotICAgICAgICBjb250ZXh0ID0gdjg6
OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGlzb2xhdGVkQ29udGV4dC0+Y29udGV4dCgpKTsKLSAg
ICAgICAgaWYgKGZyYW1lICE9IHRvRnJhbWVJZk5vdERldGFjaGVkKGNvbnRleHQpKQotICAgICAg
ICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gY29udGV4dDsKLX0KLQotdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBWOFByb3h5Ojpjb250ZXh0
KCkKLXsKLSAgICBpZiAoVjhJc29sYXRlZENvbnRleHQqIGlzb2xhdGVkQ29udGV4dCA9IFY4SXNv
bGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZFBlcnNp
c3RlbnQ8djg6OkNvbnRleHQ+ID4gY29udGV4dCA9IGlzb2xhdGVkQ29udGV4dC0+c2hhcmVkQ29u
dGV4dCgpOwotICAgICAgICBpZiAobV9mcmFtZSAhPSB0b0ZyYW1lSWZOb3REZXRhY2hlZChjb250
ZXh0LT5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pigp
OwotICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQtPmdl
dCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZyYW1lKCktPnNjcmlwdCgpLT5tYWluV29ybGRDb250
ZXh0KCk7Ci19Ci0KIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94eTo6aXNvbGF0ZWRXb3Js
ZENvbnRleHQoaW50IHdvcmxkSWQpCiB7CiAgICAgSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1faXNvbGF0ZWRXb3JsZHMuZmluZCh3b3JsZElkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuaAppbmRleCAxYWQ2MWUyYWEzODQzNjM4OGRhZmRkNzBkNGY0NDQyNjc0NTAw
N2EyLi4zNzNjNjYwNTYwNjZjOTVlOGIwNTliZWVjZmI0YzJkNzM4ZjRlM2IwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC05NywxMSArOTcsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIFJ1biBhbiBhbHJlYWR5IGNvbXBpbGVkIHNjcmlwdC4KICAgICAg
ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcnVuU2NyaXB0KHY4OjpIYW5kbGU8djg6OlNjcmlwdD4p
OwogCi0gICAgICAgIC8vIFJldHVybnMgVjggQ29udGV4dCBvZiBhIGZyYW1lLiBJZiBub25lIGV4
aXN0cywgY3JlYXRlcwotICAgICAgICAvLyBhIG5ldyBjb250ZXh0LiBJdCBpcyBwb3RlbnRpYWxs
eSBzbG93IGFuZCBjb25zdW1lcyBtZW1vcnkuCi0gICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IGNvbnRleHQoRnJhbWUqKTsKLQotICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+IGNvbnRleHQoKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBpc29sYXRlZFdv
cmxkQ29udGV4dChpbnQgd29ybGRJZCk7CiAgICAgICAgIGJvb2wgbWF0Y2hlc0N1cnJlbnRDb250
ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGI4YWE0ZmFjZTk2YjdlZTk5MTgzZjVmMTk0Zjcx
ODRkN2FhMGVlZWEuLjcyODBkOTFjNTc0OWFlYWFmNzM0OTllZTczNWJjMTIyNGMxZmQyODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcApAQCAtNjEsNyArNjEsNiBAQAogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVy
dHlOYW1lLmgiCiAjaW5jbHVkZSAiVjhIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4Tm9k
ZS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CkBA
IC0xMjEsNyArMTIwLDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdpbmRvd1NldFRpbWVvdXRJ
bXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIHBhcmFtcyBpcyBwYXNzZWQgdG8gYWN0aW9uLCBhbmQgcmVsZWFzZWQgaW4gYWN0
aW9uJ3MgZGVzdHJ1Y3RvcgotICAgICAgICBPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24g
PSBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9uKFY4UHJveHk6OmNvbnRleHQoaW1wLT5mcmFt
ZSgpKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGZ1bmN0aW9uKSwgcGFyYW1Db3Vu
dCwgcGFyYW1zKSk7CisgICAgICAgIEFTU0VSVChpbXAtPmZyYW1lKCkpOworICAgICAgICBPd25Q
dHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9u
KGltcC0+ZnJhbWUoKS0+c2NyaXB0KCktPmN1cnJlbnRXb3JsZENvbnRleHQoKSwgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGZ1bmN0aW9uKSwgcGFyYW1Db3VudCwgcGFyYW1zKSk7CiAK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgT3duQXJyYXlQdHIgZm9yIHBhcmFtcy4K
ICAgICAgICAgZGVsZXRlW10gcGFyYW1zOwpAQCAtMTMxLDcgKzEzMSw4IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
LCBib29sIHNpbmdsCiAgICAgICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhj
cmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKSk7CiAgICAgICAgIGlmIChpbXAtPmRv
Y3VtZW50KCkgJiYgIWltcC0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93RXZhbChjYWxsU3RhY2sucmVsZWFzZSgpKSkKICAgICAgICAgICAgIHJldHVybiB2OEludGVn
ZXIoMCwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgICAgICBpZCA9IERPTVRpbWVyOjppbnN0YWxs
KHNjcmlwdENvbnRleHQsIGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rpb24oVjhQcm94eTo6Y29u
dGV4dChpbXAtPmZyYW1lKCkpLCBmdW5jdGlvblN0cmluZykpLCB0aW1lb3V0LCBzaW5nbGVTaG90
KTsKKyAgICAgICAgQVNTRVJUKGltcC0+ZnJhbWUoKSk7CisgICAgICAgIGlkID0gRE9NVGltZXI6
Omluc3RhbGwoc2NyaXB0Q29udGV4dCwgYWRvcHRQdHIobmV3IFNjaGVkdWxlZEFjdGlvbihpbXAt
PmZyYW1lKCktPnNjcmlwdCgpLT5jdXJyZW50V29ybGRDb250ZXh0KCksIGZ1bmN0aW9uU3RyaW5n
KSksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogICAgIH0KIAogICAgIC8vIFRyeSB0byBkbyB0aGUg
aWRsZSBub3RpZmljYXRpb24gYmVmb3JlIHRoZSB0aW1lb3V0IGV4cGlyZXMgdG8gZ2V0IGJldHRl
cgpAQCAtMTU0LDcgKzE1NSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6
ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omlu
c3RhbmNlKCksIGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAg
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQoZnJhbWUp
OworICAgIEFTU0VSVChmcmFtZSk7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gZnJhbWUtPnNjcmlwdCgpLT5jdXJyZW50V29ybGRDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0xNzUs
NyArMTc3LDggQEAgdm9pZCBWOERPTVdpbmRvdzo6ZXZlbnRBY2Nlc3NvclNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjoKICAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwg
ZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNv
bnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1lKTsKKyAgICBBU1NFUlQoZnJhbWUpOworICAg
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IGZyYW1lLT5zY3JpcHQoKS0+Y3VycmVu
dFdvcmxkQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC00MDIsNyArNDA1LDcgQEAgcHJpdmF0ZToKIAogaW5saW5lIHZvaWQgRGlhbG9n
SGFuZGxlcjo6ZGlhbG9nQ3JlYXRlZChET01XaW5kb3cqIGRpYWxvZ0ZyYW1lKQogewotICAgIG1f
ZGlhbG9nQ29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQoZGlhbG9nRnJhbWUtPmZyYW1lKCkpOwor
ICAgIG1fZGlhbG9nQ29udGV4dCA9IGRpYWxvZ0ZyYW1lLT5mcmFtZSgpID8gZGlhbG9nRnJhbWUt
PmZyYW1lKCktPnNjcmlwdCgpLT5jdXJyZW50V29ybGRDb250ZXh0KCkgOiB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+KCk7CiAgICAgaWYgKG1fZGlhbG9nQ29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAobV9kaWFsb2dBcmd1bWVudHMuSXNFbXB0eSgpKQpAQCAtNjIxLDcg
KzYyNCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERPTVdpbmRvdyogd2luZG93LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB9CiAKICAgICAvLyBPdGhlcndpc2UsIHJldHVybiB0
aGUgZ2xvYmFsIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBmcmFtZS4KLSAgICB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZSk7CisgICAg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IGZyYW1lLT5zY3JpcHQoKS0+Y3VycmVu
dFdvcmxkQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IGZiODAxYTc2MTQ0
MjNjNTE1NjIyZWJiNjQxNDQ0M2IwY2QwMjAwM2EuLjNmMWNiYzFlZTc2OWU1MWQwMzFmMjMzZWI5
ODBhZTY3NmNjNTRjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDQsNyArNDQsNiBAQAog
I2luY2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4
dC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRl
ICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgpAQCAtMTQyLDcgKzE0MSw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8RnJhbWU+IGZyYW1lID0gaHRtbERvY3VtZW50LT5mcmFtZSgpKSB7CiAgICAgICAg
ICAgICAvLyBGZXRjaCB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgdGhlIGZyYW1lLgotICAgICAgICAg
ICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFt
ZS5nZXQoKSk7CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBm
cmFtZS0+c2NyaXB0KCktPmN1cnJlbnRXb3JsZENvbnRleHQoKTsKICAgICAgICAgICAgIC8vIEJh
aWwgb3V0IGlmIHdlIGNhbm5vdCBnZXQgdGhlIGNvbnRleHQuCiAgICAgICAgICAgICBpZiAoY29u
dGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudEltcGwuY3BwCmluZGV4IDAzMzhkM2YyZGViOTNmYTVkOGVkYTEwODczOTY5NWJh
ZmVhMDUzZWUuLjRmMjU3Yzc3YzE3Yjc2M2NkZWZlNjg3ZDBjOTIwYWE3M2M0MDQ2MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRJbXBsLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZy
b250ZW5kSG9zdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJXZWJEZXZU
b29sc0Zyb250ZW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNGcm9udGVuZEltcGwu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCkBAIC02Myw3ICs2Myw3IEBA
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6fkluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1w
bCgpCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6d2luZG93T2JqZWN0Q2xlYXJl
ZCgpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGZyYW1lQ29udGV4dCA9IFY4UHJveHk6OmNvbnRleHQobV9mcm9udGVuZFBh
Z2UtPm1haW5GcmFtZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBmcmFtZUNvbnRl
eHQgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkgPyBtX2Zyb250ZW5kUGFnZS0+bWFpbkZy
YW1lKCktPnNjcmlwdCgpLT5jdXJyZW50V29ybGRDb250ZXh0KCkgOiB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+KCk7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShmcmFtZUNvbnRl
eHQpOwogCiAgICAgQVNTRVJUKCFtX2Zyb250ZW5kSG9zdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAKaW5kZXggOTQx
OGMwZGMwZDNkZTVkNTZhNDVlMDg1YWQ2NTVhMWZmMzQwY2RmOC4uODAwNTY4YTYxYjlmODY4YWNh
ODczYzUxZmRmNTYzOGYwNjM0MjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcApAQCAtNDQsNiArNDQsNyBAQAog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgpAQCAtNTEsNyArNTIsNiBAQAogI2luY2x1ZGUgIlY4SW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmgiCiAjaW5jbHVkZSAiVjhNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCi0j
aW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgpA
QCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViRGV2VG9vbHNGcm9udGVuZEltcGw6OmRpc3BhdGNo
T25JbnNwZWN0b3JGcm9udGVuZChjb25zdCBXZWJTdHJpbmcmIG1lc3NhCiB7CiAgICAgV2ViRnJh
bWVJbXBsKiBmcmFtZSA9IG1fd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKTsKICAgICB2ODo6
SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gZnJhbWVDb250
ZXh0ID0gVjhQcm94eTo6Y29udGV4dChmcmFtZS0+ZnJhbWUoKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4gZnJhbWVDb250ZXh0ID0gZnJhbWUtPmZyYW1lKCkgPyBmcmFtZS0+ZnJhbWUo
KS0+c2NyaXB0KCktPmN1cnJlbnRXb3JsZENvbnRleHQoKSA6IHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4oKTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGZyYW1lQ29udGV4dCk7
CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGluc3BlY3RvckJhY2tlbmRWYWx1ZSA9IGZyYW1l
Q29udGV4dC0+R2xvYmFsKCktPkdldCh2ODo6U3RyaW5nOjpOZXcoIkluc3BlY3RvckJhY2tlbmQi
KSk7CiAgICAgaWYgKCFpbnNwZWN0b3JCYWNrZW5kVmFsdWUtPklzT2JqZWN0KCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>