<?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>157771</bug_id>
          
          <creation_ts>2016-05-16 16:48:34 -0700</creation_ts>
          <short_desc>AX: iOS: when bringing focus to a text field we may zoom the page even if author wanted max scale = 1</short_desc>
          <delta_ts>2016-05-23 13:43:15 -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>Accessibility</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1193614</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-16 16:48:34 -0700</bug_when>
    <thetext>If a user taps on a text field to bring keyboard focus, we should not zoom the page in if the author had set scaling to NO

We should only do scaling if the user does it themselves



&lt;rdar://problem/25443355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193618</commentid>
    <comment_count>1</comment_count>
      <attachid>279068</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-16 16:52:48 -0700</bug_when>
    <thetext>Created attachment 279068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193621</commentid>
    <comment_count>2</comment_count>
      <attachid>279070</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-16 16:56:08 -0700</bug_when>
    <thetext>Created attachment 279070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193622</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-16 16:57:56 -0700</bug_when>
    <thetext>Attachment 279070 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1053:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1054:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 11 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>1193626</commentid>
    <comment_count>4</comment_count>
      <attachid>279070</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-16 17:09:13 -0700</bug_when>
    <thetext>Comment on attachment 279070
Patch

ToT changed on me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194051</commentid>
    <comment_count>5</comment_count>
      <attachid>279180</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-17 16:32:15 -0700</bug_when>
    <thetext>Created attachment 279180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194053</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 16:33:26 -0700</bug_when>
    <thetext>Attachment 279180 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1053:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1054:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 10 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>1194057</commentid>
    <comment_count>7</comment_count>
      <attachid>279180</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-05-17 16:44:39 -0700</bug_when>
    <thetext>Comment on attachment 279180
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:512
&gt; +    // maximumPageScaleFactor accounts for when user scaling is enabled by force.
&gt;      double maximumPageScaleFactor() const;
&gt; +    
&gt; +    // originalMaximumScaleFactor is the default page scaling of the page.
&gt; +    double originalMaximumScaleFactor() const;

I don&apos;t think these names are clear. In particular, &quot;by force&quot; is unclear.

Maybe:
maximumAllowablePageScaleFactor()
maximumPageScaleFactorFromViewportTag()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194061</commentid>
    <comment_count>8</comment_count>
      <attachid>279186</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-17 16:54:50 -0700</bug_when>
    <thetext>Created attachment 279186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194063</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 16:56:41 -0700</bug_when>
    <thetext>Attachment 279186 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1053:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1054:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 12 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>1194071</commentid>
    <comment_count>10</comment_count>
      <attachid>279186</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-05-17 17:14:08 -0700</bug_when>
    <thetext>Comment on attachment 279186
Patch

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

&gt; Source/WebCore/page/ViewportConfiguration.h:89
&gt; +    bool forceAlwaysUserScalable() { return m_forceAlwaysUserScalable; }

This should be const

&gt; Source/WebKit2/Shared/AssistedNodeInformation.h:103
&gt; +    bool userScalingForced { false };

This is also ambiguous. Does it mean that the user has zoomed when forceAlwaysUserScalable() is true, or does it just reflect forceAlwaysUserScalable()? I can&apos;t tell from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194337</commentid>
    <comment_count>11</comment_count>
      <attachid>279265</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-18 11:44:16 -0700</bug_when>
    <thetext>Created attachment 279265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194338</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-18 11:46:04 -0700</bug_when>
    <thetext>Attachment 279265 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1053:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1054:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 13 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>1194344</commentid>
    <comment_count>13</comment_count>
      <attachid>279265</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-05-18 11:58:35 -0700</bug_when>
    <thetext>Comment on attachment 279265
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1054
&gt; +              allowScaling:(_assistedNodeInformation.allowsUserScaling &amp;&amp; !_assistedNodeInformation.forceAlwaysUserScalable &amp;&amp; !UICurrentUserInterfaceIdiomIsPad())

Doesn&apos;t this mean that a user with &quot;always allow scaling&quot; set is going to never get zooming on an input on iPhone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194375</commentid>
    <comment_count>14</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-18 12:33:29 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 279265 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279265&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1054
&gt; &gt; +              allowScaling:(_assistedNodeInformation.allowsUserScaling &amp;&amp; !_assistedNodeInformation.forceAlwaysUserScalable &amp;&amp; !UICurrentUserInterfaceIdiomIsPad())
&gt; 
&gt; Doesn&apos;t this mean that a user with &quot;always allow scaling&quot; set is going to
&gt; never get zooming on an input on iPhone?

Possibly... Looking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194376</commentid>
    <comment_count>15</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-18 12:38:35 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Comment on attachment 279265 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=279265&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1054
&gt; &gt; &gt; +              allowScaling:(_assistedNodeInformation.allowsUserScaling &amp;&amp; !_assistedNodeInformation.forceAlwaysUserScalable &amp;&amp; !UICurrentUserInterfaceIdiomIsPad())
&gt; &gt; 
&gt; &gt; Doesn&apos;t this mean that a user with &quot;always allow scaling&quot; set is going to
&gt; &gt; never get zooming on an input on iPhone?
&gt; 
&gt; Possibly... Looking

Probably don&apos;t need _assistedNodeInformation.forceAlwaysUserScalable  at all, since maximumPageScaleFactorFromViewportTag will be 1x in this case

Rebuilding and testing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194392</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-05-18 12:53:51 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; Comment on attachment 279265 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=279265&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1054
&gt; &gt; &gt; &gt; +              allowScaling:(_assistedNodeInformation.allowsUserScaling &amp;&amp; !_assistedNodeInformation.forceAlwaysUserScalable &amp;&amp; !UICurrentUserInterfaceIdiomIsPad())
&gt; &gt; &gt; 
&gt; &gt; &gt; Doesn&apos;t this mean that a user with &quot;always allow scaling&quot; set is going to
&gt; &gt; &gt; never get zooming on an input on iPhone?
&gt; &gt; 
&gt; &gt; Possibly... Looking
&gt; 
&gt; Probably don&apos;t need _assistedNodeInformation.forceAlwaysUserScalable  at
&gt; all, since maximumPageScaleFactorFromViewportTag will be 1x in this case
&gt; 
&gt; Rebuilding and testing...

Please add a layout test for that case too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194804</commentid>
    <comment_count>17</comment_count>
      <attachid>279397</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-19 10:11:26 -0700</bug_when>
    <thetext>Created attachment 279397
Patch

Added a unit test for the case where we don&apos;t want to zoom in and the case where we DO want to zoom in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194806</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-19 10:13:38 -0700</bug_when>
    <thetext>Attachment 279397 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1054:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 16 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>1195097</commentid>
    <comment_count>19</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-19 23:08:40 -0700</bug_when>
    <thetext>@simon: how does this look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195395</commentid>
    <comment_count>20</comment_count>
      <attachid>279397</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-05-21 19:03:45 -0700</bug_when>
    <thetext>Comment on attachment 279397
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1047
&gt; +    // In case user scaling is force enabled, do not use that scaling when zomming in with an input field.

sp: zomming

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:509
&gt; +    // maximumAllowablePageScaleFactor is the max page scaling that also accounts for whether the preference for &quot;always scale&quot; is enabled.

s/scaling/scale/

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:511
&gt; +    // maximumPageScaleFactorFromViewportTag is the default page scaling of the page. It does not account for when the preference for &quot;always scale&quot; is enabled.

ditto.

&gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:340
&gt; +    return m_page-&gt;pageScaleFactor();

How is the current live page scale a &quot;maximum&quot; of any sort?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195438</commentid>
    <comment_count>21</comment_count>
      <attachid>279552</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-22 13:51:47 -0700</bug_when>
    <thetext>Created attachment 279552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195439</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-22 13:52:36 -0700</bug_when>
    <thetext>Attachment 279552 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1055:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 11 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>1195440</commentid>
    <comment_count>23</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-22 13:52:44 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 279397 [details]
&gt; Patch
&gt; 

Thanks for review. Addressed comments and also removed unnecessary changes. The patch had morphed a bit from the beginning and we don&apos;t need nearly as many changes as originally thought

thanks

&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279397&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1047
&gt; &gt; +    // In case user scaling is force enabled, do not use that scaling when zomming in with an input field.
&gt; 
&gt; sp: zomming
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:509
&gt; &gt; +    // maximumAllowablePageScaleFactor is the max page scaling that also accounts for whether the preference for &quot;always scale&quot; is enabled.
&gt; 
&gt; s/scaling/scale/
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:511
&gt; &gt; +    // maximumPageScaleFactorFromViewportTag is the default page scaling of the page. It does not account for when the preference for &quot;always scale&quot; is enabled.
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:340
&gt; &gt; +    return m_page-&gt;pageScaleFactor();
&gt; 
&gt; How is the current live page scale a &quot;maximum&quot; of any sort?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195515</commentid>
    <comment_count>24</comment_count>
      <attachid>279552</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-05-23 10:20:51 -0700</bug_when>
    <thetext>Comment on attachment 279552
Patch

This seems much less crazy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195568</commentid>
    <comment_count>25</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-05-23 13:43:15 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201294</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279068</attachid>
            <date>2016-05-16 16:52:48 -0700</date>
            <delta_ts>2016-05-16 16:56:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>12440</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA1LTE2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGlPUzogd2hlbiBi
cmluZ2luZyBmb2N1cyB0byBhIHRleHQgZmllbGQgd2UgbWF5IHpvb20gdGhlIHBhZ2UgZXZlbiBp
ZiBhdXRob3Igd2FudGVkIG1heCBzY2FsZSA9IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjU0
NDMzNTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SWYgdGhlIGF1dGhvciByZXF1ZXN0cyBzY2FsaW5nIG5vdCB0byBiZSBlbmFibGVkLCB3ZSBzaG91
bGQgbm90IHNjYWxlIGluIHdoZW4ga2V5Ym9hcmQgZm9jdXMgbW92ZXMgdG8gYSB0ZXh0IGZpZWxk
LgorICAgICAgICBTY2FsaW5nIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRoZSB1c2VyIHBlcmZv
cm1zIGEgZ2VzdHVyZSB0byBkbyBzbyBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgVGVzdDogZmFz
dC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQt
Zm9jdXMuaHRtbAorCisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Rm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpmb3Jj
ZUFsd2F5c1VzZXJTY2FsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb246Om1heGltdW1TY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb246OnVuZm9yY2VkTWF4aW11bVNjYWxlKToKKwogMjAxNi0wNS0xMyAgRG91ZyBSdXNzZWxs
ICA8ZF9ydXNzZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogUmVncmVzc2lvbnMgaW4gdW5k
by9yZWRvIGFjY2Vzc2liaWxpdHkgZnJvbSBCdWcgMTUzMzYxCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIwMDg4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDEyICs4NiwxNCBAQAogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRDYW5JZ25v
cmVTY2FsaW5nQ29uc3RyYWludHMoYm9vbCk7CiAgICAgdm9pZCBzZXRGb3JjZUFsd2F5c1VzZXJT
Y2FsYWJsZShib29sIGZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKSB7IG1fZm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUgPSBmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZTsgfQorICAgIGJvb2wgZm9yY2VBbHdh
eXNVc2VyU2NhbGFibGUoKSB7IHJldHVybiBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGxheW91dFNpemUoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBkb3VibGUgaW5pdGlhbFNjYWxlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgZG91YmxlIGluaXRpYWxTY2FsZUlnbm9yaW5nQ29udGVudFNpemUoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBkb3VibGUgbWluaW11bVNjYWxlKCkgY29uc3Q7CiAgICAgZG91YmxlIG1h
eGltdW1TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUgPyBm
b3JjZUFsd2F5c1VzZXJTY2FsYWJsZU1heGltdW1TY2FsZSA6IG1fY29uZmlndXJhdGlvbi5tYXhp
bXVtU2NhbGU7IH0KKyAgICBkb3VibGUgdW5mb3JjZWRNYXhpbXVtU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzU2hyaW5rVG9G
aXQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwOTgyKQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYt
MDUtMTYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBB
WDogaU9TOiB3aGVuIGJyaW5naW5nIGZvY3VzIHRvIGEgdGV4dCBmaWVsZCB3ZSBtYXkgem9vbSB0
aGUgcGFnZSBldmVuIGlmIGF1dGhvciB3YW50ZWQgbWF4IHNjYWxlID0gMQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmg6CisgICAg
ICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjpBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rpc3BsYXlGb3JtTm9kZUlucHV0Vmlld10p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmlzVXNpbmdUZXN0aW5nVmlld3BvcnRDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Om1pbmltdW1QYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpvcmlnaW5hbE1heGltdW1TY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6Om1heGltdW1QYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKIDIwMTYtMDUtMTYgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBXS0EgZXh0ZW5zaW9uIHBv
aW50IGZvciBXS1ByZWZlcmVuY2VzIFNQSQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCShyZXZpc2lvbiAyMDA4ODEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0Owog
ICAgIGVuY29kZXIgPDwgbWluaW11bVNjYWxlRmFjdG9yOwogICAgIGVuY29kZXIgPDwgbWF4aW11
bVNjYWxlRmFjdG9yOworICAgIGVuY29kZXIgPDwgb3JpZ2luYWxNYXhpbXVtU2NhbGVGYWN0b3I7
CiAgICAgZW5jb2RlciA8PCBub2RlRm9udFNpemU7CiAgICAgZW5jb2RlciA8PCBoYXNOZXh0Tm9k
ZTsKICAgICBlbmNvZGVyIDw8IGhhc1ByZXZpb3VzTm9kZTsKQEAgLTEwMSw2ICsxMDIsOSBAQAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1heGltdW1TY2FsZUZhY3RvcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9yaWdp
bmFsTWF4aW11bVNjYWxlRmFjdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQubm9kZUZvbnRTaXplKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24uaAkocmV2aXNpb24gMjAwODgxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAK
ICAgICBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbigpCiAgICAgICAgIDogbWluaW11bVNjYWxlRmFj
dG9yKC1JTkZJTklUWSkKICAgICAgICAgLCBtYXhpbXVtU2NhbGVGYWN0b3IoSU5GSU5JVFkpCisg
ICAgICAgICwgb3JpZ2luYWxNYXhpbXVtU2NhbGVGYWN0b3IoSU5GSU5JVFkpCiAgICAgICAgICwg
bm9kZUZvbnRTaXplKDApCiAgICAgICAgICwgaGFzTmV4dE5vZGUoZmFsc2UpCiAgICAgICAgICwg
aGFzUHJldmlvdXNOb2RlKGZhbHNlKQpAQCAtMTA0LDYgKzEwNSw3IEBACiAgICAgICAgICwgaXNN
dWx0aVNlbGVjdChmYWxzZSkKICAgICAgICAgLCBpc1JlYWRPbmx5KGZhbHNlKQogICAgICAgICAs
IGFsbG93c1VzZXJTY2FsaW5nKGZhbHNlKQorICAgICAgICAsIHVzZXJTY2FsaW5nRm9yY2VkKGZh
bHNlKQogICAgICAgICAsIGluc2lkZUZpeGVkUG9zaXRpb24oZmFsc2UpCiAgICAgICAgICwgYXV0
b2NhcGl0YWxpemVUeXBlKFdlYkF1dG9jYXBpdGFsaXplVHlwZURlZmF1bHQpCiAgICAgICAgICwg
ZWxlbWVudFR5cGUoSW5wdXRUeXBlOjpOb25lKQpAQCAtMTE2LDYgKzExOCw3IEBACiAgICAgV2Vi
Q29yZTo6SW50UmVjdCBzZWxlY3Rpb25SZWN0OwogICAgIGRvdWJsZSBtaW5pbXVtU2NhbGVGYWN0
b3I7CiAgICAgZG91YmxlIG1heGltdW1TY2FsZUZhY3RvcjsKKyAgICBkb3VibGUgb3JpZ2luYWxN
YXhpbXVtU2NhbGVGYWN0b3I7CiAgICAgZG91YmxlIG5vZGVGb250U2l6ZTsKICAgICBib29sIGhh
c05leHROb2RlOwogICAgIGJvb2wgaGFzUHJldmlvdXNOb2RlOwpAQCAtMTI0LDYgKzEyNyw3IEBA
CiAgICAgYm9vbCBpc011bHRpU2VsZWN0OwogICAgIGJvb2wgaXNSZWFkT25seTsKICAgICBib29s
IGFsbG93c1VzZXJTY2FsaW5nOworICAgIGJvb2wgdXNlclNjYWxpbmdGb3JjZWQ7CiAgICAgYm9v
bCBpbnNpZGVGaXhlZFBvc2l0aW9uOwogICAgIFdlYkF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2Fw
aXRhbGl6ZVR5cGU7CiAgICAgSW5wdXRUeXBlIGVsZW1lbnRUeXBlOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0JKHJldmlzaW9uIDIwMDg4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ4LDEyICsx
MDQ4LDE0IEBACiAKIC0gKHZvaWQpX2Rpc3BsYXlGb3JtTm9kZUlucHV0VmlldwogeworICAgIC8v
IEluIGNhc2UgdXNlciBzY2FsaW5nIGlzIGZvcmNlIGVuYWJsZWQsIGRvIG5vdCB1c2UgdGhhdCBz
Y2FsaW5nIHdoZW4gem9tbWluZyBpbiB3aXRoIGFuIGlucHV0IGZpZWxkLgorICAgIC8vIFpvb21p
bmcgYWJvdmUgdGhlIHBhZ2UncyBkZWZhdWx0IHNjYWxlIGZhY3RvciBzaG91bGQgb25seSBoYXBw
ZW4gd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBpdC4KICAgICBbc2VsZiBfem9vbVRvRm9jdXNSZWN0
Ol9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50UmVjdAogICAgICAgICAgICAgIHNlbGVj
dGlvblJlY3Q6IF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3VzID8gSW50UmVjdCgpIDogX2Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLnNlbGVjdGlvblJlY3QKICAgICAgICAgICAgICAgICAgIGZv
bnRTaXplOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5ub2RlRm9udFNpemUKICAgICAgICAgICAg
ICAgbWluaW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5taW5pbXVtU2NhbGVGYWN0
b3IKLSAgICAgICAgICAgICAgbWF4aW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5t
YXhpbXVtU2NhbGVGYWN0b3IKLSAgICAgICAgICAgICAgYWxsb3dTY2FsaW5nOihfYXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmcgJiYgIVVJQ3VycmVudFVzZXJJbnRlcmZh
Y2VJZGlvbUlzUGFkKCkpCisgICAgICAgICAgICAgIG1heGltdW1TY2FsZTpfYXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24ub3JpZ2luYWxNYXhpbXVtU2NhbGVGYWN0b3IKKyAgICAgICAgICAgICAgYWxs
b3dTY2FsaW5nOihfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmcgJiYg
IV9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi51c2VyU2NhbGluZ0ZvcmNlZCAmJiAhVUlDdXJyZW50
VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKICAgICAgICAgICAgICAgIGZvcmNlU2Nyb2xsOltz
ZWxmIHJlcXVpcmVzQWNjZXNzb3J5Vmlld11dOwogICAgIF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0
ZUZvY3VzID0gTk87CiAgICAgW3NlbGYgX2Vuc3VyZUZvcm1BY2Nlc3NvcnlWaWV3XTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24g
MjAwODgxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTA1LDcgKzUwNSwxMSBAQAogICAgIGJvb2wgaXNVc2luZ1Rlc3Rp
bmdWaWV3cG9ydENvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VzZVRlc3RpbmdWaWV3
cG9ydENvbmZpZ3VyYXRpb247IH0KIAogICAgIGRvdWJsZSBtaW5pbXVtUGFnZVNjYWxlRmFjdG9y
KCkgY29uc3Q7CisgICAgLy8gbWF4aW11bVBhZ2VTY2FsZUZhY3RvciBhY2NvdW50cyBmb3Igd2hl
biB1c2VyIHNjYWxpbmcgaXMgZW5hYmxlZCBieSBmb3JjZS4KICAgICBkb3VibGUgbWF4aW11bVBh
Z2VTY2FsZUZhY3RvcigpIGNvbnN0OworICAgIAorICAgIC8vIG9yaWdpbmFsTWF4aW11bVNjYWxl
RmFjdG9yIGlzIHRoZSBkZWZhdWx0IHBhZ2Ugc2NhbGluZyBvZiB0aGUgcGFnZS4KKyAgICBkb3Vi
bGUgb3JpZ2luYWxNYXhpbXVtU2NhbGVGYWN0b3IoKSBjb25zdDsKICAgICBib29sIGFsbG93c1Vz
ZXJTY2FsaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTdGFibGVQYWdlU2NhbGVGYWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX2hhc1N0YWJsZVBhZ2VTY2FsZUZhY3RvcjsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CShyZXZpc2lvbiAyMDA4ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsMTEgQEAKICAg
ICAgICAgcmV0dXJuIG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgcmV0dXJuIG1fdmll
d3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSgpOwogfQorICAgIAorZG91YmxlIFdlYlBh
Z2U6Om9yaWdpbmFsTWF4aW11bVNjYWxlRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
YWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKK30KIAogZG91YmxlIFdlYlBhZ2U6Om1heGltdW1QYWdl
U2NhbGVGYWN0b3IoKSBjb25zdAogewpAQCAtMjUyOSw3ICsyNTM0LDEwIEBACiAKICAgICBpbmZv
cm1hdGlvbi5taW5pbXVtU2NhbGVGYWN0b3IgPSBtaW5pbXVtUGFnZVNjYWxlRmFjdG9yKCk7CiAg
ICAgaW5mb3JtYXRpb24ubWF4aW11bVNjYWxlRmFjdG9yID0gbWF4aW11bVBhZ2VTY2FsZUZhY3Rv
cigpOworICAgIGluZm9ybWF0aW9uLm1heGltdW1TY2FsZUZhY3RvciA9IG1heGltdW1QYWdlU2Nh
bGVGYWN0b3IoKTsKKyAgICBpbmZvcm1hdGlvbi5vcmlnaW5hbE1heGltdW1TY2FsZUZhY3RvciA9
IG9yaWdpbmFsTWF4aW11bVNjYWxlRmFjdG9yKCk7CiAgICAgaW5mb3JtYXRpb24uYWxsb3dzVXNl
clNjYWxpbmcgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5hbGxvd3NVc2VyU2NhbGluZygpOwor
ICAgIGluZm9ybWF0aW9uLnVzZXJTY2FsaW5nRm9yY2VkID0gbV92aWV3cG9ydENvbmZpZ3VyYXRp
b24uZm9yY2VBbHdheXNVc2VyU2NhbGFibGUoKTsKICAgICBpbmZvcm1hdGlvbi5oYXNOZXh0Tm9k
ZSA9IGhhc0Fzc2lzdGFibGVFbGVtZW50KG1fYXNzaXN0ZWROb2RlLmdldCgpLCAqbV9wYWdlLCB0
cnVlKTsKICAgICBpbmZvcm1hdGlvbi5oYXNQcmV2aW91c05vZGUgPSBoYXNBc3Npc3RhYmxlRWxl
bWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwgZmFsc2UpOwogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDA4ODEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNS0xNiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgorCisgICAgICAgIEFYOiBpT1M6IHdoZW4gYnJpbmdpbmcgZm9jdXMgdG8gYSB0
ZXh0IGZpZWxkIHdlIG1heSB6b29tIHRoZSBwYWdlIGV2ZW4gaWYgYXV0aG9yIHdhbnRlZCBtYXgg
c2NhbGUgPSAxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTc3NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2NhbGUtZm9yLWtl
eWJvYXJkLWZvY3VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC92aWV3cG9y
dC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMuaHRt
bDogQWRkZWQuCisKIDIwMTYtMDUtMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlIHNob3VsZCBoYXZlIG9uZSBjYWxsZWVTYXZlUmVnaXN0ZXJzQnVmZmVyIHBl
ciBWTUVudHJ5RnJhbWUsIG5vdCBvbmUgcGVyIFZNLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC92
aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9j
dXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQv
aW9zL3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2NhbGUtZm9yLWtleWJvYXJkLWZvY3VzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3Vz
ZXItc2NhbGFibGUtZG9lcy1ub3Qtc2NhbGUtZm9yLWtleWJvYXJkLWZvY3VzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgaGFzIHRvIHJ1biBp
biBpT1MgV2ViS2l0VGVzdFJ1bm5lci4KKworCitUaGlzIHRlc3RzIHRoYXQgZXZlbiB0aG91Z2gg
Zm9yY2UgdXNlciBzY2FsYWJsZSA9IHRydWUsIHdlIHdvbid0IHNjYWxlIGlmIGEgdGV4dCBmaWVs
ZCBnZXRzIGZvY3VzIGJ5IGRlZmF1bHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitNYXhpbXVtIHpvb20gc2NhbGUgd2FzOiAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9p
b3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxl
LWRvZXMtbm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1cy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2Fs
ZS1mb3Ita2V5Ym9hcmQtZm9jdXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIG1heGltdW0tc2NhbGU9MSI+Cis8c2NyaXB0
IGlkPSJ1aS1zY3JpcHQiIHR5cGU9InRleHQvcGxhaW4iPgorICAgIChmdW5jdGlvbigpIHsKKyAg
ICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSh1aUNvbnRyb2xsZXIuem9vbVNjYWxl
KTsKKyAgICB9KSgpOworPC9zY3JpcHQ+PC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KTsiPgorPHAgaWQ9InJlc3VsdCI+VGhpcyB0ZXN0IGhhcyB0byBydW4gaW4gaU9TIFdlYktpdFRl
c3RSdW5uZXIuPC9wPgorCis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRleHRmaWVsZCI+CisKKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3Jp
cHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBldmVuIHRob3VnaCBmb3JjZSB1
c2VyIHNjYWxhYmxlID0gdHJ1ZSwgd2Ugd29uJ3Qgc2NhbGUgaWYgYSB0ZXh0IGZpZWxkIGdldHMg
Zm9jdXMgYnkgZGVmYXVsdC4iKTsKKworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Vmlld3BvcnRG
b3JjZUFsd2F5c1VzZXJTY2FsYWJsZSh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQpIHsKKyAgICAgICAgICAgIHZhciB1aVNjcmlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd1aS1zY3JpcHQnKS50ZXh0OworICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRWaWV3
cG9ydEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXh0ZmllbGQiKS5mb2N1cygpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5ydW5VSVNjcmlwdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndWktc2NyaXB0JykudGV4
dCwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgZGVidWcoIk1heGltdW0gem9v
bSBzY2FsZSB3YXM6ICIgKyByZXN1bHQpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279070</attachid>
            <date>2016-05-16 16:56:08 -0700</date>
            <delta_ts>2016-05-16 17:09:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13106</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDk4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA1LTE2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGlPUzogd2hlbiBi
