<?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>44183</bug_id>
          
          <creation_ts>2010-08-18 09:47:42 -0700</creation_ts>
          <short_desc>Crash in HistoryController::recursiveGoToItem when navigating in a frame while another frame has a custom window name</short_desc>
          <delta_ts>2010-09-17 12:06:56 -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>History</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Mihai Parparita">mihaip</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>progame+wk</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>266173</commentid>
    <comment_count>0</comment_count>
      <attachid>64720</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-18 09:47:42 -0700</bug_when>
    <thetext>Created attachment 64720
Test case

The attached test case crashes WebKit nightlies reliably when following the instructions in the left iframe (click, press back, then forward). Having the other iframe set window.name when it loads is necessary to trigger this.

In debug mode the following assert fires:

ASSERTION FAILED: fromItem
(/Users/mihaip/Developer/source/chromium1/src/third_party/WebKit/WebCore/loader/HistoryController.cpp:553 void WebCore::HistoryController::recursiveGoToItem(WebCore::HistoryItem*, WebCore::HistoryItem*, WebCore::FrameLoadType))

Stack trace:

WebCore::HistoryController::recursiveGoToItem(WebCore::HistoryItem*, WebCore::HistoryItem*, WebCore::FrameLoadType) + 123 (HistoryController.cpp:553)
WebCore::HistoryController::recursiveGoToItem(WebCore::HistoryItem*, WebCore::HistoryItem*, WebCore::FrameLoadType) + 857 (HistoryController.cpp:585)
WebCore::HistoryController::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 336 (HistoryController.cpp:239)
WebCore::Page::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 391 (Page.cpp:366)
WebCore::Page::goForward() + 65 (Page.cpp:303)
-[WebView goForward] + 111 (WebView.mm:3231)

The problem isn&apos;t going forward per se, things are already screwed when back is pressed (the contents of the iframe do not change).

(this was reported on the Chrome side as http://crbug.com/49721 and http://crbug.com/18048)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267285</commentid>
    <comment_count>1</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-20 10:20:55 -0700</bug_when>
    <thetext>The problem here isn&apos;t the custom window name per se, it&apos;s that window.name is changing after the HistoryItem gets created. Then when we try to match things up in HistoryController::recursiveGoToItem, we can&apos;t find the frame with the right name in the fromItem tree, and the assert fires once we recurse. 

In general, HistoryItem/Controller using the window/frame name to match things up between seems like a bad idea given that it can change during the lifetime of a frameset. Having a stable &quot;frame ID&quot; and storing that in HistoryItem (instead of target) seems like the best thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267358</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-20 12:55:51 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; In general, HistoryItem/Controller using the window/frame name to match things up between seems like a bad idea given that it can change during the lifetime of a frameset. Having a stable &quot;frame ID&quot; and storing that in HistoryItem (instead of target) seems like the best thing to do.

SGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267388</commentid>
    <comment_count>3</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-20 13:38:41 -0700</bug_when>
    <thetext>BTW, the reason why this didn&apos;t crash before r61207 (which introduced itemSequenceNumber) is because this is the state at the start of the first recursiveGoToItem call:

item:
+-https://bug-44183-attachments.webkit.org/attachment.cgi?id=64720 (target: , isTargetItem: true)
  +-data:text/html,%3Ca%20href=&apos;data:text/html,press%20back,%20then%20forward&apos;%3Eclick%20me%3C/a%3E (target: &lt;!--framePath //&lt;!--frame0--&gt;--&gt;, isTargetItem: false)
  +-data:text/html,%3Cscript%3Ewindow.name=&apos;foo&apos;;%3C/script%3Ewindow%20that%20changes%20its%20name (target: &lt;!--framePath //&lt;!--frame1--&gt;--&gt;, isTargetItem: false)

fromItem:
+-https://bug-44183-attachments.webkit.org/attachment.cgi?id=64720 (target: , isTargetItem: false)
  +-data:text/html,press%20back,%20then%20forward (target: &lt;!--framePath //&lt;!--frame0--&gt;--&gt;, isTargetItem: true)
  +-data:text/html,%3Cscript%3Ewindow.name=&apos;foo&apos;;%3C/script%3Ewindow%20that%20changes%20its%20name (target: foo, isTargetItem: false)

The check before looping over children used to be &quot;!item-&gt;isTargetItem()&quot;, and so we would just reload the whole frameset instead of trying to figure out which children had changed and which hadn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267962</commentid>
    <comment_count>4</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-23 09:49:19 -0700</bug_when>
    <thetext>I was hoping to just change the target member of HistoryItem to store the frame ID (to avoid having to modify the port-specific serialization code). However, since the dumpBackForwardList function in the DRT includes the target name, that would change the output of all layout tests that use it (also, the output would no longer be deterministic, since I was generating frame IDs in a similar manner to item and document sequence numbers, which are seeded with the current time). Therefore, I think I need to do this change more incrementally, so that I don&apos;t have to fix everything at once. Proposed ordering is:

1) Fix up logic in HistoryController to better handle cases where we can&apos;t find frames by name (we&apos;d need to do it when switching to frame IDs too, since those can also appear/disappear). That will fix this bug&apos;s crash, but result in more reloading than expected when going back/forward.
2) Add frame ID to Frame and HistoryItem, switch HistoryController (and FrameTree, to some degree) to use it, to fix the extra reloads.
3) Modify Chromium (and Qt?) HistoryItem (de)serialization to persist the frame ID and to not use isTargetItem and target
4) Modify DRT to no longer include the target in the output of dumpBackForwardList (and fix up expected outputs). Since I don&apos;t think it&apos;ll be feasible to update the DRT-equivalents for all the ports at once, I believe if I make target() from HistoryItem return an empty string, it won&apos;t be included in the output of dumpBackForwardList for any port, so I can do that first, then start removing the actual calls to target().
4) Once all ports no longer use them, remove isTargetItem and target from HistoryItem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268627</commentid>
    <comment_count>5</comment_count>
      <attachid>65292</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-24 10:25:30 -0700</bug_when>
    <thetext>Created attachment 65292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268629</commentid>
    <comment_count>6</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-24 10:27:33 -0700</bug_when>
    <thetext>The attached patch implements step 1 from comment 4, to fix this particular bug and clean up matching up of frames between history items. I&apos;ll file separate bugs for the rest of the steps (adding frame ID, cleaning up callers of target() and isTargetItem(), etc.) once  there&apos;s some agreement that that&apos;s the right way to go.

Brady or Darin, could you take a look at the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270003</commentid>
    <comment_count>7</comment_count>
      <attachid>65292</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-26 11:42:15 -0700</bug_when>
    <thetext>Comment on attachment 65292
Patch

WebCore/history/HistoryItem.cpp:458
 +  
nit: only one new line here

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270004</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-26 11:43:26 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The attached patch implements step 1 from comment 4, to fix this particular bug and clean up matching up of frames between history items. I&apos;ll file separate bugs for the rest of the steps (adding frame ID, cleaning up callers of target() and isTargetItem(), etc.) once  there&apos;s some agreement that that&apos;s the right way to go.

I like your plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270009</commentid>
    <comment_count>9</comment_count>
      <attachid>65592</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-26 11:49:04 -0700</bug_when>
    <thetext>Created attachment 65592
Patch

Removed extra newline in HistoryItem.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270611</commentid>
    <comment_count>10</comment_count>
      <attachid>65592</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-27 11:21:07 -0700</bug_when>
    <thetext>Comment on attachment 65592
Patch

Clearing flags on attachment: 65592

Committed r66238: &lt;http://trac.webkit.org/changeset/66238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270612</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-27 11:21:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270645</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 12:02:06 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66238 might have broken GTK Linux 64-bit Debug and Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270659</commentid>
    <comment_count>13</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-27 12:29:00 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; http://trac.webkit.org/changeset/66238 might have broken GTK Linux 64-bit Debug and Qt Linux Release

Filed bug 44784 about the GTK failure. I&apos;m not seeing a consistent pattern for the Qt failures (they seem be change for every run), so I&apos;m not filing a bug for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280191</commentid>
    <comment_count>14</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2010-09-16 10:30:53 -0700</bug_when>
    <thetext>were the other steps in comment 4 checked in?
because i found that in same case forwarding doesn&apos;t work:
1. Visit http://tinyurl.com/38xvefn
2. In the bottom (more or less, depends on how many comments people post below it) there is a place to post comments, just above it there are 3 small pictures of aircrafts (leading to related articles), click on the middle one for example.
3. wait for the page to load and press back
4. wait for the page to load completely (including the original scrolling position) and press forward

instead of going to that related article, you will see the top of the first article.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280535</commentid>
    <comment_count>15</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-16 22:07:08 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; were the other steps in comment 4 checked in?
