<?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>67828</bug_id>
          
          <creation_ts>2011-09-08 19:22:49 -0700</creation_ts>
          <short_desc>Rework script context creation/release notifications</short_desc>
          <delta_ts>2011-09-20 11:57:25 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>68395</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aaron Boodman">aa</reporter>
          <assigned_to name="Aaron Boodman">aa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>464597</commentid>
    <comment_count>0</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-08 19:22:49 -0700</bug_when>
    <thetext>Rework script context creation/release notifications</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464598</commentid>
    <comment_count>1</comment_count>
      <attachid>106832</attachid>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-08 19:23:05 -0700</bug_when>
    <thetext>Created attachment 106832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464599</commentid>
    <comment_count>2</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-08 19:25:43 -0700</bug_when>
    <thetext>We have had a lot of problems with the correctness of these notifications, because we are trying to figure out information they don&apos;t send (or don&apos;t always send).

What we really want to know is:
- right after each context was created, the context and associated world id
- right before each context is released, the context and associated world id</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464600</commentid>
    <comment_count>3</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-08 19:27:46 -0700</bug_when>
    <thetext>I will the older versions from the webkit api in a follow up change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464931</commentid>
    <comment_count>4</comment_count>
      <attachid>106832</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 11:23:46 -0700</bug_when>
    <thetext>Comment on attachment 106832
Patch

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

This looks fine.  My only concerns are the lack of testing and whether the new m_frame pointer will be left dangling if the Frame is destroyed before the context.  (We&apos;ll need fishd to do the final review because this patch changes the WebKit API, but we probably should iterate once first.)

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Can we add a WebKit API test that shows that we&apos;ve got the right lifecycle for these notifications?

&gt; Source/WebCore/bindings/v8/V8IsolatedContext.cpp:52
&gt; +    : m_world(IsolatedWorld::create(worldId)), m_frame(proxy-&gt;frame())

Do we need to clear m_frame when the frame gets destroyed?  Can the context outlive the frame?

&gt; Source/WebKit/chromium/public/WebFrameClient.h:313
&gt; +    // Notifies that this frame&apos;s script context has been destroyed.
&gt; +    virtual void didDestroyScriptContext(WebFrame*) { }

Should we add a comment about removing this function once the roll is complete?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468183</commentid>
    <comment_count>5</comment_count>
      <attachid>107571</attachid>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-15 17:41:50 -0700</bug_when>
    <thetext>Created attachment 107571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468185</commentid>
    <comment_count>6</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-15 17:43:04 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Can we add a WebKit API test that shows that we&apos;ve got the right lifecycle for these notifications?

Yes, done.

&gt; &gt; Source/WebCore/bindings/v8/V8IsolatedContext.cpp:52
&gt; &gt; +    : m_world(IsolatedWorld::create(worldId)), m_frame(proxy-&gt;frame())
&gt; 
&gt; Do we need to clear m_frame when the frame gets destroyed?  Can the context outlive the frame?

I&apos;ve nulled it out. This class does outlive the frame, but nobody should be calling into it once the frame is destroyed. The null will make it easier to see if that happens somehow.

&gt; &gt; Source/WebKit/chromium/public/WebFrameClient.h:313
&gt; &gt; +    // Notifies that this frame&apos;s script context has been destroyed.
&gt; &gt; +    virtual void didDestroyScriptContext(WebFrame*) { }
&gt; 
&gt; Should we add a comment about removing this function once the roll is complete?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468212</commentid>
    <comment_count>7</comment_count>
      <attachid>107571</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-15 18:22:43 -0700</bug_when>
    <thetext>Comment on attachment 107571
Patch

Attachment 107571 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9682347</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468238</commentid>
    <comment_count>8</comment_count>
      <attachid>107571</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-15 19:11:00 -0700</bug_when>
    <thetext>Comment on attachment 107571
Patch

Attachment 107571 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9685307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468341</commentid>
    <comment_count>9</comment_count>
      <attachid>107571</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-09-15 23:52:31 -0700</bug_when>
    <thetext>Comment on attachment 107571
Patch

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

&gt; Source/WebKit/chromium/public/WebFrameClient.h:301
&gt; +    // FIXME: Remove this when Chromium is updated to use the below version.

WebKit API changes LGTM.  Sorry, I didn&apos;t get a chance to review the entire patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468933</commentid>
    <comment_count>10</comment_count>
      <attachid>107754</attachid>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-16 17:44:41 -0700</bug_when>
    <thetext>Created attachment 107754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468935</commentid>
    <comment_count>11</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-16 17:45:06 -0700</bug_when>
    <thetext>Latest patch fixes the compile error. abarth?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468943</commentid>
    <comment_count>12</comment_count>
      <attachid>107754</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-16 17:56:07 -0700</bug_when>
    <thetext>Comment on attachment 107754
Patch

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

This looks great.  You might want to check over your indentation in the tests.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Lies!  There are tests!

&gt; Source/WebCore/bindings/v8/V8IsolatedContext.cpp:52
&gt; -    : m_world(IsolatedWorld::create(worldId))
&gt; +    : m_world(IsolatedWorld::create(worldId)), m_frame(proxy-&gt;frame())

This should be on two separate lines.

Is there any risk that the V8IsolatedContext could outlive the frame?  If so, we&apos;ll need a mechanism to make sure we don&apos;t hold a dangling pointer.  V8IsolatedContext&apos;s lifetime is managed by the garbage collector, right?  That means it can live arbitrarily long.

&gt; Source/WebCore/bindings/v8/V8IsolatedContext.cpp:84
&gt; +    m_frame-&gt;loader()-&gt;client()-&gt;willReleaseScriptContext(context(), m_world-&gt;id());
&gt;      m_context-&gt;get().MakeWeak(this, &amp;contextWeakReferenceCallback);
&gt; +    m_frame = 0;

Ah, I see that we clear out the pointer before turning our fortunes over to the garbage collector.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:304
&gt; +    std::vector&lt;Notification*&gt; createNotifications;
&gt; +    std::vector&lt;Notification*&gt; releaseNotifications;

These names are confusing.  They feel like method names (verbs).  Maybe createNotificationsReceived?  logOfCreateNotifications ?

I asume we aren&apos;t allowed to depend upon base here to avoid the manual memory management.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:385
&gt; +    for (size_t i = 0; i &lt; webFrameClient.releaseNotifications.size(); ++i) {
&gt; +      EXPECT_TRUE(webFrameClient.releaseNotifications[i]-&gt;Equals(
&gt; +          webFrameClient.createNotifications[webFrameClient.createNotifications.size() - 3 - i]));
&gt; +    }

- 3 ?  Looks odd, but ok.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:446
&gt; +    for (size_t i = 0; i &lt; webFrameClient.releaseNotifications.size(); ++i) {
&gt; +      if (webFrameClient.releaseNotifications[i]-&gt;Equals(webFrameClient.createNotifications[0]))
&gt; +        ++matchCount;
&gt; +    }

This file is supposed to use four-space indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468945</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-16 17:56:32 -0700</bug_when>
    <thetext>I assume you&apos;ll take care of any fancy footwork needed to land the API change safely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469107</commentid>
    <comment_count>14</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-17 15:46:25 -0700</bug_when>
    <thetext>Committed r95385: &lt;http://trac.webkit.org/changeset/95385&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470218</commentid>
    <comment_count>15</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-20 11:38:25 -0700</bug_when>
    <thetext>Patch got reverted: https://bugs.webkit.org/show_bug.cgi?id=68395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470228</commentid>
    <comment_count>16</comment_count>
      <attachid>108037</attachid>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-20 11:47:21 -0700</bug_when>
    <thetext>Created attachment 108037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470230</commentid>
    <comment_count>17</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-20 11:49:17 -0700</bug_when>
    <thetext>In the previously reviewed patch, I accidentally removed the plumbing that made the old APIs work, which broke Chromium tests. See FrameLoaderClientImpl.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470231</commentid>
    <comment_count>18</comment_count>
      <attachid>108037</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-20 11:50:27 -0700</bug_when>
    <thetext>Comment on attachment 108037
Patch

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

&gt; Source/WebCore/bindings/v8/V8IsolatedContext.cpp:52
&gt; +    : m_world(IsolatedWorld::create(worldId)), m_frame(proxy-&gt;frame())

These should be on separate lines.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:294
&gt; +        Notification(WebFrame* frame, v8::Handle&lt;v8::Context&gt; context, int worldId)
&gt; +            : frame(frame) , context(v8::Persistent&lt;v8::Context&gt;::New(context)), worldId(worldId)

This should be on separate lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470237</commentid>
    <comment_count>19</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2011-09-20 11:57:25 -0700</bug_when>
    <thetext>Committed r95560: &lt;http://trac.webkit.org/changeset/95560&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106832</attachid>
            <date>2011-09-08 19:23:05 -0700</date>
            <delta_ts>2011-09-15 17:41:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67828-20110908192304.patch</filename>
            <type>text/plain</type>
            <size>12353</size>
            <attacher name="Aaron Boodman">aa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDgwYjMyYTZkMjI5MThh
NTA5OTY0Y2U3NTU0OGEyZTI0MDY1M2JkLi43NzIzM2M2ZTliY2U4OGRlY2ZiMjVjNDBiMGM2MDAw
YTE1YjY5NDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDktMDggIEFhcm9u
IEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV3b3JrIHNjcmlwdCBjb250
ZXh0IGNyZWF0aW9uL3JlbGVhc2Ugbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc4MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHRIYW5kbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVkZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SXNv
bGF0ZWRDb250ZXh0OjpWOElzb2xhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpWOElz
b2xhdGVkQ29udGV4dDo6ZGVzdHJveSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhJc29sYXRl
ZENvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDcmVhdGVTY3JpcHRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OndpbGxSZWxlYXNlU2Ny
aXB0Q29udGV4dCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTEtMDktMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBEb2N1
bWVudFdyaXRlcjo6ZGVwcmVjYXRlZEZyYW1lRW5jb2RpbmcgZG9lc24ndCBuZWVkIHRvIHJlZmVy
dCB0byBTZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcAppbmRleCBiYjFmMDY4ZGNlZjhjN2IwNDg3OTFlZGE3NDFmMmJkMDBhNDQyYTgz
Li5mYjQzNDAxZmM4YTQxNjM3ZGYwMTNlZjJiZmM3NWVjOTM3MTVjYzg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTc0LDcgKzE3
NCw3IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aXNDb250ZXh0SW5pdGlhbGl6ZWQoKQogdm9p
ZCBWOERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4dEhhbmRsZXMoKQogewogICAgIGlmICgh
bV9jb250ZXh0LklzRW1wdHkoKSkgewotICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPmRpZERlc3Ryb3lTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKTsKKyAgICAgICAgbV9mcmFtZS0+
bG9hZGVyKCktPmNsaWVudCgpLT53aWxsUmVsZWFzZVNjcmlwdENvbnRleHQobV9jb250ZXh0LCAw
KTsKICAgICAgICAgbV9jb250ZXh0LkRpc3Bvc2UoKTsKICAgICAgICAgbV9jb250ZXh0LkNsZWFy
KCk7CiAKQEAgLTM0Miw3ICszNDIsNyBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6OmluaXRDb250
ZXh0SWZOZWVkZWQoKQogCiAgICAgVjhCaW5kaW5nU2NyaXB0czo6cnVuU2NyaXB0cyh2OENvbnRl
eHQpOwogCi0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWRDcmVhdGVTY3JpcHRD
b250ZXh0Rm9yRnJhbWUoKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZENy
ZWF0ZVNjcmlwdENvbnRleHQobV9jb250ZXh0LCAwKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlz
IHdyb25nLiBXZSBzaG91bGQgYWN0dWFsbHkgZG8gdGhpcyBmb3IgdGhlIHByb3BlciB3b3JsZCBv
bmNlCiAgICAgLy8gd2UgZG8gaXNvbGF0ZWQgd29ybGRzIHRoZSBXZWJDb3JlIHdheS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcAppbmRleCA2
MjQyODAyYzAxMTZlMjE4YmExNmY1NjNjYTkwMDYwYTM0NGQ4ODVhLi5hYjllZGZlYWIxNTZmZDcy
ZTFjNTNiNTRhNTQ0YzQ3MTI4YjY3ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVjhJc29s
YXRlZENvbnRleHQ6OmNvbnRleHRXZWFrUmVmZXJlbmNlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiBvCiB9CiAKIFY4SXNvbGF0ZWRDb250ZXh0OjpWOElzb2xhdGVkQ29udGV4dChW
OFByb3h5KiBwcm94eSwgaW50IGV4dGVuc2lvbkdyb3VwLCBpbnQgd29ybGRJZCkKLSAgICA6IG1f
d29ybGQoSXNvbGF0ZWRXb3JsZDo6Y3JlYXRlKHdvcmxkSWQpKQorICAgIDogbV93b3JsZChJc29s
YXRlZFdvcmxkOjpjcmVhdGUod29ybGRJZCkpLCBtX2ZyYW1lKHByb3h5LT5mcmFtZSgpKQogewog
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGNy
ZWF0aW5nIGEgbmV3IFY4RE9NV2luZG93U2hlbGwgaGVyZSBpbnN0ZWFkIG9mIHJpcGluZyBvdXQg
dGhlIGNvbnRleHQuCkBAIC02NCw3ICs2NCw3IEBAIFY4SXNvbGF0ZWRDb250ZXh0OjpWOElzb2xh
dGVkQ29udGV4dChWOFByb3h5KiBwcm94eSwgaW50IGV4dGVuc2lvbkdyb3VwLCBpbnQgd29yCiAK
ICAgICBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsSGlkZGVuT2JqZWN0UHJvdG90eXBlKG1fY29u
dGV4dC0+Z2V0KCkpOwogICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgZ28gYXdheSBvbmNlIHdlIGhh
dmUgYSB3aW5kb3dTaGVsbCBmb3IgdGhlIGlzb2xhdGVkIHdvcmxkLgotICAgIHByb3h5LT53aW5k
b3dTaGVsbCgpLT5pbnN0YWxsRE9NV2luZG93KG1fY29udGV4dC0+Z2V0KCksIHByb3h5LT5mcmFt
ZSgpLT5kb21XaW5kb3coKSk7CisgICAgcHJveHktPndpbmRvd1NoZWxsKCktPmluc3RhbGxET01X
aW5kb3cobV9jb250ZXh0LT5nZXQoKSwgbV9mcmFtZS0+ZG9tV2luZG93KCkpOwogCiAgICAgLy8g
VXNpbmcgdGhlIGRlZmF1bHQgc2VjdXJpdHkgdG9rZW4gbWVhbnMgdGhhdCB0aGUgY2FuQWNjZXNz
IGlzIGFsd2F5cwogICAgIC8vIGNhbGxlZCwgd2hpY2ggaXMgc2xvdy4KQEAgLTc0LDExICs3NCwx
MiBAQCBWOElzb2xhdGVkQ29udGV4dDo6VjhJc29sYXRlZENvbnRleHQoVjhQcm94eSogcHJveHks
IGludCBleHRlbnNpb25Hcm91cCwgaW50IHdvcgogICAgIC8vICAgICAgICBjaGFuZ2VzLgogICAg
IG1fY29udGV4dC0+Z2V0KCktPlVzZURlZmF1bHRTZWN1cml0eVRva2VuKCk7CiAKLSAgICBwcm94
eS0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWRDcmVhdGVJc29sYXRlZFNjcmlwdENv
bnRleHQodGhpcyk7CisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWRDcmVhdGVT
Y3JpcHRDb250ZXh0KGNvbnRleHQoKSwgbV93b3JsZC0+aWQoKSk7CiB9CiAKIHZvaWQgVjhJc29s
YXRlZENvbnRleHQ6OmRlc3Ryb3koKQogeworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KS0+d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KGNvbnRleHQoKSwgbV93b3JsZC0+aWQoKSk7CiAg
ICAgbV9jb250ZXh0LT5nZXQoKS5NYWtlV2Vhayh0aGlzLCAmY29udGV4dFdlYWtSZWZlcmVuY2VD
YWxsYmFjayk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SXNvbGF0ZWRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVk
Q29udGV4dC5oCmluZGV4IDY0ZGYxZjI4NThkOGY0YWU5ZjgwNzExNzZhM2IyZmNmZTk5ZGM4Njku
LmFjNmNjZDQ0YWE1OTdiNmIyNGQ1NzVjYmJlZWI5Yzk0MThmYzY1NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaApAQCAtMTE0LDYgKzExNCw4
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElzb2xhdGVkV29ybGQ+IG1fd29ybGQ7CiAKICAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CisKKyAgICBGcmFtZSogbV9m
cmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAppbmRleCBjZWRiMzMzNmU4NGNiYjEyOTdkOWYyNjdjM2NlZjlhZTExYmQ1NTk4
Li42OTc3ODRjYWJkNTI4MGY0NGYyNzU4Y2Q3OTA1YTE2YmJkZjQxMmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSAiU2VhcmNo
UG9wdXBNZW51LmgiCiAKICNpZiBVU0UoVjgpCi0jaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQu
aCIKKyNpbmNsdWRlIDx2OC5oPgogI2VuZGlmCiAKIC8qCkBAIC0zOTcsOSArMzk3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCkg
eyB9CiAKICNpZiBVU0UoVjgpCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRl
eHRGb3JGcmFtZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2NyaXB0Q29udGV4
dEZvckZyYW1lKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0
Q29udGV4dChWOElzb2xhdGVkQ29udGV4dCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVTY3JpcHRDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+LCBpbnQgd29ybGRJZCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiwgaW50IHdvcmxkSWQpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd1Njcmlw
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbk5hbWUsIGludCBleHRlbnNpb25Hcm91
cCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IGMyMTE3ZWIyNGEzOWU4ZGNlMTJmMjdmMjljMGZmMDgzOTVl
NjNkYjcuLmMzMzdkMzJiMGZkNGUxMTlkNmUwYjgxMDA5MDY1OTU4ZGI0OTg5M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC01MSw2ICs1MSwxMyBAQCBj
bGFzcyBOU0NhY2hlZFVSTFJlc3BvbnNlOwogY2xhc3MgTlNWaWV3OwogI2VuZGlmCiAKKyNpZiBV
U0UoVjgpCituYW1lc3BhY2UgdjggeworY2xhc3MgQ29udGV4dDsKK3RlbXBsYXRlPGNsYXNzIFQ+
IGNsYXNzIEhhbmRsZTsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTg3LDkgKzk0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdHJpbmdXaXRo
RGlyZWN0aW9uOwogICAgIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwotI2lmIFVTRShWOCkKLSAgICBj
bGFzcyBWOElzb2xhdGVkQ29udGV4dDsKLSNlbmRpZgogICAgIGNsYXNzIFdpZGdldDsKIAogICAg
IHR5cGVkZWYgdm9pZCAoUG9saWN5Q2hlY2tlcjo6KkZyYW1lUG9saWN5RnVuY3Rpb24pKFBvbGlj
eUFjdGlvbik7CkBAIC0yNzQsOSArMjc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0ID0gMDsgLy8g
Ik5hdmlnYXRpb24iIGhlcmUgbWVhbnMgYSB0cmFuc2l0aW9uIGZyb20gb25lIHBhZ2UgdG8gYW5v
dGhlciB0aGF0IGVuZHMgdXAgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogCiAjaWYgVVNFKFY4
KQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dEZvckZyYW1lKCkg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveVNjcmlwdENvbnRleHRGb3JGcmFt
ZSgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29u
dGV4dChWOElzb2xhdGVkQ29udGV4dCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZVNjcmlwdENvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4sIGludCB3b3JsZElkKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVsZWFzZVNjcmlwdENvbnRleHQodjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4sIGludCB3b3JsZElkKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBhbGxvd1NjcmlwdEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbk5hbWUsIGludCBl
eHRlbnNpb25Hcm91cCkgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggYjEzN2E5YTdhNjU4NGE2YzFlMjE2MWU5NTcyNzBjOGE4NDE1MTkxZC4uZmViNzc0M2NhZDFk
MjI4ZjZjYzMxNjgyZDBlZGFhNmJjZmFkZWMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAxMS0wOS0wOCAgQWFyb24gQm9vZG1hbiAgPGFhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXdvcmsgc2NyaXB0IGNvbnRleHQgY3JlYXRpb24vcmVsZWFzZSBu
b3RpZmljYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NzgyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
Q2xpZW50OjpkaWRDcmVhdGVTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVDbGllbnQ6OmRpZERlc3Ryb3lTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVDbGllbnQ6OndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCk6CisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlkQ3JlYXRlU2NyaXB0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKiBz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTEtMDktMDggIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBBbm90aGVyIGF0dGVtcHQgdG8gZml4IHRoZSBD
aHJvbWl1bSBidWlsZC4gIChNaXNzZWQgb25lLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IDAwNzZmMTk1NWYzMjMwYzQ5YTBhZDA0ZTE1
MTM0NzNkYjY0MjZkMjQuLjgxMTIzOGRkMGZjYTE5YmVjYTA0YjkyYzUwNTkzZGI3ZTBiZTUwYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApA
QCAtMjk5LDkgKzI5OSw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gZGlk
Q2xlYXJXaW5kb3dPYmplY3QgYnV0IG9ubHkgY2FsbGVkIG9uY2UgcGVyCiAgICAgLy8gZnJhbWUg
Y29udGV4dC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dChXZWJGcmFt
ZSopIHsgfQotCi0gICAgLy8gTm90aWZpZXMgdGhhdCB0aGlzIGZyYW1lJ3Mgc2NyaXB0IGNvbnRl
eHQgaGFzIGJlZW4gZGVzdHJveWVkLgotICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2NyaXB0
Q29udGV4dChXZWJGcmFtZSopIHsgfQorI2lmIFdFQktJVF9VU0lOR19WOAorICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVTY3JpcHRDb250ZXh0KFdlYkZyYW1lKiwgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4sIGludCB3b3JsZElkKSB7IH0KKyNlbmRpZgogCiAgICAgLy8gTm90aWZpZXMgdGhhdCBh
IGdhcmJhZ2UtY29sbGVjdGVkIGNvbnRleHQgd2FzIGNyZWF0ZWQgLSBjb250ZW50CiAgICAgLy8g
c2NyaXB0cy4KQEAgLTMwOSw2ICszMDksMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQoV2ViRnJhbWUqLCBpbnQgd29ybGRJRCwgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4pIHsgfQogI2VuZGlmCiAKKyAgICAvLyBOb3RpZmllcyB0aGF0
IHRoaXMgZnJhbWUncyBzY3JpcHQgY29udGV4dCBoYXMgYmVlbiBkZXN0cm95ZWQuCisgICAgdmly
dHVhbCB2b2lkIGRpZERlc3Ryb3lTY3JpcHRDb250ZXh0KFdlYkZyYW1lKikgeyB9CisKKyNpZiBX
RUJLSVRfVVNJTkdfVjgKKyAgICAvLyBXZWJLaXQgaXMgYWJvdXQgdG8gcmVsZWFzZSBpdHMgcmVm
ZXJlbmNlIHRvIGEgdjggY29udGV4dCBmb3IgYSBmcmFtZS4KKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bFJlbGVhc2VTY3JpcHRDb250ZXh0KFdlYkZyYW1lKiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4s
IGludCB3b3JsZElkKSB7IH0KKyNlbmRpZgorCiAgICAgLy8gR2VvbWV0cnkgbm90aWZpY2F0aW9u
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAv
LyBUaGUgZnJhbWUncyBkb2N1bWVudCBmaW5pc2hlZCB0aGUgaW5pdGlhbCBsYXlvdXQgb2YgYSBw
YWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAKaW5kZXggZTI0YmQzYTYwOWE1NjY1ODc4NDYwMzFmNmQ2MGZkYmE0YjU1OThh
ZC4uMjcyYjM3YzczNTY0YjkwYTc4ZmQ4NWE2Y2M4ZTljNTdmMmRlOGE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBA
IC04NSw3ICs4NSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgVVNF
KFY4KQotI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCisjaW5jbHVkZSA8djguaD4KICNl
bmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE0MCwyMyArMTQwLDE3IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKQogICAg
ICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ3JlYXRlRG9jdW1lbnRFbGVtZW50KG1fd2Vi
RnJhbWUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ3JlYXRlU2NyaXB0
Q29udGV4dEZvckZyYW1lKCkKLXsKLSAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAg
ICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDcmVhdGVTY3JpcHRDb250ZXh0KG1fd2ViRnJh
bWUpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkRGVzdHJveVNjcmlwdENv
bnRleHRGb3JGcmFtZSgpCisjaWYgVVNFKFY4KQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6
OmRpZENyZWF0ZVNjcmlwdENvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCwg
aW50IHdvcmxkSWQpCiB7CiAgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQotICAgICAgICBt
X3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkRGVzdHJveVNjcmlwdENvbnRleHQobV93ZWJGcmFtZSk7
CisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDcmVhdGVTY3JpcHRDb250ZXh0KG1f
d2ViRnJhbWUsIGNvbnRleHQsIHdvcmxkSWQpOwogfQogCi0jaWYgVVNFKFY4KQotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEltcGw6OmRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dChWOElzb2xh
dGVkQ29udGV4dCogaXNvbGF0ZWRDb250ZXh0KQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6
OndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
LCBpbnQgd29ybGRJZCkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAg
IG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQobV93
ZWJGcmFtZSwgaXNvbGF0ZWRDb250ZXh0LT53b3JsZCgpLT5pZCgpLCBpc29sYXRlZENvbnRleHQt
PmNvbnRleHQoKSk7CisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT53aWxsUmVsZWFzZVNj
cmlwdENvbnRleHQobV93ZWJGcmFtZSwgY29udGV4dCwgd29ybGRJZCk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aAppbmRleCAxYWZiODExMmQ2NzBiYTVlMTRjZTQzZGFkMTMyZjIyZjNiNjdiN2YxLi5mNDMwYzlj
M2MwOTgxYzhmMDliMTQwYjFkZTdiYWUwODk4Yjc5MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtNjEsMTUgKzYxLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZG9j
dW1lbnRFbGVtZW50QXZhaWxhYmxlKCk7CiAKLSAgICAvLyBBIGZyYW1lJ3MgVjggY29udGV4dCB3
YXMgY3JlYXRlZCBvciBkZXN0cm95ZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlw
dENvbnRleHRGb3JGcmFtZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2NyaXB0Q29u
dGV4dEZvckZyYW1lKCk7Ci0KICNpZiBVU0UoVjgpCi0gICAgLy8gQSBjb250ZXh0IHVudGllZCB0
byBhIGZyYW1lIHdhcyBjcmVhdGVkICh0aHJvdWdoIGV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKS4K
LSAgICAvLyBUaGlzIGNvbnRleHQgaXMgbm90IHRpZWQgdG8gdGhlIGxpZmV0aW1lIG9mIGl0cyBm
cmFtZSwgYW5kIGlzIGRlc3Ryb3llZAotICAgIC8vIGluIGdhcmJhZ2UgY29sbGVjdGlvbi4KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KFdlYkNvcmU6OlY4
SXNvbGF0ZWRDb250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRl
eHQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4sIGludCB3b3JsZElkKTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+LCBpbnQg
d29ybGRJZCk7CiAjZW5kaWYKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgYWxs
b3cgdGhlIGdpdmVuIFY4IGV4dGVuc2lvbiB0byBiZSBhZGRlZCB0bwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107571</attachid>
            <date>2011-09-15 17:41:50 -0700</date>
            <delta_ts>2011-09-16 17:44:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67828-20110915174149.patch</filename>
            <type>text/plain</type>
            <size>22682</size>
            <attacher name="Aaron Boodman">aa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUyNDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZDRiZmQ0YzljODU0ZGZm