cmluZ2luZyBmb2N1cyB0byBhIHRleHQgZmllbGQgd2UgbWF5IHpvb20gdGhlIHBhZ2UgZXZlbiBp
ZiBhdXRob3Igd2FudGVkIG1heCBzY2FsZSA9IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjU0
NDMzNTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SWYgdGhlIGF1dGhvciByZXF1ZXN0cyBzY2FsaW5nIG5vdCB0byBiZSBlbmFibGVkLCB3ZSBzaG91
bGQgbm90IHNjYWxlIGluIHdoZW4ga2V5Ym9hcmQgZm9jdXMgbW92ZXMgdG8gYSB0ZXh0IGZpZWxk
LgorICAgICAgICBTY2FsaW5nIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRoZSB1c2VyIHBlcmZv
cm1zIGEgZ2VzdHVyZSB0byBkbyBzbyBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgVGVzdDogZmFz
dC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQt
Zm9jdXMuaHRtbAorCisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Rm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpmb3Jj
ZUFsd2F5c1VzZXJTY2FsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb246Om1heGltdW1TY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb246OnVuZm9yY2VkTWF4aW11bVNjYWxlKToKKwogMjAxNi0wNS0xNiAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogR2l2ZSBlYWNoIFVu
aXF1ZUlEQkRhdGFiYXNlIGl0cyBvd24gdGFzayBxdWV1ZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIwMDk4MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDEyICs4NiwxNCBAQAogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRDYW5JZ25v
cmVTY2FsaW5nQ29uc3RyYWludHMoYm9vbCk7CiAgICAgdm9pZCBzZXRGb3JjZUFsd2F5c1VzZXJT
Y2FsYWJsZShib29sIGZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKSB7IG1fZm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUgPSBmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZTsgfQorICAgIGJvb2wgZm9yY2VBbHdh
eXNVc2VyU2NhbGFibGUoKSB7IHJldHVybiBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGxheW91dFNpemUoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBkb3VibGUgaW5pdGlhbFNjYWxlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgZG91YmxlIGluaXRpYWxTY2FsZUlnbm9yaW5nQ29udGVudFNpemUoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBkb3VibGUgbWluaW11bVNjYWxlKCkgY29uc3Q7CiAgICAgZG91YmxlIG1h
eGltdW1TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUgPyBm
b3JjZUFsd2F5c1VzZXJTY2FsYWJsZU1heGltdW1TY2FsZSA6IG1fY29uZmlndXJhdGlvbi5tYXhp
bXVtU2NhbGU7IH0KKyAgICBkb3VibGUgdW5mb3JjZWRNYXhpbXVtU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzU2hyaW5rVG9G
aXQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwOTgyKQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYt
MDUtMTYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBB
WDogaU9TOiB3aGVuIGJyaW5naW5nIGZvY3VzIHRvIGEgdGV4dCBmaWVsZCB3ZSBtYXkgem9vbSB0
aGUgcGFnZSBldmVuIGlmIGF1dGhvciB3YW50ZWQgbWF4IHNjYWxlID0gMQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmg6CisgICAg
ICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjpBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rpc3BsYXlGb3JtTm9kZUlucHV0Vmlld10p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmlzVXNpbmdUZXN0aW5nVmlld3BvcnRDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Om1pbmltdW1QYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpvcmlnaW5hbE1heGltdW1TY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6Om1heGltdW1QYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKIDIwMTYtMDUtMTYgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBXS0EgZXh0ZW5zaW9uIHBv
aW50IGZvciBXS1ByZWZlcmVuY2VzIFNQSQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCShyZXZpc2lvbiAyMDA5ODIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0Owog
ICAgIGVuY29kZXIgPDwgbWluaW11bVNjYWxlRmFjdG9yOwogICAgIGVuY29kZXIgPDwgbWF4aW11
bVNjYWxlRmFjdG9yOworICAgIGVuY29kZXIgPDwgb3JpZ2luYWxNYXhpbXVtU2NhbGVGYWN0b3I7
CiAgICAgZW5jb2RlciA8PCBub2RlRm9udFNpemU7CiAgICAgZW5jb2RlciA8PCBoYXNOZXh0Tm9k
ZTsKICAgICBlbmNvZGVyIDw8IGhhc1ByZXZpb3VzTm9kZTsKQEAgLTEwMSw2ICsxMDIsOSBAQAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1heGltdW1TY2FsZUZhY3RvcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9yaWdp
bmFsTWF4aW11bVNjYWxlRmFjdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQubm9kZUZvbnRTaXplKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24uaAkocmV2aXNpb24gMjAwOTgyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDggKzg3LDQ5IEBA
CiB9OwogCiBzdHJ1Y3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24geworPDw8PDw8PCAubWluZQor
ICAgIEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKCkKKyAgICAgICAgOiBtaW5pbXVtU2NhbGVGYWN0
b3IoLUlORklOSVRZKQorICAgICAgICAsIG1heGltdW1TY2FsZUZhY3RvcihJTkZJTklUWSkKKyAg
ICAgICAgLCBvcmlnaW5hbE1heGltdW1TY2FsZUZhY3RvcihJTkZJTklUWSkKKyAgICAgICAgLCBu
b2RlRm9udFNpemUoMCkKKyAgICAgICAgLCBoYXNOZXh0Tm9kZShmYWxzZSkKKyAgICAgICAgLCBo
YXNQcmV2aW91c05vZGUoZmFsc2UpCisgICAgICAgICwgaXNBdXRvY29ycmVjdChmYWxzZSkKKyAg
ICAgICAgLCBpc1JUTChmYWxzZSkKKyAgICAgICAgLCBpc011bHRpU2VsZWN0KGZhbHNlKQorICAg
ICAgICAsIGlzUmVhZE9ubHkoZmFsc2UpCisgICAgICAgICwgYWxsb3dzVXNlclNjYWxpbmcoZmFs
c2UpCisgICAgICAgICwgdXNlclNjYWxpbmdGb3JjZWQoZmFsc2UpCisgICAgICAgICwgaW5zaWRl
Rml4ZWRQb3NpdGlvbihmYWxzZSkKKyAgICAgICAgLCBhdXRvY2FwaXRhbGl6ZVR5cGUoV2ViQXV0
b2NhcGl0YWxpemVUeXBlRGVmYXVsdCkKKyAgICAgICAgLCBlbGVtZW50VHlwZShJbnB1dFR5cGU6
Ok5vbmUpCisgICAgICAgICwgc2VsZWN0ZWRJbmRleCgtMSkKKyAgICAgICAgLCB2YWx1ZUFzTnVt
YmVyKDApCisgICAgeworICAgIH0KKworPT09PT09PQorPj4+Pj4+PiAucjIwMDk4MgogICAgIFdl
YkNvcmU6OkludFJlY3QgZWxlbWVudFJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rp
b25SZWN0OworPDw8PDw8PCAubWluZQorICAgIGRvdWJsZSBtaW5pbXVtU2NhbGVGYWN0b3I7Cisg
ICAgZG91YmxlIG1heGltdW1TY2FsZUZhY3RvcjsKKyAgICBkb3VibGUgb3JpZ2luYWxNYXhpbXVt
U2NhbGVGYWN0b3I7CisgICAgZG91YmxlIG5vZGVGb250U2l6ZTsKKyAgICBib29sIGhhc05leHRO
b2RlOworICAgIGJvb2wgaGFzUHJldmlvdXNOb2RlOworICAgIGJvb2wgaXNBdXRvY29ycmVjdDsK
KyAgICBib29sIGlzUlRMOworICAgIGJvb2wgaXNNdWx0aVNlbGVjdDsKKyAgICBib29sIGlzUmVh
ZE9ubHk7CisgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZzsKKyAgICBib29sIHVzZXJTY2FsaW5n
Rm9yY2VkOworICAgIGJvb2wgaW5zaWRlRml4ZWRQb3NpdGlvbjsKKyAgICBXZWJBdXRvY2FwaXRh
bGl6ZVR5cGUgYXV0b2NhcGl0YWxpemVUeXBlOworICAgIElucHV0VHlwZSBlbGVtZW50VHlwZTsK
Kz09PT09PT0KICAgICBkb3VibGUgbWluaW11bVNjYWxlRmFjdG9yIHsgLUlORklOSVRZIH07CiAg
ICAgZG91YmxlIG1heGltdW1TY2FsZUZhY3RvciB7IElORklOSVRZIH07CiAgICAgZG91YmxlIG5v
ZGVGb250U2l6ZSB7IDAgfTsKQEAgLTEwMiw2ICsxNDMsNyBAQAogICAgIGJvb2wgaW5zaWRlRml4
ZWRQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAgV2ViQXV0b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBp
dGFsaXplVHlwZSB7IFdlYkF1dG9jYXBpdGFsaXplVHlwZURlZmF1bHQgfTsKICAgICBJbnB1dFR5
cGUgZWxlbWVudFR5cGUgeyBJbnB1dFR5cGU6Ok5vbmUgfTsKKz4+Pj4+Pj4gLnIyMDA5ODIKICAg
ICBTdHJpbmcgZm9ybUFjdGlvbjsKICAgICBWZWN0b3I8T3B0aW9uSXRlbT4gc2VsZWN0T3B0aW9u
czsKICAgICBpbnQgc2VsZWN0ZWRJbmRleCB7IC0xIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQko
cmV2aXNpb24gMjAwOTgyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNDQsMTIgKzEwNDQsMTQg
QEAKIAogLSAodm9pZClfZGlzcGxheUZvcm1Ob2RlSW5wdXRWaWV3CiB7CisgICAgLy8gSW4gY2Fz
ZSB1c2VyIHNjYWxpbmcgaXMgZm9yY2UgZW5hYmxlZCwgZG8gbm90IHVzZSB0aGF0IHNjYWxpbmcg
d2hlbiB6b21taW5nIGluIHdpdGggYW4gaW5wdXQgZmllbGQuCisgICAgLy8gWm9vbWluZyBhYm92
ZSB0aGUgcGFnZSdzIGRlZmF1bHQgc2NhbGUgZmFjdG9yIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVu
IHRoZSB1c2VyIHBlcmZvcm1zIGl0LgogICAgIFtzZWxmIF96b29tVG9Gb2N1c1JlY3Q6X2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRSZWN0CiAgICAgICAgICAgICAgc2VsZWN0aW9uUmVj
dDogX2RpZEFjY2Vzc29yeVRhYkluaXRpYXRlRm9jdXMgPyBJbnRSZWN0KCkgOiBfYXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uc2VsZWN0aW9uUmVjdAogICAgICAgICAgICAgICAgICAgZm9udFNpemU6
X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm5vZGVGb250U2l6ZQogICAgICAgICAgICAgICBtaW5p
bXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1pbmltdW1TY2FsZUZhY3RvcgotICAg
ICAgICAgICAgICBtYXhpbXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1heGltdW1T
Y2FsZUZhY3RvcgotICAgICAgICAgICAgICBhbGxvd1NjYWxpbmc6KF9hc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZyAmJiAhVUlDdXJyZW50VXNlckludGVyZmFjZUlkaW9t
SXNQYWQoKSkKKyAgICAgICAgICAgICAgbWF4aW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5vcmlnaW5hbE1heGltdW1TY2FsZUZhY3RvcgorICAgICAgICAgICAgICBhbGxvd1NjYWxp
bmc6KF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZyAmJiAhX2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLnVzZXJTY2FsaW5nRm9yY2VkICYmICFVSUN1cnJlbnRVc2VySW50
ZXJmYWNlSWRpb21Jc1BhZCgpKQogICAgICAgICAgICAgICAgZm9yY2VTY3JvbGw6W3NlbGYgcmVx
dWlyZXNBY2Nlc3NvcnlWaWV3XV07CiAgICAgX2RpZEFjY2Vzc29yeVRhYkluaXRpYXRlRm9jdXMg
PSBOTzsKICAgICBbc2VsZiBfZW5zdXJlRm9ybUFjY2Vzc29yeVZpZXddOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMDA5ODIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MDUsNyArNTA1LDExIEBACiAgICAgYm9vbCBpc1VzaW5nVGVzdGluZ1ZpZXdw
b3J0Q29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlVGVzdGluZ1ZpZXdwb3J0Q29u
ZmlndXJhdGlvbjsgfQogCiAgICAgZG91YmxlIG1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSBjb25z
dDsKKyAgICAvLyBtYXhpbXVtUGFnZVNjYWxlRmFjdG9yIGFjY291bnRzIGZvciB3aGVuIHVzZXIg
c2NhbGluZyBpcyBlbmFibGVkIGJ5IGZvcmNlLgogICAgIGRvdWJsZSBtYXhpbXVtUGFnZVNjYWxl
RmFjdG9yKCkgY29uc3Q7CisgICAgCisgICAgLy8gb3JpZ2luYWxNYXhpbXVtU2NhbGVGYWN0b3Ig
aXMgdGhlIGRlZmF1bHQgcGFnZSBzY2FsaW5nIG9mIHRoZSBwYWdlLgorICAgIGRvdWJsZSBvcmln
aW5hbE1heGltdW1TY2FsZUZhY3RvcigpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzVXNlclNjYWxp
bmcoKSBjb25zdDsKICAgICBib29sIGhhc1N0YWJsZVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1faGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlz
aW9uIDIwMDk4MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCwxMSBAQAogICAgICAgICBy
ZXR1cm4gbV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKICAgICByZXR1cm4gbV92aWV3cG9ydENv
bmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKCk7CiB9CisgICAgCitkb3VibGUgV2ViUGFnZTo6b3Jp
Z2luYWxNYXhpbXVtU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UtPnBh
Z2VTY2FsZUZhY3RvcigpOworfQogCiBkb3VibGUgV2ViUGFnZTo6bWF4aW11bVBhZ2VTY2FsZUZh
Y3RvcigpIGNvbnN0CiB7CkBAIC0yNTQ2LDcgKzI1NTEsMTAgQEAKIAogICAgIGluZm9ybWF0aW9u
Lm1pbmltdW1TY2FsZUZhY3RvciA9IG1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKTsKICAgICBpbmZv
cm1hdGlvbi5tYXhpbXVtU2NhbGVGYWN0b3IgPSBtYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCk7Cisg
ICAgaW5mb3JtYXRpb24ubWF4aW11bVNjYWxlRmFjdG9yID0gbWF4aW11bVBhZ2VTY2FsZUZhY3Rv
cigpOworICAgIGluZm9ybWF0aW9uLm9yaWdpbmFsTWF4aW11bVNjYWxlRmFjdG9yID0gb3JpZ2lu
YWxNYXhpbXVtU2NhbGVGYWN0b3IoKTsKICAgICBpbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGlu
ZyA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nKCk7CisgICAgaW5m
b3JtYXRpb24udXNlclNjYWxpbmdGb3JjZWQgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5mb3Jj
ZUFsd2F5c1VzZXJTY2FsYWJsZSgpOwogICAgIGluZm9ybWF0aW9uLmhhc05leHROb2RlID0gaGFz
QXNzaXN0YWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksICptX3BhZ2UsIHRydWUpOwog
ICAgIGluZm9ybWF0aW9uLmhhc1ByZXZpb3VzTm9kZSA9IGhhc0Fzc2lzdGFibGVFbGVtZW50KG1f
YXNzaXN0ZWROb2RlLmdldCgpLCAqbV9wYWdlLCBmYWxzZSk7CiAKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIwMDk4MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDE2LTA1LTE2ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5j
b20+CisKKyAgICAgICAgQVg6IGlPUzogd2hlbiBicmluZ2luZyBmb2N1cyB0byBhIHRleHQgZmll
bGQgd2UgbWF5IHpvb20gdGhlIHBhZ2UgZXZlbiBpZiBhdXRob3Igd2FudGVkIG1heCBzY2FsZSA9
IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQt
Zm9jdXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3ZpZXdwb3J0L2lvcy91
c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1cy5odG1sOiBBZGRl
ZC4KKwogMjAxNi0wNS0xNiAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBIb29rIHVwIFNoYWRvd0NoaWNrZW4gdG8gdGhlIGRlYnVnZ2VyIHRvIHNob3cgdGFpbCBk
ZWxldGVkIGZyYW1lcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1z
Y2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUt
ZG9lcy1ub3Qtc2NhbGUtZm9yLWtleWJvYXJkLWZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1u
b3Qtc2NhbGUtZm9yLWtleWJvYXJkLWZvY3VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgaGFzIHRvIHJ1biBpbiBpT1MgV2ViS2l0VGVzdFJ1
bm5lci4KKworCitUaGlzIHRlc3RzIHRoYXQgZXZlbiB0aG91Z2ggZm9yY2UgdXNlciBzY2FsYWJs
ZSA9IHRydWUsIHdlIHdvbid0IHNjYWxlIGlmIGEgdGV4dCBmaWVsZCBnZXRzIGZvY3VzIGJ5IGRl
ZmF1bHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitNYXhpbXVtIHpvb20gc2Nh
bGUgd2FzOiAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1k
b2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZv
ci1rZXlib2FyZC1mb2N1cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC92
aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9j
dXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1k
ZXZpY2Utd2lkdGgsIG1heGltdW0tc2NhbGU9MSI+Cis8c2NyaXB0IGlkPSJ1aS1zY3JpcHQiIHR5
cGU9InRleHQvcGxhaW4iPgorICAgIChmdW5jdGlvbigpIHsKKyAgICAgICB1aUNvbnRyb2xsZXIu
dWlTY3JpcHRDb21wbGV0ZSh1aUNvbnRyb2xsZXIuem9vbVNjYWxlKTsKKyAgICB9KSgpOworPC9z
Y3JpcHQ+PC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPHAgaWQ9InJlc3Vs
dCI+VGhpcyB0ZXN0IGhhcyB0byBydW4gaW4gaU9TIFdlYktpdFRlc3RSdW5uZXIuPC9wPgorCis8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRleHRmaWVsZCI+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgdGhhdCBldmVuIHRob3VnaCBmb3JjZSB1c2VyIHNjYWxhYmxlID0gdHJ1
ZSwgd2Ugd29uJ3Qgc2NhbGUgaWYgYSB0ZXh0IGZpZWxkIGdldHMgZm9jdXMgYnkgZGVmYXVsdC4i
KTsKKworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0Vmlld3BvcnRGb3JjZUFsd2F5c1VzZXJTY2Fs
YWJsZSh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQor
ICAgIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAgICAgICAgICAg
IHZhciB1aVNjcmlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1aS1zY3JpcHQnKS50ZXh0
OworICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXRWaWV3cG9ydEZvcmNlQWx3YXlzVXNl
clNjYWxhYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXh0ZmllbGQiKS5mb2N1cygpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndWktc2NyaXB0JykudGV4dCwgZnVuY3Rpb24ocmVzdWx0
KSB7CisgICAgICAgICAgICAgICAgZGVidWcoIk1heGltdW0gem9vbSBzY2FsZSB3YXM6ICIgKyBy
ZXN1bHQpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279180</attachid>
            <date>2016-05-17 16:32:15 -0700</date>
            <delta_ts>2016-05-17 16:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>11324</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDk4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA1LTE2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGlPUzogd2hlbiBi