&gt; because i found that in same case forwarding doesn&apos;t work:
&gt; 1. Visit http://tinyurl.com/38xvefn
&gt; 2. In the bottom (more or less, depends on how many comments people post below it) there is a place to post comments, just above it there are 3 small pictures of aircrafts (leading to related articles), click on the middle one for example.
&gt; 3. wait for the page to load and press back
&gt; 4. wait for the page to load completely (including the original scrolling position) and press forward
&gt; 
&gt; instead of going to that related article, you will see the top of the first article.

Where were you verifying this? A nightly build of WebKit (at what revision)? Chrome? (which channel/version)? The fix has not reached everywhere (AFAIK it should only be in Chrome dev channel and WebKit nightly builds after r66238 i.e. August 27).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280605</commentid>
    <comment_count>16</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2010-09-17 04:21:04 -0700</bug_when>
    <thetext>&gt; Where were you verifying this? A nightly build of WebKit (at what revision)? Chrome? (which channel/version)? The fix has not reached everywhere (AFAIK it should only be in Chrome dev channel and WebKit nightly builds after r66238 i.e. August 27).

i used chrome 7.0.517.8 (Official Build 59474) dev
i wanted to try ToT but it&apos;s not usable currently
did you try my repro steps from comment 14?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280692</commentid>
    <comment_count>17</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-17 09:50:51 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Where were you verifying this? A nightly build of WebKit (at what revision)? Chrome? (which channel/version)? The fix has not reached everywhere (AFAIK it should only be in Chrome dev channel and WebKit nightly builds after r66238 i.e. August 27).
&gt; 
&gt; i used chrome 7.0.517.8 (Official Build 59474) dev
&gt; i wanted to try ToT but it&apos;s not usable currently
&gt; did you try my repro steps from comment 14?

Thanks for verifying the version. I see  what you mean; going forward doesn&apos;t actually load the expected page. However, that&apos;s a separate bug from this one (which was about that series of steps crashing WebKit). I&apos;ve filed bug 45969 about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280776</commentid>
    <comment_count>18</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2010-09-17 12:06:56 -0700</bug_when>
    <thetext>that&apos;s why i asked about the rest of the steps (i also guessed that your plan should deal with this issue and therefore wanted to know it was already checked in somewhere)

thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>64720</attachid>
            <date>2010-08-18 09:47:42 -0700</date>
            <delta_ts>2010-08-18 09:47:42 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>history-crash.html</filename>
            <type>text/html</type>
            <size>205</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">PGlmcmFtZSBzcmM9ImRhdGE6dGV4dC9odG1sLDxhIGhyZWY9J2RhdGE6dGV4dC9odG1sLHByZXNz
IGJhY2ssIHRoZW4gZm9yd2FyZCc+Y2xpY2sgbWU8L2E+Ij48L2lmcmFtZT4KPGlmcmFtZSBzcmM9
ImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+d2luZG93Lm5hbWU9J2Zvbyc7PC9zY3JpcHQ+d2luZG93
IHRoYXQgY2hhbmdlcyBpdHMgbmFtZSI+PC9pZnJhbWU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65292</attachid>
            <date>2010-08-24 10:25:30 -0700</date>
            <delta_ts>2010-08-26 11:49:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44183-20100824102529.patch</filename>
            <type>text/plain</type>
            <size>15724</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZjEyOWM5YjAyYTlkZmI5MTc0YzBkYWU0Mzk1MmRmOGEzNTlmN2E0Li4wNzM1MjIx
