<?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>226660</bug_id>
          
          <creation_ts>2021-06-04 13:23:39 -0700</creation_ts>
          <short_desc>[Metal ANGLE] Shaders with reserved metal keywords do not translate, nor do shaders with struct and variable names that are the same except prefixed by an underscore</short_desc>
          <delta_ts>2021-12-13 00:04:12 -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>WebGL</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Cunningham">johncunningham</reporter>
          <assigned_to name="Kyle Piddington">kpiddington</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>markus</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1766903</commentid>
    <comment_count>0</comment_count>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2021-06-04 13:23:39 -0700</bug_when>
    <thetext>[Metal ANGLE] Shaders with reserved metal keywords do not translate, nor do shaders with struct and variable names that are the same except prefixed by an underscore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766904</commentid>
    <comment_count>1</comment_count>
      <attachid>430604</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2021-06-04 13:24:03 -0700</bug_when>
    <thetext>Created attachment 430604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766906</commentid>
    <comment_count>2</comment_count>
      <attachid>430605</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2021-06-04 13:30:35 -0700</bug_when>
    <thetext>Created attachment 430605
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766942</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-06-04 14:44:24 -0700</bug_when>
    <thetext>Note that the WebGL variant of GLSL ES reserves some keyword prefixes:
https://www.khronos.org/registry/webgl/specs/latest/1.0/#4.3