cmluZ2luZyBmb2N1cyB0byBhIHRleHQgZmllbGQgd2UgbWF5IHpvb20gdGhlIHBhZ2UgZXZlbiBp
ZiBhdXRob3Igd2FudGVkIG1heCBzY2FsZSA9IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjU0
NDMzNTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SWYgdGhlIGF1dGhvciByZXF1ZXN0cyBzY2FsaW5nIG5vdCB0byBiZSBlbmFibGVkLCB3ZSBzaG91
bGQgbm90IHNjYWxlIGluIHdoZW4ga2V5Ym9hcmQgZm9jdXMgbW92ZXMgdG8gYSB0ZXh0IGZpZWxk
LgorICAgICAgICBTY2FsaW5nIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRoZSB1c2VyIHBlcmZv
cm1zIGEgZ2VzdHVyZSB0byBkbyBzbyBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgVGVzdDogZmFz
dC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQt
Zm9jdXMuaHRtbAorCisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Rm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpmb3Jj
ZUFsd2F5c1VzZXJTY2FsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb246Om1heGltdW1TY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb246OnVuZm9yY2VkTWF4aW11bVNjYWxlKToKKwogMjAxNi0wNS0xNiAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogR2l2ZSBlYWNoIFVu
aXF1ZUlEQkRhdGFiYXNlIGl0cyBvd24gdGFzayBxdWV1ZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIwMDk4MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDYgKzg2LDcgQEAKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Q2FuSWdub3Jl
U2NhbGluZ0NvbnN0cmFpbnRzKGJvb2wpOwogICAgIHZvaWQgc2V0Rm9yY2VBbHdheXNVc2VyU2Nh
bGFibGUoYm9vbCBmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSkgeyBtX2ZvcmNlQWx3YXlzVXNlclNj
YWxhYmxlID0gZm9yY2VBbHdheXNVc2VyU2NhbGFibGU7IH0KKyAgICBib29sIGZvcmNlQWx3YXlz
VXNlclNjYWxhYmxlKCkgeyByZXR1cm4gbV9mb3JjZUFsd2F5c1VzZXJTY2FsYWJsZTsgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBsYXlvdXRTaXplKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgZG91YmxlIGluaXRpYWxTY2FsZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMjAwOTgyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYtMDUtMTYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KKworICAgICAgICBBWDogaU9TOiB3aGVuIGJyaW5naW5nIGZvY3VzIHRvIGEg
dGV4dCBmaWVsZCB3ZSBtYXkgem9vbSB0aGUgcGFnZSBldmVuIGlmIGF1dGhvciB3YW50ZWQgbWF4
IHNjYWxlID0gMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU3NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6QXNz
aXN0ZWROb2RlSW5mb3JtYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uOjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rp
c3BsYXlGb3JtTm9kZUlucHV0Vmlld10pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzVXNpbmdUZXN0aW5nVmlld3Bv
cnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RhYmxlUGFn
ZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1pbmltdW1QYWdlU2NhbGVGYWN0b3Ip
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpvcmlnaW5hbE1heGltdW1TY2FsZUZhY3Rvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1heGltdW1QYWdlU2NhbGVGYWN0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKIDIw
MTYtMDUtMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBXS0EgZXh0ZW5zaW9uIHBvaW50IGZvciBXS1ByZWZlcmVuY2VzIFNQSQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3Bw
CShyZXZpc2lvbiAyMDA5ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiAgICAgZW5j
b2RlciA8PCBzZWxlY3Rpb25SZWN0OwogICAgIGVuY29kZXIgPDwgbWluaW11bVNjYWxlRmFjdG9y
OwogICAgIGVuY29kZXIgPDwgbWF4aW11bVNjYWxlRmFjdG9yOworICAgIGVuY29kZXIgPDwgb3Jp
Z2luYWxNYXhpbXVtU2NhbGVGYWN0b3I7CiAgICAgZW5jb2RlciA8PCBub2RlRm9udFNpemU7CiAg
ICAgZW5jb2RlciA8PCBoYXNOZXh0Tm9kZTsKICAgICBlbmNvZGVyIDw8IGhhc1ByZXZpb3VzTm9k
ZTsKQEAgLTgwLDYgKzgxLDcgQEAKICAgICBlbmNvZGVyIDw8IGlzTXVsdGlTZWxlY3Q7CiAgICAg
ZW5jb2RlciA8PCBpc1JlYWRPbmx5OwogICAgIGVuY29kZXIgPDwgYWxsb3dzVXNlclNjYWxpbmc7
CisgICAgZW5jb2RlciA8PCB1c2VyU2NhbGluZ0ZvcmNlZDsKICAgICBlbmNvZGVyIDw8IGluc2lk
ZUZpeGVkUG9zaXRpb247CiAgICAgZW5jb2RlciA8PCB2YWx1ZTsKICAgICBlbmNvZGVyIDw8IHZh
bHVlQXNOdW1iZXI7CkBAIC0xMDEsNiArMTAzLDkgQEAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tYXhpbXVtU2NhbGVGYWN0b3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmlnaW5hbE1heGltdW1TY2FsZUZhY3Rvcikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lm5vZGVGb250U2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTM5LDYgKzE0NCw5
IEBACiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hbGxvd3NVc2VyU2NhbGluZykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC51c2VyU2NhbGluZ0ZvcmNlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmluc2lkZUZpeGVkUG9zaXRpb24pKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaAkocmV2aXNpb24gMjAwOTgyKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkx
LDcgQEAKICAgICBXZWJDb3JlOjpJbnRSZWN0IHNlbGVjdGlvblJlY3Q7CiAgICAgZG91YmxlIG1p
bmltdW1TY2FsZUZhY3RvciB7IC1JTkZJTklUWSB9OwogICAgIGRvdWJsZSBtYXhpbXVtU2NhbGVG
YWN0b3IgeyBJTkZJTklUWSB9OworICAgIGRvdWJsZSBvcmlnaW5hbE1heGltdW1TY2FsZUZhY3Rv
ciB7IElORklOSVRZIH07CiAgICAgZG91YmxlIG5vZGVGb250U2l6ZSB7IDAgfTsKICAgICBib29s
IGhhc05leHROb2RlIHsgZmFsc2UgfTsKICAgICBib29sIGhhc1ByZXZpb3VzTm9kZSB7IGZhbHNl
IH07CkBAIC05OSw2ICsxMDAsNyBAQAogICAgIGJvb2wgaXNNdWx0aVNlbGVjdCB7IGZhbHNlIH07
CiAgICAgYm9vbCBpc1JlYWRPbmx5IHtmYWxzZSB9OwogICAgIGJvb2wgYWxsb3dzVXNlclNjYWxp
bmcgeyBmYWxzZSB9OworICAgIGJvb2wgdXNlclNjYWxpbmdGb3JjZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgaW5zaWRlRml4ZWRQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAgV2ViQXV0b2NhcGl0YWxp
emVUeXBlIGF1dG9jYXBpdGFsaXplVHlwZSB7IFdlYkF1dG9jYXBpdGFsaXplVHlwZURlZmF1bHQg
fTsKICAgICBJbnB1dFR5cGUgZWxlbWVudFR5cGUgeyBJbnB1dFR5cGU6Ok5vbmUgfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCShyZXZpc2lvbiAyMDA5ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTA0NCwxMiArMTA0NCwxNCBAQAogCiAtICh2b2lkKV9kaXNwbGF5Rm9ybU5vZGVJbnB1dFZpZXcK
IHsKKyAgICAvLyBJbiBjYXNlIHVzZXIgc2NhbGluZyBpcyBmb3JjZSBlbmFibGVkLCBkbyBub3Qg
dXNlIHRoYXQgc2NhbGluZyB3aGVuIHpvbW1pbmcgaW4gd2l0aCBhbiBpbnB1dCBmaWVsZC4KKyAg
ICAvLyBab29taW5nIGFib3ZlIHRoZSBwYWdlJ3MgZGVmYXVsdCBzY2FsZSBmYWN0b3Igc2hvdWxk
IG9ubHkgaGFwcGVuIHdoZW4gdGhlIHVzZXIgcGVyZm9ybXMgaXQuCiAgICAgW3NlbGYgX3pvb21U
b0ZvY3VzUmVjdDpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFJlY3QKICAgICAgICAg
ICAgICBzZWxlY3Rpb25SZWN0OiBfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA/IEludFJl
Y3QoKSA6IF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5zZWxlY3Rpb25SZWN0CiAgICAgICAgICAg
ICAgICAgICBmb250U2l6ZTpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24ubm9kZUZvbnRTaXplCiAg
ICAgICAgICAgICAgIG1pbmltdW1TY2FsZTpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24ubWluaW11
bVNjYWxlRmFjdG9yCi0gICAgICAgICAgICAgIG1heGltdW1TY2FsZTpfYXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24ubWF4aW11bVNjYWxlRmFjdG9yCi0gICAgICAgICAgICAgIGFsbG93U2NhbGluZzoo
X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmFsbG93c1VzZXJTY2FsaW5nICYmICFVSUN1cnJlbnRV
c2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpKQorICAgICAgICAgICAgICBtYXhpbXVtU2NhbGU6X2Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLm9yaWdpbmFsTWF4aW11bVNjYWxlRmFjdG9yCisgICAgICAg
ICAgICAgIGFsbG93U2NhbGluZzooX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmFsbG93c1VzZXJT
Y2FsaW5nICYmICFfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24udXNlclNjYWxpbmdGb3JjZWQgJiYg
IVVJQ3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpCiAgICAgICAgICAgICAgICBmb3Jj
ZVNjcm9sbDpbc2VsZiByZXF1aXJlc0FjY2Vzc29yeVZpZXddXTsKICAgICBfZGlkQWNjZXNzb3J5
VGFiSW5pdGlhdGVGb2N1cyA9IE5POwogICAgIFtzZWxmIF9lbnN1cmVGb3JtQWNjZXNzb3J5Vmll
d107CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHJldmlzaW9uIDIwMDk4MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwNSw3ICs1MDUsMTEgQEAKICAgICBib29sIGlz
VXNpbmdUZXN0aW5nVmlld3BvcnRDb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2VU
ZXN0aW5nVmlld3BvcnRDb25maWd1cmF0aW9uOyB9CiAKICAgICBkb3VibGUgbWluaW11bVBhZ2VT
Y2FsZUZhY3RvcigpIGNvbnN0OworICAgIC8vIG1heGltdW1QYWdlU2NhbGVGYWN0b3IgYWNjb3Vu
dHMgZm9yIHdoZW4gdXNlciBzY2FsaW5nIGlzIGVuYWJsZWQgYnkgZm9yY2UuCiAgICAgZG91Ymxl
IG1heGltdW1QYWdlU2NhbGVGYWN0b3IoKSBjb25zdDsKKyAgICAKKyAgICAvLyBvcmlnaW5hbE1h
eGltdW1TY2FsZUZhY3RvciBpcyB0aGUgZGVmYXVsdCBwYWdlIHNjYWxpbmcgb2YgdGhlIHBhZ2Uu
CisgICAgZG91YmxlIG9yaWdpbmFsTWF4aW11bVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAgICAgYm9v
bCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RhYmxlUGFnZVNjYWxl
RmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTdGFibGVQYWdlU2NhbGVGYWN0b3I7IH0KIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQkocmV2aXNpb24gMjAwOTgyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0
LDExIEBACiAgICAgICAgIHJldHVybiBtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwogICAgIHJl
dHVybiBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUoKTsKIH0KKyAgICAKK2Rv
dWJsZSBXZWJQYWdlOjpvcmlnaW5hbE1heGltdW1TY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CiAKIGRvdWJsZSBXZWJQYWdlOjpt
YXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsKQEAgLTI1NDYsNyArMjU1MSwxMCBAQAog
CiAgICAgaW5mb3JtYXRpb24ubWluaW11bVNjYWxlRmFjdG9yID0gbWluaW11bVBhZ2VTY2FsZUZh
Y3RvcigpOwogICAgIGluZm9ybWF0aW9uLm1heGltdW1TY2FsZUZhY3RvciA9IG1heGltdW1QYWdl
U2NhbGVGYWN0b3IoKTsKKyAgICBpbmZvcm1hdGlvbi5tYXhpbXVtU2NhbGVGYWN0b3IgPSBtYXhp
bXVtUGFnZVNjYWxlRmFjdG9yKCk7CisgICAgaW5mb3JtYXRpb24ub3JpZ2luYWxNYXhpbXVtU2Nh
bGVGYWN0b3IgPSBvcmlnaW5hbE1heGltdW1TY2FsZUZhY3RvcigpOwogICAgIGluZm9ybWF0aW9u
LmFsbG93c1VzZXJTY2FsaW5nID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uYWxsb3dzVXNlclNj
YWxpbmcoKTsKKyAgICBpbmZvcm1hdGlvbi51c2VyU2NhbGluZ0ZvcmNlZCA9IG1fdmlld3BvcnRD
b25maWd1cmF0aW9uLmZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKCk7CiAgICAgaW5mb3JtYXRpb24u
aGFzTmV4dE5vZGUgPSBoYXNBc3Npc3RhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwg
Km1fcGFnZSwgdHJ1ZSk7CiAgICAgaW5mb3JtYXRpb24uaGFzUHJldmlvdXNOb2RlID0gaGFzQXNz
aXN0YWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksICptX3BhZ2UsIGZhbHNlKTsKIApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5v
dC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2NhbGUt
Zm9yLWtleWJvYXJkLWZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2NhbGUtZm9yLWtl
eWJvYXJkLWZvY3VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBA
CitUaGlzIHRlc3QgaGFzIHRvIHJ1biBpbiBpT1MgV2ViS2l0VGVzdFJ1bm5lci4KKworCitUaGlz
IHRlc3RzIHRoYXQgZXZlbiB0aG91Z2ggZm9yY2UgdXNlciBzY2FsYWJsZSA9IHRydWUsIHdlIHdv
bid0IHNjYWxlIGlmIGEgdGV4dCBmaWVsZCBnZXRzIGZvY3VzIGJ5IGRlZmF1bHQuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitNYXhpbXVtIHpvb20gc2NhbGUgd2FzOiAxCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1m
b3Ita2V5Ym9hcmQtZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Zp
ZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNl
ci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIG1h
eGltdW0tc2NhbGU9MSI+Cis8c2NyaXB0IGlkPSJ1aS1zY3JpcHQiIHR5cGU9InRleHQvcGxhaW4i
PgorICAgIChmdW5jdGlvbigpIHsKKyAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0
ZSh1aUNvbnRyb2xsZXIuem9vbVNjYWxlKTsKKyAgICB9KSgpOworPC9zY3JpcHQ+PC9oZWFkPgor
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPHAgaWQ9InJlc3VsdCI+VGhpcyB0ZXN0IGhh
cyB0byBydW4gaW4gaU9TIFdlYktpdFRlc3RSdW5uZXIuPC9wPgorCis8aW5wdXQgdHlwZT0idGV4
dCIgaWQ9InRleHRmaWVsZCI+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
dGhhdCBldmVuIHRob3VnaCBmb3JjZSB1c2VyIHNjYWxhYmxlID0gdHJ1ZSwgd2Ugd29uJ3Qgc2Nh
bGUgaWYgYSB0ZXh0IGZpZWxkIGdldHMgZm9jdXMgYnkgZGVmYXVsdC4iKTsKKworICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0Vmlld3BvcnRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSh0cnVlKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgICAg
aWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAgICAgICAgICAgIHZhciB1aVNjcmlwdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1aS1zY3JpcHQnKS50ZXh0OworICAgICAgICAgICAg
d2luZG93LmludGVybmFscy5zZXRWaWV3cG9ydEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGZhbHNl
KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0ZmllbGQiKS5mb2N1
cygpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndWktc2NyaXB0JykudGV4dCwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAg
ICAgICAgZGVidWcoIk1heGltdW0gem9vbSBzY2FsZSB3YXM6ICIgKyByZXN1bHQpOworICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="303242"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279186</attachid>
            <date>2016-05-17 16:54:50 -0700</date>
            <delta_ts>2016-05-18 11:44:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13302</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDk4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA1LTE2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGlPUzogd2hlbiBi