MzU0NjllZjdkNjBjODFhMjlmZTRmNjE1Li43ZDEzMTllYWVmZDMyM2QxZTQ1NGMwOTIxM2ZmYTQ3
NjcyZDIxNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDktMTUgIEFhcm9u
IEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV3b3JrIHNjcmlwdCBjb250
ZXh0IGNyZWF0aW9uL3JlbGVhc2Ugbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc4MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHRIYW5kbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVkZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SXNv
bGF0ZWRDb250ZXh0OjpWOElzb2xhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpWOElz
b2xhdGVkQ29udGV4dDo6ZGVzdHJveSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhJc29sYXRl
ZENvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDcmVhdGVTY3JpcHRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OndpbGxSZWxlYXNlU2Ny
aXB0Q29udGV4dCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTEtMDktMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQXR0ZW1wdCB0byBmaXggV2luZG93cyBidWlsZCBhZnRlciByOTUyNDMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGQzMzg3NjBi
OTZiYTVmZGUxMmNmMmQ4MjcyMzNiNGFjN2RlNmRkNDIuLmJhZDhjYzlhNzk5YzRlZDc1Y2Y1NmIw
NjJmMGM4OTExODYzZWY4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBWOERPTVdpbmRvd1No
ZWxsOjppc0NvbnRleHRJbml0aWFsaXplZCgpCiB2b2lkIFY4RE9NV2luZG93U2hlbGw6OmRpc3Bv
c2VDb250ZXh0SGFuZGxlcygpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQuSXNFbXB0eSgpKSB7Ci0g
ICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkRGVzdHJveVNjcmlwdENvbnRl
eHRGb3JGcmFtZSgpOworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPndpbGxS
ZWxlYXNlU2NyaXB0Q29udGV4dChtX2NvbnRleHQsIDApOwogICAgICAgICBtX2NvbnRleHQuRGlz
cG9zZSgpOwogICAgICAgICBtX2NvbnRleHQuQ2xlYXIoKTsKIApAQCAtMzQyLDcgKzM0Miw3IEBA
IGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5pdENvbnRleHRJZk5lZWRlZCgpCiAKICAgICBWOEJp
bmRpbmdTY3JpcHRzOjpydW5TY3JpcHRzKHY4Q29udGV4dCk7CiAKLSAgICBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCktPmRpZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgpOworICAgIG1f
ZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkQ3JlYXRlU2NyaXB0Q29udGV4dChtX2NvbnRl
eHQsIDApOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgd3JvbmcuIFdlIHNob3VsZCBhY3R1YWxs
eSBkbyB0aGlzIGZvciB0aGUgcHJvcGVyIHdvcmxkIG9uY2UKICAgICAvLyB3ZSBkbyBpc29sYXRl
ZCB3b3JsZHMgdGhlIFdlYkNvcmUgd2F5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhJc29sYXRlZENvbnRleHQuY3BwCmluZGV4IDYyNDI4MDJjMDExNmUyMThiYTE2ZjU2M2Nh
OTAwNjBhMzQ0ZDg4NWEuLjk1MjhhNzU3YzljMjhmODBlNzczMmFiNjliYWI0NTZjMzliODM3M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBWOElzb2xhdGVkQ29udGV4dDo6Y29udGV4dFdlYWtS
ZWZlcmVuY2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG8KIH0KIAogVjhJc29s
YXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRDb250ZXh0KFY4UHJveHkqIHByb3h5LCBpbnQgZXh0ZW5z
aW9uR3JvdXAsIGludCB3b3JsZElkKQotICAgIDogbV93b3JsZChJc29sYXRlZFdvcmxkOjpjcmVh
dGUod29ybGRJZCkpCisgICAgOiBtX3dvcmxkKElzb2xhdGVkV29ybGQ6OmNyZWF0ZSh3b3JsZElk
KSksIG1fZnJhbWUocHJveHktPmZyYW1lKCkpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3Bl
OwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgY3JlYXRpbmcgYSBuZXcgVjhET01XaW5kb3dT
aGVsbCBoZXJlIGluc3RlYWQgb2YgcmlwaW5nIG91dCB0aGUgY29udGV4dC4KQEAgLTY0LDcgKzY0
LDcgQEAgVjhJc29sYXRlZENvbnRleHQ6OlY4SXNvbGF0ZWRDb250ZXh0KFY4UHJveHkqIHByb3h5
LCBpbnQgZXh0ZW5zaW9uR3JvdXAsIGludCB3b3IKIAogICAgIFY4RE9NV2luZG93U2hlbGw6Omlu
c3RhbGxIaWRkZW5PYmplY3RQcm90b3R5cGUobV9jb250ZXh0LT5nZXQoKSk7CiAgICAgLy8gRklY
TUU6IFRoaXMgd2lsbCBnbyBhd2F5IG9uY2Ugd2UgaGF2ZSBhIHdpbmRvd1NoZWxsIGZvciB0aGUg
aXNvbGF0ZWQgd29ybGQuCi0gICAgcHJveHktPndpbmRvd1NoZWxsKCktPmluc3RhbGxET01XaW5k
b3cobV9jb250ZXh0LT5nZXQoKSwgcHJveHktPmZyYW1lKCktPmRvbVdpbmRvdygpKTsKKyAgICBw
cm94eS0+d2luZG93U2hlbGwoKS0+aW5zdGFsbERPTVdpbmRvdyhtX2NvbnRleHQtPmdldCgpLCBt
X2ZyYW1lLT5kb21XaW5kb3coKSk7CiAKICAgICAvLyBVc2luZyB0aGUgZGVmYXVsdCBzZWN1cml0
eSB0b2tlbiBtZWFucyB0aGF0IHRoZSBjYW5BY2Nlc3MgaXMgYWx3YXlzCiAgICAgLy8gY2FsbGVk
LCB3aGljaCBpcyBzbG93LgpAQCAtNzQsMTIgKzc0LDE0IEBAIFY4SXNvbGF0ZWRDb250ZXh0OjpW
OElzb2xhdGVkQ29udGV4dChWOFByb3h5KiBwcm94eSwgaW50IGV4dGVuc2lvbkdyb3VwLCBpbnQg
d29yCiAgICAgLy8gICAgICAgIGNoYW5nZXMuCiAgICAgbV9jb250ZXh0LT5nZXQoKS0+VXNlRGVm
YXVsdFNlY3VyaXR5VG9rZW4oKTsKIAotICAgIHByb3h5LT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPmRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dCh0aGlzKTsKKyAgICBtX2ZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZENyZWF0ZVNjcmlwdENvbnRleHQoY29udGV4dCgpLCBt
X3dvcmxkLT5pZCgpKTsKIH0KIAogdm9pZCBWOElzb2xhdGVkQ29udGV4dDo6ZGVzdHJveSgpCiB7
CisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT53aWxsUmVsZWFzZVNjcmlwdENvbnRl
eHQoY29udGV4dCgpLCBtX3dvcmxkLT5pZCgpKTsKICAgICBtX2NvbnRleHQtPmdldCgpLk1ha2VX
ZWFrKHRoaXMsICZjb250ZXh0V2Vha1JlZmVyZW5jZUNhbGxiYWNrKTsKKyAgICBtX2ZyYW1lID0g
MDsKIH0KIAogVjhJc29sYXRlZENvbnRleHQ6On5WOElzb2xhdGVkQ29udGV4dCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaAppbmRleCA2NGRmMWYy
ODU4ZDhmNGFlOWY4MDcxMTc2YTNiMmZjZmU5OWRjODY5Li5hYzZjY2Q0NGFhNTk3YjZiMjRkNTc1
Y2JiZWViOWM5NDE4ZmM2NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOElzb2xhdGVkQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SXNvbGF0ZWRDb250ZXh0LmgKQEAgLTExNCw2ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxJc29sYXRlZFdvcmxkPiBtX3dvcmxkOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBt
X3NlY3VyaXR5T3JpZ2luOworCisgICAgRnJhbWUqIG1fZnJhbWU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNzVjNTM1
YThmMDIyNWE4YzIwY2YyYzlkYjNjODA4OGFmZjFjZTNlMC4uYjI3Y2M1ZDg5MGE1OGFlYzNmZmFh
NDE4YjBjNzI5MjI4MTI3NjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApA
QCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgogCiAjaWYgVVNF
KFY4KQotI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCisjaW5jbHVkZSA8djguaD4KICNl
bmRpZgogCiAvKgpAQCAtMzk3LDkgKzM5Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpIHsgfQogCiAjaWYgVVNFKFY4KQotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkRGVzdHJveVNjcmlwdENvbnRleHRGb3JGcmFtZSgpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQoVjhJc29sYXRlZENvbnRl
eHQqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dCh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiwgaW50IHdvcmxkSWQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
UmVsZWFzZVNjcmlwdENvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4sIGludCB3b3JsZElk
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHRFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBleHRlbnNpb25OYW1lLCBpbnQgZXh0ZW5zaW9uR3JvdXApIHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBj
MjExN2ViMjRhMzllOGRjZTEyZjI3ZjI5YzBmZjA4Mzk1ZTYzZGI3Li5jMzM3ZDMyYjBmZDRlMTE5
ZDZlMGI4MTAwOTA2NTk1OGRiNDk4OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtNTEsNiArNTEsMTMgQEAgY2xhc3MgTlNDYWNoZWRVUkxSZXNwb25z
ZTsKIGNsYXNzIE5TVmlldzsKICNlbmRpZgogCisjaWYgVVNFKFY4KQorbmFtZXNwYWNlIHY4IHsK
K2NsYXNzIENvbnRleHQ7Cit0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7Cit9CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U7CkBAIC04Nyw5ICs5NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAgICAgY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbjsKICAgICBjbGFzcyBT
dWJzdGl0dXRlRGF0YTsKLSNpZiBVU0UoVjgpCi0gICAgY2xhc3MgVjhJc29sYXRlZENvbnRleHQ7
Ci0jZW5kaWYKICAgICBjbGFzcyBXaWRnZXQ7CiAKICAgICB0eXBlZGVmIHZvaWQgKFBvbGljeUNo
ZWNrZXI6OipGcmFtZVBvbGljeUZ1bmN0aW9uKShQb2xpY3lBY3Rpb24pOwpAQCAtMjc0LDkgKzI3
OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZv
cm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdCA9IDA7IC8vICJOYXZpZ2F0aW9uIiBoZXJlIG1lYW5z
IGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBwYWdlIHRvIGFub3RoZXIgdGhhdCBlbmRzIHVwIGluIHRo
ZSBiYWNrL2ZvcndhcmQgbGlzdC4KIAogI2lmIFVTRShWOCkKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZERlc3Ryb3lTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKSA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQoVjhJc29sYXRlZENvbnRleHQq
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTY3JpcHRDb250ZXh0KHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+LCBpbnQgd29ybGRJZCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+LCBpbnQg
d29ybGRJZCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHRFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBleHRlbnNpb25OYW1lLCBpbnQgZXh0ZW5zaW9uR3JvdXApID0gMDsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGYwNjdmNjMyMjhlM2RiYWIxNDZk
YjcxNWFkNjQ4OTM0NTI2MzVhNDAuLmU5YzQxMzVlY2QwYmZlNzkyNDA0OGU5ODk4ZjZlZmU0YTI2
ZTVkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEt
MDktMTUgIEFhcm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV3b3Jr
IHNjcmlwdCBjb250ZXh0IGNyZWF0aW9uL3JlbGVhc2Ugbm90aWZpY2F0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc4MjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNs
aWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ3JlYXRlU2NyaXB0
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWREZXN0cm95U2Ny
aXB0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojp3aWxsUmVsZWFz
ZVNjcmlwdENvbnRleHQpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZENyZWF0ZVNjcmlw
dENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxS
ZWxlYXNlU2NyaXB0Q29udGV4dCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oOgorCiAyMDExLTA5LTE1ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZW1vdmUgRU5BQkxFKFNWR19BU19JTUFHRSkgc2luY2UgYWxsIG1ham9yIHBvcnRzIGhh
dmUgaXQgb24gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgKaW5kZXggMDA3NmYxOTU1ZjMyMzBjNDlhMGFkMDRlMTUxMzQ3M2RiNjQy
NmQyNC4uZWZjMWEwMjIxM2Q2NzRjMDVjYzk3MjMzYjk1YjM3MGYwNTdiNjJkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBAIC0yOTgsMTcg
KzI5OCwyOCBAQCBwdWJsaWM6CiAgICAgLy8gTm90aWZpZXMgdGhhdCBhIG5ldyBzY3JpcHQgY29u
dGV4dCBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIGZyYW1lLgogICAgIC8vIFRoaXMgaXMgc2lt
aWxhciB0byBkaWRDbGVhcldpbmRvd09iamVjdCBidXQgb25seSBjYWxsZWQgb25jZSBwZXIKICAg
ICAvLyBmcmFtZSBjb250ZXh0LgorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIENocm9t
aXVtIGlzIHVwZGF0ZWQgdG8gdXNlIHRoZSBiZWxvdyB2ZXJzaW9uLgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVTY3JpcHRDb250ZXh0KFdlYkZyYW1lKikgeyB9Ci0KLSAgICAvLyBOb3RpZmll
cyB0aGF0IHRoaXMgZnJhbWUncyBzY3JpcHQgY29udGV4dCBoYXMgYmVlbiBkZXN0cm95ZWQuCi0g
ICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lTY3JpcHRDb250ZXh0KFdlYkZyYW1lKikgeyB9Cisj
aWYgV0VCS0lUX1VTSU5HX1Y4CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRl
eHQoV2ViRnJhbWUqLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiwgaW50IHdvcmxkSWQpIHsgfQor
I2VuZGlmCiAKICAgICAvLyBOb3RpZmllcyB0aGF0IGEgZ2FyYmFnZS1jb2xsZWN0ZWQgY29udGV4
dCB3YXMgY3JlYXRlZCAtIGNvbnRlbnQKICAgICAvLyBzY3JpcHRzLgorICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3aGVuIENocm9taXVtIGlzIHVwZGF0ZWQgdG8gdXNlIGRpZENyZWF0ZVNjcmlw
dENvbnRleHQoKS4KICNpZiBXRUJLSVRfVVNJTkdfVjgKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KFdlYkZyYW1lKiwgaW50IHdvcmxkSUQsIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+KSB7IH0KICNlbmRpZgogCisgICAgLy8gTm90aWZpZXMgdGhhdCB0aGlz
IGZyYW1lJ3Mgc2NyaXB0IGNvbnRleHQgaGFzIGJlZW4gZGVzdHJveWVkLgorICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyB3aGVuIENocm9taXVtIGlzIHVwZGF0ZWQgdG8gdXNlIHRoZSBiZWxvdyB2
ZXJzaW9uLgorICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2NyaXB0Q29udGV4dChXZWJGcmFt
ZSopIHsgfQorCisjaWYgV0VCS0lUX1VTSU5HX1Y4CisgICAgLy8gV2ViS2l0IGlzIGFib3V0IHRv
IHJlbGVhc2UgaXRzIHJlZmVyZW5jZSB0byBhIHY4IGNvbnRleHQgZm9yIGEgZnJhbWUuCisgICAg
dmlydHVhbCB2b2lkIHdpbGxSZWxlYXNlU2NyaXB0Q29udGV4dChXZWJGcmFtZSosIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+LCBpbnQgd29ybGRJZCkgeyB9CisjZW5kaWYKKwogICAgIC8vIEdlb21l
dHJ5IG5vdGlmaWNhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiAgICAgLy8gVGhlIGZyYW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgdGhlIGluaXRp
YWwgbGF5b3V0IG9mIGEgcGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IGUyNGJkM2E2MDlhNTY2NTg3ODQ2MDMx
ZjZkNjBmZGJhNGI1NTk4YWQuLjI3MmIzN2M3MzU2NGI5MGE3OGZkODVhNmNjOGU5YzU3ZjJkZThh
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcApAQCAtODUsNyArODUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogI2lmIFVTRShWOCkKLSNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgorI2lu
Y2x1ZGUgPHY4Lmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNDAs
MjMgKzE0MCwxNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZG9jdW1lbnRFbGVtZW50
QXZhaWxhYmxlKCkKICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0ZURvY3Vt
ZW50RWxlbWVudChtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6
OmRpZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgpCi17Ci0gICAgaWYgKG1fd2ViRnJhbWUt
PmNsaWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ3JlYXRlU2NyaXB0
Q29udGV4dChtX3dlYkZyYW1lKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
ZERlc3Ryb3lTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKQorI2lmIFVTRShWOCkKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRJbXBsOjpkaWRDcmVhdGVTY3JpcHRDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQsIGludCB3b3JsZElkKQogewogICAgIGlmIChtX3dlYkZyYW1lLT5jbGll
bnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZERlc3Ryb3lTY3JpcHRDb250
ZXh0KG1fd2ViRnJhbWUpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ3JlYXRl
U2NyaXB0Q29udGV4dChtX3dlYkZyYW1lLCBjb250ZXh0LCB3b3JsZElkKTsKIH0KIAotI2lmIFVT
RShWOCkKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWRDcmVhdGVJc29sYXRlZFNjcmlw
dENvbnRleHQoVjhJc29sYXRlZENvbnRleHQqIGlzb2xhdGVkQ29udGV4dCkKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRJbXBsOjp3aWxsUmVsZWFzZVNjcmlwdENvbnRleHQodjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gY29udGV4dCwgaW50IHdvcmxkSWQpCiB7CiAgICAgaWYgKG1fd2ViRnJhbWUtPmNs
aWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ3JlYXRlSXNvbGF0ZWRT
Y3JpcHRDb250ZXh0KG1fd2ViRnJhbWUsIGlzb2xhdGVkQ29udGV4dC0+d29ybGQoKS0+aWQoKSwg
aXNvbGF0ZWRDb250ZXh0LT5jb250ZXh0KCkpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KG1fd2ViRnJhbWUsIGNvbnRleHQsIHdvcmxkSWQp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmgKaW5kZXggMWFmYjgxMTJkNjcwYmE1ZTE0Y2U0M2RhZDEzMmYyMmYz
YjY3YjdmMS4uZjQzMGM5YzNjMDk4MWM4ZjA5YjE0MGIxZGU3YmFlMDg5OGI3OTJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgK
QEAgLTYxLDE1ICs2MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CiAgICAg
dmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpOwogCi0gICAgLy8gQSBmcmFt
ZSdzIFY4IGNvbnRleHQgd2FzIGNyZWF0ZWQgb3IgZGVzdHJveWVkLgotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RGVzdHJveVNjcmlwdENvbnRleHRGb3JGcmFtZSgpOwotCiAjaWYgVVNFKFY4KQotICAgIC8vIEEg
Y29udGV4dCB1bnRpZWQgdG8gYSBmcmFtZSB3YXMgY3JlYXRlZCAodGhyb3VnaCBldmFsdWF0ZUlu
SXNvbGF0ZWRXb3JsZCkuCi0gICAgLy8gVGhpcyBjb250ZXh0IGlzIG5vdCB0aWVkIHRvIHRoZSBs
aWZldGltZSBvZiBpdHMgZnJhbWUsIGFuZCBpcyBkZXN0cm95ZWQKLSAgICAvLyBpbiBnYXJiYWdl
IGNvbGxlY3Rpb24uCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29u
dGV4dChXZWJDb3JlOjpWOElzb2xhdGVkQ29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVTY3JpcHRDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+LCBpbnQgd29ybGRJZCk7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiwgaW50IHdvcmxkSWQpOwogI2VuZGlmCiAKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgd2Ugc2hvdWxkIGFsbG93IHRoZSBnaXZlbiBWOCBleHRlbnNpb24gdG8gYmUgYWRkZWQgdG8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRleCA3
NzQzNjFmZmU3YTc0OTUyMDMyMjhjMzc0ZWUyOTY0N2ZhYWZmYTY2Li4yMGVmYzcyOTljNmJiMTBh
YTk3ZjRkN2ViZWI1ZTNiYWIyN2JlM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViRm9y
bUVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgiCiAjaW5jbHVkZSAiV2ViU2VhcmNo
YWJsZUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJXZWJTZXR0aW5ncy5oIgpAQCAtMTUzLDcgKzE1NCw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3Qs
IEZyYW1lRm9yRW50ZXJlZENvbnRleHQpCiAgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgi
emVyb19zaXplZF9pZnJhbWUuaHRtbCIpOwogCiAgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXpl
IHRoZSBXZWJWaWV3LgotICAgICBUZXN0V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7Cisg
ICAgVGVzdFdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50OwogICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBXZWJWaWV3OjpjcmVhdGUoMCk7CiAgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0SmF2
YVNjcmlwdEVuYWJsZWQodHJ1ZSk7CiAgICAgd2ViVmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZSgm
d2ViRnJhbWVDbGllbnQpOwpAQCAtMjU1LDQgKzI1NiwxOTUgQEAgVEVTVF9GKFdlYkZyYW1lVGVz
dCwgUmVsb2FkRG9lc250U2V0UmVkaXJlY3QpCiAgICAgc2VydmVSZXF1ZXN0cygpOwogfQogCisK
Ky8vIEltcGxlbWVudGF0aW9uIG9mIFdlYkZyYW1lQ2xpZW50IHRoYXQgdHJhY2tzIHRoZSB2OCBj
b250ZXh0cyB0aGF0IGFyZSBjcmVhdGVkCisvLyBhbmQgZGVzdHJveWVkIGZvciB2ZXJpZmljYXRp
b24uCitjbGFzcyBDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2Vi
RnJhbWVDbGllbnQgeworcHVibGljOgorICAgIHN0cnVjdCBOb3RpZmljYXRpb24geworICAgIHB1
YmxpYzoKKyAgICAgICAgTm90aWZpY2F0aW9uKFdlYkZyYW1lKiBmcmFtZSwgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4gY29udGV4dCwgaW50IHdvcmxkSWQpCisgICAgICAgICAgICA6IGZyYW1lKGZy
YW1lKSAsIGNvbnRleHQodjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+OjpOZXcoY29udGV4dCkp
LCB3b3JsZElkKHdvcmxkSWQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIH5Ob3Rp
ZmljYXRpb24oKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LkRpc3Bvc2UoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgRXF1YWxzKE5vdGlmaWNhdGlvbiogb3RoZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvdGhlciAmJiBmcmFtZSA9PSBvdGhlci0+ZnJhbWUg
JiYgY29udGV4dCA9PSBvdGhlci0+Y29udGV4dCAmJiB3b3JsZElkID09IG90aGVyLT53b3JsZElk
OworICAgICAgICB9CisKKyAgICAgICAgV2ViRnJhbWUqIGZyYW1lOworICAgICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6Q29udGV4dD4gY29udGV4dDsKKyAgICAgICAgaW50IHdvcmxkSWQ7CisgICAg
fTsKKworICAgIH5Db250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQoKQorICAgIHsKKyAg
ICAgICAgcmVzZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3JlYXRlX25vdGlmaWNhdGlvbnMuc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICBkZWxldGUgY3JlYXRlX25vdGlmaWNhdGlvbnNbaV07CisKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWxlYXNlTm90aWZpY2F0aW9ucy5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgIGRlbGV0ZSByZWxlYXNlTm90aWZpY2F0aW9uc1tpXTsKKworICAgICAgICBj
cmVhdGVfbm90aWZpY2F0aW9ucy5jbGVhcigpOworICAgICAgICByZWxlYXNlTm90aWZpY2F0aW9u
cy5jbGVhcigpOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPE5vdGlmaWNhdGlvbio+IGNyZWF0
ZU5vdGlmaWNhdGlvbnM7CisgICAgc3RkOjp2ZWN0b3I8Tm90aWZpY2F0aW9uKj4gcmVsZWFzZU5v
dGlmaWNhdGlvbnM7CisKKyBwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTY3Jp
cHRDb250ZXh0KFdlYkZyYW1lKiBmcmFtZSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4
dCwgaW50IHdvcmxkSWQpCisgICAgeworICAgICAgICBjcmVhdGVOb3RpZmljYXRpb25zLnB1c2hf
YmFjayhuZXcgTm90aWZpY2F0aW9uKGZyYW1lLCBjb250ZXh0LCB3b3JsZElkKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZWxlYXNlU2NyaXB0Q29udGV4dChXZWJGcmFtZSogZnJh
bWUsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQsIGludCB3b3JsZElkKQorICAgIHsK
KyAgICAgICAgcmVsZWFzZU5vdGlmaWNhdGlvbnMucHVzaF9iYWNrKG5ldyBOb3RpZmljYXRpb24o
ZnJhbWUsIGNvbnRleHQsIHdvcmxkSWQpKTsKKyAgICB9Cit9OworCitURVNUX0YoV2ViRnJhbWVU
ZXN0LCBDb250ZXh0Tm90aWZpY2F0aW9uc0xvYWRVbmxvYWQpCit7CisgICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOworCisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiY29udGV4
dF9ub3RpZmljYXRpb25zX3Rlc3QuaHRtbCIpOworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExv
YWQoImNvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0X2ZyYW1lLmh0bWwiKTsKKworICAgIC8vIExv
YWQgYSBmcmFtZSB3aXRoIGFuIGlmcmFtZSwgbWFrZSBzdXJlIHdlIGdldCB0aGUgcmlnaHQgY3Jl
YXRlIG5vdGlmaWNhdGlvbnMuCisgICAgQ29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50
IHdlYkZyYW1lQ2xpZW50OworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUo
MCk7CisgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQodHJ1ZSk7
CisgICAgd2ViVmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZSgmd2ViRnJhbWVDbGllbnQpOworICAg
IGxvYWRIdHRwRnJhbWUod2ViVmlldy0+bWFpbkZyYW1lKCksICJjb250ZXh0X25vdGlmaWNhdGlv
bnNfdGVzdC5odG1sIik7CisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgV2ViRnJhbWUqIG1h
aW5GcmFtZSA9IHdlYlZpZXctPm1haW5GcmFtZSgpOworICAgIFdlYkZyYW1lKiBjaGlsZEZyYW1l
ID0gbWFpbkZyYW1lLT5maXJzdENoaWxkKCk7CisKKyAgICBBU1NFUlRfRVEoMnUsIHdlYkZyYW1l
Q2xpZW50LmNyZWF0ZU5vdGlmaWNhdGlvbnMuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHdl
YkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zLnNpemUoKSk7CisKKyAgICBDb250ZXh0
TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQ6Ok5vdGlmaWNhdGlvbiogZmlyc3RDcmVhdGVOb3Rp
ZmljYXRpb24gPSB3ZWJGcmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zWzBdOworICAgIENv
bnRleHRMaWZldGltZVRlc3RXZWJGcmFtZUNsaWVudDo6Tm90aWZpY2F0aW9uKiBzZWNvbmRDcmVh
dGVOb3RpZmljYXRpb24gPSB3ZWJGcmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zWzFdOwor
CisgICAgRVhQRUNUX0VRKG1haW5GcmFtZSwgZmlyc3RDcmVhdGVOb3RpZmljYXRpb24tPmZyYW1l
KTsKKyAgICBFWFBFQ1RfRVEobWFpbkZyYW1lLT5tYWluV29ybGRTY3JpcHRDb250ZXh0KCksIGZp
cnN0Q3JlYXRlTm90aWZpY2F0aW9uLT5jb250ZXh0KTsKKyAgICBFWFBFQ1RfRVEoMCwgZmlyc3RD
cmVhdGVOb3RpZmljYXRpb24tPndvcmxkSWQpOworCisgICAgRVhQRUNUX0VRKGNoaWxkRnJhbWUs
IHNlY29uZENyZWF0ZU5vdGlmaWNhdGlvbi0+ZnJhbWUpOworICAgIEVYUEVDVF9FUShjaGlsZEZy
YW1lLT5tYWluV29ybGRTY3JpcHRDb250ZXh0KCksIHNlY29uZENyZWF0ZU5vdGlmaWNhdGlvbi0+
Y29udGV4dCk7CisgICAgRVhQRUNUX0VRKDAsIHNlY29uZENyZWF0ZU5vdGlmaWNhdGlvbi0+d29y
bGRJZCk7CisKKyAgICAvLyBDbG9zZSB0aGUgdmlldy4gV2Ugc2hvdWxkIGdldCB0d28gcmVsZWFz
ZSBub3RpZmljYXRpb25zIHRoYXQgYXJlIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIGNyZWF0ZSBv
bmVzLCBpbiByZXZlcnNlIG9yZGVyLgorICAgIHdlYlZpZXctPmNsb3NlKCk7CisKKyAgICBBU1NF
UlRfRVEoMnUsIHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zLnNpemUoKSk7Cisg
ICAgQ29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50OjpOb3RpZmljYXRpb24qIGZpcnN0
UmVsZWFzZU5vdGlmaWNhdGlvbiA9IHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25z
WzBdOworICAgIENvbnRleHRMaWZldGltZVRlc3RXZWJGcmFtZUNsaWVudDo6Tm90aWZpY2F0aW9u
KiBzZWNvbmRSZWxlYXNlTm90aWZpY2F0aW9uID0gd2ViRnJhbWVDbGllbnQucmVsZWFzZU5vdGlm
aWNhdGlvbnNbMV07CisKKyAgICBBU1NFUlRfVFJVRShmaXJzdENyZWF0ZU5vdGlmaWNhdGlvbi0+
RXF1YWxzKHNlY29uZFJlbGVhc2VOb3RpZmljYXRpb24pKTsKKyAgICBBU1NFUlRfVFJVRShzZWNv
bmRDcmVhdGVOb3RpZmljYXRpb24tPkVxdWFscyhmaXJzdFJlbGVhc2VOb3RpZmljYXRpb24pKTsK
K30KKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29udGV4dE5vdGlmaWNhdGlvbnNSZWxvYWQpCit7
CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisgICAgcmVnaXN0ZXJNb2NrZWRI
dHRwVVJMTG9hZCgiY29udGV4dF9ub3RpZmljYXRpb25zX3Rlc3QuaHRtbCIpOworICAgIHJlZ2lz
dGVyTW9ja2VkSHR0cFVSTExvYWQoImNvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0X2ZyYW1lLmh0
bWwiKTsKKworICAgIENvbnRleHRMaWZldGltZVRlc3RXZWJGcmFtZUNsaWVudCB3ZWJGcmFtZUNs
aWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gV2ViVmlldzo6Y3JlYXRlKDApOworICAgIHdl
YlZpZXctPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKHRydWUpOworICAgIHdlYlZp
ZXctPmluaXRpYWxpemVNYWluRnJhbWUoJndlYkZyYW1lQ2xpZW50KTsKKyAgICBsb2FkSHR0cEZy
YW1lKHdlYlZpZXctPm1haW5GcmFtZSgpLCAiY29udGV4dF9ub3RpZmljYXRpb25zX3Rlc3QuaHRt
bCIpOworICAgIHNlcnZlUmVxdWVzdHMoKTsKKworICAgIC8vIFJlZnJlc2gsIHdlIHNob3VsZCBn
ZXQgdHdvIHJlbGVhc2Ugbm90aWZpY2F0aW9ucyBhbmQgdHdvIG1vcmUgY3JlYXRlIG5vdGlmaWNh
dGlvbnMuCisgICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPnJlbG9hZChmYWxzZSk7CisgICAgc2Vy
dmVSZXF1ZXN0cygpOworICAgIEFTU0VSVF9FUSg0dSwgd2ViRnJhbWVDbGllbnQuY3JlYXRlTm90
aWZpY2F0aW9ucy5zaXplKCkpOworICAgIEFTU0VSVF9FUSgydSwgd2ViRnJhbWVDbGllbnQucmVs
ZWFzZU5vdGlmaWNhdGlvbnMuc2l6ZSgpKTsKKworICAgIC8vIFRoZSB0d28gcmVsZWFzZSBub3Rp
ZmljYXRpb25zIHdlIGdvdCBzaG91bGQgYmUgZXhhY3RseSB0aGUgc2FtZSBhcyB0aGUgZmlyc3Qg
dHdvIGNyZWF0ZSBub3RpZmljYXRpb25zLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2Vi
RnJhbWVDbGllbnQucmVsZWFzZU5vdGlmaWNhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgIEVY
UEVDVF9UUlVFKHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zW2ldLT5FcXVhbHMo
CisgICAgICAgICAgd2ViRnJhbWVDbGllbnQuY3JlYXRlTm90aWZpY2F0aW9uc1t3ZWJGcmFtZUNs
aWVudC5jcmVhdGVOb3RpZmljYXRpb25zLnNpemUoKSAtIDMgLSBpXSkpOworICAgIH0KKworICAg
IC8vIFRoZSBsYXN0IHR3byBjcmVhdGUgbm90aWZpY2F0aW9ucyBzaG91bGQgYmUgZm9yIHRoZSBj
dXJyZW50IGZyYW1lcyBhbmQgY29udGV4dC4KKyAgICBXZWJGcmFtZSogbWFpbkZyYW1lID0gd2Vi
Vmlldy0+bWFpbkZyYW1lKCk7CisgICAgV2ViRnJhbWUqIGNoaWxkRnJhbWUgPSBtYWluRnJhbWUt
PmZpcnN0Q2hpbGQoKTsKKyAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQ6Ok5v
dGlmaWNhdGlvbiogZmlyc3RSZWZyZXNoTm90aWZpY2F0aW9uID0gd2ViRnJhbWVDbGllbnQuY3Jl
YXRlTm90aWZpY2F0aW9uc1syXTsKKyAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGll
bnQ6Ok5vdGlmaWNhdGlvbiogc2Vjb25kUmVmcmVzaE5vdGlmaWNhdGlvbiA9IHdlYkZyYW1lQ2xp
ZW50LmNyZWF0ZU5vdGlmaWNhdGlvbnNbM107CisKKyAgICBFWFBFQ1RfRVEobWFpbkZyYW1lLCBm
aXJzdFJlZnJlc2hOb3RpZmljYXRpb24tPmZyYW1lKTsKKyAgICBFWFBFQ1RfRVEobWFpbkZyYW1l
LT5tYWluV29ybGRTY3JpcHRDb250ZXh0KCksIGZpcnN0UmVmcmVzaE5vdGlmaWNhdGlvbi0+Y29u
dGV4dCk7CisgICAgRVhQRUNUX0VRKDAsIGZpcnN0UmVmcmVzaE5vdGlmaWNhdGlvbi0+d29ybGRJ
ZCk7CisKKyAgICBFWFBFQ1RfRVEoY2hpbGRGcmFtZSwgc2Vjb25kUmVmcmVzaE5vdGlmaWNhdGlv
bi0+ZnJhbWUpOworICAgIEVYUEVDVF9FUShjaGlsZEZyYW1lLT5tYWluV29ybGRTY3JpcHRDb250
ZXh0KCksIHNlY29uZFJlZnJlc2hOb3RpZmljYXRpb24tPmNvbnRleHQpOworICAgIEVYUEVDVF9F
USgwLCBzZWNvbmRSZWZyZXNoTm90aWZpY2F0aW9uLT53b3JsZElkKTsKKworICAgIHdlYlZpZXct
PmNsb3NlKCk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIENvbnRleHROb3RpZmljYXRpb25z
SXNvbGF0ZWRXb3JsZHMpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisg
ICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiY29udGV4dF9ub3RpZmljYXRpb25zX3Rlc3Qu
aHRtbCIpOworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImNvbnRleHRfbm90aWZpY2F0
aW9uc190ZXN0X2ZyYW1lLmh0bWwiKTsKKworICAgIENvbnRleHRMaWZldGltZVRlc3RXZWJGcmFt
ZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gV2ViVmlldzo6
Y3JlYXRlKDApOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVk
KHRydWUpOworICAgIHdlYlZpZXctPmluaXRpYWxpemVNYWluRnJhbWUoJndlYkZyYW1lQ2xpZW50
KTsKKyAgICBsb2FkSHR0cEZyYW1lKHdlYlZpZXctPm1haW5GcmFtZSgpLCAiY29udGV4dF9ub3Rp
ZmljYXRpb25zX3Rlc3QuaHRtbCIpOworICAgIHNlcnZlUmVxdWVzdHMoKTsKKworICAgIC8vIEFk
ZCBhbiBpc29sYXRlZCB3b3JsZC4KKyAgICB3ZWJGcmFtZUNsaWVudC5yZXNldCgpOworCisgICAg
aW50IGlzb2xhdGVkV29ybGRJZCA9IDQyOworICAgIFdlYlNjcmlwdFNvdXJjZSBzY3JpcHRTb3Vy
Y2UoImhpISIpOworICAgIGludCBudW1Tb3VyY2VzID0gMTsKKyAgICBpbnQgZXh0ZW5zaW9uR3Jv
dXAgPSAwOworICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5leGVjdXRlU2NyaXB0SW5Jc29sYXRl
ZFdvcmxkKGlzb2xhdGVkV29ybGRJZCwgJnNjcmlwdFNvdXJjZSwgbnVtU291cmNlcywgZXh0ZW5z
aW9uR3JvdXApOworCisgICAgLy8gV2Ugc2hvdWxkIG5vdyBoYXZlIGEgbmV3IGNyZWF0ZSBub3Rp
ZmljYXRpb24uCisgICAgQVNTRVJUX0VRKDF1LCB3ZWJGcmFtZUNsaWVudC5jcmVhdGVOb3RpZmlj
YXRpb25zLnNpemUoKSk7CisgICAgQ29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50OjpO
b3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IHdlYkZyYW1lQ2xpZW50LmNyZWF0ZU5vdGlmaWNh
dGlvbnNbMF07CisgICAgQVNTRVJUX0VRKGlzb2xhdGVkV29ybGRJZCwgbm90aWZpY2F0aW9uLT53
b3JsZElkKTsKKyAgICBBU1NFUlRfRVEod2ViVmlldy0+bWFpbkZyYW1lKCksIG5vdGlmaWNhdGlv
bi0+ZnJhbWUpOworCisgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbiBBUEkgdG8gZW51bWFyYXRlIGlz
b2xhdGVkIHdvcmxkcyBmb3IgYSBmcmFtZSwgYnV0IHdlIGNhbiBhdCBsZWFzdCBhc3NlcnQgdGhh
dCB0aGUgY29udGV4dCB3ZSBnb3QgaXMgKm5vdCogdGhlIG1haW4gd29ybGQncyBjb250ZXh0Lgor
ICAgIEFTU0VSVF9ORSh3ZWJWaWV3LT5tYWluRnJhbWUoKS0+bWFpbldvcmxkU2NyaXB0Q29udGV4
dCgpLCBub3RpZmljYXRpb24tPmNvbnRleHQpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKKwor
ICAgIC8vIFdlIHNob3VsZCBoYXZlIGdvdHRlbiB0aHJlZSByZWxlYXNlIG5vdGlmaWNhdGlvbnMg
KG9uZSBmb3IgZWFjaCBvZiB0aGUgZnJhbWVzLCBwbHVzIG9uZSBmb3IgdGhlIGlzb2xhdGVkIGNv
bnRleHQpLgorICAgIEFTU0VSVF9FUSgzdSwgd2ViRnJhbWVDbGllbnQucmVsZWFzZU5vdGlmaWNh
dGlvbnMuc2l6ZSgpKTsKKworICAgIC8vIEFuZCBvbmUgb2YgdGhlbSBzaG91bGQgYmUgZXhhY3Rs
eSB0aGUgc2FtZSBhcyB0aGUgY3JlYXRlIG5vdGlmaWNhdGlvbiBmb3IgdGhlIGlzb2xhdGVkIGNv
bnRleHQuCisgICAgaW50IG1hdGNoQ291bnQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd2ViRnJhbWVDbGllbnQucmVsZWFzZU5vdGlmaWNhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgIGlmICh3ZWJGcmFtZUNsaWVudC5yZWxlYXNlTm90aWZpY2F0aW9uc1tpXS0+RXF1YWxzKHdl
YkZyYW1lQ2xpZW50LmNyZWF0ZU5vdGlmaWNhdGlvbnNbMF0pKQorICAgICAgICArK21hdGNoQ291
bnQ7CisgICAgfQorICAgIEVYUEVDVF9FUSgxLCBtYXRjaENvdW50KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9jb250
ZXh0X25vdGlmaWNhdGlvbnNfdGVzdC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL2NvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJlNDI4
MDEzMjRiN2RjMDEyYjVlOGE5NGE0YTdiN2IyMWQ5OWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9jb250ZXh0X25vdGlmaWNhdGlvbnNfdGVz
dC5odG1sCkBAIC0wLDAgKzEsMiBAQAorPHNjcmlwdD5jb25zb2xlLmxvZygnQSBzY3JpcHQgaXMg
bmVlZGVkIHRvIGNyZWF0ZSBhIHNjcmlwdCBjb250ZXh0LicpOzwvc2NyaXB0PgorPGlmcmFtZSBz
cmM9ImNvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0X2ZyYW1lLmh0bWwiPjwvaWZyYW1lPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2NvbnRleHRfbm90aWZp
Y2F0aW9uc190ZXN0X2ZyYW1lLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2Rh
dGEvY29udGV4dF9ub3RpZmljYXRpb25zX3Rlc3RfZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjVi
NmIzNzVkMDViMDljMDY3OTA4NzJhNDEyNDQ3YjAzZGQwMzdlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2NvbnRleHRfbm90aWZpY2F0aW9uc190
ZXN0X2ZyYW1lLmh0bWwKQEAgLTAsMCArMSBAQAorPHNjcmlwdD5jb25zb2xlLmxvZygnQSBzY3Jp
cHQgaXMgbmVlZGVkIHRvIGNyZWF0ZSBhIHNjcmlwdCBjb250ZXh0LicpOzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107754</attachid>
            <date>2011-09-16 17:44:41 -0700</date>
            <delta_ts>2011-09-20 11:47:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67828-20110916174439.patch</filename>
            <type>text/plain</type>
            <size>22680</size>
            <attacher name="Aaron Boodman">aa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUzNDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjIzZWM4MDliYzdlNTgx
