<?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>124626</bug_id>
          
          <creation_ts>2013-11-19 18:44:15 -0800</creation_ts>
          <short_desc>Allow ImageBuffer to use a backing store that is larger than necessary</short_desc>
          <delta_ts>2013-12-04 13:32:51 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>952375</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-19 18:44:15 -0800</bug_when>
    <thetext>Allow ImageBuffer to use an IOSurface that is larger than necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952389</commentid>
    <comment_count>1</comment_count>
      <attachid>217375</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-19 19:55:53 -0800</bug_when>
    <thetext>Created attachment 217375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952392</commentid>
    <comment_count>2</comment_count>
      <attachid>217375</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-19 20:07:20 -0800</bug_when>
    <thetext>Comment on attachment 217375
Patch

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

Looks good to me, but I think smfr or someone else smart should review.  I have some concern about that &quot;if () ASSERT&quot; thing.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:104
&gt; +    float yMagnification = 1.0 * backingStoreSize.height() / internalSize.height();

Should this be 1.0f to avoid partial math using doubles? Or is that actually desired?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:188
&gt; +        ASSERT(m_data.m_backingStoreSize == m_logicalSize);

Isn&apos;t this kind of weird? In a release build will the &quot;if&quot; slurp up the next executable line in the program?

I think it might be a little safer to do something like &quot;ASSERT(acceleratedRendering || (m_data.m_backingStoreSize == m_logicalSize));&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952393</commentid>
    <comment_count>3</comment_count>
      <attachid>217375</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-19 20:12:02 -0800</bug_when>
    <thetext>Comment on attachment 217375
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:104
&gt;&gt; +    float yMagnification = 1.0 * backingStoreSize.height() / internalSize.height();
&gt; 
&gt; Should this be 1.0f to avoid partial math using doubles? Or is that actually desired?

I was told previously that we don&apos;t use the f suffix, though you&apos;re right - there is a semantic difference. Does anyone else want to weigh in?

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:188
&gt;&gt; +        ASSERT(m_data.m_backingStoreSize == m_logicalSize);
&gt; 
&gt; Isn&apos;t this kind of weird? In a release build will the &quot;if&quot; slurp up the next executable line in the program?
&gt; 
&gt; I think it might be a little safer to do something like &quot;ASSERT(acceleratedRendering || (m_data.m_backingStoreSize == m_logicalSize));&quot;

Oh! You&apos;re totally right, I didn&apos;t even think of that. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952394</commentid>
    <comment_count>4</comment_count>
      <attachid>217377</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-19 20:17:23 -0800</bug_when>
    <thetext>Created attachment 217377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952397</commentid>
    <comment_count>5</comment_count>
      <attachid>217377</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-19 20:46:48 -0800</bug_when>
    <thetext>Comment on attachment 217377
Patch

Looks great to me! I think smfr/thorton/dino should do the final r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952682</commentid>
    <comment_count>6</comment_count>
      <attachid>217377</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-11-20 10:55:26 -0800</bug_when>
    <thetext>Comment on attachment 217377
Patch

Why limit this capability just to IOSurface-backed ImageBuffers? Sure, IOSurfaces are more expensive, but it could be useful to other platforms to re-use buffers too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953222</commentid>
    <comment_count>7</comment_count>
      <attachid>217592</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-21 12:20:28 -0800</bug_when>
    <thetext>Created attachment 217592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953226</commentid>
    <comment_count>8</comment_count>
      <attachid>217592</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-21 12:26:59 -0800</bug_when>
    <thetext>Comment on attachment 217592
Patch

Attachment 217592 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/32498029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953232</commentid>
    <comment_count>9</comment_count>
      <attachid>217592</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-21 12:31:16 -0800</bug_when>
    <thetext>Comment on attachment 217592
Patch

Attachment 217592 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/32548034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953243</commentid>
    <comment_count>10</comment_count>
      <attachid>217601</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-21 12:41:18 -0800</bug_when>
    <thetext>Created attachment 217601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953786</commentid>
    <comment_count>11</comment_count>
      <attachid>217741</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-22 23:14:03 -0800</bug_when>
    <thetext>Created attachment 217741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954648</commentid>
    <comment_count>12</comment_count>
      <attachid>217977</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-27 20:42:23 -0800</bug_when>
    <thetext>Created attachment 217977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955491</commentid>
    <comment_count>13</comment_count>
      <attachid>217977</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-02 11:42:49 -0800</bug_when>
    <thetext>Comment on attachment 217977
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:101
&gt; +static FloatSize computeSizeInUserBounds(const FloatSize&amp; logicalSize, const IntSize&amp; backingStoreSize, const IntSize&amp; internalSize)

&quot;size in user bounds&quot; is confusing. Size in user space? Bounds in user space?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:132
&gt; +    m_data.m_bytesPerRow = 4 * Checked&lt;unsigned, RecordOverflow&gt;(m_data.m_backingStoreSize.width());

Don&apos;t you want to do Checked&lt;unsigned, &gt; after multiplying by 4?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:170
&gt; -        ASSERT(!(reinterpret_cast&lt;size_t&gt;(m_data.m_data) &amp; 2));
&gt; +        ASSERT(!(reinterpret_cast&lt;intptr_t&gt;(m_data.m_data) &amp; 3));

Please explain this change.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:203
&gt; +static RetainPtr&lt;CGImageRef&gt; maybeCropToBounds(RetainPtr&lt;CGImageRef&gt; image, const IntSize&amp; bounds)

Param should just be a CGImageRef.

I think the name needs to make it clearer that it can return a new image.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:207
&gt; +        return CGImageCreateWithImageInRect(image.get(), CGRectMake(0, static_cast&lt;int&gt;(CGImageGetHeight(image.get())) - bounds.height(), bounds.width(), bounds.height()));

Is this expensive? Does it blow away any gains from re-using larger buffers?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:245
&gt; +// The returned image might be larger than the internalSize(). If you want the smaller
&gt; +// image, crop the result.

Is this comment intended for callers? If so, it should go in the header. It&apos;s also a scarey behavior change; do we need to vet all call sites? How do we find those affected?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:316
&gt; +    CGContextClipToMask(platformContextToClip, FloatRect(FloatPoint(), backingStoreSizeInUserSpace), image.get());
&gt; +    CGContextTranslateCTM(platformContextToClip, 0, backingStoreSizeInUserSpace.height() - rect.height());
&gt; +    CGContextClipToRect(platformContextToClip, FloatRect(FloatPoint(), rect.size()));

It might be faster to clip to the rect before clipping to the mask.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:352
&gt; +    if (sourceCopy-&gt;context()-&gt;isAcceleratedContext())
&gt; +        sourceCopy-&gt;flushContext();

Do you need this?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:357
&gt; +    if (sourceCopy-&gt;context()-&gt;isAcceleratedContext())
&gt; +        sourceCopy-&gt;flushContext();

Do you need this?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:486
&gt;          image = copyNativeImage(CopyBackingStore);
&gt; +        image = maybeCropToBounds(image, internalSize());

We can&apos;t make a smaller image in one go?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:161
&gt; -        srcBytesPerRow = 4 * size.width();
&gt; +        srcBytesPerRow = m_bytesPerRow.unsafeGet();

Explain this change?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:388
&gt; -        destBytesPerRow = 4 * size.width();
&gt; +        destBytesPerRow = m_bytesPerRow.unsafeGet();

Ditto.

&gt; LayoutTests/ChangeLog:19
&gt; +        * fast/canvas/script-tests/canvas-fillPath-shadow.js: Don&apos;t sample a canvas at exactly
&gt; +        the corner of a drawn shape (because the corner might be antialiased). Instead, sample
&gt; +        a single pixel inside the shape
&gt; +        * fast/canvas/script-tests/canvas-scale-shadowBlur.js: Don&apos;t sample a canvas at exactly
&gt; +        the edge of the blur radius. Instead, sample a single pixel past the blur radius.
&gt; +        * fast/canvas/script-tests/canvas-scale-strokePath-shadow.js:
&gt; +        (shouldBeAround): Allow this test to be less strict when sampling inside a blurred region
&gt; +        * platform/mac/fast/canvas/canvas-scale-shadowBlur-expected.txt: Matching update w/r/t
&gt; +        canvas-scale-shadowBlur.js

It&apos;s not clear to me if making these changes invalidates the purpose of the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955708</commentid>
    <comment_count>14</comment_count>
      <attachid>217977</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-12-02 17:27:20 -0800</bug_when>
    <thetext>Comment on attachment 217977
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:101
&gt;&gt; +static FloatSize computeSizeInUserBounds(const FloatSize&amp; logicalSize, const IntSize&amp; backingStoreSize, const IntSize&amp; internalSize)
&gt; 
&gt; &quot;size in user bounds&quot; is confusing. Size in user space? Bounds in user space?

Renamed. Done.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:132
&gt;&gt; +    m_data.m_bytesPerRow = 4 * Checked&lt;unsigned, RecordOverflow&gt;(m_data.m_backingStoreSize.width());
&gt; 
&gt; Don&apos;t you want to do Checked&lt;unsigned, &gt; after multiplying by 4?

That wouldn&apos;t check the initial multiplication

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:170
&gt;&gt; +        ASSERT(!(reinterpret_cast&lt;intptr_t&gt;(m_data.m_data) &amp; 3));
&gt; 
&gt; Please explain this change.

I thought i would clean this up while I was here. Should I split it out into a new patch?

The &quot;&amp;2&quot; was suspicious, so I asked the original author and he said it should have been &quot;&amp;3&quot;

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:203
&gt;&gt; +static RetainPtr&lt;CGImageRef&gt; maybeCropToBounds(RetainPtr&lt;CGImageRef&gt; image, const IntSize&amp; bounds)
&gt; 
&gt; Param should just be a CGImageRef.
&gt; 
&gt; I think the name needs to make it clearer that it can return a new image.

Done.

Done.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:207
&gt;&gt; +        return CGImageCreateWithImageInRect(image.get(), CGRectMake(0, static_cast&lt;int&gt;(CGImageGetHeight(image.get())) - bounds.height(), bounds.width(), bounds.height()));
&gt; 
&gt; Is this expensive? Does it blow away any gains from re-using larger buffers?

This function is rarely called (only when the user explicitly wants an Image of the content (ImageBuffer::copyImage) and when creating a Data URL for the ImageBuffer (ImageBUffer::toDataURL). If you don&apos;t do those two things, you should be good. Eventually when people can start using larger buffers, we&apos;ll want this to be opt-in.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:245
&gt;&gt; +// image, crop the result.
&gt; 
&gt; Is this comment intended for callers? If so, it should go in the header. It&apos;s also a scarey behavior change; do we need to vet all call sites? How do we find those affected?

Done.

The function is private and CG-specific; the only callers are in ImageBufferCG.cpp. I have already vetted them.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:316
&gt;&gt; +    CGContextClipToRect(platformContextToClip, FloatRect(FloatPoint(), rect.size()));
&gt; 
&gt; It might be faster to clip to the rect before clipping to the mask.

Done.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:352
&gt;&gt; +        sourceCopy-&gt;flushContext();
&gt; 
&gt; Do you need this?

No, I don&apos;t. Good catch.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:357
&gt;&gt; +        sourceCopy-&gt;flushContext();
&gt; 
&gt; Do you need this?

No, I don&apos;t. Good catch.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:486
&gt;&gt; +        image = maybeCropToBounds(image, internalSize());
&gt; 
&gt; We can&apos;t make a smaller image in one go?

I actually don&apos;t believe so. I don&apos;t believe there&apos;s a call that goes from an IOSurface to a CGImage that only contains a region of the IOSurface (We seem to only have wkIOSurfaceContextCreateImage). I also don&apos;t think I can modify CGImageToDataURL because it just calls CGImageDestinationAddImage with the CGImage.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:161
&gt;&gt; +        srcBytesPerRow = m_bytesPerRow.unsafeGet();
&gt; 
&gt; Explain this change?

If the backing surface is wider than size.width(), the srcBytesPerRow will be greater than 4 * size.width(). Otherwise the output looks like a rainbow table. This line is simply an assumption that the backing store is exactly as wide as the image itself.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:388
&gt;&gt; +        destBytesPerRow = m_bytesPerRow.unsafeGet();
&gt; 
&gt; Ditto.

Same explanation.

&gt;&gt; LayoutTests/ChangeLog:19
&gt;&gt; +        canvas-scale-shadowBlur.js
&gt; 
&gt; It&apos;s not clear to me if making these changes invalidates the purpose of the tests.

We talked about this offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955714</commentid>
    <comment_count>15</comment_count>
      <attachid>218245</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-12-02 17:42:43 -0800</bug_when>
    <thetext>Created attachment 218245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955729</commentid>
    <comment_count>16</comment_count>
      <attachid>218245</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-02 18:15:04 -0800</bug_when>
    <thetext>Comment on attachment 218245
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:103
&gt; +    float xMagnification = 1.0 * backingStoreSize.width() / internalSize.width();

The 1.0 * is weird. Why not static_cast&lt;float&gt;()?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:170
&gt; -        ASSERT(!(reinterpret_cast&lt;size_t&gt;(m_data.m_data) &amp; 2));
&gt; +        ASSERT(!(reinterpret_cast&lt;intptr_t&gt;(m_data.m_data) &amp; 3));

You still don&apos;t explain this in the changelog. When did it get added? How was it wrong?

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:203
&gt; +static CGImageRef maybeCreateCroppedImage(CGImageRef image, const IntSize&amp; bounds)

This should return a RetainPtr (or some other smart pointer type). I think createCroppedImageIfNecessary() would be a slightly better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955753</commentid>
    <comment_count>17</comment_count>
      <attachid>218245</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-12-02 20:02:28 -0800</bug_when>
    <thetext>Comment on attachment 218245
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:103
&gt;&gt; +    float xMagnification = 1.0 * backingStoreSize.width() / internalSize.width();
&gt; 
&gt; The 1.0 * is weird. Why not static_cast&lt;float&gt;()?

Habit. Done.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:170
&gt;&gt; +        ASSERT(!(reinterpret_cast&lt;intptr_t&gt;(m_data.m_data) &amp; 3));
&gt; 
&gt; You still don&apos;t explain this in the changelog. When did it get added? How was it wrong?

I&apos;m going to revert this change. It doesn&apos;t belong here, anyway. I&apos;ll submit another patch for it.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:203
&gt;&gt; +static CGImageRef maybeCreateCroppedImage(CGImageRef image, const IntSize&amp; bounds)
&gt; 
&gt; This should return a RetainPtr (or some other smart pointer type). I think createCroppedImageIfNecessary() would be a slightly better name.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955756</commentid>
    <comment_count>18</comment_count>
      <attachid>218260</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-12-02 20:16:21 -0800</bug_when>
    <thetext>Created attachment 218260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956102</commentid>
    <comment_count>19</comment_count>
      <attachid>218260</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-03 14:23:56 -0800</bug_when>
    <thetext>Comment on attachment 218260
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:210
&gt; +        image = CGBitmapContextCreateImage(context.get());

Please don&apos;t assign to parameters. I think this may also be leaking; you want adoptCF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956232</commentid>
    <comment_count>20</comment_count>
      <attachid>218260</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-12-03 17:49:08 -0800</bug_when>
    <thetext>Comment on attachment 218260
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:210
&gt;&gt; +        image = CGBitmapContextCreateImage(context.get());
&gt; 
&gt; Please don&apos;t assign to parameters. I think this may also be leaking; you want adoptCF.

Ah, you&apos;re totally right! :O</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956245</commentid>
    <comment_count>21</comment_count>
      <attachid>218372</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-12-03 18:43:42 -0800</bug_when>
    <thetext>Created attachment 218372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956472</commentid>
    <comment_count>22</comment_count>
      <attachid>218422</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-12-04 11:21:20 -0800</bug_when>
    <thetext>Created attachment 218422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956473</commentid>
    <comment_count>23</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-12-04 11:22:23 -0800</bug_when>
    <thetext>I am investigating check-webkit-style to see why it incorrectly thinks a turnary statement is an initializer list</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956475</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-04 11:22:47 -0800</bug_when>
    <thetext>Attachment 218422 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/canvas/script-tests/canvas-fillPath-shadow.js&apos;, u&apos;LayoutTests/fast/canvas/script-tests/canvas-scale-shadowBlur.js&apos;, u&apos;LayoutTests/fast/canvas/script-tests/canvas-scale-strokePath-shadow.js&apos;, u&apos;LayoutTests/platform/mac/fast/canvas/canvas-scale-shadowBlur-expected.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/ImageBuffer.h&apos;, u&apos;Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cg/ImageBufferDataCG.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:364:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:364:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:365:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:365:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:367:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:367:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:370:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:370:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:371:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:371:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 10 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956497</commentid>
    <comment_count>25</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-12-04 11:49:59 -0800</bug_when>
    <thetext>Style failure was caused by r160084</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956569</commentid>
    <comment_count>26</comment_count>
      <attachid>218422</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-04 13:32:48 -0800</bug_when>
    <thetext>Comment on attachment 218422
Patch

Clearing flags on attachment: 218422

Committed r160121: &lt;http://trac.webkit.org/changeset/160121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956570</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-04 13:32:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217375</attachid>
            <date>2013-11-19 19:55:53 -0800</date>
            <delta_ts>2013-11-19 20:17:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131119195553.patch</filename>
            <type>text/plain</type>
            <size>14263</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDAxMjFjNTc2MjkxMzhi
NzM4YTMwNTMwMjdjYWVkNWQ1YmVmZTE0NS4uNWU5MWRkYmViMGZjYjE5YmQzOWQ4NTNjZWZmYTlj
OGRmYzBmODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTExLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBhbiBJT1N1cmZhY2UgaXMgc28gZXhwZW5zaXZlLCBpdCB3b3VsZCBiZSBiZW5l
ZmljaWFsCisgICAgICAgIHRvIGhhdmUgYSBwb29sIG9mIHByZS1jcmVhdGVkIElPU3VyZmFjZXMg
YXZhaWxhYmxlLiBIb3dldmVyLCB0aGlzIG1lYW5zCisgICAgICAgIHRoYXQgSW1hZ2VCdWZmZXIg
bWlnaHQgaGF2ZSB0byB1c2UgYW4gSU9TdXJmYWNlIHRoYXQgaXMgbGFyZ2VyIHRoYW4KKyAgICAg
ICAgdGhlIGV4YWN0IGRpbWVuc2lvbnMgdGhhdCBpdCBuZWVkcy4gVGhpcyBwYXRjaCBhZGRzIGEg
ZmllbGQsCisgICAgICAgIG1fYmFja2luZ1N0b3JlU2l6ZSwgdG8gQ0cncyBJbWFnZUJ1ZmZlckRh
dGEgY2xhc3MsIGFuZCB1c2VzIHRoaXMgbmV3CisgICAgICAgIGZpZWxkIHdoZW4gcGVyZm9ybWlu
ZyBJbWFnZUJ1ZmZlciBvcGVyYXRpb25zIHRvIGFsbG93IGZvciBsYXJnZXItdGhhbi0KKyAgICAg
ICAgbmVjZXNzYXJ5IElPU3VyZmFjZXMuIENvbnRlbnQgaXMgYWx3YXlzIGRyYXduIGluIHRoZSB0
b3AgbGVmdCBjb3JuZXIKKyAgICAgICAgb2YgdGhlIGJhY2tpbmcgSU9TdXJmYWNlLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBhcmUgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpiYXNlVHJhbnNmb3JtKTogVGhlIGJhc2Ug
dHJhbnNmb3JtIGhhcyB0byBwdXQKKyAgICAgICAgY29udGVudCBhdCB0aGUgdG9wIGxlZnQgY29y
bmVyIGluc3RlYWQgb2YgYm90dG9tIGxlZnQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVTaXplSW5Vc2Vy
Qm91bmRzKTogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZmlndXJlIG91dAorICAgICAgICB0aGUg
ZGltZW5zaW9ucyBvZiB0aGUgYmFja2luZyB0ZXh0dXJlIGluIHVzZXIgc3BhY2UKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6IFNldCB1cCBuZXcgbV9iYWNraW5n
U3RvcmVTaXplIG1lbWJlcgorICAgICAgICAoV2ViQ29yZTo6bWF5YmVDcm9wVG9Cb3VuZHMpOiBT
b21lIEltYWdlQnVmZmVyIEFQSSBmdW5jdGlvbnMgcmVxdWlyZQorICAgICAgICBvdXRwdXR0aW5n
IGFuIGltYWdlIHdpdGggbG9naWNhbCBzaXplLiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBj
cm9wcGluZworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJbWFnZSk6IFVwZGF0
ZWQgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeQorICAgICAgICBJT1N1cmZhY2VzCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6Y2xpcCk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
cHV0Qnl0ZUFycmF5KTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwpOiBEaXR0bworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmg6IE5ldyBtX2JhY2tpbmdTdG9yZVNpemUgZmllbGQKKwogMjAxMy0xMS0xOSAgWmh1
YW5nIFpoaWdhbmcgIDx6aHVhbmd6Z0Bjbi5mdWppdHN1LmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgc3BpbiBjb250cm9sIG9uIFdpbkNFIHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAxZDRmMDg1ZmQxZjQ3MmI0YTgzYWVhZTY5
MzhmYWMwYzZjZjQ5ZGIyLi5kNzgzZmQ1Y2VhNWQ0MTY2NDBkZThmNmU5OGMzMmI3ZDg1ZDM3Y2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
QEAgLTExOCw3ICsxMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdHJh
bnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0
Q29sb3JTcGFjZSk7CiAgICAgICAgIHZvaWQgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNv
bnN0IFZlY3RvcjxpbnQ+Jik7CiAjZWxzZQotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwg
aW50ZXJuYWxTaXplKCkuaGVpZ2h0KCkpOyB9CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBiYXNl
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0xLCAw
LCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKTsgfQogI2VuZGlmCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGQ3YTk3ZTZmMWMxODFiNWQ1MzMyYzZiOTEw
YTVkM2U5ZjhmMzk2MWYuLjI5ODk4ZjVlYzBjZmVjNmYzNmI3NjI3M2Y5NjhlMjc3MzZiNmFlOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCkBAIC05OCw2ICs5OCwxMyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlSW1hZ2VE
YXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAgZmFzdEZyZWUoY29uc3Rf
Y2FzdDx2b2lkKj4oZGF0YSkpOwogfQogCitzdGF0aWMgRmxvYXRTaXplIGNvbXB1dGVTaXplSW5V
c2VyQm91bmRzKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tpbmdTdG9yZVNpemUsIGNvbnN0IEludFNpemUmIGludGVybmFsU2l6ZSkKK3sKKyAgICBmbG9h
dCB4TWFnbmlmaWNhdGlvbiA9IDEuMCAqIGJhY2tpbmdTdG9yZVNpemUud2lkdGgoKSAvIGludGVy
bmFsU2l6ZS53aWR0aCgpOworICAgIGZsb2F0IHlNYWduaWZpY2F0aW9uID0gMS4wICogYmFja2lu
Z1N0b3JlU2l6ZS5oZWlnaHQoKSAvIGludGVybmFsU2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4g
RmxvYXRTaXplKGxvZ2ljYWxTaXplLndpZHRoKCkgKiB4TWFnbmlmaWNhdGlvbiwgbG9naWNhbFNp
emUuaGVpZ2h0KCkgKiB5TWFnbmlmaWNhdGlvbik7Cit9CisKIEltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGJvb2wmIHN1
Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkgLy8gTk9URTogVGhlIGlucHV0IGhlcmUgaXNuJ3Qg
aW1wb3J0YW50IGFzIEltYWdlQnVmZmVyRGF0YUNHJ3MgY29uc3RydWN0b3IganVzdCBpZ25vcmVz
IGl0LgogICAgICwgbV9sb2dpY2FsU2l6ZShzaXplKQpAQCAtMTExLDYgKzExOCw3IEBAIEltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gSW50U2l6
ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKKyAgICBtX2RhdGEubV9iYWNraW5nU3RvcmVT
aXplID0gbV9zaXplOwogCiAgICAgc3VjY2VzcyA9IGZhbHNlOyAgLy8gTWFrZSBlYXJseSByZXR1
cm4gbWVhbiBmYWlsdXJlLgogICAgIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IHJlbmRlcmlu
Z01vZGUgPT0gQWNjZWxlcmF0ZWQ7CkBAIC0xNDgsOCArMTU2LDEwIEBAIEltYWdlQnVmZmVyOjpJ
bWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UKICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjZ0NvbnRleHQ7CiAgICAgaWYg
KGFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5H
X1NUT1JFKQotICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gY3JlYXRlSU9TdXJmYWNlKG1fc2l6
ZSk7Ci0gICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRl
KG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIHdpZHRoLnVuc2FmZUdldCgpLCBoZWlnaHQudW5zYWZl
R2V0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UpKTsKKyAgICAgICAgbV9kYXRhLm1fYmFja2luZ1N0
b3JlU2l6ZSA9IG1fc2l6ZTsKKyAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNyZWF0ZUlPU3Vy
ZmFjZShtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplKTsKKyAgICAgICAgRmxvYXRTaXplIHVzZXJC
b3VuZHMgPSBjb21wdXRlU2l6ZUluVXNlckJvdW5kcyhGbG9hdFNpemUod2lkdGgudW5zYWZlR2V0
KCksIGhlaWdodC51bnNhZmVHZXQoKSksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIG1fc2l6
ZSk7CisgICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRl
KG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIHVzZXJCb3VuZHMud2lkdGgoKSwgdXNlckJvdW5kcy5o
ZWlnaHQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSkpOwogI2VuZGlmCiAgICAgICAgIGlmICghY2dD
b250ZXh0KQogICAgICAgICAgICAgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IGZhbHNlOyAvLyBJZiBh
bGxvY2F0aW9uIGZhaWxzLCBmYWxsIGJhY2sgdG8gbm9uLWFjY2VsZXJhdGVkIHBhdGguCkBAIC0x
NjksMTAgKzE3OSwxOSBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAgICAgaWYgKCFjZ0NvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAvLyBXZSBv
bmx5IHN1cHBvcnQgY3VzdG9tIGJhY2tpbmcgc3RvcmUgc2l6ZXMgd2l0aCBhY2NlbGVyYXRlZCBJ
T1N1cmZhY2VzCisjaWYgIVVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCisgICAg
QVNTRVJUKG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUgPT0gbV9sb2dpY2FsU2l6ZSk7CisjZW5k
aWYKKyAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpCisgICAgICAgIEFTU0VSVChtX2RhdGEu
bV9iYWNraW5nU3RvcmVTaXplID09IG1fbG9naWNhbFNpemUpOworI2VuZGlmCisKICAgICBtX2Nv
bnRleHQgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0KGNnQ29udGV4dC5nZXQoKSkpOwot
ICAgIG1fY29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7
CiAgICAgbV9jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBtX2NvbnRleHQt
PnRyYW5zbGF0ZSgwLCAtc2l6ZS5oZWlnaHQoKSk7CisgICAgbV9jb250ZXh0LT50cmFuc2xhdGUo
MCwgLW1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOworICAgIG1fY29udGV4dC0+
YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7CiAgICAgbV9jb250ZXh0
LT5zZXRJc0FjY2VsZXJhdGVkQ29udGV4dChhY2NlbGVyYXRlUmVuZGVyaW5nKTsKICAgICBzdWNj
ZXNzID0gdHJ1ZTsKIH0KQEAgLTE5MSw2ICsyMTAsMTggQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Zmx1
c2hDb250ZXh0KCkgY29uc3QKICAgICBDR0NvbnRleHRGbHVzaChtX2NvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpKTsKIH0KIAorc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXliZUNyb3BU
b0JvdW5kcyhSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5k
cykKK3sKKyAgICBpZiAoaW1hZ2UgJiYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgIT0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMud2lkdGgoKSkKKyAgICAgICAgfHwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMuaGVpZ2h0
KCkpKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQo
KSwgOCwgNCAqIGJvdW5kcy53aWR0aCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOworICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1v
ZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIGJvdW5kcy5oZWlnaHQoKSAtIHN0
YXRpY19jYXN0PGludD4oQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpLCBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSksIGltYWdl
LmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUlt
YWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICB9CisgICAgcmV0dXJuIGltYWdlOworfQorCiBQYXNz
UmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eUJlaGF2aW9yLCBTY2FsZUJlaGF2aW9yIHNjYWxlQmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwpAQCAtMjAwLDEzICsyMzEsMTggQEAgUGFzc1JlZlB0
cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvciwgU2NhbGVCZWgKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBs
b2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogbG9naWNhbFNpemUoKS53aWR0aCgpLCBkZXZp
Y2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwog
ICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2Rl
Q29weSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RN
YWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSks
IGltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCks
IENHUmVjdE1ha2UoMCwgMCwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2Rh
dGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwogICAgICAgICBp
bWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkp
OwogICAgIH0KKyAgICAKKyAgICBpbWFnZSA9IG1heWJlQ3JvcFRvQm91bmRzKGltYWdlLCBpbnRl
cm5hbFNpemUoKSk7CiAKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gMDsKIAorICAg
IEFTU0VSVChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVf
dD4obV9sb2dpY2FsU2l6ZS53aWR0aCgpKSk7CisgICAgQVNTRVJUKENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4obV9sb2dpY2FsU2l6ZS5oZWlnaHQo
KSkpOworCiAgICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdl
OjpjcmVhdGUoaW1hZ2UuZ2V0KCkpOwogICAgIGJpdG1hcEltYWdlLT5zZXRTcGFjZVNpemUoc3Bh
Y2VTaXplKCkpOwogCkBAIC0yMTgsNiArMjU0LDggQEAgQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1
ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKQogICAgIHJldHVybiBEb250Q29weUJhY2tpbmdTdG9y
ZTsKIH0KIAorLy8gVGhlIHJldHVybmVkIGltYWdlIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRoZSBp
bnRlcm5hbFNpemUoKS4gSWYgeW91IHdhbnQgdGhlIHNtYWxsZXIKKy8vIGltYWdlLCBjcm9wIHRo
ZSByZXN1bHQuCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBDR0ltYWdl
UmVmIGltYWdlID0gMDsKQEAgLTI1Myw2ICsyOTEsOCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LAogICAgIGVsc2UKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpOwogCisgICAgaW1hZ2UgPSBtYXliZUNyb3BUb0JvdW5kcyhpbWFnZSwgaW50ZXJu
YWxTaXplKCkpOworCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAg
ICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25T
Y2FsZSk7CiAgICAgZGVzdENvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgaW50
ZXJuYWxTaXplKCksIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBi
bGVuZE1vZGUpOwpAQCAtMjc5LDEyICszMTksMTYgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMK
IAogdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRleHRUb0NsaXAs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKIHsKKyAgICBGbG9hdFNpemUgYmFja2luZ1N0
b3JlU2l6ZUluVXNlclNwYWNlID0gY29tcHV0ZVNpemVJblVzZXJCb3VuZHMocmVjdC5zaXplKCks
IG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIGludGVybmFsU2l6ZSgpKTsKKwogICAgIENHQ29u
dGV4dFJlZiBwbGF0Zm9ybUNvbnRleHRUb0NsaXAgPSBjb250ZXh0VG9DbGlwLT5wbGF0Zm9ybUNv
bnRleHQoKTsKICAgICAvLyBGSVhNRTogVGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUg
dG8gYmUgdXNlZCBhcyBhbiBhbHBoYSBtYXNrIGhlcmUuCiAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBD
R0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCByZWN0LngoKSwgcmVj
dC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZv
cm1Db250ZXh0VG9DbGlwLCByZWN0LngoKSwgcmVjdC55KCkgKyBiYWNraW5nU3RvcmVTaXplSW5V
c2VyU3BhY2UuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKHBsYXRmb3JtQ29udGV4
dFRvQ2xpcCwgMSwgLTEpOwotICAgIENHQ29udGV4dENsaXBUb01hc2socGxhdGZvcm1Db250ZXh0
VG9DbGlwLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSksIGltYWdlLmdldCgp
KTsKKyAgICBDR0NvbnRleHRDbGlwVG9NYXNrKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgYmFja2luZ1N0b3JlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0
KCkpOworICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIDAs
IGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSAtIHJlY3QuaGVpZ2h0KCkpOwor
ICAgIENHQ29udGV4dENsaXBUb1JlY3QocGxhdGZvcm1Db250ZXh0VG9DbGlwLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKHBsYXRm
b3JtQ29udGV4dFRvQ2xpcCwgMSwgLTEpOwogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0
Zm9ybUNvbnRleHRUb0NsaXAsIC1yZWN0LngoKSwgLXJlY3QueSgpIC0gcmVjdC5oZWlnaHQoKSk7
CiB9CkBAIC0zMzUsNyArMzc5LDggQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11
bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICBDR0Nv
bnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoZGVzdENvbnRleHQsIENHU2l6ZVplcm8sIDAsIDApOwog
CiAgICAgLy8gRHJhdyB0aGUgaW1hZ2UgaW4gQ0cgY29vcmRpbmF0ZSBzcGFjZQotICAgIEludFBv
aW50IGRlc3RQb2ludEluQ0dDb29yZHMoZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpLCAo
Y29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSA/IGxvZ2ljYWxTaXpl
KCkgOiBpbnRlcm5hbFNpemUoKSkuaGVpZ2h0KCkgLSAoZGVzdFBvaW50LnkoKSArIHNvdXJjZVJl
Y3QueSgpKSAtIHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworICAgIEZsb2F0U2l6ZSBib3R0b21MZWZ0
ID0gY29tcHV0ZVNpemVJblVzZXJCb3VuZHMoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29v
cmRpbmF0ZVN5c3RlbSA/IGxvZ2ljYWxTaXplKCkgOiBpbnRlcm5hbFNpemUoKSwgbV9kYXRhLm1f
YmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOworICAgIEludFBvaW50IGRlc3RQb2lu
dEluQ0dDb29yZHMoZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpLCBib3R0b21MZWZ0Lmhl
aWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKSkgLSBzb3VyY2VSZWN0Lmhl
aWdodCgpKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nvb3JkcyhkZXN0UG9pbnRJbkNHQ29v
cmRzLCBzb3VyY2VDb3B5U2l6ZSk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNvdXJjZUNv
cHlJbWFnZSA9IHNvdXJjZUNvcHktPmNvcHlOYXRpdmVJbWFnZSgpOwogICAgIENHQ29udGV4dERy
YXdJbWFnZShkZXN0Q29udGV4dCwgZGVzdFJlY3RJbkNHQ29vcmRzLCBzb3VyY2VDb3B5SW1hZ2Uu
Z2V0KCkpOwpAQCAtNDQyLDEzICs0ODcsMTcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KICAg
ICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobG9naWNhbFNpemUoKS53aWR0aCgp
LCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVJHQkNvbG9yU3Bh
Y2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tp
cExhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUHJvdmlkZXIu
Z2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0gICAgfSBlbHNl
IGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxKQorICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9u
U2NhbGUgPT0gMSkgewogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2lu
Z1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBtYXliZUNyb3BUb0JvdW5kcyhpbWFnZSwgaW50ZXJu
YWxTaXplKCkpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNp
emUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogbG9naWNhbFNpemUo
KS53aWR0aCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQo
KSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNp
emUoKS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwg
bG9naWNhbFNpemUoKS5oZWlnaHQoKSkpOworICAgICAgICBGbG9hdFNpemUgaW1hZ2VSZWN0SW5V
c2VyQm91bmRzID0gY29tcHV0ZVNpemVJblVzZXJCb3VuZHMobG9naWNhbFNpemUoKSwgbV9kYXRh
Lm1fYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOworICAgICAgICBDR0NvbnRleHRE
cmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVJlY3RJblVzZXJC
b3VuZHMud2lkdGgoKSwgaW1hZ2VSZWN0SW5Vc2VyQm91bmRzLmhlaWdodCgpKSwgaW1hZ2UuZ2V0
KCkpOwogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Y29udGV4dC5nZXQoKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKaW5kZXggYzM5OTIwOTRiZTI1
MjczODA1MGVkMTA3YjBmMmE4MGM1OTdlOWYwZC4uYTQxOTA2YmFiNjFlZmU2MDBkMjc0YWRlNjY0
NmMxZmYzNjA2OGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoK
ICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbV9ieXRlc1BlclJvdzsKICAg
ICBDR0NvbG9yU3BhY2VSZWYgbV9jb2xvclNwYWNlOwogICAgIFJldGFpblB0cjxJT1N1cmZhY2VS
ZWY+IG1fc3VyZmFjZTsKKyAgICBJbnRTaXplIG1fYmFja2luZ1N0b3JlU2l6ZTsKIAogICAgIFBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldERhdGEoY29uc3QgSW50UmVjdCYsIGNvbnN0
IEludFNpemUmLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUpIGNvbnN0OwogICAgIHZvaWQgcHV0RGF0YShVaW50OENsYW1w
ZWRBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYs
IGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217377</attachid>
            <date>2013-11-19 20:17:23 -0800</date>
            <delta_ts>2013-11-21 12:20:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131119201723.patch</filename>
            <type>text/plain</type>
            <size>14227</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDAxMjFjNTc2MjkxMzhi
NzM4YTMwNTMwMjdjYWVkNWQ1YmVmZTE0NS4uNWU5MWRkYmViMGZjYjE5YmQzOWQ4NTNjZWZmYTlj
OGRmYzBmODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTExLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBhbiBJT1N1cmZhY2UgaXMgc28gZXhwZW5zaXZlLCBpdCB3b3VsZCBiZSBiZW5l
ZmljaWFsCisgICAgICAgIHRvIGhhdmUgYSBwb29sIG9mIHByZS1jcmVhdGVkIElPU3VyZmFjZXMg
YXZhaWxhYmxlLiBIb3dldmVyLCB0aGlzIG1lYW5zCisgICAgICAgIHRoYXQgSW1hZ2VCdWZmZXIg
bWlnaHQgaGF2ZSB0byB1c2UgYW4gSU9TdXJmYWNlIHRoYXQgaXMgbGFyZ2VyIHRoYW4KKyAgICAg
ICAgdGhlIGV4YWN0IGRpbWVuc2lvbnMgdGhhdCBpdCBuZWVkcy4gVGhpcyBwYXRjaCBhZGRzIGEg
ZmllbGQsCisgICAgICAgIG1fYmFja2luZ1N0b3JlU2l6ZSwgdG8gQ0cncyBJbWFnZUJ1ZmZlckRh
dGEgY2xhc3MsIGFuZCB1c2VzIHRoaXMgbmV3CisgICAgICAgIGZpZWxkIHdoZW4gcGVyZm9ybWlu
ZyBJbWFnZUJ1ZmZlciBvcGVyYXRpb25zIHRvIGFsbG93IGZvciBsYXJnZXItdGhhbi0KKyAgICAg
ICAgbmVjZXNzYXJ5IElPU3VyZmFjZXMuIENvbnRlbnQgaXMgYWx3YXlzIGRyYXduIGluIHRoZSB0
b3AgbGVmdCBjb3JuZXIKKyAgICAgICAgb2YgdGhlIGJhY2tpbmcgSU9TdXJmYWNlLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBhcmUgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpiYXNlVHJhbnNmb3JtKTogVGhlIGJhc2Ug
dHJhbnNmb3JtIGhhcyB0byBwdXQKKyAgICAgICAgY29udGVudCBhdCB0aGUgdG9wIGxlZnQgY29y
bmVyIGluc3RlYWQgb2YgYm90dG9tIGxlZnQKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVTaXplSW5Vc2Vy
Qm91bmRzKTogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZmlndXJlIG91dAorICAgICAgICB0aGUg
ZGltZW5zaW9ucyBvZiB0aGUgYmFja2luZyB0ZXh0dXJlIGluIHVzZXIgc3BhY2UKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6IFNldCB1cCBuZXcgbV9iYWNraW5n
U3RvcmVTaXplIG1lbWJlcgorICAgICAgICAoV2ViQ29yZTo6bWF5YmVDcm9wVG9Cb3VuZHMpOiBT
b21lIEltYWdlQnVmZmVyIEFQSSBmdW5jdGlvbnMgcmVxdWlyZQorICAgICAgICBvdXRwdXR0aW5n
IGFuIGltYWdlIHdpdGggbG9naWNhbCBzaXplLiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBj
cm9wcGluZworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJbWFnZSk6IFVwZGF0
ZWQgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeQorICAgICAgICBJT1N1cmZhY2VzCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6Y2xpcCk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
cHV0Qnl0ZUFycmF5KTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwpOiBEaXR0bworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmg6IE5ldyBtX2JhY2tpbmdTdG9yZVNpemUgZmllbGQKKwogMjAxMy0xMS0xOSAgWmh1
YW5nIFpoaWdhbmcgIDx6aHVhbmd6Z0Bjbi5mdWppdHN1LmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgc3BpbiBjb250cm9sIG9uIFdpbkNFIHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAxZDRmMDg1ZmQxZjQ3MmI0YTgzYWVhZTY5
MzhmYWMwYzZjZjQ5ZGIyLi5kNzgzZmQ1Y2VhNWQ0MTY2NDBkZThmNmU5OGMzMmI3ZDg1ZDM3Y2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
QEAgLTExOCw3ICsxMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdHJh
bnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0
Q29sb3JTcGFjZSk7CiAgICAgICAgIHZvaWQgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNv
bnN0IFZlY3RvcjxpbnQ+Jik7CiAjZWxzZQotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwg
aW50ZXJuYWxTaXplKCkuaGVpZ2h0KCkpOyB9CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBiYXNl
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0xLCAw
LCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKTsgfQogI2VuZGlmCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGQ3YTk3ZTZmMWMxODFiNWQ1MzMyYzZiOTEw
YTVkM2U5ZjhmMzk2MWYuLmQ2YThhNDljMWRmZDA3MzBlYjk0YzZlZTBhMGI2OWI5MDAyMDk2ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCkBAIC05OCw2ICs5OCwxMyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlSW1hZ2VE
YXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAgZmFzdEZyZWUoY29uc3Rf
Y2FzdDx2b2lkKj4oZGF0YSkpOwogfQogCitzdGF0aWMgRmxvYXRTaXplIGNvbXB1dGVTaXplSW5V
c2VyQm91bmRzKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tpbmdTdG9yZVNpemUsIGNvbnN0IEludFNpemUmIGludGVybmFsU2l6ZSkKK3sKKyAgICBmbG9h
dCB4TWFnbmlmaWNhdGlvbiA9IDEuMCAqIGJhY2tpbmdTdG9yZVNpemUud2lkdGgoKSAvIGludGVy
bmFsU2l6ZS53aWR0aCgpOworICAgIGZsb2F0IHlNYWduaWZpY2F0aW9uID0gMS4wICogYmFja2lu
Z1N0b3JlU2l6ZS5oZWlnaHQoKSAvIGludGVybmFsU2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4g
RmxvYXRTaXplKGxvZ2ljYWxTaXplLndpZHRoKCkgKiB4TWFnbmlmaWNhdGlvbiwgbG9naWNhbFNp
emUuaGVpZ2h0KCkgKiB5TWFnbmlmaWNhdGlvbik7Cit9CisKIEltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGJvb2wmIHN1
Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkgLy8gTk9URTogVGhlIGlucHV0IGhlcmUgaXNuJ3Qg
aW1wb3J0YW50IGFzIEltYWdlQnVmZmVyRGF0YUNHJ3MgY29uc3RydWN0b3IganVzdCBpZ25vcmVz
IGl0LgogICAgICwgbV9sb2dpY2FsU2l6ZShzaXplKQpAQCAtMTExLDYgKzExOCw3IEBAIEltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gSW50U2l6
ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKKyAgICBtX2RhdGEubV9iYWNraW5nU3RvcmVT
aXplID0gbV9zaXplOwogCiAgICAgc3VjY2VzcyA9IGZhbHNlOyAgLy8gTWFrZSBlYXJseSByZXR1
cm4gbWVhbiBmYWlsdXJlLgogICAgIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IHJlbmRlcmlu
Z01vZGUgPT0gQWNjZWxlcmF0ZWQ7CkBAIC0xNDgsOCArMTU2LDEwIEBAIEltYWdlQnVmZmVyOjpJ
bWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UKICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjZ0NvbnRleHQ7CiAgICAgaWYg
KGFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5H
X1NUT1JFKQotICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gY3JlYXRlSU9TdXJmYWNlKG1fc2l6
ZSk7Ci0gICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRl
KG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIHdpZHRoLnVuc2FmZUdldCgpLCBoZWlnaHQudW5zYWZl
R2V0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UpKTsKKyAgICAgICAgbV9kYXRhLm1fYmFja2luZ1N0
b3JlU2l6ZSA9IG1fc2l6ZTsKKyAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNyZWF0ZUlPU3Vy
ZmFjZShtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplKTsKKyAgICAgICAgRmxvYXRTaXplIHVzZXJC
b3VuZHMgPSBjb21wdXRlU2l6ZUluVXNlckJvdW5kcyhGbG9hdFNpemUod2lkdGgudW5zYWZlR2V0
KCksIGhlaWdodC51bnNhZmVHZXQoKSksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIG1fc2l6
ZSk7CisgICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRl
KG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIHVzZXJCb3VuZHMud2lkdGgoKSwgdXNlckJvdW5kcy5o
ZWlnaHQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSkpOwogI2VuZGlmCiAgICAgICAgIGlmICghY2dD
b250ZXh0KQogICAgICAgICAgICAgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IGZhbHNlOyAvLyBJZiBh
bGxvY2F0aW9uIGZhaWxzLCBmYWxsIGJhY2sgdG8gbm9uLWFjY2VsZXJhdGVkIHBhdGguCkBAIC0x
NjksMTAgKzE3OSwxNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAgICAgaWYgKCFjZ0NvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdf
U1RPUkUpCisgICAgLy8gV2Ugb25seSBzdXBwb3J0IGN1c3RvbSBiYWNraW5nIHN0b3JlIHNpemVz
IHdpdGggYWNjZWxlcmF0ZWQgSU9TdXJmYWNlcworICAgIEFTU0VSVChhY2NlbGVyYXRlUmVuZGVy
aW5nIHx8IG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUgPT0gbV9sb2dpY2FsU2l6ZSk7CisjZWxz
ZQorICAgIEFTU0VSVChtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplID09IG1fbG9naWNhbFNpemUp
OworI2VuZGlmCisKICAgICBtX2NvbnRleHQgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0
KGNnQ29udGV4dC5nZXQoKSkpOwotICAgIG1fY29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihtX3Jlc29sdXRpb25TY2FsZSk7CiAgICAgbV9jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwg
LTEpKTsKLSAgICBtX2NvbnRleHQtPnRyYW5zbGF0ZSgwLCAtc2l6ZS5oZWlnaHQoKSk7CisgICAg
bV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLW1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0
KCkpOworICAgIG1fY29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25T
Y2FsZSk7CiAgICAgbV9jb250ZXh0LT5zZXRJc0FjY2VsZXJhdGVkQ29udGV4dChhY2NlbGVyYXRl
UmVuZGVyaW5nKTsKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KQEAgLTE5MSw2ICsyMDgsMTggQEAg
dm9pZCBJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCkgY29uc3QKICAgICBDR0NvbnRleHRGbHVz
aChtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAorc3RhdGljIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtYXliZUNyb3BUb0JvdW5kcyhSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2Us
IGNvbnN0IEludFNpemUmIGJvdW5kcykKK3sKKyAgICBpZiAoaW1hZ2UgJiYgKENHSW1hZ2VHZXRX
aWR0aChpbWFnZS5nZXQoKSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMud2lkdGgoKSkK
KyAgICAgICAgfHwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgIT0gc3RhdGljX2Nhc3Q8
c2l6ZV90Pihib3VuZHMuaGVpZ2h0KCkpKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYm91bmRzLndp
ZHRoKCksIGJvdW5kcy5oZWlnaHQoKSwgOCwgNCAqIGJvdW5kcy53aWR0aCgpLCBkZXZpY2VSR0JD
b2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOworICAgICAg
ICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7
CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAs
IGJvdW5kcy5oZWlnaHQoKSAtIHN0YXRpY19jYXN0PGludD4oQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlLmdldCgpKSksIGltYWdlLmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICB9CisgICAgcmV0
dXJuIGltYWdlOworfQorCiBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaGF2aW9yIHNjYWxlQmVoYXZp
b3IpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwpAQCAtMjAwLDEz
ICsyMjksMTggQEAgUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWgKICAgICAgICAgaW1hZ2UgPSBjb3B5
TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dD
b250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9n
aWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogbG9naWNh
bFNpemUoKS53aWR0aCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4
dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShj
b250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9n
aWNhbFNpemUoKS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9kYXRhLm1fYmFja2luZ1N0
b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKSwgaW1h
Z2UuZ2V0KCkpOwogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
SW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAgIH0KKyAgICAKKyAgICBpbWFnZSA9IG1heWJlQ3Jv
cFRvQm91bmRzKGltYWdlLCBpbnRlcm5hbFNpemUoKSk7CiAKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm4gMDsKIAorICAgIEFTU0VSVChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkp
ID09IHN0YXRpY19jYXN0PHNpemVfdD4obV9sb2dpY2FsU2l6ZS53aWR0aCgpKSk7CisgICAgQVNT
RVJUKENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4o
bV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSkpOworCiAgICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRt
YXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoaW1hZ2UuZ2V0KCkpOwogICAgIGJpdG1hcElt
YWdlLT5zZXRTcGFjZVNpemUoc3BhY2VTaXplKCkpOwogCkBAIC0yMTgsNiArMjUyLDggQEAgQmFj
a2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKQogICAgIHJldHVy
biBEb250Q29weUJhY2tpbmdTdG9yZTsKIH0KIAorLy8gVGhlIHJldHVybmVkIGltYWdlIG1pZ2h0
IGJlIGxhcmdlciB0aGFuIHRoZSBpbnRlcm5hbFNpemUoKS4gSWYgeW91IHdhbnQgdGhlIHNtYWxs
ZXIKKy8vIGltYWdlLCBjcm9wIHRoZSByZXN1bHQuCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1h
Z2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikg
Y29uc3QKIHsKICAgICBDR0ltYWdlUmVmIGltYWdlID0gMDsKQEAgLTI1Myw2ICsyODksOCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLAogICAgIGVsc2UKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogCisgICAgaW1hZ2UgPSBtYXliZUNyb3BU
b0JvdW5kcyhpbWFnZSwgaW50ZXJuYWxTaXplKCkpOworCiAgICAgRmxvYXRSZWN0IGFkanVzdGVk
U3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlv
blNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAgICAgZGVzdENvbnRleHQtPmRyYXdOYXRpdmVJ
bWFnZShpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKCksIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwpAQCAtMjc5LDEyICszMTcsMTYgQEAgdm9p
ZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmMKIAogdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKIHsKKyAg
ICBGbG9hdFNpemUgYmFja2luZ1N0b3JlU2l6ZUluVXNlclNwYWNlID0gY29tcHV0ZVNpemVJblVz
ZXJCb3VuZHMocmVjdC5zaXplKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIGludGVybmFs
U2l6ZSgpKTsKKwogICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHRUb0NsaXAgPSBjb250
ZXh0VG9DbGlwLT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAvLyBGSVhNRTogVGhpcyBpbWFnZSBu
ZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBhbiBhbHBoYSBtYXNrIGhlcmUuCiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0
VG9DbGlwLCByZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICBDR0NvbnRl
eHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCByZWN0LngoKSwgcmVjdC55KCkg
KyBiYWNraW5nU3RvcmVTaXplSW5Vc2VyU3BhY2UuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNj
YWxlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgMSwgLTEpOwotICAgIENHQ29udGV4dENsaXBU
b01hc2socGxhdGZvcm1Db250ZXh0VG9DbGlwLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCByZWN0
LnNpemUoKSksIGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHRDbGlwVG9NYXNrKHBsYXRmb3Jt
Q29udGV4dFRvQ2xpcCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYmFja2luZ1N0b3JlU2l6ZUlu
VXNlclNwYWNlKSwgaW1hZ2UuZ2V0KCkpOworICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0
Zm9ybUNvbnRleHRUb0NsaXAsIDAsIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQo
KSAtIHJlY3QuaGVpZ2h0KCkpOworICAgIENHQ29udGV4dENsaXBUb1JlY3QocGxhdGZvcm1Db250
ZXh0VG9DbGlwLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSkpOwogICAgIENH
Q29udGV4dFNjYWxlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgMSwgLTEpOwogICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIC1yZWN0LngoKSwgLXJlY3Qu
eSgpIC0gcmVjdC5oZWlnaHQoKSk7CiB9CkBAIC0zMzUsNyArMzc3LDggQEAgdm9pZCBJbWFnZUJ1
ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5
KiBzb3VyY2UsIGMKICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoZGVzdENvbnRleHQs
IENHU2l6ZVplcm8sIDAsIDApOwogCiAgICAgLy8gRHJhdyB0aGUgaW1hZ2UgaW4gQ0cgY29vcmRp
bmF0ZSBzcGFjZQotICAgIEludFBvaW50IGRlc3RQb2ludEluQ0dDb29yZHMoZGVzdFBvaW50Lngo
KSArIHNvdXJjZVJlY3QueCgpLCAoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0
ZVN5c3RlbSA/IGxvZ2ljYWxTaXplKCkgOiBpbnRlcm5hbFNpemUoKSkuaGVpZ2h0KCkgLSAoZGVz
dFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpKSAtIHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworICAg
IEZsb2F0U2l6ZSBib3R0b21MZWZ0ID0gY29tcHV0ZVNpemVJblVzZXJCb3VuZHMoY29vcmRpbmF0
ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSA/IGxvZ2ljYWxTaXplKCkgOiBpbnRl
cm5hbFNpemUoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOwor
ICAgIEludFBvaW50IGRlc3RQb2ludEluQ0dDb29yZHMoZGVzdFBvaW50LngoKSArIHNvdXJjZVJl
Y3QueCgpLCBib3R0b21MZWZ0LmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0
LnkoKSkgLSBzb3VyY2VSZWN0LmhlaWdodCgpKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nv
b3JkcyhkZXN0UG9pbnRJbkNHQ29vcmRzLCBzb3VyY2VDb3B5U2l6ZSk7CiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IHNvdXJjZUNvcHlJbWFnZSA9IHNvdXJjZUNvcHktPmNvcHlOYXRpdmVJbWFn
ZSgpOwogICAgIENHQ29udGV4dERyYXdJbWFnZShkZXN0Q29udGV4dCwgZGVzdFJlY3RJbkNHQ29v
cmRzLCBzb3VyY2VDb3B5SW1hZ2UuZ2V0KCkpOwpAQCAtNDQyLDEzICs0ODUsMTcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiBxdWFsaXR5LCBDb28KICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUo
bG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwgNCAq
IGxvZ2ljYWxTaXplKCkud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8
IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0KSk7Ci0gICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxKQorICAgIH0g
ZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSkgewogICAgICAgICBpbWFnZSA9IGNvcHlO
YXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBtYXliZUNyb3BU
b0JvdW5kcyhpbWFnZSwgaW50ZXJuYWxTaXplKCkpOworICAgIH0KICAgICBlbHNlIHsKICAgICAg
ICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgICAg
ICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGUoMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgp
LCA4LCA0ICogbG9naWNhbFNpemUoKS53aWR0aCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRC
bGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgICAgIENHQ29u
dGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXpl
KCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKKyAgICAg
ICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxv
Z2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSkpOworICAgICAgICBG
bG9hdFNpemUgaW1hZ2VSZWN0SW5Vc2VyQm91bmRzID0gY29tcHV0ZVNpemVJblVzZXJCb3VuZHMo
bG9naWNhbFNpemUoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkp
OworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgw
LCAwLCBpbWFnZVJlY3RJblVzZXJCb3VuZHMud2lkdGgoKSwgaW1hZ2VSZWN0SW5Vc2VyQm91bmRz
LmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmgKaW5kZXggYzM5OTIwOTRiZTI1MjczODA1MGVkMTA3YjBmMmE4MGM1OTdlOWYwZC4uYTQxOTA2
YmFiNjFlZmU2MDBkMjc0YWRlNjY0NmMxZmYzNjA2OGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCkBAIC01
NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxv
dz4gbV9ieXRlc1BlclJvdzsKICAgICBDR0NvbG9yU3BhY2VSZWYgbV9jb2xvclNwYWNlOwogICAg
IFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKKyAgICBJbnRTaXplIG1fYmFja2lu
Z1N0b3JlU2l6ZTsKIAogICAgIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldERhdGEo
Y29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcs
IGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpIGNvbnN0OwogICAgIHZv
aWQgcHV0RGF0YShVaW50OENsYW1wZWRBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11
bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217592</attachid>
            <date>2013-11-21 12:20:28 -0800</date>
            <delta_ts>2013-11-21 12:41:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131121122027.patch</filename>
            <type>text/plain</type>
            <size>25268</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDAxMjFjNTc2MjkxMzhi
NzM4YTMwNTMwMjdjYWVkNWQ1YmVmZTE0NS4uYjVlMTQ2MjEwYTFlYTczOWQ4NjVjZjc5ODIxNTMx
OWYzYTQ5ZjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTExLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBJbWFnZUJ1ZmZlcidzIGJhY2tpbmcgc3RvcmUgY2FuIGJlIHNvIGV4cGVuc2l2
ZSwgaXQKKyAgICAgICAgd291bGQgYmUgYmVuZWZpY2lhbCB0byBoYXZlIGEgcG9vbCBvZiBwcmUt
Y3JlYXRlZCBiYWNraW5nIHN0b3JlcworICAgICAgICBhdmFpbGFibGUuIEhvd2V2ZXIsIHRoaXMg
bWVhbnMgdGhhdCBJbWFnZUJ1ZmZlciBtaWdodCBoYXZlIHRvIHVzZSBhCisgICAgICAgIGJhY2tp
bmcgc3RvcmUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgZXhhY3QgZGltZW5zaW9ucyB0aGF0IGl0
IG5lZWRzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmaWVsZCwgbV9iYWNraW5nU3RvcmVT
aXplLCB0byBDRydzIEltYWdlQnVmZmVyRGF0YQorICAgICAgICBjbGFzcywgYW5kIHVzZXMgdGhp
cyBuZXcgZmllbGQgd2hlbiBwZXJmb3JtaW5nIEltYWdlQnVmZmVyIG9wZXJhdGlvbnMKKyAgICAg
ICAgdG8gYWxsb3cgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeSBiYWNraW5nIHN0b3Jlcy4gQ29u
dGVudCBpcyBhbHdheXMKKyAgICAgICAgZHJhd24gaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
YmFzZVRyYW5zZm9ybSk6IFRoZSBiYXNlIHRyYW5zZm9ybSBoYXMgdG8gcHV0CisgICAgICAgIGNv
bnRlbnQgYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBpbnN0ZWFkIG9mIGJvdHRvbSBsZWZ0CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlU2l6ZUluVXNlckJvdW5kcyk6IENvbnZlbmllbmNlIGZ1bmN0aW9uIHRv
IGZpZ3VyZSBvdXQKKyAgICAgICAgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGJhY2tpbmcgdGV4dHVy
ZSBpbiB1c2VyIHNwYWNlCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOiBTZXQgdXAgbmV3IG1fYmFja2luZ1N0b3JlU2l6ZSBtZW1iZXIKKyAgICAgICAgKFdlYkNv
cmU6Om1heWJlQ3JvcFRvQm91bmRzKTogU29tZSBJbWFnZUJ1ZmZlciBBUEkgZnVuY3Rpb25zIHJl
cXVpcmUKKyAgICAgICAgb3V0cHV0dGluZyBhbiBpbWFnZSB3aXRoIGxvZ2ljYWwgc2l6ZS4gVGhp
cyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgY3JvcHBpbmcKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpjb3B5SW1hZ2UpOiBVcGRhdGVkIGZvciBsYXJnZXItdGhhbi1uZWNlc3NhcnkKKyAg
ICAgICAgYmFja2luZyBzdG9yZXMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5
TmF0aXZlSW1hZ2UpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcp
OiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOiBEaXR0bworICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERpdHRvCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKTogRGl0dG8KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEYXRhOjpwdXREYXRhKTogRGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOiBOZXcgbV9iYWNraW5nU3RvcmVTaXplIGZpZWxkCisK
IDIwMTMtMTEtMTkgIFpodWFuZyBaaGlnYW5nICA8emh1YW5nemdAY24uZnVqaXRzdS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50IHNwaW4gY29udHJvbCBvbiBXaW5DRSBwb3J0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggMWQ0ZjA4NWZk
MWY0NzJiNGE4M2FlYWU2OTM4ZmFjMGM2Y2Y0OWRiMi4uZDc4M2ZkNWNlYTVkNDE2NjQwZGU4ZjZl
OThjMzJiN2Q4NWQzN2NiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNl
LCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIHBsYXRmb3JtVHJhbnNm
b3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYpOwogI2Vsc2UKLSAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
MSwgMCwgMCwgLTEsIDAsIGludGVybmFsU2l6ZSgpLmhlaWdodCgpKTsgfQorICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9y
bSgxLCAwLCAwLCAtMSwgMCwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7IH0K
ICNlbmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkN2E5N2U2ZjFj
MTgxYjVkNTMzMmM2YjkxMGE1ZDNlOWY4ZjM5NjFmLi41NDViYzY1MDk1ZjQ2YzkwNWQ2NjNlMjQ0
ZWZjOWUzZDIyNjM5MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtOTgsNiArOTgsMTMgQEAgc3RhdGljIHZv
aWQgcmVsZWFzZUltYWdlRGF0YSh2b2lkKiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KQogICAg
IGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKTsKIH0KIAorc3RhdGljIEZsb2F0U2l6
ZSBjb21wdXRlU2l6ZUluVXNlckJvdW5kcyhjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNraW5nU3RvcmVTaXplLCBjb25zdCBJbnRTaXplJiBpbnRlcm5hbFNp
emUpCit7CisgICAgZmxvYXQgeE1hZ25pZmljYXRpb24gPSAxLjAgKiBiYWNraW5nU3RvcmVTaXpl
LndpZHRoKCkgLyBpbnRlcm5hbFNpemUud2lkdGgoKTsKKyAgICBmbG9hdCB5TWFnbmlmaWNhdGlv
biA9IDEuMCAqIGJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkgLyBpbnRlcm5hbFNpemUuaGVpZ2h0
KCk7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShsb2dpY2FsU2l6ZS53aWR0aCgpICogeE1hZ25pZmlj
YXRpb24sIGxvZ2ljYWxTaXplLmhlaWdodCgpICogeU1hZ25pZmljYXRpb24pOworfQorCiBJbWFn
ZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9kYXRhKHNpemUpIC8vIE5PVEU6IFRoZSBp
bnB1dCBoZXJlIGlzbid0IGltcG9ydGFudCBhcyBJbWFnZUJ1ZmZlckRhdGFDRydzIGNvbnN0cnVj
dG9yIGp1c3QgaWdub3JlcyBpdC4KICAgICAsIG1fbG9naWNhbFNpemUoc2l6ZSkKQEAgLTExMSw2
ICsxMTgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fc2l6ZSA9IEludFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7CisgICAgbV9kYXRh
Lm1fYmFja2luZ1N0b3JlU2l6ZSA9IG1fc2l6ZTsKIAogICAgIHN1Y2Nlc3MgPSBmYWxzZTsgIC8v
IE1ha2UgZWFybHkgcmV0dXJuIG1lYW4gZmFpbHVyZS4KICAgICBib29sIGFjY2VsZXJhdGVSZW5k
ZXJpbmcgPSByZW5kZXJpbmdNb2RlID09IEFjY2VsZXJhdGVkOwpAQCAtMTIxLDggKzEyOSw4IEBA
IEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+
IGhlaWdodCA9IG1fc2l6ZS5oZWlnaHQoKTsKIAogICAgIC8vIFByZXZlbnQgaW50ZWdlciBvdmVy
Zmxvd3MKLSAgICBtX2RhdGEubV9ieXRlc1BlclJvdyA9IDQgKiB3aWR0aDsKLSAgICBDaGVja2Vk
PHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzID0gaGVpZ2h0ICogbV9kYXRhLm1fYnl0
ZXNQZXJSb3c7CisgICAgbV9kYXRhLm1fYnl0ZXNQZXJSb3cgPSA0ICogQ2hlY2tlZDx1bnNpZ25l
ZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSk7Cisg
ICAgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92ZXJmbG93PiBudW1CeXRlcyA9IENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PihtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgp
KSAqIG1fZGF0YS5tX2J5dGVzUGVyUm93OwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ4LDIwICsxNTYsMjEgQEAgSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZQogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNnQ29udGV4dDsKICAgICBp
ZiAoYWNjZWxlcmF0ZVJlbmRlcmluZykgewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJ
TkdfU1RPUkUpCi0gICAgICAgIG1fZGF0YS5tX3N1cmZhY2UgPSBjcmVhdGVJT1N1cmZhY2UobV9z
aXplKTsKLSAgICAgICAgY2dDb250ZXh0ID0gYWRvcHRDRih3a0lPU3VyZmFjZUNvbnRleHRDcmVh
dGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgd2lkdGgudW5zYWZlR2V0KCksIGhlaWdodC51bnNh
ZmVHZXQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSkpOworICAgICAgICBtX2RhdGEubV9zdXJmYWNl
ID0gY3JlYXRlSU9TdXJmYWNlKG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUpOworICAgICAgICBG
bG9hdFNpemUgdXNlckJvdW5kcyA9IGNvbXB1dGVTaXplSW5Vc2VyQm91bmRzKEZsb2F0U2l6ZSh3
aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpKSwgbV9kYXRhLm1fYmFja2luZ1N0
b3JlU2l6ZSwgbV9zaXplKTsKKyAgICAgICAgY2dDb250ZXh0ID0gYWRvcHRDRih3a0lPU3VyZmFj
ZUNvbnRleHRDcmVhdGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgdXNlckJvdW5kcy53aWR0aCgp
LCB1c2VyQm91bmRzLmhlaWdodCgpLCBtX2RhdGEubV9jb2xvclNwYWNlKSk7CiAjZW5kaWYKICAg
ICAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgICAgICBhY2NlbGVyYXRlUmVuZGVyaW5nID0g
ZmFsc2U7IC8vIElmIGFsbG9jYXRpb24gZmFpbHMsIGZhbGwgYmFjayB0byBub24tYWNjZWxlcmF0
ZWQgcGF0aC4KICAgICB9CiAKICAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKLSAgICAg
ICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGhlaWdodC51bnNhZmVHZXQoKSwgbV9kYXRhLm1fYnl0ZXNQ
ZXJSb3cudW5zYWZlR2V0KCkpLmdldFZhbHVlKG1fZGF0YS5tX2RhdGEpKQorICAgICAgICBpZiAo
IXRyeUZhc3RDYWxsb2MobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgbV9kYXRh
Lm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCkpLmdldFZhbHVlKG1fZGF0YS5tX2RhdGEpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PHNpemVf
dD4obV9kYXRhLm1fZGF0YSkgJiAyKSk7CiAKICAgICAgICAgbV9kYXRhLm1fYml0bWFwSW5mbyA9
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKLSAgICAgICAgY2dDb250ZXh0ID0gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobV9kYXRhLm1fZGF0YSwgd2lkdGgudW5zYWZlR2V0
KCksIGhlaWdodC51bnNhZmVHZXQoKSwgOCwgbV9kYXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0
KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8pKTsKKyAgICAgICAg
Y2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobV9kYXRhLm1fZGF0YSwg
bV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVT
aXplLmhlaWdodCgpLCA4LCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9kYXRh
Lm1fY29sb3JTcGFjZSwgbV9kYXRhLm1fYml0bWFwSW5mbykpOwogICAgICAgICAvLyBDcmVhdGUg
YSBsaXZlIGltYWdlIHRoYXQgd3JhcHMgdGhlIGRhdGEuCiAgICAgICAgIG1fZGF0YS5tX2RhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBtX2RhdGEu
bV9kYXRhLCBudW1CeXRlcy51bnNhZmVHZXQoKSwgcmVsZWFzZUltYWdlRGF0YSkpOwogICAgIH0K
QEAgLTE3MCw5ICsxNzksOSBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fY29udGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoY2dDb250
ZXh0LmdldCgpKSk7Ci0gICAgbV9jb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVz
b2x1dGlvblNjYWxlKTsKICAgICBtX2NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwot
ICAgIG1fY29udGV4dC0+dHJhbnNsYXRlKDAsIC1zaXplLmhlaWdodCgpKTsKKyAgICBtX2NvbnRl
eHQtPnRyYW5zbGF0ZSgwLCAtbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgbV9jb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsK
ICAgICBtX2NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGFjY2VsZXJhdGVSZW5kZXJp
bmcpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTkxLDYgKzIwMCwxOCBAQCB2b2lkIElt
YWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKSBjb25zdAogICAgIENHQ29udGV4dEZsdXNoKG1fY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOwogfQogCitzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IG1heWJlQ3JvcFRvQm91bmRzKFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSwgY29uc3Qg
SW50U2l6ZSYgYm91bmRzKQoreworICAgIGlmIChpbWFnZSAmJiAoQ0dJbWFnZUdldFdpZHRoKGlt
YWdlLmdldCgpKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvdW5kcy53aWR0aCgpKQorICAgICAg
ICB8fCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGJvdW5kcy5oZWlnaHQoKSkpKSB7CisgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBib3VuZHMud2lkdGgoKSwg
Ym91bmRzLmhlaWdodCgpLCA4LCA0ICogYm91bmRzLndpZHRoKCksIGRldmljZVJHQkNvbG9yU3Bh
Y2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CisgICAgICAgIENHQ29u
dGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKKyAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgYm91bmRz
LmhlaWdodCgpIC0gc3RhdGljX2Nhc3Q8aW50PihDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgp
KSksIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2Uu
Z2V0KCkpKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgIH0KKyAgICByZXR1cm4gaW1h
Z2U7Cit9CisKIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3Igc2NhbGVCZWhhdmlvcikgY29u
c3QKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CkBAIC0yMDAsMTMgKzIyMSwx
OCBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaAogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6
ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZSgp
LndpZHRoKCksIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgp
LCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6
ZSgpLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2Uo
Y29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXpl
LndpZHRoKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpLCBpbWFnZS5nZXQo
KSk7CiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShj
b250ZXh0LmdldCgpKSk7CiAgICAgfQorICAgIAorICAgIGltYWdlID0gbWF5YmVDcm9wVG9Cb3Vu
ZHMoaW1hZ2UsIGludGVybmFsU2l6ZSgpKTsKIAogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybiAwOwogCisgICAgQVNTRVJUKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihtX2xvZ2ljYWxTaXplLndpZHRoKCkpKTsKKyAgICBBU1NFUlQoQ0dJ
bWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2xvZ2lj
YWxTaXplLmhlaWdodCgpKSk7CisKICAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGJpdG1hcEltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShpbWFnZS5nZXQoKSk7CiAgICAgYml0bWFwSW1hZ2UtPnNl
dFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAKQEAgLTIxOCwxMyArMjQ0LDE1IEBAIEJhY2tpbmdT
dG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKICAgICByZXR1cm4gRG9u
dENvcHlCYWNraW5nU3RvcmU7CiB9CiAKKy8vIFRoZSByZXR1cm5lZCBpbWFnZSBtaWdodCBiZSBs
YXJnZXIgdGhhbiB0aGUgaW50ZXJuYWxTaXplKCkuIElmIHlvdSB3YW50IHRoZSBzbWFsbGVyCisv
LyBpbWFnZSwgY3JvcCB0aGUgcmVzdWx0LgogUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVm
ZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0
CiB7CiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IDA7CiAgICAgaWYgKCFtX2NvbnRleHQtPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKICAg
ICAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgICAgIGltYWdlID0gQ0dJ
bWFnZUNyZWF0ZShpbnRlcm5hbFNpemUoKS53aWR0aCgpLCBpbnRlcm5hbFNpemUoKS5oZWlnaHQo
KSwgOCwgMzIsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xv
clNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJvdmlkZXIuZ2V0KCks
IDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOworICAgICAgICAgICAgaW1hZ2Ug
PSBDR0ltYWdlQ3JlYXRlKG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwgbV9kYXRh
Lm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5tX2J5dGVzUGVyUm93
LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvLCBt
X2RhdGEubV9kYXRhUHJvdmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29weUJhY2tpbmdTdG9y
ZToKICAgICAgICAgICAgIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4
dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CkBAIC0yNTMsNiArMjgxLDggQEAgdm9pZCBJbWFnZUJ1
ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwKICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKTsKIAorICAgIGltYWdlID0gbWF5YmVDcm9wVG9Cb3VuZHMoaW1h
Z2UsIGludGVybmFsU2l6ZSgpKTsKKwogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBz
cmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9y
ZXNvbHV0aW9uU2NhbGUpOwogICAgIGRlc3RDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Uu
Z2V0KCksIGludGVybmFsU2l6ZSgpLCBjb2xvclNwYWNlLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlKTsKQEAgLTI3OSwxMiArMzA5LDE2IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjCiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CisgICAgRmxvYXRTaXpl
IGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9IGNvbXB1dGVTaXplSW5Vc2VyQm91bmRzKHJl
Y3Quc2l6ZSgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisK
ICAgICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0VG9DbGlwID0gY29udGV4dFRvQ2xpcC0+
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUg
Z3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxwaGEgbWFzayBoZXJlLgogICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgcmVj
dC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgcmVjdC54KCksIHJlY3QueSgpICsgYmFja2luZ1N0
b3JlU2l6ZUluVXNlclNwYWNlLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShwbGF0
Zm9ybUNvbnRleHRUb0NsaXAsIDEsIC0xKTsKLSAgICBDR0NvbnRleHRDbGlwVG9NYXNrKHBsYXRm
b3JtQ29udGV4dFRvQ2xpcCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXplKCkpLCBp
bWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhwbGF0Zm9ybUNvbnRleHRUb0Ns
aXAsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSks
IGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0
VG9DbGlwLCAwLCBiYWNraW5nU3RvcmVTaXplSW5Vc2VyU3BhY2UuaGVpZ2h0KCkgLSByZWN0Lmhl
aWdodCgpKTsKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXplKCkpKTsKICAgICBDR0NvbnRleHRTY2Fs
ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIDEsIC0xKTsKICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCAtcmVjdC54KCksIC1yZWN0LnkoKSAtIHJlY3Qu
aGVpZ2h0KCkpOwogfQpAQCAtMzE5LDggKzM1MywxNCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRC
eXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwg
YwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHNvdXJj
ZUNvcHktPmNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICAgICAgc291cmNl
Q29weS0+Zmx1c2hDb250ZXh0KCk7CisKICAgICBzb3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShz
b3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwg
LXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+aW50ZXJuYWxTaXplKCksIHNvdXJjZUNvcHkt
PmNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgbXVsdGlwbGllZCA9PSBVbm11bHRp
cGxpZWQsIDEpOwogCisgICAgaWYgKHNvdXJjZUNvcHktPmNvbnRleHQoKS0+aXNBY2NlbGVyYXRl
ZENvbnRleHQoKSkKKyAgICAgICAgc291cmNlQ29weS0+Zmx1c2hDb250ZXh0KCk7CisKICAgICAv
LyBTZXQgdXAgY29udGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5
CiAgICAgQ0dDb250ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRl
eHQoKTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGRlc3RDb250ZXh0KTsKQEAgLTMzNSwxMCAr
Mzc1LDE0IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBs
aWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgQ0dDb250ZXh0U2V0U2hhZG93
V2l0aENvbG9yKGRlc3RDb250ZXh0LCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgIC8vIERyYXcg
dGhlIGltYWdlIGluIENHIGNvb3JkaW5hdGUgc3BhY2UKLSAgICBJbnRQb2ludCBkZXN0UG9pbnRJ
bkNHQ29vcmRzKGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKSwgKGNvb3JkaW5hdGVTeXN0
ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0gPyBsb2dpY2FsU2l6ZSgpIDogaW50ZXJuYWxT
aXplKCkpLmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKSkgLSBzb3Vy
Y2VSZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFNpemUgc2NhbGVkRGVzdFNpemUgPSBjb21wdXRl
U2l6ZUluVXNlckJvdW5kcyhjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lz
dGVtID8gbG9naWNhbFNpemUoKSA6IGludGVybmFsU2l6ZSgpLCBtX2RhdGEubV9iYWNraW5nU3Rv
cmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisgICAgSW50UG9pbnQgZGVzdFBvaW50SW5DR0Nvb3Jk
cyhkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCksIHNjYWxlZERlc3RTaXplLmhlaWdodCgp
IC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKSkgLSBzb3VyY2VSZWN0LmhlaWdodCgp
KTsKICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nvb3JkcyhkZXN0UG9pbnRJbkNHQ29vcmRzLCBz
b3VyY2VDb3B5U2l6ZSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChkZXN0Q29udGV4dCwgZGVz
dFJlY3RJbkNHQ29vcmRzKTsKKwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzb3VyY2VDb3B5
SW1hZ2UgPSBzb3VyY2VDb3B5LT5jb3B5TmF0aXZlSW1hZ2UoKTsKLSAgICBDR0NvbnRleHREcmF3
SW1hZ2UoZGVzdENvbnRleHQsIGRlc3RSZWN0SW5DR0Nvb3Jkcywgc291cmNlQ29weUltYWdlLmdl
dCgpKTsKKyAgICBGbG9hdFJlY3QgYmFja2luZ1N0b3JlSW5EZXN0UmVjdCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KGRlc3RQb2ludEluQ0dDb29yZHMueCgpLCBkZXN0UG9pbnRJbkNHQ29vcmRzLnko
KSArIHNvdXJjZUNvcHlTaXplLmhlaWdodCgpIC0gQ0dJbWFnZUdldEhlaWdodChzb3VyY2VDb3B5
SW1hZ2UuZ2V0KCkpKSwgRmxvYXRTaXplKENHSW1hZ2VHZXRXaWR0aChzb3VyY2VDb3B5SW1hZ2Uu
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KHNvdXJjZUNvcHlJbWFnZS5nZXQoKSkpKTsKKyAgICBD
R0NvbnRleHREcmF3SW1hZ2UoZGVzdENvbnRleHQsIGJhY2tpbmdTdG9yZUluRGVzdFJlY3QsIHNv
dXJjZUNvcHlJbWFnZS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShkZXN0Q29u
dGV4dCk7CiAjZW5kaWYKIH0KQEAgLTQ0MiwxMyArNDg2LDE3IEBAIFN0cmluZyBJbWFnZUJ1ZmZl
cjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0
eSwgQ29vCiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGxvZ2ljYWxTaXpl
KCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBsb2dpY2FsU2l6
ZSgpLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VS
R0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFs
cGhhTm9uZVNraXBMYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwot
ICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSkKKyAgICB9IGVsc2UgaWYgKG1f
cmVzb2x1dGlvblNjYWxlID09IDEpIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGltYWdlID0gbWF5YmVDcm9wVG9Cb3VuZHMoaW1h
Z2UsIGludGVybmFsU2l6ZSgpKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAs
IGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxv
Z2ljYWxTaXplKCkud2lkdGgoKSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNv
bnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCks
IGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4
dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgp
LndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgRmxvYXRTaXplIGlt
YWdlUmVjdEluVXNlckJvdW5kcyA9IGNvbXB1dGVTaXplSW5Vc2VyQm91bmRzKGxvZ2ljYWxTaXpl
KCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIGludGVybmFsU2l6ZSgpKTsKKyAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VS
ZWN0SW5Vc2VyQm91bmRzLndpZHRoKCksIGltYWdlUmVjdEluVXNlckJvdW5kcy5oZWlnaHQoKSks
IGltYWdlLmdldCgpKTsKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRl
eCA1NTZhZTU0MzhhOWU1NWRiODc3MzcxNTIxZWY0NzA0MDM3YWE3MTBlLi42ODBiMjhiMGFkMzA4
YjAzNmY3MmU2Y2M1MjQ2MmJiM2QyNjVkNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC0xNTgs
NyArMTU4LDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRh
OjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnMKICAgICB1bnNpZ25lZCBjaGFyKiBz
cmNSb3dzOwogICAgIAogICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAgICBz
cmNCeXRlc1BlclJvdyA9IDQgKiBzaXplLndpZHRoKCk7CisgICAgICAgIHNyY0J5dGVzUGVyUm93
ID0gbV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKTsKICAgICAgICAgc3JjUm93cyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJS
b3cgKyBvcmlnaW54ICogNDsKICAgICAgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEUpCkBAIC0zODEs
NyArMzgxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoVWludDhDbGFtcGVkQXJy
YXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVMKICAgICB1bnNpZ25lZCBjaGFyKiBk
ZXN0Um93czsKICAgICAKICAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKLSAgICAgICAg
ZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHNpemUud2lkdGgoKTsKKyAgICAgICAgZGVzdEJ5dGVzUGVy
Um93ID0gbV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKTsKICAgICAgICAgZGVzdFJvd3MgPSByZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEpICsgKGRlc3R5ICogZGVzdEJ5dGVz
UGVyUm93ICsgZGVzdHggKiA0KS51bnNhZmVHZXQoKTsKICAgICAgICAgCiAjaWYgIFVTRShBQ0NF
TEVSQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJEYXRhQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmgKaW5kZXggYzM5OTIwOTRiZTI1MjczODA1MGVkMTA3YjBmMmE4
MGM1OTdlOWYwZC4uYTQxOTA2YmFiNjFlZmU2MDBkMjc0YWRlNjY0NmMxZmYzNjA2OGNlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckRhdGFDRy5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBDaGVja2VkPHVuc2ln
bmVkLCBSZWNvcmRPdmVyZmxvdz4gbV9ieXRlc1BlclJvdzsKICAgICBDR0NvbG9yU3BhY2VSZWYg
bV9jb2xvclNwYWNlOwogICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKKyAg
ICBJbnRTaXplIG1fYmFja2luZ1N0b3JlU2l6ZTsKIAogICAgIFBhc3NSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IGdldERhdGEoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmLCBib29sIGFj
Y2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUpIGNvbnN0OwogICAgIHZvaWQgcHV0RGF0YShVaW50OENsYW1wZWRBcnJheSomIHNvdXJjZSwg
Y29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJl
bmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZjVhMjExMWM3MjVhZjExMGY0YzQ0M2EwYzYxNTEyNzFiNGMxNmEzNi4uODA2N2UyY2FkMDI0
NzY0MzRjNTRjYjAyMWFhNTczN2RjMmI1ZmJhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEz
LTExLTIxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWxsb3cgSW1hZ2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0
aGFuIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIHRlc3RzIHRvIGJlIG1vcmUgcm9idXN0IHdpdGggcmVzcGVjdCB0byBhY2Nl
bGVyYXRlZCB2cworICAgICAgICBub24tYWNjZWxlcmF0ZWQgSW1hZ2VCdWZmZXJzLiAKKworICAg
ICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93Lmpz
OiBEb24ndCBzYW1wbGUgYSBjYW52YXMgYXQgZXhhY3RseQorICAgICAgICB0aGUgY29ybmVyIG9m
IGEgZHJhd24gc2hhcGUgKGJlY2F1c2UgdGhlIGNvcm5lciBtaWdodCBiZSBhbnRpYWxpYXNlZCku
IEluc3RlYWQsIHNhbXBsZQorICAgICAgICBhIHNpbmdsZSBwaXhlbCBpbnNpZGUgdGhlIHNoYXBl
CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zaGFkb3dC
bHVyLmpzOiBEb24ndCBzYW1wbGUgYSBjYW52YXMgYXQgZXhhY3RseQorICAgICAgICB0aGUgZWRn
ZSBvZiB0aGUgYmx1ciByYWRpdXMuIEluc3RlYWQsIHNhbXBsZSBhIHNpbmdsZSBwaXhlbCBwYXN0
IHRoZSBibHVyIHJhZGl1cy4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzOgorICAgICAgICAoc2hvdWxkQmVBcm91bmQp
OiBBbGxvdyB0aGlzIHRlc3QgdG8gYmUgbGVzcyBzdHJpY3Qgd2hlbiBzYW1wbGluZyBpbnNpZGUg
YSBibHVycmVkIHJlZ2lvbgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9jYW52
YXMtc2NhbGUtc2hhZG93Qmx1ci1leHBlY3RlZC50eHQ6IE1hdGNoaW5nIHVwZGF0ZSB3L3IvdAor
ICAgICAgICBjYW52YXMtc2NhbGUtc2hhZG93Qmx1ci5qcworCiAyMDEzLTExLTE5ICBCZWFyIFRy
YXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFNoYXBlc10gUGFyc2Ug
Wzxib3g+IHx8IDxzaGFwZT5dIHZhbHVlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qcwppbmRl
eCBmMjhiOWRiZWUzYjEyOWNiYmQ2ZDY1YzMzYTcwODhiOTdlM2M5MGY4Li4xY2IzMTQwNzk1MTQy
YjA4MDA3NzZjN2M1MDdjOWVhZjU5NmY3ZWMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5q
cwpAQCAtNzAsNyArNzAsNyBAQCBzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkYXRhWzFdJywgJzIwJyk7CiBzaG91bGRCZSgnZGF0YVsyXScsICcwJyk7CiAKLWltYWdlRGF0
YSA9IGN0eC5nZXRJbWFnZURhdGEoMzgwLCAzMCwgMSwgMSk7CitpbWFnZURhdGEgPSBjdHguZ2V0
SW1hZ2VEYXRhKDM4MSwgMzEsIDEsIDEpOwogZGF0YSA9IGltYWdlRGF0YS5kYXRhOwogc2hvdWxk
QmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZGF0YVsxXScsICcyMCcpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1z
aGFkb3dCbHVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1zY2FsZS1zaGFkb3dCbHVyLmpzCmluZGV4IDZmZGI3M2Y1OWUzYjBhNjJlNjk3M2E0ZGIwZjky
ODdmMWQzZDUyNTguLmIzNmFiMjYwYmYxZmRiZWU0M2UxMmZjODJjMjIxOWVlNjg2ODY2MTUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2Nh
bGUtc2hhZG93Qmx1ci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanMKQEAgLTY3LDcgKzY3LDcgQEAgc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI1MCwgMTc1LCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAxNzQsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcwJyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcw
Jyk7CkBAIC03OSw3ICs3OSw3IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURh
dGEoMTc1LCAyNTAsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgxNzQsIDI1MCwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFsz
XScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAxNzUsIDEsIDEpLmRhdGE7
CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDE3NCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdk
WzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcwJyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDM3NSwgMjUwLCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzc0LCAyNTAs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcwJyk7CiBzaG91bGRCZSgnZFsxXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQ
YXRoLXNoYWRvdy5qcwppbmRleCAyYzNmMGJhMGE4YjE0NzE0OTZiOTI3Y2QwNDUwNDZlMjY0MWY4
NzNjLi4wZDQxODMzYzUzNjdlZjNmNDNkZTVlNGFhOTM5YmJjZjUzYjMyN2M1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9r
ZVBhdGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKQEAgLTEwLDcgKzEwLDcgQEAgZnVu
Y3Rpb24gcHJpbnQobWVzc2FnZSwgY29sb3IpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOwogfQogCi1mdW5jdGlvbiBzaG91bGRC
ZUFyb3VuZChhLCBiKQorZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQoYSwgYiwgYXJnZGVsdGEpCiB7
CiAgICAgdmFyIGV2YWxBOwogICAgIHRyeSB7CkBAIC0xOSw3ICsxOSwxMSBAQCBmdW5jdGlvbiBz
aG91bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYg
KE1hdGguYWJzKGV2YWxBIC0gYikgPCAyMCkKKyAgICB2YXIgZGVsdGEgPSAyMDsKKyAgICBpZiAo
dHlwZW9mIGFyZ2RlbHRhICE9ICJ1bmRlZmluZWQiKQorICAgICAgICBkZWx0YSA9IGFyZ2RlbHRh
OworCisgICAgaWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCBkZWx0YSkKICAgICAgICAgcHJpbnQo
IlBBU1MgIiArIGEgKyAiIGlzIGFyb3VuZCAiICsgYiAsICJncmVlbiIpCiAgICAgZWxzZQogICAg
ICAgICBwcmludCgiRkFJTCAiICsgYSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVh
bDogIiArIGV2YWxBICsgIikiLCAicmVkIik7CkBAIC0xMTksNyArMTIzLDcgQEAgZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMzk4LCAyMTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzIwMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAwJywg
MjUpOwogCiBkID0gY3R4LmdldEltYWdlRGF0YSg1MDgsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwpAQCAtMTMxLDcgKzEzNSw3IEBAIGQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDQ1MCwgMTk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcxOTknKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE5OScsIDI1KTsKIAog
Ly8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCiBkID0gY3R4LmdldEltYWdlRGF0YSg1MDUs
IDQ1MCwgMSwgMSkuZGF0YTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXItZXhw
ZWN0ZWQudHh0CmluZGV4IDI3ZGE5ZjA5YjA3OWUzZTQzYjc2ZDc0YTAwZTMyYTI4MDI2YzNhZGEu
Ljg3ZGU3YTNhYTMzMjJiMjdjMmU3MmJiODNmNWNmODcyNTVkOThhNWUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1
ci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFz
L2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dApAQCAtMTAsNyArMTAsNyBAQCBQ
QVNTIGRbM10gaXMgYXJvdW5kIDI1NQogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1Lgog
UEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdh
cyA2LgorRkFJTCBkWzNdIHNob3VsZCBiZSAwLiBXYXMgNS4KIEZBSUwgZFswXSBzaG91bGQgYmUg
MC4gV2FzIDI1NS4KIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMApAQCAtMTgsNyArMTgs
NyBAQCBGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAw
LiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gc2hv
dWxkIGJlIDAuIFdhcyA2LgorRkFJTCBkWzNdIHNob3VsZCBiZSAwLiBXYXMgNS4KIEZBSUwgZFsw
XSBzaG91bGQgYmUgMC4gV2FzIDI1NS4KIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMApA
QCAtNTQsNyArNTQsNyBAQCBQQVNTIGRbM10gaXMgYXJvdW5kIDI1NQogRkFJTCBkWzBdIHNob3Vs
ZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1GQUlMIGRb
M10gc2hvdWxkIGJlIDAuIFdhcyA2LgorRkFJTCBkWzNdIHNob3VsZCBiZSAwLiBXYXMgNS4KIEZB
SUwgZFswXSBzaG91bGQgYmUgMC4gV2FzIDI1NS4KIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0g
aXMgMApAQCAtNjIsNyArNjIsNyBAQCBGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJ
TCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBp
cyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA2LgorRkFJTCBkWzNdIHNob3VsZCBiZSAw
LiBXYXMgNS4KIEZBSUwgZFswXSBzaG91bGQgYmUgMC4gV2FzIDI1NS4KIFBBU1MgZFsxXSBpcyAw
CiBQQVNTIGRbMl0gaXMgMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217601</attachid>
            <date>2013-11-21 12:41:18 -0800</date>
            <delta_ts>2013-11-22 23:14:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131121124118.patch</filename>
            <type>text/plain</type>
            <size>25741</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDAxMjFjNTc2MjkxMzhi
NzM4YTMwNTMwMjdjYWVkNWQ1YmVmZTE0NS4uYjVlMTQ2MjEwYTFlYTczOWQ4NjVjZjc5ODIxNTMx
OWYzYTQ5ZjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTExLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBJbWFnZUJ1ZmZlcidzIGJhY2tpbmcgc3RvcmUgY2FuIGJlIHNvIGV4cGVuc2l2
ZSwgaXQKKyAgICAgICAgd291bGQgYmUgYmVuZWZpY2lhbCB0byBoYXZlIGEgcG9vbCBvZiBwcmUt
Y3JlYXRlZCBiYWNraW5nIHN0b3JlcworICAgICAgICBhdmFpbGFibGUuIEhvd2V2ZXIsIHRoaXMg
bWVhbnMgdGhhdCBJbWFnZUJ1ZmZlciBtaWdodCBoYXZlIHRvIHVzZSBhCisgICAgICAgIGJhY2tp
bmcgc3RvcmUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgZXhhY3QgZGltZW5zaW9ucyB0aGF0IGl0
IG5lZWRzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmaWVsZCwgbV9iYWNraW5nU3RvcmVT
aXplLCB0byBDRydzIEltYWdlQnVmZmVyRGF0YQorICAgICAgICBjbGFzcywgYW5kIHVzZXMgdGhp
cyBuZXcgZmllbGQgd2hlbiBwZXJmb3JtaW5nIEltYWdlQnVmZmVyIG9wZXJhdGlvbnMKKyAgICAg
ICAgdG8gYWxsb3cgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeSBiYWNraW5nIHN0b3Jlcy4gQ29u
dGVudCBpcyBhbHdheXMKKyAgICAgICAgZHJhd24gaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
YmFzZVRyYW5zZm9ybSk6IFRoZSBiYXNlIHRyYW5zZm9ybSBoYXMgdG8gcHV0CisgICAgICAgIGNv
bnRlbnQgYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBpbnN0ZWFkIG9mIGJvdHRvbSBsZWZ0CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlU2l6ZUluVXNlckJvdW5kcyk6IENvbnZlbmllbmNlIGZ1bmN0aW9uIHRv
IGZpZ3VyZSBvdXQKKyAgICAgICAgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGJhY2tpbmcgdGV4dHVy
ZSBpbiB1c2VyIHNwYWNlCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOiBTZXQgdXAgbmV3IG1fYmFja2luZ1N0b3JlU2l6ZSBtZW1iZXIKKyAgICAgICAgKFdlYkNv
cmU6Om1heWJlQ3JvcFRvQm91bmRzKTogU29tZSBJbWFnZUJ1ZmZlciBBUEkgZnVuY3Rpb25zIHJl
cXVpcmUKKyAgICAgICAgb3V0cHV0dGluZyBhbiBpbWFnZSB3aXRoIGxvZ2ljYWwgc2l6ZS4gVGhp
cyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgY3JvcHBpbmcKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpjb3B5SW1hZ2UpOiBVcGRhdGVkIGZvciBsYXJnZXItdGhhbi1uZWNlc3NhcnkKKyAg
ICAgICAgYmFja2luZyBzdG9yZXMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5
TmF0aXZlSW1hZ2UpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcp
OiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOiBEaXR0bworICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERpdHRvCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKTogRGl0dG8KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEYXRhOjpwdXREYXRhKTogRGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOiBOZXcgbV9iYWNraW5nU3RvcmVTaXplIGZpZWxkCisK
IDIwMTMtMTEtMTkgIFpodWFuZyBaaGlnYW5nICA8emh1YW5nemdAY24uZnVqaXRzdS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50IHNwaW4gY29udHJvbCBvbiBXaW5DRSBwb3J0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggMWQ0ZjA4NWZk
MWY0NzJiNGE4M2FlYWU2OTM4ZmFjMGM2Y2Y0OWRiMi4uZDc4M2ZkNWNlYTVkNDE2NjQwZGU4ZjZl
OThjMzJiN2Q4NWQzN2NiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNl
LCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIHBsYXRmb3JtVHJhbnNm
b3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYpOwogI2Vsc2UKLSAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
MSwgMCwgMCwgLTEsIDAsIGludGVybmFsU2l6ZSgpLmhlaWdodCgpKTsgfQorICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9y
bSgxLCAwLCAwLCAtMSwgMCwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7IH0K
ICNlbmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkN2E5N2U2ZjFj
MTgxYjVkNTMzMmM2YjkxMGE1ZDNlOWY4ZjM5NjFmLi41NDViYzY1MDk1ZjQ2YzkwNWQ2NjNlMjQ0
ZWZjOWUzZDIyNjM5MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtOTgsNiArOTgsMTMgQEAgc3RhdGljIHZv
aWQgcmVsZWFzZUltYWdlRGF0YSh2b2lkKiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KQogICAg
IGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKTsKIH0KIAorc3RhdGljIEZsb2F0U2l6
ZSBjb21wdXRlU2l6ZUluVXNlckJvdW5kcyhjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNraW5nU3RvcmVTaXplLCBjb25zdCBJbnRTaXplJiBpbnRlcm5hbFNp
emUpCit7CisgICAgZmxvYXQgeE1hZ25pZmljYXRpb24gPSAxLjAgKiBiYWNraW5nU3RvcmVTaXpl
LndpZHRoKCkgLyBpbnRlcm5hbFNpemUud2lkdGgoKTsKKyAgICBmbG9hdCB5TWFnbmlmaWNhdGlv
biA9IDEuMCAqIGJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkgLyBpbnRlcm5hbFNpemUuaGVpZ2h0
KCk7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShsb2dpY2FsU2l6ZS53aWR0aCgpICogeE1hZ25pZmlj
YXRpb24sIGxvZ2ljYWxTaXplLmhlaWdodCgpICogeU1hZ25pZmljYXRpb24pOworfQorCiBJbWFn
ZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9kYXRhKHNpemUpIC8vIE5PVEU6IFRoZSBp
bnB1dCBoZXJlIGlzbid0IGltcG9ydGFudCBhcyBJbWFnZUJ1ZmZlckRhdGFDRydzIGNvbnN0cnVj
dG9yIGp1c3QgaWdub3JlcyBpdC4KICAgICAsIG1fbG9naWNhbFNpemUoc2l6ZSkKQEAgLTExMSw2
ICsxMTgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fc2l6ZSA9IEludFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7CisgICAgbV9kYXRh
Lm1fYmFja2luZ1N0b3JlU2l6ZSA9IG1fc2l6ZTsKIAogICAgIHN1Y2Nlc3MgPSBmYWxzZTsgIC8v
IE1ha2UgZWFybHkgcmV0dXJuIG1lYW4gZmFpbHVyZS4KICAgICBib29sIGFjY2VsZXJhdGVSZW5k
ZXJpbmcgPSByZW5kZXJpbmdNb2RlID09IEFjY2VsZXJhdGVkOwpAQCAtMTIxLDggKzEyOSw4IEBA
IEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+
IGhlaWdodCA9IG1fc2l6ZS5oZWlnaHQoKTsKIAogICAgIC8vIFByZXZlbnQgaW50ZWdlciBvdmVy
Zmxvd3MKLSAgICBtX2RhdGEubV9ieXRlc1BlclJvdyA9IDQgKiB3aWR0aDsKLSAgICBDaGVja2Vk
PHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzID0gaGVpZ2h0ICogbV9kYXRhLm1fYnl0
ZXNQZXJSb3c7CisgICAgbV9kYXRhLm1fYnl0ZXNQZXJSb3cgPSA0ICogQ2hlY2tlZDx1bnNpZ25l
ZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSk7Cisg
ICAgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92ZXJmbG93PiBudW1CeXRlcyA9IENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PihtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgp
KSAqIG1fZGF0YS5tX2J5dGVzUGVyUm93OwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ4LDIwICsxNTYsMjEgQEAgSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZQogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNnQ29udGV4dDsKICAgICBp
ZiAoYWNjZWxlcmF0ZVJlbmRlcmluZykgewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJ
TkdfU1RPUkUpCi0gICAgICAgIG1fZGF0YS5tX3N1cmZhY2UgPSBjcmVhdGVJT1N1cmZhY2UobV9z
aXplKTsKLSAgICAgICAgY2dDb250ZXh0ID0gYWRvcHRDRih3a0lPU3VyZmFjZUNvbnRleHRDcmVh
dGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgd2lkdGgudW5zYWZlR2V0KCksIGhlaWdodC51bnNh
ZmVHZXQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSkpOworICAgICAgICBtX2RhdGEubV9zdXJmYWNl
ID0gY3JlYXRlSU9TdXJmYWNlKG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUpOworICAgICAgICBG
bG9hdFNpemUgdXNlckJvdW5kcyA9IGNvbXB1dGVTaXplSW5Vc2VyQm91bmRzKEZsb2F0U2l6ZSh3
aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpKSwgbV9kYXRhLm1fYmFja2luZ1N0
b3JlU2l6ZSwgbV9zaXplKTsKKyAgICAgICAgY2dDb250ZXh0ID0gYWRvcHRDRih3a0lPU3VyZmFj
ZUNvbnRleHRDcmVhdGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgdXNlckJvdW5kcy53aWR0aCgp
LCB1c2VyQm91bmRzLmhlaWdodCgpLCBtX2RhdGEubV9jb2xvclNwYWNlKSk7CiAjZW5kaWYKICAg
ICAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgICAgICBhY2NlbGVyYXRlUmVuZGVyaW5nID0g
ZmFsc2U7IC8vIElmIGFsbG9jYXRpb24gZmFpbHMsIGZhbGwgYmFjayB0byBub24tYWNjZWxlcmF0
ZWQgcGF0aC4KICAgICB9CiAKICAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKLSAgICAg
ICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGhlaWdodC51bnNhZmVHZXQoKSwgbV9kYXRhLm1fYnl0ZXNQ
ZXJSb3cudW5zYWZlR2V0KCkpLmdldFZhbHVlKG1fZGF0YS5tX2RhdGEpKQorICAgICAgICBpZiAo
IXRyeUZhc3RDYWxsb2MobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgbV9kYXRh
Lm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCkpLmdldFZhbHVlKG1fZGF0YS5tX2RhdGEpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PHNpemVf
dD4obV9kYXRhLm1fZGF0YSkgJiAyKSk7CiAKICAgICAgICAgbV9kYXRhLm1fYml0bWFwSW5mbyA9
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKLSAgICAgICAgY2dDb250ZXh0ID0gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobV9kYXRhLm1fZGF0YSwgd2lkdGgudW5zYWZlR2V0
KCksIGhlaWdodC51bnNhZmVHZXQoKSwgOCwgbV9kYXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0
KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8pKTsKKyAgICAgICAg
Y2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobV9kYXRhLm1fZGF0YSwg
bV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVT
aXplLmhlaWdodCgpLCA4LCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9kYXRh
Lm1fY29sb3JTcGFjZSwgbV9kYXRhLm1fYml0bWFwSW5mbykpOwogICAgICAgICAvLyBDcmVhdGUg
YSBsaXZlIGltYWdlIHRoYXQgd3JhcHMgdGhlIGRhdGEuCiAgICAgICAgIG1fZGF0YS5tX2RhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBtX2RhdGEu
bV9kYXRhLCBudW1CeXRlcy51bnNhZmVHZXQoKSwgcmVsZWFzZUltYWdlRGF0YSkpOwogICAgIH0K
QEAgLTE3MCw5ICsxNzksOSBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fY29udGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoY2dDb250
ZXh0LmdldCgpKSk7Ci0gICAgbV9jb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVz
b2x1dGlvblNjYWxlKTsKICAgICBtX2NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwot
ICAgIG1fY29udGV4dC0+dHJhbnNsYXRlKDAsIC1zaXplLmhlaWdodCgpKTsKKyAgICBtX2NvbnRl
eHQtPnRyYW5zbGF0ZSgwLCAtbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgbV9jb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsK
ICAgICBtX2NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGFjY2VsZXJhdGVSZW5kZXJp
bmcpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTkxLDYgKzIwMCwxOCBAQCB2b2lkIElt
YWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKSBjb25zdAogICAgIENHQ29udGV4dEZsdXNoKG1fY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOwogfQogCitzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IG1heWJlQ3JvcFRvQm91bmRzKFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSwgY29uc3Qg
SW50U2l6ZSYgYm91bmRzKQoreworICAgIGlmIChpbWFnZSAmJiAoQ0dJbWFnZUdldFdpZHRoKGlt
YWdlLmdldCgpKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvdW5kcy53aWR0aCgpKQorICAgICAg
ICB8fCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KGJvdW5kcy5oZWlnaHQoKSkpKSB7CisgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBib3VuZHMud2lkdGgoKSwg
Ym91bmRzLmhlaWdodCgpLCA4LCA0ICogYm91bmRzLndpZHRoKCksIGRldmljZVJHQkNvbG9yU3Bh
Y2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CisgICAgICAgIENHQ29u
dGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKKyAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgYm91bmRz
LmhlaWdodCgpIC0gc3RhdGljX2Nhc3Q8aW50PihDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgp
KSksIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2Uu
Z2V0KCkpKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgIH0KKyAgICByZXR1cm4gaW1h
Z2U7Cit9CisKIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3Igc2NhbGVCZWhhdmlvcikgY29u
c3QKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CkBAIC0yMDAsMTMgKzIyMSwx
OCBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaAogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6
ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZSgp
LndpZHRoKCksIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgp
LCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6
ZSgpLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2Uo
Y29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXpl
LndpZHRoKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpLCBpbWFnZS5nZXQo
KSk7CiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShj
b250ZXh0LmdldCgpKSk7CiAgICAgfQorICAgIAorICAgIGltYWdlID0gbWF5YmVDcm9wVG9Cb3Vu
ZHMoaW1hZ2UsIGludGVybmFsU2l6ZSgpKTsKIAogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybiAwOwogCisgICAgQVNTRVJUKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihtX2xvZ2ljYWxTaXplLndpZHRoKCkpKTsKKyAgICBBU1NFUlQoQ0dJ
bWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2xvZ2lj
YWxTaXplLmhlaWdodCgpKSk7CisKICAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGJpdG1hcEltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShpbWFnZS5nZXQoKSk7CiAgICAgYml0bWFwSW1hZ2UtPnNl
dFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAKQEAgLTIxOCwxMyArMjQ0LDE1IEBAIEJhY2tpbmdT
dG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKICAgICByZXR1cm4gRG9u
dENvcHlCYWNraW5nU3RvcmU7CiB9CiAKKy8vIFRoZSByZXR1cm5lZCBpbWFnZSBtaWdodCBiZSBs
YXJnZXIgdGhhbiB0aGUgaW50ZXJuYWxTaXplKCkuIElmIHlvdSB3YW50IHRoZSBzbWFsbGVyCisv
LyBpbWFnZSwgY3JvcCB0aGUgcmVzdWx0LgogUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVm
ZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0
CiB7CiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IDA7CiAgICAgaWYgKCFtX2NvbnRleHQtPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKICAg
ICAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgICAgIGltYWdlID0gQ0dJ
bWFnZUNyZWF0ZShpbnRlcm5hbFNpemUoKS53aWR0aCgpLCBpbnRlcm5hbFNpemUoKS5oZWlnaHQo
KSwgOCwgMzIsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xv
clNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJvdmlkZXIuZ2V0KCks
IDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOworICAgICAgICAgICAgaW1hZ2Ug
PSBDR0ltYWdlQ3JlYXRlKG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwgbV9kYXRh
Lm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5tX2J5dGVzUGVyUm93
LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvLCBt
X2RhdGEubV9kYXRhUHJvdmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29weUJhY2tpbmdTdG9y
ZToKICAgICAgICAgICAgIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4
dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CkBAIC0yNTMsNiArMjgxLDggQEAgdm9pZCBJbWFnZUJ1
ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwKICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKTsKIAorICAgIGltYWdlID0gbWF5YmVDcm9wVG9Cb3VuZHMoaW1h
Z2UsIGludGVybmFsU2l6ZSgpKTsKKwogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBz
cmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9y
ZXNvbHV0aW9uU2NhbGUpOwogICAgIGRlc3RDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Uu
Z2V0KCksIGludGVybmFsU2l6ZSgpLCBjb2xvclNwYWNlLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlKTsKQEAgLTI3OSwxMiArMzA5LDE2IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjCiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CisgICAgRmxvYXRTaXpl
IGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9IGNvbXB1dGVTaXplSW5Vc2VyQm91bmRzKHJl
Y3Quc2l6ZSgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisK
ICAgICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0VG9DbGlwID0gY29udGV4dFRvQ2xpcC0+
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUg
Z3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxwaGEgbWFzayBoZXJlLgogICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgcmVj
dC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgcmVjdC54KCksIHJlY3QueSgpICsgYmFja2luZ1N0
b3JlU2l6ZUluVXNlclNwYWNlLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShwbGF0
Zm9ybUNvbnRleHRUb0NsaXAsIDEsIC0xKTsKLSAgICBDR0NvbnRleHRDbGlwVG9NYXNrKHBsYXRm
b3JtQ29udGV4dFRvQ2xpcCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXplKCkpLCBp
bWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhwbGF0Zm9ybUNvbnRleHRUb0Ns
aXAsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSks
IGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0
VG9DbGlwLCAwLCBiYWNraW5nU3RvcmVTaXplSW5Vc2VyU3BhY2UuaGVpZ2h0KCkgLSByZWN0Lmhl
aWdodCgpKTsKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXplKCkpKTsKICAgICBDR0NvbnRleHRTY2Fs
ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIDEsIC0xKTsKICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCAtcmVjdC54KCksIC1yZWN0LnkoKSAtIHJlY3Qu
aGVpZ2h0KCkpOwogfQpAQCAtMzE5LDggKzM1MywxNCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRC
eXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwg
YwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHNvdXJj
ZUNvcHktPmNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICAgICAgc291cmNl
Q29weS0+Zmx1c2hDb250ZXh0KCk7CisKICAgICBzb3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShz
b3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwg
LXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+aW50ZXJuYWxTaXplKCksIHNvdXJjZUNvcHkt
PmNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgbXVsdGlwbGllZCA9PSBVbm11bHRp
cGxpZWQsIDEpOwogCisgICAgaWYgKHNvdXJjZUNvcHktPmNvbnRleHQoKS0+aXNBY2NlbGVyYXRl
ZENvbnRleHQoKSkKKyAgICAgICAgc291cmNlQ29weS0+Zmx1c2hDb250ZXh0KCk7CisKICAgICAv
LyBTZXQgdXAgY29udGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5
CiAgICAgQ0dDb250ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRl
eHQoKTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGRlc3RDb250ZXh0KTsKQEAgLTMzNSwxMCAr
Mzc1LDE0IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBs
aWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgQ0dDb250ZXh0U2V0U2hhZG93
V2l0aENvbG9yKGRlc3RDb250ZXh0LCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgIC8vIERyYXcg
dGhlIGltYWdlIGluIENHIGNvb3JkaW5hdGUgc3BhY2UKLSAgICBJbnRQb2ludCBkZXN0UG9pbnRJ
bkNHQ29vcmRzKGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKSwgKGNvb3JkaW5hdGVTeXN0
ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0gPyBsb2dpY2FsU2l6ZSgpIDogaW50ZXJuYWxT
aXplKCkpLmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKSkgLSBzb3Vy
Y2VSZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFNpemUgc2NhbGVkRGVzdFNpemUgPSBjb21wdXRl
U2l6ZUluVXNlckJvdW5kcyhjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lz
dGVtID8gbG9naWNhbFNpemUoKSA6IGludGVybmFsU2l6ZSgpLCBtX2RhdGEubV9iYWNraW5nU3Rv
cmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisgICAgSW50UG9pbnQgZGVzdFBvaW50SW5DR0Nvb3Jk
cyhkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCksIHNjYWxlZERlc3RTaXplLmhlaWdodCgp
IC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKSkgLSBzb3VyY2VSZWN0LmhlaWdodCgp
KTsKICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nvb3JkcyhkZXN0UG9pbnRJbkNHQ29vcmRzLCBz
b3VyY2VDb3B5U2l6ZSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChkZXN0Q29udGV4dCwgZGVz
dFJlY3RJbkNHQ29vcmRzKTsKKwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzb3VyY2VDb3B5
SW1hZ2UgPSBzb3VyY2VDb3B5LT5jb3B5TmF0aXZlSW1hZ2UoKTsKLSAgICBDR0NvbnRleHREcmF3
SW1hZ2UoZGVzdENvbnRleHQsIGRlc3RSZWN0SW5DR0Nvb3Jkcywgc291cmNlQ29weUltYWdlLmdl
dCgpKTsKKyAgICBGbG9hdFJlY3QgYmFja2luZ1N0b3JlSW5EZXN0UmVjdCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KGRlc3RQb2ludEluQ0dDb29yZHMueCgpLCBkZXN0UG9pbnRJbkNHQ29vcmRzLnko
KSArIHNvdXJjZUNvcHlTaXplLmhlaWdodCgpIC0gQ0dJbWFnZUdldEhlaWdodChzb3VyY2VDb3B5
SW1hZ2UuZ2V0KCkpKSwgRmxvYXRTaXplKENHSW1hZ2VHZXRXaWR0aChzb3VyY2VDb3B5SW1hZ2Uu
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KHNvdXJjZUNvcHlJbWFnZS5nZXQoKSkpKTsKKyAgICBD
R0NvbnRleHREcmF3SW1hZ2UoZGVzdENvbnRleHQsIGJhY2tpbmdTdG9yZUluRGVzdFJlY3QsIHNv
dXJjZUNvcHlJbWFnZS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShkZXN0Q29u
dGV4dCk7CiAjZW5kaWYKIH0KQEAgLTQ0MiwxMyArNDg2LDE3IEBAIFN0cmluZyBJbWFnZUJ1ZmZl
cjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0
eSwgQ29vCiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGxvZ2ljYWxTaXpl
KCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBsb2dpY2FsU2l6
ZSgpLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VS
R0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFs
cGhhTm9uZVNraXBMYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwot
ICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSkKKyAgICB9IGVsc2UgaWYgKG1f
cmVzb2x1dGlvblNjYWxlID09IDEpIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGltYWdlID0gbWF5YmVDcm9wVG9Cb3VuZHMoaW1h
Z2UsIGludGVybmFsU2l6ZSgpKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAs
IGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxv
Z2ljYWxTaXplKCkud2lkdGgoKSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNv
bnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCks
IGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4
dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgp
LndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgRmxvYXRTaXplIGlt
YWdlUmVjdEluVXNlckJvdW5kcyA9IGNvbXB1dGVTaXplSW5Vc2VyQm91bmRzKGxvZ2ljYWxTaXpl
KCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIGludGVybmFsU2l6ZSgpKTsKKyAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VS
ZWN0SW5Vc2VyQm91bmRzLndpZHRoKCksIGltYWdlUmVjdEluVXNlckJvdW5kcy5oZWlnaHQoKSks
IGltYWdlLmdldCgpKTsKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRl
eCA1NTZhZTU0MzhhOWU1NWRiODc3MzcxNTIxZWY0NzA0MDM3YWE3MTBlLi5kZTRjMzg3ZTE2N2E1
MTk3OGFhZjhiYWY4YzlmNTliZWI3OWE3NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC0xNTgs
NyArMTU4LDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRh
OjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnMKICAgICB1bnNpZ25lZCBjaGFyKiBz
cmNSb3dzOwogICAgIAogICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAgICBz
cmNCeXRlc1BlclJvdyA9IDQgKiBzaXplLndpZHRoKCk7CisgICAgICAgIHNyY0J5dGVzUGVyUm93
ID0gbV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKTsKICAgICAgICAgc3JjUm93cyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJS
b3cgKyBvcmlnaW54ICogNDsKICAgICAgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEUpCkBAIC0zMzks
NiArMzM5LDEwIEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0
YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zCiAKIHZvaWQgSW1hZ2VCdWZmZXJE
YXRhOjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBz
b3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJv
b2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCiB7CisjaWYgQVNTRVJUX0RJ
U0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworI2VuZGlmCisKICAgICBBU1NFUlQoc291
cmNlUmVjdC53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAw
KTsKICAgICAKQEAgLTM4MSw3ICszODUsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0
YShVaW50OENsYW1wZWRBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlUwogICAg
IHVuc2lnbmVkIGNoYXIqIGRlc3RSb3dzOwogICAgIAogICAgIGlmICghYWNjZWxlcmF0ZVJlbmRl
cmluZykgewotICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogc2l6ZS53aWR0aCgpOworICAg
ICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSBtX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpOwogICAgICAg
ICBkZXN0Um93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyAo
ZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQpLnVuc2FmZUdldCgpOwogICAgICAg
ICAKICNpZiAgVVNFKEFDQ0VMRVJBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRleCBjMzk5MjA5NGJlMjUy
NzM4MDUwZWQxMDdiMGYyYTgwYzU5N2U5ZjBkLi5hNDE5MDZiYWI2MWVmZTYwMGQyNzRhZGU2NjQ2
YzFmZjM2MDY4Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgog
ICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBtX2J5dGVzUGVyUm93OwogICAg
IENHQ29sb3JTcGFjZVJlZiBtX2NvbG9yU3BhY2U7CiAgICAgUmV0YWluUHRyPElPU3VyZmFjZVJl
Zj4gbV9zdXJmYWNlOworICAgIEludFNpemUgbV9iYWNraW5nU3RvcmVTaXplOwogCiAgICAgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0RGF0YShjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSkgY29uc3Q7CiAgICAgdm9pZCBwdXREYXRhKFVpbnQ4Q2xhbXBl
ZEFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiwg
Ym9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBmNWEyMTExYzcyNWFmMTEwZjRjNDQzYTBjNjE1MTI3MWI0YzE2
YTM2Li44MDY3ZTJjYWQwMjQ3NjQzNGM1NGNiMDIxYWE1NzM3ZGMyYjVmYmFjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTMtMTEtMjEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBJbWFnZUJ1ZmZlciB0byB1c2UgYW4gSU9TdXJmYWNl
IHRoYXQgaXMgbGFyZ2VyIHRoYW4gbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdHMgdG8gYmUgbW9yZSByb2J1c3Qgd2l0
aCByZXNwZWN0IHRvIGFjY2VsZXJhdGVkIHZzCisgICAgICAgIG5vbi1hY2NlbGVyYXRlZCBJbWFn
ZUJ1ZmZlcnMuIAorCisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1m
aWxsUGF0aC1zaGFkb3cuanM6IERvbid0IHNhbXBsZSBhIGNhbnZhcyBhdCBleGFjdGx5CisgICAg
ICAgIHRoZSBjb3JuZXIgb2YgYSBkcmF3biBzaGFwZSAoYmVjYXVzZSB0aGUgY29ybmVyIG1pZ2h0
IGJlIGFudGlhbGlhc2VkKS4gSW5zdGVhZCwgc2FtcGxlCisgICAgICAgIGEgc2luZ2xlIHBpeGVs
IGluc2lkZSB0aGUgc2hhcGUKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNjYWxlLXNoYWRvd0JsdXIuanM6IERvbid0IHNhbXBsZSBhIGNhbnZhcyBhdCBleGFjdGx5
CisgICAgICAgIHRoZSBlZGdlIG9mIHRoZSBibHVyIHJhZGl1cy4gSW5zdGVhZCwgc2FtcGxlIGEg
c2luZ2xlIHBpeGVsIHBhc3QgdGhlIGJsdXIgcmFkaXVzLgorICAgICAgICAqIGZhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6CisgICAgICAg
IChzaG91bGRCZUFyb3VuZCk6IEFsbG93IHRoaXMgdGVzdCB0byBiZSBsZXNzIHN0cmljdCB3aGVu
IHNhbXBsaW5nIGluc2lkZSBhIGJsdXJyZWQgcmVnaW9uCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dDogTWF0Y2hp
bmcgdXBkYXRlIHcvci90CisgICAgICAgIGNhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLmpzCisKIDIw
MTMtMTEtMTkgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgogCiAgICAgICAgIFtD
U1MgU2hhcGVzXSBQYXJzZSBbPGJveD4gfHwgPHNoYXBlPl0gdmFsdWVzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRv
dy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBh
dGgtc2hhZG93LmpzCmluZGV4IGYyOGI5ZGJlZTNiMTI5Y2JiZDZkNjVjMzNhNzA4OGI5N2UzYzkw
ZjguLjFjYjMxNDA3OTUxNDJiMDgwMDc3NmM3YzUwN2M5ZWFmNTk2ZjdlYzAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hh
ZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMt
ZmlsbFBhdGgtc2hhZG93LmpzCkBAIC03MCw3ICs3MCw3IEBAIHNob3VsZEJlKCdkYXRhWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RhdGFbMV0nLCAnMjAnKTsKIHNob3VsZEJlKCdkYXRhWzJdJywg
JzAnKTsKIAotaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgzODAsIDMwLCAxLCAxKTsKK2lt
YWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMzgxLCAzMSwgMSwgMSk7CiBkYXRhID0gaW1hZ2VE
YXRhLmRhdGE7CiBzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkYXRhWzFd
JywgJzIwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanMKaW5kZXggNmZkYjczZjU5ZTNi
MGE2MmU2OTczYTRkYjBmOTI4N2YxZDNkNTI1OC4uYjM2YWIyNjBiZjFmZGJlZTQzZTEyZmM4MmMy
MjE5ZWU2ODY4NjYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci5qcwpAQCAtNjcsNyAr
NjcsNyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBz
aG91bGRCZUFyb3VuZCgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUw
LCAxNzUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyNTAsIDE3NCwgMSwgMSku
ZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTc5LDcgKzc5LDcgQEAgc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMCcpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgxNzUsIDI1MCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDE3NCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtMTM1LDcgKzEz
NSw3IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNo
b3VsZEJlQXJvdW5kKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg0NTAs
IDE3NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwgMTc0LCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzAnKTsKIAot
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMzc1LCAyNTAsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldElt
YWdlRGF0YSgzNzQsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tl
UGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4IDJjM2YwYmEwYThiMTQ3MTQ5NmI5
MjdjZDA0NTA0NmUyNjQxZjg3M2MuLjBkNDE4MzNjNTM2N2VmM2Y0M2RlNWU0YWE5MzliYmNmNTNi
MzI3YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAt
MTAsNyArMTAsNyBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdlLCBjb2xvcikKICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7CiB9CiAK
LWZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCitmdW5jdGlvbiBzaG91bGRCZUFyb3VuZChh
LCBiLCBhcmdkZWx0YSkKIHsKICAgICB2YXIgZXZhbEE7CiAgICAgdHJ5IHsKQEAgLTE5LDcgKzE5
LDExIEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCiAgICAgICAgIGV2YWxBID0gZTsK
ICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIwKQorICAgIHZhciBkZWx0
YSA9IDIwOworICAgIGlmICh0eXBlb2YgYXJnZGVsdGEgIT0gInVuZGVmaW5lZCIpCisgICAgICAg
IGRlbHRhID0gYXJnZGVsdGE7CisKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IGRlbHRh
KQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVu
IikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5k
ICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTExOSw3ICsx
MjMsNyBAQCBkID0gY3R4LmdldEltYWdlRGF0YSgzOTgsIDIxMCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAwJyk7CitzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcyMDAnLCAyNSk7CiAKIGQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwOCwgMjUwLCAx
LCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CkBAIC0xMzEsNyArMTM1LDcgQEAg
ZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAxOTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE5OScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnMTk5JywgMjUpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KIGQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9jYW52YXMtc2Nh
bGUtc2hhZG93Qmx1ci1leHBlY3RlZC50eHQKaW5kZXggMjdkYTlmMDliMDc5ZTNlNDNiNzZkNzRh
MDBlMzJhMjgwMjZjM2FkYS4uODdkZTdhM2FhMzMyMmIyN2MyZTcyYmI4M2Y1Y2Y4NzI1NWQ5OGE1
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZh
cy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXItZXhwZWN0ZWQudHh0CkBA
IC0xMCw3ICsxMCw3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgMjU1CiBGQUlMIGRbMF0gc2hvdWxk
IGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFsz
XSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJ
TCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBp
cyAwCkBAIC0xOCw3ICsxOCw3IEBAIEZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDUuCiBGQUlM
IGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlz
IDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAu
IFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAK
IFBBU1MgZFsyXSBpcyAwCkBAIC01NCw3ICs1NCw3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgMjU1
CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBk
WzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxk
IGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFd
IGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC02Miw3ICs2Miw3IEBAIEZBSUwgZFszXSBzaG91bGQg
YmUgMC4gV2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0g
aXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlM
IGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1
LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217741</attachid>
            <date>2013-11-22 23:14:03 -0800</date>
            <delta_ts>2013-11-27 20:42:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131122231402.patch</filename>
            <type>text/plain</type>
            <size>25354</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcwYzI2MjlhZWJmYjEz
OGYwNTEzNmQyM2JhYmMwODI5N2ZmN2E5MC4uZWQ5NWY5NzI5NjkxZjNiNzBmM2FkOTAyZDhlMzM5
OTdmN2MzMDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTExLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBJbWFnZUJ1ZmZlcidzIGJhY2tpbmcgc3RvcmUgY2FuIGJlIHNvIGV4cGVuc2l2
ZSwgaXQKKyAgICAgICAgd291bGQgYmUgYmVuZWZpY2lhbCB0byBoYXZlIGEgcG9vbCBvZiBwcmUt
Y3JlYXRlZCBiYWNraW5nIHN0b3JlcworICAgICAgICBhdmFpbGFibGUuIEhvd2V2ZXIsIHRoaXMg
bWVhbnMgdGhhdCBJbWFnZUJ1ZmZlciBtaWdodCBoYXZlIHRvIHVzZSBhCisgICAgICAgIGJhY2tp
bmcgc3RvcmUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgZXhhY3QgZGltZW5zaW9ucyB0aGF0IGl0
IG5lZWRzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmaWVsZCwgbV9iYWNraW5nU3RvcmVT
aXplLCB0byBDRydzIEltYWdlQnVmZmVyRGF0YQorICAgICAgICBjbGFzcywgYW5kIHVzZXMgdGhp
cyBuZXcgZmllbGQgd2hlbiBwZXJmb3JtaW5nIEltYWdlQnVmZmVyIG9wZXJhdGlvbnMKKyAgICAg
ICAgdG8gYWxsb3cgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeSBiYWNraW5nIHN0b3Jlcy4gQ29u
dGVudCBpcyBhbHdheXMKKyAgICAgICAgZHJhd24gaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
YmFzZVRyYW5zZm9ybSk6IFRoZSBiYXNlIHRyYW5zZm9ybSBoYXMgdG8gcHV0CisgICAgICAgIGNv
bnRlbnQgYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBpbnN0ZWFkIG9mIGJvdHRvbSBsZWZ0CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlU2l6ZUluVXNlckJvdW5kcyk6IENvbnZlbmllbmNlIGZ1bmN0aW9uIHRv
IGZpZ3VyZSBvdXQKKyAgICAgICAgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGJhY2tpbmcgdGV4dHVy
ZSBpbiB1c2VyIHNwYWNlCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOiBTZXQgdXAgbmV3IG1fYmFja2luZ1N0b3JlU2l6ZSBtZW1iZXIKKyAgICAgICAgKFdlYkNv
cmU6Om1heWJlQ3JvcFRvQm91bmRzKTogU29tZSBJbWFnZUJ1ZmZlciBBUEkgZnVuY3Rpb25zIHJl
cXVpcmUKKyAgICAgICAgb3V0cHV0dGluZyBhbiBpbWFnZSB3aXRoIGxvZ2ljYWwgc2l6ZS4gVGhp
cyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgY3JvcHBpbmcKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpjb3B5SW1hZ2UpOiBVcGRhdGVkIGZvciBsYXJnZXItdGhhbi1uZWNlc3NhcnkKKyAg
ICAgICAgYmFja2luZyBzdG9yZXMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5
TmF0aXZlSW1hZ2UpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcp
OiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOiBEaXR0bworICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERpdHRvCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKTogRGl0dG8KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEYXRhOjpwdXREYXRhKTogRGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOiBOZXcgbV9iYWNraW5nU3RvcmVTaXplIGZpZWxkCisK
IDIwMTMtMTEtMTkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBGaXggYnVpbGQgYnJlYWsgYWZ0ZXIgcjE1OTUzMy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDFkNGYwODVmZDFmNDcyYjRh
ODNhZWFlNjkzOGZhYzBjNmNmNDlkYjIuLmQ3ODNmZDVjZWE1ZDQxNjY0MGRlOGY2ZTk4YzMyYjdk
ODVkMzdjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaApAQCAtMTE4LDcgKzExOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JT
cGFjZSBkc3RDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9y
U3BhY2UoY29uc3QgVmVjdG9yPGludD4mKTsKICNlbHNlCi0gICAgICAgIEFmZmluZVRyYW5zZm9y
bSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAs
IC0xLCAwLCBpbnRlcm5hbFNpemUoKS5oZWlnaHQoKSk7IH0KKyAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwg
MCwgLTEsIDAsIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOyB9CiAjZW5kaWYK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggZDdhOTdlNmYxYzE4MWI1ZDUz
MzJjNmI5MTBhNWQzZTlmOGYzOTYxZi4uMDk2ZjIxNDE0ZmUzMDVlOTQ3NzNlNmE1ZDdiMTVkYTBj
NDhjN2Y0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTk4LDYgKzk4LDEzIEBAIHN0YXRpYyB2b2lkIHJlbGVh
c2VJbWFnZURhdGEodm9pZCosIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCkKICAgICBmYXN0RnJl
ZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CiB9CiAKK3N0YXRpYyBGbG9hdFNpemUgY29tcHV0
ZVNpemVJblVzZXJCb3VuZHMoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50
U2l6ZSYgYmFja2luZ1N0b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplKQorewor
ICAgIGZsb2F0IHhNYWduaWZpY2F0aW9uID0gMS4wICogYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgp
IC8gaW50ZXJuYWxTaXplLndpZHRoKCk7CisgICAgZmxvYXQgeU1hZ25pZmljYXRpb24gPSAxLjAg
KiBiYWNraW5nU3RvcmVTaXplLmhlaWdodCgpIC8gaW50ZXJuYWxTaXplLmhlaWdodCgpOworICAg
IHJldHVybiBGbG9hdFNpemUobG9naWNhbFNpemUud2lkdGgoKSAqIHhNYWduaWZpY2F0aW9uLCBs
b2dpY2FsU2l6ZS5oZWlnaHQoKSAqIHlNYWduaWZpY2F0aW9uKTsKK30KKwogSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBpbWFnZUNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
Ym9vbCYgc3VjY2VzcykKICAgICA6IG1fZGF0YShzaXplKSAvLyBOT1RFOiBUaGUgaW5wdXQgaGVy
ZSBpc24ndCBpbXBvcnRhbnQgYXMgSW1hZ2VCdWZmZXJEYXRhQ0cncyBjb25zdHJ1Y3RvciBqdXN0
IGlnbm9yZXMgaXQuCiAgICAgLCBtX2xvZ2ljYWxTaXplKHNpemUpCkBAIC0xMTEsNiArMTE4LDcg
QEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZQogICAgICAgICByZXR1cm47CiAKICAgICBtX3NpemUg
PSBJbnRTaXplKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOworICAgIG1fZGF0YS5tX2JhY2tp
bmdTdG9yZVNpemUgPSBtX3NpemU7CiAKICAgICBzdWNjZXNzID0gZmFsc2U7ICAvLyBNYWtlIGVh
cmx5IHJldHVybiBtZWFuIGZhaWx1cmUuCiAgICAgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nID0g
cmVuZGVyaW5nTW9kZSA9PSBBY2NlbGVyYXRlZDsKQEAgLTEyMSw4ICsxMjksOCBAQCBJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlCiAgICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiBoZWlnaHQg
PSBtX3NpemUuaGVpZ2h0KCk7CiAKICAgICAvLyBQcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzCi0g
ICAgbV9kYXRhLm1fYnl0ZXNQZXJSb3cgPSA0ICogd2lkdGg7Ci0gICAgQ2hlY2tlZDxzaXplX3Qs
IFJlY29yZE92ZXJmbG93PiBudW1CeXRlcyA9IGhlaWdodCAqIG1fZGF0YS5tX2J5dGVzUGVyUm93
OworICAgIG1fZGF0YS5tX2J5dGVzUGVyUm93ID0gNCAqIENoZWNrZWQ8dW5zaWduZWQsIFJlY29y
ZE92ZXJmbG93PihtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLndpZHRoKCkpOworICAgIENoZWNr
ZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBS
ZWNvcmRPdmVyZmxvdz4obV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSkgKiBtX2Rh
dGEubV9ieXRlc1BlclJvdzsKICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTE0OCwyMCArMTU2LDIxIEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UKICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjZ0NvbnRleHQ7CiAgICAgaWYgKGFjY2Vs
ZXJhdGVSZW5kZXJpbmcpIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JF
KQotICAgICAgICBtX2RhdGEubV9zdXJmYWNlID0gY3JlYXRlSU9TdXJmYWNlKG1fc2l6ZSk7Ci0g
ICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fZGF0
YS5tX3N1cmZhY2UuZ2V0KCksIHdpZHRoLnVuc2FmZUdldCgpLCBoZWlnaHQudW5zYWZlR2V0KCks
IG1fZGF0YS5tX2NvbG9yU3BhY2UpKTsKKyAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNyZWF0
ZUlPU3VyZmFjZShtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplKTsKKyAgICAgICAgRmxvYXRTaXpl
IHVzZXJCb3VuZHMgPSBjb21wdXRlU2l6ZUluVXNlckJvdW5kcyhGbG9hdFNpemUod2lkdGgudW5z
YWZlR2V0KCksIGhlaWdodC51bnNhZmVHZXQoKSksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUs
IG1fc2l6ZSk7CisgICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0
Q3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIHVzZXJCb3VuZHMud2lkdGgoKSwgdXNlckJv
dW5kcy5oZWlnaHQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSkpOwogI2VuZGlmCiAgICAgICAgIGlm
ICghY2dDb250ZXh0KQogICAgICAgICAgICAgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IGZhbHNlOyAv
LyBJZiBhbGxvY2F0aW9uIGZhaWxzLCBmYWxsIGJhY2sgdG8gbm9uLWFjY2VsZXJhdGVkIHBhdGgu
CiAgICAgfQogCiAgICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIGlmICgh
dHJ5RmFzdENhbGxvYyhoZWlnaHQudW5zYWZlR2V0KCksIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVu
c2FmZUdldCgpKS5nZXRWYWx1ZShtX2RhdGEubV9kYXRhKSkKKyAgICAgICAgaWYgKCF0cnlGYXN0
Q2FsbG9jKG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCksIG1fZGF0YS5tX2J5dGVz
UGVyUm93LnVuc2FmZUdldCgpKS5nZXRWYWx1ZShtX2RhdGEubV9kYXRhKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KG1fZGF0
YS5tX2RhdGEpICYgMikpOworICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0
cl90PihtX2RhdGEubV9kYXRhKSAmIDMpKTsKIAogICAgICAgICBtX2RhdGEubV9iaXRtYXBJbmZv
ID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0OwotICAgICAgICBjZ0NvbnRleHQgPSBh
ZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShtX2RhdGEubV9kYXRhLCB3aWR0aC51bnNhZmVH
ZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpLCA4LCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVH
ZXQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSwgbV9kYXRhLm1fYml0bWFwSW5mbykpOworICAgICAg
ICBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShtX2RhdGEubV9kYXRh
LCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9y
ZVNpemUuaGVpZ2h0KCksIDgsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2Rh
dGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvKSk7CiAgICAgICAgIC8vIENyZWF0
ZSBhIGxpdmUgaW1hZ2UgdGhhdCB3cmFwcyB0aGUgZGF0YS4KICAgICAgICAgbV9kYXRhLm1fZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIG1fZGF0
YS5tX2RhdGEsIG51bUJ5dGVzLnVuc2FmZUdldCgpLCByZWxlYXNlSW1hZ2VEYXRhKSk7CiAgICAg
fQpAQCAtMTcwLDkgKzE3OSw5IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dChjZ0Nv
bnRleHQuZ2V0KCkpKTsKLSAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9y
ZXNvbHV0aW9uU2NhbGUpOwogICAgIG1fY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7
Ci0gICAgbV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLXNpemUuaGVpZ2h0KCkpOworICAgIG1fY29u
dGV4dC0+dHJhbnNsYXRlKDAsIC1tX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKTsK
KyAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUp
OwogICAgIG1fY29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQoYWNjZWxlcmF0ZVJlbmRl
cmluZyk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CkBAIC0xOTEsNiArMjAwLDE4IEBAIHZvaWQg
SW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpIGNvbnN0CiAgICAgQ0dDb250ZXh0Rmx1c2gobV9j
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gbWF5YmVDcm9wVG9Cb3VuZHMoUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlLCBjb25z
dCBJbnRTaXplJiBib3VuZHMpCit7CisgICAgaWYgKGltYWdlICYmIChDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UuZ2V0KCkpICE9IHN0YXRpY19jYXN0PHNpemVfdD4oYm91bmRzLndpZHRoKCkpCisgICAg
ICAgIHx8IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpICE9IHN0YXRpY19jYXN0PHNpemVf
dD4oYm91bmRzLmhlaWdodCgpKSkpIHsKKyAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4g
Y29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGJvdW5kcy53aWR0aCgp
LCBib3VuZHMuaGVpZ2h0KCksIDgsIDQgKiBib3VuZHMud2lkdGgoKSwgZGV2aWNlUkdCQ29sb3JT
cGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKyAgICAgICAgQ0dD
b250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOworICAg
ICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCBib3Vu
ZHMuaGVpZ2h0KCkgLSBzdGF0aWNfY2FzdDxpbnQ+KENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0
KCkpKSwgQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFn
ZS5nZXQoKSkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgfQorICAgIHJldHVybiBp
bWFnZTsKK30KKwogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWhhdmlvciBzY2FsZUJlaGF2aW9yKSBj
b25zdAogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKQEAgLTIwMCwxMyArMjIx
LDE4IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0
b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4
dFJlZj4gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxT
aXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXpl
KCkud2lkdGgoKSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0
KCksIGtDR0JsZW5kTW9kZUNvcHkpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4
dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxT
aXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFn
ZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNp
emUud2lkdGgoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSksIGltYWdlLmdl
dCgpKTsKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQuZ2V0KCkpKTsKICAgICB9CisgICAgCisgICAgaW1hZ2UgPSBtYXliZUNyb3BUb0Jv
dW5kcyhpbWFnZSwgaW50ZXJuYWxTaXplKCkpOwogCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuIDA7CiAKKyAgICBBU1NFUlQoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSA9PSBz
dGF0aWNfY2FzdDxzaXplX3Q+KG1fbG9naWNhbFNpemUud2lkdGgoKSkpOworICAgIEFTU0VSVChD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbG9n
aWNhbFNpemUuaGVpZ2h0KCkpKTsKKwogICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGltYWdlLmdldCgpKTsKICAgICBiaXRtYXBJbWFnZS0+
c2V0U3BhY2VTaXplKHNwYWNlU2l6ZSgpKTsKIApAQCAtMjE4LDEzICsyNDQsMTUgQEAgQmFja2lu
Z1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKQogICAgIHJldHVybiBE
b250Q29weUJhY2tpbmdTdG9yZTsKIH0KIAorLy8gVGhlIHJldHVybmVkIGltYWdlIG1pZ2h0IGJl
IGxhcmdlciB0aGFuIHRoZSBpbnRlcm5hbFNpemUoKS4gSWYgeW91IHdhbnQgdGhlIHNtYWxsZXIK
Ky8vIGltYWdlLCBjcm9wIHRoZSByZXN1bHQuCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VC
dWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29u
c3QKIHsKICAgICBDR0ltYWdlUmVmIGltYWdlID0gMDsKICAgICBpZiAoIW1fY29udGV4dC0+aXNB
Y2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewog
ICAgICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2UgPSBD
R0ltYWdlQ3JlYXRlKGludGVybmFsU2l6ZSgpLndpZHRoKCksIGludGVybmFsU2l6ZSgpLmhlaWdo
dCgpLCA4LCAzMiwgbV9kYXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIG1fZGF0YS5tX2Nv
bG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8sIG1fZGF0YS5tX2RhdGFQcm92aWRlci5nZXQo
KSwgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7CisgICAgICAgICAgICBpbWFn
ZSA9IENHSW1hZ2VDcmVhdGUobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2Rh
dGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpLCA4LCAzMiwgbV9kYXRhLm1fYnl0ZXNQZXJS
b3cudW5zYWZlR2V0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8s
IG1fZGF0YS5tX2RhdGFQcm92aWRlci5nZXQoKSwgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50
RGVmYXVsdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0
b3JlOgogICAgICAgICAgICAgaW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250
ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKQEAgLTI3OSwxMiArMzA3LDE2IEBAIHZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjCiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CisgICAgRmxv
YXRTaXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9IGNvbXB1dGVTaXplSW5Vc2VyQm91
bmRzKHJlY3Quc2l6ZSgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUo
KSk7CisKICAgICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0VG9DbGlwID0gY29udGV4dFRv
Q2xpcC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMg
dG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxwaGEgbWFzayBoZXJlLgogICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xp
cCwgcmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0VHJh
bnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgcmVjdC54KCksIHJlY3QueSgpICsgYmFj
a2luZ1N0b3JlU2l6ZUluVXNlclNwYWNlLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNU
TShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIDEsIC0xKTsKLSAgICBDR0NvbnRleHRDbGlwVG9NYXNr
KHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXpl
KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhwbGF0Zm9ybUNvbnRl
eHRUb0NsaXAsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJhY2tpbmdTdG9yZVNpemVJblVzZXJT
cGFjZSksIGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1D
b250ZXh0VG9DbGlwLCAwLCBiYWNraW5nU3RvcmVTaXplSW5Vc2VyU3BhY2UuaGVpZ2h0KCkgLSBy
ZWN0LmhlaWdodCgpKTsKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KHBsYXRmb3JtQ29udGV4dFRv
Q2xpcCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXplKCkpKTsKICAgICBDR0NvbnRl
eHRTY2FsZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIDEsIC0xKTsKICAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCAtcmVjdC54KCksIC1yZWN0LnkoKSAt
IHJlY3QuaGVpZ2h0KCkpOwogfQpAQCAtMzE5LDggKzM1MSwxNCBAQCB2b2lkIEltYWdlQnVmZmVy
OjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgYwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYg
KHNvdXJjZUNvcHktPmNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICAgICAg
c291cmNlQ29weS0+Zmx1c2hDb250ZXh0KCk7CisKICAgICBzb3VyY2VDb3B5LT5tX2RhdGEucHV0
RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIEludFBvaW50KC1zb3VyY2VSZWN0
LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+aW50ZXJuYWxTaXplKCksIHNvdXJj
ZUNvcHktPmNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgbXVsdGlwbGllZCA9PSBV
bm11bHRpcGxpZWQsIDEpOwogCisgICAgaWYgKHNvdXJjZUNvcHktPmNvbnRleHQoKS0+aXNBY2Nl
bGVyYXRlZENvbnRleHQoKSkKKyAgICAgICAgc291cmNlQ29weS0+Zmx1c2hDb250ZXh0KCk7CisK
ICAgICAvLyBTZXQgdXAgY29udGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJp
dCBjb3B5CiAgICAgQ0dDb250ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGRlc3RDb250ZXh0KTsKQEAgLTMz
NSwxMCArMzczLDE0IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBt
dWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgQ0dDb250ZXh0U2V0
U2hhZG93V2l0aENvbG9yKGRlc3RDb250ZXh0LCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgIC8v
IERyYXcgdGhlIGltYWdlIGluIENHIGNvb3JkaW5hdGUgc3BhY2UKLSAgICBJbnRQb2ludCBkZXN0
UG9pbnRJbkNHQ29vcmRzKGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKSwgKGNvb3JkaW5h
dGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0gPyBsb2dpY2FsU2l6ZSgpIDogaW50
ZXJuYWxTaXplKCkpLmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKSkg
LSBzb3VyY2VSZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFNpemUgc2NhbGVkRGVzdFNpemUgPSBj
b21wdXRlU2l6ZUluVXNlckJvdW5kcyhjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGlu
YXRlU3lzdGVtID8gbG9naWNhbFNpemUoKSA6IGludGVybmFsU2l6ZSgpLCBtX2RhdGEubV9iYWNr
aW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisgICAgSW50UG9pbnQgZGVzdFBvaW50SW5D
R0Nvb3JkcyhkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCksIHNjYWxlZERlc3RTaXplLmhl
aWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKSkgLSBzb3VyY2VSZWN0Lmhl
aWdodCgpKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nvb3JkcyhkZXN0UG9pbnRJbkNHQ29v
cmRzLCBzb3VyY2VDb3B5U2l6ZSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChkZXN0Q29udGV4
dCwgZGVzdFJlY3RJbkNHQ29vcmRzKTsKKwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzb3Vy
Y2VDb3B5SW1hZ2UgPSBzb3VyY2VDb3B5LT5jb3B5TmF0aXZlSW1hZ2UoKTsKLSAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoZGVzdENvbnRleHQsIGRlc3RSZWN0SW5DR0Nvb3Jkcywgc291cmNlQ29weUlt
YWdlLmdldCgpKTsKKyAgICBGbG9hdFJlY3QgYmFja2luZ1N0b3JlSW5EZXN0UmVjdCA9IEZsb2F0
UmVjdChGbG9hdFBvaW50KGRlc3RQb2ludEluQ0dDb29yZHMueCgpLCBkZXN0UG9pbnRJbkNHQ29v
cmRzLnkoKSArIHNvdXJjZUNvcHlTaXplLmhlaWdodCgpIC0gKGludClDR0ltYWdlR2V0SGVpZ2h0
KHNvdXJjZUNvcHlJbWFnZS5nZXQoKSkpLCBGbG9hdFNpemUoQ0dJbWFnZUdldFdpZHRoKHNvdXJj
ZUNvcHlJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoc291cmNlQ29weUltYWdlLmdldCgp
KSkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShkZXN0Q29udGV4dCwgYmFja2luZ1N0b3JlSW5E
ZXN0UmVjdCwgc291cmNlQ29weUltYWdlLmdldCgpKTsKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0
YXRlKGRlc3RDb250ZXh0KTsKICNlbmRpZgogfQpAQCAtNDQyLDEzICs0ODQsMTcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiBxdWFsaXR5LCBDb28KICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUo
bG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwgNCAq
IGxvZ2ljYWxTaXplKCkud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8
IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0KSk7Ci0gICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxKQorICAgIH0g
ZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSkgewogICAgICAgICBpbWFnZSA9IGNvcHlO
YXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgaW1hZ2UgPSBtYXliZUNyb3BU
b0JvdW5kcyhpbWFnZSwgaW50ZXJuYWxTaXplKCkpOworICAgIH0KICAgICBlbHNlIHsKICAgICAg
ICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgICAg
ICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGUoMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgp
LCA4LCA0ICogbG9naWNhbFNpemUoKS53aWR0aCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRC
bGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgICAgIENHQ29u
dGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXpl
KCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKKyAgICAg
ICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxv
Z2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSkpOworICAgICAgICBG
bG9hdFNpemUgaW1hZ2VSZWN0SW5Vc2VyQm91bmRzID0gY29tcHV0ZVNpemVJblVzZXJCb3VuZHMo
bG9naWNhbFNpemUoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkp
OworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgw
LCAwLCBpbWFnZVJlY3RJblVzZXJCb3VuZHMud2lkdGgoKSwgaW1hZ2VSZWN0SW5Vc2VyQm91bmRz
LmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwCmluZGV4IDU1NmFlNTQzOGE5ZTU1ZGI4NzczNzE1MjFlZjQ3MDQwMzdhYTcxMGUuLmRl
NGMzODdlMTY3YTUxOTc4YWFmOGJhZjhjOWY1OWJlYjc5YTc1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5j
cHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFn
ZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29ucwogICAgIHVuc2ln
bmVkIGNoYXIqIHNyY1Jvd3M7CiAgICAgCiAgICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7
Ci0gICAgICAgIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNpemUud2lkdGgoKTsKKyAgICAgICAgc3Jj
Qnl0ZXNQZXJSb3cgPSBtX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpOwogICAgICAgICBzcmNSb3dz
ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4obV9kYXRhKSArIG9yaWdpbnkgKiBz
cmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwogICAgICAgICAKICNpZiBVU0UoQUNDRUxFUkFU
RSkKQEAgLTMzOSw2ICszMzksMTAgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1h
Z2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnMKIAogdm9pZCBJ
bWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoVWludDhDbGFtcGVkQXJyYXkqJiBzb3VyY2UsIGNvbnN0
IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJl
bmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKIHsKKyNp
ZiBBU1NFUlRfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisjZW5kaWYKKwogICAg
IEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC5o
ZWlnaHQoKSA+IDApOwogICAgIApAQCAtMzgxLDcgKzM4NSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJE
YXRhOjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBz
b3VyY2VTCiAgICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3M7CiAgICAgCiAgICAgaWYgKCFhY2Nl
bGVyYXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IDQgKiBzaXplLndp
ZHRoKCk7CisgICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IG1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0
KCk7CiAgICAgICAgIGRlc3RSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
bV9kYXRhKSArIChkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRlc3R4ICogNCkudW5zYWZlR2V0
KCk7CiAgICAgICAgIAogI2lmICBVU0UoQUNDRUxFUkFURSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCmluZGV4IGMz
OTkyMDk0YmUyNTI3MzgwNTBlZDEwN2IwZjJhODBjNTk3ZTlmMGQuLmE0MTkwNmJhYjYxZWZlNjAw
ZDI3NGFkZTY2NDZjMWZmMzYwNjhjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaApAQCAtNTQsNiArNTQsNyBA
QCBwdWJsaWM6CiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG1fYnl0ZXNQ
ZXJSb3c7CiAgICAgQ0dDb2xvclNwYWNlUmVmIG1fY29sb3JTcGFjZTsKICAgICBSZXRhaW5QdHI8
SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7CisgICAgSW50U2l6ZSBtX2JhY2tpbmdTdG9yZVNpemU7
CiAKICAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXREYXRhKGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVs
dGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKSBjb25zdDsKICAgICB2b2lkIHB1dERhdGEo
VWludDhDbGFtcGVkQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0
IEludFNpemUmLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU2OGQ5YWQ3NjM5NGViZGRjYzdkZDQxNWNk
ZjEzN2Q5YzY5NDcxMjAuLjE3ZmE3NTg3NjNhMjdiYTAxMGViMGEyNDgyZmU0NWMwZjQzMjI4ZWEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0xMS0yMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IEltYWdlQnVmZmVyIHRvIHVzZSBh
biBJT1N1cmZhY2UgdGhhdCBpcyBsYXJnZXIgdGhhbiBuZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYyNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0cyB0byBiZSBtb3Jl
IHJvYnVzdCB3aXRoIHJlc3BlY3QgdG8gYWNjZWxlcmF0ZWQgdnMKKyAgICAgICAgbm9uLWFjY2Vs
ZXJhdGVkIEltYWdlQnVmZmVycy4gCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qczogRG9uJ3Qgc2FtcGxlIGEgY2FudmFzIGF0IGV4
YWN0bHkKKyAgICAgICAgdGhlIGNvcm5lciBvZiBhIGRyYXduIHNoYXBlIChiZWNhdXNlIHRoZSBj
b3JuZXIgbWlnaHQgYmUgYW50aWFsaWFzZWQpLiBJbnN0ZWFkLCBzYW1wbGUKKyAgICAgICAgYSBz
aW5nbGUgcGl4ZWwgaW5zaWRlIHRoZSBzaGFwZQorICAgICAgICAqIGZhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci5qczogRG9uJ3Qgc2FtcGxlIGEgY2FudmFz
IGF0IGV4YWN0bHkKKyAgICAgICAgdGhlIGVkZ2Ugb2YgdGhlIGJsdXIgcmFkaXVzLiBJbnN0ZWFk
LCBzYW1wbGUgYSBzaW5nbGUgcGl4ZWwgcGFzdCB0aGUgYmx1ciByYWRpdXMuCisgICAgICAgICog
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5q
czoKKyAgICAgICAgKHNob3VsZEJlQXJvdW5kKTogQWxsb3cgdGhpcyB0ZXN0IHRvIGJlIGxlc3Mg
c3RyaWN0IHdoZW4gc2FtcGxpbmcgaW5zaWRlIGEgYmx1cnJlZCByZWdpb24KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXItZXhwZWN0ZWQu
dHh0OiBNYXRjaGluZyB1cGRhdGUgdy9yL3QKKyAgICAgICAgY2FudmFzLXNjYWxlLXNoYWRvd0Js
dXIuanMKKwogMjAxMy0xMS0xOSAgU3VuLXdvbyBOYW0gIDxzdW5ueS5uYW1Ac2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF0gTGF5b3V0IHRlc3RzIG5lZWQgdG8gYmUgcmViYXNlbGluZWQuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZp
bGxQYXRoLXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCmluZGV4IGYyOGI5ZGJlZTNiMTI5Y2JiZDZkNjVjMzNh
NzA4OGI5N2UzYzkwZjguLjFjYjMxNDA3OTUxNDJiMDgwMDc3NmM3YzUwN2M5ZWFmNTk2ZjdlYzAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMt
ZmlsbFBhdGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10
ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCkBAIC03MCw3ICs3MCw3IEBAIHNob3VsZEJl
KCdkYXRhWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RhdGFbMV0nLCAnMjAnKTsKIHNob3VsZEJl
KCdkYXRhWzJdJywgJzAnKTsKIAotaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgzODAsIDMw
LCAxLCAxKTsKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMzgxLCAzMSwgMSwgMSk7CiBk
YXRhID0gaW1hZ2VEYXRhLmRhdGE7CiBzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkYXRhWzFdJywgJzIwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanMKaW5kZXgg
NmZkYjczZjU5ZTNiMGE2MmU2OTczYTRkYjBmOTI4N2YxZDNkNTI1OC4uYjM2YWIyNjBiZjFmZGJl
ZTQzZTEyZmM4MmMyMjE5ZWU2ODY4NjYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLmpzCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci5q
cwpAQCAtNjcsNyArNjcsNyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjUwLCAxNzUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyNTAs
IDE3NCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTc5LDcgKzc5LDcgQEAgc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10n
LCAnMCcpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgxNzUsIDI1MCwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDE3NCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpA
QCAtMTM1LDcgKzEzNSw3IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldElt
YWdlRGF0YSg0NTAsIDE3NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwg
MTc0LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNd
JywgJzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMzc1LCAyNTAsIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSgzNzQsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMt
c2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4IDJjM2YwYmEw
YThiMTQ3MTQ5NmI5MjdjZDA0NTA0NmUyNjQxZjg3M2MuLjBkNDE4MzNjNTM2N2VmM2Y0M2RlNWU0
YWE5MzliYmNmNTNiMzI3YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNo
YWRvdy5qcwpAQCAtMTAsNyArMTAsNyBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdlLCBjb2xvcikK
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFn
cmFwaCk7CiB9CiAKLWZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCitmdW5jdGlvbiBzaG91
bGRCZUFyb3VuZChhLCBiLCBhcmdkZWx0YSkKIHsKICAgICB2YXIgZXZhbEE7CiAgICAgdHJ5IHsK
QEAgLTE5LDcgKzE5LDExIEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCiAgICAgICAg
IGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIwKQor
ICAgIHZhciBkZWx0YSA9IDIwOworICAgIGlmICh0eXBlb2YgYXJnZGVsdGEgIT0gInVuZGVmaW5l
ZCIpCisgICAgICAgIGRlbHRhID0gYXJnZGVsdGE7CisKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEg
LSBiKSA8IGRlbHRhKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIg
KyBiICwgImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBp
cyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsK
QEAgLTExOSw3ICsxMjMsNyBAQCBkID0gY3R4LmdldEltYWdlRGF0YSgzOTgsIDIxMCwgMSwgMSku
ZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAwJyk7Citz
aG91bGRCZUFyb3VuZCgnZFszXScsICcyMDAnLCAyNSk7CiAKIGQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDUwOCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CkBAIC0xMzEs
NyArMTM1LDcgQEAgZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAxOTgsIDEsIDEpLmRhdGE7CiBz
aG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJl
KCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE5OScpOworc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnMTk5JywgMjUpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRv
dy4KIGQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFk
b3dCbHVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2NhbnZh
cy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci1leHBlY3RlZC50eHQKaW5kZXggMjdkYTlmMDliMDc5
ZTNlNDNiNzZkNzRhMDBlMzJhMjgwMjZjM2FkYS4uODdkZTdhM2FhMzMyMmIyN2MyZTcyYmI4M2Y1
Y2Y4NzI1NWQ5OGE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXItZXhw
ZWN0ZWQudHh0CkBAIC0xMCw3ICsxMCw3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgMjU1CiBGQUlM
IGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlz
IDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAu
IFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAK
IFBBU1MgZFsyXSBpcyAwCkBAIC0xOCw3ICsxOCw3IEBAIEZBSUwgZFszXSBzaG91bGQgYmUgMC4g
V2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAog
UEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10g
c2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFT
UyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC01NCw3ICs1NCw3IEBAIFBBU1MgZFszXSBp
cyBhcm91bmQgMjU1CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0g
aXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlM
IGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1
LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC02Miw3ICs2Miw3IEBAIEZBSUwg
ZFszXSBzaG91bGQgYmUgMC4gV2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUu
CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4g
V2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBi
ZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217977</attachid>
            <date>2013-11-27 20:42:23 -0800</date>
            <delta_ts>2013-12-02 17:42:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131127204222.patch</filename>
            <type>text/plain</type>
            <size>24964</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDAxMjFjNTc2MjkxMzhi
NzM4YTMwNTMwMjdjYWVkNWQ1YmVmZTE0NS4uMThlMmRjYjFkZTc4MjEwMjc2NmU1Y2E4YTM3ZGE2
YjQ2MmMwNWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTExLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBJbWFnZUJ1ZmZlcidzIGJhY2tpbmcgc3RvcmUgY2FuIGJlIHNvIGV4cGVuc2l2
ZSwgaXQKKyAgICAgICAgd291bGQgYmUgYmVuZWZpY2lhbCB0byBoYXZlIGEgcG9vbCBvZiBwcmUt
Y3JlYXRlZCBiYWNraW5nIHN0b3JlcworICAgICAgICBhdmFpbGFibGUuIEhvd2V2ZXIsIHRoaXMg
bWVhbnMgdGhhdCBJbWFnZUJ1ZmZlciBtaWdodCBoYXZlIHRvIHVzZSBhCisgICAgICAgIGJhY2tp
bmcgc3RvcmUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgZXhhY3QgZGltZW5zaW9ucyB0aGF0IGl0
IG5lZWRzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmaWVsZCwgbV9iYWNraW5nU3RvcmVT
aXplLCB0byBDRydzIEltYWdlQnVmZmVyRGF0YQorICAgICAgICBjbGFzcywgYW5kIHVzZXMgdGhp
cyBuZXcgZmllbGQgd2hlbiBwZXJmb3JtaW5nIEltYWdlQnVmZmVyIG9wZXJhdGlvbnMKKyAgICAg
ICAgdG8gYWxsb3cgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeSBiYWNraW5nIHN0b3Jlcy4gQ29u
dGVudCBpcyBhbHdheXMKKyAgICAgICAgZHJhd24gaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
YmFzZVRyYW5zZm9ybSk6IFRoZSBiYXNlIHRyYW5zZm9ybSBoYXMgdG8gcHV0CisgICAgICAgIGNv
bnRlbnQgYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBpbnN0ZWFkIG9mIGJvdHRvbSBsZWZ0CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlU2l6ZUluVXNlckJvdW5kcyk6IENvbnZlbmllbmNlIGZ1bmN0aW9uIHRv
IGZpZ3VyZSBvdXQKKyAgICAgICAgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGJhY2tpbmcgdGV4dHVy
ZSBpbiB1c2VyIHNwYWNlCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOiBTZXQgdXAgbmV3IG1fYmFja2luZ1N0b3JlU2l6ZSBtZW1iZXIKKyAgICAgICAgKFdlYkNv
cmU6Om1heWJlQ3JvcFRvQm91bmRzKTogU29tZSBJbWFnZUJ1ZmZlciBBUEkgZnVuY3Rpb25zIHJl
cXVpcmUKKyAgICAgICAgb3V0cHV0dGluZyBhbiBpbWFnZSB3aXRoIGxvZ2ljYWwgc2l6ZS4gVGhp
cyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgY3JvcHBpbmcKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpjb3B5SW1hZ2UpOiBVcGRhdGVkIGZvciBsYXJnZXItdGhhbi1uZWNlc3NhcnkKKyAg
ICAgICAgYmFja2luZyBzdG9yZXMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5
TmF0aXZlSW1hZ2UpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXAp
OiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERp
dHRvCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKTogRGl0dG8KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOiBEaXR0bworICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKTogRGl0dG8KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOiBOZXcgbV9iYWNraW5nU3RvcmVT
aXplIGZpZWxkCisKIDIwMTMtMTEtMTkgIFpodWFuZyBaaGlnYW5nICA8emh1YW5nemdAY24uZnVq
aXRzdS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHNwaW4gY29udHJvbCBvbiBXaW5DRSBwb3J0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5k
ZXggMWQ0ZjA4NWZkMWY0NzJiNGE4M2FlYWU2OTM4ZmFjMGM2Y2Y0OWRiMi4uZDc4M2ZkNWNlYTVk
NDE2NjQwZGU4ZjZlOThjMzJiN2Q4NWQzN2NiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBz
cmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIHBs
YXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYpOwogI2Vsc2UKLSAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZp
bmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIGludGVybmFsU2l6ZSgpLmhlaWdodCgpKTsgfQor
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFm
ZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5o
ZWlnaHQoKSk7IH0KICNlbmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRl
eCBkN2E5N2U2ZjFjMTgxYjVkNTMzMmM2YjkxMGE1ZDNlOWY4ZjM5NjFmLi4zN2I4MGE1NGU5NDg2
ZjVjZjE1ZTdhNzY4YTBjNmI5N2RkYTQ1NTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtOTgsNiArOTgsMTMg
QEAgc3RhdGljIHZvaWQgcmVsZWFzZUltYWdlRGF0YSh2b2lkKiwgY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90KQogICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKTsKIH0KIAorc3Rh
dGljIEZsb2F0U2l6ZSBjb21wdXRlU2l6ZUluVXNlckJvdW5kcyhjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNraW5nU3RvcmVTaXplLCBjb25zdCBJbnRTaXpl
JiBpbnRlcm5hbFNpemUpCit7CisgICAgZmxvYXQgeE1hZ25pZmljYXRpb24gPSAxLjAgKiBiYWNr
aW5nU3RvcmVTaXplLndpZHRoKCkgLyBpbnRlcm5hbFNpemUud2lkdGgoKTsKKyAgICBmbG9hdCB5
TWFnbmlmaWNhdGlvbiA9IDEuMCAqIGJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkgLyBpbnRlcm5h
bFNpemUuaGVpZ2h0KCk7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShsb2dpY2FsU2l6ZS53aWR0aCgp
ICogeE1hZ25pZmljYXRpb24sIGxvZ2ljYWxTaXplLmhlaWdodCgpICogeU1hZ25pZmljYXRpb24p
OworfQorCiBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBib29sJiBzdWNjZXNzKQogICAgIDogbV9kYXRhKHNpemUpIC8v
IE5PVEU6IFRoZSBpbnB1dCBoZXJlIGlzbid0IGltcG9ydGFudCBhcyBJbWFnZUJ1ZmZlckRhdGFD
RydzIGNvbnN0cnVjdG9yIGp1c3QgaWdub3JlcyBpdC4KICAgICAsIG1fbG9naWNhbFNpemUoc2l6
ZSkKQEAgLTExMSw2ICsxMTgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fc2l6ZSA9IEludFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7
CisgICAgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSA9IG1fc2l6ZTsKIAogICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsgIC8vIE1ha2UgZWFybHkgcmV0dXJuIG1lYW4gZmFpbHVyZS4KICAgICBib29sIGFj
Y2VsZXJhdGVSZW5kZXJpbmcgPSByZW5kZXJpbmdNb2RlID09IEFjY2VsZXJhdGVkOwpAQCAtMTIx
LDggKzEyOSw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICBDaGVja2VkPGludCwgUmVj
b3JkT3ZlcmZsb3c+IGhlaWdodCA9IG1fc2l6ZS5oZWlnaHQoKTsKIAogICAgIC8vIFByZXZlbnQg
aW50ZWdlciBvdmVyZmxvd3MKLSAgICBtX2RhdGEubV9ieXRlc1BlclJvdyA9IDQgKiB3aWR0aDsK
LSAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzID0gaGVpZ2h0ICog
bV9kYXRhLm1fYnl0ZXNQZXJSb3c7CisgICAgbV9kYXRhLm1fYnl0ZXNQZXJSb3cgPSA0ICogQ2hl
Y2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUu
d2lkdGgoKSk7CisgICAgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92ZXJmbG93PiBudW1CeXRlcyA9
IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihtX2RhdGEubV9iYWNraW5nU3RvcmVT
aXplLmhlaWdodCgpKSAqIG1fZGF0YS5tX2J5dGVzUGVyUm93OwogICAgIGlmIChudW1CeXRlcy5o
YXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ4LDIwICsxNTYsMjEgQEAg
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZQogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNnQ29u
dGV4dDsKICAgICBpZiAoYWNjZWxlcmF0ZVJlbmRlcmluZykgewogI2lmIFVTRShJT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgICAgIG1fZGF0YS5tX3N1cmZhY2UgPSBjcmVhdGVJ
T1N1cmZhY2UobV9zaXplKTsKLSAgICAgICAgY2dDb250ZXh0ID0gYWRvcHRDRih3a0lPU3VyZmFj
ZUNvbnRleHRDcmVhdGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgd2lkdGgudW5zYWZlR2V0KCks
IGhlaWdodC51bnNhZmVHZXQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSkpOworICAgICAgICBtX2Rh
dGEubV9zdXJmYWNlID0gY3JlYXRlSU9TdXJmYWNlKG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUp
OworICAgICAgICBGbG9hdFNpemUgdXNlckJvdW5kcyA9IGNvbXB1dGVTaXplSW5Vc2VyQm91bmRz
KEZsb2F0U2l6ZSh3aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpKSwgbV9kYXRh
Lm1fYmFja2luZ1N0b3JlU2l6ZSwgbV9zaXplKTsKKyAgICAgICAgY2dDb250ZXh0ID0gYWRvcHRD
Rih3a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgdXNlckJv
dW5kcy53aWR0aCgpLCB1c2VyQm91bmRzLmhlaWdodCgpLCBtX2RhdGEubV9jb2xvclNwYWNlKSk7
CiAjZW5kaWYKICAgICAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgICAgICBhY2NlbGVyYXRl
UmVuZGVyaW5nID0gZmFsc2U7IC8vIElmIGFsbG9jYXRpb24gZmFpbHMsIGZhbGwgYmFjayB0byBu
b24tYWNjZWxlcmF0ZWQgcGF0aC4KICAgICB9CiAKICAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJp
bmcpIHsKLSAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGhlaWdodC51bnNhZmVHZXQoKSwgbV9k
YXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCkpLmdldFZhbHVlKG1fZGF0YS5tX2RhdGEpKQor
ICAgICAgICBpZiAoIXRyeUZhc3RDYWxsb2MobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWln
aHQoKSwgbV9kYXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCkpLmdldFZhbHVlKG1fZGF0YS5t
X2RhdGEpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBBU1NFUlQoIShyZWludGVycHJl
dF9jYXN0PHNpemVfdD4obV9kYXRhLm1fZGF0YSkgJiAyKSk7CisgICAgICAgIEFTU0VSVCghKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fZGF0YS5tX2RhdGEpICYgMykpOwogCiAgICAgICAg
IG1fZGF0YS5tX2JpdG1hcEluZm8gPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7Ci0g
ICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG1fZGF0YS5t
X2RhdGEsIHdpZHRoLnVuc2FmZUdldCgpLCBoZWlnaHQudW5zYWZlR2V0KCksIDgsIG1fZGF0YS5t
X2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9i
aXRtYXBJbmZvKSk7CisgICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKG1fZGF0YS5tX2RhdGEsIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwg
bV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgOCwgbV9kYXRhLm1fYnl0ZXNQZXJS
b3cudW5zYWZlR2V0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8p
KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgbGl2ZSBpbWFnZSB0aGF0IHdyYXBzIHRoZSBkYXRhLgog
ICAgICAgICBtX2RhdGEubV9kYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3Jl
YXRlV2l0aERhdGEoMCwgbV9kYXRhLm1fZGF0YSwgbnVtQnl0ZXMudW5zYWZlR2V0KCksIHJlbGVh
c2VJbWFnZURhdGEpKTsKICAgICB9CkBAIC0xNzAsOSArMTc5LDkgQEAgSW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQgPSBhZG9wdFB0cihuZXcg
R3JhcGhpY3NDb250ZXh0KGNnQ29udGV4dC5nZXQoKSkpOwotICAgIG1fY29udGV4dC0+YXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7CiAgICAgbV9jb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBtX2NvbnRleHQtPnRyYW5zbGF0ZSgwLCAtc2l6ZS5o
ZWlnaHQoKSk7CisgICAgbV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLW1fZGF0YS5tX2JhY2tpbmdT
dG9yZVNpemUuaGVpZ2h0KCkpOworICAgIG1fY29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihtX3Jlc29sdXRpb25TY2FsZSk7CiAgICAgbV9jb250ZXh0LT5zZXRJc0FjY2VsZXJhdGVkQ29u
dGV4dChhY2NlbGVyYXRlUmVuZGVyaW5nKTsKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KQEAgLTE5
MSw2ICsyMDAsMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCkgY29uc3QKICAg
ICBDR0NvbnRleHRGbHVzaChtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAorc3Rh
dGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXliZUNyb3BUb0JvdW5kcyhSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykKK3sKKyAgICBpZiAoaW1hZ2Ug
JiYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihi
b3VuZHMud2lkdGgoKSkKKyAgICAgICAgfHwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkg
IT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMuaGVpZ2h0KCkpKSkgeworICAgICAgICByZXR1
cm4gQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZS5nZXQoKSwgQ0dSZWN0TWFrZSgw
LCBzdGF0aWNfY2FzdDxpbnQ+KENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSAtIGJvdW5k
cy5oZWlnaHQoKSwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSkpOworICAgIH0KKyAg
ICByZXR1cm4gaW1hZ2U7Cit9CisKIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3Igc2NhbGVC
ZWhhdmlvcikgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CkBAIC0y
MDAsMTMgKzIxOCwxOCBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaAogICAgICAgICBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIFJldGFpblB0
cjxDR0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgw
LCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBs
b2dpY2FsU2l6ZSgpLndpZHRoKCksIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShj
b250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0lt
YWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgp
LCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2RhdGEubV9iYWNr
aW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkp
LCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CiAgICAgfQorICAgIAorICAgIGltYWdlID0gbWF5
YmVDcm9wVG9Cb3VuZHMoaW1hZ2UsIGludGVybmFsU2l6ZSgpKTsKIAogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybiAwOwogCisgICAgQVNTRVJUKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5n
ZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2xvZ2ljYWxTaXplLndpZHRoKCkpKTsKKyAg
ICBBU1NFUlQoQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihtX2xvZ2ljYWxTaXplLmhlaWdodCgpKSk7CisKICAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShpbWFnZS5nZXQoKSk7CiAgICAgYml0
bWFwSW1hZ2UtPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAKQEAgLTIxOCwxMyArMjQxLDE1
IEBAIEJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKICAg
ICByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmU7CiB9CiAKKy8vIFRoZSByZXR1cm5lZCBpbWFn
ZSBtaWdodCBiZSBsYXJnZXIgdGhhbiB0aGUgaW50ZXJuYWxTaXplKCkuIElmIHlvdSB3YW50IHRo
ZSBzbWFsbGVyCisvLyBpbWFnZSwgY3JvcCB0aGUgcmVzdWx0LgogUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVo
YXZpb3IpIGNvbnN0CiB7CiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IDA7CiAgICAgaWYgKCFtX2Nv
bnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgc3dpdGNoIChjb3B5QmVo
YXZpb3IpIHsKICAgICAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAgICAg
IGltYWdlID0gQ0dJbWFnZUNyZWF0ZShpbnRlcm5hbFNpemUoKS53aWR0aCgpLCBpbnRlcm5hbFNp
emUoKS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBt
X2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOworICAgICAg
ICAgICAgaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlKG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lk
dGgoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5t
X2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9i
aXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJvdmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29w
eUJhY2tpbmdTdG9yZToKICAgICAgICAgICAgIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
SW1hZ2UoY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CkBAIC0yNzksMTIgKzMwNCwxNiBA
QCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwogCiB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dFRvQ2xpcCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAog
eworICAgIEZsb2F0U2l6ZSBiYWNraW5nU3RvcmVTaXplSW5Vc2VyU3BhY2UgPSBjb21wdXRlU2l6
ZUluVXNlckJvdW5kcyhyZWN0LnNpemUoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgaW50
ZXJuYWxTaXplKCkpOworCiAgICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dFRvQ2xpcCA9
IGNvbnRleHRUb0NsaXAtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBUaGlzIGlt
YWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVy
ZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpOwotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNv
bnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgIENH
Q29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0
LnkoKSArIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250
ZXh0U2NhbGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCAxLCAtMSk7Ci0gICAgQ0dDb250ZXh0
Q2xpcFRvTWFzayhwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHJlY3Quc2l6ZSgpKSwgaW1hZ2UuZ2V0KCkpOworICAgIENHQ29udGV4dENsaXBUb01hc2socGxh
dGZvcm1Db250ZXh0VG9DbGlwLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBiYWNraW5nU3RvcmVT
aXplSW5Vc2VyU3BhY2UpLCBpbWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RN
KHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgMCwgYmFja2luZ1N0b3JlU2l6ZUluVXNlclNwYWNlLmhl
aWdodCgpIC0gcmVjdC5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChwbGF0Zm9y
bUNvbnRleHRUb0NsaXAsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHJlY3Quc2l6ZSgpKSk7CiAg
ICAgQ0dDb250ZXh0U2NhbGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCAxLCAtMSk7CiAgICAg
Q0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgLXJlY3QueCgpLCAt
cmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKIH0KQEAgLTMxOSw4ICszNDgsMTQgQEAgdm9pZCBJ
bWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBl
ZEFycmF5KiBzb3VyY2UsIGMKICAgICBpZiAoIXNvdXJjZUNvcHkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmIChzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
CisgICAgICAgIHNvdXJjZUNvcHktPmZsdXNoQ29udGV4dCgpOworCiAgICAgc291cmNlQ29weS0+
bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBJbnRQb2ludCgt
c291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSksIHNvdXJjZUNvcHktPmludGVybmFsU2l6
ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIG11bHRp
cGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKIAorICAgIGlmIChzb3VyY2VDb3B5LT5jb250ZXh0
KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgICAgIHNvdXJjZUNvcHktPmZsdXNoQ29u
dGV4dCgpOworCiAgICAgLy8gU2V0IHVwIGNvbnRleHQgZm9yIHVzaW5nIGRyYXdJbWFnZSBhcyBh
IGRpcmVjdCBiaXQgY29weQogICAgIENHQ29udGV4dFJlZiBkZXN0Q29udGV4dCA9IGNvbnRleHQo
KS0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShkZXN0Q29udGV4
dCk7CkBAIC0zMzUsMTAgKzM3MCwxNCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXko
TXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIENH
Q29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihkZXN0Q29udGV4dCwgQ0dTaXplWmVybywgMCwgMCk7
CiAKICAgICAvLyBEcmF3IHRoZSBpbWFnZSBpbiBDRyBjb29yZGluYXRlIHNwYWNlCi0gICAgSW50
UG9pbnQgZGVzdFBvaW50SW5DR0Nvb3JkcyhkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCks
IChjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtID8gbG9naWNhbFNp
emUoKSA6IGludGVybmFsU2l6ZSgpKS5oZWlnaHQoKSAtIChkZXN0UG9pbnQueSgpICsgc291cmNl
UmVjdC55KCkpIC0gc291cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgRmxvYXRTaXplIHNjYWxlZERl
c3RTaXplID0gY29tcHV0ZVNpemVJblVzZXJCb3VuZHMoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dp
Y2FsQ29vcmRpbmF0ZVN5c3RlbSA/IGxvZ2ljYWxTaXplKCkgOiBpbnRlcm5hbFNpemUoKSwgbV9k
YXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOworICAgIEludFBvaW50IGRl
c3RQb2ludEluQ0dDb29yZHMoZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpLCBzY2FsZWRE
ZXN0U2l6ZS5oZWlnaHQoKSAtIChkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC55KCkpIC0gc291
cmNlUmVjdC5oZWlnaHQoKSk7CiAgICAgSW50UmVjdCBkZXN0UmVjdEluQ0dDb29yZHMoZGVzdFBv
aW50SW5DR0Nvb3Jkcywgc291cmNlQ29weVNpemUpOworICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
ZGVzdENvbnRleHQsIGRlc3RSZWN0SW5DR0Nvb3Jkcyk7CisKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gc291cmNlQ29weUltYWdlID0gc291cmNlQ29weS0+Y29weU5hdGl2ZUltYWdlKCk7Ci0g
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRlc3RDb250ZXh0LCBkZXN0UmVjdEluQ0dDb29yZHMsIHNv
dXJjZUNvcHlJbWFnZS5nZXQoKSk7CisgICAgRmxvYXRSZWN0IGJhY2tpbmdTdG9yZUluRGVzdFJl
Y3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludChkZXN0UG9pbnRJbkNHQ29vcmRzLngoKSwgZGVzdFBv
aW50SW5DR0Nvb3Jkcy55KCkgKyBzb3VyY2VDb3B5U2l6ZS5oZWlnaHQoKSAtIChpbnQpQ0dJbWFn
ZUdldEhlaWdodChzb3VyY2VDb3B5SW1hZ2UuZ2V0KCkpKSwgRmxvYXRTaXplKENHSW1hZ2VHZXRX
aWR0aChzb3VyY2VDb3B5SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KHNvdXJjZUNvcHlJ
bWFnZS5nZXQoKSkpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoZGVzdENvbnRleHQsIGJhY2tp
bmdTdG9yZUluRGVzdFJlY3QsIHNvdXJjZUNvcHlJbWFnZS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0
UmVzdG9yZUdTdGF0ZShkZXN0Q29udGV4dCk7CiAjZW5kaWYKIH0KQEAgLTQ0MiwxMyArNDgxLDE3
IEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgQ29vCiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlKGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwg
OCwgMzIsIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRl
ckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCkpOwotICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0g
MSkKKyAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEpIHsKICAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGltYWdlID0g
bWF5YmVDcm9wVG9Cb3VuZHMoaW1hZ2UsIGludGVybmFsU2l6ZSgpKTsKKyAgICB9CiAgICAgZWxz
ZSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0Q0YoQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUo
KS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgZGV2aWNlUkdCQ29sb3JT
cGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dD
b250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwotICAg
ICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBs
b2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQo
KSk7CisgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpKTsK
KyAgICAgICAgRmxvYXRTaXplIGltYWdlUmVjdEluVXNlckJvdW5kcyA9IGNvbXB1dGVTaXplSW5V
c2VyQm91bmRzKGxvZ2ljYWxTaXplKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIGludGVy
bmFsU2l6ZSgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENH
UmVjdE1ha2UoMCwgMCwgaW1hZ2VSZWN0SW5Vc2VyQm91bmRzLndpZHRoKCksIGltYWdlUmVjdElu
VXNlckJvdW5kcy5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKICAgICAgICAgaW1hZ2UgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyRGF0YUNHLmNwcAppbmRleCA1NTZhZTU0MzhhOWU1NWRiODc3MzcxNTIxZWY0NzA0MDM3
YWE3MTBlLi5kZTRjMzg3ZTE2N2E1MTk3OGFhZjhiYWY4YzlmNTliZWI3OWE3NTM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhQ0cuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnMK
ICAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzOwogICAgIAogICAgIGlmICghYWNjZWxlcmF0ZVJl
bmRlcmluZykgewotICAgICAgICBzcmNCeXRlc1BlclJvdyA9IDQgKiBzaXplLndpZHRoKCk7Cisg
ICAgICAgIHNyY0J5dGVzUGVyUm93ID0gbV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKTsKICAgICAg
ICAgc3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyBv
cmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKICAgICAgICAgCiAjaWYgVVNF
KEFDQ0VMRVJBVEUpCkBAIC0zMzksNiArMzM5LDEwIEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
CiAKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291
cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFj
Y2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUpCiB7CisjaWYgQVNTRVJUX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworI2Vu
ZGlmCisKICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKHNv
dXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKICAgICAKQEAgLTM4MSw3ICszODUsNyBAQCB2b2lkIElt
YWdlQnVmZmVyRGF0YTo6cHV0RGF0YShVaW50OENsYW1wZWRBcnJheSomIHNvdXJjZSwgY29uc3Qg
SW50U2l6ZSYgc291cmNlUwogICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RSb3dzOwogICAgIAogICAg
IGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSA0
ICogc2l6ZS53aWR0aCgpOworICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSBtX2J5dGVzUGVyUm93
LnVuc2FmZUdldCgpOwogICAgICAgICBkZXN0Um93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KG1fZGF0YSkgKyAoZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQp
LnVuc2FmZUdldCgpOwogICAgICAgICAKICNpZiAgVVNFKEFDQ0VMRVJBVEUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cu
aAppbmRleCBjMzk5MjA5NGJlMjUyNzM4MDUwZWQxMDdiMGYyYTgwYzU5N2U5ZjBkLi5hNDE5MDZi
YWI2MWVmZTYwMGQyNzRhZGU2NjQ2YzFmZjM2MDY4Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTU0
LDYgKzU0LDcgQEAgcHVibGljOgogICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PiBtX2J5dGVzUGVyUm93OwogICAgIENHQ29sb3JTcGFjZVJlZiBtX2NvbG9yU3BhY2U7CiAgICAg
UmV0YWluUHRyPElPU3VyZmFjZVJlZj4gbV9zdXJmYWNlOworICAgIEludFNpemUgbV9iYWNraW5n
U3RvcmVTaXplOwogCiAgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0RGF0YShj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywg
Ym9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkgY29uc3Q7CiAgICAgdm9p
ZCBwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3Vy
Y2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVs
dGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNWEyMTExYzcyNWFmMTEw
ZjRjNDQzYTBjNjE1MTI3MWI0YzE2YTM2Li44MDY3ZTJjYWQwMjQ3NjQzNGM1NGNiMDIxYWE1NzM3
ZGMyYjVmYmFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTMtMTEtMjEgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBJbWFnZUJ1ZmZl
ciB0byB1c2UgYW4gSU9TdXJmYWNlIHRoYXQgaXMgbGFyZ2VyIHRoYW4gbmVjZXNzYXJ5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdHMg
dG8gYmUgbW9yZSByb2J1c3Qgd2l0aCByZXNwZWN0IHRvIGFjY2VsZXJhdGVkIHZzCisgICAgICAg
IG5vbi1hY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMuIAorCisgICAgICAgICogZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsUGF0aC1zaGFkb3cuanM6IERvbid0IHNhbXBsZSBhIGNh
bnZhcyBhdCBleGFjdGx5CisgICAgICAgIHRoZSBjb3JuZXIgb2YgYSBkcmF3biBzaGFwZSAoYmVj
YXVzZSB0aGUgY29ybmVyIG1pZ2h0IGJlIGFudGlhbGlhc2VkKS4gSW5zdGVhZCwgc2FtcGxlCisg
ICAgICAgIGEgc2luZ2xlIHBpeGVsIGluc2lkZSB0aGUgc2hhcGUKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanM6IERvbid0IHNhbXBs
ZSBhIGNhbnZhcyBhdCBleGFjdGx5CisgICAgICAgIHRoZSBlZGdlIG9mIHRoZSBibHVyIHJhZGl1
cy4gSW5zdGVhZCwgc2FtcGxlIGEgc2luZ2xlIHBpeGVsIHBhc3QgdGhlIGJsdXIgcmFkaXVzLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0
aC1zaGFkb3cuanM6CisgICAgICAgIChzaG91bGRCZUFyb3VuZCk6IEFsbG93IHRoaXMgdGVzdCB0
byBiZSBsZXNzIHN0cmljdCB3aGVuIHNhbXBsaW5nIGluc2lkZSBhIGJsdXJyZWQgcmVnaW9uCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVy
LWV4cGVjdGVkLnR4dDogTWF0Y2hpbmcgdXBkYXRlIHcvci90CisgICAgICAgIGNhbnZhcy1zY2Fs
ZS1zaGFkb3dCbHVyLmpzCisKIDIwMTMtMTEtMTkgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRv
YmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhcGVzXSBQYXJzZSBbPGJveD4gfHwgPHNoYXBlPl0g
dmFsdWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCmluZGV4IGYyOGI5ZGJlZTNiMTI5Y2Ji
ZDZkNjVjMzNhNzA4OGI5N2UzYzkwZjguLjFjYjMxNDA3OTUxNDJiMDgwMDc3NmM3YzUwN2M5ZWFm
NTk2ZjdlYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCkBAIC03MCw3ICs3MCw3IEBA
IHNob3VsZEJlKCdkYXRhWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RhdGFbMV0nLCAnMjAnKTsK
IHNob3VsZEJlKCdkYXRhWzJdJywgJzAnKTsKIAotaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0
YSgzODAsIDMwLCAxLCAxKTsKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMzgxLCAzMSwg
MSwgMSk7CiBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CiBzaG91bGRCZSgnZGF0YVswXScsICcyNTUn
KTsKIHNob3VsZEJlKCdkYXRhWzFdJywgJzIwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIu
anMKaW5kZXggNmZkYjczZjU5ZTNiMGE2MmU2OTczYTRkYjBmOTI4N2YxZDNkNTI1OC4uYjM2YWIy
NjBiZjFmZGJlZTQzZTEyZmM4MmMyMjE5ZWU2ODY4NjYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLmpzCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc2hh
ZG93Qmx1ci5qcwpAQCAtNjcsNyArNjcsNyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICcyNTUnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAxNzUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgyNTAsIDE3NCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTc5LDcgKzc5LDcg
QEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbM10nLCAnMCcpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgxNzUsIDI1MCwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDE3NCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzI1NScpOwogCi1kID0g
Y3R4LmdldEltYWdlRGF0YSg0NTAsIDE3NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDQ1MCwgMTc0LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzNdJywgJzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMzc1LCAyNTAsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzNzQsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4
IDJjM2YwYmEwYThiMTQ3MTQ5NmI5MjdjZDA0NTA0NmUyNjQxZjg3M2MuLjBkNDE4MzNjNTM2N2Vm
M2Y0M2RlNWU0YWE5MzliYmNmNTNiMzI3YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJv
a2VQYXRoLXNoYWRvdy5qcwpAQCAtMTAsNyArMTAsNyBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdl
LCBjb2xvcikKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENo
aWxkKHBhcmFncmFwaCk7CiB9CiAKLWZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCitmdW5j
dGlvbiBzaG91bGRCZUFyb3VuZChhLCBiLCBhcmdkZWx0YSkKIHsKICAgICB2YXIgZXZhbEE7CiAg
ICAgdHJ5IHsKQEAgLTE5LDcgKzE5LDExIEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIp
CiAgICAgICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBi
KSA8IDIwKQorICAgIHZhciBkZWx0YSA9IDIwOworICAgIGlmICh0eXBlb2YgYXJnZGVsdGEgIT0g
InVuZGVmaW5lZCIpCisgICAgICAgIGRlbHRhID0gYXJnZGVsdGE7CisKKyAgICBpZiAoTWF0aC5h
YnMoZXZhbEEgLSBiKSA8IGRlbHRhKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMg
YXJvdW5kICIgKyBiICwgImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIg
KyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIs
ICJyZWQiKTsKQEAgLTExOSw3ICsxMjMsNyBAQCBkID0gY3R4LmdldEltYWdlRGF0YSgzOTgsIDIx
MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
MjAwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcyMDAnLCAyNSk7CiAKIGQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDUwOCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CkBAIC0xMzEsNyArMTM1LDcgQEAgZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAxOTgsIDEsIDEp
LmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE5OScpOwor
c2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTk5JywgMjUpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFs
cGhhIHNoYWRvdy4KIGQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci1leHBlY3RlZC50eHQKaW5kZXggMjdk
YTlmMDliMDc5ZTNlNDNiNzZkNzRhMDBlMzJhMjgwMjZjM2FkYS4uODdkZTdhM2FhMzMyMmIyN2My
ZTcyYmI4M2Y1Y2Y4NzI1NWQ5OGE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXNoYWRv
d0JsdXItZXhwZWN0ZWQudHh0CkBAIC0xMCw3ICsxMCw3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQg
MjU1CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFT
UyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hv
dWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBk
WzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC0xOCw3ICsxOCw3IEBAIEZBSUwgZFszXSBzaG91
bGQgYmUgMC4gV2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRb
MV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitG
QUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMg
MjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC01NCw3ICs1NCw3IEBAIFBB
U1MgZFszXSBpcyBhcm91bmQgMjU1CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQ
QVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2Fz
IDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAw
LiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC02Miw3ICs2Miw3
IEBAIEZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAu
IFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91
bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBd
IHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218245</attachid>
            <date>2013-12-02 17:42:43 -0800</date>
            <delta_ts>2013-12-02 20:16:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131202174242.patch</filename>
            <type>text/plain</type>
            <size>24632</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcwYzI2MjlhZWJmYjEz
OGYwNTEzNmQyM2JhYmMwODI5N2ZmN2E5MC4uZWQ5NWY5NzI5NjkxZjNiNzBmM2FkOTAyZDhlMzM5
OTdmN2MzMDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTExLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBJbWFnZUJ1ZmZlcidzIGJhY2tpbmcgc3RvcmUgY2FuIGJlIHNvIGV4cGVuc2l2
ZSwgaXQKKyAgICAgICAgd291bGQgYmUgYmVuZWZpY2lhbCB0byBoYXZlIGEgcG9vbCBvZiBwcmUt
Y3JlYXRlZCBiYWNraW5nIHN0b3JlcworICAgICAgICBhdmFpbGFibGUuIEhvd2V2ZXIsIHRoaXMg
bWVhbnMgdGhhdCBJbWFnZUJ1ZmZlciBtaWdodCBoYXZlIHRvIHVzZSBhCisgICAgICAgIGJhY2tp
bmcgc3RvcmUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgZXhhY3QgZGltZW5zaW9ucyB0aGF0IGl0
IG5lZWRzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmaWVsZCwgbV9iYWNraW5nU3RvcmVT
aXplLCB0byBDRydzIEltYWdlQnVmZmVyRGF0YQorICAgICAgICBjbGFzcywgYW5kIHVzZXMgdGhp
cyBuZXcgZmllbGQgd2hlbiBwZXJmb3JtaW5nIEltYWdlQnVmZmVyIG9wZXJhdGlvbnMKKyAgICAg
ICAgdG8gYWxsb3cgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeSBiYWNraW5nIHN0b3Jlcy4gQ29u
dGVudCBpcyBhbHdheXMKKyAgICAgICAgZHJhd24gaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
YmFzZVRyYW5zZm9ybSk6IFRoZSBiYXNlIHRyYW5zZm9ybSBoYXMgdG8gcHV0CisgICAgICAgIGNv
bnRlbnQgYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBpbnN0ZWFkIG9mIGJvdHRvbSBsZWZ0CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlU2l6ZUluVXNlckJvdW5kcyk6IENvbnZlbmllbmNlIGZ1bmN0aW9uIHRv
IGZpZ3VyZSBvdXQKKyAgICAgICAgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGJhY2tpbmcgdGV4dHVy
ZSBpbiB1c2VyIHNwYWNlCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOiBTZXQgdXAgbmV3IG1fYmFja2luZ1N0b3JlU2l6ZSBtZW1iZXIKKyAgICAgICAgKFdlYkNv
cmU6Om1heWJlQ3JvcFRvQm91bmRzKTogU29tZSBJbWFnZUJ1ZmZlciBBUEkgZnVuY3Rpb25zIHJl
cXVpcmUKKyAgICAgICAgb3V0cHV0dGluZyBhbiBpbWFnZSB3aXRoIGxvZ2ljYWwgc2l6ZS4gVGhp
cyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgY3JvcHBpbmcKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpjb3B5SW1hZ2UpOiBVcGRhdGVkIGZvciBsYXJnZXItdGhhbi1uZWNlc3NhcnkKKyAg
ICAgICAgYmFja2luZyBzdG9yZXMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5
TmF0aXZlSW1hZ2UpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcp
OiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOiBEaXR0bworICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERpdHRvCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKTogRGl0dG8KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEYXRhOjpwdXREYXRhKTogRGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOiBOZXcgbV9iYWNraW5nU3RvcmVTaXplIGZpZWxkCisK
IDIwMTMtMTEtMTkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBGaXggYnVpbGQgYnJlYWsgYWZ0ZXIgcjE1OTUzMy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDFkNGYwODVmZDFmNDcyYjRh
ODNhZWFlNjkzOGZhYzBjNmNmNDlkYjIuLjZjMWFmM2E2YzRlMTNmMmJkYWM2MGRhOTJkMmZmZjI3
MGY4NTczNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaApAQCAtMTE4LDcgKzExOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JT
cGFjZSBkc3RDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9y
U3BhY2UoY29uc3QgVmVjdG9yPGludD4mKTsKICNlbHNlCi0gICAgICAgIEFmZmluZVRyYW5zZm9y
bSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAs
IC0xLCAwLCBpbnRlcm5hbFNpemUoKS5oZWlnaHQoKSk7IH0KKyAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwg
MCwgLTEsIDAsIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOyB9CiAjZW5kaWYK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKQEAgLTEzNiw2ICsxMzYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBwcml2YXRlOgogI2lmIFVTRShDRykKKyAgICAgICAgLy8gVGhlIHJldHVy
bmVkIGltYWdlIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRoZSBpbnRlcm5hbFNpemUoKS4gSWYgeW91
IHdhbnQgdGhlIHNtYWxsZXIKKyAgICAgICAgLy8gaW1hZ2UsIGNyb3AgdGhlIHJlc3VsdC4KICAg
ICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CiAgICAgICAgIHZvaWQgZmx1c2hDb250ZXh0
KCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggZDdhOTdlNmYxYzE4MWI1ZDUzMzJjNmI5
MTBhNWQzZTlmOGYzOTYxZi4uNWRiZWZkMzZiMjg5MWE4MTlkNjk1NGIxMjZkMWJiMGU0N2Y1YzA4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHAKQEAgLTk4LDYgKzk4LDEzIEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VJbWFn
ZURhdGEodm9pZCosIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCkKICAgICBmYXN0RnJlZShjb25z
dF9jYXN0PHZvaWQqPihkYXRhKSk7CiB9CiAKK3N0YXRpYyBGbG9hdFNpemUgc2NhbGVTaXplVG9V
c2VyU3BhY2UoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFj
a2luZ1N0b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplKQoreworICAgIGZsb2F0
IHhNYWduaWZpY2F0aW9uID0gMS4wICogYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpIC8gaW50ZXJu
YWxTaXplLndpZHRoKCk7CisgICAgZmxvYXQgeU1hZ25pZmljYXRpb24gPSAxLjAgKiBiYWNraW5n
U3RvcmVTaXplLmhlaWdodCgpIC8gaW50ZXJuYWxTaXplLmhlaWdodCgpOworICAgIHJldHVybiBG
bG9hdFNpemUobG9naWNhbFNpemUud2lkdGgoKSAqIHhNYWduaWZpY2F0aW9uLCBsb2dpY2FsU2l6
ZS5oZWlnaHQoKSAqIHlNYWduaWZpY2F0aW9uKTsKK30KKwogSW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBpbWFnZUNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgYm9vbCYgc3Vj
Y2VzcykKICAgICA6IG1fZGF0YShzaXplKSAvLyBOT1RFOiBUaGUgaW5wdXQgaGVyZSBpc24ndCBp
bXBvcnRhbnQgYXMgSW1hZ2VCdWZmZXJEYXRhQ0cncyBjb25zdHJ1Y3RvciBqdXN0IGlnbm9yZXMg
aXQuCiAgICAgLCBtX2xvZ2ljYWxTaXplKHNpemUpCkBAIC0xMTEsNiArMTE4LDcgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZQogICAgICAgICByZXR1cm47CiAKICAgICBtX3NpemUgPSBJbnRTaXpl
KHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOworICAgIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNp
emUgPSBtX3NpemU7CiAKICAgICBzdWNjZXNzID0gZmFsc2U7ICAvLyBNYWtlIGVhcmx5IHJldHVy
biBtZWFuIGZhaWx1cmUuCiAgICAgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nID0gcmVuZGVyaW5n
TW9kZSA9PSBBY2NlbGVyYXRlZDsKQEAgLTEyMSw4ICsxMjksOCBAQCBJbWFnZUJ1ZmZlcjo6SW1h
Z2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlCiAgICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiBoZWlnaHQgPSBtX3NpemUu
aGVpZ2h0KCk7CiAKICAgICAvLyBQcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzCi0gICAgbV9kYXRh
Lm1fYnl0ZXNQZXJSb3cgPSA0ICogd2lkdGg7Ci0gICAgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92
ZXJmbG93PiBudW1CeXRlcyA9IGhlaWdodCAqIG1fZGF0YS5tX2J5dGVzUGVyUm93OworICAgIG1f
ZGF0YS5tX2J5dGVzUGVyUm93ID0gNCAqIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PihtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLndpZHRoKCkpOworICAgIENoZWNrZWQ8c2l6ZV90
LCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4obV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSkgKiBtX2RhdGEubV9ieXRl
c1BlclJvdzsKICAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTE0OCwyMCArMTU2LDIxIEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25z
dCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICBS
ZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjZ0NvbnRleHQ7CiAgICAgaWYgKGFjY2VsZXJhdGVSZW5k
ZXJpbmcpIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgICAg
ICBtX2RhdGEubV9zdXJmYWNlID0gY3JlYXRlSU9TdXJmYWNlKG1fc2l6ZSk7Ci0gICAgICAgIGNn
Q29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fZGF0YS5tX3N1cmZh
Y2UuZ2V0KCksIHdpZHRoLnVuc2FmZUdldCgpLCBoZWlnaHQudW5zYWZlR2V0KCksIG1fZGF0YS5t
X2NvbG9yU3BhY2UpKTsKKyAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNyZWF0ZUlPU3VyZmFj
ZShtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplKTsKKyAgICAgICAgRmxvYXRTaXplIHVzZXJCb3Vu
ZHMgPSBzY2FsZVNpemVUb1VzZXJTcGFjZShGbG9hdFNpemUod2lkdGgudW5zYWZlR2V0KCksIGhl
aWdodC51bnNhZmVHZXQoKSksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIG1fc2l6ZSk7Cisg
ICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0Yod2tJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fZGF0
YS5tX3N1cmZhY2UuZ2V0KCksIHVzZXJCb3VuZHMud2lkdGgoKSwgdXNlckJvdW5kcy5oZWlnaHQo
KSwgbV9kYXRhLm1fY29sb3JTcGFjZSkpOwogI2VuZGlmCiAgICAgICAgIGlmICghY2dDb250ZXh0
KQogICAgICAgICAgICAgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IGZhbHNlOyAvLyBJZiBhbGxvY2F0
aW9uIGZhaWxzLCBmYWxsIGJhY2sgdG8gbm9uLWFjY2VsZXJhdGVkIHBhdGguCiAgICAgfQogCiAg
ICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIGlmICghdHJ5RmFzdENhbGxv
YyhoZWlnaHQudW5zYWZlR2V0KCksIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpKS5n
ZXRWYWx1ZShtX2RhdGEubV9kYXRhKSkKKyAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKG1fZGF0
YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCksIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2Fm
ZUdldCgpKS5nZXRWYWx1ZShtX2RhdGEubV9kYXRhKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KG1fZGF0YS5tX2RhdGEpICYg
MikpOworICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90PihtX2RhdGEu
bV9kYXRhKSAmIDMpKTsKIAogICAgICAgICBtX2RhdGEubV9iaXRtYXBJbmZvID0ga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRMYXN0OwotICAgICAgICBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShtX2RhdGEubV9kYXRhLCB3aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0
LnVuc2FmZUdldCgpLCA4LCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9kYXRh
Lm1fY29sb3JTcGFjZSwgbV9kYXRhLm1fYml0bWFwSW5mbykpOworICAgICAgICBjZ0NvbnRleHQg
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShtX2RhdGEubV9kYXRhLCBtX2RhdGEubV9i
YWNraW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0
KCksIDgsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNw
YWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvKSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIGxpdmUgaW1h
Z2UgdGhhdCB3cmFwcyB0aGUgZGF0YS4KICAgICAgICAgbV9kYXRhLm1fZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIG1fZGF0YS5tX2RhdGEsIG51
bUJ5dGVzLnVuc2FmZUdldCgpLCByZWxlYXNlSW1hZ2VEYXRhKSk7CiAgICAgfQpAQCAtMTcwLDkg
KzE3OSw5IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dChjZ0NvbnRleHQuZ2V0KCkp
KTsKLSAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2Nh
bGUpOwogICAgIG1fY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgbV9jb250
ZXh0LT50cmFuc2xhdGUoMCwgLXNpemUuaGVpZ2h0KCkpOworICAgIG1fY29udGV4dC0+dHJhbnNs
YXRlKDAsIC1tX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKTsKKyAgICBtX2NvbnRl
eHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUpOwogICAgIG1fY29u
dGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQoYWNjZWxlcmF0ZVJlbmRlcmluZyk7CiAgICAg
c3VjY2VzcyA9IHRydWU7CiB9CkBAIC0xOTEsNiArMjAwLDE4IEBAIHZvaWQgSW1hZ2VCdWZmZXI6
OmZsdXNoQ29udGV4dCgpIGNvbnN0CiAgICAgQ0dDb250ZXh0Rmx1c2gobV9jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSk7CiB9CiAKK3N0YXRpYyBDR0ltYWdlUmVmIG1heWJlQ3JlYXRlQ3JvcHBl
ZEltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykKK3sKKyAgICBp
ZiAoaW1hZ2UgJiYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90
Pihib3VuZHMud2lkdGgoKSkKKyAgICAgICAgfHwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgIT0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMuaGVpZ2h0KCkpKSkgeworICAgICAgICBSZXRhaW5Q
dHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUo
MCwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSwgOCwgNCAqIGJvdW5kcy53aWR0aCgp
LCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFz
dCkpOworICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxl
bmRNb2RlQ29weSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBD
R1JlY3RNYWtlKDAsIGJvdW5kcy5oZWlnaHQoKSAtIHN0YXRpY19jYXN0PGludD4oQ0dJbWFnZUdl
dEhlaWdodChpbWFnZSkpLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlKSksIGltYWdlKTsKKyAgICAgICAgaW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJ
bWFnZShjb250ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGltYWdlOworfQorCiBQYXNz
UmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eUJlaGF2aW9yLCBTY2FsZUJlaGF2aW9yIHNjYWxlQmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwpAQCAtMjAwLDEzICsyMjEsMTggQEAgUGFzc1JlZlB0
cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvciwgU2NhbGVCZWgKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBs
b2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogbG9naWNhbFNpemUoKS53aWR0aCgpLCBkZXZp
Y2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwog
ICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2Rl
Q29weSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RN
YWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSks
IGltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCks
IENHUmVjdE1ha2UoMCwgMCwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2Rh
dGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwogICAgICAgICBp
bWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkp
OwogICAgIH0KKyAgICAKKyAgICBpbWFnZSA9IG1heWJlQ3JlYXRlQ3JvcHBlZEltYWdlKGltYWdl
LmdldCgpLCBpbnRlcm5hbFNpemUoKSk7CiAKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1
cm4gMDsKIAorICAgIEFTU0VSVChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpID09IHN0YXRp
Y19jYXN0PHNpemVfdD4obV9sb2dpY2FsU2l6ZS53aWR0aCgpKSk7CisgICAgQVNTRVJUKENHSW1h
Z2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4obV9sb2dpY2Fs
U2l6ZS5oZWlnaHQoKSkpOworCiAgICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9
IEJpdG1hcEltYWdlOjpjcmVhdGUoaW1hZ2UuZ2V0KCkpOwogICAgIGJpdG1hcEltYWdlLT5zZXRT
cGFjZVNpemUoc3BhY2VTaXplKCkpOwogCkBAIC0yMjQsNyArMjUwLDcgQEAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5QmVoYXZpb3IKICAgICBpZiAoIW1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
ewogICAgICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAgICAgICBjYXNlIERvbnRDb3B5
QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlKGludGVybmFs
U2l6ZSgpLndpZHRoKCksIGludGVybmFsU2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwgbV9kYXRhLm1f
Ynl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UsIG1fZGF0YS5tX2Jp
dG1hcEluZm8sIG1fZGF0YS5tX2RhdGFQcm92aWRlci5nZXQoKSwgMCwgdHJ1ZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCk7CisgICAgICAgICAgICBpbWFnZSA9IENHSW1hZ2VDcmVhdGUobV9k
YXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXpl
LmhlaWdodCgpLCA4LCAzMiwgbV9kYXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIG1fZGF0
YS5tX2NvbG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8sIG1fZGF0YS5tX2RhdGFQcm92aWRl
ci5nZXQoKSwgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgogICAgICAgICAgICAgaW1h
Z2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4
dCgpKTsKQEAgLTI3OSwxMiArMzA1LDE1IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjCiAKIHZv
aWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0VG9DbGlwLCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CisgICAgRmxvYXRTaXplIGJhY2tpbmdTdG9yZVNp
emVJblVzZXJTcGFjZSA9IHNjYWxlU2l6ZVRvVXNlclNwYWNlKHJlY3Quc2l6ZSgpLCBtX2RhdGEu
bV9iYWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisKICAgICBDR0NvbnRleHRSZWYg
cGxhdGZvcm1Db250ZXh0VG9DbGlwID0gY29udGV4dFRvQ2xpcC0+cGxhdGZvcm1Db250ZXh0KCk7
CiAgICAgLy8gRklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVz
ZWQgYXMgYW4gYWxwaGEgbWFzayBoZXJlLgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgQ0dDb250ZXh0
VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgcmVjdC54KCksIHJlY3QueSgpICsg
cmVjdC5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4
dFRvQ2xpcCwgcmVjdC54KCksIHJlY3QueSgpICsgYmFja2luZ1N0b3JlU2l6ZUluVXNlclNwYWNl
LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAs
IDEsIC0xKTsKLSAgICBDR0NvbnRleHRDbGlwVG9NYXNrKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXplKCkpLCBpbWFnZS5nZXQoKSk7CisgICAg
Q0dDb250ZXh0Q2xpcFRvUmVjdChwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIEZsb2F0UmVjdChGbG9h
dFBvaW50KDAsIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSAtIHJlY3QuaGVp
Z2h0KCkpLCByZWN0LnNpemUoKSkpOworICAgIENHQ29udGV4dENsaXBUb01hc2socGxhdGZvcm1D
b250ZXh0VG9DbGlwLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBiYWNraW5nU3RvcmVTaXplSW5V
c2VyU3BhY2UpLCBpbWFnZS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0ocGxhdGZvcm1D
b250ZXh0VG9DbGlwLCAxLCAtMSk7CiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3Jt
Q29udGV4dFRvQ2xpcCwgLXJlY3QueCgpLCAtcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKIH0K
QEAgLTMzNSwxMCArMzY0LDE0IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0
aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgQ0dDb250
ZXh0U2V0U2hhZG93V2l0aENvbG9yKGRlc3RDb250ZXh0LCBDR1NpemVaZXJvLCAwLCAwKTsKIAog
ICAgIC8vIERyYXcgdGhlIGltYWdlIGluIENHIGNvb3JkaW5hdGUgc3BhY2UKLSAgICBJbnRQb2lu
dCBkZXN0UG9pbnRJbkNHQ29vcmRzKGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKSwgKGNv
b3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0gPyBsb2dpY2FsU2l6ZSgp
IDogaW50ZXJuYWxTaXplKCkpLmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0
LnkoKSkgLSBzb3VyY2VSZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFNpemUgc2NhbGVkRGVzdFNp
emUgPSBzY2FsZVNpemVUb1VzZXJTcGFjZShjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29y
ZGluYXRlU3lzdGVtID8gbG9naWNhbFNpemUoKSA6IGludGVybmFsU2l6ZSgpLCBtX2RhdGEubV9i
YWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisgICAgSW50UG9pbnQgZGVzdFBvaW50
SW5DR0Nvb3JkcyhkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCksIHNjYWxlZERlc3RTaXpl
LmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKSkgLSBzb3VyY2VSZWN0
LmhlaWdodCgpKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nvb3JkcyhkZXN0UG9pbnRJbkNH
Q29vcmRzLCBzb3VyY2VDb3B5U2l6ZSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChkZXN0Q29u
dGV4dCwgZGVzdFJlY3RJbkNHQ29vcmRzKTsKKwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBz
b3VyY2VDb3B5SW1hZ2UgPSBzb3VyY2VDb3B5LT5jb3B5TmF0aXZlSW1hZ2UoKTsKLSAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoZGVzdENvbnRleHQsIGRlc3RSZWN0SW5DR0Nvb3Jkcywgc291cmNlQ29w
eUltYWdlLmdldCgpKTsKKyAgICBGbG9hdFJlY3QgYmFja2luZ1N0b3JlSW5EZXN0UmVjdCA9IEZs
b2F0UmVjdChGbG9hdFBvaW50KGRlc3RQb2ludEluQ0dDb29yZHMueCgpLCBkZXN0UG9pbnRJbkNH
Q29vcmRzLnkoKSArIHNvdXJjZUNvcHlTaXplLmhlaWdodCgpIC0gKGludClDR0ltYWdlR2V0SGVp
Z2h0KHNvdXJjZUNvcHlJbWFnZS5nZXQoKSkpLCBGbG9hdFNpemUoQ0dJbWFnZUdldFdpZHRoKHNv
dXJjZUNvcHlJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoc291cmNlQ29weUltYWdlLmdl
dCgpKSkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShkZXN0Q29udGV4dCwgYmFja2luZ1N0b3Jl
SW5EZXN0UmVjdCwgc291cmNlQ29weUltYWdlLmdldCgpKTsKICAgICBDR0NvbnRleHRSZXN0b3Jl
R1N0YXRlKGRlc3RDb250ZXh0KTsKICNlbmRpZgogfQpAQCAtNDQyLDEzICs0NzUsMTYgQEAgU3Ry
aW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
ZG91YmxlKiBxdWFsaXR5LCBDb28KICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVh
dGUobG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwg
NCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVs
dCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSk7Ci0gICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxKQorICAg
IH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSkgewogICAgICAgICBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBlbHNlIHsKKyAgICAgICAgaW1h
Z2UgPSBtYXliZUNyZWF0ZUNyb3BwZWRJbWFnZShpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKCkp
OworICAgIH0gZWxzZSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKTsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwg
bG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgZGV2
aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsK
ICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9k
ZUNvcHkpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0
TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkp
LCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQo
KSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCku
aGVpZ2h0KCkpKTsKKyAgICAgICAgRmxvYXRTaXplIGltYWdlUmVjdEluVXNlckJvdW5kcyA9IHNj
YWxlU2l6ZVRvVXNlclNwYWNlKGxvZ2ljYWxTaXplKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNp
emUsIGludGVybmFsU2l6ZSgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VSZWN0SW5Vc2VyQm91bmRzLndpZHRoKCksIGlt
YWdlUmVjdEluVXNlckJvdW5kcy5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKICAgICAgICAgaW1h
Z2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRleCA1NTZhZTU0MzhhOWU1NWRiODc3MzcxNTIx
ZWY0NzA0MDM3YWE3MTBlLi5kZTRjMzg3ZTE2N2E1MTk3OGFhZjhiYWY4YzlmNTliZWI3OWE3NTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnMKICAgICB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzOwogICAgIAogICAgIGlmICghYWNj
ZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAgICBzcmNCeXRlc1BlclJvdyA9IDQgKiBzaXplLndp
ZHRoKCk7CisgICAgICAgIHNyY0J5dGVzUGVyUm93ID0gbV9ieXRlc1BlclJvdy51bnNhZmVHZXQo
KTsKICAgICAgICAgc3JjUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1f
ZGF0YSkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmlnaW54ICogNDsKICAgICAgICAg
CiAjaWYgVVNFKEFDQ0VMRVJBVEUpCkBAIC0zMzksNiArMzM5LDEwIEBAIFBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zCiAKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFy
cmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUpCiB7CisjaWYgQVNTRVJUX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHNp
emUpOworI2VuZGlmCisKICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7CiAgICAg
QVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKICAgICAKQEAgLTM4MSw3ICszODUsNyBA
QCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShVaW50OENsYW1wZWRBcnJheSomIHNvdXJj
ZSwgY29uc3QgSW50U2l6ZSYgc291cmNlUwogICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RSb3dzOwog
ICAgIAogICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAgICBkZXN0Qnl0ZXNQ
ZXJSb3cgPSA0ICogc2l6ZS53aWR0aCgpOworICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSBtX2J5
dGVzUGVyUm93LnVuc2FmZUdldCgpOwogICAgICAgICBkZXN0Um93cyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyAoZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBk
ZXN0eCAqIDQpLnVuc2FmZUdldCgpOwogICAgICAgICAKICNpZiAgVVNFKEFDQ0VMRVJBVEUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhQ0cuaAppbmRleCBjMzk5MjA5NGJlMjUyNzM4MDUwZWQxMDdiMGYyYTgwYzU5N2U5ZjBk
Li5hNDE5MDZiYWI2MWVmZTYwMGQyNzRhZGU2NjQ2YzFmZjM2MDY4Y2UwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29y
ZE92ZXJmbG93PiBtX2J5dGVzUGVyUm93OwogICAgIENHQ29sb3JTcGFjZVJlZiBtX2NvbG9yU3Bh
Y2U7CiAgICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4gbV9zdXJmYWNlOworICAgIEludFNpemUg
bV9iYWNraW5nU3RvcmVTaXplOwogCiAgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
Z2V0RGF0YShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJl
bmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkgY29uc3Q7
CiAgICAgdm9pZCBwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291cmNlLCBjb25zdCBJbnRT
aXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBi
b29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NjhkOWFk
NzYzOTRlYmRkY2M3ZGQ0MTVjZGYxMzdkOWM2OTQ3MTIwLi4xN2ZhNzU4NzYzYTI3YmEwMTBlYjBh
MjQ4MmZlNDVjMGY0MzIyOGVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTMtMTEtMjEgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBJ
bWFnZUJ1ZmZlciB0byB1c2UgYW4gSU9TdXJmYWNlIHRoYXQgaXMgbGFyZ2VyIHRoYW4gbmVjZXNz
YXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2
MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgdGVzdHMgdG8gYmUgbW9yZSByb2J1c3Qgd2l0aCByZXNwZWN0IHRvIGFjY2VsZXJhdGVkIHZz
CisgICAgICAgIG5vbi1hY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMuIAorCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxsUGF0aC1zaGFkb3cuanM6IERvbid0IHNh
bXBsZSBhIGNhbnZhcyBhdCBleGFjdGx5CisgICAgICAgIHRoZSBjb3JuZXIgb2YgYSBkcmF3biBz
aGFwZSAoYmVjYXVzZSB0aGUgY29ybmVyIG1pZ2h0IGJlIGFudGlhbGlhc2VkKS4gSW5zdGVhZCwg
c2FtcGxlCisgICAgICAgIGEgc2luZ2xlIHBpeGVsIGluc2lkZSB0aGUgc2hhcGUKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanM6IERv
bid0IHNhbXBsZSBhIGNhbnZhcyBhdCBleGFjdGx5CisgICAgICAgIHRoZSBlZGdlIG9mIHRoZSBi
bHVyIHJhZGl1cy4gSW5zdGVhZCwgc2FtcGxlIGEgc2luZ2xlIHBpeGVsIHBhc3QgdGhlIGJsdXIg
cmFkaXVzLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
c3Ryb2tlUGF0aC1zaGFkb3cuanM6CisgICAgICAgIChzaG91bGRCZUFyb3VuZCk6IEFsbG93IHRo
aXMgdGVzdCB0byBiZSBsZXNzIHN0cmljdCB3aGVuIHNhbXBsaW5nIGluc2lkZSBhIGJsdXJyZWQg
cmVnaW9uCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1z
aGFkb3dCbHVyLWV4cGVjdGVkLnR4dDogTWF0Y2hpbmcgdXBkYXRlIHcvci90CisgICAgICAgIGNh
bnZhcy1zY2FsZS1zaGFkb3dCbHVyLmpzCisKIDIwMTMtMTEtMTkgIFN1bi13b28gTmFtICA8c3Vu
bnkubmFtQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIExheW91dCB0ZXN0cyBuZWVkIHRv
IGJlIHJlYmFzZWxpbmVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1maWxsUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qcwppbmRleCBmMjhiOWRi
ZWUzYjEyOWNiYmQ2ZDY1YzMzYTcwODhiOTdlM2M5MGY4Li4xY2IzMTQwNzk1MTQyYjA4MDA3NzZj
N2M1MDdjOWVhZjU5NmY3ZWMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtNzAs
NyArNzAsNyBAQCBzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkYXRhWzFd
JywgJzIwJyk7CiBzaG91bGRCZSgnZGF0YVsyXScsICcwJyk7CiAKLWltYWdlRGF0YSA9IGN0eC5n
ZXRJbWFnZURhdGEoMzgwLCAzMCwgMSwgMSk7CitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRh
KDM4MSwgMzEsIDEsIDEpOwogZGF0YSA9IGltYWdlRGF0YS5kYXRhOwogc2hvdWxkQmUoJ2RhdGFb
MF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZGF0YVsxXScsICcyMCcpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVy
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1z
aGFkb3dCbHVyLmpzCmluZGV4IDZmZGI3M2Y1OWUzYjBhNjJlNjk3M2E0ZGIwZjkyODdmMWQzZDUy
NTguLmIzNmFiMjYwYmYxZmRiZWU0M2UxMmZjODJjMjIxOWVlNjg2ODY2MTUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc2hhZG93
Qmx1ci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXNjYWxlLXNoYWRvd0JsdXIuanMKQEAgLTY3LDcgKzY3LDcgQEAgc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjU1
Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI1MCwgMTc1LCAxLCAxKS5kYXRhOworZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjUwLCAxNzQsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CkBAIC03
OSw3ICs3OSw3IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzNdJywgJzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMTc1LCAy
NTAsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgxNzQsIDI1MCwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBzaG91bGRCZSgnZFsxXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICcyNTUn
KTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAxNzUsIDEsIDEpLmRhdGE7CitkID0gY3R4
LmdldEltYWdlRGF0YSg0NTAsIDE3NCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcw
Jyk7CiBzaG91bGRCZSgnZFszXScsICcwJyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDM3NSwg
MjUwLCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzc0LCAyNTAsIDEsIDEpLmRh
dGE7CiBzaG91bGRCZSgnZFswXScsICcwJyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRv
dy5qcwppbmRleCAyYzNmMGJhMGE4YjE0NzE0OTZiOTI3Y2QwNDUwNDZlMjY0MWY4NzNjLi4wZDQx
ODMzYzUzNjdlZjNmNDNkZTVlNGFhOTM5YmJjZjUzYjMyN2M1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hh
ZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMt
c2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKQEAgLTEwLDcgKzEwLDcgQEAgZnVuY3Rpb24gcHJp
bnQobWVzc2FnZSwgY29sb3IpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOwogfQogCi1mdW5jdGlvbiBzaG91bGRCZUFyb3VuZChh
LCBiKQorZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQoYSwgYiwgYXJnZGVsdGEpCiB7CiAgICAgdmFy
IGV2YWxBOwogICAgIHRyeSB7CkBAIC0xOSw3ICsxOSwxMSBAQCBmdW5jdGlvbiBzaG91bGRCZUFy
b3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYgKE1hdGguYWJz
KGV2YWxBIC0gYikgPCAyMCkKKyAgICB2YXIgZGVsdGEgPSAyMDsKKyAgICBpZiAodHlwZW9mIGFy
Z2RlbHRhICE9ICJ1bmRlZmluZWQiKQorICAgICAgICBkZWx0YSA9IGFyZ2RlbHRhOworCisgICAg
aWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCBkZWx0YSkKICAgICAgICAgcHJpbnQoIlBBU1MgIiAr
IGEgKyAiIGlzIGFyb3VuZCAiICsgYiAsICJncmVlbiIpCiAgICAgZWxzZQogICAgICAgICBwcmlu
dCgiRkFJTCAiICsgYSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiArIGV2
YWxBICsgIikiLCAicmVkIik7CkBAIC0xMTksNyArMTIzLDcgQEAgZCA9IGN0eC5nZXRJbWFnZURh
dGEoMzk4LCAyMTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzIwMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAwJywgMjUpOwogCiBk
ID0gY3R4LmdldEltYWdlRGF0YSg1MDgsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwpAQCAtMTMxLDcgKzEzNSw3IEBAIGQgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwg
MTk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsx
XScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScs
ICcxOTknKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE5OScsIDI1KTsKIAogLy8gVmVyaWZ5
IGJsdXJyeSBhbHBoYSBzaGFkb3cuCiBkID0gY3R4LmdldEltYWdlRGF0YSg1MDUsIDQ1MCwgMSwg
MSkuZGF0YTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2NhbnZh
cy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXItZXhwZWN0ZWQudHh0
CmluZGV4IDI3ZGE5ZjA5YjA3OWUzZTQzYjc2ZDc0YTAwZTMyYTI4MDI2YzNhZGEuLjg3ZGU3YTNh
YTMzMjJiMjdjMmU3MmJiODNmNWNmODcyNTVkOThhNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dApAQCAtMTAsNyArMTAsNyBAQCBQQVNTIGRbM10g
aXMgYXJvdW5kIDI1NQogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFd
IGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA2LgorRkFJ
TCBkWzNdIHNob3VsZCBiZSAwLiBXYXMgNS4KIEZBSUwgZFswXSBzaG91bGQgYmUgMC4gV2FzIDI1
NS4KIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMApAQCAtMTgsNyArMTgsNyBAQCBGQUlM
IGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1
LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDAu
IFdhcyA2LgorRkFJTCBkWzNdIHNob3VsZCBiZSAwLiBXYXMgNS4KIEZBSUwgZFswXSBzaG91bGQg
YmUgMC4gV2FzIDI1NS4KIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMApAQCAtNTQsNyAr
NTQsNyBAQCBQQVNTIGRbM10gaXMgYXJvdW5kIDI1NQogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBX
YXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gc2hvdWxk
IGJlIDAuIFdhcyA2LgorRkFJTCBkWzNdIHNob3VsZCBiZSAwLiBXYXMgNS4KIEZBSUwgZFswXSBz
aG91bGQgYmUgMC4gV2FzIDI1NS4KIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMApAQCAt
NjIsNyArNjIsNyBAQCBGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNo
b3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1GQUlM
IGRbM10gc2hvdWxkIGJlIDAuIFdhcyA2LgorRkFJTCBkWzNdIHNob3VsZCBiZSAwLiBXYXMgNS4K
IEZBSUwgZFswXSBzaG91bGQgYmUgMC4gV2FzIDI1NS4KIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRb
Ml0gaXMgMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218260</attachid>
            <date>2013-12-02 20:16:21 -0800</date>
            <delta_ts>2013-12-03 18:43:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131202201621.patch</filename>
            <type>text/plain</type>
            <size>24628</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTcwYzI2MjlhZWJmYjEz
OGYwNTEzNmQyM2JhYmMwODI5N2ZmN2E5MC4uYjdmOTZmNmYzNjg4MjVhZWE1M2VhMTQxMTQzOGJj
MzMwNTMxYjhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTExLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBJbWFnZUJ1ZmZlcidzIGJhY2tpbmcgc3RvcmUgY2FuIGJlIHNvIGV4cGVuc2l2
ZSwgaXQKKyAgICAgICAgd291bGQgYmUgYmVuZWZpY2lhbCB0byBoYXZlIGEgcG9vbCBvZiBwcmUt
Y3JlYXRlZCBiYWNraW5nIHN0b3JlcworICAgICAgICBhdmFpbGFibGUuIEhvd2V2ZXIsIHRoaXMg
bWVhbnMgdGhhdCBJbWFnZUJ1ZmZlciBtaWdodCBoYXZlIHRvIHVzZSBhCisgICAgICAgIGJhY2tp
bmcgc3RvcmUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgZXhhY3QgZGltZW5zaW9ucyB0aGF0IGl0
IG5lZWRzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmaWVsZCwgbV9iYWNraW5nU3RvcmVT
aXplLCB0byBDRydzIEltYWdlQnVmZmVyRGF0YQorICAgICAgICBjbGFzcywgYW5kIHVzZXMgdGhp
cyBuZXcgZmllbGQgd2hlbiBwZXJmb3JtaW5nIEltYWdlQnVmZmVyIG9wZXJhdGlvbnMKKyAgICAg
ICAgdG8gYWxsb3cgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeSBiYWNraW5nIHN0b3Jlcy4gQ29u
dGVudCBpcyBhbHdheXMKKyAgICAgICAgZHJhd24gaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
YmFzZVRyYW5zZm9ybSk6IFRoZSBiYXNlIHRyYW5zZm9ybSBoYXMgdG8gcHV0CisgICAgICAgIGNv
bnRlbnQgYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBpbnN0ZWFkIG9mIGJvdHRvbSBsZWZ0CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6IENvbnZlbmllbmNlIGZ1bmN0
aW9uIHRvIGZpZ3VyZSBvdXQKKyAgICAgICAgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGJhY2tpbmcg
dGV4dHVyZSBpbiB1c2VyIHNwYWNlCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1h
Z2VCdWZmZXIpOiBTZXQgdXAgbmV3IG1fYmFja2luZ1N0b3JlU2l6ZSBtZW1iZXIKKyAgICAgICAg
KFdlYkNvcmU6Om1heWJlQ3JvcFRvQm91bmRzKTogU29tZSBJbWFnZUJ1ZmZlciBBUEkgZnVuY3Rp
b25zIHJlcXVpcmUKKyAgICAgICAgb3V0cHV0dGluZyBhbiBpbWFnZSB3aXRoIGxvZ2ljYWwgc2l6
ZS4gVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgY3JvcHBpbmcKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOiBVcGRhdGVkIGZvciBsYXJnZXItdGhhbi1uZWNlc3Nh
cnkKKyAgICAgICAgYmFja2luZyBzdG9yZXMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Ojpjb3B5TmF0aXZlSW1hZ2UpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXcpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOiBEaXR0
bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERpdHRvCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKTogRGl0dG8KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOiBEaXR0bworICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKTogRGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOiBOZXcgbV9iYWNraW5nU3RvcmVTaXplIGZp
ZWxkCisKIDIwMTMtMTEtMTkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBGaXggYnVpbGQgYnJlYWsgYWZ0ZXIgcjE1OTUzMy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDFkNGYwODVmZDFm
NDcyYjRhODNhZWFlNjkzOGZhYzBjNmNmNDlkYjIuLjZjMWFmM2E2YzRlMTNmMmJkYWM2MGRhOTJk
MmZmZjI3MGY4NTczNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaApAQCAtMTE4LDcgKzExOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwg
Q29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9y
bUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mKTsKICNlbHNlCi0gICAgICAgIEFmZmluZVRy
YW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEs
IDAsIDAsIC0xLCAwLCBpbnRlcm5hbFNpemUoKS5oZWlnaHQoKSk7IH0KKyAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
MSwgMCwgMCwgLTEsIDAsIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOyB9CiAj
ZW5kaWYKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKQEAgLTEzNiw2ICsxMzYsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRlOgogI2lmIFVTRShDRykKKyAgICAgICAgLy8gVGhl
IHJldHVybmVkIGltYWdlIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRoZSBpbnRlcm5hbFNpemUoKS4g
SWYgeW91IHdhbnQgdGhlIHNtYWxsZXIKKyAgICAgICAgLy8gaW1hZ2UsIGNyb3AgdGhlIHJlc3Vs
dC4KICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CiAgICAgICAgIHZvaWQgZmx1c2hD
b250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggZDdhOTdlNmYxYzE4MWI1ZDUz
MzJjNmI5MTBhNWQzZTlmOGYzOTYxZi4uMGY4MjZhYzI3NjZmYTJhYWE4MmYzNTQ3MmFlYTIxNGEw
ZGY3M2ZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTk4LDYgKzk4LDEzIEBAIHN0YXRpYyB2b2lkIHJlbGVh
c2VJbWFnZURhdGEodm9pZCosIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCkKICAgICBmYXN0RnJl
ZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CiB9CiAKK3N0YXRpYyBGbG9hdFNpemUgc2NhbGVT
aXplVG9Vc2VyU3BhY2UoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6
ZSYgYmFja2luZ1N0b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplKQoreworICAg
IGZsb2F0IHhNYWduaWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJhY2tpbmdTdG9yZVNp
emUud2lkdGgoKSkgLyBpbnRlcm5hbFNpemUud2lkdGgoKTsKKyAgICBmbG9hdCB5TWFnbmlmaWNh
dGlvbiA9IHN0YXRpY19jYXN0PGZsb2F0PihiYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKSAvIGlu
dGVybmFsU2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4gRmxvYXRTaXplKGxvZ2ljYWxTaXplLndp
ZHRoKCkgKiB4TWFnbmlmaWNhdGlvbiwgbG9naWNhbFNpemUuaGVpZ2h0KCkgKiB5TWFnbmlmaWNh
dGlvbik7Cit9CisKIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6
ZSkgLy8gTk9URTogVGhlIGlucHV0IGhlcmUgaXNuJ3QgaW1wb3J0YW50IGFzIEltYWdlQnVmZmVy
RGF0YUNHJ3MgY29uc3RydWN0b3IganVzdCBpZ25vcmVzIGl0LgogICAgICwgbV9sb2dpY2FsU2l6
ZShzaXplKQpAQCAtMTExLDYgKzExOCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25z
dCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gSW50U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVp
Z2h0KTsKKyAgICBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplID0gbV9zaXplOwogCiAgICAgc3Vj
Y2VzcyA9IGZhbHNlOyAgLy8gTWFrZSBlYXJseSByZXR1cm4gbWVhbiBmYWlsdXJlLgogICAgIGJv
b2wgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IHJlbmRlcmluZ01vZGUgPT0gQWNjZWxlcmF0ZWQ7CkBA
IC0xMjEsOCArMTI5LDggQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUm
IHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZQogICAgIENoZWNrZWQ8aW50
LCBSZWNvcmRPdmVyZmxvdz4gaGVpZ2h0ID0gbV9zaXplLmhlaWdodCgpOwogCiAgICAgLy8gUHJl
dmVudCBpbnRlZ2VyIG92ZXJmbG93cwotICAgIG1fZGF0YS5tX2J5dGVzUGVyUm93ID0gNCAqIHdp
ZHRoOwotICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXMgPSBoZWln
aHQgKiBtX2RhdGEubV9ieXRlc1BlclJvdzsKKyAgICBtX2RhdGEubV9ieXRlc1BlclJvdyA9IDQg
KiBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4obV9kYXRhLm1fYmFja2luZ1N0b3Jl
U2l6ZS53aWR0aCgpKTsKKyAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5
dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5tX2JhY2tpbmdT
dG9yZVNpemUuaGVpZ2h0KCkpICogbV9kYXRhLm1fYnl0ZXNQZXJSb3c7CiAgICAgaWYgKG51bUJ5
dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDgsMjAgKzE1Niwy
MSBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4g
Y2dDb250ZXh0OwogICAgIGlmIChhY2NlbGVyYXRlUmVuZGVyaW5nKSB7CiAjaWYgVVNFKElPU1VS
RkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNy
ZWF0ZUlPU3VyZmFjZShtX3NpemUpOwotICAgICAgICBjZ0NvbnRleHQgPSBhZG9wdENGKHdrSU9T
dXJmYWNlQ29udGV4dENyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCB3aWR0aC51bnNhZmVH
ZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlKSk7CisgICAgICAg
IG1fZGF0YS5tX3N1cmZhY2UgPSBjcmVhdGVJT1N1cmZhY2UobV9kYXRhLm1fYmFja2luZ1N0b3Jl
U2l6ZSk7CisgICAgICAgIEZsb2F0U2l6ZSB1c2VyQm91bmRzID0gc2NhbGVTaXplVG9Vc2VyU3Bh
Y2UoRmxvYXRTaXplKHdpZHRoLnVuc2FmZUdldCgpLCBoZWlnaHQudW5zYWZlR2V0KCkpLCBtX2Rh
dGEubV9iYWNraW5nU3RvcmVTaXplLCBtX3NpemUpOworICAgICAgICBjZ0NvbnRleHQgPSBhZG9w
dENGKHdrSU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCB1c2Vy
Qm91bmRzLndpZHRoKCksIHVzZXJCb3VuZHMuaGVpZ2h0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2Up
KTsKICNlbmRpZgogICAgICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgICAgIGFjY2VsZXJh
dGVSZW5kZXJpbmcgPSBmYWxzZTsgLy8gSWYgYWxsb2NhdGlvbiBmYWlscywgZmFsbCBiYWNrIHRv
IG5vbi1hY2NlbGVyYXRlZCBwYXRoLgogICAgIH0KIAogICAgIGlmICghYWNjZWxlcmF0ZVJlbmRl
cmluZykgewotICAgICAgICBpZiAoIXRyeUZhc3RDYWxsb2MoaGVpZ2h0LnVuc2FmZUdldCgpLCBt
X2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKSkuZ2V0VmFsdWUobV9kYXRhLm1fZGF0YSkp
CisgICAgICAgIGlmICghdHJ5RmFzdENhbGxvYyhtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhl
aWdodCgpLCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKSkuZ2V0VmFsdWUobV9kYXRh
Lm1fZGF0YSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEFTU0VSVCghKHJlaW50ZXJw
cmV0X2Nhc3Q8c2l6ZV90PihtX2RhdGEubV9kYXRhKSAmIDIpKTsKIAogICAgICAgICBtX2RhdGEu
bV9iaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0OwotICAgICAgICBj
Z0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShtX2RhdGEubV9kYXRhLCB3
aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpLCA4LCBtX2RhdGEubV9ieXRlc1Bl
clJvdy51bnNhZmVHZXQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSwgbV9kYXRhLm1fYml0bWFwSW5m
bykpOworICAgICAgICBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSht
X2RhdGEubV9kYXRhLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5t
X2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCksIDgsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2Fm
ZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvKSk7CiAgICAg
ICAgIC8vIENyZWF0ZSBhIGxpdmUgaW1hZ2UgdGhhdCB3cmFwcyB0aGUgZGF0YS4KICAgICAgICAg
bV9kYXRhLm1fZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhE
YXRhKDAsIG1fZGF0YS5tX2RhdGEsIG51bUJ5dGVzLnVuc2FmZUdldCgpLCByZWxlYXNlSW1hZ2VE
YXRhKSk7CiAgICAgfQpAQCAtMTcwLDkgKzE3OSw5IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNz
Q29udGV4dChjZ0NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUpOwogICAgIG1fY29udGV4dC0+c2NhbGUoRmxvYXRT
aXplKDEsIC0xKSk7Ci0gICAgbV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLXNpemUuaGVpZ2h0KCkp
OworICAgIG1fY29udGV4dC0+dHJhbnNsYXRlKDAsIC1tX2RhdGEubV9iYWNraW5nU3RvcmVTaXpl
LmhlaWdodCgpKTsKKyAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNv
bHV0aW9uU2NhbGUpOwogICAgIG1fY29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQoYWNj
ZWxlcmF0ZVJlbmRlcmluZyk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CkBAIC0xOTEsNiArMjAw
LDE4IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpIGNvbnN0CiAgICAgQ0dDb250
ZXh0Rmx1c2gobV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKK3N0YXRpYyBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJl
ZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQoreworICAgIGlmIChpbWFnZSAmJiAoQ0dJ
bWFnZUdldFdpZHRoKGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvdW5kcy53aWR0aCgp
KQorICAgICAgICB8fCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGJvdW5kcy5oZWlnaHQoKSkpKSB7CisgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+
IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBib3VuZHMud2lkdGgo
KSwgYm91bmRzLmhlaWdodCgpLCA4LCA0ICogYm91bmRzLndpZHRoKCksIGRldmljZVJHQkNvbG9y
U3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CisgICAgICAgIENH
Q29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKKyAg
ICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgYm91
bmRzLmhlaWdodCgpIC0gc3RhdGljX2Nhc3Q8aW50PihDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSks
IENHSW1hZ2VHZXRXaWR0aChpbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKSwgaW1hZ2Up
OworICAgICAgICBpbWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0
KCkpOworICAgIH0KKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKIFBhc3NSZWZQdHI8SW1hZ2U+IElt
YWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxl
QmVoYXZpb3Igc2NhbGVCZWhhdmlvcikgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2U7CkBAIC0yMDAsMTMgKzIyMSwxOCBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1
ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaAog
ICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAg
ICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVp
Z2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGRldmljZVJHQkNvbG9yU3BhY2VS
ZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4
dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbG9naWNh
bFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwor
ICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAw
LCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9y
ZVNpemUuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CiAgICAgfQorICAgIAor
ICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGlu
dGVybmFsU2l6ZSgpKTsKIAogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAwOwogCisg
ICAgQVNTRVJUKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihtX2xvZ2ljYWxTaXplLndpZHRoKCkpKTsKKyAgICBBU1NFUlQoQ0dJbWFnZUdldEhlaWdo
dChpbWFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2xvZ2ljYWxTaXplLmhlaWdo
dCgpKSk7CisKICAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGJpdG1hcEltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZShpbWFnZS5nZXQoKSk7CiAgICAgYml0bWFwSW1hZ2UtPnNldFNwYWNlU2l6ZShz
cGFjZVNpemUoKSk7CiAKQEAgLTIyNCw3ICsyNTAsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlv
cgogICAgIGlmICghbV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAg
IHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3Rv
cmU6Ci0gICAgICAgICAgICBpbWFnZSA9IENHSW1hZ2VDcmVhdGUoaW50ZXJuYWxTaXplKCkud2lk
dGgoKSwgaW50ZXJuYWxTaXplKCkuaGVpZ2h0KCksIDgsIDMyLCBtX2RhdGEubV9ieXRlc1BlclJv
dy51bnNhZmVHZXQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSwgbV9kYXRhLm1fYml0bWFwSW5mbywg
bV9kYXRhLm1fZGF0YVByb3ZpZGVyLmdldCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0KTsKKyAgICAgICAgICAgIGltYWdlID0gQ0dJbWFnZUNyZWF0ZShtX2RhdGEubV9iYWNr
aW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCks
IDgsIDMyLCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9kYXRhLm1fY29sb3JT
cGFjZSwgbV9kYXRhLm1fYml0bWFwSW5mbywgbV9kYXRhLm1fZGF0YVByb3ZpZGVyLmdldCgpLCAw
LCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6CiAgICAgICAgICAgICBpbWFnZSA9IENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwpAQCAt
Mjc5LDEyICszMDUsMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMKIAogdm9pZCBJbWFnZUJ1
ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRleHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgY29uc3QKIHsKKyAgICBGbG9hdFNpemUgYmFja2luZ1N0b3JlU2l6ZUluVXNlclNw
YWNlID0gc2NhbGVTaXplVG9Vc2VyU3BhY2UocmVjdC5zaXplKCksIG1fZGF0YS5tX2JhY2tpbmdT
dG9yZVNpemUsIGludGVybmFsU2l6ZSgpKTsKKwogICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNv
bnRleHRUb0NsaXAgPSBjb250ZXh0VG9DbGlwLT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAvLyBG
SVhNRTogVGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBhbiBh
bHBoYSBtYXNrIGhlcmUuCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gY29weU5h
dGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCByZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdo
dCgpKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCBy
ZWN0LngoKSwgcmVjdC55KCkgKyBiYWNraW5nU3RvcmVTaXplSW5Vc2VyU3BhY2UuaGVpZ2h0KCkp
OwogICAgIENHQ29udGV4dFNjYWxlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgMSwgLTEpOwot
ICAgIENHQ29udGV4dENsaXBUb01hc2socGxhdGZvcm1Db250ZXh0VG9DbGlwLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSksIGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHRD
bGlwVG9SZWN0KHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoMCwg
YmFja2luZ1N0b3JlU2l6ZUluVXNlclNwYWNlLmhlaWdodCgpIC0gcmVjdC5oZWlnaHQoKSksIHJl
Y3Quc2l6ZSgpKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhwbGF0Zm9ybUNvbnRleHRUb0Ns
aXAsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSks
IGltYWdlLmdldCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShwbGF0Zm9ybUNvbnRleHRUb0Ns
aXAsIDEsIC0xKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0VG9D
bGlwLCAtcmVjdC54KCksIC1yZWN0LnkoKSAtIHJlY3QuaGVpZ2h0KCkpOwogfQpAQCAtMzM1LDEw
ICszNjQsMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRp
cGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICBDR0NvbnRleHRTZXRTaGFk
b3dXaXRoQ29sb3IoZGVzdENvbnRleHQsIENHU2l6ZVplcm8sIDAsIDApOwogCiAgICAgLy8gRHJh
dyB0aGUgaW1hZ2UgaW4gQ0cgY29vcmRpbmF0ZSBzcGFjZQotICAgIEludFBvaW50IGRlc3RQb2lu
dEluQ0dDb29yZHMoZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpLCAoY29vcmRpbmF0ZVN5
c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSA/IGxvZ2ljYWxTaXplKCkgOiBpbnRlcm5h
bFNpemUoKSkuaGVpZ2h0KCkgLSAoZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpKSAtIHNv
dXJjZVJlY3QuaGVpZ2h0KCkpOworICAgIEZsb2F0U2l6ZSBzY2FsZWREZXN0U2l6ZSA9IHNjYWxl
U2l6ZVRvVXNlclNwYWNlKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0
ZW0gPyBsb2dpY2FsU2l6ZSgpIDogaW50ZXJuYWxTaXplKCksIG1fZGF0YS5tX2JhY2tpbmdTdG9y
ZVNpemUsIGludGVybmFsU2l6ZSgpKTsKKyAgICBJbnRQb2ludCBkZXN0UG9pbnRJbkNHQ29vcmRz
KGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKSwgc2NhbGVkRGVzdFNpemUuaGVpZ2h0KCkg
LSAoZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QueSgpKSAtIHNvdXJjZVJlY3QuaGVpZ2h0KCkp
OwogICAgIEludFJlY3QgZGVzdFJlY3RJbkNHQ29vcmRzKGRlc3RQb2ludEluQ0dDb29yZHMsIHNv
dXJjZUNvcHlTaXplKTsKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGRlc3RDb250ZXh0LCBkZXN0
UmVjdEluQ0dDb29yZHMpOworCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNvdXJjZUNvcHlJ
bWFnZSA9IHNvdXJjZUNvcHktPmNvcHlOYXRpdmVJbWFnZSgpOwotICAgIENHQ29udGV4dERyYXdJ
bWFnZShkZXN0Q29udGV4dCwgZGVzdFJlY3RJbkNHQ29vcmRzLCBzb3VyY2VDb3B5SW1hZ2UuZ2V0
KCkpOworICAgIEZsb2F0UmVjdCBiYWNraW5nU3RvcmVJbkRlc3RSZWN0ID0gRmxvYXRSZWN0KEZs
b2F0UG9pbnQoZGVzdFBvaW50SW5DR0Nvb3Jkcy54KCksIGRlc3RQb2ludEluQ0dDb29yZHMueSgp
ICsgc291cmNlQ29weVNpemUuaGVpZ2h0KCkgLSAoaW50KUNHSW1hZ2VHZXRIZWlnaHQoc291cmNl
Q29weUltYWdlLmdldCgpKSksIEZsb2F0U2l6ZShDR0ltYWdlR2V0V2lkdGgoc291cmNlQ29weUlt
YWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChzb3VyY2VDb3B5SW1hZ2UuZ2V0KCkpKSk7Cisg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRlc3RDb250ZXh0LCBiYWNraW5nU3RvcmVJbkRlc3RSZWN0
LCBzb3VyY2VDb3B5SW1hZ2UuZ2V0KCkpOwogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoZGVz
dENvbnRleHQpOwogI2VuZGlmCiB9CkBAIC00NDIsMTMgKzQ3NSwxNiBAQCBTdHJpbmcgSW1hZ2VC
dWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1
YWxpdHksIENvbwogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShsb2dpY2Fs
U2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDMyLCA0ICogbG9naWNh
bFNpemUoKS53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1h
Z2VBbHBoYU5vbmVTa2lwTGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQp
KTsKLSAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEpCisgICAgfSBlbHNlIGlm
IChtX3Jlc29sdXRpb25TY2FsZSA9PSAxKSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUlt
YWdlKENvcHlCYWNraW5nU3RvcmUpOwotICAgIGVsc2UgeworICAgICAgICBpbWFnZSA9IGNyZWF0
ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBpbnRlcm5hbFNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dp
Y2FsU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogbG9naWNhbFNpemUoKS53aWR0aCgpLCBkZXZpY2VS
R0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAg
ICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29w
eSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtl
KDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSksIGlt
YWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBD
R1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWln
aHQoKSkpOworICAgICAgICBGbG9hdFNpemUgaW1hZ2VSZWN0SW5Vc2VyQm91bmRzID0gc2NhbGVT
aXplVG9Vc2VyU3BhY2UobG9naWNhbFNpemUoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwg
aW50ZXJuYWxTaXplKCkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQo
KSwgQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVJlY3RJblVzZXJCb3VuZHMud2lkdGgoKSwgaW1hZ2VS
ZWN0SW5Vc2VyQm91bmRzLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwogICAgICAgICBpbWFnZSA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCmluZGV4IDU1NmFlNTQzOGE5ZTU1ZGI4NzczNzE1MjFlZjQ3
MDQwMzdhYTcxMGUuLmRlNGMzODdlMTY3YTUxOTc4YWFmOGJhZjhjOWY1OWJlYjc5YTc1MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckRhdGFDRy5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29ucwogICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3M7CiAgICAgCiAgICAgaWYgKCFhY2NlbGVy
YXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNpemUud2lkdGgo
KTsKKyAgICAgICAgc3JjQnl0ZXNQZXJSb3cgPSBtX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpOwog
ICAgICAgICBzcmNSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4obV9kYXRh
KSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwogICAgICAgICAKICNp
ZiBVU0UoQUNDRUxFUkFURSkKQEAgLTMzOSw2ICszMzksMTAgQEAgUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnMKIAogdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoVWludDhDbGFtcGVkQXJyYXkq
JiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSkKIHsKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7
CisjZW5kaWYKKwogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NF
UlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwogICAgIApAQCAtMzgxLDcgKzM4NSw3IEBAIHZv
aWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291cmNlLCBj
b25zdCBJbnRTaXplJiBzb3VyY2VTCiAgICAgdW5zaWduZWQgY2hhciogZGVzdFJvd3M7CiAgICAg
CiAgICAgaWYgKCFhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0gICAgICAgIGRlc3RCeXRlc1BlclJv
dyA9IDQgKiBzaXplLndpZHRoKCk7CisgICAgICAgIGRlc3RCeXRlc1BlclJvdyA9IG1fYnl0ZXNQ
ZXJSb3cudW5zYWZlR2V0KCk7CiAgICAgICAgIGRlc3RSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1
bnNpZ25lZCBjaGFyKj4obV9kYXRhKSArIChkZXN0eSAqIGRlc3RCeXRlc1BlclJvdyArIGRlc3R4
ICogNCkudW5zYWZlR2V0KCk7CiAgICAgICAgIAogI2lmICBVU0UoQUNDRUxFUkFURSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0
YUNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRh
dGFDRy5oCmluZGV4IGMzOTkyMDk0YmUyNTI3MzgwNTBlZDEwN2IwZjJhODBjNTk3ZTlmMGQuLmE0
MTkwNmJhYjYxZWZlNjAwZDI3NGFkZTY2NDZjMWZmMzYwNjhjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaApA
QCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3Zl
cmZsb3c+IG1fYnl0ZXNQZXJSb3c7CiAgICAgQ0dDb2xvclNwYWNlUmVmIG1fY29sb3JTcGFjZTsK
ICAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7CisgICAgSW50U2l6ZSBtX2Jh
Y2tpbmdTdG9yZVNpemU7CiAKICAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRE
YXRhKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVy
aW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKSBjb25zdDsKICAg
ICB2b2lkIHB1dERhdGEoVWludDhDbGFtcGVkQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUm
IHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQsIGNvbnN0IEludFNpemUmLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wg
dW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU2OGQ5YWQ3NjM5
NGViZGRjYzdkZDQxNWNkZjEzN2Q5YzY5NDcxMjAuLjE3ZmE3NTg3NjNhMjdiYTAxMGViMGEyNDgy
ZmU0NWMwZjQzMjI4ZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0xMS0yMSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IEltYWdl
QnVmZmVyIHRvIHVzZSBhbiBJT1N1cmZhY2UgdGhhdCBpcyBsYXJnZXIgdGhhbiBuZWNlc3NhcnkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0
ZXN0cyB0byBiZSBtb3JlIHJvYnVzdCB3aXRoIHJlc3BlY3QgdG8gYWNjZWxlcmF0ZWQgdnMKKyAg
ICAgICAgbm9uLWFjY2VsZXJhdGVkIEltYWdlQnVmZmVycy4gCisKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qczogRG9uJ3Qgc2FtcGxl
IGEgY2FudmFzIGF0IGV4YWN0bHkKKyAgICAgICAgdGhlIGNvcm5lciBvZiBhIGRyYXduIHNoYXBl
IChiZWNhdXNlIHRoZSBjb3JuZXIgbWlnaHQgYmUgYW50aWFsaWFzZWQpLiBJbnN0ZWFkLCBzYW1w
bGUKKyAgICAgICAgYSBzaW5nbGUgcGl4ZWwgaW5zaWRlIHRoZSBzaGFwZQorICAgICAgICAqIGZh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci5qczogRG9uJ3Qg
c2FtcGxlIGEgY2FudmFzIGF0IGV4YWN0bHkKKyAgICAgICAgdGhlIGVkZ2Ugb2YgdGhlIGJsdXIg
cmFkaXVzLiBJbnN0ZWFkLCBzYW1wbGUgYSBzaW5nbGUgcGl4ZWwgcGFzdCB0aGUgYmx1ciByYWRp
dXMuCisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJv
a2VQYXRoLXNoYWRvdy5qczoKKyAgICAgICAgKHNob3VsZEJlQXJvdW5kKTogQWxsb3cgdGhpcyB0
ZXN0IHRvIGJlIGxlc3Mgc3RyaWN0IHdoZW4gc2FtcGxpbmcgaW5zaWRlIGEgYmx1cnJlZCByZWdp
b24KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXNoYWRv
d0JsdXItZXhwZWN0ZWQudHh0OiBNYXRjaGluZyB1cGRhdGUgdy9yL3QKKyAgICAgICAgY2FudmFz
LXNjYWxlLXNoYWRvd0JsdXIuanMKKwogMjAxMy0xMS0xOSAgU3VuLXdvbyBOYW0gIDxzdW5ueS5u
YW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gTGF5b3V0IHRlc3RzIG5lZWQgdG8gYmUg
cmViYXNlbGluZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCmluZGV4IGYyOGI5ZGJlZTNi
MTI5Y2JiZDZkNjVjMzNhNzA4OGI5N2UzYzkwZjguLjFjYjMxNDA3OTUxNDJiMDgwMDc3NmM3YzUw
N2M5ZWFmNTk2ZjdlYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCkBAIC03MCw3ICs3
MCw3IEBAIHNob3VsZEJlKCdkYXRhWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RhdGFbMV0nLCAn
MjAnKTsKIHNob3VsZEJlKCdkYXRhWzJdJywgJzAnKTsKIAotaW1hZ2VEYXRhID0gY3R4LmdldElt
YWdlRGF0YSgzODAsIDMwLCAxLCAxKTsKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMzgx
LCAzMSwgMSwgMSk7CiBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CiBzaG91bGRCZSgnZGF0YVswXScs
ICcyNTUnKTsKIHNob3VsZEJlKCdkYXRhWzFdJywgJzIwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRv
d0JsdXIuanMKaW5kZXggNmZkYjczZjU5ZTNiMGE2MmU2OTczYTRkYjBmOTI4N2YxZDNkNTI1OC4u
YjM2YWIyNjBiZjFmZGJlZTQzZTEyZmM4MmMyMjE5ZWU2ODY4NjYxNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVy
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2Nh
bGUtc2hhZG93Qmx1ci5qcwpAQCAtNjcsNyArNjcsNyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICcyNTUnKTsK
IAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAxNzUsIDEsIDEpLmRhdGE7CitkID0gY3R4Lmdl
dEltYWdlRGF0YSgyNTAsIDE3NCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTc5LDcg
Kzc5LDcgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbM10nLCAnMCcpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgxNzUsIDI1MCwg
MSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDE3NCwgMjUwLCAxLCAxKS5kYXRhOwog
c2hvdWxkQmUoJ2RbMF0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzI1NScpOwog
Ci1kID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDE3NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDQ1MCwgMTc0LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtMTQ3LDcg
KzE0Nyw3IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzNdJywgJzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMzc1LCAyNTAs
IDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzNzQsIDI1MCwgMSwgMSkuZGF0YTsK
IHNob3VsZEJlKCdkWzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJl
KCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93Lmpz
CmluZGV4IDJjM2YwYmEwYThiMTQ3MTQ5NmI5MjdjZDA0NTA0NmUyNjQxZjg3M2MuLjBkNDE4MzNj
NTM2N2VmM2Y0M2RlNWU0YWE5MzliYmNmNTNiMzI3YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cu
anMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2Fs
ZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMTAsNyArMTAsNyBAQCBmdW5jdGlvbiBwcmludCht
ZXNzYWdlLCBjb2xvcikKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKHBhcmFncmFwaCk7CiB9CiAKLWZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIp
CitmdW5jdGlvbiBzaG91bGRCZUFyb3VuZChhLCBiLCBhcmdkZWx0YSkKIHsKICAgICB2YXIgZXZh
bEE7CiAgICAgdHJ5IHsKQEAgLTE5LDcgKzE5LDExIEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5k
KGEsIGIpCiAgICAgICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZh
bEEgLSBiKSA8IDIwKQorICAgIHZhciBkZWx0YSA9IDIwOworICAgIGlmICh0eXBlb2YgYXJnZGVs
dGEgIT0gInVuZGVmaW5lZCIpCisgICAgICAgIGRlbHRhID0gYXJnZGVsdGE7CisKKyAgICBpZiAo
TWF0aC5hYnMoZXZhbEEgLSBiKSA8IGRlbHRhKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSAr
ICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJG
QUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEg
KyAiKSIsICJyZWQiKTsKQEAgLTExOSw3ICsxMjMsNyBAQCBkID0gY3R4LmdldEltYWdlRGF0YSgz
OTgsIDIxMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMjAwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcyMDAnLCAyNSk7CiAKIGQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDUwOCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAn
MjU1Jyk7CkBAIC0xMzEsNyArMTM1LDcgQEAgZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAxOTgs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE5
OScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTk5JywgMjUpOwogCiAvLyBWZXJpZnkgYmx1
cnJ5IGFscGhhIHNoYWRvdy4KIGQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUwLCAxLCAxKS5k
YXRhOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2Nh
bnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci1leHBlY3RlZC50eHQKaW5k
ZXggMjdkYTlmMDliMDc5ZTNlNDNiNzZkNzRhMDBlMzJhMjgwMjZjM2FkYS4uODdkZTdhM2FhMzMy
MmIyN2MyZTcyYmI4M2Y1Y2Y4NzI1NWQ5OGE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxl
LXNoYWRvd0JsdXItZXhwZWN0ZWQudHh0CkBAIC0xMCw3ICsxMCw3IEBAIFBBU1MgZFszXSBpcyBh
cm91bmQgMjU1CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMg
MAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRb
M10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1Lgog
UEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC0xOCw3ICsxOCw3IEBAIEZBSUwgZFsz
XSBzaG91bGQgYmUgMC4gV2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQ
QVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2Fz
IDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAw
LiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC01NCw3ICs1NCw3
IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgMjU1CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAy
NTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUg
MC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3Vs
ZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC02Miw3
ICs2Miw3IEBAIEZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxk
IGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFsz
XSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJ
TCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBp
cyAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218372</attachid>
            <date>2013-12-03 18:43:42 -0800</date>
            <delta_ts>2013-12-04 11:21:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131203184341.patch</filename>
            <type>text/plain</type>
            <size>24394</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdkODRhYzUxMjQ1OTZi
Y2VmNzEzNWFiZGYxNTdmNjlhYmUzMTc5OS4uNmRmMGQ2MTgzODNkMzdlMzAwMzVjM2EyNDdkMDQ0
ZTk4MDU4YTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTExLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBJbWFnZUJ1ZmZlcidzIGJhY2tpbmcgc3RvcmUgY2FuIGJlIHNvIGV4cGVuc2l2
ZSwgaXQKKyAgICAgICAgd291bGQgYmUgYmVuZWZpY2lhbCB0byBoYXZlIGEgcG9vbCBvZiBwcmUt
Y3JlYXRlZCBiYWNraW5nIHN0b3JlcworICAgICAgICBhdmFpbGFibGUuIEhvd2V2ZXIsIHRoaXMg
bWVhbnMgdGhhdCBJbWFnZUJ1ZmZlciBtaWdodCBoYXZlIHRvIHVzZSBhCisgICAgICAgIGJhY2tp
bmcgc3RvcmUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgZXhhY3QgZGltZW5zaW9ucyB0aGF0IGl0
IG5lZWRzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmaWVsZCwgbV9iYWNraW5nU3RvcmVT
aXplLCB0byBDRydzIEltYWdlQnVmZmVyRGF0YQorICAgICAgICBjbGFzcywgYW5kIHVzZXMgdGhp
cyBuZXcgZmllbGQgd2hlbiBwZXJmb3JtaW5nIEltYWdlQnVmZmVyIG9wZXJhdGlvbnMKKyAgICAg
ICAgdG8gYWxsb3cgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeSBiYWNraW5nIHN0b3Jlcy4gQ29u
dGVudCBpcyBhbHdheXMKKyAgICAgICAgZHJhd24gaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
YmFzZVRyYW5zZm9ybSk6IFRoZSBiYXNlIHRyYW5zZm9ybSBoYXMgdG8gcHV0CisgICAgICAgIGNv
bnRlbnQgYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBpbnN0ZWFkIG9mIGJvdHRvbSBsZWZ0CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6IENvbnZlbmllbmNlIGZ1bmN0
aW9uIHRvIGZpZ3VyZSBvdXQKKyAgICAgICAgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGJhY2tpbmcg
dGV4dHVyZSBpbiB1c2VyIHNwYWNlCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1h
Z2VCdWZmZXIpOiBTZXQgdXAgbmV3IG1fYmFja2luZ1N0b3JlU2l6ZSBtZW1iZXIKKyAgICAgICAg
KFdlYkNvcmU6Om1heWJlQ3JvcFRvQm91bmRzKTogU29tZSBJbWFnZUJ1ZmZlciBBUEkgZnVuY3Rp
b25zIHJlcXVpcmUKKyAgICAgICAgb3V0cHV0dGluZyBhbiBpbWFnZSB3aXRoIGxvZ2ljYWwgc2l6
ZS4gVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgY3JvcHBpbmcKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOiBVcGRhdGVkIGZvciBsYXJnZXItdGhhbi1uZWNlc3Nh
cnkKKyAgICAgICAgYmFja2luZyBzdG9yZXMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Ojpjb3B5TmF0aXZlSW1hZ2UpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXcpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOiBEaXR0
bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERpdHRvCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKTogRGl0dG8KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOiBEaXR0bworICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKTogRGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOiBOZXcgbV9iYWNraW5nU3RvcmVTaXplIGZp
ZWxkCisKIDIwMTMtMTItMDMgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgogCiAg
ICAgICAgIFRoZSBvdmVyZmxvdyBib3JkZXIgb2YgYSByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgZWxl
bWVudCBpbnNpZGUgYSByZWdpb24gaXMgbm90IHBhaW50ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGFiZjhhNmNlNDE4MmVhYzVjYWYw
YWQzYmI0ZjNiYzZlN2FiOTk2NzAuLjU1MzExY2Y3MjFlYjNiMTM5OTNkYTkwNDk4ZGQ5OTk3OWVm
ZDQ2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFj
ZSBkc3RDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3Bh
Y2UoY29uc3QgVmVjdG9yPGludD4mKTsKICNlbHNlCi0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBi
YXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0x
LCAwLCBpbnRlcm5hbFNpemUoKS5oZWlnaHQoKSk7IH0KKyAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwg
LTEsIDAsIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOyB9CiAjZW5kaWYKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdDsKQEAgLTEzNSw2ICsxMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBwcml2YXRlOgogI2lmIFVTRShDRykKKyAgICAgICAgLy8gVGhlIHJldHVybmVk
IGltYWdlIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRoZSBpbnRlcm5hbFNpemUoKS4gSWYgeW91IHdh
bnQgdGhlIHNtYWxsZXIKKyAgICAgICAgLy8gaW1hZ2UsIGNyb3AgdGhlIHJlc3VsdC4KICAgICAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CiAgICAgICAgIHZvaWQgZmx1c2hDb250ZXh0KCkg
Y29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggYTI5NDIzYjY0YTNjMjhmNWNhM2FiMTNiNjBm
Y2I5N2ZhNTkzYTMwZi4uY2Q2NTcyZDFlNGNiMmIzYjRiNGU2MmUzN2YwNDI1ZDk1NjAyOTAyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHAKQEAgLTk4LDYgKzk4LDEzIEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VJbWFnZURh
dGEodm9pZCosIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCkKICAgICBmYXN0RnJlZShjb25zdF9j
YXN0PHZvaWQqPihkYXRhKSk7CiB9CiAKK3N0YXRpYyBGbG9hdFNpemUgc2NhbGVTaXplVG9Vc2Vy
U3BhY2UoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2lu
Z1N0b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplKQoreworICAgIGZsb2F0IHhN
YWduaWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJhY2tpbmdTdG9yZVNpemUud2lkdGgo
KSkgLyBpbnRlcm5hbFNpemUud2lkdGgoKTsKKyAgICBmbG9hdCB5TWFnbmlmaWNhdGlvbiA9IHN0
YXRpY19jYXN0PGZsb2F0PihiYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKSAvIGludGVybmFsU2l6
ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4gRmxvYXRTaXplKGxvZ2ljYWxTaXplLndpZHRoKCkgKiB4
TWFnbmlmaWNhdGlvbiwgbG9naWNhbFNpemUuaGVpZ2h0KCkgKiB5TWFnbmlmaWNhdGlvbik7Cit9
CisKIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkgLy8gTk9U
RTogVGhlIGlucHV0IGhlcmUgaXNuJ3QgaW1wb3J0YW50IGFzIEltYWdlQnVmZmVyRGF0YUNHJ3Mg
Y29uc3RydWN0b3IganVzdCBpZ25vcmVzIGl0LgogICAgICwgbV9sb2dpY2FsU2l6ZShzaXplKQpA
QCAtMTExLDYgKzExOCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9zaXplID0gSW50U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKKyAg
ICBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplID0gbV9zaXplOwogCiAgICAgc3VjY2VzcyA9IGZh
bHNlOyAgLy8gTWFrZSBlYXJseSByZXR1cm4gbWVhbiBmYWlsdXJlLgogICAgIGJvb2wgYWNjZWxl
cmF0ZVJlbmRlcmluZyA9IHJlbmRlcmluZ01vZGUgPT0gQWNjZWxlcmF0ZWQ7CkBAIC0xMjEsOCAr
MTI5LDggQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZQogICAgIENoZWNrZWQ8aW50LCBSZWNvcmRP
dmVyZmxvdz4gaGVpZ2h0ID0gbV9zaXplLmhlaWdodCgpOwogCiAgICAgLy8gUHJldmVudCBpbnRl
Z2VyIG92ZXJmbG93cwotICAgIG1fZGF0YS5tX2J5dGVzUGVyUm93ID0gNCAqIHdpZHRoOwotICAg
IENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXMgPSBoZWlnaHQgKiBtX2Rh
dGEubV9ieXRlc1BlclJvdzsKKyAgICBtX2RhdGEubV9ieXRlc1BlclJvdyA9IDQgKiBDaGVja2Vk
PHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4obV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53aWR0
aCgpKTsKKyAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzID0gQ2hl
Y2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUu
aGVpZ2h0KCkpICogbV9kYXRhLm1fYnl0ZXNQZXJSb3c7CiAgICAgaWYgKG51bUJ5dGVzLmhhc092
ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDgsMjAgKzE1NiwyMSBAQCBJbWFn
ZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY2dDb250ZXh0
OwogICAgIGlmIChhY2NlbGVyYXRlUmVuZGVyaW5nKSB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5W
QVNfQkFDS0lOR19TVE9SRSkKLSAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9IGNyZWF0ZUlPU3Vy
ZmFjZShtX3NpemUpOwotICAgICAgICBjZ0NvbnRleHQgPSBhZG9wdENGKHdrSU9TdXJmYWNlQ29u
dGV4dENyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCB3aWR0aC51bnNhZmVHZXQoKSwgaGVp
Z2h0LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlKSk7CisgICAgICAgIG1fZGF0YS5t
X3N1cmZhY2UgPSBjcmVhdGVJT1N1cmZhY2UobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSk7Cisg
ICAgICAgIEZsb2F0U2l6ZSB1c2VyQm91bmRzID0gc2NhbGVTaXplVG9Vc2VyU3BhY2UoRmxvYXRT
aXplKHdpZHRoLnVuc2FmZUdldCgpLCBoZWlnaHQudW5zYWZlR2V0KCkpLCBtX2RhdGEubV9iYWNr
aW5nU3RvcmVTaXplLCBtX3NpemUpOworICAgICAgICBjZ0NvbnRleHQgPSBhZG9wdENGKHdrSU9T
dXJmYWNlQ29udGV4dENyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCB1c2VyQm91bmRzLndp
ZHRoKCksIHVzZXJCb3VuZHMuaGVpZ2h0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UpKTsKICNlbmRp
ZgogICAgICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgICAgIGFjY2VsZXJhdGVSZW5kZXJp
bmcgPSBmYWxzZTsgLy8gSWYgYWxsb2NhdGlvbiBmYWlscywgZmFsbCBiYWNrIHRvIG5vbi1hY2Nl
bGVyYXRlZCBwYXRoLgogICAgIH0KIAogICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewot
ICAgICAgICBpZiAoIXRyeUZhc3RDYWxsb2MoaGVpZ2h0LnVuc2FmZUdldCgpLCBtX2RhdGEubV9i
eXRlc1BlclJvdy51bnNhZmVHZXQoKSkuZ2V0VmFsdWUobV9kYXRhLm1fZGF0YSkpCisgICAgICAg
IGlmICghdHJ5RmFzdENhbGxvYyhtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpLCBt
X2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKSkuZ2V0VmFsdWUobV9kYXRhLm1fZGF0YSkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8
c2l6ZV90PihtX2RhdGEubV9kYXRhKSAmIDIpKTsKIAogICAgICAgICBtX2RhdGEubV9iaXRtYXBJ
bmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0OwotICAgICAgICBjZ0NvbnRleHQg
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShtX2RhdGEubV9kYXRhLCB3aWR0aC51bnNh
ZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpLCA4LCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNh
ZmVHZXQoKSwgbV9kYXRhLm1fY29sb3JTcGFjZSwgbV9kYXRhLm1fYml0bWFwSW5mbykpOworICAg
ICAgICBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShtX2RhdGEubV9k
YXRhLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLndpZHRoKCksIG1fZGF0YS5tX2JhY2tpbmdT
dG9yZVNpemUuaGVpZ2h0KCksIDgsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBt
X2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvKSk7CiAgICAgICAgIC8vIENy
ZWF0ZSBhIGxpdmUgaW1hZ2UgdGhhdCB3cmFwcyB0aGUgZGF0YS4KICAgICAgICAgbV9kYXRhLm1f
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIG1f
ZGF0YS5tX2RhdGEsIG51bUJ5dGVzLnVuc2FmZUdldCgpLCByZWxlYXNlSW1hZ2VEYXRhKSk7CiAg
ICAgfQpAQCAtMTcwLDkgKzE3OSw5IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJ
bnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dChj
Z0NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3Io
bV9yZXNvbHV0aW9uU2NhbGUpOwogICAgIG1fY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0x
KSk7Ci0gICAgbV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLXNpemUuaGVpZ2h0KCkpOworICAgIG1f
Y29udGV4dC0+dHJhbnNsYXRlKDAsIC1tX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgp
KTsKKyAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2Nh
bGUpOwogICAgIG1fY29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQoYWNjZWxlcmF0ZVJl
bmRlcmluZyk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CkBAIC0xOTEsNiArMjAwLDE1IEBAIHZv
aWQgSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpIGNvbnN0CiAgICAgQ0dDb250ZXh0Rmx1c2go
bV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwg
Y29uc3QgSW50U2l6ZSYgYm91bmRzKQoreworICAgIGlmIChpbWFnZSAmJiAoQ0dJbWFnZUdldFdp
ZHRoKGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvdW5kcy53aWR0aCgpKQorICAgICAg
ICB8fCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvdW5k
cy5oZWlnaHQoKSkpKSB7CisgICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRo
SW1hZ2VJblJlY3QoaW1hZ2UsIENHUmVjdE1ha2UoMCwgc3RhdGljX2Nhc3Q8aW50PihDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlKSkgLSBib3VuZHMuaGVpZ2h0KCksIGJvdW5kcy53aWR0aCgpLCBib3Vu
ZHMuaGVpZ2h0KCkpKSk7CisgICAgfQorICAgIHJldHVybiBpbWFnZTsKK30KKwogUGFzc1JlZlB0
cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvciwgU2NhbGVCZWhhdmlvciBzY2FsZUJlaGF2aW9yKSBjb25zdAogewogICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZTsKQEAgLTIwMCwxMyArMjE4LDE4IEBAIFBhc3NSZWZQdHI8SW1h
Z2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Is
IFNjYWxlQmVoCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKTsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNh
bFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgZGV2aWNlUkdC
Q29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkp
OwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgw
LCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpLCBpbWFn
ZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1Jl
Y3RNYWtlKDAsIDAsIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwgbV9kYXRhLm1f
YmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKICAgICAgICAgaW1hZ2Ug
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAg
ICB9CisgICAgCisgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFn
ZS5nZXQoKSwgaW50ZXJuYWxTaXplKCkpOwogCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKKyAgICBBU1NFUlQoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSA9PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fbG9naWNhbFNpemUud2lkdGgoKSkpOworICAgIEFTU0VSVChDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbG9naWNh
bFNpemUuaGVpZ2h0KCkpKTsKKwogICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGltYWdlLmdldCgpKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0
U3BhY2VTaXplKHNwYWNlU2l6ZSgpKTsKIApAQCAtMjI0LDcgKzI0Nyw3IEBAIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weUJlaGF2aW9yCiAgICAgaWYgKCFtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKICAgICAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKICAgICAgICAgY2FzZSBEb250Q29w
eUJhY2tpbmdTdG9yZToKLSAgICAgICAgICAgIGltYWdlID0gQ0dJbWFnZUNyZWF0ZShpbnRlcm5h
bFNpemUoKS53aWR0aCgpLCBpbnRlcm5hbFNpemUoKS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5t
X2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9i
aXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJvdmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpOworICAgICAgICAgICAgaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlKG1f
ZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6
ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5tX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2Rh
dGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9iaXRtYXBJbmZvLCBtX2RhdGEubV9kYXRhUHJvdmlk
ZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZToKICAgICAgICAgICAgIGlt
YWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRl
eHQoKSk7CkBAIC0yNzksMTIgKzMwMiwxNSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwogCiB2
b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xpcCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogeworICAgIEZsb2F0U2l6ZSBiYWNraW5nU3RvcmVT
aXplSW5Vc2VyU3BhY2UgPSBzY2FsZVNpemVUb1VzZXJTcGFjZShyZWN0LnNpemUoKSwgbV9kYXRh
Lm1fYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOworCiAgICAgQ0dDb250ZXh0UmVm
IHBsYXRmb3JtQ29udGV4dFRvQ2xpcCA9IGNvbnRleHRUb0NsaXAtPnBsYXRmb3JtQ29udGV4dCgp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1
c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpOworICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRl
eHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSArIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFj
ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlw
LCAxLCAtMSk7Ci0gICAgQ0dDb250ZXh0Q2xpcFRvTWFzayhwbGF0Zm9ybUNvbnRleHRUb0NsaXAs
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHJlY3Quc2l6ZSgpKSwgaW1hZ2UuZ2V0KCkpOworICAg
IENHQ29udGV4dENsaXBUb1JlY3QocGxhdGZvcm1Db250ZXh0VG9DbGlwLCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgwLCBiYWNraW5nU3RvcmVTaXplSW5Vc2VyU3BhY2UuaGVpZ2h0KCkgLSByZWN0Lmhl
aWdodCgpKSwgcmVjdC5zaXplKCkpKTsKKyAgICBDR0NvbnRleHRDbGlwVG9NYXNrKHBsYXRmb3Jt
Q29udGV4dFRvQ2xpcCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYmFja2luZ1N0b3JlU2l6ZUlu
VXNlclNwYWNlKSwgaW1hZ2UuZ2V0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKHBsYXRmb3Jt
Q29udGV4dFRvQ2xpcCwgMSwgLTEpOwogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9y
bUNvbnRleHRUb0NsaXAsIC1yZWN0LngoKSwgLXJlY3QueSgpIC0gcmVjdC5oZWlnaHQoKSk7CiB9
CkBAIC0zMzUsMTAgKzM2MSwxNCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVs
dGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIENHQ29u
dGV4dFNldFNoYWRvd1dpdGhDb2xvcihkZXN0Q29udGV4dCwgQ0dTaXplWmVybywgMCwgMCk7CiAK
ICAgICAvLyBEcmF3IHRoZSBpbWFnZSBpbiBDRyBjb29yZGluYXRlIHNwYWNlCi0gICAgSW50UG9p
bnQgZGVzdFBvaW50SW5DR0Nvb3JkcyhkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54KCksIChj
b29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtID8gbG9naWNhbFNpemUo
KSA6IGludGVybmFsU2l6ZSgpKS5oZWlnaHQoKSAtIChkZXN0UG9pbnQueSgpICsgc291cmNlUmVj
dC55KCkpIC0gc291cmNlUmVjdC5oZWlnaHQoKSk7CisgICAgRmxvYXRTaXplIHNjYWxlZERlc3RT
aXplID0gc2NhbGVTaXplVG9Vc2VyU3BhY2UoY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29v
cmRpbmF0ZVN5c3RlbSA/IGxvZ2ljYWxTaXplKCkgOiBpbnRlcm5hbFNpemUoKSwgbV9kYXRhLm1f
YmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOworICAgIEludFBvaW50IGRlc3RQb2lu
dEluQ0dDb29yZHMoZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpLCBzY2FsZWREZXN0U2l6
ZS5oZWlnaHQoKSAtIChkZXN0UG9pbnQueSgpICsgc291cmNlUmVjdC55KCkpIC0gc291cmNlUmVj
dC5oZWlnaHQoKSk7CiAgICAgSW50UmVjdCBkZXN0UmVjdEluQ0dDb29yZHMoZGVzdFBvaW50SW5D
R0Nvb3Jkcywgc291cmNlQ29weVNpemUpOworICAgIENHQ29udGV4dENsaXBUb1JlY3QoZGVzdENv
bnRleHQsIGRlc3RSZWN0SW5DR0Nvb3Jkcyk7CisKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
c291cmNlQ29weUltYWdlID0gc291cmNlQ29weS0+Y29weU5hdGl2ZUltYWdlKCk7Ci0gICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGRlc3RDb250ZXh0LCBkZXN0UmVjdEluQ0dDb29yZHMsIHNvdXJjZUNv
cHlJbWFnZS5nZXQoKSk7CisgICAgRmxvYXRSZWN0IGJhY2tpbmdTdG9yZUluRGVzdFJlY3QgPSBG
bG9hdFJlY3QoRmxvYXRQb2ludChkZXN0UG9pbnRJbkNHQ29vcmRzLngoKSwgZGVzdFBvaW50SW5D
R0Nvb3Jkcy55KCkgKyBzb3VyY2VDb3B5U2l6ZS5oZWlnaHQoKSAtIChpbnQpQ0dJbWFnZUdldEhl
aWdodChzb3VyY2VDb3B5SW1hZ2UuZ2V0KCkpKSwgRmxvYXRTaXplKENHSW1hZ2VHZXRXaWR0aChz
b3VyY2VDb3B5SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KHNvdXJjZUNvcHlJbWFnZS5n
ZXQoKSkpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoZGVzdENvbnRleHQsIGJhY2tpbmdTdG9y
ZUluRGVzdFJlY3QsIHNvdXJjZUNvcHlJbWFnZS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0UmVzdG9y
ZUdTdGF0ZShkZXN0Q29udGV4dCk7CiAjZW5kaWYKIH0KQEAgLTQ0MiwxMyArNDcyLDE2IEBAIFN0
cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IGRvdWJsZSogcXVhbGl0eSwgQ29vCiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgMzIs
IDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1
bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50
ZW50RGVmYXVsdCkpOwotICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSkKKyAg
ICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEpIHsKICAgICAgICAgaW1hZ2UgPSBj
b3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7Ci0gICAgZWxzZSB7CisgICAgICAgIGlt
YWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGludGVybmFs
U2l6ZSgpKTsKKyAgICB9IGVsc2UgewogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZSgpLndp
ZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRo
KCksIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dC
bGVuZE1vZGVDb3B5KTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCks
IENHUmVjdE1ha2UoMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhl
aWdodCgpKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRl
eHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2Fs
U2l6ZSgpLmhlaWdodCgpKSk7CisgICAgICAgIEZsb2F0U2l6ZSBpbWFnZVJlY3RJblVzZXJCb3Vu
ZHMgPSBzY2FsZVNpemVUb1VzZXJTcGFjZShsb2dpY2FsU2l6ZSgpLCBtX2RhdGEubV9iYWNraW5n
U3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShj
b250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGltYWdlUmVjdEluVXNlckJvdW5kcy53aWR0
aCgpLCBpbWFnZVJlY3RJblVzZXJCb3VuZHMuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAg
ICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0Lmdl
dCgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKaW5kZXggNTU2YWU1NDM4YTllNTVkYjg3
NzM3MTUyMWVmNDcwNDAzN2FhNzEwZS4uZGU0YzM4N2UxNjdhNTE5NzhhYWY4YmFmOGM5ZjU5YmVi
NzlhNzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIFBhc3NSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zCiAgICAgdW5zaWduZWQgY2hhciogc3JjUm93czsKICAgICAKICAgICBp
ZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKLSAgICAgICAgc3JjQnl0ZXNQZXJSb3cgPSA0ICog
c2l6ZS53aWR0aCgpOworICAgICAgICBzcmNCeXRlc1BlclJvdyA9IG1fYnl0ZXNQZXJSb3cudW5z
YWZlR2V0KCk7CiAgICAgICAgIHNyY1Jvd3MgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo
YXIqPihtX2RhdGEpICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CiAg
ICAgICAgIAogI2lmIFVTRShBQ0NFTEVSQVRFKQpAQCAtMzM5LDYgKzMzOSwxMCBAQCBQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29ucwogCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShVaW50OENs
YW1wZWRBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlKQogeworI2lmIEFTU0VSVF9ESVNBQkxFRAorICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKKyNlbmRpZgorCiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDAp
OwogICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CiAgICAgCkBAIC0zODEsNyAr
Mzg1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoVWludDhDbGFtcGVkQXJyYXkq
JiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVMKICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0
Um93czsKICAgICAKICAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKLSAgICAgICAgZGVz
dEJ5dGVzUGVyUm93ID0gNCAqIHNpemUud2lkdGgoKTsKKyAgICAgICAgZGVzdEJ5dGVzUGVyUm93
ID0gbV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKTsKICAgICAgICAgZGVzdFJvd3MgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2RhdGEpICsgKGRlc3R5ICogZGVzdEJ5dGVzUGVy
Um93ICsgZGVzdHggKiA0KS51bnNhZmVHZXQoKTsKICAgICAgICAgCiAjaWYgIFVTRShBQ0NFTEVS
QVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyRGF0YUNHLmgKaW5kZXggYzM5OTIwOTRiZTI1MjczODA1MGVkMTA3YjBmMmE4MGM1
OTdlOWYwZC4uYTQxOTA2YmFiNjFlZmU2MDBkMjc0YWRlNjY0NmMxZmYzNjA2OGNlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
Q0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBDaGVja2VkPHVuc2lnbmVk
LCBSZWNvcmRPdmVyZmxvdz4gbV9ieXRlc1BlclJvdzsKICAgICBDR0NvbG9yU3BhY2VSZWYgbV9j
b2xvclNwYWNlOwogICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKKyAgICBJ
bnRTaXplIG1fYmFja2luZ1N0b3JlU2l6ZTsKIAogICAgIFBhc3NSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGdldERhdGEoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmLCBib29sIGFjY2Vs
ZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUp
IGNvbnN0OwogICAgIHZvaWQgcHV0RGF0YShVaW50OENsYW1wZWRBcnJheSomIHNvdXJjZSwgY29u
c3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRl
cmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NGRmNjU5ZjMxYjQ1Njk3ZDlkN2FlMGExOWE0ZTM4MjEyZTE3MTcxYS4uNWQ3ZjBjYTNiNTkwYjA2
ZTE1NGE3MDZhYTkwNzgzZGY2MzRiNjQwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTEx
LTIxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAg
QWxsb3cgSW1hZ2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFu
IG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI0NjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHRlc3RzIHRvIGJlIG1vcmUgcm9idXN0IHdpdGggcmVzcGVjdCB0byBhY2NlbGVy
YXRlZCB2cworICAgICAgICBub24tYWNjZWxlcmF0ZWQgSW1hZ2VCdWZmZXJzLiAKKworICAgICAg
ICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzOiBE
b24ndCBzYW1wbGUgYSBjYW52YXMgYXQgZXhhY3RseQorICAgICAgICB0aGUgY29ybmVyIG9mIGEg
ZHJhd24gc2hhcGUgKGJlY2F1c2UgdGhlIGNvcm5lciBtaWdodCBiZSBhbnRpYWxpYXNlZCkuIElu
c3RlYWQsIHNhbXBsZQorICAgICAgICBhIHNpbmdsZSBwaXhlbCBpbnNpZGUgdGhlIHNoYXBlCisg
ICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVy
LmpzOiBEb24ndCBzYW1wbGUgYSBjYW52YXMgYXQgZXhhY3RseQorICAgICAgICB0aGUgZWRnZSBv
ZiB0aGUgYmx1ciByYWRpdXMuIEluc3RlYWQsIHNhbXBsZSBhIHNpbmdsZSBwaXhlbCBwYXN0IHRo
ZSBibHVyIHJhZGl1cy4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzOgorICAgICAgICAoc2hvdWxkQmVBcm91bmQpOiBB
bGxvdyB0aGlzIHRlc3QgdG8gYmUgbGVzcyBzdHJpY3Qgd2hlbiBzYW1wbGluZyBpbnNpZGUgYSBi
bHVycmVkIHJlZ2lvbgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9jYW52YXMt
c2NhbGUtc2hhZG93Qmx1ci1leHBlY3RlZC50eHQ6IE1hdGNoaW5nIHVwZGF0ZSB3L3IvdAorICAg
ICAgICBjYW52YXMtc2NhbGUtc2hhZG93Qmx1ci5qcworCiAyMDEzLTEyLTAzICBSYWR1IFN0YXZp
bGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4KIAogICAgICAgICBUaGUgb3ZlcmZsb3cgYm9yZGVyIG9m
IGEgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGVsZW1lbnQgaW5zaWRlIGEgcmVnaW9uIGlzIG5vdCBw
YWludGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCmluZGV4IGYyOGI5ZGJlZTNiMTI5Y2Ji
ZDZkNjVjMzNhNzA4OGI5N2UzYzkwZjguLjFjYjMxNDA3OTUxNDJiMDgwMDc3NmM3YzUwN2M5ZWFm
NTk2ZjdlYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCkBAIC03MCw3ICs3MCw3IEBA
IHNob3VsZEJlKCdkYXRhWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RhdGFbMV0nLCAnMjAnKTsK
IHNob3VsZEJlKCdkYXRhWzJdJywgJzAnKTsKIAotaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0
YSgzODAsIDMwLCAxLCAxKTsKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMzgxLCAzMSwg
MSwgMSk7CiBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CiBzaG91bGRCZSgnZGF0YVswXScsICcyNTUn
KTsKIHNob3VsZEJlKCdkYXRhWzFdJywgJzIwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXIu
anMKaW5kZXggNmZkYjczZjU5ZTNiMGE2MmU2OTczYTRkYjBmOTI4N2YxZDNkNTI1OC4uYjM2YWIy
NjBiZjFmZGJlZTQzZTEyZmM4MmMyMjE5ZWU2ODY4NjYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLmpzCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc2hh
ZG93Qmx1ci5qcwpAQCAtNjcsNyArNjcsNyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICcyNTUnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAxNzUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgyNTAsIDE3NCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTc5LDcgKzc5LDcg
QEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbM10nLCAnMCcpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgxNzUsIDI1MCwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDE3NCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzI1NScpOwogCi1kID0g
Y3R4LmdldEltYWdlRGF0YSg0NTAsIDE3NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDQ1MCwgMTc0LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzNdJywgJzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMzc1LCAyNTAsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzNzQsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4
IDJjM2YwYmEwYThiMTQ3MTQ5NmI5MjdjZDA0NTA0NmUyNjQxZjg3M2MuLjBkNDE4MzNjNTM2N2Vm
M2Y0M2RlNWU0YWE5MzliYmNmNTNiMzI3YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJv
a2VQYXRoLXNoYWRvdy5qcwpAQCAtMTAsNyArMTAsNyBAQCBmdW5jdGlvbiBwcmludChtZXNzYWdl
LCBjb2xvcikKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENo
aWxkKHBhcmFncmFwaCk7CiB9CiAKLWZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCitmdW5j
dGlvbiBzaG91bGRCZUFyb3VuZChhLCBiLCBhcmdkZWx0YSkKIHsKICAgICB2YXIgZXZhbEE7CiAg
ICAgdHJ5IHsKQEAgLTE5LDcgKzE5LDExIEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIp
CiAgICAgICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBi
KSA8IDIwKQorICAgIHZhciBkZWx0YSA9IDIwOworICAgIGlmICh0eXBlb2YgYXJnZGVsdGEgIT0g
InVuZGVmaW5lZCIpCisgICAgICAgIGRlbHRhID0gYXJnZGVsdGE7CisKKyAgICBpZiAoTWF0aC5h
YnMoZXZhbEEgLSBiKSA8IGRlbHRhKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMg
YXJvdW5kICIgKyBiICwgImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIg
KyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIs
ICJyZWQiKTsKQEAgLTExOSw3ICsxMjMsNyBAQCBkID0gY3R4LmdldEltYWdlRGF0YSgzOTgsIDIx
MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
MjAwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcyMDAnLCAyNSk7CiAKIGQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDUwOCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CkBAIC0xMzEsNyArMTM1LDcgQEAgZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAxOTgsIDEsIDEp
LmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE5OScpOwor
c2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTk5JywgMjUpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFs
cGhhIHNoYWRvdy4KIGQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci1leHBlY3RlZC50eHQKaW5kZXggMjdk
YTlmMDliMDc5ZTNlNDNiNzZkNzRhMDBlMzJhMjgwMjZjM2FkYS4uODdkZTdhM2FhMzMyMmIyN2My
ZTcyYmI4M2Y1Y2Y4NzI1NWQ5OGE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXNoYWRv
d0JsdXItZXhwZWN0ZWQudHh0CkBAIC0xMCw3ICsxMCw3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQg
MjU1CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFT
UyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hv
dWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBk
WzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC0xOCw3ICsxOCw3IEBAIEZBSUwgZFszXSBzaG91
bGQgYmUgMC4gV2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRb
MV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitG
QUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMg
MjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC01NCw3ICs1NCw3IEBAIFBB
U1MgZFszXSBpcyBhcm91bmQgMjU1CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQ
QVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2Fz
IDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAw
LiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC02Miw3ICs2Miw3
IEBAIEZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAu
IFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91
bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBd
IHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218422</attachid>
            <date>2013-12-04 11:21:20 -0800</date>
            <delta_ts>2013-12-04 13:32:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124626-20131204112119.patch</filename>
            <type>text/plain</type>
            <size>24418</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJmZjIzNjI0ZmM1YzY4
Nzc2MjhjZTg0Y2UyOWUxMzQ2OGNlZjIwNS4uNjc4NGQ0ZmQ2ZjcxYzA0NDlmNGZmNzU1OTBlYWY2
NzFmZDhjYTUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTExLTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgSW1h
Z2VCdWZmZXIgdG8gdXNlIGFuIElPU3VyZmFjZSB0aGF0IGlzIGxhcmdlciB0aGFuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVz
ZSBjcmVhdGluZyBJbWFnZUJ1ZmZlcidzIGJhY2tpbmcgc3RvcmUgY2FuIGJlIHNvIGV4cGVuc2l2
ZSwgaXQKKyAgICAgICAgd291bGQgYmUgYmVuZWZpY2lhbCB0byBoYXZlIGEgcG9vbCBvZiBwcmUt
Y3JlYXRlZCBiYWNraW5nIHN0b3JlcworICAgICAgICBhdmFpbGFibGUuIEhvd2V2ZXIsIHRoaXMg
bWVhbnMgdGhhdCBJbWFnZUJ1ZmZlciBtaWdodCBoYXZlIHRvIHVzZSBhCisgICAgICAgIGJhY2tp
bmcgc3RvcmUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgZXhhY3QgZGltZW5zaW9ucyB0aGF0IGl0
IG5lZWRzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmaWVsZCwgbV9iYWNraW5nU3RvcmVT
aXplLCB0byBDRydzIEltYWdlQnVmZmVyRGF0YQorICAgICAgICBjbGFzcywgYW5kIHVzZXMgdGhp
cyBuZXcgZmllbGQgd2hlbiBwZXJmb3JtaW5nIEltYWdlQnVmZmVyIG9wZXJhdGlvbnMKKyAgICAg
ICAgdG8gYWxsb3cgZm9yIGxhcmdlci10aGFuLW5lY2Vzc2FyeSBiYWNraW5nIHN0b3Jlcy4gQ29u
dGVudCBpcyBhbHdheXMKKyAgICAgICAgZHJhd24gaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgYmFja2luZyBzdG9yZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
YmFzZVRyYW5zZm9ybSk6IFRoZSBiYXNlIHRyYW5zZm9ybSBoYXMgdG8gcHV0CisgICAgICAgIGNv
bnRlbnQgYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBpbnN0ZWFkIG9mIGJvdHRvbSBsZWZ0CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6IENvbnZlbmllbmNlIGZ1bmN0
aW9uIHRvIGZpZ3VyZSBvdXQKKyAgICAgICAgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGJhY2tpbmcg
dGV4dHVyZSBpbiB1c2VyIHNwYWNlCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1h
Z2VCdWZmZXIpOiBTZXQgdXAgbmV3IG1fYmFja2luZ1N0b3JlU2l6ZSBtZW1iZXIKKyAgICAgICAg
KFdlYkNvcmU6Om1heWJlQ3JvcFRvQm91bmRzKTogU29tZSBJbWFnZUJ1ZmZlciBBUEkgZnVuY3Rp
b25zIHJlcXVpcmUKKyAgICAgICAgb3V0cHV0dGluZyBhbiBpbWFnZSB3aXRoIGxvZ2ljYWwgc2l6
ZS4gVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgY3JvcHBpbmcKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UpOiBVcGRhdGVkIGZvciBsYXJnZXItdGhhbi1uZWNlc3Nh
cnkKKyAgICAgICAgYmFja2luZyBzdG9yZXMKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Ojpjb3B5TmF0aXZlSW1hZ2UpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmRyYXcpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOiBEaXR0
bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6IERpdHRvCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKTogRGl0dG8KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOiBEaXR0bworICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKTogRGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oOiBOZXcgbV9iYWNraW5nU3RvcmVTaXplIGZp
ZWxkCisKIDIwMTMtMTItMDQgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW3RleG1hcF0gQm9yZGVycyBvbiByb3RhdGluZyBpbWFnZXMgYXJlIGhpZGRl
bi93cm9uZ2x5IHJlbmRlcmVkIHdpdGggZWRnZSBkaXN0YW5jZSBhbnRpYWxpYXNpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGFiZjhh
NmNlNDE4MmVhYzVjYWYwYWQzYmI0ZjNiYzZlN2FiOTk2NzAuLjU1MzExY2Y3MjFlYjNiMTM5OTNk
YTkwNDk4ZGQ5OTk3OWVmZDQ2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JT
cGFjZSwgQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBwbGF0Zm9ybVRy
YW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mKTsKICNlbHNlCi0gICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNm
b3JtKDEsIDAsIDAsIC0xLCAwLCBpbnRlcm5hbFNpemUoKS5oZWlnaHQoKSk7IH0KKyAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFu
c2Zvcm0oMSwgMCwgMCwgLTEsIDAsIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkp
OyB9CiAjZW5kaWYKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKQEAgLTEzNSw2ICsxMzUsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRlOgogI2lmIFVTRShDRykKKyAgICAgICAg
Ly8gVGhlIHJldHVybmVkIGltYWdlIG1pZ2h0IGJlIGxhcmdlciB0aGFuIHRoZSBpbnRlcm5hbFNp
emUoKS4gSWYgeW91IHdhbnQgdGhlIHNtYWxsZXIKKyAgICAgICAgLy8gaW1hZ2UsIGNyb3AgdGhl
IHJlc3VsdC4KICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvcHlOYXRpdmVJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Q7CiAgICAgICAgIHZvaWQg
Zmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggNjA3YmYwZmI2MWU3
NjhlY2M4YjdhNWU5OTc5ODAwMGQ1YjAxMDA0Yy4uYjEyYmQ0ZjQ3N2I2Nzc5YTRiNTMzZjMyM2U2
ZGVjNTJiMDJlYjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTk4LDYgKzk4LDEzIEBAIHN0YXRpYyB2b2lk
IHJlbGVhc2VJbWFnZURhdGEodm9pZCosIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCkKICAgICBm
YXN0RnJlZShjb25zdF9jYXN0PHZvaWQqPihkYXRhKSk7CiB9CiAKK3N0YXRpYyBGbG9hdFNpemUg
c2NhbGVTaXplVG9Vc2VyU3BhY2UoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2luZ1N0b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplKQor
eworICAgIGZsb2F0IHhNYWduaWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJhY2tpbmdT
dG9yZVNpemUud2lkdGgoKSkgLyBpbnRlcm5hbFNpemUud2lkdGgoKTsKKyAgICBmbG9hdCB5TWFn
bmlmaWNhdGlvbiA9IHN0YXRpY19jYXN0PGZsb2F0PihiYWNraW5nU3RvcmVTaXplLmhlaWdodCgp
KSAvIGludGVybmFsU2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4gRmxvYXRTaXplKGxvZ2ljYWxT
aXplLndpZHRoKCkgKiB4TWFnbmlmaWNhdGlvbiwgbG9naWNhbFNpemUuaGVpZ2h0KCkgKiB5TWFn
bmlmaWNhdGlvbik7Cit9CisKIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2Rh
dGEoc2l6ZSkgLy8gTk9URTogVGhlIGlucHV0IGhlcmUgaXNuJ3QgaW1wb3J0YW50IGFzIEltYWdl
QnVmZmVyRGF0YUNHJ3MgY29uc3RydWN0b3IganVzdCBpZ25vcmVzIGl0LgogICAgICwgbV9sb2dp
Y2FsU2l6ZShzaXplKQpAQCAtMTExLDYgKzExOCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gSW50U2l6ZShzY2FsZWRXaWR0aCwgc2Nh
bGVkSGVpZ2h0KTsKKyAgICBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplID0gbV9zaXplOwogCiAg
ICAgc3VjY2VzcyA9IGZhbHNlOyAgLy8gTWFrZSBlYXJseSByZXR1cm4gbWVhbiBmYWlsdXJlLgog
ICAgIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IHJlbmRlcmluZ01vZGUgPT0gQWNjZWxlcmF0
ZWQ7CkBAIC0xMjEsOCArMTI5LDggQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IElu
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZQogICAgIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gaGVpZ2h0ID0gbV9zaXplLmhlaWdodCgpOwogCiAgICAg
Ly8gUHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cwotICAgIG1fZGF0YS5tX2J5dGVzUGVyUm93ID0g
NCAqIHdpZHRoOwotICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXMg
PSBoZWlnaHQgKiBtX2RhdGEubV9ieXRlc1BlclJvdzsKKyAgICBtX2RhdGEubV9ieXRlc1BlclJv
dyA9IDQgKiBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4obV9kYXRhLm1fYmFja2lu
Z1N0b3JlU2l6ZS53aWR0aCgpKTsKKyAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+
IG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5tX2Jh
Y2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpICogbV9kYXRhLm1fYnl0ZXNQZXJSb3c7CiAgICAgaWYg
KG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDgsMjAg
KzE1NiwyMSBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAgICAgUmV0YWluUHRyPENHQ29udGV4
dFJlZj4gY2dDb250ZXh0OwogICAgIGlmIChhY2NlbGVyYXRlUmVuZGVyaW5nKSB7CiAjaWYgVVNF
KElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICAgICAgbV9kYXRhLm1fc3VyZmFj
ZSA9IGNyZWF0ZUlPU3VyZmFjZShtX3NpemUpOwotICAgICAgICBjZ0NvbnRleHQgPSBhZG9wdENG
KHdrSU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCB3aWR0aC51
bnNhZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlKSk7Cisg
ICAgICAgIG1fZGF0YS5tX3N1cmZhY2UgPSBjcmVhdGVJT1N1cmZhY2UobV9kYXRhLm1fYmFja2lu
Z1N0b3JlU2l6ZSk7CisgICAgICAgIEZsb2F0U2l6ZSB1c2VyQm91bmRzID0gc2NhbGVTaXplVG9V
c2VyU3BhY2UoRmxvYXRTaXplKHdpZHRoLnVuc2FmZUdldCgpLCBoZWlnaHQudW5zYWZlR2V0KCkp
LCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLCBtX3NpemUpOworICAgICAgICBjZ0NvbnRleHQg
PSBhZG9wdENGKHdrSU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgp
LCB1c2VyQm91bmRzLndpZHRoKCksIHVzZXJCb3VuZHMuaGVpZ2h0KCksIG1fZGF0YS5tX2NvbG9y
U3BhY2UpKTsKICNlbmRpZgogICAgICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgICAgIGFj
Y2VsZXJhdGVSZW5kZXJpbmcgPSBmYWxzZTsgLy8gSWYgYWxsb2NhdGlvbiBmYWlscywgZmFsbCBi
YWNrIHRvIG5vbi1hY2NlbGVyYXRlZCBwYXRoLgogICAgIH0KIAogICAgIGlmICghYWNjZWxlcmF0
ZVJlbmRlcmluZykgewotICAgICAgICBpZiAoIXRyeUZhc3RDYWxsb2MoaGVpZ2h0LnVuc2FmZUdl
dCgpLCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKSkuZ2V0VmFsdWUobV9kYXRhLm1f
ZGF0YSkpCisgICAgICAgIGlmICghdHJ5RmFzdENhbGxvYyhtX2RhdGEubV9iYWNraW5nU3RvcmVT
aXplLmhlaWdodCgpLCBtX2RhdGEubV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKSkuZ2V0VmFsdWUo
bV9kYXRhLm1fZGF0YSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEFTU0VSVCghKHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fZGF0YS5tX2RhdGEpICYgMykpOwogCiAgICAgICAg
IG1fZGF0YS5tX2JpdG1hcEluZm8gPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7Ci0g
ICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG1fZGF0YS5t
X2RhdGEsIHdpZHRoLnVuc2FmZUdldCgpLCBoZWlnaHQudW5zYWZlR2V0KCksIDgsIG1fZGF0YS5t
X2J5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBtX2RhdGEubV9jb2xvclNwYWNlLCBtX2RhdGEubV9i
aXRtYXBJbmZvKSk7CisgICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKG1fZGF0YS5tX2RhdGEsIG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUud2lkdGgoKSwg
bV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgOCwgbV9kYXRhLm1fYnl0ZXNQZXJS
b3cudW5zYWZlR2V0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8p
KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgbGl2ZSBpbWFnZSB0aGF0IHdyYXBzIHRoZSBkYXRhLgog
ICAgICAgICBtX2RhdGEubV9kYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3Jl
YXRlV2l0aERhdGEoMCwgbV9kYXRhLm1fZGF0YSwgbnVtQnl0ZXMudW5zYWZlR2V0KCksIHJlbGVh
c2VJbWFnZURhdGEpKTsKICAgICB9CkBAIC0xNzAsOSArMTc5LDkgQEAgSW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQgPSBhZG9wdFB0cihuZXcg
R3JhcGhpY3NDb250ZXh0KGNnQ29udGV4dC5nZXQoKSkpOwotICAgIG1fY29udGV4dC0+YXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7CiAgICAgbV9jb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBtX2NvbnRleHQtPnRyYW5zbGF0ZSgwLCAtc2l6ZS5o
ZWlnaHQoKSk7CisgICAgbV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLW1fZGF0YS5tX2JhY2tpbmdT
dG9yZVNpemUuaGVpZ2h0KCkpOworICAgIG1fY29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihtX3Jlc29sdXRpb25TY2FsZSk7CiAgICAgbV9jb250ZXh0LT5zZXRJc0FjY2VsZXJhdGVkQ29u
dGV4dChhY2NlbGVyYXRlUmVuZGVyaW5nKTsKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KQEAgLTE5
MSw2ICsyMDAsMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCkgY29uc3QKICAg
ICBDR0NvbnRleHRGbHVzaChtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAorc3Rh
dGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShD
R0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCit7CisgICAgaWYgKGltYWdl
ICYmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpICE9IHN0YXRpY19jYXN0PHNpemVfdD4oYm91bmRz
LndpZHRoKCkpCisgICAgICAgIHx8IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpICE9IHN0YXRpY19j
YXN0PHNpemVfdD4oYm91bmRzLmhlaWdodCgpKSkpIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgQ0dSZWN0TWFrZSgwLCBzdGF0aWNf
Y2FzdDxpbnQ+KENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpKSAtIGJvdW5kcy5oZWlnaHQoKSwgYm91
bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGltYWdl
OworfQorCiBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaGF2aW9yIHNjYWxlQmVoYXZpb3IpIGNvbnN0
CiB7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwpAQCAtMjAwLDEzICsyMTgsMTgg
QEAgUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVD
b3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWgKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVm
PiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUo
KS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogbG9naWNhbFNpemUoKS53
aWR0aCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwg
a0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0Lmdl
dCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUo
KS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNv
bnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53
aWR0aCgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkp
OwogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29u
dGV4dC5nZXQoKSkpOwogICAgIH0KKyAgICAKKyAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFn
ZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBpbnRlcm5hbFNpemUoKSk7CiAKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIEFTU0VSVChDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4obV9sb2dpY2FsU2l6ZS53aWR0aCgpKSk7
CisgICAgQVNTRVJUKENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0
PHNpemVfdD4obV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSkpOworCiAgICAgUmVmUHRyPEJpdG1hcElt
YWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoaW1hZ2UuZ2V0KCkpOwogICAg
IGJpdG1hcEltYWdlLT5zZXRTcGFjZVNpemUoc3BhY2VTaXplKCkpOwogCkBAIC0yMjQsNyArMjQ3
LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IKICAgICBpZiAoIW1fY29udGV4dC0+aXNBY2Nl
bGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBzd2l0Y2ggKGNvcHlCZWhhdmlvcikgewogICAg
ICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2UgPSBDR0lt
YWdlQ3JlYXRlKGludGVybmFsU2l6ZSgpLndpZHRoKCksIGludGVybmFsU2l6ZSgpLmhlaWdodCgp
LCA4LCAzMiwgbV9kYXRhLm1fYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCksIG1fZGF0YS5tX2NvbG9y
U3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8sIG1fZGF0YS5tX2RhdGFQcm92aWRlci5nZXQoKSwg
MCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7CisgICAgICAgICAgICBpbWFnZSA9
IENHSW1hZ2VDcmVhdGUobV9kYXRhLm1fYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEu
bV9iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpLCA4LCAzMiwgbV9kYXRhLm1fYnl0ZXNQZXJSb3cu
dW5zYWZlR2V0KCksIG1fZGF0YS5tX2NvbG9yU3BhY2UsIG1fZGF0YS5tX2JpdG1hcEluZm8sIG1f
ZGF0YS5tX2RhdGFQcm92aWRlci5nZXQoKSwgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVm
YXVsdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3Jl
OgogICAgICAgICAgICAgaW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0
KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKQEAgLTI3OSwxMiArMzAyLDE1IEBAIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjCiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CisgICAgRmxvYXRT
aXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9IHNjYWxlU2l6ZVRvVXNlclNwYWNlKHJl
Y3Quc2l6ZSgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisK
ICAgICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0VG9DbGlwID0gY29udGV4dFRvQ2xpcC0+
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUg
Z3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxwaGEgbWFzayBoZXJlLgogICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgcmVj
dC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgcmVjdC54KCksIHJlY3QueSgpICsgYmFja2luZ1N0
b3JlU2l6ZUluVXNlclNwYWNlLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShwbGF0
Zm9ybUNvbnRleHRUb0NsaXAsIDEsIC0xKTsKLSAgICBDR0NvbnRleHRDbGlwVG9NYXNrKHBsYXRm
b3JtQ29udGV4dFRvQ2xpcCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcmVjdC5zaXplKCkpLCBp
bWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChwbGF0Zm9ybUNvbnRleHRUb0Ns
aXAsIEZsb2F0UmVjdChGbG9hdFBvaW50KDAsIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5o
ZWlnaHQoKSAtIHJlY3QuaGVpZ2h0KCkpLCByZWN0LnNpemUoKSkpOworICAgIENHQ29udGV4dENs
aXBUb01hc2socGxhdGZvcm1Db250ZXh0VG9DbGlwLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBi
YWNraW5nU3RvcmVTaXplSW5Vc2VyU3BhY2UpLCBpbWFnZS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0
U2NhbGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCAxLCAtMSk7CiAgICAgQ0dDb250ZXh0VHJh
bnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xpcCwgLXJlY3QueCgpLCAtcmVjdC55KCkgLSBy
ZWN0LmhlaWdodCgpKTsKIH0KQEAgLTMzNSwxMCArMzYxLDE0IEBAIHZvaWQgSW1hZ2VCdWZmZXI6
OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291
cmNlLCBjCiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGRlc3RDb250ZXh0LCBDR1Np
emVaZXJvLCAwLCAwKTsKIAogICAgIC8vIERyYXcgdGhlIGltYWdlIGluIENHIGNvb3JkaW5hdGUg
c3BhY2UKLSAgICBJbnRQb2ludCBkZXN0UG9pbnRJbkNHQ29vcmRzKGRlc3RQb2ludC54KCkgKyBz
b3VyY2VSZWN0LngoKSwgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0
ZW0gPyBsb2dpY2FsU2l6ZSgpIDogaW50ZXJuYWxTaXplKCkpLmhlaWdodCgpIC0gKGRlc3RQb2lu
dC55KCkgKyBzb3VyY2VSZWN0LnkoKSkgLSBzb3VyY2VSZWN0LmhlaWdodCgpKTsKKyAgICBGbG9h
dFNpemUgc2NhbGVkRGVzdFNpemUgPSBzY2FsZVNpemVUb1VzZXJTcGFjZShjb29yZGluYXRlU3lz
dGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtID8gbG9naWNhbFNpemUoKSA6IGludGVybmFs
U2l6ZSgpLCBtX2RhdGEubV9iYWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7CisgICAg
SW50UG9pbnQgZGVzdFBvaW50SW5DR0Nvb3JkcyhkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC54
KCksIHNjYWxlZERlc3RTaXplLmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0
LnkoKSkgLSBzb3VyY2VSZWN0LmhlaWdodCgpKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nv
b3JkcyhkZXN0UG9pbnRJbkNHQ29vcmRzLCBzb3VyY2VDb3B5U2l6ZSk7CisgICAgQ0dDb250ZXh0
Q2xpcFRvUmVjdChkZXN0Q29udGV4dCwgZGVzdFJlY3RJbkNHQ29vcmRzKTsKKwogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBzb3VyY2VDb3B5SW1hZ2UgPSBzb3VyY2VDb3B5LT5jb3B5TmF0aXZl
SW1hZ2UoKTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoZGVzdENvbnRleHQsIGRlc3RSZWN0SW5D
R0Nvb3Jkcywgc291cmNlQ29weUltYWdlLmdldCgpKTsKKyAgICBGbG9hdFJlY3QgYmFja2luZ1N0
b3JlSW5EZXN0UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KGRlc3RQb2ludEluQ0dDb29yZHMu
eCgpLCBkZXN0UG9pbnRJbkNHQ29vcmRzLnkoKSArIHNvdXJjZUNvcHlTaXplLmhlaWdodCgpIC0g
KGludClDR0ltYWdlR2V0SGVpZ2h0KHNvdXJjZUNvcHlJbWFnZS5nZXQoKSkpLCBGbG9hdFNpemUo
Q0dJbWFnZUdldFdpZHRoKHNvdXJjZUNvcHlJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQo
c291cmNlQ29weUltYWdlLmdldCgpKSkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShkZXN0Q29u
dGV4dCwgYmFja2luZ1N0b3JlSW5EZXN0UmVjdCwgc291cmNlQ29weUltYWdlLmdldCgpKTsKICAg
ICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGRlc3RDb250ZXh0KTsKICNlbmRpZgogfQpAQCAtNDQy
LDEzICs0NzIsMTYgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KICAgICAgICAgaW1hZ2UgPSBh
ZG9wdENGKENHSW1hZ2VDcmVhdGUobG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgp
LmhlaWdodCgpLCA4LCAzMiwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0
bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNl
LCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0gICAgfSBlbHNlIGlmIChtX3Jlc29sdXRp
b25TY2FsZSA9PSAxKQorICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSkgewog
ICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBl
bHNlIHsKKyAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFn
ZS5nZXQoKSwgaW50ZXJuYWxTaXplKCkpOworICAgIH0gZWxzZSB7CiAgICAgICAgIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAs
IGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxv
Z2ljYWxTaXplKCkud2lkdGgoKSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNv
bnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCks
IGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4
dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgp
LndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgRmxvYXRTaXplIGlt
YWdlUmVjdEluVXNlckJvdW5kcyA9IHNjYWxlU2l6ZVRvVXNlclNwYWNlKGxvZ2ljYWxTaXplKCks
IG1fZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIGludGVybmFsU2l6ZSgpKTsKKyAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VSZWN0
SW5Vc2VyQm91bmRzLndpZHRoKCksIGltYWdlUmVjdEluVXNlckJvdW5kcy5oZWlnaHQoKSksIGlt
YWdlLmdldCgpKTsKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAppbmRleCA1
NTZhZTU0MzhhOWU1NWRiODc3MzcxNTIxZWY0NzA0MDM3YWE3MTBlLi5kZTRjMzg3ZTE2N2E1MTk3
OGFhZjhiYWY4YzlmNTliZWI3OWE3NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCkBAIC0xNTgsNyAr
MTU4LDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpn
ZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnMKICAgICB1bnNpZ25lZCBjaGFyKiBzcmNS
b3dzOwogICAgIAogICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAgICBzcmNC
eXRlc1BlclJvdyA9IDQgKiBzaXplLndpZHRoKCk7CisgICAgICAgIHNyY0J5dGVzUGVyUm93ID0g
bV9ieXRlc1BlclJvdy51bnNhZmVHZXQoKTsKICAgICAgICAgc3JjUm93cyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cg
KyBvcmlnaW54ICogNDsKICAgICAgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEUpCkBAIC0zMzksNiAr
MzM5LDEwIEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6
Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zCiAKIHZvaWQgSW1hZ2VCdWZmZXJEYXRh
OjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3Vy
Y2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wg
dW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCiB7CisjaWYgQVNTRVJUX0RJU0FC
TEVECisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworI2VuZGlmCisKICAgICBBU1NFUlQoc291cmNl
UmVjdC53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsK
ICAgICAKQEAgLTM4MSw3ICszODUsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShV
aW50OENsYW1wZWRBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlUwogICAgIHVu
c2lnbmVkIGNoYXIqIGRlc3RSb3dzOwogICAgIAogICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmlu
ZykgewotICAgICAgICBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogc2l6ZS53aWR0aCgpOworICAgICAg
ICBkZXN0Qnl0ZXNQZXJSb3cgPSBtX2J5dGVzUGVyUm93LnVuc2FmZUdldCgpOwogICAgICAgICBk
ZXN0Um93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZGF0YSkgKyAoZGVz
dHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQpLnVuc2FmZUdldCgpOwogICAgICAgICAK
ICNpZiAgVVNFKEFDQ0VMRVJBVEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRleCBjMzk5MjA5NGJlMjUyNzM4
MDUwZWQxMDdiMGYyYTgwYzU5N2U5ZjBkLi5hNDE5MDZiYWI2MWVmZTYwMGQyNzRhZGU2NjQ2YzFm
ZjM2MDY4Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAg
IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBtX2J5dGVzUGVyUm93OwogICAgIENH
Q29sb3JTcGFjZVJlZiBtX2NvbG9yU3BhY2U7CiAgICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4g
bV9zdXJmYWNlOworICAgIEludFNpemUgbV9iYWNraW5nU3RvcmVTaXplOwogCiAgICAgUGFzc1Jl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0RGF0YShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSkgY29uc3Q7CiAgICAgdm9pZCBwdXREYXRhKFVpbnQ4Q2xhbXBlZEFy
cmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiwgYm9v
bCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA3YmMyMDM2ODI3NjZmOTg2OTJlM2QzMTg1OTg4YzhhMTQxYzgyNDgx
Li45MjEyODBhYzdhYmFiYzI0MTE3MGI1YmRhYjlhNzIyNGVhMmQxMWRjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTMtMTEtMjEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBJbWFnZUJ1ZmZlciB0byB1c2UgYW4gSU9TdXJmYWNlIHRo
YXQgaXMgbGFyZ2VyIHRoYW4gbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdHMgdG8gYmUgbW9yZSByb2J1c3Qgd2l0aCBy
ZXNwZWN0IHRvIGFjY2VsZXJhdGVkIHZzCisgICAgICAgIG5vbi1hY2NlbGVyYXRlZCBJbWFnZUJ1
ZmZlcnMuIAorCisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1maWxs
UGF0aC1zaGFkb3cuanM6IERvbid0IHNhbXBsZSBhIGNhbnZhcyBhdCBleGFjdGx5CisgICAgICAg
IHRoZSBjb3JuZXIgb2YgYSBkcmF3biBzaGFwZSAoYmVjYXVzZSB0aGUgY29ybmVyIG1pZ2h0IGJl
IGFudGlhbGlhc2VkKS4gSW5zdGVhZCwgc2FtcGxlCisgICAgICAgIGEgc2luZ2xlIHBpeGVsIGlu
c2lkZSB0aGUgc2hhcGUKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXNjYWxlLXNoYWRvd0JsdXIuanM6IERvbid0IHNhbXBsZSBhIGNhbnZhcyBhdCBleGFjdGx5Cisg
ICAgICAgIHRoZSBlZGdlIG9mIHRoZSBibHVyIHJhZGl1cy4gSW5zdGVhZCwgc2FtcGxlIGEgc2lu
Z2xlIHBpeGVsIHBhc3QgdGhlIGJsdXIgcmFkaXVzLgorICAgICAgICAqIGZhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6CisgICAgICAgIChz
aG91bGRCZUFyb3VuZCk6IEFsbG93IHRoaXMgdGVzdCB0byBiZSBsZXNzIHN0cmljdCB3aGVuIHNh
bXBsaW5nIGluc2lkZSBhIGJsdXJyZWQgcmVnaW9uCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zh
c3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dDogTWF0Y2hpbmcg
dXBkYXRlIHcvci90CisgICAgICAgIGNhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLmpzCisKIDIwMTMt
MTItMDQgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJpby5wcmFkYUBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuIFVwZGF0ZWQgZXhwZWN0YXRpb25zIGZv
ciBHVEsgYW5kIHNoYXJlIHRoZW0gd2l0aCBFRkwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93Lmpz
CmluZGV4IGYyOGI5ZGJlZTNiMTI5Y2JiZDZkNjVjMzNhNzA4OGI5N2UzYzkwZjguLjFjYjMxNDA3
OTUxNDJiMDgwMDc3NmM3YzUwN2M5ZWFmNTk2ZjdlYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hhZG93LmpzCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtZmlsbFBhdGgtc2hh
ZG93LmpzCkBAIC03MCw3ICs3MCw3IEBAIHNob3VsZEJlKCdkYXRhWzBdJywgJzI1NScpOwogc2hv
dWxkQmUoJ2RhdGFbMV0nLCAnMjAnKTsKIHNob3VsZEJlKCdkYXRhWzJdJywgJzAnKTsKIAotaW1h
Z2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgzODAsIDMwLCAxLCAxKTsKK2ltYWdlRGF0YSA9IGN0
eC5nZXRJbWFnZURhdGEoMzgxLCAzMSwgMSwgMSk7CiBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CiBz
aG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkYXRhWzFdJywgJzIwJyk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNj
YWxlLXNoYWRvd0JsdXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLXNoYWRvd0JsdXIuanMKaW5kZXggNmZkYjczZjU5ZTNiMGE2MmU2OTczYTRk
YjBmOTI4N2YxZDNkNTI1OC4uYjM2YWIyNjBiZjFmZGJlZTQzZTEyZmM4MmMyMjE5ZWU2ODY4NjYx
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1zY2FsZS1zaGFkb3dCbHVyLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1ci5qcwpAQCAtNjcsNyArNjcsNyBAQCBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAxNzUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyNTAsIDE3NCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKQEAgLTc5LDcgKzc5LDcgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMCcpOwogCi1kID0gY3R4LmdldElt
YWdlRGF0YSgxNzUsIDI1MCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDE3NCwg
MjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDE3NSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwgMTc0LCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzAnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMzc1LCAyNTAsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzNzQs
IDI1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzAnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0
cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4IDJjM2YwYmEwYThiMTQ3MTQ5NmI5MjdjZDA0NTA0NmUy
NjQxZjg3M2MuLjBkNDE4MzNjNTM2N2VmM2Y0M2RlNWU0YWE5MzliYmNmNTNiMzI3YzUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
c3Ryb2tlUGF0aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMTAsNyArMTAsNyBA
QCBmdW5jdGlvbiBwcmludChtZXNzYWdlLCBjb2xvcikKICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7CiB9CiAKLWZ1bmN0aW9uIHNo
b3VsZEJlQXJvdW5kKGEsIGIpCitmdW5jdGlvbiBzaG91bGRCZUFyb3VuZChhLCBiLCBhcmdkZWx0
YSkKIHsKICAgICB2YXIgZXZhbEE7CiAgICAgdHJ5IHsKQEAgLTE5LDcgKzE5LDExIEBAIGZ1bmN0
aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCiAgICAgICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAg
ICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIwKQorICAgIHZhciBkZWx0YSA9IDIwOworICAg
IGlmICh0eXBlb2YgYXJnZGVsdGEgIT0gInVuZGVmaW5lZCIpCisgICAgICAgIGRlbHRhID0gYXJn
ZGVsdGE7CisKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IGRlbHRhKQogICAgICAgICBw
cmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVuIikKICAgICBlbHNl
CiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAo
YWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTExOSw3ICsxMjMsNyBAQCBkID0g
Y3R4LmdldEltYWdlRGF0YSgzOTgsIDIxMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwot
c2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcy
MDAnLCAyNSk7CiAKIGQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwOCwgMjUwLCAxLCAxKS5kYXRhOwog
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CkBAIC0xMzEsNyArMTM1LDcgQEAgZCA9IGN0eC5nZXRJ
bWFnZURhdGEoNDUwLCAxOTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
IHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJl
QXJvdW5kKCdkWzNdJywgJzE5OScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTk5JywgMjUp
OwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KIGQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDUwNSwgNDUwLCAxLCAxKS5kYXRhOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFkb3dCbHVyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc2hhZG93Qmx1
ci1leHBlY3RlZC50eHQKaW5kZXggMjdkYTlmMDliMDc5ZTNlNDNiNzZkNzRhMDBlMzJhMjgwMjZj
M2FkYS4uODdkZTdhM2FhMzMyMmIyN2MyZTcyYmI4M2Y1Y2Y4NzI1NWQ5OGE1ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zaGFk
b3dCbHVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9j
YW52YXMvY2FudmFzLXNjYWxlLXNoYWRvd0JsdXItZXhwZWN0ZWQudHh0CkBAIC0xMCw3ICsxMCw3
IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgMjU1CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAy
NTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUg
MC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3Vs
ZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCkBAIC0xOCw3
ICsxOCw3IEBAIEZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDUuCiBGQUlMIGRbMF0gc2hvdWxk
IGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFsz
XSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1LgogRkFJ
TCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBp
cyAwCkBAIC01NCw3ICs1NCw3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgMjU1CiBGQUlMIGRbMF0g
c2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLUZB
SUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxkIGJlIDAuIFdhcyA1
LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFdIGlzIDAKIFBBU1Mg
ZFsyXSBpcyAwCkBAIC02Miw3ICs2Miw3IEBAIEZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDUu
CiBGQUlMIGRbMF0gc2hvdWxkIGJlIDAuIFdhcyAyNTUuCiBQQVNTIGRbMV0gaXMgMAogUEFTUyBk
WzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMC4gV2FzIDYuCitGQUlMIGRbM10gc2hvdWxk
IGJlIDAuIFdhcyA1LgogRkFJTCBkWzBdIHNob3VsZCBiZSAwLiBXYXMgMjU1LgogUEFTUyBkWzFd
IGlzIDAKIFBBU1MgZFsyXSBpcyAwCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>