cmluZ2luZyBmb2N1cyB0byBhIHRleHQgZmllbGQgd2UgbWF5IHpvb20gdGhlIHBhZ2UgZXZlbiBp
ZiBhdXRob3Igd2FudGVkIG1heCBzY2FsZSA9IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjU0
NDMzNTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SWYgdGhlIGF1dGhvciByZXF1ZXN0cyBzY2FsaW5nIG5vdCB0byBiZSBlbmFibGVkLCB3ZSBzaG91
bGQgbm90IHNjYWxlIGluIHdoZW4ga2V5Ym9hcmQgZm9jdXMgbW92ZXMgdG8gYSB0ZXh0IGZpZWxk
LgorICAgICAgICBTY2FsaW5nIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRoZSB1c2VyIHBlcmZv
cm1zIGEgZ2VzdHVyZSB0byBkbyBzbyBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgVGVzdDogZmFz
dC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQt
Zm9jdXMuaHRtbAorCisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Rm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpmb3Jj
ZUFsd2F5c1VzZXJTY2FsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb246Om1heGltdW1TY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb246OnVuZm9yY2VkTWF4aW11bVNjYWxlKToKKwogMjAxNi0wNS0xNiAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogR2l2ZSBlYWNoIFVu
aXF1ZUlEQkRhdGFiYXNlIGl0cyBvd24gdGFzayBxdWV1ZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIwMDk4MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDYgKzg2LDcgQEAKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Q2FuSWdub3Jl
U2NhbGluZ0NvbnN0cmFpbnRzKGJvb2wpOwogICAgIHZvaWQgc2V0Rm9yY2VBbHdheXNVc2VyU2Nh
bGFibGUoYm9vbCBmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSkgeyBtX2ZvcmNlQWx3YXlzVXNlclNj
YWxhYmxlID0gZm9yY2VBbHdheXNVc2VyU2NhbGFibGU7IH0KKyAgICBib29sIGZvcmNlQWx3YXlz
VXNlclNjYWxhYmxlKCkgeyByZXR1cm4gbV9mb3JjZUFsd2F5c1VzZXJTY2FsYWJsZTsgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBsYXlvdXRTaXplKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgZG91YmxlIGluaXRpYWxTY2FsZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMjAwOTgyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYtMDUtMTYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KKworICAgICAgICBBWDogaU9TOiB3aGVuIGJyaW5naW5nIGZvY3VzIHRvIGEg
dGV4dCBmaWVsZCB3ZSBtYXkgem9vbSB0aGUgcGFnZSBldmVuIGlmIGF1dGhvciB3YW50ZWQgbWF4
IHNjYWxlID0gMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU3NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6QXNz
aXN0ZWROb2RlSW5mb3JtYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0
aW9uOjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rp
c3BsYXlGb3JtTm9kZUlucHV0Vmlld10pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzVXNpbmdUZXN0aW5nVmlld3Bv
cnRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RhYmxlUGFn
ZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1pbmltdW1QYWdlU2NhbGVGYWN0b3Ip
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpvcmlnaW5hbE1heGltdW1TY2FsZUZhY3Rvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1heGltdW1QYWdlU2NhbGVGYWN0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKIDIw
MTYtMDUtMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBXS0EgZXh0ZW5zaW9uIHBvaW50IGZvciBXS1ByZWZlcmVuY2VzIFNQSQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3Bw
CShyZXZpc2lvbiAyMDA5ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiAgICAgZW5j
b2RlciA8PCBzZWxlY3Rpb25SZWN0OwogICAgIGVuY29kZXIgPDwgbWluaW11bVNjYWxlRmFjdG9y
OwogICAgIGVuY29kZXIgPDwgbWF4aW11bVNjYWxlRmFjdG9yOworICAgIGVuY29kZXIgPDwgbWF4
aW11bVBhZ2VTY2FsZUZhY3RvckZyb21WaWV3cG9ydFRhZzsKICAgICBlbmNvZGVyIDw8IG5vZGVG
b250U2l6ZTsKICAgICBlbmNvZGVyIDw8IGhhc05leHROb2RlOwogICAgIGVuY29kZXIgPDwgaGFz
UHJldmlvdXNOb2RlOwpAQCAtODAsNiArODEsNyBAQAogICAgIGVuY29kZXIgPDwgaXNNdWx0aVNl
bGVjdDsKICAgICBlbmNvZGVyIDw8IGlzUmVhZE9ubHk7CiAgICAgZW5jb2RlciA8PCBhbGxvd3NV
c2VyU2NhbGluZzsKKyAgICBlbmNvZGVyIDw8IHVzZXJTY2FsaW5nRm9yY2VkOwogICAgIGVuY29k
ZXIgPDwgaW5zaWRlRml4ZWRQb3NpdGlvbjsKICAgICBlbmNvZGVyIDw8IHZhbHVlOwogICAgIGVu
Y29kZXIgPDwgdmFsdWVBc051bWJlcjsKQEAgLTEwMSw2ICsxMDMsOSBAQAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1heGltdW1TY2FsZUZhY3RvcikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1heGltdW1QYWdlU2NhbGVG
YWN0b3JGcm9tVmlld3BvcnRUYWcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ub2RlRm9udFNpemUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTEzOSw2ICsxNDQsOSBAQAogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuYWxsb3dzVXNlclNjYWxpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXNlclNjYWxpbmdGb3JjZWQpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbnNpZGVGaXhl
ZFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgJKHJldmlzaW9uIDIwMDk4MikK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBACiAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rp
b25SZWN0OwogICAgIGRvdWJsZSBtaW5pbXVtU2NhbGVGYWN0b3IgeyAtSU5GSU5JVFkgfTsKICAg
ICBkb3VibGUgbWF4aW11bVNjYWxlRmFjdG9yIHsgSU5GSU5JVFkgfTsKKyAgICBkb3VibGUgbWF4
aW11bVBhZ2VTY2FsZUZhY3RvckZyb21WaWV3cG9ydFRhZyB7IElORklOSVRZIH07CiAgICAgZG91
YmxlIG5vZGVGb250U2l6ZSB7IDAgfTsKICAgICBib29sIGhhc05leHROb2RlIHsgZmFsc2UgfTsK
ICAgICBib29sIGhhc1ByZXZpb3VzTm9kZSB7IGZhbHNlIH07CkBAIC05OSw2ICsxMDAsNyBAQAog
ICAgIGJvb2wgaXNNdWx0aVNlbGVjdCB7IGZhbHNlIH07CiAgICAgYm9vbCBpc1JlYWRPbmx5IHtm
YWxzZSB9OwogICAgIGJvb2wgYWxsb3dzVXNlclNjYWxpbmcgeyBmYWxzZSB9OworICAgIGJvb2wg
dXNlclNjYWxpbmdGb3JjZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgaW5zaWRlRml4ZWRQb3NpdGlv
biB7IGZhbHNlIH07CiAgICAgV2ViQXV0b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBpdGFsaXplVHlw
ZSB7IFdlYkF1dG9jYXBpdGFsaXplVHlwZURlZmF1bHQgfTsKICAgICBJbnB1dFR5cGUgZWxlbWVu
dFR5cGUgeyBJbnB1dFR5cGU6Ok5vbmUgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lv
biAyMDA5ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA0NCwxMiArMTA0NCwxNCBAQAogCiAt
ICh2b2lkKV9kaXNwbGF5Rm9ybU5vZGVJbnB1dFZpZXcKIHsKKyAgICAvLyBJbiBjYXNlIHVzZXIg
c2NhbGluZyBpcyBmb3JjZSBlbmFibGVkLCBkbyBub3QgdXNlIHRoYXQgc2NhbGluZyB3aGVuIHpv
bW1pbmcgaW4gd2l0aCBhbiBpbnB1dCBmaWVsZC4KKyAgICAvLyBab29taW5nIGFib3ZlIHRoZSBw
YWdlJ3MgZGVmYXVsdCBzY2FsZSBmYWN0b3Igc2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHVz
ZXIgcGVyZm9ybXMgaXQuCiAgICAgW3NlbGYgX3pvb21Ub0ZvY3VzUmVjdDpfYXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uZWxlbWVudFJlY3QKICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0OiBfZGlk
QWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA/IEludFJlY3QoKSA6IF9hc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbi5zZWxlY3Rpb25SZWN0CiAgICAgICAgICAgICAgICAgICBmb250U2l6ZTpfYXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24ubm9kZUZvbnRTaXplCiAgICAgICAgICAgICAgIG1pbmltdW1TY2Fs
ZTpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24ubWluaW11bVNjYWxlRmFjdG9yCi0gICAgICAgICAg
ICAgIG1heGltdW1TY2FsZTpfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24ubWF4aW11bVNjYWxlRmFj
dG9yCi0gICAgICAgICAgICAgIGFsbG93U2NhbGluZzooX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9u
LmFsbG93c1VzZXJTY2FsaW5nICYmICFVSUN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgp
KQorICAgICAgICAgICAgICBtYXhpbXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1h
eGltdW1QYWdlU2NhbGVGYWN0b3JGcm9tVmlld3BvcnRUYWcKKyAgICAgICAgICAgICAgYWxsb3dT
Y2FsaW5nOihfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmcgJiYgIV9h
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi51c2VyU2NhbGluZ0ZvcmNlZCAmJiAhVUlDdXJyZW50VXNl
ckludGVyZmFjZUlkaW9tSXNQYWQoKSkKICAgICAgICAgICAgICAgIGZvcmNlU2Nyb2xsOltzZWxm
IHJlcXVpcmVzQWNjZXNzb3J5Vmlld11dOwogICAgIF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZv
Y3VzID0gTk87CiAgICAgW3NlbGYgX2Vuc3VyZUZvcm1BY2Nlc3NvcnlWaWV3XTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIwMDk4MikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgdmlld3BvcnRN
YXhpbXVtU2NhbGUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpOwogI2Vsc2UK
ICAgICB2aWV3cG9ydE1pbmltdW1TY2FsZSA9IG1fd2ViUGFnZS5taW5pbXVtUGFnZVNjYWxlRmFj
dG9yKCk7Ci0gICAgdmlld3BvcnRNYXhpbXVtU2NhbGUgPSBtX3dlYlBhZ2UubWF4aW11bVBhZ2VT
Y2FsZUZhY3RvcigpOworICAgIHZpZXdwb3J0TWF4aW11bVNjYWxlID0gbV93ZWJQYWdlLm1heGlt
dW1BbGxvd2FibGVQYWdlU2NhbGVGYWN0b3IoKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIwMDk4MikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwNSw3ICs1MDUsMTIgQEAKICAgICBib29sIGlzVXNpbmdUZXN0aW5nVmlld3Bv
cnRDb25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2VUZXN0aW5nVmlld3BvcnRDb25m
aWd1cmF0aW9uOyB9CiAKICAgICBkb3VibGUgbWluaW11bVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0
OwotICAgIGRvdWJsZSBtYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisKKyAgICAvLyBt
YXhpbXVtQWxsb3dhYmxlUGFnZVNjYWxlRmFjdG9yIGlzIHRoZSBtYXggcGFnZSBzY2FsaW5nIHRo
YXQgYWxzbyBhY2NvdW50cyBmb3Igd2hldGhlciB0aGUgcHJlZmVyZW5jZSBmb3IgImFsd2F5cyBz
Y2FsZSIgaXMgZW5hYmxlZC4KKyAgICBkb3VibGUgbWF4aW11bUFsbG93YWJsZVBhZ2VTY2FsZUZh
Y3RvcigpIGNvbnN0OworICAgIC8vIG1heGltdW1QYWdlU2NhbGVGYWN0b3JGcm9tVmlld3BvcnRU
YWcgaXMgdGhlIGRlZmF1bHQgcGFnZSBzY2FsaW5nIG9mIHRoZSBwYWdlLiBJdCBkb2VzIG5vdCBh
Y2NvdW50IGZvciB3aGVuIHRoZSBwcmVmZXJlbmNlIGZvciAiYWx3YXlzIHNjYWxlIiBpcyBlbmFi
bGVkLgorICAgIGRvdWJsZSBtYXhpbXVtUGFnZVNjYWxlRmFjdG9yRnJvbVZpZXdwb3J0VGFnKCkg
Y29uc3Q7CisgICAgCiAgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0OwogICAgIGJv
b2wgaGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTdGFibGVQ
YWdlU2NhbGVGYWN0b3I7IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCShyZXZpc2lvbiAy
MDA5ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250
cm9sbGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAKIAogICAgICAg
ICBJbnRSZWN0IHN0YXJ0UmVjdCA9IHZpc2libGVTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkuYWJz
b2x1dGVDYXJldEJvdW5kcygpOwogCi0gICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6TWFnbmlmeShzdGFydFJlY3QuY2VudGVyKCks
IHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgbV93ZWJQYWdlLT5taW5pbXVtUGFnZVNj
YWxlRmFjdG9yKCksIG1fd2ViUGFnZS0+bWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpKSk7CisgICAg
ICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
cjo6TWFnbmlmeShzdGFydFJlY3QuY2VudGVyKCksIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50
UmVjdCwgbV93ZWJQYWdlLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIG1fd2ViUGFnZS0+bWF4
aW11bUFsbG93YWJsZVBhZ2VTY2FsZUZhY3RvcigpKSk7CiAgICAgfQogCiAgICAgbV9pc1Nob3dp
bmdGaW5kSW5kaWNhdG9yID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIwMDk4MikKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzM0LDggKzMzNCwxMyBAQAogICAgICAgICByZXR1cm4gbV9wYWdlLT5w
YWdlU2NhbGVGYWN0b3IoKTsKICAgICByZXR1cm4gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWlu
aW11bVNjYWxlKCk7CiB9CisgICAgCitkb3VibGUgV2ViUGFnZTo6bWF4aW11bVBhZ2VTY2FsZUZh
Y3RvckZyb21WaWV3cG9ydFRhZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+cGFnZVNj
YWxlRmFjdG9yKCk7Cit9CiAKLWRvdWJsZSBXZWJQYWdlOjptYXhpbXVtUGFnZVNjYWxlRmFjdG9y
KCkgY29uc3QKK2RvdWJsZSBXZWJQYWdlOjptYXhpbXVtQWxsb3dhYmxlUGFnZVNjYWxlRmFjdG9y
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFsbG93c1VzZXJT
Y2FsaW5nKCkpCiAgICAgICAgIHJldHVybiBtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwpAQCAt
MjU0NSw4ICsyNTUwLDEwIEBACiAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRSZWN0ID0gSW50
UmVjdCgpOwogCiAgICAgaW5mb3JtYXRpb24ubWluaW11bVNjYWxlRmFjdG9yID0gbWluaW11bVBh
Z2VTY2FsZUZhY3RvcigpOwotICAgIGluZm9ybWF0aW9uLm1heGltdW1TY2FsZUZhY3RvciA9IG1h
eGltdW1QYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBpbmZvcm1hdGlvbi5tYXhpbXVtU2NhbGVGYWN0
b3IgPSBtYXhpbXVtQWxsb3dhYmxlUGFnZVNjYWxlRmFjdG9yKCk7CisgICAgaW5mb3JtYXRpb24u
bWF4aW11bVBhZ2VTY2FsZUZhY3RvckZyb21WaWV3cG9ydFRhZyA9IG1heGltdW1QYWdlU2NhbGVG
YWN0b3JGcm9tVmlld3BvcnRUYWcoKTsKICAgICBpbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGlu
ZyA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nKCk7CisgICAgaW5m
b3JtYXRpb24udXNlclNjYWxpbmdGb3JjZWQgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5mb3Jj
ZUFsd2F5c1VzZXJTY2FsYWJsZSgpOwogICAgIGluZm9ybWF0aW9uLmhhc05leHROb2RlID0gaGFz
QXNzaXN0YWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksICptX3BhZ2UsIHRydWUpOwog
ICAgIGluZm9ybWF0aW9uLmhhc1ByZXZpb3VzTm9kZSA9IGhhc0Fzc2lzdGFibGVFbGVtZW50KG1f
YXNzaXN0ZWROb2RlLmdldCgpLCAqbV9wYWdlLCBmYWxzZSk7CiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2NhbGUtZm9yLWtleWJv
YXJkLWZvY3VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Zp
ZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0
L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1cy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0IGhhcyB0
byBydW4gaW4gaU9TIFdlYktpdFRlc3RSdW5uZXIuCisKKworVGhpcyB0ZXN0cyB0aGF0IGV2ZW4g
dGhvdWdoIGZvcmNlIHVzZXIgc2NhbGFibGUgPSB0cnVlLCB3ZSB3b24ndCBzY2FsZSBpZiBhIHRl
eHQgZmllbGQgZ2V0cyBmb2N1cyBieSBkZWZhdWx0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworTWF4aW11bSB6b29tIHNjYWxlIHdhczogMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvdmll
d3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2NhbGUtZm9yLWtleWJvYXJkLWZvY3Vz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1z
Y2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1u
b3Qtc2NhbGUtZm9yLWtleWJvYXJkLWZvY3VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBtYXhpbXVtLXNjYWxlPTEiPgor
PHNjcmlwdCBpZD0idWktc2NyaXB0IiB0eXBlPSJ0ZXh0L3BsYWluIj4KKyAgICAoZnVuY3Rpb24o
KSB7CisgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUodWlDb250cm9sbGVyLnpv
b21TY2FsZSk7CisgICAgfSkoKTsKKzwvc2NyaXB0PjwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCk7Ij4KKzxwIGlkPSJyZXN1bHQiPlRoaXMgdGVzdCBoYXMgdG8gcnVuIGluIGlPUyBX
ZWJLaXRUZXN0UnVubmVyLjwvcD4KKworPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0ZXh0ZmllbGQi
PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgZXZlbiB0aG91Z2gg
Zm9yY2UgdXNlciBzY2FsYWJsZSA9IHRydWUsIHdlIHdvbid0IHNjYWxlIGlmIGEgdGV4dCBmaWVs
ZCBnZXRzIGZvY3VzIGJ5IGRlZmF1bHQuIik7CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFZp
ZXdwb3J0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KSB7CisgICAgICAgICAgICB2YXIgdWlTY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndWktc2NyaXB0JykudGV4dDsKKyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0Vmlld3BvcnRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShmYWxzZSk7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGZpZWxkIikuZm9jdXMoKTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VpLXNjcmlw
dCcpLnRleHQsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJNYXhp
bXVtIHpvb20gc2NhbGUgd2FzOiAiICsgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279265</attachid>
            <date>2016-05-18 11:44:16 -0700</date>
            <delta_ts>2016-05-19 10:11:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14291</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTA4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA1LTE4ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGlPUzogd2hlbiBi