MWU1OTRmZWY2NDM1Yzg5NWI2ZjgxN2VjNjJmODY1ZmZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDgtMjQgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jhc2ggaW4gSGlz
dG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtIHdoZW4gbmF2aWdhdGluZyBpbiBhIGZy
YW1lCisgICAgICAgIHdoaWxlIGFub3RoZXIgZnJhbWUgaGFzIGEgY3VzdG9tIHdpbmRvdyBuYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDE4Mwor
ICAgICAgICAKKyAgICAgICAgQWRkIGEgdGVzdCB0byBjaGVjayB0aGF0IHdlIGNhbiBoYW5kbGUg
bmF2aWdhdGlvbiBmcm9tIGEgdG9wLWxldmVsIGZyYW1lCisgICAgICAgIHdoZW4gb25lIG9mIHRo
ZSBjaGlsZCBmcmFtZXMgc2V0cyB3aW5kb3cubmFtZSBhZnRlciBsb2FkLgorCisgICAgICAgICog
ZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvaGlzdG9yeS1zdWJm
cmFtZS13aXRoLW5hbWUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcmVz
b3VyY2VzL2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLTMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9oaXN0b3J5LXN1YmZyYW1lLXdpdGgtbmFtZS1jb250
YWluZXIuaHRtbDogQWRkZWQuCisKIDIwMTAtMDgtMTkgIE1paGFpIFBhcnBhcml0YSAgPG1paGFp
cEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1zdWJmcmFtZS13aXRo
LW5hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3Vi
ZnJhbWUtd2l0aC1uYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmM0NGFiNzkyMDFkN2Ri
ODJiYWEzYWM5ZGM3YzQ1MDlhNTVkZWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACittYWluIGZyYW1lIC0gaGFzIDEgb251bmxvYWQgaGFuZGxlcihzKQorbWFp
biBmcmFtZSAtIGhhcyAxIG9udW5sb2FkIGhhbmRsZXIocykKK21haW4gZnJhbWUgLSBoYXMgMSBv
bnVubG9hZCBoYW5kbGVyKHMpCitWZXJpZmllcyB0aGF0IHdlIGNhbiBnbyBiYWNrIGFuZCBmb3J3
YXJkIGZyb20gdGhlIHRvcCBsZXZlbCBvZiBhIGZyYW1lIHNldCB3aGVyZSBhIHdpbmRvdyBjaGFu
Z2VzIGl0cyBuYW1lIGFmdGVyIHRoZSBpbml0aWFsIGxvYWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIDIgaXMgY3VycmVudFBhZ2VJZAorUEFTUyAzIGlzIGN1cnJlbnRQ
YWdlSWQKK1BBU1MgMiBpcyBjdXJyZW50UGFnZUlkCitQQVNTIDMgaXMgY3VycmVudFBhZ2VJZAor
UEFTUyBDb21wbGV0ZTogbmF2aWdhdGVkIHRocm91Z2ggYWxsIHRoZSBzdGF0ZXMKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1zdWJmcmFtZS13aXRoLW5h
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMTkyMDEwZmFhMzI4YmQzNTk4NzhlZmYwN2I3OWZjNWQxMTQ0
ODA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3Rvcnkt
c3ViZnJhbWUtd2l0aC1uYW1lLmh0bWwKQEAgLTAsMCArMSw3MSBAQAorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8cHJlIGlkPSJjb25z
b2xlIj48L3ByZT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVmVyaWZpZXMgdGhhdCB3ZSBjYW4g
Z28gYmFjayBhbmQgZm9yd2FyZCBmcm9tIHRoZSB0b3AgbGV2ZWwgb2YgYSBmcmFtZSBzZXQgd2hl
cmUgYSB3aW5kb3cgY2hhbmdlcyBpdHMgbmFtZSBhZnRlciB0aGUgaW5pdGlhbCBsb2FkLicpOwor
Cit2YXIgdGVzdFdpbmRvdzsKKworb25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgfQorICAgIAorICAgIHRlc3RXaW5kb3cgPSB3aW5kb3cub3BlbigncmVzb3VyY2VzL2hpc3Rv
cnktc3ViZnJhbWUtd2l0aC1uYW1lLWNvbnRhaW5lci5odG1sJyk7CisgICAgaWYgKCF0ZXN0V2lu
ZG93KQorICAgICAgICB0ZXN0RmFpbGVkKCdDb3VsZCBub3Qgb3BlbiB0ZXN0IHdpbmRvdycpOyAg
ICAKK30KKwordmFyIFN0YXRlID0geworICAwOiAnSU5JVElBTCcsCisgIDE6ICdGUkFNRV9MT0FE
RURfSU5JVElBTCcsCisgIDI6ICdGUkFNRV9MT0FERURfTkFWJywKKyAgMzogJ0ZSQU1FX0xPQURF
RF9CQUNLJywKKyAgNDogJ0ZSQU1FX0xPQURFRF9GT1JXQVJEJworfTsKKwordmFyIGN1cnJlbnRT
dGF0ZSA9IDA7Cit2YXIgY3VycmVudFBhZ2VJZDsKKworZnVuY3Rpb24gb25GcmFtZUxvYWRlZChw
YWdlSWQpCit7CisgICAgLy8gVGhlIHBhZ2UgSUQgaXMgcHV0IGluIGEgZ2xvYmFsIHNvIHRoYXQg
dGhlIGV2YWwoKSBpbnNpZGUgb2Ygc2hvdWxkQmUgY2FuCisgICAgLy8gc2VlIGl0CisgICAgY3Vy
cmVudFBhZ2VJZCA9IHBhZ2VJZDsgICAgCisgICAgY3VycmVudFN0YXRlKys7CisgICAgCisgICAg
c3dpdGNoIChjdXJyZW50U3RhdGUpIHsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgICBzaG91bGRC
ZSgnMicsICdjdXJyZW50UGFnZUlkJyk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6
CisgICAgICAgICAgc2hvdWxkQmUoJzMnLCAnY3VycmVudFBhZ2VJZCcpOworICAgICAgICAgIHRl
c3RXaW5kb3cuaGlzdG9yeS5iYWNrKCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDM6
CisgICAgICAgICAgc2hvdWxkQmUoJzInLCAnY3VycmVudFBhZ2VJZCcpOworICAgICAgICAgIHRl
c3RXaW5kb3cuaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDQ6CisgICAgICAgICAgc2hvdWxkQmUoJzMnLCAnY3VycmVudFBhZ2VJZCcpOworICAgICAgICAg
IGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgICB0ZXN0RmFpbGVkKCdTaG91bGQgbm90
IGJlIGluIHN0YXRlICcgKyBjdXJyZW50U3RhdGUpOworICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAKKyAgICBpZiAoY3VycmVudFN0YXRlID09IDQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgn
Q29tcGxldGU6IG5hdmlnYXRlZCB0aHJvdWdoIGFsbCB0aGUgc3RhdGVzJyk7CisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnktc3ViZnJh
bWUtd2l0aC1uYW1lLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMv
aGlzdG9yeS1zdWJmcmFtZS13aXRoLW5hbWUtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZDY1ODc5YjQ5
MGVlYzNhOTYyMzU2ZGUyNDUyMDRmYjZlMzIyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLTIu
aHRtbApAQCAtMCwwICsxLDExIEBACis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0
PiAKKyAgZnVuY3Rpb24gcnVuVGVzdCgpCisgIHsKKyAgICAgIHBhcmVudC5vcGVuZXIub25GcmFt
ZUxvYWRlZCgyKTsKKyAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZW5lcmF0ZSBhIGhpc3RvcnkgZW50
cnkKKyAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bG9jYXRpb24uaHJlZiA9ICdoaXN0b3J5
LXN1YmZyYW1lLXdpdGgtbmFtZS0zLmh0bWwnO30sIDApOworICB9Cis8L3NjcmlwdD4KK0ZBSUw6
IGZyYW1lIDIKKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnktc3ViZnJhbWUtd2l0
aC1uYW1lLTMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvaGlzdG9y
eS1zdWJmcmFtZS13aXRoLW5hbWUtMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmM2EyODVmNTI4NzI3YTc3
NzllN2FkMDdiYTU1M2RlNTA0NDhjMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLTMuaHRtbApA
QCAtMCwwICsxLDMgQEAKKzxib2R5IG9ubG9hZD0icGFyZW50Lm9wZW5lci5vbkZyYW1lTG9hZGVk
KDMpIj4KK1BBU1M6IGZyYW1lIDMKKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnkt
c3ViZnJhbWUtd2l0aC1uYW1lLWNvbnRhaW5lci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L3Jlc291cmNlcy9oaXN0b3J5LXN1YmZyYW1lLXdpdGgtbmFtZS1jb250YWluZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYWI4ZGI4ZGFhZjRkMTllYWM2NDVjMDhkMGUyZGMyMTgxNDdmMzBkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9oaXN0b3J5
LXN1YmZyYW1lLXdpdGgtbmFtZS1jb250YWluZXIuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxzY3Jp
cHQ+CisvLyBEaXNhYmxlIHRoZSBwYWdlIGNhY2hlIHdoZW4gcnVubmluZyBpbnNpZGUgb2YgU2Fm
YXJpCitvbnVubG9hZCA9IGZ1bmN0aW9uKCkge307Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJo
aXN0b3J5LXN1YmZyYW1lLXdpdGgtbmFtZS0yLmh0bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBzcmM9
ImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+d2luZG93Lm5hbWU9J2Zvbyc7PC9zY3JpcHQ+d2luZG93
IHRoYXQgY2hhbmdlcyBpdHMgbmFtZSI+PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU0MWViMDI5MjhmOTE5MTlmMWIwNmRj
NWQ5ZDRhOGI0Yjk3NmE0NzYuLjE2ZmVmNWU5NmI4Mjk1ZGU1ZGRhMmE0YTczYTUwZjc2ZWQyNjFm
YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMDgtMjQgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3Jhc2ggaW4gSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtIHdoZW4g
bmF2aWdhdGluZyBpbiBhIGZyYW1lCisgICAgICAgIHdoaWxlIGFub3RoZXIgZnJhbWUgaGFzIGEg
Y3VzdG9tIHdpbmRvdyBuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NDE4MworICAgICAgICAKKyAgICAgICAgRml4IHVwIEhpc3RvcnlDb250cm9s
bGVyOjpyZWN1cnNpdmVHb1RvSXRlbSB0byBiZXR0ZXIgY2hlY2sgd2hldGhlciB0aGUKKyAgICAg
ICAgY3VycmVudCBkb2N1bWVudCBmcmFtZXMsIHRoZSBjdXJlbnQgaGlzdG9yeSBpdGVtIGZyYW1l
cywgYW5kIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBoaXN0b3J5IGZyYW1lcyBtYXRjaCB1cC4K
KyAgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvaGlzdG9yeS9oaXN0b3J5LXN1YmZyYW1lLXdp
dGgtbmFtZS5odG1sCisKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpjaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51
bWJlcik6IEFkZCBsaW5lYXIKKyAgICAgICAgbG9va3VwIG9mIGNoaWxkIGJ5IGRvY3VtZW50IHNl
cXVlbmNlIG51bWJlcgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06Omhhc1NhbWVEb2N1
bWVudHMpOiBSZW1vdmUgYXNzdW1wdGlvbiB0aGF0IHRoZQorICAgICAgICBvdGhlciBpdGVtIGhh
cyB0aGUgY2hpbGRyZW4gaW4gdGhlIHNhbWUgb3JkZXIgKGl0IGRvZXNuJ3Qgc2VlbSB0byBiZQor
ICAgICAgICB0cnVlKQorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06Omhhc1NhbWVGcmFt
ZXMpOiBBZGQgcmVjdXJzaXZlIGNvbXBhcmlzb24gb2YgY2hpbGQKKyAgICAgICAgZnJhbWVzLgor
ICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJdGVtKTogQ29t
cGFyZSBmdWxsIHNldCBvZiBkb2N1bWVudHMgaW4gCisgICAgICAgIGhpc3RvcnkgaXRlbXMsIG5v
dCBqdXN0IHRoZSB0b3Btb3N0IG9uZXMuIE90aGVyd2lzZSB3aGVuIGdvaW5nIGJldHdlZW4KKyAg
ICAgICAgZnJhbWVzZXRzIHdoZXJlIG9ubHkgb25lIG9mIHRoZSBzdWJmcmFtZXMgY2hhbmdlZCB3
ZSB3b3VsZG4ndCB0cmlnZ2VyIGEKKyAgICAgICAgbG9hZC4KKyAgICAgICAgKiBsb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6
OnJlY3Vyc2l2ZUdvVG9JdGVtKTogQWxzbyBjaGVjayB0aGF0IHRoZQorICAgICAgICB0d28gaGlz
dG9yeSBpdGVtcyBoYXZlIHRoZSBzYW1lIGZyYW1lcworICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OmN1cnJlbnRGcmFtZXNNYXRjaEl0ZW0pOiBSZWZhY3RvciAKKyAgICAgICAg
Y2hpbGRGcmFtZXNNYXRjaEl0ZW0gdG8gYWxzbyBjaGVjayB0aGUgdG9wLW1vc3QgZnJhbWUsIHRv
IG1ha2UgCisgICAgICAgIHJlY3Vyc2l2ZUdvVG9JdGVtIGVhc2llciB0byByZWFkLgorICAgICAg
ICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oOgorCiAyMDEwLTA4LTE5ICBNaWhhaSBQYXJw
YXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBi
L1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggMzQwOWY4MWRkNGE5ZTk4ODU0
ZDNkYTE0YTVjYWY4NjIzYzUzOWE1OC4uNzg2MWQ4MWUzNTBhNGE2OTZiNzdiYTE3OGFhZThhOTFm
ZGVmMmU5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysg
Yi9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC00NDYsNiArNDQ2LDE3IEBAIEhp
c3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcm
IHRhcmdldCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorSGlzdG9yeUl0ZW0qIEhpc3RvcnlJ
dGVtOjpjaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihsb25nIGxvbmcgbnVtYmVy
KSBjb25zdAoreworICAgIHVuc2lnbmVkIHNpemUgPSBtX2NoaWxkcmVuLnNpemUoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChtX2NoaWxk
cmVuW2ldLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gbnVtYmVyKQorICAgICAgICAgICAg
cmV0dXJuIG1fY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisK
IC8vIDxyZGFyOi8vcHJvYmxlbS80ODk1ODQ5PiBIaXN0b3J5SXRlbTo6ZmluZFRhcmdldEl0ZW0o
KSBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhIG5vbi1yZWN1cnNpdmUgbWV0aG9kLgogSGlzdG9y
eUl0ZW0qIEhpc3RvcnlJdGVtOjpmaW5kVGFyZ2V0SXRlbSgpCiB7CkBAIC00ODAsNiArNDkxLDgg
QEAgdm9pZCBIaXN0b3J5SXRlbTo6Y2xlYXJDaGlsZHJlbigpCiAgICAgbV9jaGlsZHJlbi5jbGVh
cigpOwogfQogCisvLyBEb2VzIGEgcmVjdXJzaXZlIGNoZWNrIHRoYXQgdGhpcyBpdGVtIGFuZCBp
dHMgZGVzY2VuZGFudHMgaGF2ZSB0aGUgc2FtZQorLy8gZG9jdW1lbnQgc2VxdWVuY2UgbnVtYmVy
cyBhcyB0aGUgb3RoZXIgaXRlbS4KIGJvb2wgSGlzdG9yeUl0ZW06Omhhc1NhbWVEb2N1bWVudHMo
SGlzdG9yeUl0ZW0qIG90aGVySXRlbSkKIHsKICAgICBpZiAoZG9jdW1lbnRTZXF1ZW5jZU51bWJl
cigpICE9IG90aGVySXRlbS0+ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKQpAQCAtNDg3LDEyICs1
MDAsMzIgQEAgYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZURvY3VtZW50cyhIaXN0b3J5SXRlbSog
b3RoZXJJdGVtKQogICAgICAgICAKICAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJ
dGVtLT5jaGlsZHJlbigpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgIGlmICghY2hpbGRyZW4oKVtpXS0+aGFzU2FtZURvY3VtZW50cyhvdGhlckl0ZW0tPmNoaWxk
cmVuKClbaV0uZ2V0KCkpKQorICAgICAgICBIaXN0b3J5SXRlbSogY2hpbGQgPSBjaGlsZHJlbigp
W2ldLmdldCgpOworICAgICAgICBIaXN0b3J5SXRlbSogb3RoZXJDaGlsZCA9IG90aGVySXRlbS0+
Y2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIoY2hpbGQtPmRvY3VtZW50U2VxdWVu
Y2VOdW1iZXIoKSk7CisgICAgICAgIGlmICghb3RoZXJDaGlsZCB8fCAhY2hpbGQtPmhhc1NhbWVE
b2N1bWVudHMob3RoZXJDaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIAorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIERvZXMgYSBub24tcmVjdXJzaXZlIGNo
ZWNrIHRoYXQgdGhpcyBpdGVtIGFuZCBpdHMgaW1tZWRpYXRlIGNoaWxkcmVuIGhhdmUgdGhlCisv
LyBzYW1lIGZyYW1lcyBhcyB0aGUgb3RoZXIgaXRlbS4KK2Jvb2wgSGlzdG9yeUl0ZW06Omhhc1Nh
bWVGcmFtZXMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkKK3sKKyAgICBpZiAodGFyZ2V0KCkgIT0g
b3RoZXJJdGVtLT50YXJnZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAg
ICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVtLT5jaGlsZHJlbigpLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGls
ZHJlbigpLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmICghb3RoZXJJdGVtLT5jaGlsZEl0ZW1X
aXRoVGFyZ2V0KGNoaWxkcmVuKClbaV0tPnRhcmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmggYi9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaApp
bmRleCBkZmRiYzQzM2M3OWI0ZjU5MWRkOTRkZjIwMGU0MjBjZGI3ZmI1OGY5Li5iMTFhOTJlYjQy
MWFhZjZkNDJmODg3NmNlMjdhMjAyN2NkYjQwOTJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uaAorKysgYi9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaApAQCAt
MTU1LDEyICsxNTUsMTQgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2hpbGRJdGVtKFBhc3NSZWZQ
dHI8SGlzdG9yeUl0ZW0+KTsKICAgICB2b2lkIHNldENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3Rv
cnlJdGVtPik7CiAgICAgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3QgU3Ry
aW5nJikgY29uc3Q7CisgICAgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVl
bmNlTnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpIGNvbnN0OwogICAgIEhpc3RvcnlJdGVtKiB0YXJn
ZXRJdGVtKCk7CiAgICAgY29uc3QgSGlzdG9yeUl0ZW1WZWN0b3ImIGNoaWxkcmVuKCkgY29uc3Q7
CiAgICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigp
OwogICAgIAogICAgIGJvb2wgaGFzU2FtZURvY3VtZW50cyhIaXN0b3J5SXRlbSogb3RoZXJJdGVt
KTsKKyAgICBib29sIGhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSk7CiAKICAg
ICAvLyBUaGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGZvciBIaXN0b3J5SXRlbXMg
dGhhdCBhcmUgYWxyZWFkeSBpbmNsdWRlZAogICAgIC8vIGluIEdsb2JhbEhpc3RvcnkuIFRoZSBX
ZWJLaXQgYXBpIGZvciB0aGlzIGlzIHRvIHVzZSAtW1dlYkhpc3Rvcnkgc2V0TGFzdFZpc2l0ZWRU
aW1lSW50ZXJ2YWw6Zm9ySXRlbTpdIGluc3RlYWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
MjQ4ODhmMjdlOWVhMTkwNjcyZTIwM2VmODU2MzBkNTlhOTM1ZTIwOC4uYzQ4NDFjZmI4MzlkNzA0
OGQ2NzZmOGRhZDhkYjYzNWJlZGRmMmUyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzIy
OCwxMSArMzIyOCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpuYXZpZ2F0ZVRvRGlmZmVyZW50RG9j
dW1lbnQoSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbAogdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCiB7
CiAgICAgLy8gV2UgZG8gc2FtZS1kb2N1bWVudCBuYXZpZ2F0aW9uIGluIHRoZSBmb2xsb3dpbmcg
Y2FzZXM6Ci0gICAgLy8gLSBUaGUgSGlzdG9yeUl0ZW0gY29ycmVzcG9uZHMgdG8gdGhlIHNhbWUg
ZG9jdW1lbnQuCisgICAgLy8gLSBUaGUgSGlzdG9yeUl0ZW0gY29ycmVzcG9uZHMgdG8gdGhlIHNh
bWUgZG9jdW1lbnQgKG9yIGRvY3VtZW50cyBpbiB0aGUgY2FzZSBvZiBmcmFtZXMpLgogICAgIC8v
IC0gVGhlIEhpc3RvcnlJdGVtIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBpdGVtLgog
ICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSA9IGhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKTsK
ICAgICBib29sIHNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBjdXJyZW50SXRlbSAmJiBpdGVtICE9
IGN1cnJlbnRJdGVtCi0gICAgICAgICYmIGl0ZW0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9
PSBjdXJyZW50SXRlbS0+ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpOworICAgICAgICAmJiBpdGVt
LT5oYXNTYW1lRG9jdW1lbnRzKGN1cnJlbnRJdGVtKTsKIAogI2lmIEVOQUJMRShXTUwpCiAgICAg
Ly8gQWxsIFdNTCBkZWNrcyBzaG91bGQgZ28gdGhyb3VnaCB0aGUgcmVhbCBsb2FkIG1lY2hhbmlz
bSwgbm90IHRoZSBzY3JvbGwtdG8tYW5jaG9yIGNvZGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcAppbmRleCAxNDRmYWE1YTI4MzA0NDYxYTIyMjQzNjQ5MDQxOTQxMDYwYzcwOTdmLi4x
MWEwMjc3NmQzNDQ0NjUzZTMxZmQwYmM5NzJhYmUwNzNiOTI4ZDQ1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCkBAIC01NTgsOSArNTU4LDEwIEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBIaXN0b3J5SXRlbSog
ZnJvbUl0CiAgICAgLy8gdG8gbWF0Y2guCiAgICAgLy8gTm90ZTogSWYgaXRlbSBhbmQgZnJvbUl0
ZW0gYXJlIHRoZSBzYW1lLCB0aGVuIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3CiAgICAgLy8gZG9j
dW1lbnQuCi0gICAgaWYgKGl0ZW0gIT0gZnJvbUl0ZW0gJiYgaXRlbS0+aXRlbVNlcXVlbmNlTnVt
YmVyKCkgPT0gZnJvbUl0ZW0tPml0ZW1TZXF1ZW5jZU51bWJlcigpCi0gICAgICAgICYmICgobV9m
cmFtZS0+dHJlZSgpLT5uYW1lKCkuaXNFbXB0eSgpICYmIGl0ZW0tPnRhcmdldCgpLmlzRW1wdHko
KSkgfHwgbV9mcmFtZS0+dHJlZSgpLT5uYW1lKCkgPT0gaXRlbS0+dGFyZ2V0KCkpCi0gICAgICAg
ICYmIGNoaWxkRnJhbWVzTWF0Y2hJdGVtKGl0ZW0pKQorICAgIGlmIChpdGVtICE9IGZyb21JdGVt
IAorICAgICAgICAmJiBpdGVtLT5pdGVtU2VxdWVuY2VOdW1iZXIoKSA9PSBmcm9tSXRlbS0+aXRl
bVNlcXVlbmNlTnVtYmVyKCkKKyAgICAgICAgJiYgY3VycmVudEZyYW1lc01hdGNoSXRlbShpdGVt
KQorICAgICAgICAmJiBmcm9tSXRlbS0+aGFzU2FtZUZyYW1lcyhpdGVtKSkKICAgICB7CiAgICAg
ICAgIC8vIFRoaXMgY29udGVudCBpcyBnb29kLCBzbyBsZWF2ZSBpdCBhbG9uZSBhbmQgbG9vayBm
b3IgY2hpbGRyZW4gdGhhdCBuZWVkIHJlbG9hZGluZwogICAgICAgICAvLyBTYXZlIGZvcm0gc3Rh
dGUgKHdvcmtzIGZyb20gY3VycmVudEl0ZW0sIHNpbmNlIHByZXZJdGVtIGlzIG5pbCkKQEAgLTU4
NSw3ICs1ODYsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVHb1RvSXRlbShI
aXN0b3J5SXRlbSogaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb21JdAogICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICAgICAgU3RyaW5nIGNoaWxkRnJhbWVOYW1l
ID0gY2hpbGRJdGVtc1tpXS0+dGFyZ2V0KCk7CiAgICAgICAgICAgICBIaXN0b3J5SXRlbSogZnJv
bUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1l
KTsKLSAgICAgICAgICAgIEFTU0VSVChmcm9tQ2hpbGRJdGVtIHx8IGZyb21JdGVtLT5pc1Rhcmdl
dEl0ZW0oKSk7CisgICAgICAgICAgICBBU1NFUlQoZnJvbUNoaWxkSXRlbSk7CiAgICAgICAgICAg
ICBGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+Y2hpbGQoY2hpbGRGcmFtZU5h
bWUpOwogICAgICAgICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogICAgICAgICAgICAgY2hpbGRG
cmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+cmVjdXJzaXZlR29Ub0l0ZW0oY2hpbGRJdGVtc1tp
XS5nZXQoKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CkBAIC01OTUsMTAgKzU5NiwxMiBAQCB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwg
SGlzdG9yeUl0ZW0qIGZyb21JdAogICAgIH0KIH0KIAotLy8gaGVscGVyIG1ldGhvZCB0aGF0IGRl
dGVybWluZXMgd2hldGhlciB0aGUgc3ViZnJhbWVzIGRlc2NyaWJlZCBieSB0aGUgaXRlbSdzIHN1
Yml0ZW1zCi0vLyBtYXRjaCBvdXIgb3duIGN1cnJlbnQgZnJhbWVzZXQKLWJvb2wgSGlzdG9yeUNv
bnRyb2xsZXI6OmNoaWxkRnJhbWVzTWF0Y2hJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdAor
Ly8gSGVscGVyIG1ldGhvZCB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudCBmcmFt
ZSB0cmVlIG1hdGNoZXMgZ2l2ZW4gaGlzdG9yeSBpdGVtJ3MuCitib29sIEhpc3RvcnlDb250cm9s
bGVyOjpjdXJyZW50RnJhbWVzTWF0Y2hJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdAogewor
ICAgIGlmICgoIW1fZnJhbWUtPnRyZWUoKS0+bmFtZSgpLmlzRW1wdHkoKSB8fCAhaXRlbS0+dGFy
Z2V0KCkuaXNFbXB0eSgpKSAmJiBtX2ZyYW1lLT50cmVlKCktPm5hbWUoKSAhPSBpdGVtLT50YXJn
ZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKICAgICBjb25zdCBIaXN0b3J5
SXRlbVZlY3RvciYgY2hpbGRJdGVtcyA9IGl0ZW0tPmNoaWxkcmVuKCk7CiAgICAgaWYgKGNoaWxk
SXRlbXMuc2l6ZSgpICE9IG1fZnJhbWUtPnRyZWUoKS0+Y2hpbGRDb3VudCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02MDksNyArNjEyLDYgQEAgYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6
Y2hpbGRGcmFtZXNNYXRjaEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIC8vIEZvdW5kIG1hdGNoZXMgZm9yIGFs
bCBpdGVtIHRhcmdldHMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmgKaW5kZXggMTk5MDJmOGY4NzZjYTg3MDYwY2M2ZmU0YjA4ZDNmMTRmNzZiNmJmOS4u
NDg3ZmRjOWY3NDIxZmVlNDhhMGJmMmM4ZjNiOWUwZDcwMThiNmYyYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0
cjxIaXN0b3J5SXRlbT4gY3JlYXRlSXRlbVRyZWUoRnJhbWUqIHRhcmdldEZyYW1lLCBib29sIGNs
aXBBdFRhcmdldCk7CiAKICAgICB2b2lkIHJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtKiwg
SGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKLSAgICBib29sIGNoaWxkRnJhbWVzTWF0Y2hJ
dGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgYm9vbCBjdXJyZW50RnJhbWVzTWF0Y2hJdGVt
KEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlw
cGVkQXRUYXJnZXQoYm9vbCBkb0NsaXApOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65592</attachid>
            <date>2010-08-26 11:49:04 -0700</date>
            <delta_ts>2010-08-27 11:21:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44183-20100826114903.patch</filename>
            <type>text/plain</type>
            <size>15722</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZjEyOWM5YjAyYTlkZmI5MTc0YzBkYWU0Mzk1MmRmOGEzNTlmN2E0Li4wNzM1MjIx
