<?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>37436</bug_id>
          
          <creation_ts>2010-04-11 22:58:42 -0700</creation_ts>
          <short_desc>[Chromium] Select popups assert when destroyed.</short_desc>
          <delta_ts>2010-04-16 11:08:12 -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 Misc.</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>
          <dependson>37605</dependson>
    
    <dependson>37711</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jay Civelli">jcivelli</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jcampan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>211545</commentid>
    <comment_count>0</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-04-11 22:58:42 -0700</bug_when>
    <thetext>Navigate to a page with a select.
Click on the select to open the popup then select an item to close it.
Navigate to a new page.

This causes an ASSERT to be triggered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211551</commentid>
    <comment_count>1</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-04-11 23:15:28 -0700</bug_when>
    <thetext>Assert happens because PopupContainer::notifyPopupHidden() is called twice, once the popup is closed and once it is destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211552</commentid>
    <comment_count>2</comment_count>
      <attachid>53153</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-04-11 23:16:06 -0700</bug_when>
    <thetext>Created attachment 53153
Fix assert and adds unit-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211555</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-11 23:23:59 -0700</bug_when>
    <thetext>Attachment 53153 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/tests/PopupMenuTest.cpp:33:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:37:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:179:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 5 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211556</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-11 23:30:42 -0700</bug_when>
    <thetext>Attachment 53153 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1550428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211559</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-11 23:37:22 -0700</bug_when>
    <thetext>+ WebKit/chromium/tests/PopupMenuTest.cpp

WebKit doesn&apos;t hasn&apos;t traditionally had unit tests like this.  How is this test built?  How is it run?  Why can&apos;t we test this with a LayoutTest?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211719</commentid>
    <comment_count>6</comment_count>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-04-12 13:57:16 -0700</bug_when>
    <thetext>dgalzkov suggested to write unit-test for the select popup there.
These tests are built and run on the Chromium bots, see webkit_unit_tests on the Chromium water-fall.
I think it&apos;s hard to write layout tests that test the select popup behavior properly as it requires simulating focus/keyboard/mouse events and it needs to be able to test if the select popup is showing or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211726</commentid>
    <comment_count>7</comment_count>
      <attachid>53187</attachid>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-04-12 14:15:41 -0700</bug_when>
    <thetext>Created attachment 53187
Attempt at fixing style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211727</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-12 14:17:25 -0700</bug_when>
    <thetext>Attachment 53187 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/tests/PopupMenuTest.cpp:33:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:37:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211728</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-12 14:21:40 -0700</bug_when>
    <thetext>Attachment 53187 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1568437</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212334</commentid>
    <comment_count>10</comment_count>
      <attachid>53187</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-14 07:24:05 -0700</bug_when>
    <thetext>Comment on attachment 53187
Attempt at fixing style issues.

Not an in depth review, but it seems this doesn&apos;t merit one at present since it appears to break the chromium build.

Please fix the chromium build issue and update a new patch (or explain why the build break really isn&apos;t caused by this change).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212405</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-14 09:59:24 -0700</bug_when>
    <thetext>I am totally ok with the unit tests. It&apos;s very hard and round-hole-square-pegish to attempt to test this code through DRT. Unit test is the right tool for the job here.  Jay tells me he can&apos;t repro the build break. It looks like an include path failure. Adam, Eric, can this be an EWS issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212432</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-14 10:57:58 -0700</bug_when>
    <thetext>&gt; I am totally ok with the unit tests.

I learned at the WebKit meeting that we have a bunch of these sorts of tests and we&apos;re thinking about adding more in the future.  Looking at EWS now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212433</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-14 11:01:28 -0700</bug_when>
    <thetext>&gt; Adam, Eric, can this be an EWS issue?

That&apos;s entirely possible.  Maybe we should try landing and watching the tree to make sure its a false positive?  If it does turn out to be a false positive, can you file a bug for the EWS failure and CC me?  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212440</commentid>
    <comment_count>14</comment_count>
      <attachid>53187</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-14 11:08:21 -0700</bug_when>
    <thetext>Comment on attachment 53187
Attempt at fixing style issues.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212529</commentid>
    <comment_count>15</comment_count>
      <attachid>53187</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-14 13:21:45 -0700</bug_when>
    <thetext>Comment on attachment 53187
Attempt at fixing style issues.

Clearing flags on attachment: 53187