cmluZ2luZyBmb2N1cyB0byBhIHRleHQgZmllbGQgd2UgbWF5IHpvb20gdGhlIHBhZ2UgZXZlbiBp
ZiBhdXRob3Igd2FudGVkIG1heCBzY2FsZSA9IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFi
bGUtZG9lcy1ub3Qtc2NhbGUtZm9yLWtleWJvYXJkLWZvY3VzLmh0bWwKKworICAgICAgICBJZiB0
aGUgYXV0aG9yIHJlcXVlc3RzIHNjYWxpbmcgbm90IHRvIGJlIGVuYWJsZWQsIHdlIHNob3VsZCBu
b3Qgc2NhbGUgaW4gd2hlbiBrZXlib2FyZCBmb2N1cyBtb3ZlcyB0byBhIHRleHQgZmllbGQuCisg
ICAgICAgIFNjYWxpbmcgc2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHVzZXIgcGVyZm9ybXMg
YSBnZXN0dXJlIHRvIGRvIHNvIGluIHRoaXMgY2FzZS4KKworICAgICAgICAqIHBhZ2UvVmlld3Bv
cnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRp
b246OnNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6Zm9yY2VBbHdheXNVc2VyU2NhbGFibGUpOgorCiAyMDE2LTA1LTE4
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBSZW5k
ZXJTdHlsZXMgbWFya2VkIHVuaXF1ZSBpbiBtYXRjaGVkIHByb3BlcnRpZXMgY2FjaGUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24g
MjAxMDg2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQAogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzZXRDYW5JZ25vcmVTY2FsaW5nQ29uc3RyYWludHMoYm9vbCk7CiAgICAgdm9pZCBzZXRGb3Jj
ZUFsd2F5c1VzZXJTY2FsYWJsZShib29sIGZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKSB7IG1fZm9y
Y2VBbHdheXNVc2VyU2NhbGFibGUgPSBmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZTsgfQorICAgIGJv
b2wgZm9yY2VBbHdheXNVc2VyU2NhbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlQWx3YXlz
VXNlclNjYWxhYmxlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGxheW91dFNpemUo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgaW5pdGlhbFNjYWxlKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDEwODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxNi0wNS0xOCAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBpT1M6IHdoZW4g
YnJpbmdpbmcgZm9jdXMgdG8gYSB0ZXh0IGZpZWxkIHdlIG1heSB6b29tIHRoZSBwYWdlIGV2ZW4g
aWYgYXV0aG9yIHdhbnRlZCBtYXggc2NhbGUgPSAxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfZGlzcGxheUZvcm1Ob2RlSW5wdXRWaWV3XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlWm9vbUluZm9ybWF0aW9uRm9y
Tm9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6aXNVc2luZ1Rlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYXNTdGFibGVQYWdlU2NhbGVGYWN0b3IpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6Om1pbmltdW1QYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjptYXhpbXVtUGFnZVNjYWxlRmFjdG9yRnJvbVZpZXdwb3J0VGFnKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bWF4aW11bUFsbG93YWJsZVBhZ2VTY2FsZUZhY3Rvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6bWF4aW11bVBhZ2VTY2FsZUZhY3Rvcik6IERlbGV0ZWQuCisK
IDIwMTYtMDUtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IE1vZGVybiBJREI6IE1ha2UgVGVzdFJ1bm5lci5jbGVhckFsbERhdGFiYXNlcyBhbHNvIGRlbGV0
ZSBJbmRleGVkREIgZGF0YWJhc2VzIChvbmNlIGRvaW5nIHNvIGlzIHN1cHBvcnRlZCkuCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5j
cHAJKHJldmlzaW9uIDIwMTA4NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAKICAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvblJlY3Q7CiAgICAgZW5jb2RlciA8PCBtaW5pbXVtU2NhbGVGYWN0
b3I7CiAgICAgZW5jb2RlciA8PCBtYXhpbXVtU2NhbGVGYWN0b3I7CisgICAgZW5jb2RlciA8PCBt
YXhpbXVtUGFnZVNjYWxlRmFjdG9yRnJvbVZpZXdwb3J0VGFnOwogICAgIGVuY29kZXIgPDwgbm9k
ZUZvbnRTaXplOwogICAgIGVuY29kZXIgPDwgaGFzTmV4dE5vZGU7CiAgICAgZW5jb2RlciA8PCBo
YXNQcmV2aW91c05vZGU7CkBAIC04MCw2ICs4MSw3IEBACiAgICAgZW5jb2RlciA8PCBpc011bHRp
U2VsZWN0OwogICAgIGVuY29kZXIgPDwgaXNSZWFkT25seTsKICAgICBlbmNvZGVyIDw8IGFsbG93
c1VzZXJTY2FsaW5nOworICAgIGVuY29kZXIgPDwgZm9yY2VBbHdheXNVc2VyU2NhbGFibGU7CiAg
ICAgZW5jb2RlciA8PCBpbnNpZGVGaXhlZFBvc2l0aW9uOwogICAgIGVuY29kZXIgPDwgdmFsdWU7
CiAgICAgZW5jb2RlciA8PCB2YWx1ZUFzTnVtYmVyOwpAQCAtMTAxLDYgKzEwMyw5IEBACiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11bVNjYWxlRmFjdG9yKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11bVBh
Z2VTY2FsZUZhY3RvckZyb21WaWV3cG9ydFRhZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5vZGVGb250U2l6ZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtMTM5LDYgKzE0NCw5IEBACiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5hbGxvd3NVc2VyU2NhbGluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mb3JjZUFsd2F5c1VzZXJTY2FsYWJs
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lmluc2lkZUZpeGVkUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaAkocmV2
aXNpb24gMjAxMDg2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9y
bWF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAKICAgICBXZWJDb3JlOjpJ
bnRSZWN0IHNlbGVjdGlvblJlY3Q7CiAgICAgZG91YmxlIG1pbmltdW1TY2FsZUZhY3RvciB7IC1J
TkZJTklUWSB9OwogICAgIGRvdWJsZSBtYXhpbXVtU2NhbGVGYWN0b3IgeyBJTkZJTklUWSB9Owor
ICAgIGRvdWJsZSBtYXhpbXVtUGFnZVNjYWxlRmFjdG9yRnJvbVZpZXdwb3J0VGFnIHsgSU5GSU5J
VFkgfTsKICAgICBkb3VibGUgbm9kZUZvbnRTaXplIHsgMCB9OwogICAgIGJvb2wgaGFzTmV4dE5v
ZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgaGFzUHJldmlvdXNOb2RlIHsgZmFsc2UgfTsKQEAgLTk5
LDYgKzEwMCw3IEBACiAgICAgYm9vbCBpc011bHRpU2VsZWN0IHsgZmFsc2UgfTsKICAgICBib29s
IGlzUmVhZE9ubHkge2ZhbHNlIH07CiAgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZyB7IGZhbHNl
IH07CisgICAgYm9vbCBmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSB7IGZhbHNlIH07CiAgICAgYm9v
bCBpbnNpZGVGaXhlZFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBXZWJBdXRvY2FwaXRhbGl6ZVR5
cGUgYXV0b2NhcGl0YWxpemVUeXBlIHsgV2ViQXV0b2NhcGl0YWxpemVUeXBlRGVmYXVsdCB9Owog
ICAgIElucHV0VHlwZSBlbGVtZW50VHlwZSB7IElucHV0VHlwZTo6Tm9uZSB9OwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDIwMTA4NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ0
LDEyICsxMDQ0LDE0IEBACiAKIC0gKHZvaWQpX2Rpc3BsYXlGb3JtTm9kZUlucHV0Vmlldwogewor
ICAgIC8vIEluIGNhc2UgdXNlciBzY2FsaW5nIGlzIGZvcmNlIGVuYWJsZWQsIGRvIG5vdCB1c2Ug
dGhhdCBzY2FsaW5nIHdoZW4gem9tbWluZyBpbiB3aXRoIGFuIGlucHV0IGZpZWxkLgorICAgIC8v
IFpvb21pbmcgYWJvdmUgdGhlIHBhZ2UncyBkZWZhdWx0IHNjYWxlIGZhY3RvciBzaG91bGQgb25s
eSBoYXBwZW4gd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBpdC4KICAgICBbc2VsZiBfem9vbVRvRm9j
dXNSZWN0Ol9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50UmVjdAogICAgICAgICAgICAg
IHNlbGVjdGlvblJlY3Q6IF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3VzID8gSW50UmVjdCgp
IDogX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLnNlbGVjdGlvblJlY3QKICAgICAgICAgICAgICAg
ICAgIGZvbnRTaXplOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5ub2RlRm9udFNpemUKICAgICAg
ICAgICAgICAgbWluaW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5taW5pbXVtU2Nh
bGVGYWN0b3IKLSAgICAgICAgICAgICAgbWF4aW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5tYXhpbXVtU2NhbGVGYWN0b3IKLSAgICAgICAgICAgICAgYWxsb3dTY2FsaW5nOihfYXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmcgJiYgIVVJQ3VycmVudFVzZXJJ
bnRlcmZhY2VJZGlvbUlzUGFkKCkpCisgICAgICAgICAgICAgIG1heGltdW1TY2FsZTpfYXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24ubWF4aW11bVBhZ2VTY2FsZUZhY3RvckZyb21WaWV3cG9ydFRhZwor
ICAgICAgICAgICAgICBhbGxvd1NjYWxpbmc6KF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5hbGxv
d3NVc2VyU2NhbGluZyAmJiAhX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmZvcmNlQWx3YXlzVXNl
clNjYWxhYmxlICYmICFVSUN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgpKQogICAgICAg
ICAgICAgICAgZm9yY2VTY3JvbGw6W3NlbGYgcmVxdWlyZXNBY2Nlc3NvcnlWaWV3XV07CiAgICAg
X2RpZEFjY2Vzc29yeVRhYkluaXRpYXRlRm9jdXMgPSBOTzsKICAgICBbc2VsZiBfZW5zdXJlRm9y
bUFjY2Vzc29yeVZpZXddOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNw
cAkocmV2aXNpb24gMjAxMDg2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIs
NyArMTIyLDcgQEAKICAgICB2aWV3cG9ydE1heGltdW1TY2FsZSA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6bWF4KCk7CiAjZWxzZQogICAgIHZpZXdwb3J0TWluaW11bVNjYWxlID0gbV93
ZWJQYWdlLm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKTsKLSAgICB2aWV3cG9ydE1heGltdW1TY2Fs
ZSA9IG1fd2ViUGFnZS5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCk7CisgICAgdmlld3BvcnRNYXhp
bXVtU2NhbGUgPSBtX3dlYlBhZ2UubWF4aW11bUFsbG93YWJsZVBhZ2VTY2FsZUZhY3RvcigpOwog
I2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkocmV2aXNpb24gMjAxMDg2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTA1LDcgKzUwNSwxMiBAQAogICAg
IGJvb2wgaXNVc2luZ1Rlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3VzZVRlc3RpbmdWaWV3cG9ydENvbmZpZ3VyYXRpb247IH0KIAogICAgIGRvdWJsZSBtaW5p
bXVtUGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7Ci0gICAgZG91YmxlIG1heGltdW1QYWdlU2NhbGVG
YWN0b3IoKSBjb25zdDsKKworICAgIC8vIG1heGltdW1BbGxvd2FibGVQYWdlU2NhbGVGYWN0b3Ig
aXMgdGhlIG1heCBwYWdlIHNjYWxpbmcgdGhhdCBhbHNvIGFjY291bnRzIGZvciB3aGV0aGVyIHRo
ZSBwcmVmZXJlbmNlIGZvciAiYWx3YXlzIHNjYWxlIiBpcyBlbmFibGVkLgorICAgIGRvdWJsZSBt
YXhpbXVtQWxsb3dhYmxlUGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisgICAgLy8gbWF4aW11bVBh
Z2VTY2FsZUZhY3RvckZyb21WaWV3cG9ydFRhZyBpcyB0aGUgZGVmYXVsdCBwYWdlIHNjYWxpbmcg
b2YgdGhlIHBhZ2UuIEl0IGRvZXMgbm90IGFjY291bnQgZm9yIHdoZW4gdGhlIHByZWZlcmVuY2Ug
Zm9yICJhbHdheXMgc2NhbGUiIGlzIGVuYWJsZWQuCisgICAgZG91YmxlIG1heGltdW1QYWdlU2Nh
bGVGYWN0b3JGcm9tVmlld3BvcnRUYWcoKSBjb25zdDsKKyAgICAKICAgICBib29sIGFsbG93c1Vz
ZXJTY2FsaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTdGFibGVQYWdlU2NhbGVGYWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX2hhc1N0YWJsZVBhZ2VTY2FsZUZhY3RvcjsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENv
bnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDIwMTA4NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTExMSw3ICsxMTEsNyBAQAogCiAgICAgICAgIEludFJlY3Qgc3RhcnRSZWN0ID0gdmlzaWJsZVNl
bGVjdGlvbi52aXNpYmxlU3RhcnQoKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiAKLSAgICAgICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpN
YWduaWZ5KHN0YXJ0UmVjdC5jZW50ZXIoKSwgcmVuZGVyUmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0
LCBtX3dlYlBhZ2UtPm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKSwgbV93ZWJQYWdlLT5tYXhpbXVt
UGFnZVNjYWxlRmFjdG9yKCkpKTsKKyAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpNYWduaWZ5KHN0YXJ0UmVjdC5jZW50ZXIoKSwg
cmVuZGVyUmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0LCBtX3dlYlBhZ2UtPm1pbmltdW1QYWdlU2Nh
bGVGYWN0b3IoKSwgbV93ZWJQYWdlLT5tYXhpbXVtQWxsb3dhYmxlUGFnZVNjYWxlRmFjdG9yKCkp
KTsKICAgICB9CiAKICAgICBtX2lzU2hvd2luZ0ZpbmRJbmRpY2F0b3IgPSB0cnVlOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQkocmV2aXNpb24gMjAxMDg2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsOCArMzM0LDEzIEBA
CiAgICAgICAgIHJldHVybiBtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwogICAgIHJldHVybiBt
X3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUoKTsKIH0KKyAgICAKK2RvdWJsZSBX
ZWJQYWdlOjptYXhpbXVtUGFnZVNjYWxlRmFjdG9yRnJvbVZpZXdwb3J0VGFnKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKK30KIAotZG91YmxlIFdlYlBh
Z2U6Om1heGltdW1QYWdlU2NhbGVGYWN0b3IoKSBjb25zdAorZG91YmxlIFdlYlBhZ2U6Om1heGlt
dW1BbGxvd2FibGVQYWdlU2NhbGVGYWN0b3IoKSBjb25zdAogewogICAgIGlmICghbV92aWV3cG9y
dENvbmZpZ3VyYXRpb24uYWxsb3dzVXNlclNjYWxpbmcoKSkKICAgICAgICAgcmV0dXJuIG1fcGFn
ZS0+cGFnZVNjYWxlRmFjdG9yKCk7CkBAIC0yNTQ1LDggKzI1NTAsMTAgQEAKICAgICAgICAgaW5m
b3JtYXRpb24uZWxlbWVudFJlY3QgPSBJbnRSZWN0KCk7CiAKICAgICBpbmZvcm1hdGlvbi5taW5p
bXVtU2NhbGVGYWN0b3IgPSBtaW5pbXVtUGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgaW5mb3JtYXRp
b24ubWF4aW11bVNjYWxlRmFjdG9yID0gbWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpOworICAgIGlu
Zm9ybWF0aW9uLm1heGltdW1TY2FsZUZhY3RvciA9IG1heGltdW1BbGxvd2FibGVQYWdlU2NhbGVG
YWN0b3IoKTsKKyAgICBpbmZvcm1hdGlvbi5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yRnJvbVZpZXdw
b3J0VGFnID0gbWF4aW11bVBhZ2VTY2FsZUZhY3RvckZyb21WaWV3cG9ydFRhZygpOwogICAgIGlu
Zm9ybWF0aW9uLmFsbG93c1VzZXJTY2FsaW5nID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uYWxs
b3dzVXNlclNjYWxpbmcoKTsKKyAgICBpbmZvcm1hdGlvbi5mb3JjZUFsd2F5c1VzZXJTY2FsYWJs
ZSA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKCk7CiAg
ICAgaW5mb3JtYXRpb24uaGFzTmV4dE5vZGUgPSBoYXNBc3Npc3RhYmxlRWxlbWVudChtX2Fzc2lz
dGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwgdHJ1ZSk7CiAgICAgaW5mb3JtYXRpb24uaGFzUHJldmlv
dXNOb2RlID0gaGFzQXNzaXN0YWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksICptX3Bh
Z2UsIGZhbHNlKTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxMDg2KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDUtMTggIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogaU9TOiB3
aGVuIGJyaW5naW5nIGZvY3VzIHRvIGEgdGV4dCBmaWVsZCB3ZSBtYXkgem9vbSB0aGUgcGFnZSBl
dmVuIGlmIGF1dGhvciB3YW50ZWQgbWF4IHNjYWxlID0gMQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxh
YmxlLWRvZXMtbm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2Nh
bGUtZm9yLWtleWJvYXJkLWZvY3VzLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA1LTE4ICBSeWFuIEhh
ZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYmFzZWxpbmUgaW5zcGVj
dG9yL2RlYnVnZ2VyL2NvbW1hbmQtbGluZS1hcGktZXhjZXB0aW9uLmh0bWwgYWZ0ZXIgcjIwMTA4
MApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2Vz
LW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2Nh
bGUtZm9yLWtleWJvYXJkLWZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2NhbGUtZm9y
LWtleWJvYXJkLWZvY3VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEz
IEBACitUaGlzIHRlc3QgaGFzIHRvIHJ1biBpbiBpT1MgV2ViS2l0VGVzdFJ1bm5lci4KKworCitU
aGlzIHRlc3RzIHRoYXQgZXZlbiB0aG91Z2ggZm9yY2UgdXNlciBzY2FsYWJsZSA9IHRydWUsIHdl
IHdvbid0IHNjYWxlIGlmIGEgdGV4dCBmaWVsZCBnZXRzIGZvY3VzIGJ5IGRlZmF1bHQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitNYXhpbXVtIHpvb20gc2NhbGUgd2FzOiAxCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2Fs
ZS1mb3Ita2V5Ym9hcmQtZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZvci1rZXlib2FyZC1m
b2N1cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3Mv
dXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgs
IG1heGltdW0tc2NhbGU9MSI+Cis8c2NyaXB0IGlkPSJ1aS1zY3JpcHQiIHR5cGU9InRleHQvcGxh
aW4iPgorICAgIChmdW5jdGlvbigpIHsKKyAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21w
bGV0ZSh1aUNvbnRyb2xsZXIuem9vbVNjYWxlKTsKKyAgICB9KSgpOworPC9zY3JpcHQ+PC9oZWFk
PgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPHAgaWQ9InJlc3VsdCI+VGhpcyB0ZXN0
IGhhcyB0byBydW4gaW4gaU9TIFdlYktpdFRlc3RSdW5uZXIuPC9wPgorCis8aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9InRleHRmaWVsZCI+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhhdCBldmVuIHRob3VnaCBmb3JjZSB1c2VyIHNjYWxhYmxlID0gdHJ1ZSwgd2Ugd29uJ3Qg
c2NhbGUgaWYgYSB0ZXh0IGZpZWxkIGdldHMgZm9jdXMgYnkgZGVmYXVsdC4iKTsKKworICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0Vmlld3BvcnRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSh0cnVlKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAg
ICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAgICAgICAgICAgIHZhciB1aVNjcmlw
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1aS1zY3JpcHQnKS50ZXh0OworICAgICAgICAg
ICAgd2luZG93LmludGVybmFscy5zZXRWaWV3cG9ydEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGZh
bHNlKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0ZmllbGQiKS5m
b2N1cygpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndWktc2NyaXB0JykudGV4dCwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAg
ICAgICAgICAgZGVidWcoIk1heGltdW0gem9vbSBzY2FsZSB3YXM6ICIgKyByZXN1bHQpOworICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279397</attachid>
            <date>2016-05-19 10:11:26 -0700</date>
            <delta_ts>2016-05-22 13:51:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19183</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTE2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA1LTE5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGlPUzogd2hlbiBi