MWU1OTRmZWY2NDM1Yzg5NWI2ZjgxN2VjNjJmODY1ZmZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDgtMjQgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jhc2ggaW4gSGlz
dG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtIHdoZW4gbmF2aWdhdGluZyBpbiBhIGZy
YW1lCisgICAgICAgIHdoaWxlIGFub3RoZXIgZnJhbWUgaGFzIGEgY3VzdG9tIHdpbmRvdyBuYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDE4Mwor
ICAgICAgICAKKyAgICAgICAgQWRkIGEgdGVzdCB0byBjaGVjayB0aGF0IHdlIGNhbiBoYW5kbGUg
bmF2aWdhdGlvbiBmcm9tIGEgdG9wLWxldmVsIGZyYW1lCisgICAgICAgIHdoZW4gb25lIG9mIHRo
ZSBjaGlsZCBmcmFtZXMgc2V0cyB3aW5kb3cubmFtZSBhZnRlciBsb2FkLgorCisgICAgICAgICog
ZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvaGlzdG9yeS1zdWJm
cmFtZS13aXRoLW5hbWUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcmVz
b3VyY2VzL2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLTMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9oaXN0b3J5LXN1YmZyYW1lLXdpdGgtbmFtZS1jb250
YWluZXIuaHRtbDogQWRkZWQuCisKIDIwMTAtMDgtMTkgIE1paGFpIFBhcnBhcml0YSAgPG1paGFp
cEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1zdWJmcmFtZS13aXRo
LW5hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3Vi
ZnJhbWUtd2l0aC1uYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmM0NGFiNzkyMDFkN2Ri
ODJiYWEzYWM5ZGM3YzQ1MDlhNTVkZWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACittYWluIGZyYW1lIC0gaGFzIDEgb251bmxvYWQgaGFuZGxlcihzKQorbWFp
biBmcmFtZSAtIGhhcyAxIG9udW5sb2FkIGhhbmRsZXIocykKK21haW4gZnJhbWUgLSBoYXMgMSBv
bnVubG9hZCBoYW5kbGVyKHMpCitWZXJpZmllcyB0aGF0IHdlIGNhbiBnbyBiYWNrIGFuZCBmb3J3
YXJkIGZyb20gdGhlIHRvcCBsZXZlbCBvZiBhIGZyYW1lIHNldCB3aGVyZSBhIHdpbmRvdyBjaGFu
Z2VzIGl0cyBuYW1lIGFmdGVyIHRoZSBpbml0aWFsIGxvYWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIDIgaXMgY3VycmVudFBhZ2VJZAorUEFTUyAzIGlzIGN1cnJlbnRQ
YWdlSWQKK1BBU1MgMiBpcyBjdXJyZW50UGFnZUlkCitQQVNTIDMgaXMgY3VycmVudFBhZ2VJZAor
UEFTUyBDb21wbGV0ZTogbmF2aWdhdGVkIHRocm91Z2ggYWxsIHRoZSBzdGF0ZXMKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1zdWJmcmFtZS13aXRoLW5h
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMTkyMDEwZmFhMzI4YmQzNTk4NzhlZmYwN2I3OWZjNWQxMTQ0
ODA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3Rvcnkt
c3ViZnJhbWUtd2l0aC1uYW1lLmh0bWwKQEAgLTAsMCArMSw3MSBAQAorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8cHJlIGlkPSJjb25z
b2xlIj48L3ByZT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVmVyaWZpZXMgdGhhdCB3ZSBjYW4g
Z28gYmFjayBhbmQgZm9yd2FyZCBmcm9tIHRoZSB0b3AgbGV2ZWwgb2YgYSBmcmFtZSBzZXQgd2hl
cmUgYSB3aW5kb3cgY2hhbmdlcyBpdHMgbmFtZSBhZnRlciB0aGUgaW5pdGlhbCBsb2FkLicpOwor
Cit2YXIgdGVzdFdpbmRvdzsKKworb25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgfQorICAgIAorICAgIHRlc3RXaW5kb3cgPSB3aW5kb3cub3BlbigncmVzb3VyY2VzL2hpc3Rv
cnktc3ViZnJhbWUtd2l0aC1uYW1lLWNvbnRhaW5lci5odG1sJyk7CisgICAgaWYgKCF0ZXN0V2lu
ZG93KQorICAgICAgICB0ZXN0RmFpbGVkKCdDb3VsZCBub3Qgb3BlbiB0ZXN0IHdpbmRvdycpOyAg
ICAKK30KKwordmFyIFN0YXRlID0geworICAwOiAnSU5JVElBTCcsCisgIDE6ICdGUkFNRV9MT0FE
RURfSU5JVElBTCcsCisgIDI6ICdGUkFNRV9MT0FERURfTkFWJywKKyAgMzogJ0ZSQU1FX0xPQURF
RF9CQUNLJywKKyAgNDogJ0ZSQU1FX0xPQURFRF9GT1JXQVJEJworfTsKKwordmFyIGN1cnJlbnRT
dGF0ZSA9IDA7Cit2YXIgY3VycmVudFBhZ2VJZDsKKworZnVuY3Rpb24gb25GcmFtZUxvYWRlZChw
YWdlSWQpCit7CisgICAgLy8gVGhlIHBhZ2UgSUQgaXMgcHV0IGluIGEgZ2xvYmFsIHNvIHRoYXQg
dGhlIGV2YWwoKSBpbnNpZGUgb2Ygc2hvdWxkQmUgY2FuCisgICAgLy8gc2VlIGl0CisgICAgY3Vy
cmVudFBhZ2VJZCA9IHBhZ2VJZDsgICAgCisgICAgY3VycmVudFN0YXRlKys7CisgICAgCisgICAg
c3dpdGNoIChjdXJyZW50U3RhdGUpIHsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgICBzaG91bGRC
ZSgnMicsICdjdXJyZW50UGFnZUlkJyk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6
CisgICAgICAgICAgc2hvdWxkQmUoJzMnLCAnY3VycmVudFBhZ2VJZCcpOworICAgICAgICAgIHRl
c3RXaW5kb3cuaGlzdG9yeS5iYWNrKCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDM6
CisgICAgICAgICAgc2hvdWxkQmUoJzInLCAnY3VycmVudFBhZ2VJZCcpOworICAgICAgICAgIHRl
c3RXaW5kb3cuaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IDQ6CisgICAgICAgICAgc2hvdWxkQmUoJzMnLCAnY3VycmVudFBhZ2VJZCcpOworICAgICAgICAg
IGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgICB0ZXN0RmFpbGVkKCdTaG91bGQgbm90
IGJlIGluIHN0YXRlICcgKyBjdXJyZW50U3RhdGUpOworICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAKKyAgICBpZiAoY3VycmVudFN0YXRlID09IDQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgn
Q29tcGxldGU6IG5hdmlnYXRlZCB0aHJvdWdoIGFsbCB0aGUgc3RhdGVzJyk7CisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnktc3ViZnJh
bWUtd2l0aC1uYW1lLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMv
aGlzdG9yeS1zdWJmcmFtZS13aXRoLW5hbWUtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZDY1ODc5YjQ5
MGVlYzNhOTYyMzU2ZGUyNDUyMDRmYjZlMzIyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLTIu
aHRtbApAQCAtMCwwICsxLDExIEBACis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0
PiAKKyAgZnVuY3Rpb24gcnVuVGVzdCgpCisgIHsKKyAgICAgIHBhcmVudC5vcGVuZXIub25GcmFt
ZUxvYWRlZCgyKTsKKyAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZW5lcmF0ZSBhIGhpc3RvcnkgZW50
cnkKKyAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bG9jYXRpb24uaHJlZiA9ICdoaXN0b3J5
LXN1YmZyYW1lLXdpdGgtbmFtZS0zLmh0bWwnO30sIDApOworICB9Cis8L3NjcmlwdD4KK0ZBSUw6
IGZyYW1lIDIKKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnktc3ViZnJhbWUtd2l0
aC1uYW1lLTMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvaGlzdG9y
eS1zdWJmcmFtZS13aXRoLW5hbWUtMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmM2EyODVmNTI4NzI3YTc3
NzllN2FkMDdiYTU1M2RlNTA0NDhjMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLTMuaHRtbApA
QCAtMCwwICsxLDMgQEAKKzxib2R5IG9ubG9hZD0icGFyZW50Lm9wZW5lci5vbkZyYW1lTG9hZGVk
KDMpIj4KK1BBU1M6IGZyYW1lIDMKKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3Rvcnkt
c3ViZnJhbWUtd2l0aC1uYW1lLWNvbnRhaW5lci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L3Jlc291cmNlcy9oaXN0b3J5LXN1YmZyYW1lLXdpdGgtbmFtZS1jb250YWluZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYWI4ZGI4ZGFhZjRkMTllYWM2NDVjMDhkMGUyZGMyMTgxNDdmMzBkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9oaXN0b3J5
LXN1YmZyYW1lLXdpdGgtbmFtZS1jb250YWluZXIuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxzY3Jp
cHQ+CisvLyBEaXNhYmxlIHRoZSBwYWdlIGNhY2hlIHdoZW4gcnVubmluZyBpbnNpZGUgb2YgU2Fm
YXJpCitvbnVubG9hZCA9IGZ1bmN0aW9uKCkge307Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJo
aXN0b3J5LXN1YmZyYW1lLXdpdGgtbmFtZS0yLmh0bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBzcmM9
ImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+d2luZG93Lm5hbWU9J2Zvbyc7PC9zY3JpcHQ+d2luZG93
IHRoYXQgY2hhbmdlcyBpdHMgbmFtZSI+PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU0MWViMDI5MjhmOTE5MTlmMWIwNmRj
NWQ5ZDRhOGI0Yjk3NmE0NzYuLjE2ZmVmNWU5NmI4Mjk1ZGU1ZGRhMmE0YTczYTUwZjc2ZWQyNjFm
YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMDgtMjQgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3Jhc2ggaW4gSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtIHdoZW4g
bmF2aWdhdGluZyBpbiBhIGZyYW1lCisgICAgICAgIHdoaWxlIGFub3RoZXIgZnJhbWUgaGFzIGEg
Y3VzdG9tIHdpbmRvdyBuYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NDE4MworICAgICAgICAKKyAgICAgICAgRml4IHVwIEhpc3RvcnlDb250cm9s
bGVyOjpyZWN1cnNpdmVHb1RvSXRlbSB0byBiZXR0ZXIgY2hlY2sgd2hldGhlciB0aGUKKyAgICAg
ICAgY3VycmVudCBkb2N1bWVudCBmcmFtZXMsIHRoZSBjdXJlbnQgaGlzdG9yeSBpdGVtIGZyYW1l
cywgYW5kIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBoaXN0b3J5IGZyYW1lcyBtYXRjaCB1cC4K
KyAgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvaGlzdG9yeS9oaXN0b3J5LXN1YmZyYW1lLXdp
dGgtbmFtZS5odG1sCisKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpjaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51
bWJlcik6IEFkZCBsaW5lYXIKKyAgICAgICAgbG9va3VwIG9mIGNoaWxkIGJ5IGRvY3VtZW50IHNl
cXVlbmNlIG51bWJlcgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06Omhhc1NhbWVEb2N1
bWVudHMpOiBSZW1vdmUgYXNzdW1wdGlvbiB0aGF0IHRoZQorICAgICAgICBvdGhlciBpdGVtIGhh
cyB0aGUgY2hpbGRyZW4gaW4gdGhlIHNhbWUgb3JkZXIgKGl0IGRvZXNuJ3Qgc2VlbSB0byBiZQor
ICAgICAgICB0cnVlKQorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06Omhhc1NhbWVGcmFt
ZXMpOiBBZGQgcmVjdXJzaXZlIGNvbXBhcmlzb24gb2YgY2hpbGQKKyAgICAgICAgZnJhbWVzLgor
ICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJdGVtKTogQ29t
cGFyZSBmdWxsIHNldCBvZiBkb2N1bWVudHMgaW4gCisgICAgICAgIGhpc3RvcnkgaXRlbXMsIG5v
dCBqdXN0IHRoZSB0b3Btb3N0IG9uZXMuIE90aGVyd2lzZSB3aGVuIGdvaW5nIGJldHdlZW4KKyAg
ICAgICAgZnJhbWVzZXRzIHdoZXJlIG9ubHkgb25lIG9mIHRoZSBzdWJmcmFtZXMgY2hhbmdlZCB3
ZSB3b3VsZG4ndCB0cmlnZ2VyIGEKKyAgICAgICAgbG9hZC4KKyAgICAgICAgKiBsb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6
OnJlY3Vyc2l2ZUdvVG9JdGVtKTogQWxzbyBjaGVjayB0aGF0IHRoZQorICAgICAgICB0d28gaGlz
dG9yeSBpdGVtcyBoYXZlIHRoZSBzYW1lIGZyYW1lcworICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OmN1cnJlbnRGcmFtZXNNYXRjaEl0ZW0pOiBSZWZhY3RvciAKKyAgICAgICAg
Y2hpbGRGcmFtZXNNYXRjaEl0ZW0gdG8gYWxzbyBjaGVjayB0aGUgdG9wLW1vc3QgZnJhbWUsIHRv
IG1ha2UgCisgICAgICAgIHJlY3Vyc2l2ZUdvVG9JdGVtIGVhc2llciB0byByZWFkLgorICAgICAg
ICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oOgorCiAyMDEwLTA4LTE5ICBNaWhhaSBQYXJw
YXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBi
L1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggMzQwOWY4MWRkNGE5ZTk4ODU0
ZDNkYTE0YTVjYWY4NjIzYzUzOWE1OC4uODc4YzAxMzZjM2IyYzUxNjE4Y2U5NjlmYTIyMGM1ODhm
NzAwOGNmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysg
Yi9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC00NDYsNiArNDQ2LDE2IEBAIEhp
c3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcm
IHRhcmdldCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorSGlzdG9yeUl0ZW0qIEhpc3RvcnlJ
dGVtOjpjaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihsb25nIGxvbmcgbnVtYmVy
KSBjb25zdAoreworICAgIHVuc2lnbmVkIHNpemUgPSBtX2NoaWxkcmVuLnNpemUoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChtX2NoaWxk
cmVuW2ldLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gbnVtYmVyKQorICAgICAgICAgICAg
cmV0dXJuIG1fY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiAv
LyA8cmRhcjovL3Byb2JsZW0vNDg5NTg0OT4gSGlzdG9yeUl0ZW06OmZpbmRUYXJnZXRJdGVtKCkg
c2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBub24tcmVjdXJzaXZlIG1ldGhvZC4KIEhpc3RvcnlJ
dGVtKiBIaXN0b3J5SXRlbTo6ZmluZFRhcmdldEl0ZW0oKQogewpAQCAtNDgwLDYgKzQ5MCw4IEBA
IHZvaWQgSGlzdG9yeUl0ZW06OmNsZWFyQ2hpbGRyZW4oKQogICAgIG1fY2hpbGRyZW4uY2xlYXIo
KTsKIH0KIAorLy8gRG9lcyBhIHJlY3Vyc2l2ZSBjaGVjayB0aGF0IHRoaXMgaXRlbSBhbmQgaXRz
IGRlc2NlbmRhbnRzIGhhdmUgdGhlIHNhbWUKKy8vIGRvY3VtZW50IHNlcXVlbmNlIG51bWJlcnMg
YXMgdGhlIG90aGVyIGl0ZW0uCiBib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRG9jdW1lbnRzKEhp
c3RvcnlJdGVtKiBvdGhlckl0ZW0pCiB7CiAgICAgaWYgKGRvY3VtZW50U2VxdWVuY2VOdW1iZXIo
KSAhPSBvdGhlckl0ZW0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSkKQEAgLTQ4NywxMiArNDk5
LDMyIEBAIGJvb2wgSGlzdG9yeUl0ZW06Omhhc1NhbWVEb2N1bWVudHMoSGlzdG9yeUl0ZW0qIG90
aGVySXRlbSkKICAgICAgICAgCiAgICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVySXRl
bS0+Y2hpbGRyZW4oKS5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7IGkrKykgewotICAgICAg
ICBpZiAoIWNoaWxkcmVuKClbaV0tPmhhc1NhbWVEb2N1bWVudHMob3RoZXJJdGVtLT5jaGlsZHJl
bigpW2ldLmdldCgpKSkKKyAgICAgICAgSGlzdG9yeUl0ZW0qIGNoaWxkID0gY2hpbGRyZW4oKVtp
XS5nZXQoKTsKKyAgICAgICAgSGlzdG9yeUl0ZW0qIG90aGVyQ2hpbGQgPSBvdGhlckl0ZW0tPmNo
aWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVyKGNoaWxkLT5kb2N1bWVudFNlcXVlbmNl
TnVtYmVyKCkpOworICAgICAgICBpZiAoIW90aGVyQ2hpbGQgfHwgIWNoaWxkLT5oYXNTYW1lRG9j
dW1lbnRzKG90aGVyQ2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICAKKworICAgIHJldHVybiB0cnVlOworfQorCisvLyBEb2VzIGEgbm9uLXJlY3Vyc2l2ZSBjaGVj
ayB0aGF0IHRoaXMgaXRlbSBhbmQgaXRzIGltbWVkaWF0ZSBjaGlsZHJlbiBoYXZlIHRoZQorLy8g
c2FtZSBmcmFtZXMgYXMgdGhlIG90aGVyIGl0ZW0uCitib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1l
RnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pCit7CisgICAgaWYgKHRhcmdldCgpICE9IG90
aGVySXRlbS0+dGFyZ2V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAg
aWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVySXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRy
ZW4oKS5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAoIW90aGVySXRlbS0+Y2hpbGRJdGVtV2l0
aFRhcmdldChjaGlsZHJlbigpW2ldLT50YXJnZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKaW5k
ZXggZGZkYmM0MzNjNzliNGY1OTFkZDk0ZGYyMDBlNDIwY2RiN2ZiNThmOS4uYjExYTkyZWI0MjFh
YWY2ZDQyZjg4NzZjZTI3YTIwMjdjZGI0MDkyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKKysrIGIvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTE1
NSwxMiArMTU1LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENoaWxkSXRlbShQYXNzUmVmUHRy
PEhpc3RvcnlJdGVtPik7CiAgICAgdm9pZCBzZXRDaGlsZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5
SXRlbT4pOwogICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRoVGFyZ2V0KGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OworICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5j
ZU51bWJlcihsb25nIGxvbmcgbnVtYmVyKSBjb25zdDsKICAgICBIaXN0b3J5SXRlbSogdGFyZ2V0
SXRlbSgpOwogICAgIGNvbnN0IEhpc3RvcnlJdGVtVmVjdG9yJiBjaGlsZHJlbigpIGNvbnN0Owog
ICAgIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKTsK
ICAgICAKICAgICBib29sIGhhc1NhbWVEb2N1bWVudHMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSk7
CisgICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pOwogCiAgICAg
Ly8gVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBmb3IgSGlzdG9yeUl0ZW1zIHRo
YXQgYXJlIGFscmVhZHkgaW5jbHVkZWQKICAgICAvLyBpbiBHbG9iYWxIaXN0b3J5LiBUaGUgV2Vi
S2l0IGFwaSBmb3IgdGhpcyBpcyB0byB1c2UgLVtXZWJIaXN0b3J5IHNldExhc3RWaXNpdGVkVGlt
ZUludGVydmFsOmZvckl0ZW06XSBpbnN0ZWFkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDI0
ODg4ZjI3ZTllYTE5MDY3MmUyMDNlZjg1NjMwZDU5YTkzNWUyMDguLmM0ODQxY2ZiODM5ZDcwNDhk
Njc2ZjhkYWQ4ZGI2MzViZWRkZjJlMmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMyMjgs
MTEgKzMyMjgsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0RpZmZlcmVudERvY3Vt
ZW50KEhpc3RvcnlJdGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIGwKIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKQogewog
ICAgIC8vIFdlIGRvIHNhbWUtZG9jdW1lbnQgbmF2aWdhdGlvbiBpbiB0aGUgZm9sbG93aW5nIGNh
c2VzOgotICAgIC8vIC0gVGhlIEhpc3RvcnlJdGVtIGNvcnJlc3BvbmRzIHRvIHRoZSBzYW1lIGRv
Y3VtZW50LgorICAgIC8vIC0gVGhlIEhpc3RvcnlJdGVtIGNvcnJlc3BvbmRzIHRvIHRoZSBzYW1l
IGRvY3VtZW50IChvciBkb2N1bWVudHMgaW4gdGhlIGNhc2Ugb2YgZnJhbWVzKS4KICAgICAvLyAt
IFRoZSBIaXN0b3J5SXRlbSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgaXRlbS4KICAg
ICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0gPSBoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCk7CiAg
ICAgYm9vbCBzYW1lRG9jdW1lbnROYXZpZ2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbSAhPSBj
dXJyZW50SXRlbQotICAgICAgICAmJiBpdGVtLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0g
Y3VycmVudEl0ZW0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsKKyAgICAgICAgJiYgaXRlbS0+
aGFzU2FtZURvY3VtZW50cyhjdXJyZW50SXRlbSk7CiAKICNpZiBFTkFCTEUoV01MKQogICAgIC8v
IEFsbCBXTUwgZGVja3Mgc2hvdWxkIGdvIHRocm91Z2ggdGhlIHJlYWwgbG9hZCBtZWNoYW5pc20s
IG5vdCB0aGUgc2Nyb2xsLXRvLWFuY2hvciBjb2RlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAKaW5kZXggMTQ0ZmFhNWEyODMwNDQ2MWEyMjI0MzY0OTA0MTk0MTA2MGM3MDk3Zi4uMTFh
MDI3NzZkMzQ0NDY1M2UzMWZkMGJjOTcyYWJlMDczYjkyOGQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcApAQCAtNTU4LDkgKzU1OCwxMCBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgSGlzdG9yeUl0ZW0qIGZy
b21JdAogICAgIC8vIHRvIG1hdGNoLgogICAgIC8vIE5vdGU6IElmIGl0ZW0gYW5kIGZyb21JdGVt
IGFyZSB0aGUgc2FtZSwgdGhlbiB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldwogICAgIC8vIGRvY3Vt
ZW50LgotICAgIGlmIChpdGVtICE9IGZyb21JdGVtICYmIGl0ZW0tPml0ZW1TZXF1ZW5jZU51bWJl
cigpID09IGZyb21JdGVtLT5pdGVtU2VxdWVuY2VOdW1iZXIoKQotICAgICAgICAmJiAoKG1fZnJh
bWUtPnRyZWUoKS0+bmFtZSgpLmlzRW1wdHkoKSAmJiBpdGVtLT50YXJnZXQoKS5pc0VtcHR5KCkp
IHx8IG1fZnJhbWUtPnRyZWUoKS0+bmFtZSgpID09IGl0ZW0tPnRhcmdldCgpKQotICAgICAgICAm
JiBjaGlsZEZyYW1lc01hdGNoSXRlbShpdGVtKSkKKyAgICBpZiAoaXRlbSAhPSBmcm9tSXRlbSAK
KyAgICAgICAgJiYgaXRlbS0+aXRlbVNlcXVlbmNlTnVtYmVyKCkgPT0gZnJvbUl0ZW0tPml0ZW1T
ZXF1ZW5jZU51bWJlcigpCisgICAgICAgICYmIGN1cnJlbnRGcmFtZXNNYXRjaEl0ZW0oaXRlbSkK
KyAgICAgICAgJiYgZnJvbUl0ZW0tPmhhc1NhbWVGcmFtZXMoaXRlbSkpCiAgICAgewogICAgICAg
ICAvLyBUaGlzIGNvbnRlbnQgaXMgZ29vZCwgc28gbGVhdmUgaXQgYWxvbmUgYW5kIGxvb2sgZm9y
IGNoaWxkcmVuIHRoYXQgbmVlZCByZWxvYWRpbmcKICAgICAgICAgLy8gU2F2ZSBmb3JtIHN0YXRl
ICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtLCBzaW5jZSBwcmV2SXRlbSBpcyBuaWwpCkBAIC01ODUs
NyArNTg2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlz
dG9yeUl0ZW0qIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXQKICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZyBjaGlsZEZyYW1lTmFtZSA9
IGNoaWxkSXRlbXNbaV0tPnRhcmdldCgpOwogICAgICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21D
aGlsZEl0ZW0gPSBmcm9tSXRlbS0+Y2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7
Ci0gICAgICAgICAgICBBU1NFUlQoZnJvbUNoaWxkSXRlbSB8fCBmcm9tSXRlbS0+aXNUYXJnZXRJ
dGVtKCkpOworICAgICAgICAgICAgQVNTRVJUKGZyb21DaGlsZEl0ZW0pOwogICAgICAgICAgICAg
RnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPmNoaWxkKGNoaWxkRnJhbWVOYW1l
KTsKICAgICAgICAgICAgIEFTU0VSVChjaGlsZEZyYW1lKTsKICAgICAgICAgICAgIGNoaWxkRnJh
bWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPnJlY3Vyc2l2ZUdvVG9JdGVtKGNoaWxkSXRlbXNbaV0u
Z2V0KCksIGZyb21DaGlsZEl0ZW0sIHR5cGUpOwpAQCAtNTk1LDEwICs1OTYsMTIgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEhp
c3RvcnlJdGVtKiBmcm9tSXQKICAgICB9CiB9CiAKLS8vIGhlbHBlciBtZXRob2QgdGhhdCBkZXRl
cm1pbmVzIHdoZXRoZXIgdGhlIHN1YmZyYW1lcyBkZXNjcmliZWQgYnkgdGhlIGl0ZW0ncyBzdWJp
dGVtcwotLy8gbWF0Y2ggb3VyIG93biBjdXJyZW50IGZyYW1lc2V0Ci1ib29sIEhpc3RvcnlDb250
cm9sbGVyOjpjaGlsZEZyYW1lc01hdGNoSXRlbShIaXN0b3J5SXRlbSogaXRlbSkgY29uc3QKKy8v
IEhlbHBlciBtZXRob2QgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZnJhbWUg
dHJlZSBtYXRjaGVzIGdpdmVuIGhpc3RvcnkgaXRlbSdzLgorYm9vbCBIaXN0b3J5Q29udHJvbGxl
cjo6Y3VycmVudEZyYW1lc01hdGNoSXRlbShIaXN0b3J5SXRlbSogaXRlbSkgY29uc3QKIHsKKyAg
ICBpZiAoKCFtX2ZyYW1lLT50cmVlKCktPm5hbWUoKS5pc0VtcHR5KCkgfHwgIWl0ZW0tPnRhcmdl
dCgpLmlzRW1wdHkoKSkgJiYgbV9mcmFtZS0+dHJlZSgpLT5uYW1lKCkgIT0gaXRlbS0+dGFyZ2V0
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgY29uc3QgSGlzdG9yeUl0
ZW1WZWN0b3ImIGNoaWxkSXRlbXMgPSBpdGVtLT5jaGlsZHJlbigpOwogICAgIGlmIChjaGlsZEl0
ZW1zLnNpemUoKSAhPSBtX2ZyYW1lLT50cmVlKCktPmNoaWxkQ291bnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjA5LDcgKzYxMiw2IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OmNo
aWxkRnJhbWVzTWF0Y2hJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdAogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICAvLyBGb3VuZCBtYXRjaGVzIGZvciBhbGwg
aXRlbSB0YXJnZXRzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5oCmluZGV4IDE5OTAyZjhmODc2Y2E4NzA2MGNjNmZlNGIwOGQzZjE0Zjc2YjZiZjkuLjQ4
N2ZkYzlmNzQyMWZlZTQ4YTBiZjJjOGYzYjllMGQ3MDE4YjZmMmMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvSGlzdG9y
eUNvbnRyb2xsZXIuaApAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW1UcmVlKEZyYW1lKiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlw
QXRUYXJnZXQpOwogCiAgICAgdm9pZCByZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5SXRlbSosIEhp
c3RvcnlJdGVtKiwgRnJhbWVMb2FkVHlwZSk7Ci0gICAgYm9vbCBjaGlsZEZyYW1lc01hdGNoSXRl
bShIaXN0b3J5SXRlbSopIGNvbnN0OworICAgIGJvb2wgY3VycmVudEZyYW1lc01hdGNoSXRlbShI
aXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRMaXN0Q2xpcHBl
ZEF0VGFyZ2V0KGJvb2wgZG9DbGlwKTsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>