YWMwNjViODJiZDMxOWE0NTVhOGEwZGY2Li40ZDA2MGUxOWNiMjYxMzhiMTY2Njg0ZDEyYTQxNTA5
MzQ3MjIyYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDktMTYgIEFhcm9u
IEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV3b3JrIHNjcmlwdCBjb250
ZXh0IGNyZWF0aW9uL3JlbGVhc2Ugbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc4MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHRIYW5kbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVkZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SXNv
bGF0ZWRDb250ZXh0OjpWOElzb2xhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpWOElz
b2xhdGVkQ29udGV4dDo6ZGVzdHJveSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhJc29sYXRl
ZENvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDcmVhdGVTY3JpcHRDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OndpbGxSZWxlYXNlU2Ny
aXB0Q29udGV4dCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTEtMDktMTYgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgRml4ZWQgY29uc3QgY29ycmVjdG5lc3Mgb24gYWNjZXNzb3JzIGluIExheWVyQ2hyb21pdW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5k
ZXggZDMzODc2MGI5NmJhNWZkZTEyY2YyZDgyNzIzM2I0YWM3ZGU2ZGQ0Mi4uYmFkOGNjOWE3OTlj
NGVkNzVjZjU2YjA2MmYwYzg5MTE4NjNlZjg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBib29sIFY4
RE9NV2luZG93U2hlbGw6OmlzQ29udGV4dEluaXRpYWxpemVkKCkKIHZvaWQgVjhET01XaW5kb3dT
aGVsbDo6ZGlzcG9zZUNvbnRleHRIYW5kbGVzKCkKIHsKICAgICBpZiAoIW1fY29udGV4dC5Jc0Vt
cHR5KCkpIHsKLSAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWREZXN0cm95
U2NyaXB0Q29udGV4dEZvckZyYW1lKCk7CisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KG1fY29udGV4dCwgMCk7CiAgICAgICAgIG1f
Y29udGV4dC5EaXNwb3NlKCk7CiAgICAgICAgIG1fY29udGV4dC5DbGVhcigpOwogCkBAIC0zNDIs
NyArMzQyLDcgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbml0Q29udGV4dElmTmVlZGVkKCkK
IAogICAgIFY4QmluZGluZ1NjcmlwdHM6OnJ1blNjcmlwdHModjhDb250ZXh0KTsKIAotICAgIG1f
ZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkQ3JlYXRlU2NyaXB0Q29udGV4dEZvckZyYW1l
KCk7CisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWRDcmVhdGVTY3JpcHRDb250
ZXh0KG1fY29udGV4dCwgMCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZy4gV2Ugc2hv
dWxkIGFjdHVhbGx5IGRvIHRoaXMgZm9yIHRoZSBwcm9wZXIgd29ybGQgb25jZQogICAgIC8vIHdl
IGRvIGlzb2xhdGVkIHdvcmxkcyB0aGUgV2ViQ29yZSB3YXkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKaW5kZXggNjI0MjgwMmMwMTE2ZTIx
OGJhMTZmNTYzY2E5MDA2MGEzNDRkODg1YS4uOTUyOGE3NTdjOWMyOGY4MGU3NzMyYWI2OWJhYjQ1
NmMzOWI4MzczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29s
YXRlZENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0
ZWRDb250ZXh0LmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIFY4SXNvbGF0ZWRDb250ZXh0Ojpj
b250ZXh0V2Vha1JlZmVyZW5jZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gbwog
fQogCiBWOElzb2xhdGVkQ29udGV4dDo6VjhJc29sYXRlZENvbnRleHQoVjhQcm94eSogcHJveHks
IGludCBleHRlbnNpb25Hcm91cCwgaW50IHdvcmxkSWQpCi0gICAgOiBtX3dvcmxkKElzb2xhdGVk
V29ybGQ6OmNyZWF0ZSh3b3JsZElkKSkKKyAgICA6IG1fd29ybGQoSXNvbGF0ZWRXb3JsZDo6Y3Jl
YXRlKHdvcmxkSWQpKSwgbV9mcmFtZShwcm94eS0+ZnJhbWUoKSkKIHsKICAgICB2ODo6SGFuZGxl
U2NvcGUgc2NvcGU7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBjcmVhdGluZyBhIG5ldyBW
OERPTVdpbmRvd1NoZWxsIGhlcmUgaW5zdGVhZCBvZiByaXBpbmcgb3V0IHRoZSBjb250ZXh0LgpA
QCAtNjQsNyArNjQsNyBAQCBWOElzb2xhdGVkQ29udGV4dDo6VjhJc29sYXRlZENvbnRleHQoVjhQ
cm94eSogcHJveHksIGludCBleHRlbnNpb25Hcm91cCwgaW50IHdvcgogCiAgICAgVjhET01XaW5k
b3dTaGVsbDo6aW5zdGFsbEhpZGRlbk9iamVjdFByb3RvdHlwZShtX2NvbnRleHQtPmdldCgpKTsK
ICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGdvIGF3YXkgb25jZSB3ZSBoYXZlIGEgd2luZG93U2hl
bGwgZm9yIHRoZSBpc29sYXRlZCB3b3JsZC4KLSAgICBwcm94eS0+d2luZG93U2hlbGwoKS0+aW5z
dGFsbERPTVdpbmRvdyhtX2NvbnRleHQtPmdldCgpLCBwcm94eS0+ZnJhbWUoKS0+ZG9tV2luZG93
KCkpOworICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT5pbnN0YWxsRE9NV2luZG93KG1fY29udGV4
dC0+Z2V0KCksIG1fZnJhbWUtPmRvbVdpbmRvdygpKTsKIAogICAgIC8vIFVzaW5nIHRoZSBkZWZh
dWx0IHNlY3VyaXR5IHRva2VuIG1lYW5zIHRoYXQgdGhlIGNhbkFjY2VzcyBpcyBhbHdheXMKICAg
ICAvLyBjYWxsZWQsIHdoaWNoIGlzIHNsb3cuCkBAIC03NCwxMiArNzQsMTQgQEAgVjhJc29sYXRl
ZENvbnRleHQ6OlY4SXNvbGF0ZWRDb250ZXh0KFY4UHJveHkqIHByb3h5LCBpbnQgZXh0ZW5zaW9u
R3JvdXAsIGludCB3b3IKICAgICAvLyAgICAgICAgY2hhbmdlcy4KICAgICBtX2NvbnRleHQtPmdl
dCgpLT5Vc2VEZWZhdWx0U2VjdXJpdHlUb2tlbigpOwogCi0gICAgcHJveHktPmZyYW1lKCktPmxv
YWRlcigpLT5jbGllbnQoKS0+ZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KHRoaXMpOwor
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkQ3JlYXRlU2NyaXB0Q29udGV4dChj
b250ZXh0KCksIG1fd29ybGQtPmlkKCkpOwogfQogCiB2b2lkIFY4SXNvbGF0ZWRDb250ZXh0Ojpk
ZXN0cm95KCkKIHsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPndpbGxSZWxlYXNl
U2NyaXB0Q29udGV4dChjb250ZXh0KCksIG1fd29ybGQtPmlkKCkpOwogICAgIG1fY29udGV4dC0+
Z2V0KCkuTWFrZVdlYWsodGhpcywgJmNvbnRleHRXZWFrUmVmZXJlbmNlQ2FsbGJhY2spOworICAg
IG1fZnJhbWUgPSAwOwogfQogCiBWOElzb2xhdGVkQ29udGV4dDo6flY4SXNvbGF0ZWRDb250ZXh0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oCmlu
ZGV4IDY0ZGYxZjI4NThkOGY0YWU5ZjgwNzExNzZhM2IyZmNmZTk5ZGM4NjkuLmFjNmNjZDQ0YWE1
OTdiNmIyNGQ1NzVjYmJlZWI5Yzk0MThmYzY1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaApAQCAtMTE0LDYgKzExNCw4IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPElzb2xhdGVkV29ybGQ+IG1fd29ybGQ7CiAKICAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CisKKyAgICBGcmFtZSogbV9mcmFtZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApp
bmRleCBmNWU3YzE2OGE5Zjk4YjViYTViOTdlOWI0YWExODQ5MzMxN2RkNzJhLi41OTg1NmQwN2Ri
ZmIzNmU1YTg2N2MxODU1ZGZiZGE0ZTcwNTI4OGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51Lmgi
CiAKICNpZiBVU0UoVjgpCi0jaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKKyNpbmNsdWRl
IDx2OC5oPgogI2VuZGlmCiAKIC8qCkBAIC0zOTcsOSArMzk3LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCkgeyB9CiAKICNpZiBV
U0UoVjgpCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2NyaXB0Q29udGV4dEZvckZyYW1lKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dChWOElz
b2xhdGVkQ29udGV4dCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTY3JpcHRDb250
ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+LCBpbnQgd29ybGRJZCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHdpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Piwg
aW50IHdvcmxkSWQpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbk5hbWUsIGludCBleHRlbnNpb25Hcm91cCkgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IGMyMTE3ZWIyNGEzOWU4ZGNlMTJmMjdmMjljMGZmMDgzOTVlNjNkYjcuLmMzMzdk
MzJiMGZkNGUxMTlkNmUwYjgxMDA5MDY1OTU4ZGI0OTg5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC01MSw2ICs1MSwxMyBAQCBjbGFzcyBOU0NhY2hl
ZFVSTFJlc3BvbnNlOwogY2xhc3MgTlNWaWV3OwogI2VuZGlmCiAKKyNpZiBVU0UoVjgpCituYW1l
c3BhY2UgdjggeworY2xhc3MgQ29udGV4dDsKK3RlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIEhhbmRs
ZTsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKQEAgLTg3LDkgKzk0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9uOwog
ICAgIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwotI2lmIFVTRShWOCkKLSAgICBjbGFzcyBWOElzb2xh
dGVkQ29udGV4dDsKLSNlbmRpZgogICAgIGNsYXNzIFdpZGdldDsKIAogICAgIHR5cGVkZWYgdm9p
ZCAoUG9saWN5Q2hlY2tlcjo6KkZyYW1lUG9saWN5RnVuY3Rpb24pKFBvbGljeUFjdGlvbik7CkBA
IC0yNzQsOSArMjc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0ID0gMDsgLy8gIk5hdmlnYXRpb24i
IGhlcmUgbWVhbnMgYSB0cmFuc2l0aW9uIGZyb20gb25lIHBhZ2UgdG8gYW5vdGhlciB0aGF0IGVu
ZHMgdXAgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogCiAjaWYgVVNFKFY4KQotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dEZvckZyYW1lKCkgPSAwOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveVNjcmlwdENvbnRleHRGb3JGcmFtZSgpID0gMDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dChWOElzb2xh
dGVkQ29udGV4dCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENv
bnRleHQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4sIGludCB3b3JsZElkKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCB3aWxsUmVsZWFzZVNjcmlwdENvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4sIGludCB3b3JsZElkKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd1Njcmlw
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbk5hbWUsIGludCBleHRlbnNpb25Hcm91
cCkgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjljZGNhOTdh
YWYyNzFhYTA2NzM2YTM1YWUyMmI4YzdiMmFmZTFkOS4uNzNkYjZlOWVmMjA4YjRjNTVhNzVjMTNm
MGZhNTJmZjYwNTk0OWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMS0wOS0xNiAgQWFyb24gQm9vZG1hbiAgPGFhQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXdvcmsgc2NyaXB0IGNvbnRleHQgY3JlYXRpb24vcmVsZWFzZSBub3RpZmljYXRpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzgyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGlj
L1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRD
cmVhdGVTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRp
ZERlc3Ryb3lTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6
OndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlk
Q3JlYXRlU2NyaXB0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmg6CisKIDIwMTEtMDktMTYgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ3JlYXRlIFdlYkdMIGxheWVyIGZvciBncmFwaGlj
cyBjb250ZXh0cyBvbiBkZW1hbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCmluZGV4IDAwNzZmMTk1NWYzMjMwYzQ5YTBhZDA0ZTE1MTM0NzNkYjY0
MjZkMjQuLmVmYzFhMDIyMTNkNjc0YzA1Y2M5NzIzM2I5NWIzNzBmMDU3YjYyZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAtMjk4LDE3
ICsyOTgsMjggQEAgcHVibGljOgogICAgIC8vIE5vdGlmaWVzIHRoYXQgYSBuZXcgc2NyaXB0IGNv
bnRleHQgaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBmcmFtZS4KICAgICAvLyBUaGlzIGlzIHNp
bWlsYXIgdG8gZGlkQ2xlYXJXaW5kb3dPYmplY3QgYnV0IG9ubHkgY2FsbGVkIG9uY2UgcGVyCiAg
ICAgLy8gZnJhbWUgY29udGV4dC4KKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBDaHJv
bWl1bSBpcyB1cGRhdGVkIHRvIHVzZSB0aGUgYmVsb3cgdmVyc2lvbi4KICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dChXZWJGcmFtZSopIHsgfQotCi0gICAgLy8gTm90aWZp
ZXMgdGhhdCB0aGlzIGZyYW1lJ3Mgc2NyaXB0IGNvbnRleHQgaGFzIGJlZW4gZGVzdHJveWVkLgot
ICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2NyaXB0Q29udGV4dChXZWJGcmFtZSopIHsgfQor
I2lmIFdFQktJVF9VU0lOR19WOAorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTY3JpcHRDb250
ZXh0KFdlYkZyYW1lKiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4sIGludCB3b3JsZElkKSB7IH0K
KyNlbmRpZgogCiAgICAgLy8gTm90aWZpZXMgdGhhdCBhIGdhcmJhZ2UtY29sbGVjdGVkIGNvbnRl
eHQgd2FzIGNyZWF0ZWQgLSBjb250ZW50CiAgICAgLy8gc2NyaXB0cy4KKyAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgd2hlbiBDaHJvbWl1bSBpcyB1cGRhdGVkIHRvIHVzZSBkaWRDcmVhdGVTY3Jp
cHRDb250ZXh0KCkuCiAjaWYgV0VCS0lUX1VTSU5HX1Y4CiAgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dChXZWJGcmFtZSosIGludCB3b3JsZElELCB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PikgeyB9CiAjZW5kaWYKIAorICAgIC8vIE5vdGlmaWVzIHRoYXQgdGhp
cyBmcmFtZSdzIHNjcmlwdCBjb250ZXh0IGhhcyBiZWVuIGRlc3Ryb3llZC4KKyAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgd2hlbiBDaHJvbWl1bSBpcyB1cGRhdGVkIHRvIHVzZSB0aGUgYmVsb3cg
dmVyc2lvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveVNjcmlwdENvbnRleHQoV2ViRnJh
bWUqKSB7IH0KKworI2lmIFdFQktJVF9VU0lOR19WOAorICAgIC8vIFdlYktpdCBpcyBhYm91dCB0
byByZWxlYXNlIGl0cyByZWZlcmVuY2UgdG8gYSB2OCBjb250ZXh0IGZvciBhIGZyYW1lLgorICAg
IHZpcnR1YWwgdm9pZCB3aWxsUmVsZWFzZVNjcmlwdENvbnRleHQoV2ViRnJhbWUqLCB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiwgaW50IHdvcmxkSWQpIHsgfQorI2VuZGlmCisKICAgICAvLyBHZW9t
ZXRyeSBub3RpZmljYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIHRoZSBpbml0
aWFsIGxheW91dCBvZiBhIHBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCBlMjRiZDNhNjA5YTU2NjU4Nzg0NjAz
MWY2ZDYwZmRiYTRiNTU5OGFkLi4yNzJiMzdjNzM1NjRiOTBhNzhmZDg1YTZjYzhlOWM1N2YyZGU4
YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKICNpZiBVU0UoVjgpCi0jaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKKyNp
bmNsdWRlIDx2OC5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTQw
LDIzICsxNDAsMTcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRvY3VtZW50RWxlbWVu
dEF2YWlsYWJsZSgpCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDcmVhdGVEb2N1
bWVudEVsZW1lbnQobV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpkaWRDcmVhdGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKQotewotICAgIGlmIChtX3dlYkZyYW1l
LT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0ZVNjcmlw
dENvbnRleHQobV93ZWJGcmFtZSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
aWREZXN0cm95U2NyaXB0Q29udGV4dEZvckZyYW1lKCkKKyNpZiBVU0UoVjgpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ3JlYXRlU2NyaXB0Q29udGV4dCh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0LCBpbnQgd29ybGRJZCkKIHsKICAgICBpZiAobV93ZWJGcmFtZS0+Y2xp
ZW50KCkpCi0gICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWREZXN0cm95U2NyaXB0Q29u
dGV4dChtX3dlYkZyYW1lKTsKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0
ZVNjcmlwdENvbnRleHQobV93ZWJGcmFtZSwgY29udGV4dCwgd29ybGRJZCk7CiB9CiAKLSNpZiBV
U0UoVjgpCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ3JlYXRlSXNvbGF0ZWRTY3Jp
cHRDb250ZXh0KFY4SXNvbGF0ZWRDb250ZXh0KiBpc29sYXRlZENvbnRleHQpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNvbnRleHQsIGludCB3b3JsZElkKQogewogICAgIGlmIChtX3dlYkZyYW1lLT5j
bGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0ZUlzb2xhdGVk
U2NyaXB0Q29udGV4dChtX3dlYkZyYW1lLCBpc29sYXRlZENvbnRleHQtPndvcmxkKCktPmlkKCks
IGlzb2xhdGVkQ29udGV4dC0+Y29udGV4dCgpKTsKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50
KCktPndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dChtX3dlYkZyYW1lLCBjb250ZXh0LCB3b3JsZElk
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCmluZGV4IDFhZmI4MTEyZDY3MGJhNWUxNGNlNDNkYWQxMzJmMjJm
M2I2N2I3ZjEuLmY0MzBjOWMzYzA5ODFjOGYwOWIxNDBiMWRlN2JhZTA4OThiNzkyYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
CkBAIC02MSwxNSArNjEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAg
IHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKIAotICAgIC8vIEEgZnJh
bWUncyBWOCBjb250ZXh0IHdhcyBjcmVhdGVkIG9yIGRlc3Ryb3llZC4KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dEZvckZyYW1lKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZERlc3Ryb3lTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKTsKLQogI2lmIFVTRShWOCkKLSAgICAvLyBB
IGNvbnRleHQgdW50aWVkIHRvIGEgZnJhbWUgd2FzIGNyZWF0ZWQgKHRocm91Z2ggZXZhbHVhdGVJ
bklzb2xhdGVkV29ybGQpLgotICAgIC8vIFRoaXMgY29udGV4dCBpcyBub3QgdGllZCB0byB0aGUg
bGlmZXRpbWUgb2YgaXRzIGZyYW1lLCBhbmQgaXMgZGVzdHJveWVkCi0gICAgLy8gaW4gZ2FyYmFn
ZSBjb2xsZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRlZFNjcmlwdENv
bnRleHQoV2ViQ29yZTo6VjhJc29sYXRlZENvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlU2NyaXB0Q29udGV4dCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiwgaW50IHdvcmxkSWQp
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVsZWFzZVNjcmlwdENvbnRleHQodjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4sIGludCB3b3JsZElkKTsKICNlbmRpZgogCiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHdlIHNob3VsZCBhbGxvdyB0aGUgZ2l2ZW4gVjggZXh0ZW5zaW9uIHRvIGJlIGFkZGVkIHRv
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXgg
YWUxZjkyOGMzZTUxN2RlYjZlYTcwNTZjZTljNWM4MDkzNDhiY2Y3Ny4uMTZlZGMwMzRmOGNjMmY5
M2U5YWYyM2Y5MGY2MzU1ZGEzNzdkMGZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIldlYkZv
cm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNs
aWVudC5oIgorI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlNlYXJj
aGFibGVGb3JtRGF0YS5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSAiV2ViU2V0dGluZ3MuaCIKQEAgLTE1Myw3ICsxNTQsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0
LCBGcmFtZUZvckVudGVyZWRDb250ZXh0KQogICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQo
Inplcm9fc2l6ZWRfaWZyYW1lLmh0bWwiKTsKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6
ZSB0aGUgV2ViVmlldy4KLSAgICAgVGVzdFdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50Owor
ICAgIFRlc3RXZWJGcmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKICAgICBXZWJWaWV3KiB3ZWJW
aWV3ID0gV2ViVmlldzo6Y3JlYXRlKDApOwogICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEph
dmFTY3JpcHRFbmFibGVkKHRydWUpOwogICAgIHdlYlZpZXctPmluaXRpYWxpemVNYWluRnJhbWUo
JndlYkZyYW1lQ2xpZW50KTsKQEAgLTI1NSw0ICsyNTYsMTk1IEBAIFRFU1RfRihXZWJGcmFtZVRl
c3QsIFJlbG9hZERvZXNudFNldFJlZGlyZWN0KQogICAgIHNlcnZlUmVxdWVzdHMoKTsKIH0KIAor
CisvLyBJbXBsZW1lbnRhdGlvbiBvZiBXZWJGcmFtZUNsaWVudCB0aGF0IHRyYWNrcyB0aGUgdjgg
Y29udGV4dHMgdGhhdCBhcmUgY3JlYXRlZAorLy8gYW5kIGRlc3Ryb3llZCBmb3IgdmVyaWZpY2F0
aW9uLgorY2xhc3MgQ29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50IDogcHVibGljIFdl
YkZyYW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgTm90aWZpY2F0aW9uIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIE5vdGlmaWNhdGlvbihXZWJGcmFtZSogZnJhbWUsIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGNvbnRleHQsIGludCB3b3JsZElkKQorICAgICAgICAgICAgOiBmcmFtZShm
cmFtZSkgLCBjb250ZXh0KHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQp
KSwgd29ybGRJZCh3b3JsZElkKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB+Tm90
aWZpY2F0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC5EaXNwb3NlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBib29sIEVxdWFscyhOb3RpZmljYXRpb24qIG90aGVyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gb3RoZXIgJiYgZnJhbWUgPT0gb3RoZXItPmZyYW1l
ICYmIGNvbnRleHQgPT0gb3RoZXItPmNvbnRleHQgJiYgd29ybGRJZCA9PSBvdGhlci0+d29ybGRJ
ZDsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkZyYW1lKiBmcmFtZTsKKyAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkNvbnRleHQ+IGNvbnRleHQ7CisgICAgICAgIGludCB3b3JsZElkOworICAg
IH07CisKKyAgICB+Q29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50KCkKKyAgICB7Cisg
ICAgICAgIHJlc2V0KCk7CisgICAgfQorCisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNyZWF0ZU5vdGlmaWNhdGlvbnMuc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICBkZWxldGUgY3JlYXRlTm90aWZpY2F0aW9uc1tpXTsKKworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbGVhc2VOb3RpZmljYXRpb25zLnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgZGVsZXRlIHJlbGVhc2VOb3RpZmljYXRpb25zW2ldOworCisgICAgICAgIGNy
ZWF0ZU5vdGlmaWNhdGlvbnMuY2xlYXIoKTsKKyAgICAgICAgcmVsZWFzZU5vdGlmaWNhdGlvbnMu
Y2xlYXIoKTsKKyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxOb3RpZmljYXRpb24qPiBjcmVhdGVO
b3RpZmljYXRpb25zOworICAgIHN0ZDo6dmVjdG9yPE5vdGlmaWNhdGlvbio+IHJlbGVhc2VOb3Rp
ZmljYXRpb25zOworCisgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU2NyaXB0
Q29udGV4dChXZWJGcmFtZSogZnJhbWUsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQs
IGludCB3b3JsZElkKQorICAgIHsKKyAgICAgICAgY3JlYXRlTm90aWZpY2F0aW9ucy5wdXNoX2Jh
Y2sobmV3IE5vdGlmaWNhdGlvbihmcmFtZSwgY29udGV4dCwgd29ybGRJZCkpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVsZWFzZVNjcmlwdENvbnRleHQoV2ViRnJhbWUqIGZyYW1l
LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBpbnQgd29ybGRJZCkKKyAgICB7Cisg
ICAgICAgIHJlbGVhc2VOb3RpZmljYXRpb25zLnB1c2hfYmFjayhuZXcgTm90aWZpY2F0aW9uKGZy
YW1lLCBjb250ZXh0LCB3b3JsZElkKSk7CisgICAgfQorfTsKKworVEVTVF9GKFdlYkZyYW1lVGVz
dCwgQ29udGV4dE5vdGlmaWNhdGlvbnNMb2FkVW5sb2FkKQoreworICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKKworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImNvbnRleHRf
bm90aWZpY2F0aW9uc190ZXN0Lmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KCJjb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdF9mcmFtZS5odG1sIik7CisKKyAgICAvLyBMb2Fk
IGEgZnJhbWUgd2l0aCBhbiBpZnJhbWUsIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHJpZ2h0IGNyZWF0
ZSBub3RpZmljYXRpb25zLgorICAgIENvbnRleHRMaWZldGltZVRlc3RXZWJGcmFtZUNsaWVudCB3
ZWJGcmFtZUNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gV2ViVmlldzo6Y3JlYXRlKDAp
OworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKHRydWUpOwor
ICAgIHdlYlZpZXctPmluaXRpYWxpemVNYWluRnJhbWUoJndlYkZyYW1lQ2xpZW50KTsKKyAgICBs
b2FkSHR0cEZyYW1lKHdlYlZpZXctPm1haW5GcmFtZSgpLCAiY29udGV4dF9ub3RpZmljYXRpb25z
X3Rlc3QuaHRtbCIpOworICAgIHNlcnZlUmVxdWVzdHMoKTsKKworICAgIFdlYkZyYW1lKiBtYWlu
RnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKKyAgICBXZWJGcmFtZSogY2hpbGRGcmFtZSA9
IG1haW5GcmFtZS0+Zmlyc3RDaGlsZCgpOworCisgICAgQVNTRVJUX0VRKDJ1LCB3ZWJGcmFtZUNs
aWVudC5jcmVhdGVOb3RpZmljYXRpb25zLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDB1LCB3ZWJG
cmFtZUNsaWVudC5yZWxlYXNlTm90aWZpY2F0aW9ucy5zaXplKCkpOworCisgICAgQ29udGV4dExp
ZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50OjpOb3RpZmljYXRpb24qIGZpcnN0Q3JlYXRlTm90aWZp
Y2F0aW9uID0gd2ViRnJhbWVDbGllbnQuY3JlYXRlTm90aWZpY2F0aW9uc1swXTsKKyAgICBDb250
ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQ6Ok5vdGlmaWNhdGlvbiogc2Vjb25kQ3JlYXRl
Tm90aWZpY2F0aW9uID0gd2ViRnJhbWVDbGllbnQuY3JlYXRlTm90aWZpY2F0aW9uc1sxXTsKKwor
ICAgIEVYUEVDVF9FUShtYWluRnJhbWUsIGZpcnN0Q3JlYXRlTm90aWZpY2F0aW9uLT5mcmFtZSk7
CisgICAgRVhQRUNUX0VRKG1haW5GcmFtZS0+bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpLCBmaXJz
dENyZWF0ZU5vdGlmaWNhdGlvbi0+Y29udGV4dCk7CisgICAgRVhQRUNUX0VRKDAsIGZpcnN0Q3Jl
YXRlTm90aWZpY2F0aW9uLT53b3JsZElkKTsKKworICAgIEVYUEVDVF9FUShjaGlsZEZyYW1lLCBz
ZWNvbmRDcmVhdGVOb3RpZmljYXRpb24tPmZyYW1lKTsKKyAgICBFWFBFQ1RfRVEoY2hpbGRGcmFt
ZS0+bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpLCBzZWNvbmRDcmVhdGVOb3RpZmljYXRpb24tPmNv
bnRleHQpOworICAgIEVYUEVDVF9FUSgwLCBzZWNvbmRDcmVhdGVOb3RpZmljYXRpb24tPndvcmxk
SWQpOworCisgICAgLy8gQ2xvc2UgdGhlIHZpZXcuIFdlIHNob3VsZCBnZXQgdHdvIHJlbGVhc2Ug
bm90aWZpY2F0aW9ucyB0aGF0IGFyZSBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBjcmVhdGUgb25l
cywgaW4gcmV2ZXJzZSBvcmRlci4KKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworCisgICAgQVNTRVJU
X0VRKDJ1LCB3ZWJGcmFtZUNsaWVudC5yZWxlYXNlTm90aWZpY2F0aW9ucy5zaXplKCkpOworICAg
IENvbnRleHRMaWZldGltZVRlc3RXZWJGcmFtZUNsaWVudDo6Tm90aWZpY2F0aW9uKiBmaXJzdFJl
bGVhc2VOb3RpZmljYXRpb24gPSB3ZWJGcmFtZUNsaWVudC5yZWxlYXNlTm90aWZpY2F0aW9uc1sw
XTsKKyAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQ6Ok5vdGlmaWNhdGlvbiog
c2Vjb25kUmVsZWFzZU5vdGlmaWNhdGlvbiA9IHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmlj
YXRpb25zWzFdOworCisgICAgQVNTRVJUX1RSVUUoZmlyc3RDcmVhdGVOb3RpZmljYXRpb24tPkVx
dWFscyhzZWNvbmRSZWxlYXNlTm90aWZpY2F0aW9uKSk7CisgICAgQVNTRVJUX1RSVUUoc2Vjb25k
Q3JlYXRlTm90aWZpY2F0aW9uLT5FcXVhbHMoZmlyc3RSZWxlYXNlTm90aWZpY2F0aW9uKSk7Cit9
CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIENvbnRleHROb3RpZmljYXRpb25zUmVsb2FkKQorewor
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKworICAgIHJlZ2lzdGVyTW9ja2VkSHR0
cFVSTExvYWQoImNvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0Lmh0bWwiKTsKKyAgICByZWdpc3Rl
ck1vY2tlZEh0dHBVUkxMb2FkKCJjb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdF9mcmFtZS5odG1s
Iik7CisKKyAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGll
bnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgwKTsKKyAgICB3ZWJW
aWV3LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3
LT5pbml0aWFsaXplTWFpbkZyYW1lKCZ3ZWJGcmFtZUNsaWVudCk7CisgICAgbG9hZEh0dHBGcmFt
ZSh3ZWJWaWV3LT5tYWluRnJhbWUoKSwgImNvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0Lmh0bWwi
KTsKKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICAvLyBSZWZyZXNoLCB3ZSBzaG91bGQgZ2V0
IHR3byByZWxlYXNlIG5vdGlmaWNhdGlvbnMgYW5kIHR3byBtb3JlIGNyZWF0ZSBub3RpZmljYXRp
b25zLgorICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5yZWxvYWQoZmFsc2UpOworICAgIHNlcnZl
UmVxdWVzdHMoKTsKKyAgICBBU1NFUlRfRVEoNHUsIHdlYkZyYW1lQ2xpZW50LmNyZWF0ZU5vdGlm
aWNhdGlvbnMuc2l6ZSgpKTsKKyAgICBBU1NFUlRfRVEoMnUsIHdlYkZyYW1lQ2xpZW50LnJlbGVh
c2VOb3RpZmljYXRpb25zLnNpemUoKSk7CisKKyAgICAvLyBUaGUgdHdvIHJlbGVhc2Ugbm90aWZp
Y2F0aW9ucyB3ZSBnb3Qgc2hvdWxkIGJlIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IHR3
byBjcmVhdGUgbm90aWZpY2F0aW9ucy4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkZy
YW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICBFWFBF
Q1RfVFJVRSh3ZWJGcmFtZUNsaWVudC5yZWxlYXNlTm90aWZpY2F0aW9uc1tpXS0+RXF1YWxzKAor
ICAgICAgICAgIHdlYkZyYW1lQ2xpZW50LmNyZWF0ZU5vdGlmaWNhdGlvbnNbd2ViRnJhbWVDbGll
bnQuY3JlYXRlTm90aWZpY2F0aW9ucy5zaXplKCkgLSAzIC0gaV0pKTsKKyAgICB9CisKKyAgICAv
LyBUaGUgbGFzdCB0d28gY3JlYXRlIG5vdGlmaWNhdGlvbnMgc2hvdWxkIGJlIGZvciB0aGUgY3Vy
cmVudCBmcmFtZXMgYW5kIGNvbnRleHQuCisgICAgV2ViRnJhbWUqIG1haW5GcmFtZSA9IHdlYlZp
ZXctPm1haW5GcmFtZSgpOworICAgIFdlYkZyYW1lKiBjaGlsZEZyYW1lID0gbWFpbkZyYW1lLT5m
aXJzdENoaWxkKCk7CisgICAgQ29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50OjpOb3Rp
ZmljYXRpb24qIGZpcnN0UmVmcmVzaE5vdGlmaWNhdGlvbiA9IHdlYkZyYW1lQ2xpZW50LmNyZWF0
ZU5vdGlmaWNhdGlvbnNbMl07CisgICAgQ29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50
OjpOb3RpZmljYXRpb24qIHNlY29uZFJlZnJlc2hOb3RpZmljYXRpb24gPSB3ZWJGcmFtZUNsaWVu
dC5jcmVhdGVOb3RpZmljYXRpb25zWzNdOworCisgICAgRVhQRUNUX0VRKG1haW5GcmFtZSwgZmly
c3RSZWZyZXNoTm90aWZpY2F0aW9uLT5mcmFtZSk7CisgICAgRVhQRUNUX0VRKG1haW5GcmFtZS0+
bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpLCBmaXJzdFJlZnJlc2hOb3RpZmljYXRpb24tPmNvbnRl
eHQpOworICAgIEVYUEVDVF9FUSgwLCBmaXJzdFJlZnJlc2hOb3RpZmljYXRpb24tPndvcmxkSWQp
OworCisgICAgRVhQRUNUX0VRKGNoaWxkRnJhbWUsIHNlY29uZFJlZnJlc2hOb3RpZmljYXRpb24t
PmZyYW1lKTsKKyAgICBFWFBFQ1RfRVEoY2hpbGRGcmFtZS0+bWFpbldvcmxkU2NyaXB0Q29udGV4
dCgpLCBzZWNvbmRSZWZyZXNoTm90aWZpY2F0aW9uLT5jb250ZXh0KTsKKyAgICBFWFBFQ1RfRVEo
MCwgc2Vjb25kUmVmcmVzaE5vdGlmaWNhdGlvbi0+d29ybGRJZCk7CisKKyAgICB3ZWJWaWV3LT5j
bG9zZSgpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZXh0Tm90aWZpY2F0aW9uc0lz
b2xhdGVkV29ybGRzKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKworICAg
IHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImNvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0Lmh0
bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJjb250ZXh0X25vdGlmaWNhdGlv
bnNfdGVzdF9mcmFtZS5odG1sIik7CisKKyAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVD
bGllbnQgd2ViRnJhbWVDbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9IFdlYlZpZXc6OmNy
ZWF0ZSgwKTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0
cnVlKTsKKyAgICB3ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1lKCZ3ZWJGcmFtZUNsaWVudCk7
CisgICAgbG9hZEh0dHBGcmFtZSh3ZWJWaWV3LT5tYWluRnJhbWUoKSwgImNvbnRleHRfbm90aWZp
Y2F0aW9uc190ZXN0Lmh0bWwiKTsKKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICAvLyBBZGQg
YW4gaXNvbGF0ZWQgd29ybGQuCisgICAgd2ViRnJhbWVDbGllbnQucmVzZXQoKTsKKworICAgIGlu
dCBpc29sYXRlZFdvcmxkSWQgPSA0MjsKKyAgICBXZWJTY3JpcHRTb3VyY2Ugc2NyaXB0U291cmNl
KCJoaSEiKTsKKyAgICBpbnQgbnVtU291cmNlcyA9IDE7CisgICAgaW50IGV4dGVuc2lvbkdyb3Vw
ID0gMDsKKyAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZXhlY3V0ZVNjcmlwdEluSXNvbGF0ZWRX
b3JsZChpc29sYXRlZFdvcmxkSWQsICZzY3JpcHRTb3VyY2UsIG51bVNvdXJjZXMsIGV4dGVuc2lv
bkdyb3VwKTsKKworICAgIC8vIFdlIHNob3VsZCBub3cgaGF2ZSBhIG5ldyBjcmVhdGUgbm90aWZp
Y2F0aW9uLgorICAgIEFTU0VSVF9FUSgxdSwgd2ViRnJhbWVDbGllbnQuY3JlYXRlTm90aWZpY2F0
aW9ucy5zaXplKCkpOworICAgIENvbnRleHRMaWZldGltZVRlc3RXZWJGcmFtZUNsaWVudDo6Tm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSB3ZWJGcmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRp
b25zWzBdOworICAgIEFTU0VSVF9FUShpc29sYXRlZFdvcmxkSWQsIG5vdGlmaWNhdGlvbi0+d29y
bGRJZCk7CisgICAgQVNTRVJUX0VRKHdlYlZpZXctPm1haW5GcmFtZSgpLCBub3RpZmljYXRpb24t
PmZyYW1lKTsKKworICAgIC8vIFdlIGRvbid0IGhhdmUgYW4gQVBJIHRvIGVudW1hcmF0ZSBpc29s
YXRlZCB3b3JsZHMgZm9yIGEgZnJhbWUsIGJ1dCB3ZSBjYW4gYXQgbGVhc3QgYXNzZXJ0IHRoYXQg
dGhlIGNvbnRleHQgd2UgZ290IGlzICpub3QqIHRoZSBtYWluIHdvcmxkJ3MgY29udGV4dC4KKyAg
ICBBU1NFUlRfTkUod2ViVmlldy0+bWFpbkZyYW1lKCktPm1haW5Xb3JsZFNjcmlwdENvbnRleHQo
KSwgbm90aWZpY2F0aW9uLT5jb250ZXh0KTsKKworICAgIHdlYlZpZXctPmNsb3NlKCk7CisKKyAg
ICAvLyBXZSBzaG91bGQgaGF2ZSBnb3R0ZW4gdGhyZWUgcmVsZWFzZSBub3RpZmljYXRpb25zIChv
bmUgZm9yIGVhY2ggb2YgdGhlIGZyYW1lcywgcGx1cyBvbmUgZm9yIHRoZSBpc29sYXRlZCBjb250
ZXh0KS4KKyAgICBBU1NFUlRfRVEoM3UsIHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRp
b25zLnNpemUoKSk7CisKKyAgICAvLyBBbmQgb25lIG9mIHRoZW0gc2hvdWxkIGJlIGV4YWN0bHkg
dGhlIHNhbWUgYXMgdGhlIGNyZWF0ZSBub3RpZmljYXRpb24gZm9yIHRoZSBpc29sYXRlZCBjb250
ZXh0LgorICAgIGludCBtYXRjaENvdW50ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAg
ICBpZiAod2ViRnJhbWVDbGllbnQucmVsZWFzZU5vdGlmaWNhdGlvbnNbaV0tPkVxdWFscyh3ZWJG
cmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zWzBdKSkKKyAgICAgICAgKyttYXRjaENvdW50
OworICAgIH0KKyAgICBFWFBFQ1RfRVEoMSwgbWF0Y2hDb3VudCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvY29udGV4
dF9ub3RpZmljYXRpb25zX3Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS9jb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZTQyODAx
MzI0YjdkYzAxMmI1ZThhOTRhNGE3YjdiMjFkOTliNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvY29udGV4dF9ub3RpZmljYXRpb25zX3Rlc3Qu
aHRtbApAQCAtMCwwICsxLDIgQEAKKzxzY3JpcHQ+Y29uc29sZS5sb2coJ0Egc2NyaXB0IGlzIG5l
ZWRlZCB0byBjcmVhdGUgYSBzY3JpcHQgY29udGV4dC4nKTs8L3NjcmlwdD4KKzxpZnJhbWUgc3Jj
PSJjb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdF9mcmFtZS5odG1sIj48L2lmcmFtZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9jb250ZXh0X25vdGlmaWNh
dGlvbnNfdGVzdF9mcmFtZS5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
L2NvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0X2ZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY1YjZi
Mzc1ZDA1YjA5YzA2NzkwODcyYTQxMjQ0N2IwM2RkMDM3ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9jb250ZXh0X25vdGlmaWNhdGlvbnNfdGVz
dF9mcmFtZS5odG1sCkBAIC0wLDAgKzEgQEAKKzxzY3JpcHQ+Y29uc29sZS5sb2coJ0Egc2NyaXB0
IGlzIG5lZWRlZCB0byBjcmVhdGUgYSBzY3JpcHQgY29udGV4dC4nKTs8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108037</attachid>
            <date>2011-09-20 11:47:21 -0700</date>
            <delta_ts>2011-09-20 11:50:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67828-20110920114720.patch</filename>
            <type>text/plain</type>
            <size>24072</size>
            <attacher name="Aaron Boodman">aa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2M2ZmMzg4OTE0OTRkOGY0
