<?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>106535</bug_id>
          <alias>computedstyle-pseudo</alias>
          <creation_ts>2013-01-10 00:25:13 -0800</creation_ts>
          <short_desc>getComputedStyle() doesn&apos;t report intermediate values during a transition of a pseudo element</short_desc>
          <delta_ts>2013-02-08 00:35:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://rodneyrehm.de/t/generated-content-computedStyle.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rodney Rehm">mail</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>roger_fong</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>804123</commentid>
    <comment_count>0</comment_count>
    <who name="Rodney Rehm">mail</who>
    <bug_when>2013-01-10 00:25:13 -0800</bug_when>
    <thetext>The computedStyle() of a property is supposed to change according to the transition.  While computedStyle() of a regular element behaves as expected (returning intermediate values), it fails on pseudo elements.


Steps to Reproduce:

1. define a CSS transition of any property of :before
2. bind a requestAnimationFrame loop to extract the computedStyle of that property on :before and log to console
3. start the transition


Actual Result:

Output looks like &quot;1px, 100px&quot;


Expected Result:

Output looks like &quot;1px, 3px, 10px, …, 100px&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804197</commentid>
    <comment_count>1</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-10 02:29:30 -0800</bug_when>
    <thetext>This is a really old FIXME:

RenderStyle* Element::computedStyle(PseudoId pseudoElementSpecifier)
{
    // FIXME: Find and use the renderer from the pseudo element instead of the actual element so that the &apos;length&apos;
    // properties, which are only known by the renderer because it did the layout, will be correct and so that the
    // values returned for the &quot;:selection&quot; pseudo-element will be correct.

We need to get the pseudoElement(BEFORE or AFTER) and use their renderStyle() instead.

We also need to fix CSSComputedStyleDeclaration::getPropertyCSSValue as it seems the logic for pseudo element styles is wrong since we consult the cached pseudo style from the parent element in the composited case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805653</commentid>
    <comment_count>2</comment_count>
      <attachid>182424</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-11 15:01:52 -0800</bug_when>
    <thetext>Created attachment 182424
Patch

Still needs a non-manual test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805667</commentid>
    <comment_count>3</comment_count>
      <attachid>182424</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-11 15:18:14 -0800</bug_when>
    <thetext>Comment on attachment 182424
Patch

Attachment 182424 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15831039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805668</commentid>
    <comment_count>4</comment_count>
      <attachid>182424</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-11 15:19:02 -0800</bug_when>
    <thetext>Comment on attachment 182424
Patch

Attachment 182424 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15828040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805684</commentid>
    <comment_count>5</comment_count>
      <attachid>182424</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-11 15:34:37 -0800</bug_when>
    <thetext>Comment on attachment 182424
Patch

Attachment 182424 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15830064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805726</commentid>
    <comment_count>6</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-11 16:15:01 -0800</bug_when>
    <thetext>Woops, botched a variable rename right before uploading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805735</commentid>
    <comment_count>7</comment_count>
      <attachid>182424</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 16:22:34 -0800</bug_when>
    <thetext>Comment on attachment 182424
Patch

Attachment 182424 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15813351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805737</commentid>
    <comment_count>8</comment_count>
      <attachid>182424</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-11 16:26:49 -0800</bug_when>
    <thetext>Comment on attachment 182424
Patch

Attachment 182424 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15833063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805738</commentid>
    <comment_count>9</comment_count>
      <attachid>182424</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-11 16:28:09 -0800</bug_when>
    <thetext>Comment on attachment 182424
Patch

Attachment 182424 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15820098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806063</commentid>
    <comment_count>10</comment_count>
      <attachid>182424</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-13 20:58:01 -0800</bug_when>
    <thetext>Comment on attachment 182424
Patch

Attachment 182424 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15860329</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807818</commentid>
    <comment_count>11</comment_count>
      <attachid>182873</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-15 16:42:28 -0800</bug_when>
    <thetext>Created attachment 182873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809981</commentid>
    <comment_count>12</comment_count>
      <attachid>182873</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-01-17 17:09:40 -0800</bug_when>
    <thetext>Comment on attachment 182873
Patch

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

Fine at a high-level. Just a few nits.

Mainly R- because I&apos;m hoping we can tighten up the tests.

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1509
&gt; +    Node* styledNode = this-&gt;styledNode();

Nit: Can we make this styledElement? You can&apos;t get computed style on a non-Element anymore with Antti&apos;s recent refactorings.

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1513
&gt; +    Document* document = styledNode-&gt;document();

Do you need to move this? pseudo elements are necessarily in the same document as their node, no?

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1550
&gt; +        style = m_node-&gt;computedStyle(m_pseudoElementSpecifier);

May as well use styledNode and avoid the need for the comment?

&gt; LayoutTests/fast/css-generated-content/pseudo-animation.html:86
&gt; +        shouldBeCloseTo(&apos;div.offsetWidth&apos;, 20, 1);

Why shouldBeCloseTo instead of shouldBe? Seems like we should be able to modify the test so that we can get a hard value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810093</commentid>
    <comment_count>13</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-17 18:54:10 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 182873 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182873&amp;action=review
&gt; 
&gt; Fine at a high-level. Just a few nits.
&gt; 
&gt; Mainly R- because I&apos;m hoping we can tighten up the tests.
&gt; 
&gt; &gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1509
&gt; &gt; +    Node* styledNode = this-&gt;styledNode();
&gt; 
&gt; Nit: Can we make this styledElement? You can&apos;t get computed style on a non-Element anymore with Antti&apos;s recent refactorings.

Unfortunately EditingStyle creates these for text nodes :( I tried that at first and found out we can&apos;t do that without a bunch of refactoring. I think we may still want to do that, but I&apos;d like to do it in a separate step.

&gt; 
&gt; &gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1513
&gt; &gt; +    Document* document = styledNode-&gt;document();
&gt; 
&gt; Do you need to move this? pseudo elements are necessarily in the same document as their node, no?

Yeah, I was just trying to clean up the code.

&gt; 
&gt; &gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1550
&gt; &gt; +        style = m_node-&gt;computedStyle(m_pseudoElementSpecifier);
&gt; 
&gt; May as well use styledNode and avoid the need for the comment?

The problem is that you end up doing essentially beforePseudo-&gt;computedStyle(&quot;:before&quot;), which I think works because Element::computedStyle falls back to the element&apos;s own style if there&apos;s no pseudo style available, but seemed a bit weird. I&apos;ll change it to be consistent.

&gt; 
&gt; &gt; LayoutTests/fast/css-generated-content/pseudo-animation.html:86
&gt; &gt; +        shouldBeCloseTo(&apos;div.offsetWidth&apos;, 20, 1);
&gt; 
&gt; Why shouldBeCloseTo instead of shouldBe? Seems like we should be able to modify the test so that we can get a hard value.

I had trouble with subpixel layout where my test fails in ports that don&apos;t have it turned on yet in Bug 92591, I can see about trying to pick values that snap but I&apos;m not sure how to do that. Do you have suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826798</commentid>
    <comment_count>14</comment_count>
      <attachid>186933</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-06 15:27:46 -0800</bug_when>
    <thetext>Created attachment 186933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826799</commentid>
    <comment_count>15</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-06 15:29:32 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 182873 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182873&amp;action=review
&gt; &gt; 
&gt; ...
&gt; 
&gt; I had trouble with subpixel layout where my test fails in ports that don&apos;t have it turned on yet in Bug 92591, I can see about trying to pick values that snap but I&apos;m not sure how to do that. Do you have suggestions?

I fixed the other comments, but I left the test the way it is for now. I&apos;ll fix that in a follow up patch, for now I just added a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826857</commentid>
    <comment_count>16</comment_count>
      <attachid>186933</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-02-06 16:21:28 -0800</bug_when>
    <thetext>Comment on attachment 186933
Patch

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

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1513
&gt; +Node* CSSComputedStyleDeclaration::styledNode() const

Can you add a FIXME to make this styledElement with a brief explanation that we create EditingStyles for TextNodes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828009</commentid>
    <comment_count>17</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-07 16:41:20 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 186933 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186933&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1513
&gt; &gt; +Node* CSSComputedStyleDeclaration::styledNode() const
&gt; 
&gt; Can you add a FIXME to make this styledElement with a brief explanation that we create EditingStyles for TextNodes?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828010</commentid>
    <comment_count>18</comment_count>
      <attachid>187197</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-07 16:41:24 -0800</bug_when>
    <thetext>Created attachment 187197
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828057</commentid>
    <comment_count>19</comment_count>
      <attachid>187197</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 17:42:06 -0800</bug_when>
    <thetext>Comment on attachment 187197
Patch for landing

Clearing flags on attachment: 187197

Committed r142215: &lt;http://trac.webkit.org/changeset/142215&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828058</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 17:42:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828094</commentid>
    <comment_count>21</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-02-07 18:48:30 -0800</bug_when>
    <thetext>This broke about 100 tests on Windows port.
http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r142215%20(32210)/results.html

Please fix or roll out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828098</commentid>
    <comment_count>22</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-07 19:00:32 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; This broke about 100 tests on Windows port.
&gt; http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r142215%20(32210)/results.html
&gt; 
&gt; Please fix or roll out

It seems very unlikely it was this patch. All those failures have to do with compositing and not getComputedStyle. It also doesn&apos;t make any sense that all the pills would be green and then it would fail. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828105</commentid>
    <comment_count>23</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-07 19:16:02 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; This broke about 100 tests on Windows port.
&gt; &gt; http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r142215%20(32210)/results.html
&gt; &gt; 
&gt; &gt; Please fix or roll out
&gt; 
&gt; It seems very unlikely it was this patch. All those failures have to do with compositing and not getComputedStyle. It also doesn&apos;t make any sense that all the pills would be green and then it would fail. :)

Also note that the failures go away in the next run:

http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r142217%20%2832211%29/results.html

http://build.webkit.org/builders/Apple%20Win%207%20Release%20%28Tests%29?numbuilds=100

This looks like a problem with the Windows bot, there&apos;s several other runs in the history that seem to fail hundreds where no patch makes sense and the next run is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828287</commentid>
    <comment_count>24</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-02-08 00:35:37 -0800</bug_when>
    <thetext>Ah yes, my b, didn&apos;t really look at the commit, just which revision the tests went crazy on.
I&apos;ll have to look into that bot hiccup at some point.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182424</attachid>
            <date>2013-01-11 15:01:52 -0800</date>
            <delta_ts>2013-01-15 16:42:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106535-20130111145854.patch</filename>
            <type>text/plain</type>
            <size>18701</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGViY2ExZTI5MzAzMjhi
ZDE1NDgyYTVjMDdjZjY5NGE2YThhN2NkMy4uMzAwNTU3MTY0YWZkYWQwYzk4NmM3NjYxMjc3Mjdl
ZDAwMTcwMThlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTExICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGNvbXB1dGVkU3R5
bGUoKSBkb2Vzbid0IHJlcG9ydCBpbnRlcm1lZGlhdGUgdmFsdWVzIGR1cmluZyBhIHRyYW5zaXRp
b24gb2YgYSBwc2V1ZG8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA2NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRWxlbWVudDo6Y29tcHV0ZWRTdHlsZSBhbmQgQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlCisgICAgICAgIHNob3VsZCB1c2UgdGhl
IFBzZXVkb0VsZW1lbnQgYW5kIGl0J3MgcmVuZGVyZXIgaWYgdGhleSBleGlzdCBzbyB0aGF0Cisg
ICAgICAgIHF1ZXJ5aW5nIHRoZSBjb21wdXRlZCBzdHlsZSB3aGlsZSBhbiBhbmltYXRpb24gaXMg
cnVubmluZyByZXR1cm5zCisgICAgICAgIHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0Jy
ZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JHcmlkVHJhY2tMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c3R5bGVkTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoK
KyAgICAgICAgKENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29tcHV0ZWRTdHlsZSk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpwc2V1ZG9FbGVtZW50KToKKwogMjAxMy0wMS0xMCAgWGlhbnpodSBXYW5nICA8
d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjEyOTk0NCk6
IEhlYXAtdXNlLWFmdGVyLWZyZWUgaW4gV2ViQ29yZTo6Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCmluZGV4IGQ1Nzc3NzIzMTNlYTZiYTE4NjY5ODEwMGQwMjkxYTM0NjM2ZjlhNDku
LjFjOTg2ZWE1Y2NjYTQ3Yjc4MDcxMjU5MDAyNWIxMjQ3MzNhNTYyMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC01MSw2
ICs1MSw3IEBACiAjaW5jbHVkZSAiRm9udFZhbHVlLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFpci5oIgorI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQu
aCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAi
UmVuZGVyU3R5bGUuaCIKQEAgLTEwMDAsNyArMTAwMSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVy
T2JqCiB9CiAjZW5kaWYKIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3Jp
ZFRyYWNrQnJlYWR0aChjb25zdCBMZW5ndGgmIHRyYWNrQnJlYWR0aCwgY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJWaWV3ICpyZW5kZXJWaWV3KQorc3RhdGljIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChjb25zdCBMZW5ndGgmIHRyYWNrQnJlYWR0
aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewog
ICAgIGlmICh0cmFja0JyZWFkdGguaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKQEAgLTEwMzIsNyArMTAz
Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0dyb3Vw
KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7
CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3Qo
Y29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVzLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUsIFJlbmRlclZpZXcgKnJlbmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYg
dHJhY2tTaXplcywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3KQogewogICAgIC8vIEhhbmRsZSB0aGUgJ25vbmUnIGNhc2UgaGVyZS4KICAgICBpZiAoIXRy
YWNrU2l6ZXMuc2l6ZSgpKQpAQCAtMTQ5MiwxNCArMTQ5MywyNyBAQCBzdGF0aWMgYm9vbCBpc0xh
eW91dERlcGVuZGVudFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICB9CiB9
CiAKK05vZGUqIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c3R5bGVkTm9kZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX25vZGUpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChtX25vZGUt
PmlzRWxlbWVudE5vZGUoKSAmJiAobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09IEJFRk9SRSB8
fCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gQUZURVIpKSB7CisgICAgICAgIGlmIChQc2V1
ZG9FbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG1fbm9kZS5nZXQoKSktPnBzZXVkb0VsZW1l
bnQobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50
OworICAgIH0KKyAgICByZXR1cm4gbV9ub2RlLmdldCgpOworfQorCiBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0IHVwZGF0ZUxheW91dCkgY29uc3QK
IHsKLSAgICBOb2RlKiBub2RlID0gbV9ub2RlLmdldCgpOwotICAgIGlmICghbm9kZSkKKyAgICBO
b2RlKiBzdHlsZWROb2RlID0gdGhpcy0+c3R5bGVkTm9kZSgpOworICAgIGlmICghc3R5bGVkTm9k
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX25vZGUt
PmRvY3VtZW50KCk7CisKICAgICBpZiAodXBkYXRlTGF5b3V0KSB7Ci0gICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IG1fbm9kZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJ
WE1FOiBTb21lIG9mIHRoZXNlIGNhc2VzIGNvdWxkIGJlIG5hcnJvd2VkIGRvd24gb3Igb3B0aW1p
emVkIGJldHRlci4KICAgICAgICAgYm9vbCBmb3JjZUZ1bGxMYXlvdXQgPSBpc0xheW91dERlcGVu
ZGVudFByb3BlcnR5KHByb3BlcnR5SUQpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0luU2hhZG93
VHJlZSgpCkBAIC0xNTEwLDMyICsxNTI0LDMzIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAg
ICAgICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxjID0g
ZG9jdW1lbnQtPmhhc1BlbmRpbmdGb3JjZWRTdHlsZVJlY2FsYygpOwotICAgICAgICAgICAgZm9y
IChOb2RlKiBuID0gbV9ub2RlLmdldCgpOyBuICYmICFuZWVkc1N0eWxlUmVjYWxjOyBuID0gbi0+
cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgZm9yIChOb2RlKiBuID0gc3R5bGVkTm9kZS5nZXQo
KTsgbiAmJiAhbmVlZHNTdHlsZVJlY2FsYzsgbiA9IG4tPnBhcmVudE5vZGUoKSkKICAgICAgICAg
ICAgICAgICBuZWVkc1N0eWxlUmVjYWxjID0gbi0+bmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAg
ICAgICAgaWYgKG5lZWRzU3R5bGVSZWNhbGMpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBzdHlsZSBy
ZWNhbGMgY291bGQgaGF2ZSBjYXVzZWQgdGhlIHN0eWxlZCBub2RlIHRvIGJlIGRpc2NhcmRlZCBv
ciByZXBsYWNlZAorICAgICAgICAvLyBpZiBpdCB3YXMgYSBQc2V1ZG9FbGVtZW50IHNvIHdlIG5l
ZWQgdG8gdXBkYXRlIGl0LgorICAgICAgICBzdHlsZWROb2RlID0gdGhpcy0+c3R5bGVkTm9kZSgp
OwogICAgIH0KIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
OworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdHlsZWROb2RlLT5yZW5kZXJlcigpOwog
CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZTsKICAgICBpZiAocmVuZGVyZXIgJiYgcmVu
ZGVyZXItPmlzQ29tcG9zaXRlZCgpICYmIEFuaW1hdGlvbkNvbnRyb2xsZXI6OnN1cHBvcnRzQWNj
ZWxlcmF0ZWRBbmltYXRpb25PZlByb3BlcnR5KHByb3BlcnR5SUQpKSB7CiAgICAgICAgIEFuaW1h
dGlvblVwZGF0ZUJsb2NrIGFuaW1hdGlvblVwZGF0ZUJsb2NrKHJlbmRlcmVyLT5hbmltYXRpb24o
KSk7CiAgICAgICAgIHN0eWxlID0gcmVuZGVyZXItPmFuaW1hdGlvbigpLT5nZXRBbmltYXRlZFN0
eWxlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwotICAgICAgICBpZiAobV9wc2V1ZG9FbGVtZW50U3Bl
Y2lmaWVyKSB7CisgICAgICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgJiYgIXN0eWxl
ZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBj
YWNoZWQgcHNldWRvIHN0eWxlIHdpbGwgb25seSBleGlzdCBpZiB0aGUgYW5pbWF0aW9uIGhhcyBi
ZWVuIHJ1biBhdCBsZWFzdCBvbmNlLgogICAgICAgICAgICAgc3R5bGUgPSBzdHlsZS0+Z2V0Q2Fj
aGVkUHNldWRvU3R5bGUobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKICAgICAgICAgfQogICAg
IH0gZWxzZQotICAgICAgICBzdHlsZSA9IG5vZGUtPmNvbXB1dGVkU3R5bGUobV9wc2V1ZG9FbGVt
ZW50U3BlY2lmaWVyKTsKKyAgICAgICAgc3R5bGUgPSBtX25vZGUtPmNvbXB1dGVkU3R5bGUobV9w
c2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKIAogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiAobV9wc2V1ZG9FbGVtZW50
U3BlY2lmaWVyID09IEJFRk9SRSB8fCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gQUZURVIp
KQotICAgICAgICByZW5kZXJlciA9IHRvRWxlbWVudChub2RlKS0+cHNldWRvRWxlbWVudFJlbmRl
cmVyKG1fcHNldWRvRWxlbWVudFNwZWNpZmllcik7Ci0KICAgICBwcm9wZXJ0eUlEID0gQ1NTUHJv
cGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KHByb3BlcnR5SUQsIHN0eWxlLT5k
aXJlY3Rpb24oKSwgc3R5bGUtPndyaXRpbmdNb2RlKCkpOwogCiAgICAgc3dpdGNoIChwcm9wZXJ0
eUlEKSB7CkBAIC0xNzE2LDcgKzE3MzEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgogICAgICAgICAgICAgcmV0dXJu
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBzdHlsZS5n
ZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlCb3R0b20s
IG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBn
ZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUJvdHRvbSwgZG9j
dW1lbnQtPnJlbmRlclZpZXcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hB
bGlnbjoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHls
ZS0+Ym94QWxpZ24oKSk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKQEAg
LTE4MjAsOCArMTgzNSw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmFsaWduSXRlbXMoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnblNlbGY6CiAgICAgICAgICAgICBpZiAo
c3R5bGUtPmFsaWduU2VsZigpID09IEFsaWduQXV0bykgewotICAgICAgICAgICAgICAgIGlmICht
X25vZGUgJiYgbV9ub2RlLT5wYXJlbnROb2RlKCkgJiYgbV9ub2RlLT5wYXJlbnROb2RlKCktPmNv
bXB1dGVkU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKG1fbm9kZS0+cGFyZW50Tm9kZSgpLT5jb21wdXRlZFN0eWxlKCktPmFsaWdu
SXRlbXMoKSk7CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlZE5vZGUtPnBhcmVudE5vZGUoKSAm
JiBzdHlsZWROb2RlLT5wYXJlbnROb2RlKCktPmNvbXB1dGVkU3R5bGUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlZE5vZGUtPnBh
cmVudE5vZGUoKS0+Y29tcHV0ZWRTdHlsZSgpLT5hbGlnbkl0ZW1zKCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShBbGlnblN0cmV0Y2gpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KHN0eWxlLT5hbGlnblNlbGYoKSk7CkBAIC0xODUxLDcgKzE4NjYsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydAogICAgICAgICAgICAgY29tcHV0ZWRGb250LT52YXJpYW50ID0gZm9udFZhcmlh
bnRGcm9tU3R5bGUoc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT53ZWln
aHQgPSBmb250V2VpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+c2l6ZSA9IGZvbnRTaXplRnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKLSAgICAgICAg
ICAgIGNvbXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoc3R5bGUu
Z2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIGNv
bXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoc3R5bGUuZ2V0KCks
IGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT5mYW1p
bHkgPSBmb250RmFtaWx5RnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIHJldHVy
biBjb21wdXRlZEZvbnQucmVsZWFzZSgpOwogICAgICAgICB9CkBAIC0xODg0LDEwICsxODk5LDEw
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxl
YXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1
bW5zOiB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KHN0eWxlLT5n
cmlkQ29sdW1ucygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3
KCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrTGlzdChzdHlsZS0+Z3Jp
ZENvbHVtbnMoKSwgc3R5bGUuZ2V0KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czogewotICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrTGlzdChzdHlsZS0+Z3JpZFJvd3MoKSwgc3R5bGUu
Z2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3Qoc3R5bGUtPmdyaWRSb3dzKCksIHN0eWxlLmdldCgp
LCBkb2N1bWVudC0+cmVuZGVyVmlldygpKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRHcmlkQ29sdW1uOgpAQCAtMTk0MSw3ICsxOTU2LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVW
YWx1ZShzdHlsZS0+aW1hZ2VSZXNvbHV0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQ
WCk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlMZWZ0
LCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4g
Z2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlMZWZ0LCBkb2N1
bWVudC0+cmVuZGVyVmlldygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNp
bmc6CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vcm1hbCk7CkBAIC0xOTUxLDcgKzE5NjYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAog
ICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShzdHlsZS0+bGluZUNsYW1wKCkudmFsdWUoKSwgc3R5bGUtPmxpbmVDbGFtcCgpLmlz
UGVyY2VudGFnZSgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFIDogQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhl
aWdodDoKLSAgICAgICAgICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgp
LCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4g
bGluZUhlaWdodEZyb21TdHlsZShzdHlsZS5nZXQoKSwgZG9jdW1lbnQtPnJlbmRlclZpZXcoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZToKICAgICAgICAgICAgIGlm
IChzdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3R5bGUt
Pmxpc3RTdHlsZUltYWdlKCktPmNzc1ZhbHVlKCk7CkBAIC0xOTc5LDcgKzE5OTQsNyBAQCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgICAgIC8vIFJlbmRlckJveCBnaXZlcyBh
IG1hcmdpblJpZ2h0KCkgdGhhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcmlnaHQtZWRn
ZSBvZiB0aGUgY2hpbGQgYm94CiAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSByaWdodC1lZGdl
IG9mIHRoZSBjb250YWluaW5nIGJveCwgd2hlbiBkaXNwbGF5ID09IEJMT0NLLiBMZXQncyBjYWxj
dWxhdGUgdGhlIGFic29sdXRlCiAgICAgICAgICAgICAgICAgLy8gdmFsdWUgb2YgdGhlIHNwZWNp
ZmllZCBtYXJnaW4tcmlnaHQgJSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gUmVuZGVyQm94J3MgbWFy
Z2luUmlnaHQoKSB2YWx1ZS4KLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChtYXJnaW5SaWdodCwgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb250YWluaW5nQmxv
Y2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmll
dygpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJn
aW5SaWdodCwgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb250YWluaW5nQmxvY2tMb2dpY2FsV2lk
dGhGb3JDb250ZW50KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHZhbHVlID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5tYXJnaW5S
aWdodCgpOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWUs
IHN0eWxlLmdldCgpKTsKQEAgLTIwODQsNyArMjA5OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+cG9zaXRpb24oKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlSaWdodDoKLSAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9m
ZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eVJpZ2h0LCBtX25vZGUtPmRvY3VtZW50
KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRW
YWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlSaWdodCwgZG9jdW1lbnQtPnJlbmRlclZpZXco
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb246CiAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPnJ1YnlQb3NpdGlv
bigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OgpAQCAtMjE1Miw3ICsy
MTY3LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRUcmFuc2Zvcm06CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUoc3R5bGUtPnRleHRUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
b3A6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQo
KSwgQ1NTUHJvcGVydHlUb3AsIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQ
cm9wZXJ0eVRvcCwgZG9jdW1lbnQtPnJlbmRlclZpZXcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlVbmljb2RlQmlkaToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShzdHlsZS0+dW5pY29kZUJpZGkoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlW
ZXJ0aWNhbEFsaWduOgpAQCAtMjQxNywxMCArMjQzMiw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBib3g7CiAgICAgICAgICAgICAgICAgaWYg
KHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgICAgICBib3ggPSB0b1JlbmRlckJv
eChyZW5kZXJlciktPmJvcmRlckJveFJlY3QoKTsKLQotICAgICAgICAgICAgICAgIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcgPSBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKLSAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgoKSwgcmVu
ZGVyVmlldyksIHN0eWxlLmdldCgpKSk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpv
b21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVj
dGl2ZU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsK
KyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgo
KSwgZG9jdW1lbnQtPnJlbmRlclZpZXcoKSksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCBkb2N1bWVudC0+
cmVuZGVyVmlldygpKSwgc3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgc3R5bGUuZ2V0KCkpKTsK
QEAgLTI0NDAsMTMgKzI0NTMsMTMgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CiAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPnVzZXJTZWxlY3QoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzOgotICAgICAgICAgICAgcmV0dXJu
IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
KCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAg
ICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJv
dHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZp
ZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5
bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBkb2N1bWVudC0+cmVu
ZGVyVmlldygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJv
cmRlclRvcExlZnRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVu
ZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLCBzdHlsZS5nZXQoKSwgZG9jdW1lbnQtPnJl
bmRlclZpZXcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1
czoKLSAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+
cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJW
YWx1ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIGRvY3VtZW50
LT5yZW5kZXJWaWV3KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcDogewogICAgICAg
ICAgICAgaWYgKCFzdHlsZS0+aGFzQ2xpcCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKQEAgLTI0Njcs
MTAgKzI0ODAsOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgICAgIExh
eW91dFJlY3QgYm94OwogICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNCb3goKSkKICAg
ICAgICAgICAgICAgICAgICAgYm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5ib3JkZXJCb3hS
ZWN0KCk7Ci0KLSAgICAgICAgICAgICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV9ub2Rl
LT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFu
c2Zvcm1PcmlnaW5YKCksIGJveC53aWR0aCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsK
LSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwgYm94LmhlaWdodCgp
LCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRy
YW5zZm9ybU9yaWdpblgoKSwgYm94LndpZHRoKCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpLCBz
dHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgp
LCBib3guaGVpZ2h0KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpLCBzdHlsZS5nZXQoKSkpOwog
ICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxl
LT50cmFuc2Zvcm1PcmlnaW5aKCksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewpAQCAtMjYxNiw3ICsyNjI3LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9y
TmluZVBpZWNlSW1hZ2Uoc3R5bGUtPmJvcmRlckltYWdlKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyUmFkaXVzOgotICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c1No
b3J0aGFuZFZhbHVlKHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXco
KSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoc3R5
bGUuZ2V0KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHQ6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNG
b3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGJvcmRlclJpZ2h0U2hvcnRoYW5kKCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggNmIyMzllOTU2NjQ4ZTg1NjQ1NTQ2NGI1
YjBjNjkzZjZiZTU5ZWUwZC4uNGM5ZGI2NWEzNTcxMGVkNDFlZjc2YjUwNTdjOTU5NDY4ODBlZGZl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uaApAQCAtNzgsNiArNzgsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxOb2RlPiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHls
ZSwgY29uc3QgU3RyaW5nJik7CiAKKyAgICAvLyBUaGUgc3R5bGVkIG5vZGUgaXMgZWl0aGVyIHRo
ZSBub2RlIHBhc3NlZCBpbnRvIGdldENvbXB1dGVkU3R5bGUsIG9yIHRoZQorICAgIC8vIFBzZXVk
b0VsZW1lbnQgZm9yIDpiZWZvcmUgYW5kIDphZnRlciBpZiB0aGV5IGV4aXN0LgorICAgIE5vZGUq
IHN0eWxlZE5vZGUoKSBjb25zdDsKKwogICAgIC8vIENTU09NIGZ1bmN0aW9ucy4gRG9uJ3QgbWFr
ZSB0aGVzZSBwdWJsaWMuCiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCA0OTM0YjlkOTYyOTE5MjU3MzkxZGYwNWFjYTQzODNhNGNlZGY2MTZkLi41YjUyYTlh
Yjg1YzAyNzEzZDZjNDdkN2Y4Nzc1N2UxM2MyNjgyMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0xOTI5LDYgKzE5MjksOSBAQCB2b2lkIEVsZW1lbnQ6OnNldE1pbmltdW1TaXplRm9yUmVz
aXppbmcoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKIAogUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNv
bXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIHsKKyAgICBpZiAo
UHNldWRvRWxlbWVudCogZWxlbWVudCA9IHBzZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudFNwZWNp
ZmllcikpCisgICAgICAgIHJldHVybiBlbGVtZW50LT5jb21wdXRlZFN0eWxlKCk7CisKICAgICAv
LyBGSVhNRTogRmluZCBhbmQgdXNlIHRoZSByZW5kZXJlciBmcm9tIHRoZSBwc2V1ZG8gZWxlbWVu
dCBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgZWxlbWVudCBzbyB0aGF0IHRoZSAnbGVuZ3RoJwogICAg
IC8vIHByb3BlcnRpZXMsIHdoaWNoIGFyZSBvbmx5IGtub3duIGJ5IHRoZSByZW5kZXJlciBiZWNh
dXNlIGl0IGRpZCB0aGUgbGF5b3V0LCB3aWxsIGJlIGNvcnJlY3QgYW5kIHNvIHRoYXQgdGhlCiAg
ICAgLy8gdmFsdWVzIHJldHVybmVkIGZvciB0aGUgIjpzZWxlY3Rpb24iIHBzZXVkby1lbGVtZW50
IHdpbGwgYmUgY29ycmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCAy
NjgzMDFjNGYxMTQ5YWEwZTg2OGNlOThjYTY5MjYyOTNjYjczYjcyLi41NGE0ZjllMDc0OWM2YjI1
OTljOTI0ODYwMjUyMjBjN2NmYTQ5MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCkBAIC0xODYsNyArMTg2LDYgQEAgaW5saW5lIFBzZXVkb0VsZW1lbnQqIEVsZW1lbnRSYXJl
RGF0YTo6cHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKICAgICBjYXNlIEFG
VEVSOgogICAgICAgICByZXR1cm4gbV9nZW5lcmF0ZWRBZnRlci5nZXQoKTsKICAgICBkZWZhdWx0
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182873</attachid>
            <date>2013-01-15 16:42:28 -0800</date>
            <delta_ts>2013-02-06 15:27:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106535-20130115163930.patch</filename>
            <type>text/plain</type>
            <size>27572</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkxZDgwY2JkYWY5NzUx
ZTVjMjk2ZmMwMTUwY2E5Nzc5NWJmMjY3ZS4uMTQwYWNhY2Q2MGU3YTBkMmQ0NTAzMGI2ZDYwYTk2
MTU3YTc4ODE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAxLTE1ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGdldENvbXB1dGVk
U3R5bGUoKSBkb2Vzbid0IHJlcG9ydCBpbnRlcm1lZGlhdGUgdmFsdWVzIGR1cmluZyBhIHRyYW5z
aXRpb24gb2YgYSBwc2V1ZG8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRWxlbWVudDo6Y29tcHV0ZWRTdHlsZSBhbmQgQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlCisgICAgICAgIHNob3VsZCB1c2Ug
dGhlIFBzZXVkb0VsZW1lbnQgYW5kIGl0J3MgcmVuZGVyZXIgaWYgdGhleSBleGlzdCBzbyB0aGF0
CisgICAgICAgIHF1ZXJ5aW5nIHRoZSBjb21wdXRlZCBzdHlsZSB3aGlsZSBhbiBhbmltYXRpb24g
aXMgcnVubmluZyByZXR1cm5zCisgICAgICAgIHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgdXBkYXRlZCBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3Jp
ZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OnN0eWxlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAgICogZG9tL0VsZW1l
bnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpwc2V1ZG9F
bGVtZW50KToKKwogMjAxMy0wMS0xNSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJlbW92ZSBib2d1cyBhc3NlcnQgYWRkZWQgaW4gaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTM5NzcyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBkNTc3NzcyMzEzZWE2YmExODY2OTgxMDBk
MDI5MWEzNDYzNmY5YTQ5Li45OWM1ZDMwNzk0NTNjZGE5NzIwZDE0YjI4ZTA2ODUzMjZlZDM0NWUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1
ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlBhaXIuaCIKKyNpbmNsdWRl
ICJQc2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckJv
eC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBAIC0xMDAwLDcgKzEwMDEsNyBAQCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yRmls
dGVyKGNvbnN0IFJlbmRlck9iagogfQogI2VuZGlmCiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgTGVuZ3RoJiB0cmFja0JyZWFkdGgs
IGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyAqcmVuZGVyVmlldykKK3N0YXRp
YyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgTGVu
Z3RoJiB0cmFja0JyZWFkdGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyog
cmVuZGVyVmlldykKIHsKICAgICBpZiAodHJhY2tCcmVhZHRoLmlzQXV0bygpKQogICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7
CkBAIC0xMDMyLDcgKzEwMzMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVG
b3JHcmlkVHJhY2tHcm91cChjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mCiAgICAgcmV0dXJu
IGxpc3QucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVG
b3JHcmlkVHJhY2tMaXN0KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplcywg
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJWaWV3ICpyZW5kZXJWaWV3KQorc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChjb25zdCBWZWN0b3I8
R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyVmlldyogcmVuZGVyVmlldykKIHsKICAgICAvLyBIYW5kbGUgdGhlICdub25lJyBjYXNlIGhl
cmUuCiAgICAgaWYgKCF0cmFja1NpemVzLnNpemUoKSkKQEAgLTE0OTIsMTcgKzE0OTMsMzAgQEAg
c3RhdGljIGJvb2wgaXNMYXlvdXREZXBlbmRlbnRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQpCiAgICAgfQogfQogCitOb2RlKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnN0
eWxlZE5vZGUoKSBjb25zdAoreworICAgIGlmICghbV9ub2RlKQorICAgICAgICByZXR1cm4gMDsK
KyAgICBpZiAobV9ub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgKG1fcHNldWRvRWxlbWVudFNwZWNp
ZmllciA9PSBCRUZPUkUgfHwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09IEFGVEVSKSkgewor
ICAgICAgICBpZiAoUHNldWRvRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChtX25vZGUuZ2V0
KCkpLT5wc2V1ZG9FbGVtZW50KG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikpCisgICAgICAgICAg
ICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisgICAgcmV0dXJuIG1fbm9kZS5nZXQoKTsKK30KKwog
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCB1cGRh
dGVMYXlvdXQpIGNvbnN0CiB7Ci0gICAgTm9kZSogbm9kZSA9IG1fbm9kZS5nZXQoKTsKLSAgICBp
ZiAoIW5vZGUpCisgICAgTm9kZSogc3R5bGVkTm9kZSA9IHRoaXMtPnN0eWxlZE5vZGUoKTsKKyAg
ICBpZiAoIXN0eWxlZE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gc3R5bGVkTm9kZS0+ZG9jdW1lbnQoKTsKKwogICAgIGlmICh1cGRhdGVMYXlvdXQp
IHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9ub2RlLT5kb2N1bWVudCgpOwogICAg
ICAgICAvLyBGSVhNRTogU29tZSBvZiB0aGVzZSBjYXNlcyBjb3VsZCBiZSBuYXJyb3dlZCBkb3du
IG9yIG9wdGltaXplZCBiZXR0ZXIuCiAgICAgICAgIGJvb2wgZm9yY2VGdWxsTGF5b3V0ID0gaXNM
YXlvdXREZXBlbmRlbnRQcm9wZXJ0eShwcm9wZXJ0eUlEKQotICAgICAgICAgICAgfHwgbm9kZS0+
aXNJblNoYWRvd1RyZWUoKQorICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBtX25vZGUgc2luY2Ug
UHNldWRvRWxlbWVudDo6aW5zZXJ0ZWRJbnRvIGlzIG5vdCBjYWxsZWQgdG8gc2V0IHRoaXMgZmxh
ZyB5ZXQuCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzSW5TaGFkb3dUcmVlKCkKICAgICAgICAg
ICAgIHx8IChkb2N1bWVudC0+c3R5bGVSZXNvbHZlcklmRXhpc3RzKCkgJiYgZG9jdW1lbnQtPnN0
eWxlUmVzb2x2ZXJJZkV4aXN0cygpLT5oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygp
ICYmIGRvY3VtZW50LT5vd25lckVsZW1lbnQoKSkKICAgICAgICAgICAgIHx8IGRvY3VtZW50LT5z
ZWFtbGVzc1BhcmVudElGcmFtZSgpOwogCkBAIC0xNTEwLDMyICsxNTI0LDM1IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYm9vbCBu
ZWVkc1N0eWxlUmVjYWxjID0gZG9jdW1lbnQtPmhhc1BlbmRpbmdGb3JjZWRTdHlsZVJlY2FsYygp
OwotICAgICAgICAgICAgZm9yIChOb2RlKiBuID0gbV9ub2RlLmdldCgpOyBuICYmICFuZWVkc1N0
eWxlUmVjYWxjOyBuID0gbi0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgZm9yIChOb2RlKiBu
ID0gc3R5bGVkTm9kZTsgbiAmJiAhbmVlZHNTdHlsZVJlY2FsYzsgbiA9IG4tPnBhcmVudE5vZGUo
KSkKICAgICAgICAgICAgICAgICBuZWVkc1N0eWxlUmVjYWxjID0gbi0+bmVlZHNTdHlsZVJlY2Fs
YygpOwogICAgICAgICAgICAgaWYgKG5lZWRzU3R5bGVSZWNhbGMpCiAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgfQorCisgICAgICAgIC8v
IFRoZSBzdHlsZSByZWNhbGMgY291bGQgaGF2ZSBjYXVzZWQgdGhlIHN0eWxlZCBub2RlIHRvIGJl
IGRpc2NhcmRlZCBvciByZXBsYWNlZAorICAgICAgICAvLyBpZiBpdCB3YXMgYSBQc2V1ZG9FbGVt
ZW50IHNvIHdlIG5lZWQgdG8gdXBkYXRlIGl0LgorICAgICAgICBzdHlsZWROb2RlID0gdGhpcy0+
c3R5bGVkTm9kZSgpOwogICAgIH0KIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdHlsZWROb2RlLT5y
ZW5kZXJlcigpOwogCiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZTsKICAgICBpZiAocmVu
ZGVyZXIgJiYgcmVuZGVyZXItPmlzQ29tcG9zaXRlZCgpICYmIEFuaW1hdGlvbkNvbnRyb2xsZXI6
OnN1cHBvcnRzQWNjZWxlcmF0ZWRBbmltYXRpb25PZlByb3BlcnR5KHByb3BlcnR5SUQpKSB7CiAg
ICAgICAgIEFuaW1hdGlvblVwZGF0ZUJsb2NrIGFuaW1hdGlvblVwZGF0ZUJsb2NrKHJlbmRlcmVy
LT5hbmltYXRpb24oKSk7CiAgICAgICAgIHN0eWxlID0gcmVuZGVyZXItPmFuaW1hdGlvbigpLT5n
ZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwotICAgICAgICBpZiAobV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyKSB7CisgICAgICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIgJiYgIXN0eWxlZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBjYWNoZWQgcHNldWRvIHN0eWxlIHdpbGwgb25seSBleGlzdCBpZiB0aGUgYW5p
bWF0aW9uIGhhcyBiZWVuIHJ1biBhdCBsZWFzdCBvbmNlLgogICAgICAgICAgICAgc3R5bGUgPSBz
dHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKICAg
ICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBzdHlsZSA9IG5vZGUtPmNvbXB1dGVkU3R5bGUo
bV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBFbGVt
ZW50Ojpjb21wdXRlZFN0eWxlIHdpbGwgaGFuZGxlIGxvb2tpbmcgdXAgdGhlIHN0eWxlZE5vZGUg
Zm9yIHVzLgorICAgICAgICBzdHlsZSA9IG1fbm9kZS0+Y29tcHV0ZWRTdHlsZShtX3BzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpOworICAgIH0KIAogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiAobV9wc2V1ZG9FbGVtZW50
U3BlY2lmaWVyID09IEJFRk9SRSB8fCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gQUZURVIp
KQotICAgICAgICByZW5kZXJlciA9IHRvRWxlbWVudChub2RlKS0+cHNldWRvRWxlbWVudFJlbmRl
cmVyKG1fcHNldWRvRWxlbWVudFNwZWNpZmllcik7Ci0KICAgICBwcm9wZXJ0eUlEID0gQ1NTUHJv
cGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KHByb3BlcnR5SUQsIHN0eWxlLT5k
aXJlY3Rpb24oKSwgc3R5bGUtPndyaXRpbmdNb2RlKCkpOwogCiAgICAgc3dpdGNoIChwcm9wZXJ0
eUlEKSB7CkBAIC0xNzE2LDcgKzE3MzMsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgogICAgICAgICAgICAgcmV0dXJu
IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBzdHlsZS5n
ZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlCb3R0b20s
IG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBn
ZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUJvdHRvbSwgZG9j
dW1lbnQtPnJlbmRlclZpZXcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hB
bGlnbjoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHls
ZS0+Ym94QWxpZ24oKSk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKQEAg
LTE4MjAsOCArMTgzNyw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmFsaWduSXRlbXMoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnblNlbGY6CiAgICAgICAgICAgICBpZiAo
c3R5bGUtPmFsaWduU2VsZigpID09IEFsaWduQXV0bykgewotICAgICAgICAgICAgICAgIGlmICht
X25vZGUgJiYgbV9ub2RlLT5wYXJlbnROb2RlKCkgJiYgbV9ub2RlLT5wYXJlbnROb2RlKCktPmNv
bXB1dGVkU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKG1fbm9kZS0+cGFyZW50Tm9kZSgpLT5jb21wdXRlZFN0eWxlKCktPmFsaWdu
SXRlbXMoKSk7CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlZE5vZGUtPnBhcmVudE5vZGUoKSAm
JiBzdHlsZWROb2RlLT5wYXJlbnROb2RlKCktPmNvbXB1dGVkU3R5bGUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlZE5vZGUtPnBh
cmVudE5vZGUoKS0+Y29tcHV0ZWRTdHlsZSgpLT5hbGlnbkl0ZW1zKCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShBbGlnblN0cmV0Y2gpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KHN0eWxlLT5hbGlnblNlbGYoKSk7CkBAIC0xODUxLDcgKzE4NjgsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydAogICAgICAgICAgICAgY29tcHV0ZWRGb250LT52YXJpYW50ID0gZm9udFZhcmlh
bnRGcm9tU3R5bGUoc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT53ZWln
aHQgPSBmb250V2VpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+c2l6ZSA9IGZvbnRTaXplRnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKLSAgICAgICAg
ICAgIGNvbXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoc3R5bGUu
Z2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIGNv
bXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoc3R5bGUuZ2V0KCks
IGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT5mYW1p
bHkgPSBmb250RmFtaWx5RnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIHJldHVy
biBjb21wdXRlZEZvbnQucmVsZWFzZSgpOwogICAgICAgICB9CkBAIC0xODg0LDEwICsxOTAxLDEw
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxl
YXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1
bW5zOiB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KHN0eWxlLT5n
cmlkQ29sdW1ucygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3
KCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrTGlzdChzdHlsZS0+Z3Jp
ZENvbHVtbnMoKSwgc3R5bGUuZ2V0KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czogewotICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrTGlzdChzdHlsZS0+Z3JpZFJvd3MoKSwgc3R5bGUu
Z2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3Qoc3R5bGUtPmdyaWRSb3dzKCksIHN0eWxlLmdldCgp
LCBkb2N1bWVudC0+cmVuZGVyVmlldygpKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRHcmlkQ29sdW1uOgpAQCAtMTk0MSw3ICsxOTU4LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVW
YWx1ZShzdHlsZS0+aW1hZ2VSZXNvbHV0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQ
WCk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlMZWZ0
LCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4g
Z2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlMZWZ0LCBkb2N1
bWVudC0+cmVuZGVyVmlldygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNp
bmc6CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vcm1hbCk7CkBAIC0xOTUxLDcgKzE5NjgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAog
ICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShzdHlsZS0+bGluZUNsYW1wKCkudmFsdWUoKSwgc3R5bGUtPmxpbmVDbGFtcCgpLmlz
UGVyY2VudGFnZSgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFIDogQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhl
aWdodDoKLSAgICAgICAgICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgp
LCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4g
bGluZUhlaWdodEZyb21TdHlsZShzdHlsZS5nZXQoKSwgZG9jdW1lbnQtPnJlbmRlclZpZXcoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZToKICAgICAgICAgICAgIGlm
IChzdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3R5bGUt
Pmxpc3RTdHlsZUltYWdlKCktPmNzc1ZhbHVlKCk7CkBAIC0xOTc5LDcgKzE5OTYsNyBAQCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgICAgIC8vIFJlbmRlckJveCBnaXZlcyBh
IG1hcmdpblJpZ2h0KCkgdGhhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcmlnaHQtZWRn
ZSBvZiB0aGUgY2hpbGQgYm94CiAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSByaWdodC1lZGdl
IG9mIHRoZSBjb250YWluaW5nIGJveCwgd2hlbiBkaXNwbGF5ID09IEJMT0NLLiBMZXQncyBjYWxj
dWxhdGUgdGhlIGFic29sdXRlCiAgICAgICAgICAgICAgICAgLy8gdmFsdWUgb2YgdGhlIHNwZWNp
ZmllZCBtYXJnaW4tcmlnaHQgJSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gUmVuZGVyQm94J3MgbWFy
Z2luUmlnaHQoKSB2YWx1ZS4KLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChtYXJnaW5SaWdodCwgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb250YWluaW5nQmxv
Y2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmll
dygpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJn
aW5SaWdodCwgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb250YWluaW5nQmxvY2tMb2dpY2FsV2lk
dGhGb3JDb250ZW50KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHZhbHVlID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5tYXJnaW5S
aWdodCgpOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWUs
IHN0eWxlLmdldCgpKTsKQEAgLTIwODQsNyArMjEwMSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+cG9zaXRpb24oKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlSaWdodDoKLSAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9m
ZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eVJpZ2h0LCBtX25vZGUtPmRvY3VtZW50
KCktPnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRW
YWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlSaWdodCwgZG9jdW1lbnQtPnJlbmRlclZpZXco
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb246CiAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPnJ1YnlQb3NpdGlv
bigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OgpAQCAtMjE1Miw3ICsy
MTY5LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRUcmFuc2Zvcm06CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUoc3R5bGUtPnRleHRUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
b3A6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQo
KSwgQ1NTUHJvcGVydHlUb3AsIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQ
cm9wZXJ0eVRvcCwgZG9jdW1lbnQtPnJlbmRlclZpZXcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlVbmljb2RlQmlkaToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShzdHlsZS0+dW5pY29kZUJpZGkoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlW
ZXJ0aWNhbEFsaWduOgpAQCAtMjQxNywxMCArMjQzNCw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBib3g7CiAgICAgICAgICAgICAgICAgaWYg
KHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgICAgICBib3ggPSB0b1JlbmRlckJv
eChyZW5kZXJlciktPmJvcmRlckJveFJlY3QoKTsKLQotICAgICAgICAgICAgICAgIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcgPSBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKLSAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgoKSwgcmVu
ZGVyVmlldyksIHN0eWxlLmdldCgpKSk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpv
b21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVj
dGl2ZU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsK
KyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgo
KSwgZG9jdW1lbnQtPnJlbmRlclZpZXcoKSksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCBkb2N1bWVudC0+
cmVuZGVyVmlldygpKSwgc3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgc3R5bGUuZ2V0KCkpKTsK
QEAgLTI0NDAsMTMgKzI0NTUsMTMgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CiAgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPnVzZXJTZWxlY3QoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzOgotICAgICAgICAgICAgcmV0dXJu
IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
KCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CisgICAg
ICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJv
dHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZp
ZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5
bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBkb2N1bWVudC0+cmVu
ZGVyVmlldygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJv
cmRlclRvcExlZnRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVu
ZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLCBzdHlsZS5nZXQoKSwgZG9jdW1lbnQtPnJl
bmRlclZpZXcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1
czoKLSAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+
cmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJW
YWx1ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIGRvY3VtZW50
LT5yZW5kZXJWaWV3KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcDogewogICAgICAg
ICAgICAgaWYgKCFzdHlsZS0+aGFzQ2xpcCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKQEAgLTI0Njcs
MTAgKzI0ODIsOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgICAgIExh
eW91dFJlY3QgYm94OwogICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNCb3goKSkKICAg
ICAgICAgICAgICAgICAgICAgYm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5ib3JkZXJCb3hS
ZWN0KCk7Ci0KLSAgICAgICAgICAgICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV9ub2Rl
LT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFu
c2Zvcm1PcmlnaW5YKCksIGJveC53aWR0aCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsK
LSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5p
bXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwgYm94LmhlaWdodCgp
LCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRy
YW5zZm9ybU9yaWdpblgoKSwgYm94LndpZHRoKCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpLCBz
dHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgp
LCBib3guaGVpZ2h0KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpLCBzdHlsZS5nZXQoKSkpOwog
ICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxl
LT50cmFuc2Zvcm1PcmlnaW5aKCksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewpAQCAtMjYxNiw3ICsyNjI5LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9y
TmluZVBpZWNlSW1hZ2Uoc3R5bGUtPmJvcmRlckltYWdlKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyUmFkaXVzOgotICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c1No
b3J0aGFuZFZhbHVlKHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXco
KSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoc3R5
bGUuZ2V0KCksIGRvY3VtZW50LT5yZW5kZXJWaWV3KCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHQ6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNG
b3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGJvcmRlclJpZ2h0U2hvcnRoYW5kKCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggNmIyMzllOTU2NjQ4ZTg1NjQ1NTQ2NGI1
YjBjNjkzZjZiZTU5ZWUwZC4uNGM5ZGI2NWEzNTcxMGVkNDFlZjc2YjUwNTdjOTU5NDY4ODBlZGZl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uaApAQCAtNzgsNiArNzgsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxOb2RlPiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHls
ZSwgY29uc3QgU3RyaW5nJik7CiAKKyAgICAvLyBUaGUgc3R5bGVkIG5vZGUgaXMgZWl0aGVyIHRo
ZSBub2RlIHBhc3NlZCBpbnRvIGdldENvbXB1dGVkU3R5bGUsIG9yIHRoZQorICAgIC8vIFBzZXVk
b0VsZW1lbnQgZm9yIDpiZWZvcmUgYW5kIDphZnRlciBpZiB0aGV5IGV4aXN0LgorICAgIE5vZGUq
IHN0eWxlZE5vZGUoKSBjb25zdDsKKwogICAgIC8vIENTU09NIGZ1bmN0aW9ucy4gRG9uJ3QgbWFr
ZSB0aGVzZSBwdWJsaWMuCiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCBmNzlhYTMyMzg3N2JiODJmOWNkODhlMWZlOTgxNDU0YjliYmIwNjM1Li4yYTY1MDQ5
ZDJkNDkzZWFkY2M3ZDZkODNhZjQ5YWI4MzhkMTllZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0xOTY2LDYgKzE5NjYsOSBAQCB2b2lkIEVsZW1lbnQ6OnNldE1pbmltdW1TaXplRm9yUmVz
aXppbmcoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKIAogUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNv
bXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIHsKKyAgICBpZiAo
UHNldWRvRWxlbWVudCogZWxlbWVudCA9IHBzZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudFNwZWNp
ZmllcikpCisgICAgICAgIHJldHVybiBlbGVtZW50LT5jb21wdXRlZFN0eWxlKCk7CisKICAgICAv
LyBGSVhNRTogRmluZCBhbmQgdXNlIHRoZSByZW5kZXJlciBmcm9tIHRoZSBwc2V1ZG8gZWxlbWVu
dCBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgZWxlbWVudCBzbyB0aGF0IHRoZSAnbGVuZ3RoJwogICAg
IC8vIHByb3BlcnRpZXMsIHdoaWNoIGFyZSBvbmx5IGtub3duIGJ5IHRoZSByZW5kZXJlciBiZWNh
dXNlIGl0IGRpZCB0aGUgbGF5b3V0LCB3aWxsIGJlIGNvcnJlY3QgYW5kIHNvIHRoYXQgdGhlCiAg
ICAgLy8gdmFsdWVzIHJldHVybmVkIGZvciB0aGUgIjpzZWxlY3Rpb24iIHBzZXVkby1lbGVtZW50
IHdpbGwgYmUgY29ycmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBm
MmJmYjcwMmZlNjY2MWNhZWJiZmNlMzkxNWYzMGVmNTIzZDkzNzZhLi45NzZkNzg5Nzk4M2I0YzUz
M2Q3NmM3Y2Y0MGEzMTA3NWE1MDUwNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCkBAIC0yNDMsNyArMjQzLDYgQEAgaW5saW5lIFBzZXVkb0VsZW1lbnQqIEVsZW1lbnRSYXJl
RGF0YTo6cHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKICAgICBjYXNlIEFG
VEVSOgogICAgICAgICByZXR1cm4gbV9nZW5lcmF0ZWRBZnRlci5nZXQoKTsKICAgICBkZWZhdWx0
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGViNzAyNTNjN2ViMDBkOWUxNTE1YzA5NGY3MWUzZDQzYTFhMzEzMGQuLjNk
Y2NjZDhhMjZiZWZkZDc0NTg1ZWE2ODMzMjU2MDQ0M2Y3MzA1YjUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMy0wMS0xNSAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBnZXRDb21wdXRlZFN0eWxlKCkgZG9lc24ndCByZXBvcnQgaW50ZXJtZWRpYXRl
IHZhbHVlcyBkdXJpbmcgYSB0cmFuc2l0aW9uIG9mIGEgcHNldWRvIGVsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjUzNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0cyB0byBh
bHNvIGNoZWNrIGdldENvbXB1dGVkU3R5bGUgZHVyaW5nIGFuaW1hdGlvbnMgYW5kIHRyYW5zaXRp
b25zLgorCisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLWFuaW1h
dGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQv
cHNldWRvLWFuaW1hdGlvbi5odG1sOgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250
ZW50L3BzZXVkby10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy1n
ZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sOgorCiAyMDEzLTAxLTE1ICBa
YW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0
ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cmlu
ZGV4IGE0YWM5YzJlM2EwODgwOWJiYzVjZDM0ZTgyNDIyNDAzNTQ5NzFiOWMuLjdkNjY2MTYyZTk5
MGU4ZDFlODhiYzMxMWNhMmRlOTI5MjYwNmVjNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRp
b24tZXhwZWN0ZWQudHh0CkBAIC00LDExICs0LDE1IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
CiAKIAogUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgNTIKLVBBU1MgZGl2Lm9mZnNldFdpZHRoIGlz
IDIwCi1QQVNTIGRpdi5vZmZzZXRXaWR0aCBpcyAxMgorUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMg
d2l0aGluIDEgb2YgMjAKK1BBU1MgY29tcHV0ZWRUb3AgaXMgd2l0aGluIDEgb2YgMTcwCitQQVNT
IGRpdi5vZmZzZXRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxMgorUEFTUyBjb21wdXRlZFRvcCBpcyB3
aXRoaW4gMSBvZiAyMDAKIFBBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIDUyCi1QQVNTIGRpdi5vZmZz
ZXRXaWR0aCBpcyAyMAotUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgMTIKK1BBU1MgZGl2Lm9mZnNl
dFdpZHRoIGlzIHdpdGhpbiAxIG9mIDIwCitQQVNTIGNvbXB1dGVkVG9wIGlzIHdpdGhpbiAxIG9m
IDE3MAorUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgd2l0aGluIDEgb2YgMTIKK1BBU1MgY29tcHV0
ZWRUb3AgaXMgd2l0aGluIDEgb2YgMjAwCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVy
YXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRpb24uaHRtbAppbmRleCA4MmZjMTg0NmJl
MzQ5MDQ5YmM2ZjBhMGIxZTY5MGNhOTViZWIwMGFjLi5jZmU3NGRhZjc2NjI1NDczYjBhMDEwNGZh
YzY5NTA3NDc0NDAxZjNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0
ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLWFuaW1hdGlvbi5odG1sCkBAIC03LDEwICs3LDEy
IEBACiAgIGZyb20gewogICAgIHdpZHRoOiA1MHB4OwogICAgIGhlaWdodDogNTBweDsKKyAgICB0
b3A6IDUwcHg7CiAgIH0KICAgdG8gewogICAgIHdpZHRoOiAxMHB4OwogICAgIGhlaWdodDogMTBw
eDsKKyAgICB0b3A6IDIwMHB4OwogICB9CiB9CiAKQEAgLTE4LDEwICsyMCwxMiBAQAogICBmcm9t
IHsKICAgICB3aWR0aDogNTBweDsKICAgICBoZWlnaHQ6IDUwcHg7CisgICAgdG9wOiA1MHB4Owog
ICB9CiAgIHRvIHsKICAgICB3aWR0aDogMTBweDsKICAgICBoZWlnaHQ6IDEwcHg7CisgICAgdG9w
OiAyMDBweDsKICAgfQogfQogCkBAIC0zMSwxMCArMzUsMTIgQEAKICAgICBkaXNwbGF5OiBibG9j
azsKICAgICBoZWlnaHQ6IDUwcHg7CiAgICAgd2lkdGg6IDUwcHg7CisgICAgcG9zaXRpb246IHJl
bGF0aXZlOwogfQogCiAjYWZ0ZXIuYW5pbWF0ZTphZnRlciwKICNiZWZvcmUuYW5pbWF0ZTpiZWZv
cmUgeworICAgIHRvcDogMjAwcHg7CiAgICAgd2lkdGg6IDEwcHg7CiAgICAgaGVpZ2h0OiAxMHB4
OwogICAgIC13ZWJraXQtYW5pbWF0aW9uOiBleGFtcGxlIDJzOwpAQCAtNjQsNiArNzAsMTEgQEAg
ZGVzY3JpcHRpb24oJ0FuaW1hdGlvbnMgb24gOmJlZm9yZSBhbmQgOmFmdGVyIHBzZXVkbyBlbGVt
ZW50cyBzaG91bGQgcnVuJyk7CiBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKK2Z1bmN0aW9uIGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKQorewor
ICAgIHJldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChpZCksICc6JyArIGlkKS50b3ApKTsKK30KKwogZnVuY3Rpb24gdGVz
dEFuaW1hdGlvbihpZCkKIHsKICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
aWQpOwpAQCAtNzIsMTkgKzgzLDI3IEBAIGZ1bmN0aW9uIHRlc3RBbmltYXRpb24oaWQpCiAgICAg
c2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICc1MicpOwogICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7CiAgICAgICAgIGludGVybmFscy5wYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxl
bWVudCgnZXhhbXBsZScsIDEuMCwgZGl2LCBpZCk7Ci0gICAgICAgIHNob3VsZEJlKCdkaXYub2Zm
c2V0V2lkdGgnLCAnMjAnKTsKKyAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lk
dGgnLCAyMCwgMSk7CisgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3Ao
aWQpOworICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKICAg
ICAgICAgaW50ZXJuYWxzLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCdleGFt
cGxlJywgMi4wLCBkaXYsIGlkKTsKLSAgICAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcs
ICcxMicpOworICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAx
KTsKKyAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7CisgICAg
ICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAyMDAsIDEpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIFRoaXMgd2lsbCBiZSBmbGFreSwgYnV0IGl0J3MgYSByZWFzb25hYmxlIGFw
cHJveGltYXRpb24gZm9yIHRlc3RpbmcKICAgICAgICAgLy8gaW4gYSBicm93c2VyIGluc3RlYWQg
b2YgRFJULgogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgd2lu
ZG93LmRpdiA9IGRpdjsKLSAgICAgICAgICAgIHNob3VsZEJlKCdkaXYub2Zmc2V0V2lkdGgnLCAn
MjAnKTsKKyAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMjAs
IDEpOworICAgICAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7
CisgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKICAg
ICAgICAgfSwgMTAwMCk7CiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICB3aW5kb3cuZGl2ID0gZGl2OwotICAgICAgICAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRX
aWR0aCcsICcxMicpOworICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lk
dGgnLCAxMiwgMSk7CisgICAgICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVk
VG9wKGlkKTsKKyAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAyMDAs
IDEpOwogICAgICAgICB9LCAyMDAwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNp
dGlvbi1leHBlY3RlZC50eHQKaW5kZXggNjNmN2I3ZmU0ZjI5MDZlZTMwODlhODVmMjZlOWU4Zjg5
MWFkMGRkNS4uNjNmNTMzYTY1OTI1Nzc0MDRmNTdmZmM5MTg3N2RjMjI1ODliN2JmZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5z
aXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1j
b250ZW50L3BzZXVkby10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dApAQCAtNCwxMSArNCwxNSBAQCBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIDUyCi1Q
QVNTIGRpdi5vZmZzZXRXaWR0aCBpcyAyMAotUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgMTIKK1BB
U1MgZGl2Lm9mZnNldFdpZHRoIGlzIHdpdGhpbiAxIG9mIDIwCitQQVNTIGNvbXB1dGVkVG9wIGlz
IHdpdGhpbiAxIG9mIDE3MAorUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgd2l0aGluIDEgb2YgMTIK
K1BBU1MgY29tcHV0ZWRUb3AgaXMgd2l0aGluIDEgb2YgMjAwCiBQQVNTIGRpdi5vZmZzZXRXaWR0
aCBpcyA1MgotUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgMjAKLVBBU1MgZGl2Lm9mZnNldFdpZHRo
IGlzIDEyCitQQVNTIGRpdi5vZmZzZXRXaWR0aCBpcyB3aXRoaW4gMSBvZiAyMAorUEFTUyBjb21w
dXRlZFRvcCBpcyB3aXRoaW4gMSBvZiAxNzAKK1BBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIHdpdGhp
biAxIG9mIDEyCitQQVNTIGNvbXB1dGVkVG9wIGlzIHdpdGhpbiAxIG9mIDIwMAogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5zaXRp
b24uaHRtbAppbmRleCBkYzU1YTlhOGRjY2I3NTU3MTQ0NTRiNThhNDhhZDBmY2I2NGUzMWVjLi4w
M2QyNzFhZWU0Y2FjMTQ2YzE3ZGMyYTEzM2E1ZGY5NGFjMDYxOGU3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFu
c2l0aW9uLmh0bWwKQEAgLTksMTMgKzksMTYgQEAKICAgICBkaXNwbGF5OiBibG9jazsKICAgICBo
ZWlnaHQ6IDUwcHg7CiAgICAgd2lkdGg6IDUwcHg7Ci0gICAgLXdlYmtpdC10cmFuc2l0aW9uOiB3
aWR0aCAyczsKLSAgICAtbW96LXRyYW5zaXRpb246IHdpZHRoIDJzOwotICAgIHRyYW5zaXRpb246
IHdpZHRoIDJzOworICAgIHRvcDogNTBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
LXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAycywgdG9wIDJzOworICAgIC1tb3otdHJhbnNpdGlv
bjogd2lkdGggMnMsIHRvcCAyczsKKyAgICB0cmFuc2l0aW9uOiB3aWR0aCAycywgdG9wIDJzOwog
fQogCiAjYmVmb3JlLnRyYW5zaXRpb246YmVmb3JlLAogI2FmdGVyLnRyYW5zaXRpb246YWZ0ZXIg
eworICAgIHRvcDogMjAwcHg7CiAgICAgaGVpZ2h0OiAxMHB4OwogICAgIHdpZHRoOiAxMHB4Owog
fQpAQCAtNDIsNiArNDUsMTEgQEAgZGVzY3JpcHRpb24oJ1RyYW5zaXRpb25zIG9uIDpiZWZvcmUg
YW5kIDphZnRlciBwc2V1ZG8gZWxlbWVudHMgc2hvdWxkIHJ1bicpOwogaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCitmdW5jdGlvbiBnZXRQc2V1
ZG9Db21wdXRlZFRvcChpZCkKK3sKKyAgICByZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLCAnOicgKyBpZCkudG9w
KSk7Cit9CisKIGZ1bmN0aW9uIHRlc3RUcmFuc2l0aW9uKGlkKQogewogICAgIHZhciBkaXYgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CkBAIC01MCwxOSArNTgsMjkgQEAgZnVuY3Rpb24g
dGVzdFRyYW5zaXRpb24oaWQpCiAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICc1Micp
OwogICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgICAgIGludGVybmFscy5wYXVzZVRy
YW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ3dpZHRoJywgMS4wLCBkaXYsIGlkKTsKLSAg
ICAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICcyMCcpOworICAgICAgICBzaG91bGRC
ZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIwLCAxKTsKKyAgICAgICAgaW50ZXJuYWxzLnBh
dXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgndG9wJywgMS4wLCBkaXYsIGlkKTsK
KyAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7CisgICAgICAg
IHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAxNzAsIDEpOwogICAgICAgICBpbnRlcm5h
bHMucGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd3aWR0aCcsIDIuMCwgZGl2
LCBpZCk7Ci0gICAgICAgIHNob3VsZEJlKCdkaXYub2Zmc2V0V2lkdGgnLCAnMTInKTsKKyAgICAg
ICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAxMiwgMSk7CisgICAgICAgIGlu
dGVybmFscy5wYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ3RvcCcsIDIuMCwg
ZGl2LCBpZCk7CisgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQp
OworICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMjAwLCAxKTsKICAgICB9
IGVsc2UgewogICAgICAgICAvLyBUaGlzIHdpbGwgYmUgZmxha3ksIGJ1dCBpdCdzIGEgcmVhc29u
YWJsZSBhcHByb3hpbWF0aW9uIGZvciB0ZXN0aW5nCiAgICAgICAgIC8vIGluIGEgYnJvd3NlciBp
bnN0ZWFkIG9mIERSVC4KICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgIHdpbmRvdy5kaXYgPSBkaXY7Ci0gICAgICAgICAgICBzaG91bGRCZSgnZGl2Lm9mZnNldFdp
ZHRoJywgJzIwJyk7CisgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0
aCcsIDIwLCAxKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRU
b3AoaWQpOworICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDE3MCwg
MSk7CiAgICAgICAgIH0sIDEwMDApOwogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgd2luZG93LmRpdiA9IGRpdjsKLSAgICAgICAgICAgIHNob3VsZEJlKCdkaXYu
b2Zmc2V0V2lkdGgnLCAnMTInKTsKKyAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9m
ZnNldFdpZHRoJywgMTIsIDEpOworICAgICAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9D
b21wdXRlZFRvcChpZCk7CisgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9w
JywgMjAwLCAxKTsKICAgICAgICAgfSwgMjAwMCk7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186933</attachid>
            <date>2013-02-06 15:27:46 -0800</date>
            <delta_ts>2013-02-07 16:41:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106535-20130206152423.patch</filename>
            <type>text/plain</type>
            <size>16975</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IwYTBkMGFmOGY0MDM2
MWY2Y2U4YmMzZTA3ZWJmNzU3Nzg3MzhjNi4uN2NmMjI1Mjk0YmM1OTA2NjFjYjFmMzE3OGFlMTA0
NGVhYzc0YjcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAyLTA2ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGdldENvbXB1dGVk
U3R5bGUoKSBkb2Vzbid0IHJlcG9ydCBpbnRlcm1lZGlhdGUgdmFsdWVzIGR1cmluZyBhIHRyYW5z
aXRpb24gb2YgYSBwc2V1ZG8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NTM1CisKKyAgICAgICAgRWxlbWVudDo6Y29tcHV0ZWRTdHls
ZSBhbmQgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlCisg
ICAgICAgIHNob3VsZCB1c2UgdGhlIFBzZXVkb0VsZW1lbnQgYW5kIGl0J3MgcmVuZGVyZXIgaWYg
dGhleSBleGlzdCBzbyB0aGF0CisgICAgICAgIHF1ZXJ5aW5nIHRoZSBjb21wdXRlZCBzdHlsZSB3
aGlsZSBhbiBhbmltYXRpb24gaXMgcnVubmluZyByZXR1cm5zCisgICAgICAgIHRoZSBpbnRlcm1l
ZGlhdGUgdmFsdWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdXBkYXRlZCBleGlzdGluZyB0
ZXN0cy4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzdHlsZWROb2Rl
KTogQWRkZWQsIHJldHVybnMgZWl0aGVyIHRoZSBQc2V1ZG9FbGVtZW50IG9yIHRoZSBOb2RlLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0
eUNTU1ZhbHVlKTogVXBkYXRlZCB0byB1c2Ugc3R5bGVkTm9kZS4KKyAgICAgICAgKiBjc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOiBDaGVjayB0aGUgUHNldWRvRWxlbWVudCwgbm90IGp1
c3QgdGhlIGNhY2hlZCBwc2V1ZG8gc3R5bGUuCisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpwc2V1ZG9FbGVtZW50KTog
UmVtb3ZlIEFTU0VSVF9OT1RfUkVBQ0hFRCBzbyBwYXNzaW5nIG90aGVyIHBzZXVkb3MgcmV0dXJu
cyAwLgorCiAyMDEzLTAyLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggYnJva2VuIHJlbGVhc2UgYnVpbGRzLCBncmVlbmluZyB0aGUgYm90cy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5k
ZXggYTgzZTZjNWYzNTc2ODQ4MmQxMjMxMzNmM2FjYjk0MjRjMTBiYjVjYS4uZjNmMWIzZTA5NzEy
OGRiMDljZWFiM2E4MWE1ZDIyYzM1ZDYyYmQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNp
bmNsdWRlICJGb250VmFsdWUuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIK
ICNpbmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgogI2luY2x1ZGUg
IlJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgpAQCAtMTUwOSwxNyArMTUxMCwyOCBAQCBzdGF0aWMgYm9vbCBpc0xheW91dERlcGVuZGVudFBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICB9CiB9CiAKK05vZGUqIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c3R5bGVkTm9kZSgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X25vZGUpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChtX25vZGUtPmlzRWxlbWVudE5vZGUo
KSkgeworICAgICAgICBpZiAoUHNldWRvRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChtX25v
ZGUuZ2V0KCkpLT5wc2V1ZG9FbGVtZW50KG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikpCisgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisgICAgcmV0dXJuIG1fbm9kZS5nZXQoKTsK
K30KKwogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91
dCB1cGRhdGVMYXlvdXQpIGNvbnN0CiB7Ci0gICAgTm9kZSogbm9kZSA9IG1fbm9kZS5nZXQoKTsK
LSAgICBpZiAoIW5vZGUpCisgICAgTm9kZSogc3R5bGVkTm9kZSA9IHRoaXMtPnN0eWxlZE5vZGUo
KTsKKyAgICBpZiAoIXN0eWxlZE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKHVw
ZGF0ZUxheW91dCkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX25vZGUtPmRvY3Vt
ZW50KCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0eWxlZE5vZGUtPmRvY3VtZW50
KCk7CiAgICAgICAgIC8vIEZJWE1FOiBTb21lIG9mIHRoZXNlIGNhc2VzIGNvdWxkIGJlIG5hcnJv
d2VkIGRvd24gb3Igb3B0aW1pemVkIGJldHRlci4KICAgICAgICAgYm9vbCBmb3JjZUZ1bGxMYXlv
dXQgPSBpc0xheW91dERlcGVuZGVudFByb3BlcnR5KHByb3BlcnR5SUQpCi0gICAgICAgICAgICB8
fCBub2RlLT5pc0luU2hhZG93VHJlZSgpCisgICAgICAgICAgICB8fCBzdHlsZWROb2RlLT5pc0lu
U2hhZG93VHJlZSgpCiAgICAgICAgICAgICB8fCAoZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJJZkV4
aXN0cygpICYmIGRvY3VtZW50LT5zdHlsZVJlc29sdmVySWZFeGlzdHMoKS0+aGFzVmlld3BvcnRE
ZXBlbmRlbnRNZWRpYVF1ZXJpZXMoKSAmJiBkb2N1bWVudC0+b3duZXJFbGVtZW50KCkpCiAgICAg
ICAgICAgICB8fCBkb2N1bWVudC0+c2VhbWxlc3NQYXJlbnRJRnJhbWUoKTsKIApAQCAtMTUyNywz
MiArMTUzOSwzMyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgZG9jdW1l
bnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIGJvb2wgbmVlZHNTdHlsZVJlY2FsYyA9IGRvY3VtZW50LT5oYXNQZW5k
aW5nRm9yY2VkU3R5bGVSZWNhbGMoKTsKLSAgICAgICAgICAgIGZvciAoTm9kZSogbiA9IG1fbm9k
ZS5nZXQoKTsgbiAmJiAhbmVlZHNTdHlsZVJlY2FsYzsgbiA9IG4tPnBhcmVudE5vZGUoKSkKKyAg
ICAgICAgICAgIGZvciAoTm9kZSogbiA9IHN0eWxlZE5vZGU7IG4gJiYgIW5lZWRzU3R5bGVSZWNh
bGM7IG4gPSBuLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgbmVlZHNTdHlsZVJlY2Fs
YyA9IG4tPm5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgICAgIGlmIChuZWVkc1N0eWxlUmVj
YWxjKQogICAgICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAg
ICAgICAgIH0KKworICAgICAgICAvLyBUaGUgc3R5bGUgcmVjYWxjIGNvdWxkIGhhdmUgY2F1c2Vk
IHRoZSBzdHlsZWQgbm9kZSB0byBiZSBkaXNjYXJkZWQgb3IgcmVwbGFjZWQKKyAgICAgICAgLy8g
aWYgaXQgd2FzIGEgUHNldWRvRWxlbWVudCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSBpdC4KKyAgICAg
ICAgc3R5bGVkTm9kZSA9IHRoaXMtPnN0eWxlZE5vZGUoKTsKICAgICB9CiAKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gc3R5bGVkTm9kZS0+cmVuZGVyZXIoKTsKIAogICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gc3R5bGU7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0NvbXBvc2l0ZWQoKSAm
JiBBbmltYXRpb25Db250cm9sbGVyOjpzdXBwb3J0c0FjY2VsZXJhdGVkQW5pbWF0aW9uT2ZQcm9w
ZXJ0eShwcm9wZXJ0eUlEKSkgewogICAgICAgICBBbmltYXRpb25VcGRhdGVCbG9jayBhbmltYXRp
b25VcGRhdGVCbG9jayhyZW5kZXJlci0+YW5pbWF0aW9uKCkpOwogICAgICAgICBzdHlsZSA9IHJl
bmRlcmVyLT5hbmltYXRpb24oKS0+Z2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKHJlbmRlcmVy
KTsKLSAgICAgICAgaWYgKG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikgeworICAgICAgICBpZiAo
bV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyICYmICFzdHlsZWROb2RlLT5pc1BzZXVkb0VsZW1lbnQo
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FjaGVkIHBzZXVkbyBzdHlsZSB3aWxs
IG9ubHkgZXhpc3QgaWYgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBydW4gYXQgbGVhc3Qgb25jZS4K
ICAgICAgICAgICAgIHN0eWxlID0gc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKG1fcHNldWRv
RWxlbWVudFNwZWNpZmllcik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgc3R5bGUg
PSBub2RlLT5jb21wdXRlZFN0eWxlKG1fcHNldWRvRWxlbWVudFNwZWNpZmllcik7CisgICAgICAg
IHN0eWxlID0gc3R5bGVkTm9kZS0+Y29tcHV0ZWRTdHlsZShzdHlsZWROb2RlLT5pc1BzZXVkb0Vs
ZW1lbnQoKSA/IE5PUFNFVURPIDogbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKIAogICAgIGlm
ICghc3R5bGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG5vZGUtPmlzRWxlbWVudE5v
ZGUoKSAmJiAobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09IEJFRk9SRSB8fCBtX3BzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIgPT0gQUZURVIpKQotICAgICAgICByZW5kZXJlciA9IHRvRWxlbWVudChu
b2RlKS0+cHNldWRvRWxlbWVudFJlbmRlcmVyKG1fcHNldWRvRWxlbWVudFNwZWNpZmllcik7Ci0K
ICAgICBwcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3Bl
cnR5KHByb3BlcnR5SUQsIHN0eWxlLT5kaXJlY3Rpb24oKSwgc3R5bGUtPndyaXRpbmdNb2RlKCkp
OwogCiAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CkBAIC0xODM3LDggKzE4NTAsOSBAQCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZVZhbHVlKHN0eWxlLT5hbGlnbkl0ZW1zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QWxpZ25TZWxmOgogICAgICAgICAgICAgaWYgKHN0eWxlLT5hbGlnblNlbGYoKSA9PSBB
bGlnbkF1dG8pIHsKLSAgICAgICAgICAgICAgICBpZiAobV9ub2RlICYmIG1fbm9kZS0+cGFyZW50
Tm9kZSgpICYmIG1fbm9kZS0+cGFyZW50Tm9kZSgpLT5jb21wdXRlZFN0eWxlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShtX25vZGUtPnBh
cmVudE5vZGUoKS0+Y29tcHV0ZWRTdHlsZSgpLT5hbGlnbkl0ZW1zKCkpOworICAgICAgICAgICAg
ICAgIE5vZGUqIHBhcmVudCA9IHN0eWxlZE5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgICAg
ICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+Y29tcHV0ZWRTdHlsZSgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocGFyZW50LT5jb21wdXRl
ZFN0eWxlKCktPmFsaWduSXRlbXMoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZVZhbHVlKEFsaWduU3RyZXRjaCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmFsaWduU2VsZigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
aAppbmRleCA2YjIzOWU5NTY2NDhlODU2NDU1NDY0YjViMGM2OTNmNmJlNTllZTBkLi40YzlkYjY1
YTM1NzEwZWQ0MWVmNzZiNTA1N2M5NTk0Njg4MGVkZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC03OCw2ICs3OCwxMCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihQYXNzUmVm
UHRyPE5vZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJpbmcmKTsKIAorICAg
IC8vIFRoZSBzdHlsZWQgbm9kZSBpcyBlaXRoZXIgdGhlIG5vZGUgcGFzc2VkIGludG8gZ2V0Q29t
cHV0ZWRTdHlsZSwgb3IgdGhlCisgICAgLy8gUHNldWRvRWxlbWVudCBmb3IgOmJlZm9yZSBhbmQg
OmFmdGVyIGlmIHRoZXkgZXhpc3QuCisgICAgTm9kZSogc3R5bGVkTm9kZSgpIGNvbnN0OworCiAg
ICAgLy8gQ1NTT00gZnVuY3Rpb25zLiBEb24ndCBtYWtlIHRoZXNlIHB1YmxpYy4KICAgICB2aXJ0
dWFsIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDUzMjdjMGQ0YjZlMWJjNTA0
NDRkNjdhZjUyZmE5Y2FjZWVkMTEzMWIuLmEyZGY2ZTZlMGNkMjA5NjM5YjNlMzVmMWE5MGUzN2Fk
ZGM1ZWFmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE5OTEsNiArMTk5MSw5IEBAIHZv
aWQgRWxlbWVudDo6c2V0TWluaW11bVNpemVGb3JSZXNpemluZyhjb25zdCBMYXlvdXRTaXplJiBz
aXplKQogCiBSZW5kZXJTdHlsZSogRWxlbWVudDo6Y29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyKQogeworICAgIGlmIChQc2V1ZG9FbGVtZW50KiBlbGVtZW50ID0g
cHNldWRvRWxlbWVudChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSkKKyAgICAgICAgcmV0dXJuIGVs
ZW1lbnQtPmNvbXB1dGVkU3R5bGUoKTsKKwogICAgIC8vIEZJWE1FOiBGaW5kIGFuZCB1c2UgdGhl
IHJlbmRlcmVyIGZyb20gdGhlIHBzZXVkbyBlbGVtZW50IGluc3RlYWQgb2YgdGhlIGFjdHVhbCBl
bGVtZW50IHNvIHRoYXQgdGhlICdsZW5ndGgnCiAgICAgLy8gcHJvcGVydGllcywgd2hpY2ggYXJl
IG9ubHkga25vd24gYnkgdGhlIHJlbmRlcmVyIGJlY2F1c2UgaXQgZGlkIHRoZSBsYXlvdXQsIHdp
bGwgYmUgY29ycmVjdCBhbmQgc28gdGhhdCB0aGUKICAgICAvLyB2YWx1ZXMgcmV0dXJuZWQgZm9y
IHRoZSAiOnNlbGVjdGlvbiIgcHNldWRvLWVsZW1lbnQgd2lsbCBiZSBjb3JyZWN0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDEwYjljNTg3MzRkNDZjODg2YjM2NGZiYjQ4
YjhlNmI2MzU2NjcyYjUuLjBhYTkwMGRkNTVmZWVmNGQ1MTMwZmQxNzBmODI3ZDZjY2ZkNmY1ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTI0MCw3ICsyNDAsNiBAQCBp
bmxpbmUgUHNldWRvRWxlbWVudCogRWxlbWVudFJhcmVEYXRhOjpwc2V1ZG9FbGVtZW50KFBzZXVk
b0lkIHBzZXVkb0lkKSBjb25zdAogICAgIGNhc2UgQUZURVI6CiAgICAgICAgIHJldHVybiBtX2dl
bmVyYXRlZEFmdGVyLmdldCgpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDgyODJlZGE3Mjgx
MTdiYzdjYzE0YzY1ZTZkMzRkYTY1YWEwZDkxMC4uOGE5YTdmMWYyYjAzYzk2OTNkZmJiOGE5NzA5
ZTYwNjg0NDJlYjNkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAyLTA2ICBFbGxpb3R0
IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGdldENvbXB1dGVkU3R5
bGUoKSBkb2Vzbid0IHJlcG9ydCBpbnRlcm1lZGlhdGUgdmFsdWVzIGR1cmluZyBhIHRyYW5zaXRp
b24gb2YgYSBwc2V1ZG8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA2NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIHRvIGFsc28gY2hlY2sgZ2V0Q29tcHV0ZWRTdHls
ZSBkdXJpbmcgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLmh0bWw6Cisg
ICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5zaXRpb24tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10
cmFuc2l0aW9uLmh0bWw6CisKIDIwMTMtMDItMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRlbmluZy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQv
cHNldWRvLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKaW5kZXggYTRhYzljMmUzYTA4ODA5YmJjNWNk
MzRlODI0MjI0MDM1NDk3MWI5Yy4uN2Q2NjYxNjJlOTkwZThkMWU4OGJjMzExY2EyZGU5MjkyNjA2
ZWM0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQv
cHNldWRvLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKQEAgLTQsMTEg
KzQsMTUgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIGRpdi5vZmZzZXRXaWR0
aCBpcyA1MgotUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgMjAKLVBBU1MgZGl2Lm9mZnNldFdpZHRo
IGlzIDEyCitQQVNTIGRpdi5vZmZzZXRXaWR0aCBpcyB3aXRoaW4gMSBvZiAyMAorUEFTUyBjb21w
dXRlZFRvcCBpcyB3aXRoaW4gMSBvZiAxNzAKK1BBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIHdpdGhp
biAxIG9mIDEyCitQQVNTIGNvbXB1dGVkVG9wIGlzIHdpdGhpbiAxIG9mIDIwMAogUEFTUyBkaXYu
b2Zmc2V0V2lkdGggaXMgNTIKLVBBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIDIwCi1QQVNTIGRpdi5v
ZmZzZXRXaWR0aCBpcyAxMgorUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgd2l0aGluIDEgb2YgMjAK
K1BBU1MgY29tcHV0ZWRUb3AgaXMgd2l0aGluIDEgb2YgMTcwCitQQVNTIGRpdi5vZmZzZXRXaWR0
aCBpcyB3aXRoaW4gMSBvZiAxMgorUEFTUyBjb21wdXRlZFRvcCBpcyB3aXRoaW4gMSBvZiAyMDAK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLWFuaW1h
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRv
LWFuaW1hdGlvbi5odG1sCmluZGV4IDgyZmMxODQ2YmUzNDkwNDliYzZmMGEwYjFlNjkwY2E5NWJl
YjAwYWMuLjljZjNlZjk3MmFlNmVjZjU1NTk1NzFjNDA0ZTgwOWEwZmQyODM5ZGIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRp
b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1
ZG8tYW5pbWF0aW9uLmh0bWwKQEAgLTcsMTAgKzcsMTIgQEAKICAgZnJvbSB7CiAgICAgd2lkdGg6
IDUwcHg7CiAgICAgaGVpZ2h0OiA1MHB4OworICAgIHRvcDogNTBweDsKICAgfQogICB0byB7CiAg
ICAgd2lkdGg6IDEwcHg7CiAgICAgaGVpZ2h0OiAxMHB4OworICAgIHRvcDogMjAwcHg7CiAgIH0K
IH0KIApAQCAtMTgsMTAgKzIwLDEyIEBACiAgIGZyb20gewogICAgIHdpZHRoOiA1MHB4OwogICAg
IGhlaWdodDogNTBweDsKKyAgICB0b3A6IDUwcHg7CiAgIH0KICAgdG8gewogICAgIHdpZHRoOiAx
MHB4OwogICAgIGhlaWdodDogMTBweDsKKyAgICB0b3A6IDIwMHB4OwogICB9CiB9CiAKQEAgLTMx
LDEwICszNSwxMiBAQAogICAgIGRpc3BsYXk6IGJsb2NrOwogICAgIGhlaWdodDogNTBweDsKICAg
ICB3aWR0aDogNTBweDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiB9CiAKICNhZnRlci5hbmlt
YXRlOmFmdGVyLAogI2JlZm9yZS5hbmltYXRlOmJlZm9yZSB7CisgICAgdG9wOiAyMDBweDsKICAg
ICB3aWR0aDogMTBweDsKICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgLXdlYmtpdC1hbmltYXRpb246
IGV4YW1wbGUgMnM7CkBAIC02NCw2ICs3MCwxNCBAQCBkZXNjcmlwdGlvbignQW5pbWF0aW9ucyBv
biA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvIGVsZW1lbnRzIHNob3VsZCBydW4nKTsKIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAorZnVuY3Rp
b24gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpCit7CisgICAgcmV0dXJuIE1hdGgucm91bmQocGFy
c2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSwgJzon
ICsgaWQpLnRvcCkpOworfQorCisvLyBGSVhNRTogVGhpcyB0ZXN0IHNob3VsZCBiZSBtb2RpZmll
ZCBzbyBzdWJwaXhlbCBkb2Vzbid0IGNhdXNlIG9mZiBieSBvbmUKKy8vIGJlbG93IGFuZCBpdCBu
byBsb25nZXIgbmVlZHMgc2hvdWxkQmVDbG9zZVRvLgorCiBmdW5jdGlvbiB0ZXN0QW5pbWF0aW9u
KGlkKQogewogICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CkBAIC03
MiwxOSArODYsMjcgQEAgZnVuY3Rpb24gdGVzdEFuaW1hdGlvbihpZCkKICAgICBzaG91bGRCZSgn
ZGl2Lm9mZnNldFdpZHRoJywgJzUyJyk7CiAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAg
ICAgICAgaW50ZXJuYWxzLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCdleGFt
cGxlJywgMS4wLCBkaXYsIGlkKTsKLSAgICAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcs
ICcyMCcpOworICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIwLCAx
KTsKKyAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7CisgICAg
ICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAxNzAsIDEpOwogICAgICAgICBpbnRl
cm5hbHMucGF1c2VBbmltYXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ2V4YW1wbGUnLCAyLjAs
IGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZSgnZGl2Lm9mZnNldFdpZHRoJywgJzEyJyk7Cisg
ICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMTIsIDEpOworICAgICAg
ICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICAgICAgc2hvdWxk
QmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwgMSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gVGhpcyB3aWxsIGJlIGZsYWt5LCBidXQgaXQncyBhIHJlYXNvbmFibGUgYXBwcm94aW1hdGlv
biBmb3IgdGVzdGluZwogICAgICAgICAvLyBpbiBhIGJyb3dzZXIgaW5zdGVhZCBvZiBEUlQuCiAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB3aW5kb3cuZGl2ID0g
ZGl2OwotICAgICAgICAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICcyMCcpOworICAg
ICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7CisgICAg
ICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAxNzAsIDEpOwogICAgICAgICB9LCAx
MDAwKTsKICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHdpbmRv
dy5kaXYgPSBkaXY7Ci0gICAgICAgICAgICBzaG91bGRCZSgnZGl2Lm9mZnNldFdpZHRoJywgJzEy
Jyk7CisgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAx
KTsKKyAgICAgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOwor
ICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwgMSk7CiAgICAg
ICAgIH0sIDIwMDApOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLWV4cGVj
dGVkLnR4dAppbmRleCA2M2Y3YjdmZTRmMjkwNmVlMzA4OWE4NWYyNmU5ZThmODkxYWQwZGQ1Li42
M2Y1MzNhNjU5MjU3NzQwNGY1N2ZmYzkxODc3ZGMyMjU4OWI3YmZkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNl
dWRvLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CkBAIC00LDExICs0LDE1IEBAIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFCiAKIAogUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgNTIKLVBBU1MgZGl2Lm9m
ZnNldFdpZHRoIGlzIDIwCi1QQVNTIGRpdi5vZmZzZXRXaWR0aCBpcyAxMgorUEFTUyBkaXYub2Zm
c2V0V2lkdGggaXMgd2l0aGluIDEgb2YgMjAKK1BBU1MgY29tcHV0ZWRUb3AgaXMgd2l0aGluIDEg
b2YgMTcwCitQQVNTIGRpdi5vZmZzZXRXaWR0aCBpcyB3aXRoaW4gMSBvZiAxMgorUEFTUyBjb21w
dXRlZFRvcCBpcyB3aXRoaW4gMSBvZiAyMDAKIFBBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIDUyCi1Q
QVNTIGRpdi5vZmZzZXRXaWR0aCBpcyAyMAotUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgMTIKK1BB
U1MgZGl2Lm9mZnNldFdpZHRoIGlzIHdpdGhpbiAxIG9mIDIwCitQQVNTIGNvbXB1dGVkVG9wIGlz
IHdpdGhpbiAxIG9mIDE3MAorUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgd2l0aGluIDEgb2YgMTIK
K1BBU1MgY29tcHV0ZWRUb3AgaXMgd2l0aGluIDEgb2YgMjAwCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sCmlu
ZGV4IGRjNTVhOWE4ZGNjYjc1NTcxNDQ1NGI1OGE0OGFkMGZjYjY0ZTMxZWMuLjNhY2Y3ODY1ZTk4
NTNiZjZlYWUzMDA4MzAwYjk4ZjM0OTQ3Y2Q2NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5zaXRpb24uaHRt
bApAQCAtOSwxMyArOSwxNiBAQAogICAgIGRpc3BsYXk6IGJsb2NrOwogICAgIGhlaWdodDogNTBw
eDsKICAgICB3aWR0aDogNTBweDsKLSAgICAtd2Via2l0LXRyYW5zaXRpb246IHdpZHRoIDJzOwot
ICAgIC1tb3otdHJhbnNpdGlvbjogd2lkdGggMnM7Ci0gICAgdHJhbnNpdGlvbjogd2lkdGggMnM7
CisgICAgdG9wOiA1MHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAtd2Via2l0LXRy
YW5zaXRpb246IHdpZHRoIDJzLCB0b3AgMnM7CisgICAgLW1vei10cmFuc2l0aW9uOiB3aWR0aCAy
cywgdG9wIDJzOworICAgIHRyYW5zaXRpb246IHdpZHRoIDJzLCB0b3AgMnM7CiB9CiAKICNiZWZv
cmUudHJhbnNpdGlvbjpiZWZvcmUsCiAjYWZ0ZXIudHJhbnNpdGlvbjphZnRlciB7CisgICAgdG9w
OiAyMDBweDsKICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgd2lkdGg6IDEwcHg7CiB9CkBAIC00Miw2
ICs0NSwxNCBAQCBkZXNjcmlwdGlvbignVHJhbnNpdGlvbnMgb24gOmJlZm9yZSBhbmQgOmFmdGVy
IHBzZXVkbyBlbGVtZW50cyBzaG91bGQgcnVuJyk7CiBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKK2Z1bmN0aW9uIGdldFBzZXVkb0NvbXB1dGVk
VG9wKGlkKQoreworICAgIHJldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCksICc6JyArIGlkKS50b3ApKTsKK30KKwor
Ly8gRklYTUU6IFRoaXMgdGVzdCBzaG91bGQgYmUgbW9kaWZpZWQgc28gc3VicGl4ZWwgZG9lc24n
dCBjYXVzZSBvZmYgYnkgb25lCisvLyBiZWxvdyBhbmQgaXQgbm8gbG9uZ2VyIG5lZWRzIHNob3Vs
ZEJlQ2xvc2VUby4KKwogZnVuY3Rpb24gdGVzdFRyYW5zaXRpb24oaWQpCiB7CiAgICAgdmFyIGRp
diA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKQEAgLTUwLDE5ICs2MSwyOSBAQCBmdW5j
dGlvbiB0ZXN0VHJhbnNpdGlvbihpZCkKICAgICBzaG91bGRCZSgnZGl2Lm9mZnNldFdpZHRoJywg
JzUyJyk7CiAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAgICAgaW50ZXJuYWxzLnBh
dXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnd2lkdGgnLCAxLjAsIGRpdiwgaWQp
OwotICAgICAgICBzaG91bGRCZSgnZGl2Lm9mZnNldFdpZHRoJywgJzIwJyk7CisgICAgICAgIHNo
b3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMjAsIDEpOworICAgICAgICBpbnRlcm5h
bHMucGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd0b3AnLCAxLjAsIGRpdiwg
aWQpOworICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAg
ICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDE3MCwgMSk7CiAgICAgICAgIGlu
dGVybmFscy5wYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ3dpZHRoJywgMi4w
LCBkaXYsIGlkKTsKLSAgICAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICcxMicpOwor
ICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKKyAgICAg
ICAgaW50ZXJuYWxzLnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgndG9wJywg
Mi4wLCBkaXYsIGlkKTsKKyAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRv
cChpZCk7CisgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAyMDAsIDEpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgd2lsbCBiZSBmbGFreSwgYnV0IGl0J3MgYSBy
ZWFzb25hYmxlIGFwcHJveGltYXRpb24gZm9yIHRlc3RpbmcKICAgICAgICAgLy8gaW4gYSBicm93
c2VyIGluc3RlYWQgb2YgRFJULgogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgd2luZG93LmRpdiA9IGRpdjsKLSAgICAgICAgICAgIHNob3VsZEJlKCdkaXYub2Zm
c2V0V2lkdGgnLCAnMjAnKTsKKyAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNl
dFdpZHRoJywgMjAsIDEpOworICAgICAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21w
dXRlZFRvcChpZCk7CisgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywg
MTcwLCAxKTsKICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICB3aW5kb3cuZGl2ID0gZGl2OwotICAgICAgICAgICAgc2hvdWxkQmUo
J2Rpdi5vZmZzZXRXaWR0aCcsICcxMicpOworICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdk
aXYub2Zmc2V0V2lkdGgnLCAxMiwgMSk7CisgICAgICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBz
ZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0
ZWRUb3AnLCAyMDAsIDEpOwogICAgICAgICB9LCAyMDAwKTsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187197</attachid>
            <date>2013-02-07 16:41:24 -0800</date>
            <delta_ts>2013-02-07 17:42:06 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106535-20130207163759.patch</filename>
            <type>text/plain</type>
            <size>17223</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFlYTE2NDVkMDA0MTAz
YzQ4ZDg5MzlhZjQxYjIxMDJkZGMxZmUyYi4uYWEwMWJlODJlMWJhMGNmMTQyNTU3NThhYzFmNTMx
MWFmYzdiOTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAyLTA3ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGdldENvbXB1dGVk
U3R5bGUoKSBkb2Vzbid0IHJlcG9ydCBpbnRlcm1lZGlhdGUgdmFsdWVzIGR1cmluZyBhIHRyYW5z
aXRpb24gb2YgYSBwc2V1ZG8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZh
aS4KKworICAgICAgICBFbGVtZW50Ojpjb21wdXRlZFN0eWxlIGFuZCBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUKKyAgICAgICAgc2hvdWxkIHVzZSB0aGUg
UHNldWRvRWxlbWVudCBhbmQgaXQncyByZW5kZXJlciBpZiB0aGV5IGV4aXN0IHNvIHRoYXQKKyAg
ICAgICAgcXVlcnlpbmcgdGhlIGNvbXB1dGVkIHN0eWxlIHdoaWxlIGFuIGFuaW1hdGlvbiBpcyBy
dW5uaW5nIHJldHVybnMKKyAgICAgICAgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB1cGRhdGVkIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnN0eWxlZE5vZGUpOiBBZGRlZCwgcmV0dXJucyBlaXRo
ZXIgdGhlIFBzZXVkb0VsZW1lbnQgb3IgdGhlIE5vZGUuCisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOiBVcGRhdGVkIHRv
IHVzZSBzdHlsZWROb2RlLgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uaDoKKyAgICAgICAgKENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29tcHV0ZWRTdHls
ZSk6IENoZWNrIHRoZSBQc2V1ZG9FbGVtZW50LCBub3QganVzdCB0aGUgY2FjaGVkIHBzZXVkbyBz
dHlsZS4KKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OnBzZXVkb0VsZW1lbnQpOiBSZW1vdmUgQVNTRVJUX05PVF9SRUFD
SEVEIHNvIHBhc3Npbmcgb3RoZXIgcHNldWRvcyByZXR1cm5zIDAuCisKIDIwMTMtMDItMDcgIEtl
bnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBGSVhNRXMg
aW4gV2luZG93RmVhdHVyZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBkODM1N2Q3NGZhOWMwMmY5N2E0ZTg3YmExNmJj
MjljYmYyNzMzMjUwLi4zMjI4Mjc4ZWFhZWNmMTNmZThmNjYwYzEyMzczZmQxMWVkZjhkZTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUg
IkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlBhaXIuaCIKKyNpbmNsdWRlICJQ
c2V1ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBAIC0xNTEwLDE3ICsxNTExLDI4IEBAIHN0YXRp
YyBib29sIGlzTGF5b3V0RGVwZW5kZW50UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQogICAgIH0KIH0KIAorTm9kZSogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzdHlsZWRO
b2RlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
aWYgKG1fbm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChQc2V1ZG9FbGVtZW50
KiBlbGVtZW50ID0gdG9FbGVtZW50KG1fbm9kZS5nZXQoKSktPnBzZXVkb0VsZW1lbnQobV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0K
KyAgICByZXR1cm4gbV9ub2RlLmdldCgpOworfQorCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0IHVwZGF0ZUxheW91dCkgY29uc3QKIHsKLSAgICBO
b2RlKiBub2RlID0gbV9ub2RlLmdldCgpOwotICAgIGlmICghbm9kZSkKKyAgICBOb2RlKiBzdHls
ZWROb2RlID0gdGhpcy0+c3R5bGVkTm9kZSgpOworICAgIGlmICghc3R5bGVkTm9kZSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAodXBkYXRlTGF5b3V0KSB7Ci0gICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IG1fbm9kZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3R5bGVkTm9kZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgLy8gRklYTUU6IFNvbWUgb2Yg
dGhlc2UgY2FzZXMgY291bGQgYmUgbmFycm93ZWQgZG93biBvciBvcHRpbWl6ZWQgYmV0dGVyLgog
ICAgICAgICBib29sIGZvcmNlRnVsbExheW91dCA9IGlzTGF5b3V0RGVwZW5kZW50UHJvcGVydHko
cHJvcGVydHlJRCkKLSAgICAgICAgICAgIHx8IG5vZGUtPmlzSW5TaGFkb3dUcmVlKCkKKyAgICAg
ICAgICAgIHx8IHN0eWxlZE5vZGUtPmlzSW5TaGFkb3dUcmVlKCkKICAgICAgICAgICAgIHx8IChk
b2N1bWVudC0+c3R5bGVSZXNvbHZlcklmRXhpc3RzKCkgJiYgZG9jdW1lbnQtPnN0eWxlUmVzb2x2
ZXJJZkV4aXN0cygpLT5oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpICYmIGRvY3Vt
ZW50LT5vd25lckVsZW1lbnQoKSkKICAgICAgICAgICAgIHx8IGRvY3VtZW50LT5zZWFtbGVzc1Bh
cmVudElGcmFtZSgpOwogCkBAIC0xNTI4LDMyICsxNTQwLDMzIEBAIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0CiAgICAgICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYm9vbCBuZWVkc1N0eWxl
UmVjYWxjID0gZG9jdW1lbnQtPmhhc1BlbmRpbmdGb3JjZWRTdHlsZVJlY2FsYygpOwotICAgICAg
ICAgICAgZm9yIChOb2RlKiBuID0gbV9ub2RlLmdldCgpOyBuICYmICFuZWVkc1N0eWxlUmVjYWxj
OyBuID0gbi0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgZm9yIChOb2RlKiBuID0gc3R5bGVk
Tm9kZTsgbiAmJiAhbmVlZHNTdHlsZVJlY2FsYzsgbiA9IG4tPnBhcmVudE5vZGUoKSkKICAgICAg
ICAgICAgICAgICBuZWVkc1N0eWxlUmVjYWxjID0gbi0+bmVlZHNTdHlsZVJlY2FsYygpOwogICAg
ICAgICAgICAgaWYgKG5lZWRzU3R5bGVSZWNhbGMpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQt
PnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBzdHls
ZSByZWNhbGMgY291bGQgaGF2ZSBjYXVzZWQgdGhlIHN0eWxlZCBub2RlIHRvIGJlIGRpc2NhcmRl
ZCBvciByZXBsYWNlZAorICAgICAgICAvLyBpZiBpdCB3YXMgYSBQc2V1ZG9FbGVtZW50IHNvIHdl
IG5lZWQgdG8gdXBkYXRlIGl0LgorICAgICAgICBzdHlsZWROb2RlID0gdGhpcy0+c3R5bGVkTm9k
ZSgpOwogICAgIH0KIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJl
cigpOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdHlsZWROb2RlLT5yZW5kZXJlcigp
OwogCiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZTsKICAgICBpZiAocmVuZGVyZXIgJiYg
cmVuZGVyZXItPmlzQ29tcG9zaXRlZCgpICYmIEFuaW1hdGlvbkNvbnRyb2xsZXI6OnN1cHBvcnRz
QWNjZWxlcmF0ZWRBbmltYXRpb25PZlByb3BlcnR5KHByb3BlcnR5SUQpKSB7CiAgICAgICAgIEFu
aW1hdGlvblVwZGF0ZUJsb2NrIGFuaW1hdGlvblVwZGF0ZUJsb2NrKHJlbmRlcmVyLT5hbmltYXRp
b24oKSk7CiAgICAgICAgIHN0eWxlID0gcmVuZGVyZXItPmFuaW1hdGlvbigpLT5nZXRBbmltYXRl
ZFN0eWxlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwotICAgICAgICBpZiAobV9wc2V1ZG9FbGVtZW50
U3BlY2lmaWVyKSB7CisgICAgICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgJiYgIXN0
eWxlZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBjYWNoZWQgcHNldWRvIHN0eWxlIHdpbGwgb25seSBleGlzdCBpZiB0aGUgYW5pbWF0aW9uIGhh
cyBiZWVuIHJ1biBhdCBsZWFzdCBvbmNlLgogICAgICAgICAgICAgc3R5bGUgPSBzdHlsZS0+Z2V0
Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZQotICAgICAgICBzdHlsZSA9IG5vZGUtPmNvbXB1dGVkU3R5bGUobV9wc2V1ZG9F
bGVtZW50U3BlY2lmaWVyKTsKKyAgICAgICAgc3R5bGUgPSBzdHlsZWROb2RlLT5jb21wdXRlZFN0
eWxlKHN0eWxlZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpID8gTk9QU0VVRE8gOiBtX3BzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpOwogCiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIgPT0gQkVGT1JFIHx8IG1fcHNldWRvRWxlbWVudFNwZWNpZmllciA9PSBBRlRFUikpCi0gICAg
ICAgIHJlbmRlcmVyID0gdG9FbGVtZW50KG5vZGUpLT5wc2V1ZG9FbGVtZW50UmVuZGVyZXIobV9w
c2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKLQogICAgIHByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eTo6
cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkocHJvcGVydHlJRCwgc3R5bGUtPmRpcmVjdGlv
bigpLCBzdHlsZS0+d3JpdGluZ01vZGUoKSk7CiAKICAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsK
QEAgLTE4MzgsOCArMTg1MSw5IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmFsaWduSXRlbXMoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnblNlbGY6CiAgICAgICAgICAgICBp
ZiAoc3R5bGUtPmFsaWduU2VsZigpID09IEFsaWduQXV0bykgewotICAgICAgICAgICAgICAgIGlm
IChtX25vZGUgJiYgbV9ub2RlLT5wYXJlbnROb2RlKCkgJiYgbV9ub2RlLT5wYXJlbnROb2RlKCkt
PmNvbXB1dGVkU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZVZhbHVlKG1fbm9kZS0+cGFyZW50Tm9kZSgpLT5jb21wdXRlZFN0eWxlKCktPmFs
aWduSXRlbXMoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogcGFyZW50ID0gc3R5bGVkTm9kZS0+
cGFyZW50Tm9kZSgpOworICAgICAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5jb21w
dXRlZFN0eWxlKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZShwYXJlbnQtPmNvbXB1dGVkU3R5bGUoKS0+YWxpZ25JdGVtcygpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoQWxpZ25TdHJldGNo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShzdHlsZS0+YWxpZ25TZWxmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IDZiMjM5ZTk1NjY0OGU4NTY0NTU0NjRi
NWIwYzY5M2Y2YmU1OWVlMGQuLjNjMmIwYWYwYTUwNTU1OWNkZWYyODk1M2NhOGQ5NWNmMmY4MmFh
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgKQEAgLTc4LDYgKzc4LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5
bGUsIGNvbnN0IFN0cmluZyYpOwogCisgICAgLy8gVGhlIHN0eWxlZCBub2RlIGlzIGVpdGhlciB0
aGUgbm9kZSBwYXNzZWQgaW50byBnZXRDb21wdXRlZFN0eWxlLCBvciB0aGUKKyAgICAvLyBQc2V1
ZG9FbGVtZW50IGZvciA6YmVmb3JlIGFuZCA6YWZ0ZXIgaWYgdGhleSBleGlzdC4KKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgc3R5bGVkRWxlbWVudCBzaW5jZSBpbiBKUyBnZXRDb21wdXRl
ZFN0eWxlIG9ubHkgd29ya3MKKyAgICAvLyBvbiBFbGVtZW50cywgYnV0IHJpZ2h0IG5vdyBlZGl0
aW5nIGNyZWF0ZXMgdGhlc2UgZm9yIHRleHQgbm9kZXMuIFdlIHNob3VsZCBmaXgKKyAgICAvLyB0
aGF0LgorICAgIE5vZGUqIHN0eWxlZE5vZGUoKSBjb25zdDsKKwogICAgIC8vIENTU09NIGZ1bmN0
aW9ucy4gRG9uJ3QgbWFrZSB0aGVzZSBwdWJsaWMuCiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJl
bnRSdWxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCA1MzI3YzBkNGI2ZTFiYzUwNDQ0ZDY3YWY1MmZhOWNhY2Vl
ZDExMzFiLi5hMmRmNmU2ZTBjZDIwOTYzOWIzZTM1ZjFhOTBlMzdhZGRjNWVhZjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC0xOTkxLDYgKzE5OTEsOSBAQCB2b2lkIEVsZW1lbnQ6OnNldE1p
bmltdW1TaXplRm9yUmVzaXppbmcoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKIAogUmVuZGVyU3R5
bGUqIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmll
cikKIHsKKyAgICBpZiAoUHNldWRvRWxlbWVudCogZWxlbWVudCA9IHBzZXVkb0VsZW1lbnQocHNl
dWRvRWxlbWVudFNwZWNpZmllcikpCisgICAgICAgIHJldHVybiBlbGVtZW50LT5jb21wdXRlZFN0
eWxlKCk7CisKICAgICAvLyBGSVhNRTogRmluZCBhbmQgdXNlIHRoZSByZW5kZXJlciBmcm9tIHRo
ZSBwc2V1ZG8gZWxlbWVudCBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgZWxlbWVudCBzbyB0aGF0IHRo
ZSAnbGVuZ3RoJwogICAgIC8vIHByb3BlcnRpZXMsIHdoaWNoIGFyZSBvbmx5IGtub3duIGJ5IHRo
ZSByZW5kZXJlciBiZWNhdXNlIGl0IGRpZCB0aGUgbGF5b3V0LCB3aWxsIGJlIGNvcnJlY3QgYW5k
IHNvIHRoYXQgdGhlCiAgICAgLy8gdmFsdWVzIHJldHVybmVkIGZvciB0aGUgIjpzZWxlY3Rpb24i
IHBzZXVkby1lbGVtZW50IHdpbGwgYmUgY29ycmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFy
ZURhdGEuaAppbmRleCAxMGI5YzU4NzM0ZDQ2Yzg4NmIzNjRmYmI0OGI4ZTZiNjM1NjY3MmI1Li4w
YWE5MDBkZDU1ZmVlZjRkNTEzMGZkMTcwZjgyN2Q2Y2NmZDZmNWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yNDAsNyArMjQwLDYgQEAgaW5saW5lIFBzZXVkb0VsZW1l
bnQqIEVsZW1lbnRSYXJlRGF0YTo6cHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9JZCkgY29u
c3QKICAgICBjYXNlIEFGVEVSOgogICAgICAgICByZXR1cm4gbV9nZW5lcmF0ZWRBZnRlci5nZXQo
KTsKICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU4Yjc5ZGEyYTg4MTNmZGFhNTUwMTY0M2VhNDIx
ODJkNjYzMmEzMzguLmIwMDE2NGI2NGI2ZWI1ODg4NDZlYzFlZDBhZThlOGVhNzU4ZDc0MjAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wMi0wNyAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBnZXRDb21wdXRlZFN0eWxlKCkgZG9lc24ndCByZXBv
cnQgaW50ZXJtZWRpYXRlIHZhbHVlcyBkdXJpbmcgYSB0cmFuc2l0aW9uIG9mIGEgcHNldWRvIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NjUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgVXBkYXRl
IHRlc3RzIHRvIGFsc28gY2hlY2sgZ2V0Q29tcHV0ZWRTdHlsZSBkdXJpbmcgYW5pbWF0aW9ucyBh
bmQgdHJhbnNpdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9w
c2V1ZG8tYW5pbWF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0
ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtZ2Vu
ZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLmh0bWw6CisKIDIw
MTMtMDItMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBmYXN0
L3BhcnNlci9kb2N1bWVudC13cml0ZS1ub3NjcmlwdC5odG1sIGZhaWxzIGZvciB0aHJlYWRlZCBI
VE1MIHBhcnNlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNv
bnRlbnQvcHNldWRvLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCBh
NGFjOWMyZTNhMDg4MDliYmM1Y2QzNGU4MjQyMjQwMzU0OTcxYjljLi43ZDY2NjE2MmU5OTBlOGQx
ZTg4YmMzMTFjYTJkZTkyOTI2MDZlYzQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLWV4
cGVjdGVkLnR4dApAQCAtNCwxMSArNCwxNSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAK
IFBBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIDUyCi1QQVNTIGRpdi5vZmZzZXRXaWR0aCBpcyAyMAot
UEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgMTIKK1BBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIHdpdGhp
biAxIG9mIDIwCitQQVNTIGNvbXB1dGVkVG9wIGlzIHdpdGhpbiAxIG9mIDE3MAorUEFTUyBkaXYu
b2Zmc2V0V2lkdGggaXMgd2l0aGluIDEgb2YgMTIKK1BBU1MgY29tcHV0ZWRUb3AgaXMgd2l0aGlu
IDEgb2YgMjAwCiBQQVNTIGRpdi5vZmZzZXRXaWR0aCBpcyA1MgotUEFTUyBkaXYub2Zmc2V0V2lk
dGggaXMgMjAKLVBBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIDEyCitQQVNTIGRpdi5vZmZzZXRXaWR0
aCBpcyB3aXRoaW4gMSBvZiAyMAorUEFTUyBjb21wdXRlZFRvcCBpcyB3aXRoaW4gMSBvZiAxNzAK
K1BBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIHdpdGhpbiAxIG9mIDEyCitQQVNTIGNvbXB1dGVkVG9w
IGlzIHdpdGhpbiAxIG9mIDIwMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQt
Y29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5l
cmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLmh0bWwKaW5kZXggODJmYzE4NDZiZTM0OTA0
OWJjNmYwYTBiMWU2OTBjYTk1YmViMDBhYy4uOWNmM2VmOTcyYWU2ZWNmNTU1OTU3MWM0MDRlODA5
YTBmZDI4MzlkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNv
bnRlbnQvcHNldWRvLWFuaW1hdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdl
bmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRpb24uaHRtbApAQCAtNywxMCArNywxMiBAQAog
ICBmcm9tIHsKICAgICB3aWR0aDogNTBweDsKICAgICBoZWlnaHQ6IDUwcHg7CisgICAgdG9wOiA1
MHB4OwogICB9CiAgIHRvIHsKICAgICB3aWR0aDogMTBweDsKICAgICBoZWlnaHQ6IDEwcHg7Cisg
ICAgdG9wOiAyMDBweDsKICAgfQogfQogCkBAIC0xOCwxMCArMjAsMTIgQEAKICAgZnJvbSB7CiAg
ICAgd2lkdGg6IDUwcHg7CiAgICAgaGVpZ2h0OiA1MHB4OworICAgIHRvcDogNTBweDsKICAgfQog
ICB0byB7CiAgICAgd2lkdGg6IDEwcHg7CiAgICAgaGVpZ2h0OiAxMHB4OworICAgIHRvcDogMjAw
cHg7CiAgIH0KIH0KIApAQCAtMzEsMTAgKzM1LDEyIEBACiAgICAgZGlzcGxheTogYmxvY2s7CiAg
ICAgaGVpZ2h0OiA1MHB4OwogICAgIHdpZHRoOiA1MHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKIH0KIAogI2FmdGVyLmFuaW1hdGU6YWZ0ZXIsCiAjYmVmb3JlLmFuaW1hdGU6YmVmb3JlIHsK
KyAgICB0b3A6IDIwMHB4OwogICAgIHdpZHRoOiAxMHB4OwogICAgIGhlaWdodDogMTBweDsKICAg
ICAtd2Via2l0LWFuaW1hdGlvbjogZXhhbXBsZSAyczsKQEAgLTY0LDYgKzcwLDE0IEBAIGRlc2Ny
aXB0aW9uKCdBbmltYXRpb25zIG9uIDpiZWZvcmUgYW5kIDphZnRlciBwc2V1ZG8gZWxlbWVudHMg
c2hvdWxkIHJ1bicpOwogaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCitmdW5jdGlvbiBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCkKK3sKKyAgICBy
ZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoaWQpLCAnOicgKyBpZCkudG9wKSk7Cit9CisKKy8vIEZJWE1FOiBUaGlzIHRl
c3Qgc2hvdWxkIGJlIG1vZGlmaWVkIHNvIHN1YnBpeGVsIGRvZXNuJ3QgY2F1c2Ugb2ZmIGJ5IG9u
ZQorLy8gYmVsb3cgYW5kIGl0IG5vIGxvbmdlciBuZWVkcyBzaG91bGRCZUNsb3NlVG8uCisKIGZ1
bmN0aW9uIHRlc3RBbmltYXRpb24oaWQpCiB7CiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGlkKTsKQEAgLTcyLDE5ICs4NiwyNyBAQCBmdW5jdGlvbiB0ZXN0QW5pbWF0aW9u
KGlkKQogICAgIHNob3VsZEJlKCdkaXYub2Zmc2V0V2lkdGgnLCAnNTInKTsKICAgICBpZiAod2lu
ZG93LmludGVybmFscykgewogICAgICAgICBpbnRlcm5hbHMucGF1c2VBbmltYXRpb25BdFRpbWVP
blBzZXVkb0VsZW1lbnQoJ2V4YW1wbGUnLCAxLjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRC
ZSgnZGl2Lm9mZnNldFdpZHRoJywgJzIwJyk7CisgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2
Lm9mZnNldFdpZHRoJywgMjAsIDEpOworICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0Nv
bXB1dGVkVG9wKGlkKTsKKyAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDE3
MCwgMSk7CiAgICAgICAgIGludGVybmFscy5wYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxl
bWVudCgnZXhhbXBsZScsIDIuMCwgZGl2LCBpZCk7Ci0gICAgICAgIHNob3VsZEJlKCdkaXYub2Zm
c2V0V2lkdGgnLCAnMTInKTsKKyAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lk
dGgnLCAxMiwgMSk7CisgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3Ao
aWQpOworICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMjAwLCAxKTsKICAg
ICB9IGVsc2UgewogICAgICAgICAvLyBUaGlzIHdpbGwgYmUgZmxha3ksIGJ1dCBpdCdzIGEgcmVh
c29uYWJsZSBhcHByb3hpbWF0aW9uIGZvciB0ZXN0aW5nCiAgICAgICAgIC8vIGluIGEgYnJvd3Nl
ciBpbnN0ZWFkIG9mIERSVC4KICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgIHdpbmRvdy5kaXYgPSBkaXY7Ci0gICAgICAgICAgICBzaG91bGRCZSgnZGl2Lm9mZnNl
dFdpZHRoJywgJzIwJyk7CisgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRX
aWR0aCcsIDIwLCAxKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0
ZWRUb3AoaWQpOworICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDE3
MCwgMSk7CiAgICAgICAgIH0sIDEwMDApOwogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgd2luZG93LmRpdiA9IGRpdjsKLSAgICAgICAgICAgIHNob3VsZEJlKCdk
aXYub2Zmc2V0V2lkdGgnLCAnMTInKTsKKyAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2
Lm9mZnNldFdpZHRoJywgMTIsIDEpOworICAgICAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1
ZG9Db21wdXRlZFRvcChpZCk7CisgICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVk
VG9wJywgMjAwLCAxKTsKICAgICAgICAgfSwgMjAwMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5zaXRpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNl
dWRvLXRyYW5zaXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDYzZjdiN2ZlNGYyOTA2ZWUzMDg5YTg1
ZjI2ZTllOGY4OTFhZDBkZDUuLjYzZjUzM2E2NTkyNTc3NDA0ZjU3ZmZjOTE4NzdkYzIyNTg5Yjdi
ZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3Bz
ZXVkby10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
ZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi1leHBlY3RlZC50eHQKQEAgLTQsMTEg
KzQsMTUgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIGRpdi5vZmZzZXRXaWR0
aCBpcyA1MgotUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgMjAKLVBBU1MgZGl2Lm9mZnNldFdpZHRo
IGlzIDEyCitQQVNTIGRpdi5vZmZzZXRXaWR0aCBpcyB3aXRoaW4gMSBvZiAyMAorUEFTUyBjb21w
dXRlZFRvcCBpcyB3aXRoaW4gMSBvZiAxNzAKK1BBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIHdpdGhp
biAxIG9mIDEyCitQQVNTIGNvbXB1dGVkVG9wIGlzIHdpdGhpbiAxIG9mIDIwMAogUEFTUyBkaXYu
b2Zmc2V0V2lkdGggaXMgNTIKLVBBU1MgZGl2Lm9mZnNldFdpZHRoIGlzIDIwCi1QQVNTIGRpdi5v
ZmZzZXRXaWR0aCBpcyAxMgorUEFTUyBkaXYub2Zmc2V0V2lkdGggaXMgd2l0aGluIDEgb2YgMjAK
K1BBU1MgY29tcHV0ZWRUb3AgaXMgd2l0aGluIDEgb2YgMTcwCitQQVNTIGRpdi5vZmZzZXRXaWR0
aCBpcyB3aXRoaW4gMSBvZiAxMgorUEFTUyBjb21wdXRlZFRvcCBpcyB3aXRoaW4gMSBvZiAyMDAK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5z
aXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVk
by10cmFuc2l0aW9uLmh0bWwKaW5kZXggZGM1NWE5YThkY2NiNzU1NzE0NDU0YjU4YTQ4YWQwZmNi
NjRlMzFlYy4uM2FjZjc4NjVlOTg1M2JmNmVhZTMwMDgzMDBiOThmMzQ5NDdjZDY0OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5z
aXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9w
c2V1ZG8tdHJhbnNpdGlvbi5odG1sCkBAIC05LDEzICs5LDE2IEBACiAgICAgZGlzcGxheTogYmxv
Y2s7CiAgICAgaGVpZ2h0OiA1MHB4OwogICAgIHdpZHRoOiA1MHB4OwotICAgIC13ZWJraXQtdHJh
bnNpdGlvbjogd2lkdGggMnM7Ci0gICAgLW1vei10cmFuc2l0aW9uOiB3aWR0aCAyczsKLSAgICB0
cmFuc2l0aW9uOiB3aWR0aCAyczsKKyAgICB0b3A6IDUwcHg7CisgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgIC13ZWJraXQtdHJhbnNpdGlvbjogd2lkdGggMnMsIHRvcCAyczsKKyAgICAtbW96
LXRyYW5zaXRpb246IHdpZHRoIDJzLCB0b3AgMnM7CisgICAgdHJhbnNpdGlvbjogd2lkdGggMnMs
IHRvcCAyczsKIH0KIAogI2JlZm9yZS50cmFuc2l0aW9uOmJlZm9yZSwKICNhZnRlci50cmFuc2l0
aW9uOmFmdGVyIHsKKyAgICB0b3A6IDIwMHB4OwogICAgIGhlaWdodDogMTBweDsKICAgICB3aWR0
aDogMTBweDsKIH0KQEAgLTQyLDYgKzQ1LDE0IEBAIGRlc2NyaXB0aW9uKCdUcmFuc2l0aW9ucyBv
biA6YmVmb3JlIGFuZCA6YWZ0ZXIgcHNldWRvIGVsZW1lbnRzIHNob3VsZCBydW4nKTsKIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAorZnVuY3Rp
b24gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpCit7CisgICAgcmV0dXJuIE1hdGgucm91bmQocGFy
c2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSwgJzon
ICsgaWQpLnRvcCkpOworfQorCisvLyBGSVhNRTogVGhpcyB0ZXN0IHNob3VsZCBiZSBtb2RpZmll
ZCBzbyBzdWJwaXhlbCBkb2Vzbid0IGNhdXNlIG9mZiBieSBvbmUKKy8vIGJlbG93IGFuZCBpdCBu
byBsb25nZXIgbmVlZHMgc2hvdWxkQmVDbG9zZVRvLgorCiBmdW5jdGlvbiB0ZXN0VHJhbnNpdGlv
bihpZCkKIHsKICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwpAQCAt
NTAsMTkgKzYxLDI5IEBAIGZ1bmN0aW9uIHRlc3RUcmFuc2l0aW9uKGlkKQogICAgIHNob3VsZEJl
KCdkaXYub2Zmc2V0V2lkdGgnLCAnNTInKTsKICAgICBpZiAod2luZG93LmludGVybmFscykgewog
ICAgICAgICBpbnRlcm5hbHMucGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd3
aWR0aCcsIDEuMCwgZGl2LCBpZCk7Ci0gICAgICAgIHNob3VsZEJlKCdkaXYub2Zmc2V0V2lkdGgn
LCAnMjAnKTsKKyAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwg
MSk7CisgICAgICAgIGludGVybmFscy5wYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1l
bnQoJ3RvcCcsIDEuMCwgZGl2LCBpZCk7CisgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRv
Q29tcHV0ZWRUb3AoaWQpOworICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywg
MTcwLCAxKTsKICAgICAgICAgaW50ZXJuYWxzLnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRv
RWxlbWVudCgnd2lkdGgnLCAyLjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZSgnZGl2Lm9m
ZnNldFdpZHRoJywgJzEyJyk7CisgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNldFdp
ZHRoJywgMTIsIDEpOworICAgICAgICBpbnRlcm5hbHMucGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Q
c2V1ZG9FbGVtZW50KCd0b3AnLCAyLjAsIGRpdiwgaWQpOworICAgICAgICBjb21wdXRlZFRvcCA9
IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21w
dXRlZFRvcCcsIDIwMCwgMSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVGhpcyB3aWxsIGJl
IGZsYWt5LCBidXQgaXQncyBhIHJlYXNvbmFibGUgYXBwcm94aW1hdGlvbiBmb3IgdGVzdGluZwog
ICAgICAgICAvLyBpbiBhIGJyb3dzZXIgaW5zdGVhZCBvZiBEUlQuCiAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB3aW5kb3cuZGl2ID0gZGl2OwotICAgICAgICAg
ICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICcyMCcpOworICAgICAgICAgICAgc2hvdWxk
QmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7CisgICAgICAgICAgICBjb21wdXRl
ZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICAgICAgICAgIHNob3VsZEJlQ2xv
c2VUbygnY29tcHV0ZWRUb3AnLCAxNzAsIDEpOwogICAgICAgICB9LCAxMDAwKTsKICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHdpbmRvdy5kaXYgPSBkaXY7Ci0g
ICAgICAgICAgICBzaG91bGRCZSgnZGl2Lm9mZnNldFdpZHRoJywgJzEyJyk7CisgICAgICAgICAg
ICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKKyAgICAgICAgICAg
IGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOworICAgICAgICAgICAgc2hv
dWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwgMSk7CiAgICAgICAgIH0sIDIwMDApOwog
ICAgIH0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>