cmluZ2luZyBmb2N1cyB0byBhIHRleHQgZmllbGQgd2UgbWF5IHpvb20gdGhlIHBhZ2UgZXZlbiBp
ZiBhdXRob3Igd2FudGVkIG1heCBzY2FsZSA9IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIElmIHRoZSBhdXRob3IgcmVxdWVzdHMgc2NhbGluZyBub3Qg
dG8gYmUgZW5hYmxlZCwgd2Ugc2hvdWxkIG5vdCBzY2FsZSBpbiB3aGVuIGtleWJvYXJkIGZvY3Vz
IG1vdmVzIHRvIGEgdGV4dCBmaWVsZC4KKyAgICAgICAgU2NhbGluZyBzaG91bGQgb25seSBoYXBw
ZW4gd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBhIGdlc3R1cmUgdG8gZG8gc28gaW4gdGhpcyBjYXNl
LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMt
bm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1cy13aXRoLWF1dGhvci1kZWZpbmVkLXNjYWxlLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtc2NhbGVz
LWZvci1rZXlib2FyZC1mb2N1cy13aXRoLW5vLWF1dGhvci1kZWZpbmVkLXNjYWxlLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6YWxsb3dzVXNlclNjYWxpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjphbGxvd3NVc2VyU2NhbGluZ0lnbm9yaW5n
Rm9yY2VBbHdheXNTY2FsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJh
dGlvbjo6d2VicGFnZVBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhZ2UvVmlld3BvcnRDb25maWd1
cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OnNldEZv
cmNlQWx3YXlzVXNlclNjYWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmln
dXJhdGlvbjo6Zm9yY2VBbHdheXNVc2VyU2NhbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmll
d3BvcnRDb25maWd1cmF0aW9uOjptYXhpbXVtU2NhbGUpOgorCiAyMDE2LTA1LTE4ICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVzZSBhIGNv
bnNpc3RlbnQgcHJlZml4IGZvciBpbmplY3RlZCBzY3JpcHRzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMDExNjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwOSw4ICsyMDksMTMgQEAKIAogYm9vbCBWaWV3cG9ydENvbmZpZ3VyYXRpb246
OmFsbG93c1VzZXJTY2FsaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb3JjZUFsd2F5c1Vz
ZXJTY2FsYWJsZSB8fCBzaG91bGRJZ25vcmVTY2FsaW5nQ29uc3RyYWludHMoKSB8fCBtX2NvbmZp
Z3VyYXRpb24uYWxsb3dzVXNlclNjYWxpbmc7CisgICAgcmV0dXJuIG1fZm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUgfHwgYWxsb3dzVXNlclNjYWxpbmdJZ25vcmluZ0ZvcmNlQWx3YXlzU2NhbGluZygp
OwogfQorICAgIAorYm9vbCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmFsbG93c1VzZXJTY2FsaW5n
SWdub3JpbmdGb3JjZUFsd2F5c1NjYWxpbmcoKSBjb25zdAoreworICAgIHJldHVybiBzaG91bGRJ
Z25vcmVTY2FsaW5nQ29uc3RyYWludHMoKSB8fCBtX2NvbmZpZ3VyYXRpb24uYWxsb3dzVXNlclNj
YWxpbmc7Cit9CiAKIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6UGFyYW1ldGVycyBWaWV3cG9ydENv
bmZpZ3VyYXRpb246OndlYnBhZ2VQYXJhbWV0ZXJzKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjAxMTY4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtODYsNiArODYsNyBAQAogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRDYW5JZ25vcmVT
Y2FsaW5nQ29uc3RyYWludHMoYm9vbCk7CiAgICAgdm9pZCBzZXRGb3JjZUFsd2F5c1VzZXJTY2Fs
YWJsZShib29sIGZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKSB7IG1fZm9yY2VBbHdheXNVc2VyU2Nh
bGFibGUgPSBmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZTsgfQorICAgIGJvb2wgZm9yY2VBbHdheXNV
c2VyU2NhbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlOyB9
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGxheW91dFNpemUoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBkb3VibGUgaW5pdGlhbFNjYWxlKCkgY29uc3Q7CkBAIC05Myw2ICs5NCw3
IEBACiAgICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIG1pbmltdW1TY2FsZSgpIGNvbnN0OwogICAg
IGRvdWJsZSBtYXhpbXVtU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlQWx3YXlzVXNlclNj
YWxhYmxlID8gZm9yY2VBbHdheXNVc2VyU2NhbGFibGVNYXhpbXVtU2NhbGUgOiBtX2NvbmZpZ3Vy
YXRpb24ubWF4aW11bVNjYWxlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhbGxvd3NVc2Vy
U2NhbGluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxsb3dzVXNlclNjYWxp
bmdJZ25vcmluZ0ZvcmNlQWx3YXlzU2NhbGluZygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzU2hy
aW5rVG9GaXQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXJhbWV0ZXJz
IHdlYnBhZ2VQYXJhbWV0ZXJzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDExNjgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBA
QAorMjAxNi0wNS0xOSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisg
ICAgICAgIEFYOiBpT1M6IHdoZW4gYnJpbmdpbmcgZm9jdXMgdG8gYSB0ZXh0IGZpZWxkIHdlIG1h
eSB6b29tIHRoZSBwYWdlIGV2ZW4gaWYgYXV0aG9yIHdhbnRlZCBtYXggc2NhbGUgPSAxCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9Bc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24u
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlzcGxheUZvcm1Ob2RlSW5wdXRWaWV3XSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21w
dXRlWm9vbUluZm9ybWF0aW9uRm9yTm9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNVc2luZ1Rlc3RpbmdWaWV3
cG9ydENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYXNTdGFibGVQ
YWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENv
bnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVG
aW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1pbmltdW1QYWdlU2NhbGVGYWN0b3Ip
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptYXhpbXVtUGFnZVNjYWxlRmFjdG9yRnJvbVZp
ZXdwb3J0VGFnKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bWF4aW11bUFsbG93YWJsZVBh
Z2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bWF4aW11bVBhZ2VTY2Fs
ZUZhY3Rvcik6IERlbGV0ZWQuCisKIDIwMTYtMDUtMTkgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogdXNlIGEgY29uc2lzdGVudCBwcmVmaXgg
Zm9yIGluamVjdGVkIHNjcmlwdHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAkocmV2aXNpb24gMjAxMTY4KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjcsNiArNjcsNyBAQAogICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uUmVjdDsKICAgICBl
bmNvZGVyIDw8IG1pbmltdW1TY2FsZUZhY3RvcjsKICAgICBlbmNvZGVyIDw8IG1heGltdW1TY2Fs
ZUZhY3RvcjsKKyAgICBlbmNvZGVyIDw8IG1heGltdW1QYWdlU2NhbGVGYWN0b3JGcm9tVmlld3Bv
cnRUYWc7CiAgICAgZW5jb2RlciA8PCBub2RlRm9udFNpemU7CiAgICAgZW5jb2RlciA8PCBoYXNO
ZXh0Tm9kZTsKICAgICBlbmNvZGVyIDw8IGhhc1ByZXZpb3VzTm9kZTsKQEAgLTgwLDYgKzgxLDgg
QEAKICAgICBlbmNvZGVyIDw8IGlzTXVsdGlTZWxlY3Q7CiAgICAgZW5jb2RlciA8PCBpc1JlYWRP
bmx5OwogICAgIGVuY29kZXIgPDwgYWxsb3dzVXNlclNjYWxpbmc7CisgICAgZW5jb2RlciA8PCBm
b3JjZUFsd2F5c1VzZXJTY2FsYWJsZTsKKyAgICBlbmNvZGVyIDw8IGFsbG93c1VzZXJTY2FsaW5n
SWdub3JpbmdGb3JjZUFsd2F5c1NjYWxpbmc7CiAgICAgZW5jb2RlciA8PCBpbnNpZGVGaXhlZFBv
c2l0aW9uOwogICAgIGVuY29kZXIgPDwgdmFsdWU7CiAgICAgZW5jb2RlciA8PCB2YWx1ZUFzTnVt
YmVyOwpAQCAtMTAxLDYgKzEwNCw5IEBACiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
bWF4aW11bVNjYWxlRmFjdG9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11bVBhZ2VTY2FsZUZhY3RvckZyb21WaWV3cG9ydFRh
ZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm5vZGVGb250U2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTM5LDYgKzE0
NSwxMiBAQAogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYWxsb3dzVXNlclNjYWxp
bmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuZm9yY2VBbHdheXNVc2VyU2NhbGFibGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYWxsb3dzVXNlclNjYWxpbmdJ
Z25vcmluZ0ZvcmNlQWx3YXlzU2NhbGluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmluc2lkZUZpeGVkUG9zaXRpb24pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0
ZWROb2RlSW5mb3JtYXRpb24uaAkocmV2aXNpb24gMjAxMTY4KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYg
KzkxLDcgQEAKICAgICBXZWJDb3JlOjpJbnRSZWN0IHNlbGVjdGlvblJlY3Q7CiAgICAgZG91Ymxl
IG1pbmltdW1TY2FsZUZhY3RvciB7IC1JTkZJTklUWSB9OwogICAgIGRvdWJsZSBtYXhpbXVtU2Nh
bGVGYWN0b3IgeyBJTkZJTklUWSB9OworICAgIGRvdWJsZSBtYXhpbXVtUGFnZVNjYWxlRmFjdG9y
RnJvbVZpZXdwb3J0VGFnIHsgSU5GSU5JVFkgfTsKICAgICBkb3VibGUgbm9kZUZvbnRTaXplIHsg
MCB9OwogICAgIGJvb2wgaGFzTmV4dE5vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgaGFzUHJldmlv
dXNOb2RlIHsgZmFsc2UgfTsKQEAgLTk5LDYgKzEwMCw4IEBACiAgICAgYm9vbCBpc011bHRpU2Vs
ZWN0IHsgZmFsc2UgfTsKICAgICBib29sIGlzUmVhZE9ubHkge2ZhbHNlIH07CiAgICAgYm9vbCBh
bGxvd3NVc2VyU2NhbGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBmb3JjZUFsd2F5c1VzZXJTY2Fs
YWJsZSB7IGZhbHNlIH07CisgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZ0lnbm9yaW5nRm9yY2VB
bHdheXNTY2FsaW5nIHsgZmFsc2UgfTsKICAgICBib29sIGluc2lkZUZpeGVkUG9zaXRpb24geyBm
YWxzZSB9OwogICAgIFdlYkF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGUgeyBX
ZWJBdXRvY2FwaXRhbGl6ZVR5cGVEZWZhdWx0IH07CiAgICAgSW5wdXRUeXBlIGVsZW1lbnRUeXBl
IHsgSW5wdXRUeXBlOjpOb25lIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjAx
MTY4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNDQsMTIgKzEwNDQsMTQgQEAKIAogLSAodm9p
ZClfZGlzcGxheUZvcm1Ob2RlSW5wdXRWaWV3CiB7CisgICAgLy8gSW4gY2FzZSB1c2VyIHNjYWxp
bmcgaXMgZm9yY2UgZW5hYmxlZCwgZG8gbm90IHVzZSB0aGF0IHNjYWxpbmcgd2hlbiB6b21taW5n
IGluIHdpdGggYW4gaW5wdXQgZmllbGQuCisgICAgLy8gWm9vbWluZyBhYm92ZSB0aGUgcGFnZSdz
IGRlZmF1bHQgc2NhbGUgZmFjdG9yIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRoZSB1c2VyIHBl
cmZvcm1zIGl0LgogICAgIFtzZWxmIF96b29tVG9Gb2N1c1JlY3Q6X2Fzc2lzdGVkTm9kZUluZm9y
bWF0aW9uLmVsZW1lbnRSZWN0CiAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdDogX2RpZEFjY2Vz
c29yeVRhYkluaXRpYXRlRm9jdXMgPyBJbnRSZWN0KCkgOiBfYXNzaXN0ZWROb2RlSW5mb3JtYXRp
b24uc2VsZWN0aW9uUmVjdAogICAgICAgICAgICAgICAgICAgZm9udFNpemU6X2Fzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uLm5vZGVGb250U2l6ZQogICAgICAgICAgICAgICBtaW5pbXVtU2NhbGU6X2Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLm1pbmltdW1TY2FsZUZhY3RvcgogICAgICAgICAgICAgICBt
YXhpbXVtU2NhbGU6X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLm1heGltdW1TY2FsZUZhY3Rvcgot
ICAgICAgICAgICAgICBhbGxvd1NjYWxpbmc6KF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5hbGxv
d3NVc2VyU2NhbGluZyAmJiAhVUlDdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkKKyAg
ICAgICAgICAgICAgYWxsb3dTY2FsaW5nOihfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uYWxsb3dz
VXNlclNjYWxpbmdJZ25vcmluZ0ZvcmNlQWx3YXlzU2NhbGluZyAmJiAhVUlDdXJyZW50VXNlcklu
dGVyZmFjZUlkaW9tSXNQYWQoKSkKICAgICAgICAgICAgICAgIGZvcmNlU2Nyb2xsOltzZWxmIHJl
cXVpcmVzQWNjZXNzb3J5Vmlld11dOwogICAgIF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3Vz
ID0gTk87CiAgICAgW3NlbGYgX2Vuc3VyZUZvcm1BY2Nlc3NvcnlWaWV3XTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIwMTE2OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgdmlld3BvcnRNYXhp
bXVtU2NhbGUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpOwogI2Vsc2UKICAg
ICB2aWV3cG9ydE1pbmltdW1TY2FsZSA9IG1fd2ViUGFnZS5taW5pbXVtUGFnZVNjYWxlRmFjdG9y
KCk7Ci0gICAgdmlld3BvcnRNYXhpbXVtU2NhbGUgPSBtX3dlYlBhZ2UubWF4aW11bVBhZ2VTY2Fs
ZUZhY3RvcigpOworICAgIHZpZXdwb3J0TWF4aW11bVNjYWxlID0gbV93ZWJQYWdlLm1heGltdW1B
bGxvd2FibGVQYWdlU2NhbGVGYWN0b3IoKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIwMTE2OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwNSw3ICs1MDUsMTIgQEAKICAgICBib29sIGlzVXNpbmdUZXN0aW5nVmlld3BvcnRD
b25maWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2VUZXN0aW5nVmlld3BvcnRDb25maWd1
cmF0aW9uOyB9CiAKICAgICBkb3VibGUgbWluaW11bVBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Owot
ICAgIGRvdWJsZSBtYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisKKyAgICAvLyBtYXhp
bXVtQWxsb3dhYmxlUGFnZVNjYWxlRmFjdG9yIGlzIHRoZSBtYXggcGFnZSBzY2FsaW5nIHRoYXQg
YWxzbyBhY2NvdW50cyBmb3Igd2hldGhlciB0aGUgcHJlZmVyZW5jZSBmb3IgImFsd2F5cyBzY2Fs
ZSIgaXMgZW5hYmxlZC4KKyAgICBkb3VibGUgbWF4aW11bUFsbG93YWJsZVBhZ2VTY2FsZUZhY3Rv
cigpIGNvbnN0OworICAgIC8vIG1heGltdW1QYWdlU2NhbGVGYWN0b3JGcm9tVmlld3BvcnRUYWcg
aXMgdGhlIGRlZmF1bHQgcGFnZSBzY2FsaW5nIG9mIHRoZSBwYWdlLiBJdCBkb2VzIG5vdCBhY2Nv
dW50IGZvciB3aGVuIHRoZSBwcmVmZXJlbmNlIGZvciAiYWx3YXlzIHNjYWxlIiBpcyBlbmFibGVk
LgorICAgIGRvdWJsZSBtYXhpbXVtUGFnZVNjYWxlRmFjdG9yRnJvbVZpZXdwb3J0VGFnKCkgY29u
c3Q7CisgICAgCiAgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0OwogICAgIGJvb2wg
aGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTdGFibGVQYWdl
U2NhbGVGYWN0b3I7IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCShyZXZpc2lvbiAyMDEx
NjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9s
bGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAKIAogICAgICAgICBJ
bnRSZWN0IHN0YXJ0UmVjdCA9IHZpc2libGVTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkuYWJzb2x1
dGVDYXJldEJvdW5kcygpOwogCi0gICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6U21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6TWFnbmlmeShzdGFydFJlY3QuY2VudGVyKCksIHJl
bmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgbV93ZWJQYWdlLT5taW5pbXVtUGFnZVNjYWxl
RmFjdG9yKCksIG1fd2ViUGFnZS0+bWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpKSk7CisgICAgICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6
TWFnbmlmeShzdGFydFJlY3QuY2VudGVyKCksIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVj
dCwgbV93ZWJQYWdlLT5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCksIG1fd2ViUGFnZS0+bWF4aW11
bUFsbG93YWJsZVBhZ2VTY2FsZUZhY3RvcigpKSk7CiAgICAgfQogCiAgICAgbV9pc1Nob3dpbmdG
aW5kSW5kaWNhdG9yID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIwMTE2OCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzM0LDggKzMzNCwxMyBAQAogICAgICAgICByZXR1cm4gbV9wYWdlLT5wYWdl
U2NhbGVGYWN0b3IoKTsKICAgICByZXR1cm4gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11
bVNjYWxlKCk7CiB9CisgICAgCitkb3VibGUgV2ViUGFnZTo6bWF4aW11bVBhZ2VTY2FsZUZhY3Rv
ckZyb21WaWV3cG9ydFRhZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+cGFnZVNjYWxl
RmFjdG9yKCk7Cit9CiAKLWRvdWJsZSBXZWJQYWdlOjptYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCkg
Y29uc3QKK2RvdWJsZSBXZWJQYWdlOjptYXhpbXVtQWxsb3dhYmxlUGFnZVNjYWxlRmFjdG9yKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2Fs
aW5nKCkpCiAgICAgICAgIHJldHVybiBtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwpAQCAtMjU0
NSw4ICsyNTUwLDExIEBACiAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRSZWN0ID0gSW50UmVj
dCgpOwogCiAgICAgaW5mb3JtYXRpb24ubWluaW11bVNjYWxlRmFjdG9yID0gbWluaW11bVBhZ2VT
Y2FsZUZhY3RvcigpOwotICAgIGluZm9ybWF0aW9uLm1heGltdW1TY2FsZUZhY3RvciA9IG1heGlt
dW1QYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBpbmZvcm1hdGlvbi5tYXhpbXVtU2NhbGVGYWN0b3Ig
PSBtYXhpbXVtQWxsb3dhYmxlUGFnZVNjYWxlRmFjdG9yKCk7CisgICAgaW5mb3JtYXRpb24ubWF4
aW11bVBhZ2VTY2FsZUZhY3RvckZyb21WaWV3cG9ydFRhZyA9IG1heGltdW1QYWdlU2NhbGVGYWN0
b3JGcm9tVmlld3BvcnRUYWcoKTsKICAgICBpbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZyA9
IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nKCk7CisgICAgaW5mb3Jt
YXRpb24uZm9yY2VBbHdheXNVc2VyU2NhbGFibGUgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5m
b3JjZUFsd2F5c1VzZXJTY2FsYWJsZSgpOworICAgIGluZm9ybWF0aW9uLmFsbG93c1VzZXJTY2Fs
aW5nSWdub3JpbmdGb3JjZUFsd2F5c1NjYWxpbmcgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5h
bGxvd3NVc2VyU2NhbGluZ0lnbm9yaW5nRm9yY2VBbHdheXNTY2FsaW5nKCk7CiAgICAgaW5mb3Jt
YXRpb24uaGFzTmV4dE5vZGUgPSBoYXNBc3Npc3RhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5n
ZXQoKSwgKm1fcGFnZSwgdHJ1ZSk7CiAgICAgaW5mb3JtYXRpb24uaGFzUHJldmlvdXNOb2RlID0g
aGFzQXNzaXN0YWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksICptX3BhZ2UsIGZhbHNl
KTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxMTY4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDUtMTkgIENocmlzIEZsZWl6
YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogaU9TOiB3aGVuIGJyaW5n
aW5nIGZvY3VzIHRvIGEgdGV4dCBmaWVsZCB3ZSBtYXkgem9vbSB0aGUgcGFnZSBldmVuIGlmIGF1
dGhvciB3YW50ZWQgbWF4IHNjYWxlID0gMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMt
bm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1cy13aXRoLWF1dGhvci1kZWZpbmVkLXNjYWxlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2Fs
YWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMtd2l0aC1hdXRob3ItZGVmaW5l
ZC1zY2FsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNj
YWxhYmxlLXNjYWxlcy1mb3Ita2V5Ym9hcmQtZm9jdXMtd2l0aC1uby1hdXRob3ItZGVmaW5lZC1z
Y2FsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvdmlld3BvcnQvaW9zL3Vz
ZXItc2NhbGFibGUtc2NhbGVzLWZvci1rZXlib2FyZC1mb2N1cy13aXRoLW5vLWF1dGhvci1kZWZp
bmVkLXNjYWxlLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA1LTE5ICBCcmlhbiBCdXJnICA8YmJ1cmdA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVzZSBhIGNvbnNpc3RlbnQgcHJl
Zml4IGZvciBpbmplY3RlZCBzY3JpcHRzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0
L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1cy13aXRo
LWF1dGhvci1kZWZpbmVkLXNjYWxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZvci1r
ZXlib2FyZC1mb2N1cy13aXRoLWF1dGhvci1kZWZpbmVkLXNjYWxlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUt
ZG9lcy1ub3Qtc2NhbGUtZm9yLWtleWJvYXJkLWZvY3VzLXdpdGgtYXV0aG9yLWRlZmluZWQtc2Nh
bGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVz
dCBoYXMgdG8gcnVuIGluIGlPUyBXZWJLaXRUZXN0UnVubmVyLgorCisKK1RoaXMgdGVzdHMgdGhh
dCBldmVuIHRob3VnaCBmb3JjZSB1c2VyIHNjYWxhYmxlID0gdHJ1ZSwgd2Ugd29uJ3Qgc2NhbGUg
aWYgYSB0ZXh0IGZpZWxkIGdldHMgZm9jdXMgYnkgZGVmYXVsdC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK01heGltdW0gem9vbSBzY2FsZSB3YXM6IDEKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZvci1rZXlib2Fy
ZC1mb2N1cy13aXRoLWF1dGhvci1kZWZpbmVkLXNjYWxlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1m
b3Ita2V5Ym9hcmQtZm9jdXMtd2l0aC1hdXRob3ItZGVmaW5lZC1zY2FsZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1kb2Vz
LW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMtd2l0aC1hdXRob3ItZGVmaW5lZC1zY2FsZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCwgbWF4aW11bS1zY2FsZT0xIj4KKzxzY3JpcHQgaWQ9InVpLXNjcmlwdCIgdHlwZT0i
dGV4dC9wbGFpbiI+CisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgIHVpQ29udHJvbGxlci51aVNj
cmlwdENvbXBsZXRlKHVpQ29udHJvbGxlci56b29tU2NhbGUpOworICAgIH0pKCk7Cis8L3Njcmlw
dD48L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8cCBpZD0icmVzdWx0Ij5U
aGlzIHRlc3QgaGFzIHRvIHJ1biBpbiBpT1MgV2ViS2l0VGVzdFJ1bm5lci48L3A+CisKKzxpbnB1
dCB0eXBlPSJ0ZXh0IiBpZD0idGV4dGZpZWxkIj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IGV2ZW4gdGhvdWdoIGZvcmNlIHVzZXIgc2NhbGFibGUgPSB0cnVlLCB3
ZSB3b24ndCBzY2FsZSBpZiBhIHRleHQgZmllbGQgZ2V0cyBmb2N1cyBieSBkZWZhdWx0LiIpOwor
CisgICAgd2luZG93LmludGVybmFscy5zZXRWaWV3cG9ydEZvcmNlQWx3YXlzVXNlclNjYWxhYmxl
KHRydWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAg
eworICAgICAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgeworICAgICAgICAgICAgdmFy
IHVpU2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VpLXNjcmlwdCcpLnRleHQ7Cisg
ICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFZpZXdwb3J0Rm9yY2VBbHdheXNVc2VyU2Nh
bGFibGUoZmFsc2UpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRm
aWVsZCIpLmZvY3VzKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd1aS1zY3JpcHQnKS50ZXh0LCBmdW5jdGlvbihyZXN1bHQpIHsK
KyAgICAgICAgICAgICAgICBkZWJ1ZygiTWF4aW11bSB6b29tIHNjYWxlIHdhczogIiArIHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLXNjYWxlcy1mb3Ita2V5
Ym9hcmQtZm9jdXMtd2l0aC1uby1hdXRob3ItZGVmaW5lZC1zY2FsZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1z
Y2FsZXMtZm9yLWtleWJvYXJkLWZvY3VzLXdpdGgtbm8tYXV0aG9yLWRlZmluZWQtc2NhbGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3Mv
dXNlci1zY2FsYWJsZS1zY2FsZXMtZm9yLWtleWJvYXJkLWZvY3VzLXdpdGgtbm8tYXV0aG9yLWRl
ZmluZWQtc2NhbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAK
K1RoaXMgdGVzdCBoYXMgdG8gcnVuIGluIGlPUyBXZWJLaXRUZXN0UnVubmVyLgorCisKK1RoaXMg
dGVzdHMgdGhhdCB3aGVuIHRoZSBhdXRob3IgZG9lcyBub3QgZGVmaW5lIGEgc2NhbGUgb3Igd2lk
dGgsIHRoYXQgem9vbWluZyBpbiBvbiBmb2N1c2VkIG5vZGVzIGNoYW5nZXMgdGhlIHNjYWxlLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworTWF4aW11bSB6b29tIHNjYWxlIHdhczog
MC4zMjY1MzA2MTIyNDQ4OTc5MworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXIt
c2NhbGFibGUtc2NhbGVzLWZvci1rZXlib2FyZC1mb2N1cy13aXRoLW5vLWF1dGhvci1kZWZpbmVk
LXNjYWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3Mv
dXNlci1zY2FsYWJsZS1zY2FsZXMtZm9yLWtleWJvYXJkLWZvY3VzLXdpdGgtbm8tYXV0aG9yLWRl
ZmluZWQtc2NhbGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvdmlld3Bv
cnQvaW9zL3VzZXItc2NhbGFibGUtc2NhbGVzLWZvci1rZXlib2FyZC1mb2N1cy13aXRoLW5vLWF1
dGhvci1kZWZpbmVkLXNjYWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCI+
Cis8c2NyaXB0IGlkPSJ1aS1zY3JpcHQiIHR5cGU9InRleHQvcGxhaW4iPgorICAgIChmdW5jdGlv
bigpIHsKKyAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSh1aUNvbnRyb2xsZXIu
em9vbVNjYWxlKTsKKyAgICB9KSgpOworPC9zY3JpcHQ+PC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKTsiPgorPHAgaWQ9InJlc3VsdCI+VGhpcyB0ZXN0IGhhcyB0byBydW4gaW4gaU9T
IFdlYktpdFRlc3RSdW5uZXIuPC9wPgorCis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRleHRmaWVs
ZCI+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB3aGVuIHRoZSBh
dXRob3IgZG9lcyBub3QgZGVmaW5lIGEgc2NhbGUgb3Igd2lkdGgsIHRoYXQgem9vbWluZyBpbiBv
biBmb2N1c2VkIG5vZGVzIGNoYW5nZXMgdGhlIHNjYWxlLiIpOworCisgICAgd2luZG93LmludGVy
bmFscy5zZXRWaWV3cG9ydEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKHRydWUpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgICBpZiAodGVz
dFJ1bm5lci5ydW5VSVNjcmlwdCkgeworICAgICAgICAgICAgdmFyIHVpU2NyaXB0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3VpLXNjcmlwdCcpLnRleHQ7CisgICAgICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldFZpZXdwb3J0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoZmFsc2UpOworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRmaWVsZCIpLmZvY3VzKCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd1aS1zY3JpcHQnKS50ZXh0LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiTWF4aW11bSB6b29tIHNjYWxlIHdhczogIiArIHJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279552</attachid>
            <date>2016-05-22 13:51:47 -0700</date>
            <delta_ts>2016-05-23 10:20:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>11560</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA1LTIyICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGlPUzogd2hlbiBi