ZDE2MDhmYjAzNjBkMTI3YzFjNGExODJkLi5lN2E4N2Q1N2ZlNWFkZWNiMjJjNDFkMWY1YTk5NjE1
MmMwZjQ4NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDktMjAgIEFhcm9u
IEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV3b3JrIHNjcmlwdCBjb250
ZXh0IGNyZWF0aW9uL3JlbGVhc2Ugbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc4MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6ZGlzcG9zZUNvbnRleHRI
YW5kbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0
SWZOZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4SXNvbGF0ZWRDb250ZXh0OjpWOElzb2xhdGVkQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpWOElzb2xhdGVkQ29udGV4dDo6ZGVzdHJveSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWRDcmVhdGVTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMDktMTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmVkIEJSRVdNUCogcGxhdGZvcm0gI2lmZGVmcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRl
eCBjYjRkYjVjOTU2N2ZiMWI1YTFiNjRiMTg1YmI5YTM4ZWI0NGQyODk3Li4xYWQyOTY1ZjYxNzAw
ZjIzMTk1YzdmOTUxY2RhNThlOTI1ZDk3ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIGJvb2wgVjhE
T01XaW5kb3dTaGVsbDo6aXNDb250ZXh0SW5pdGlhbGl6ZWQoKQogdm9pZCBWOERPTVdpbmRvd1No
ZWxsOjpkaXNwb3NlQ29udGV4dEhhbmRsZXMoKQogewogICAgIGlmICghbV9jb250ZXh0LklzRW1w
dHkoKSkgewotICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZERlc3Ryb3lT
Y3JpcHRDb250ZXh0Rm9yRnJhbWUoKTsKKyAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpLT53aWxsUmVsZWFzZVNjcmlwdENvbnRleHQobV9jb250ZXh0LCAwKTsKICAgICAgICAgbV9j
b250ZXh0LkRpc3Bvc2UoKTsKICAgICAgICAgbV9jb250ZXh0LkNsZWFyKCk7CiAKQEAgLTMzOSw3
ICszMzksNyBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6OmluaXRDb250ZXh0SWZOZWVkZWQoKQog
CiAgICAgc2V0U2VjdXJpdHlUb2tlbigpOwogCi0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpLT5kaWRDcmVhdGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKTsKKyAgICBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCktPmRpZENyZWF0ZVNjcmlwdENvbnRleHQobV9jb250ZXh0LCAwKTsKIAog
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nLiBXZSBzaG91bGQgYWN0dWFsbHkgZG8gdGhpcyBm
b3IgdGhlIHByb3BlciB3b3JsZCBvbmNlCiAgICAgLy8gd2UgZG8gaXNvbGF0ZWQgd29ybGRzIHRo
ZSBXZWJDb3JlIHdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SXNvbGF0ZWRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0
ZWRDb250ZXh0LmNwcAppbmRleCA2MjQyODAyYzAxMTZlMjE4YmExNmY1NjNjYTkwMDYwYTM0NGQ4
ODVhLi45NTI4YTc1N2M5YzI4ZjgwZTc3MzJhYjY5YmFiNDU2YzM5YjgzNzNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIHZvaWQgVjhJc29sYXRlZENvbnRleHQ6OmNvbnRleHRXZWFrUmVmZXJlbmNlQ2Fs
bGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvCiB9CiAKIFY4SXNvbGF0ZWRDb250ZXh0
OjpWOElzb2xhdGVkQ29udGV4dChWOFByb3h5KiBwcm94eSwgaW50IGV4dGVuc2lvbkdyb3VwLCBp
bnQgd29ybGRJZCkKLSAgICA6IG1fd29ybGQoSXNvbGF0ZWRXb3JsZDo6Y3JlYXRlKHdvcmxkSWQp
KQorICAgIDogbV93b3JsZChJc29sYXRlZFdvcmxkOjpjcmVhdGUod29ybGRJZCkpLCBtX2ZyYW1l
KHByb3h5LT5mcmFtZSgpKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGJlIGNyZWF0aW5nIGEgbmV3IFY4RE9NV2luZG93U2hlbGwgaGVyZSBp
bnN0ZWFkIG9mIHJpcGluZyBvdXQgdGhlIGNvbnRleHQuCkBAIC02NCw3ICs2NCw3IEBAIFY4SXNv
bGF0ZWRDb250ZXh0OjpWOElzb2xhdGVkQ29udGV4dChWOFByb3h5KiBwcm94eSwgaW50IGV4dGVu
c2lvbkdyb3VwLCBpbnQgd29yCiAKICAgICBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsSGlkZGVu
T2JqZWN0UHJvdG90eXBlKG1fY29udGV4dC0+Z2V0KCkpOwogICAgIC8vIEZJWE1FOiBUaGlzIHdp
bGwgZ28gYXdheSBvbmNlIHdlIGhhdmUgYSB3aW5kb3dTaGVsbCBmb3IgdGhlIGlzb2xhdGVkIHdv
cmxkLgotICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT5pbnN0YWxsRE9NV2luZG93KG1fY29udGV4
dC0+Z2V0KCksIHByb3h5LT5mcmFtZSgpLT5kb21XaW5kb3coKSk7CisgICAgcHJveHktPndpbmRv
d1NoZWxsKCktPmluc3RhbGxET01XaW5kb3cobV9jb250ZXh0LT5nZXQoKSwgbV9mcmFtZS0+ZG9t
V2luZG93KCkpOwogCiAgICAgLy8gVXNpbmcgdGhlIGRlZmF1bHQgc2VjdXJpdHkgdG9rZW4gbWVh
bnMgdGhhdCB0aGUgY2FuQWNjZXNzIGlzIGFsd2F5cwogICAgIC8vIGNhbGxlZCwgd2hpY2ggaXMg
c2xvdy4KQEAgLTc0LDEyICs3NCwxNCBAQCBWOElzb2xhdGVkQ29udGV4dDo6VjhJc29sYXRlZENv
bnRleHQoVjhQcm94eSogcHJveHksIGludCBleHRlbnNpb25Hcm91cCwgaW50IHdvcgogICAgIC8v
ICAgICAgICBjaGFuZ2VzLgogICAgIG1fY29udGV4dC0+Z2V0KCktPlVzZURlZmF1bHRTZWN1cml0
eVRva2VuKCk7CiAKLSAgICBwcm94eS0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWRD
cmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQodGhpcyk7CisgICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5kaWRDcmVhdGVTY3JpcHRDb250ZXh0KGNvbnRleHQoKSwgbV93b3JsZC0+aWQo
KSk7CiB9CiAKIHZvaWQgVjhJc29sYXRlZENvbnRleHQ6OmRlc3Ryb3koKQogeworICAgIG1fZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KGNvbnRleHQo
KSwgbV93b3JsZC0+aWQoKSk7CiAgICAgbV9jb250ZXh0LT5nZXQoKS5NYWtlV2Vhayh0aGlzLCAm
Y29udGV4dFdlYWtSZWZlcmVuY2VDYWxsYmFjayk7CisgICAgbV9mcmFtZSA9IDA7CiB9CiAKIFY4
SXNvbGF0ZWRDb250ZXh0Ojp+VjhJc29sYXRlZENvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmgKaW5kZXggNjRkZjFmMjg1OGQ4ZjRhZTlm
ODA3MTE3NmEzYjJmY2ZlOTlkYzg2OS4uYWM2Y2NkNDRhYTU5N2I2YjI0ZDU3NWNiYmVlYjljOTQx
OGZjNjU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRl
ZENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29u
dGV4dC5oCkBAIC0xMTQsNiArMTE0LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SXNvbGF0ZWRX
b3JsZD4gbV93b3JsZDsKIAogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9y
aWdpbjsKKworICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDIwYTQ4OTQ5MjM1YmYwZDdh
NTQ4ZjJjMjRkMzYzYTI0NjIxYTBiMjkuLjBkZTg3NmJiNGQzODYxNTVlMzRlNTEyNWZmMDZjZDc1
YTIyZDFlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKIAogI2lmIFVTRShWOCkKLSNpbmNs
dWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgorI2luY2x1ZGUgPHY4Lmg+CiAjZW5kaWYKIAogLyoK
QEAgLTM5NCw5ICszOTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9y
SWNvbk5vdGlmaWNhdGlvbihib29sKSB7IH0KIAogI2lmIFVTRShWOCkKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dEZvckZyYW1lKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZERlc3Ryb3lTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KFY4SXNvbGF0ZWRDb250ZXh0KikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4sIGludCB3b3JsZElkKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbGVhc2VTY3Jp
cHRDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+LCBpbnQgd29ybGRJZCkgeyB9CiAgICAg
dmlydHVhbCBib29sIGFsbG93U2NyaXB0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
TmFtZSwgaW50IGV4dGVuc2lvbkdyb3VwKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjE4YjEwNGVlNjFk
ZTFmZWQwODIwMTU5ZThjMDI5NDBkZGZkMDk1MC4uYTlkNGVkMTFhMTJiMzc0ZWY5OGM2NzRiZTM2
N2RiY2YzZDEyYTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTUwLDYgKzUwLDEzIEBAIGNsYXNzIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBjbGFzcyBO
U1ZpZXc7CiAjZW5kaWYKIAorI2lmIFVTRShWOCkKK25hbWVzcGFjZSB2OCB7CitjbGFzcyBDb250
ZXh0OwordGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOworfQorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwpAQCAt
ODYsOSArOTMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2hhcmVkQnVmZmVy
OwogICAgIGNsYXNzIFN0cmluZ1dpdGhEaXJlY3Rpb247CiAgICAgY2xhc3MgU3Vic3RpdHV0ZURh
dGE7Ci0jaWYgVVNFKFY4KQotICAgIGNsYXNzIFY4SXNvbGF0ZWRDb250ZXh0OwotI2VuZGlmCiAg
ICAgY2xhc3MgV2lkZ2V0OwogCiAgICAgdHlwZWRlZiB2b2lkIChQb2xpY3lDaGVja2VyOjoqRnJh
bWVQb2xpY3lGdW5jdGlvbikoUG9saWN5QWN0aW9uKTsKQEAgLTI3MCw5ICsyNzQsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRmlyc3ROYXZp
Z2F0aW9uKCkgY29uc3QgPSAwOyAvLyAiTmF2aWdhdGlvbiIgaGVyZSBtZWFucyBhIHRyYW5zaXRp
b24gZnJvbSBvbmUgcGFnZSB0byBhbm90aGVyIHRoYXQgZW5kcyB1cCBpbiB0aGUgYmFjay9mb3J3
YXJkIGxpc3QuCiAKICNpZiBVU0UoVjgpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVT
Y3JpcHRDb250ZXh0Rm9yRnJhbWUoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0
cm95U2NyaXB0Q29udGV4dEZvckZyYW1lKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KFY4SXNvbGF0ZWRDb250ZXh0KikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dCh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiwgaW50IHdvcmxkSWQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxSZWxl
YXNlU2NyaXB0Q29udGV4dCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiwgaW50IHdvcmxkSWQpID0g
MDsKICAgICAgICAgdmlydHVhbCBib29sIGFsbG93U2NyaXB0RXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uTmFtZSwgaW50IGV4dGVuc2lvbkdyb3VwKSA9IDA7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwZDVmYjc3YWJlMzgwOGZkZjcyYmE4MGJhY2ExNTVk
MWMwNDM2MzczLi5iNjNjYmRiOThjYmZkYzgxNzQwNWM1OWVhOGYzMmQ4Y2ExZDc2NWY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDExLTA5LTIwICBBYXJv
biBCb29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJld29yayBzY3JpcHQgY29u
dGV4dCBjcmVhdGlvbi9yZWxlYXNlIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENyZWF0ZVNjcmlwdENvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkRGVzdHJveVNjcmlwdENvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6d2lsbFJlbGVhc2VTY3JpcHRDb250
ZXh0KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWRDcmVhdGVTY3JpcHRDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjp3aWxsUmVsZWFzZVNjcmlw
dENvbnRleHQpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAgICAg
ICAgKiB0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgor
ICAgICAgICAoV2ViS2l0OjpDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQ6Ok5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dExpZmV0aW1l
VGVzdFdlYkZyYW1lQ2xpZW50OjpOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQ6Ok5vdGlmaWNhdGlv
bjo6RXF1YWxzKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1l
Q2xpZW50Ojp+Q29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6Q29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50OjpyZXNldCk6CisgICAgICAg
IChXZWJLaXQ6OkNvbnRleHRMaWZldGltZVRlc3RXZWJGcmFtZUNsaWVudDo6ZGlkQ3JlYXRlU2Ny
aXB0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRMaWZldGltZVRlc3RXZWJGcmFt
ZUNsaWVudDo6d2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKiB0ZXN0cy9kYXRh
L2NvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3Rz
L2RhdGEvY29udGV4dF9ub3RpZmljYXRpb25zX3Rlc3RfZnJhbWUuaHRtbDogQWRkZWQuCisKIDIw
MTEtMDktMTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmVkIEVOQUJMRV9KU0NfTVVMVElQTEVfVEhSRUFEUyBhbmQgcmVsYXRlZCAjaWZkZWZzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKaW5kZXgg
MDA3NmYxOTU1ZjMyMzBjNDlhMGFkMDRlMTUxMzQ3M2RiNjQyNmQyNC4uZWZjMWEwMjIxM2Q2NzRj
MDVjYzk3MjMzYjk1YjM3MGYwNTdiNjJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBAIC0yOTgsMTcgKzI5OCwyOCBAQCBwdWJsaWM6CiAg
ICAgLy8gTm90aWZpZXMgdGhhdCBhIG5ldyBzY3JpcHQgY29udGV4dCBoYXMgYmVlbiBjcmVhdGVk
IGZvciB0aGlzIGZyYW1lLgogICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byBkaWRDbGVhcldpbmRv
d09iamVjdCBidXQgb25seSBjYWxsZWQgb25jZSBwZXIKICAgICAvLyBmcmFtZSBjb250ZXh0Lgor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIENocm9taXVtIGlzIHVwZGF0ZWQgdG8gdXNl
IHRoZSBiZWxvdyB2ZXJzaW9uLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTY3JpcHRDb250
ZXh0KFdlYkZyYW1lKikgeyB9Ci0KLSAgICAvLyBOb3RpZmllcyB0aGF0IHRoaXMgZnJhbWUncyBz
Y3JpcHQgY29udGV4dCBoYXMgYmVlbiBkZXN0cm95ZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZERl
c3Ryb3lTY3JpcHRDb250ZXh0KFdlYkZyYW1lKikgeyB9CisjaWYgV0VCS0lUX1VTSU5HX1Y4Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRleHQoV2ViRnJhbWUqLCB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiwgaW50IHdvcmxkSWQpIHsgfQorI2VuZGlmCiAKICAgICAvLyBOb3Rp
ZmllcyB0aGF0IGEgZ2FyYmFnZS1jb2xsZWN0ZWQgY29udGV4dCB3YXMgY3JlYXRlZCAtIGNvbnRl
bnQKICAgICAvLyBzY3JpcHRzLgorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIENocm9t
aXVtIGlzIHVwZGF0ZWQgdG8gdXNlIGRpZENyZWF0ZVNjcmlwdENvbnRleHQoKS4KICNpZiBXRUJL
SVRfVVNJTkdfVjgKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250
ZXh0KFdlYkZyYW1lKiwgaW50IHdvcmxkSUQsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KSB7IH0K
ICNlbmRpZgogCisgICAgLy8gTm90aWZpZXMgdGhhdCB0aGlzIGZyYW1lJ3Mgc2NyaXB0IGNvbnRl
eHQgaGFzIGJlZW4gZGVzdHJveWVkLgorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIENo
cm9taXVtIGlzIHVwZGF0ZWQgdG8gdXNlIHRoZSBiZWxvdyB2ZXJzaW9uLgorICAgIHZpcnR1YWwg
dm9pZCBkaWREZXN0cm95U2NyaXB0Q29udGV4dChXZWJGcmFtZSopIHsgfQorCisjaWYgV0VCS0lU
X1VTSU5HX1Y4CisgICAgLy8gV2ViS2l0IGlzIGFib3V0IHRvIHJlbGVhc2UgaXRzIHJlZmVyZW5j
ZSB0byBhIHY4IGNvbnRleHQgZm9yIGEgZnJhbWUuCisgICAgdmlydHVhbCB2b2lkIHdpbGxSZWxl
YXNlU2NyaXB0Q29udGV4dChXZWJGcmFtZSosIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+LCBpbnQg
d29ybGRJZCkgeyB9CisjZW5kaWYKKwogICAgIC8vIEdlb21ldHJ5IG5vdGlmaWNhdGlvbnMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gVGhl
IGZyYW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgdGhlIGluaXRpYWwgbGF5b3V0IG9mIGEgcGFnZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCmluZGV4IGZhMDZkNmExOWIyNzRhNzVkNGM5YmNiY2EzMjMyYTQ5MjA3YWJmZjUuLjNh
YjFiZGJjYWM3ZGIxNDc4NzAzZTcwNTk4OWI1MDBiNWU4YmRmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtODUs
NyArODUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFVTRShWOCkK
LSNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgorI2luY2x1ZGUgPHY4Lmg+CiAjZW5kaWYK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNDAsMjMgKzE0MCwyOSBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkKICAgICAgICAg
bV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0ZURvY3VtZW50RWxlbWVudChtX3dlYkZyYW1l
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZENyZWF0ZVNjcmlwdENvbnRl
eHRGb3JGcmFtZSgpCisjaWYgVVNFKFY4KQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
ZENyZWF0ZVNjcmlwdENvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCwgaW50
IHdvcmxkSWQpCiB7Ci0gICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQotICAgICAgICBtX3dl
YkZyYW1lLT5jbGllbnQoKS0+ZGlkQ3JlYXRlU2NyaXB0Q29udGV4dChtX3dlYkZyYW1lKTsKLX0K
KyAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGVzZSBvbmNlIENocm9taXVtIGlzIHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgdmVyc2lvbiBv
ZiBkaWRDcmVhdGVTY3JpcHRDb250ZXh0KCkuCisgICAgICAgIGlmICh3b3JsZElkKQorICAgICAg
ICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4
dChtX3dlYkZyYW1lLCB3b3JsZElkLCBjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0ZVNjcmlwdENvbnRleHQobV93ZWJGcmFt
ZSk7CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWREZXN0cm95U2NyaXB0Q29udGV4
dEZvckZyYW1lKCkKLXsKLSAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1f
d2ViRnJhbWUtPmNsaWVudCgpLT5kaWREZXN0cm95U2NyaXB0Q29udGV4dChtX3dlYkZyYW1lKTsK
KyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0ZVNjcmlwdENvbnRleHQobV93
ZWJGcmFtZSwgY29udGV4dCwgd29ybGRJZCk7CisgICAgfQogfQogCi0jaWYgVVNFKFY4KQotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dChW
OElzb2xhdGVkQ29udGV4dCogaXNvbGF0ZWRDb250ZXh0KQordm9pZCBGcmFtZUxvYWRlckNsaWVu
dEltcGw6OndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBj
b250ZXh0LCBpbnQgd29ybGRJZCkKIHsKLSAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0g
ICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRl
eHQobV93ZWJGcmFtZSwgaXNvbGF0ZWRDb250ZXh0LT53b3JsZCgpLT5pZCgpLCBpc29sYXRlZENv
bnRleHQtPmNvbnRleHQoKSk7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIENocm9taXVtIGlzIHVwZGF0ZWQgdG8gdXNl
IHdpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCgpLgorICAgICAgICBpZiAoIXdvcmxkSWQpCisgICAg
ICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkRGVzdHJveVNjcmlwdENvbnRleHQobV93
ZWJGcmFtZSk7CisKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPndpbGxSZWxlYXNlU2Ny
aXB0Q29udGV4dChtX3dlYkZyYW1lLCBjb250ZXh0LCB3b3JsZElkKTsKKyAgICB9CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaAppbmRleCA5MWEyZDk5MDFiOTAxZDJiMWMzYzRlZWQyNzk2Y2U3MTBhZTlkZTEwLi4y
NDhlZGQ1NzFiYWU2YzA3OTg4YTY0MDAzZWIzN2RmMmYyODIyZWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtNjEsMTUg
KzYxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCk7CiAKLSAgICAvLyBBIGZyYW1lJ3MgVjggY29u
dGV4dCB3YXMgY3JlYXRlZCBvciBkZXN0cm95ZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2Ny
aXB0Q29udGV4dEZvckZyYW1lKCk7Ci0KICNpZiBVU0UoVjgpCi0gICAgLy8gQSBjb250ZXh0IHVu
dGllZCB0byBhIGZyYW1lIHdhcyBjcmVhdGVkICh0aHJvdWdoIGV2YWx1YXRlSW5Jc29sYXRlZFdv
cmxkKS4KLSAgICAvLyBUaGlzIGNvbnRleHQgaXMgbm90IHRpZWQgdG8gdGhlIGxpZmV0aW1lIG9m
IGl0cyBmcmFtZSwgYW5kIGlzIGRlc3Ryb3llZAotICAgIC8vIGluIGdhcmJhZ2UgY29sbGVjdGlv
bi4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KFdlYkNv
cmU6OlY4SXNvbGF0ZWRDb250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlw
dENvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4sIGludCB3b3JsZElkKTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbFJlbGVhc2VTY3JpcHRDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
LCBpbnQgd29ybGRJZCk7CiAjZW5kaWYKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91
bGQgYWxsb3cgdGhlIGdpdmVuIFY4IGV4dGVuc2lvbiB0byBiZSBhZGRlZCB0bwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCmluZGV4IGNlZTcxYmUwNWRi
NTlmYmI3ZTdkODY3ZGI4MDI5MWNhMjJhYTkxODAuLmJiZGViMmQ3MzA2ZTBlYTViYTc3NzJhOTcx
OGE2MjJkODBlMGY1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZy
YW1lVGVzdC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJGb3JtRWxlbWVudC5o
IgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNp
bmNsdWRlICJXZWJTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hhYmxlRm9ybURh
dGEuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIldlYlNldHRp
bmdzLmgiCkBAIC0xNTcsNyArMTU4LDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgRnJhbWVGb3JF
bnRlcmVkQ29udGV4dCkKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJ6ZXJvX3NpemVk
X2lmcmFtZS5odG1sIik7CiAKICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIFdlYlZp
ZXcuCi0gICAgIFRlc3RXZWJGcmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKKyAgICBUZXN0V2Vi
RnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IFdlYlZp
ZXc6OmNyZWF0ZSgwKTsKICAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5h
YmxlZCh0cnVlKTsKICAgICB3ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1lKCZ3ZWJGcmFtZUNs
aWVudCk7CkBAIC0yODAsNyArMjgxLDE5NyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDbGVhckZv
Y3VzZWROb2RlVGVzdCkKICAgICAvLyBOb3cgcmV0cmlldmUgdGhlIEZvY3VzZWROb2RlIGFuZCB0
ZXN0IGl0IHNob3VsZCBiZSBudWxsLgogICAgIEVYUEVDVF9FUSgwLCB3ZWJWaWV3SW1wbC0+Zm9j
dXNlZFdlYkNvcmVOb2RlKCkpOwogCi0gICAgd2ViVmlld0ltcGwtPmNsb3NlKCk7IAorICAgIHdl
YlZpZXdJbXBsLT5jbG9zZSgpOworfQorCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBXZWJGcmFtZUNs
aWVudCB0aGF0IHRyYWNrcyB0aGUgdjggY29udGV4dHMgdGhhdCBhcmUgY3JlYXRlZAorLy8gYW5k
IGRlc3Ryb3llZCBmb3IgdmVyaWZpY2F0aW9uLgorY2xhc3MgQ29udGV4dExpZmV0aW1lVGVzdFdl
YkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdHJ1
Y3QgTm90aWZpY2F0aW9uIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE5vdGlmaWNhdGlvbihXZWJG
cmFtZSogZnJhbWUsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQsIGludCB3b3JsZElk
KQorICAgICAgICAgICAgOiBmcmFtZShmcmFtZSkgLCBjb250ZXh0KHY4OjpQZXJzaXN0ZW50PHY4
OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQpKSwgd29ybGRJZCh3b3JsZElkKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICB+Tm90aWZpY2F0aW9uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC5EaXNwb3NlKCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIEVxdWFscyhO
b3RpZmljYXRpb24qIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gb3RoZXIg
JiYgZnJhbWUgPT0gb3RoZXItPmZyYW1lICYmIGNvbnRleHQgPT0gb3RoZXItPmNvbnRleHQgJiYg
d29ybGRJZCA9PSBvdGhlci0+d29ybGRJZDsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkZyYW1l
KiBmcmFtZTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IGNvbnRleHQ7Cisg
ICAgICAgIGludCB3b3JsZElkOworICAgIH07CisKKyAgICB+Q29udGV4dExpZmV0aW1lVGVzdFdl
YkZyYW1lQ2xpZW50KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgfQorCisgICAgdm9p
ZCByZXNldCgpCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNyZWF0ZU5v
dGlmaWNhdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBkZWxldGUgY3JlYXRlTm90aWZp
Y2F0aW9uc1tpXTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbGVhc2VOb3Rp
ZmljYXRpb25zLnNpemUoKTsgKytpKQorICAgICAgICAgICAgZGVsZXRlIHJlbGVhc2VOb3RpZmlj
YXRpb25zW2ldOworCisgICAgICAgIGNyZWF0ZU5vdGlmaWNhdGlvbnMuY2xlYXIoKTsKKyAgICAg
ICAgcmVsZWFzZU5vdGlmaWNhdGlvbnMuY2xlYXIoKTsKKyAgICB9CisKKyAgICBzdGQ6OnZlY3Rv
cjxOb3RpZmljYXRpb24qPiBjcmVhdGVOb3RpZmljYXRpb25zOworICAgIHN0ZDo6dmVjdG9yPE5v
dGlmaWNhdGlvbio+IHJlbGVhc2VOb3RpZmljYXRpb25zOworCisgcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dChXZWJGcmFtZSogZnJhbWUsIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQsIGludCB3b3JsZElkKQorICAgIHsKKyAgICAgICAgY3Jl
YXRlTm90aWZpY2F0aW9ucy5wdXNoX2JhY2sobmV3IE5vdGlmaWNhdGlvbihmcmFtZSwgY29udGV4
dCwgd29ybGRJZCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVsZWFzZVNjcmlw
dENvbnRleHQoV2ViRnJhbWUqIGZyYW1lLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
LCBpbnQgd29ybGRJZCkKKyAgICB7CisgICAgICAgIHJlbGVhc2VOb3RpZmljYXRpb25zLnB1c2hf
YmFjayhuZXcgTm90aWZpY2F0aW9uKGZyYW1lLCBjb250ZXh0LCB3b3JsZElkKSk7CisgICAgfQor
fTsKKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29udGV4dE5vdGlmaWNhdGlvbnNMb2FkVW5sb2Fk
KQoreworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKworICAgIHJlZ2lzdGVyTW9j
a2VkSHR0cFVSTExvYWQoImNvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0Lmh0bWwiKTsKKyAgICBy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJjb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdF9mcmFt
ZS5odG1sIik7CisKKyAgICAvLyBMb2FkIGEgZnJhbWUgd2l0aCBhbiBpZnJhbWUsIG1ha2Ugc3Vy
ZSB3ZSBnZXQgdGhlIHJpZ2h0IGNyZWF0ZSBub3RpZmljYXRpb25zLgorICAgIENvbnRleHRMaWZl
dGltZVRlc3RXZWJGcmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJW
aWV3ID0gV2ViVmlldzo6Y3JlYXRlKDApOworICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEph
dmFTY3JpcHRFbmFibGVkKHRydWUpOworICAgIHdlYlZpZXctPmluaXRpYWxpemVNYWluRnJhbWUo
JndlYkZyYW1lQ2xpZW50KTsKKyAgICBsb2FkSHR0cEZyYW1lKHdlYlZpZXctPm1haW5GcmFtZSgp
LCAiY29udGV4dF9ub3RpZmljYXRpb25zX3Rlc3QuaHRtbCIpOworICAgIHNlcnZlUmVxdWVzdHMo
KTsKKworICAgIFdlYkZyYW1lKiBtYWluRnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKKyAg
ICBXZWJGcmFtZSogY2hpbGRGcmFtZSA9IG1haW5GcmFtZS0+Zmlyc3RDaGlsZCgpOworCisgICAg
QVNTRVJUX0VRKDJ1LCB3ZWJGcmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zLnNpemUoKSk7
CisgICAgRVhQRUNUX0VRKDB1LCB3ZWJGcmFtZUNsaWVudC5yZWxlYXNlTm90aWZpY2F0aW9ucy5z
aXplKCkpOworCisgICAgQ29udGV4dExpZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50OjpOb3RpZmlj
YXRpb24qIGZpcnN0Q3JlYXRlTm90aWZpY2F0aW9uID0gd2ViRnJhbWVDbGllbnQuY3JlYXRlTm90
aWZpY2F0aW9uc1swXTsKKyAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQ6Ok5v
dGlmaWNhdGlvbiogc2Vjb25kQ3JlYXRlTm90aWZpY2F0aW9uID0gd2ViRnJhbWVDbGllbnQuY3Jl
YXRlTm90aWZpY2F0aW9uc1sxXTsKKworICAgIEVYUEVDVF9FUShtYWluRnJhbWUsIGZpcnN0Q3Jl
YXRlTm90aWZpY2F0aW9uLT5mcmFtZSk7CisgICAgRVhQRUNUX0VRKG1haW5GcmFtZS0+bWFpbldv
cmxkU2NyaXB0Q29udGV4dCgpLCBmaXJzdENyZWF0ZU5vdGlmaWNhdGlvbi0+Y29udGV4dCk7Cisg
ICAgRVhQRUNUX0VRKDAsIGZpcnN0Q3JlYXRlTm90aWZpY2F0aW9uLT53b3JsZElkKTsKKworICAg
IEVYUEVDVF9FUShjaGlsZEZyYW1lLCBzZWNvbmRDcmVhdGVOb3RpZmljYXRpb24tPmZyYW1lKTsK
KyAgICBFWFBFQ1RfRVEoY2hpbGRGcmFtZS0+bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpLCBzZWNv
bmRDcmVhdGVOb3RpZmljYXRpb24tPmNvbnRleHQpOworICAgIEVYUEVDVF9FUSgwLCBzZWNvbmRD
cmVhdGVOb3RpZmljYXRpb24tPndvcmxkSWQpOworCisgICAgLy8gQ2xvc2UgdGhlIHZpZXcuIFdl
IHNob3VsZCBnZXQgdHdvIHJlbGVhc2Ugbm90aWZpY2F0aW9ucyB0aGF0IGFyZSBleGFjdGx5IHRo
ZSBzYW1lIGFzIHRoZSBjcmVhdGUgb25lcywgaW4gcmV2ZXJzZSBvcmRlci4KKyAgICB3ZWJWaWV3
LT5jbG9zZSgpOworCisgICAgQVNTRVJUX0VRKDJ1LCB3ZWJGcmFtZUNsaWVudC5yZWxlYXNlTm90
aWZpY2F0aW9ucy5zaXplKCkpOworICAgIENvbnRleHRMaWZldGltZVRlc3RXZWJGcmFtZUNsaWVu
dDo6Tm90aWZpY2F0aW9uKiBmaXJzdFJlbGVhc2VOb3RpZmljYXRpb24gPSB3ZWJGcmFtZUNsaWVu
dC5yZWxlYXNlTm90aWZpY2F0aW9uc1swXTsKKyAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2ViRnJh
bWVDbGllbnQ6Ok5vdGlmaWNhdGlvbiogc2Vjb25kUmVsZWFzZU5vdGlmaWNhdGlvbiA9IHdlYkZy
YW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zWzFdOworCisgICAgQVNTRVJUX1RSVUUoZmly
c3RDcmVhdGVOb3RpZmljYXRpb24tPkVxdWFscyhzZWNvbmRSZWxlYXNlTm90aWZpY2F0aW9uKSk7
CisgICAgQVNTRVJUX1RSVUUoc2Vjb25kQ3JlYXRlTm90aWZpY2F0aW9uLT5FcXVhbHMoZmlyc3RS
ZWxlYXNlTm90aWZpY2F0aW9uKSk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIENvbnRleHRO
b3RpZmljYXRpb25zUmVsb2FkKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
KworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImNvbnRleHRfbm90aWZpY2F0aW9uc190
ZXN0Lmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJjb250ZXh0X25vdGlm
aWNhdGlvbnNfdGVzdF9mcmFtZS5odG1sIik7CisKKyAgICBDb250ZXh0TGlmZXRpbWVUZXN0V2Vi
RnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9IFdlYlZp
ZXc6OmNyZWF0ZSgwKTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5h
YmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1lKCZ3ZWJGcmFtZUNs
aWVudCk7CisgICAgbG9hZEh0dHBGcmFtZSh3ZWJWaWV3LT5tYWluRnJhbWUoKSwgImNvbnRleHRf
bm90aWZpY2F0aW9uc190ZXN0Lmh0bWwiKTsKKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICAv
LyBSZWZyZXNoLCB3ZSBzaG91bGQgZ2V0IHR3byByZWxlYXNlIG5vdGlmaWNhdGlvbnMgYW5kIHR3
byBtb3JlIGNyZWF0ZSBub3RpZmljYXRpb25zLgorICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5y
ZWxvYWQoZmFsc2UpOworICAgIHNlcnZlUmVxdWVzdHMoKTsKKyAgICBBU1NFUlRfRVEoNHUsIHdl
YkZyYW1lQ2xpZW50LmNyZWF0ZU5vdGlmaWNhdGlvbnMuc2l6ZSgpKTsKKyAgICBBU1NFUlRfRVEo
MnUsIHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zLnNpemUoKSk7CisKKyAgICAv
LyBUaGUgdHdvIHJlbGVhc2Ugbm90aWZpY2F0aW9ucyB3ZSBnb3Qgc2hvdWxkIGJlIGV4YWN0bHkg
dGhlIHNhbWUgYXMgdGhlIGZpcnN0IHR3byBjcmVhdGUgbm90aWZpY2F0aW9ucy4KKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zLnNp
emUoKTsgKytpKSB7CisgICAgICBFWFBFQ1RfVFJVRSh3ZWJGcmFtZUNsaWVudC5yZWxlYXNlTm90
aWZpY2F0aW9uc1tpXS0+RXF1YWxzKAorICAgICAgICAgIHdlYkZyYW1lQ2xpZW50LmNyZWF0ZU5v
dGlmaWNhdGlvbnNbd2ViRnJhbWVDbGllbnQuY3JlYXRlTm90aWZpY2F0aW9ucy5zaXplKCkgLSAz
IC0gaV0pKTsKKyAgICB9CisKKyAgICAvLyBUaGUgbGFzdCB0d28gY3JlYXRlIG5vdGlmaWNhdGlv
bnMgc2hvdWxkIGJlIGZvciB0aGUgY3VycmVudCBmcmFtZXMgYW5kIGNvbnRleHQuCisgICAgV2Vi
RnJhbWUqIG1haW5GcmFtZSA9IHdlYlZpZXctPm1haW5GcmFtZSgpOworICAgIFdlYkZyYW1lKiBj
aGlsZEZyYW1lID0gbWFpbkZyYW1lLT5maXJzdENoaWxkKCk7CisgICAgQ29udGV4dExpZmV0aW1l
VGVzdFdlYkZyYW1lQ2xpZW50OjpOb3RpZmljYXRpb24qIGZpcnN0UmVmcmVzaE5vdGlmaWNhdGlv
biA9IHdlYkZyYW1lQ2xpZW50LmNyZWF0ZU5vdGlmaWNhdGlvbnNbMl07CisgICAgQ29udGV4dExp
ZmV0aW1lVGVzdFdlYkZyYW1lQ2xpZW50OjpOb3RpZmljYXRpb24qIHNlY29uZFJlZnJlc2hOb3Rp
ZmljYXRpb24gPSB3ZWJGcmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zWzNdOworCisgICAg
RVhQRUNUX0VRKG1haW5GcmFtZSwgZmlyc3RSZWZyZXNoTm90aWZpY2F0aW9uLT5mcmFtZSk7Cisg
ICAgRVhQRUNUX0VRKG1haW5GcmFtZS0+bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpLCBmaXJzdFJl
ZnJlc2hOb3RpZmljYXRpb24tPmNvbnRleHQpOworICAgIEVYUEVDVF9FUSgwLCBmaXJzdFJlZnJl
c2hOb3RpZmljYXRpb24tPndvcmxkSWQpOworCisgICAgRVhQRUNUX0VRKGNoaWxkRnJhbWUsIHNl
Y29uZFJlZnJlc2hOb3RpZmljYXRpb24tPmZyYW1lKTsKKyAgICBFWFBFQ1RfRVEoY2hpbGRGcmFt
ZS0+bWFpbldvcmxkU2NyaXB0Q29udGV4dCgpLCBzZWNvbmRSZWZyZXNoTm90aWZpY2F0aW9uLT5j
b250ZXh0KTsKKyAgICBFWFBFQ1RfRVEoMCwgc2Vjb25kUmVmcmVzaE5vdGlmaWNhdGlvbi0+d29y
bGRJZCk7CisKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0
LCBDb250ZXh0Tm90aWZpY2F0aW9uc0lzb2xhdGVkV29ybGRzKQoreworICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKKworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImNvbnRl
eHRfbm90aWZpY2F0aW9uc190ZXN0Lmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxM
b2FkKCJjb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdF9mcmFtZS5odG1sIik7CisKKyAgICBDb250
ZXh0TGlmZXRpbWVUZXN0V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7CisgICAgV2ViVmll
dyogd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgwKTsKKyAgICB3ZWJWaWV3LT5zZXR0aW5ncygp
LT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICB3ZWJWaWV3LT5pbml0aWFsaXplTWFp
bkZyYW1lKCZ3ZWJGcmFtZUNsaWVudCk7CisgICAgbG9hZEh0dHBGcmFtZSh3ZWJWaWV3LT5tYWlu
RnJhbWUoKSwgImNvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0Lmh0bWwiKTsKKyAgICBzZXJ2ZVJl
cXVlc3RzKCk7CisKKyAgICAvLyBBZGQgYW4gaXNvbGF0ZWQgd29ybGQuCisgICAgd2ViRnJhbWVD
bGllbnQucmVzZXQoKTsKKworICAgIGludCBpc29sYXRlZFdvcmxkSWQgPSA0MjsKKyAgICBXZWJT
Y3JpcHRTb3VyY2Ugc2NyaXB0U291cmNlKCJoaSEiKTsKKyAgICBpbnQgbnVtU291cmNlcyA9IDE7
CisgICAgaW50IGV4dGVuc2lvbkdyb3VwID0gMDsKKyAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+
ZXhlY3V0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkSWQsICZzY3JpcHRTb3Vy
Y2UsIG51bVNvdXJjZXMsIGV4dGVuc2lvbkdyb3VwKTsKKworICAgIC8vIFdlIHNob3VsZCBub3cg
aGF2ZSBhIG5ldyBjcmVhdGUgbm90aWZpY2F0aW9uLgorICAgIEFTU0VSVF9FUSgxdSwgd2ViRnJh
bWVDbGllbnQuY3JlYXRlTm90aWZpY2F0aW9ucy5zaXplKCkpOworICAgIENvbnRleHRMaWZldGlt
ZVRlc3RXZWJGcmFtZUNsaWVudDo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSB3ZWJGcmFt
ZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zWzBdOworICAgIEFTU0VSVF9FUShpc29sYXRlZFdv
cmxkSWQsIG5vdGlmaWNhdGlvbi0+d29ybGRJZCk7CisgICAgQVNTRVJUX0VRKHdlYlZpZXctPm1h
aW5GcmFtZSgpLCBub3RpZmljYXRpb24tPmZyYW1lKTsKKworICAgIC8vIFdlIGRvbid0IGhhdmUg
YW4gQVBJIHRvIGVudW1hcmF0ZSBpc29sYXRlZCB3b3JsZHMgZm9yIGEgZnJhbWUsIGJ1dCB3ZSBj
YW4gYXQgbGVhc3QgYXNzZXJ0IHRoYXQgdGhlIGNvbnRleHQgd2UgZ290IGlzICpub3QqIHRoZSBt
YWluIHdvcmxkJ3MgY29udGV4dC4KKyAgICBBU1NFUlRfTkUod2ViVmlldy0+bWFpbkZyYW1lKCkt
Pm1haW5Xb3JsZFNjcmlwdENvbnRleHQoKSwgbm90aWZpY2F0aW9uLT5jb250ZXh0KTsKKworICAg
IHdlYlZpZXctPmNsb3NlKCk7CisKKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBnb3R0ZW4gdGhyZWUg
cmVsZWFzZSBub3RpZmljYXRpb25zIChvbmUgZm9yIGVhY2ggb2YgdGhlIGZyYW1lcywgcGx1cyBv
bmUgZm9yIHRoZSBpc29sYXRlZCBjb250ZXh0KS4KKyAgICBBU1NFUlRfRVEoM3UsIHdlYkZyYW1l
Q2xpZW50LnJlbGVhc2VOb3RpZmljYXRpb25zLnNpemUoKSk7CisKKyAgICAvLyBBbmQgb25lIG9m
IHRoZW0gc2hvdWxkIGJlIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIGNyZWF0ZSBub3RpZmljYXRp
b24gZm9yIHRoZSBpc29sYXRlZCBjb250ZXh0LgorICAgIGludCBtYXRjaENvdW50ID0gMDsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkZyYW1lQ2xpZW50LnJlbGVhc2VOb3RpZmljYXRp
b25zLnNpemUoKTsgKytpKSB7CisgICAgICBpZiAod2ViRnJhbWVDbGllbnQucmVsZWFzZU5vdGlm
aWNhdGlvbnNbaV0tPkVxdWFscyh3ZWJGcmFtZUNsaWVudC5jcmVhdGVOb3RpZmljYXRpb25zWzBd
KSkKKyAgICAgICAgKyttYXRjaENvdW50OworICAgIH0KKyAgICBFWFBFQ1RfRVEoMSwgbWF0Y2hD
b3VudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL2RhdGEvY29udGV4dF9ub3RpZmljYXRpb25zX3Rlc3QuaHRtbCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9jb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJiZTQyODAxMzI0YjdkYzAxMmI1ZThhOTRhNGE3YjdiMjFkOTliNWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvY29u
dGV4dF9ub3RpZmljYXRpb25zX3Rlc3QuaHRtbApAQCAtMCwwICsxLDIgQEAKKzxzY3JpcHQ+Y29u
c29sZS5sb2coJ0Egc2NyaXB0IGlzIG5lZWRlZCB0byBjcmVhdGUgYSBzY3JpcHQgY29udGV4dC4n
KTs8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJjb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdF9mcmFt
ZS5odG1sIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS9jb250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdF9mcmFtZS5odG1sIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2NvbnRleHRfbm90aWZpY2F0aW9uc190ZXN0X2ZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWY1YjZiMzc1ZDA1YjA5YzA2NzkwODcyYTQxMjQ0N2IwM2RkMDM3
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9j
b250ZXh0X25vdGlmaWNhdGlvbnNfdGVzdF9mcmFtZS5odG1sCkBAIC0wLDAgKzEgQEAKKzxzY3Jp
cHQ+Y29uc29sZS5sb2coJ0Egc2NyaXB0IGlzIG5lZWRlZCB0byBjcmVhdGUgYSBzY3JpcHQgY29u
dGV4dC4nKTs8L3NjcmlwdD4K
</data>
<flag name="review"
          id="104901"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>