Committed r57599: &lt;http://trac.webkit.org/changeset/57599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212530</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-14 13:21:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212533</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-14 13:30:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57599 might have broken Chromium Mac Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212541</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-14 13:46:19 -0700</bug_when>
    <thetext>Looks like the EWS bots already told us (twice) that this would break Chromium. :(

The fix is probably simple, but if no one is around we should roll this out ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212953</commentid>
    <comment_count>19</comment_count>
      <attachid>53457</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-04-15 11:37:51 -0700</bug_when>
    <thetext>Created attachment 53457
Another attempt

This patch was reverted previously as it broke the Mac build.
I fixed the compilation problems but the tests are not working yet on Mac and Linux (they assert when creating a font).
So I made them Windows only for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212956</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-15 11:42:39 -0700</bug_when>
    <thetext>Attachment 53457 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/tests/PopupMenuTest.cpp:33:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:37:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/PopupMenuTest.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212988</commentid>
    <comment_count>21</comment_count>
      <attachid>53457</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-15 12:56:00 -0700</bug_when>
    <thetext>Comment on attachment 53457
Another attempt

ok. Let&apos;s try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213278</commentid>
    <comment_count>22</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 09:41:43 -0700</bug_when>
    <thetext>Oops, we forgot to reopen the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213282</commentid>
    <comment_count>23</comment_count>
      <attachid>53457</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-16 10:18:24 -0700</bug_when>
    <thetext>Comment on attachment 53457
Another attempt

Clearing flags on attachment: 53457

Committed r57724: &lt;http://trac.webkit.org/changeset/57724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213283</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-16 10:18:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213286</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 10:31:20 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57724 might have broken Chromium Mac Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213294</commentid>
    <comment_count>26</comment_count>
      <attachid>53538</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-04-16 10:52:16 -0700</bug_when>
    <thetext>Created attachment 53538
Fix Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213296</commentid>
    <comment_count>27</comment_count>
      <attachid>53538</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 11:00:06 -0700</bug_when>
    <thetext>Comment on attachment 53538
Fix Mac build

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213300</commentid>
    <comment_count>28</comment_count>
      <attachid>53538</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 11:05:46 -0700</bug_when>
    <thetext>Comment on attachment 53538
Fix Mac build

will land manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213301</commentid>
    <comment_count>29</comment_count>
      <attachid>53538</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 11:08:04 -0700</bug_when>
    <thetext>Comment on attachment 53538
Fix Mac build

Clearing flags on attachment: 53538

Committed r57727: &lt;http://trac.webkit.org/changeset/57727&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213302</commentid>
    <comment_count>30</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 11:08:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53153</attachid>
            <date>2010-04-11 23:16:06 -0700</date>
            <delta_ts>2010-04-12 14:15:41 -0700</delta_ts>
            <desc>Fix assert and adds unit-tests</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>17068</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU3NDY5KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0xMSAgSmF5IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW2Nocm9taXVtXSBTZWxlY3QgcG9wdXBzIHdvdWxkIGFzc2VydCB3aGVuIGRlc3Ryb3llZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDM2CisK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBDb250YWluZXI6OnNob3dQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cENvbnRhaW5lcjo6bm90aWZ5UG9wdXBIaWRkZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1BvcHVwTWVudUNocm9taXVtLmg6CisKIDIwMTAtMDQtMTEgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHI1NzQ2OC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51
Q2hyb21pdW0uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDU3NDY5KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw3
ICszMTMsOCBAQCBQb3B1cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIoUG9wdXBNZW51CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYg
c2V0dGluZ3MpCiAgICAgOiBtX2xpc3RCb3goUG9wdXBMaXN0Qm94OjpjcmVhdGUoY2xpZW50LCBz
ZXR0aW5ncykpCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQotICAgICwgbV9wb3B1cFR5cGUo
cG9wdXBUeXBlKSAgCisgICAgLCBtX3BvcHVwVHlwZShwb3B1cFR5cGUpCisgICAgLCBtX3BvcHVw
T3BlbihmYWxzZSkKIHsKICAgICBzZXRTY3JvbGxiYXJNb2RlcyhTY3JvbGxiYXJBbHdheXNPZmYs
IFNjcm9sbGJhckFsd2F5c09mZik7CiB9CkBAIC0zNjcsNiArMzY4LDcgQEAgdm9pZCBQb3B1cENv
bnRhaW5lcjo6c2hvd1BvcHVwKEZyYW1lVmlldwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGNocm9tZUNsaWVudC0+cG9wdXBPcGVuZWQodGhpcywgd2lkZ2V0UmVjdCwgZmFsc2Up
OworICAgICAgICBtX3BvcHVwT3BlbiA9IHRydWU7CiAgICAgfQogCiAgICAgaWYgKCFtX2xpc3RC
b3gtPnBhcmVudCgpKQpAQCAtNDE2LDcgKzQxOCwxMCBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpo
aWRlUG9wdXAoKQogCiB2b2lkIFBvcHVwQ29udGFpbmVyOjpub3RpZnlQb3B1cEhpZGRlbigpCiB7
Ci0gICAgIGNocm9tZUNsaWVudENocm9taXVtKCktPnBvcHVwQ2xvc2VkKHRoaXMpOworICAgIGlm
ICghbV9wb3B1cE9wZW4pCisgICAgICAgIHJldHVybjsKKyAgICBtX3BvcHVwT3BlbiA9IGZhbHNl
OworICAgIGNocm9tZUNsaWVudENocm9taXVtKCktPnBvcHVwQ2xvc2VkKHRoaXMpOwogfQogCiB2
b2lkIFBvcHVwQ29udGFpbmVyOjpsYXlvdXQoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCShyZXZpc2lvbiA1NzQ2OSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpA
QCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICAvLyBwb3B1cHMgb24gb3RoZXIgcGxhdGZv
cm1zLgogICAgIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4
KTsKIAotICAgIC8vIEhpZGUgdGhlIHBvcHVwLgorICAgIC8vIEhpZGVzIHRoZSBwb3B1cC4KICAg
ICB2b2lkIGhpZGVQb3B1cCgpOwogCiAgICAgLy8gVGhlIHBvcHVwIHdhcyBoaWRkZW4uCkBAIC0x
NzcsNiArMTc3LDkgQEAgcHVibGljOgogCiAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9wdXBUeXBlOyB9CiAKKyAgICAvLyBXaGV0aGVyIHRoZSBwb3B1cCBpcyBj
dXJyZW50bHkgb3Blbi4KKyAgICBib29sIG1fcG9wdXBPcGVuOworCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8UG9wdXBDb250YWluZXI+OwogCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gNTc0NjkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDQtMTEgIEpheSBDaXZlbGxpICA8
amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gU2VsZWN0IHBvcHVwcyB3b3VsZCBhc3NlcnQgd2hl
biBkZXN0cm95ZWQuCisgICAgICAgIEFsc28gYWRkaW5nIHVuaXQtdGVzdHMgZm9yIHRoZSBzZWxl
Y3QgcG9wdXAgY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM3NDM2CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2VsZWN0UG9wdXApOgor
ICAgICAgICAqIHRlc3RzL1BvcHVwTWVudVRlc3QuY3BwOiBBZGRlZC4KKwogMjAxMC0wNC0xMSAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjU3NDY4LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNp
b24gNTc0NjkpCisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpA
QCAtNTAyLDYgKzUwMiw3IEBACiAgICAgICAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgICAg
ICAgICAndGVzdHMvS2V5Ym9hcmRUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Rlc3RzL0tV
UkxUZXN0LmNwcCcsCisgICAgICAgICAgICAgICAgJ3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwJywK
ICAgICAgICAgICAgICAgICAndGVzdHMvUnVuQWxsVGVzdHMuY3BwJywKICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAkocmV2aXNpb24gNTc0NjkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMSw2ICszMTEsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKik7CiAjZW5kaWYK
IAorICAgIFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBzZWxlY3RQb3B1cCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VsZWN0UG9wdXAuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
V2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0ZSBjYW4gY2FsbCBvdXIgY29uc3RydWN0b3IK
ICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdlYlZpZXdJbXBsPjsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJLZXlib2FyZENvZGVzLmgiCisjaW5j
bHVkZSAiUG9wdXBNZW51LmgiCisjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCisjaW5jbHVk
ZSAiUG9wdXBNZW51Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJTY3JvbGxCYXIuaCIKKyNpbmNsdWRl
ICJXZWJGcmFtZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUg
IldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbXBsLmgiCisjaW5jbHVk
ZSAiV2ViU2NyZWVuSW5mby5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRl
ICJXZWJWaWV3SW1wbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK2NsYXNzIFRlc3RQb3B1cE1lbnVDbGllbnQgOiBwdWJsaWMgUG9wdXBN
ZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBJdGVtIGF0IGluZGV4IDAgaXMgc2VsZWN0ZWQg
YnkgZGVmYXVsdC4KKyAgICBUZXN0UG9wdXBNZW51Q2xpZW50KCkgOiBtX3NlbGVjdEluZGV4KDAp
IHsgfQorICAgIHZpcnR1YWwgflRlc3RQb3B1cE1lbnVDbGllbnQoKSB7fQorICAgIHZpcnR1YWwg
dm9pZCB2YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMgPSB0
cnVlKQorICAgIHsKKyAgICAgICAgbV9zZWxlY3RJbmRleCA9IGxpc3RJbmRleDsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIFN0cmluZyBpdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0Cisg
ICAgeworICAgICAgICBTdHJpbmcgc3RyKCJJdGVtICIpOworICAgICAgICBzdHIuYXBwZW5kKFN0
cmluZzo6bnVtYmVyKGxpc3RJbmRleCkpOworICAgICAgICByZXR1cm4gc3RyOworICAgIH0KKyAg
ICB2aXJ0dWFsIFN0cmluZyBpdGVtVG9vbFRpcCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IHsg
cmV0dXJuIGl0ZW1UZXh0KGxpc3RJbmRleCk7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBpdGVtQWNj
ZXNzaWJpbGl0eVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiBpdGVtVGV4
dChsaXN0SW5kZXgpOyB9CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc0VuYWJsZWQodW5zaWduZWQg
bGlzdEluZGV4KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBQb3B1cE1lbnVT
dHlsZSBpdGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAg
Rm9udCBmb250KEZvbnRQbGF0Zm9ybURhdGEoMTIuMCwgZmFsc2UsIGZhbHNlKSwgZmFsc2UpOwor
ICAgICAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoQ29sb3I6OmJsYWNrLCBDb2xvcjo6d2hpdGUs
IGZvbnQsIHRydWUsIExlbmd0aCgpLCBUZXh0RGlyZWN0aW9uKCkpOworICAgIH0KKyAgICB2aXJ0
dWFsIFBvcHVwTWVudVN0eWxlIG1lbnVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGl0ZW1TdHlsZSgw
KTsgfQorICAgIHZpcnR1YWwgaW50IGNsaWVudEluc2V0TGVmdCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIGludCBjbGllbnRJbnNldFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgaW50IGNsaWVudFBhZGRpbmdMZWZ0KCkgY29uc3QgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgaW50IGNsaWVudFBhZGRpbmdSaWdodCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIGludCBsaXN0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDEwOyB9CisgICAg
dmlydHVhbCBpbnQgc2VsZWN0ZWRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0SW5kZXg7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9wdXBEaWRIaWRlKCkgeyB9CisgICAgdmlydHVhbCBib29s
IGl0ZW1Jc1NlcGFyYXRvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc0xhYmVsKHVuc2lnbmVkIGxpc3RJbmRleCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzU2VsZWN0ZWQodW5z
aWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiBsaXN0SW5kZXggPT0gbV9zZWxlY3RJbmRl
eDsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQb3BPdmVyKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVTaG91bGRDaGFuZ2VPbkhvdFRyYWNrKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEZyb21JdGVtKHVu
c2lnbmVkIGxpc3RJbmRleCkgeyB9CisgICAgCisgICAgdmlydHVhbCBGb250U2VsZWN0b3IqIGZv
bnRTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3coKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhckNsaWVudCosIFNjcm9s
bGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSkgeyByZXR1cm4gMDsgfQorCitw
cml2YXRlOgorICAgIGludCBtX3NlbGVjdEluZGV4OworfTsKKworY2xhc3MgVGVzdFdlYldpZGdl
dENsaWVudCA6IHB1YmxpYyBXZWJXaWRnZXRDbGllbnQgeworcHVibGljOgorICAgIH5UZXN0V2Vi
V2lkZ2V0Q2xpZW50KCkgeyB9Cit9OworCitjbGFzcyBUZXN0V2ViUG9wdXBNZW51SW1wbCA6IHB1
YmxpYyBXZWJQb3B1cE1lbnVJbXBsIHsKK3B1YmxpYzoKKyAgICBUZXN0V2ViUG9wdXBNZW51SW1w
bChXZWJXaWRnZXRDbGllbnQqIGNsaWVudCkgOiBXZWJQb3B1cE1lbnVJbXBsKGNsaWVudCkgeyB9
CisgICAgflRlc3RXZWJQb3B1cE1lbnVJbXBsKCkgeyB9Cit9OworCitjbGFzcyBUZXN0V2ViV2lk
Z2V0IDogcHVibGljIFdlYldpZGdldCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VGVzdFdlYldp
ZGdldCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIHsgfQorICAgIHZpcnR1YWwgV2Vi
U2l6ZSBzaXplKCkgeyByZXR1cm4gV2ViU2l6ZSgxMDAsIDEwMCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50
JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZUNhcHR1cmVMb3N0KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVDb21wb3NpdGlvbkV2ZW50KFdlYkNvbXBvc2l0aW9uQ29tbWFuZCBjb21tYW5kLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjdXJzb3JQb3NpdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0U3Rh
cnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldEVu
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJp
bmcmIHRleHQpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcXVlcnlDb21wb3Np
dGlvblN0YXR1cyhib29sKiBlbmFibGVkLCBXZWJSZWN0KiBjYXJldEJvdW5kcykgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKFdlYlRleHREaXJlY3Rp
b24pIHsgfQorfTsKKworY2xhc3MgVGVzdFdlYlZpZXdDbGllbnQgOiBwdWJsaWMgV2ViVmlld0Ns
aWVudCB7CitwdWJsaWM6CisgICAgVGVzdFdlYlZpZXdDbGllbnQoKSA6IG1fd2ViUG9wdXBNZW51
KCZtX3dlYldpZGdldENsaWVudCkgeyB9CisgICAgflRlc3RXZWJWaWV3Q2xpZW50KCkgeyB9CisK
KyAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KFdlYlBvcHVwVHlwZSkgeyBy
ZXR1cm4gJm1fd2ViUG9wdXBNZW51OyB9CisKKyAgICAvLyBXZSBuZWVkIHRvIG92ZXJyaWRlIHRo
aXMgc28gdGhhdCB0aGUgcG9wdXAgbWVudSBzaXplIGlzIG5vdCAwCisgICAgLy8gKHRoZSBsYXlv
dXQgY29kZSBjaGVja3MgdG8gc2VlIGlmIHRoZSBwb3B1cCBmaXRzIG9uIHRoZSBzY3JlZW4pLgor
ICAgIHZpcnR1YWwgV2ViU2NyZWVuSW5mbyBzY3JlZW5JbmZvKCkKKyAgICB7IAorICAgICAgICBX
ZWJTY3JlZW5JbmZvIHNjcmVlbkluZm87CisgICAgICAgIHNjcmVlbkluZm8uYXZhaWxhYmxlUmVj
dC5oZWlnaHQgPSAyMDAwOworICAgICAgICBzY3JlZW5JbmZvLmF2YWlsYWJsZVJlY3Qud2lkdGgg
PSAyMDAwOworICAgICAgICByZXR1cm4gc2NyZWVuSW5mbzsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgVGVzdFdlYldpZGdldENsaWVudCBtX3dlYldpZGdldENsaWVudDsKKyAgICBUZXN0V2ViUG9w
dXBNZW51SW1wbCBtX3dlYlBvcHVwTWVudTsKK307CisKK2NsYXNzIFRlc3RXZWJGcmFtZUNsaWVu
dCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7CitwdWJsaWM6CisgICAgflRlc3RXZWJGcmFtZUNs
aWVudCgpIHsgfQorfTsKKworY2xhc3MgU2VsZWN0UG9wdXBNZW51VGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBTZWxlY3RQb3B1cE1lbnVUZXN0KCkKKyAgICB7Cisg
ICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAg
ICAgIG1fd2ViVmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oV2ViVmlldzo6Y3JlYXRl
KCZtX3dlYnZpZXdDbGllbnQpKTsKKyAgICAgICAgbV93ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZy
YW1lKCZtX3dlYkZyYW1lQ2xpZW50KTsKKyAgICAgICAgbV9wb3B1cE1lbnUgPSBQb3B1cE1lbnU6
OmNyZWF0ZSgmbV9wb3B1cE1lbnVDbGllbnQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpCisgICAgeworICAgICAgICBtX3BvcHVwTWVudSA9IDA7CisgICAgICAgIG1fd2Vi
Vmlldy0+Y2xvc2UoKTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgY3Vy
cmVudGx5IGlzIGEgc2VsZWN0IHBvcHVwIGluIHRoZSBXZWJWaWV3LgorICAgIGJvb2wgcG9wdXBP
cGVuKCkgY29uc3QgeyByZXR1cm4gbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpICE9IDA7IH0KKwor
ICAgIGludCBzZWxlY3RlZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cE1lbnVDbGllbnQu
c2VsZWN0ZWRJbmRleCgpOyB9CisKKyAgICB2b2lkIHNob3dQb3B1cCgpCisgICAgeworICAgICAg
ICBtX3BvcHVwTWVudS0+c2hvdyhJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpLT5mcmFt
ZVZpZXcoKSwgMCk7CisgICAgICAgIEFTU0VSVF9UUlVFKHBvcHVwT3BlbigpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUobV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5wb3B1cFR5cGUoKSA9PSBQb3B1
cENvbnRhaW5lcjo6U2VsZWN0KTsKKyAgICB9CisKKyAgICB2b2lkIGhpZGVQb3B1cCgpCisgICAg
eworICAgICAgICBtX3BvcHVwTWVudS0+aGlkZSgpOworICAgICAgICBFWFBFQ1RfRkFMU0UocG9w
dXBPcGVuKCkpOworICAgIH0KKworICAgIHZvaWQgc2ltdWxhdGVLZXlEb3duRXZlbnQoaW50IGtl
eUNvZGUpCisgICAgeworICAgICAgICBzaW11bGF0ZUtleUV2ZW50KFdlYklucHV0RXZlbnQ6OlJh
d0tleURvd24sIGtleUNvZGUpOworICAgIH0KKworICAgIHZvaWQgc2ltdWxhdGVLZXlVcEV2ZW50
KGludCBrZXlDb2RlKQorICAgIHsKKyAgICAgICAgc2ltdWxhdGVLZXlFdmVudChXZWJJbnB1dEV2
ZW50OjpLZXlVcCwga2V5Q29kZSk7CisgICAgfQorCisgICAgLy8gU2ltdWxhdGVzIGEga2V5IGV2
ZW50IG9uIHRoZSBXZWJWaWV3LgorICAgIC8vIFRoZSBXZWJWaWV3IGZvcndhcmRzIHRoZSBldmVu
dCB0byB0aGUgc2VsZWN0IHBvcHVwIGlmIG9uZSBpcyBvcGVuLgorICAgIHZvaWQgc2ltdWxhdGVL
ZXlFdmVudChXZWJJbnB1dEV2ZW50OjpUeXBlIGV2ZW50VHlwZSwgaW50IGtleUNvZGUpCisgICAg
eworICAgICAgICBXZWJLZXlib2FyZEV2ZW50IGtleUV2ZW50OworICAgICAgICBrZXlFdmVudC53
aW5kb3dzS2V5Q29kZSA9IGtleUNvZGU7CisgICAgICAgIGtleUV2ZW50LnR5cGUgPSBldmVudFR5
cGU7CisgICAgICAgIG1fd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChrZXlFdmVudCk7CisgICAg
fQorCisgICAgLy8gU2ltdWxhdGVzIGEgbW91c2UgZXZlbnQgb24gdGhlIHNlbGVjdCBwb3B1cC4K
KyAgICB2b2lkIHNpbXVsYXRlTGVmdE1vdXNlRG93bkV2ZW50KGNvbnN0IEludFBvaW50JiBwb2lu
dCkKKyAgICB7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvaW50LCBw
b2ludCwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwKTsKKyAg
ICAgICAgbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZURvd25FdmVudChtb3Vz
ZUV2ZW50KTsKKyAgICB9CisgICAgdm9pZCBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQoY29uc3Qg
SW50UG9pbnQmIHBvaW50KQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNl
RXZlbnQocG9pbnQsIHBvaW50LCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCAwKTsKKyAgICAgICAgbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3Vz
ZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBUZXN0
V2ViVmlld0NsaWVudCBtX3dlYnZpZXdDbGllbnQ7CisgICAgV2ViVmlld0ltcGwqIG1fd2ViVmll
dzsKKyAgICBUZXN0V2ViRnJhbWVDbGllbnQgbV93ZWJGcmFtZUNsaWVudDsKKyAgICBUZXN0UG9w
dXBNZW51Q2xpZW50IG1fcG9wdXBNZW51Q2xpZW50OworICAgIFJlZlB0cjxQb3B1cE1lbnU+IG1f
cG9wdXBNZW51OworfTsKKworLy8gVGVzdHMgdGhhdCBzaG93L2hpZGUgYW5kIHJlcGVhdHMuICBT
ZWxlY3QgcG9wdXBzIGFyZSByZXVzZWQgaW4gd2ViIHBhZ2VzIHdoZW4KKy8vIHRoZXkgYXJlIHJl
b3BlbmVkLCB0aGF0IHdoYXQgdGhpcyBpcyB0ZXN0aW5nLgorVEVTVF9GKFNlbGVjdFBvcHVwTWVu
dVRlc3QsIFNob3dUaGVuSGlkZSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykg
eworICAgICAgICBzaG93UG9wdXAoKTsKKyAgICAgICAgaGlkZVBvcHVwKCk7CisgICAgfQorfQor
CisvLyBUZXN0cyB0aGF0IHNob3dpbmcgYSBzZWxlY3QgcG9wdXAgYW5kIGRlbGV0aW5nIGl0IGRv
ZXMgbm90IGNhdXNlIHByb2JsZW0uCisvLyBUaGlzIGhhcHBlbnMgaW4gcmVhbC1saWZlIGlmIGEg
cGFnZSBuYXZpZ2F0ZXMgd2hpbGUgYSBzZWxlY3QgcG9wdXAgaXMgc2hvd2luZy4KK1RFU1RfRihT
ZWxlY3RQb3B1cE1lbnVUZXN0LCBTaG93VGhlbkRlbGV0ZSkKK3sKKyAgICBzaG93UG9wdXAoKTsK
KyAgICAvLyBOb3RoaW5nIGVsc2UgdG8gZG8sIFRlYXJEb3duKCkgZGVsZXRlcyB0aGUgcG9wdXAu
Cit9CisKKy8vIFRlc3RzIHRoYXQgbG9zaW5nIGZvY3VzIGNsb3NlcyB0aGUgc2VsZWN0IHBvcHVw
LgorVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNob3dUaGVuTG9zZUZvY3VzKQoreworICAg
IHNob3dQb3B1cCgpOworICAgIC8vIFNpbXVsYXRlIGxvc2luZyBmb2N1cy4KKyAgICBtX3dlYlZp
ZXctPnNldEZvY3VzKGZhbHNlKTsKKworICAgIC8vIFBvcHVwIHNob3VsZCBoYXZlIGNsb3NlZC4K
KyAgICBFWFBFQ1RfRkFMU0UocG9wdXBPcGVuKCkpOworfQorCisvLyBUZXN0cyB0aGF0IHByZXNz
aW5nIEVTQyBjbG9zZXMgdGhlIHBvcHVwLgorVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNo
b3dUaGVuUHJlc3NFU0MpCit7CisgICAgc2hvd1BvcHVwKCk7CisgICAgc2ltdWxhdGVLZXlEb3du
RXZlbnQoVktFWV9FU0NBUEUpOworICAgIC8vIFBvcHVwIHNob3VsZCBoYXZlIGNsb3NlZC4KKyAg
ICBFWFBFQ1RfRkFMU0UocG9wdXBPcGVuKCkpOworfQorCisvLyBUZXN0cyBzZWxlY3RpbmcgYW4g
aXRlbSB3aXRoIHRoZSBhcnJvd3MgYW5kIGVudGVyL2VzYy90YWIuCitURVNUX0YoU2VsZWN0UG9w
dXBNZW51VGVzdCwgU2VsZWN0V2l0aEtleXMpCit7CisgICAgc2hvd1BvcHVwKCk7CisgICAgLy8g
U2ltdWxhdGUgc2VsZWN0aW5nIHRoZSAybmQgaXRlbSBieSBwcmVzc2luZyBEb3duLCBEb3duLCBl
bnRlci4KKyAgICBzaW11bGF0ZUtleURvd25FdmVudChWS0VZX0RPV04pOworICAgIHNpbXVsYXRl
S2V5RG93bkV2ZW50KFZLRVlfRE9XTik7CisgICAgc2ltdWxhdGVLZXlEb3duRXZlbnQoVktFWV9S
RVRVUk4pOworCisgICAgLy8gUG9wdXAgc2hvdWxkIGhhdmUgY2xvc2VkLgorICAgIEVYUEVDVF9U
UlVFKCFwb3B1cE9wZW4oKSk7CisgICAgRVhQRUNUX0VRKDIsIHNlbGVjdGVkSW5kZXgoKSk7CisK
KyAgICAvLyBJdCBzaG91bGQgd29yayBhcyB3ZWxsIHdpdGggRVNDLgorICAgIHNob3dQb3B1cCgp
OworICAgIHNpbXVsYXRlS2V5RG93bkV2ZW50KFZLRVlfRE9XTik7CisgICAgc2ltdWxhdGVLZXlE
b3duRXZlbnQoVktFWV9FU0NBUEUpOworICAgIEVYUEVDVF9GQUxTRShwb3B1cE9wZW4oKSk7Cisg
ICAgRVhQRUNUX0VRKDMsIHNlbGVjdGVkSW5kZXgoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgc2Vs
ZWN0aW5nIGFuIGl0ZW0gd2l0aCB0aGUgbW91c2UgZG9lcyBzZWxlY3QgdGhlIGl0ZW0gYW5kIGNs
b3NlCisvLyB0aGUgcG9wdXAuCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgQ2xpY2tJdGVt
KQoreworICAgIHNob3dQb3B1cCgpOworCisgICAgLy8gWSBvZiAxOCB0byBiZSBvbiB0aGUgaXRl
bSBhdCBpbmRleCAxICgxMiBmb250IHBsdXMgYm9yZGVyIGFuZCBtb3JlIHRvIGJlIHNhZmUpLgor
ICAgIEludFBvaW50IHJvdzFQb2ludCgyLCAxOCk7CisgICAgLy8gU2ltdWxhdGUgYSBjbGljayBk
b3duL3VwIG9uIHRoZSBmaXJzdCBpdGVtLgorICAgIHNpbXVsYXRlTGVmdE1vdXNlRG93bkV2ZW50
KHJvdzFQb2ludCk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VVcEV2ZW50KHJvdzFQb2ludCk7CisK
KyAgICAvLyBQb3B1cCBzaG91bGQgaGF2ZSBjbG9zZWQgYW5kIHRoZSBpdGVtIGF0IGluZGV4IDEg
c2VsZWN0ZWQuCisgICAgRVhQRUNUX0ZBTFNFKHBvcHVwT3BlbigpKTsKKyAgICBFWFBFQ1RfRVEo
MSwgc2VsZWN0ZWRJbmRleCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBtb3ZpbmcgdGhlIG1vdXNl
IG92ZXIgYW4gaXRlbSBhbmQgdGhlbiBjbGlja2luZyBvdXRzaWRlIHRoZSBzZWxlY3QgcG9wdXAK
Ky8vIGxlYXZlcyB0aGUgc2VsZXRlZCBpdGVtIHVuY2hhbmdlZC4KK1RFU1RfRihTZWxlY3RQb3B1
cE1lbnVUZXN0LCBNb3VzZU92ZXJJdGVtQ2xpY2tPdXRzaWRlKQoreworICAgIHNob3dQb3B1cCgp
OworCisgICAgLy8gWSBvZiAxOCB0byBiZSBvbiB0aGUgaXRlbSBhdCBpbmRleCAxICgxMiBmb250
IHBsdXMgYm9yZGVyIGFuZCBtb3JlIHRvIGJlIHNhZmUpLgorICAgIEludFBvaW50IHJvdzFQb2lu
dCgyLCAxOCk7CisgICAgLy8gU2ltdWxhdGUgdGhlIG1vdXNlIG1vdmluZyBvdmVyIHRoZSBmaXJz
dCBpdGVtLgorICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHJvdzFQb2ludCwgcm93
MVBvaW50LCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwKTsKKyAgICBtX3dl
YlZpZXctPnNlbGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1vdXNlRXZlbnQpOwor
CisgICAgLy8gQ2xpY2sgb3V0c2lkZSB0aGUgcG9wdXAuCisgICAgc2ltdWxhdGVMZWZ0TW91c2VE
b3duRXZlbnQoSW50UG9pbnQoMTAwMCwgMTAwMCkpOworCisgICAgLy8gUG9wdXAgc2hvdWxkIGhh
dmUgY2xvc2VkIGFuZCBpdGVtIDAgc2hvdWxkIHN0aWxsIGJlIHNlbGVjdGVkLgorICAgIEVYUEVD
VF9GQUxTRShwb3B1cE9wZW4oKSk7CisgICAgRVhQRUNUX0VRKDAsIHNlbGVjdGVkSW5kZXgoKSk7
Cit9CisKKy8vIFRlc3RzIHRoYXQgc2VsZWN0aW5nIGFuIGl0ZW0gd2l0aCB0aGUga2V5Ym9hcmQg
YW5kIHRoZW4gY2xpY2tpbmcgb3V0c2lkZSB0aGUgc2VsZWN0CisvLyBwb3B1cCBkb2VzIHNlbGVj
dCB0aGF0IGl0ZW0uCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2VsZWN0SXRlbVdpdGhL
ZXlib2FyZEl0ZW1DbGlja091dHNpZGUpCit7CisgICAgc2hvd1BvcHVwKCk7CisKKyAgICAvLyBT
aW11bGF0ZSBzZWxlY3RpbmcgdGhlIDJuZCBpdGVtIGJ5IHByZXNzaW5nIERvd24sIERvd24uCisg
ICAgc2ltdWxhdGVLZXlEb3duRXZlbnQoVktFWV9ET1dOKTsKKyAgICBzaW11bGF0ZUtleURvd25F
dmVudChWS0VZX0RPV04pOworCisgICAgLy8gQ2xpY2sgb3V0c2lkZSB0aGUgcG9wdXAuCisgICAg
c2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQoSW50UG9pbnQoMTAwMCwgMTAwMCkpOworCisgICAg
Ly8gUG9wdXAgc2hvdWxkIGhhdmUgY2xvc2VkIGFuZCB0aGUgaXRlbSBzaG91bGQgaGF2ZSBiZWVu
IHNlbGVjdGVkLgorICAgIEVYUEVDVF9GQUxTRShwb3B1cE9wZW4oKSk7CisgICAgRVhQRUNUX0VR
KDIsIHNlbGVjdGVkSW5kZXgoKSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53187</attachid>
            <date>2010-04-12 14:15:41 -0700</date>
            <delta_ts>2010-04-16 09:55:50 -0700</delta_ts>
            <desc>Attempt at fixing style issues.</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>17080</size>
            <attacher name="Jay Campan">jcampan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU3NDc1KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNC0xMSAgSmF5IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJv
bWl1bS5vcmc+CisgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gU2VsZWN0IHBvcHVwcyB3b3VsZCBhc3NlcnQgd2hlbiBkZXN0cm95ZWQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzQzNgor
IAorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6c2hvd1BvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyOjpub3RpZnlQb3B1cEhpZGRlbik6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAKKwogMjAxMC0wNC0xMiAgRGlyayBTY2h1
bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
LmNwcAkocmV2aXNpb24gNTc0NzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVw
TWVudUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDcgKzMxMyw4IEBAIFBvcHVw
Q29udGFpbmVyOjpQb3B1cENvbnRhaW5lcihQb3B1cE1lbnUKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJiBzZXR0aW5ncykKICAgICA6
IG1fbGlzdEJveChQb3B1cExpc3RCb3g6OmNyZWF0ZShjbGllbnQsIHNldHRpbmdzKSkKICAgICAs
IG1fc2V0dGluZ3Moc2V0dGluZ3MpCi0gICAgLCBtX3BvcHVwVHlwZShwb3B1cFR5cGUpICAKKyAg
ICAsIG1fcG9wdXBUeXBlKHBvcHVwVHlwZSkKKyAgICAsIG1fcG9wdXBPcGVuKGZhbHNlKQogewog
ICAgIHNldFNjcm9sbGJhck1vZGVzKFNjcm9sbGJhckFsd2F5c09mZiwgU2Nyb2xsYmFyQWx3YXlz
T2ZmKTsKIH0KQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpzaG93UG9w
dXAoRnJhbWVWaWV3CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2hyb21lQ2xp
ZW50LT5wb3B1cE9wZW5lZCh0aGlzLCB3aWRnZXRSZWN0LCBmYWxzZSk7CisgICAgICAgIG1fcG9w
dXBPcGVuID0gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCkBA
IC00MTYsNyArNDE4LDEwIEBAIHZvaWQgUG9wdXBDb250YWluZXI6OmhpZGVQb3B1cCgpCiAKIHZv
aWQgUG9wdXBDb250YWluZXI6Om5vdGlmeVBvcHVwSGlkZGVuKCkKIHsKLSAgICAgY2hyb21lQ2xp
ZW50Q2hyb21pdW0oKS0+cG9wdXBDbG9zZWQodGhpcyk7CisgICAgaWYgKCFtX3BvcHVwT3BlbikK
KyAgICAgICAgcmV0dXJuOworICAgIG1fcG9wdXBPcGVuID0gZmFsc2U7CisgICAgY2hyb21lQ2xp
ZW50Q2hyb21pdW0oKS0+cG9wdXBDbG9zZWQodGhpcyk7CiB9CiAKIHZvaWQgUG9wdXBDb250YWlu
ZXI6OmxheW91dCgpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVw
TWVudUNocm9taXVtLmgJKHJldmlzaW9uIDU3NDc1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcg
QEAgcHVibGljOgogICAgIC8vIHBvcHVwcyBvbiBvdGhlciBwbGF0Zm9ybXMuCiAgICAgdm9pZCBz
aG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOwogCi0gICAgLy8gSGlk
ZSB0aGUgcG9wdXAuCisgICAgLy8gSGlkZXMgdGhlIHBvcHVwLgogICAgIHZvaWQgaGlkZVBvcHVw
KCk7CiAKICAgICAvLyBUaGUgcG9wdXAgd2FzIGhpZGRlbi4KQEAgLTE3Nyw2ICsxNzcsOSBAQCBw
dWJsaWM6CiAKICAgICBQb3B1cFR5cGUgcG9wdXBUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wb3B1
cFR5cGU7IH0KIAorICAgIC8vIFdoZXRoZXIgdGhlIHBvcHVwIGlzIGN1cnJlbnRseSBvcGVuLgor
ICAgIGJvb2wgbV9wb3B1cE9wZW47CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6
UmVmQ291bnRlZDxQb3B1cENvbnRhaW5lcj47CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA1NzQ3NSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxMC0wNC0xMSAgSmF5IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W2Nocm9taXVtXSBTZWxlY3QgcG9wdXBzIHdvdWxkIGFzc2VydCB3aGVuIGRlc3Ryb3llZC4KKyAg
ICAgICAgQWxzbyBhZGRpbmcgdW5pdC10ZXN0cyBmb3IgdGhlIHNlbGVjdCBwb3B1cCBjb2RlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc0MzYKKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZWxlY3RQb3B1cCk6CisgICAgICAgICogdGVzdHMv
UG9wdXBNZW51VGVzdC5jcHA6IEFkZGVkLgorCiAyMDEwLTA0LTExICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByNTc0NjguCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA1NzQ3NSkKKysrIFdl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAyLDcg
QEAKICAgICAgICAgICAgICdzb3VyY2VzJzogWwogICAgICAgICAgICAgICAgICd0ZXN0cy9LZXli
b2FyZFRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAndGVzdHMvS1VSTFRlc3QuY3BwJywKKyAg
ICAgICAgICAgICAgICAndGVzdHMvUG9wdXBNZW51VGVzdC5jcHAnLAogICAgICAgICAgICAgICAg
ICd0ZXN0cy9SdW5BbGxUZXN0cy5jcHAnLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdj
b25kaXRpb25zJzogWwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lv
biA1NzQ3NSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMzExLDYgKzMxMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJvb3RHcmFwaGlj
c0xheWVyKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqKTsKICNlbmRpZgogCisgICAgV2ViQ29yZTo6
UG9wdXBDb250YWluZXIqIHNlbGVjdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1
cC5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWV3OyAgLy8gU28g
V2ViVmlldzo6Q3JlYXRlIGNhbiBjYWxsIG91ciBjb25zdHJ1Y3RvcgogICAgIGZyaWVuZCBjbGFz
cyBXVEY6OlJlZkNvdW50ZWQ8V2ViVmlld0ltcGw+OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1BvcHVwTWVudVRlc3QuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1BvcHVwTWVudVRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1BvcHVwTWVudVRlc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIktleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnUu
aCIKKyNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnVDaHJv
bWl1bS5oIgorI2luY2x1ZGUgIlNjcm9sbEJhci5oIgorI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50
LmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5o
IgorI2luY2x1ZGUgIldlYlBvcHVwTWVudUltcGwuaCIKKyNpbmNsdWRlICJXZWJTY3JlZW5JbmZv
LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
bmFtZXNwYWNlIHsKKworY2xhc3MgVGVzdFBvcHVwTWVudUNsaWVudCA6IHB1YmxpYyBQb3B1cE1l
bnVDbGllbnQgeworcHVibGljOgorICAgIC8vIEl0ZW0gYXQgaW5kZXggMCBpcyBzZWxlY3RlZCBi
eSBkZWZhdWx0LgorICAgIFRlc3RQb3B1cE1lbnVDbGllbnQoKSA6IG1fc2VsZWN0SW5kZXgoMCkg
eyB9CisgICAgdmlydHVhbCB+VGVzdFBvcHVwTWVudUNsaWVudCgpIHt9CisgICAgdmlydHVhbCB2
b2lkIHZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW50cyA9IHRy
dWUpCisgICAgeworICAgICAgICBtX3NlbGVjdEluZGV4ID0gbGlzdEluZGV4OworICAgIH0KKwor
ICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1UZXh0KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFN0cmluZyBzdHIoIkl0ZW0gIik7CisgICAgICAgIHN0ci5hcHBlbmQoU3Ry
aW5nOjpudW1iZXIobGlzdEluZGV4KSk7CisgICAgICAgIHJldHVybiBzdHI7CisgICAgfQorICAg
IHZpcnR1YWwgU3RyaW5nIGl0ZW1Ub29sVGlwKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QgeyBy
ZXR1cm4gaXRlbVRleHQobGlzdEluZGV4KTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1BY2Nl
c3NpYmlsaXR5VGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIGl0ZW1UZXh0
KGxpc3RJbmRleCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzRW5hYmxlZCh1bnNpZ25lZCBs
aXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIFBvcHVwTWVudVN0
eWxlIGl0ZW1TdHlsZSh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBG
b250IGZvbnQoRm9udFBsYXRmb3JtRGF0YSgxMi4wLCBmYWxzZSwgZmFsc2UpLCBmYWxzZSk7Cisg
ICAgICAgIHJldHVybiBQb3B1cE1lbnVTdHlsZShDb2xvcjo6YmxhY2ssIENvbG9yOjp3aGl0ZSwg
Zm9udCwgdHJ1ZSwgTGVuZ3RoKCksIFRleHREaXJlY3Rpb24oKSk7CisgICAgfQorICAgIHZpcnR1
YWwgUG9wdXBNZW51U3R5bGUgbWVudVN0eWxlKCkgY29uc3QgeyByZXR1cm4gaXRlbVN0eWxlKDAp
OyB9CisgICAgdmlydHVhbCBpbnQgY2xpZW50SW5zZXRMZWZ0KCkgY29uc3QgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgaW50IGNsaWVudEluc2V0UmlnaHQoKSBjb25zdCB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBpbnQgY2xpZW50UGFkZGluZ0xlZnQoKSBjb25zdCB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBpbnQgY2xpZW50UGFkZGluZ1JpZ2h0KCkgY29uc3QgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgaW50IGxpc3RTaXplKCkgY29uc3QgeyByZXR1cm4gMTA7IH0KKyAgICB2
aXJ0dWFsIGludCBzZWxlY3RlZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RJbmRleDsg
fQorICAgIHZpcnR1YWwgdm9pZCBwb3B1cERpZEhpZGUoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXRlbUlzU2VwYXJhdG9yKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzTGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpdGVtSXNTZWxlY3RlZCh1bnNp
Z25lZCBsaXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIGxpc3RJbmRleCA9PSBtX3NlbGVjdEluZGV4
OyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFBvcE92ZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB2YWx1ZVNob3VsZENoYW5nZU9uSG90VHJhY2soKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RnJvbUl0ZW0odW5z
aWduZWQgbGlzdEluZGV4KSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEZvbnRTZWxlY3RvciogZm9u
dFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgSG9zdFdpbmRvdyog
aG9zdFdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8U2Nyb2xsYmFyPiBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyQ2xpZW50KiwgU2Nyb2xs
YmFyT3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplKSB7IHJldHVybiAwOyB9CisKK3By
aXZhdGU6CisgICAgaW50IG1fc2VsZWN0SW5kZXg7Cit9OworCitjbGFzcyBUZXN0V2ViV2lkZ2V0
Q2xpZW50IDogcHVibGljIFdlYldpZGdldENsaWVudCB7CitwdWJsaWM6CisgICAgflRlc3RXZWJX
aWRnZXRDbGllbnQoKSB7IH0KK307CisKK2NsYXNzIFRlc3RXZWJQb3B1cE1lbnVJbXBsIDogcHVi
bGljIFdlYlBvcHVwTWVudUltcGwgeworcHVibGljOgorICAgIFRlc3RXZWJQb3B1cE1lbnVJbXBs
KFdlYldpZGdldENsaWVudCogY2xpZW50KSA6IFdlYlBvcHVwTWVudUltcGwoY2xpZW50KSB7IH0K
KyAgICB+VGVzdFdlYlBvcHVwTWVudUltcGwoKSB7IH0KK307CisKK2NsYXNzIFRlc3RXZWJXaWRn
ZXQgOiBwdWJsaWMgV2ViV2lkZ2V0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5UZXN0V2ViV2lk
Z2V0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgeyB9CisgICAgdmlydHVhbCBXZWJT
aXplIHNpemUoKSB7IHJldHVybiBXZWJTaXplKDEwMCwgMTAwKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZXNpemUoY29uc3QgV2ViU2l6ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQm
KSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlQ2FwdHVyZUxvc3QoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9vbCkgeyB9CisgICAgdmlydHVhbCBib29s
IGhhbmRsZUNvbXBvc2l0aW9uRXZlbnQoV2ViQ29tcG9zaXRpb25Db21tYW5kIGNvbW1hbmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGN1cnNvclBvc2l0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRTdGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0RW5k
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgdGV4dCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBxdWVyeUNvbXBvc2l0
aW9uU3RhdHVzKGJvb2wqIGVuYWJsZWQsIFdlYlJlY3QqIGNhcmV0Qm91bmRzKSB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb24oV2ViVGV4dERpcmVjdGlv
bikgeyB9Cit9OworCitjbGFzcyBUZXN0V2ViVmlld0NsaWVudCA6IHB1YmxpYyBXZWJWaWV3Q2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBUZXN0V2ViVmlld0NsaWVudCgpIDogbV93ZWJQb3B1cE1lbnUo
Jm1fd2ViV2lkZ2V0Q2xpZW50KSB7IH0KKyAgICB+VGVzdFdlYlZpZXdDbGllbnQoKSB7IH0KKwor
ICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoV2ViUG9wdXBUeXBlKSB7IHJl
dHVybiAmbV93ZWJQb3B1cE1lbnU7IH0KKworICAgIC8vIFdlIG5lZWQgdG8gb3ZlcnJpZGUgdGhp
cyBzbyB0aGF0IHRoZSBwb3B1cCBtZW51IHNpemUgaXMgbm90IDAKKyAgICAvLyAodGhlIGxheW91
dCBjb2RlIGNoZWNrcyB0byBzZWUgaWYgdGhlIHBvcHVwIGZpdHMgb24gdGhlIHNjcmVlbikuCisg
ICAgdmlydHVhbCBXZWJTY3JlZW5JbmZvIHNjcmVlbkluZm8oKQorICAgIHsgCisgICAgICAgIFdl
YlNjcmVlbkluZm8gc2NyZWVuSW5mbzsKKyAgICAgICAgc2NyZWVuSW5mby5hdmFpbGFibGVSZWN0
LmhlaWdodCA9IDIwMDA7CisgICAgICAgIHNjcmVlbkluZm8uYXZhaWxhYmxlUmVjdC53aWR0aCA9
IDIwMDA7CisgICAgICAgIHJldHVybiBzY3JlZW5JbmZvOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBUZXN0V2ViV2lkZ2V0Q2xpZW50IG1fd2ViV2lkZ2V0Q2xpZW50OworICAgIFRlc3RXZWJQb3B1
cE1lbnVJbXBsIG1fd2ViUG9wdXBNZW51OworfTsKKworY2xhc3MgVGVzdFdlYkZyYW1lQ2xpZW50
IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB+VGVzdFdlYkZyYW1lQ2xp
ZW50KCkgeyB9Cit9OworCitjbGFzcyBTZWxlY3RQb3B1cE1lbnVUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgeworcHVibGljOgorICAgIFNlbGVjdFBvcHVwTWVudVRlc3QoKQorICAgIHsKKyAg
ICB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAg
ICAgbV93ZWJWaWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihXZWJWaWV3OjpjcmVhdGUo
Jm1fd2Vidmlld0NsaWVudCkpOworICAgICAgICBtX3dlYlZpZXctPmluaXRpYWxpemVNYWluRnJh
bWUoJm1fd2ViRnJhbWVDbGllbnQpOworICAgICAgICBtX3BvcHVwTWVudSA9IFBvcHVwTWVudTo6
Y3JlYXRlKCZtX3BvcHVwTWVudUNsaWVudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkKKyAgICB7CisgICAgICAgIG1fcG9wdXBNZW51ID0gMDsKKyAgICAgICAgbV93ZWJW
aWV3LT5jbG9zZSgpOworICAgIH0KKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBjdXJy
ZW50bHkgaXMgYSBzZWxlY3QgcG9wdXAgaW4gdGhlIFdlYlZpZXcuCisgICAgYm9vbCBwb3B1cE9w
ZW4oKSBjb25zdCB7IHJldHVybiBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCk7IH0KKworICAgIGlu
dCBzZWxlY3RlZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cE1lbnVDbGllbnQuc2VsZWN0
ZWRJbmRleCgpOyB9CisKKyAgICB2b2lkIHNob3dQb3B1cCgpCisgICAgeworICAgICAgICBtX3Bv
cHVwTWVudS0+c2hvdyhJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpLT5mcmFtZVZpZXco
KSwgMCk7CisgICAgICAgIEFTU0VSVF9UUlVFKHBvcHVwT3BlbigpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUobV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5wb3B1cFR5cGUoKSA9PSBQb3B1cENvbnRh
aW5lcjo6U2VsZWN0KTsKKyAgICB9CisKKyAgICB2b2lkIGhpZGVQb3B1cCgpCisgICAgeworICAg
ICAgICBtX3BvcHVwTWVudS0+aGlkZSgpOworICAgICAgICBFWFBFQ1RfRkFMU0UocG9wdXBPcGVu
KCkpOworICAgIH0KKworICAgIHZvaWQgc2ltdWxhdGVLZXlEb3duRXZlbnQoaW50IGtleUNvZGUp
CisgICAgeworICAgICAgICBzaW11bGF0ZUtleUV2ZW50KFdlYklucHV0RXZlbnQ6OlJhd0tleURv
d24sIGtleUNvZGUpOworICAgIH0KKworICAgIHZvaWQgc2ltdWxhdGVLZXlVcEV2ZW50KGludCBr
ZXlDb2RlKQorICAgIHsKKyAgICAgICAgc2ltdWxhdGVLZXlFdmVudChXZWJJbnB1dEV2ZW50OjpL
ZXlVcCwga2V5Q29kZSk7CisgICAgfQorCisgICAgLy8gU2ltdWxhdGVzIGEga2V5IGV2ZW50IG9u
IHRoZSBXZWJWaWV3LgorICAgIC8vIFRoZSBXZWJWaWV3IGZvcndhcmRzIHRoZSBldmVudCB0byB0
aGUgc2VsZWN0IHBvcHVwIGlmIG9uZSBpcyBvcGVuLgorICAgIHZvaWQgc2ltdWxhdGVLZXlFdmVu
dChXZWJJbnB1dEV2ZW50OjpUeXBlIGV2ZW50VHlwZSwgaW50IGtleUNvZGUpCisgICAgeworICAg
ICAgICBXZWJLZXlib2FyZEV2ZW50IGtleUV2ZW50OworICAgICAgICBrZXlFdmVudC53aW5kb3dz
S2V5Q29kZSA9IGtleUNvZGU7CisgICAgICAgIGtleUV2ZW50LnR5cGUgPSBldmVudFR5cGU7Cisg
ICAgICAgIG1fd2ViVmlldy0+aGFuZGxlSW5wdXRFdmVudChrZXlFdmVudCk7CisgICAgfQorCisg
ICAgLy8gU2ltdWxhdGVzIGEgbW91c2UgZXZlbnQgb24gdGhlIHNlbGVjdCBwb3B1cC4KKyAgICB2
b2lkIHNpbXVsYXRlTGVmdE1vdXNlRG93bkV2ZW50KGNvbnN0IEludFBvaW50JiBwb2ludCkKKyAg
ICB7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvaW50LCBwb2ludCwg
TGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwKTsKKyAgICAgICAg
bV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZURvd25FdmVudChtb3VzZUV2ZW50
KTsKKyAgICB9CisgICAgdm9pZCBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQoY29uc3QgSW50UG9p
bnQmIHBvaW50KQorICAgIHsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQo
cG9pbnQsIHBvaW50LCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCAwKTsKKyAgICAgICAgbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChtb3VzZUV2ZW50KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBUZXN0V2ViVmll
d0NsaWVudCBtX3dlYnZpZXdDbGllbnQ7CisgICAgV2ViVmlld0ltcGwqIG1fd2ViVmlldzsKKyAg
ICBUZXN0V2ViRnJhbWVDbGllbnQgbV93ZWJGcmFtZUNsaWVudDsKKyAgICBUZXN0UG9wdXBNZW51
Q2xpZW50IG1fcG9wdXBNZW51Q2xpZW50OworICAgIFJlZlB0cjxQb3B1cE1lbnU+IG1fcG9wdXBN
ZW51OworfTsKKworfSAvLyBuYW1lc3BhY2UKKworLy8gVGVzdHMgdGhhdCBzaG93L2hpZGUgYW5k
IHJlcGVhdHMuICBTZWxlY3QgcG9wdXBzIGFyZSByZXVzZWQgaW4gd2ViIHBhZ2VzIHdoZW4KKy8v
IHRoZXkgYXJlIHJlb3BlbmVkLCB0aGF0IHdoYXQgdGhpcyBpcyB0ZXN0aW5nLgorVEVTVF9GKFNl
bGVjdFBvcHVwTWVudVRlc3QsIFNob3dUaGVuSGlkZSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IDM7IGkrKykgeworICAgICAgICBzaG93UG9wdXAoKTsKKyAgICAgICAgaGlkZVBvcHVwKCk7
CisgICAgfQorfQorCisvLyBUZXN0cyB0aGF0IHNob3dpbmcgYSBzZWxlY3QgcG9wdXAgYW5kIGRl
bGV0aW5nIGl0IGRvZXMgbm90IGNhdXNlIHByb2JsZW0uCisvLyBUaGlzIGhhcHBlbnMgaW4gcmVh
bC1saWZlIGlmIGEgcGFnZSBuYXZpZ2F0ZXMgd2hpbGUgYSBzZWxlY3QgcG9wdXAgaXMgc2hvd2lu
Zy4KK1RFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBTaG93VGhlbkRlbGV0ZSkKK3sKKyAgICBz
aG93UG9wdXAoKTsKKyAgICAvLyBOb3RoaW5nIGVsc2UgdG8gZG8sIFRlYXJEb3duKCkgZGVsZXRl
cyB0aGUgcG9wdXAuCit9CisKKy8vIFRlc3RzIHRoYXQgbG9zaW5nIGZvY3VzIGNsb3NlcyB0aGUg
c2VsZWN0IHBvcHVwLgorVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNob3dUaGVuTG9zZUZv
Y3VzKQoreworICAgIHNob3dQb3B1cCgpOworICAgIC8vIFNpbXVsYXRlIGxvc2luZyBmb2N1cy4K
KyAgICBtX3dlYlZpZXctPnNldEZvY3VzKGZhbHNlKTsKKworICAgIC8vIFBvcHVwIHNob3VsZCBo
YXZlIGNsb3NlZC4KKyAgICBFWFBFQ1RfRkFMU0UocG9wdXBPcGVuKCkpOworfQorCisvLyBUZXN0
cyB0aGF0IHByZXNzaW5nIEVTQyBjbG9zZXMgdGhlIHBvcHVwLgorVEVTVF9GKFNlbGVjdFBvcHVw
TWVudVRlc3QsIFNob3dUaGVuUHJlc3NFU0MpCit7CisgICAgc2hvd1BvcHVwKCk7CisgICAgc2lt
dWxhdGVLZXlEb3duRXZlbnQoVktFWV9FU0NBUEUpOworICAgIC8vIFBvcHVwIHNob3VsZCBoYXZl
IGNsb3NlZC4KKyAgICBFWFBFQ1RfRkFMU0UocG9wdXBPcGVuKCkpOworfQorCisvLyBUZXN0cyBz
ZWxlY3RpbmcgYW4gaXRlbSB3aXRoIHRoZSBhcnJvd3MgYW5kIGVudGVyL2VzYy90YWIuCitURVNU
X0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2VsZWN0V2l0aEtleXMpCit7CisgICAgc2hvd1BvcHVw
KCk7CisgICAgLy8gU2ltdWxhdGUgc2VsZWN0aW5nIHRoZSAybmQgaXRlbSBieSBwcmVzc2luZyBE
b3duLCBEb3duLCBlbnRlci4KKyAgICBzaW11bGF0ZUtleURvd25FdmVudChWS0VZX0RPV04pOwor
ICAgIHNpbXVsYXRlS2V5RG93bkV2ZW50KFZLRVlfRE9XTik7CisgICAgc2ltdWxhdGVLZXlEb3du
RXZlbnQoVktFWV9SRVRVUk4pOworCisgICAgLy8gUG9wdXAgc2hvdWxkIGhhdmUgY2xvc2VkLgor
ICAgIEVYUEVDVF9UUlVFKCFwb3B1cE9wZW4oKSk7CisgICAgRVhQRUNUX0VRKDIsIHNlbGVjdGVk
SW5kZXgoKSk7CisKKyAgICAvLyBJdCBzaG91bGQgd29yayBhcyB3ZWxsIHdpdGggRVNDLgorICAg
IHNob3dQb3B1cCgpOworICAgIHNpbXVsYXRlS2V5RG93bkV2ZW50KFZLRVlfRE9XTik7CisgICAg
c2ltdWxhdGVLZXlEb3duRXZlbnQoVktFWV9FU0NBUEUpOworICAgIEVYUEVDVF9GQUxTRShwb3B1
cE9wZW4oKSk7CisgICAgRVhQRUNUX0VRKDMsIHNlbGVjdGVkSW5kZXgoKSk7Cit9CisKKy8vIFRl
c3RzIHRoYXQgc2VsZWN0aW5nIGFuIGl0ZW0gd2l0aCB0aGUgbW91c2UgZG9lcyBzZWxlY3QgdGhl
IGl0ZW0gYW5kIGNsb3NlCisvLyB0aGUgcG9wdXAuCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVz
dCwgQ2xpY2tJdGVtKQoreworICAgIHNob3dQb3B1cCgpOworCisgICAgLy8gWSBvZiAxOCB0byBi
ZSBvbiB0aGUgaXRlbSBhdCBpbmRleCAxICgxMiBmb250IHBsdXMgYm9yZGVyIGFuZCBtb3JlIHRv
IGJlIHNhZmUpLgorICAgIEludFBvaW50IHJvdzFQb2ludCgyLCAxOCk7CisgICAgLy8gU2ltdWxh
dGUgYSBjbGljayBkb3duL3VwIG9uIHRoZSBmaXJzdCBpdGVtLgorICAgIHNpbXVsYXRlTGVmdE1v
dXNlRG93bkV2ZW50KHJvdzFQb2ludCk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VVcEV2ZW50KHJv
dzFQb2ludCk7CisKKyAgICAvLyBQb3B1cCBzaG91bGQgaGF2ZSBjbG9zZWQgYW5kIHRoZSBpdGVt
IGF0IGluZGV4IDEgc2VsZWN0ZWQuCisgICAgRVhQRUNUX0ZBTFNFKHBvcHVwT3BlbigpKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgc2VsZWN0ZWRJbmRleCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBtb3Zp
bmcgdGhlIG1vdXNlIG92ZXIgYW4gaXRlbSBhbmQgdGhlbiBjbGlja2luZyBvdXRzaWRlIHRoZSBz
ZWxlY3QgcG9wdXAKKy8vIGxlYXZlcyB0aGUgc2VsZXRlZCBpdGVtIHVuY2hhbmdlZC4KK1RFU1Rf
RihTZWxlY3RQb3B1cE1lbnVUZXN0LCBNb3VzZU92ZXJJdGVtQ2xpY2tPdXRzaWRlKQoreworICAg
IHNob3dQb3B1cCgpOworCisgICAgLy8gWSBvZiAxOCB0byBiZSBvbiB0aGUgaXRlbSBhdCBpbmRl
eCAxICgxMiBmb250IHBsdXMgYm9yZGVyIGFuZCBtb3JlIHRvIGJlIHNhZmUpLgorICAgIEludFBv
aW50IHJvdzFQb2ludCgyLCAxOCk7CisgICAgLy8gU2ltdWxhdGUgdGhlIG1vdXNlIG1vdmluZyBv
dmVyIHRoZSBmaXJzdCBpdGVtLgorICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHJv
dzFQb2ludCwgcm93MVBvaW50LCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAw
KTsKKyAgICBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1v
dXNlRXZlbnQpOworCisgICAgLy8gQ2xpY2sgb3V0c2lkZSB0aGUgcG9wdXAuCisgICAgc2ltdWxh
dGVMZWZ0TW91c2VEb3duRXZlbnQoSW50UG9pbnQoMTAwMCwgMTAwMCkpOworCisgICAgLy8gUG9w
dXAgc2hvdWxkIGhhdmUgY2xvc2VkIGFuZCBpdGVtIDAgc2hvdWxkIHN0aWxsIGJlIHNlbGVjdGVk
LgorICAgIEVYUEVDVF9GQUxTRShwb3B1cE9wZW4oKSk7CisgICAgRVhQRUNUX0VRKDAsIHNlbGVj
dGVkSW5kZXgoKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgc2VsZWN0aW5nIGFuIGl0ZW0gd2l0aCB0
aGUga2V5Ym9hcmQgYW5kIHRoZW4gY2xpY2tpbmcgb3V0c2lkZSB0aGUgc2VsZWN0CisvLyBwb3B1
cCBkb2VzIHNlbGVjdCB0aGF0IGl0ZW0uCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2Vs
ZWN0SXRlbVdpdGhLZXlib2FyZEl0ZW1DbGlja091dHNpZGUpCit7CisgICAgc2hvd1BvcHVwKCk7
CisKKyAgICAvLyBTaW11bGF0ZSBzZWxlY3RpbmcgdGhlIDJuZCBpdGVtIGJ5IHByZXNzaW5nIERv
d24sIERvd24uCisgICAgc2ltdWxhdGVLZXlEb3duRXZlbnQoVktFWV9ET1dOKTsKKyAgICBzaW11
bGF0ZUtleURvd25FdmVudChWS0VZX0RPV04pOworCisgICAgLy8gQ2xpY2sgb3V0c2lkZSB0aGUg
cG9wdXAuCisgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQoSW50UG9pbnQoMTAwMCwgMTAw
MCkpOworCisgICAgLy8gUG9wdXAgc2hvdWxkIGhhdmUgY2xvc2VkIGFuZCB0aGUgaXRlbSBzaG91
bGQgaGF2ZSBiZWVuIHNlbGVjdGVkLgorICAgIEVYUEVDVF9GQUxTRShwb3B1cE9wZW4oKSk7Cisg
ICAgRVhQRUNUX0VRKDIsIHNlbGVjdGVkSW5kZXgoKSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53457</attachid>
            <date>2010-04-15 11:37:51 -0700</date>
            <delta_ts>2010-04-16 10:52:16 -0700</delta_ts>
            <desc>Another attempt</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>17181</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU3NjU0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNC0xNSAgSmF5IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW2Nocm9taXVtXSBTZWxlY3QgcG9wdXBzIHdvdWxkIGFzc2VydCB3aGVuIGRlc3Ryb3llZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDM2CisK
KworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6c2hvd1BvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyOjpub3RpZnlQb3B1cEhpZGRlbik6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKwogMjAxMC0wNC0xNSAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBp
bi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJv
bWl1bS5jcHAJKHJldmlzaW9uIDU3NjUyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw3ICszMTMsOCBAQCBQ
b3B1cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIoUG9wdXBNZW51CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiAg
ICAgOiBtX2xpc3RCb3goUG9wdXBMaXN0Qm94OjpjcmVhdGUoY2xpZW50LCBzZXR0aW5ncykpCiAg
ICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQotICAgICwgbV9wb3B1cFR5cGUocG9wdXBUeXBlKSAg
CisgICAgLCBtX3BvcHVwVHlwZShwb3B1cFR5cGUpCisgICAgLCBtX3BvcHVwT3BlbihmYWxzZSkK
IHsKICAgICBzZXRTY3JvbGxiYXJNb2RlcyhTY3JvbGxiYXJBbHdheXNPZmYsIFNjcm9sbGJhckFs
d2F5c09mZik7CiB9CkBAIC0zNjcsNiArMzY4LDcgQEAgdm9pZCBQb3B1cENvbnRhaW5lcjo6c2hv
d1BvcHVwKEZyYW1lVmlldwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGNocm9t
ZUNsaWVudC0+cG9wdXBPcGVuZWQodGhpcywgd2lkZ2V0UmVjdCwgZmFsc2UpOworICAgICAgICBt
X3BvcHVwT3BlbiA9IHRydWU7CiAgICAgfQogCiAgICAgaWYgKCFtX2xpc3RCb3gtPnBhcmVudCgp
KQpAQCAtNDE2LDcgKzQxOCwxMCBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpoaWRlUG9wdXAoKQog
CiB2b2lkIFBvcHVwQ29udGFpbmVyOjpub3RpZnlQb3B1cEhpZGRlbigpCiB7Ci0gICAgIGNocm9t
ZUNsaWVudENocm9taXVtKCktPnBvcHVwQ2xvc2VkKHRoaXMpOworICAgIGlmICghbV9wb3B1cE9w
ZW4pCisgICAgICAgIHJldHVybjsKKyAgICBtX3BvcHVwT3BlbiA9IGZhbHNlOworICAgIGNocm9t
ZUNsaWVudENocm9taXVtKCktPnBvcHVwQ2xvc2VkKHRoaXMpOwogfQogCiB2b2lkIFBvcHVwQ29u
dGFpbmVyOjpsYXlvdXQoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1l
bnVDaHJvbWl1bS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5oCShyZXZpc2lvbiA1NzY1MikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0
OCw3IEBAIHB1YmxpYzoKICAgICAvLyBwb3B1cHMgb24gb3RoZXIgcGxhdGZvcm1zLgogICAgIHZv
aWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsKIAotICAgIC8v
IEhpZGUgdGhlIHBvcHVwLgorICAgIC8vIEhpZGVzIHRoZSBwb3B1cC4KICAgICB2b2lkIGhpZGVQ
b3B1cCgpOwogCiAgICAgLy8gVGhlIHBvcHVwIHdhcyBoaWRkZW4uCkBAIC0xNzcsNiArMTc3LDkg
QEAgcHVibGljOgogCiAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cG9wdXBUeXBlOyB9CiAKKyAgICAvLyBXaGV0aGVyIHRoZSBwb3B1cCBpcyBjdXJyZW50bHkgb3Bl
bi4KKyAgICBib29sIG1fcG9wdXBPcGVuOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBX
VEY6OlJlZkNvdW50ZWQ8UG9wdXBDb250YWluZXI+OwogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2
aXNpb24gNTc2NTQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDQtMTUgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gU2VsZWN0IHBvcHVwcyB3b3VsZCBhc3NlcnQgd2hlbiBkZXN0cm95ZWQu
CisgICAgICAgIEFsc28gYWRkaW5nIHVuaXQtdGVzdHMgZm9yIHRoZSBzZWxlY3QgcG9wdXAgY29k
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDM2
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2VsZWN0UG9wdXApOgorICAgICAgICAqIHRl
c3RzL1BvcHVwTWVudVRlc3QuY3BwOiBBZGRlZC4KKwogMjAxMC0wNC0xNCAgQmVuIE11cmRvY2gg
IDxiZW5tQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA1NzY1MikKKysrIFdl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC01MDcsNiArNTA3LDgg
QEAKICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwogICAgICAgICAgICAgICAgIFsnT1M9PSJ3
aW4iJywgewogICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICMgRklYTUU6IFBvcnQgUG9wdXBNZW51VGVzdCB0byBMaW51eCBhbmQgTWFjLgor
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICd0ZXN0cy9UcmFuc3BhcmVuY3lXaW5UZXN0LmNwcCcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvVW5pc2NyaWJlSGVscGVyVGVzdC5jcHAnLAogICAg
ICAgICAgICAgICAgICAgICBdLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShy
ZXZpc2lvbiA1NzY1MikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMzExLDYgKzMxMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJvb3RH
cmFwaGljc0xheWVyKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqKTsKICNlbmRpZgogCisgICAgV2Vi
Q29yZTo6UG9wdXBDb250YWluZXIqIHNlbGVjdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3RQb3B1cC5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWV3OyAg
Ly8gU28gV2ViVmlldzo6Q3JlYXRlIGNhbiBjYWxsIG91ciBjb25zdHJ1Y3RvcgogICAgIGZyaWVu
ZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V2ViVmlld0ltcGw+OwpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNs
dWRlICJDb2xvci5oIgorI2luY2x1ZGUgIktleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlICJQb3B1
cE1lbnUuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKKyNpbmNsdWRlICJQb3B1cE1l
bnVDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYlBv
cHVwTWVudUltcGwuaCIKKyNpbmNsdWRlICJXZWJTY3JlZW5JbmZvLmgiCisjaW5jbHVkZSAiV2Vi
Vmlld0NsaWVudC5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xh
c3MgVGVzdFBvcHVwTWVudUNsaWVudCA6IHB1YmxpYyBQb3B1cE1lbnVDbGllbnQgeworcHVibGlj
OgorICAgIC8vIEl0ZW0gYXQgaW5kZXggMCBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LgorICAgIFRl
c3RQb3B1cE1lbnVDbGllbnQoKSA6IG1fc2VsZWN0SW5kZXgoMCkgeyB9CisgICAgdmlydHVhbCB+
VGVzdFBvcHVwTWVudUNsaWVudCgpIHt9CisgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZCh1
bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW50cyA9IHRydWUpCisgICAgeworICAgICAg
ICBtX3NlbGVjdEluZGV4ID0gbGlzdEluZGV4OworICAgIH0KKworICAgIHZpcnR1YWwgU3RyaW5n
IGl0ZW1UZXh0KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmlu
ZyBzdHIoIkl0ZW0gIik7CisgICAgICAgIHN0ci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobGlzdElu
ZGV4KSk7CisgICAgICAgIHJldHVybiBzdHI7CisgICAgfQorICAgIHZpcnR1YWwgU3RyaW5nIGl0
ZW1Ub29sVGlwKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QgeyByZXR1cm4gaXRlbVRleHQobGlz
dEluZGV4KTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1BY2Nlc3NpYmlsaXR5VGV4dCh1bnNp
Z25lZCBsaXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIGl0ZW1UZXh0KGxpc3RJbmRleCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXRlbUlzRW5hYmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIFBvcHVwTWVudVN0eWxlIGl0ZW1TdHlsZSh1bnNp
Z25lZCBsaXN0SW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBGb250IGZvbnQoRm9udFBsYXRm
b3JtRGF0YSgxMi4wLCBmYWxzZSwgZmFsc2UpLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBQb3B1
cE1lbnVTdHlsZShDb2xvcjo6YmxhY2ssIENvbG9yOjp3aGl0ZSwgZm9udCwgdHJ1ZSwgTGVuZ3Ro
KCksIFRleHREaXJlY3Rpb24oKSk7CisgICAgfQorICAgIHZpcnR1YWwgUG9wdXBNZW51U3R5bGUg
bWVudVN0eWxlKCkgY29uc3QgeyByZXR1cm4gaXRlbVN0eWxlKDApOyB9CisgICAgdmlydHVhbCBp
bnQgY2xpZW50SW5zZXRMZWZ0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgaW50
IGNsaWVudEluc2V0UmlnaHQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQg
Y2xpZW50UGFkZGluZ0xlZnQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQg
Y2xpZW50UGFkZGluZ1JpZ2h0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgaW50
IGxpc3RTaXplKCkgY29uc3QgeyByZXR1cm4gMTA7IH0KKyAgICB2aXJ0dWFsIGludCBzZWxlY3Rl
ZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RJbmRleDsgfQorICAgIHZpcnR1YWwgdm9p
ZCBwb3B1cERpZEhpZGUoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzU2VwYXJhdG9yKHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXRlbUlzTGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpdGVtSXNTZWxlY3RlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNv
bnN0IHsgcmV0dXJuIGxpc3RJbmRleCA9PSBtX3NlbGVjdEluZGV4OyB9CisgICAgdmlydHVhbCBi
b29sIHNob3VsZFBvcE92ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCB2YWx1ZVNob3VsZENoYW5nZU9uSG90VHJhY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RnJvbUl0ZW0odW5zaWduZWQgbGlzdEluZGV4KSB7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBj
cmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyQ2xpZW50KiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNj
cm9sbGJhckNvbnRyb2xTaXplKSB7IHJldHVybiAwOyB9CisKK3ByaXZhdGU6CisgICAgdW5zaWdu
ZWQgbV9zZWxlY3RJbmRleDsKK307CisKK2NsYXNzIFRlc3RXZWJXaWRnZXRDbGllbnQgOiBwdWJs
aWMgV2ViV2lkZ2V0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB+VGVzdFdlYldpZGdldENsaWVudCgp
IHsgfQorfTsKKworY2xhc3MgVGVzdFdlYlBvcHVwTWVudUltcGwgOiBwdWJsaWMgV2ViUG9wdXBN
ZW51SW1wbCB7CitwdWJsaWM6CisgICAgVGVzdFdlYlBvcHVwTWVudUltcGwoV2ViV2lkZ2V0Q2xp
ZW50KiBjbGllbnQpIDogV2ViUG9wdXBNZW51SW1wbChjbGllbnQpIHsgfQorICAgIH5UZXN0V2Vi
UG9wdXBNZW51SW1wbCgpIHsgfQorfTsKKworY2xhc3MgVGVzdFdlYldpZGdldCA6IHB1YmxpYyBX
ZWJXaWRnZXQgeworcHVibGljOgorICAgIHZpcnR1YWwgflRlc3RXZWJXaWRnZXQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSB7IH0KKyAgICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgpIHsg
cmV0dXJuIFdlYlNpemUoMTAwLCAxMDApOyB9CisgICAgdmlydHVhbCB2b2lkIHJlc2l6ZShjb25z
dCBXZWJTaXplJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JikgeyB9CisgICAgdmlydHVh
bCBib29sIGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYpIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VDYXB0dXJlTG9zdCgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRGb2N1cyhib29sKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ29tcG9z
aXRpb25FdmVudChXZWJDb21wb3NpdGlvbkNvbW1hbmQgY29tbWFuZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY3Vyc29yUG9zaXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldFN0YXJ0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRFbmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB0ZXh0KSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHF1ZXJ5Q29tcG9zaXRpb25TdGF0dXMoYm9v
bCogZW5hYmxlZCwgV2ViUmVjdCogY2FyZXRCb3VuZHMpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VGV4dERpcmVjdGlvbihXZWJUZXh0RGlyZWN0aW9uKSB7IH0KK307CisK
K2NsYXNzIFRlc3RXZWJWaWV3Q2xpZW50IDogcHVibGljIFdlYlZpZXdDbGllbnQgeworcHVibGlj
OgorICAgIFRlc3RXZWJWaWV3Q2xpZW50KCkgOiBtX3dlYlBvcHVwTWVudSgmbV93ZWJXaWRnZXRD
bGllbnQpIHsgfQorICAgIH5UZXN0V2ViVmlld0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCBX
ZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShXZWJQb3B1cFR5cGUpIHsgcmV0dXJuICZtX3dlYlBv
cHVwTWVudTsgfQorCisgICAgLy8gV2UgbmVlZCB0byBvdmVycmlkZSB0aGlzIHNvIHRoYXQgdGhl
IHBvcHVwIG1lbnUgc2l6ZSBpcyBub3QgMAorICAgIC8vICh0aGUgbGF5b3V0IGNvZGUgY2hlY2tz
IHRvIHNlZSBpZiB0aGUgcG9wdXAgZml0cyBvbiB0aGUgc2NyZWVuKS4KKyAgICB2aXJ0dWFsIFdl
YlNjcmVlbkluZm8gc2NyZWVuSW5mbygpCisgICAgeyAKKyAgICAgICAgV2ViU2NyZWVuSW5mbyBz
Y3JlZW5JbmZvOworICAgICAgICBzY3JlZW5JbmZvLmF2YWlsYWJsZVJlY3QuaGVpZ2h0ID0gMjAw
MDsKKyAgICAgICAgc2NyZWVuSW5mby5hdmFpbGFibGVSZWN0LndpZHRoID0gMjAwMDsKKyAgICAg
ICAgcmV0dXJuIHNjcmVlbkluZm87CisgICAgfQorCitwcml2YXRlOgorICAgIFRlc3RXZWJXaWRn
ZXRDbGllbnQgbV93ZWJXaWRnZXRDbGllbnQ7CisgICAgVGVzdFdlYlBvcHVwTWVudUltcGwgbV93
ZWJQb3B1cE1lbnU7Cit9OworCitjbGFzcyBUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2Vi
RnJhbWVDbGllbnQgeworcHVibGljOgorICAgIH5UZXN0V2ViRnJhbWVDbGllbnQoKSB7IH0KK307
CisKK2NsYXNzIFNlbGVjdFBvcHVwTWVudVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Citw
dWJsaWM6CisgICAgU2VsZWN0UG9wdXBNZW51VGVzdCgpCisgICAgeworICAgIH0KKworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBtX3dlYlZpZXcg
PSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KFdlYlZpZXc6OmNyZWF0ZSgmbV93ZWJ2aWV3Q2xp
ZW50KSk7CisgICAgICAgIG1fd2ViVmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZSgmbV93ZWJGcmFt
ZUNsaWVudCk7CisgICAgICAgIG1fcG9wdXBNZW51ID0gUG9wdXBNZW51OjpjcmVhdGUoJm1fcG9w
dXBNZW51Q2xpZW50KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAg
IHsKKyAgICAgICAgbV9wb3B1cE1lbnUgPSAwOworICAgICAgICBtX3dlYlZpZXctPmNsb3NlKCk7
CisgICAgfQorCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGN1cnJlbnRseSBpcyBhIHNl
bGVjdCBwb3B1cCBpbiB0aGUgV2ViVmlldy4KKyAgICBib29sIHBvcHVwT3BlbigpIGNvbnN0IHsg
cmV0dXJuIG1fd2ViVmlldy0+c2VsZWN0UG9wdXAoKTsgfQorCisgICAgaW50IHNlbGVjdGVkSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3BvcHVwTWVudUNsaWVudC5zZWxlY3RlZEluZGV4KCk7IH0K
KworICAgIHZvaWQgc2hvd1BvcHVwKCkKKyAgICB7CisgICAgICAgIG1fcG9wdXBNZW51LT5zaG93
KEludFJlY3QoMCwgMCwgMTAwLCAxMDApLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViRnJh
bWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUoKSktPmZyYW1lVmlldygpLCAwKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUocG9wdXBPcGVuKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3dlYlZp
ZXctPnNlbGVjdFBvcHVwKCktPnBvcHVwVHlwZSgpID09IFBvcHVwQ29udGFpbmVyOjpTZWxlY3Qp
OworICAgIH0KKworICAgIHZvaWQgaGlkZVBvcHVwKCkKKyAgICB7CisgICAgICAgIG1fcG9wdXBN
ZW51LT5oaWRlKCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShwb3B1cE9wZW4oKSk7CisgICAgfQor
CisgICAgdm9pZCBzaW11bGF0ZUtleURvd25FdmVudChpbnQga2V5Q29kZSkKKyAgICB7CisgICAg
ICAgIHNpbXVsYXRlS2V5RXZlbnQoV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93biwga2V5Q29kZSk7
CisgICAgfQorCisgICAgdm9pZCBzaW11bGF0ZUtleVVwRXZlbnQoaW50IGtleUNvZGUpCisgICAg
eworICAgICAgICBzaW11bGF0ZUtleUV2ZW50KFdlYklucHV0RXZlbnQ6OktleVVwLCBrZXlDb2Rl
KTsKKyAgICB9CisKKyAgICAvLyBTaW11bGF0ZXMgYSBrZXkgZXZlbnQgb24gdGhlIFdlYlZpZXcu
CisgICAgLy8gVGhlIFdlYlZpZXcgZm9yd2FyZHMgdGhlIGV2ZW50IHRvIHRoZSBzZWxlY3QgcG9w
dXAgaWYgb25lIGlzIG9wZW4uCisgICAgdm9pZCBzaW11bGF0ZUtleUV2ZW50KFdlYklucHV0RXZl
bnQ6OlR5cGUgZXZlbnRUeXBlLCBpbnQga2V5Q29kZSkKKyAgICB7CisgICAgICAgIFdlYktleWJv
YXJkRXZlbnQga2V5RXZlbnQ7CisgICAgICAgIGtleUV2ZW50LndpbmRvd3NLZXlDb2RlID0ga2V5
Q29kZTsKKyAgICAgICAga2V5RXZlbnQudHlwZSA9IGV2ZW50VHlwZTsKKyAgICAgICAgbV93ZWJW
aWV3LT5oYW5kbGVJbnB1dEV2ZW50KGtleUV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBTaW11bGF0
ZXMgYSBtb3VzZSBldmVudCBvbiB0aGUgc2VsZWN0IHBvcHVwLgorICAgIHZvaWQgc2ltdWxhdGVM
ZWZ0TW91c2VEb3duRXZlbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQorICAgIHsKKyAgICAgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9pbnQsIHBvaW50LCBMZWZ0QnV0dG9uLCBN
b3VzZUV2ZW50UHJlc3NlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOworICAgICAgICBtX3dlYlZpZXctPnNl
bGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlRG93bkV2ZW50KG1vdXNlRXZlbnQpOworICAgIH0KKyAg
ICB2b2lkIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChjb25zdCBJbnRQb2ludCYgcG9pbnQpCisg
ICAgeworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb2ludCwgcG9pbnQs
IExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOworICAgICAg
ICBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNl
RXZlbnQpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFRlc3RXZWJWaWV3Q2xpZW50IG1fd2Vi
dmlld0NsaWVudDsKKyAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3OworICAgIFRlc3RXZWJGcmFt
ZUNsaWVudCBtX3dlYkZyYW1lQ2xpZW50OworICAgIFRlc3RQb3B1cE1lbnVDbGllbnQgbV9wb3B1
cE1lbnVDbGllbnQ7CisgICAgUmVmUHRyPFBvcHVwTWVudT4gbV9wb3B1cE1lbnU7Cit9OworCisv
LyBUZXN0cyB0aGF0IHNob3cvaGlkZSBhbmQgcmVwZWF0cy4gIFNlbGVjdCBwb3B1cHMgYXJlIHJl
dXNlZCBpbiB3ZWIgcGFnZXMgd2hlbgorLy8gdGhleSBhcmUgcmVvcGVuZWQsIHRoYXQgd2hhdCB0
aGlzIGlzIHRlc3RpbmcuCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2hvd1RoZW5IaWRl
KQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7CisgICAgICAgIHNob3dQb3B1
cCgpOworICAgICAgICBoaWRlUG9wdXAoKTsKKyAgICB9Cit9CisKKy8vIFRlc3RzIHRoYXQgc2hv
d2luZyBhIHNlbGVjdCBwb3B1cCBhbmQgZGVsZXRpbmcgaXQgZG9lcyBub3QgY2F1c2UgcHJvYmxl
bS4KKy8vIFRoaXMgaGFwcGVucyBpbiByZWFsLWxpZmUgaWYgYSBwYWdlIG5hdmlnYXRlcyB3aGls
ZSBhIHNlbGVjdCBwb3B1cCBpcyBzaG93aW5nLgorVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3Qs
IFNob3dUaGVuRGVsZXRlKQoreworICAgIHNob3dQb3B1cCgpOworICAgIC8vIE5vdGhpbmcgZWxz
ZSB0byBkbywgVGVhckRvd24oKSBkZWxldGVzIHRoZSBwb3B1cC4KK30KKworLy8gVGVzdHMgdGhh
dCBsb3NpbmcgZm9jdXMgY2xvc2VzIHRoZSBzZWxlY3QgcG9wdXAuCitURVNUX0YoU2VsZWN0UG9w
dXBNZW51VGVzdCwgU2hvd1RoZW5Mb3NlRm9jdXMpCit7CisgICAgc2hvd1BvcHVwKCk7CisgICAg
Ly8gU2ltdWxhdGUgbG9zaW5nIGZvY3VzLgorICAgIG1fd2ViVmlldy0+c2V0Rm9jdXMoZmFsc2Up
OworCisgICAgLy8gUG9wdXAgc2hvdWxkIGhhdmUgY2xvc2VkLgorICAgIEVYUEVDVF9GQUxTRShw
b3B1cE9wZW4oKSk7Cit9CisKKy8vIFRlc3RzIHRoYXQgcHJlc3NpbmcgRVNDIGNsb3NlcyB0aGUg
cG9wdXAuCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2hvd1RoZW5QcmVzc0VTQykKK3sK
KyAgICBzaG93UG9wdXAoKTsKKyAgICBzaW11bGF0ZUtleURvd25FdmVudChWS0VZX0VTQ0FQRSk7
CisgICAgLy8gUG9wdXAgc2hvdWxkIGhhdmUgY2xvc2VkLgorICAgIEVYUEVDVF9GQUxTRShwb3B1
cE9wZW4oKSk7Cit9CisKKy8vIFRlc3RzIHNlbGVjdGluZyBhbiBpdGVtIHdpdGggdGhlIGFycm93
cyBhbmQgZW50ZXIvZXNjL3RhYi4KK1RFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBTZWxlY3RX
aXRoS2V5cykKK3sKKyAgICBzaG93UG9wdXAoKTsKKyAgICAvLyBTaW11bGF0ZSBzZWxlY3Rpbmcg
dGhlIDJuZCBpdGVtIGJ5IHByZXNzaW5nIERvd24sIERvd24sIGVudGVyLgorICAgIHNpbXVsYXRl
S2V5RG93bkV2ZW50KFZLRVlfRE9XTik7CisgICAgc2ltdWxhdGVLZXlEb3duRXZlbnQoVktFWV9E
T1dOKTsKKyAgICBzaW11bGF0ZUtleURvd25FdmVudChWS0VZX1JFVFVSTik7CisKKyAgICAvLyBQ
b3B1cCBzaG91bGQgaGF2ZSBjbG9zZWQuCisgICAgRVhQRUNUX1RSVUUoIXBvcHVwT3BlbigpKTsK
KyAgICBFWFBFQ1RfRVEoMiwgc2VsZWN0ZWRJbmRleCgpKTsKKworICAgIC8vIEl0IHNob3VsZCB3
b3JrIGFzIHdlbGwgd2l0aCBFU0MuCisgICAgc2hvd1BvcHVwKCk7CisgICAgc2ltdWxhdGVLZXlE
b3duRXZlbnQoVktFWV9ET1dOKTsKKyAgICBzaW11bGF0ZUtleURvd25FdmVudChWS0VZX0VTQ0FQ
RSk7CisgICAgRVhQRUNUX0ZBTFNFKHBvcHVwT3BlbigpKTsKKyAgICBFWFBFQ1RfRVEoMywgc2Vs
ZWN0ZWRJbmRleCgpKTsKK30KKworLy8gVGVzdHMgdGhhdCBzZWxlY3RpbmcgYW4gaXRlbSB3aXRo
IHRoZSBtb3VzZSBkb2VzIHNlbGVjdCB0aGUgaXRlbSBhbmQgY2xvc2UKKy8vIHRoZSBwb3B1cC4K
K1RFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBDbGlja0l0ZW0pCit7CisgICAgc2hvd1BvcHVw
KCk7CisKKyAgICAvLyBZIG9mIDE4IHRvIGJlIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEgKDEyIGZv
bnQgcGx1cyBib3JkZXIgYW5kIG1vcmUgdG8gYmUgc2FmZSkuCisgICAgSW50UG9pbnQgcm93MVBv
aW50KDIsIDE4KTsKKyAgICAvLyBTaW11bGF0ZSBhIGNsaWNrIGRvd24vdXAgb24gdGhlIGZpcnN0
IGl0ZW0uCisgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93MVBvaW50KTsKKyAgICBz
aW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKKworICAgIC8vIFBvcHVwIHNob3Vs
ZCBoYXZlIGNsb3NlZCBhbmQgdGhlIGl0ZW0gYXQgaW5kZXggMSBzZWxlY3RlZC4KKyAgICBFWFBF
Q1RfRkFMU0UocG9wdXBPcGVuKCkpOworICAgIEVYUEVDVF9FUSgxLCBzZWxlY3RlZEluZGV4KCkp
OworfQorCisvLyBUZXN0cyB0aGF0IG1vdmluZyB0aGUgbW91c2Ugb3ZlciBhbiBpdGVtIGFuZCB0
aGVuIGNsaWNraW5nIG91dHNpZGUgdGhlIHNlbGVjdCBwb3B1cAorLy8gbGVhdmVzIHRoZSBzZWxl
dGVkIGl0ZW0gdW5jaGFuZ2VkLgorVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIE1vdXNlT3Zl
ckl0ZW1DbGlja091dHNpZGUpCit7CisgICAgc2hvd1BvcHVwKCk7CisKKyAgICAvLyBZIG9mIDE4
IHRvIGJlIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEgKDEyIGZvbnQgcGx1cyBib3JkZXIgYW5kIG1v
cmUgdG8gYmUgc2FmZSkuCisgICAgSW50UG9pbnQgcm93MVBvaW50KDIsIDE4KTsKKyAgICAvLyBT
aW11bGF0ZSB0aGUgbW91c2UgbW92aW5nIG92ZXIgdGhlIGZpcnN0IGl0ZW0uCisgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocm93MVBvaW50LCByb3cxUG9pbnQsIE5vQnV0dG9uLCBN
b3VzZUV2ZW50TW92ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOworICAgIG1fd2ViVmlldy0+c2VsZWN0UG9wdXAo
KS0+aGFuZGxlTW91c2VNb3ZlRXZlbnQobW91c2VFdmVudCk7CisKKyAgICAvLyBDbGljayBvdXRz
aWRlIHRoZSBwb3B1cC4KKyAgICBzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChJbnRQb2ludCgx
MDAwLCAxMDAwKSk7CisKKyAgICAvLyBQb3B1cCBzaG91bGQgaGF2ZSBjbG9zZWQgYW5kIGl0ZW0g
MCBzaG91bGQgc3RpbGwgYmUgc2VsZWN0ZWQuCisgICAgRVhQRUNUX0ZBTFNFKHBvcHVwT3Blbigp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgc2VsZWN0ZWRJbmRleCgpKTsKK30KKworLy8gVGVzdHMgdGhh
dCBzZWxlY3RpbmcgYW4gaXRlbSB3aXRoIHRoZSBrZXlib2FyZCBhbmQgdGhlbiBjbGlja2luZyBv
dXRzaWRlIHRoZSBzZWxlY3QKKy8vIHBvcHVwIGRvZXMgc2VsZWN0IHRoYXQgaXRlbS4KK1RFU1Rf
RihTZWxlY3RQb3B1cE1lbnVUZXN0LCBTZWxlY3RJdGVtV2l0aEtleWJvYXJkSXRlbUNsaWNrT3V0
c2lkZSkKK3sKKyAgICBzaG93UG9wdXAoKTsKKworICAgIC8vIFNpbXVsYXRlIHNlbGVjdGluZyB0
aGUgMm5kIGl0ZW0gYnkgcHJlc3NpbmcgRG93biwgRG93bi4KKyAgICBzaW11bGF0ZUtleURvd25F
dmVudChWS0VZX0RPV04pOworICAgIHNpbXVsYXRlS2V5RG93bkV2ZW50KFZLRVlfRE9XTik7CisK
KyAgICAvLyBDbGljayBvdXRzaWRlIHRoZSBwb3B1cC4KKyAgICBzaW11bGF0ZUxlZnRNb3VzZURv
d25FdmVudChJbnRQb2ludCgxMDAwLCAxMDAwKSk7CisKKyAgICAvLyBQb3B1cCBzaG91bGQgaGF2
ZSBjbG9zZWQgYW5kIHRoZSBpdGVtIHNob3VsZCBoYXZlIGJlZW4gc2VsZWN0ZWQuCisgICAgRVhQ
RUNUX0ZBTFNFKHBvcHVwT3BlbigpKTsKKyAgICBFWFBFQ1RfRVEoMiwgc2VsZWN0ZWRJbmRleCgp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53538</attachid>
            <date>2010-04-16 10:52:16 -0700</date>
            <delta_ts>2010-04-16 11:08:04 -0700</delta_ts>
            <desc>Fix Mac build</desc>
            <filename>fix_mac.patch</filename>
            <type>text/plain</type>
            <size>1252</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU3NzI0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSwxNCBAQAogMjAxMC0wNC0xNiAgSmF5IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJv
bWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW2Nocm9taXVtXSBGaXggTWFjIGJ1aWxkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc0MzYKKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1BvcHVwTWVudUNocm9taXVtLmg6CisKKzIwMTAtMDQtMTYgIEpheSBDaXZlbGxpICA8amNpdmVs
bGlAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4K
IAogICAgICAgICBbY2hyb21pdW1dIFNlbGVjdCBwb3B1cHMgd291bGQgYXNzZXJ0IHdoZW4gZGVz
dHJveWVkLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5oCShyZXZpc2lvbiA1NzcyNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBNZW51Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDkgKzE3Nyw2IEBAIHB1
YmxpYzoKIAogICAgIFBvcHVwVHlwZSBwb3B1cFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3BvcHVw
VHlwZTsgfQogCi0gICAgLy8gV2hldGhlciB0aGUgcG9wdXAgaXMgY3VycmVudGx5IG9wZW4uCi0g
ICAgYm9vbCBtX3BvcHVwT3BlbjsKLQogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV1RGOjpS
ZWZDb3VudGVkPFBvcHVwQ29udGFpbmVyPjsKIApAQCAtMTk3LDYgKzE5NCw4IEBAIHByaXZhdGU6
CiAKICAgICBQb3B1cENvbnRhaW5lclNldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgUG9wdXBUeXBl
IG1fcG9wdXBUeXBlOworICAgIC8vIFdoZXRoZXIgdGhlIHBvcHVwIGlzIGN1cnJlbnRseSBvcGVu
LgorICAgIGJvb2wgbV9wb3B1cE9wZW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>