cmluZ2luZyBmb2N1cyB0byBhIHRleHQgZmllbGQgd2UgbWF5IHpvb20gdGhlIHBhZ2UgZXZlbiBp
ZiBhdXRob3Igd2FudGVkIG1heCBzY2FsZSA9IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIElmIHRoZSBhdXRob3IgcmVxdWVzdHMgc2NhbGluZyBub3Qg
dG8gYmUgZW5hYmxlZCwgd2Ugc2hvdWxkIG5vdCBzY2FsZSBpbiB3aGVuIGtleWJvYXJkIGZvY3Vz
IG1vdmVzIHRvIGEgdGV4dCBmaWVsZC4KKyAgICAgICAgU2NhbGluZyBzaG91bGQgb25seSBoYXBw
ZW4gd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBhIGdlc3R1cmUgdG8gZG8gc28gaW4gdGhpcyBjYXNl
LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMt
bm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1cy13aXRoLWF1dGhvci1kZWZpbmVkLXNjYWxlLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtc2NhbGVz
LWZvci1rZXlib2FyZC1mb2N1cy13aXRoLW5vLWF1dGhvci1kZWZpbmVkLXNjYWxlLmh0bWwKKwor
ICAgICAgICAqIHBhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpWaWV3cG9ydENvbmZpZ3VyYXRpb246Om1heGltdW1TY2FsZSk6CisKIDIwMTYtMDUtMjIgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdG8gQysrMTQu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgJKHJl
dmlzaW9uIDIwMTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcgQEAKICAgICBXRUJDT1JFX0VYUE9S
VCBkb3VibGUgbWluaW11bVNjYWxlKCkgY29uc3Q7CiAgICAgZG91YmxlIG1heGltdW1TY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGUgPyBmb3JjZUFsd2F5c1Vz
ZXJTY2FsYWJsZU1heGltdW1TY2FsZSA6IG1fY29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGU7IH0K
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93c1VzZXJTY2FsaW5nKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBhbGxvd3NVc2VyU2NhbGluZ0lnbm9yaW5nRm9yY2VBbHdheXNT
Y2FsaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd3NTaHJpbmtUb0ZpdCgpIGNvbnN0OwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhcmFtZXRlcnMgd2VicGFnZVBhcmFtZXRlcnMoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA1LTIyICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGlPUzogd2hlbiBi
cmluZ2luZyBmb2N1cyB0byBhIHRleHQgZmllbGQgd2UgbWF5IHpvb20gdGhlIHBhZ2UgZXZlbiBp
ZiBhdXRob3Igd2FudGVkIG1heCBzY2FsZSA9IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb246OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9kaXNwbGF5Rm9ybU5vZGVJbnB1dFZpZXddKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFz
c2lzdGVkTm9kZUluZm9ybWF0aW9uKToKKwogMjAxNi0wNS0yMiAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSB0byBDKysxNC4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmNwcAkocmV2aXNp
b24gMjAxMjU1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Fzc2lzdGVkTm9kZUluZm9ybWF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQAogICAgIGVuY29kZXIgPDwg
aXNNdWx0aVNlbGVjdDsKICAgICBlbmNvZGVyIDw8IGlzUmVhZE9ubHk7CiAgICAgZW5jb2RlciA8
PCBhbGxvd3NVc2VyU2NhbGluZzsKKyAgICBlbmNvZGVyIDw8IGFsbG93c1VzZXJTY2FsaW5nSWdu
b3JpbmdGb3JjZUFsd2F5c1NjYWxpbmc7CiAgICAgZW5jb2RlciA8PCBpbnNpZGVGaXhlZFBvc2l0
aW9uOwogICAgIGVuY29kZXIgPDwgdmFsdWU7CiAgICAgZW5jb2RlciA8PCB2YWx1ZUFzTnVtYmVy
OwpAQCAtMTM5LDYgKzE0MCw5IEBACiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5h
bGxvd3NVc2VyU2NhbGluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hbGxvd3NVc2VyU2NhbGluZ0lnbm9yaW5nRm9yY2VBbHdh
eXNTY2FsaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuaW5zaWRlRml4ZWRQb3NpdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bi5oCShyZXZpc2lvbiAyMDEyNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXNzaXN0ZWRO
b2RlSW5mb3JtYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksNyBAQAogICAgIGJv
b2wgaXNNdWx0aVNlbGVjdCB7IGZhbHNlIH07CiAgICAgYm9vbCBpc1JlYWRPbmx5IHtmYWxzZSB9
OwogICAgIGJvb2wgYWxsb3dzVXNlclNjYWxpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgYWxsb3dz
VXNlclNjYWxpbmdJZ25vcmluZ0ZvcmNlQWx3YXlzU2NhbGluZyB7IGZhbHNlIH07CiAgICAgYm9v
bCBpbnNpZGVGaXhlZFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBXZWJBdXRvY2FwaXRhbGl6ZVR5
cGUgYXV0b2NhcGl0YWxpemVUeXBlIHsgV2ViQXV0b2NhcGl0YWxpemVUeXBlRGVmYXVsdCB9Owog
ICAgIElucHV0VHlwZSBlbGVtZW50VHlwZSB7IElucHV0VHlwZTo6Tm9uZSB9OwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDIwMTI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ1
LDEyICsxMDQ1LDE0IEBACiAKIC0gKHZvaWQpX2Rpc3BsYXlGb3JtTm9kZUlucHV0Vmlldwogewor
ICAgIC8vIEluIGNhc2UgdXNlciBzY2FsaW5nIGlzIGZvcmNlIGVuYWJsZWQsIGRvIG5vdCB1c2Ug
dGhhdCBzY2FsaW5nIHdoZW4gem9vbWluZyBpbiB3aXRoIGFuIGlucHV0IGZpZWxkLgorICAgIC8v
IFpvb21pbmcgYWJvdmUgdGhlIHBhZ2UncyBkZWZhdWx0IHNjYWxlIGZhY3RvciBzaG91bGQgb25s
eSBoYXBwZW4gd2hlbiB0aGUgdXNlciBwZXJmb3JtcyBpdC4KICAgICBbc2VsZiBfem9vbVRvRm9j
dXNSZWN0Ol9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5lbGVtZW50UmVjdAogICAgICAgICAgICAg
IHNlbGVjdGlvblJlY3Q6IF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3VzID8gSW50UmVjdCgp
IDogX2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLnNlbGVjdGlvblJlY3QKICAgICAgICAgICAgICAg
ICAgIGZvbnRTaXplOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5ub2RlRm9udFNpemUKICAgICAg
ICAgICAgICAgbWluaW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5taW5pbXVtU2Nh
bGVGYWN0b3IKICAgICAgICAgICAgICAgbWF4aW11bVNjYWxlOl9hc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbi5tYXhpbXVtU2NhbGVGYWN0b3IKLSAgICAgICAgICAgICAgYWxsb3dTY2FsaW5nOihfYXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmcgJiYgIVVJQ3VycmVudFVzZXJJ
bnRlcmZhY2VJZGlvbUlzUGFkKCkpCisgICAgICAgICAgICAgIGFsbG93U2NhbGluZzooX2Fzc2lz
dGVkTm9kZUluZm9ybWF0aW9uLmFsbG93c1VzZXJTY2FsaW5nSWdub3JpbmdGb3JjZUFsd2F5c1Nj
YWxpbmcgJiYgIVVJQ3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpCiAgICAgICAgICAg
ICAgICBmb3JjZVNjcm9sbDpbc2VsZiByZXF1aXJlc0FjY2Vzc29yeVZpZXddXTsKICAgICBfZGlk
QWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA9IE5POwogICAgIFtzZWxmIF9lbnN1cmVGb3JtQWNj
ZXNzb3J5Vmlld107CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyMDEyNTUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI1NDcsNiArMjU0Nyw3IEBACiAgICAgaW5mb3JtYXRpb24ubWluaW11bVNjYWxlRmFjdG9y
ID0gbWluaW11bVBhZ2VTY2FsZUZhY3RvcigpOwogICAgIGluZm9ybWF0aW9uLm1heGltdW1TY2Fs
ZUZhY3RvciA9IG1heGltdW1QYWdlU2NhbGVGYWN0b3IoKTsKICAgICBpbmZvcm1hdGlvbi5hbGxv
d3NVc2VyU2NhbGluZyA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5n
KCk7CisgICAgaW5mb3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmdJZ25vcmluZ0ZvcmNlQWx3YXlz
U2NhbGluZyA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nSWdub3Jp
bmdGb3JjZUFsd2F5c1NjYWxpbmcoKTsKICAgICBpbmZvcm1hdGlvbi5oYXNOZXh0Tm9kZSA9IGhh
c0Fzc2lzdGFibGVFbGVtZW50KG1fYXNzaXN0ZWROb2RlLmdldCgpLCAqbV9wYWdlLCB0cnVlKTsK
ICAgICBpbmZvcm1hdGlvbi5oYXNQcmV2aW91c05vZGUgPSBoYXNBc3Npc3RhYmxlRWxlbWVudCht
X2Fzc2lzdGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwgZmFsc2UpOwogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNjYWxlLWZvci1rZXli
b2FyZC1mb2N1cy13aXRoLWF1dGhvci1kZWZpbmVkLXNjYWxlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMt
bm90LXNjYWxlLWZvci1rZXlib2FyZC1mb2N1cy13aXRoLWF1dGhvci1kZWZpbmVkLXNjYWxlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvaW9z
L3VzZXItc2NhbGFibGUtZG9lcy1ub3Qtc2NhbGUtZm9yLWtleWJvYXJkLWZvY3VzLXdpdGgtYXV0
aG9yLWRlZmluZWQtc2NhbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTMgQEAKK1RoaXMgdGVzdCBoYXMgdG8gcnVuIGluIGlPUyBXZWJLaXRUZXN0UnVubmVyLgorCisK
K1RoaXMgdGVzdHMgdGhhdCBldmVuIHRob3VnaCBmb3JjZSB1c2VyIHNjYWxhYmxlID0gdHJ1ZSwg
d2Ugd29uJ3Qgc2NhbGUgaWYgYSB0ZXh0IGZpZWxkIGdldHMgZm9jdXMgYnkgZGVmYXVsdC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK01heGltdW0gem9vbSBzY2FsZSB3YXM6IDEK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxlLWRvZXMtbm90LXNj
YWxlLWZvci1rZXlib2FyZC1mb2N1cy13aXRoLWF1dGhvci1kZWZpbmVkLXNjYWxlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1k
b2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMtd2l0aC1hdXRob3ItZGVmaW5lZC1zY2Fs
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3MvdXNl
ci1zY2FsYWJsZS1kb2VzLW5vdC1zY2FsZS1mb3Ita2V5Ym9hcmQtZm9jdXMtd2l0aC1hdXRob3It
ZGVmaW5lZC1zY2FsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IndpZHRoPWRldmljZS13aWR0aCwgbWF4aW11bS1zY2FsZT0xIj4KKzxzY3JpcHQgaWQ9InVp
LXNjcmlwdCIgdHlwZT0idGV4dC9wbGFpbiI+CisgICAgKGZ1bmN0aW9uKCkgeworICAgICAgIHVp
Q29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKHVpQ29udHJvbGxlci56b29tU2NhbGUpOworICAg
IH0pKCk7Cis8L3NjcmlwdD48L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8
cCBpZD0icmVzdWx0Ij5UaGlzIHRlc3QgaGFzIHRvIHJ1biBpbiBpT1MgV2ViS2l0VGVzdFJ1bm5l
ci48L3A+CisKKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGV4dGZpZWxkIj4KKworPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyAg
ICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGV2ZW4gdGhvdWdoIGZvcmNlIHVzZXIgc2Nh
bGFibGUgPSB0cnVlLCB3ZSB3b24ndCBzY2FsZSBpZiBhIHRleHQgZmllbGQgZ2V0cyBmb2N1cyBi
eSBkZWZhdWx0LiIpOworCisgICAgd2luZG93LmludGVybmFscy5zZXRWaWV3cG9ydEZvcmNlQWx3
YXlzVXNlclNjYWxhYmxlKHRydWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgfQorCisgICAgZnVuY3Rpb24g
cnVuVGVzdCgpCisgICAgeworICAgICAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgewor
ICAgICAgICAgICAgdmFyIHVpU2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VpLXNj
cmlwdCcpLnRleHQ7CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFZpZXdwb3J0Rm9y
Y2VBbHdheXNVc2VyU2NhbGFibGUoZmFsc2UpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRleHRmaWVsZCIpLmZvY3VzKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1aS1zY3JpcHQnKS50ZXh0LCBmdW5j
dGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiTWF4aW11bSB6b29tIHNjYWxl
IHdhczogIiArIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3ZpZXdwb3J0L2lvcy91c2VyLXNjYWxhYmxl
LXNjYWxlcy1mb3Ita2V5Ym9hcmQtZm9jdXMtd2l0aC1uby1hdXRob3ItZGVmaW5lZC1zY2FsZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC9pb3Mv
dXNlci1zY2FsYWJsZS1zY2FsZXMtZm9yLWtleWJvYXJkLWZvY3VzLXdpdGgtbm8tYXV0aG9yLWRl
ZmluZWQtc2NhbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1zY2FsZXMtZm9yLWtleWJvYXJkLWZvY3VzLXdp
dGgtbm8tYXV0aG9yLWRlZmluZWQtc2NhbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBoYXMgdG8gcnVuIGluIGlPUyBXZWJLaXRUZXN0UnVu
bmVyLgorCisKK1RoaXMgdGVzdHMgdGhhdCB3aGVuIHRoZSBhdXRob3IgZG9lcyBub3QgZGVmaW5l
IGEgc2NhbGUgb3Igd2lkdGgsIHRoYXQgem9vbWluZyBpbiBvbiBmb2N1c2VkIG5vZGVzIGNoYW5n
ZXMgdGhlIHNjYWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworTWF4aW11bSB6
b29tIHNjYWxlIHdhczogMC4zMjY1MzA2MTIyNDQ4OTc5MworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvdmll
d3BvcnQvaW9zL3VzZXItc2NhbGFibGUtc2NhbGVzLWZvci1rZXlib2FyZC1mb2N1cy13aXRoLW5v
LWF1dGhvci1kZWZpbmVkLXNjYWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC92aWV3cG9ydC9pb3MvdXNlci1zY2FsYWJsZS1zY2FsZXMtZm9yLWtleWJvYXJkLWZvY3VzLXdp
dGgtbm8tYXV0aG9yLWRlZmluZWQtc2NhbGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3Qvdmlld3BvcnQvaW9zL3VzZXItc2NhbGFibGUtc2NhbGVzLWZvci1rZXlib2FyZC1m
b2N1cy13aXRoLW5vLWF1dGhvci1kZWZpbmVkLXNjYWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBu
YW1lPSJ2aWV3cG9ydCI+Cis8c2NyaXB0IGlkPSJ1aS1zY3JpcHQiIHR5cGU9InRleHQvcGxhaW4i
PgorICAgIChmdW5jdGlvbigpIHsKKyAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0
ZSh1aUNvbnRyb2xsZXIuem9vbVNjYWxlKTsKKyAgICB9KSgpOworPC9zY3JpcHQ+PC9oZWFkPgor
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPHAgaWQ9InJlc3VsdCI+VGhpcyB0ZXN0IGhh
cyB0byBydW4gaW4gaU9TIFdlYktpdFRlc3RSdW5uZXIuPC9wPgorCis8aW5wdXQgdHlwZT0idGV4
dCIgaWQ9InRleHRmaWVsZCI+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
dGhhdCB3aGVuIHRoZSBhdXRob3IgZG9lcyBub3QgZGVmaW5lIGEgc2NhbGUgb3Igd2lkdGgsIHRo
YXQgem9vbWluZyBpbiBvbiBmb2N1c2VkIG5vZGVzIGNoYW5nZXMgdGhlIHNjYWxlLiIpOworCisg
ICAgd2luZG93LmludGVybmFscy5zZXRWaWV3cG9ydEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKHRy
dWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgewor
ICAgICAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgeworICAgICAgICAgICAgdmFyIHVp
U2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VpLXNjcmlwdCcpLnRleHQ7CisgICAg
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFZpZXdwb3J0Rm9yY2VBbHdheXNVc2VyU2NhbGFi
bGUoZmFsc2UpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRmaWVs
ZCIpLmZvY3VzKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd1aS1zY3JpcHQnKS50ZXh0LCBmdW5jdGlvbihyZXN1bHQpIHsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiTWF4aW11bSB6b29tIHNjYWxlIHdhczogIiArIHJlc3VsdCk7
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="303603"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>