<?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>107444</bug_id>
          
          <creation_ts>2013-01-21 06:33:59 -0800</creation_ts>
          <short_desc>Add error checking into OpenCL version of SVG filters.</short_desc>
          <delta_ts>2013-02-13 04:27:29 -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>SVG</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>
          
          <blocked>70099</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Tamas Czene">tczene</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>fmalita</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>812094</commentid>
    <comment_count>0</comment_count>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2013-01-21 06:33:59 -0800</bug_when>
    <thetext>If there is an error at OpenCL version of SVG filters, then remove all results and go to the software path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812105</commentid>
    <comment_count>1</comment_count>
      <attachid>183774</attachid>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2013-01-21 06:44:46 -0800</bug_when>
    <thetext>Created attachment 183774
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813027</commentid>
    <comment_count>2</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-01-22 07:37:22 -0800</bug_when>
    <thetext>I am extremely unhappy about the sudden profusion of #ifdef OPENCL throughout the platform/graphics/filters/FilterEffect code.

The code required to manage OpenCLHandle, and the use of OpenCL as a backing for images, should all be placed in a platform specific version of ImageBuffer. That will get rid of almost all of the code cluttering FilterEffect, and is in fact the correct way to provide a platform specific back end.

Skia manages to provide hardware support for filters with only 2 methods inside a #if USE(SKIA). CG does it too. There is no obvious reason why you cannot do the same.

With specific regard to this patch, code to fallback to software from a hardware rendering would be useful for all platforms. This patch does not supply such a general approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813055</commentid>
    <comment_count>3</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2013-01-22 08:24:38 -0800</bug_when>
    <thetext>The problem with OpenCL is that it is an extension over the software code path, not a replacement, like the others. The same thing is true for the ImageBuffer, there is only one type allowed for the whole WebKit, so there is no obvious waz to extend it (for me at least). But we would be happy to get rid of these ifdefs if we could find a better a solution (although this patch does not aim for complete refactoring). Please elaborate more about your idea, maybe that could help to cleverly extend the current solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815259</commentid>
    <comment_count>4</comment_count>
      <attachid>184446</attachid>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2013-01-24 02:03:45 -0800</bug_when>
    <thetext>Created attachment 184446
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815428</commentid>
    <comment_count>5</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-01-24 06:41:52 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; The problem with OpenCL is that it is an extension over the software code path, not a replacement, like the others. The same thing is true for the ImageBuffer, there is only one type allowed for the whole WebKit, so there is no obvious waz to extend it (for me at least). But we would be happy to get rid of these ifdefs if we could find a better a solution (although this patch does not aim for complete refactoring). Please elaborate more about your idea, maybe that could help to cleverly extend the current solution.

I interpret this to mean that you want a special form of image buffer for this case (some filter ops) but you do not want all ImageBuffer operations to go through the new code path. You would still like to have the existing software image buffer implementation.

Starting with that premise, I&apos;ll spend some time figuring out a more elegant solution. I&apos;m sure there is one, even if it means we add &quot;FilterImageBuffer&quot; or some such thing.

For Chromium hardware filters we are likely to need a somewhat different but related set of changes. However, the level of abstraction will be different for OpenCL and Skia so it is not clear that a common framework will be possible.

My unhappiness with the #ifdefs should not prevent this change from landing. I will create a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815437</commentid>
    <comment_count>6</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2013-01-24 06:56:11 -0800</bug_when>
    <thetext>&gt; My unhappiness with the #ifdefs should not prevent this change from landing. &gt; I will create a separate bug.

Thank you.

&gt; I interpret this to mean that you want a special form of image buffer for
&gt; this case (some filter ops) but you do not want all ImageBuffer operations to
&gt; go through the new code path. You would still like to have the existing software image buffer implementation.

Exactly. I would not touch the existing ImageBuffer implementation, since it is full of platform specific code. The OpenCL code path is only for filters (at the moment). When OpenCL is enabled and working, it replaces the entire buffer chain with its own buffer type. If any error occures, it fallback to the software code path, and never tries OpenCL again (should not happen in practice).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817579</commentid>
    <comment_count>7</comment_count>
      <attachid>184446</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2013-01-28 00:58:38 -0800</bug_when>
    <thetext>Comment on attachment 184446
proposed patch

Nice patch, but some minor fixes are needed:

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Add error checking into OpenCL version of SVG filters.

Could you add a little more description what this patch does?

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:484
&gt; +    int errorCode;

Is this error code set to 0 if an error occures?

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:515
&gt; +        if (context-&gt;inError())
&gt; +            return;
&gt;          context-&gt;openCLTransformColorSpace(m_openCLImageResult, absolutePaintRect(), m_resultColorSpace, dstColorSpace);

I think this error check should be done by openCLTransformColorSpace.

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:96
&gt; +        deleteResource(m_matrixOperation);

freeResource?

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:112
&gt; +        deleteResource(m_transformColorSpaceKernel);
&gt; +        deleteResource(m_transformColorSpaceProgram);
&gt; +

Extra newline

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:183
&gt; +    m_transformColorSpaceCompileStatus = openclCompileSuccessful;

What about partially completed compilations? I think the 3 states of these status flags are not necessary anymore after we introduced the error status of the context. They should be simply bools, and tell whether the compilation was attempted.

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.h:173
&gt; +    static void deleteResource(cl_kernel);
&gt; +    static void deleteResource(cl_program);

Shouldn&apos;t these accept references? (cl_kernel&amp; and cl_program&amp;) Otherwise the = 0 has no effect. Furthermore these fuctions should be inline.

&gt; Source/WebCore/platform/graphics/gpu/opencl/OpenCLFETurbulence.cpp:176
&gt; +    if (inError())
&gt; +        return;
&gt; +
&gt;      if (m_turbulenceCompileStatus != openclNotCompiledYet)
&gt; -        return m_turbulenceCompileStatus == openclCompileSuccessful;
&gt; +        return;

These two can be combined together, and likely the first one is not needed at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825434</commentid>
    <comment_count>8</comment_count>
      <attachid>186614</attachid>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2013-02-05 06:16:40 -0800</bug_when>
    <thetext>Created attachment 186614
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825435</commentid>
    <comment_count>9</comment_count>
      <attachid>186615</attachid>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2013-02-05 06:19:45 -0800</bug_when>
    <thetext>Created attachment 186615
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826296</commentid>
    <comment_count>10</comment_count>
      <attachid>186615</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2013-02-06 03:29:43 -0800</bug_when>
    <thetext>Comment on attachment 186615
proposed patch

I think we are getting closer!

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

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:489
&gt; +        &amp;clImageFormat, m_absolutePaintRect.width(), m_absolutePaintRect.height(), 0, source, &amp;errorCode);
&gt; +
&gt; +    if (errorCode) {

This newline is unnecessary.

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:163
&gt; +    if (inError() || m_transformColorSpaceCompileStatus != openclNotCompiledYet)
&gt; +        return;

This transformColorSpaceCompileStatus should be a boolean. Name: transformColorSpaceWasCompiled. And the value should be set to true right after this check. The inError() can be checked after after that (this is faster since only one condition needs to be tested in most cases). Or at least swap the two sides of the || operation.

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:177
&gt; +    m_transformColorSpaceCompileStatus = openclCompileSuccessful;

Setting this value case is too late here. See above.

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.h:141
&gt; +                if (m_error)
&gt; +                    return 0;
&gt;                  return handle;

I think this could be shortened to return !m_error ? handle : 0;

&gt; Source/WebCore/platform/graphics/gpu/opencl/OpenCLFEColorMatrix.cpp:78
&gt;      m_colorMatrixProgram = compileProgram(colorMatrixKernelProgram);
&gt; -    if (!m_colorMatrixProgram)
&gt; -        return false;
&gt; +    if (!m_colorMatrixProgram)  {
&gt; +        setInError();
&gt; +        return;
&gt; +    }

There are many such tests in the code. They could be shortened as:
if (!(m_colorMatrixProgram = compileProgram(colorMatrixKernelProgram))) {
    setInError();
    return;
}

Or perhaps I have an even better idea. The setInError() calls could be replaced by an inline function, called checkError

bool isFailed(bool value) {
    if (!value)
        setInError();
}

if (isFailed((m_colorMatrixProgram = compileProgram(colorMatrixKernelProgram))))
    return;

We might add various isFailed methods if gcc expect them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826297</commentid>
    <comment_count>11</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2013-02-06 03:31:47 -0800</bug_when>
    <thetext>&gt; bool isFailed(bool value) {
&gt;     if (!value)
&gt;         setInError();
      return !value;
&gt; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827559</commentid>
    <comment_count>12</comment_count>
      <attachid>187120</attachid>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2013-02-07 08:36:47 -0800</bug_when>
    <thetext>Created attachment 187120
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829746</commentid>
    <comment_count>13</comment_count>
      <attachid>187589</attachid>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2013-02-11 08:53:05 -0800</bug_when>
    <thetext>Created attachment 187589
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829763</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 09:03:54 -0800</bug_when>
    <thetext>Attachment 187589 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/filters/FilterEffect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FilterEffect.h&apos;, u&apos;Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.h&apos;, u&apos;Source/WebCore/platform/graphics/gpu/opencl/OpenCLFEColorMatrix.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gpu/opencl/OpenCLFETurbulence.cpp&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/gpu/opencl/OpenCLFETurbulence.cpp:230:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 8 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>829772</commentid>
    <comment_count>15</comment_count>
      <attachid>187595</attachid>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2013-02-11 09:12:46 -0800</bug_when>
    <thetext>Created attachment 187595
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830643</commentid>
    <comment_count>16</comment_count>
      <attachid>187595</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2013-02-12 00:26:10 -0800</bug_when>
    <thetext>Comment on attachment 187595
proposed patch

Now we are quite close! Only a few more comments:

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

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:284
&gt; +    int errorCode = 0;

Do we really need this variable?

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:293
&gt; +    errorCode = clFinish(context-&gt;commandQueue());
&gt; +    if (context-&gt;isFailed(errorCode))
&gt; +        return 0;

This could be combined into one check, without the errorCode.

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:163
&gt; +    if (m_transformColorSpaceWasCompiled)
&gt; +        return true;

This is incorrect. m_transformColorSpaceWasCompiled can be true, even if there is an error.

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:166
&gt; +    if (inError())
&gt; +        return false;

I think this is the correct form:

if (m_transformColorSpaceWasCompiled || inError())
    return !inError();

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:240
&gt;      errorNumber = clBuildProgram(program, 0, 0, 0, 0, 0);

Same as above. This variable seems unnecessary.

&gt; Source/WebCore/platform/graphics/gpu/opencl/FilterContextOpenCL.h:75
&gt; +    inline bool resourceAllocationIsFailed(bool);

I am thinking about this name for some time. Perhaps isResourceAllocationFailed a better name...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830674</commentid>
    <comment_count>17</comment_count>
      <attachid>187802</attachid>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2013-02-12 00:57:30 -0800</bug_when>
    <thetext>Created attachment 187802
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830678</commentid>
    <comment_count>18</comment_count>
      <attachid>187802</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2013-02-12 01:05:39 -0800</bug_when>
    <thetext>Comment on attachment 187802
proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830700</commentid>
    <comment_count>19</comment_count>
      <attachid>187802</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 01:42:18 -0800</bug_when>
    <thetext>Comment on attachment 187802
proposed patch

Clearing flags on attachment: 187802

Committed r142596: &lt;http://trac.webkit.org/changeset/142596&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830701</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 01:42:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183774</attachid>
            <date>2013-01-21 06:44:46 -0800</date>
            <delta_ts>2013-01-24 02:03:45 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>pecs</filename>
            <type>text/plain</type>
            <size>24011</size>
            <attacher name="Tamas Czene">tczene</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYzdhMmZhLi40Y2ZiMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTMtMDEtMjEgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBBZGQgZXJyb3IgY2hlY2tpbmcgaW50byBPcGVuQ0wgdmVyc2lvbiBvZiBTVkcgZmls
dGVycy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3NDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHlBbGwpOiBBdCBz
b2Z0d2FyZSByZW5kZXJpbmcgdGhpcyBpcyBhIHNpbXBsZSBpbmxpbmUgbWV0aG9kZSwgYnV0IGF0
IE9wZW5DTCByZW5kZXJpbmcgaXQgcmVsZWFzZXMgT3BlbkNMIHRoaW5ncy4KKyAgICAgICAgSWYg
d2UgaGF2ZSBhbiBlcnJvciByZW1vdmUgZmlsdGVyJ3MgcmVzdWx0cyBhbmQgc3RhcnQgc29mdHdh
cmUgcmVuZGVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjbGVhclJlc3Vs
dHNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFn
ZVRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVP
cGVuQ0xJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnRyYW5z
Zm9ybVJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChGaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjphcHBseUFsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckNvbnRleHRPcGVuQ0w6OmZyZWVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpkZXN0cm95Q29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlVHJhbnNmb3Jt
Q29sb3JTcGFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5D
TDo6b3BlbkNMVHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpjb21waWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpkZWxldGVSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmg6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJDb250ZXh0T3BlbkNMOjpzZXRJbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckNvbnRleHRPcGVuQ0w6OmluRXJyb3IpOgorICAgICAgICAoRmlsdGVyQ29udGV4dE9wZW5DTCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6OlJ1bktl
cm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6
OmFkZEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OlJ1
bktlcm5lbDo6cnVuKToKKyAgICAgICAgKFJ1bktlcm5lbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0wpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRVR1cmJ1bGVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5T3BlbkNM
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNv
dXJjZSk6CisKIDIwMTMtMDEtMjEgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFtSZWZhY3RvcmluZ10gcmVuYW1lIFN0eWxlUnVsZUJsb2NrIC0+IFN0eWxl
UnVsZUdyb3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggZDczNTRmNi4uMDQwODc0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcApAQCAtOTcsNiArOTcsMjQgQEAgRmlsdGVyRWZmZWN0KiBGaWx0ZXJFZmZl
Y3Q6OmlucHV0RWZmZWN0KHVuc2lnbmVkIG51bWJlcikgY29uc3QKICAgICByZXR1cm4gbV9pbnB1
dEVmZmVjdHMuYXQobnVtYmVyKS5nZXQoKTsKIH0KIAorI2lmIEVOQUJMRShPUEVOQ0wpCit2b2lk
IEZpbHRlckVmZmVjdDo6YXBwbHlBbGwoKQoreworICAgIGlmIChoYXNSZXN1bHQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250
ZXh0T3BlbkNMOjpjb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpIHsKKyAgICAgICAgYXBwbHko
KTsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5pbkVycm9yKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOworICAgICAgICBjb250ZXh0LT5kZXN0
cm95Q29udGV4dCgpOworICAgIH0KKyAgICAvLyBTb2Z0d2FyZSBjb2RlIHBhdGguCisgICAgYXBw
bHkoKTsKK30KKyNlbmRpZgorCiB2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoKQogewogICAgIGlm
IChoYXNSZXN1bHQoKSkKQEAgLTIyMyw2ICsyNDEsMTggQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNs
ZWFyUmVzdWx0KCkKICNlbmRpZgogfQogCit2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHRz
UmVjdXJzaXZlKCkKK3sKKyAgICAvLyBDbGVhciBhbGwgcmVzdWx0cywgcmVnYXJkbGVzcyB0aGF0
IHRoZSBjdXJyZW50IGVmZmVjdCBoYXMKKyAgICAvLyBhIHJlc3VsdC4gQ2FuIGJlIHVzZWQgaWYg
YW4gZWZmZWN0IGlzIGluIGFuIGVycm9uZW91cyBzdGF0ZS4KKyAgICBpZiAoaGFzUmVzdWx0KCkp
CisgICAgICAgIGNsZWFyUmVzdWx0KCk7CisKKyAgICB1bnNpZ25lZCBzaXplID0gbV9pbnB1dEVm
ZmVjdHMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgIG1faW5wdXRFZmZlY3RzLmF0KGkpLmdldCgpLT5jbGVhclJlc3VsdHNSZWN1cnNpdmUo
KTsKK30KKwogSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6YXNJbWFnZUJ1ZmZlcigpCiB7CiAg
ICAgaWYgKCFoYXNSZXN1bHQoKSkKQEAgLTI0OCwxMyArMjc4LDI3IEBAIEltYWdlQnVmZmVyKiBG
aWx0ZXJFZmZlY3Q6Om9wZW5DTEltYWdlVG9JbWFnZUJ1ZmZlcigpCiAgICAgRmlsdGVyQ29udGV4
dE9wZW5DTCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKICAgICBB
U1NFUlQoY29udGV4dCk7CiAKKyAgICBpZiAoY29udGV4dC0+aW5FcnJvcigpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGludCBlcnJvckNvZGU7CisKICAgICBzaXplX3Qgb3JpZ2luWzNdID0g
eyAwLCAwLCAwIH07CiAgICAgc2l6ZV90IHJlZ2lvblszXSA9IHsgbV9hYnNvbHV0ZVBhaW50UmVj
dC53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpLCAxIH07CiAKICAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGRlc3RpbmF0aW9uUGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBh
aW50UmVjdC5oZWlnaHQoKSAqIDQpOwogCi0gICAgY2xGaW5pc2goY29udGV4dC0+Y29tbWFuZFF1
ZXVlKCkpOwotICAgIGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21tYW5kUXVldWUoKSwg
bV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24sIDAsIDAsIGRlc3Rp
bmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKTsKKyAgICBlcnJvckNvZGUgPSBjbEZp
bmlzaChjb250ZXh0LT5jb21tYW5kUXVldWUoKSk7CisgICAgaWYgKGVycm9yQ29kZSkgeworICAg
ICAgICBjb250ZXh0LT5zZXRJbkVycm9yKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIGVycm9yQ29kZSA9IGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21tYW5kUXVldWUo
KSwgbV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24sIDAsIDAsIGRl
c3RpbmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKTsKKyAgICBpZiAoZXJyb3JDb2Rl
KSB7CisgICAgICAgIGNvbnRleHQtPnNldEluRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQogCiAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9h
YnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KElu
dFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKQEAgLTQyNiwxNSArNDcwLDI3
IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAjaWYgRU5BQkxFKE9QRU5DTCkKIE9wZW5DTEhhbmRsZSBGaWx0ZXJFZmZl
Y3Q6OmNyZWF0ZU9wZW5DTEltYWdlUmVzdWx0KHVpbnQ4X3QqIHNvdXJjZSkKIHsKKyAgICBGaWx0
ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgp
OworICAgIEFTU0VSVChjb250ZXh0KTsKKworICAgIGlmIChjb250ZXh0LT5pbkVycm9yKCkpCisg
ICAgICAgIHJldHVybiAwOworCiAgICAgQVNTRVJUKCFoYXNSZXN1bHQoKSk7CiAgICAgY2xfaW1h
Z2VfZm9ybWF0IGNsSW1hZ2VGb3JtYXQ7CiAgICAgY2xJbWFnZUZvcm1hdC5pbWFnZV9jaGFubmVs
X29yZGVyID0gQ0xfUkdCQTsKICAgICBjbEltYWdlRm9ybWF0LmltYWdlX2NoYW5uZWxfZGF0YV90
eXBlID0gQ0xfVU5PUk1fSU5UODsKIAotICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQg
PSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgQVNTRVJUKGNvbnRleHQpOwor
ICAgIGludCBlcnJvckNvZGU7CisKICAgICBtX29wZW5DTEltYWdlUmVzdWx0ID0gY2xDcmVhdGVJ
bWFnZTJEKGNvbnRleHQtPmRldmljZUNvbnRleHQoKSwgQ0xfTUVNX1JFQURfV1JJVEUgfCAoc291
cmNlID8gQ0xfTUVNX0NPUFlfSE9TVF9QVFIgOiAwKSwKLSAgICAgICAgJmNsSW1hZ2VGb3JtYXQs
IG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQo
KSwgMCwgc291cmNlLCAwKTsKKyAgICAgICAgJmNsSW1hZ2VGb3JtYXQsIG1fYWJzb2x1dGVQYWlu
dFJlY3Qud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSwgMCwgc291cmNlLCAm
ZXJyb3JDb2RlKTsKKworICAgIGlmIChlcnJvckNvZGUpIHsKKyAgICAgICAgY29udGV4dC0+c2V0
SW5FcnJvcigpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICByZXR1cm4gbV9vcGVu
Q0xJbWFnZVJlc3VsdDsKIH0KICNlbmRpZgpAQCAtNDUwLDE3ICs1MDYsMTkgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZSBkc3RDb2xvclNw
YWNlKQogCiAjaWYgRU5BQkxFKE9QRU5DTCkKICAgICBpZiAob3BlbkNMSW1hZ2UoKSkgeworICAg
ICAgICBpZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKKyAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJS
ZXN1bHQuY2xlYXIoKTsKICAgICAgICAgRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZp
bHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwor
ICAgICAgICBpZiAoY29udGV4dC0+aW5FcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjb250ZXh0LT5vcGVuQ0xUcmFuc2Zvcm1Db2xvclNwYWNlKG1fb3BlbkNMSW1hZ2VSZXN1
bHQsIGFic29sdXRlUGFpbnRSZWN0KCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgZHN0Q29sb3JTcGFj
ZSk7Ci0gICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQotICAgICAgICAgICAgbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5jbGVhcigpOwogICAgIH0gZWxzZSB7CiAjZW5kaWYKIAotICAgIC8vIEZJ
WE1FOiBXZSBjYW4gYXZvaWQgdGhpcyBwb3RlbnRpYWxseSB1bm5lY2Vzc2FyeSBJbWFnZUJ1ZmZl
ciBjb252ZXJzaW9uIGJ5IGFkZGluZwotICAgIC8vIGNvbG9yIHNwYWNlIHRyYW5zZm9ybSBzdXBw
b3J0IGZvciB0aGUge3ByZSx1bn1tdWx0aXBsaWVkIGFycmF5cy4KLSAgICBhc0ltYWdlQnVmZmVy
KCktPnRyYW5zZm9ybUNvbG9yU3BhY2UobV9yZXN1bHRDb2xvclNwYWNlLCBkc3RDb2xvclNwYWNl
KTsKKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBhdm9pZCB0aGlzIHBvdGVudGlhbGx5IHVubmVj
ZXNzYXJ5IEltYWdlQnVmZmVyIGNvbnZlcnNpb24gYnkgYWRkaW5nCisgICAgICAgIC8vIGNvbG9y
IHNwYWNlIHRyYW5zZm9ybSBzdXBwb3J0IGZvciB0aGUge3ByZSx1bn1tdWx0aXBsaWVkIGFycmF5
cy4KKyAgICAgICAgYXNJbWFnZUJ1ZmZlcigpLT50cmFuc2Zvcm1Db2xvclNwYWNlKG1fcmVzdWx0
Q29sb3JTcGFjZSwgZHN0Q29sb3JTcGFjZSk7CiAKICNpZiBFTkFCTEUoT1BFTkNMKQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oCmluZGV4IDAxZDg1YTkuLmYwZmY4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAt
NjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0KCk7CiAKICAg
ICB2b2lkIGNsZWFyUmVzdWx0KCk7CisgICAgdm9pZCBjbGVhclJlc3VsdHNSZWN1cnNpdmUoKTsK
KwogICAgIEltYWdlQnVmZmVyKiBhc0ltYWdlQnVmZmVyKCk7CiAgICAgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CiAgICAg
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3Qg
SW50UmVjdCYpOwpAQCAtMTA5LDcgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXhF
ZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbWF4RWZmZWN0UmVjdCkgeyBtX21heEVmZmVjdFJl
Y3QgPSBtYXhFZmZlY3RSZWN0OyB9IAogCiAgICAgdm9pZCBhcHBseSgpOwotICAgIAorI2lmIEVO
QUJMRShPUEVOQ0wpCisgICAgdm9pZCBhcHBseUFsbCgpOworI2Vsc2UKKyAgICBpbmxpbmUgdm9p
ZCBhcHBseUFsbCgpIHsgYXBwbHkoKTsgfQorI2VuZGlmCisKICAgICAvLyBDb3JyZWN0IGFueSBp
bnZhbGlkIHBpeGVscywgaWYgbmVjZXNzYXJ5LCBpbiB0aGUgcmVzdWx0IG9mIGEgZmlsdGVyIG9w
ZXJhdGlvbi4KICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGVuc3VyZSB2YWxpZCBwaXhl
bCB2YWx1ZXMgb24gZmlsdGVyIGlucHV0cyBhbmQgdGhlIGZpbmFsIHJlc3VsdC4KICAgICAvLyBP
bmx5IHRoZSBhcml0aG1ldGljIGNvbXBvc2l0ZSBmaWx0ZXIgZXZlciBuZWVkcyB0byBwZXJmb3Jt
IGNvcnJlY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcAppbmRleCA0
YzMwNTk2Li43ZGI2MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5jcHAK
QEAgLTg4LDYgKzg4LDQ3IEBAIEZpbHRlckNvbnRleHRPcGVuQ0wqIEZpbHRlckNvbnRleHRPcGVu
Q0w6OmNvbnRleHQoKQogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAKK3ZvaWQgRmlsdGVyQ29u
dGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlcygpCit7CisgICAgY2xGaW5pc2gobV9jb21tYW5kUXVl
dWUpOworCisgICAgaWYgKG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzICE9IG9wZW5jbE5vdENv
bXBpbGVkWWV0KSB7CisgICAgICAgIGRlbGV0ZVJlc291cmNlKG1fbWF0cml4T3BlcmF0aW9uKTsK
KyAgICAgICAgZGVsZXRlUmVzb3VyY2UobV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbik7
CisgICAgICAgIGRlbGV0ZVJlc291cmNlKG1fbHVtaW5hbmNlT3BlcmF0aW9uKTsKKyAgICAgICAg
ZGVsZXRlUmVzb3VyY2UobV9jb2xvck1hdHJpeFByb2dyYW0pOworICAgIH0KKyAgICBtX2NvbG9y
TWF0cml4Q29tcGlsZVN0YXR1cyA9IG9wZW5jbE5vdENvbXBpbGVkWWV0OworCisgICAgaWYgKG1f
dHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQpIHsKKyAgICAg
ICAgZGVsZXRlUmVzb3VyY2UobV90dXJidWxlbmNlT3BlcmF0aW9uKTsKKyAgICAgICAgZGVsZXRl
UmVzb3VyY2UobV90dXJidWxlbmNlUHJvZ3JhbSk7CisgICAgfSAgICAKKyAgICBtX3R1cmJ1bGVu
Y2VDb21waWxlU3RhdHVzID0gb3BlbmNsTm90Q29tcGlsZWRZZXQ7CisKKyAgICBpZiAobV90cmFu
c2Zvcm1Db2xvclNwYWNlQ29tcGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkgewor
ICAgICAgICBkZWxldGVSZXNvdXJjZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwpOworICAg
ICAgICBkZWxldGVSZXNvdXJjZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKTsKKworICAg
IH0KKyAgICBtX3RyYW5zZm9ybUNvbG9yU3BhY2VDb21waWxlU3RhdHVzID0gb3BlbmNsTm90Q29t
cGlsZWRZZXQ7Cit9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZGVzdHJveUNvbnRleHQo
KQoreworICAgIGZyZWVSZXNvdXJjZXMoKTsKKworICAgIGlmIChtX2NvbW1hbmRRdWV1ZSkKKyAg
ICAgICAgY2xSZWxlYXNlQ29tbWFuZFF1ZXVlKG1fY29tbWFuZFF1ZXVlKTsKKyAgICBtX2NvbW1h
bmRRdWV1ZSA9IDA7CisKKyAgICBpZiAobV9kZXZpY2VDb250ZXh0KQorICAgICAgICBjbFJlbGVh
c2VDb250ZXh0KG1fZGV2aWNlQ29udGV4dCk7CisgICAgbV9kZXZpY2VDb250ZXh0ID0gMDsKKwor
ICAgIG1fY29udGV4dCA9IDA7Cit9CisKIE9wZW5DTEhhbmRsZSBGaWx0ZXJDb250ZXh0T3BlbkNM
OjpjcmVhdGVPcGVuQ0xJbWFnZShJbnRTaXplIHBhaW50U2l6ZSkKIHsKICAgICBGaWx0ZXJDb250
ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwpAQCAt
MTE3LDYgKzE1OCwzMSBAQCBfX2tlcm5lbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoX19yZWFk
X29ubHkgaW1hZ2UyZF90IHNvdXJjZSwgX193cml0ZV9vbmx5IGltYQogfQogKTsgLy8gRW5kIG9m
IE9wZW5DTCBrZXJuZWxzCiAKK2lubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBp
bGVUcmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgpCit7CisgICAgaWYgKGluRXJyb3IoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdHJhbnNmb3JtQ29sb3JTcGFjZUNvbXBpbGVTdGF0
dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdHJh
bnNmb3JtQ29sb3JTcGFjZUNvbXBpbGVTdGF0dXMgPSBvcGVuY2xDb21waWxlRmFpbGVkOworCisg
ICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSA9IGNvbXBpbGVQcm9ncmFtKHRyYW5zZm9y
bUNvbG9yU3BhY2VLZXJuZWxQcm9ncmFtKTsKKyAgICBpZiAoIW1fdHJhbnNmb3JtQ29sb3JTcGFj
ZVByb2dyYW0pIHsKKyAgICAgICAgc2V0SW5FcnJvcigpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsID0ga2VybmVsQnlOYW1lKG1fdHJh
bnNmb3JtQ29sb3JTcGFjZVByb2dyYW0sICJ0cmFuc2Zvcm1Db2xvclNwYWNlIik7CisgICAgaWYg
KCFtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwpIHsKKyAgICAgICAgc2V0SW5FcnJvcigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlQ29tcGls
ZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsOworfQorCiB2b2lkIEZpbHRlckNvbnRl
eHRPcGVuQ0w6Om9wZW5DTFRyYW5zZm9ybUNvbG9yU3BhY2UoT3BlbkNMSGFuZGxlJiBzb3VyY2Us
IEludFJlY3Qgc291cmNlU2l6ZSwgQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNl
IGRzdENvbG9yU3BhY2UpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPcGVuQ0xIYW5kbGUs
IGRldmljZVJnYkxVVCwgKCkpOwpAQCAtMTI5LDE5ICsxOTUsMTEgQEAgdm9pZCBGaWx0ZXJDb250
ZXh0T3BlbkNMOjpvcGVuQ0xUcmFuc2Zvcm1Db2xvclNwYWNlKE9wZW5DTEhhbmRsZSYgc291cmNl
LCBJbnRSZWMKICAgICAgICAgfHwgKGRzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZUxpbmVhclJH
QiAmJiBkc3RDb2xvclNwYWNlICE9IENvbG9yU3BhY2VEZXZpY2VSR0IpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9w
ZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBjb21waWxlVHJhbnNm
b3JtQ29sb3JTcGFjZVByb2dyYW0oKTsKIAotICAgIE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiA9
IGNvbnRleHQtPmNyZWF0ZU9wZW5DTEltYWdlKHNvdXJjZVNpemUuc2l6ZSgpKTsKLQotICAgIGlm
ICghbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSkgewotICAgICAgICBtX3RyYW5zZm9ybUNv
bG9yU3BhY2VQcm9ncmFtID0gY29tcGlsZVByb2dyYW0odHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5l
bFByb2dyYW0pOwotICAgICAgICBBU1NFUlQobV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSk7
Ci0gICAgICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5lbCA9IGtlcm5lbEJ5TmFtZShtX3Ry
YW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtLCAidHJhbnNmb3JtQ29sb3JTcGFjZSIpOwotICAgICAg
ICBBU1NFUlQobV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsKTsKLSAgICB9CisgICAgT3BlbkNM
SGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3BlbkNMSW1hZ2Uoc291cmNlU2l6ZS5zaXplKCkp
OwogCi0gICAgUnVuS2VybmVsIGtlcm5lbChjb250ZXh0LCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VL
ZXJuZWwsIHNvdXJjZVNpemUud2lkdGgoKSwgc291cmNlU2l6ZS5oZWlnaHQoKSk7CisgICAgUnVu
S2VybmVsIGtlcm5lbCh0aGlzLCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwsIHNvdXJjZVNp
emUud2lkdGgoKSwgc291cmNlU2l6ZS5oZWlnaHQoKSk7CiAgICAga2VybmVsLmFkZEFyZ3VtZW50
KHNvdXJjZSk7CiAgICAga2VybmVsLmFkZEFyZ3VtZW50KGRlc3RpbmF0aW9uKTsKIApAQCAtMTgz
LDE2ICsyNDEsMjkgQEAgY2xfcHJvZ3JhbSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlUHJv
Z3JhbShjb25zdCBjaGFyKiBzb3VyY2UpCiAgICAgY2xfcHJvZ3JhbSBwcm9ncmFtOwogICAgIGNs
X2ludCBlcnJvck51bWJlcjsKIAotICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBG
aWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotCi0g
ICAgcHJvZ3JhbSA9IGNsQ3JlYXRlUHJvZ3JhbVdpdGhTb3VyY2UoY29udGV4dC0+bV9kZXZpY2VD
b250ZXh0LCAxLCAoY29uc3QgY2hhcioqKSAmc291cmNlLCAwLCAwKTsKKyAgICBwcm9ncmFtID0g
Y2xDcmVhdGVQcm9ncmFtV2l0aFNvdXJjZShtX2RldmljZUNvbnRleHQsIDEsIChjb25zdCBjaGFy
KiopICZzb3VyY2UsIDAsIDApOwogICAgIGVycm9yTnVtYmVyID0gY2xCdWlsZFByb2dyYW0ocHJv
Z3JhbSwgMCwgMCwgMCwgMCwgMCk7CiAgICAgaWYgKGVycm9yTnVtYmVyKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIHJldHVybiBwcm9ncmFtOwogfQorCit2b2lkIEZpbHRlckNvbnRleHRPcGVu
Q0w6OmRlbGV0ZVJlc291cmNlKGNsX2tlcm5lbCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSkg
eworICAgICAgICBjbFJlbGVhc2VLZXJuZWwoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gMDsK
KyAgICB9Cit9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZGVsZXRlUmVzb3VyY2UoY2xf
cHJvZ3JhbSBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSkgeworICAgICAgICBjbFJlbGVhc2VQ
cm9ncmFtKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IDA7CisgICAgfQorfQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmgK
aW5kZXggYjE4OThiNi4uMDM0ZmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNM
LmgKQEAgLTY3LDExICs2NywxOSBAQCBwdWJsaWM6CiAgICAgY2xfY29udGV4dCBkZXZpY2VDb250
ZXh0KCkgeyByZXR1cm4gbV9kZXZpY2VDb250ZXh0OyB9CiAgICAgY2xfY29tbWFuZF9xdWV1ZSBj
b21tYW5kUXVldWUoKSB7IHJldHVybiBtX2NvbW1hbmRRdWV1ZTsgfQogCisgICAgdm9pZCBzZXRJ
bkVycm9yKGJvb2wgZXJyb3JDb2RlID0gdHJ1ZSkgeyBtX2luRXJyb3IgPSBlcnJvckNvZGU7IH0K
KyAgICBib29sIGluRXJyb3IoKSB7IHJldHVybiBtX2luRXJyb3I7IH0KKworICAgIHZvaWQgZnJl
ZVJlc291cmNlcygpOworICAgIHZvaWQgZGVzdHJveUNvbnRleHQoKTsKKwogICAgIE9wZW5DTEhh
bmRsZSBjcmVhdGVPcGVuQ0xJbWFnZShJbnRTaXplKTsKKworICAgIGlubGluZSB2b2lkIGNvbXBp
bGVUcmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgpOwogICAgIHZvaWQgb3BlbkNMVHJhbnNmb3Jt
Q29sb3JTcGFjZShPcGVuQ0xIYW5kbGUmLCBJbnRSZWN0LCBDb2xvclNwYWNlLCBDb2xvclNwYWNl
KTsKIAotICAgIGlubGluZSBib29sIGNvbXBpbGVGRUNvbG9yTWF0cml4KCk7Ci0gICAgaW5saW5l
IGJvb2wgY29tcGlsZUZFVHVyYnVsZW5jZSgpOworICAgIGlubGluZSB2b2lkIGNvbXBpbGVGRUNv
bG9yTWF0cml4KCk7CisgICAgaW5saW5lIHZvaWQgY29tcGlsZUZFVHVyYnVsZW5jZSgpOwogCiAg
ICAgaW5saW5lIHZvaWQgYXBwbHlGRUNvbG9yTWF0cml4KE9wZW5DTEhhbmRsZSwgSW50U2l6ZSwg
T3BlbkNMSGFuZGxlLCBJbnRQb2ludCwgZmxvYXQqLCBpbnQpOwogICAgIGlubGluZSB2b2lkIGFw
cGx5RkVUdXJidWxlbmNlKE9wZW5DTEhhbmRsZSwgSW50U2l6ZSwgaW50LCB2b2lkKiwgdm9pZCos
IHZvaWQqLCB2b2lkKiwgdm9pZCosCkBAIC04NCw3ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBSdW5LZXJuZWwoRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCwgY2xfa2VybmVsIGtl
cm5lbCwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQogICAgICAgICAgICAgICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgICAgICAgICAgICAgLCBtX2tlcm5lbChrZXJuZWwpCi0gICAg
ICAgICAgICAgICAgLCBpbmRleCgwKQorICAgICAgICAgICAgICAgICwgbV9pbmRleCgwKQorICAg
ICAgICAgICAgICAgICwgbV9lcnJvcihjb250ZXh0LT5pbkVycm9yKCkpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxTaXplWzBdID0gd2lkdGg7CiAgICAgICAgICAgICAg
ICAgbV9nbG9iYWxTaXplWzFdID0gaGVpZ2h0OwpAQCAtOTIsNDIgKzEwMSw2MiBAQCBwcml2YXRl
OgogCiAgICAgICAgICAgICB2b2lkIGFkZEFyZ3VtZW50KE9wZW5DTEhhbmRsZSBoYW5kbGUpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIGlu
ZGV4KyssIHNpemVvZihPcGVuQ0xIYW5kbGUpLCBoYW5kbGUuaGFuZGxlQWRkcmVzcygpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3Ig
PSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRleCsrLCBzaXplb2YoT3BlbkNMSGFuZGxl
KSwgaGFuZGxlLmhhbmRsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IHZvaWQgYWRkQXJndW1lbnQoY2xfaW50IHZhbHVlKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoY2xfaW50KSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJnZhbHVlKSk7CisgICAgICAgICAgICAgICAgaWYgKCFt
X2Vycm9yKQorICAgICAgICAgICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxBcmcobV9r
ZXJuZWwsIG1faW5kZXgrKywgc2l6ZW9mKGNsX2ludCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCZ2YWx1ZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2b2lkIGFkZEFyZ3VtZW50
KGNsX2Zsb2F0IHZhbHVlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsU2V0S2Vy
bmVsQXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoY2xfZmxvYXQpLCByZWludGVycHJldF9j
YXN0PHZvaWQqPigmdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAg
ICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRl
eCsrLCBzaXplb2YoY2xfZmxvYXQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigmdmFsdWUpKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdm9pZCBhZGRBcmd1bWVudChjbF9zYW1wbGVy
IGhhbmRsZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjbFNldEtlcm5lbEFyZyht
X2tlcm5lbCwgaW5kZXgrKywgc2l6ZW9mKGNsX3NhbXBsZXIpLCByZWludGVycHJldF9jYXN0PHZv
aWQqPigmaGFuZGxlKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Vycm9yKQorICAgICAgICAg
ICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIG1faW5kZXgrKywg
c2l6ZW9mKGNsX3NhbXBsZXIpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigmaGFuZGxlKSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIE9wZW5DTEhhbmRsZSBhZGRBcmd1bWVudCh2b2lk
KiBidWZmZXIsIGludCBzaXplKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE9wZW5D
TEhhbmRsZSBoYW5kbGUoY2xDcmVhdGVCdWZmZXIobV9jb250ZXh0LT5kZXZpY2VDb250ZXh0KCks
IENMX01FTV9SRUFEX09OTFksIHNpemUsIDAsIDApKTsKLSAgICAgICAgICAgICAgICBjbEVucXVl
dWVXcml0ZUJ1ZmZlcihtX2NvbnRleHQtPmNvbW1hbmRRdWV1ZSgpLCBoYW5kbGUsIENMX1RSVUUs
IDAsIHNpemUsIGJ1ZmZlciwgMCwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgY2xTZXRLZXJuZWxB
cmcobV9rZXJuZWwsIGluZGV4KyssIHNpemVvZihPcGVuQ0xIYW5kbGUpLCBoYW5kbGUuaGFuZGxl
QWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJvcikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgT3BlbkNMSGFuZGxlIGhhbmRsZShjbENy
ZWF0ZUJ1ZmZlcihtX2NvbnRleHQtPmRldmljZUNvbnRleHQoKSwgQ0xfTUVNX1JFQURfT05MWSwg
c2l6ZSwgMCwgJm1fZXJyb3IpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsRW5x
dWV1ZVdyaXRlQnVmZmVyKG1fY29udGV4dC0+Y29tbWFuZFF1ZXVlKCksIGhhbmRsZSwgQ0xfVFJV
RSwgMCwgc2l6ZSwgYnVmZmVyLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJv
cikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgbV9lcnJv
ciA9IGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBtX2luZGV4KyssIHNpemVvZihPcGVuQ0xIYW5k
bGUpLCBoYW5kbGUuaGFuZGxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJv
cikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGhhbmRsZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdm9pZCBydW4oKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNsRmluaXNoKG1fY29udGV4dC0+bV9jb21tYW5kUXVl
dWUpOwotICAgICAgICAgICAgICAgIGNsRW5xdWV1ZU5EUmFuZ2VLZXJuZWwobV9jb250ZXh0LT5t
X2NvbW1hbmRRdWV1ZSwgbV9rZXJuZWwsIDIsIDAsIG1fZ2xvYmFsU2l6ZSwgMCwgMCwgMCwgMCk7
CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9j
b250ZXh0LT5zZXRJbkVycm9yKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsRmluaXNoKG1fY29udGV4
dC0+bV9jb21tYW5kUXVldWUpOworICAgICAgICAgICAgICAgIGlmICghbV9lcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsRW5xdWV1ZU5EUmFuZ2VLZXJuZWwobV9jb250ZXh0
LT5tX2NvbW1hbmRRdWV1ZSwgbV9rZXJuZWwsIDIsIDAsIG1fZ2xvYmFsU2l6ZSwgMCwgMCwgMCwg
MCk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIG1f
Y29udGV4dC0+c2V0SW5FcnJvcigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBGaWx0
ZXJDb250ZXh0T3BlbkNMKiBtX2NvbnRleHQ7CiAgICAgICAgICAgICBjbF9rZXJuZWwgbV9rZXJu
ZWw7CiAgICAgICAgICAgICBzaXplX3QgbV9nbG9iYWxTaXplWzJdOwotICAgICAgICAgICAgaW50
IGluZGV4OworICAgICAgICAgICAgaW50IG1faW5kZXg7CisgICAgICAgICAgICBpbnQgbV9lcnJv
cjsKICAgICAgICAgfTsKIAogICAgIGVudW0gT3BlbkNMQ29tcGlsZVN0YXR1cyB7CkBAIC0xMzYs
MTYgKzE2NSwyMSBAQCBwcml2YXRlOgogICAgICAgICBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bAog
ICAgIH07CiAKLSAgICBzdGF0aWMgY2xfcHJvZ3JhbSBjb21waWxlUHJvZ3JhbShjb25zdCBjaGFy
Kik7CisgICAgY2xfcHJvZ3JhbSBjb21waWxlUHJvZ3JhbShjb25zdCBjaGFyKik7CiAgICAgc3Rh
dGljIGlubGluZSBjbF9rZXJuZWwga2VybmVsQnlOYW1lKGNsX3Byb2dyYW0gcHJvZ3JhbSwgY29u
c3QgY2hhciogbmFtZSkgeyByZXR1cm4gY2xDcmVhdGVLZXJuZWwocHJvZ3JhbSwgbmFtZSwgMCk7
IH0KIAorICAgIHN0YXRpYyB2b2lkIGRlbGV0ZVJlc291cmNlKGNsX2tlcm5lbCk7CisgICAgc3Rh
dGljIHZvaWQgZGVsZXRlUmVzb3VyY2UoY2xfcHJvZ3JhbSk7CisKICAgICBzdGF0aWMgRmlsdGVy
Q29udGV4dE9wZW5DTCogbV9jb250ZXh0OwogICAgIHN0YXRpYyBpbnQgbV9hbHJlYWR5SW5pdGlh
bGl6ZWQ7CisgICAgYm9vbCBtX2luRXJyb3I7CiAKICAgICBjbF9kZXZpY2VfaWQgbV9kZXZpY2VJ
ZDsKICAgICBjbF9jb250ZXh0IG1fZGV2aWNlQ29udGV4dDsKICAgICBjbF9jb21tYW5kX3F1ZXVl
IG1fY29tbWFuZFF1ZXVlOwogCisgICAgT3BlbkNMQ29tcGlsZVN0YXR1cyBtX3RyYW5zZm9ybUNv
bG9yU3BhY2VDb21waWxlU3RhdHVzOwogICAgIGNsX3Byb2dyYW0gbV90cmFuc2Zvcm1Db2xvclNw
YWNlUHJvZ3JhbTsKICAgICBjbF9rZXJuZWwgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNs
L09wZW5DTEZFQ29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcAppbmRleCA0N2M4OGM2Li5jYmZl
NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3Bl
bmNsL09wZW5DTEZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVDb2xvck1hdHJpeC5jcHAKQEAgLTY2LDI4ICs2
NiwzMiBAQCBfX2tlcm5lbCB2b2lkIGx1bWluYW5jZShfX3dyaXRlX29ubHkgaW1hZ2UyZF90IGRl
c3RpbmF0aW9uLCBfX3JlYWRfb25seSBpbWFnZTJkXwogfQogKTsgLy8gRW5kIG9mIE9wZW5DTCBr
ZXJuZWxzCiAKLWlubGluZSBib29sIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9y
TWF0cml4KCkKK2lubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9y
TWF0cml4KCkKIHsKKyAgICBpZiAoaW5FcnJvcigpKQorICAgICAgICByZXR1cm47CisKICAgICBp
ZiAobV9jb2xvck1hdHJpeENvbXBpbGVTdGF0dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQpCi0g
ICAgICAgIHJldHVybiBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyA9PSBvcGVuY2xDb21waWxl
U3VjY2Vzc2Z1bDsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb2xvck1hdHJpeENvbXBpbGVT
dGF0dXMgPSBvcGVuY2xDb21waWxlRmFpbGVkOworCiAgICAgbV9jb2xvck1hdHJpeFByb2dyYW0g
PSBjb21waWxlUHJvZ3JhbShjb2xvck1hdHJpeEtlcm5lbFByb2dyYW0pOwotICAgIGlmICghbV9j
b2xvck1hdHJpeFByb2dyYW0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fY29s
b3JNYXRyaXhQcm9ncmFtKSAgeworICAgICAgICBzZXRJbkVycm9yKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICBtX21hdHJpeE9wZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZShtX2NvbG9y
TWF0cml4UHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIGlmICghbV9tYXRyaXhPcGVyYXRpb24pCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3NhdHVyYXRlQW5kSHVlUm90YXRlT3BlcmF0aW9u
ID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9ncmFtLCAic2F0dXJhdGVBbmRIdWVSb3Rh
dGUiKTsKLSAgICBpZiAoIW1fc2F0dXJhdGVBbmRIdWVSb3RhdGVPcGVyYXRpb24pCi0gICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBtX2x1bWluYW5jZU9wZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZSht
X2NvbG9yTWF0cml4UHJvZ3JhbSwgImx1bWluYW5jZSIpOwotICAgIGlmICghbV9sdW1pbmFuY2VP
cGVyYXRpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9tYXRyaXhPcGVy
YXRpb24gfHwgIW1fc2F0dXJhdGVBbmRIdWVSb3RhdGVPcGVyYXRpb24gfHwgIW1fbHVtaW5hbmNl
T3BlcmF0aW9uKSB7CisgICAgICAgIHNldEluRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzID0gb3BlbmNsQ29tcGlsZVN1Y2Nl
c3NmdWw7Ci0gICAgcmV0dXJuIG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsOwogfQogCiBpbmxpbmUg
dm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjphcHBseUZFQ29sb3JNYXRyaXgoT3BlbkNMSGFuZGxl
IGRlc3RpbmF0aW9uLCBJbnRTaXplIGRlc3RpbmF0aW9uU2l6ZSwgT3BlbkNMSGFuZGxlIHNvdXJj
ZSwgSW50UG9pbnQgcmVsYXRpdmVTb3VyY2VMb2NhdGlvbiwgZmxvYXQqIHZhbHVlcywgaW50IHR5
cGUpCkBAIC0xMzAsOSArMTM0LDE1IEBAIGlubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6
OmFwcGx5RkVDb2xvck1hdHJpeChPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24sIEluCiBib29sIEZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0woKQogewogICAgIEZpbHRlckNvbnRleHRP
cGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgaWYg
KCFjb250ZXh0IHx8ICFjb250ZXh0LT5jb21waWxlRkVDb2xvck1hdHJpeCgpKQorCisgICAgaWYg
KCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBjb250ZXh0LT5jb21waWxl
RkVDb2xvck1hdHJpeCgpOworCisgICAgaWYgKGNvbnRleHQtPmluRXJyb3IoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAg
ICAgT3BlbkNMSGFuZGxlIHNvdXJjZSA9IGluLT5vcGVuQ0xJbWFnZSgpOwogICAgIE9wZW5DTEhh
bmRsZSBkZXN0aW5hdGlvbiA9IGNyZWF0ZU9wZW5DTEltYWdlUmVzdWx0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFVHVy
YnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNs
L09wZW5DTEZFVHVyYnVsZW5jZS5jcHAKaW5kZXggMmM5MWI0Ny4uMmQxNGVhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRVR1
cmJ1bGVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9v
cGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcApAQCAtMTY3LDIxICsxNjcsMjkgQEAgX19rZXJu
ZWwgdm9pZCBUdXJidWxlbmNlKF9fd3JpdGVfb25seSBpbWFnZTJkX3QgZGVzdGluYXRpb24sIF9f
Y29uc3RhbnQgZmxvYXQgKnQKIH0KICk7IC8vIEVuZCBvZiBPcGVuQ0wga2VybmVscwogCi1pbmxp
bmUgYm9vbCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlRkVUdXJidWxlbmNlKCkKK2lubGlu
ZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRVR1cmJ1bGVuY2UoKQogeworICAg
IGlmIChpbkVycm9yKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3R1cmJ1bGVuY2VD
b21waWxlU3RhdHVzICE9IG9wZW5jbE5vdENvbXBpbGVkWWV0KQotICAgICAgICByZXR1cm4gbV90
dXJidWxlbmNlQ29tcGlsZVN0YXR1cyA9PSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV90dXJidWxlbmNlQ29tcGlsZVN0YXR1cyA9IG9wZW5jbENvbXBp
bGVGYWlsZWQ7CisKICAgICBtX3R1cmJ1bGVuY2VQcm9ncmFtID0gY29tcGlsZVByb2dyYW0odHVy
YnVsZW5jZUtlcm5lbFByb2dyYW0pOwotICAgIGlmICghbV90dXJidWxlbmNlUHJvZ3JhbSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV90dXJidWxlbmNlUHJvZ3JhbSkgeworICAg
ICAgICBzZXRJbkVycm9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX3R1cmJ1
bGVuY2VPcGVyYXRpb24gPSBrZXJuZWxCeU5hbWUobV90dXJidWxlbmNlUHJvZ3JhbSwgIlR1cmJ1
bGVuY2UiKTsKLSAgICBpZiAoIW1fdHVyYnVsZW5jZU9wZXJhdGlvbikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghbV90dXJidWxlbmNlT3BlcmF0aW9uKSB7CisgICAgICAgIHNldElu
RXJyb3IoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fdHVyYnVsZW5jZUNvbXBp
bGVTdGF0dXMgPSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKLSAgICByZXR1cm4gb3BlbmNsQ29t
cGlsZVN1Y2Nlc3NmdWw7CiB9CiAKIGlubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFw
cGx5RkVUdXJidWxlbmNlKE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiwKQEAgLTIyNCw5ICsyMzIs
MTQgQEAgaW5saW5lIHZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6YXBwbHlGRVR1cmJ1bGVuY2Uo
T3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uLAogYm9vbCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBw
bHlPcGVuQ0woKQogewogICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJD
b250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5j
b21waWxlRkVUdXJidWxlbmNlKCkpCisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICBjb250ZXh0LT5jb21waWxlRkVUdXJidWxlbmNlKCk7CisKKyAgICBpZiAo
Y29udGV4dC0+aW5FcnJvcigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIE9wZW5DTEhh
bmRsZSBkZXN0aW5hdGlvbiA9IGNyZWF0ZU9wZW5DTEltYWdlUmVzdWx0KCk7CiAKICAgICBQYWlu
dGluZ0RhdGEgcGFpbnRpbmdEYXRhKG1fc2VlZCwgcm91bmRlZEludFNpemUoZmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCkuc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDI5ODNjNGYuLjk4
OTkwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IEdyYXBoaWNzQ28KICAgICAgICAgLy8gQWx3YXlzIHRydWUgaWYgZmlsdGVyRGF0YSBpcyBqdXN0
IGJ1aWx0IChmaWx0ZXJEYXRhLT5zdGF0ZSA9PSBGaWx0ZXJEYXRhOjpCdWlsdCkuCiAgICAgICAg
IGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAgIGZpbHRlckRhdGEt
PnN0YXRlID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT5h
cHBseSgpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHlBbGwoKTsKICAgICAgICAgICAg
IGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwogICAgICAgICAgICAg
bGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184446</attachid>
            <date>2013-01-24 02:03:45 -0800</date>
            <delta_ts>2013-02-05 06:16:40 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>cucc</filename>
            <type>text/plain</type>
            <size>24294</size>
            <attacher name="Tamas Czene">tczene</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYzdhMmZhLi40Y2ZiMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTMtMDEtMjEgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBBZGQgZXJyb3IgY2hlY2tpbmcgaW50byBPcGVuQ0wgdmVyc2lvbiBvZiBTVkcgZmls
dGVycy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3NDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHlBbGwpOiBBdCBz
b2Z0d2FyZSByZW5kZXJpbmcgdGhpcyBpcyBhIHNpbXBsZSBpbmxpbmUgbWV0aG9kZSwgYnV0IGF0
IE9wZW5DTCByZW5kZXJpbmcgaXQgcmVsZWFzZXMgT3BlbkNMIHRoaW5ncy4KKyAgICAgICAgSWYg
d2UgaGF2ZSBhbiBlcnJvciByZW1vdmUgZmlsdGVyJ3MgcmVzdWx0cyBhbmQgc3RhcnQgc29mdHdh
cmUgcmVuZGVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjbGVhclJlc3Vs
dHNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFn
ZVRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVP
cGVuQ0xJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnRyYW5z
Zm9ybVJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChGaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjphcHBseUFsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckNvbnRleHRPcGVuQ0w6OmZyZWVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpkZXN0cm95Q29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlVHJhbnNmb3Jt
Q29sb3JTcGFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5D
TDo6b3BlbkNMVHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpjb21waWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpkZWxldGVSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmg6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJDb250ZXh0T3BlbkNMOjpzZXRJbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckNvbnRleHRPcGVuQ0w6OmluRXJyb3IpOgorICAgICAgICAoRmlsdGVyQ29udGV4dE9wZW5DTCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6OlJ1bktl
cm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6
OmFkZEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OlJ1
bktlcm5lbDo6cnVuKToKKyAgICAgICAgKFJ1bktlcm5lbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0wpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRVR1cmJ1bGVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5T3BlbkNM
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNv
dXJjZSk6CisKIDIwMTMtMDEtMjEgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFtSZWZhY3RvcmluZ10gcmVuYW1lIFN0eWxlUnVsZUJsb2NrIC0+IFN0eWxl
UnVsZUdyb3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggZDczNTRmNi4uMDQwODc0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcApAQCAtOTcsNiArOTcsMjQgQEAgRmlsdGVyRWZmZWN0KiBGaWx0ZXJFZmZl
Y3Q6OmlucHV0RWZmZWN0KHVuc2lnbmVkIG51bWJlcikgY29uc3QKICAgICByZXR1cm4gbV9pbnB1
dEVmZmVjdHMuYXQobnVtYmVyKS5nZXQoKTsKIH0KIAorI2lmIEVOQUJMRShPUEVOQ0wpCit2b2lk
IEZpbHRlckVmZmVjdDo6YXBwbHlBbGwoKQoreworICAgIGlmIChoYXNSZXN1bHQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250
ZXh0T3BlbkNMOjpjb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpIHsKKyAgICAgICAgYXBwbHko
KTsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5pbkVycm9yKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOworICAgICAgICBjb250ZXh0LT5kZXN0
cm95Q29udGV4dCgpOworICAgIH0KKyAgICAvLyBTb2Z0d2FyZSBjb2RlIHBhdGguCisgICAgYXBw
bHkoKTsKK30KKyNlbmRpZgorCiB2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoKQogewogICAgIGlm
IChoYXNSZXN1bHQoKSkKQEAgLTIyMyw2ICsyNDEsMTggQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNs
ZWFyUmVzdWx0KCkKICNlbmRpZgogfQogCit2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHRz
UmVjdXJzaXZlKCkKK3sKKyAgICAvLyBDbGVhciBhbGwgcmVzdWx0cywgcmVnYXJkbGVzcyB0aGF0
IHRoZSBjdXJyZW50IGVmZmVjdCBoYXMKKyAgICAvLyBhIHJlc3VsdC4gQ2FuIGJlIHVzZWQgaWYg
YW4gZWZmZWN0IGlzIGluIGFuIGVycm9uZW91cyBzdGF0ZS4KKyAgICBpZiAoaGFzUmVzdWx0KCkp
CisgICAgICAgIGNsZWFyUmVzdWx0KCk7CisKKyAgICB1bnNpZ25lZCBzaXplID0gbV9pbnB1dEVm
ZmVjdHMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgIG1faW5wdXRFZmZlY3RzLmF0KGkpLmdldCgpLT5jbGVhclJlc3VsdHNSZWN1cnNpdmUo
KTsKK30KKwogSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6YXNJbWFnZUJ1ZmZlcigpCiB7CiAg
ICAgaWYgKCFoYXNSZXN1bHQoKSkKQEAgLTI0OCwxMyArMjc4LDI3IEBAIEltYWdlQnVmZmVyKiBG
aWx0ZXJFZmZlY3Q6Om9wZW5DTEltYWdlVG9JbWFnZUJ1ZmZlcigpCiAgICAgRmlsdGVyQ29udGV4
dE9wZW5DTCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKICAgICBB
U1NFUlQoY29udGV4dCk7CiAKKyAgICBpZiAoY29udGV4dC0+aW5FcnJvcigpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGludCBlcnJvckNvZGU7CisKICAgICBzaXplX3Qgb3JpZ2luWzNdID0g
eyAwLCAwLCAwIH07CiAgICAgc2l6ZV90IHJlZ2lvblszXSA9IHsgbV9hYnNvbHV0ZVBhaW50UmVj
dC53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpLCAxIH07CiAKICAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGRlc3RpbmF0aW9uUGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBh
aW50UmVjdC5oZWlnaHQoKSAqIDQpOwogCi0gICAgY2xGaW5pc2goY29udGV4dC0+Y29tbWFuZFF1
ZXVlKCkpOwotICAgIGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21tYW5kUXVldWUoKSwg
bV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24sIDAsIDAsIGRlc3Rp
bmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKTsKKyAgICBlcnJvckNvZGUgPSBjbEZp
bmlzaChjb250ZXh0LT5jb21tYW5kUXVldWUoKSk7CisgICAgaWYgKGVycm9yQ29kZSkgeworICAg
ICAgICBjb250ZXh0LT5zZXRJbkVycm9yKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIGVycm9yQ29kZSA9IGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21tYW5kUXVldWUo
KSwgbV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24sIDAsIDAsIGRl
c3RpbmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKTsKKyAgICBpZiAoZXJyb3JDb2Rl
KSB7CisgICAgICAgIGNvbnRleHQtPnNldEluRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQogCiAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9h
YnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KElu
dFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKQEAgLTQyNiwxNSArNDcwLDI3
IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAjaWYgRU5BQkxFKE9QRU5DTCkKIE9wZW5DTEhhbmRsZSBGaWx0ZXJFZmZl
Y3Q6OmNyZWF0ZU9wZW5DTEltYWdlUmVzdWx0KHVpbnQ4X3QqIHNvdXJjZSkKIHsKKyAgICBGaWx0
ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgp
OworICAgIEFTU0VSVChjb250ZXh0KTsKKworICAgIGlmIChjb250ZXh0LT5pbkVycm9yKCkpCisg
ICAgICAgIHJldHVybiAwOworCiAgICAgQVNTRVJUKCFoYXNSZXN1bHQoKSk7CiAgICAgY2xfaW1h
Z2VfZm9ybWF0IGNsSW1hZ2VGb3JtYXQ7CiAgICAgY2xJbWFnZUZvcm1hdC5pbWFnZV9jaGFubmVs
X29yZGVyID0gQ0xfUkdCQTsKICAgICBjbEltYWdlRm9ybWF0LmltYWdlX2NoYW5uZWxfZGF0YV90
eXBlID0gQ0xfVU5PUk1fSU5UODsKIAotICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQg
PSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgQVNTRVJUKGNvbnRleHQpOwor
ICAgIGludCBlcnJvckNvZGU7CisKICAgICBtX29wZW5DTEltYWdlUmVzdWx0ID0gY2xDcmVhdGVJ
bWFnZTJEKGNvbnRleHQtPmRldmljZUNvbnRleHQoKSwgQ0xfTUVNX1JFQURfV1JJVEUgfCAoc291
cmNlID8gQ0xfTUVNX0NPUFlfSE9TVF9QVFIgOiAwKSwKLSAgICAgICAgJmNsSW1hZ2VGb3JtYXQs
IG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQo
KSwgMCwgc291cmNlLCAwKTsKKyAgICAgICAgJmNsSW1hZ2VGb3JtYXQsIG1fYWJzb2x1dGVQYWlu
dFJlY3Qud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSwgMCwgc291cmNlLCAm
ZXJyb3JDb2RlKTsKKworICAgIGlmIChlcnJvckNvZGUpIHsKKyAgICAgICAgY29udGV4dC0+c2V0
SW5FcnJvcigpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICByZXR1cm4gbV9vcGVu
Q0xJbWFnZVJlc3VsdDsKIH0KICNlbmRpZgpAQCAtNDUwLDE3ICs1MDYsMTkgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZSBkc3RDb2xvclNw
YWNlKQogCiAjaWYgRU5BQkxFKE9QRU5DTCkKICAgICBpZiAob3BlbkNMSW1hZ2UoKSkgeworICAg
ICAgICBpZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKKyAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJS
ZXN1bHQuY2xlYXIoKTsKICAgICAgICAgRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZp
bHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwor
ICAgICAgICBpZiAoY29udGV4dC0+aW5FcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjb250ZXh0LT5vcGVuQ0xUcmFuc2Zvcm1Db2xvclNwYWNlKG1fb3BlbkNMSW1hZ2VSZXN1
bHQsIGFic29sdXRlUGFpbnRSZWN0KCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgZHN0Q29sb3JTcGFj
ZSk7Ci0gICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQotICAgICAgICAgICAgbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5jbGVhcigpOwogICAgIH0gZWxzZSB7CiAjZW5kaWYKIAotICAgIC8vIEZJ
WE1FOiBXZSBjYW4gYXZvaWQgdGhpcyBwb3RlbnRpYWxseSB1bm5lY2Vzc2FyeSBJbWFnZUJ1ZmZl
ciBjb252ZXJzaW9uIGJ5IGFkZGluZwotICAgIC8vIGNvbG9yIHNwYWNlIHRyYW5zZm9ybSBzdXBw
b3J0IGZvciB0aGUge3ByZSx1bn1tdWx0aXBsaWVkIGFycmF5cy4KLSAgICBhc0ltYWdlQnVmZmVy
KCktPnRyYW5zZm9ybUNvbG9yU3BhY2UobV9yZXN1bHRDb2xvclNwYWNlLCBkc3RDb2xvclNwYWNl
KTsKKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBhdm9pZCB0aGlzIHBvdGVudGlhbGx5IHVubmVj
ZXNzYXJ5IEltYWdlQnVmZmVyIGNvbnZlcnNpb24gYnkgYWRkaW5nCisgICAgICAgIC8vIGNvbG9y
IHNwYWNlIHRyYW5zZm9ybSBzdXBwb3J0IGZvciB0aGUge3ByZSx1bn1tdWx0aXBsaWVkIGFycmF5
cy4KKyAgICAgICAgYXNJbWFnZUJ1ZmZlcigpLT50cmFuc2Zvcm1Db2xvclNwYWNlKG1fcmVzdWx0
Q29sb3JTcGFjZSwgZHN0Q29sb3JTcGFjZSk7CiAKICNpZiBFTkFCTEUoT1BFTkNMKQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oCmluZGV4IDAxZDg1YTkuLmYwZmY4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAt
NjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0KCk7CiAKICAg
ICB2b2lkIGNsZWFyUmVzdWx0KCk7CisgICAgdm9pZCBjbGVhclJlc3VsdHNSZWN1cnNpdmUoKTsK
KwogICAgIEltYWdlQnVmZmVyKiBhc0ltYWdlQnVmZmVyKCk7CiAgICAgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CiAgICAg
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3Qg
SW50UmVjdCYpOwpAQCAtMTA5LDcgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXhF
ZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbWF4RWZmZWN0UmVjdCkgeyBtX21heEVmZmVjdFJl
Y3QgPSBtYXhFZmZlY3RSZWN0OyB9IAogCiAgICAgdm9pZCBhcHBseSgpOwotICAgIAorI2lmIEVO
QUJMRShPUEVOQ0wpCisgICAgdm9pZCBhcHBseUFsbCgpOworI2Vsc2UKKyAgICBpbmxpbmUgdm9p
ZCBhcHBseUFsbCgpIHsgYXBwbHkoKTsgfQorI2VuZGlmCisKICAgICAvLyBDb3JyZWN0IGFueSBp
bnZhbGlkIHBpeGVscywgaWYgbmVjZXNzYXJ5LCBpbiB0aGUgcmVzdWx0IG9mIGEgZmlsdGVyIG9w
ZXJhdGlvbi4KICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGVuc3VyZSB2YWxpZCBwaXhl
bCB2YWx1ZXMgb24gZmlsdGVyIGlucHV0cyBhbmQgdGhlIGZpbmFsIHJlc3VsdC4KICAgICAvLyBP
bmx5IHRoZSBhcml0aG1ldGljIGNvbXBvc2l0ZSBmaWx0ZXIgZXZlciBuZWVkcyB0byBwZXJmb3Jt
IGNvcnJlY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcAppbmRleCA0
YzMwNTk2Li43ZGI2MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5jcHAK
QEAgLTg4LDYgKzg4LDQ3IEBAIEZpbHRlckNvbnRleHRPcGVuQ0wqIEZpbHRlckNvbnRleHRPcGVu
Q0w6OmNvbnRleHQoKQogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAKK3ZvaWQgRmlsdGVyQ29u
dGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlcygpCit7CisgICAgY2xGaW5pc2gobV9jb21tYW5kUXVl
dWUpOworCisgICAgaWYgKG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzICE9IG9wZW5jbE5vdENv
bXBpbGVkWWV0KSB7CisgICAgICAgIGRlbGV0ZVJlc291cmNlKG1fbWF0cml4T3BlcmF0aW9uKTsK
KyAgICAgICAgZGVsZXRlUmVzb3VyY2UobV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbik7
CisgICAgICAgIGRlbGV0ZVJlc291cmNlKG1fbHVtaW5hbmNlT3BlcmF0aW9uKTsKKyAgICAgICAg
ZGVsZXRlUmVzb3VyY2UobV9jb2xvck1hdHJpeFByb2dyYW0pOworICAgIH0KKyAgICBtX2NvbG9y
TWF0cml4Q29tcGlsZVN0YXR1cyA9IG9wZW5jbE5vdENvbXBpbGVkWWV0OworCisgICAgaWYgKG1f
dHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQpIHsKKyAgICAg
ICAgZGVsZXRlUmVzb3VyY2UobV90dXJidWxlbmNlT3BlcmF0aW9uKTsKKyAgICAgICAgZGVsZXRl
UmVzb3VyY2UobV90dXJidWxlbmNlUHJvZ3JhbSk7CisgICAgfSAgICAKKyAgICBtX3R1cmJ1bGVu
Y2VDb21waWxlU3RhdHVzID0gb3BlbmNsTm90Q29tcGlsZWRZZXQ7CisKKyAgICBpZiAobV90cmFu
c2Zvcm1Db2xvclNwYWNlQ29tcGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkgewor
ICAgICAgICBkZWxldGVSZXNvdXJjZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwpOworICAg
ICAgICBkZWxldGVSZXNvdXJjZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKTsKKworICAg
IH0KKyAgICBtX3RyYW5zZm9ybUNvbG9yU3BhY2VDb21waWxlU3RhdHVzID0gb3BlbmNsTm90Q29t
cGlsZWRZZXQ7Cit9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZGVzdHJveUNvbnRleHQo
KQoreworICAgIGZyZWVSZXNvdXJjZXMoKTsKKworICAgIGlmIChtX2NvbW1hbmRRdWV1ZSkKKyAg
ICAgICAgY2xSZWxlYXNlQ29tbWFuZFF1ZXVlKG1fY29tbWFuZFF1ZXVlKTsKKyAgICBtX2NvbW1h
bmRRdWV1ZSA9IDA7CisKKyAgICBpZiAobV9kZXZpY2VDb250ZXh0KQorICAgICAgICBjbFJlbGVh
c2VDb250ZXh0KG1fZGV2aWNlQ29udGV4dCk7CisgICAgbV9kZXZpY2VDb250ZXh0ID0gMDsKKwor
ICAgIG1fY29udGV4dCA9IDA7Cit9CisKIE9wZW5DTEhhbmRsZSBGaWx0ZXJDb250ZXh0T3BlbkNM
OjpjcmVhdGVPcGVuQ0xJbWFnZShJbnRTaXplIHBhaW50U2l6ZSkKIHsKICAgICBGaWx0ZXJDb250
ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwpAQCAt
MTE3LDYgKzE1OCwzMSBAQCBfX2tlcm5lbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoX19yZWFk
X29ubHkgaW1hZ2UyZF90IHNvdXJjZSwgX193cml0ZV9vbmx5IGltYQogfQogKTsgLy8gRW5kIG9m
IE9wZW5DTCBrZXJuZWxzCiAKK2lubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBp
bGVUcmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgpCit7CisgICAgaWYgKGluRXJyb3IoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdHJhbnNmb3JtQ29sb3JTcGFjZUNvbXBpbGVTdGF0
dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdHJh
bnNmb3JtQ29sb3JTcGFjZUNvbXBpbGVTdGF0dXMgPSBvcGVuY2xDb21waWxlRmFpbGVkOworCisg
ICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSA9IGNvbXBpbGVQcm9ncmFtKHRyYW5zZm9y
bUNvbG9yU3BhY2VLZXJuZWxQcm9ncmFtKTsKKyAgICBpZiAoIW1fdHJhbnNmb3JtQ29sb3JTcGFj
ZVByb2dyYW0pIHsKKyAgICAgICAgc2V0SW5FcnJvcigpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsID0ga2VybmVsQnlOYW1lKG1fdHJh
bnNmb3JtQ29sb3JTcGFjZVByb2dyYW0sICJ0cmFuc2Zvcm1Db2xvclNwYWNlIik7CisgICAgaWYg
KCFtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwpIHsKKyAgICAgICAgc2V0SW5FcnJvcigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlQ29tcGls
ZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsOworfQorCiB2b2lkIEZpbHRlckNvbnRl
eHRPcGVuQ0w6Om9wZW5DTFRyYW5zZm9ybUNvbG9yU3BhY2UoT3BlbkNMSGFuZGxlJiBzb3VyY2Us
IEludFJlY3Qgc291cmNlU2l6ZSwgQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNl
IGRzdENvbG9yU3BhY2UpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPcGVuQ0xIYW5kbGUs
IGRldmljZVJnYkxVVCwgKCkpOwpAQCAtMTI5LDE5ICsxOTUsMTEgQEAgdm9pZCBGaWx0ZXJDb250
ZXh0T3BlbkNMOjpvcGVuQ0xUcmFuc2Zvcm1Db2xvclNwYWNlKE9wZW5DTEhhbmRsZSYgc291cmNl
LCBJbnRSZWMKICAgICAgICAgfHwgKGRzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZUxpbmVhclJH
QiAmJiBkc3RDb2xvclNwYWNlICE9IENvbG9yU3BhY2VEZXZpY2VSR0IpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9w
ZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBjb21waWxlVHJhbnNm
b3JtQ29sb3JTcGFjZVByb2dyYW0oKTsKIAotICAgIE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiA9
IGNvbnRleHQtPmNyZWF0ZU9wZW5DTEltYWdlKHNvdXJjZVNpemUuc2l6ZSgpKTsKLQotICAgIGlm
ICghbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSkgewotICAgICAgICBtX3RyYW5zZm9ybUNv
bG9yU3BhY2VQcm9ncmFtID0gY29tcGlsZVByb2dyYW0odHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5l
bFByb2dyYW0pOwotICAgICAgICBBU1NFUlQobV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSk7
Ci0gICAgICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5lbCA9IGtlcm5lbEJ5TmFtZShtX3Ry
YW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtLCAidHJhbnNmb3JtQ29sb3JTcGFjZSIpOwotICAgICAg
ICBBU1NFUlQobV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsKTsKLSAgICB9CisgICAgT3BlbkNM
SGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3BlbkNMSW1hZ2Uoc291cmNlU2l6ZS5zaXplKCkp
OwogCi0gICAgUnVuS2VybmVsIGtlcm5lbChjb250ZXh0LCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VL
ZXJuZWwsIHNvdXJjZVNpemUud2lkdGgoKSwgc291cmNlU2l6ZS5oZWlnaHQoKSk7CisgICAgUnVu
S2VybmVsIGtlcm5lbCh0aGlzLCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwsIHNvdXJjZVNp
emUud2lkdGgoKSwgc291cmNlU2l6ZS5oZWlnaHQoKSk7CiAgICAga2VybmVsLmFkZEFyZ3VtZW50
KHNvdXJjZSk7CiAgICAga2VybmVsLmFkZEFyZ3VtZW50KGRlc3RpbmF0aW9uKTsKIApAQCAtMTgz
LDE2ICsyNDEsMjkgQEAgY2xfcHJvZ3JhbSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlUHJv
Z3JhbShjb25zdCBjaGFyKiBzb3VyY2UpCiAgICAgY2xfcHJvZ3JhbSBwcm9ncmFtOwogICAgIGNs
X2ludCBlcnJvck51bWJlcjsKIAotICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBG
aWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotCi0g
ICAgcHJvZ3JhbSA9IGNsQ3JlYXRlUHJvZ3JhbVdpdGhTb3VyY2UoY29udGV4dC0+bV9kZXZpY2VD
b250ZXh0LCAxLCAoY29uc3QgY2hhcioqKSAmc291cmNlLCAwLCAwKTsKKyAgICBwcm9ncmFtID0g
Y2xDcmVhdGVQcm9ncmFtV2l0aFNvdXJjZShtX2RldmljZUNvbnRleHQsIDEsIChjb25zdCBjaGFy
KiopICZzb3VyY2UsIDAsIDApOwogICAgIGVycm9yTnVtYmVyID0gY2xCdWlsZFByb2dyYW0ocHJv
Z3JhbSwgMCwgMCwgMCwgMCwgMCk7CiAgICAgaWYgKGVycm9yTnVtYmVyKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIHJldHVybiBwcm9ncmFtOwogfQorCit2b2lkIEZpbHRlckNvbnRleHRPcGVu
Q0w6OmRlbGV0ZVJlc291cmNlKGNsX2tlcm5lbCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSkg
eworICAgICAgICBjbFJlbGVhc2VLZXJuZWwoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gMDsK
KyAgICB9Cit9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZGVsZXRlUmVzb3VyY2UoY2xf
cHJvZ3JhbSBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSkgeworICAgICAgICBjbFJlbGVhc2VQ
cm9ncmFtKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IDA7CisgICAgfQorfQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmgK
aW5kZXggYjE4OThiNi4uZGZhMWMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNM
LmgKQEAgLTQ0LDcgKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmlsdGVyQ29u
dGV4dE9wZW5DTCB7CiBwdWJsaWM6CiAgICAgRmlsdGVyQ29udGV4dE9wZW5DTCgpCi0gICAgICAg
IDogbV9kZXZpY2VJZCgwKQorICAgICAgICA6IG1faW5FcnJvcihmYWxzZSkKKyAgICAgICAgLCBt
X2RldmljZUlkKDApCiAgICAgICAgICwgbV9kZXZpY2VDb250ZXh0KDApCiAgICAgICAgICwgbV9j
b21tYW5kUXVldWUoMCkKICAgICAgICAgLCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKDAp
CkBAIC02NywxMSArNjgsMTkgQEAgcHVibGljOgogICAgIGNsX2NvbnRleHQgZGV2aWNlQ29udGV4
dCgpIHsgcmV0dXJuIG1fZGV2aWNlQ29udGV4dDsgfQogICAgIGNsX2NvbW1hbmRfcXVldWUgY29t
bWFuZFF1ZXVlKCkgeyByZXR1cm4gbV9jb21tYW5kUXVldWU7IH0KIAorICAgIHZvaWQgc2V0SW5F
cnJvcihib29sIGVycm9yQ29kZSA9IHRydWUpIHsgbV9pbkVycm9yID0gZXJyb3JDb2RlOyB9Cisg
ICAgYm9vbCBpbkVycm9yKCkgeyByZXR1cm4gbV9pbkVycm9yOyB9CisKKyAgICB2b2lkIGZyZWVS
ZXNvdXJjZXMoKTsKKyAgICB2b2lkIGRlc3Ryb3lDb250ZXh0KCk7CisKICAgICBPcGVuQ0xIYW5k
bGUgY3JlYXRlT3BlbkNMSW1hZ2UoSW50U2l6ZSk7CisKKyAgICBpbmxpbmUgdm9pZCBjb21waWxl
VHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0oKTsKICAgICB2b2lkIG9wZW5DTFRyYW5zZm9ybUNv
bG9yU3BhY2UoT3BlbkNMSGFuZGxlJiwgSW50UmVjdCwgQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSk7
CiAKLSAgICBpbmxpbmUgYm9vbCBjb21waWxlRkVDb2xvck1hdHJpeCgpOwotICAgIGlubGluZSBi
b29sIGNvbXBpbGVGRVR1cmJ1bGVuY2UoKTsKKyAgICBpbmxpbmUgdm9pZCBjb21waWxlRkVDb2xv
ck1hdHJpeCgpOworICAgIGlubGluZSB2b2lkIGNvbXBpbGVGRVR1cmJ1bGVuY2UoKTsKIAogICAg
IGlubGluZSB2b2lkIGFwcGx5RkVDb2xvck1hdHJpeChPcGVuQ0xIYW5kbGUsIEludFNpemUsIE9w
ZW5DTEhhbmRsZSwgSW50UG9pbnQsIGZsb2F0KiwgaW50KTsKICAgICBpbmxpbmUgdm9pZCBhcHBs
eUZFVHVyYnVsZW5jZShPcGVuQ0xIYW5kbGUsIEludFNpemUsIGludCwgdm9pZCosIHZvaWQqLCB2
b2lkKiwgdm9pZCosIHZvaWQqLApAQCAtODQsNyArOTMsOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgUnVuS2VybmVsKEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQsIGNsX2tlcm5lbCBrZXJu
ZWwsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKICAgICAgICAgICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQogICAgICAgICAgICAgICAgICwgbV9rZXJuZWwoa2VybmVsKQotICAgICAg
ICAgICAgICAgICwgaW5kZXgoMCkKKyAgICAgICAgICAgICAgICAsIG1faW5kZXgoMCkKKyAgICAg
ICAgICAgICAgICAsIG1fZXJyb3IoY29udGV4dC0+aW5FcnJvcigpKQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIG1fZ2xvYmFsU2l6ZVswXSA9IHdpZHRoOwogICAgICAgICAgICAgICAg
IG1fZ2xvYmFsU2l6ZVsxXSA9IGhlaWdodDsKQEAgLTkyLDQyICsxMDIsNjIgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgdm9pZCBhZGRBcmd1bWVudChPcGVuQ0xIYW5kbGUgaGFuZGxlKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBpbmRl
eCsrLCBzaXplb2YoT3BlbkNMSGFuZGxlKSwgaGFuZGxlLmhhbmRsZUFkZHJlc3MoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFtX2Vycm9yKQorICAgICAgICAgICAgICAgICAgICBtX2Vycm9yID0g
Y2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIG1faW5kZXgrKywgc2l6ZW9mKE9wZW5DTEhhbmRsZSks
IGhhbmRsZS5oYW5kbGVBZGRyZXNzKCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2
b2lkIGFkZEFyZ3VtZW50KGNsX2ludCB2YWx1ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgaW5kZXgrKywgc2l6ZW9mKGNsX2ludCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZ2YWx1ZSkpOworICAgICAgICAgICAgICAgIGlmICghbV9l
cnJvcikKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsU2V0S2VybmVsQXJnKG1fa2Vy
bmVsLCBtX2luZGV4KyssIHNpemVvZihjbF9pbnQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigm
dmFsdWUpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdm9pZCBhZGRBcmd1bWVudChj
bF9mbG9hdCB2YWx1ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjbFNldEtlcm5l
bEFyZyhtX2tlcm5lbCwgaW5kZXgrKywgc2l6ZW9mKGNsX2Zsb2F0KSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oJnZhbHVlKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Vycm9yKQorICAgICAg
ICAgICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIG1faW5kZXgr
Kywgc2l6ZW9mKGNsX2Zsb2F0KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJnZhbHVlKSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZvaWQgYWRkQXJndW1lbnQoY2xfc2FtcGxlciBo
YW5kbGUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xTZXRLZXJuZWxBcmcobV9r
ZXJuZWwsIGluZGV4KyssIHNpemVvZihjbF9zYW1wbGVyKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oJmhhbmRsZSkpOworICAgICAgICAgICAgICAgIGlmICghbV9lcnJvcikKKyAgICAgICAgICAg
ICAgICAgICAgbV9lcnJvciA9IGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBtX2luZGV4KyssIHNp
emVvZihjbF9zYW1wbGVyKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJmhhbmRsZSkpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBPcGVuQ0xIYW5kbGUgYWRkQXJndW1lbnQodm9pZCog
YnVmZmVyLCBpbnQgc2l6ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBPcGVuQ0xI
YW5kbGUgaGFuZGxlKGNsQ3JlYXRlQnVmZmVyKG1fY29udGV4dC0+ZGV2aWNlQ29udGV4dCgpLCBD
TF9NRU1fUkVBRF9PTkxZLCBzaXplLCAwLCAwKSk7Ci0gICAgICAgICAgICAgICAgY2xFbnF1ZXVl
V3JpdGVCdWZmZXIobV9jb250ZXh0LT5jb21tYW5kUXVldWUoKSwgaGFuZGxlLCBDTF9UUlVFLCAw
LCBzaXplLCBidWZmZXIsIDAsIDAsIDApOwotICAgICAgICAgICAgICAgIGNsU2V0S2VybmVsQXJn
KG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoT3BlbkNMSGFuZGxlKSwgaGFuZGxlLmhhbmRsZUFk
ZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIE9wZW5DTEhhbmRsZSBoYW5kbGUoY2xDcmVh
dGVCdWZmZXIobV9jb250ZXh0LT5kZXZpY2VDb250ZXh0KCksIENMX01FTV9SRUFEX09OTFksIHNp
emUsIDAsICZtX2Vycm9yKSk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbEVucXVl
dWVXcml0ZUJ1ZmZlcihtX2NvbnRleHQtPmNvbW1hbmRRdWV1ZSgpLCBoYW5kbGUsIENMX1RSVUUs
IDAsIHNpemUsIGJ1ZmZlciwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3Ip
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIG1fZXJyb3Ig
PSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRleCsrLCBzaXplb2YoT3BlbkNMSGFuZGxl
KSwgaGFuZGxlLmhhbmRsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3Ip
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIHJldHVybiBo
YW5kbGU7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZvaWQgcnVuKCkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjbEZpbmlzaChtX2NvbnRleHQtPm1fY29tbWFuZFF1ZXVl
KTsKLSAgICAgICAgICAgICAgICBjbEVucXVldWVORFJhbmdlS2VybmVsKG1fY29udGV4dC0+bV9j
b21tYW5kUXVldWUsIG1fa2VybmVsLCAyLCAwLCBtX2dsb2JhbFNpemUsIDAsIDAsIDAsIDApOwor
ICAgICAgICAgICAgICAgIGlmIChtX2Vycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIG1fY29u
dGV4dC0+c2V0SW5FcnJvcigpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbEZpbmlzaChtX2NvbnRleHQt
Pm1fY29tbWFuZFF1ZXVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAgICAg
ICAgICAgICAgICAgIG1fZXJyb3IgPSBjbEVucXVldWVORFJhbmdlS2VybmVsKG1fY29udGV4dC0+
bV9jb21tYW5kUXVldWUsIG1fa2VybmVsLCAyLCAwLCBtX2dsb2JhbFNpemUsIDAsIDAsIDAsIDAp
OworICAgICAgICAgICAgICAgIGlmIChtX2Vycm9yKQorICAgICAgICAgICAgICAgICAgICBtX2Nv
bnRleHQtPnNldEluRXJyb3IoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgRmlsdGVy
Q29udGV4dE9wZW5DTCogbV9jb250ZXh0OwogICAgICAgICAgICAgY2xfa2VybmVsIG1fa2VybmVs
OwogICAgICAgICAgICAgc2l6ZV90IG1fZ2xvYmFsU2l6ZVsyXTsKLSAgICAgICAgICAgIGludCBp
bmRleDsKKyAgICAgICAgICAgIGludCBtX2luZGV4OworICAgICAgICAgICAgaW50IG1fZXJyb3I7
CiAgICAgICAgIH07CiAKICAgICBlbnVtIE9wZW5DTENvbXBpbGVTdGF0dXMgewpAQCAtMTM2LDE2
ICsxNjYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWwKICAg
ICB9OwogCi0gICAgc3RhdGljIGNsX3Byb2dyYW0gY29tcGlsZVByb2dyYW0oY29uc3QgY2hhciop
OworICAgIGNsX3Byb2dyYW0gY29tcGlsZVByb2dyYW0oY29uc3QgY2hhciopOwogICAgIHN0YXRp
YyBpbmxpbmUgY2xfa2VybmVsIGtlcm5lbEJ5TmFtZShjbF9wcm9ncmFtIHByb2dyYW0sIGNvbnN0
IGNoYXIqIG5hbWUpIHsgcmV0dXJuIGNsQ3JlYXRlS2VybmVsKHByb2dyYW0sIG5hbWUsIDApOyB9
CiAKKyAgICBzdGF0aWMgdm9pZCBkZWxldGVSZXNvdXJjZShjbF9rZXJuZWwpOworICAgIHN0YXRp
YyB2b2lkIGRlbGV0ZVJlc291cmNlKGNsX3Byb2dyYW0pOworCiAgICAgc3RhdGljIEZpbHRlckNv
bnRleHRPcGVuQ0wqIG1fY29udGV4dDsKICAgICBzdGF0aWMgaW50IG1fYWxyZWFkeUluaXRpYWxp
emVkOworICAgIGJvb2wgbV9pbkVycm9yOwogCiAgICAgY2xfZGV2aWNlX2lkIG1fZGV2aWNlSWQ7
CiAgICAgY2xfY29udGV4dCBtX2RldmljZUNvbnRleHQ7CiAgICAgY2xfY29tbWFuZF9xdWV1ZSBt
X2NvbW1hbmRRdWV1ZTsKIAorICAgIE9wZW5DTENvbXBpbGVTdGF0dXMgbV90cmFuc2Zvcm1Db2xv
clNwYWNlQ29tcGlsZVN0YXR1czsKICAgICBjbF9wcm9ncmFtIG1fdHJhbnNmb3JtQ29sb3JTcGFj
ZVByb2dyYW07CiAgICAgY2xfa2VybmVsIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5lbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9P
cGVuQ0xGRUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9vcGVuY2wvT3BlbkNMRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggNDdjODhjNi4uY2JmZTY0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5j
bC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFQ29sb3JNYXRyaXguY3BwCkBAIC02NiwyOCArNjYs
MzIgQEAgX19rZXJuZWwgdm9pZCBsdW1pbmFuY2UoX193cml0ZV9vbmx5IGltYWdlMmRfdCBkZXN0
aW5hdGlvbiwgX19yZWFkX29ubHkgaW1hZ2UyZF8KIH0KICk7IC8vIEVuZCBvZiBPcGVuQ0wga2Vy
bmVscwogCi1pbmxpbmUgYm9vbCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlRkVDb2xvck1h
dHJpeCgpCitpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlRkVDb2xvck1h
dHJpeCgpCiB7CisgICAgaWYgKGluRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzICE9IG9wZW5jbE5vdENvbXBpbGVkWWV0KQotICAg
ICAgICByZXR1cm4gbV9jb2xvck1hdHJpeENvbXBpbGVTdGF0dXMgPT0gb3BlbmNsQ29tcGlsZVN1
Y2Nlc3NmdWw7CisgICAgICAgIHJldHVybjsKIAogICAgIG1fY29sb3JNYXRyaXhDb21waWxlU3Rh
dHVzID0gb3BlbmNsQ29tcGlsZUZhaWxlZDsKKwogICAgIG1fY29sb3JNYXRyaXhQcm9ncmFtID0g
Y29tcGlsZVByb2dyYW0oY29sb3JNYXRyaXhLZXJuZWxQcm9ncmFtKTsKLSAgICBpZiAoIW1fY29s
b3JNYXRyaXhQcm9ncmFtKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbG9y
TWF0cml4UHJvZ3JhbSkgIHsKKyAgICAgICAgc2V0SW5FcnJvcigpOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgbV9tYXRyaXhPcGVyYXRpb24gPSBrZXJuZWxCeU5hbWUobV9jb2xvck1h
dHJpeFByb2dyYW0sICJtYXRyaXgiKTsKLSAgICBpZiAoIW1fbWF0cml4T3BlcmF0aW9uKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbiA9
IGtlcm5lbEJ5TmFtZShtX2NvbG9yTWF0cml4UHJvZ3JhbSwgInNhdHVyYXRlQW5kSHVlUm90YXRl
Iik7Ci0gICAgaWYgKCFtX3NhdHVyYXRlQW5kSHVlUm90YXRlT3BlcmF0aW9uKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgbV9sdW1pbmFuY2VPcGVyYXRpb24gPSBrZXJuZWxCeU5hbWUobV9j
b2xvck1hdHJpeFByb2dyYW0sICJsdW1pbmFuY2UiKTsKLSAgICBpZiAoIW1fbHVtaW5hbmNlT3Bl
cmF0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fbWF0cml4T3BlcmF0
aW9uIHx8ICFtX3NhdHVyYXRlQW5kSHVlUm90YXRlT3BlcmF0aW9uIHx8ICFtX2x1bWluYW5jZU9w
ZXJhdGlvbikgeworICAgICAgICBzZXRJbkVycm9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAKICAgICBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVTdWNjZXNz
ZnVsOwotICAgIHJldHVybiBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKIH0KIAogaW5saW5lIHZv
aWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6YXBwbHlGRUNvbG9yTWF0cml4KE9wZW5DTEhhbmRsZSBk
ZXN0aW5hdGlvbiwgSW50U2l6ZSBkZXN0aW5hdGlvblNpemUsIE9wZW5DTEhhbmRsZSBzb3VyY2Us
IEludFBvaW50IHJlbGF0aXZlU291cmNlTG9jYXRpb24sIGZsb2F0KiB2YWx1ZXMsIGludCB0eXBl
KQpAQCAtMTMwLDkgKzEzNCwxNSBAQCBpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjph
cHBseUZFQ29sb3JNYXRyaXgoT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uLCBJbgogYm9vbCBGRUNv
bG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5T3BlbkNMKCkKIHsKICAgICBGaWx0ZXJDb250ZXh0T3Bl
bkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAgIGlmICgh
Y29udGV4dCB8fCAhY29udGV4dC0+Y29tcGlsZUZFQ29sb3JNYXRyaXgoKSkKKworICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgY29udGV4dC0+Y29tcGlsZUZF
Q29sb3JNYXRyaXgoKTsKKworICAgIGlmIChjb250ZXh0LT5pbkVycm9yKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogICAg
IE9wZW5DTEhhbmRsZSBzb3VyY2UgPSBpbi0+b3BlbkNMSW1hZ2UoKTsKICAgICBPcGVuQ0xIYW5k
bGUgZGVzdGluYXRpb24gPSBjcmVhdGVPcGVuQ0xJbWFnZVJlc3VsdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRVR1cmJ1
bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9P
cGVuQ0xGRVR1cmJ1bGVuY2UuY3BwCmluZGV4IDJjOTFiNDcuLjJkMTRlYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJi
dWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3Bl
bmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHAKQEAgLTE2NywyMSArMTY3LDI5IEBAIF9fa2VybmVs
IHZvaWQgVHVyYnVsZW5jZShfX3dyaXRlX29ubHkgaW1hZ2UyZF90IGRlc3RpbmF0aW9uLCBfX2Nv
bnN0YW50IGZsb2F0ICp0CiB9CiApOyAvLyBFbmQgb2YgT3BlbkNMIGtlcm5lbHMKIAotaW5saW5l
IGJvb2wgRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29tcGlsZUZFVHVyYnVsZW5jZSgpCitpbmxpbmUg
dm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlRkVUdXJidWxlbmNlKCkKIHsKKyAgICBp
ZiAoaW5FcnJvcigpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV90dXJidWxlbmNlQ29t
cGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkKLSAgICAgICAgcmV0dXJuIG1fdHVy
YnVsZW5jZUNvbXBpbGVTdGF0dXMgPT0gb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWw7CisgICAgICAg
IHJldHVybjsKIAogICAgIG1fdHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMgPSBvcGVuY2xDb21waWxl
RmFpbGVkOworCiAgICAgbV90dXJidWxlbmNlUHJvZ3JhbSA9IGNvbXBpbGVQcm9ncmFtKHR1cmJ1
bGVuY2VLZXJuZWxQcm9ncmFtKTsKLSAgICBpZiAoIW1fdHVyYnVsZW5jZVByb2dyYW0pCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fdHVyYnVsZW5jZVByb2dyYW0pIHsKKyAgICAg
ICAgc2V0SW5FcnJvcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV90dXJidWxl
bmNlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fdHVyYnVsZW5jZVByb2dyYW0sICJUdXJidWxl
bmNlIik7Ci0gICAgaWYgKCFtX3R1cmJ1bGVuY2VPcGVyYXRpb24pCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIW1fdHVyYnVsZW5jZU9wZXJhdGlvbikgeworICAgICAgICBzZXRJbkVy
cm9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX3R1cmJ1bGVuY2VDb21waWxl
U3RhdHVzID0gb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWw7Ci0gICAgcmV0dXJuIG9wZW5jbENvbXBp
bGVTdWNjZXNzZnVsOwogfQogCiBpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjphcHBs
eUZFVHVyYnVsZW5jZShPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24sCkBAIC0yMjQsOSArMjMyLDE0
IEBAIGlubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFwcGx5RkVUdXJidWxlbmNlKE9w
ZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiwKIGJvb2wgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5
T3BlbkNMKCkKIHsKICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29u
dGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+Y29t
cGlsZUZFVHVyYnVsZW5jZSgpKQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgY29udGV4dC0+Y29tcGlsZUZFVHVyYnVsZW5jZSgpOworCisgICAgaWYgKGNv
bnRleHQtPmluRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBPcGVuQ0xIYW5k
bGUgZGVzdGluYXRpb24gPSBjcmVhdGVPcGVuQ0xJbWFnZVJlc3VsdCgpOwogCiAgICAgUGFpbnRp
bmdEYXRhIHBhaW50aW5nRGF0YShtX3NlZWQsIHJvdW5kZWRJbnRTaXplKGZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbigpLnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCAyOTgzYzRmLi45ODk5
MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBH
cmFwaGljc0NvCiAgICAgICAgIC8vIEFsd2F5cyB0cnVlIGlmIGZpbHRlckRhdGEgaXMganVzdCBi
dWlsdCAoZmlsdGVyRGF0YS0+c3RhdGUgPT0gRmlsdGVyRGF0YTo6QnVpbHQpLgogICAgICAgICBp
ZiAoIWxhc3RFZmZlY3QtPmhhc1Jlc3VsdCgpKSB7CiAgICAgICAgICAgICBmaWx0ZXJEYXRhLT5z
dGF0ZSA9IEZpbHRlckRhdGE6OkFwcGx5aW5nOwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBw
bHkoKTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5QWxsKCk7CiAgICAgICAgICAgICBs
YXN0RWZmZWN0LT5jb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxh
c3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="203182"
          type_id="1"
          status="-"
          setter="zherczeg"
    />
    <flag name="commit-queue"
          id="203183"
          type_id="3"
          status="-"
          setter="zherczeg"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186614</attachid>
            <date>2013-02-05 06:16:40 -0800</date>
            <delta_ts>2013-02-05 06:19:45 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>24867</size>
            <attacher name="Tamas Czene">tczene</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjJjYjc4Li5mY2JmNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTMtMDItMDUgIFRhbcOhcyBDemVuZSAgPHRjemVuZUBpbmYudS1zemVnZWQuaHU+CisK
KyAgICAgICAgQWRkIGVycm9yIGNoZWNraW5nIGludG8gT3BlbkNMIHZlcnNpb24gb2YgU1ZHIGZp
bHRlcnMuCisgICAgICAgIEluIGNhc2Ugb2YgYW4gZXJyb3IgdGhlIHByb2dyYW0gcnVucyB0aHJv
dWdoIGFsbCB0aGUgcmVtYWluaW5nIGZpbHRlcnMgYnkgZG9pbmcgbm90aGluZy4gQWZ0ZXIgdGhh
dCBkZWxldGVzIHRoZSByZXN1bHRzIG9mIGV2ZXJ5IGZpbHRlciBhbmQgc3RhcnRzIHNvZnR3YXJl
IHJlbmRlcmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNzQ0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFwcGx5QWxsKTog
QXQgc29mdHdhcmUgcmVuZGVyaW5nIHRoaXMgaXMgYSBzaW1wbGUgaW5saW5lIG1ldGhvZGUsIGJ1
dCBhdCBPcGVuQ0wgcmVuZGVyaW5nIGl0IHJlbGVhc2VzIE9wZW5DTCB0aGluZ3MuIElmIHdlIGhh
dmUgYW4gZXJyb3IgcmVtb3ZlIGZpbHRlcidzIHJlc3VsdHMgYW5kIHN0YXJ0IHNvZnR3YXJlIHJl
bmRlcmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHRzUmVj
dXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlT3BlbkNM
SW1hZ2VSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1S
ZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oOgorICAgICAgICAoRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6YXBwbHlBbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJDb250ZXh0T3BlbkNMOjpmcmVlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6ZGVzdHJveUNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6Y29tcGlsZVRyYW5zZm9ybUNvbG9y
U3BhY2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6Om9w
ZW5DTFRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4
dE9wZW5DTDo6Y29tcGlsZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4
dE9wZW5DTDo6ZnJlZVJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
b3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNv
bnRleHRPcGVuQ0w6OkZpbHRlckNvbnRleHRPcGVuQ0wpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyQ29udGV4dE9wZW5DTDo6c2V0SW5FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjppbkVycm9yKToKKyAgICAgICAgKEZpbHRlckNvbnRleHRPcGVuQ0wpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6UnVuS2VybmVsOjpSdW5LZXJu
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6UnVuS2VybmVsOjph
ZGRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5L
ZXJuZWw6OnJ1bik6CisgICAgICAgIChSdW5LZXJuZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlRkVDb2xvck1hdHJpeCk6CisgICAgICAg
IChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5T3BlbkNMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlRkVUdXJidWxlbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseU9wZW5DTCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3Vy
Y2UpOgorCiAyMDEzLTAyLTA0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlv
bjogcmVuYW1lIEltYWdlIG1fZGF0YSBtZW1iZXIgdG8gbV9lbmNvZGVkSW1hZ2VEYXRhIGZvciB0
aGUgY29uc2lzdGVuY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBkNzM1NGY2Li5lNWE4ZGVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC05Nyw2ICs5NywyNCBAQCBGaWx0ZXJFZmZlY3QqIEZpbHRl
ckVmZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVtYmVyKSBjb25zdAogICAgIHJldHVybiBt
X2lucHV0RWZmZWN0cy5hdChudW1iZXIpLmdldCgpOwogfQogCisjaWYgRU5BQkxFKE9QRU5DTCkK
K3ZvaWQgRmlsdGVyRWZmZWN0OjphcHBseUFsbCgpCit7CisgICAgaWYgKGhhc1Jlc3VsdCgpKQor
ICAgICAgICByZXR1cm47CisgICAgRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZpbHRl
ckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkgeworICAgICAgICBh
cHBseSgpOworICAgICAgICBpZiAoIWNvbnRleHQtPmluRXJyb3IoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CisgICAgICAgIGNvbnRleHQt
PmRlc3Ryb3lDb250ZXh0KCk7CisgICAgfQorICAgIC8vIFNvZnR3YXJlIGNvZGUgcGF0aC4KKyAg
ICBhcHBseSgpOworfQorI2VuZGlmCisKIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiB7CiAg
ICAgaWYgKGhhc1Jlc3VsdCgpKQpAQCAtMjIzLDYgKzI0MSwxOCBAQCB2b2lkIEZpbHRlckVmZmVj
dDo6Y2xlYXJSZXN1bHQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRmlsdGVyRWZmZWN0OjpjbGVhclJl
c3VsdHNSZWN1cnNpdmUoKQoreworICAgIC8vIENsZWFyIGFsbCByZXN1bHRzLCByZWdhcmRsZXNz
IHRoYXQgdGhlIGN1cnJlbnQgZWZmZWN0IGhhcworICAgIC8vIGEgcmVzdWx0LiBDYW4gYmUgdXNl
ZCBpZiBhbiBlZmZlY3QgaXMgaW4gYW4gZXJyb25lb3VzIHN0YXRlLgorICAgIGlmIChoYXNSZXN1
bHQoKSkKKyAgICAgICAgY2xlYXJSZXN1bHQoKTsKKworICAgIHVuc2lnbmVkIHNpemUgPSBtX2lu
cHV0RWZmZWN0cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKKyAgICAgICAgbV9pbnB1dEVmZmVjdHMuYXQoaSkuZ2V0KCktPmNsZWFyUmVzdWx0c1JlY3Vy
c2l2ZSgpOworfQorCiBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyKCkK
IHsKICAgICBpZiAoIWhhc1Jlc3VsdCgpKQpAQCAtMjQ4LDEzICsyNzgsMjcgQEAgSW1hZ2VCdWZm
ZXIqIEZpbHRlckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVmZmVyKCkKICAgICBGaWx0ZXJD
b250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwog
ICAgIEFTU0VSVChjb250ZXh0KTsKIAorICAgIGlmIChjb250ZXh0LT5pbkVycm9yKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaW50IGVycm9yQ29kZSA9IDA7CisKICAgICBzaXplX3Qgb3Jp
Z2luWzNdID0geyAwLCAwLCAwIH07CiAgICAgc2l6ZV90IHJlZ2lvblszXSA9IHsgbV9hYnNvbHV0
ZVBhaW50UmVjdC53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpLCAxIH07CiAK
ICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGRlc3RpbmF0aW9uUGl4ZWxBcnJheSA9IFVp
bnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9h
YnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwogCi0gICAgY2xGaW5pc2goY29udGV4dC0+
Y29tbWFuZFF1ZXVlKCkpOwotICAgIGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21tYW5k
UXVldWUoKSwgbV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24sIDAs
IDAsIGRlc3RpbmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKTsKKyAgICBlcnJvckNv
ZGUgPSBjbEZpbmlzaChjb250ZXh0LT5jb21tYW5kUXVldWUoKSk7CisgICAgaWYgKGVycm9yQ29k
ZSkgeworICAgICAgICBjb250ZXh0LT5zZXRJbkVycm9yKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIGVycm9yQ29kZSA9IGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21t
YW5kUXVldWUoKSwgbV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24s
IDAsIDAsIGRlc3RpbmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKTsKKyAgICBpZiAo
ZXJyb3JDb2RlKSB7CisgICAgICAgIGNvbnRleHQtPnNldEluRXJyb3IoKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQogCiAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpj
cmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEludFJlY3QgZGVzdGluYXRp
b25SZWN0KEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKQEAgLTQyNiwx
NSArNDcwLDI3IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11
bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAjaWYgRU5BQkxFKE9QRU5DTCkKIE9wZW5DTEhhbmRsZSBG
aWx0ZXJFZmZlY3Q6OmNyZWF0ZU9wZW5DTEltYWdlUmVzdWx0KHVpbnQ4X3QqIHNvdXJjZSkKIHsK
KyAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6
Y29udGV4dCgpOworICAgIEFTU0VSVChjb250ZXh0KTsKKworICAgIGlmIChjb250ZXh0LT5pbkVy
cm9yKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgQVNTRVJUKCFoYXNSZXN1bHQoKSk7CiAg
ICAgY2xfaW1hZ2VfZm9ybWF0IGNsSW1hZ2VGb3JtYXQ7CiAgICAgY2xJbWFnZUZvcm1hdC5pbWFn
ZV9jaGFubmVsX29yZGVyID0gQ0xfUkdCQTsKICAgICBjbEltYWdlRm9ybWF0LmltYWdlX2NoYW5u
ZWxfZGF0YV90eXBlID0gQ0xfVU5PUk1fSU5UODsKIAotICAgIEZpbHRlckNvbnRleHRPcGVuQ0wq
IGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgQVNTRVJUKGNv
bnRleHQpOworICAgIGludCBlcnJvckNvZGUgPSAwOworCiAgICAgbV9vcGVuQ0xJbWFnZVJlc3Vs
dCA9IGNsQ3JlYXRlSW1hZ2UyRChjb250ZXh0LT5kZXZpY2VDb250ZXh0KCksIENMX01FTV9SRUFE
X1dSSVRFIHwgKHNvdXJjZSA/IENMX01FTV9DT1BZX0hPU1RfUFRSIDogMCksCi0gICAgICAgICZj
bEltYWdlRm9ybWF0LCBtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCksIG1fYWJzb2x1dGVQYWlu
dFJlY3QuaGVpZ2h0KCksIDAsIHNvdXJjZSwgMCk7CisgICAgICAgICZjbEltYWdlRm9ybWF0LCBt
X2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCksIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCks
IDAsIHNvdXJjZSwgJmVycm9yQ29kZSk7CisKKyAgICBpZiAoZXJyb3JDb2RlKSB7CisgICAgICAg
IGNvbnRleHQtPnNldEluRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAg
cmV0dXJuIG1fb3BlbkNMSW1hZ2VSZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTQ1MCwxNyArNTA2LDE3
IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENvbG9yU3Bh
Y2UgZHN0Q29sb3JTcGFjZSkKIAogI2lmIEVOQUJMRShPUEVOQ0wpCiAgICAgaWYgKG9wZW5DTElt
YWdlKCkpIHsKKyAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1bHQpCisgICAgICAgICAgICBt
X2ltYWdlQnVmZmVyUmVzdWx0LmNsZWFyKCk7CiAgICAgICAgIEZpbHRlckNvbnRleHRPcGVuQ0wq
IGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0KTsKICAgICAgICAgY29udGV4dC0+b3BlbkNMVHJhbnNmb3JtQ29sb3JTcGFjZSht
X29wZW5DTEltYWdlUmVzdWx0LCBhYnNvbHV0ZVBhaW50UmVjdCgpLCBtX3Jlc3VsdENvbG9yU3Bh
Y2UsIGRzdENvbG9yU3BhY2UpOwotICAgICAgICBpZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKLSAg
ICAgICAgICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQuY2xlYXIoKTsKICAgICB9IGVsc2UgewogI2Vu
ZGlmCiAKLSAgICAvLyBGSVhNRTogV2UgY2FuIGF2b2lkIHRoaXMgcG90ZW50aWFsbHkgdW5uZWNl
c3NhcnkgSW1hZ2VCdWZmZXIgY29udmVyc2lvbiBieSBhZGRpbmcKLSAgICAvLyBjb2xvciBzcGFj
ZSB0cmFuc2Zvcm0gc3VwcG9ydCBmb3IgdGhlIHtwcmUsdW59bXVsdGlwbGllZCBhcnJheXMuCi0g
ICAgYXNJbWFnZUJ1ZmZlcigpLT50cmFuc2Zvcm1Db2xvclNwYWNlKG1fcmVzdWx0Q29sb3JTcGFj
ZSwgZHN0Q29sb3JTcGFjZSk7CisgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gYXZvaWQgdGhpcyBw
b3RlbnRpYWxseSB1bm5lY2Vzc2FyeSBJbWFnZUJ1ZmZlciBjb252ZXJzaW9uIGJ5IGFkZGluZwor
ICAgICAgICAvLyBjb2xvciBzcGFjZSB0cmFuc2Zvcm0gc3VwcG9ydCBmb3IgdGhlIHtwcmUsdW59
bXVsdGlwbGllZCBhcnJheXMuCisgICAgICAgIGFzSW1hZ2VCdWZmZXIoKS0+dHJhbnNmb3JtQ29s
b3JTcGFjZShtX3Jlc3VsdENvbG9yU3BhY2UsIGRzdENvbG9yU3BhY2UpOwogCiAjaWYgRU5BQkxF
KE9QRU5DTCkKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAwMWQ4NWE5Li5mMGZmODg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkZpbHRl
ckVmZmVjdCgpOwogCiAgICAgdm9pZCBjbGVhclJlc3VsdCgpOworICAgIHZvaWQgY2xlYXJSZXN1
bHRzUmVjdXJzaXZlKCk7CisKICAgICBJbWFnZUJ1ZmZlciogYXNJbWFnZUJ1ZmZlcigpOwogICAg
IFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGFzVW5tdWx0aXBsaWVkSW1hZ2UoY29uc3Qg
SW50UmVjdCYpOwogICAgIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGFzUHJlbXVsdGlw
bGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKQEAgLTEwOSw3ICsxMTEsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdChjb25zdCBGbG9hdFJlY3QmIG1heEVmZmVjdFJlY3Qp
IHsgbV9tYXhFZmZlY3RSZWN0ID0gbWF4RWZmZWN0UmVjdDsgfSAKIAogICAgIHZvaWQgYXBwbHko
KTsKLSAgICAKKyNpZiBFTkFCTEUoT1BFTkNMKQorICAgIHZvaWQgYXBwbHlBbGwoKTsKKyNlbHNl
CisgICAgaW5saW5lIHZvaWQgYXBwbHlBbGwoKSB7IGFwcGx5KCk7IH0KKyNlbmRpZgorCiAgICAg
Ly8gQ29ycmVjdCBhbnkgaW52YWxpZCBwaXhlbHMsIGlmIG5lY2Vzc2FyeSwgaW4gdGhlIHJlc3Vs
dCBvZiBhIGZpbHRlciBvcGVyYXRpb24uCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBl
bnN1cmUgdmFsaWQgcGl4ZWwgdmFsdWVzIG9uIGZpbHRlciBpbnB1dHMgYW5kIHRoZSBmaW5hbCBy
ZXN1bHQuCiAgICAgLy8gT25seSB0aGUgYXJpdGhtZXRpYyBjb21wb3NpdGUgZmlsdGVyIGV2ZXIg
bmVlZHMgdG8gcGVyZm9ybSBjb3JyZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9w
ZW5DTC5jcHAKaW5kZXggNGMzMDU5Ni4uYWE0NTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNv
bnRleHRPcGVuQ0wuY3BwCkBAIC04OCw2ICs4OCw0NiBAQCBGaWx0ZXJDb250ZXh0T3BlbkNMKiBG
aWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCkKICAgICByZXR1cm4gbV9jb250ZXh0OwogfQog
Cit2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmZyZWVSZXNvdXJjZXMoKQoreworICAgIGNsRmlu
aXNoKG1fY29tbWFuZFF1ZXVlKTsKKworICAgIGlmIChtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1
cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkgeworICAgICAgICBmcmVlUmVzb3VyY2UobV9tYXRy
aXhPcGVyYXRpb24pOworICAgICAgICBmcmVlUmVzb3VyY2UobV9zYXR1cmF0ZUFuZEh1ZVJvdGF0
ZU9wZXJhdGlvbik7CisgICAgICAgIGZyZWVSZXNvdXJjZShtX2x1bWluYW5jZU9wZXJhdGlvbik7
CisgICAgICAgIGZyZWVSZXNvdXJjZShtX2NvbG9yTWF0cml4UHJvZ3JhbSk7CisgICAgfQorICAg
IG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzID0gb3BlbmNsTm90Q29tcGlsZWRZZXQ7CisKKyAg
ICBpZiAobV90dXJidWxlbmNlQ29tcGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkg
eworICAgICAgICBmcmVlUmVzb3VyY2UobV90dXJidWxlbmNlT3BlcmF0aW9uKTsKKyAgICAgICAg
ZnJlZVJlc291cmNlKG1fdHVyYnVsZW5jZVByb2dyYW0pOworICAgIH0gICAgCisgICAgbV90dXJi
dWxlbmNlQ29tcGlsZVN0YXR1cyA9IG9wZW5jbE5vdENvbXBpbGVkWWV0OworCisgICAgaWYgKG1f
dHJhbnNmb3JtQ29sb3JTcGFjZUNvbXBpbGVTdGF0dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQp
IHsKKyAgICAgICAgZnJlZVJlc291cmNlKG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5lbCk7Cisg
ICAgICAgIGZyZWVSZXNvdXJjZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKTsKKyAgICB9
CisgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlQ29tcGlsZVN0YXR1cyA9IG9wZW5jbE5vdENvbXBp
bGVkWWV0OworfQorCit2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmRlc3Ryb3lDb250ZXh0KCkK
K3sKKyAgICBmcmVlUmVzb3VyY2VzKCk7CisKKyAgICBpZiAobV9jb21tYW5kUXVldWUpCisgICAg
ICAgIGNsUmVsZWFzZUNvbW1hbmRRdWV1ZShtX2NvbW1hbmRRdWV1ZSk7CisgICAgbV9jb21tYW5k
UXVldWUgPSAwOworCisgICAgaWYgKG1fZGV2aWNlQ29udGV4dCkKKyAgICAgICAgY2xSZWxlYXNl
Q29udGV4dChtX2RldmljZUNvbnRleHQpOworICAgIG1fZGV2aWNlQ29udGV4dCA9IDA7CisKKyAg
ICBtX2NvbnRleHQgPSAwOworfQorCiBPcGVuQ0xIYW5kbGUgRmlsdGVyQ29udGV4dE9wZW5DTDo6
Y3JlYXRlT3BlbkNMSW1hZ2UoSW50U2l6ZSBwYWludFNpemUpCiB7CiAgICAgRmlsdGVyQ29udGV4
dE9wZW5DTCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKQEAgLTEx
NywzMSArMTU3LDQzIEBAIF9fa2VybmVsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShfX3JlYWRf
b25seSBpbWFnZTJkX3Qgc291cmNlLCBfX3dyaXRlX29ubHkgaW1hCiB9CiApOyAvLyBFbmQgb2Yg
T3BlbkNMIGtlcm5lbHMKIAoraW5saW5lIHZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29tcGls
ZVRyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKCkKK3sKKyAgICBpZiAoaW5FcnJvcigpIHx8IG1f
dHJhbnNmb3JtQ29sb3JTcGFjZUNvbXBpbGVTdGF0dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0gPSBj
b21waWxlUHJvZ3JhbSh0cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsUHJvZ3JhbSk7CisgICAgaWYg
KCFtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKSB7CisgICAgICAgIHNldEluRXJyb3IoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5l
bCA9IGtlcm5lbEJ5TmFtZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtLCAidHJhbnNmb3Jt
Q29sb3JTcGFjZSIpOworICAgIGlmICghbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsKSB7Cisg
ICAgICAgIHNldEluRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdHJh
bnNmb3JtQ29sb3JTcGFjZUNvbXBpbGVTdGF0dXMgPSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsK
K30KKwogdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpvcGVuQ0xUcmFuc2Zvcm1Db2xvclNwYWNl
KE9wZW5DTEhhbmRsZSYgc291cmNlLCBJbnRSZWN0IHNvdXJjZVNpemUsIENvbG9yU3BhY2Ugc3Jj
Q29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKQogewogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoT3BlbkNMSGFuZGxlLCBkZXZpY2VSZ2JMVVQsICgpKTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKE9wZW5DTEhhbmRsZSwgbGluZWFyUmdiTFVULCAoKSk7CiAKLSAgICBpZiAoc3Jj
Q29sb3JTcGFjZSA9PSBkc3RDb2xvclNwYWNlKQorICAgIGlmIChzcmNDb2xvclNwYWNlID09IGRz
dENvbG9yU3BhY2UgfHwgaW5FcnJvcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoKHNy
Y0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZUxpbmVhclJHQiAmJiBzcmNDb2xvclNwYWNlICE9IENv
bG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgIHx8IChkc3RDb2xvclNwYWNlICE9IENvbG9yU3Bh
Y2VMaW5lYXJSR0IgJiYgZHN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlRGV2aWNlUkdCKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZpbHRl
ckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KLSAgICBP
cGVuQ0xIYW5kbGUgZGVzdGluYXRpb24gPSBjb250ZXh0LT5jcmVhdGVPcGVuQ0xJbWFnZShzb3Vy
Y2VTaXplLnNpemUoKSk7CisgICAgY29tcGlsZVRyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKCk7
CiAKLSAgICBpZiAoIW1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0pIHsKLSAgICAgICAgbV90
cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSA9IGNvbXBpbGVQcm9ncmFtKHRyYW5zZm9ybUNvbG9y
U3BhY2VLZXJuZWxQcm9ncmFtKTsKLSAgICAgICAgQVNTRVJUKG1fdHJhbnNmb3JtQ29sb3JTcGFj
ZVByb2dyYW0pOwotICAgICAgICBtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwgPSBrZXJuZWxC
eU5hbWUobV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSwgInRyYW5zZm9ybUNvbG9yU3BhY2Ui
KTsKLSAgICAgICAgQVNTRVJUKG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5lbCk7Ci0gICAgfQor
ICAgIE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiA9IGNyZWF0ZU9wZW5DTEltYWdlKHNvdXJjZVNp
emUuc2l6ZSgpKTsKIAotICAgIFJ1bktlcm5lbCBrZXJuZWwoY29udGV4dCwgbV90cmFuc2Zvcm1D
b2xvclNwYWNlS2VybmVsLCBzb3VyY2VTaXplLndpZHRoKCksIHNvdXJjZVNpemUuaGVpZ2h0KCkp
OworICAgIFJ1bktlcm5lbCBrZXJuZWwodGhpcywgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVs
LCBzb3VyY2VTaXplLndpZHRoKCksIHNvdXJjZVNpemUuaGVpZ2h0KCkpOwogICAgIGtlcm5lbC5h
ZGRBcmd1bWVudChzb3VyY2UpOwogICAgIGtlcm5lbC5hZGRBcmd1bWVudChkZXN0aW5hdGlvbik7
CiAKQEAgLTE4MywxNiArMjM1LDI5IEBAIGNsX3Byb2dyYW0gRmlsdGVyQ29udGV4dE9wZW5DTDo6
Y29tcGlsZVByb2dyYW0oY29uc3QgY2hhciogc291cmNlKQogICAgIGNsX3Byb2dyYW0gcHJvZ3Jh
bTsKICAgICBjbF9pbnQgZXJyb3JOdW1iZXI7CiAKLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBj
b250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250
ZXh0KTsKLQotICAgIHByb2dyYW0gPSBjbENyZWF0ZVByb2dyYW1XaXRoU291cmNlKGNvbnRleHQt
Pm1fZGV2aWNlQ29udGV4dCwgMSwgKGNvbnN0IGNoYXIqKikgJnNvdXJjZSwgMCwgMCk7CisgICAg
cHJvZ3JhbSA9IGNsQ3JlYXRlUHJvZ3JhbVdpdGhTb3VyY2UobV9kZXZpY2VDb250ZXh0LCAxLCAo
Y29uc3QgY2hhcioqKSAmc291cmNlLCAwLCAwKTsKICAgICBlcnJvck51bWJlciA9IGNsQnVpbGRQ
cm9ncmFtKHByb2dyYW0sIDAsIDAsIDAsIDAsIDApOwogICAgIGlmIChlcnJvck51bWJlcikKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gcHJvZ3JhbTsKIH0KKwordm9pZCBGaWx0ZXJD
b250ZXh0T3BlbkNMOjpmcmVlUmVzb3VyY2UoY2xfa2VybmVsJiBoYW5kbGUpCit7CisgICAgaWYg
KGhhbmRsZSkgeworICAgICAgICBjbFJlbGVhc2VLZXJuZWwoaGFuZGxlKTsKKyAgICAgICAgaGFu
ZGxlID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291
cmNlKGNsX3Byb2dyYW0mIGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlKSB7CisgICAgICAgIGNs
UmVsZWFzZVByb2dyYW0oaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gMDsKKyAgICB9Cit9CiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRP
cGVuQ0wuaAppbmRleCBiMTg5OGI2Li5hZDRmZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRl
eHRPcGVuQ0wuaApAQCAtNDQsOSArNDQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
RmlsdGVyQ29udGV4dE9wZW5DTCB7CiBwdWJsaWM6CiAgICAgRmlsdGVyQ29udGV4dE9wZW5DTCgp
Ci0gICAgICAgIDogbV9kZXZpY2VJZCgwKQorICAgICAgICA6IG1faW5FcnJvcihmYWxzZSkKKyAg
ICAgICAgLCBtX2RldmljZUlkKDApCiAgICAgICAgICwgbV9kZXZpY2VDb250ZXh0KDApCiAgICAg
ICAgICwgbV9jb21tYW5kUXVldWUoMCkKKyAgICAgICAgLCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VD
b21waWxlU3RhdHVzKG9wZW5jbE5vdENvbXBpbGVkWWV0KQogICAgICAgICAsIG1fdHJhbnNmb3Jt
Q29sb3JTcGFjZVByb2dyYW0oMCkKICAgICAgICAgLCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJu
ZWwoMCkKICAgICAgICAgLCBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyhvcGVuY2xOb3RDb21w
aWxlZFlldCkKQEAgLTY3LDExICs2OSwxOSBAQCBwdWJsaWM6CiAgICAgY2xfY29udGV4dCBkZXZp
Y2VDb250ZXh0KCkgeyByZXR1cm4gbV9kZXZpY2VDb250ZXh0OyB9CiAgICAgY2xfY29tbWFuZF9x
dWV1ZSBjb21tYW5kUXVldWUoKSB7IHJldHVybiBtX2NvbW1hbmRRdWV1ZTsgfQogCisgICAgdm9p
ZCBzZXRJbkVycm9yKGJvb2wgZXJyb3JDb2RlID0gdHJ1ZSkgeyBtX2luRXJyb3IgPSBlcnJvckNv
ZGU7IH0KKyAgICBib29sIGluRXJyb3IoKSB7IHJldHVybiBtX2luRXJyb3I7IH0KKworICAgIHZv
aWQgZnJlZVJlc291cmNlcygpOworICAgIHZvaWQgZGVzdHJveUNvbnRleHQoKTsKKwogICAgIE9w
ZW5DTEhhbmRsZSBjcmVhdGVPcGVuQ0xJbWFnZShJbnRTaXplKTsKKworICAgIGlubGluZSB2b2lk
IGNvbXBpbGVUcmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgpOwogICAgIHZvaWQgb3BlbkNMVHJh
bnNmb3JtQ29sb3JTcGFjZShPcGVuQ0xIYW5kbGUmLCBJbnRSZWN0LCBDb2xvclNwYWNlLCBDb2xv
clNwYWNlKTsKIAotICAgIGlubGluZSBib29sIGNvbXBpbGVGRUNvbG9yTWF0cml4KCk7Ci0gICAg
aW5saW5lIGJvb2wgY29tcGlsZUZFVHVyYnVsZW5jZSgpOworICAgIGlubGluZSB2b2lkIGNvbXBp
bGVGRUNvbG9yTWF0cml4KCk7CisgICAgaW5saW5lIHZvaWQgY29tcGlsZUZFVHVyYnVsZW5jZSgp
OwogCiAgICAgaW5saW5lIHZvaWQgYXBwbHlGRUNvbG9yTWF0cml4KE9wZW5DTEhhbmRsZSwgSW50
U2l6ZSwgT3BlbkNMSGFuZGxlLCBJbnRQb2ludCwgZmxvYXQqLCBpbnQpOwogICAgIGlubGluZSB2
b2lkIGFwcGx5RkVUdXJidWxlbmNlKE9wZW5DTEhhbmRsZSwgSW50U2l6ZSwgaW50LCB2b2lkKiwg
dm9pZCosIHZvaWQqLCB2b2lkKiwgdm9pZCosCkBAIC04NCw3ICs5NCw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBSdW5LZXJuZWwoRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCwgY2xfa2Vy
bmVsIGtlcm5lbCwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQogICAgICAgICAgICAgICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgICAgICAgICAgICAgLCBtX2tlcm5lbChrZXJuZWwp
Ci0gICAgICAgICAgICAgICAgLCBpbmRleCgwKQorICAgICAgICAgICAgICAgICwgbV9pbmRleCgw
KQorICAgICAgICAgICAgICAgICwgbV9lcnJvcihjb250ZXh0LT5pbkVycm9yKCkpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxTaXplWzBdID0gd2lkdGg7CiAgICAgICAg
ICAgICAgICAgbV9nbG9iYWxTaXplWzFdID0gaGVpZ2h0OwpAQCAtOTIsNjAgKzEwMyw4NCBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICB2b2lkIGFkZEFyZ3VtZW50KE9wZW5DTEhhbmRsZSBoYW5k
bGUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xTZXRLZXJuZWxBcmcobV9rZXJu
ZWwsIGluZGV4KyssIHNpemVvZihPcGVuQ0xIYW5kbGUpLCBoYW5kbGUuaGFuZGxlQWRkcmVzcygp
KTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIG1f
ZXJyb3IgPSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRleCsrLCBzaXplb2YoT3BlbkNM
SGFuZGxlKSwgaGFuZGxlLmhhbmRsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHZvaWQgYWRkQXJndW1lbnQoY2xfaW50IHZhbHVlKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoY2xf
aW50KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFtX2Vycm9yKQorICAgICAgICAgICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxB
cmcobV9rZXJuZWwsIG1faW5kZXgrKywgc2l6ZW9mKGNsX2ludCksIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KCZ2YWx1ZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2b2lkIGFkZEFy
Z3VtZW50KGNsX2Zsb2F0IHZhbHVlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNs
U2V0S2VybmVsQXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoY2xfZmxvYXQpLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPigmdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZXJyb3Ip
CisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwg
bV9pbmRleCsrLCBzaXplb2YoY2xfZmxvYXQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigmdmFs
dWUpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdm9pZCBhZGRBcmd1bWVudChjbF9z
YW1wbGVyIGhhbmRsZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjbFNldEtlcm5l
bEFyZyhtX2tlcm5lbCwgaW5kZXgrKywgc2l6ZW9mKGNsX3NhbXBsZXIpLCByZWludGVycHJldF9j
YXN0PHZvaWQqPigmaGFuZGxlKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Vycm9yKQorICAg
ICAgICAgICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIG1faW5k
ZXgrKywgc2l6ZW9mKGNsX3NhbXBsZXIpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigmaGFuZGxl
KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIE9wZW5DTEhhbmRsZSBhZGRBcmd1bWVu
dCh2b2lkKiBidWZmZXIsIGludCBzaXplKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IE9wZW5DTEhhbmRsZSBoYW5kbGUoY2xDcmVhdGVCdWZmZXIobV9jb250ZXh0LT5kZXZpY2VDb250
ZXh0KCksIENMX01FTV9SRUFEX09OTFksIHNpemUsIDAsIDApKTsKLSAgICAgICAgICAgICAgICBj
bEVucXVldWVXcml0ZUJ1ZmZlcihtX2NvbnRleHQtPmNvbW1hbmRRdWV1ZSgpLCBoYW5kbGUsIENM
X1RSVUUsIDAsIHNpemUsIGJ1ZmZlciwgMCwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgY2xTZXRL
ZXJuZWxBcmcobV9rZXJuZWwsIGluZGV4KyssIHNpemVvZihPcGVuQ0xIYW5kbGUpLCBoYW5kbGUu
aGFuZGxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJvcikKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgT3BlbkNMSGFuZGxlIGhhbmRs
ZShjbENyZWF0ZUJ1ZmZlcihtX2NvbnRleHQtPmRldmljZUNvbnRleHQoKSwgQ0xfTUVNX1JFQURf
T05MWSwgc2l6ZSwgMCwgJm1fZXJyb3IpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJvcikK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgbV9lcnJvciA9
IGNsRW5xdWV1ZVdyaXRlQnVmZmVyKG1fY29udGV4dC0+Y29tbWFuZFF1ZXVlKCksIGhhbmRsZSwg
Q0xfVFJVRSwgMCwgc2l6ZSwgYnVmZmVyLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAo
bV9lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAg
bV9lcnJvciA9IGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBtX2luZGV4KyssIHNpemVvZihPcGVu
Q0xIYW5kbGUpLCBoYW5kbGUuaGFuZGxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICBpZiAo
bV9lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGhhbmRsZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdm9pZCBydW4oKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsRmluaXNoKG1fY29udGV4dC0+bV9jb21t
YW5kUXVldWUpOwotICAgICAgICAgICAgICAgIGNsRW5xdWV1ZU5EUmFuZ2VLZXJuZWwobV9jb250
ZXh0LT5tX2NvbW1hbmRRdWV1ZSwgbV9rZXJuZWwsIDIsIDAsIG1fZ2xvYmFsU2l6ZSwgMCwgMCwg
MCwgMCk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9jb250ZXh0LT5zZXRJbkVycm9yKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsRmluaXNoKG1f
Y29udGV4dC0+bV9jb21tYW5kUXVldWUpOworICAgICAgICAgICAgICAgIGlmICghbV9lcnJvcikK
KyAgICAgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsRW5xdWV1ZU5EUmFuZ2VLZXJuZWwobV9j
b250ZXh0LT5tX2NvbW1hbmRRdWV1ZSwgbV9rZXJuZWwsIDIsIDAsIG1fZ2xvYmFsU2l6ZSwgMCwg
MCwgMCwgMCk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpCisgICAgICAgICAgICAgICAg
ICAgIG1fY29udGV4dC0+c2V0SW5FcnJvcigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBtX2NvbnRleHQ7CiAgICAgICAgICAgICBjbF9rZXJuZWwg
bV9rZXJuZWw7CiAgICAgICAgICAgICBzaXplX3QgbV9nbG9iYWxTaXplWzJdOwotICAgICAgICAg
ICAgaW50IGluZGV4OworICAgICAgICAgICAgaW50IG1faW5kZXg7CisgICAgICAgICAgICBpbnQg
bV9lcnJvcjsKICAgICAgICAgfTsKIAogICAgIGVudW0gT3BlbkNMQ29tcGlsZVN0YXR1cyB7CiAg
ICAgICAgIG9wZW5jbE5vdENvbXBpbGVkWWV0LAotICAgICAgICBvcGVuY2xDb21waWxlRmFpbGVk
LAogICAgICAgICBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bAogICAgIH07CiAKLSAgICBzdGF0aWMg
Y2xfcHJvZ3JhbSBjb21waWxlUHJvZ3JhbShjb25zdCBjaGFyKik7CisgICAgY2xfcHJvZ3JhbSBj
b21waWxlUHJvZ3JhbShjb25zdCBjaGFyKik7CiAgICAgc3RhdGljIGlubGluZSBjbF9rZXJuZWwg
a2VybmVsQnlOYW1lKGNsX3Byb2dyYW0gcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkgeyByZXR1
cm4gY2xDcmVhdGVLZXJuZWwocHJvZ3JhbSwgbmFtZSwgMCk7IH0KIAorICAgIHN0YXRpYyBpbmxp
bmUgdm9pZCBmcmVlUmVzb3VyY2UoY2xfa2VybmVsJik7CisgICAgc3RhdGljIGlubGluZSB2b2lk
IGZyZWVSZXNvdXJjZShjbF9wcm9ncmFtJik7CisKICAgICBzdGF0aWMgRmlsdGVyQ29udGV4dE9w
ZW5DTCogbV9jb250ZXh0OwogICAgIHN0YXRpYyBpbnQgbV9hbHJlYWR5SW5pdGlhbGl6ZWQ7Cisg
ICAgYm9vbCBtX2luRXJyb3I7CiAKICAgICBjbF9kZXZpY2VfaWQgbV9kZXZpY2VJZDsKICAgICBj
bF9jb250ZXh0IG1fZGV2aWNlQ29udGV4dDsKICAgICBjbF9jb21tYW5kX3F1ZXVlIG1fY29tbWFu
ZFF1ZXVlOwogCisgICAgT3BlbkNMQ29tcGlsZVN0YXR1cyBtX3RyYW5zZm9ybUNvbG9yU3BhY2VD
b21waWxlU3RhdHVzOwogICAgIGNsX3Byb2dyYW0gbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3Jh
bTsKICAgICBjbF9rZXJuZWwgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZF
Q29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29w
ZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcAppbmRleCA0N2M4OGM2Li5kMThiMWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5D
TEZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9vcGVuY2wvT3BlbkNMRkVDb2xvck1hdHJpeC5jcHAKQEAgLTY2LDI4ICs2NiwyNyBAQCBf
X2tlcm5lbCB2b2lkIGx1bWluYW5jZShfX3dyaXRlX29ubHkgaW1hZ2UyZF90IGRlc3RpbmF0aW9u
LCBfX3JlYWRfb25seSBpbWFnZTJkXwogfQogKTsgLy8gRW5kIG9mIE9wZW5DTCBrZXJuZWxzCiAK
LWlubGluZSBib29sIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KCkK
K2lubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KCkK
IHsKLSAgICBpZiAobV9jb2xvck1hdHJpeENvbXBpbGVTdGF0dXMgIT0gb3BlbmNsTm90Q29tcGls
ZWRZZXQpCi0gICAgICAgIHJldHVybiBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyA9PSBvcGVu
Y2xDb21waWxlU3VjY2Vzc2Z1bDsKKyAgICBpZiAoaW5FcnJvcigpIHx8IG1fY29sb3JNYXRyaXhD
b21waWxlU3RhdHVzICE9IG9wZW5jbE5vdENvbXBpbGVkWWV0KQorICAgICAgICByZXR1cm47CiAK
LSAgICBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVGYWlsZWQ7CiAg
ICAgbV9jb2xvck1hdHJpeFByb2dyYW0gPSBjb21waWxlUHJvZ3JhbShjb2xvck1hdHJpeEtlcm5l
bFByb2dyYW0pOwotICAgIGlmICghbV9jb2xvck1hdHJpeFByb2dyYW0pCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIW1fY29sb3JNYXRyaXhQcm9ncmFtKSAgeworICAgICAgICBzZXRJ
bkVycm9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX21hdHJpeE9wZXJhdGlv
biA9IGtlcm5lbEJ5TmFtZShtX2NvbG9yTWF0cml4UHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIGlm
ICghbV9tYXRyaXhPcGVyYXRpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3NhdHVy
YXRlQW5kSHVlUm90YXRlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9n
cmFtLCAic2F0dXJhdGVBbmRIdWVSb3RhdGUiKTsKLSAgICBpZiAoIW1fc2F0dXJhdGVBbmRIdWVS
b3RhdGVPcGVyYXRpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX2x1bWluYW5jZU9w
ZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZShtX2NvbG9yTWF0cml4UHJvZ3JhbSwgImx1bWluYW5jZSIp
OwotICAgIGlmICghbV9sdW1pbmFuY2VPcGVyYXRpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghbV9tYXRyaXhPcGVyYXRpb24gfHwgIW1fc2F0dXJhdGVBbmRIdWVSb3RhdGVP
cGVyYXRpb24gfHwgIW1fbHVtaW5hbmNlT3BlcmF0aW9uKSB7CisgICAgICAgIHNldEluRXJyb3Io
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fY29sb3JNYXRyaXhDb21waWxlU3Rh
dHVzID0gb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWw7Ci0gICAgcmV0dXJuIG9wZW5jbENvbXBpbGVT
dWNjZXNzZnVsOwogfQogCiBpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjphcHBseUZF
Q29sb3JNYXRyaXgoT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uLCBJbnRTaXplIGRlc3RpbmF0aW9u
U2l6ZSwgT3BlbkNMSGFuZGxlIHNvdXJjZSwgSW50UG9pbnQgcmVsYXRpdmVTb3VyY2VMb2NhdGlv
biwgZmxvYXQqIHZhbHVlcywgaW50IHR5cGUpCkBAIC0xMzAsOSArMTI5LDE1IEBAIGlubGluZSB2
b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFwcGx5RkVDb2xvck1hdHJpeChPcGVuQ0xIYW5kbGUg
ZGVzdGluYXRpb24sIEluCiBib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0wo
KQogewogICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3Bl
bkNMOjpjb250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5jb21waWxlRkVD
b2xvck1hdHJpeCgpKQorCisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICBjb250ZXh0LT5jb21waWxlRkVDb2xvck1hdHJpeCgpOworCisgICAgaWYgKGNvbnRl
eHQtPmluRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBGaWx0ZXJFZmZlY3Qq
IGluID0gaW5wdXRFZmZlY3QoMCk7CiAgICAgT3BlbkNMSGFuZGxlIHNvdXJjZSA9IGluLT5vcGVu
Q0xJbWFnZSgpOwogICAgIE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiA9IGNyZWF0ZU9wZW5DTElt
YWdlUmVzdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvb3BlbmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHAKaW5kZXggMmM5
MWI0Ny4uNWU3MjFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L29wZW5jbC9PcGVuQ0xGRVR1cmJ1bGVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcApAQCAt
MTY3LDIxICsxNjcsMjUgQEAgX19rZXJuZWwgdm9pZCBUdXJidWxlbmNlKF9fd3JpdGVfb25seSBp
bWFnZTJkX3QgZGVzdGluYXRpb24sIF9fY29uc3RhbnQgZmxvYXQgKnQKIH0KICk7IC8vIEVuZCBv
ZiBPcGVuQ0wga2VybmVscwogCi1pbmxpbmUgYm9vbCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21w
aWxlRkVUdXJidWxlbmNlKCkKK2lubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBp
bGVGRVR1cmJ1bGVuY2UoKQogewotICAgIGlmIChtX3R1cmJ1bGVuY2VDb21waWxlU3RhdHVzICE9
IG9wZW5jbE5vdENvbXBpbGVkWWV0KQotICAgICAgICByZXR1cm4gbV90dXJidWxlbmNlQ29tcGls
ZVN0YXR1cyA9PSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKIAotICAgIG1fdHVyYnVsZW5jZUNv
bXBpbGVTdGF0dXMgPSBvcGVuY2xDb21waWxlRmFpbGVkOworICAgIGlmIChpbkVycm9yKCkgfHwg
bV90dXJidWxlbmNlQ29tcGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgbV90dXJidWxlbmNlUHJvZ3JhbSA9IGNvbXBpbGVQcm9ncmFtKHR1
cmJ1bGVuY2VLZXJuZWxQcm9ncmFtKTsKLSAgICBpZiAoIW1fdHVyYnVsZW5jZVByb2dyYW0pCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fdHVyYnVsZW5jZVByb2dyYW0pIHsKKyAg
ICAgICAgc2V0SW5FcnJvcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV90dXJi
dWxlbmNlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fdHVyYnVsZW5jZVByb2dyYW0sICJUdXJi
dWxlbmNlIik7Ci0gICAgaWYgKCFtX3R1cmJ1bGVuY2VPcGVyYXRpb24pCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIW1fdHVyYnVsZW5jZU9wZXJhdGlvbikgeworICAgICAgICBzZXRJ
bkVycm9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX3R1cmJ1bGVuY2VDb21w
aWxlU3RhdHVzID0gb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWw7Ci0gICAgcmV0dXJuIG9wZW5jbENv
bXBpbGVTdWNjZXNzZnVsOwogfQogCiBpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjph
cHBseUZFVHVyYnVsZW5jZShPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24sCkBAIC0yMjQsOSArMjI4
LDE0IEBAIGlubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFwcGx5RkVUdXJidWxlbmNl
KE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiwKIGJvb2wgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFw
cGx5T3BlbkNMKCkKIHsKICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVy
Q29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+
Y29tcGlsZUZFVHVyYnVsZW5jZSgpKQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisgICAgY29udGV4dC0+Y29tcGlsZUZFVHVyYnVsZW5jZSgpOworCisgICAgaWYg
KGNvbnRleHQtPmluRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBPcGVuQ0xI
YW5kbGUgZGVzdGluYXRpb24gPSBjcmVhdGVPcGVuQ0xJbWFnZVJlc3VsdCgpOwogCiAgICAgUGFp
bnRpbmdEYXRhIHBhaW50aW5nRGF0YShtX3NlZWQsIHJvdW5kZWRJbnRTaXplKGZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbigpLnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCAyOTgzYzRmLi45
ODk5MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0
LCBHcmFwaGljc0NvCiAgICAgICAgIC8vIEFsd2F5cyB0cnVlIGlmIGZpbHRlckRhdGEgaXMganVz
dCBidWlsdCAoZmlsdGVyRGF0YS0+c3RhdGUgPT0gRmlsdGVyRGF0YTo6QnVpbHQpLgogICAgICAg
ICBpZiAoIWxhc3RFZmZlY3QtPmhhc1Jlc3VsdCgpKSB7CiAgICAgICAgICAgICBmaWx0ZXJEYXRh
LT5zdGF0ZSA9IEZpbHRlckRhdGE6OkFwcGx5aW5nOwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+
YXBwbHkoKTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5QWxsKCk7CiAgICAgICAgICAg
ICBsYXN0RWZmZWN0LT5jb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKTsKICAgICAgICAgICAg
IGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186615</attachid>
            <date>2013-02-05 06:19:45 -0800</date>
            <delta_ts>2013-02-07 08:36:47 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>24866</size>
            <attacher name="Tamas Czene">tczene</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjJjYjc4Li5kNDQ2N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTMtMDItMDUgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBBZGQgZXJyb3IgY2hlY2tpbmcgaW50byBPcGVuQ0wgdmVyc2lvbiBvZiBTVkcgZmls
dGVycy4KKyAgICAgICAgSW4gY2FzZSBvZiBhbiBlcnJvciB0aGUgcHJvZ3JhbSBydW5zIHRocm91
Z2ggYWxsIHRoZSByZW1haW5pbmcgZmlsdGVycyBieSBkb2luZyBub3RoaW5nLiBBZnRlciB0aGF0
IGRlbGV0ZXMgdGhlIHJlc3VsdHMgb2YgZXZlcnkgZmlsdGVyIGFuZCBzdGFydHMgc29mdHdhcmUg
cmVuZGVyaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA3NDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHlBbGwpOiBB
dCBzb2Z0d2FyZSByZW5kZXJpbmcgdGhpcyBpcyBhIHNpbXBsZSBpbmxpbmUgbWV0aG9kZSwgYnV0
IGF0IE9wZW5DTCByZW5kZXJpbmcgaXQgcmVsZWFzZXMgT3BlbkNMIHRoaW5ncy4gSWYgd2UgaGF2
ZSBhbiBlcnJvciByZW1vdmUgZmlsdGVyJ3MgcmVzdWx0cyBhbmQgc3RhcnQgc29mdHdhcmUgcmVu
ZGVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdHNSZWN1
cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFnZVRvSW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVPcGVuQ0xJ
bWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0Lmg6CisgICAgICAgIChGaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjphcHBseUFsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckNvbnRleHRPcGVuQ0w6OmZyZWVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpkZXN0cm95Q29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlVHJhbnNmb3JtQ29sb3JT
cGFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6b3Bl
bkNMVHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0
T3BlbkNMOjpjb21waWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0
T3BlbkNMOjpmcmVlUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9v
cGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29u
dGV4dE9wZW5DTDo6RmlsdGVyQ29udGV4dE9wZW5DTCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJDb250ZXh0T3BlbkNMOjpzZXRJbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNv
bnRleHRPcGVuQ0w6OmluRXJyb3IpOgorICAgICAgICAoRmlsdGVyQ29udGV4dE9wZW5DTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6OlJ1bktlcm5l
bCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6OmFk
ZEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OlJ1bktl
cm5lbDo6cnVuKToKKyAgICAgICAgKFJ1bktlcm5lbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0wpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRVR1cmJ1bGVuY2Up
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5T3BlbkNMKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJj
ZSk6CisKIDIwMTMtMDItMDQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9u
OiByZW5hbWUgSW1hZ2UgbV9kYXRhIG1lbWJlciB0byBtX2VuY29kZWRJbWFnZURhdGEgZm9yIHRo
ZSBjb25zaXN0ZW5jeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGQ3MzU0ZjYuLmU1YThkZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKQEAgLTk3LDYgKzk3LDI0IEBAIEZpbHRlckVmZmVjdCogRmlsdGVy
RWZmZWN0OjppbnB1dEVmZmVjdCh1bnNpZ25lZCBudW1iZXIpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aW5wdXRFZmZlY3RzLmF0KG51bWJlcikuZ2V0KCk7CiB9CiAKKyNpZiBFTkFCTEUoT1BFTkNMKQor
dm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5QWxsKCkKK3sKKyAgICBpZiAoaGFzUmVzdWx0KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVy
Q29udGV4dE9wZW5DTDo6Y29udGV4dCgpOworICAgIGlmIChjb250ZXh0KSB7CisgICAgICAgIGFw
cGx5KCk7CisgICAgICAgIGlmICghY29udGV4dC0+aW5FcnJvcigpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjbGVhclJlc3VsdHNSZWN1cnNpdmUoKTsKKyAgICAgICAgY29udGV4dC0+
ZGVzdHJveUNvbnRleHQoKTsKKyAgICB9CisgICAgLy8gU29mdHdhcmUgY29kZSBwYXRoLgorICAg
IGFwcGx5KCk7Cit9CisjZW5kaWYKKwogdm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkKIHsKICAg
ICBpZiAoaGFzUmVzdWx0KCkpCkBAIC0yMjMsNiArMjQxLDE4IEBAIHZvaWQgRmlsdGVyRWZmZWN0
OjpjbGVhclJlc3VsdCgpCiAjZW5kaWYKIH0KIAordm9pZCBGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVz
dWx0c1JlY3Vyc2l2ZSgpCit7CisgICAgLy8gQ2xlYXIgYWxsIHJlc3VsdHMsIHJlZ2FyZGxlc3Mg
dGhhdCB0aGUgY3VycmVudCBlZmZlY3QgaGFzCisgICAgLy8gYSByZXN1bHQuIENhbiBiZSB1c2Vk
IGlmIGFuIGVmZmVjdCBpcyBpbiBhbiBlcnJvbmVvdXMgc3RhdGUuCisgICAgaWYgKGhhc1Jlc3Vs
dCgpKQorICAgICAgICBjbGVhclJlc3VsdCgpOworCisgICAgdW5zaWduZWQgc2l6ZSA9IG1faW5w
dXRFZmZlY3RzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICBtX2lucHV0RWZmZWN0cy5hdChpKS5nZXQoKS0+Y2xlYXJSZXN1bHRzUmVjdXJz
aXZlKCk7Cit9CisKIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQog
ewogICAgIGlmICghaGFzUmVzdWx0KCkpCkBAIC0yNDgsMTMgKzI3OCwyNyBAQCBJbWFnZUJ1ZmZl
ciogRmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFnZVRvSW1hZ2VCdWZmZXIoKQogICAgIEZpbHRlckNv
bnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7CiAg
ICAgQVNTRVJUKGNvbnRleHQpOwogCisgICAgaWYgKGNvbnRleHQtPmluRXJyb3IoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBpbnQgZXJyb3JDb2RlID0gMDsKKwogICAgIHNpemVfdCBvcmln
aW5bM10gPSB7IDAsIDAsIDAgfTsKICAgICBzaXplX3QgcmVnaW9uWzNdID0geyBtX2Fic29sdXRl
UGFpbnRSZWN0LndpZHRoKCksIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCksIDEgfTsKIAog
ICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZGVzdGluYXRpb25QaXhlbEFycmF5ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fi
c29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CiAKLSAgICBjbEZpbmlzaChjb250ZXh0LT5j
b21tYW5kUXVldWUoKSk7Ci0gICAgY2xFbnF1ZXVlUmVhZEltYWdlKGNvbnRleHQtPmNvbW1hbmRR
dWV1ZSgpLCBtX29wZW5DTEltYWdlUmVzdWx0LCBDTF9UUlVFLCBvcmlnaW4sIHJlZ2lvbiwgMCwg
MCwgZGVzdGluYXRpb25QaXhlbEFycmF5LT5kYXRhKCksIDAsIDAsIDApOworICAgIGVycm9yQ29k
ZSA9IGNsRmluaXNoKGNvbnRleHQtPmNvbW1hbmRRdWV1ZSgpKTsKKyAgICBpZiAoZXJyb3JDb2Rl
KSB7CisgICAgICAgIGNvbnRleHQtPnNldEluRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgZXJyb3JDb2RlID0gY2xFbnF1ZXVlUmVhZEltYWdlKGNvbnRleHQtPmNvbW1h
bmRRdWV1ZSgpLCBtX29wZW5DTEltYWdlUmVzdWx0LCBDTF9UUlVFLCBvcmlnaW4sIHJlZ2lvbiwg
MCwgMCwgZGVzdGluYXRpb25QaXhlbEFycmF5LT5kYXRhKCksIDAsIDAsIDApOworICAgIGlmIChl
cnJvckNvZGUpIHsKKyAgICAgICAgY29udGV4dC0+c2V0SW5FcnJvcigpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CiAKICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgSW50UmVjdCBkZXN0aW5hdGlv
blJlY3QoSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwpAQCAtNDI2LDE1
ICs0NzAsMjcgQEAgVWludDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0KCkKICNpZiBFTkFCTEUoT1BFTkNMKQogT3BlbkNMSGFuZGxlIEZp
bHRlckVmZmVjdDo6Y3JlYXRlT3BlbkNMSW1hZ2VSZXN1bHQodWludDhfdCogc291cmNlKQogewor
ICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpj
b250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQpOworCisgICAgaWYgKGNvbnRleHQtPmluRXJy
b3IoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBBU1NFUlQoIWhhc1Jlc3VsdCgpKTsKICAg
ICBjbF9pbWFnZV9mb3JtYXQgY2xJbWFnZUZvcm1hdDsKICAgICBjbEltYWdlRm9ybWF0LmltYWdl
X2NoYW5uZWxfb3JkZXIgPSBDTF9SR0JBOwogICAgIGNsSW1hZ2VGb3JtYXQuaW1hZ2VfY2hhbm5l
bF9kYXRhX3R5cGUgPSBDTF9VTk9STV9JTlQ4OwogCi0gICAgRmlsdGVyQ29udGV4dE9wZW5DTCog
Y29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKLSAgICBBU1NFUlQoY29u
dGV4dCk7CisgICAgaW50IGVycm9yQ29kZSA9IDA7CisKICAgICBtX29wZW5DTEltYWdlUmVzdWx0
ID0gY2xDcmVhdGVJbWFnZTJEKGNvbnRleHQtPmRldmljZUNvbnRleHQoKSwgQ0xfTUVNX1JFQURf
V1JJVEUgfCAoc291cmNlID8gQ0xfTUVNX0NPUFlfSE9TVF9QVFIgOiAwKSwKLSAgICAgICAgJmNs
SW1hZ2VGb3JtYXQsIG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50
UmVjdC5oZWlnaHQoKSwgMCwgc291cmNlLCAwKTsKKyAgICAgICAgJmNsSW1hZ2VGb3JtYXQsIG1f
YWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSwg
MCwgc291cmNlLCAmZXJyb3JDb2RlKTsKKworICAgIGlmIChlcnJvckNvZGUpIHsKKyAgICAgICAg
Y29udGV4dC0+c2V0SW5FcnJvcigpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBy
ZXR1cm4gbV9vcGVuQ0xJbWFnZVJlc3VsdDsKIH0KICNlbmRpZgpAQCAtNDUwLDE3ICs1MDYsMTcg
QEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFj
ZSBkc3RDb2xvclNwYWNlKQogCiAjaWYgRU5BQkxFKE9QRU5DTCkKICAgICBpZiAob3BlbkNMSW1h
Z2UoKSkgeworICAgICAgICBpZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKKyAgICAgICAgICAgIG1f
aW1hZ2VCdWZmZXJSZXN1bHQuY2xlYXIoKTsKICAgICAgICAgRmlsdGVyQ29udGV4dE9wZW5DTCog
Y29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LT5vcGVuQ0xUcmFuc2Zvcm1Db2xvclNwYWNlKG1f
b3BlbkNMSW1hZ2VSZXN1bHQsIGFic29sdXRlUGFpbnRSZWN0KCksIG1fcmVzdWx0Q29sb3JTcGFj
ZSwgZHN0Q29sb3JTcGFjZSk7Ci0gICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQotICAg
ICAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC5jbGVhcigpOwogICAgIH0gZWxzZSB7CiAjZW5k
aWYKIAotICAgIC8vIEZJWE1FOiBXZSBjYW4gYXZvaWQgdGhpcyBwb3RlbnRpYWxseSB1bm5lY2Vz
c2FyeSBJbWFnZUJ1ZmZlciBjb252ZXJzaW9uIGJ5IGFkZGluZwotICAgIC8vIGNvbG9yIHNwYWNl
IHRyYW5zZm9ybSBzdXBwb3J0IGZvciB0aGUge3ByZSx1bn1tdWx0aXBsaWVkIGFycmF5cy4KLSAg
ICBhc0ltYWdlQnVmZmVyKCktPnRyYW5zZm9ybUNvbG9yU3BhY2UobV9yZXN1bHRDb2xvclNwYWNl
LCBkc3RDb2xvclNwYWNlKTsKKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBhdm9pZCB0aGlzIHBv
dGVudGlhbGx5IHVubmVjZXNzYXJ5IEltYWdlQnVmZmVyIGNvbnZlcnNpb24gYnkgYWRkaW5nCisg
ICAgICAgIC8vIGNvbG9yIHNwYWNlIHRyYW5zZm9ybSBzdXBwb3J0IGZvciB0aGUge3ByZSx1bn1t
dWx0aXBsaWVkIGFycmF5cy4KKyAgICAgICAgYXNJbWFnZUJ1ZmZlcigpLT50cmFuc2Zvcm1Db2xv
clNwYWNlKG1fcmVzdWx0Q29sb3JTcGFjZSwgZHN0Q29sb3JTcGFjZSk7CiAKICNpZiBFTkFCTEUo
T1BFTkNMKQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDAxZDg1YTkuLmYwZmY4ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaApAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmlsdGVy
RWZmZWN0KCk7CiAKICAgICB2b2lkIGNsZWFyUmVzdWx0KCk7CisgICAgdm9pZCBjbGVhclJlc3Vs
dHNSZWN1cnNpdmUoKTsKKwogICAgIEltYWdlQnVmZmVyKiBhc0ltYWdlQnVmZmVyKCk7CiAgICAg
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShjb25zdCBJ
bnRSZWN0Jik7CiAgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNQcmVtdWx0aXBs
aWVkSW1hZ2UoY29uc3QgSW50UmVjdCYpOwpAQCAtMTA5LDcgKzExMSwxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRNYXhFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbWF4RWZmZWN0UmVjdCkg
eyBtX21heEVmZmVjdFJlY3QgPSBtYXhFZmZlY3RSZWN0OyB9IAogCiAgICAgdm9pZCBhcHBseSgp
OwotICAgIAorI2lmIEVOQUJMRShPUEVOQ0wpCisgICAgdm9pZCBhcHBseUFsbCgpOworI2Vsc2UK
KyAgICBpbmxpbmUgdm9pZCBhcHBseUFsbCgpIHsgYXBwbHkoKTsgfQorI2VuZGlmCisKICAgICAv
LyBDb3JyZWN0IGFueSBpbnZhbGlkIHBpeGVscywgaWYgbmVjZXNzYXJ5LCBpbiB0aGUgcmVzdWx0
IG9mIGEgZmlsdGVyIG9wZXJhdGlvbi4KICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGVu
c3VyZSB2YWxpZCBwaXhlbCB2YWx1ZXMgb24gZmlsdGVyIGlucHV0cyBhbmQgdGhlIGZpbmFsIHJl
c3VsdC4KICAgICAvLyBPbmx5IHRoZSBhcml0aG1ldGljIGNvbXBvc2l0ZSBmaWx0ZXIgZXZlciBu
ZWVkcyB0byBwZXJmb3JtIGNvcnJlY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3Bl
bkNMLmNwcAppbmRleCA0YzMwNTk2Li5hYTQ1OTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29u
dGV4dE9wZW5DTC5jcHAKQEAgLTg4LDYgKzg4LDQ2IEBAIEZpbHRlckNvbnRleHRPcGVuQ0wqIEZp
bHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKQogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAK
K3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlcygpCit7CisgICAgY2xGaW5p
c2gobV9jb21tYW5kUXVldWUpOworCisgICAgaWYgKG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVz
ICE9IG9wZW5jbE5vdENvbXBpbGVkWWV0KSB7CisgICAgICAgIGZyZWVSZXNvdXJjZShtX21hdHJp
eE9wZXJhdGlvbik7CisgICAgICAgIGZyZWVSZXNvdXJjZShtX3NhdHVyYXRlQW5kSHVlUm90YXRl
T3BlcmF0aW9uKTsKKyAgICAgICAgZnJlZVJlc291cmNlKG1fbHVtaW5hbmNlT3BlcmF0aW9uKTsK
KyAgICAgICAgZnJlZVJlc291cmNlKG1fY29sb3JNYXRyaXhQcm9ncmFtKTsKKyAgICB9CisgICAg
bV9jb2xvck1hdHJpeENvbXBpbGVTdGF0dXMgPSBvcGVuY2xOb3RDb21waWxlZFlldDsKKworICAg
IGlmIChtX3R1cmJ1bGVuY2VDb21waWxlU3RhdHVzICE9IG9wZW5jbE5vdENvbXBpbGVkWWV0KSB7
CisgICAgICAgIGZyZWVSZXNvdXJjZShtX3R1cmJ1bGVuY2VPcGVyYXRpb24pOworICAgICAgICBm
cmVlUmVzb3VyY2UobV90dXJidWxlbmNlUHJvZ3JhbSk7CisgICAgfSAgICAKKyAgICBtX3R1cmJ1
bGVuY2VDb21waWxlU3RhdHVzID0gb3BlbmNsTm90Q29tcGlsZWRZZXQ7CisKKyAgICBpZiAobV90
cmFuc2Zvcm1Db2xvclNwYWNlQ29tcGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkg
eworICAgICAgICBmcmVlUmVzb3VyY2UobV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsKTsKKyAg
ICAgICAgZnJlZVJlc291cmNlKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0pOworICAgIH0K
KyAgICBtX3RyYW5zZm9ybUNvbG9yU3BhY2VDb21waWxlU3RhdHVzID0gb3BlbmNsTm90Q29tcGls
ZWRZZXQ7Cit9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZGVzdHJveUNvbnRleHQoKQor
eworICAgIGZyZWVSZXNvdXJjZXMoKTsKKworICAgIGlmIChtX2NvbW1hbmRRdWV1ZSkKKyAgICAg
ICAgY2xSZWxlYXNlQ29tbWFuZFF1ZXVlKG1fY29tbWFuZFF1ZXVlKTsKKyAgICBtX2NvbW1hbmRR
dWV1ZSA9IDA7CisKKyAgICBpZiAobV9kZXZpY2VDb250ZXh0KQorICAgICAgICBjbFJlbGVhc2VD
b250ZXh0KG1fZGV2aWNlQ29udGV4dCk7CisgICAgbV9kZXZpY2VDb250ZXh0ID0gMDsKKworICAg
IG1fY29udGV4dCA9IDA7Cit9CisKIE9wZW5DTEhhbmRsZSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpj
cmVhdGVPcGVuQ0xJbWFnZShJbnRTaXplIHBhaW50U2l6ZSkKIHsKICAgICBGaWx0ZXJDb250ZXh0
T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwpAQCAtMTE3
LDMxICsxNTcsNDMgQEAgX19rZXJuZWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKF9fcmVhZF9v
bmx5IGltYWdlMmRfdCBzb3VyY2UsIF9fd3JpdGVfb25seSBpbWEKIH0KICk7IC8vIEVuZCBvZiBP
cGVuQ0wga2VybmVscwogCitpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxl
VHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0oKQoreworICAgIGlmIChpbkVycm9yKCkgfHwgbV90
cmFuc2Zvcm1Db2xvclNwYWNlQ29tcGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSA9IGNv
bXBpbGVQcm9ncmFtKHRyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWxQcm9ncmFtKTsKKyAgICBpZiAo
IW1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0pIHsKKyAgICAgICAgc2V0SW5FcnJvcigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVs
ID0ga2VybmVsQnlOYW1lKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0sICJ0cmFuc2Zvcm1D
b2xvclNwYWNlIik7CisgICAgaWYgKCFtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwpIHsKKyAg
ICAgICAgc2V0SW5FcnJvcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV90cmFu
c2Zvcm1Db2xvclNwYWNlQ29tcGlsZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsOwor
fQorCiB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6Om9wZW5DTFRyYW5zZm9ybUNvbG9yU3BhY2Uo
T3BlbkNMSGFuZGxlJiBzb3VyY2UsIEludFJlY3Qgc291cmNlU2l6ZSwgQ29sb3JTcGFjZSBzcmND
b2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpCiB7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChPcGVuQ0xIYW5kbGUsIGRldmljZVJnYkxVVCwgKCkpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoT3BlbkNMSGFuZGxlLCBsaW5lYXJSZ2JMVVQsICgpKTsKIAotICAgIGlmIChzcmND
b2xvclNwYWNlID09IGRzdENvbG9yU3BhY2UpCisgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0
Q29sb3JTcGFjZSB8fCBpbkVycm9yKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgoc3Jj
Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlTGluZWFyUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gQ29s
b3JTcGFjZURldmljZVJHQikKICAgICAgICAgfHwgKGRzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFj
ZUxpbmVhclJHQiAmJiBkc3RDb2xvclNwYWNlICE9IENvbG9yU3BhY2VEZXZpY2VSR0IpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVy
Q29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250ZXh0KTsKLQotICAgIE9w
ZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiA9IGNvbnRleHQtPmNyZWF0ZU9wZW5DTEltYWdlKHNvdXJj
ZVNpemUuc2l6ZSgpKTsKKyAgICBjb21waWxlVHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0oKTsK
IAotICAgIGlmICghbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSkgewotICAgICAgICBtX3Ry
YW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtID0gY29tcGlsZVByb2dyYW0odHJhbnNmb3JtQ29sb3JT
cGFjZUtlcm5lbFByb2dyYW0pOwotICAgICAgICBBU1NFUlQobV90cmFuc2Zvcm1Db2xvclNwYWNl
UHJvZ3JhbSk7Ci0gICAgICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5lbCA9IGtlcm5lbEJ5
TmFtZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtLCAidHJhbnNmb3JtQ29sb3JTcGFjZSIp
OwotICAgICAgICBBU1NFUlQobV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsKTsKLSAgICB9Cisg
ICAgT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3BlbkNMSW1hZ2Uoc291cmNlU2l6
ZS5zaXplKCkpOwogCi0gICAgUnVuS2VybmVsIGtlcm5lbChjb250ZXh0LCBtX3RyYW5zZm9ybUNv
bG9yU3BhY2VLZXJuZWwsIHNvdXJjZVNpemUud2lkdGgoKSwgc291cmNlU2l6ZS5oZWlnaHQoKSk7
CisgICAgUnVuS2VybmVsIGtlcm5lbCh0aGlzLCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWws
IHNvdXJjZVNpemUud2lkdGgoKSwgc291cmNlU2l6ZS5oZWlnaHQoKSk7CiAgICAga2VybmVsLmFk
ZEFyZ3VtZW50KHNvdXJjZSk7CiAgICAga2VybmVsLmFkZEFyZ3VtZW50KGRlc3RpbmF0aW9uKTsK
IApAQCAtMTgzLDE2ICsyMzUsMjkgQEAgY2xfcHJvZ3JhbSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpj
b21waWxlUHJvZ3JhbShjb25zdCBjaGFyKiBzb3VyY2UpCiAgICAgY2xfcHJvZ3JhbSBwcm9ncmFt
OwogICAgIGNsX2ludCBlcnJvck51bWJlcjsKIAotICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNv
bnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgQVNTRVJUKGNvbnRl
eHQpOwotCi0gICAgcHJvZ3JhbSA9IGNsQ3JlYXRlUHJvZ3JhbVdpdGhTb3VyY2UoY29udGV4dC0+
bV9kZXZpY2VDb250ZXh0LCAxLCAoY29uc3QgY2hhcioqKSAmc291cmNlLCAwLCAwKTsKKyAgICBw
cm9ncmFtID0gY2xDcmVhdGVQcm9ncmFtV2l0aFNvdXJjZShtX2RldmljZUNvbnRleHQsIDEsIChj
b25zdCBjaGFyKiopICZzb3VyY2UsIDAsIDApOwogICAgIGVycm9yTnVtYmVyID0gY2xCdWlsZFBy
b2dyYW0ocHJvZ3JhbSwgMCwgMCwgMCwgMCwgMCk7CiAgICAgaWYgKGVycm9yTnVtYmVyKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBwcm9ncmFtOwogfQorCit2b2lkIEZpbHRlckNv
bnRleHRPcGVuQ0w6OmZyZWVSZXNvdXJjZShjbF9rZXJuZWwmIGhhbmRsZSkKK3sKKyAgICBpZiAo
aGFuZGxlKSB7CisgICAgICAgIGNsUmVsZWFzZUtlcm5lbChoYW5kbGUpOworICAgICAgICBoYW5k
bGUgPSAwOworICAgIH0KK30KKwordm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpmcmVlUmVzb3Vy
Y2UoY2xfcHJvZ3JhbSYgaGFuZGxlKQoreworICAgIGlmIChoYW5kbGUpIHsKKyAgICAgICAgY2xS
ZWxlYXNlUHJvZ3JhbShoYW5kbGUpOworICAgICAgICBoYW5kbGUgPSAwOworICAgIH0KK30KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9w
ZW5DTC5oCmluZGV4IGIxODk4YjYuLmFkNGZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4
dE9wZW5DTC5oCkBAIC00NCw5ICs0NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBG
aWx0ZXJDb250ZXh0T3BlbkNMIHsKIHB1YmxpYzoKICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKCkK
LSAgICAgICAgOiBtX2RldmljZUlkKDApCisgICAgICAgIDogbV9pbkVycm9yKGZhbHNlKQorICAg
ICAgICAsIG1fZGV2aWNlSWQoMCkKICAgICAgICAgLCBtX2RldmljZUNvbnRleHQoMCkKICAgICAg
ICAgLCBtX2NvbW1hbmRRdWV1ZSgwKQorICAgICAgICAsIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUNv
bXBpbGVTdGF0dXMob3BlbmNsTm90Q29tcGlsZWRZZXQpCiAgICAgICAgICwgbV90cmFuc2Zvcm1D
b2xvclNwYWNlUHJvZ3JhbSgwKQogICAgICAgICAsIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5l
bCgwKQogICAgICAgICAsIG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzKG9wZW5jbE5vdENvbXBp
bGVkWWV0KQpAQCAtNjcsMTEgKzY5LDE5IEBAIHB1YmxpYzoKICAgICBjbF9jb250ZXh0IGRldmlj
ZUNvbnRleHQoKSB7IHJldHVybiBtX2RldmljZUNvbnRleHQ7IH0KICAgICBjbF9jb21tYW5kX3F1
ZXVlIGNvbW1hbmRRdWV1ZSgpIHsgcmV0dXJuIG1fY29tbWFuZFF1ZXVlOyB9CiAKKyAgICB2b2lk
IHNldEluRXJyb3IoYm9vbCBlcnJvckNvZGUgPSB0cnVlKSB7IG1faW5FcnJvciA9IGVycm9yQ29k
ZTsgfQorICAgIGJvb2wgaW5FcnJvcigpIHsgcmV0dXJuIG1faW5FcnJvcjsgfQorCisgICAgdm9p
ZCBmcmVlUmVzb3VyY2VzKCk7CisgICAgdm9pZCBkZXN0cm95Q29udGV4dCgpOworCiAgICAgT3Bl
bkNMSGFuZGxlIGNyZWF0ZU9wZW5DTEltYWdlKEludFNpemUpOworCisgICAgaW5saW5lIHZvaWQg
Y29tcGlsZVRyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKCk7CiAgICAgdm9pZCBvcGVuQ0xUcmFu
c2Zvcm1Db2xvclNwYWNlKE9wZW5DTEhhbmRsZSYsIEludFJlY3QsIENvbG9yU3BhY2UsIENvbG9y
U3BhY2UpOwogCi0gICAgaW5saW5lIGJvb2wgY29tcGlsZUZFQ29sb3JNYXRyaXgoKTsKLSAgICBp
bmxpbmUgYm9vbCBjb21waWxlRkVUdXJidWxlbmNlKCk7CisgICAgaW5saW5lIHZvaWQgY29tcGls
ZUZFQ29sb3JNYXRyaXgoKTsKKyAgICBpbmxpbmUgdm9pZCBjb21waWxlRkVUdXJidWxlbmNlKCk7
CiAKICAgICBpbmxpbmUgdm9pZCBhcHBseUZFQ29sb3JNYXRyaXgoT3BlbkNMSGFuZGxlLCBJbnRT
aXplLCBPcGVuQ0xIYW5kbGUsIEludFBvaW50LCBmbG9hdCosIGludCk7CiAgICAgaW5saW5lIHZv
aWQgYXBwbHlGRVR1cmJ1bGVuY2UoT3BlbkNMSGFuZGxlLCBJbnRTaXplLCBpbnQsIHZvaWQqLCB2
b2lkKiwgdm9pZCosIHZvaWQqLCB2b2lkKiwKQEAgLTg0LDcgKzk0LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIFJ1bktlcm5lbChGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0LCBjbF9rZXJu
ZWwga2VybmVsLCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCiAgICAgICAgICAgICAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKICAgICAgICAgICAgICAgICAsIG1fa2VybmVsKGtlcm5lbCkK
LSAgICAgICAgICAgICAgICAsIGluZGV4KDApCisgICAgICAgICAgICAgICAgLCBtX2luZGV4KDAp
CisgICAgICAgICAgICAgICAgLCBtX2Vycm9yKGNvbnRleHQtPmluRXJyb3IoKSkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBtX2dsb2JhbFNpemVbMF0gPSB3aWR0aDsKICAgICAgICAg
ICAgICAgICBtX2dsb2JhbFNpemVbMV0gPSBoZWlnaHQ7CkBAIC05Miw2MCArMTAzLDg0IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgIHZvaWQgYWRkQXJndW1lbnQoT3BlbkNMSGFuZGxlIGhhbmRs
ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjbFNldEtlcm5lbEFyZyhtX2tlcm5l
bCwgaW5kZXgrKywgc2l6ZW9mKE9wZW5DTEhhbmRsZSksIGhhbmRsZS5oYW5kbGVBZGRyZXNzKCkp
OworICAgICAgICAgICAgICAgIGlmICghbV9lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgbV9l
cnJvciA9IGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBtX2luZGV4KyssIHNpemVvZihPcGVuQ0xI
YW5kbGUpLCBoYW5kbGUuaGFuZGxlQWRkcmVzcygpKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgdm9pZCBhZGRBcmd1bWVudChjbF9pbnQgdmFsdWUpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIGluZGV4KyssIHNpemVvZihjbF9p
bnQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigmdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIW1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbFNldEtlcm5lbEFy
ZyhtX2tlcm5lbCwgbV9pbmRleCsrLCBzaXplb2YoY2xfaW50KSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oJnZhbHVlKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZvaWQgYWRkQXJn
dW1lbnQoY2xfZmxvYXQgdmFsdWUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xT
ZXRLZXJuZWxBcmcobV9rZXJuZWwsIGluZGV4KyssIHNpemVvZihjbF9mbG9hdCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCZ2YWx1ZSkpOworICAgICAgICAgICAgICAgIGlmICghbV9lcnJvcikK
KyAgICAgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBt
X2luZGV4KyssIHNpemVvZihjbF9mbG9hdCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZ2YWx1
ZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2b2lkIGFkZEFyZ3VtZW50KGNsX3Nh
bXBsZXIgaGFuZGxlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsU2V0S2VybmVs
QXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoY2xfc2FtcGxlciksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCZoYW5kbGUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAg
ICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRl
eCsrLCBzaXplb2YoY2xfc2FtcGxlciksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZoYW5kbGUp
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgT3BlbkNMSGFuZGxlIGFkZEFyZ3VtZW50
KHZvaWQqIGJ1ZmZlciwgaW50IHNpemUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
T3BlbkNMSGFuZGxlIGhhbmRsZShjbENyZWF0ZUJ1ZmZlcihtX2NvbnRleHQtPmRldmljZUNvbnRl
eHQoKSwgQ0xfTUVNX1JFQURfT05MWSwgc2l6ZSwgMCwgMCkpOwotICAgICAgICAgICAgICAgIGNs
RW5xdWV1ZVdyaXRlQnVmZmVyKG1fY29udGV4dC0+Y29tbWFuZFF1ZXVlKCksIGhhbmRsZSwgQ0xf
VFJVRSwgMCwgc2l6ZSwgYnVmZmVyLCAwLCAwLCAwKTsKLSAgICAgICAgICAgICAgICBjbFNldEtl
cm5lbEFyZyhtX2tlcm5lbCwgaW5kZXgrKywgc2l6ZW9mKE9wZW5DTEhhbmRsZSksIGhhbmRsZS5o
YW5kbGVBZGRyZXNzKCkpOworICAgICAgICAgICAgICAgIGlmIChtX2Vycm9yKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBPcGVuQ0xIYW5kbGUgaGFuZGxl
KGNsQ3JlYXRlQnVmZmVyKG1fY29udGV4dC0+ZGV2aWNlQ29udGV4dCgpLCBDTF9NRU1fUkVBRF9P
TkxZLCBzaXplLCAwLCAmbV9lcnJvcikpOworICAgICAgICAgICAgICAgIGlmIChtX2Vycm9yKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBtX2Vycm9yID0g
Y2xFbnF1ZXVlV3JpdGVCdWZmZXIobV9jb250ZXh0LT5jb21tYW5kUXVldWUoKSwgaGFuZGxlLCBD
TF9UUlVFLCAwLCBzaXplLCBidWZmZXIsIDAsIDAsIDApOworICAgICAgICAgICAgICAgIGlmICht
X2Vycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBt
X2Vycm9yID0gY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIG1faW5kZXgrKywgc2l6ZW9mKE9wZW5D
TEhhbmRsZSksIGhhbmRsZS5oYW5kbGVBZGRyZXNzKCkpOworICAgICAgICAgICAgICAgIGlmICht
X2Vycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gaGFuZGxlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2b2lkIHJ1bigpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xGaW5pc2gobV9jb250ZXh0LT5tX2NvbW1h
bmRRdWV1ZSk7Ci0gICAgICAgICAgICAgICAgY2xFbnF1ZXVlTkRSYW5nZUtlcm5lbChtX2NvbnRl
eHQtPm1fY29tbWFuZFF1ZXVlLCBtX2tlcm5lbCwgMiwgMCwgbV9nbG9iYWxTaXplLCAwLCAwLCAw
LCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJvcikgeworICAgICAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPnNldEluRXJyb3IoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX2Vycm9yID0gY2xGaW5pc2gobV9j
b250ZXh0LT5tX2NvbW1hbmRRdWV1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Vycm9yKQor
ICAgICAgICAgICAgICAgICAgICBtX2Vycm9yID0gY2xFbnF1ZXVlTkRSYW5nZUtlcm5lbChtX2Nv
bnRleHQtPm1fY29tbWFuZFF1ZXVlLCBtX2tlcm5lbCwgMiwgMCwgbV9nbG9iYWxTaXplLCAwLCAw
LCAwLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJvcikKKyAgICAgICAgICAgICAgICAg
ICAgbV9jb250ZXh0LT5zZXRJbkVycm9yKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IEZpbHRlckNvbnRleHRPcGVuQ0wqIG1fY29udGV4dDsKICAgICAgICAgICAgIGNsX2tlcm5lbCBt
X2tlcm5lbDsKICAgICAgICAgICAgIHNpemVfdCBtX2dsb2JhbFNpemVbMl07Ci0gICAgICAgICAg
ICBpbnQgaW5kZXg7CisgICAgICAgICAgICBpbnQgbV9pbmRleDsKKyAgICAgICAgICAgIGludCBt
X2Vycm9yOwogICAgICAgICB9OwogCiAgICAgZW51bSBPcGVuQ0xDb21waWxlU3RhdHVzIHsKICAg
ICAgICAgb3BlbmNsTm90Q29tcGlsZWRZZXQsCi0gICAgICAgIG9wZW5jbENvbXBpbGVGYWlsZWQs
CiAgICAgICAgIG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsCiAgICAgfTsKIAotICAgIHN0YXRpYyBj
bF9wcm9ncmFtIGNvbXBpbGVQcm9ncmFtKGNvbnN0IGNoYXIqKTsKKyAgICBjbF9wcm9ncmFtIGNv
bXBpbGVQcm9ncmFtKGNvbnN0IGNoYXIqKTsKICAgICBzdGF0aWMgaW5saW5lIGNsX2tlcm5lbCBr
ZXJuZWxCeU5hbWUoY2xfcHJvZ3JhbSBwcm9ncmFtLCBjb25zdCBjaGFyKiBuYW1lKSB7IHJldHVy
biBjbENyZWF0ZUtlcm5lbChwcm9ncmFtLCBuYW1lLCAwKTsgfQogCisgICAgc3RhdGljIGlubGlu
ZSB2b2lkIGZyZWVSZXNvdXJjZShjbF9rZXJuZWwmKTsKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQg
ZnJlZVJlc291cmNlKGNsX3Byb2dyYW0mKTsKKwogICAgIHN0YXRpYyBGaWx0ZXJDb250ZXh0T3Bl
bkNMKiBtX2NvbnRleHQ7CiAgICAgc3RhdGljIGludCBtX2FscmVhZHlJbml0aWFsaXplZDsKKyAg
ICBib29sIG1faW5FcnJvcjsKIAogICAgIGNsX2RldmljZV9pZCBtX2RldmljZUlkOwogICAgIGNs
X2NvbnRleHQgbV9kZXZpY2VDb250ZXh0OwogICAgIGNsX2NvbW1hbmRfcXVldWUgbV9jb21tYW5k
UXVldWU7CiAKKyAgICBPcGVuQ0xDb21waWxlU3RhdHVzIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUNv
bXBpbGVTdGF0dXM7CiAgICAgY2xfcHJvZ3JhbSBtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFt
OwogICAgIGNsX2tlcm5lbCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVD
b2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3Bl
bmNsL09wZW5DTEZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDQ3Yzg4YzYuLmQxOGIxZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNM
RkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcApAQCAtNjYsMjggKzY2LDI3IEBAIF9f
a2VybmVsIHZvaWQgbHVtaW5hbmNlKF9fd3JpdGVfb25seSBpbWFnZTJkX3QgZGVzdGluYXRpb24s
IF9fcmVhZF9vbmx5IGltYWdlMmRfCiB9CiApOyAvLyBFbmQgb2YgT3BlbkNMIGtlcm5lbHMKIAot
aW5saW5lIGJvb2wgRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29tcGlsZUZFQ29sb3JNYXRyaXgoKQor
aW5saW5lIHZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29tcGlsZUZFQ29sb3JNYXRyaXgoKQog
ewotICAgIGlmIChtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxl
ZFlldCkKLSAgICAgICAgcmV0dXJuIG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzID09IG9wZW5j
bENvbXBpbGVTdWNjZXNzZnVsOworICAgIGlmIChpbkVycm9yKCkgfHwgbV9jb2xvck1hdHJpeENv
bXBpbGVTdGF0dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQpCisgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzID0gb3BlbmNsQ29tcGlsZUZhaWxlZDsKICAg
ICBtX2NvbG9yTWF0cml4UHJvZ3JhbSA9IGNvbXBpbGVQcm9ncmFtKGNvbG9yTWF0cml4S2VybmVs
UHJvZ3JhbSk7Ci0gICAgaWYgKCFtX2NvbG9yTWF0cml4UHJvZ3JhbSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghbV9jb2xvck1hdHJpeFByb2dyYW0pICB7CisgICAgICAgIHNldElu
RXJyb3IoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fbWF0cml4T3BlcmF0aW9u
ID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgaWYg
KCFtX21hdHJpeE9wZXJhdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fc2F0dXJh
dGVBbmRIdWVSb3RhdGVPcGVyYXRpb24gPSBrZXJuZWxCeU5hbWUobV9jb2xvck1hdHJpeFByb2dy
YW0sICJzYXR1cmF0ZUFuZEh1ZVJvdGF0ZSIpOwotICAgIGlmICghbV9zYXR1cmF0ZUFuZEh1ZVJv
dGF0ZU9wZXJhdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fbHVtaW5hbmNlT3Bl
cmF0aW9uID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9ncmFtLCAibHVtaW5hbmNlIik7
Ci0gICAgaWYgKCFtX2x1bWluYW5jZU9wZXJhdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFtX21hdHJpeE9wZXJhdGlvbiB8fCAhbV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9w
ZXJhdGlvbiB8fCAhbV9sdW1pbmFuY2VPcGVyYXRpb24pIHsKKyAgICAgICAgc2V0SW5FcnJvcigp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9jb2xvck1hdHJpeENvbXBpbGVTdGF0
dXMgPSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKLSAgICByZXR1cm4gb3BlbmNsQ29tcGlsZVN1
Y2Nlc3NmdWw7CiB9CiAKIGlubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFwcGx5RkVD
b2xvck1hdHJpeChPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24sIEludFNpemUgZGVzdGluYXRpb25T
aXplLCBPcGVuQ0xIYW5kbGUgc291cmNlLCBJbnRQb2ludCByZWxhdGl2ZVNvdXJjZUxvY2F0aW9u
LCBmbG9hdCogdmFsdWVzLCBpbnQgdHlwZSkKQEAgLTEzMCw5ICsxMjksMTUgQEAgaW5saW5lIHZv
aWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6YXBwbHlGRUNvbG9yTWF0cml4KE9wZW5DTEhhbmRsZSBk
ZXN0aW5hdGlvbiwgSW4KIGJvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseU9wZW5DTCgp
CiB7CiAgICAgRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVu
Q0w6OmNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPmNvbXBpbGVGRUNv
bG9yTWF0cml4KCkpCisKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAorICAgIGNvbnRleHQtPmNvbXBpbGVGRUNvbG9yTWF0cml4KCk7CisKKyAgICBpZiAoY29udGV4
dC0+aW5FcnJvcigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIEZpbHRlckVmZmVjdCog
aW4gPSBpbnB1dEVmZmVjdCgwKTsKICAgICBPcGVuQ0xIYW5kbGUgc291cmNlID0gaW4tPm9wZW5D
TEltYWdlKCk7CiAgICAgT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3BlbkNMSW1h
Z2VSZXN1bHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcAppbmRleCAyYzkx
YjQ3Li41ZTcyMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvb3BlbmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRVR1cmJ1bGVuY2UuY3BwCkBAIC0x
NjcsMjEgKzE2NywyNSBAQCBfX2tlcm5lbCB2b2lkIFR1cmJ1bGVuY2UoX193cml0ZV9vbmx5IGlt
YWdlMmRfdCBkZXN0aW5hdGlvbiwgX19jb25zdGFudCBmbG9hdCAqdAogfQogKTsgLy8gRW5kIG9m
IE9wZW5DTCBrZXJuZWxzCiAKLWlubGluZSBib29sIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBp
bGVGRVR1cmJ1bGVuY2UoKQoraW5saW5lIHZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29tcGls
ZUZFVHVyYnVsZW5jZSgpCiB7Ci0gICAgaWYgKG1fdHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMgIT0g
b3BlbmNsTm90Q29tcGlsZWRZZXQpCi0gICAgICAgIHJldHVybiBtX3R1cmJ1bGVuY2VDb21waWxl
U3RhdHVzID09IG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsOwogCi0gICAgbV90dXJidWxlbmNlQ29t
cGlsZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVGYWlsZWQ7CisgICAgaWYgKGluRXJyb3IoKSB8fCBt
X3R1cmJ1bGVuY2VDb21waWxlU3RhdHVzICE9IG9wZW5jbE5vdENvbXBpbGVkWWV0KQorICAgICAg
ICByZXR1cm47CisKICAgICBtX3R1cmJ1bGVuY2VQcm9ncmFtID0gY29tcGlsZVByb2dyYW0odHVy
YnVsZW5jZUtlcm5lbFByb2dyYW0pOwotICAgIGlmICghbV90dXJidWxlbmNlUHJvZ3JhbSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV90dXJidWxlbmNlUHJvZ3JhbSkgeworICAg
ICAgICBzZXRJbkVycm9yKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX3R1cmJ1
bGVuY2VPcGVyYXRpb24gPSBrZXJuZWxCeU5hbWUobV90dXJidWxlbmNlUHJvZ3JhbSwgIlR1cmJ1
bGVuY2UiKTsKLSAgICBpZiAoIW1fdHVyYnVsZW5jZU9wZXJhdGlvbikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghbV90dXJidWxlbmNlT3BlcmF0aW9uKSB7CisgICAgICAgIHNldElu
RXJyb3IoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG1fdHVyYnVsZW5jZUNvbXBp
bGVTdGF0dXMgPSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKLSAgICByZXR1cm4gb3BlbmNsQ29t
cGlsZVN1Y2Nlc3NmdWw7CiB9CiAKIGlubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFw
cGx5RkVUdXJidWxlbmNlKE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiwKQEAgLTIyNCw5ICsyMjgs
MTQgQEAgaW5saW5lIHZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6YXBwbHlGRVR1cmJ1bGVuY2Uo
T3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uLAogYm9vbCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBw
bHlPcGVuQ0woKQogewogICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJD
b250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5j
b21waWxlRkVUdXJidWxlbmNlKCkpCisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICBjb250ZXh0LT5jb21waWxlRkVUdXJidWxlbmNlKCk7CisKKyAgICBpZiAo
Y29udGV4dC0+aW5FcnJvcigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIE9wZW5DTEhh
bmRsZSBkZXN0aW5hdGlvbiA9IGNyZWF0ZU9wZW5DTEltYWdlUmVzdWx0KCk7CiAKICAgICBQYWlu
dGluZ0RhdGEgcGFpbnRpbmdEYXRhKG1fc2VlZCwgcm91bmRlZEludFNpemUoZmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCkuc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDI5ODNjNGYuLjk4
OTkwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IEdyYXBoaWNzQ28KICAgICAgICAgLy8gQWx3YXlzIHRydWUgaWYgZmlsdGVyRGF0YSBpcyBqdXN0
IGJ1aWx0IChmaWx0ZXJEYXRhLT5zdGF0ZSA9PSBGaWx0ZXJEYXRhOjpCdWlsdCkuCiAgICAgICAg
IGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAgIGZpbHRlckRhdGEt
PnN0YXRlID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT5h
cHBseSgpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHlBbGwoKTsKICAgICAgICAgICAg
IGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwogICAgICAgICAgICAg
bGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="206135"
          type_id="1"
          status="-"
          setter="zherczeg"
    />
    <flag name="commit-queue"
          id="206136"
          type_id="3"
          status="-"
          setter="zherczeg"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187120</attachid>
            <date>2013-02-07 08:36:47 -0800</date>
            <delta_ts>2013-02-11 08:53:05 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25225</size>
            <attacher name="Tamas Czene">tczene</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZGZjZDVjLi42ZGQxZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTMtMDItMDcgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBBZGQgZXJyb3IgY2hlY2tpbmcgaW50byBPcGVuQ0wgdmVyc2lvbiBvZiBTVkcgZmls
dGVycy4KKyAgICAgICAgSW4gY2FzZSBvZiBhbiBlcnJvciB0aGUgcHJvZ3JhbSBydW5zIHRocm91
Z2ggYWxsIHRoZSByZW1haW5pbmcgZmlsdGVycyBieSBkb2luZyBub3RoaW5nLiBBZnRlciB0aGF0
IGRlbGV0ZXMgdGhlIHJlc3VsdHMgb2YgZXZlcnkgZmlsdGVyIGFuZCBzdGFydHMgc29mdHdhcmUg
cmVuZGVyaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA3NDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHlBbGwpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdHNSZWN1cnNpdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpvcGVuQ0xJbWFnZVRvSW1hZ2VCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVPcGVuQ0xJbWFnZVJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
Lmg6CisgICAgICAgIChGaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjphcHBseUFsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9G
aWx0ZXJDb250ZXh0T3BlbkNMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRP
cGVuQ0w6OmlzRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJDb250ZXh0T3BlbkNMOjpkZXN0cm95Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlVHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6b3BlbkNMVHJhbnNmb3JtQ29s
b3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpmcmVlUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29u
dGV4dE9wZW5DTC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6Rmls
dGVyQ29udGV4dE9wZW5DTCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNM
OjpzZXRJbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6Omlu
RXJyb3IpOgorICAgICAgICAoRmlsdGVyQ29udGV4dE9wZW5DTCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6OlJ1bktlcm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6OmFkZEFyZ3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OlJ1bktlcm5lbDo6cnVuKToKKyAg
ICAgICAgKFJ1bktlcm5lbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5j
bC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRl
eHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29s
b3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRVR1cmJ1bGVuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5T3BlbkNMKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisKIDIwMTMtMDIt
MDYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXpl
IEdseXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhzIGFyZSBhdmFpbGFibGUgaW4gdGhl
IHNhbWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBkNzM1NGY2Li5hN2YxNmI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwCkBAIC05Nyw2ICs5NywyNCBAQCBGaWx0ZXJFZmZlY3QqIEZpbHRlckVm
ZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVtYmVyKSBjb25zdAogICAgIHJldHVybiBtX2lu
cHV0RWZmZWN0cy5hdChudW1iZXIpLmdldCgpOwogfQogCisjaWYgRU5BQkxFKE9QRU5DTCkKK3Zv
aWQgRmlsdGVyRWZmZWN0OjphcHBseUFsbCgpCit7CisgICAgaWYgKGhhc1Jlc3VsdCgpKQorICAg
ICAgICByZXR1cm47CisgICAgRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZpbHRlckNv
bnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkgeworICAgICAgICBhcHBs
eSgpOworICAgICAgICBpZiAoIWNvbnRleHQtPmluRXJyb3IoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CisgICAgICAgIGNvbnRleHQtPmRl
c3Ryb3lDb250ZXh0KCk7CisgICAgfQorICAgIC8vIFNvZnR3YXJlIGNvZGUgcGF0aC4KKyAgICBh
cHBseSgpOworfQorI2VuZGlmCisKIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiB7CiAgICAg
aWYgKGhhc1Jlc3VsdCgpKQpAQCAtMjIzLDYgKzI0MSwxOCBAQCB2b2lkIEZpbHRlckVmZmVjdDo6
Y2xlYXJSZXN1bHQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRmlsdGVyRWZmZWN0OjpjbGVhclJlc3Vs
dHNSZWN1cnNpdmUoKQoreworICAgIC8vIENsZWFyIGFsbCByZXN1bHRzLCByZWdhcmRsZXNzIHRo
YXQgdGhlIGN1cnJlbnQgZWZmZWN0IGhhcworICAgIC8vIGEgcmVzdWx0LiBDYW4gYmUgdXNlZCBp
ZiBhbiBlZmZlY3QgaXMgaW4gYW4gZXJyb25lb3VzIHN0YXRlLgorICAgIGlmIChoYXNSZXN1bHQo
KSkKKyAgICAgICAgY2xlYXJSZXN1bHQoKTsKKworICAgIHVuc2lnbmVkIHNpemUgPSBtX2lucHV0
RWZmZWN0cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkK
KyAgICAgICAgbV9pbnB1dEVmZmVjdHMuYXQoaSkuZ2V0KCktPmNsZWFyUmVzdWx0c1JlY3Vyc2l2
ZSgpOworfQorCiBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyKCkKIHsK
ICAgICBpZiAoIWhhc1Jlc3VsdCgpKQpAQCAtMjQ4LDEzICsyNzgsMjMgQEAgSW1hZ2VCdWZmZXIq
IEZpbHRlckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVmZmVyKCkKICAgICBGaWx0ZXJDb250
ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwogICAg
IEFTU0VSVChjb250ZXh0KTsKIAorICAgIGlmIChjb250ZXh0LT5pbkVycm9yKCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaW50IGVycm9yQ29kZSA9IDA7CisKICAgICBzaXplX3Qgb3JpZ2lu
WzNdID0geyAwLCAwLCAwIH07CiAgICAgc2l6ZV90IHJlZ2lvblszXSA9IHsgbV9hYnNvbHV0ZVBh
aW50UmVjdC53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpLCAxIH07CiAKICAg
ICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGRlc3RpbmF0aW9uUGl4ZWxBcnJheSA9IFVpbnQ4
Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNv
bHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwogCi0gICAgY2xGaW5pc2goY29udGV4dC0+Y29t
bWFuZFF1ZXVlKCkpOwotICAgIGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21tYW5kUXVl
dWUoKSwgbV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24sIDAsIDAs
IGRlc3RpbmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKTsKKyAgICBlcnJvckNvZGUg
PSBjbEZpbmlzaChjb250ZXh0LT5jb21tYW5kUXVldWUoKSk7CisgICAgaWYgKGNvbnRleHQtPmlz
RmFpbGVkKCFlcnJvckNvZGUpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGVycm9yQ29kZSA9
IGNsRW5xdWV1ZVJlYWRJbWFnZShjb250ZXh0LT5jb21tYW5kUXVldWUoKSwgbV9vcGVuQ0xJbWFn
ZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2luLCByZWdpb24sIDAsIDAsIGRlc3RpbmF0aW9uUGl4ZWxB
cnJheS0+ZGF0YSgpLCAwLCAwLCAwKTsKKyAgICBpZiAoY29udGV4dC0+aXNGYWlsZWQoIWVycm9y
Q29kZSkpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IElt
YWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEludFJl
Y3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
KTsKQEAgLTQyNiwxNSArNDY2LDI0IEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6
OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAjaWYgRU5BQkxFKE9QRU5DTCkKIE9w
ZW5DTEhhbmRsZSBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZU9wZW5DTEltYWdlUmVzdWx0KHVpbnQ4X3Qq
IHNvdXJjZSkKIHsKKyAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29u
dGV4dE9wZW5DTDo6Y29udGV4dCgpOworICAgIEFTU0VSVChjb250ZXh0KTsKKworICAgIGlmIChj
b250ZXh0LT5pbkVycm9yKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgQVNTRVJUKCFoYXNS
ZXN1bHQoKSk7CiAgICAgY2xfaW1hZ2VfZm9ybWF0IGNsSW1hZ2VGb3JtYXQ7CiAgICAgY2xJbWFn
ZUZvcm1hdC5pbWFnZV9jaGFubmVsX29yZGVyID0gQ0xfUkdCQTsKICAgICBjbEltYWdlRm9ybWF0
LmltYWdlX2NoYW5uZWxfZGF0YV90eXBlID0gQ0xfVU5PUk1fSU5UODsKIAotICAgIEZpbHRlckNv
bnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0g
ICAgQVNTRVJUKGNvbnRleHQpOworICAgIGludCBlcnJvckNvZGUgPSAwOworCiAgICAgbV9vcGVu
Q0xJbWFnZVJlc3VsdCA9IGNsQ3JlYXRlSW1hZ2UyRChjb250ZXh0LT5kZXZpY2VDb250ZXh0KCks
IENMX01FTV9SRUFEX1dSSVRFIHwgKHNvdXJjZSA/IENMX01FTV9DT1BZX0hPU1RfUFRSIDogMCks
Ci0gICAgICAgICZjbEltYWdlRm9ybWF0LCBtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCksIG1f
YWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCksIDAsIHNvdXJjZSwgMCk7CisgICAgICAgICZjbElt
YWdlRm9ybWF0LCBtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCksIG1fYWJzb2x1dGVQYWludFJl
Y3QuaGVpZ2h0KCksIDAsIHNvdXJjZSwgJmVycm9yQ29kZSk7CisgICAgaWYgKGNvbnRleHQtPmlz
RmFpbGVkKCFlcnJvckNvZGUpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIHJldHVybiBtX29w
ZW5DTEltYWdlUmVzdWx0OwogfQogI2VuZGlmCkBAIC00NTAsMTcgKzQ5OSwxNyBAQCB2b2lkIEZp
bHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlIGRzdENvbG9y
U3BhY2UpCiAKICNpZiBFTkFCTEUoT1BFTkNMKQogICAgIGlmIChvcGVuQ0xJbWFnZSgpKSB7Cisg
ICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQorICAgICAgICAgICAgbV9pbWFnZUJ1ZmZl
clJlc3VsdC5jbGVhcigpOwogICAgICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0g
RmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwogICAgICAgICBBU1NFUlQoY29udGV4dCk7
CiAgICAgICAgIGNvbnRleHQtPm9wZW5DTFRyYW5zZm9ybUNvbG9yU3BhY2UobV9vcGVuQ0xJbWFn
ZVJlc3VsdCwgYWJzb2x1dGVQYWludFJlY3QoKSwgbV9yZXN1bHRDb2xvclNwYWNlLCBkc3RDb2xv
clNwYWNlKTsKLSAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1bHQpCi0gICAgICAgICAgICBt
X2ltYWdlQnVmZmVyUmVzdWx0LmNsZWFyKCk7CiAgICAgfSBlbHNlIHsKICNlbmRpZgogCi0gICAg
Ly8gRklYTUU6IFdlIGNhbiBhdm9pZCB0aGlzIHBvdGVudGlhbGx5IHVubmVjZXNzYXJ5IEltYWdl
QnVmZmVyIGNvbnZlcnNpb24gYnkgYWRkaW5nCi0gICAgLy8gY29sb3Igc3BhY2UgdHJhbnNmb3Jt
IHN1cHBvcnQgZm9yIHRoZSB7cHJlLHVufW11bHRpcGxpZWQgYXJyYXlzLgotICAgIGFzSW1hZ2VC
dWZmZXIoKS0+dHJhbnNmb3JtQ29sb3JTcGFjZShtX3Jlc3VsdENvbG9yU3BhY2UsIGRzdENvbG9y
U3BhY2UpOworICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGF2b2lkIHRoaXMgcG90ZW50aWFsbHkg
dW5uZWNlc3NhcnkgSW1hZ2VCdWZmZXIgY29udmVyc2lvbiBieSBhZGRpbmcKKyAgICAgICAgLy8g
Y29sb3Igc3BhY2UgdHJhbnNmb3JtIHN1cHBvcnQgZm9yIHRoZSB7cHJlLHVufW11bHRpcGxpZWQg
YXJyYXlzLgorICAgICAgICBhc0ltYWdlQnVmZmVyKCktPnRyYW5zZm9ybUNvbG9yU3BhY2UobV9y
ZXN1bHRDb2xvclNwYWNlLCBkc3RDb2xvclNwYWNlKTsKIAogI2lmIEVOQUJMRShPUEVOQ0wpCiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggMDFkODVhOS4uZjBmZjg4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5o
CkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3QoKTsK
IAogICAgIHZvaWQgY2xlYXJSZXN1bHQoKTsKKyAgICB2b2lkIGNsZWFyUmVzdWx0c1JlY3Vyc2l2
ZSgpOworCiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZmZXIoKTsKICAgICBQYXNzUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsK
ICAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJbWFnZShj
b25zdCBJbnRSZWN0Jik7CkBAIC0xMDksNyArMTExLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dE1heEVmZmVjdFJlY3QoY29uc3QgRmxvYXRSZWN0JiBtYXhFZmZlY3RSZWN0KSB7IG1fbWF4RWZm
ZWN0UmVjdCA9IG1heEVmZmVjdFJlY3Q7IH0gCiAKICAgICB2b2lkIGFwcGx5KCk7Ci0gICAgCisj
aWYgRU5BQkxFKE9QRU5DTCkKKyAgICB2b2lkIGFwcGx5QWxsKCk7CisjZWxzZQorICAgIGlubGlu
ZSB2b2lkIGFwcGx5QWxsKCkgeyBhcHBseSgpOyB9CisjZW5kaWYKKwogICAgIC8vIENvcnJlY3Qg
YW55IGludmFsaWQgcGl4ZWxzLCBpZiBuZWNlc3NhcnksIGluIHRoZSByZXN1bHQgb2YgYSBmaWx0
ZXIgb3BlcmF0aW9uLgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZW5zdXJlIHZhbGlk
IHBpeGVsIHZhbHVlcyBvbiBmaWx0ZXIgaW5wdXRzIGFuZCB0aGUgZmluYWwgcmVzdWx0LgogICAg
IC8vIE9ubHkgdGhlIGFyaXRobWV0aWMgY29tcG9zaXRlIGZpbHRlciBldmVyIG5lZWRzIHRvIHBl
cmZvcm0gY29ycmVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuY3BwCmlu
ZGV4IDRjMzA1OTYuLjM5NTUxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNM
LmNwcApAQCAtODgsNiArODgsNTMgQEAgRmlsdGVyQ29udGV4dE9wZW5DTCogRmlsdGVyQ29udGV4
dE9wZW5DTDo6Y29udGV4dCgpCiAgICAgcmV0dXJuIG1fY29udGV4dDsKIH0KIAorYm9vbCBGaWx0
ZXJDb250ZXh0T3BlbkNMOjppc0ZhaWxlZChib29sIHZhbHVlKQoreworICAgIGlmICghdmFsdWUp
CisgICAgICAgIHNldEluRXJyb3IoKTsKKyAgICByZXR1cm4gIXZhbHVlOworfQorCit2b2lkIEZp
bHRlckNvbnRleHRPcGVuQ0w6OmZyZWVSZXNvdXJjZXMoKQoreworICAgIGNsRmluaXNoKG1fY29t
bWFuZFF1ZXVlKTsKKworICAgIGlmIChtX2NvbG9yTWF0cml4V2FzQ29tcGlsZWQpIHsKKyAgICAg
ICAgZnJlZVJlc291cmNlKG1fbWF0cml4T3BlcmF0aW9uKTsKKyAgICAgICAgZnJlZVJlc291cmNl
KG1fc2F0dXJhdGVBbmRIdWVSb3RhdGVPcGVyYXRpb24pOworICAgICAgICBmcmVlUmVzb3VyY2Uo
bV9sdW1pbmFuY2VPcGVyYXRpb24pOworICAgICAgICBmcmVlUmVzb3VyY2UobV9jb2xvck1hdHJp
eFByb2dyYW0pOworICAgIH0KKyAgICBtX2NvbG9yTWF0cml4V2FzQ29tcGlsZWQgPSBmYWxzZTsK
KworICAgIGlmIChtX3R1cmJ1bGVuY2VXYXNDb21waWxlZCkgeworICAgICAgICBmcmVlUmVzb3Vy
Y2UobV90dXJidWxlbmNlT3BlcmF0aW9uKTsKKyAgICAgICAgZnJlZVJlc291cmNlKG1fdHVyYnVs
ZW5jZVByb2dyYW0pOworICAgIH0gICAgCisgICAgbV90dXJidWxlbmNlV2FzQ29tcGlsZWQgPSBm
YWxzZTsKKworICAgIGlmIChtX3RyYW5zZm9ybUNvbG9yU3BhY2VXYXNDb21waWxlZCkgeworICAg
ICAgICBmcmVlUmVzb3VyY2UobV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsKTsKKyAgICAgICAg
ZnJlZVJlc291cmNlKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0pOworICAgIH0KKyAgICBt
X3RyYW5zZm9ybUNvbG9yU3BhY2VXYXNDb21waWxlZCA9IGZhbHNlOworfQorCit2b2lkIEZpbHRl
ckNvbnRleHRPcGVuQ0w6OmRlc3Ryb3lDb250ZXh0KCkKK3sKKyAgICBmcmVlUmVzb3VyY2VzKCk7
CisKKyAgICBpZiAobV9jb21tYW5kUXVldWUpCisgICAgICAgIGNsUmVsZWFzZUNvbW1hbmRRdWV1
ZShtX2NvbW1hbmRRdWV1ZSk7CisgICAgbV9jb21tYW5kUXVldWUgPSAwOworCisgICAgaWYgKG1f
ZGV2aWNlQ29udGV4dCkKKyAgICAgICAgY2xSZWxlYXNlQ29udGV4dChtX2RldmljZUNvbnRleHQp
OworICAgIG1fZGV2aWNlQ29udGV4dCA9IDA7CisKKyAgICBtX2NvbnRleHQgPSAwOworfQorCiBP
cGVuQ0xIYW5kbGUgRmlsdGVyQ29udGV4dE9wZW5DTDo6Y3JlYXRlT3BlbkNMSW1hZ2UoSW50U2l6
ZSBwYWludFNpemUpCiB7CiAgICAgRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZpbHRl
ckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKQEAgLTExNywzMSArMTY0LDM3IEBAIF9fa2VybmVs
IHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShfX3JlYWRfb25seSBpbWFnZTJkX3Qgc291cmNlLCBf
X3dyaXRlX29ubHkgaW1hCiB9CiApOyAvLyBFbmQgb2YgT3BlbkNMIGtlcm5lbHMKIAoraW5saW5l
IHZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29tcGlsZVRyYW5zZm9ybUNvbG9yU3BhY2VQcm9n
cmFtKCkKK3sKKyAgICBpZiAobV90cmFuc2Zvcm1Db2xvclNwYWNlV2FzQ29tcGlsZWQgfHwgaW5F
cnJvcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RyYW5zZm9ybUNvbG9yU3BhY2VXYXND
b21waWxlZCA9IHRydWU7CisKKyAgICBpZiAoaXNGYWlsZWQoKG1fdHJhbnNmb3JtQ29sb3JTcGFj
ZVByb2dyYW0gPSBjb21waWxlUHJvZ3JhbSh0cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsUHJvZ3Jh
bSkpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVs
ID0ga2VybmVsQnlOYW1lKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0sICJ0cmFuc2Zvcm1D
b2xvclNwYWNlIik7CisgICAgaXNGYWlsZWQobV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsKTsK
K30KKwogdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpvcGVuQ0xUcmFuc2Zvcm1Db2xvclNwYWNl
KE9wZW5DTEhhbmRsZSYgc291cmNlLCBJbnRSZWN0IHNvdXJjZVNpemUsIENvbG9yU3BhY2Ugc3Jj
Q29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKQogewogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoT3BlbkNMSGFuZGxlLCBkZXZpY2VSZ2JMVVQsICgpKTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKE9wZW5DTEhhbmRsZSwgbGluZWFyUmdiTFVULCAoKSk7CiAKLSAgICBpZiAoc3Jj
Q29sb3JTcGFjZSA9PSBkc3RDb2xvclNwYWNlKQorICAgIGlmIChzcmNDb2xvclNwYWNlID09IGRz
dENvbG9yU3BhY2UgfHwgaW5FcnJvcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoKHNy
Y0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZUxpbmVhclJHQiAmJiBzcmNDb2xvclNwYWNlICE9IENv
bG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgIHx8IChkc3RDb2xvclNwYWNlICE9IENvbG9yU3Bh
Y2VMaW5lYXJSR0IgJiYgZHN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlRGV2aWNlUkdCKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZpbHRl
ckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKLSAgICBBU1NFUlQoY29udGV4dCk7CisgICAgY29t
cGlsZVRyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKCk7CiAKLSAgICBPcGVuQ0xIYW5kbGUgZGVz
dGluYXRpb24gPSBjb250ZXh0LT5jcmVhdGVPcGVuQ0xJbWFnZShzb3VyY2VTaXplLnNpemUoKSk7
CisgICAgT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3BlbkNMSW1hZ2Uoc291cmNl
U2l6ZS5zaXplKCkpOwogCi0gICAgaWYgKCFtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKSB7
Ci0gICAgICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0gPSBjb21waWxlUHJvZ3JhbSh0
cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsUHJvZ3JhbSk7Ci0gICAgICAgIEFTU0VSVChtX3RyYW5z
Zm9ybUNvbG9yU3BhY2VQcm9ncmFtKTsKLSAgICAgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2Vy
bmVsID0ga2VybmVsQnlOYW1lKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0sICJ0cmFuc2Zv
cm1Db2xvclNwYWNlIik7Ci0gICAgICAgIEFTU0VSVChtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJu
ZWwpOwotICAgIH0KLQotICAgIFJ1bktlcm5lbCBrZXJuZWwoY29udGV4dCwgbV90cmFuc2Zvcm1D
b2xvclNwYWNlS2VybmVsLCBzb3VyY2VTaXplLndpZHRoKCksIHNvdXJjZVNpemUuaGVpZ2h0KCkp
OworICAgIFJ1bktlcm5lbCBrZXJuZWwodGhpcywgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVs
LCBzb3VyY2VTaXplLndpZHRoKCksIHNvdXJjZVNpemUuaGVpZ2h0KCkpOwogICAgIGtlcm5lbC5h
ZGRBcmd1bWVudChzb3VyY2UpOwogICAgIGtlcm5lbC5hZGRBcmd1bWVudChkZXN0aW5hdGlvbik7
CiAKQEAgLTE4MywxNiArMjM2LDI5IEBAIGNsX3Byb2dyYW0gRmlsdGVyQ29udGV4dE9wZW5DTDo6
Y29tcGlsZVByb2dyYW0oY29uc3QgY2hhciogc291cmNlKQogICAgIGNsX3Byb2dyYW0gcHJvZ3Jh
bTsKICAgICBjbF9pbnQgZXJyb3JOdW1iZXI7CiAKLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBj
b250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250
ZXh0KTsKLQotICAgIHByb2dyYW0gPSBjbENyZWF0ZVByb2dyYW1XaXRoU291cmNlKGNvbnRleHQt
Pm1fZGV2aWNlQ29udGV4dCwgMSwgKGNvbnN0IGNoYXIqKikgJnNvdXJjZSwgMCwgMCk7CisgICAg
cHJvZ3JhbSA9IGNsQ3JlYXRlUHJvZ3JhbVdpdGhTb3VyY2UobV9kZXZpY2VDb250ZXh0LCAxLCAo
Y29uc3QgY2hhcioqKSAmc291cmNlLCAwLCAwKTsKICAgICBlcnJvck51bWJlciA9IGNsQnVpbGRQ
cm9ncmFtKHByb2dyYW0sIDAsIDAsIDAsIDAsIDApOwogICAgIGlmIChlcnJvck51bWJlcikKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gcHJvZ3JhbTsKIH0KKwordm9pZCBGaWx0ZXJD
b250ZXh0T3BlbkNMOjpmcmVlUmVzb3VyY2UoY2xfa2VybmVsJiBoYW5kbGUpCit7CisgICAgaWYg
KGhhbmRsZSkgeworICAgICAgICBjbFJlbGVhc2VLZXJuZWwoaGFuZGxlKTsKKyAgICAgICAgaGFu
ZGxlID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291
cmNlKGNsX3Byb2dyYW0mIGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlKSB7CisgICAgICAgIGNs
UmVsZWFzZVByb2dyYW0oaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gMDsKKyAgICB9Cit9CiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRP
cGVuQ0wuaAppbmRleCBiMTg5OGI2Li5jYWNhNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRl
eHRPcGVuQ0wuaApAQCAtNDQsMTcgKzQ0LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEZpbHRlckNvbnRleHRPcGVuQ0wgewogcHVibGljOgogICAgIEZpbHRlckNvbnRleHRPcGVuQ0wo
KQotICAgICAgICA6IG1fZGV2aWNlSWQoMCkKKyAgICAgICAgOiBtX2luRXJyb3IoZmFsc2UpCisg
ICAgICAgICwgbV9kZXZpY2VJZCgwKQogICAgICAgICAsIG1fZGV2aWNlQ29udGV4dCgwKQogICAg
ICAgICAsIG1fY29tbWFuZFF1ZXVlKDApCisgICAgICAgICwgbV90cmFuc2Zvcm1Db2xvclNwYWNl
V2FzQ29tcGlsZWQoZmFsc2UpCiAgICAgICAgICwgbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3Jh
bSgwKQogICAgICAgICAsIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5lbCgwKQotICAgICAgICAs
IG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzKG9wZW5jbE5vdENvbXBpbGVkWWV0KQorICAgICAg
ICAsIG1fY29sb3JNYXRyaXhXYXNDb21waWxlZChmYWxzZSkKICAgICAgICAgLCBtX2NvbG9yTWF0
cml4UHJvZ3JhbSgwKQogICAgICAgICAsIG1fbWF0cml4T3BlcmF0aW9uKDApCiAgICAgICAgICwg
bV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbigwKQogICAgICAgICAsIG1fbHVtaW5hbmNl
T3BlcmF0aW9uKDApCi0gICAgICAgICwgbV90dXJidWxlbmNlQ29tcGlsZVN0YXR1cyhvcGVuY2xO
b3RDb21waWxlZFlldCkKKyAgICAgICAgLCBtX3R1cmJ1bGVuY2VXYXNDb21waWxlZChmYWxzZSkK
ICAgICAgICAgLCBtX3R1cmJ1bGVuY2VQcm9ncmFtKDApCiAgICAgICAgICwgbV90dXJidWxlbmNl
T3BlcmF0aW9uKDApCiAgICAgewpAQCAtNjcsMTEgKzY5LDIwIEBAIHB1YmxpYzoKICAgICBjbF9j
b250ZXh0IGRldmljZUNvbnRleHQoKSB7IHJldHVybiBtX2RldmljZUNvbnRleHQ7IH0KICAgICBj
bF9jb21tYW5kX3F1ZXVlIGNvbW1hbmRRdWV1ZSgpIHsgcmV0dXJuIG1fY29tbWFuZFF1ZXVlOyB9
CiAKKyAgICBpbmxpbmUgdm9pZCBzZXRJbkVycm9yKGJvb2wgZXJyb3JDb2RlID0gdHJ1ZSkgeyBt
X2luRXJyb3IgPSBlcnJvckNvZGU7IH0KKyAgICBpbmxpbmUgYm9vbCBpbkVycm9yKCkgeyByZXR1
cm4gbV9pbkVycm9yOyB9CisgICAgYm9vbCBpc0ZhaWxlZChib29sKTsKKworICAgIHZvaWQgZnJl
ZVJlc291cmNlcygpOworICAgIHZvaWQgZGVzdHJveUNvbnRleHQoKTsKKwogICAgIE9wZW5DTEhh
bmRsZSBjcmVhdGVPcGVuQ0xJbWFnZShJbnRTaXplKTsKKworICAgIGlubGluZSB2b2lkIGNvbXBp
bGVUcmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgpOwogICAgIHZvaWQgb3BlbkNMVHJhbnNmb3Jt
Q29sb3JTcGFjZShPcGVuQ0xIYW5kbGUmLCBJbnRSZWN0LCBDb2xvclNwYWNlLCBDb2xvclNwYWNl
KTsKIAotICAgIGlubGluZSBib29sIGNvbXBpbGVGRUNvbG9yTWF0cml4KCk7Ci0gICAgaW5saW5l
IGJvb2wgY29tcGlsZUZFVHVyYnVsZW5jZSgpOworICAgIGlubGluZSB2b2lkIGNvbXBpbGVGRUNv
bG9yTWF0cml4KCk7CisgICAgaW5saW5lIHZvaWQgY29tcGlsZUZFVHVyYnVsZW5jZSgpOwogCiAg
ICAgaW5saW5lIHZvaWQgYXBwbHlGRUNvbG9yTWF0cml4KE9wZW5DTEhhbmRsZSwgSW50U2l6ZSwg
T3BlbkNMSGFuZGxlLCBJbnRQb2ludCwgZmxvYXQqLCBpbnQpOwogICAgIGlubGluZSB2b2lkIGFw
cGx5RkVUdXJidWxlbmNlKE9wZW5DTEhhbmRsZSwgSW50U2l6ZSwgaW50LCB2b2lkKiwgdm9pZCos
IHZvaWQqLCB2b2lkKiwgdm9pZCosCkBAIC04NCw3ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBSdW5LZXJuZWwoRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCwgY2xfa2VybmVsIGtl
cm5lbCwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQogICAgICAgICAgICAgICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgICAgICAgICAgICAgLCBtX2tlcm5lbChrZXJuZWwpCi0gICAg
ICAgICAgICAgICAgLCBpbmRleCgwKQorICAgICAgICAgICAgICAgICwgbV9pbmRleCgwKQorICAg
ICAgICAgICAgICAgICwgbV9lcnJvcihjb250ZXh0LT5pbkVycm9yKCkpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxTaXplWzBdID0gd2lkdGg7CiAgICAgICAgICAgICAg
ICAgbV9nbG9iYWxTaXplWzFdID0gaGVpZ2h0OwpAQCAtOTIsNzAgKzEwNCw4NSBAQCBwcml2YXRl
OgogCiAgICAgICAgICAgICB2b2lkIGFkZEFyZ3VtZW50KE9wZW5DTEhhbmRsZSBoYW5kbGUpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIGlu
ZGV4KyssIHNpemVvZihPcGVuQ0xIYW5kbGUpLCBoYW5kbGUuaGFuZGxlQWRkcmVzcygpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3Ig
PSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRleCsrLCBzaXplb2YoT3BlbkNMSGFuZGxl
KSwgaGFuZGxlLmhhbmRsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IHZvaWQgYWRkQXJndW1lbnQoY2xfaW50IHZhbHVlKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoY2xfaW50KSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJnZhbHVlKSk7CisgICAgICAgICAgICAgICAgaWYgKCFt
X2Vycm9yKQorICAgICAgICAgICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxBcmcobV9r
ZXJuZWwsIG1faW5kZXgrKywgc2l6ZW9mKGNsX2ludCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCZ2YWx1ZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2b2lkIGFkZEFyZ3VtZW50
KGNsX2Zsb2F0IHZhbHVlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsU2V0S2Vy
bmVsQXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoY2xfZmxvYXQpLCByZWludGVycHJldF9j
YXN0PHZvaWQqPigmdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAg
ICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRl
eCsrLCBzaXplb2YoY2xfZmxvYXQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigmdmFsdWUpKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdm9pZCBhZGRBcmd1bWVudChjbF9zYW1wbGVy
IGhhbmRsZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjbFNldEtlcm5lbEFyZyht
X2tlcm5lbCwgaW5kZXgrKywgc2l6ZW9mKGNsX3NhbXBsZXIpLCByZWludGVycHJldF9jYXN0PHZv
aWQqPigmaGFuZGxlKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Vycm9yKQorICAgICAgICAg
ICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIG1faW5kZXgrKywg
c2l6ZW9mKGNsX3NhbXBsZXIpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigmaGFuZGxlKSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIE9wZW5DTEhhbmRsZSBhZGRBcmd1bWVudCh2b2lk
KiBidWZmZXIsIGludCBzaXplKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE9wZW5D
TEhhbmRsZSBoYW5kbGUoY2xDcmVhdGVCdWZmZXIobV9jb250ZXh0LT5kZXZpY2VDb250ZXh0KCks
IENMX01FTV9SRUFEX09OTFksIHNpemUsIDAsIDApKTsKLSAgICAgICAgICAgICAgICBjbEVucXVl
dWVXcml0ZUJ1ZmZlcihtX2NvbnRleHQtPmNvbW1hbmRRdWV1ZSgpLCBoYW5kbGUsIENMX1RSVUUs
IDAsIHNpemUsIGJ1ZmZlciwgMCwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgY2xTZXRLZXJuZWxB
cmcobV9rZXJuZWwsIGluZGV4KyssIHNpemVvZihPcGVuQ0xIYW5kbGUpLCBoYW5kbGUuaGFuZGxl
QWRkcmVzcygpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlOworICAgICAgICAgICAg
ICAgIGlmIChtX2Vycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgICAgICBPcGVuQ0xIYW5kbGUgaGFuZGxlKGNsQ3JlYXRlQnVmZmVyKG1fY29udGV4dC0+ZGV2
aWNlQ29udGV4dCgpLCBDTF9NRU1fUkVBRF9PTkxZLCBzaXplLCAwLCAmbV9lcnJvcikpOworICAg
ICAgICAgICAgICAgIGlmIChtX2Vycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgICAgICBtX2Vycm9yID0gY2xFbnF1ZXVlV3JpdGVCdWZmZXIobV9jb250ZXh0
LT5jb21tYW5kUXVldWUoKSwgaGFuZGxlLCBDTF9UUlVFLCAwLCBzaXplLCBidWZmZXIsIDAsIDAs
IDApOworICAgICAgICAgICAgICAgIGlmIChtX2Vycm9yKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxBcmcobV9rZXJu
ZWwsIG1faW5kZXgrKywgc2l6ZW9mKE9wZW5DTEhhbmRsZSksIGhhbmRsZS5oYW5kbGVBZGRyZXNz
KCkpOworICAgICAgICAgICAgICAgIHJldHVybiAhbV9lcnJvciA/IGhhbmRsZSA6IDA7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIHZvaWQgcnVuKCkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjbEZpbmlzaChtX2NvbnRleHQtPm1fY29tbWFuZFF1ZXVlKTsKLSAgICAgICAg
ICAgICAgICBjbEVucXVldWVORFJhbmdlS2VybmVsKG1fY29udGV4dC0+bV9jb21tYW5kUXVldWUs
IG1fa2VybmVsLCAyLCAwLCBtX2dsb2JhbFNpemUsIDAsIDAsIDAsIDApOworICAgICAgICAgICAg
ICAgIGlmIChtX2NvbnRleHQtPmlzRmFpbGVkKCFtX2Vycm9yKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsRmluaXNoKG1fY29udGV4
dC0+bV9jb21tYW5kUXVldWUpOworICAgICAgICAgICAgICAgIGlmICghbV9lcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsRW5xdWV1ZU5EUmFuZ2VLZXJuZWwobV9jb250ZXh0
LT5tX2NvbW1hbmRRdWV1ZSwgbV9rZXJuZWwsIDIsIDAsIG1fZ2xvYmFsU2l6ZSwgMCwgMCwgMCwg
MCk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5pc0ZhaWxlZCghbV9lcnJvcik7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIG1fY29udGV4dDsK
ICAgICAgICAgICAgIGNsX2tlcm5lbCBtX2tlcm5lbDsKICAgICAgICAgICAgIHNpemVfdCBtX2ds
b2JhbFNpemVbMl07Ci0gICAgICAgICAgICBpbnQgaW5kZXg7CisgICAgICAgICAgICBpbnQgbV9p
bmRleDsKKyAgICAgICAgICAgIGludCBtX2Vycm9yOwogICAgICAgICB9OwogCi0gICAgZW51bSBP
cGVuQ0xDb21waWxlU3RhdHVzIHsKLSAgICAgICAgb3BlbmNsTm90Q29tcGlsZWRZZXQsCi0gICAg
ICAgIG9wZW5jbENvbXBpbGVGYWlsZWQsCi0gICAgICAgIG9wZW5jbENvbXBpbGVTdWNjZXNzZnVs
Ci0gICAgfTsKLQotICAgIHN0YXRpYyBjbF9wcm9ncmFtIGNvbXBpbGVQcm9ncmFtKGNvbnN0IGNo
YXIqKTsKKyAgICBjbF9wcm9ncmFtIGNvbXBpbGVQcm9ncmFtKGNvbnN0IGNoYXIqKTsKICAgICBz
dGF0aWMgaW5saW5lIGNsX2tlcm5lbCBrZXJuZWxCeU5hbWUoY2xfcHJvZ3JhbSBwcm9ncmFtLCBj
b25zdCBjaGFyKiBuYW1lKSB7IHJldHVybiBjbENyZWF0ZUtlcm5lbChwcm9ncmFtLCBuYW1lLCAw
KTsgfQogCisgICAgc3RhdGljIGlubGluZSB2b2lkIGZyZWVSZXNvdXJjZShjbF9rZXJuZWwmKTsK
KyAgICBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZVJlc291cmNlKGNsX3Byb2dyYW0mKTsKKwogICAg
IHN0YXRpYyBGaWx0ZXJDb250ZXh0T3BlbkNMKiBtX2NvbnRleHQ7CiAgICAgc3RhdGljIGludCBt
X2FscmVhZHlJbml0aWFsaXplZDsKKyAgICBib29sIG1faW5FcnJvcjsKIAogICAgIGNsX2Rldmlj
ZV9pZCBtX2RldmljZUlkOwogICAgIGNsX2NvbnRleHQgbV9kZXZpY2VDb250ZXh0OwogICAgIGNs
X2NvbW1hbmRfcXVldWUgbV9jb21tYW5kUXVldWU7CiAKKyAgICBib29sIG1fdHJhbnNmb3JtQ29s
b3JTcGFjZVdhc0NvbXBpbGVkOwogICAgIGNsX3Byb2dyYW0gbV90cmFuc2Zvcm1Db2xvclNwYWNl
UHJvZ3JhbTsKICAgICBjbF9rZXJuZWwgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsOwogCi0g
ICAgT3BlbkNMQ29tcGlsZVN0YXR1cyBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1czsKKyAgICBi
b29sIG1fY29sb3JNYXRyaXhXYXNDb21waWxlZDsKICAgICBjbF9wcm9ncmFtIG1fY29sb3JNYXRy
aXhQcm9ncmFtOwogICAgIGNsX2tlcm5lbCBtX21hdHJpeE9wZXJhdGlvbjsKICAgICBjbF9rZXJu
ZWwgbV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbjsgCiAgICAgY2xfa2VybmVsIG1fbHVt
aW5hbmNlT3BlcmF0aW9uOwogCi0gICAgT3BlbkNMQ29tcGlsZVN0YXR1cyBtX3R1cmJ1bGVuY2VD
b21waWxlU3RhdHVzOworICAgIGJvb2wgbV90dXJidWxlbmNlV2FzQ29tcGlsZWQ7CiAgICAgY2xf
cHJvZ3JhbSBtX3R1cmJ1bGVuY2VQcm9ncmFtOwogICAgIGNsX2tlcm5lbCBtX3R1cmJ1bGVuY2VP
cGVyYXRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVDb2xvck1hdHJpeC5jcHAKaW5kZXgg
NDdjODhjNi4uMTg1ZmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFQ29sb3JNYXRyaXguY3Bw
CkBAIC02NiwyOCArNjYsMjEgQEAgX19rZXJuZWwgdm9pZCBsdW1pbmFuY2UoX193cml0ZV9vbmx5
IGltYWdlMmRfdCBkZXN0aW5hdGlvbiwgX19yZWFkX29ubHkgaW1hZ2UyZF8KIH0KICk7IC8vIEVu
ZCBvZiBPcGVuQ0wga2VybmVscwogCi1pbmxpbmUgYm9vbCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpj
b21waWxlRkVDb2xvck1hdHJpeCgpCitpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpj
b21waWxlRkVDb2xvck1hdHJpeCgpCiB7Ci0gICAgaWYgKG1fY29sb3JNYXRyaXhDb21waWxlU3Rh
dHVzICE9IG9wZW5jbE5vdENvbXBpbGVkWWV0KQotICAgICAgICByZXR1cm4gbV9jb2xvck1hdHJp
eENvbXBpbGVTdGF0dXMgPT0gb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWw7CisgICAgaWYgKG1fY29s
b3JNYXRyaXhXYXNDb21waWxlZCB8fCBpbkVycm9yKCkpCisgICAgICAgIHJldHVybjsKIAotICAg
IG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzID0gb3BlbmNsQ29tcGlsZUZhaWxlZDsKLSAgICBt
X2NvbG9yTWF0cml4UHJvZ3JhbSA9IGNvbXBpbGVQcm9ncmFtKGNvbG9yTWF0cml4S2VybmVsUHJv
Z3JhbSk7Ci0gICAgaWYgKCFtX2NvbG9yTWF0cml4UHJvZ3JhbSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIG1fY29sb3JNYXRyaXhXYXNDb21waWxlZCA9IHRydWU7CisKKyAgICBpZiAoaXNG
YWlsZWQoKG1fY29sb3JNYXRyaXhQcm9ncmFtID0gY29tcGlsZVByb2dyYW0oY29sb3JNYXRyaXhL
ZXJuZWxQcm9ncmFtKSkpKQorICAgICAgICByZXR1cm47CiAKICAgICBtX21hdHJpeE9wZXJhdGlv
biA9IGtlcm5lbEJ5TmFtZShtX2NvbG9yTWF0cml4UHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIGlm
ICghbV9tYXRyaXhPcGVyYXRpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3NhdHVy
YXRlQW5kSHVlUm90YXRlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9n
cmFtLCAic2F0dXJhdGVBbmRIdWVSb3RhdGUiKTsKLSAgICBpZiAoIW1fc2F0dXJhdGVBbmRIdWVS
b3RhdGVPcGVyYXRpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX2x1bWluYW5jZU9w
ZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZShtX2NvbG9yTWF0cml4UHJvZ3JhbSwgImx1bWluYW5jZSIp
OwotICAgIGlmICghbV9sdW1pbmFuY2VPcGVyYXRpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzID0gb3BlbmNsQ29tcGlsZVN1Y2Nlc3Nm
dWw7Ci0gICAgcmV0dXJuIG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsOworICAgIGlzRmFpbGVkKG1f
bWF0cml4T3BlcmF0aW9uICYmIG1fc2F0dXJhdGVBbmRIdWVSb3RhdGVPcGVyYXRpb24gJiYgbV9s
dW1pbmFuY2VPcGVyYXRpb24pOwogfQogCiBpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNM
OjphcHBseUZFQ29sb3JNYXRyaXgoT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uLCBJbnRTaXplIGRl
c3RpbmF0aW9uU2l6ZSwgT3BlbkNMSGFuZGxlIHNvdXJjZSwgSW50UG9pbnQgcmVsYXRpdmVTb3Vy
Y2VMb2NhdGlvbiwgZmxvYXQqIHZhbHVlcywgaW50IHR5cGUpCkBAIC0xMzAsOSArMTIzLDE1IEBA
IGlubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFwcGx5RkVDb2xvck1hdHJpeChPcGVu
Q0xIYW5kbGUgZGVzdGluYXRpb24sIEluCiBib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBw
bHlPcGVuQ0woKQogewogICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJD
b250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5j
b21waWxlRkVDb2xvck1hdHJpeCgpKQorCisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICBjb250ZXh0LT5jb21waWxlRkVDb2xvck1hdHJpeCgpOworCisgICAg
aWYgKGNvbnRleHQtPmluRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBGaWx0
ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAgICAgT3BlbkNMSGFuZGxlIHNvdXJjZSA9
IGluLT5vcGVuQ0xJbWFnZSgpOwogICAgIE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiA9IGNyZWF0
ZU9wZW5DTEltYWdlUmVzdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHAK
aW5kZXggMmM5MWI0Ny4uNGYzOGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRVR1cmJ1bGVuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNl
LmNwcApAQCAtMTY3LDIxICsxNjcsMTggQEAgX19rZXJuZWwgdm9pZCBUdXJidWxlbmNlKF9fd3Jp
dGVfb25seSBpbWFnZTJkX3QgZGVzdGluYXRpb24sIF9fY29uc3RhbnQgZmxvYXQgKnQKIH0KICk7
IC8vIEVuZCBvZiBPcGVuQ0wga2VybmVscwogCi1pbmxpbmUgYm9vbCBGaWx0ZXJDb250ZXh0T3Bl
bkNMOjpjb21waWxlRkVUdXJidWxlbmNlKCkKK2lubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVu
Q0w6OmNvbXBpbGVGRVR1cmJ1bGVuY2UoKQogewotICAgIGlmIChtX3R1cmJ1bGVuY2VDb21waWxl
U3RhdHVzICE9IG9wZW5jbE5vdENvbXBpbGVkWWV0KQotICAgICAgICByZXR1cm4gbV90dXJidWxl
bmNlQ29tcGlsZVN0YXR1cyA9PSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKKyAgICBpZiAobV90
dXJidWxlbmNlV2FzQ29tcGlsZWQgfHwgaW5FcnJvcigpKQorICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3R1cmJ1bGVuY2VDb21waWxlU3RhdHVzID0gb3BlbmNsQ29tcGlsZUZhaWxlZDsKLSAgICBt
X3R1cmJ1bGVuY2VQcm9ncmFtID0gY29tcGlsZVByb2dyYW0odHVyYnVsZW5jZUtlcm5lbFByb2dy
YW0pOwotICAgIGlmICghbV90dXJidWxlbmNlUHJvZ3JhbSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIG1fdHVyYnVsZW5jZU9wZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZShtX3R1cmJ1bGVuY2VQ
cm9ncmFtLCAiVHVyYnVsZW5jZSIpOwotICAgIGlmICghbV90dXJidWxlbmNlT3BlcmF0aW9uKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV90dXJidWxlbmNlV2FzQ29tcGlsZWQgPSB0cnVl
OworCisgICAgaWYgKGlzRmFpbGVkKChtX3R1cmJ1bGVuY2VQcm9ncmFtID0gY29tcGlsZVByb2dy
YW0odHVyYnVsZW5jZUtlcm5lbFByb2dyYW0pKSkpCisgICAgICAgIHJldHVybjsKIAotICAgIG1f
dHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMgPSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKLSAgICBy
ZXR1cm4gb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWw7CisgICAgbV90dXJidWxlbmNlT3BlcmF0aW9u
ID0ga2VybmVsQnlOYW1lKG1fdHVyYnVsZW5jZVByb2dyYW0sICJUdXJidWxlbmNlIik7CisgICAg
aXNGYWlsZWQobV90dXJidWxlbmNlT3BlcmF0aW9uKTsKIH0KIAogaW5saW5lIHZvaWQgRmlsdGVy
Q29udGV4dE9wZW5DTDo6YXBwbHlGRVR1cmJ1bGVuY2UoT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9u
LApAQCAtMjI0LDkgKzIyMSwxNCBAQCBpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjph
cHBseUZFVHVyYnVsZW5jZShPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24sCiBib29sIEZFVHVyYnVs
ZW5jZTo6cGxhdGZvcm1BcHBseU9wZW5DTCgpCiB7CiAgICAgRmlsdGVyQ29udGV4dE9wZW5DTCog
Y29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRl
eHQgfHwgIWNvbnRleHQtPmNvbXBpbGVGRVR1cmJ1bGVuY2UoKSkKKyAgICBpZiAoIWNvbnRleHQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNvbnRleHQtPmNvbXBpbGVGRVR1cmJ1bGVu
Y2UoKTsKKworICAgIGlmIChjb250ZXh0LT5pbkVycm9yKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCiAgICAgT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3BlbkNMSW1hZ2VSZXN1
bHQoKTsKIAogICAgIFBhaW50aW5nRGF0YSBwYWludGluZ0RhdGEobV9zZWVkLCByb3VuZGVkSW50
U2l6ZShmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKS5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
aW5kZXggMjk4M2M0Zi4uOTg5OTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTMwOSw3ICszMDks
NyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5k
ZXJPYmplY3QqIG9iamVjdCwgR3JhcGhpY3NDbwogICAgICAgICAvLyBBbHdheXMgdHJ1ZSBpZiBm
aWx0ZXJEYXRhIGlzIGp1c3QgYnVpbHQgKGZpbHRlckRhdGEtPnN0YXRlID09IEZpbHRlckRhdGE6
OkJ1aWx0KS4KICAgICAgICAgaWYgKCFsYXN0RWZmZWN0LT5oYXNSZXN1bHQoKSkgewogICAgICAg
ICAgICAgZmlsdGVyRGF0YS0+c3RhdGUgPSBGaWx0ZXJEYXRhOjpBcHBseWluZzsKLSAgICAgICAg
ICAgIGxhc3RFZmZlY3QtPmFwcGx5KCk7CisgICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseUFs
bCgpOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVk
KCk7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187589</attachid>
            <date>2013-02-11 08:53:05 -0800</date>
            <delta_ts>2013-02-11 09:12:46 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25983</size>
            <attacher name="Tamas Czene">tczene</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZGZjZDVjLi5lYTk4MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTMtMDItMDcgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBBZGQgZXJyb3IgY2hlY2tpbmcgaW50byBPcGVuQ0wgdmVyc2lvbiBvZiBTVkcgZmls
dGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NzQ0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
IGNhc2Ugb2YgYW4gZXJyb3IgdGhlIHByb2dyYW0gcnVucyB0aHJvdWdoIGFsbCB0aGUgcmVtYWlu
aW5nIGZpbHRlcnMgYnkgZG9pbmcgbm90aGluZy4gCisgICAgICAgIEFmdGVyIHRoYXQgZGVsZXRl
cyB0aGUgcmVzdWx0cyBvZiBldmVyeSBmaWx0ZXIgYW5kIHN0YXJ0cyBzb2Z0d2FyZSByZW5kZXJp
bmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
YXBwbHlBbGwpOiBBdCBzb2Z0d2FyZSByZW5kZXJpbmcgdGhpcyBpcyBhIHNpbXBsZSBpbmxpbmUg
bWV0aG9kZSwgYnV0IGF0IE9wZW5DTCByZW5kZXJpbmcgaXQgcmVsZWFzZXMgT3BlbkNMIHRoaW5n
cy4gSWYgd2UgaGF2ZSBhbiBlcnJvciByZW1vdmUgZmlsdGVyJ3MgcmVzdWx0cyBhbmQgc3RhcnQg
c29mdHdhcmUgcmVuZGVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjbGVh
clJlc3VsdHNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpvcGVu
Q0xJbWFnZVRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpj
cmVhdGVPcGVuQ0xJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChGaWx0ZXJFZmZlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBseUFsbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmlzRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpkZXN0cm95Q29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlVHJhbnNmb3Jt
Q29sb3JTcGFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5D
TDo6b3BlbkNMVHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpjb21waWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpmcmVlUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5oOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyQ29udGV4dE9wZW5DTDo6RmlsdGVyQ29udGV4dE9wZW5DTCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpzZXRJbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckNvbnRleHRPcGVuQ0w6OmluRXJyb3IpOgorICAgICAgICAoRmlsdGVyQ29udGV4dE9wZW5D
TCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6OlJ1
bktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJu
ZWw6OmFkZEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6
OlJ1bktlcm5lbDo6cnVuKToKKyAgICAgICAgKFJ1bktlcm5lbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0wpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRVR1cmJ1
bGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5T3Bl
bkNMKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlS
ZXNvdXJjZSk6CisKIDIwMTMtMDItMDYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIE9wdGltaXplIEdseXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhz
IGFyZSBhdmFpbGFibGUgaW4gdGhlIHNhbWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBk
NzM1NGY2Li5jMjgxY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC05Nyw2ICs5NywyNCBAQCBG
aWx0ZXJFZmZlY3QqIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVtYmVyKSBj
b25zdAogICAgIHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1iZXIpLmdldCgpOwogfQogCisj
aWYgRU5BQkxFKE9QRU5DTCkKK3ZvaWQgRmlsdGVyRWZmZWN0OjphcHBseUFsbCgpCit7CisgICAg
aWYgKGhhc1Jlc3VsdCgpKQorICAgICAgICByZXR1cm47CisgICAgRmlsdGVyQ29udGV4dE9wZW5D
TCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkgeworICAgICAgICBhcHBseSgpOworICAgICAgICBpZiAoIWNvbnRleHQtPmluRXJyb3Io
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7
CisgICAgICAgIGNvbnRleHQtPmRlc3Ryb3lDb250ZXh0KCk7CisgICAgfQorICAgIC8vIFNvZnR3
YXJlIGNvZGUgcGF0aC4KKyAgICBhcHBseSgpOworfQorI2VuZGlmCisKIHZvaWQgRmlsdGVyRWZm
ZWN0OjphcHBseSgpCiB7CiAgICAgaWYgKGhhc1Jlc3VsdCgpKQpAQCAtMjIzLDYgKzI0MSwxOCBA
QCB2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRmls
dGVyRWZmZWN0OjpjbGVhclJlc3VsdHNSZWN1cnNpdmUoKQoreworICAgIC8vIENsZWFyIGFsbCBy
ZXN1bHRzLCByZWdhcmRsZXNzIHRoYXQgdGhlIGN1cnJlbnQgZWZmZWN0IGhhcworICAgIC8vIGEg
cmVzdWx0LiBDYW4gYmUgdXNlZCBpZiBhbiBlZmZlY3QgaXMgaW4gYW4gZXJyb25lb3VzIHN0YXRl
LgorICAgIGlmIChoYXNSZXN1bHQoKSkKKyAgICAgICAgY2xlYXJSZXN1bHQoKTsKKworICAgIHVu
c2lnbmVkIHNpemUgPSBtX2lucHV0RWZmZWN0cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9pbnB1dEVmZmVjdHMuYXQoaSkuZ2V0KCkt
PmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOworfQorCiBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0
Ojphc0ltYWdlQnVmZmVyKCkKIHsKICAgICBpZiAoIWhhc1Jlc3VsdCgpKQpAQCAtMjQ4LDEzICsy
NzgsMjMgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVm
ZmVyKCkKICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9w
ZW5DTDo6Y29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKIAorICAgIGlmIChjb250ZXh0
LT5pbkVycm9yKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaW50IGVycm9yQ29kZSA9IDA7
CisKICAgICBzaXplX3Qgb3JpZ2luWzNdID0geyAwLCAwLCAwIH07CiAgICAgc2l6ZV90IHJlZ2lv
blszXSA9IHsgbV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0
LmhlaWdodCgpLCAxIH07CiAKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGRlc3RpbmF0
aW9uUGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50
UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwogCi0gICAg
Y2xGaW5pc2goY29udGV4dC0+Y29tbWFuZFF1ZXVlKCkpOwotICAgIGNsRW5xdWV1ZVJlYWRJbWFn
ZShjb250ZXh0LT5jb21tYW5kUXVldWUoKSwgbV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwg
b3JpZ2luLCByZWdpb24sIDAsIDAsIGRlc3RpbmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAw
LCAwKTsKKyAgICBlcnJvckNvZGUgPSBjbEZpbmlzaChjb250ZXh0LT5jb21tYW5kUXVldWUoKSk7
CisgICAgaWYgKGNvbnRleHQtPmlzRmFpbGVkKGVycm9yQ29kZSkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgZXJyb3JDb2RlID0gY2xFbnF1ZXVlUmVhZEltYWdlKGNvbnRleHQtPmNvbW1hbmRR
dWV1ZSgpLCBtX29wZW5DTEltYWdlUmVzdWx0LCBDTF9UUlVFLCBvcmlnaW4sIHJlZ2lvbiwgMCwg
MCwgZGVzdGluYXRpb25QaXhlbEFycmF5LT5kYXRhKCksIDAsIDAsIDApOworICAgIGlmIChjb250
ZXh0LT5pc0ZhaWxlZChlcnJvckNvZGUpKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIG1faW1h
Z2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Qu
c2l6ZSgpKTsKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9uUmVjdChJbnRQb2ludCgpLCBtX2Fic29s
dXRlUGFpbnRSZWN0LnNpemUoKSk7CkBAIC00MjYsMTUgKzQ2NiwyNCBAQCBVaW50OENsYW1wZWRB
cnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogI2lm
IEVOQUJMRShPUEVOQ0wpCiBPcGVuQ0xIYW5kbGUgRmlsdGVyRWZmZWN0OjpjcmVhdGVPcGVuQ0xJ
bWFnZVJlc3VsdCh1aW50OF90KiBzb3VyY2UpCiB7CisgICAgRmlsdGVyQ29udGV4dE9wZW5DTCog
Y29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKKyAgICBBU1NFUlQoY29u
dGV4dCk7CisKKyAgICBpZiAoY29udGV4dC0+aW5FcnJvcigpKQorICAgICAgICByZXR1cm4gMDsK
KwogICAgIEFTU0VSVCghaGFzUmVzdWx0KCkpOwogICAgIGNsX2ltYWdlX2Zvcm1hdCBjbEltYWdl
Rm9ybWF0OwogICAgIGNsSW1hZ2VGb3JtYXQuaW1hZ2VfY2hhbm5lbF9vcmRlciA9IENMX1JHQkE7
CiAgICAgY2xJbWFnZUZvcm1hdC5pbWFnZV9jaGFubmVsX2RhdGFfdHlwZSA9IENMX1VOT1JNX0lO
VDg7CiAKLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9w
ZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBpbnQgZXJyb3JDb2Rl
ID0gMDsKKwogICAgIG1fb3BlbkNMSW1hZ2VSZXN1bHQgPSBjbENyZWF0ZUltYWdlMkQoY29udGV4
dC0+ZGV2aWNlQ29udGV4dCgpLCBDTF9NRU1fUkVBRF9XUklURSB8IChzb3VyY2UgPyBDTF9NRU1f
Q09QWV9IT1NUX1BUUiA6IDApLAotICAgICAgICAmY2xJbWFnZUZvcm1hdCwgbV9hYnNvbHV0ZVBh
aW50UmVjdC53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpLCAwLCBzb3VyY2Us
IDApOworICAgICAgICAmY2xJbWFnZUZvcm1hdCwgbV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgp
LCBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpLCAwLCBzb3VyY2UsICZlcnJvckNvZGUpOwor
ICAgIGlmIChjb250ZXh0LT5pc0ZhaWxlZChlcnJvckNvZGUpKQorICAgICAgICByZXR1cm4gMDsK
KwogICAgIHJldHVybiBtX29wZW5DTEltYWdlUmVzdWx0OwogfQogI2VuZGlmCkBAIC00NTAsMTcg
KzQ5OSwxNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShD
b2xvclNwYWNlIGRzdENvbG9yU3BhY2UpCiAKICNpZiBFTkFCTEUoT1BFTkNMKQogICAgIGlmIChv
cGVuQ0xJbWFnZSgpKSB7CisgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQorICAgICAg
ICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC5jbGVhcigpOwogICAgICAgICBGaWx0ZXJDb250ZXh0
T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwogICAgICAg
ICBBU1NFUlQoY29udGV4dCk7CiAgICAgICAgIGNvbnRleHQtPm9wZW5DTFRyYW5zZm9ybUNvbG9y
U3BhY2UobV9vcGVuQ0xJbWFnZVJlc3VsdCwgYWJzb2x1dGVQYWludFJlY3QoKSwgbV9yZXN1bHRD
b2xvclNwYWNlLCBkc3RDb2xvclNwYWNlKTsKLSAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1
bHQpCi0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0LmNsZWFyKCk7CiAgICAgfSBlbHNl
IHsKICNlbmRpZgogCi0gICAgLy8gRklYTUU6IFdlIGNhbiBhdm9pZCB0aGlzIHBvdGVudGlhbGx5
IHVubmVjZXNzYXJ5IEltYWdlQnVmZmVyIGNvbnZlcnNpb24gYnkgYWRkaW5nCi0gICAgLy8gY29s
b3Igc3BhY2UgdHJhbnNmb3JtIHN1cHBvcnQgZm9yIHRoZSB7cHJlLHVufW11bHRpcGxpZWQgYXJy
YXlzLgotICAgIGFzSW1hZ2VCdWZmZXIoKS0+dHJhbnNmb3JtQ29sb3JTcGFjZShtX3Jlc3VsdENv
bG9yU3BhY2UsIGRzdENvbG9yU3BhY2UpOworICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGF2b2lk
IHRoaXMgcG90ZW50aWFsbHkgdW5uZWNlc3NhcnkgSW1hZ2VCdWZmZXIgY29udmVyc2lvbiBieSBh
ZGRpbmcKKyAgICAgICAgLy8gY29sb3Igc3BhY2UgdHJhbnNmb3JtIHN1cHBvcnQgZm9yIHRoZSB7
cHJlLHVufW11bHRpcGxpZWQgYXJyYXlzLgorICAgICAgICBhc0ltYWdlQnVmZmVyKCktPnRyYW5z
Zm9ybUNvbG9yU3BhY2UobV9yZXN1bHRDb2xvclNwYWNlLCBkc3RDb2xvclNwYWNlKTsKIAogI2lm
IEVOQUJMRShPUEVOQ0wpCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggMDFkODVhOS4uZjBmZjg4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5GaWx0ZXJFZmZlY3QoKTsKIAogICAgIHZvaWQgY2xlYXJSZXN1bHQoKTsKKyAgICB2b2lkIGNs
ZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOworCiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZmZXIo
KTsKICAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdl
KGNvbnN0IEludFJlY3QmKTsKICAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1By
ZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CkBAIC0xMDksNyArMTExLDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE1heEVmZmVjdFJlY3QoY29uc3QgRmxvYXRSZWN0JiBtYXhFZmZl
Y3RSZWN0KSB7IG1fbWF4RWZmZWN0UmVjdCA9IG1heEVmZmVjdFJlY3Q7IH0gCiAKICAgICB2b2lk
IGFwcGx5KCk7Ci0gICAgCisjaWYgRU5BQkxFKE9QRU5DTCkKKyAgICB2b2lkIGFwcGx5QWxsKCk7
CisjZWxzZQorICAgIGlubGluZSB2b2lkIGFwcGx5QWxsKCkgeyBhcHBseSgpOyB9CisjZW5kaWYK
KwogICAgIC8vIENvcnJlY3QgYW55IGludmFsaWQgcGl4ZWxzLCBpZiBuZWNlc3NhcnksIGluIHRo
ZSByZXN1bHQgb2YgYSBmaWx0ZXIgb3BlcmF0aW9uLgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVz
ZWQgdG8gZW5zdXJlIHZhbGlkIHBpeGVsIHZhbHVlcyBvbiBmaWx0ZXIgaW5wdXRzIGFuZCB0aGUg
ZmluYWwgcmVzdWx0LgogICAgIC8vIE9ubHkgdGhlIGFyaXRobWV0aWMgY29tcG9zaXRlIGZpbHRl
ciBldmVyIG5lZWRzIHRvIHBlcmZvcm0gY29ycmVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNv
bnRleHRPcGVuQ0wuY3BwCmluZGV4IDRjMzA1OTYuLmVmNTUwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5D
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9G
aWx0ZXJDb250ZXh0T3BlbkNMLmNwcApAQCAtODgsNiArODgsNDYgQEAgRmlsdGVyQ29udGV4dE9w
ZW5DTCogRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpCiAgICAgcmV0dXJuIG1fY29udGV4
dDsKIH0KIAordm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpmcmVlUmVzb3VyY2VzKCkKK3sKKyAg
ICBjbEZpbmlzaChtX2NvbW1hbmRRdWV1ZSk7CisKKyAgICBpZiAobV9jb2xvck1hdHJpeFdhc0Nv
bXBpbGVkKSB7CisgICAgICAgIGZyZWVSZXNvdXJjZShtX21hdHJpeE9wZXJhdGlvbik7CisgICAg
ICAgIGZyZWVSZXNvdXJjZShtX3NhdHVyYXRlQW5kSHVlUm90YXRlT3BlcmF0aW9uKTsKKyAgICAg
ICAgZnJlZVJlc291cmNlKG1fbHVtaW5hbmNlT3BlcmF0aW9uKTsKKyAgICAgICAgZnJlZVJlc291
cmNlKG1fY29sb3JNYXRyaXhQcm9ncmFtKTsKKyAgICB9CisgICAgbV9jb2xvck1hdHJpeFdhc0Nv
bXBpbGVkID0gZmFsc2U7CisKKyAgICBpZiAobV90dXJidWxlbmNlV2FzQ29tcGlsZWQpIHsKKyAg
ICAgICAgZnJlZVJlc291cmNlKG1fdHVyYnVsZW5jZU9wZXJhdGlvbik7CisgICAgICAgIGZyZWVS
ZXNvdXJjZShtX3R1cmJ1bGVuY2VQcm9ncmFtKTsKKyAgICB9ICAgIAorICAgIG1fdHVyYnVsZW5j
ZVdhc0NvbXBpbGVkID0gZmFsc2U7CisKKyAgICBpZiAobV90cmFuc2Zvcm1Db2xvclNwYWNlV2Fz
Q29tcGlsZWQpIHsKKyAgICAgICAgZnJlZVJlc291cmNlKG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtl
cm5lbCk7CisgICAgICAgIGZyZWVSZXNvdXJjZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFt
KTsKKyAgICB9CisgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlV2FzQ29tcGlsZWQgPSBmYWxzZTsK
K30KKwordm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpkZXN0cm95Q29udGV4dCgpCit7CisgICAg
ZnJlZVJlc291cmNlcygpOworCisgICAgaWYgKG1fY29tbWFuZFF1ZXVlKQorICAgICAgICBjbFJl
bGVhc2VDb21tYW5kUXVldWUobV9jb21tYW5kUXVldWUpOworICAgIG1fY29tbWFuZFF1ZXVlID0g
MDsKKworICAgIGlmIChtX2RldmljZUNvbnRleHQpCisgICAgICAgIGNsUmVsZWFzZUNvbnRleHQo
bV9kZXZpY2VDb250ZXh0KTsKKyAgICBtX2RldmljZUNvbnRleHQgPSAwOworCisgICAgbV9jb250
ZXh0ID0gMDsKK30KKwogT3BlbkNMSGFuZGxlIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNyZWF0ZU9w
ZW5DTEltYWdlKEludFNpemUgcGFpbnRTaXplKQogewogICAgIEZpbHRlckNvbnRleHRPcGVuQ0wq
IGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7CkBAIC0xMTcsMzEgKzE1
Nyw0MSBAQCBfX2tlcm5lbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoX19yZWFkX29ubHkgaW1h
Z2UyZF90IHNvdXJjZSwgX193cml0ZV9vbmx5IGltYQogfQogKTsgLy8gRW5kIG9mIE9wZW5DTCBr
ZXJuZWxzCiAKK2lubGluZSBib29sIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVUcmFuc2Zv
cm1Db2xvclNwYWNlUHJvZ3JhbSgpCit7CisgICAgaWYgKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVdh
c0NvbXBpbGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChpbkVycm9yKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVdhc0NvbXBp
bGVkID0gdHJ1ZTsKKworICAgIGlmIChyZXNvdXJjZUFsbG9jYXRpb25Jc0ZhaWxlZCgobV90cmFu
c2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSA9IGNvbXBpbGVQcm9ncmFtKHRyYW5zZm9ybUNvbG9yU3Bh
Y2VLZXJuZWxQcm9ncmFtKSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlc291
cmNlQWxsb2NhdGlvbklzRmFpbGVkKChtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwgPSBrZXJu
ZWxCeU5hbWUobV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSwgInRyYW5zZm9ybUNvbG9yU3Bh
Y2UiKSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6b3BlbkNMVHJhbnNmb3JtQ29sb3JTcGFjZShPcGVuQ0xI
YW5kbGUmIHNvdXJjZSwgSW50UmVjdCBzb3VyY2VTaXplLCBDb2xvclNwYWNlIHNyY0NvbG9yU3Bh
Y2UsIENvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KE9wZW5DTEhhbmRsZSwgZGV2aWNlUmdiTFVULCAoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChPcGVuQ0xIYW5kbGUsIGxpbmVhclJnYkxVVCwgKCkpOwogCi0gICAgaWYgKHNyY0NvbG9yU3Bh
Y2UgPT0gZHN0Q29sb3JTcGFjZSkKKyAgICBpZiAoc3JjQ29sb3JTcGFjZSA9PSBkc3RDb2xvclNw
YWNlIHx8IGluRXJyb3IoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKChzcmNDb2xvclNw
YWNlICE9IENvbG9yU3BhY2VMaW5lYXJSR0IgJiYgc3JjQ29sb3JTcGFjZSAhPSBDb2xvclNwYWNl
RGV2aWNlUkdCKQogICAgICAgICB8fCAoZHN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlTGluZWFy
UkdCICYmIGRzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZURldmljZVJHQikpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0
T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgQVNTRVJUKGNvbnRleHQpOworICAgIGlmICghY29tcGls
ZVRyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIE9w
ZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiA9IGNvbnRleHQtPmNyZWF0ZU9wZW5DTEltYWdlKHNvdXJj
ZVNpemUuc2l6ZSgpKTsKKyAgICBPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24gPSBjcmVhdGVPcGVu
Q0xJbWFnZShzb3VyY2VTaXplLnNpemUoKSk7CiAKLSAgICBpZiAoIW1fdHJhbnNmb3JtQ29sb3JT
cGFjZVByb2dyYW0pIHsKLSAgICAgICAgbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSA9IGNv
bXBpbGVQcm9ncmFtKHRyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWxQcm9ncmFtKTsKLSAgICAgICAg
QVNTRVJUKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0pOwotICAgICAgICBtX3RyYW5zZm9y
bUNvbG9yU3BhY2VLZXJuZWwgPSBrZXJuZWxCeU5hbWUobV90cmFuc2Zvcm1Db2xvclNwYWNlUHJv
Z3JhbSwgInRyYW5zZm9ybUNvbG9yU3BhY2UiKTsKLSAgICAgICAgQVNTRVJUKG1fdHJhbnNmb3Jt
Q29sb3JTcGFjZUtlcm5lbCk7Ci0gICAgfQotCi0gICAgUnVuS2VybmVsIGtlcm5lbChjb250ZXh0
LCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwsIHNvdXJjZVNpemUud2lkdGgoKSwgc291cmNl
U2l6ZS5oZWlnaHQoKSk7CisgICAgUnVuS2VybmVsIGtlcm5lbCh0aGlzLCBtX3RyYW5zZm9ybUNv
bG9yU3BhY2VLZXJuZWwsIHNvdXJjZVNpemUud2lkdGgoKSwgc291cmNlU2l6ZS5oZWlnaHQoKSk7
CiAgICAga2VybmVsLmFkZEFyZ3VtZW50KHNvdXJjZSk7CiAgICAga2VybmVsLmFkZEFyZ3VtZW50
KGRlc3RpbmF0aW9uKTsKIApAQCAtMTgxLDE4ICsyMzEsMzMgQEAgdm9pZCBGaWx0ZXJDb250ZXh0
T3BlbkNMOjpvcGVuQ0xUcmFuc2Zvcm1Db2xvclNwYWNlKE9wZW5DTEhhbmRsZSYgc291cmNlLCBJ
bnRSZWMKIGNsX3Byb2dyYW0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29tcGlsZVByb2dyYW0oY29u
c3QgY2hhciogc291cmNlKQogewogICAgIGNsX3Byb2dyYW0gcHJvZ3JhbTsKLSAgICBjbF9pbnQg
ZXJyb3JOdW1iZXI7Ci0KLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVy
Q29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBjbF9p
bnQgZXJyb3JOdW1iZXIgPSAwOwogCi0gICAgcHJvZ3JhbSA9IGNsQ3JlYXRlUHJvZ3JhbVdpdGhT
b3VyY2UoY29udGV4dC0+bV9kZXZpY2VDb250ZXh0LCAxLCAoY29uc3QgY2hhcioqKSAmc291cmNl
LCAwLCAwKTsKKyAgICBwcm9ncmFtID0gY2xDcmVhdGVQcm9ncmFtV2l0aFNvdXJjZShtX2Rldmlj
ZUNvbnRleHQsIDEsIChjb25zdCBjaGFyKiopICZzb3VyY2UsIDAsICZlcnJvck51bWJlcik7Cisg
ICAgaWYgKGlzRmFpbGVkKGVycm9yTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgZXJy
b3JOdW1iZXIgPSBjbEJ1aWxkUHJvZ3JhbShwcm9ncmFtLCAwLCAwLCAwLCAwLCAwKTsKLSAgICBp
ZiAoZXJyb3JOdW1iZXIpCisgICAgaWYgKGlzRmFpbGVkKGVycm9yTnVtYmVyKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICByZXR1cm4gcHJvZ3JhbTsKIH0KKwordm9pZCBGaWx0ZXJDb250ZXh0
T3BlbkNMOjpmcmVlUmVzb3VyY2UoY2xfa2VybmVsJiBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRs
ZSkgeworICAgICAgICBjbFJlbGVhc2VLZXJuZWwoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0g
MDsKKyAgICB9Cit9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlKGNs
X3Byb2dyYW0mIGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlKSB7CisgICAgICAgIGNsUmVsZWFz
ZVByb2dyYW0oaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gMDsKKyAgICB9Cit9CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wu
aAppbmRleCBiMTg5OGI2Li40ZjE4NWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVu
Q0wuaApAQCAtNDQsMTcgKzQ0LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZpbHRl
ckNvbnRleHRPcGVuQ0wgewogcHVibGljOgogICAgIEZpbHRlckNvbnRleHRPcGVuQ0woKQotICAg
ICAgICA6IG1fZGV2aWNlSWQoMCkKKyAgICAgICAgOiBtX2luRXJyb3IoZmFsc2UpCisgICAgICAg
ICwgbV9kZXZpY2VJZCgwKQogICAgICAgICAsIG1fZGV2aWNlQ29udGV4dCgwKQogICAgICAgICAs
IG1fY29tbWFuZFF1ZXVlKDApCisgICAgICAgICwgbV90cmFuc2Zvcm1Db2xvclNwYWNlV2FzQ29t
cGlsZWQoZmFsc2UpCiAgICAgICAgICwgbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgwKQog
ICAgICAgICAsIG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5lbCgwKQotICAgICAgICAsIG1fY29s
b3JNYXRyaXhDb21waWxlU3RhdHVzKG9wZW5jbE5vdENvbXBpbGVkWWV0KQorICAgICAgICAsIG1f
Y29sb3JNYXRyaXhXYXNDb21waWxlZChmYWxzZSkKICAgICAgICAgLCBtX2NvbG9yTWF0cml4UHJv
Z3JhbSgwKQogICAgICAgICAsIG1fbWF0cml4T3BlcmF0aW9uKDApCiAgICAgICAgICwgbV9zYXR1
cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbigwKQogICAgICAgICAsIG1fbHVtaW5hbmNlT3BlcmF0
aW9uKDApCi0gICAgICAgICwgbV90dXJidWxlbmNlQ29tcGlsZVN0YXR1cyhvcGVuY2xOb3RDb21w
aWxlZFlldCkKKyAgICAgICAgLCBtX3R1cmJ1bGVuY2VXYXNDb21waWxlZChmYWxzZSkKICAgICAg
ICAgLCBtX3R1cmJ1bGVuY2VQcm9ncmFtKDApCiAgICAgICAgICwgbV90dXJidWxlbmNlT3BlcmF0
aW9uKDApCiAgICAgewpAQCAtNjcsNyArNjksMTcgQEAgcHVibGljOgogICAgIGNsX2NvbnRleHQg
ZGV2aWNlQ29udGV4dCgpIHsgcmV0dXJuIG1fZGV2aWNlQ29udGV4dDsgfQogICAgIGNsX2NvbW1h
bmRfcXVldWUgY29tbWFuZFF1ZXVlKCkgeyByZXR1cm4gbV9jb21tYW5kUXVldWU7IH0KIAorICAg
IGlubGluZSB2b2lkIHNldEluRXJyb3IoYm9vbCBlcnJvckNvZGUgPSB0cnVlKSB7IG1faW5FcnJv
ciA9IGVycm9yQ29kZTsgfQorICAgIGlubGluZSBib29sIGluRXJyb3IoKSB7IHJldHVybiBtX2lu
RXJyb3I7IH0KKyAgICBpbmxpbmUgYm9vbCBpc0ZhaWxlZChib29sKTsKKyAgICBpbmxpbmUgYm9v
bCByZXNvdXJjZUFsbG9jYXRpb25Jc0ZhaWxlZChib29sKTsKKworICAgIHZvaWQgZnJlZVJlc291
cmNlcygpOworICAgIHZvaWQgZGVzdHJveUNvbnRleHQoKTsKKwogICAgIE9wZW5DTEhhbmRsZSBj
cmVhdGVPcGVuQ0xJbWFnZShJbnRTaXplKTsKKworICAgIGlubGluZSBib29sIGNvbXBpbGVUcmFu
c2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgpOwogICAgIHZvaWQgb3BlbkNMVHJhbnNmb3JtQ29sb3JT
cGFjZShPcGVuQ0xIYW5kbGUmLCBJbnRSZWN0LCBDb2xvclNwYWNlLCBDb2xvclNwYWNlKTsKIAog
ICAgIGlubGluZSBib29sIGNvbXBpbGVGRUNvbG9yTWF0cml4KCk7CkBAIC04NCw3ICs5Niw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBSdW5LZXJuZWwoRmlsdGVyQ29udGV4dE9wZW5DTCogY29u
dGV4dCwgY2xfa2VybmVsIGtlcm5lbCwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQogICAg
ICAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgICAgICAgICAgICAgLCBtX2tl
cm5lbChrZXJuZWwpCi0gICAgICAgICAgICAgICAgLCBpbmRleCgwKQorICAgICAgICAgICAgICAg
ICwgbV9pbmRleCgwKQorICAgICAgICAgICAgICAgICwgbV9lcnJvcihjb250ZXh0LT5pbkVycm9y
KCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxTaXplWzBdID0gd2lk
dGg7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxTaXplWzFdID0gaGVpZ2h0OwpAQCAtOTIsNzQg
KzEwNSwxMDMgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgdm9pZCBhZGRBcmd1bWVudChPcGVu
Q0xIYW5kbGUgaGFuZGxlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsU2V0S2Vy
bmVsQXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoT3BlbkNMSGFuZGxlKSwgaGFuZGxlLmhh
bmRsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFtX2Vycm9yKQorICAgICAgICAg
ICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIG1faW5kZXgrKywg
c2l6ZW9mKE9wZW5DTEhhbmRsZSksIGhhbmRsZS5oYW5kbGVBZGRyZXNzKCkpOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICB2b2lkIGFkZEFyZ3VtZW50KGNsX2ludCB2YWx1ZSkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgaW5kZXgr
Kywgc2l6ZW9mKGNsX2ludCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZ2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIGlmICghbV9lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvciA9
IGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBtX2luZGV4KyssIHNpemVvZihjbF9pbnQpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigmdmFsdWUpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgdm9pZCBhZGRBcmd1bWVudChjbF9mbG9hdCB2YWx1ZSkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgaW5kZXgrKywgc2l6ZW9mKGNsX2Zs
b2F0KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFtX2Vycm9yKQorICAgICAgICAgICAgICAgICAgICBtX2Vycm9yID0gY2xTZXRLZXJuZWxB
cmcobV9rZXJuZWwsIG1faW5kZXgrKywgc2l6ZW9mKGNsX2Zsb2F0KSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oJnZhbHVlKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZvaWQgYWRk
QXJndW1lbnQoY2xfc2FtcGxlciBoYW5kbGUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIGluZGV4KyssIHNpemVvZihjbF9zYW1wbGVyKSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJmhhbmRsZSkpOworICAgICAgICAgICAgICAgIGlmICgh
bV9lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsU2V0S2VybmVsQXJnKG1f
a2VybmVsLCBtX2luZGV4KyssIHNpemVvZihjbF9zYW1wbGVyKSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oJmhhbmRsZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBPcGVuQ0xIYW5k
bGUgYWRkQXJndW1lbnQodm9pZCogYnVmZmVyLCBpbnQgc2l6ZSkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBPcGVuQ0xIYW5kbGUgaGFuZGxlKGNsQ3JlYXRlQnVmZmVyKG1fY29udGV4
dC0+ZGV2aWNlQ29udGV4dCgpLCBDTF9NRU1fUkVBRF9PTkxZLCBzaXplLCAwLCAwKSk7Ci0gICAg
ICAgICAgICAgICAgY2xFbnF1ZXVlV3JpdGVCdWZmZXIobV9jb250ZXh0LT5jb21tYW5kUXVldWUo
KSwgaGFuZGxlLCBDTF9UUlVFLCAwLCBzaXplLCBidWZmZXIsIDAsIDAsIDApOwotICAgICAgICAg
ICAgICAgIGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoT3BlbkNMSGFu
ZGxlKSwgaGFuZGxlLmhhbmRsZUFkZHJlc3MoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGhh
bmRsZTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJvcikKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICAgICAgT3BlbkNMSGFuZGxlIGhhbmRsZShjbENyZWF0ZUJ1
ZmZlcihtX2NvbnRleHQtPmRldmljZUNvbnRleHQoKSwgQ0xfTUVNX1JFQURfT05MWSwgc2l6ZSwg
MCwgJm1fZXJyb3IpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJvcikKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsRW5xdWV1ZVdy
aXRlQnVmZmVyKG1fY29udGV4dC0+Y29tbWFuZFF1ZXVlKCksIGhhbmRsZSwgQ0xfVFJVRSwgMCwg
c2l6ZSwgYnVmZmVyLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobV9lcnJvcikKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNs
U2V0S2VybmVsQXJnKG1fa2VybmVsLCBtX2luZGV4KyssIHNpemVvZihPcGVuQ0xIYW5kbGUpLCBo
YW5kbGUuaGFuZGxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIW1fZXJyb3Ig
PyBoYW5kbGUgOiAwOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2b2lkIHJ1bigpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xGaW5pc2gobV9jb250ZXh0LT5tX2NvbW1h
bmRRdWV1ZSk7Ci0gICAgICAgICAgICAgICAgY2xFbnF1ZXVlTkRSYW5nZUtlcm5lbChtX2NvbnRl
eHQtPm1fY29tbWFuZFF1ZXVlLCBtX2tlcm5lbCwgMiwgMCwgbV9nbG9iYWxTaXplLCAwLCAwLCAw
LCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobV9jb250ZXh0LT5pc0ZhaWxlZChtX2Vycm9yKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgbV9lcnJvciA9
IGNsRmluaXNoKG1fY29udGV4dC0+bV9jb21tYW5kUXVldWUpOworICAgICAgICAgICAgICAgIGlm
ICghbV9lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsRW5xdWV1ZU5EUmFu
Z2VLZXJuZWwobV9jb250ZXh0LT5tX2NvbW1hbmRRdWV1ZSwgbV9rZXJuZWwsIDIsIDAsIG1fZ2xv
YmFsU2l6ZSwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5pc0ZhaWxl
ZChtX2Vycm9yKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgRmlsdGVyQ29udGV4dE9w
ZW5DTCogbV9jb250ZXh0OwogICAgICAgICAgICAgY2xfa2VybmVsIG1fa2VybmVsOwogICAgICAg
ICAgICAgc2l6ZV90IG1fZ2xvYmFsU2l6ZVsyXTsKLSAgICAgICAgICAgIGludCBpbmRleDsKKyAg
ICAgICAgICAgIGludCBtX2luZGV4OworICAgICAgICAgICAgaW50IG1fZXJyb3I7CiAgICAgICAg
IH07CiAKLSAgICBlbnVtIE9wZW5DTENvbXBpbGVTdGF0dXMgewotICAgICAgICBvcGVuY2xOb3RD
b21waWxlZFlldCwKLSAgICAgICAgb3BlbmNsQ29tcGlsZUZhaWxlZCwKLSAgICAgICAgb3BlbmNs
Q29tcGlsZVN1Y2Nlc3NmdWwKLSAgICB9OwotCi0gICAgc3RhdGljIGNsX3Byb2dyYW0gY29tcGls
ZVByb2dyYW0oY29uc3QgY2hhciopOworICAgIGNsX3Byb2dyYW0gY29tcGlsZVByb2dyYW0oY29u
c3QgY2hhciopOwogICAgIHN0YXRpYyBpbmxpbmUgY2xfa2VybmVsIGtlcm5lbEJ5TmFtZShjbF9w
cm9ncmFtIHByb2dyYW0sIGNvbnN0IGNoYXIqIG5hbWUpIHsgcmV0dXJuIGNsQ3JlYXRlS2VybmVs
KHByb2dyYW0sIG5hbWUsIDApOyB9CiAKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZVJlc291
cmNlKGNsX2tlcm5lbCYpOworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBmcmVlUmVzb3VyY2UoY2xf
cHJvZ3JhbSYpOworCiAgICAgc3RhdGljIEZpbHRlckNvbnRleHRPcGVuQ0wqIG1fY29udGV4dDsK
ICAgICBzdGF0aWMgaW50IG1fYWxyZWFkeUluaXRpYWxpemVkOworICAgIGJvb2wgbV9pbkVycm9y
OwogCiAgICAgY2xfZGV2aWNlX2lkIG1fZGV2aWNlSWQ7CiAgICAgY2xfY29udGV4dCBtX2Rldmlj
ZUNvbnRleHQ7CiAgICAgY2xfY29tbWFuZF9xdWV1ZSBtX2NvbW1hbmRRdWV1ZTsKIAorICAgIGJv
b2wgbV90cmFuc2Zvcm1Db2xvclNwYWNlV2FzQ29tcGlsZWQ7CiAgICAgY2xfcHJvZ3JhbSBtX3Ry
YW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtOwogICAgIGNsX2tlcm5lbCBtX3RyYW5zZm9ybUNvbG9y
U3BhY2VLZXJuZWw7CiAKLSAgICBPcGVuQ0xDb21waWxlU3RhdHVzIG1fY29sb3JNYXRyaXhDb21w
aWxlU3RhdHVzOworICAgIGJvb2wgbV9jb2xvck1hdHJpeFdhc0NvbXBpbGVkOwogICAgIGNsX3By
b2dyYW0gbV9jb2xvck1hdHJpeFByb2dyYW07CiAgICAgY2xfa2VybmVsIG1fbWF0cml4T3BlcmF0
aW9uOwogICAgIGNsX2tlcm5lbCBtX3NhdHVyYXRlQW5kSHVlUm90YXRlT3BlcmF0aW9uOyAKICAg
ICBjbF9rZXJuZWwgbV9sdW1pbmFuY2VPcGVyYXRpb247CiAKLSAgICBPcGVuQ0xDb21waWxlU3Rh
dHVzIG1fdHVyYnVsZW5jZUNvbXBpbGVTdGF0dXM7CisgICAgYm9vbCBtX3R1cmJ1bGVuY2VXYXND
b21waWxlZDsKICAgICBjbF9wcm9ncmFtIG1fdHVyYnVsZW5jZVByb2dyYW07CiAgICAgY2xfa2Vy
bmVsIG1fdHVyYnVsZW5jZU9wZXJhdGlvbjsKIH07CiAKK2lubGluZSBib29sIEZpbHRlckNvbnRl
eHRPcGVuQ0w6OmlzRmFpbGVkKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlKQorICAgICAg
ICBzZXRJbkVycm9yKCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitpbmxpbmUgYm9vbCBGaWx0
ZXJDb250ZXh0T3BlbkNMOjpyZXNvdXJjZUFsbG9jYXRpb25Jc0ZhaWxlZChib29sIHZhbHVlKQor
eworICAgIGlmICghdmFsdWUpCisgICAgICAgIHNldEluRXJyb3IoKTsKKyAgICByZXR1cm4gIXZh
bHVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoT1BF
TkNMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29w
ZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggNDdjODhjNi4u
NWRkMWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFQ29sb3JNYXRyaXguY3BwCkBAIC02OCwy
NiArNjgsMjUgQEAgX19rZXJuZWwgdm9pZCBsdW1pbmFuY2UoX193cml0ZV9vbmx5IGltYWdlMmRf
dCBkZXN0aW5hdGlvbiwgX19yZWFkX29ubHkgaW1hZ2UyZF8KIAogaW5saW5lIGJvb2wgRmlsdGVy
Q29udGV4dE9wZW5DTDo6Y29tcGlsZUZFQ29sb3JNYXRyaXgoKQogewotICAgIGlmIChtX2NvbG9y
TWF0cml4Q29tcGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkKLSAgICAgICAgcmV0
dXJuIG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzID09IG9wZW5jbENvbXBpbGVTdWNjZXNzZnVs
OworICAgIGlmIChtX2NvbG9yTWF0cml4V2FzQ29tcGlsZWQpCisgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgbV9jb2xvck1hdHJpeENvbXBpbGVTdGF0dXMgPSBvcGVuY2xDb21waWxlRmFpbGVk
OwotICAgIG1fY29sb3JNYXRyaXhQcm9ncmFtID0gY29tcGlsZVByb2dyYW0oY29sb3JNYXRyaXhL
ZXJuZWxQcm9ncmFtKTsKLSAgICBpZiAoIW1fY29sb3JNYXRyaXhQcm9ncmFtKQorICAgIGlmIChp
bkVycm9yKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fbWF0cml4T3BlcmF0aW9u
ID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9ncmFtLCAibWF0cml4Iik7Ci0gICAgaWYg
KCFtX21hdHJpeE9wZXJhdGlvbikKKyAgICBtX2NvbG9yTWF0cml4V2FzQ29tcGlsZWQgPSB0cnVl
OworCisgICAgaWYgKHJlc291cmNlQWxsb2NhdGlvbklzRmFpbGVkKChtX2NvbG9yTWF0cml4UHJv
Z3JhbSA9IGNvbXBpbGVQcm9ncmFtKGNvbG9yTWF0cml4S2VybmVsUHJvZ3JhbSkpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIG1fc2F0dXJhdGVBbmRIdWVSb3RhdGVPcGVyYXRpb24gPSBr
ZXJuZWxCeU5hbWUobV9jb2xvck1hdHJpeFByb2dyYW0sICJzYXR1cmF0ZUFuZEh1ZVJvdGF0ZSIp
OwotICAgIGlmICghbV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbikKKyAgICBpZiAocmVz
b3VyY2VBbGxvY2F0aW9uSXNGYWlsZWQoKG1fbWF0cml4T3BlcmF0aW9uID0ga2VybmVsQnlOYW1l
KG1fY29sb3JNYXRyaXhQcm9ncmFtLCAibWF0cml4IikpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIG1fbHVtaW5hbmNlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQ
cm9ncmFtLCAibHVtaW5hbmNlIik7Ci0gICAgaWYgKCFtX2x1bWluYW5jZU9wZXJhdGlvbikKKyAg
ICBpZiAocmVzb3VyY2VBbGxvY2F0aW9uSXNGYWlsZWQoKG1fc2F0dXJhdGVBbmRIdWVSb3RhdGVP
cGVyYXRpb24gPSBrZXJuZWxCeU5hbWUobV9jb2xvck1hdHJpeFByb2dyYW0sICJzYXR1cmF0ZUFu
ZEh1ZVJvdGF0ZSIpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fY29sb3JNYXRy
aXhDb21waWxlU3RhdHVzID0gb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWw7Ci0gICAgcmV0dXJuIG9w
ZW5jbENvbXBpbGVTdWNjZXNzZnVsOworICAgIGlmIChyZXNvdXJjZUFsbG9jYXRpb25Jc0ZhaWxl
ZCgobV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZShtX2NvbG9y
TWF0cml4UHJvZ3JhbSwgInNhdHVyYXRlQW5kSHVlUm90YXRlIikpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChyZXNvdXJjZUFsbG9jYXRpb25Jc0ZhaWxlZCgobV9sdW1pbmFuY2VP
cGVyYXRpb24gPSBrZXJuZWxCeU5hbWUobV9jb2xvck1hdHJpeFByb2dyYW0sICJsdW1pbmFuY2Ui
KSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGlubGlu
ZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFwcGx5RkVDb2xvck1hdHJpeChPcGVuQ0xIYW5k
bGUgZGVzdGluYXRpb24sIEludFNpemUgZGVzdGluYXRpb25TaXplLCBPcGVuQ0xIYW5kbGUgc291
cmNlLCBJbnRQb2ludCByZWxhdGl2ZVNvdXJjZUxvY2F0aW9uLCBmbG9hdCogdmFsdWVzLCBpbnQg
dHlwZSkKQEAgLTEzMCw5ICsxMjksMTMgQEAgaW5saW5lIHZvaWQgRmlsdGVyQ29udGV4dE9wZW5D
TDo6YXBwbHlGRUNvbG9yTWF0cml4KE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiwgSW4KIGJvb2wg
RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseU9wZW5DTCgpCiB7CiAgICAgRmlsdGVyQ29udGV4
dE9wZW5DTCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKLSAgICBp
ZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPmNvbXBpbGVGRUNvbG9yTWF0cml4KCkpCisKKyAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghY29udGV4dC0+
Y29tcGlsZUZFQ29sb3JNYXRyaXgoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBGaWx0
ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAgICAgT3BlbkNMSGFuZGxlIHNvdXJjZSA9
IGluLT5vcGVuQ0xJbWFnZSgpOwogICAgIE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiA9IGNyZWF0
ZU9wZW5DTEltYWdlUmVzdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHAK
aW5kZXggMmM5MWI0Ny4uNWVkMWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRVR1cmJ1bGVuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNl
LmNwcApAQCAtMTY5LDE5ICsxNjksMTkgQEAgX19rZXJuZWwgdm9pZCBUdXJidWxlbmNlKF9fd3Jp
dGVfb25seSBpbWFnZTJkX3QgZGVzdGluYXRpb24sIF9fY29uc3RhbnQgZmxvYXQgKnQKIAogaW5s
aW5lIGJvb2wgRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29tcGlsZUZFVHVyYnVsZW5jZSgpCiB7Ci0g
ICAgaWYgKG1fdHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQp
Ci0gICAgICAgIHJldHVybiBtX3R1cmJ1bGVuY2VDb21waWxlU3RhdHVzID09IG9wZW5jbENvbXBp
bGVTdWNjZXNzZnVsOworICAgIGlmIChtX3R1cmJ1bGVuY2VXYXNDb21waWxlZCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBtX3R1cmJ1bGVuY2VDb21waWxlU3RhdHVzID0gb3BlbmNsQ29t
cGlsZUZhaWxlZDsKLSAgICBtX3R1cmJ1bGVuY2VQcm9ncmFtID0gY29tcGlsZVByb2dyYW0odHVy
YnVsZW5jZUtlcm5lbFByb2dyYW0pOwotICAgIGlmICghbV90dXJidWxlbmNlUHJvZ3JhbSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fdHVyYnVsZW5jZU9wZXJhdGlvbiA9IGtlcm5lbEJ5
TmFtZShtX3R1cmJ1bGVuY2VQcm9ncmFtLCAiVHVyYnVsZW5jZSIpOwotICAgIGlmICghbV90dXJi
dWxlbmNlT3BlcmF0aW9uKQorICAgIGlmIChpbkVycm9yKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIG1fdHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMgPSBvcGVuY2xDb21waWxlU3VjY2Vz
c2Z1bDsKLSAgICByZXR1cm4gb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWw7CisgICAgbV90dXJidWxl
bmNlV2FzQ29tcGlsZWQgPSB0cnVlOworCisgICAgaWYgKHJlc291cmNlQWxsb2NhdGlvbklzRmFp
bGVkKChtX3R1cmJ1bGVuY2VQcm9ncmFtID0gY29tcGlsZVByb2dyYW0odHVyYnVsZW5jZUtlcm5l
bFByb2dyYW0pKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmVzb3VyY2VBbGxv
Y2F0aW9uSXNGYWlsZWQoKG1fdHVyYnVsZW5jZU9wZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZShtX3R1
cmJ1bGVuY2VQcm9ncmFtLCAiVHVyYnVsZW5jZSIpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogaW5saW5lIHZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6
YXBwbHlGRVR1cmJ1bGVuY2UoT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uLApAQCAtMjI0LDkgKzIy
NCwxMiBAQCBpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjphcHBseUZFVHVyYnVsZW5j
ZShPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24sCiBib29sIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1B
cHBseU9wZW5DTCgpCiB7CiAgICAgRmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZpbHRl
ckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQt
PmNvbXBpbGVGRVR1cmJ1bGVuY2UoKSkKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAorICAgICBpZiAoIWNvbnRleHQtPmNvbXBpbGVGRVR1cmJ1bGVuY2UoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKICAgICBPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24gPSBjcmVh
dGVPcGVuQ0xJbWFnZVJlc3VsdCgpOwogCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YSht
X3NlZWQsIHJvdW5kZWRJbnRTaXplKGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpLnNpemUoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcAppbmRleCAyOTgzYzRmLi45ODk5MDk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RB
cHBseVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBHcmFwaGljc0NvCiAgICAgICAgIC8v
IEFsd2F5cyB0cnVlIGlmIGZpbHRlckRhdGEgaXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+c3Rh
dGUgPT0gRmlsdGVyRGF0YTo6QnVpbHQpLgogICAgICAgICBpZiAoIWxhc3RFZmZlY3QtPmhhc1Jl
c3VsdCgpKSB7CiAgICAgICAgICAgICBmaWx0ZXJEYXRhLT5zdGF0ZSA9IEZpbHRlckRhdGE6OkFw
cGx5aW5nOwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKTsKKyAgICAgICAgICAgIGxh
c3RFZmZlY3QtPmFwcGx5QWxsKCk7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0Rmls
dGVyUmVzdWx0SWZOZWVkZWQoKTsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187595</attachid>
            <date>2013-02-11 09:12:46 -0800</date>
            <delta_ts>2013-02-12 00:57:30 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25978</size>
            <attacher name="Tamas Czene">tczene</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZGZjZDVjLi5lYTk4MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTMtMDItMDcgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBBZGQgZXJyb3IgY2hlY2tpbmcgaW50byBPcGVuQ0wgdmVyc2lvbiBvZiBTVkcgZmls
dGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NzQ0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
IGNhc2Ugb2YgYW4gZXJyb3IgdGhlIHByb2dyYW0gcnVucyB0aHJvdWdoIGFsbCB0aGUgcmVtYWlu
aW5nIGZpbHRlcnMgYnkgZG9pbmcgbm90aGluZy4gCisgICAgICAgIEFmdGVyIHRoYXQgZGVsZXRl
cyB0aGUgcmVzdWx0cyBvZiBldmVyeSBmaWx0ZXIgYW5kIHN0YXJ0cyBzb2Z0d2FyZSByZW5kZXJp
bmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
YXBwbHlBbGwpOiBBdCBzb2Z0d2FyZSByZW5kZXJpbmcgdGhpcyBpcyBhIHNpbXBsZSBpbmxpbmUg
bWV0aG9kZSwgYnV0IGF0IE9wZW5DTCByZW5kZXJpbmcgaXQgcmVsZWFzZXMgT3BlbkNMIHRoaW5n
cy4gSWYgd2UgaGF2ZSBhbiBlcnJvciByZW1vdmUgZmlsdGVyJ3MgcmVzdWx0cyBhbmQgc3RhcnQg
c29mdHdhcmUgcmVuZGVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjbGVh
clJlc3VsdHNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpvcGVu
Q0xJbWFnZVRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpj
cmVhdGVPcGVuQ0xJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChGaWx0ZXJFZmZlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBseUFsbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmlzRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpkZXN0cm95Q29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlVHJhbnNmb3Jt
Q29sb3JTcGFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5D
TDo6b3BlbkNMVHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpjb21waWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpmcmVlUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5oOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyQ29udGV4dE9wZW5DTDo6RmlsdGVyQ29udGV4dE9wZW5DTCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpzZXRJbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckNvbnRleHRPcGVuQ0w6OmluRXJyb3IpOgorICAgICAgICAoRmlsdGVyQ29udGV4dE9wZW5D
TCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6OlJ1
bktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJu
ZWw6OmFkZEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6
OlJ1bktlcm5lbDo6cnVuKToKKyAgICAgICAgKFJ1bktlcm5lbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0wpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRVR1cmJ1
bGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5T3Bl
bkNMKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlS
ZXNvdXJjZSk6CisKIDIwMTMtMDItMDYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIE9wdGltaXplIEdseXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhz
IGFyZSBhdmFpbGFibGUgaW4gdGhlIHNhbWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBk
NzM1NGY2Li45MDZmMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC05Nyw2ICs5NywyNCBAQCBG
aWx0ZXJFZmZlY3QqIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVtYmVyKSBj
b25zdAogICAgIHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1iZXIpLmdldCgpOwogfQogCisj
aWYgRU5BQkxFKE9QRU5DTCkKK3ZvaWQgRmlsdGVyRWZmZWN0OjphcHBseUFsbCgpCit7CisgICAg
aWYgKGhhc1Jlc3VsdCgpKQorICAgICAgICByZXR1cm47CisgICAgRmlsdGVyQ29udGV4dE9wZW5D
TCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkgeworICAgICAgICBhcHBseSgpOworICAgICAgICBpZiAoIWNvbnRleHQtPmluRXJyb3Io
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7
CisgICAgICAgIGNvbnRleHQtPmRlc3Ryb3lDb250ZXh0KCk7CisgICAgfQorICAgIC8vIFNvZnR3
YXJlIGNvZGUgcGF0aC4KKyAgICBhcHBseSgpOworfQorI2VuZGlmCisKIHZvaWQgRmlsdGVyRWZm
ZWN0OjphcHBseSgpCiB7CiAgICAgaWYgKGhhc1Jlc3VsdCgpKQpAQCAtMjIzLDYgKzI0MSwxOCBA
QCB2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRmls
dGVyRWZmZWN0OjpjbGVhclJlc3VsdHNSZWN1cnNpdmUoKQoreworICAgIC8vIENsZWFyIGFsbCBy
ZXN1bHRzLCByZWdhcmRsZXNzIHRoYXQgdGhlIGN1cnJlbnQgZWZmZWN0IGhhcworICAgIC8vIGEg
cmVzdWx0LiBDYW4gYmUgdXNlZCBpZiBhbiBlZmZlY3QgaXMgaW4gYW4gZXJyb25lb3VzIHN0YXRl
LgorICAgIGlmIChoYXNSZXN1bHQoKSkKKyAgICAgICAgY2xlYXJSZXN1bHQoKTsKKworICAgIHVu
c2lnbmVkIHNpemUgPSBtX2lucHV0RWZmZWN0cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9pbnB1dEVmZmVjdHMuYXQoaSkuZ2V0KCkt
PmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOworfQorCiBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0
Ojphc0ltYWdlQnVmZmVyKCkKIHsKICAgICBpZiAoIWhhc1Jlc3VsdCgpKQpAQCAtMjQ4LDEzICsy
NzgsMjMgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVm
ZmVyKCkKICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9w
ZW5DTDo6Y29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKIAorICAgIGlmIChjb250ZXh0
LT5pbkVycm9yKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaW50IGVycm9yQ29kZSA9IDA7
CisKICAgICBzaXplX3Qgb3JpZ2luWzNdID0geyAwLCAwLCAwIH07CiAgICAgc2l6ZV90IHJlZ2lv
blszXSA9IHsgbV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0
LmhlaWdodCgpLCAxIH07CiAKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGRlc3RpbmF0
aW9uUGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50
UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwogCi0gICAg
Y2xGaW5pc2goY29udGV4dC0+Y29tbWFuZFF1ZXVlKCkpOwotICAgIGNsRW5xdWV1ZVJlYWRJbWFn
ZShjb250ZXh0LT5jb21tYW5kUXVldWUoKSwgbV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwg
b3JpZ2luLCByZWdpb24sIDAsIDAsIGRlc3RpbmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAw
LCAwKTsKKyAgICBlcnJvckNvZGUgPSBjbEZpbmlzaChjb250ZXh0LT5jb21tYW5kUXVldWUoKSk7
CisgICAgaWYgKGNvbnRleHQtPmlzRmFpbGVkKGVycm9yQ29kZSkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgZXJyb3JDb2RlID0gY2xFbnF1ZXVlUmVhZEltYWdlKGNvbnRleHQtPmNvbW1hbmRR
dWV1ZSgpLCBtX29wZW5DTEltYWdlUmVzdWx0LCBDTF9UUlVFLCBvcmlnaW4sIHJlZ2lvbiwgMCwg
MCwgZGVzdGluYXRpb25QaXhlbEFycmF5LT5kYXRhKCksIDAsIDAsIDApOworICAgIGlmIChjb250
ZXh0LT5pc0ZhaWxlZChlcnJvckNvZGUpKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIG1faW1h
Z2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Qu
c2l6ZSgpKTsKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9uUmVjdChJbnRQb2ludCgpLCBtX2Fic29s
dXRlUGFpbnRSZWN0LnNpemUoKSk7CkBAIC00MjYsMTUgKzQ2NiwyMyBAQCBVaW50OENsYW1wZWRB
cnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogI2lm
IEVOQUJMRShPUEVOQ0wpCiBPcGVuQ0xIYW5kbGUgRmlsdGVyRWZmZWN0OjpjcmVhdGVPcGVuQ0xJ
bWFnZVJlc3VsdCh1aW50OF90KiBzb3VyY2UpCiB7CisgICAgRmlsdGVyQ29udGV4dE9wZW5DTCog
Y29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKKyAgICBBU1NFUlQoY29u
dGV4dCk7CisKKyAgICBpZiAoY29udGV4dC0+aW5FcnJvcigpKQorICAgICAgICByZXR1cm4gMDsK
KwogICAgIEFTU0VSVCghaGFzUmVzdWx0KCkpOwogICAgIGNsX2ltYWdlX2Zvcm1hdCBjbEltYWdl
Rm9ybWF0OwogICAgIGNsSW1hZ2VGb3JtYXQuaW1hZ2VfY2hhbm5lbF9vcmRlciA9IENMX1JHQkE7
CiAgICAgY2xJbWFnZUZvcm1hdC5pbWFnZV9jaGFubmVsX2RhdGFfdHlwZSA9IENMX1VOT1JNX0lO
VDg7CiAKLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9w
ZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBpbnQgZXJyb3JDb2Rl
ID0gMDsKICAgICBtX29wZW5DTEltYWdlUmVzdWx0ID0gY2xDcmVhdGVJbWFnZTJEKGNvbnRleHQt
PmRldmljZUNvbnRleHQoKSwgQ0xfTUVNX1JFQURfV1JJVEUgfCAoc291cmNlID8gQ0xfTUVNX0NP
UFlfSE9TVF9QVFIgOiAwKSwKLSAgICAgICAgJmNsSW1hZ2VGb3JtYXQsIG1fYWJzb2x1dGVQYWlu
dFJlY3Qud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSwgMCwgc291cmNlLCAw
KTsKKyAgICAgICAgJmNsSW1hZ2VGb3JtYXQsIG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSwg
bV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSwgMCwgc291cmNlLCAmZXJyb3JDb2RlKTsKKyAg
ICBpZiAoY29udGV4dC0+aXNGYWlsZWQoZXJyb3JDb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
ICAgICByZXR1cm4gbV9vcGVuQ0xJbWFnZVJlc3VsdDsKIH0KICNlbmRpZgpAQCAtNDUwLDE3ICs0
OTgsMTcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29s
b3JTcGFjZSBkc3RDb2xvclNwYWNlKQogCiAjaWYgRU5BQkxFKE9QRU5DTCkKICAgICBpZiAob3Bl
bkNMSW1hZ2UoKSkgeworICAgICAgICBpZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKKyAgICAgICAg
ICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQuY2xlYXIoKTsKICAgICAgICAgRmlsdGVyQ29udGV4dE9w
ZW5DTCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LT5vcGVuQ0xUcmFuc2Zvcm1Db2xvclNw
YWNlKG1fb3BlbkNMSW1hZ2VSZXN1bHQsIGFic29sdXRlUGFpbnRSZWN0KCksIG1fcmVzdWx0Q29s
b3JTcGFjZSwgZHN0Q29sb3JTcGFjZSk7Ci0gICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0
KQotICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC5jbGVhcigpOwogICAgIH0gZWxzZSB7
CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBXZSBjYW4gYXZvaWQgdGhpcyBwb3RlbnRpYWxseSB1
bm5lY2Vzc2FyeSBJbWFnZUJ1ZmZlciBjb252ZXJzaW9uIGJ5IGFkZGluZwotICAgIC8vIGNvbG9y
IHNwYWNlIHRyYW5zZm9ybSBzdXBwb3J0IGZvciB0aGUge3ByZSx1bn1tdWx0aXBsaWVkIGFycmF5
cy4KLSAgICBhc0ltYWdlQnVmZmVyKCktPnRyYW5zZm9ybUNvbG9yU3BhY2UobV9yZXN1bHRDb2xv
clNwYWNlLCBkc3RDb2xvclNwYWNlKTsKKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBhdm9pZCB0
aGlzIHBvdGVudGlhbGx5IHVubmVjZXNzYXJ5IEltYWdlQnVmZmVyIGNvbnZlcnNpb24gYnkgYWRk
aW5nCisgICAgICAgIC8vIGNvbG9yIHNwYWNlIHRyYW5zZm9ybSBzdXBwb3J0IGZvciB0aGUge3By
ZSx1bn1tdWx0aXBsaWVkIGFycmF5cy4KKyAgICAgICAgYXNJbWFnZUJ1ZmZlcigpLT50cmFuc2Zv
cm1Db2xvclNwYWNlKG1fcmVzdWx0Q29sb3JTcGFjZSwgZHN0Q29sb3JTcGFjZSk7CiAKICNpZiBF
TkFCTEUoT1BFTkNMKQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDAxZDg1YTkuLmYwZmY4ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaApAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
RmlsdGVyRWZmZWN0KCk7CiAKICAgICB2b2lkIGNsZWFyUmVzdWx0KCk7CisgICAgdm9pZCBjbGVh
clJlc3VsdHNSZWN1cnNpdmUoKTsKKwogICAgIEltYWdlQnVmZmVyKiBhc0ltYWdlQnVmZmVyKCk7
CiAgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShj
b25zdCBJbnRSZWN0Jik7CiAgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNQcmVt
dWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYpOwpAQCAtMTA5LDcgKzExMSwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRNYXhFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbWF4RWZmZWN0
UmVjdCkgeyBtX21heEVmZmVjdFJlY3QgPSBtYXhFZmZlY3RSZWN0OyB9IAogCiAgICAgdm9pZCBh
cHBseSgpOwotICAgIAorI2lmIEVOQUJMRShPUEVOQ0wpCisgICAgdm9pZCBhcHBseUFsbCgpOwor
I2Vsc2UKKyAgICBpbmxpbmUgdm9pZCBhcHBseUFsbCgpIHsgYXBwbHkoKTsgfQorI2VuZGlmCisK
ICAgICAvLyBDb3JyZWN0IGFueSBpbnZhbGlkIHBpeGVscywgaWYgbmVjZXNzYXJ5LCBpbiB0aGUg
cmVzdWx0IG9mIGEgZmlsdGVyIG9wZXJhdGlvbi4KICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2Vk
IHRvIGVuc3VyZSB2YWxpZCBwaXhlbCB2YWx1ZXMgb24gZmlsdGVyIGlucHV0cyBhbmQgdGhlIGZp
bmFsIHJlc3VsdC4KICAgICAvLyBPbmx5IHRoZSBhcml0aG1ldGljIGNvbXBvc2l0ZSBmaWx0ZXIg
ZXZlciBuZWVkcyB0byBwZXJmb3JtIGNvcnJlY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250
ZXh0T3BlbkNMLmNwcAppbmRleCA0YzMwNTk2Li4zODljY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmls
dGVyQ29udGV4dE9wZW5DTC5jcHAKQEAgLTg4LDYgKzg4LDQ2IEBAIEZpbHRlckNvbnRleHRPcGVu
Q0wqIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKQogICAgIHJldHVybiBtX2NvbnRleHQ7
CiB9CiAKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlcygpCit7CisgICAg
Y2xGaW5pc2gobV9jb21tYW5kUXVldWUpOworCisgICAgaWYgKG1fY29sb3JNYXRyaXhXYXNDb21w
aWxlZCkgeworICAgICAgICBmcmVlUmVzb3VyY2UobV9tYXRyaXhPcGVyYXRpb24pOworICAgICAg
ICBmcmVlUmVzb3VyY2UobV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbik7CisgICAgICAg
IGZyZWVSZXNvdXJjZShtX2x1bWluYW5jZU9wZXJhdGlvbik7CisgICAgICAgIGZyZWVSZXNvdXJj
ZShtX2NvbG9yTWF0cml4UHJvZ3JhbSk7CisgICAgfQorICAgIG1fY29sb3JNYXRyaXhXYXNDb21w
aWxlZCA9IGZhbHNlOworCisgICAgaWYgKG1fdHVyYnVsZW5jZVdhc0NvbXBpbGVkKSB7CisgICAg
ICAgIGZyZWVSZXNvdXJjZShtX3R1cmJ1bGVuY2VPcGVyYXRpb24pOworICAgICAgICBmcmVlUmVz
b3VyY2UobV90dXJidWxlbmNlUHJvZ3JhbSk7CisgICAgfSAgICAKKyAgICBtX3R1cmJ1bGVuY2VX
YXNDb21waWxlZCA9IGZhbHNlOworCisgICAgaWYgKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVdhc0Nv
bXBpbGVkKSB7CisgICAgICAgIGZyZWVSZXNvdXJjZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJu
ZWwpOworICAgICAgICBmcmVlUmVzb3VyY2UobV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSk7
CisgICAgfQorICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVdhc0NvbXBpbGVkID0gZmFsc2U7Cit9
CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZGVzdHJveUNvbnRleHQoKQoreworICAgIGZy
ZWVSZXNvdXJjZXMoKTsKKworICAgIGlmIChtX2NvbW1hbmRRdWV1ZSkKKyAgICAgICAgY2xSZWxl
YXNlQ29tbWFuZFF1ZXVlKG1fY29tbWFuZFF1ZXVlKTsKKyAgICBtX2NvbW1hbmRRdWV1ZSA9IDA7
CisKKyAgICBpZiAobV9kZXZpY2VDb250ZXh0KQorICAgICAgICBjbFJlbGVhc2VDb250ZXh0KG1f
ZGV2aWNlQ29udGV4dCk7CisgICAgbV9kZXZpY2VDb250ZXh0ID0gMDsKKworICAgIG1fY29udGV4
dCA9IDA7Cit9CisKIE9wZW5DTEhhbmRsZSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjcmVhdGVPcGVu
Q0xJbWFnZShJbnRTaXplIHBhaW50U2l6ZSkKIHsKICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBj
b250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwpAQCAtMTE3LDMxICsxNTcs
NDEgQEAgX19rZXJuZWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKF9fcmVhZF9vbmx5IGltYWdl
MmRfdCBzb3VyY2UsIF9fd3JpdGVfb25seSBpbWEKIH0KICk7IC8vIEVuZCBvZiBPcGVuQ0wga2Vy
bmVscwogCitpbmxpbmUgYm9vbCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlVHJhbnNmb3Jt
Q29sb3JTcGFjZVByb2dyYW0oKQoreworICAgIGlmIChtX3RyYW5zZm9ybUNvbG9yU3BhY2VXYXND
b21waWxlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoaW5FcnJvcigpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3RyYW5zZm9ybUNvbG9yU3BhY2VXYXNDb21waWxl
ZCA9IHRydWU7CisKKyAgICBpZiAocmVzb3VyY2VBbGxvY2F0aW9uSXNGYWlsZWQoKG1fdHJhbnNm
b3JtQ29sb3JTcGFjZVByb2dyYW0gPSBjb21waWxlUHJvZ3JhbSh0cmFuc2Zvcm1Db2xvclNwYWNl
S2VybmVsUHJvZ3JhbSkpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChyZXNvdXJj
ZUFsbG9jYXRpb25Jc0ZhaWxlZCgobV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsID0ga2VybmVs
QnlOYW1lKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0sICJ0cmFuc2Zvcm1Db2xvclNwYWNl
IikpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lk
IEZpbHRlckNvbnRleHRPcGVuQ0w6Om9wZW5DTFRyYW5zZm9ybUNvbG9yU3BhY2UoT3BlbkNMSGFu
ZGxlJiBzb3VyY2UsIEludFJlY3Qgc291cmNlU2l6ZSwgQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNl
LCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChP
cGVuQ0xIYW5kbGUsIGRldmljZVJnYkxVVCwgKCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
T3BlbkNMSGFuZGxlLCBsaW5lYXJSZ2JMVVQsICgpKTsKIAotICAgIGlmIChzcmNDb2xvclNwYWNl
ID09IGRzdENvbG9yU3BhY2UpCisgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0Q29sb3JTcGFj
ZSB8fCBpbkVycm9yKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgoc3JjQ29sb3JTcGFj
ZSAhPSBDb2xvclNwYWNlTGluZWFyUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZURl
dmljZVJHQikKICAgICAgICAgfHwgKGRzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZUxpbmVhclJH
QiAmJiBkc3RDb2xvclNwYWNlICE9IENvbG9yU3BhY2VEZXZpY2VSR0IpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9w
ZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBpZiAoIWNvbXBpbGVU
cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBPcGVu
Q0xIYW5kbGUgZGVzdGluYXRpb24gPSBjb250ZXh0LT5jcmVhdGVPcGVuQ0xJbWFnZShzb3VyY2VT
aXplLnNpemUoKSk7CisgICAgT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3BlbkNM
SW1hZ2Uoc291cmNlU2l6ZS5zaXplKCkpOwogCi0gICAgaWYgKCFtX3RyYW5zZm9ybUNvbG9yU3Bh
Y2VQcm9ncmFtKSB7Ci0gICAgICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0gPSBjb21w
aWxlUHJvZ3JhbSh0cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsUHJvZ3JhbSk7Ci0gICAgICAgIEFT
U0VSVChtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKTsKLSAgICAgICAgbV90cmFuc2Zvcm1D
b2xvclNwYWNlS2VybmVsID0ga2VybmVsQnlOYW1lKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dy
YW0sICJ0cmFuc2Zvcm1Db2xvclNwYWNlIik7Ci0gICAgICAgIEFTU0VSVChtX3RyYW5zZm9ybUNv
bG9yU3BhY2VLZXJuZWwpOwotICAgIH0KLQotICAgIFJ1bktlcm5lbCBrZXJuZWwoY29udGV4dCwg
bV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsLCBzb3VyY2VTaXplLndpZHRoKCksIHNvdXJjZVNp
emUuaGVpZ2h0KCkpOworICAgIFJ1bktlcm5lbCBrZXJuZWwodGhpcywgbV90cmFuc2Zvcm1Db2xv
clNwYWNlS2VybmVsLCBzb3VyY2VTaXplLndpZHRoKCksIHNvdXJjZVNpemUuaGVpZ2h0KCkpOwog
ICAgIGtlcm5lbC5hZGRBcmd1bWVudChzb3VyY2UpOwogICAgIGtlcm5lbC5hZGRBcmd1bWVudChk
ZXN0aW5hdGlvbik7CiAKQEAgLTE4MSwxOCArMjMxLDM0IEBAIHZvaWQgRmlsdGVyQ29udGV4dE9w
ZW5DTDo6b3BlbkNMVHJhbnNmb3JtQ29sb3JTcGFjZShPcGVuQ0xIYW5kbGUmIHNvdXJjZSwgSW50
UmVjCiBjbF9wcm9ncmFtIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVQcm9ncmFtKGNvbnN0
IGNoYXIqIHNvdXJjZSkKIHsKICAgICBjbF9wcm9ncmFtIHByb2dyYW07Ci0gICAgY2xfaW50IGVy
cm9yTnVtYmVyOworICAgIGNsX2ludCBlcnJvck51bWJlciA9IDA7CiAKLSAgICBGaWx0ZXJDb250
ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAg
IEFTU0VSVChjb250ZXh0KTsKKyAgICBwcm9ncmFtID0gY2xDcmVhdGVQcm9ncmFtV2l0aFNvdXJj
ZShtX2RldmljZUNvbnRleHQsIDEsIChjb25zdCBjaGFyKiopICZzb3VyY2UsIDAsICZlcnJvck51
bWJlcik7CisgICAgaWYgKGlzRmFpbGVkKGVycm9yTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBwcm9ncmFtID0gY2xDcmVhdGVQcm9ncmFtV2l0aFNvdXJjZShjb250ZXh0LT5tX2Rl
dmljZUNvbnRleHQsIDEsIChjb25zdCBjaGFyKiopICZzb3VyY2UsIDAsIDApOwogICAgIGVycm9y
TnVtYmVyID0gY2xCdWlsZFByb2dyYW0ocHJvZ3JhbSwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgaWYg
KGVycm9yTnVtYmVyKQorICAgIGlmIChpc0ZhaWxlZChlcnJvck51bWJlcikpCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgcmV0dXJuIHByb2dyYW07CiB9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9w
ZW5DTDo6ZnJlZVJlc291cmNlKGNsX2tlcm5lbCYgaGFuZGxlKQoreworICAgIGlmIChoYW5kbGUp
IHsKKyAgICAgICAgY2xSZWxlYXNlS2VybmVsKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IDA7
CisgICAgfQorfQorCit2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmZyZWVSZXNvdXJjZShjbF9w
cm9ncmFtJiBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSkgeworICAgICAgICBjbFJlbGVhc2VQ
cm9ncmFtKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IDA7CisgICAgfQorfQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmgK
aW5kZXggYjE4OThiNi4uNGYxODVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNM
LmgKQEAgLTQ0LDE3ICs0NCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWx0ZXJD
b250ZXh0T3BlbkNMIHsKIHB1YmxpYzoKICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKCkKLSAgICAg
ICAgOiBtX2RldmljZUlkKDApCisgICAgICAgIDogbV9pbkVycm9yKGZhbHNlKQorICAgICAgICAs
IG1fZGV2aWNlSWQoMCkKICAgICAgICAgLCBtX2RldmljZUNvbnRleHQoMCkKICAgICAgICAgLCBt
X2NvbW1hbmRRdWV1ZSgwKQorICAgICAgICAsIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVdhc0NvbXBp
bGVkKGZhbHNlKQogICAgICAgICAsIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0oMCkKICAg
ICAgICAgLCBtX3RyYW5zZm9ybUNvbG9yU3BhY2VLZXJuZWwoMCkKLSAgICAgICAgLCBtX2NvbG9y
TWF0cml4Q29tcGlsZVN0YXR1cyhvcGVuY2xOb3RDb21waWxlZFlldCkKKyAgICAgICAgLCBtX2Nv
bG9yTWF0cml4V2FzQ29tcGlsZWQoZmFsc2UpCiAgICAgICAgICwgbV9jb2xvck1hdHJpeFByb2dy
YW0oMCkKICAgICAgICAgLCBtX21hdHJpeE9wZXJhdGlvbigwKQogICAgICAgICAsIG1fc2F0dXJh
dGVBbmRIdWVSb3RhdGVPcGVyYXRpb24oMCkKICAgICAgICAgLCBtX2x1bWluYW5jZU9wZXJhdGlv
bigwKQotICAgICAgICAsIG1fdHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMob3BlbmNsTm90Q29tcGls
ZWRZZXQpCisgICAgICAgICwgbV90dXJidWxlbmNlV2FzQ29tcGlsZWQoZmFsc2UpCiAgICAgICAg
ICwgbV90dXJidWxlbmNlUHJvZ3JhbSgwKQogICAgICAgICAsIG1fdHVyYnVsZW5jZU9wZXJhdGlv
bigwKQogICAgIHsKQEAgLTY3LDcgKzY5LDE3IEBAIHB1YmxpYzoKICAgICBjbF9jb250ZXh0IGRl
dmljZUNvbnRleHQoKSB7IHJldHVybiBtX2RldmljZUNvbnRleHQ7IH0KICAgICBjbF9jb21tYW5k
X3F1ZXVlIGNvbW1hbmRRdWV1ZSgpIHsgcmV0dXJuIG1fY29tbWFuZFF1ZXVlOyB9CiAKKyAgICBp
bmxpbmUgdm9pZCBzZXRJbkVycm9yKGJvb2wgZXJyb3JDb2RlID0gdHJ1ZSkgeyBtX2luRXJyb3Ig
PSBlcnJvckNvZGU7IH0KKyAgICBpbmxpbmUgYm9vbCBpbkVycm9yKCkgeyByZXR1cm4gbV9pbkVy
cm9yOyB9CisgICAgaW5saW5lIGJvb2wgaXNGYWlsZWQoYm9vbCk7CisgICAgaW5saW5lIGJvb2wg
cmVzb3VyY2VBbGxvY2F0aW9uSXNGYWlsZWQoYm9vbCk7CisKKyAgICB2b2lkIGZyZWVSZXNvdXJj
ZXMoKTsKKyAgICB2b2lkIGRlc3Ryb3lDb250ZXh0KCk7CisKICAgICBPcGVuQ0xIYW5kbGUgY3Jl
YXRlT3BlbkNMSW1hZ2UoSW50U2l6ZSk7CisKKyAgICBpbmxpbmUgYm9vbCBjb21waWxlVHJhbnNm
b3JtQ29sb3JTcGFjZVByb2dyYW0oKTsKICAgICB2b2lkIG9wZW5DTFRyYW5zZm9ybUNvbG9yU3Bh
Y2UoT3BlbkNMSGFuZGxlJiwgSW50UmVjdCwgQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSk7CiAKICAg
ICBpbmxpbmUgYm9vbCBjb21waWxlRkVDb2xvck1hdHJpeCgpOwpAQCAtODQsNyArOTYsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgUnVuS2VybmVsKEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRl
eHQsIGNsX2tlcm5lbCBrZXJuZWwsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKICAgICAg
ICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICAgICAgICAgICAgICwgbV9rZXJu
ZWwoa2VybmVsKQotICAgICAgICAgICAgICAgICwgaW5kZXgoMCkKKyAgICAgICAgICAgICAgICAs
IG1faW5kZXgoMCkKKyAgICAgICAgICAgICAgICAsIG1fZXJyb3IoY29udGV4dC0+aW5FcnJvcigp
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1fZ2xvYmFsU2l6ZVswXSA9IHdpZHRo
OwogICAgICAgICAgICAgICAgIG1fZ2xvYmFsU2l6ZVsxXSA9IGhlaWdodDsKQEAgLTkyLDc0ICsx
MDUsMTAzIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIHZvaWQgYWRkQXJndW1lbnQoT3BlbkNM
SGFuZGxlIGhhbmRsZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjbFNldEtlcm5l
bEFyZyhtX2tlcm5lbCwgaW5kZXgrKywgc2l6ZW9mKE9wZW5DTEhhbmRsZSksIGhhbmRsZS5oYW5k
bGVBZGRyZXNzKCkpOworICAgICAgICAgICAgICAgIGlmICghbV9lcnJvcikKKyAgICAgICAgICAg
ICAgICAgICAgbV9lcnJvciA9IGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBtX2luZGV4KyssIHNp
emVvZihPcGVuQ0xIYW5kbGUpLCBoYW5kbGUuaGFuZGxlQWRkcmVzcygpKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgdm9pZCBhZGRBcmd1bWVudChjbF9pbnQgdmFsdWUpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIGluZGV4Kyss
IHNpemVvZihjbF9pbnQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPigmdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBj
bFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRleCsrLCBzaXplb2YoY2xfaW50KSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oJnZhbHVlKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IHZvaWQgYWRkQXJndW1lbnQoY2xfZmxvYXQgdmFsdWUpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIGluZGV4KyssIHNpemVvZihjbF9mbG9h
dCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZ2YWx1ZSkpOworICAgICAgICAgICAgICAgIGlm
ICghbV9lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsU2V0S2VybmVsQXJn
KG1fa2VybmVsLCBtX2luZGV4KyssIHNpemVvZihjbF9mbG9hdCksIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KCZ2YWx1ZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2b2lkIGFkZEFy
Z3VtZW50KGNsX3NhbXBsZXIgaGFuZGxlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBpbmRleCsrLCBzaXplb2YoY2xfc2FtcGxlciksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZoYW5kbGUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1f
ZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbFNldEtlcm5lbEFyZyhtX2tl
cm5lbCwgbV9pbmRleCsrLCBzaXplb2YoY2xfc2FtcGxlciksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCZoYW5kbGUpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgT3BlbkNMSGFuZGxl
IGFkZEFyZ3VtZW50KHZvaWQqIGJ1ZmZlciwgaW50IHNpemUpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgT3BlbkNMSGFuZGxlIGhhbmRsZShjbENyZWF0ZUJ1ZmZlcihtX2NvbnRleHQt
PmRldmljZUNvbnRleHQoKSwgQ0xfTUVNX1JFQURfT05MWSwgc2l6ZSwgMCwgMCkpOwotICAgICAg
ICAgICAgICAgIGNsRW5xdWV1ZVdyaXRlQnVmZmVyKG1fY29udGV4dC0+Y29tbWFuZFF1ZXVlKCks
IGhhbmRsZSwgQ0xfVFJVRSwgMCwgc2l6ZSwgYnVmZmVyLCAwLCAwLCAwKTsKLSAgICAgICAgICAg
ICAgICBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgaW5kZXgrKywgc2l6ZW9mKE9wZW5DTEhhbmRs
ZSksIGhhbmRsZS5oYW5kbGVBZGRyZXNzKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBoYW5k
bGU7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgICAgIE9wZW5DTEhhbmRsZSBoYW5kbGUoY2xDcmVhdGVCdWZm
ZXIobV9jb250ZXh0LT5kZXZpY2VDb250ZXh0KCksIENMX01FTV9SRUFEX09OTFksIHNpemUsIDAs
ICZtX2Vycm9yKSk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbEVucXVldWVXcml0
ZUJ1ZmZlcihtX2NvbnRleHQtPmNvbW1hbmRRdWV1ZSgpLCBoYW5kbGUsIENMX1RSVUUsIDAsIHNp
emUsIGJ1ZmZlciwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbFNl
dEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRleCsrLCBzaXplb2YoT3BlbkNMSGFuZGxlKSwgaGFu
ZGxlLmhhbmRsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuICFtX2Vycm9yID8g
aGFuZGxlIDogMDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdm9pZCBydW4oKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsRmluaXNoKG1fY29udGV4dC0+bV9jb21tYW5k
UXVldWUpOwotICAgICAgICAgICAgICAgIGNsRW5xdWV1ZU5EUmFuZ2VLZXJuZWwobV9jb250ZXh0
LT5tX2NvbW1hbmRRdWV1ZSwgbV9rZXJuZWwsIDIsIDAsIG1fZ2xvYmFsU2l6ZSwgMCwgMCwgMCwg
MCk7CisgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNGYWlsZWQobV9lcnJvcikpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBj
bEZpbmlzaChtX2NvbnRleHQtPm1fY29tbWFuZFF1ZXVlKTsKKyAgICAgICAgICAgICAgICBpZiAo
IW1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbEVucXVldWVORFJhbmdl
S2VybmVsKG1fY29udGV4dC0+bV9jb21tYW5kUXVldWUsIG1fa2VybmVsLCAyLCAwLCBtX2dsb2Jh
bFNpemUsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+aXNGYWlsZWQo
bV9lcnJvcik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEZpbHRlckNvbnRleHRPcGVu
Q0wqIG1fY29udGV4dDsKICAgICAgICAgICAgIGNsX2tlcm5lbCBtX2tlcm5lbDsKICAgICAgICAg
ICAgIHNpemVfdCBtX2dsb2JhbFNpemVbMl07Ci0gICAgICAgICAgICBpbnQgaW5kZXg7CisgICAg
ICAgICAgICBpbnQgbV9pbmRleDsKKyAgICAgICAgICAgIGludCBtX2Vycm9yOwogICAgICAgICB9
OwogCi0gICAgZW51bSBPcGVuQ0xDb21waWxlU3RhdHVzIHsKLSAgICAgICAgb3BlbmNsTm90Q29t
cGlsZWRZZXQsCi0gICAgICAgIG9wZW5jbENvbXBpbGVGYWlsZWQsCi0gICAgICAgIG9wZW5jbENv
bXBpbGVTdWNjZXNzZnVsCi0gICAgfTsKLQotICAgIHN0YXRpYyBjbF9wcm9ncmFtIGNvbXBpbGVQ
cm9ncmFtKGNvbnN0IGNoYXIqKTsKKyAgICBjbF9wcm9ncmFtIGNvbXBpbGVQcm9ncmFtKGNvbnN0
IGNoYXIqKTsKICAgICBzdGF0aWMgaW5saW5lIGNsX2tlcm5lbCBrZXJuZWxCeU5hbWUoY2xfcHJv
Z3JhbSBwcm9ncmFtLCBjb25zdCBjaGFyKiBuYW1lKSB7IHJldHVybiBjbENyZWF0ZUtlcm5lbChw
cm9ncmFtLCBuYW1lLCAwKTsgfQogCisgICAgc3RhdGljIGlubGluZSB2b2lkIGZyZWVSZXNvdXJj
ZShjbF9rZXJuZWwmKTsKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZVJlc291cmNlKGNsX3By
b2dyYW0mKTsKKwogICAgIHN0YXRpYyBGaWx0ZXJDb250ZXh0T3BlbkNMKiBtX2NvbnRleHQ7CiAg
ICAgc3RhdGljIGludCBtX2FscmVhZHlJbml0aWFsaXplZDsKKyAgICBib29sIG1faW5FcnJvcjsK
IAogICAgIGNsX2RldmljZV9pZCBtX2RldmljZUlkOwogICAgIGNsX2NvbnRleHQgbV9kZXZpY2VD
b250ZXh0OwogICAgIGNsX2NvbW1hbmRfcXVldWUgbV9jb21tYW5kUXVldWU7CiAKKyAgICBib29s
IG1fdHJhbnNmb3JtQ29sb3JTcGFjZVdhc0NvbXBpbGVkOwogICAgIGNsX3Byb2dyYW0gbV90cmFu
c2Zvcm1Db2xvclNwYWNlUHJvZ3JhbTsKICAgICBjbF9rZXJuZWwgbV90cmFuc2Zvcm1Db2xvclNw
YWNlS2VybmVsOwogCi0gICAgT3BlbkNMQ29tcGlsZVN0YXR1cyBtX2NvbG9yTWF0cml4Q29tcGls
ZVN0YXR1czsKKyAgICBib29sIG1fY29sb3JNYXRyaXhXYXNDb21waWxlZDsKICAgICBjbF9wcm9n
cmFtIG1fY29sb3JNYXRyaXhQcm9ncmFtOwogICAgIGNsX2tlcm5lbCBtX21hdHJpeE9wZXJhdGlv
bjsKICAgICBjbF9rZXJuZWwgbV9zYXR1cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbjsgCiAgICAg
Y2xfa2VybmVsIG1fbHVtaW5hbmNlT3BlcmF0aW9uOwogCi0gICAgT3BlbkNMQ29tcGlsZVN0YXR1
cyBtX3R1cmJ1bGVuY2VDb21waWxlU3RhdHVzOworICAgIGJvb2wgbV90dXJidWxlbmNlV2FzQ29t
cGlsZWQ7CiAgICAgY2xfcHJvZ3JhbSBtX3R1cmJ1bGVuY2VQcm9ncmFtOwogICAgIGNsX2tlcm5l
bCBtX3R1cmJ1bGVuY2VPcGVyYXRpb247CiB9OwogCitpbmxpbmUgYm9vbCBGaWx0ZXJDb250ZXh0
T3BlbkNMOjppc0ZhaWxlZChib29sIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSkKKyAgICAgICAg
c2V0SW5FcnJvcigpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworaW5saW5lIGJvb2wgRmlsdGVy
Q29udGV4dE9wZW5DTDo6cmVzb3VyY2VBbGxvY2F0aW9uSXNGYWlsZWQoYm9vbCB2YWx1ZSkKK3sK
KyAgICBpZiAoIXZhbHVlKQorICAgICAgICBzZXRJbkVycm9yKCk7CisgICAgcmV0dXJuICF2YWx1
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE9QRU5D
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVu
Y2wvT3BlbkNMRkVDb2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvb3BlbmNsL09wZW5DTEZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDQ3Yzg4YzYuLjM2
OWExZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9v
cGVuY2wvT3BlbkNMRkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcApAQCAtNjgsMjYg
KzY4LDI1IEBAIF9fa2VybmVsIHZvaWQgbHVtaW5hbmNlKF9fd3JpdGVfb25seSBpbWFnZTJkX3Qg
ZGVzdGluYXRpb24sIF9fcmVhZF9vbmx5IGltYWdlMmRfCiAKIGlubGluZSBib29sIEZpbHRlckNv
bnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KCkKIHsKLSAgICBpZiAobV9jb2xvck1h
dHJpeENvbXBpbGVTdGF0dXMgIT0gb3BlbmNsTm90Q29tcGlsZWRZZXQpCi0gICAgICAgIHJldHVy
biBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyA9PSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsK
KyAgICBpZiAobV9jb2xvck1hdHJpeFdhc0NvbXBpbGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIG1fY29sb3JNYXRyaXhDb21waWxlU3RhdHVzID0gb3BlbmNsQ29tcGlsZUZhaWxlZDsK
LSAgICBtX2NvbG9yTWF0cml4UHJvZ3JhbSA9IGNvbXBpbGVQcm9ncmFtKGNvbG9yTWF0cml4S2Vy
bmVsUHJvZ3JhbSk7Ci0gICAgaWYgKCFtX2NvbG9yTWF0cml4UHJvZ3JhbSkKKyAgICBpZiAoaW5F
cnJvcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX21hdHJpeE9wZXJhdGlvbiA9
IGtlcm5lbEJ5TmFtZShtX2NvbG9yTWF0cml4UHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIGlmICgh
bV9tYXRyaXhPcGVyYXRpb24pCisgICAgbV9jb2xvck1hdHJpeFdhc0NvbXBpbGVkID0gdHJ1ZTsK
KworICAgIGlmIChyZXNvdXJjZUFsbG9jYXRpb25Jc0ZhaWxlZCgobV9jb2xvck1hdHJpeFByb2dy
YW0gPSBjb21waWxlUHJvZ3JhbShjb2xvck1hdHJpeEtlcm5lbFByb2dyYW0pKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBtX3NhdHVyYXRlQW5kSHVlUm90YXRlT3BlcmF0aW9uID0ga2Vy
bmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9ncmFtLCAic2F0dXJhdGVBbmRIdWVSb3RhdGUiKTsK
LSAgICBpZiAoIW1fc2F0dXJhdGVBbmRIdWVSb3RhdGVPcGVyYXRpb24pCisgICAgaWYgKHJlc291
cmNlQWxsb2NhdGlvbklzRmFpbGVkKChtX21hdHJpeE9wZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZSht
X2NvbG9yTWF0cml4UHJvZ3JhbSwgIm1hdHJpeCIpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBtX2x1bWluYW5jZU9wZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZShtX2NvbG9yTWF0cml4UHJv
Z3JhbSwgImx1bWluYW5jZSIpOwotICAgIGlmICghbV9sdW1pbmFuY2VPcGVyYXRpb24pCisgICAg
aWYgKHJlc291cmNlQWxsb2NhdGlvbklzRmFpbGVkKChtX3NhdHVyYXRlQW5kSHVlUm90YXRlT3Bl
cmF0aW9uID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9ncmFtLCAic2F0dXJhdGVBbmRI
dWVSb3RhdGUiKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2NvbG9yTWF0cml4
Q29tcGlsZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsOwotICAgIHJldHVybiBvcGVu
Y2xDb21waWxlU3VjY2Vzc2Z1bDsKKyAgICBpZiAocmVzb3VyY2VBbGxvY2F0aW9uSXNGYWlsZWQo
KG1fc2F0dXJhdGVBbmRIdWVSb3RhdGVPcGVyYXRpb24gPSBrZXJuZWxCeU5hbWUobV9jb2xvck1h
dHJpeFByb2dyYW0sICJzYXR1cmF0ZUFuZEh1ZVJvdGF0ZSIpKSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAocmVzb3VyY2VBbGxvY2F0aW9uSXNGYWlsZWQoKG1fbHVtaW5hbmNlT3Bl
cmF0aW9uID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9ncmFtLCAibHVtaW5hbmNlIikp
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwogfQogCiBpbmxpbmUg
dm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjphcHBseUZFQ29sb3JNYXRyaXgoT3BlbkNMSGFuZGxl
IGRlc3RpbmF0aW9uLCBJbnRTaXplIGRlc3RpbmF0aW9uU2l6ZSwgT3BlbkNMSGFuZGxlIHNvdXJj
ZSwgSW50UG9pbnQgcmVsYXRpdmVTb3VyY2VMb2NhdGlvbiwgZmxvYXQqIHZhbHVlcywgaW50IHR5
cGUpCkBAIC0xMzAsOSArMTI5LDEyIEBAIGlubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6
OmFwcGx5RkVDb2xvck1hdHJpeChPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24sIEluCiBib29sIEZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0woKQogewogICAgIEZpbHRlckNvbnRleHRP
cGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgaWYg
KCFjb250ZXh0IHx8ICFjb250ZXh0LT5jb21waWxlRkVDb2xvck1hdHJpeCgpKQorICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFjb250ZXh0LT5jb21w
aWxlRkVDb2xvck1hdHJpeCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIEZpbHRlckVm
ZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKICAgICBPcGVuQ0xIYW5kbGUgc291cmNlID0gaW4t
Pm9wZW5DTEltYWdlKCk7CiAgICAgT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3Bl
bkNMSW1hZ2VSZXN1bHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcAppbmRl
eCAyYzkxYjQ3Li4yYjAwNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRVR1cmJ1bGVuY2UuY3Bw
CkBAIC0xNjksMTkgKzE2OSwxOSBAQCBfX2tlcm5lbCB2b2lkIFR1cmJ1bGVuY2UoX193cml0ZV9v
bmx5IGltYWdlMmRfdCBkZXN0aW5hdGlvbiwgX19jb25zdGFudCBmbG9hdCAqdAogCiBpbmxpbmUg
Ym9vbCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlRkVUdXJidWxlbmNlKCkKIHsKLSAgICBp
ZiAobV90dXJidWxlbmNlQ29tcGlsZVN0YXR1cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkKLSAg
ICAgICAgcmV0dXJuIG1fdHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMgPT0gb3BlbmNsQ29tcGlsZVN1
Y2Nlc3NmdWw7CisgICAgaWYgKG1fdHVyYnVsZW5jZVdhc0NvbXBpbGVkKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIG1fdHVyYnVsZW5jZUNvbXBpbGVTdGF0dXMgPSBvcGVuY2xDb21waWxl
RmFpbGVkOwotICAgIG1fdHVyYnVsZW5jZVByb2dyYW0gPSBjb21waWxlUHJvZ3JhbSh0dXJidWxl
bmNlS2VybmVsUHJvZ3JhbSk7Ci0gICAgaWYgKCFtX3R1cmJ1bGVuY2VQcm9ncmFtKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgbV90dXJidWxlbmNlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1l
KG1fdHVyYnVsZW5jZVByb2dyYW0sICJUdXJidWxlbmNlIik7Ci0gICAgaWYgKCFtX3R1cmJ1bGVu
Y2VPcGVyYXRpb24pCisgICAgaWYgKGluRXJyb3IoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV90dXJidWxlbmNlQ29tcGlsZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVTdWNjZXNzZnVs
OwotICAgIHJldHVybiBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKKyAgICBtX3R1cmJ1bGVuY2VX
YXNDb21waWxlZCA9IHRydWU7CisKKyAgICBpZiAocmVzb3VyY2VBbGxvY2F0aW9uSXNGYWlsZWQo
KG1fdHVyYnVsZW5jZVByb2dyYW0gPSBjb21waWxlUHJvZ3JhbSh0dXJidWxlbmNlS2VybmVsUHJv
Z3JhbSkpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChyZXNvdXJjZUFsbG9jYXRp
b25Jc0ZhaWxlZCgobV90dXJidWxlbmNlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fdHVyYnVs
ZW5jZVByb2dyYW0sICJUdXJidWxlbmNlIikpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOwogfQogCiBpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjphcHBs
eUZFVHVyYnVsZW5jZShPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24sCkBAIC0yMjQsOSArMjI0LDEy
IEBAIGlubGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFwcGx5RkVUdXJidWxlbmNlKE9w
ZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiwKIGJvb2wgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5
T3BlbkNMKCkKIHsKICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29u
dGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+Y29t
cGlsZUZFVHVyYnVsZW5jZSgpKQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgaWYgKCFjb250ZXh0LT5jb21waWxlRkVUdXJidWxlbmNlKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCiAgICAgT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3Bl
bkNMSW1hZ2VSZXN1bHQoKTsKIAogICAgIFBhaW50aW5nRGF0YSBwYWludGluZ0RhdGEobV9zZWVk
LCByb3VuZGVkSW50U2l6ZShmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKS5zaXplKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKaW5kZXggMjk4M2M0Zi4uOTg5OTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAg
LTMwOSw3ICszMDksNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlS
ZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgR3JhcGhpY3NDbwogICAgICAgICAvLyBBbHdh
eXMgdHJ1ZSBpZiBmaWx0ZXJEYXRhIGlzIGp1c3QgYnVpbHQgKGZpbHRlckRhdGEtPnN0YXRlID09
IEZpbHRlckRhdGE6OkJ1aWx0KS4KICAgICAgICAgaWYgKCFsYXN0RWZmZWN0LT5oYXNSZXN1bHQo
KSkgewogICAgICAgICAgICAgZmlsdGVyRGF0YS0+c3RhdGUgPSBGaWx0ZXJEYXRhOjpBcHBseWlu
ZzsKLSAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KCk7CisgICAgICAgICAgICBsYXN0RWZm
ZWN0LT5hcHBseUFsbCgpOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdEZpbHRlclJl
c3VsdElmTmVlZGVkKCk7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRD
b2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICB9Cg==
</data>
<flag name="review"
          id="207452"
          type_id="1"
          status="-"
          setter="zherczeg"
    />
    <flag name="commit-queue"
          id="207453"
          type_id="3"
          status="-"
          setter="zherczeg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187802</attachid>
            <date>2013-02-12 00:57:30 -0800</date>
            <delta_ts>2013-02-12 01:42:18 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25847</size>
            <attacher name="Tamas Czene">tczene</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZGZjZDVjLi5lYTk4MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTMtMDItMDcgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBBZGQgZXJyb3IgY2hlY2tpbmcgaW50byBPcGVuQ0wgdmVyc2lvbiBvZiBTVkcgZmls
dGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NzQ0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
IGNhc2Ugb2YgYW4gZXJyb3IgdGhlIHByb2dyYW0gcnVucyB0aHJvdWdoIGFsbCB0aGUgcmVtYWlu
aW5nIGZpbHRlcnMgYnkgZG9pbmcgbm90aGluZy4gCisgICAgICAgIEFmdGVyIHRoYXQgZGVsZXRl
cyB0aGUgcmVzdWx0cyBvZiBldmVyeSBmaWx0ZXIgYW5kIHN0YXJ0cyBzb2Z0d2FyZSByZW5kZXJp
bmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
YXBwbHlBbGwpOiBBdCBzb2Z0d2FyZSByZW5kZXJpbmcgdGhpcyBpcyBhIHNpbXBsZSBpbmxpbmUg
bWV0aG9kZSwgYnV0IGF0IE9wZW5DTCByZW5kZXJpbmcgaXQgcmVsZWFzZXMgT3BlbkNMIHRoaW5n
cy4gSWYgd2UgaGF2ZSBhbiBlcnJvciByZW1vdmUgZmlsdGVyJ3MgcmVzdWx0cyBhbmQgc3RhcnQg
c29mdHdhcmUgcmVuZGVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjbGVh
clJlc3VsdHNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpvcGVu
Q0xJbWFnZVRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpj
cmVhdGVPcGVuQ0xJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChGaWx0ZXJFZmZlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBseUFsbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmlzRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpkZXN0cm95Q29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb21waWxlVHJhbnNmb3Jt
Q29sb3JTcGFjZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQ29udGV4dE9wZW5D
TDo6b3BlbkNMVHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpjb21waWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJD
b250ZXh0T3BlbkNMOjpmcmVlUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5oOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyQ29udGV4dE9wZW5DTDo6RmlsdGVyQ29udGV4dE9wZW5DTCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpzZXRJbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckNvbnRleHRPcGVuQ0w6OmluRXJyb3IpOgorICAgICAgICAoRmlsdGVyQ29udGV4dE9wZW5D
TCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJuZWw6OlJ1
bktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJDb250ZXh0T3BlbkNMOjpSdW5LZXJu
ZWw6OmFkZEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6
OlJ1bktlcm5lbDo6cnVuKToKKyAgICAgICAgKFJ1bktlcm5lbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9PcGVuQ0xGRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNvbG9yTWF0cml4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlPcGVuQ0wpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVUdXJidWxlbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRVR1cmJ1
bGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5T3Bl
bkNMKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlS
ZXNvdXJjZSk6CisKIDIwMTMtMDItMDYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIE9wdGltaXplIEdseXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhz
IGFyZSBhdmFpbGFibGUgaW4gdGhlIHNhbWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBk
NzM1NGY2Li4zMzBjZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC05Nyw2ICs5NywyNCBAQCBG
aWx0ZXJFZmZlY3QqIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QodW5zaWduZWQgbnVtYmVyKSBj
b25zdAogICAgIHJldHVybiBtX2lucHV0RWZmZWN0cy5hdChudW1iZXIpLmdldCgpOwogfQogCisj
aWYgRU5BQkxFKE9QRU5DTCkKK3ZvaWQgRmlsdGVyRWZmZWN0OjphcHBseUFsbCgpCit7CisgICAg
aWYgKGhhc1Jlc3VsdCgpKQorICAgICAgICByZXR1cm47CisgICAgRmlsdGVyQ29udGV4dE9wZW5D
TCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkgeworICAgICAgICBhcHBseSgpOworICAgICAgICBpZiAoIWNvbnRleHQtPmluRXJyb3Io
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7
CisgICAgICAgIGNvbnRleHQtPmRlc3Ryb3lDb250ZXh0KCk7CisgICAgfQorICAgIC8vIFNvZnR3
YXJlIGNvZGUgcGF0aC4KKyAgICBhcHBseSgpOworfQorI2VuZGlmCisKIHZvaWQgRmlsdGVyRWZm
ZWN0OjphcHBseSgpCiB7CiAgICAgaWYgKGhhc1Jlc3VsdCgpKQpAQCAtMjIzLDYgKzI0MSwxOCBA
QCB2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQogI2VuZGlmCiB9CiAKK3ZvaWQgRmls
dGVyRWZmZWN0OjpjbGVhclJlc3VsdHNSZWN1cnNpdmUoKQoreworICAgIC8vIENsZWFyIGFsbCBy
ZXN1bHRzLCByZWdhcmRsZXNzIHRoYXQgdGhlIGN1cnJlbnQgZWZmZWN0IGhhcworICAgIC8vIGEg
cmVzdWx0LiBDYW4gYmUgdXNlZCBpZiBhbiBlZmZlY3QgaXMgaW4gYW4gZXJyb25lb3VzIHN0YXRl
LgorICAgIGlmIChoYXNSZXN1bHQoKSkKKyAgICAgICAgY2xlYXJSZXN1bHQoKTsKKworICAgIHVu
c2lnbmVkIHNpemUgPSBtX2lucHV0RWZmZWN0cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9pbnB1dEVmZmVjdHMuYXQoaSkuZ2V0KCkt
PmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOworfQorCiBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0
Ojphc0ltYWdlQnVmZmVyKCkKIHsKICAgICBpZiAoIWhhc1Jlc3VsdCgpKQpAQCAtMjQ4LDEzICsy
NzgsMTkgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6b3BlbkNMSW1hZ2VUb0ltYWdlQnVm
ZmVyKCkKICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9w
ZW5DTDo6Y29udGV4dCgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKIAorICAgIGlmIChjb250ZXh0
LT5pbkVycm9yKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgc2l6ZV90IG9yaWdpblszXSA9
IHsgMCwgMCwgMCB9OwogICAgIHNpemVfdCByZWdpb25bM10gPSB7IG1fYWJzb2x1dGVQYWludFJl
Y3Qud2lkdGgoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSwgMSB9OwogCiAgICAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBkZXN0aW5hdGlvblBpeGVsQXJyYXkgPSBVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQ
YWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKIAotICAgIGNsRmluaXNoKGNvbnRleHQtPmNvbW1hbmRR
dWV1ZSgpKTsKLSAgICBjbEVucXVldWVSZWFkSW1hZ2UoY29udGV4dC0+Y29tbWFuZFF1ZXVlKCks
IG1fb3BlbkNMSW1hZ2VSZXN1bHQsIENMX1RSVUUsIG9yaWdpbiwgcmVnaW9uLCAwLCAwLCBkZXN0
aW5hdGlvblBpeGVsQXJyYXktPmRhdGEoKSwgMCwgMCwgMCk7CisgICAgaWYgKGNvbnRleHQtPmlz
RmFpbGVkKGNsRmluaXNoKGNvbnRleHQtPmNvbW1hbmRRdWV1ZSgpKSkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgaWYgKGNvbnRleHQtPmlzRmFpbGVkKGNsRW5xdWV1ZVJlYWRJbWFnZShjb250
ZXh0LT5jb21tYW5kUXVldWUoKSwgbV9vcGVuQ0xJbWFnZVJlc3VsdCwgQ0xfVFJVRSwgb3JpZ2lu
LCByZWdpb24sIDAsIDAsIGRlc3RpbmF0aW9uUGl4ZWxBcnJheS0+ZGF0YSgpLCAwLCAwLCAwKSkp
CisgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEludFJlY3QgZGVz
dGluYXRpb25SZWN0KEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKQEAg
LTQyNiwxNSArNDYyLDIzIEBAIFVpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0
ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAjaWYgRU5BQkxFKE9QRU5DTCkKIE9wZW5DTEhh
bmRsZSBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZU9wZW5DTEltYWdlUmVzdWx0KHVpbnQ4X3QqIHNvdXJj
ZSkKIHsKKyAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9w
ZW5DTDo6Y29udGV4dCgpOworICAgIEFTU0VSVChjb250ZXh0KTsKKworICAgIGlmIChjb250ZXh0
LT5pbkVycm9yKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgQVNTRVJUKCFoYXNSZXN1bHQo
KSk7CiAgICAgY2xfaW1hZ2VfZm9ybWF0IGNsSW1hZ2VGb3JtYXQ7CiAgICAgY2xJbWFnZUZvcm1h
dC5pbWFnZV9jaGFubmVsX29yZGVyID0gQ0xfUkdCQTsKICAgICBjbEltYWdlRm9ybWF0LmltYWdl
X2NoYW5uZWxfZGF0YV90eXBlID0gQ0xfVU5PUk1fSU5UODsKIAotICAgIEZpbHRlckNvbnRleHRP
cGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgQVNT
RVJUKGNvbnRleHQpOworICAgIGludCBlcnJvckNvZGUgPSAwOwogICAgIG1fb3BlbkNMSW1hZ2VS
ZXN1bHQgPSBjbENyZWF0ZUltYWdlMkQoY29udGV4dC0+ZGV2aWNlQ29udGV4dCgpLCBDTF9NRU1f
UkVBRF9XUklURSB8IChzb3VyY2UgPyBDTF9NRU1fQ09QWV9IT1NUX1BUUiA6IDApLAotICAgICAg
ICAmY2xJbWFnZUZvcm1hdCwgbV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpLCBtX2Fic29sdXRl
UGFpbnRSZWN0LmhlaWdodCgpLCAwLCBzb3VyY2UsIDApOworICAgICAgICAmY2xJbWFnZUZvcm1h
dCwgbV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdo
dCgpLCAwLCBzb3VyY2UsICZlcnJvckNvZGUpOworICAgIGlmIChjb250ZXh0LT5pc0ZhaWxlZChl
cnJvckNvZGUpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIHJldHVybiBtX29wZW5DTEltYWdl
UmVzdWx0OwogfQogI2VuZGlmCkBAIC00NTAsMTcgKzQ5NCwxNyBAQCB2b2lkIEZpbHRlckVmZmVj
dDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpCiAK
ICNpZiBFTkFCTEUoT1BFTkNMKQogICAgIGlmIChvcGVuQ0xJbWFnZSgpKSB7CisgICAgICAgIGlm
IChtX2ltYWdlQnVmZmVyUmVzdWx0KQorICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC5j
bGVhcigpOwogICAgICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29u
dGV4dE9wZW5DTDo6Y29udGV4dCgpOwogICAgICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgICAg
IGNvbnRleHQtPm9wZW5DTFRyYW5zZm9ybUNvbG9yU3BhY2UobV9vcGVuQ0xJbWFnZVJlc3VsdCwg
YWJzb2x1dGVQYWludFJlY3QoKSwgbV9yZXN1bHRDb2xvclNwYWNlLCBkc3RDb2xvclNwYWNlKTsK
LSAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1bHQpCi0gICAgICAgICAgICBtX2ltYWdlQnVm
ZmVyUmVzdWx0LmNsZWFyKCk7CiAgICAgfSBlbHNlIHsKICNlbmRpZgogCi0gICAgLy8gRklYTUU6
IFdlIGNhbiBhdm9pZCB0aGlzIHBvdGVudGlhbGx5IHVubmVjZXNzYXJ5IEltYWdlQnVmZmVyIGNv
bnZlcnNpb24gYnkgYWRkaW5nCi0gICAgLy8gY29sb3Igc3BhY2UgdHJhbnNmb3JtIHN1cHBvcnQg
Zm9yIHRoZSB7cHJlLHVufW11bHRpcGxpZWQgYXJyYXlzLgotICAgIGFzSW1hZ2VCdWZmZXIoKS0+
dHJhbnNmb3JtQ29sb3JTcGFjZShtX3Jlc3VsdENvbG9yU3BhY2UsIGRzdENvbG9yU3BhY2UpOwor
ICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGF2b2lkIHRoaXMgcG90ZW50aWFsbHkgdW5uZWNlc3Nh
cnkgSW1hZ2VCdWZmZXIgY29udmVyc2lvbiBieSBhZGRpbmcKKyAgICAgICAgLy8gY29sb3Igc3Bh
Y2UgdHJhbnNmb3JtIHN1cHBvcnQgZm9yIHRoZSB7cHJlLHVufW11bHRpcGxpZWQgYXJyYXlzLgor
ICAgICAgICBhc0ltYWdlQnVmZmVyKCktPnRyYW5zZm9ybUNvbG9yU3BhY2UobV9yZXN1bHRDb2xv
clNwYWNlLCBkc3RDb2xvclNwYWNlKTsKIAogI2lmIEVOQUJMRShPUEVOQ0wpCiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmgKaW5kZXggMDFkODVhOS4uZjBmZjg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC02OCw2
ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3QoKTsKIAogICAgIHZv
aWQgY2xlYXJSZXN1bHQoKTsKKyAgICB2b2lkIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOworCiAg
ICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZmZXIoKTsKICAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsKICAgICBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRS
ZWN0Jik7CkBAIC0xMDksNyArMTExLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1heEVmZmVj
dFJlY3QoY29uc3QgRmxvYXRSZWN0JiBtYXhFZmZlY3RSZWN0KSB7IG1fbWF4RWZmZWN0UmVjdCA9
IG1heEVmZmVjdFJlY3Q7IH0gCiAKICAgICB2b2lkIGFwcGx5KCk7Ci0gICAgCisjaWYgRU5BQkxF
KE9QRU5DTCkKKyAgICB2b2lkIGFwcGx5QWxsKCk7CisjZWxzZQorICAgIGlubGluZSB2b2lkIGFw
cGx5QWxsKCkgeyBhcHBseSgpOyB9CisjZW5kaWYKKwogICAgIC8vIENvcnJlY3QgYW55IGludmFs
aWQgcGl4ZWxzLCBpZiBuZWNlc3NhcnksIGluIHRoZSByZXN1bHQgb2YgYSBmaWx0ZXIgb3BlcmF0
aW9uLgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZW5zdXJlIHZhbGlkIHBpeGVsIHZh
bHVlcyBvbiBmaWx0ZXIgaW5wdXRzIGFuZCB0aGUgZmluYWwgcmVzdWx0LgogICAgIC8vIE9ubHkg
dGhlIGFyaXRobWV0aWMgY29tcG9zaXRlIGZpbHRlciBldmVyIG5lZWRzIHRvIHBlcmZvcm0gY29y
cmVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvb3BlbmNsL0ZpbHRlckNvbnRleHRPcGVuQ0wuY3BwCmluZGV4IDRjMzA1
OTYuLjU4MDkzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9vcGVuY2wvRmlsdGVyQ29udGV4dE9wZW5DTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmNwcApAQCAt
ODgsNiArODgsNDYgQEAgRmlsdGVyQ29udGV4dE9wZW5DTCogRmlsdGVyQ29udGV4dE9wZW5DTDo6
Y29udGV4dCgpCiAgICAgcmV0dXJuIG1fY29udGV4dDsKIH0KIAordm9pZCBGaWx0ZXJDb250ZXh0
T3BlbkNMOjpmcmVlUmVzb3VyY2VzKCkKK3sKKyAgICBjbEZpbmlzaChtX2NvbW1hbmRRdWV1ZSk7
CisKKyAgICBpZiAobV9jb2xvck1hdHJpeFdhc0NvbXBpbGVkKSB7CisgICAgICAgIGZyZWVSZXNv
dXJjZShtX21hdHJpeE9wZXJhdGlvbik7CisgICAgICAgIGZyZWVSZXNvdXJjZShtX3NhdHVyYXRl
QW5kSHVlUm90YXRlT3BlcmF0aW9uKTsKKyAgICAgICAgZnJlZVJlc291cmNlKG1fbHVtaW5hbmNl
T3BlcmF0aW9uKTsKKyAgICAgICAgZnJlZVJlc291cmNlKG1fY29sb3JNYXRyaXhQcm9ncmFtKTsK
KyAgICB9CisgICAgbV9jb2xvck1hdHJpeFdhc0NvbXBpbGVkID0gZmFsc2U7CisKKyAgICBpZiAo
bV90dXJidWxlbmNlV2FzQ29tcGlsZWQpIHsKKyAgICAgICAgZnJlZVJlc291cmNlKG1fdHVyYnVs
ZW5jZU9wZXJhdGlvbik7CisgICAgICAgIGZyZWVSZXNvdXJjZShtX3R1cmJ1bGVuY2VQcm9ncmFt
KTsKKyAgICB9ICAgIAorICAgIG1fdHVyYnVsZW5jZVdhc0NvbXBpbGVkID0gZmFsc2U7CisKKyAg
ICBpZiAobV90cmFuc2Zvcm1Db2xvclNwYWNlV2FzQ29tcGlsZWQpIHsKKyAgICAgICAgZnJlZVJl
c291cmNlKG1fdHJhbnNmb3JtQ29sb3JTcGFjZUtlcm5lbCk7CisgICAgICAgIGZyZWVSZXNvdXJj
ZShtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKTsKKyAgICB9CisgICAgbV90cmFuc2Zvcm1D
b2xvclNwYWNlV2FzQ29tcGlsZWQgPSBmYWxzZTsKK30KKwordm9pZCBGaWx0ZXJDb250ZXh0T3Bl
bkNMOjpkZXN0cm95Q29udGV4dCgpCit7CisgICAgZnJlZVJlc291cmNlcygpOworCisgICAgaWYg
KG1fY29tbWFuZFF1ZXVlKQorICAgICAgICBjbFJlbGVhc2VDb21tYW5kUXVldWUobV9jb21tYW5k
UXVldWUpOworICAgIG1fY29tbWFuZFF1ZXVlID0gMDsKKworICAgIGlmIChtX2RldmljZUNvbnRl
eHQpCisgICAgICAgIGNsUmVsZWFzZUNvbnRleHQobV9kZXZpY2VDb250ZXh0KTsKKyAgICBtX2Rl
dmljZUNvbnRleHQgPSAwOworCisgICAgbV9jb250ZXh0ID0gMDsKK30KKwogT3BlbkNMSGFuZGxl
IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNyZWF0ZU9wZW5DTEltYWdlKEludFNpemUgcGFpbnRTaXpl
KQogewogICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250ZXh0T3Bl
bkNMOjpjb250ZXh0KCk7CkBAIC0xMTcsMzEgKzE1NywzOCBAQCBfX2tlcm5lbCB2b2lkIHRyYW5z
Zm9ybUNvbG9yU3BhY2UoX19yZWFkX29ubHkgaW1hZ2UyZF90IHNvdXJjZSwgX193cml0ZV9vbmx5
IGltYQogfQogKTsgLy8gRW5kIG9mIE9wZW5DTCBrZXJuZWxzCiAKK2lubGluZSBib29sIEZpbHRl
ckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVUcmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgpCit7Cisg
ICAgaWYgKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVdhc0NvbXBpbGVkIHx8IGluRXJyb3IoKSkKKyAg
ICAgICAgcmV0dXJuICFpbkVycm9yKCk7CisKKyAgICBtX3RyYW5zZm9ybUNvbG9yU3BhY2VXYXND
b21waWxlZCA9IHRydWU7CisKKyAgICBpZiAoaXNSZXNvdXJjZUFsbG9jYXRpb25GYWlsZWQoKG1f
dHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0gPSBjb21waWxlUHJvZ3JhbSh0cmFuc2Zvcm1Db2xv
clNwYWNlS2VybmVsUHJvZ3JhbSkpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChp
c1Jlc291cmNlQWxsb2NhdGlvbkZhaWxlZCgobV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsID0g
a2VybmVsQnlOYW1lKG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0sICJ0cmFuc2Zvcm1Db2xv
clNwYWNlIikpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6Om9wZW5DTFRyYW5zZm9ybUNvbG9yU3BhY2UoT3Bl
bkNMSGFuZGxlJiBzb3VyY2UsIEludFJlY3Qgc291cmNlU2l6ZSwgQ29sb3JTcGFjZSBzcmNDb2xv
clNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChPcGVuQ0xIYW5kbGUsIGRldmljZVJnYkxVVCwgKCkpOwogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoT3BlbkNMSGFuZGxlLCBsaW5lYXJSZ2JMVVQsICgpKTsKIAotICAgIGlmIChzcmNDb2xv
clNwYWNlID09IGRzdENvbG9yU3BhY2UpCisgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0Q29s
b3JTcGFjZSB8fCBpbkVycm9yKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgoc3JjQ29s
b3JTcGFjZSAhPSBDb2xvclNwYWNlTGluZWFyUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JT
cGFjZURldmljZVJHQikKICAgICAgICAgfHwgKGRzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZUxp
bmVhclJHQiAmJiBkc3RDb2xvclNwYWNlICE9IENvbG9yU3BhY2VEZXZpY2VSR0IpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29u
dGV4dE9wZW5DTDo6Y29udGV4dCgpOwotICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBpZiAoIWNv
bXBpbGVUcmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbSgpKQorICAgICAgICByZXR1cm47CiAKLSAg
ICBPcGVuQ0xIYW5kbGUgZGVzdGluYXRpb24gPSBjb250ZXh0LT5jcmVhdGVPcGVuQ0xJbWFnZShz
b3VyY2VTaXplLnNpemUoKSk7CisgICAgT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRl
T3BlbkNMSW1hZ2Uoc291cmNlU2l6ZS5zaXplKCkpOwogCi0gICAgaWYgKCFtX3RyYW5zZm9ybUNv
bG9yU3BhY2VQcm9ncmFtKSB7Ci0gICAgICAgIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0g
PSBjb21waWxlUHJvZ3JhbSh0cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsUHJvZ3JhbSk7Ci0gICAg
ICAgIEFTU0VSVChtX3RyYW5zZm9ybUNvbG9yU3BhY2VQcm9ncmFtKTsKLSAgICAgICAgbV90cmFu
c2Zvcm1Db2xvclNwYWNlS2VybmVsID0ga2VybmVsQnlOYW1lKG1fdHJhbnNmb3JtQ29sb3JTcGFj
ZVByb2dyYW0sICJ0cmFuc2Zvcm1Db2xvclNwYWNlIik7Ci0gICAgICAgIEFTU0VSVChtX3RyYW5z
Zm9ybUNvbG9yU3BhY2VLZXJuZWwpOwotICAgIH0KLQotICAgIFJ1bktlcm5lbCBrZXJuZWwoY29u
dGV4dCwgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsLCBzb3VyY2VTaXplLndpZHRoKCksIHNv
dXJjZVNpemUuaGVpZ2h0KCkpOworICAgIFJ1bktlcm5lbCBrZXJuZWwodGhpcywgbV90cmFuc2Zv
cm1Db2xvclNwYWNlS2VybmVsLCBzb3VyY2VTaXplLndpZHRoKCksIHNvdXJjZVNpemUuaGVpZ2h0
KCkpOwogICAgIGtlcm5lbC5hZGRBcmd1bWVudChzb3VyY2UpOwogICAgIGtlcm5lbC5hZGRBcmd1
bWVudChkZXN0aW5hdGlvbik7CiAKQEAgLTE4MSwxOCArMjI4LDMzIEBAIHZvaWQgRmlsdGVyQ29u
dGV4dE9wZW5DTDo6b3BlbkNMVHJhbnNmb3JtQ29sb3JTcGFjZShPcGVuQ0xIYW5kbGUmIHNvdXJj
ZSwgSW50UmVjCiBjbF9wcm9ncmFtIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVQcm9ncmFt
KGNvbnN0IGNoYXIqIHNvdXJjZSkKIHsKICAgICBjbF9wcm9ncmFtIHByb2dyYW07Ci0gICAgY2xf
aW50IGVycm9yTnVtYmVyOworICAgIGNsX2ludCBlcnJvck51bWJlciA9IDA7CiAKLSAgICBGaWx0
ZXJDb250ZXh0T3BlbkNMKiBjb250ZXh0ID0gRmlsdGVyQ29udGV4dE9wZW5DTDo6Y29udGV4dCgp
OwotICAgIEFTU0VSVChjb250ZXh0KTsKKyAgICBwcm9ncmFtID0gY2xDcmVhdGVQcm9ncmFtV2l0
aFNvdXJjZShtX2RldmljZUNvbnRleHQsIDEsIChjb25zdCBjaGFyKiopICZzb3VyY2UsIDAsICZl
cnJvck51bWJlcik7CisgICAgaWYgKGlzRmFpbGVkKGVycm9yTnVtYmVyKSkKKyAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBwcm9ncmFtID0gY2xDcmVhdGVQcm9ncmFtV2l0aFNvdXJjZShjb250ZXh0
LT5tX2RldmljZUNvbnRleHQsIDEsIChjb25zdCBjaGFyKiopICZzb3VyY2UsIDAsIDApOwotICAg
IGVycm9yTnVtYmVyID0gY2xCdWlsZFByb2dyYW0ocHJvZ3JhbSwgMCwgMCwgMCwgMCwgMCk7Ci0g
ICAgaWYgKGVycm9yTnVtYmVyKQorICAgIGlmIChpc0ZhaWxlZChjbEJ1aWxkUHJvZ3JhbShwcm9n
cmFtLCAwLCAwLCAwLCAwLCAwKSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIHBy
b2dyYW07CiB9CisKK3ZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6ZnJlZVJlc291cmNlKGNsX2tl
cm5lbCYgaGFuZGxlKQoreworICAgIGlmIChoYW5kbGUpIHsKKyAgICAgICAgY2xSZWxlYXNlS2Vy
bmVsKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IDA7CisgICAgfQorfQorCit2b2lkIEZpbHRl
ckNvbnRleHRPcGVuQ0w6OmZyZWVSZXNvdXJjZShjbF9wcm9ncmFtJiBoYW5kbGUpCit7CisgICAg
aWYgKGhhbmRsZSkgeworICAgICAgICBjbFJlbGVhc2VQcm9ncmFtKGhhbmRsZSk7CisgICAgICAg
IGhhbmRsZSA9IDA7CisgICAgfQorfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wv
RmlsdGVyQ29udGV4dE9wZW5DTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmgKaW5kZXggYjE4OThiNi4uODAyNjQyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9G
aWx0ZXJDb250ZXh0T3BlbkNMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L29wZW5jbC9GaWx0ZXJDb250ZXh0T3BlbkNMLmgKQEAgLTQ0LDE3ICs0NCwxOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWx0ZXJDb250ZXh0T3BlbkNMIHsKIHB1YmxpYzoK
ICAgICBGaWx0ZXJDb250ZXh0T3BlbkNMKCkKLSAgICAgICAgOiBtX2RldmljZUlkKDApCisgICAg
ICAgIDogbV9pbkVycm9yKGZhbHNlKQorICAgICAgICAsIG1fZGV2aWNlSWQoMCkKICAgICAgICAg
LCBtX2RldmljZUNvbnRleHQoMCkKICAgICAgICAgLCBtX2NvbW1hbmRRdWV1ZSgwKQorICAgICAg
ICAsIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVdhc0NvbXBpbGVkKGZhbHNlKQogICAgICAgICAsIG1f
dHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0oMCkKICAgICAgICAgLCBtX3RyYW5zZm9ybUNvbG9y
U3BhY2VLZXJuZWwoMCkKLSAgICAgICAgLCBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyhvcGVu
Y2xOb3RDb21waWxlZFlldCkKKyAgICAgICAgLCBtX2NvbG9yTWF0cml4V2FzQ29tcGlsZWQoZmFs
c2UpCiAgICAgICAgICwgbV9jb2xvck1hdHJpeFByb2dyYW0oMCkKICAgICAgICAgLCBtX21hdHJp
eE9wZXJhdGlvbigwKQogICAgICAgICAsIG1fc2F0dXJhdGVBbmRIdWVSb3RhdGVPcGVyYXRpb24o
MCkKICAgICAgICAgLCBtX2x1bWluYW5jZU9wZXJhdGlvbigwKQotICAgICAgICAsIG1fdHVyYnVs
ZW5jZUNvbXBpbGVTdGF0dXMob3BlbmNsTm90Q29tcGlsZWRZZXQpCisgICAgICAgICwgbV90dXJi
dWxlbmNlV2FzQ29tcGlsZWQoZmFsc2UpCiAgICAgICAgICwgbV90dXJidWxlbmNlUHJvZ3JhbSgw
KQogICAgICAgICAsIG1fdHVyYnVsZW5jZU9wZXJhdGlvbigwKQogICAgIHsKQEAgLTY3LDcgKzY5
LDE3IEBAIHB1YmxpYzoKICAgICBjbF9jb250ZXh0IGRldmljZUNvbnRleHQoKSB7IHJldHVybiBt
X2RldmljZUNvbnRleHQ7IH0KICAgICBjbF9jb21tYW5kX3F1ZXVlIGNvbW1hbmRRdWV1ZSgpIHsg
cmV0dXJuIG1fY29tbWFuZFF1ZXVlOyB9CiAKKyAgICBpbmxpbmUgdm9pZCBzZXRJbkVycm9yKGJv
b2wgZXJyb3JDb2RlID0gdHJ1ZSkgeyBtX2luRXJyb3IgPSBlcnJvckNvZGU7IH0KKyAgICBpbmxp
bmUgYm9vbCBpbkVycm9yKCkgeyByZXR1cm4gbV9pbkVycm9yOyB9CisgICAgaW5saW5lIGJvb2wg
aXNGYWlsZWQoYm9vbCk7CisgICAgaW5saW5lIGJvb2wgaXNSZXNvdXJjZUFsbG9jYXRpb25GYWls
ZWQoYm9vbCk7CisKKyAgICB2b2lkIGZyZWVSZXNvdXJjZXMoKTsKKyAgICB2b2lkIGRlc3Ryb3lD
b250ZXh0KCk7CisKICAgICBPcGVuQ0xIYW5kbGUgY3JlYXRlT3BlbkNMSW1hZ2UoSW50U2l6ZSk7
CisKKyAgICBpbmxpbmUgYm9vbCBjb21waWxlVHJhbnNmb3JtQ29sb3JTcGFjZVByb2dyYW0oKTsK
ICAgICB2b2lkIG9wZW5DTFRyYW5zZm9ybUNvbG9yU3BhY2UoT3BlbkNMSGFuZGxlJiwgSW50UmVj
dCwgQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSk7CiAKICAgICBpbmxpbmUgYm9vbCBjb21waWxlRkVD
b2xvck1hdHJpeCgpOwpAQCAtODQsNyArOTYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgUnVu
S2VybmVsKEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQsIGNsX2tlcm5lbCBrZXJuZWwsIHNp
emVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKICAgICAgICAgICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQogICAgICAgICAgICAgICAgICwgbV9rZXJuZWwoa2VybmVsKQotICAgICAgICAgICAg
ICAgICwgaW5kZXgoMCkKKyAgICAgICAgICAgICAgICAsIG1faW5kZXgoMCkKKyAgICAgICAgICAg
ICAgICAsIG1fZXJyb3IoY29udGV4dC0+aW5FcnJvcigpKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIG1fZ2xvYmFsU2l6ZVswXSA9IHdpZHRoOwogICAgICAgICAgICAgICAgIG1fZ2xv
YmFsU2l6ZVsxXSA9IGhlaWdodDsKQEAgLTkyLDc0ICsxMDUsMTAzIEBAIHByaXZhdGU6CiAKICAg
ICAgICAgICAgIHZvaWQgYWRkQXJndW1lbnQoT3BlbkNMSGFuZGxlIGhhbmRsZSkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgaW5kZXgrKywg
c2l6ZW9mKE9wZW5DTEhhbmRsZSksIGhhbmRsZS5oYW5kbGVBZGRyZXNzKCkpOworICAgICAgICAg
ICAgICAgIGlmICghbV9lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvciA9IGNsU2V0
S2VybmVsQXJnKG1fa2VybmVsLCBtX2luZGV4KyssIHNpemVvZihPcGVuQ0xIYW5kbGUpLCBoYW5k
bGUuaGFuZGxlQWRkcmVzcygpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdm9pZCBh
ZGRBcmd1bWVudChjbF9pbnQgdmFsdWUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y2xTZXRLZXJuZWxBcmcobV9rZXJuZWwsIGluZGV4KyssIHNpemVvZihjbF9pbnQpLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPigmdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZXJyb3Ip
CisgICAgICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwg
bV9pbmRleCsrLCBzaXplb2YoY2xfaW50KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJnZhbHVl
KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZvaWQgYWRkQXJndW1lbnQoY2xfZmxv
YXQgdmFsdWUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xTZXRLZXJuZWxBcmco
bV9rZXJuZWwsIGluZGV4KyssIHNpemVvZihjbF9mbG9hdCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCZ2YWx1ZSkpOworICAgICAgICAgICAgICAgIGlmICghbV9lcnJvcikKKyAgICAgICAgICAg
ICAgICAgICAgbV9lcnJvciA9IGNsU2V0S2VybmVsQXJnKG1fa2VybmVsLCBtX2luZGV4KyssIHNp
emVvZihjbF9mbG9hdCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZ2YWx1ZSkpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICB2b2lkIGFkZEFyZ3VtZW50KGNsX3NhbXBsZXIgaGFuZGxl
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsU2V0S2VybmVsQXJnKG1fa2VybmVs
LCBpbmRleCsrLCBzaXplb2YoY2xfc2FtcGxlciksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZo
YW5kbGUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAgICAgICAgICAgICAg
ICAgIG1fZXJyb3IgPSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9pbmRleCsrLCBzaXplb2Yo
Y2xfc2FtcGxlciksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZoYW5kbGUpKTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgT3BlbkNMSGFuZGxlIGFkZEFyZ3VtZW50KHZvaWQqIGJ1ZmZl
ciwgaW50IHNpemUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgT3BlbkNMSGFuZGxl
IGhhbmRsZShjbENyZWF0ZUJ1ZmZlcihtX2NvbnRleHQtPmRldmljZUNvbnRleHQoKSwgQ0xfTUVN
X1JFQURfT05MWSwgc2l6ZSwgMCwgMCkpOwotICAgICAgICAgICAgICAgIGNsRW5xdWV1ZVdyaXRl
QnVmZmVyKG1fY29udGV4dC0+Y29tbWFuZFF1ZXVlKCksIGhhbmRsZSwgQ0xfVFJVRSwgMCwgc2l6
ZSwgYnVmZmVyLCAwLCAwLCAwKTsKLSAgICAgICAgICAgICAgICBjbFNldEtlcm5lbEFyZyhtX2tl
cm5lbCwgaW5kZXgrKywgc2l6ZW9mKE9wZW5DTEhhbmRsZSksIGhhbmRsZS5oYW5kbGVBZGRyZXNz
KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGU7CisgICAgICAgICAgICAgICAgaWYg
KG1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
IE9wZW5DTEhhbmRsZSBoYW5kbGUoY2xDcmVhdGVCdWZmZXIobV9jb250ZXh0LT5kZXZpY2VDb250
ZXh0KCksIENMX01FTV9SRUFEX09OTFksIHNpemUsIDAsICZtX2Vycm9yKSk7CisgICAgICAgICAg
ICAgICAgaWYgKG1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgICAgICAgIG1fZXJyb3IgPSBjbEVucXVldWVXcml0ZUJ1ZmZlcihtX2NvbnRleHQtPmNvbW1h
bmRRdWV1ZSgpLCBoYW5kbGUsIENMX1RSVUUsIDAsIHNpemUsIGJ1ZmZlciwgMCwgMCwgMCk7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbFNldEtlcm5lbEFyZyhtX2tlcm5lbCwgbV9p
bmRleCsrLCBzaXplb2YoT3BlbkNMSGFuZGxlKSwgaGFuZGxlLmhhbmRsZUFkZHJlc3MoKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICFtX2Vycm9yID8gaGFuZGxlIDogMDsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgdm9pZCBydW4oKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNsRmluaXNoKG1fY29udGV4dC0+bV9jb21tYW5kUXVldWUpOwotICAgICAgICAgICAgICAg
IGNsRW5xdWV1ZU5EUmFuZ2VLZXJuZWwobV9jb250ZXh0LT5tX2NvbW1hbmRRdWV1ZSwgbV9rZXJu
ZWwsIDIsIDAsIG1fZ2xvYmFsU2l6ZSwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgaWYg
KG1fY29udGV4dC0+aXNGYWlsZWQobV9lcnJvcikpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgICAgIG1fZXJyb3IgPSBjbEZpbmlzaChtX2NvbnRleHQtPm1fY29t
bWFuZFF1ZXVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZXJyb3IpCisgICAgICAgICAgICAg
ICAgICAgIG1fZXJyb3IgPSBjbEVucXVldWVORFJhbmdlS2VybmVsKG1fY29udGV4dC0+bV9jb21t
YW5kUXVldWUsIG1fa2VybmVsLCAyLCAwLCBtX2dsb2JhbFNpemUsIDAsIDAsIDAsIDApOworICAg
ICAgICAgICAgICAgIG1fY29udGV4dC0+aXNGYWlsZWQobV9lcnJvcik7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIG1fY29udGV4dDsKICAgICAgICAg
ICAgIGNsX2tlcm5lbCBtX2tlcm5lbDsKICAgICAgICAgICAgIHNpemVfdCBtX2dsb2JhbFNpemVb
Ml07Ci0gICAgICAgICAgICBpbnQgaW5kZXg7CisgICAgICAgICAgICBpbnQgbV9pbmRleDsKKyAg
ICAgICAgICAgIGludCBtX2Vycm9yOwogICAgICAgICB9OwogCi0gICAgZW51bSBPcGVuQ0xDb21w
aWxlU3RhdHVzIHsKLSAgICAgICAgb3BlbmNsTm90Q29tcGlsZWRZZXQsCi0gICAgICAgIG9wZW5j
bENvbXBpbGVGYWlsZWQsCi0gICAgICAgIG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsCi0gICAgfTsK
LQotICAgIHN0YXRpYyBjbF9wcm9ncmFtIGNvbXBpbGVQcm9ncmFtKGNvbnN0IGNoYXIqKTsKKyAg
ICBjbF9wcm9ncmFtIGNvbXBpbGVQcm9ncmFtKGNvbnN0IGNoYXIqKTsKICAgICBzdGF0aWMgaW5s
aW5lIGNsX2tlcm5lbCBrZXJuZWxCeU5hbWUoY2xfcHJvZ3JhbSBwcm9ncmFtLCBjb25zdCBjaGFy
KiBuYW1lKSB7IHJldHVybiBjbENyZWF0ZUtlcm5lbChwcm9ncmFtLCBuYW1lLCAwKTsgfQogCisg
ICAgc3RhdGljIGlubGluZSB2b2lkIGZyZWVSZXNvdXJjZShjbF9rZXJuZWwmKTsKKyAgICBzdGF0
aWMgaW5saW5lIHZvaWQgZnJlZVJlc291cmNlKGNsX3Byb2dyYW0mKTsKKwogICAgIHN0YXRpYyBG
aWx0ZXJDb250ZXh0T3BlbkNMKiBtX2NvbnRleHQ7CiAgICAgc3RhdGljIGludCBtX2FscmVhZHlJ
bml0aWFsaXplZDsKKyAgICBib29sIG1faW5FcnJvcjsKIAogICAgIGNsX2RldmljZV9pZCBtX2Rl
dmljZUlkOwogICAgIGNsX2NvbnRleHQgbV9kZXZpY2VDb250ZXh0OwogICAgIGNsX2NvbW1hbmRf
cXVldWUgbV9jb21tYW5kUXVldWU7CiAKKyAgICBib29sIG1fdHJhbnNmb3JtQ29sb3JTcGFjZVdh
c0NvbXBpbGVkOwogICAgIGNsX3Byb2dyYW0gbV90cmFuc2Zvcm1Db2xvclNwYWNlUHJvZ3JhbTsK
ICAgICBjbF9rZXJuZWwgbV90cmFuc2Zvcm1Db2xvclNwYWNlS2VybmVsOwogCi0gICAgT3BlbkNM
Q29tcGlsZVN0YXR1cyBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1czsKKyAgICBib29sIG1fY29s
b3JNYXRyaXhXYXNDb21waWxlZDsKICAgICBjbF9wcm9ncmFtIG1fY29sb3JNYXRyaXhQcm9ncmFt
OwogICAgIGNsX2tlcm5lbCBtX21hdHJpeE9wZXJhdGlvbjsKICAgICBjbF9rZXJuZWwgbV9zYXR1
cmF0ZUFuZEh1ZVJvdGF0ZU9wZXJhdGlvbjsgCiAgICAgY2xfa2VybmVsIG1fbHVtaW5hbmNlT3Bl
cmF0aW9uOwogCi0gICAgT3BlbkNMQ29tcGlsZVN0YXR1cyBtX3R1cmJ1bGVuY2VDb21waWxlU3Rh
dHVzOworICAgIGJvb2wgbV90dXJidWxlbmNlV2FzQ29tcGlsZWQ7CiAgICAgY2xfcHJvZ3JhbSBt
X3R1cmJ1bGVuY2VQcm9ncmFtOwogICAgIGNsX2tlcm5lbCBtX3R1cmJ1bGVuY2VPcGVyYXRpb247
CiB9OwogCitpbmxpbmUgYm9vbCBGaWx0ZXJDb250ZXh0T3BlbkNMOjppc0ZhaWxlZChib29sIHZh
bHVlKQoreworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc2V0SW5FcnJvcigpOworICAgIHJldHVy
biB2YWx1ZTsKK30KKworaW5saW5lIGJvb2wgRmlsdGVyQ29udGV4dE9wZW5DTDo6aXNSZXNvdXJj
ZUFsbG9jYXRpb25GYWlsZWQoYm9vbCB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlKQorICAgICAg
ICBzZXRJbkVycm9yKCk7CisgICAgcmV0dXJuICF2YWx1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE9QRU5DTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVDb2xvck1hdHJpeC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZF
Q29sb3JNYXRyaXguY3BwCmluZGV4IDQ3Yzg4YzYuLmM2YzM0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVDb2xvck1hdHJp
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L29wZW5jbC9P
cGVuQ0xGRUNvbG9yTWF0cml4LmNwcApAQCAtNjgsMjYgKzY4LDIyIEBAIF9fa2VybmVsIHZvaWQg
bHVtaW5hbmNlKF9fd3JpdGVfb25seSBpbWFnZTJkX3QgZGVzdGluYXRpb24sIF9fcmVhZF9vbmx5
IGltYWdlMmRfCiAKIGlubGluZSBib29sIEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbXBpbGVGRUNv
bG9yTWF0cml4KCkKIHsKLSAgICBpZiAobV9jb2xvck1hdHJpeENvbXBpbGVTdGF0dXMgIT0gb3Bl
bmNsTm90Q29tcGlsZWRZZXQpCi0gICAgICAgIHJldHVybiBtX2NvbG9yTWF0cml4Q29tcGlsZVN0
YXR1cyA9PSBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKKyAgICBpZiAobV9jb2xvck1hdHJpeFdh
c0NvbXBpbGVkIHx8IGluRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuICFpbkVycm9yKCk7CiAKLSAg
ICBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVGYWlsZWQ7Ci0gICAg
bV9jb2xvck1hdHJpeFByb2dyYW0gPSBjb21waWxlUHJvZ3JhbShjb2xvck1hdHJpeEtlcm5lbFBy
b2dyYW0pOwotICAgIGlmICghbV9jb2xvck1hdHJpeFByb2dyYW0pCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBtX2NvbG9yTWF0cml4V2FzQ29tcGlsZWQgPSB0cnVlOwogCi0gICAgbV9tYXRy
aXhPcGVyYXRpb24gPSBrZXJuZWxCeU5hbWUobV9jb2xvck1hdHJpeFByb2dyYW0sICJtYXRyaXgi
KTsKLSAgICBpZiAoIW1fbWF0cml4T3BlcmF0aW9uKQorICAgIGlmIChpc1Jlc291cmNlQWxsb2Nh
dGlvbkZhaWxlZCgobV9jb2xvck1hdHJpeFByb2dyYW0gPSBjb21waWxlUHJvZ3JhbShjb2xvck1h
dHJpeEtlcm5lbFByb2dyYW0pKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3NhdHVy
YXRlQW5kSHVlUm90YXRlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fY29sb3JNYXRyaXhQcm9n
cmFtLCAic2F0dXJhdGVBbmRIdWVSb3RhdGUiKTsKLSAgICBpZiAoIW1fc2F0dXJhdGVBbmRIdWVS
b3RhdGVPcGVyYXRpb24pCisgICAgaWYgKGlzUmVzb3VyY2VBbGxvY2F0aW9uRmFpbGVkKChtX21h
dHJpeE9wZXJhdGlvbiA9IGtlcm5lbEJ5TmFtZShtX2NvbG9yTWF0cml4UHJvZ3JhbSwgIm1hdHJp
eCIpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2x1bWluYW5jZU9wZXJhdGlvbiA9
IGtlcm5lbEJ5TmFtZShtX2NvbG9yTWF0cml4UHJvZ3JhbSwgImx1bWluYW5jZSIpOwotICAgIGlm
ICghbV9sdW1pbmFuY2VPcGVyYXRpb24pCisgICAgaWYgKGlzUmVzb3VyY2VBbGxvY2F0aW9uRmFp
bGVkKChtX3NhdHVyYXRlQW5kSHVlUm90YXRlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fY29s
b3JNYXRyaXhQcm9ncmFtLCAic2F0dXJhdGVBbmRIdWVSb3RhdGUiKSkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBtX2NvbG9yTWF0cml4Q29tcGlsZVN0YXR1cyA9IG9wZW5jbENvbXBp
bGVTdWNjZXNzZnVsOwotICAgIHJldHVybiBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKKyAgICBp
ZiAoaXNSZXNvdXJjZUFsbG9jYXRpb25GYWlsZWQoKG1fc2F0dXJhdGVBbmRIdWVSb3RhdGVPcGVy
YXRpb24gPSBrZXJuZWxCeU5hbWUobV9jb2xvck1hdHJpeFByb2dyYW0sICJzYXR1cmF0ZUFuZEh1
ZVJvdGF0ZSIpKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaXNSZXNvdXJjZUFs
bG9jYXRpb25GYWlsZWQoKG1fbHVtaW5hbmNlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fY29s
b3JNYXRyaXhQcm9ncmFtLCAibHVtaW5hbmNlIikpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiBpbmxpbmUgdm9pZCBGaWx0ZXJDb250ZXh0T3BlbkNMOjph
cHBseUZFQ29sb3JNYXRyaXgoT3BlbkNMSGFuZGxlIGRlc3RpbmF0aW9uLCBJbnRTaXplIGRlc3Rp
bmF0aW9uU2l6ZSwgT3BlbkNMSGFuZGxlIHNvdXJjZSwgSW50UG9pbnQgcmVsYXRpdmVTb3VyY2VM
b2NhdGlvbiwgZmxvYXQqIHZhbHVlcywgaW50IHR5cGUpCkBAIC0xMzAsOSArMTI2LDEyIEBAIGlu
bGluZSB2b2lkIEZpbHRlckNvbnRleHRPcGVuQ0w6OmFwcGx5RkVDb2xvck1hdHJpeChPcGVuQ0xI
YW5kbGUgZGVzdGluYXRpb24sIEluCiBib29sIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlP
cGVuQ0woKQogewogICAgIEZpbHRlckNvbnRleHRPcGVuQ0wqIGNvbnRleHQgPSBGaWx0ZXJDb250
ZXh0T3BlbkNMOjpjb250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5jb21w
aWxlRkVDb2xvck1hdHJpeCgpKQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgaWYgKCFjb250ZXh0LT5jb21waWxlRkVDb2xvck1hdHJpeCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKwogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsK
ICAgICBPcGVuQ0xIYW5kbGUgc291cmNlID0gaW4tPm9wZW5DTEltYWdlKCk7CiAgICAgT3BlbkNM
SGFuZGxlIGRlc3RpbmF0aW9uID0gY3JlYXRlT3BlbkNMSW1hZ2VSZXN1bHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVuY2wvT3BlbkNMRkVU
dXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9vcGVu
Y2wvT3BlbkNMRkVUdXJidWxlbmNlLmNwcAppbmRleCAyYzkxYjQ3Li5kODI4NGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvb3BlbmNsL09wZW5DTEZF
VHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L29wZW5jbC9PcGVuQ0xGRVR1cmJ1bGVuY2UuY3BwCkBAIC0xNjksMTkgKzE2OSwxNiBAQCBfX2tl
cm5lbCB2b2lkIFR1cmJ1bGVuY2UoX193cml0ZV9vbmx5IGltYWdlMmRfdCBkZXN0aW5hdGlvbiwg
X19jb25zdGFudCBmbG9hdCAqdAogCiBpbmxpbmUgYm9vbCBGaWx0ZXJDb250ZXh0T3BlbkNMOjpj
b21waWxlRkVUdXJidWxlbmNlKCkKIHsKLSAgICBpZiAobV90dXJidWxlbmNlQ29tcGlsZVN0YXR1
cyAhPSBvcGVuY2xOb3RDb21waWxlZFlldCkKLSAgICAgICAgcmV0dXJuIG1fdHVyYnVsZW5jZUNv
bXBpbGVTdGF0dXMgPT0gb3BlbmNsQ29tcGlsZVN1Y2Nlc3NmdWw7CisgICAgaWYgKG1fdHVyYnVs
ZW5jZVdhc0NvbXBpbGVkIHx8IGluRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuICFpbkVycm9yKCk7
CiAKLSAgICBtX3R1cmJ1bGVuY2VDb21waWxlU3RhdHVzID0gb3BlbmNsQ29tcGlsZUZhaWxlZDsK
LSAgICBtX3R1cmJ1bGVuY2VQcm9ncmFtID0gY29tcGlsZVByb2dyYW0odHVyYnVsZW5jZUtlcm5l
bFByb2dyYW0pOwotICAgIGlmICghbV90dXJidWxlbmNlUHJvZ3JhbSkKKyAgICBtX3R1cmJ1bGVu
Y2VXYXNDb21waWxlZCA9IHRydWU7CisKKyAgICBpZiAoaXNSZXNvdXJjZUFsbG9jYXRpb25GYWls
ZWQoKG1fdHVyYnVsZW5jZVByb2dyYW0gPSBjb21waWxlUHJvZ3JhbSh0dXJidWxlbmNlS2VybmVs
UHJvZ3JhbSkpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fdHVyYnVsZW5jZU9wZXJh
dGlvbiA9IGtlcm5lbEJ5TmFtZShtX3R1cmJ1bGVuY2VQcm9ncmFtLCAiVHVyYnVsZW5jZSIpOwot
ICAgIGlmICghbV90dXJidWxlbmNlT3BlcmF0aW9uKQorICAgIGlmIChpc1Jlc291cmNlQWxsb2Nh
dGlvbkZhaWxlZCgobV90dXJidWxlbmNlT3BlcmF0aW9uID0ga2VybmVsQnlOYW1lKG1fdHVyYnVs
ZW5jZVByb2dyYW0sICJUdXJidWxlbmNlIikpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgbV90dXJidWxlbmNlQ29tcGlsZVN0YXR1cyA9IG9wZW5jbENvbXBpbGVTdWNjZXNzZnVsOwot
ICAgIHJldHVybiBvcGVuY2xDb21waWxlU3VjY2Vzc2Z1bDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogaW5saW5lIHZvaWQgRmlsdGVyQ29udGV4dE9wZW5DTDo6YXBwbHlGRVR1cmJ1bGVuY2UoT3Bl
bkNMSGFuZGxlIGRlc3RpbmF0aW9uLApAQCAtMjI0LDkgKzIyMSwxMiBAQCBpbmxpbmUgdm9pZCBG
aWx0ZXJDb250ZXh0T3BlbkNMOjphcHBseUZFVHVyYnVsZW5jZShPcGVuQ0xIYW5kbGUgZGVzdGlu
YXRpb24sCiBib29sIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseU9wZW5DTCgpCiB7CiAgICAg
RmlsdGVyQ29udGV4dE9wZW5DTCogY29udGV4dCA9IEZpbHRlckNvbnRleHRPcGVuQ0w6OmNvbnRl
eHQoKTsKLSAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPmNvbXBpbGVGRVR1cmJ1bGVuY2Uo
KSkKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICgh
Y29udGV4dC0+Y29tcGlsZUZFVHVyYnVsZW5jZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwog
ICAgIE9wZW5DTEhhbmRsZSBkZXN0aW5hdGlvbiA9IGNyZWF0ZU9wZW5DTEltYWdlUmVzdWx0KCk7
CiAKICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhKG1fc2VlZCwgcm91bmRlZEludFNpemUo
ZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkuc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4
IDI5ODNjNGYuLjk4OTkwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAg
dm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIEdyYXBoaWNzQ28KICAgICAgICAgLy8gQWx3YXlzIHRydWUgaWYgZmlsdGVy
RGF0YSBpcyBqdXN0IGJ1aWx0IChmaWx0ZXJEYXRhLT5zdGF0ZSA9PSBGaWx0ZXJEYXRhOjpCdWls
dCkuCiAgICAgICAgIGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAg
IGZpbHRlckRhdGEtPnN0YXRlID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7Ci0gICAgICAgICAgICBs
YXN0RWZmZWN0LT5hcHBseSgpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHlBbGwoKTsK
ICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwog
ICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNw
YWNlRGV2aWNlUkdCKTsKICAgICAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>