so you could safely rename any of these variables which collide with Metal&apos;s reserved ones by prepending for example &quot;_webgl_&quot; to it after the initial parse and validation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766952</commentid>
    <comment_count>4</comment_count>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2021-06-04 15:21:41 -0700</bug_when>
    <thetext>(In reply to Kenneth Russell from comment #3)
&gt; Note that the WebGL variant of GLSL ES reserves some keyword prefixes:
&gt; https://www.khronos.org/registry/webgl/specs/latest/1.0/#4.3
&gt; 
&gt; so you could safely rename any of these variables which collide with Metal&apos;s
&gt; reserved ones by prepending for example &quot;_webgl_&quot; to it after the initial
&gt; parse and validation.

Correct, we actually do a pass already of this in RewriteKeywords.cpp, with the keywords defined in GetMSLKeywords, however, in this case something is not being plumbed through correctly and the renaming is not consistent throughout the generated shader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766957</commentid>
    <comment_count>5</comment_count>
      <attachid>430605</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-06-04 15:26:36 -0700</bug_when>
    <thetext>Comment on attachment 430605
Testcase

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

&gt; LayoutTests/fast/canvas/webgl/shader-with-reserved-keyword-expected.txt:7
&gt; +TEST COMPLETE

The test needs to be updated for this to be the last line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766996</commentid>
    <comment_count>6</comment_count>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2021-06-04 16:57:40 -0700</bug_when>
    <thetext>Here&apos;s the fragment shader converted to MSL:

#define ANGLE_ALWAYS_INLINE __attribute__((always_inline))

ANGLE_ALWAYS_INLINE int ANGLE_int_clamp(int value, int minValue, int maxValue)
{
    return ((value &lt; minValue) ?  minValue : ((value &gt; maxValue) ? maxValue : value));
};

#define ANGLE_SAMPLE_COMPARE_GRADIENT_INDEX 0
#define ANGLE_SAMPLE_COMPARE_LOD_INDEX      1
#define ANGLE_RASTERIZATION_DISCARD_INDEX   2
#define ANGLE_COVERAGE_MASK_ENABLED_INDEX   3

constant bool ANGLE_UseSampleCompareGradient [[function_constant(ANGLE_SAMPLE_COMPARE_GRADIENT_INDEX)]];
constant bool ANGLE_UseSampleCompareLod      [[function_constant(ANGLE_SAMPLE_COMPARE_LOD_INDEX)]];
constant bool ANGLE_RasterizationDiscard     [[function_constant(ANGLE_RASTERIZATION_DISCARD_INDEX)]];
constant bool ANGLE_CoverageMaskEnabled      [[function_constant(ANGLE_COVERAGE_MASK_ENABLED_INDEX)]];

ANGLE_ALWAYS_INLINE void ANGLE_writeSampleMask(const uint mask,
                                               thread uint&amp; gl_SampleMask)
{
    if (ANGLE_CoverageMaskEnabled)
    {
        gl_SampleMask = as_type&lt;int&gt;(mask);
    }
}

#define ANGLE_tensor metal::array
#pragma clang diagnostic ignored &quot;-Wunused-value&quot;
struct ANGLE_s
{
  float ANGLE_1_metal;
  char ANGLE_5_pad[12];
};

struct ANGLE_DepthRangeParams
{
  float ANGLE_near;
  float ANGLE_far;
  float ANGLE_diff;
  float ANGLE_reserved;
};

struct ANGLE_AngleUniforms
{
  metal::float4 ANGLE_viewport;
  metal::float2 ANGLE_halfRenderArea;
  metal::float2 ANGLE_flipXY;
  metal::float2 ANGLE_negFlipXY;
  uint ANGLE_clipDistancesEnabled;
  uint ANGLE_xfbActiveUnpaused;
  uint ANGLE_xfbVerticesPerDraw;
  metal::int4 ANGLE_xfbBufferOffsets;
  metal::uint4 ANGLE_acbBufferOffsets;
  ANGLE_DepthRangeParams ANGLE_depthRange;
  metal::float2x4 ANGLE_preRotation;
  metal::float2x4 ANGLE_fragRotation;
  uint coverageMask;
};

struct ANGLE_FragmentOut
{
  metal::float4 color [[color(0)]];
  uint gl_SampleMask [[sample_mask, function_constant(ANGLE_CoverageMaskEnabled)]];
};

ANGLE_s ANGLE_sb6c;

void ANGLE_helper(ANGLE_s ANGLE_s)
{
}

void ANGLE_0_main(thread ANGLE_FragmentOut &amp; ANGLE_fragmentOut)
{
  ANGLE_fragmentOut.color = metal::float4(0.0f, 0.0f, 0.0f, 0.0f);
  ANGLE_s ANGLE_s = ANGLE_s{0.0f};
  ANGLE_helper(ANGLE_s);
  ANGLE_fragmentOut.color = metal::float4(0.0f, 0.80000001f, 0.0f, 1.0f);
}

fragment ANGLE_FragmentOut main0(constant ANGLE_AngleUniforms &amp; ANGLE_angleUniforms [[buffer(17)]])
{
  ANGLE_FragmentOut ANGLE_fragmentOut;
  {
    ANGLE_0_main(ANGLE_fragmentOut);
    if (ANGLE_CoverageMaskEnabled)
    {
      ANGLE_writeSampleMask(ANGLE_angleUniforms.coverageMask, ANGLE_fragmentOut.gl_SampleMask);
    } else {}
  }
  return ANGLE_fragmentOut;;
}

If I compile this I get the following errors:

ANGLE_s ANGLE_sb6c;
        ^
shader.metal:77:28: error: expected &apos;;&apos; at end of declaration
  ANGLE_s ANGLE_s = ANGLE_s{0.0f};
                           ^
                           ;
shader.metal:77:21: warning: variable &apos;ANGLE_s&apos; is uninitialized when used within its own initialization [-Wuninitialized]
  ANGLE_s ANGLE_s = ANGLE_s{0.0f};
          ~~~~~~~   ^~~~~~~
1 warning and 2 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767000</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-06-04 17:04:16 -0700</bug_when>
    <thetext>It looks to me like the name mangling scheme in the direct-to-Metal backend has to be changed to make sure that structs&apos; names and variables&apos; names don&apos;t collide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769048</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-11 13:24:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/79213149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770046</commentid>
    <comment_count>9</comment_count>
      <attachid>431506</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-06-15 18:03:03 -0700</bug_when>
    <thetext>Created attachment 431506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770047</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-06-15 18:04:05 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770048</commentid>
    <comment_count>11</comment_count>
      <attachid>431506</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2021-06-15 18:14:57 -0700</bug_when>
    <thetext>Comment on attachment 431506
Patch

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

LGTM. r+ with the expectation that you will fix the nits

&gt; Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetalDirect/RewriteKeywords.cpp:137
&gt; +            renamed-&gt;setQualifier(type.getQualifier());

is there a constructor that takes a qualifier? otherwise it&apos;s okay

&gt; Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetalDirect/RewriteKeywords.cpp:158
&gt; +        

not sure what happened here, maybe just formatting

&gt; LayoutTests/fast/canvas/webgl/shader-with-reserved-keyword-expected.txt:15
&gt; +TEST COMPLETE

Alexey&apos;s previous comment suggests this should be at the end.

&gt; LayoutTests/fast/canvas/webgl/shader-with-reserved-keyword.html:33
&gt; +    	description(&quot;Tests that program compiling/linking with a reserved keyword.&quot;);

indentation

&gt; LayoutTests/fast/canvas/webgl/shader-with-reserved-keyword.html:38
&gt; +            var fShaderSouce =&apos;#version 300 es\n precision mediump float;\n out vec4 color;\n struct s { float metal; };\n float helper(s _s) { return _s.metal; }\n void main() { s _s; float a = helper(_s); color = vec4(a,0.8,0,1); }\n&apos;

space after &quot;=&quot;, same for each fShaderSouce. Also typo for Souce ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770049</commentid>
    <comment_count>12</comment_count>
      <attachid>431506</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-06-15 18:19:02 -0700</bug_when>
    <thetext>Comment on attachment 431506
Patch

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

&gt; Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetalDirect/RewriteKeywords.cpp:159
&gt;          renamed-&gt;setLayoutQualifier(type.getLayoutQualifier());
&gt; +        
&gt;  

Oops.

&gt; LayoutTests/fast/canvas/webgl/shader-with-reserved-keyword-expected.txt:22
&gt; +PASS successfullyParsed is true
&gt; +
&gt; +TEST COMPLETE
&gt; +PASS getError was expected value: NO_ERROR : no error for using reserved keyword in struct
&gt; +PASS getError was expected value: NO_ERROR : no error for using reserved keyword for struct name
&gt; +PASS getError was expected value: NO_ERROR : no error for using reserved keyword for struct name with global struct
&gt; +PASS getError was expected value: NO_ERROR : no error for using reserved keyword in type with global struct
&gt; +PASS getError was expected value: NO_ERROR : no error for using reserved keyword for struct name  with global struct
&gt; +PASS getError was expected value: NO_ERROR : no error for using reserved keyword for variable name with global struct
&gt; +PASS getError was expected value: NO_ERROR : no error for using reserved keyword for variable name and struct name with global struct

I&apos;m not sure why the test output is coming after the test complete message. I think it&apos;s because you&apos;re using the webgl test utils but also mixing it with the WebKit utils.

&gt; LayoutTests/fast/canvas/webgl/shader-with-reserved-keyword.html:22
&gt; +        console.log(gl.getShaderInfoLog(fragmentShader));

I think you left this in by accident.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770362</commentid>
    <comment_count>13</comment_count>
      <attachid>431591</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-06-16 13:41:43 -0700</bug_when>
    <thetext>Created attachment 431591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770378</commentid>
    <comment_count>14</comment_count>
      <attachid>431597</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-06-16 13:54:58 -0700</bug_when>
    <thetext>Created attachment 431597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770383</commentid>
    <comment_count>15</comment_count>
      <attachid>431597</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2021-06-16 14:08:26 -0700</bug_when>
    <thetext>Comment on attachment 431597
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770384</commentid>
    <comment_count>16</comment_count>
      <attachid>431597</attachid>
    <who name="John Cunningham">johncunningham</who>
    <bug_when>2021-06-16 14:08:27 -0700</bug_when>
    <thetext>Comment on attachment 431597
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770853</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-17 15:35:43 -0700</bug_when>
    <thetext>Committed r279016 (238941@main): &lt;https://commits.webkit.org/238941@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431597.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775788</commentid>
    <comment_count>18</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-07-08 13:56:28 -0700</bug_when>
    <thetext>*** Bug 226865 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823411</commentid>
    <comment_count>19</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-13 00:04:12 -0800</bug_when>
    <thetext>*** Bug 234220 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430604</attachid>
            <date>2021-06-04 13:24:03 -0700</date>
            <delta_ts>2021-06-04 13:30:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226660-20210604132402.patch</filename>
            <type>text/plain</type>
            <size>3770</size>
            <attacher name="John Cunningham">johncunningham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzA4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjEyYzk5MzZjOWQ1YjJhYzMyODU5
OGIyYTQ4ZjM2MDJmYWVlODBjMS4uYjc0MmUyYTgzNGQ4NWIzZTA2ZjMzMWIwNzEyMDgzYjcxN2Y0
NGM3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTA0ICBKb2huIEN1bm5pbmdoYW0g
IDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW01ldGFsIEFOR0xFXSBTaGFk
ZXJzIHdpdGggcmVzZXJ2ZWQgbWV0YWwga2V5d29yZHMgZG8gbm90IHRyYW5zbGF0ZSwgbm9yIGRv
IHNoYWRlcnMgd2l0aCBzdHJ1Y3QgYW5kIHZhcmlhYmxlIG5hbWVzIHRoYXQgYXJlIHRoZSBzYW1l
IGV4Y2VwdCBwcmVmaXhlZCBieSBhbiB1bmRlcnNjb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NoYWRlci13aXRo
LXJlc2VydmVkLWtleXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1rZXl3b3JkLmh0bWw6IEFkZGVkLgorCiAy
MDIxLTA1LTE4ICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4gVXBkYXRlIHR3byBiYXNlbGluZXMg
b2YgaW5zcGVjdG9yIHRlc3QgdGhhdCB3ZXJlIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1rZXl3b3JkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci13aXRoLXJlc2Vy
dmVkLWtleXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwOWE1NjFmYmQyODI4YzJhMjJj
YTkxNjhlMzgwZTRjOTVmMWViY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1rZXl3b3JkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKK1Rlc3RzIHRoYXQgcHJvZ3JhbSBjb21waWxpbmcvbGlua2luZyB3aXRo
IHJlc2VydmVkIG1ldGFsIGtleXdvcmRzLgorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8gZXJyb3IgZnJvbSB1c2lu
ZyByZXNlcnZlZCBtZXRhbCBrZXl3b3JkcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci13aXRoLXJlc2Vy
dmVkLWtleXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci13
aXRoLXJlc2VydmVkLWtleXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDgxZWJkMTY2OThkZTEyNTc3
Y2E4M2I4MTljMjZhNmNjN2Y2YjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2hhZGVyLXdpdGgtcmVzZXJ2ZWQta2V5d29yZC5odG1sCkBAIC0wLDAg
KzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKwk8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9z
Y3JpcHQ+CisJPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIiB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAJZGVzY3Jp
cHRpb24oIlRlc3RzIHRoYXQgcHJvZ3JhbSBjb21waWxpbmcvbGlua2luZyB3aXRoIGEgcmVzZXJ2
ZWQga2V5d29yZC4iKTsKKyAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd3ZWJnbC1jYW52YXMnKTsKKyAgICAgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQo
IndlYmdsMiIpOworICAgICAgICB2YXIgZnJhZ21lbnRTaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIo
Z2wuRlJBR01FTlRfU0hBREVSKTsKKyAgICAgICAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9n
cmFtKCk7CisgICAgICAgIHZhciB2ZXJ0ZXhTaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVS
VEVYX1NIQURFUik7CisgICAgICAgIGdsLnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsICcjdmVy
c2lvbiAzMDAgZXNcbiBpbiB2ZWMyIHBvcztcbnZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2
ZWM0KHBvcywgMCwgMSk7IH0nKTsKKyAgICAgICAgZ2wuY29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFk
ZXIpOworICAgICAgICBnbC5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsICcjdmVyc2lvbiAz
MDAgZXNcbiBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiBvdXQgdmVjNCBjb2xvcjtcbiBzdHJ1
Y3QgcyB7IGZsb2F0IG1ldGFsOyB9O1xuIHZvaWQgaGVscGVyKHMgX3MpIHsgX3M7IH1cbiB2b2lk
IG1haW4oKSB7IHMgX3M7IGhlbHBlcihfcyk7IGNvbG9yID0gdmVjNCgwLDAuOCwwLDEpOyB9XG4n
KTsKKyAgICAgICAgZ2wuY29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgICAgIGds
LmF0dGFjaFNoYWRlcihwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAgICAgICBnbC5hdHRhY2hT
aGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAgICAgICBnbC5saW5rUHJvZ3JhbShw
cm9ncmFtKTsKKyAgICAgICAgY29uc29sZS5sb2coZ2wuZ2V0U2hhZGVySW5mb0xvZyhmcmFnbWVu
dFNoYWRlcikpOworICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBnbC5k
cmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CisJCXd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
MCwibm8gZXJyb3IgZnJvbSB1c2luZyBuZXN0ZWQgc3RydWN0Iik7CisKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
IH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAg
ICB3aW5kb3cub25wYWdlc2hvdyA9IHJ1blRlc3Q7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52YXMiIHdpZHRoPSIxMDBweCIgaGVpZ2h0
PSIxMDBweCI+PC9jYW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430605</attachid>
            <date>2021-06-04 13:30:35 -0700</date>
            <delta_ts>2021-06-15 18:03:00 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>bug-226660-20210604133034.patch</filename>
            <type>text/plain</type>
            <size>3773</size>
            <attacher name="John Cunningham">johncunningham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzA4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjEyYzk5MzZjOWQ1YjJhYzMyODU5
OGIyYTQ4ZjM2MDJmYWVlODBjMS4uYjc0MmUyYTgzNGQ4NWIzZTA2ZjMzMWIwNzEyMDgzYjcxN2Y0
NGM3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTA0ICBKb2huIEN1bm5pbmdoYW0g
IDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW01ldGFsIEFOR0xFXSBTaGFk
ZXJzIHdpdGggcmVzZXJ2ZWQgbWV0YWwga2V5d29yZHMgZG8gbm90IHRyYW5zbGF0ZSwgbm9yIGRv
IHNoYWRlcnMgd2l0aCBzdHJ1Y3QgYW5kIHZhcmlhYmxlIG5hbWVzIHRoYXQgYXJlIHRoZSBzYW1l
IGV4Y2VwdCBwcmVmaXhlZCBieSBhbiB1bmRlcnNjb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NoYWRlci13aXRo
LXJlc2VydmVkLWtleXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1rZXl3b3JkLmh0bWw6IEFkZGVkLgorCiAy
MDIxLTA1LTE4ICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4gVXBkYXRlIHR3byBiYXNlbGluZXMg
b2YgaW5zcGVjdG9yIHRlc3QgdGhhdCB3ZXJlIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1rZXl3b3JkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci13aXRoLXJlc2Vy
dmVkLWtleXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwOWE1NjFmYmQyODI4YzJhMjJj
YTkxNjhlMzgwZTRjOTVmMWViY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1rZXl3b3JkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKK1Rlc3RzIHRoYXQgcHJvZ3JhbSBjb21waWxpbmcvbGlua2luZyB3aXRo
IHJlc2VydmVkIG1ldGFsIGtleXdvcmRzLgorT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8gZXJyb3IgZnJvbSB1c2lu
ZyByZXNlcnZlZCBtZXRhbCBrZXl3b3JkcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci13aXRoLXJlc2Vy
dmVkLWtleXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci13
aXRoLXJlc2VydmVkLWtleXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjVhZDBmYWM4ODgwZjA5MTA5
MzA5MjI4NGExNGY3NDE2ZTkxMGFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2hhZGVyLXdpdGgtcmVzZXJ2ZWQta2V5d29yZC5odG1sCkBAIC0wLDAg
KzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKwk8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9z
Y3JpcHQ+CisJPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIiB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wt
dGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAJZGVzY3Jp
cHRpb24oIlRlc3RzIHRoYXQgcHJvZ3JhbSBjb21waWxpbmcvbGlua2luZyB3aXRoIGEgcmVzZXJ2
ZWQga2V5d29yZC4iKTsKKyAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd3ZWJnbC1jYW52YXMnKTsKKyAgICAgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQo
IndlYmdsMiIpOworICAgICAgICB2YXIgZnJhZ21lbnRTaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIo
Z2wuRlJBR01FTlRfU0hBREVSKTsKKyAgICAgICAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9n
cmFtKCk7CisgICAgICAgIHZhciB2ZXJ0ZXhTaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVS
VEVYX1NIQURFUik7CisgICAgICAgIGdsLnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsICcjdmVy
c2lvbiAzMDAgZXNcbiBpbiB2ZWMyIHBvcztcbnZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2
ZWM0KHBvcywgMCwgMSk7IH0nKTsKKyAgICAgICAgZ2wuY29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFk
ZXIpOworICAgICAgICBnbC5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsICcjdmVyc2lvbiAz
MDAgZXNcbiBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiBvdXQgdmVjNCBjb2xvcjtcbiBzdHJ1
Y3QgcyB7IGZsb2F0IG1ldGFsOyB9O1xuIHZvaWQgaGVscGVyKHMgX3MpIHsgX3M7IH1cbiB2b2lk
IG1haW4oKSB7IHMgX3M7IGhlbHBlcihfcyk7IGNvbG9yID0gdmVjNCgwLDAuOCwwLDEpOyB9XG4n
KTsKKyAgICAgICAgZ2wuY29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgICAgIGds
LmF0dGFjaFNoYWRlcihwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAgICAgICBnbC5hdHRhY2hT
aGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAgICAgICBnbC5saW5rUHJvZ3JhbShw
cm9ncmFtKTsKKyAgICAgICAgY29uc29sZS5sb2coZ2wuZ2V0U2hhZGVySW5mb0xvZyhmcmFnbWVu
dFNoYWRlcikpOworICAgICAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBnbC5k
cmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7CisJCXd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
MCwibm8gZXJyb3IgZnJvbSB1c2luZyByZXNlcnZlZCBrZXl3b3JkIik7CisKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgIH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisK
KyAgICB3aW5kb3cub25wYWdlc2hvdyA9IHJ1blRlc3Q7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJ3ZWJnbC1jYW52YXMiIHdpZHRoPSIxMDBweCIgaGVp
Z2h0PSIxMDBweCI+PC9jYW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431506</attachid>
            <date>2021-06-15 18:03:03 -0700</date>
            <delta_ts>2021-06-17 15:28:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226660-20210615180301.patch</filename>
            <type>text/plain</type>
            <size>10666</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNjk2ZmQ5MmU4OTIxNjllYjAxZmVmZjc4ZWNmMTcyNzIzMDU0MWNiMC4uM2FhMjEyMDRhZTVk
ZjFiOWFlYjcxZmNiZGM0Y2MyZmFmYjg0NDlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA2LTE1ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01ldGFsIEFOR0xFXSBTaGFkZXJzIHdpdGggcmVz
ZXJ2ZWQgbWV0YWwga2V5d29yZHMgZG8gbm90IHRyYW5zbGF0ZSwgbm9yIGRvIHNoYWRlcnMgd2l0
aCBzdHJ1Y3QgYW5kIHZhcmlhYmxlIG5hbWVzIHRoYXQgYXJlIHRoZSBzYW1lIGV4Y2VwdCBwcmVm
aXhlZCBieSBhbiB1bmRlcnNjb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2NjAKKworICAgICAgICBGaXgga2V5d29yZCB0cmFuc2xhdGlvbiBw
cm9ibGVtIGJ5IGNvcnJlY3Rpbmcgc3ltYm9sIHNwYWNlLiBUaGlzIGF2b2lkcyByZW5hbWluZyBz
dHJ1Y3RzIHVubmVjZXNzYXJpbHkgCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxE
aXJlY3QvUmV3cml0ZUtleXdvcmRzLmNwcDoKKyAgICAgICAgKHNoOjpSZXdyaXRlcjo6Y3JlYXRl
UmVuYW1lZCk6CisKIDIwMjEtMDYtMTUgIEt5bGUgUGlkZGluZ3RvbiAgPGtwaWRkaW5ndG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBUZW5zb3JmbG93LmpzIEJyb2tlbiBpbiBTYWZhcmkgMTUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1RyYW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlS2V5d29yZHMuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L1Jld3JpdGVLZXl3b3Jkcy5jcHAKaW5kZXggODAxZmNmMWYzMGQ4ZmMxMGQ4NzkwNTRlZjdjZWE4
Yjc5OTIxYmRmOS4uZDc2MzAwMWIwNTY4ODZiMWZkM2NhNTdkMTcwZWRjMjhhNzQ4ODY4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsRGlyZWN0L1Jld3JpdGVLZXl3b3Jkcy5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGly
ZWN0L1Jld3JpdGVLZXl3b3Jkcy5jcHAKQEAgLTEzNCw2ICsxMzQsNyBAQCBjbGFzcyBSZXdyaXRl
ciA6IHB1YmxpYyBUSW50ZXJtUmVidWlsZAogICAgICAgICBpZiAoY29uc3QgVFN0cnVjdHVyZSAq
c3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmVu
YW1lZCA9IG5ldyBUVHlwZSgmZ2V0UmVuYW1lZE9yT3JpZ2luYWwoKnN0cnVjdHVyZSksIHR5cGUu
aXNTdHJ1Y3RTcGVjaWZpZXIoKSk7CisgICAgICAgICAgICByZW5hbWVkLT5zZXRRdWFsaWZpZXIo
dHlwZS5nZXRRdWFsaWZpZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY29uc3Qg
VEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayA9IHR5cGUuZ2V0SW50ZXJmYWNlQmxvY2so
KSkKICAgICAgICAgewpAQCAtMTU0LDYgKzE1NSw3IEBAIGNsYXNzIFJld3JpdGVyIDogcHVibGlj
IFRJbnRlcm1SZWJ1aWxkCiAgICAgICAgIHJlbmFtZWQtPnNldEludmFyaWFudCh0eXBlLmlzSW52
YXJpYW50KCkpOwogICAgICAgICByZW5hbWVkLT5zZXRNZW1vcnlRdWFsaWZpZXIodHlwZS5nZXRN
ZW1vcnlRdWFsaWZpZXIoKSk7CiAgICAgICAgIHJlbmFtZWQtPnNldExheW91dFF1YWxpZmllcih0
eXBlLmdldExheW91dFF1YWxpZmllcigpKTsKKyAgICAgICAgCiAKICAgICAgICAgcmV0dXJuIHJl
bmFtZWQ7CiAgICAgfQpAQCAtMTYyLDcgKzE2NCw3IEBAIGNsYXNzIFJld3JpdGVyIDogcHVibGlj
IFRJbnRlcm1SZWJ1aWxkCiAgICAgewogICAgICAgICBhdXRvICpyZW5hbWVkID0gbmV3IFRWYXJp
YWJsZSgmbVN5bWJvbFRhYmxlLCBtYXliZUNyZWF0ZU5ld05hbWUodmFyaWFibGUpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2V0UmVuYW1lZE9yT3JpZ2luYWwodmFy
aWFibGUuZ2V0VHlwZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U3ltYm9sVHlwZTo6QW5nbGVJbnRlcm5hbCwgdmFyaWFibGUuZXh0ZW5zaW9uKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5zeW1ib2xUeXBlKCksIHZh
cmlhYmxlLmV4dGVuc2lvbigpKTsKIAogICAgICAgICByZXR1cm4gcmVuYW1lZDsKICAgICB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNWQ1NDQ0NjNhYThhNzVhMTY4NWNmZmY5MjdjZGE5MDk0MzQ5NmViNi4uZTY2ZDQ3ZmE3
NGJjYTc3NWQ1YTE5Yzc1MThlYmNjMjFhY2I2MWJjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIxLTA2LTE1ICBKb2huIEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgW01ldGFsIEFOR0xFXSBTaGFkZXJzIHdpdGggcmVzZXJ2ZWQgbWV0YWwga2V5d29y
ZHMgZG8gbm90IHRyYW5zbGF0ZSwgbm9yIGRvIHNoYWRlcnMgd2l0aCBzdHJ1Y3QgYW5kIHZhcmlh
YmxlIG5hbWVzIHRoYXQgYXJlIHRoZSBzYW1lIGV4Y2VwdCBwcmVmaXhlZCBieSBhbiB1bmRlcnNj
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3NoYWRlci13aXRoLXJlc2VydmVkLWtleXdvcmQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZl
ZC1rZXl3b3JkLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA2LTE1ICBGdWppaSBIaXJvbm9yaSAgPEhp
cm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gVW5yZXZpZXdlZCB0
ZXN0IGdhcmRlbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
c2hhZGVyLXdpdGgtcmVzZXJ2ZWQta2V5d29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1rZXl3b3JkLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYmMwMjg0NTU5YzhhMmVlZDc4Yjg1NzNmNDlmOWMxMGUxMGY3YTY1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXdp
dGgtcmVzZXJ2ZWQta2V5d29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorQ09OU09M
RSBNRVNTQUdFOgorQ09OU09MRSBNRVNTQUdFOgorQ09OU09MRSBNRVNTQUdFOgorQ09OU09MRSBN
RVNTQUdFOgorQ09OU09MRSBNRVNTQUdFOgorQ09OU09MRSBNRVNTQUdFOgorQ09OU09MRSBNRVNT
QUdFOgorVGVzdHMgdGhhdCBwcm9ncmFtIGNvbXBpbGluZy9saW5raW5nIHdpdGggYSByZXNlcnZl
ZCBrZXl3b3JkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIGdldEVycm9yIHdhcyBl
eHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBubyBlcnJvciBmb3IgdXNpbmcgcmVzZXJ2ZWQga2V5
d29yZCBpbiBzdHJ1Y3QKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJP
UiA6IG5vIGVycm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGZvciBzdHJ1Y3QgbmFtZQor
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8gZXJyb3IgZm9y
IHVzaW5nIHJlc2VydmVkIGtleXdvcmQgZm9yIHN0cnVjdCBuYW1lIHdpdGggZ2xvYmFsIHN0cnVj
dAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8gZXJyb3Ig
Zm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgaW4gdHlwZSB3aXRoIGdsb2JhbCBzdHJ1Y3QKK1BB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IG5vIGVycm9yIGZvciB1
c2luZyByZXNlcnZlZCBrZXl3b3JkIGZvciBzdHJ1Y3QgbmFtZSAgd2l0aCBnbG9iYWwgc3RydWN0
CitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBubyBlcnJvciBm
b3IgdXNpbmcgcmVzZXJ2ZWQga2V5d29yZCBmb3IgdmFyaWFibGUgbmFtZSB3aXRoIGdsb2JhbCBz
dHJ1Y3QKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IG5vIGVy
cm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGZvciB2YXJpYWJsZSBuYW1lIGFuZCBzdHJ1
Y3QgbmFtZSB3aXRoIGdsb2JhbCBzdHJ1Y3QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2hhZGVyLXdpdGgtcmVzZXJ2ZWQta2V5d29yZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXdpdGgtcmVzZXJ2ZWQta2V5d29yZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFlMDI3ZjVjOTM1MTY3MmZjMjgzNGUxN2JmM2ZlY2UwYmJiNDVjZWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0
aC1yZXNlcnZlZC1rZXl3b3JkLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKwk8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3dlYmdsLXRlc3QuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+
CisgICAgPHNjcmlwdD4KKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgCisgICAg
ZnVuY3Rpb24gcnVuU2hhZGVyVGVzdChnbCwgdlNoYWRlclNvdXJjZSwgZlNoYWRlclNvdWNlLCBl
cnJvclNob3VsZEJlVGV4dCkKKyAgICB7CisgICAgICAgIHZhciBmcmFnbWVudFNoYWRlciA9IGds
LmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworICAgICAgICB2YXIgcHJvZ3JhbSA9
IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgdmFyIHZlcnRleFNoYWRlciA9IGdsLmNyZWF0
ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICAgICAgZ2wuc2hhZGVyU291cmNlKHZlcnRl
eFNoYWRlciwgdlNoYWRlclNvdXJjZSk7CisgICAgICAgIGdsLmNvbXBpbGVTaGFkZXIodmVydGV4
U2hhZGVyKTsKKyAgICAgICAgZ2wuc2hhZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCBmU2hhZGVy
U291Y2UpOworICAgICAgICBnbC5jb21waWxlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKKyAgICAg
ICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAgICAgIGdsLmF0
dGFjaFNoYWRlcihwcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAgICAgIGdsLmxpbmtQcm9n
cmFtKHByb2dyYW0pOworICAgICAgICBjb25zb2xlLmxvZyhnbC5nZXRTaGFkZXJJbmZvTG9nKGZy
YWdtZW50U2hhZGVyKSk7CisgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAg
IGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTsKKyAgICAgICAgCisgICAgICAgIHd0
dS5nbEVycm9yU2hvdWxkQmUoZ2wsMCxlcnJvclNob3VsZEJlVGV4dCk7CisgICAgICAgIGdsLmRl
bGV0ZVByb2dyYW0ocHJvZ3JhbSkKKyAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRl
cik7CisgICAgICAgIGdsLmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgfQorICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAJZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
cHJvZ3JhbSBjb21waWxpbmcvbGlua2luZyB3aXRoIGEgcmVzZXJ2ZWQga2V5d29yZC4iKTsKKyAg
ICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ZWJnbC1jYW52YXMn
KTsKKyAgICAgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQoIndlYmdsMiIpOworICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgdlNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBp
biB2ZWMyIHBvcztcbnZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMCwgMSk7
IH0nCisgICAgICAgICAgICB2YXIgZlNoYWRlclNvdWNlID0nI3ZlcnNpb24gMzAwIGVzXG4gcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4gb3V0IHZlYzQgY29sb3I7XG4gc3RydWN0IHMgeyBmbG9h
dCBtZXRhbDsgfTtcbiBmbG9hdCBoZWxwZXIocyBfcykgeyByZXR1cm4gX3MubWV0YWw7IH1cbiB2
b2lkIG1haW4oKSB7IHMgX3M7IGZsb2F0IGEgPSBoZWxwZXIoX3MpOyBjb2xvciA9IHZlYzQoYSww
LjgsMCwxKTsgfVxuJworICAgICAgICAgICAgcnVuU2hhZGVyVGVzdChnbCwgdlNoYWRlclNvdXJj
ZSwgZlNoYWRlclNvdWNlLCAibm8gZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgaW4g
c3RydWN0IikKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgdlNoYWRlclNv
dXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBpbiB2ZWMyIHBvcztcbnZvaWQgbWFpbigpIHsgZ2xf
UG9zaXRpb24gPSB2ZWM0KHBvcywgMCwgMSk7IH0nCisgICAgICAgICAgICB2YXIgZlNoYWRlclNv
dWNlID0nI3ZlcnNpb24gMzAwIGVzXG4gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4gb3V0IHZl
YzQgY29sb3I7XG4gc3RydWN0IG1ldGFsIHsgZmxvYXQgYTsgfTtcbiBmbG9hdCBoZWxwZXIobWV0
YWwgX3MpIHsgcmV0dXJuIF9zLmE7IH1cbiB2b2lkIG1haW4oKSB7IG1ldGFsIF9zOyBmbG9hdCBh
ID0gaGVscGVyKF9zKTsgY29sb3IgPSB2ZWM0KGEsMC44LDAsMSk7IH1cbicKKyAgICAgICAgICAg
IHJ1blNoYWRlclRlc3QoZ2wsIHZTaGFkZXJTb3VyY2UsIGZTaGFkZXJTb3VjZSwgIm5vIGVycm9y
IGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGZvciBzdHJ1Y3QgbmFtZSIpCisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB2U2hhZGVyU291cmNlID0gJyN2
ZXJzaW9uIDMwMCBlc1xuIGluIHZlYzIgcG9zO1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9
IHZlYzQocG9zLCAwLCAxKTsgfScKKyAgICAgICAgICAgIHZhciBmU2hhZGVyU291Y2UgPScjdmVy
c2lvbiAzMDAgZXNcbiBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiBvdXQgdmVjNCBjb2xvcjtc
biBzdHJ1Y3QgbWV0YWwgeyBmbG9hdCBhOyB9IF9zO1xuIGZsb2F0IGhlbHBlcihtZXRhbCBfcykg
eyByZXR1cm4gX3MuYTsgfVxuIHZvaWQgbWFpbigpIHsgbWV0YWwgX3M7IGZsb2F0IGEgPSBoZWxw
ZXIoX3MpOyBjb2xvciA9IHZlYzQoYSwwLjgsMCwxKTsgfVxuJworICAgICAgICAgICAgcnVuU2hh
ZGVyVGVzdChnbCwgdlNoYWRlclNvdXJjZSwgZlNoYWRlclNvdWNlLCAibm8gZXJyb3IgZm9yIHVz
aW5nIHJlc2VydmVkIGtleXdvcmQgZm9yIHN0cnVjdCBuYW1lIHdpdGggZ2xvYmFsIHN0cnVjdCAi
KQorICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB2U2hhZGVyU291cmNlID0g
JyN2ZXJzaW9uIDMwMCBlc1xuIGluIHZlYzIgcG9zO1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlv
biA9IHZlYzQocG9zLCAwLCAxKTsgfScKKyAgICAgICAgICAgIHZhciBmU2hhZGVyU291Y2UgPScj
dmVyc2lvbiAzMDAgZXNcbiBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiBvdXQgdmVjNCBjb2xv
cjtcbiBzdHJ1Y3QgcyB7IGZsb2F0IG1ldGFsOyB9IF9zO1xuIGZsb2F0IGhlbHBlcihzIF9zKSB7
IHJldHVybiBfcy5tZXRhbDsgfVxuIHZvaWQgbWFpbigpIHsgX3MubWV0YWwgPSAxLjBmOyBmbG9h
dCBhID0gaGVscGVyKF9zKTsgY29sb3IgPSB2ZWM0KGEsMC44LDAsMSk7IH1cbicKKyAgICAgICAg
ICAgIHJ1blNoYWRlclRlc3QoZ2wsIHZTaGFkZXJTb3VyY2UsIGZTaGFkZXJTb3VjZSwgIm5vIGVy
cm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGluIHR5cGUgd2l0aCBnbG9iYWwgc3RydWN0
ICIpCisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHZTaGFkZXJTb3VyY2Ug
PSAnI3ZlcnNpb24gMzAwIGVzXG4gaW4gdmVjMiBwb3M7XG52b2lkIG1haW4oKSB7IGdsX1Bvc2l0
aW9uID0gdmVjNChwb3MsIDAsIDEpOyB9JworICAgICAgICAgICAgdmFyIGZTaGFkZXJTb3VjZSA9
JyN2ZXJzaW9uIDMwMCBlc1xuIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIG91dCB2ZWM0IGNv
bG9yO1xuIHN0cnVjdCBtZXRhbCB7IGZsb2F0IGE7IH0gX3M7XG4gZmxvYXQgaGVscGVyKG1ldGFs
IF9zKSB7IHJldHVybiBfcy5hOyB9XG4gdm9pZCBtYWluKCkgeyBfcy5hID0gMS4wZjsgZmxvYXQg
YSA9IGhlbHBlcihfcyk7IGNvbG9yID0gdmVjNChhLDAuOCwwLDEpOyB9XG4nCisgICAgICAgICAg
ICBydW5TaGFkZXJUZXN0KGdsLCB2U2hhZGVyU291cmNlLCBmU2hhZGVyU291Y2UsICJubyBlcnJv
ciBmb3IgdXNpbmcgcmVzZXJ2ZWQga2V5d29yZCBmb3Igc3RydWN0IG5hbWUgIHdpdGggZ2xvYmFs
IHN0cnVjdCAiKQorICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB2U2hhZGVy
U291cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xuIGluIHZlYzIgcG9zO1xudm9pZCBtYWluKCkgeyBn
bF9Qb3NpdGlvbiA9IHZlYzQocG9zLCAwLCAxKTsgfScKKyAgICAgICAgICAgIHZhciBmU2hhZGVy
U291Y2UgPScjdmVyc2lvbiAzMDAgZXNcbiBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiBvdXQg
dmVjNCBjb2xvcjtcbiBzdHJ1Y3QgcyB7IGZsb2F0IGE7IH0gbWV0YWw7XG4gZmxvYXQgaGVscGVy
KHMgX3MpIHsgcmV0dXJuIF9zLmE7IH1cbiB2b2lkIG1haW4oKSB7IG1ldGFsLmEgPSAxLjBmOyBm
bG9hdCBhID0gaGVscGVyKG1ldGFsKTsgY29sb3IgPSB2ZWM0KGEsMC44LDAsMSk7IH1cbicKKyAg
ICAgICAgICAgIHJ1blNoYWRlclRlc3QoZ2wsIHZTaGFkZXJTb3VyY2UsIGZTaGFkZXJTb3VjZSwg
Im5vIGVycm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGZvciB2YXJpYWJsZSBuYW1lIHdp
dGggZ2xvYmFsIHN0cnVjdCAiKQorICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciB2U2hhZGVyU291cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xuIGluIHZlYzIgcG9zO1xudm9pZCBt
YWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zLCAwLCAxKTsgfScKKyAgICAgICAgICAgIHZh
ciBmU2hhZGVyU291Y2UgPScjdmVyc2lvbiAzMDAgZXNcbiBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiBvdXQgdmVjNCBjb2xvcjtcbiBzdHJ1Y3QgdGhyZWFkZ3JvdXBfaW1hZ2VibG9jayB7IGZs
b2F0IGE7IH0gbWV0YWw7XG4gZmxvYXQgaGVscGVyKHRocmVhZGdyb3VwX2ltYWdlYmxvY2sgX3Mp
IHsgcmV0dXJuIF9zLmE7IH1cbiB2b2lkIG1haW4oKSB7IG1ldGFsLmEgPSAxLjBmOyBmbG9hdCBh
ID0gaGVscGVyKG1ldGFsKTsgY29sb3IgPSB2ZWM0KGEsMC44LDAsMSk7IH1cbicKKyAgICAgICAg
ICAgIHJ1blNoYWRlclRlc3QoZ2wsIHZTaGFkZXJTb3VyY2UsIGZTaGFkZXJTb3VjZSwgIm5vIGVy
cm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGZvciB2YXJpYWJsZSBuYW1lIGFuZCBzdHJ1
Y3QgbmFtZSB3aXRoIGdsb2JhbCBzdHJ1Y3QgIikKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgCisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICAKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25wYWdlc2hvdyA9IHJ1blRlc3Q7
CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJ3ZWJnbC1j
YW52YXMiIHdpZHRoPSIxMDBweCIgaGVpZ2h0PSIxMDBweCI+PC9jYW52YXM+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="453570"
          type_id="3"
          status="+"
          setter="kpiddington"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431591</attachid>
            <date>2021-06-16 13:41:43 -0700</date>
            <delta_ts>2021-06-16 13:54:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226660-20210616134141.patch</filename>
            <type>text/plain</type>
            <size>12416</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNjk2ZmQ5MmU4OTIxNjllYjAxZmVmZjc4ZWNmMTcyNzIzMDU0MWNiMC4uNDAxY2E1MTk3NjEw
YWNiNzgwZjYxYWE1YzNkMWRlZWM4YWM4ZTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA2LTE1ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01ldGFsIEFOR0xFXSBTaGFkZXJzIHdpdGggcmVz
ZXJ2ZWQgbWV0YWwga2V5d29yZHMgZG8gbm90IHRyYW5zbGF0ZSwgbm9yIGRvIHNoYWRlcnMgd2l0
aCBzdHJ1Y3QgYW5kIHZhcmlhYmxlIG5hbWVzIHRoYXQgYXJlIHRoZSBzYW1lIGV4Y2VwdCBwcmVm
aXhlZCBieSBhbiB1bmRlcnNjb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2NjAKKworICAgICAgICBGaXgga2V5d29yZCB0cmFuc2xhdGlvbiBw
cm9ibGVtIGJ5IGNvcnJlY3Rpbmcgc3ltYm9sIHNwYWNlLiBUaGlzIGF2b2lkcyByZW5hbWluZyBz
dHJ1Y3RzIHVubmVjZXNzYXJpbHkgCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGly
ZWN0L1Jld3JpdGVLZXl3b3Jkcy5jcHA6CisgICAgICAgIChzaDo6UmV3cml0ZXI6OmNyZWF0ZVJl
bmFtZWQpOgorCiAyMDIxLTA2LTE1ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGluZ3RvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgVGVuc29yZmxvdy5qcyBCcm9rZW4gaW4gU2FmYXJpIDE1CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWxEaXJlY3QvUmV3cml0ZUtleXdvcmRzLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9S
ZXdyaXRlS2V5d29yZHMuY3BwCmluZGV4IDgwMWZjZjFmMzBkOGZjMTBkODc5MDU0ZWY3Y2VhOGI3
OTkyMWJkZjkuLjUzNjc2YmU4MGU0MTIwYjk5ZjVhN2ZkNjk3OTc3OWEyNjgyMjE1MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlS2V5d29yZHMuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVj
dC9SZXdyaXRlS2V5d29yZHMuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFJld3JpdGVyIDog
cHVibGljIFRJbnRlcm1SZWJ1aWxkCiAgICAgewogICAgICAgICBhdXRvICpyZW5hbWVkID0KICAg
ICAgICAgICAgIG5ldyBURmllbGQoY29uc3RfY2FzdDxUVHlwZSAqPigmZ2V0UmVuYW1lZE9yT3Jp
Z2luYWwoKmZpZWxkLnR5cGUoKSkpLAotICAgICAgICAgICAgICAgICAgICAgICBtYXliZUNyZWF0
ZU5ld05hbWUoZmllbGQpLCBmaWVsZC5saW5lKCksIFN5bWJvbFR5cGU6OkFuZ2xlSW50ZXJuYWwp
OworICAgICAgICAgICAgICAgICAgICAgICBtYXliZUNyZWF0ZU5ld05hbWUoZmllbGQpLCBmaWVs
ZC5saW5lKCksIGZpZWxkLnN5bWJvbFR5cGUoKSk7CiAKICAgICAgICAgcmV0dXJuIHJlbmFtZWQ7
CiAgICAgfQpAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBSZXdyaXRlciA6IHB1YmxpYyBUSW50ZXJt
UmVidWlsZAogICAgIGNvbnN0IFRGdW5jdGlvbiAqY3JlYXRlUmVuYW1lZChjb25zdCBURnVuY3Rp
b24gJmZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgYXV0byAqcmVuYW1lZCA9Ci0gICAgICAgICAg
ICBuZXcgVEZ1bmN0aW9uKCZtU3ltYm9sVGFibGUsIG1heWJlQ3JlYXRlTmV3TmFtZShmdW5jdGlv
biksIFN5bWJvbFR5cGU6OkFuZ2xlSW50ZXJuYWwsCisgICAgICAgICAgICBuZXcgVEZ1bmN0aW9u
KCZtU3ltYm9sVGFibGUsIG1heWJlQ3JlYXRlTmV3TmFtZShmdW5jdGlvbiksIGZ1bmN0aW9uLnN5
bWJvbFR5cGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdldFJlbmFtZWRPck9yaWdp
bmFsKGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uLmlzS25vd25Ub05vdEhhdmVTaWRlRWZmZWN0cygpKTsKIApAQCAtMTExLDcgKzEx
MSw3IEBAIGNsYXNzIFJld3JpdGVyIDogcHVibGljIFRJbnRlcm1SZWJ1aWxkCiAgICAgICAgIGF1
dG8gKnJlbmFtZWQgPQogICAgICAgICAgICAgbmV3IFRJbnRlcmZhY2VCbG9jaygmbVN5bWJvbFRh
YmxlLCBtYXliZUNyZWF0ZU5ld05hbWUoaW50ZXJmYWNlQmxvY2spLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmZ2V0UmVuYW1lZE9yT3JpZ2luYWwoaW50ZXJmYWNlQmxvY2suZmll
bGRzKCkpLCBsYXlvdXRRdWFsaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN5bWJvbFR5cGU6OkFuZ2xlSW50ZXJuYWwsIGludGVyZmFjZUJsb2NrLmV4dGVuc2lvbigpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlQmxvY2suc3ltYm9sVHlw
ZSgpLCBpbnRlcmZhY2VCbG9jay5leHRlbnNpb24oKSk7CiAKICAgICAgICAgcmV0dXJuIHJlbmFt
ZWQ7CiAgICAgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFJld3JpdGVyIDogcHVibGljIFRJ
bnRlcm1SZWJ1aWxkCiAgICAgewogICAgICAgICBhdXRvICpyZW5hbWVkID0KICAgICAgICAgICAg
IG5ldyBUU3RydWN0dXJlKCZtU3ltYm9sVGFibGUsIG1heWJlQ3JlYXRlTmV3TmFtZShzdHJ1Y3R1
cmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdldFJlbmFtZWRPck9yaWdpbmFsKHN0
cnVjdHVyZS5maWVsZHMoKSksIFN5bWJvbFR5cGU6OkFuZ2xlSW50ZXJuYWwpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmdldFJlbmFtZWRPck9yaWdpbmFsKHN0cnVjdHVyZS5maWVsZHMo
KSksIHN0cnVjdHVyZS5zeW1ib2xUeXBlKCkpOwogCiAgICAgICAgIHJlbmFtZWQtPnNldEF0R2xv
YmFsU2NvcGUoc3RydWN0dXJlLmF0R2xvYmFsU2NvcGUoKSk7CiAKQEAgLTEzNCw2ICsxMzQsNyBA
QCBjbGFzcyBSZXdyaXRlciA6IHB1YmxpYyBUSW50ZXJtUmVidWlsZAogICAgICAgICBpZiAoY29u
c3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKSkKICAgICAgICAgewog
ICAgICAgICAgICAgcmVuYW1lZCA9IG5ldyBUVHlwZSgmZ2V0UmVuYW1lZE9yT3JpZ2luYWwoKnN0
cnVjdHVyZSksIHR5cGUuaXNTdHJ1Y3RTcGVjaWZpZXIoKSk7CisgICAgICAgICAgICByZW5hbWVk
LT5zZXRRdWFsaWZpZXIodHlwZS5nZXRRdWFsaWZpZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZSBpZiAoY29uc3QgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayA9IHR5cGUuZ2V0
SW50ZXJmYWNlQmxvY2soKSkKICAgICAgICAgewpAQCAtMTYyLDcgKzE2Myw3IEBAIGNsYXNzIFJl
d3JpdGVyIDogcHVibGljIFRJbnRlcm1SZWJ1aWxkCiAgICAgewogICAgICAgICBhdXRvICpyZW5h
bWVkID0gbmV3IFRWYXJpYWJsZSgmbVN5bWJvbFRhYmxlLCBtYXliZUNyZWF0ZU5ld05hbWUodmFy
aWFibGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2V0UmVuYW1l
ZE9yT3JpZ2luYWwodmFyaWFibGUuZ2V0VHlwZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU3ltYm9sVHlwZTo6QW5nbGVJbnRlcm5hbCwgdmFyaWFibGUuZXh0ZW5z
aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5z
eW1ib2xUeXBlKCksIHZhcmlhYmxlLmV4dGVuc2lvbigpKTsKIAogICAgICAgICByZXR1cm4gcmVu
YW1lZDsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWQ1NDQ0NjNhYThhNzVhMTY4NWNmZmY5MjdjZGE5MDk0MzQ5
NmViNi4uOTE3MjA3MWEwYWY3YTMzYzNiMGI3YjI4MzMzMWY0ODcyNWM3MTliYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDIxLTA2LTE1ICBKb2huIEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgW01ldGFsIEFOR0xFXSBTaGFkZXJzIHdpdGggcmVzZXJ2
ZWQgbWV0YWwga2V5d29yZHMgZG8gbm90IHRyYW5zbGF0ZSwgbm9yIGRvIHNoYWRlcnMgd2l0aCBz
dHJ1Y3QgYW5kIHZhcmlhYmxlIG5hbWVzIHRoYXQgYXJlIHRoZSBzYW1lIGV4Y2VwdCBwcmVmaXhl
ZCBieSBhbiB1bmRlcnNjb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjY2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1rZXl3b3Jk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVy
LXdpdGgtcmVzZXJ2ZWQta2V5d29yZC5odG1sOiBBZGRlZC4KKwogMjAyMS0wNi0xNSAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9d
IFVucmV2aWV3ZWQgdGVzdCBnYXJkZW5pbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NoYWRlci13aXRoLXJlc2VydmVkLWtleXdvcmQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXdpdGgtcmVzZXJ2ZWQta2V5d29y
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2MzlmZjllMzYwNGQyYzFhOGJmMzk0ZWQ4Yzgy
ZDNhODNmYjY2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3NoYWRlci13aXRoLXJlc2VydmVkLWtleXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTcgQEAKK1Rlc3RzIHRoYXQgcHJvZ3JhbSBjb21waWxpbmcvbGlua2luZyB3aXRoIGEgcmVzZXJ2
ZWQga2V5d29yZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IG5vIGVycm9yIGZvciB1c2luZyByZXNl
cnZlZCBrZXl3b3JkIGluIHN0cnVjdAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IE5PX0VSUk9SIDogbm8gZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgaW4gdmFyaWFi
bGUgbmFtZQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8g
ZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgZm9yIHN0cnVjdCBuYW1lCitQQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBubyBlcnJvciBmb3IgdXNpbmcg
cmVzZXJ2ZWQga2V5d29yZCBmb3Igc3RydWN0IG5hbWUgd2l0aCBnbG9iYWwgc3RydWN0CitQQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBubyBlcnJvciBmb3IgdXNp
bmcgcmVzZXJ2ZWQga2V5d29yZCBpbiB0eXBlIHdpdGggZ2xvYmFsIHN0cnVjdAorUEFTUyBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8gZXJyb3IgZm9yIHVzaW5nIHJl
c2VydmVkIGtleXdvcmQgZm9yIHN0cnVjdCBuYW1lICB3aXRoIGdsb2JhbCBzdHJ1Y3QKK1BBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IG5vIGVycm9yIGZvciB1c2lu
ZyByZXNlcnZlZCBrZXl3b3JkIGZvciB2YXJpYWJsZSBuYW1lIHdpdGggZ2xvYmFsIHN0cnVjdAor
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8gZXJyb3IgZm9y
IHVzaW5nIHJlc2VydmVkIGtleXdvcmQgZm9yIHZhcmlhYmxlIG5hbWUgYW5kIHN0cnVjdCBuYW1l
IHdpdGggZ2xvYmFsIHN0cnVjdAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3NoYWRlci13aXRoLXJlc2VydmVkLWtleXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3NoYWRlci13aXRoLXJlc2VydmVkLWtleXdvcmQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
OWYzZmYzMTk3ZWJjNzM0ZjM0ZTZiY2M2NWVjNjYwMGJkZmJlODc2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXdpdGgtcmVzZXJ2ZWQta2V5
d29yZC5odG1sCkBAIC0wLDAgKzEsODkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiIHR5cGU9
InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJnbC10ZXN0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorICAgIAor
PC9oZWFkPgorPGJvZHk+CisgICAgPGNhbnZhcyBpZD0id2ViZ2wtY2FudmFzIiB3aWR0aD0iMTAw
cHgiIGhlaWdodD0iMTAwcHgiPjwvY2FudmFzPgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworICAgIAorICAgIGZ1bmN0aW9uIHJ1blNoYWRlclRlc3QoZ2wsIHZT
aGFkZXJTb3VyY2UsIGZzaGFkZXJTb3VyY2UsIGVycm9yU2hvdWxkQmVUZXh0KQorICAgIHsKKyAg
ICAgICAgdmFyIGZyYWdtZW50U2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NI
QURFUik7CisgICAgICAgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAg
ICB2YXIgdmVydGV4U2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOwor
ICAgICAgICBnbC5zaGFkZXJTb3VyY2UodmVydGV4U2hhZGVyLCB2U2hhZGVyU291cmNlKTsKKyAg
ICAgICAgZ2wuY29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgICAgICBnbC5zaGFkZXJT
b3VyY2UoZnJhZ21lbnRTaGFkZXIsIGZzaGFkZXJTb3VyY2UpOworICAgICAgICBnbC5jb21waWxl
U2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKKyAgICAgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0s
IHZlcnRleFNoYWRlcik7CisgICAgICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBmcmFnbWVu
dFNoYWRlcik7CisgICAgICAgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBnbC51
c2VQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywg
MCwgMyk7CisgICAgICAgIAorICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLDAsZXJyb3JT
aG91bGRCZVRleHQpOworICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pCisgICAgICAg
IGdsLmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgICAgICBnbC5kZWxldGVTaGFkZXIo
ZnJhZ21lbnRTaGFkZXIpOworICAgIH0KKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7Cisg
ICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHByb2dyYW0gY29tcGlsaW5nL2xpbmtpbmcg
d2l0aCBhIHJlc2VydmVkIGtleXdvcmQuIik7CisgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnd2ViZ2wtY2FudmFzJyk7CisgICAgICAgIHZhciBnbCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJ3ZWJnbDIiKTsKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHZTaGFk
ZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gaW4gdmVjMiBwb3M7XG52b2lkIG1haW4oKSB7
IGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAsIDEpOyB9JworICAgICAgICAgICAgdmFyIGZzaGFk
ZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4g
b3V0IHZlYzQgY29sb3I7XG4gc3RydWN0IHMgeyBmbG9hdCBtZXRhbDsgfTtcbiBmbG9hdCBoZWxw
ZXIocyBfcykgeyByZXR1cm4gX3MubWV0YWw7IH1cbiB2b2lkIG1haW4oKSB7IHMgX3M7IGZsb2F0
IGEgPSBoZWxwZXIoX3MpOyBjb2xvciA9IHZlYzQoYSwwLjgsMCwxKTsgfVxuJworICAgICAgICAg
ICAgcnVuU2hhZGVyVGVzdChnbCwgdlNoYWRlclNvdXJjZSwgZnNoYWRlclNvdXJjZSwgIm5vIGVy
cm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGluIHN0cnVjdCIpCisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB2U2hhZGVyU291cmNlID0gJyN2ZXJz
aW9uIDMwMCBlc1xuIGluIHZlYzIgcG9zO1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZl
YzQocG9zLCAwLCAxKTsgfScKKyAgICAgICAgICAgIHZhciBmc2hhZGVyU291cmNlID0gJyN2ZXJz
aW9uIDMwMCBlc1xuIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIG91dCB2ZWM0IGNvbG9yO1xu
IHN0cnVjdCBzIHsgZmxvYXQgYTsgfTtcbiBmbG9hdCBoZWxwZXIocyBfcykgeyByZXR1cm4gX3Mu
YTsgfVxuIHZvaWQgbWFpbigpIHsgcyBtZXRhbDsgZmxvYXQgYSA9IGhlbHBlcihtZXRhbCk7IGNv
bG9yID0gdmVjNChhLDAuOCwwLDEpOyB9XG4nCisgICAgICAgICAgICBydW5TaGFkZXJUZXN0KGds
LCB2U2hhZGVyU291cmNlLCBmc2hhZGVyU291cmNlLCAibm8gZXJyb3IgZm9yIHVzaW5nIHJlc2Vy
dmVkIGtleXdvcmQgaW4gdmFyaWFibGUgbmFtZSIpCisgICAgICAgIH0KKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHZTaGFkZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gaW4gdmVjMiBw
b3M7XG52b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAsIDEpOyB9JworICAg
ICAgICAgICAgdmFyIGZzaGFkZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4gb3V0IHZlYzQgY29sb3I7XG4gc3RydWN0IG1ldGFsIHsgZmxvYXQg
YTsgfTtcbiBmbG9hdCBoZWxwZXIobWV0YWwgX3MpIHsgcmV0dXJuIF9zLmE7IH1cbiB2b2lkIG1h
aW4oKSB7IG1ldGFsIF9zOyBmbG9hdCBhID0gaGVscGVyKF9zKTsgY29sb3IgPSB2ZWM0KGEsMC44
LDAsMSk7IH1cbicKKyAgICAgICAgICAgIHJ1blNoYWRlclRlc3QoZ2wsIHZTaGFkZXJTb3VyY2Us
IGZzaGFkZXJTb3VyY2UsICJubyBlcnJvciBmb3IgdXNpbmcgcmVzZXJ2ZWQga2V5d29yZCBmb3Ig
c3RydWN0IG5hbWUiKQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgdlNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBpbiB2ZWMyIHBvcztcbnZv
aWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMCwgMSk7IH0nCisgICAgICAgICAg
ICB2YXIgZnNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiBvdXQgdmVjNCBjb2xvcjtcbiBzdHJ1Y3QgbWV0YWwgeyBmbG9hdCBhOyB9IF9z
O1xuIGZsb2F0IGhlbHBlcihtZXRhbCBfcykgeyByZXR1cm4gX3MuYTsgfVxuIHZvaWQgbWFpbigp
IHsgbWV0YWwgX3M7IGZsb2F0IGEgPSBoZWxwZXIoX3MpOyBjb2xvciA9IHZlYzQoYSwwLjgsMCwx
KTsgfVxuJworICAgICAgICAgICAgcnVuU2hhZGVyVGVzdChnbCwgdlNoYWRlclNvdXJjZSwgZnNo
YWRlclNvdXJjZSwgIm5vIGVycm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGZvciBzdHJ1
Y3QgbmFtZSB3aXRoIGdsb2JhbCBzdHJ1Y3QgIikKKyAgICAgICAgfQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgdlNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBpbiB2ZWMyIHBv
cztcbnZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMCwgMSk7IH0nCisgICAg
ICAgICAgICB2YXIgZnNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiBvdXQgdmVjNCBjb2xvcjtcbiBzdHJ1Y3QgcyB7IGZsb2F0IG1ldGFs
OyB9IF9zO1xuIGZsb2F0IGhlbHBlcihzIF9zKSB7IHJldHVybiBfcy5tZXRhbDsgfVxuIHZvaWQg
bWFpbigpIHsgX3MubWV0YWwgPSAxLjBmOyBmbG9hdCBhID0gaGVscGVyKF9zKTsgY29sb3IgPSB2
ZWM0KGEsMC44LDAsMSk7IH1cbicKKyAgICAgICAgICAgIHJ1blNoYWRlclRlc3QoZ2wsIHZTaGFk
ZXJTb3VyY2UsIGZzaGFkZXJTb3VyY2UsICJubyBlcnJvciBmb3IgdXNpbmcgcmVzZXJ2ZWQga2V5
d29yZCBpbiB0eXBlIHdpdGggZ2xvYmFsIHN0cnVjdCAiKQorICAgICAgICB9CisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciB2U2hhZGVyU291cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xuIGluIHZl
YzIgcG9zO1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zLCAwLCAxKTsgfScK
KyAgICAgICAgICAgIHZhciBmc2hhZGVyU291cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xuIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIG91dCB2ZWM0IGNvbG9yO1xuIHN0cnVjdCBtZXRhbCB7IGZs
b2F0IGE7IH0gX3M7XG4gZmxvYXQgaGVscGVyKG1ldGFsIF9zKSB7IHJldHVybiBfcy5hOyB9XG4g
dm9pZCBtYWluKCkgeyBfcy5hID0gMS4wZjsgZmxvYXQgYSA9IGhlbHBlcihfcyk7IGNvbG9yID0g
dmVjNChhLDAuOCwwLDEpOyB9XG4nCisgICAgICAgICAgICBydW5TaGFkZXJUZXN0KGdsLCB2U2hh
ZGVyU291cmNlLCBmc2hhZGVyU291cmNlLCAibm8gZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtl
eXdvcmQgZm9yIHN0cnVjdCBuYW1lICB3aXRoIGdsb2JhbCBzdHJ1Y3QgIikKKyAgICAgICAgfQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgdlNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAg
ZXNcbiBpbiB2ZWMyIHBvcztcbnZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcywg
MCwgMSk7IH0nCisgICAgICAgICAgICB2YXIgZnNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAg
ZXNcbiBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiBvdXQgdmVjNCBjb2xvcjtcbiBzdHJ1Y3Qg
cyB7IGZsb2F0IGE7IH0gbWV0YWw7XG4gZmxvYXQgaGVscGVyKHMgX3MpIHsgcmV0dXJuIF9zLmE7
IH1cbiB2b2lkIG1haW4oKSB7IG1ldGFsLmEgPSAxLjBmOyBmbG9hdCBhID0gaGVscGVyKG1ldGFs
KTsgY29sb3IgPSB2ZWM0KGEsMC44LDAsMSk7IH1cbicKKyAgICAgICAgICAgIHJ1blNoYWRlclRl
c3QoZ2wsIHZTaGFkZXJTb3VyY2UsIGZzaGFkZXJTb3VyY2UsICJubyBlcnJvciBmb3IgdXNpbmcg
cmVzZXJ2ZWQga2V5d29yZCBmb3IgdmFyaWFibGUgbmFtZSB3aXRoIGdsb2JhbCBzdHJ1Y3QgIikK
KyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgdlNoYWRlclNvdXJjZSA9ICcj
dmVyc2lvbiAzMDAgZXNcbiBpbiB2ZWMyIHBvcztcbnZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24g
PSB2ZWM0KHBvcywgMCwgMSk7IH0nCisgICAgICAgICAgICB2YXIgZnNoYWRlclNvdXJjZSA9ICcj
dmVyc2lvbiAzMDAgZXNcbiBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiBvdXQgdmVjNCBjb2xv
cjtcbiBzdHJ1Y3QgdGhyZWFkZ3JvdXBfaW1hZ2VibG9jayB7IGZsb2F0IGE7IH0gbWV0YWw7XG4g
ZmxvYXQgaGVscGVyKHRocmVhZGdyb3VwX2ltYWdlYmxvY2sgX3MpIHsgcmV0dXJuIF9zLmE7IH1c
biB2b2lkIG1haW4oKSB7IG1ldGFsLmEgPSAxLjBmOyBmbG9hdCBhID0gaGVscGVyKG1ldGFsKTsg
Y29sb3IgPSB2ZWM0KGEsMC44LDAsMSk7IH1cbicKKyAgICAgICAgICAgIHJ1blNoYWRlclRlc3Qo
Z2wsIHZTaGFkZXJTb3VyY2UsIGZzaGFkZXJTb3VyY2UsICJubyBlcnJvciBmb3IgdXNpbmcgcmVz
ZXJ2ZWQga2V5d29yZCBmb3IgdmFyaWFibGUgbmFtZSBhbmQgc3RydWN0IG5hbWUgd2l0aCBnbG9i
YWwgc3RydWN0ICIpCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIAorCisgICAgfQorICAg
IHJ1blRlc3QoKTsKKworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431597</attachid>
            <date>2021-06-16 13:54:58 -0700</date>
            <delta_ts>2021-06-17 15:35:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226660-20210616135457.patch</filename>
            <type>text/plain</type>
            <size>13668</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNjk2ZmQ5MmU4OTIxNjllYjAxZmVmZjc4ZWNmMTcyNzIzMDU0MWNiMC4uNDAxY2E1MTk3NjEw
YWNiNzgwZjYxYWE1YzNkMWRlZWM4YWM4ZTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA2LTE1ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01ldGFsIEFOR0xFXSBTaGFkZXJzIHdpdGggcmVz
ZXJ2ZWQgbWV0YWwga2V5d29yZHMgZG8gbm90IHRyYW5zbGF0ZSwgbm9yIGRvIHNoYWRlcnMgd2l0
aCBzdHJ1Y3QgYW5kIHZhcmlhYmxlIG5hbWVzIHRoYXQgYXJlIHRoZSBzYW1lIGV4Y2VwdCBwcmVm
aXhlZCBieSBhbiB1bmRlcnNjb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY2NjAKKworICAgICAgICBGaXgga2V5d29yZCB0cmFuc2xhdGlvbiBw
cm9ibGVtIGJ5IGNvcnJlY3Rpbmcgc3ltYm9sIHNwYWNlLiBUaGlzIGF2b2lkcyByZW5hbWluZyBz
dHJ1Y3RzIHVubmVjZXNzYXJpbHkgCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGly
ZWN0L1Jld3JpdGVLZXl3b3Jkcy5jcHA6CisgICAgICAgIChzaDo6UmV3cml0ZXI6OmNyZWF0ZVJl
bmFtZWQpOgorCiAyMDIxLTA2LTE1ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGluZ3RvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgVGVuc29yZmxvdy5qcyBCcm9rZW4gaW4gU2FmYXJpIDE1CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWxEaXJlY3QvUmV3cml0ZUtleXdvcmRzLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9S
ZXdyaXRlS2V5d29yZHMuY3BwCmluZGV4IDgwMWZjZjFmMzBkOGZjMTBkODc5MDU0ZWY3Y2VhOGI3
OTkyMWJkZjkuLjUzNjc2YmU4MGU0MTIwYjk5ZjVhN2ZkNjk3OTc3OWEyNjgyMjE1MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JNZXRhbERpcmVjdC9SZXdyaXRlS2V5d29yZHMuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVj
dC9SZXdyaXRlS2V5d29yZHMuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFJld3JpdGVyIDog
cHVibGljIFRJbnRlcm1SZWJ1aWxkCiAgICAgewogICAgICAgICBhdXRvICpyZW5hbWVkID0KICAg
ICAgICAgICAgIG5ldyBURmllbGQoY29uc3RfY2FzdDxUVHlwZSAqPigmZ2V0UmVuYW1lZE9yT3Jp
Z2luYWwoKmZpZWxkLnR5cGUoKSkpLAotICAgICAgICAgICAgICAgICAgICAgICBtYXliZUNyZWF0
ZU5ld05hbWUoZmllbGQpLCBmaWVsZC5saW5lKCksIFN5bWJvbFR5cGU6OkFuZ2xlSW50ZXJuYWwp
OworICAgICAgICAgICAgICAgICAgICAgICBtYXliZUNyZWF0ZU5ld05hbWUoZmllbGQpLCBmaWVs
ZC5saW5lKCksIGZpZWxkLnN5bWJvbFR5cGUoKSk7CiAKICAgICAgICAgcmV0dXJuIHJlbmFtZWQ7
CiAgICAgfQpAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBSZXdyaXRlciA6IHB1YmxpYyBUSW50ZXJt
UmVidWlsZAogICAgIGNvbnN0IFRGdW5jdGlvbiAqY3JlYXRlUmVuYW1lZChjb25zdCBURnVuY3Rp
b24gJmZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgYXV0byAqcmVuYW1lZCA9Ci0gICAgICAgICAg
ICBuZXcgVEZ1bmN0aW9uKCZtU3ltYm9sVGFibGUsIG1heWJlQ3JlYXRlTmV3TmFtZShmdW5jdGlv
biksIFN5bWJvbFR5cGU6OkFuZ2xlSW50ZXJuYWwsCisgICAgICAgICAgICBuZXcgVEZ1bmN0aW9u
KCZtU3ltYm9sVGFibGUsIG1heWJlQ3JlYXRlTmV3TmFtZShmdW5jdGlvbiksIGZ1bmN0aW9uLnN5
bWJvbFR5cGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdldFJlbmFtZWRPck9yaWdp
bmFsKGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uLmlzS25vd25Ub05vdEhhdmVTaWRlRWZmZWN0cygpKTsKIApAQCAtMTExLDcgKzEx
MSw3IEBAIGNsYXNzIFJld3JpdGVyIDogcHVibGljIFRJbnRlcm1SZWJ1aWxkCiAgICAgICAgIGF1
dG8gKnJlbmFtZWQgPQogICAgICAgICAgICAgbmV3IFRJbnRlcmZhY2VCbG9jaygmbVN5bWJvbFRh
YmxlLCBtYXliZUNyZWF0ZU5ld05hbWUoaW50ZXJmYWNlQmxvY2spLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmZ2V0UmVuYW1lZE9yT3JpZ2luYWwoaW50ZXJmYWNlQmxvY2suZmll
bGRzKCkpLCBsYXlvdXRRdWFsaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN5bWJvbFR5cGU6OkFuZ2xlSW50ZXJuYWwsIGludGVyZmFjZUJsb2NrLmV4dGVuc2lvbigpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlQmxvY2suc3ltYm9sVHlw
ZSgpLCBpbnRlcmZhY2VCbG9jay5leHRlbnNpb24oKSk7CiAKICAgICAgICAgcmV0dXJuIHJlbmFt
ZWQ7CiAgICAgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFJld3JpdGVyIDogcHVibGljIFRJ
bnRlcm1SZWJ1aWxkCiAgICAgewogICAgICAgICBhdXRvICpyZW5hbWVkID0KICAgICAgICAgICAg
IG5ldyBUU3RydWN0dXJlKCZtU3ltYm9sVGFibGUsIG1heWJlQ3JlYXRlTmV3TmFtZShzdHJ1Y3R1
cmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdldFJlbmFtZWRPck9yaWdpbmFsKHN0
cnVjdHVyZS5maWVsZHMoKSksIFN5bWJvbFR5cGU6OkFuZ2xlSW50ZXJuYWwpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmdldFJlbmFtZWRPck9yaWdpbmFsKHN0cnVjdHVyZS5maWVsZHMo
KSksIHN0cnVjdHVyZS5zeW1ib2xUeXBlKCkpOwogCiAgICAgICAgIHJlbmFtZWQtPnNldEF0R2xv
YmFsU2NvcGUoc3RydWN0dXJlLmF0R2xvYmFsU2NvcGUoKSk7CiAKQEAgLTEzNCw2ICsxMzQsNyBA
QCBjbGFzcyBSZXdyaXRlciA6IHB1YmxpYyBUSW50ZXJtUmVidWlsZAogICAgICAgICBpZiAoY29u
c3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKSkKICAgICAgICAgewog
ICAgICAgICAgICAgcmVuYW1lZCA9IG5ldyBUVHlwZSgmZ2V0UmVuYW1lZE9yT3JpZ2luYWwoKnN0
cnVjdHVyZSksIHR5cGUuaXNTdHJ1Y3RTcGVjaWZpZXIoKSk7CisgICAgICAgICAgICByZW5hbWVk
LT5zZXRRdWFsaWZpZXIodHlwZS5nZXRRdWFsaWZpZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZSBpZiAoY29uc3QgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayA9IHR5cGUuZ2V0
SW50ZXJmYWNlQmxvY2soKSkKICAgICAgICAgewpAQCAtMTYyLDcgKzE2Myw3IEBAIGNsYXNzIFJl
d3JpdGVyIDogcHVibGljIFRJbnRlcm1SZWJ1aWxkCiAgICAgewogICAgICAgICBhdXRvICpyZW5h
bWVkID0gbmV3IFRWYXJpYWJsZSgmbVN5bWJvbFRhYmxlLCBtYXliZUNyZWF0ZU5ld05hbWUodmFy
aWFibGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2V0UmVuYW1l
ZE9yT3JpZ2luYWwodmFyaWFibGUuZ2V0VHlwZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU3ltYm9sVHlwZTo6QW5nbGVJbnRlcm5hbCwgdmFyaWFibGUuZXh0ZW5z
aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5z
eW1ib2xUeXBlKCksIHZhcmlhYmxlLmV4dGVuc2lvbigpKTsKIAogICAgICAgICByZXR1cm4gcmVu
YW1lZDsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWQ1NDQ0NjNhYThhNzVhMTY4NWNmZmY5MjdjZGE5MDk0MzQ5
NmViNi4uOTE3MjA3MWEwYWY3YTMzYzNiMGI3YjI4MzMzMWY0ODcyNWM3MTliYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDIxLTA2LTE1ICBKb2huIEN1bm5pbmdoYW0gIDxqb2huY3VubmluZ2hh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgW01ldGFsIEFOR0xFXSBTaGFkZXJzIHdpdGggcmVzZXJ2
ZWQgbWV0YWwga2V5d29yZHMgZG8gbm90IHRyYW5zbGF0ZSwgbm9yIGRvIHNoYWRlcnMgd2l0aCBz
dHJ1Y3QgYW5kIHZhcmlhYmxlIG5hbWVzIHRoYXQgYXJlIHRoZSBzYW1lIGV4Y2VwdCBwcmVmaXhl
ZCBieSBhbiB1bmRlcnNjb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjY2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1rZXl3b3Jk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVy
LXdpdGgtcmVzZXJ2ZWQta2V5d29yZC5odG1sOiBBZGRlZC4KKwogMjAyMS0wNi0xNSAgRnVqaWkg
SGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9d
IFVucmV2aWV3ZWQgdGVzdCBnYXJkZW5pbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NoYWRlci13aXRoLXJlc2VydmVkLWtleXdvcmQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLXdpdGgtcmVzZXJ2ZWQta2V5d29y
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y1MjYwYjE0ZDU2MDk4NWJmM2Q5MWEwYTFkODVl
Y2YzNmIzZTJiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3NoYWRlci13aXRoLXJlc2VydmVkLWtleXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTkgQEAKK1Rlc3RzIHRoYXQgcHJvZ3JhbSBjb21waWxpbmcvbGlua2luZyB3aXRoIGEgcmVzZXJ2
ZWQga2V5d29yZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IG5vIGVycm9yIGZvciB1c2luZyByZXNl
cnZlZCBrZXl3b3JkIGluIHN0cnVjdAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IE5PX0VSUk9SIDogbm8gZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgaW4gdmFyaWFi
bGUgbmFtZQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8g
ZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgZm9yIHN0cnVjdCBuYW1lCitQQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBubyBlcnJvciBmb3IgdXNpbmcg
cmVzZXJ2ZWQga2V5d29yZCBmb3Igc3RydWN0IG5hbWUgd2l0aCBnbG9iYWwgc3RydWN0CitQQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBubyBlcnJvciBmb3IgdXNp
bmcgcmVzZXJ2ZWQga2V5d29yZCBpbiB0eXBlIHdpdGggZ2xvYmFsIHN0cnVjdAorUEFTUyBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8gZXJyb3IgZm9yIHVzaW5nIHJl
c2VydmVkIGtleXdvcmQgZm9yIHN0cnVjdCBuYW1lICB3aXRoIGdsb2JhbCBzdHJ1Y3QKK1BBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IG5vIGVycm9yIGZvciB1c2lu
ZyByZXNlcnZlZCBrZXl3b3JkIGZvciB2YXJpYWJsZSBuYW1lIHdpdGggZ2xvYmFsIHN0cnVjdAor
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8gZXJyb3IgZm9y
IHVzaW5nIHJlc2VydmVkIGtleXdvcmQgZm9yIHZhcmlhYmxlIG5hbWUgYW5kIHN0cnVjdCBuYW1l
IHdpdGggZ2xvYmFsIHN0cnVjdAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5P
X0VSUk9SIDogbm8gZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgaW4gbmVzdGVkIHN0
cnVjdAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogbm8gZXJy
b3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgdG8gYWNjZXNzIG5lc3RlZCBzdHJ1Y3QKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1yZXNlcnZlZC1r
ZXl3b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItd2l0aC1y
ZXNlcnZlZC1rZXl3b3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM1YmY1ZTE4MGI1YzNmZWI5YWY2ZjAy
MGIxZmM3ZTQwZWE2YWQ5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3NoYWRlci13aXRoLXJlc2VydmVkLWtleXdvcmQuaHRtbApAQCAtMCwwICsxLDk5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmds
LXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKyAgICAKKzwvaGVhZD4KKzxib2R5PgorICAgIDxj
YW52YXMgaWQ9IndlYmdsLWNhbnZhcyIgd2lkdGg9IjEwMHB4IiBoZWlnaHQ9IjEwMHB4Ij48L2Nh
bnZhcz4KKyAgICA8c2NyaXB0PgorICAgIHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAgICAK
KyAgICBmdW5jdGlvbiBydW5TaGFkZXJUZXN0KGdsLCB2U2hhZGVyU291cmNlLCBmc2hhZGVyU291
cmNlLCBlcnJvclNob3VsZEJlVGV4dCkKKyAgICB7CisgICAgICAgIHZhciBmcmFnbWVudFNoYWRl
ciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworICAgICAgICB2YXIgcHJv
Z3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgdmFyIHZlcnRleFNoYWRlciA9IGds
LmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICAgICAgZ2wuc2hhZGVyU291cmNl
KHZlcnRleFNoYWRlciwgdlNoYWRlclNvdXJjZSk7CisgICAgICAgIGdsLmNvbXBpbGVTaGFkZXIo
dmVydGV4U2hhZGVyKTsKKyAgICAgICAgZ2wuc2hhZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCBm
c2hhZGVyU291cmNlKTsKKyAgICAgICAgZ2wuY29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7
CisgICAgICAgIGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAgICAg
ICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAgICAgICBnbC5s
aW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOworICAgICAgICAKKyAgICAg
ICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwwLGVycm9yU2hvdWxkQmVUZXh0KTsKKyAgICAgICAg
Z2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKQorICAgICAgICBnbC5kZWxldGVTaGFkZXIodmVydGV4
U2hhZGVyKTsKKyAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKKyAgICB9
CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgICBkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCBwcm9ncmFtIGNvbXBpbGluZy9saW5raW5nIHdpdGggYSByZXNlcnZlZCBrZXl3b3Jk
LiIpOworICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dlYmds
LWNhbnZhcycpOworICAgICAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wyIik7
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB2U2hhZGVyU291cmNlID0gJyN2ZXJzaW9uIDMw
MCBlc1xuIGluIHZlYzIgcG9zO1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQocG9z
LCAwLCAxKTsgfScKKyAgICAgICAgICAgIHZhciBmc2hhZGVyU291cmNlID0gJyN2ZXJzaW9uIDMw
MCBlc1xuIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIG91dCB2ZWM0IGNvbG9yO1xuIHN0cnVj
dCBzIHsgZmxvYXQgbWV0YWw7IH07XG4gZmxvYXQgaGVscGVyKHMgX3MpIHsgcmV0dXJuIF9zLm1l
dGFsOyB9XG4gdm9pZCBtYWluKCkgeyBzIF9zOyBmbG9hdCBhID0gaGVscGVyKF9zKTsgY29sb3Ig
PSB2ZWM0KGEsMC44LDAsMSk7IH1cbicKKyAgICAgICAgICAgIHJ1blNoYWRlclRlc3QoZ2wsIHZT
aGFkZXJTb3VyY2UsIGZzaGFkZXJTb3VyY2UsICJubyBlcnJvciBmb3IgdXNpbmcgcmVzZXJ2ZWQg
a2V5d29yZCBpbiBzdHJ1Y3QiKQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgdlNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBpbiB2ZWMyIHBv
cztcbnZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMCwgMSk7IH0nCisgICAg
ICAgICAgICB2YXIgZnNoYWRlclNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiBvdXQgdmVjNCBjb2xvcjtcbiBzdHJ1Y3QgcyB7IGZsb2F0IGE7IH07
XG4gZmxvYXQgaGVscGVyKHMgX3MpIHsgcmV0dXJuIF9zLmE7IH1cbiB2b2lkIG1haW4oKSB7IHMg
bWV0YWw7IGZsb2F0IGEgPSBoZWxwZXIobWV0YWwpOyBjb2xvciA9IHZlYzQoYSwwLjgsMCwxKTsg
fVxuJworICAgICAgICAgICAgcnVuU2hhZGVyVGVzdChnbCwgdlNoYWRlclNvdXJjZSwgZnNoYWRl
clNvdXJjZSwgIm5vIGVycm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGluIHZhcmlhYmxl
IG5hbWUiKQorICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB2U2hhZGVyU291
cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xuIGluIHZlYzIgcG9zO1xudm9pZCBtYWluKCkgeyBnbF9Q
b3NpdGlvbiA9IHZlYzQocG9zLCAwLCAxKTsgfScKKyAgICAgICAgICAgIHZhciBmc2hhZGVyU291
cmNlID0gJyN2ZXJzaW9uIDMwMCBlc1xuIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIG91dCB2
ZWM0IGNvbG9yO1xuIHN0cnVjdCBtZXRhbCB7IGZsb2F0IGE7IH07XG4gZmxvYXQgaGVscGVyKG1l
dGFsIF9zKSB7IHJldHVybiBfcy5hOyB9XG4gdm9pZCBtYWluKCkgeyBtZXRhbCBfczsgZmxvYXQg
YSA9IGhlbHBlcihfcyk7IGNvbG9yID0gdmVjNChhLDAuOCwwLDEpOyB9XG4nCisgICAgICAgICAg
ICBydW5TaGFkZXJUZXN0KGdsLCB2U2hhZGVyU291cmNlLCBmc2hhZGVyU291cmNlLCAibm8gZXJy
b3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgZm9yIHN0cnVjdCBuYW1lIikKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHZTaGFkZXJTb3VyY2UgPSAn
I3ZlcnNpb24gMzAwIGVzXG4gaW4gdmVjMiBwb3M7XG52b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9u
ID0gdmVjNChwb3MsIDAsIDEpOyB9JworICAgICAgICAgICAgdmFyIGZzaGFkZXJTb3VyY2UgPSAn
I3ZlcnNpb24gMzAwIGVzXG4gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4gb3V0IHZlYzQgY29s
b3I7XG4gc3RydWN0IG1ldGFsIHsgZmxvYXQgYTsgfSBfcztcbiBmbG9hdCBoZWxwZXIobWV0YWwg
X3MpIHsgcmV0dXJuIF9zLmE7IH1cbiB2b2lkIG1haW4oKSB7IG1ldGFsIF9zOyBmbG9hdCBhID0g
aGVscGVyKF9zKTsgY29sb3IgPSB2ZWM0KGEsMC44LDAsMSk7IH1cbicKKyAgICAgICAgICAgIHJ1
blNoYWRlclRlc3QoZ2wsIHZTaGFkZXJTb3VyY2UsIGZzaGFkZXJTb3VyY2UsICJubyBlcnJvciBm
b3IgdXNpbmcgcmVzZXJ2ZWQga2V5d29yZCBmb3Igc3RydWN0IG5hbWUgd2l0aCBnbG9iYWwgc3Ry
dWN0ICIpCisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHZTaGFkZXJTb3Vy
Y2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gaW4gdmVjMiBwb3M7XG52b2lkIG1haW4oKSB7IGdsX1Bv
c2l0aW9uID0gdmVjNChwb3MsIDAsIDEpOyB9JworICAgICAgICAgICAgdmFyIGZzaGFkZXJTb3Vy
Y2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4gb3V0IHZl
YzQgY29sb3I7XG4gc3RydWN0IHMgeyBmbG9hdCBtZXRhbDsgfSBfcztcbiBmbG9hdCBoZWxwZXIo
cyBfcykgeyByZXR1cm4gX3MubWV0YWw7IH1cbiB2b2lkIG1haW4oKSB7IF9zLm1ldGFsID0gMS4w
ZjsgZmxvYXQgYSA9IGhlbHBlcihfcyk7IGNvbG9yID0gdmVjNChhLDAuOCwwLDEpOyB9XG4nCisg
ICAgICAgICAgICBydW5TaGFkZXJUZXN0KGdsLCB2U2hhZGVyU291cmNlLCBmc2hhZGVyU291cmNl
LCAibm8gZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgaW4gdHlwZSB3aXRoIGdsb2Jh
bCBzdHJ1Y3QgIikKKyAgICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgdlNoYWRl
clNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBpbiB2ZWMyIHBvcztcbnZvaWQgbWFpbigpIHsg
Z2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMCwgMSk7IH0nCisgICAgICAgICAgICB2YXIgZnNoYWRl
clNvdXJjZSA9ICcjdmVyc2lvbiAzMDAgZXNcbiBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiBv
dXQgdmVjNCBjb2xvcjtcbiBzdHJ1Y3QgbWV0YWwgeyBmbG9hdCBhOyB9IF9zO1xuIGZsb2F0IGhl
bHBlcihtZXRhbCBfcykgeyByZXR1cm4gX3MuYTsgfVxuIHZvaWQgbWFpbigpIHsgX3MuYSA9IDEu
MGY7IGZsb2F0IGEgPSBoZWxwZXIoX3MpOyBjb2xvciA9IHZlYzQoYSwwLjgsMCwxKTsgfVxuJwor
ICAgICAgICAgICAgcnVuU2hhZGVyVGVzdChnbCwgdlNoYWRlclNvdXJjZSwgZnNoYWRlclNvdXJj
ZSwgIm5vIGVycm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGZvciBzdHJ1Y3QgbmFtZSAg
d2l0aCBnbG9iYWwgc3RydWN0ICIpCisgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHZTaGFkZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gaW4gdmVjMiBwb3M7XG52b2lk
IG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAsIDEpOyB9JworICAgICAgICAgICAg
dmFyIGZzaGFkZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4gb3V0IHZlYzQgY29sb3I7XG4gc3RydWN0IHMgeyBmbG9hdCBhOyB9IG1ldGFsO1xu
IGZsb2F0IGhlbHBlcihzIF9zKSB7IHJldHVybiBfcy5hOyB9XG4gdm9pZCBtYWluKCkgeyBtZXRh
bC5hID0gMS4wZjsgZmxvYXQgYSA9IGhlbHBlcihtZXRhbCk7IGNvbG9yID0gdmVjNChhLDAuOCww
LDEpOyB9XG4nCisgICAgICAgICAgICBydW5TaGFkZXJUZXN0KGdsLCB2U2hhZGVyU291cmNlLCBm
c2hhZGVyU291cmNlLCAibm8gZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgZm9yIHZh
cmlhYmxlIG5hbWUgd2l0aCBnbG9iYWwgc3RydWN0ICIpCisgICAgICAgIH0KKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHZTaGFkZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gaW4gdmVj
MiBwb3M7XG52b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAsIDEpOyB9Jwor
ICAgICAgICAgICAgdmFyIGZzaGFkZXJTb3VyY2UgPSAnI3ZlcnNpb24gMzAwIGVzXG4gcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4gb3V0IHZlYzQgY29sb3I7XG4gc3RydWN0IHRocmVhZGdyb3Vw
X2ltYWdlYmxvY2sgeyBmbG9hdCBhOyB9IG1ldGFsO1xuIGZsb2F0IGhlbHBlcih0aHJlYWRncm91
cF9pbWFnZWJsb2NrIF9zKSB7IHJldHVybiBfcy5hOyB9XG4gdm9pZCBtYWluKCkgeyBtZXRhbC5h
ID0gMS4wZjsgZmxvYXQgYSA9IGhlbHBlcihtZXRhbCk7IGNvbG9yID0gdmVjNChhLDAuOCwwLDEp
OyB9XG4nCisgICAgICAgICAgICBydW5TaGFkZXJUZXN0KGdsLCB2U2hhZGVyU291cmNlLCBmc2hh
ZGVyU291cmNlLCAibm8gZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgZm9yIHZhcmlh
YmxlIG5hbWUgYW5kIHN0cnVjdCBuYW1lIHdpdGggZ2xvYmFsIHN0cnVjdCAiKQorICAgICAgICB9
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB2U2hhZGVyU291cmNlID0gJyN2ZXJzaW9uIDMw
MCBlc1xuIGluIHZlYzIgcG9zO1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQocG9z
LCAwLCAxKTsgfScKKyAgICAgICAgICAgIHZhciBmc2hhZGVyU291cmNlID0gJyN2ZXJzaW9uIDMw
MCBlc1xuIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIG91dCB2ZWM0IGNvbG9yO1xuIHN0cnVj
dCBzIHsgZmxvYXQgbWV0YWw7IH07XG4gc3RydWN0IHAgeyBzIHE7IH07XG4gZmxvYXQgaGVscGVy
KHMgX3MpIHsgcmV0dXJuIF9zLm1ldGFsOyB9XG4gdm9pZCBtYWluKCkgeyBwIF9wOyBmbG9hdCBh
ID0gaGVscGVyKF9wLnEpOyBjb2xvciA9IHZlYzQoYSwwLjgsMCwxKTsgfVxuJworICAgICAgICAg
ICAgcnVuU2hhZGVyVGVzdChnbCwgdlNoYWRlclNvdXJjZSwgZnNoYWRlclNvdXJjZSwgIm5vIGVy
cm9yIGZvciB1c2luZyByZXNlcnZlZCBrZXl3b3JkIGluIG5lc3RlZCBzdHJ1Y3QiKQorICAgICAg
ICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB2U2hhZGVyU291cmNlID0gJyN2ZXJzaW9u
IDMwMCBlc1xuIGluIHZlYzIgcG9zO1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQo
cG9zLCAwLCAxKTsgfScKKyAgICAgICAgICAgIHZhciBmc2hhZGVyU291cmNlID0gJyN2ZXJzaW9u
IDMwMCBlc1xuIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIG91dCB2ZWM0IGNvbG9yO1xuIHN0
cnVjdCBzIHsgZmxvYXQgbWV0YWw7IH07XG4gc3RydWN0IHAgeyBzIG1ldGFsOyB9O1xuIGZsb2F0
IGhlbHBlcihzIF9zKSB7IHJldHVybiBfcy5tZXRhbDsgfVxuIHZvaWQgbWFpbigpIHsgcCBfcDsg
ZmxvYXQgYSA9IGhlbHBlcihfcC5tZXRhbCk7IGNvbG9yID0gdmVjNChhLDAuOCwwLDEpOyB9XG4n
CisgICAgICAgICAgICBydW5TaGFkZXJUZXN0KGdsLCB2U2hhZGVyU291cmNlLCBmc2hhZGVyU291
cmNlLCAibm8gZXJyb3IgZm9yIHVzaW5nIHJlc2VydmVkIGtleXdvcmQgdG8gYWNjZXNzIG5lc3Rl
ZCBzdHJ1Y3QiKQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKworICAgIH0KKyAgICBy
dW5UZXN0KCk7CisKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>