<?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>215804</bug_id>
          
          <creation_ts>2020-08-25 03:19:22 -0700</creation_ts>
          <short_desc>Robust initialisation of RGB textures with glTexImage2D(.., nullptr) fails on Mac Intel</short_desc>
          <delta_ts>2020-10-26 13:10:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>ANGLE</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.14</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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>
          <dependson>209139</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>geofflang</cc>
    
    <cc>graouts</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>jonahr</cc>
    
    <cc>kbr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682615</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-08-25 03:19:22 -0700</bug_when>
    <thetext>What steps will reproduce the problem?
1. glTexImage2D(..,GL_RGB, .., GL_RGB, nullptr)
2. draw with the texture
3. observe transparent black instead of expected solid black 

What is the expected output? What do you see instead?

observe transparent black instead of expected solid black 


What version of the product are you using? On what operating system?

Mac Catalina
Intel Iris

Please provide any additional information below.

https://bugs.chromium.org/p/angleproject/issues/detail?id=4986

Fails https://www.khronos.org/registry/webgl/sdk/tests/conformance/textures/misc/gl-teximage.html?webglVersion=2&amp;quiet=0&amp;quick=1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682617</commentid>
    <comment_count>1</comment_count>
      <attachid>407182</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-08-25 04:05:10 -0700</bug_when>
    <thetext>Created attachment 407182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682618</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-08-25 04:06:10 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See http://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682630</commentid>
    <comment_count>3</comment_count>
      <attachid>407186</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-08-25 07:08:27 -0700</bug_when>
    <thetext>Created attachment 407186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682747</commentid>
    <comment_count>4</comment_count>
      <attachid>407186</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-25 12:36:13 -0700</bug_when>
    <thetext>Comment on attachment 407186
Patch

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

Good work Kimmo tracking down what was going on.

A couple of suggestions above. Would you consider trying that direction?

I&apos;m surprised this would have an effect on all GL_RGB textures. We have however seen problems with GL textures bound to IOSurfaces, where OpenGL on macOS zeros out the alpha channel of the destination IOSurface if a GL_RGB texture is bound to it. I wonder whether that issue may be the underlying cause here - but it doesn&apos;t look like it.

Also - after you test your patch here but before it&apos;s committed, it would be great if you&apos;d upload it to ANGLE and get reviews from the ANGLE team. They can review this better than me.

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp:-136
&gt; -        stateManager-&gt;setClearColor(gl::ColorF(0.0f, 0.0f, 0.0f, 0.0f));

Instead of removing this helper I suggest:

1) Pass gl::Context* to this helper
2) Pass another argument indicating whether there are alpha bits in the texture&apos;s format (see below)
3) Add a workaround to include/platform/FeaturesGL.h to be applied only on macOS (it looks like these changes regress a few WebGL conformance tests on iOS)
4) Initialize the feature in InitializeFeatures in src/libANGLE/renderer/gl/renderergl_utils.cpp
5) In this function, if there are alpha bits and the workaround is enabled, clear the alpha channel to 1.0 rather than 0.0

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp:979
&gt; +    mStateManager-&gt;setClearColor(gl::ColorF(0.0f, 0.0f, 0.0f, 0.0f));

You didn&apos;t find the workaround necessary in this case?

FramebufferGL::hasEmulatedAlphaChannelTextureAttachment() should, I think, return true if the back buffer of the WebGL canvas is alpha:false.

What would you think about restoring the SetClearState helper, taking another argument (probably either the number of alpha bits or a bool whether to clear the alpha channel to 1.0 - seems hard to come up with an InternalFormatInfo here), and determining whether to set the alpha channel to 0.0 or 1.0 inside SetClearState depending on that argument?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682748</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-25 12:37:14 -0700</bug_when>
    <thetext>CC&apos;d ANGLE folks on this bug - maybe they can provide more feedback here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682808</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-25 14:44:55 -0700</bug_when>
    <thetext>BTW - I&apos;m surprised that https://www.khronos.org/registry/webgl/sdk/tests/conformance/textures/misc/gl-teximage.html?webglVersion=2&amp;quiet=0&amp;quick=1 fails but the layout test webgl/2.0.0/conformance/textures/misc/gl-teximage.html doesn&apos;t.

Kimmo, what hardware are you running on and which browser configuration are you testing? I typically run with the MiniBrowser on WebKit1 on a dual-GPU 2017 MacBook Pro 15&quot; with Intel HD 630 / AMD Radeon Pro 560.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683016</commentid>
    <comment_count>7</comment_count>
    <who name="Geoff Lang">geofflang</who>
    <bug_when>2020-08-26 10:00:19 -0700</bug_when>
    <thetext>Agree with Ken&apos;s review. Happy to upstream with his suggestion to encapsulate this into a feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684425</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-01 03:20:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/68132544&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687686</commentid>
    <comment_count>9</comment_count>
      <attachid>408523</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-09-11 01:11:30 -0700</bug_when>
    <thetext>Created attachment 408523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687687</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-09-11 01:12:17 -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>1687851</commentid>
    <comment_count>11</comment_count>
      <attachid>408523</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-09-11 16:25:53 -0700</bug_when>
    <thetext>Comment on attachment 408523
Patch

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

Nice work Kimmo refining this. Could you address the build failures?

Would be great if you could upload the ANGLE patch to ANGLE&apos;s Gerrit instance so that it can be automatically tested against the dEQP and more suites.

&gt; Source/ThirdParty/ANGLE/include/platform/FeaturesGL.h:475
&gt; +                                           &quot;glClear writes alpha when clearing uninitialized RGB&quot;

End string in a space?

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp:546
&gt; +        blendState.setColorMaskIndexed(drawBuffer, true, true, true, true);

Is it guaranteed that the needed extension will be available on all platforms where this code change might run?

If not - should this be predicated on the availability of an extension?

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.cpp:2124
&gt; +        ASSERT(!disableAlpha || disabledAlphaWrites.to_ulong() == 1);

Are you sure that to_ulong() produces the number you expect in the situations you expect it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701358</commentid>
    <comment_count>12</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-26 00:22:13 -0700</bug_when>
    <thetext>Geoff&apos;s suggestions on the problematic part:

Geoff Lang  1 month ago
I think you want to check the DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 bits in FramebufferGL::syncState

Geoff Lang  1 month ago
Our VK backend does it here

Geoff Lang  1 month ago
https://source.chromium.org/chromium/chromium/src/+/master:third_party/angle/src/libANGLE/renderer/vulkan/FramebufferVk.cpp;l=1710;drc=b79862be255715191be99c3ee924acdea58526fd;bpv=1;bpt=1?q=framebuffervk&amp;ss=chromium%2Fchromium%2Fsrc
source.chromium.orgsource.chromium.org
Search and explore code

Geoff Lang  1 month ago
And then add a function to StateManagerGL to update the color mask state

Geoff Lang  1 month ago
And call that function both when syncing those bits in the framebuffer and when handling a new framebuffer binding in StateManagerGL

Geoff Lang  1 month ago
So:

Geoff Lang  1 month ago
Hereish: https://source.chromium.org/chromium/chromium/src/+/master:third_party/angle/src/libANGLE/renderer/gl/FramebufferGL.cpp;l=1307?q=framebuffergl.cpp&amp;ss=chromium%2Fchromium%2Fsrc
source.chromium.orgsource.chromium.org
Search and explore code

Geoff Lang  1 month ago
And it looks like it&apos;s already handled in StatemanagerGL:syncState here: https://source.chromium.org/chromium/chromium/src/+/master:third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp;l=1919;drc=b79862be255715191be99c3ee924acdea58526fd;bpv=0;bpt=1</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407182</attachid>
            <date>2020-08-25 04:05:10 -0700</date>
            <delta_ts>2020-08-25 07:08:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215804-20200825140508.patch</filename>
            <type>text/plain</type>
            <size>8873</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuY3BwCmluZGV4IDIy
ODMwN2E5OGZhMzBkZThlYTFlYWFhN2E0ZWYyOTkxNGI0YzE1OTUuLjlkMzRhMTkzYjUzZWVjZDFm
ZjcxOTM4NmNkYzUzODMyOGQwYmYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuY3BwCkBAIC0xMjQs
MzYgKzEyNCw2IEBAIGNsYXNzIFNjb3BlZEdMU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICBib29sIG1FeGl0ZWQgPSBmYWxzZTsKIH07CiAKLWFuZ2xlOjpSZXN1bHQgU2V0Q2xlYXJTdGF0
ZShTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgY29sb3JDbGVhciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRl
cHRoQ2xlYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdGVuY2lsQ2xlYXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCAqb3V0Q2xlYXJNYXNrKQot
ewotICAgICpvdXRDbGVhck1hc2sgPSAwOwotICAgIGlmIChjb2xvckNsZWFyKQotICAgIHsKLSAg
ICAgICAgc3RhdGVNYW5hZ2VyLT5zZXRDbGVhckNvbG9yKGdsOjpDb2xvckYoMC4wZiwgMC4wZiwg
MC4wZiwgMC4wZikpOwotICAgICAgICBzdGF0ZU1hbmFnZXItPnNldENvbG9yTWFzayh0cnVlLCB0
cnVlLCB0cnVlLCB0cnVlKTsKLSAgICAgICAgKm91dENsZWFyTWFzayB8PSBHTF9DT0xPUl9CVUZG
RVJfQklUOwotICAgIH0KLSAgICBpZiAoZGVwdGhDbGVhcikKLSAgICB7Ci0gICAgICAgIHN0YXRl
TWFuYWdlci0+c2V0RGVwdGhNYXNrKHRydWUpOwotICAgICAgICBzdGF0ZU1hbmFnZXItPnNldENs
ZWFyRGVwdGgoMS4wZik7Ci0gICAgICAgICpvdXRDbGVhck1hc2sgfD0gR0xfREVQVEhfQlVGRkVS
X0JJVDsKLSAgICB9Ci0gICAgaWYgKHN0ZW5jaWxDbGVhcikKLSAgICB7Ci0gICAgICAgIHN0YXRl
TWFuYWdlci0+c2V0Q2xlYXJTdGVuY2lsKDApOwotICAgICAgICAqb3V0Q2xlYXJNYXNrIHw9IEdM
X1NURU5DSUxfQlVGRkVSX0JJVDsKLSAgICB9Ci0KLSAgICBzdGF0ZU1hbmFnZXItPnNldFNjaXNz
b3JUZXN0RW5hYmxlZChmYWxzZSk7Ci0KLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7Ci19Ci0KIHVzaW5nIENsZWFyQmluZFRhcmdldFZlY3RvciA9IGFuZ2xlOjpGaXhlZFZlY3Rv
cjxHTGVudW0sIDM+OwogCiBhbmdsZTo6UmVzdWx0IFByZXBhcmVGb3JDbGVhcihTdGF0ZU1hbmFn
ZXJHTCAqc3RhdGVNYW5hZ2VyLApAQCAtMTY5LDkgKzEzOSwxOSBAQCBhbmdsZTo6UmVzdWx0IFBy
ZXBhcmVGb3JDbGVhcihTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLAogICAgIGJvb2wgYmlu
ZENvbG9yICAgPSAhYmluZERlcHRoICYmICFiaW5kU3RlbmNpbDsKIAogICAgIG91dEJpbmR0YXJn
ZXRzLT5jbGVhcigpOworICAgIEdMYml0ZmllbGQgY2xlYXJNYXNrID0gMDsKICAgICBpZiAoYmlu
ZENvbG9yKQogICAgIHsKICAgICAgICAgb3V0QmluZHRhcmdldHMtPnB1c2hfYmFjayhHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCk7CisgICAgICAgIC8vIEJlIHNwZWNpZmljIGFib3V0IGFscGhhQml0cyBi
ZWNhdXNlIE9TWCAoSW50ZWw/KSBoYXMgYSBidWcgd3J0CisgICAgICAgIC8vIEdMX1JHQjggYmVp
bmcgd3JpdHRlbiB3aXRoIDAsMCwwLDAgYW5kIHRoZW4gdGhpcyBiZWluZyBvYnNlcnZhYmxlCisg
ICAgICAgIC8vIHdoZW4gcmVuZGVyaW5nIChhbHBoYSA9PSAwLjAgdnMgZXhwZWN0ZWQgMS4wKS4g
U2V0IGNvbG9yIG1hc2sgdG8gYWxsIHRoZQorICAgICAgICAvLyB0aGUgY29tcG9uZW50cyBkdWUg
dG8gdGhlIGJ1ZyBwb3RlbnRpYWxseSBsZWFraW5nIG91dCB1bmNsZWFyZWQgYWxwaGEKKyAgICAg
ICAgLy8gb3RoZXJ3aXNlLgorICAgICAgICBzdGF0ZU1hbmFnZXItPnNldENsZWFyQ29sb3IoCisg
ICAgICAgICAgICBnbDo6Q29sb3JGKDAuMGYsIDAuMGYsIDAuMGYsIGludGVybmFsRm9ybWF0SW5m
by5hbHBoYUJpdHMgPiAwID8gMC4wIDogMS4wKSk7CisgICAgICAgIHN0YXRlTWFuYWdlci0+c2V0
Q29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOworICAgICAgICBjbGVhck1hc2sgfD0g
R0xfQ09MT1JfQlVGRkVSX0JJVDsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTE4MCw2ICsx
NjAsOSBAQCBhbmdsZTo6UmVzdWx0IFByZXBhcmVGb3JDbGVhcihTdGF0ZU1hbmFnZXJHTCAqc3Rh
dGVNYW5hZ2VyLAogICAgIGlmIChiaW5kRGVwdGgpCiAgICAgewogICAgICAgICBvdXRCaW5kdGFy
Z2V0cy0+cHVzaF9iYWNrKEdMX0RFUFRIX0FUVEFDSE1FTlQpOworICAgICAgICBzdGF0ZU1hbmFn
ZXItPnNldERlcHRoTWFzayh0cnVlKTsKKyAgICAgICAgc3RhdGVNYW5hZ2VyLT5zZXRDbGVhckRl
cHRoKDEuMGYpOworICAgICAgICBjbGVhck1hc2sgfD0gR0xfREVQVEhfQlVGRkVSX0JJVDsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTE4OCwxNCArMTcxLDE1IEBAIGFuZ2xlOjpSZXN1bHQg
UHJlcGFyZUZvckNsZWFyKFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCiAgICAgaWYgKGJp
bmRTdGVuY2lsKQogICAgIHsKICAgICAgICAgb3V0QmluZHRhcmdldHMtPnB1c2hfYmFjayhHTF9T
VEVOQ0lMX0FUVEFDSE1FTlQpOworICAgICAgICBzdGF0ZU1hbmFnZXItPnNldENsZWFyU3RlbmNp
bCgwKTsKKyAgICAgICAgY2xlYXJNYXNrIHw9IEdMX1NURU5DSUxfQlVGRkVSX0JJVDsKICAgICB9
CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgb3V0VW5iaW5kVGFyZ2V0cy0+cHVzaF9iYWNrKEdM
X1NURU5DSUxfQVRUQUNITUVOVCk7CiAgICAgfQotCi0gICAgQU5HTEVfVFJZKFNldENsZWFyU3Rh
dGUoc3RhdGVNYW5hZ2VyLCBiaW5kQ29sb3IsIGJpbmREZXB0aCwgYmluZFN0ZW5jaWwsIG91dENs
ZWFyTWFzaykpOwotCisgICAgc3RhdGVNYW5hZ2VyLT5zZXRTY2lzc29yVGVzdEVuYWJsZWQoZmFs
c2UpOworICAgICpvdXRDbGVhck1hc2sgPSBjbGVhck1hc2s7CiAgICAgcmV0dXJuIGFuZ2xlOjpS
ZXN1bHQ6OkNvbnRpbnVlOwogfQogCkBAIC05OTIsOCArOTc2LDEzIEBAIGFuZ2xlOjpSZXN1bHQg
QmxpdEdMOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBGcmFt
ZWJ1ZmZlckdMCiAgICAgLy8gaW5pdGlhbGl6ZVJlc291cmNlcyBza2lwcGVkIGJlY2F1c2Ugbm8g
bG9jYWwgc3RhdGUgaXMgdXNlZAogCiAgICAgLy8gQ2xlYXIgYWxsIGF0dGFjaG1lbnRzCi0gICAg
R0xiaXRmaWVsZCBjbGVhck1hc2sgPSAwOwotICAgIEFOR0xFX1RSWShTZXRDbGVhclN0YXRlKG1T
dGF0ZU1hbmFnZXIsIHRydWUsIHRydWUsIHRydWUsICZjbGVhck1hc2spKTsKKyAgICBtU3RhdGVN
YW5hZ2VyLT5zZXRDbGVhckNvbG9yKGdsOjpDb2xvckYoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZikp
OworICAgIG1TdGF0ZU1hbmFnZXItPnNldENvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXREZXB0aE1hc2sodHJ1ZSk7CisgICAgbVN0YXRlTWFu
YWdlci0+c2V0Q2xlYXJEZXB0aCgxLjBmKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRDbGVhclN0
ZW5jaWwoMCk7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0U2Npc3NvclRlc3RFbmFibGVkKGZhbHNl
KTsKKyAgICBHTGJpdGZpZWxkIGNsZWFyTWFzayA9IEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9E
RVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUOwogCiAgICAgbVN0YXRlTWFu
YWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBzb3VyY2UtPmdldEZyYW1lYnVm
ZmVySUQoKSk7CiAgICAgQU5HTEVfR0xfVFJZKGNvbnRleHQsIG1GdW5jdGlvbnMtPmNsZWFyKGNs
ZWFyTWFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1JvYnVzdFJlc291cmNlSW5pdFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVzdFJlc291cmNlSW5pdFRlc3QuY3BwCmluZGV4
IDdjNGFjNzFiMjE5ODgxMTFmMmI3MTU1MDcxNDRiZmViNzU1ZDY4NmQuLjc4Yjc2NTQ1Nzg4NDg1
MjJhODMzNjlmZDU4OWNlMjY2YzRiZDdjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Sb2J1c3RSZXNvdXJjZUluaXRUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUm9idXN0UmVzb3Vy
Y2VJbml0VGVzdC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBjbGFzcyBSb2J1c3RSZXNvdXJjZUlu
aXRUZXN0IDogcHVibGljIEFOR0xFVGVzdAogICAgICAgICByZXR1cm4gcm9idXN0U3VyZmFjZUlu
aXQ7CiAgICAgfQogCi0gICAgdm9pZCBzZXR1cFRleHR1cmUoR0xUZXh0dXJlICp0ZXgpOworICAg
IHZvaWQgc2V0dXBUZXh0dXJlKEdMVGV4dHVyZSAqdGV4LCBHTGVudW0gZm9ybWF0ID0gR0xfUkdC
QSk7CiAgICAgdm9pZCBzZXR1cDNEVGV4dHVyZShHTFRleHR1cmUgKnRleCk7CiAKICAgICAvLyBD
aGVja3MgZm9yIHVuaW5pdGlhbGl6ZWQgKG5vbi16ZXJvIHBpeGVscykgaW4gYSBUZXh0dXJlLgpA
QCAtMzk4LDI1ICszOTgsMjUgQEAgVEVTVF9QKFJvYnVzdFJlc291cmNlSW5pdFRlc3QsIEJ1ZmZl
ckRhdGFaZXJvU2l6ZSkKIAogLy8gVGhlIGZvbGxvd2luZyB0ZXN0IGNvZGUgdHJhbnNsYXRlZCBm
cm9tIFdlYkdMIDEgdGVzdDoKIC8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dl
YmdsL3Nkay90ZXN0cy9jb25mb3JtYW5jZS9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC5odG1sCi12
b2lkIFJvYnVzdFJlc291cmNlSW5pdFRlc3Q6OnNldHVwVGV4dHVyZShHTFRleHR1cmUgKnRleCkK
K3ZvaWQgUm9idXN0UmVzb3VyY2VJbml0VGVzdDo6c2V0dXBUZXh0dXJlKEdMVGV4dHVyZSAqdGV4
LCBHTGVudW0gZm9ybWF0KQogewogICAgIEdMdWludCB0ZW1wVGV4dHVyZTsKICAgICBnbEdlblRl
eHR1cmVzKDEsICZ0ZW1wVGV4dHVyZSk7CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCB0ZW1wVGV4dHVyZSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QkEsIGtXaWR0aCwga0hlaWdodCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0
cik7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIGZvcm1hdCwga1dpZHRoLCBr
SGVpZ2h0LCAwLCBmb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwogCiAgICAgLy8g
dGhpcyBjYW4gYmUgcXVpdGUgdW5kZXRlcm1pbmlzdGljIHNvIHRvIGltcHJvdmUgb2RkcyBvZiBz
ZWVpbmcgdW5pbml0aWFsaXplZCBkYXRhIHdyaXRlIGJpdHMKICAgICAvLyBpbnRvIHRleCB0aGVu
IGRlbGV0ZSB0ZXh0dXJlIHRoZW4gcmUtY3JlYXRlIG9uZSB3aXRoIHNhbWUgY2hhcmFjdGVyaXN0
aWNzIChkcml2ZXIgd2lsbCBsaWtlbHkKICAgICAvLyByZXVzZSBtZW0pIHdpdGggdGhpcyB0cmlj
ayBvbiByNTkwNDYgV2ViS2l0L09TWCBJIGdldCBGQUlMIDEwMCUgb2YgdGhlIHRpbWUgaW5zdGVh
ZCBvZiB+MTUlCiAgICAgLy8gb2YgdGhlIHRpbWUuCi0KLSAgICBzdGQ6OmFycmF5PHVpbnQ4X3Qs
IGtXaWR0aCAqIGtIZWlnaHQgKiA0PiBiYWREYXRhOworICAgIGludCBwaXhlbFNpemUgPSBmb3Jt
YXQgPT0gR0xfUkdCID8gMyA6IDQ7CisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gYmFkRGF0YShr
V2lkdGggKiBrSGVpZ2h0ICogcGl4ZWxTaXplKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGJhZERhdGEuc2l6ZSgpOyArK2kpCiAgICAgewogICAgICAgICBiYWREYXRhW2ldID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oaSAlIDI1NSk7CiAgICAgfQogCi0gICAgZ2xUZXhTdWJJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIDAsIDAsIGtXaWR0aCwga0hlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwga1dp
ZHRoLCBrSGVpZ2h0LCBmb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsCiAgICAgICAgICAgICAgICAg
ICAgIGJhZERhdGEuZGF0YSgpKTsKICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZW1wVGV4dHVy
ZSk7CiAKQEAgLTcwNSwxMyArNzA1LDE1IEBAIFRFU1RfUChSb2J1c3RSZXNvdXJjZUluaXRUZXN0
RVMzLCBCaW5kVGV4SW1hZ2UpCiBURVNUX1AoUm9idXN0UmVzb3VyY2VJbml0VGVzdCwgRHJhd1dp
dGhUZXh0dXJlKQogewogICAgIEFOR0xFX1NLSVBfVEVTVF9JRighaGFzR0xFeHRlbnNpb24oKSk7
Ci0KLSAgICBHTFRleHR1cmUgdGV4dHVyZTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIHRleHR1cmUpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JB
LCBrV2lkdGgsIGtIZWlnaHQsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIp
OwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxU
RVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCisgICAgc3RydWN0CisgICAgeworICAg
ICAgICBHTGVudW0gZm9ybWF0OworICAgICAgICBHTENvbG9yIHNraXBDb2xvcjsKKyAgICAgICAg
Ym9vbCB0ZXN0Um9idXN0SW5pdGlhbGl6YXRpb247CisgICAgfSBzdWJjYXNlc1tdID0ge3tHTF9S
R0JBLCBHTENvbG9yOjp0cmFuc3BhcmVudEJsYWNrLCBmYWxzZX0sCisgICAgICAgICAgICAgICAg
ICAgIHtHTF9SR0JBLCBHTENvbG9yOjp0cmFuc3BhcmVudEJsYWNrLCB0cnVlfSwKKyAgICAgICAg
ICAgICAgICAgICAge0dMX1JHQiwgR0xDb2xvcjo6YmxhY2ssIGZhbHNlfSwKKyAgICAgICAgICAg
ICAgICAgICAge0dMX1JHQiwgR0xDb2xvcjo6YmxhY2ssIHRydWV9fTsKICAgICBjb25zdGV4cHIg
Y2hhciBrVlNbXSA9CiAgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKICAgICAg
ICAgInZhcnlpbmcgdmVjMiB0ZXhDb29yZDtcbiIKQEAgLTcyOCw5ICs3MzAsMzIgQEAgVEVTVF9Q
KFJvYnVzdFJlc291cmNlSW5pdFRlc3QsIERyYXdXaXRoVGV4dHVyZSkKICAgICAgICAgIn0iOwog
CiAgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBrVlMsIGtGUyk7Ci0gICAgZHJhd1F1YWQo
cHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBjaGVja0ZyYW1lYnVmZmVyTm9uWmVy
b1BpeGVscygwLCAwLCAwLCAwLCBHTENvbG9yOjpibGFjayk7CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCA0OyArK2kpCisgICAgeworICAgICAgICBTQ09QRURfVFJBQ0Uoc3RkOjpzdHJpbmcoIlN1
YmNhc2U6ICIpICsgc3RkOjp0b19zdHJpbmcoaSkpOworICAgICAgICBhdXRvICZzdWJjYXNlID0g
c3ViY2FzZXNbaV07CisgICAgICAgIEdMVGV4dHVyZSB0ZXh0dXJlOworICAgICAgICBzZXR1cFRl
eHR1cmUoJnRleHR1cmUsIHN1YmNhc2UuZm9ybWF0KTsKKyAgICAgICAgaWYgKHN1YmNhc2UudGVz
dFJvYnVzdEluaXRpYWxpemF0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgc3ViY2FzZS5mb3JtYXQsIGtXaWR0aCwga0hlaWdodCwgMCwg
c3ViY2FzZS5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllU
RSwgbnVsbHB0cik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICAvLyBSb2J1c3QgaW5pdGlhbGl6YXRpb24gYWJvdmUgc2hvdWxkIGJlaGF2ZSBhcyB0aGUg
ZXhwbGljaXQgaW5pdGlhbGl6YXRpb24gaGVyZS4KKyAgICAgICAgICAgIGludCBwaXhlbFNpemUg
PSBzdWJjYXNlLmZvcm1hdCA9PSBHTF9SR0IgPyAzIDogNDsKKyAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+IGQoa1dpZHRoICoga0hlaWdodCAqIHBpeGVsU2l6ZSk7CisgICAgICAgICAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgc3ViY2FzZS5mb3JtYXQsIGtXaWR0aCwg
a0hlaWdodCwgMCwgc3ViY2FzZS5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfQllURSwgZC5kYXRhKCkpOworICAgICAgICB9CisgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwor
ICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDEuMGYsIDEuMGYs
IDEuMGYpOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBk
cmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKKyAgICAgICAgY2hlY2tGcmFtZWJ1
ZmZlck5vblplcm9QaXhlbHMoMCwgMCwga1dpZHRoLCBrSGVpZ2h0LCBzdWJjYXNlLnNraXBDb2xv
cik7CisgICAgfQogfQogCiAvLyBUZXN0cyB0aGF0IGRyYXdpbmcgd2l0aCBhbiB1bmluaXRpYWxp
emVkIG1pcHBlZCB0ZXh0dXJlIHdvcmtzIGFzIGV4cGVjdGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407186</attachid>
            <date>2020-08-25 07:08:27 -0700</date>
            <delta_ts>2020-09-11 01:11:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215804-20200825170826.patch</filename>
            <type>text/plain</type>
            <size>10205</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggZGUzYmNiZWFkMzk5ZmFmYmMwNzVhZmM3YjgzZjNlMWNhMzA0MzY0ZS4uMzBkOTQ0ZGU2Nzlh
NmI1Y2U0Y2UwOGQ1N2M4YmE4MDQ3MWNhOGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA4LTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUm9idXN0IGluaXRpYWxpc2F0aW9uIG9mIFJHQiB0ZXh0
dXJlcyB3aXRoIGdsVGV4SW1hZ2UyRCguLiwgbnVsbHB0cikgZmFpbHMgb24gTWFjIEludGVsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MDQKKwor
CUR1cmluZyByb2J1c3QgaW5pdGlhbGl6YXRpb24gb2YgdW5pbml0aWFsaXplZCByZWFsIHRleHR1
cmVzLCBjbGVhciB3aXRoCisJYWxwaGEgMS4wIHdoZW4gdXNpbmcgcmVhbCBHTF9SR0I4X09FUyBp
bnRlcm5hbCBmb3JtYXQgdGV4dHVyZXMuIFRoaXMKKwl3b3JrcyBhcm91bmQgYSBNYWMgSW50ZWwg
ZHJpdmVyIGJ1ZyB3aGVyZSB6ZXJvLWFscGhhIGNsZWFyIHdvdWxkCisJY2F1c2UgUkdCIHRleHR1
cmUgYmUgcmVuZGVyZWQgd2l0aCB6ZXJvIGFscGhhLCB3aGVuIHRoZSBleHBlY3RhdGlvbgorCWlz
IHRoYXQgdGhlIGFscGhhIHdvdWxkIGJlIG9uZSBkdXJpbmcgcmVuZGVyaW5nLgorICAgIAorCUJ1
ZzogYW5nbGVwcm9qZWN0OjQ5ODYKKyAgICAKKwlSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAKKwlGaXhlcyBjdXJyZW50bHkgZmFpbGluZyB0ZXN0OgorCUxheW91dFRlc3RzL3dlYmds
LzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvZ2wtdGV4aW1hZ2UuaHRtbAorCisgICAg
ICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5jcHA6CisgICAgICAgIChyeDo6
QmxpdEdMOjpjbGVhckZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvdGVzdHMvZ2xfdGVzdHMv
Um9idXN0UmVzb3VyY2VJbml0VGVzdC5jcHA6CisgICAgICAgIChhbmdsZTo6Um9idXN0UmVzb3Vy
Y2VJbml0VGVzdDo6c2V0dXBUZXh0dXJlKToKKyAgICAgICAgKGFuZ2xlOjpURVNUX1ApOgorCiAy
MDIwLTA4LTEyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdGhlIG5lZWQgZm9yIGRlZmluaW5nIFVTRV9ORVdfQlVJTERfU1lTVEVNCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxp
dEdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9CbGl0R0wuY3BwCmluZGV4IDIyODMwN2E5OGZhMzBkZThlYTFlYWFhN2E0ZWYyOTkxNGI0YzE1
OTUuLjlkMzRhMTkzYjUzZWVjZDFmZjcxOTM4NmNkYzUzODMyOGQwYmYzNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9CbGl0R0wuY3BwCkBAIC0xMjQsMzYgKzEyNCw2IEBAIGNsYXNzIFNjb3BlZEdMU3RhdGUgOiBh
bmdsZTo6Tm9uQ29weWFibGUKICAgICBib29sIG1FeGl0ZWQgPSBmYWxzZTsKIH07CiAKLWFuZ2xl
OjpSZXN1bHQgU2V0Q2xlYXJTdGF0ZShTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29sb3JDbGVhciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGRlcHRoQ2xlYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBzdGVuY2lsQ2xlYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRm
aWVsZCAqb3V0Q2xlYXJNYXNrKQotewotICAgICpvdXRDbGVhck1hc2sgPSAwOwotICAgIGlmIChj
b2xvckNsZWFyKQotICAgIHsKLSAgICAgICAgc3RhdGVNYW5hZ2VyLT5zZXRDbGVhckNvbG9yKGds
OjpDb2xvckYoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZikpOwotICAgICAgICBzdGF0ZU1hbmFnZXIt
PnNldENvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKLSAgICAgICAgKm91dENsZWFy
TWFzayB8PSBHTF9DT0xPUl9CVUZGRVJfQklUOwotICAgIH0KLSAgICBpZiAoZGVwdGhDbGVhcikK
LSAgICB7Ci0gICAgICAgIHN0YXRlTWFuYWdlci0+c2V0RGVwdGhNYXNrKHRydWUpOwotICAgICAg
ICBzdGF0ZU1hbmFnZXItPnNldENsZWFyRGVwdGgoMS4wZik7Ci0gICAgICAgICpvdXRDbGVhck1h
c2sgfD0gR0xfREVQVEhfQlVGRkVSX0JJVDsKLSAgICB9Ci0gICAgaWYgKHN0ZW5jaWxDbGVhcikK
LSAgICB7Ci0gICAgICAgIHN0YXRlTWFuYWdlci0+c2V0Q2xlYXJTdGVuY2lsKDApOwotICAgICAg
ICAqb3V0Q2xlYXJNYXNrIHw9IEdMX1NURU5DSUxfQlVGRkVSX0JJVDsKLSAgICB9Ci0KLSAgICBz
dGF0ZU1hbmFnZXItPnNldFNjaXNzb3JUZXN0RW5hYmxlZChmYWxzZSk7Ci0KLSAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KIHVzaW5nIENsZWFyQmluZFRhcmdldFZlY3Rv
ciA9IGFuZ2xlOjpGaXhlZFZlY3RvcjxHTGVudW0sIDM+OwogCiBhbmdsZTo6UmVzdWx0IFByZXBh
cmVGb3JDbGVhcihTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLApAQCAtMTY5LDkgKzEzOSwx
OSBAQCBhbmdsZTo6UmVzdWx0IFByZXBhcmVGb3JDbGVhcihTdGF0ZU1hbmFnZXJHTCAqc3RhdGVN
YW5hZ2VyLAogICAgIGJvb2wgYmluZENvbG9yICAgPSAhYmluZERlcHRoICYmICFiaW5kU3RlbmNp
bDsKIAogICAgIG91dEJpbmR0YXJnZXRzLT5jbGVhcigpOworICAgIEdMYml0ZmllbGQgY2xlYXJN
YXNrID0gMDsKICAgICBpZiAoYmluZENvbG9yKQogICAgIHsKICAgICAgICAgb3V0QmluZHRhcmdl
dHMtPnB1c2hfYmFjayhHTF9DT0xPUl9BVFRBQ0hNRU5UMCk7CisgICAgICAgIC8vIEJlIHNwZWNp
ZmljIGFib3V0IGFscGhhQml0cyBiZWNhdXNlIE9TWCAoSW50ZWw/KSBoYXMgYSBidWcgd3J0Cisg
ICAgICAgIC8vIEdMX1JHQjggYmVpbmcgd3JpdHRlbiB3aXRoIDAsMCwwLDAgYW5kIHRoZW4gdGhp
cyBiZWluZyBvYnNlcnZhYmxlCisgICAgICAgIC8vIHdoZW4gcmVuZGVyaW5nIChhbHBoYSA9PSAw
LjAgdnMgZXhwZWN0ZWQgMS4wKS4gU2V0IGNvbG9yIG1hc2sgdG8gYWxsIHRoZQorICAgICAgICAv
LyB0aGUgY29tcG9uZW50cyBkdWUgdG8gdGhlIGJ1ZyBwb3RlbnRpYWxseSBsZWFraW5nIG91dCB1
bmNsZWFyZWQgYWxwaGEKKyAgICAgICAgLy8gb3RoZXJ3aXNlLgorICAgICAgICBzdGF0ZU1hbmFn
ZXItPnNldENsZWFyQ29sb3IoCisgICAgICAgICAgICBnbDo6Q29sb3JGKDAuMGYsIDAuMGYsIDAu
MGYsIGludGVybmFsRm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwID8gMC4wIDogMS4wKSk7CisgICAg
ICAgIHN0YXRlTWFuYWdlci0+c2V0Q29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOwor
ICAgICAgICBjbGVhck1hc2sgfD0gR0xfQ09MT1JfQlVGRkVSX0JJVDsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKQEAgLTE4MCw2ICsxNjAsOSBAQCBhbmdsZTo6UmVzdWx0IFByZXBhcmVGb3JDbGVh
cihTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLAogICAgIGlmIChiaW5kRGVwdGgpCiAgICAg
ewogICAgICAgICBvdXRCaW5kdGFyZ2V0cy0+cHVzaF9iYWNrKEdMX0RFUFRIX0FUVEFDSE1FTlQp
OworICAgICAgICBzdGF0ZU1hbmFnZXItPnNldERlcHRoTWFzayh0cnVlKTsKKyAgICAgICAgc3Rh
dGVNYW5hZ2VyLT5zZXRDbGVhckRlcHRoKDEuMGYpOworICAgICAgICBjbGVhck1hc2sgfD0gR0xf
REVQVEhfQlVGRkVSX0JJVDsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTE4OCwxNCArMTcx
LDE1IEBAIGFuZ2xlOjpSZXN1bHQgUHJlcGFyZUZvckNsZWFyKFN0YXRlTWFuYWdlckdMICpzdGF0
ZU1hbmFnZXIsCiAgICAgaWYgKGJpbmRTdGVuY2lsKQogICAgIHsKICAgICAgICAgb3V0QmluZHRh
cmdldHMtPnB1c2hfYmFjayhHTF9TVEVOQ0lMX0FUVEFDSE1FTlQpOworICAgICAgICBzdGF0ZU1h
bmFnZXItPnNldENsZWFyU3RlbmNpbCgwKTsKKyAgICAgICAgY2xlYXJNYXNrIHw9IEdMX1NURU5D
SUxfQlVGRkVSX0JJVDsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgb3V0VW5iaW5k
VGFyZ2V0cy0+cHVzaF9iYWNrKEdMX1NURU5DSUxfQVRUQUNITUVOVCk7CiAgICAgfQotCi0gICAg
QU5HTEVfVFJZKFNldENsZWFyU3RhdGUoc3RhdGVNYW5hZ2VyLCBiaW5kQ29sb3IsIGJpbmREZXB0
aCwgYmluZFN0ZW5jaWwsIG91dENsZWFyTWFzaykpOwotCisgICAgc3RhdGVNYW5hZ2VyLT5zZXRT
Y2lzc29yVGVzdEVuYWJsZWQoZmFsc2UpOworICAgICpvdXRDbGVhck1hc2sgPSBjbGVhck1hc2s7
CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCkBAIC05OTIsOCArOTc2
LDEzIEBAIGFuZ2xlOjpSZXN1bHQgQmxpdEdMOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LCBGcmFtZWJ1ZmZlckdMCiAgICAgLy8gaW5pdGlhbGl6ZVJlc291cmNl
cyBza2lwcGVkIGJlY2F1c2Ugbm8gbG9jYWwgc3RhdGUgaXMgdXNlZAogCiAgICAgLy8gQ2xlYXIg
YWxsIGF0dGFjaG1lbnRzCi0gICAgR0xiaXRmaWVsZCBjbGVhck1hc2sgPSAwOwotICAgIEFOR0xF
X1RSWShTZXRDbGVhclN0YXRlKG1TdGF0ZU1hbmFnZXIsIHRydWUsIHRydWUsIHRydWUsICZjbGVh
ck1hc2spKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRDbGVhckNvbG9yKGdsOjpDb2xvckYoMC4w
ZiwgMC4wZiwgMC4wZiwgMC4wZikpOworICAgIG1TdGF0ZU1hbmFnZXItPnNldENvbG9yTWFzayh0
cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXREZXB0aE1hc2so
dHJ1ZSk7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0Q2xlYXJEZXB0aCgxLjBmKTsKKyAgICBtU3Rh
dGVNYW5hZ2VyLT5zZXRDbGVhclN0ZW5jaWwoMCk7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0U2Np
c3NvclRlc3RFbmFibGVkKGZhbHNlKTsKKyAgICBHTGJpdGZpZWxkIGNsZWFyTWFzayA9IEdMX0NP
TE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJf
QklUOwogCiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCBzb3VyY2UtPmdldEZyYW1lYnVmZmVySUQoKSk7CiAgICAgQU5HTEVfR0xfVFJZKGNvbnRleHQs
IG1GdW5jdGlvbnMtPmNsZWFyKGNsZWFyTWFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVzdFJlc291cmNlSW5pdFRlc3QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVzdFJlc291
cmNlSW5pdFRlc3QuY3BwCmluZGV4IDdjNGFjNzFiMjE5ODgxMTFmMmI3MTU1MDcxNDRiZmViNzU1
ZDY4NmQuLjc4Yjc2NTQ1Nzg4NDg1MjJhODMzNjlmZDU4OWNlMjY2YzRiZDdjNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Sb2J1c3RSZXNv
dXJjZUluaXRUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvUm9idXN0UmVzb3VyY2VJbml0VGVzdC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBj
bGFzcyBSb2J1c3RSZXNvdXJjZUluaXRUZXN0IDogcHVibGljIEFOR0xFVGVzdAogICAgICAgICBy
ZXR1cm4gcm9idXN0U3VyZmFjZUluaXQ7CiAgICAgfQogCi0gICAgdm9pZCBzZXR1cFRleHR1cmUo
R0xUZXh0dXJlICp0ZXgpOworICAgIHZvaWQgc2V0dXBUZXh0dXJlKEdMVGV4dHVyZSAqdGV4LCBH
TGVudW0gZm9ybWF0ID0gR0xfUkdCQSk7CiAgICAgdm9pZCBzZXR1cDNEVGV4dHVyZShHTFRleHR1
cmUgKnRleCk7CiAKICAgICAvLyBDaGVja3MgZm9yIHVuaW5pdGlhbGl6ZWQgKG5vbi16ZXJvIHBp
eGVscykgaW4gYSBUZXh0dXJlLgpAQCAtMzk4LDI1ICszOTgsMjUgQEAgVEVTVF9QKFJvYnVzdFJl
c291cmNlSW5pdFRlc3QsIEJ1ZmZlckRhdGFaZXJvU2l6ZSkKIAogLy8gVGhlIGZvbGxvd2luZyB0
ZXN0IGNvZGUgdHJhbnNsYXRlZCBmcm9tIFdlYkdMIDEgdGVzdDoKIC8vIGh0dHBzOi8vd3d3Lmto
cm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3Nkay90ZXN0cy9jb25mb3JtYW5jZS9taXNjL3VuaW5p
dGlhbGl6ZWQtdGVzdC5odG1sCi12b2lkIFJvYnVzdFJlc291cmNlSW5pdFRlc3Q6OnNldHVwVGV4
dHVyZShHTFRleHR1cmUgKnRleCkKK3ZvaWQgUm9idXN0UmVzb3VyY2VJbml0VGVzdDo6c2V0dXBU
ZXh0dXJlKEdMVGV4dHVyZSAqdGV4LCBHTGVudW0gZm9ybWF0KQogewogICAgIEdMdWludCB0ZW1w
VGV4dHVyZTsKICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZW1wVGV4dHVyZSk7CiAgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZW1wVGV4dHVyZSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGtXaWR0aCwga0hlaWdodCwgMCwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIGZvcm1hdCwga1dpZHRoLCBrSGVpZ2h0LCAwLCBmb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUs
IG51bGxwdHIpOwogCiAgICAgLy8gdGhpcyBjYW4gYmUgcXVpdGUgdW5kZXRlcm1pbmlzdGljIHNv
IHRvIGltcHJvdmUgb2RkcyBvZiBzZWVpbmcgdW5pbml0aWFsaXplZCBkYXRhIHdyaXRlIGJpdHMK
ICAgICAvLyBpbnRvIHRleCB0aGVuIGRlbGV0ZSB0ZXh0dXJlIHRoZW4gcmUtY3JlYXRlIG9uZSB3
aXRoIHNhbWUgY2hhcmFjdGVyaXN0aWNzIChkcml2ZXIgd2lsbCBsaWtlbHkKICAgICAvLyByZXVz
ZSBtZW0pIHdpdGggdGhpcyB0cmljayBvbiByNTkwNDYgV2ViS2l0L09TWCBJIGdldCBGQUlMIDEw
MCUgb2YgdGhlIHRpbWUgaW5zdGVhZCBvZiB+MTUlCiAgICAgLy8gb2YgdGhlIHRpbWUuCi0KLSAg
ICBzdGQ6OmFycmF5PHVpbnQ4X3QsIGtXaWR0aCAqIGtIZWlnaHQgKiA0PiBiYWREYXRhOworICAg
IGludCBwaXhlbFNpemUgPSBmb3JtYXQgPT0gR0xfUkdCID8gMyA6IDQ7CisgICAgc3RkOjp2ZWN0
b3I8dWludDhfdD4gYmFkRGF0YShrV2lkdGggKiBrSGVpZ2h0ICogcGl4ZWxTaXplKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGJhZERhdGEuc2l6ZSgpOyArK2kpCiAgICAgewogICAgICAg
ICBiYWREYXRhW2ldID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaSAlIDI1NSk7CiAgICAgfQogCi0g
ICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIGtXaWR0aCwga0hlaWdo
dCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgMCwgMCwga1dpZHRoLCBrSGVpZ2h0LCBmb3JtYXQsIEdMX1VOU0lHTkVEX0JZ
VEUsCiAgICAgICAgICAgICAgICAgICAgIGJhZERhdGEuZGF0YSgpKTsKICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZ0ZW1wVGV4dHVyZSk7CiAKQEAgLTcwNSwxMyArNzA1LDE1IEBAIFRFU1RfUChS
b2J1c3RSZXNvdXJjZUluaXRUZXN0RVMzLCBCaW5kVGV4SW1hZ2UpCiBURVNUX1AoUm9idXN0UmVz
b3VyY2VJbml0VGVzdCwgRHJhd1dpdGhUZXh0dXJlKQogewogICAgIEFOR0xFX1NLSVBfVEVTVF9J
RighaGFzR0xFeHRlbnNpb24oKSk7Ci0KLSAgICBHTFRleHR1cmUgdGV4dHVyZTsKLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0JBLCBrV2lkdGgsIGtIZWlnaHQsIDAsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCisg
ICAgc3RydWN0CisgICAgeworICAgICAgICBHTGVudW0gZm9ybWF0OworICAgICAgICBHTENvbG9y
IHNraXBDb2xvcjsKKyAgICAgICAgYm9vbCB0ZXN0Um9idXN0SW5pdGlhbGl6YXRpb247CisgICAg
fSBzdWJjYXNlc1tdID0ge3tHTF9SR0JBLCBHTENvbG9yOjp0cmFuc3BhcmVudEJsYWNrLCBmYWxz
ZX0sCisgICAgICAgICAgICAgICAgICAgIHtHTF9SR0JBLCBHTENvbG9yOjp0cmFuc3BhcmVudEJs
YWNrLCB0cnVlfSwKKyAgICAgICAgICAgICAgICAgICAge0dMX1JHQiwgR0xDb2xvcjo6YmxhY2ss
IGZhbHNlfSwKKyAgICAgICAgICAgICAgICAgICAge0dMX1JHQiwgR0xDb2xvcjo6YmxhY2ssIHRy
dWV9fTsKICAgICBjb25zdGV4cHIgY2hhciBrVlNbXSA9CiAgICAgICAgICJhdHRyaWJ1dGUgdmVj
MiBwb3NpdGlvbjtcbiIKICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhDb29yZDtcbiIKQEAgLTcy
OCw5ICs3MzAsMzIgQEAgVEVTVF9QKFJvYnVzdFJlc291cmNlSW5pdFRlc3QsIERyYXdXaXRoVGV4
dHVyZSkKICAgICAgICAgIn0iOwogCiAgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBrVlMs
IGtGUyk7Ci0gICAgZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBj
aGVja0ZyYW1lYnVmZmVyTm9uWmVyb1BpeGVscygwLCAwLCAwLCAwLCBHTENvbG9yOjpibGFjayk7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgeworICAgICAgICBTQ09QRURf
VFJBQ0Uoc3RkOjpzdHJpbmcoIlN1YmNhc2U6ICIpICsgc3RkOjp0b19zdHJpbmcoaSkpOworICAg
ICAgICBhdXRvICZzdWJjYXNlID0gc3ViY2FzZXNbaV07CisgICAgICAgIEdMVGV4dHVyZSB0ZXh0
dXJlOworICAgICAgICBzZXR1cFRleHR1cmUoJnRleHR1cmUsIHN1YmNhc2UuZm9ybWF0KTsKKyAg
ICAgICAgaWYgKHN1YmNhc2UudGVzdFJvYnVzdEluaXRpYWxpemF0aW9uKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgc3ViY2FzZS5mb3JtYXQs
IGtXaWR0aCwga0hlaWdodCwgMCwgc3ViY2FzZS5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBSb2J1c3QgaW5pdGlhbGl6YXRpb24gYWJvdmUg
c2hvdWxkIGJlaGF2ZSBhcyB0aGUgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24gaGVyZS4KKyAgICAg
ICAgICAgIGludCBwaXhlbFNpemUgPSBzdWJjYXNlLmZvcm1hdCA9PSBHTF9SR0IgPyAzIDogNDsK
KyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGQoa1dpZHRoICoga0hlaWdodCAqIHBp
eGVsU2l6ZSk7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgc3Vi
Y2FzZS5mb3JtYXQsIGtXaWR0aCwga0hlaWdodCwgMCwgc3ViY2FzZS5mb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZC5kYXRhKCkpOworICAgICAgICB9
CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xDbGVhckNv
bG9yKDEuMGYsIDEuMGYsIDEuMGYsIDEuMGYpOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQpOworICAgICAgICBkcmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsK
KyAgICAgICAgY2hlY2tGcmFtZWJ1ZmZlck5vblplcm9QaXhlbHMoMCwgMCwga1dpZHRoLCBrSGVp
Z2h0LCBzdWJjYXNlLnNraXBDb2xvcik7CisgICAgfQogfQogCiAvLyBUZXN0cyB0aGF0IGRyYXdp
bmcgd2l0aCBhbiB1bmluaXRpYWxpemVkIG1pcHBlZCB0ZXh0dXJlIHdvcmtzIGFzIGV4cGVjdGVk
Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408523</attachid>
            <date>2020-09-11 01:11:30 -0700</date>
            <delta_ts>2020-09-11 01:23:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215804-20200911111128.patch</filename>
            <type>text/plain</type>
            <size>73235</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNmY0MzJmNTZjODU3NTlkODRhZDI5MzM0MDA3YTNhMWFhNWRlMWNkMi4uM2NjNWE3YTcyMzY1
NGNhZGM2ZDRhMTdmOTFhODY3NjBlZjU5ZTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2NyBAQAorMjAyMC0wOS0xMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdvcmthcm91bmQgTWFjIEludGVsIElyaXMgd2hlcmUg
Y2xlYXIgbW9kaWZpZXMgYWxwaGEgb2YgUkdCIHRleHR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbiBtYWNPUyBJbnRlbCBJcmlzIEdMIGRyaXZl
ciBoYXMgYSBidWcgd2hlcmUKKyAgICAgICAgZ2xDbGVhciBvbiBhIGZyYW1lYnVmZmVyIHRoYXQg
Y29udGFpbnMgUkdCIHRleHR1cmVzIHdpbGwKKyAgICAgICAgbW9kaWZ5IHRoZSBhbHBoYSBjaGFu
bmVsIG9mIHRoZSB0ZXh0dXJlLiBUaGlzIGlzIG9ic2VydmFibGUKKyAgICAgICAgd2hlbiByZW5k
ZXJpbmcgd2l0aCB0aGUgdGV4dHVyZSwgYnV0IG5vdCB3aGVuIHJlYWRpbmcgdGhlIHBpeGVscy4K
KworICAgICAgICBXb3JrYXJvdW5kIGJ5IHVzaW5nICJlbXVsYXRlZCBhbHBoYSIgY29kZXBhdGgs
IGltcGxlbWVudGluZyB0aGUKKyAgICAgICAgc3VwcG9ydCBmb3IgbXVsdGlwbGUgZHJhdyBidWZm
ZXJzIHdpdGggdGhlIHdvcmthcm91bmQuIFRoZQorICAgICAgICBzdXBwb3J0IGlzIGltcGxlbWVu
dGVkIG9ubHkgZm9yIGNhc2Ugd2hlcmUgaW5kZXBlbmRlbnQgYmxlbmQgc3RhdGVzCisgICAgICAg
IGlzIGF2YWlsYWJsZS4gUHJldmlvdXMgc3VwcG9ydCBmb3IgYnVmZmVyIDAgKyBhc3NlcnQKKyAg
ICAgICAgaXMgcHJlc2VydmVkIGZvciB0aGUgY2FzZSB3aGVyZSBpbmRlcGVuZGVudCBibGVuZCBz
dGF0ZXMgaXMgbm90CisgICAgICAgIGF2YWxhYmxlLgorCisgICAgICAgIFdvcmthcm91bmQgdGhl
IHJvYnVzdCBpbml0aWFsaXphdGlvbiBvZiB0ZXh0dXJlcyBieQorICAgICAgICB1c2luZyB0aGUg
ZW11bGF0ZWQgYWxwaGEgY29kZXBhdGgsIGl0IHdpbGwgbWFrZSB0aGUgc3dpenpsZQorICAgICAg
ICBtYW5kYXRlIGFscGhhID09IDEgb24gc2FtcGxpbmcuCisKKyAgICAgICAgRml4ZXMgdGVzdHMg
b24gdGhlIGdwdSAvIGRyaXZlcjoKKyAgICAgICAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvZ2wtdGV4aW1hZ2UuaHRtbAorICAgICAgICB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90
ZXh0dXJlcy9taXNjL2dsLXRleGltYWdlLmh0bWwKKwkKKyAgICAgICAgKiBpbmNsdWRlL3BsYXRm
b3JtL0ZlYXR1cmVzR0wuaDoKKyAgICAgICAgKiBzcmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZv
LmNwcDoKKyAgICAgICAgKGFuZ2xlOjpTeXN0ZW1JbmZvOjpoYXNEZXZpY2UpOgorICAgICAgICAq
IHNyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
YW5nbGV0eXBlcy5jcHA6CisgICAgICAgIChnbDo6QmxlbmRTdGF0ZUV4dDo6QmxlbmRTdGF0ZUV4
dCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuaDoKKyAgICAgICAgKiBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmNwcDoKKyAgICAgICAgKHJ4OjpCbGl0R0w6OmJs
aXRDb2xvckJ1ZmZlcldpdGhTaGFkZXIpOgorICAgICAgICAocng6OkJsaXRHTDo6Y2xlYXJGcmFt
ZWJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5oOgor
ICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuY3BwOgorICAgICAg
ICAocng6OkNvbnRleHRHTDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmNwcDoKKyAgICAgICAgKHJ4OjpGcmFtZWJ1
ZmZlckdMOjpGcmFtZWJ1ZmZlckdMKToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlckdMOjpibGl0
KToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlckdMOjpzeW5jU3RhdGUpOgorICAgICAgICAocng6
OkZyYW1lYnVmZmVyR0w6OmlzRGVmYXVsdCBjb25zdCk6CisgICAgICAgIChyeDo6RnJhbWVidWZm
ZXJHTDo6Z2V0QWN0aXZlRW11bGF0ZWRBbHBoYUNoYW5uZWxEcmF3QnVmZmVyTWFzayBjb25zdCk6
CisgICAgICAgIChyeDo6RnJhbWVidWZmZXJHTDo6c3luY0NsZWFyU3RhdGUpOgorICAgICAgICAo
cng6OkZyYW1lYnVmZmVyR0w6OnN5bmNDbGVhckJ1ZmZlclN0YXRlKToKKyAgICAgICAgKHJ4OjpG
cmFtZWJ1ZmZlckdMOjptb2RpZnlJbnZhbGlkYXRlQXR0YWNobWVudHNGb3JFbXVsYXRlZERlZmF1
bHRGQk8gY29uc3QpOgorICAgICAgICAocng6OkZyYW1lYnVmZmVyR0w6Omhhc0VtdWxhdGVkQWxw
aGFDaGFubmVsVGV4dHVyZUF0dGFjaG1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmg6CisgICAgICAgICogc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcDoKKyAgICAgICAgKHJ4OjpTdGF0
ZU1hbmFnZXJHTDo6c3luY1N0YXRlKToKKyAgICAgICAgKHJ4OjpTdGF0ZU1hbmFnZXJHTDo6c2V0
Q29sb3JNYXNrRm9yRnJhbWVidWZmZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9TdGF0ZU1hbmFnZXJHTC5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9TdXJmYWNlR0wuY3BwOgorICAgICAgICAocng6OlN1cmZhY2VHTDo6Y3JlYXRlRGVmYXVsdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdM
LmNwcDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1
cmZhY2VDR0wuY3BwOgorICAgICAgICAocng6OklPU3VyZmFjZUZyYW1lYnVmZmVyOjpJT1N1cmZh
Y2VGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyeDo6SU9TdXJmYWNlU3VyZmFjZUNHTDo6Y3JlYXRl
RGVmYXVsdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL1BidWZmZXJTdXJmYWNlQ0dMLmNwcDoKKyAgICAgICAgKHJ4OjpQYnVmZmVyU3VyZmFjZUNH
TDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW06CisgICAgICAgIChyeDo6V2luZG93U3Vy
ZmFjZUNHTDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWFnbC9JT1N1cmZhY2VTdXJmYWNlRUFHTC5tbToKKyAgICAgICAgKHJ4
OjpJT1N1cmZhY2VGcmFtZWJ1ZmZlcjo6SU9TdXJmYWNlRnJhbWVidWZmZXIpOgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL1BidWZmZXJTdXJmYWNlRUFHTC5jcHA6Cisg
ICAgICAgIChyeDo6UGJ1ZmZlclN1cmZhY2VFQUdMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIp
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL1dpbmRvd1N1cmZhY2VF
QUdMLm1tOgorICAgICAgICAocng6OldpbmRvd1N1cmZhY2VFQUdMOjpjcmVhdGVEZWZhdWx0RnJh
bWVidWZmZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZ2JtL0Rp
c3BsYXlHYm0uY3BwOgorICAgICAgICAocng6OkRpc3BsYXlHYm06OkJ1ZmZlcjo6ZnJhbWVidWZm
ZXJHTCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRp
bHMuY3BwOgorICAgICAgICAocng6Om5hdGl2ZWdsX2dsOjpJbml0aWFsaXplRmVhdHVyZXMpOgor
ICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRDNEVGV4dHVyZVN1cmZhY2VX
R0wuY3BwOgorICAgICAgICAocng6OkQzRFRleHR1cmVTdXJmYWNlV0dMOjpjcmVhdGVEZWZhdWx0
RnJhbWVidWZmZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhH
SVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuY3BwOgorICAgICAgICAocng6OkRYR0lTd2FwQ2hh
aW5XaW5kb3dTdXJmYWNlV0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIpOgorICAgICAgICAq
IHNyYy90ZXN0cy9nbF90ZXN0cy9DbGVhclRlc3QuY3BwOgorICAgICAgICAoYW5nbGU6OkNsZWFy
RnJhbWVidWZmZXJUZXh0dXJlUkdCVGVzdFByaW50KToKKyAgICAgICAgKGFuZ2xlOjpDbGVhckZy
YW1lYnVmZmVyVGV4dHVyZVJHQlRlc3Q6OkNsZWFyRnJhbWVidWZmZXJUZXh0dXJlUkdCVGVzdCk6
CisgICAgICAgIChhbmdsZTo6Q2xlYXJGcmFtZWJ1ZmZlclRleHR1cmVSR0JUZXN0OjpnZXRDbGVh
ckNvbG9yIGNvbnN0KToKKyAgICAgICAgKGFuZ2xlOjpDbGVhckZyYW1lYnVmZmVyVGV4dHVyZVJH
QlRlc3Q6OmdldENvbG9yTWFzayBjb25zdCk6CisgICAgICAgIChhbmdsZTo6Q2xlYXJGcmFtZWJ1
ZmZlclRleHR1cmVSR0JUZXN0OjpnZXRDbGVhck1hc2sgY29uc3QpOgorICAgICAgICAoYW5nbGU6
OlRFU1RfUCk6CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5j
cHA6CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVzdFJlc291cmNlSW5pdFRlc3Qu
Y3BwOgorICAgICAgICAoYW5nbGU6OlJvYnVzdFJlc291cmNlSW5pdFRlc3Q6OnNldHVwVGV4dHVy
ZSk6CisgICAgICAgIChhbmdsZTo6VEVTVF9QKToKKyAgICAgICAgKiBzcmMvdGVzdHMvZ2xfdGVz
dHMvVGV4dHVyZVRlc3QuY3BwOgorICAgICAgICAqIHNyYy90ZXN0cy90ZXN0X3V0aWxzL0FOR0xF
VGVzdC5jcHA6CisgICAgICAgIChBTkdMRVRlc3RCYXNlOjpzZXR1cFVuaW5pdGlhbGl6ZWRUZXh0
dXJlKToKKyAgICAgICAgKiBzcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaDoKKyAgICAg
ICAgKiBzcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmg6CisKKyAg
ICAgICAgKiBpbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzR0wuaDoKKyAgICAgICAgKiBzcmMvZ3B1
X2luZm9fdXRpbC9TeXN0ZW1JbmZvLmNwcDoKKyAgICAgICAgKGFuZ2xlOjpTeXN0ZW1JbmZvOjpo
YXNEZXZpY2UpOgorICAgICAgICAqIHNyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaDoKKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5jcHA6CisgICAgICAgIChnbDo6QmxlbmRT
dGF0ZUV4dDo6QmxlbmRTdGF0ZUV4dCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL2FuZ2xldHlw
ZXMuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmNwcDoKKyAg
ICAgICAgKHJ4OjpCbGl0R0w6OmJsaXRDb2xvckJ1ZmZlcldpdGhTaGFkZXIpOgorICAgICAgICAo
cng6OkJsaXRHTDo6Y2xlYXJGcmFtZWJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL0JsaXRHTC5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9D
b250ZXh0R0wuY3BwOgorICAgICAgICAocng6OkNvbnRleHRHTDo6Y3JlYXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmNwcDoK
KyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlckdMOjpGcmFtZWJ1ZmZlckdMKToKKyAgICAgICAgKHJ4
OjpGcmFtZWJ1ZmZlckdMOjpibGl0KToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlckdMOjpzeW5j
U3RhdGUpOgorICAgICAgICAocng6OkZyYW1lYnVmZmVyR0w6OmlzRGVmYXVsdCBjb25zdCk6Cisg
ICAgICAgIChyeDo6RnJhbWVidWZmZXJHTDo6Z2V0QWN0aXZlRW11bGF0ZWRBbHBoYUNoYW5uZWxE
cmF3QnVmZmVyTWFzayBjb25zdCk6CisgICAgICAgIChyeDo6RnJhbWVidWZmZXJHTDo6c3luY0Ns
ZWFyU3RhdGUpOgorICAgICAgICAocng6OkZyYW1lYnVmZmVyR0w6OnN5bmNDbGVhckJ1ZmZlclN0
YXRlKToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlckdMOjptb2RpZnlJbnZhbGlkYXRlQXR0YWNo
bWVudHNGb3JFbXVsYXRlZERlZmF1bHRGQk8gY29uc3QpOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcDoKKyAgICAgICAgKHJ4OjpTdGF0ZU1hbmFnZXJH
TDo6c3luY1N0YXRlKToKKyAgICAgICAgKHJ4OjpTdGF0ZU1hbmFnZXJHTDo6c2V0Q29sb3JNYXNr
Rm9yRnJhbWVidWZmZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0
ZU1hbmFnZXJHTC5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNl
R0wuY3BwOgorICAgICAgICAocng6OlN1cmZhY2VHTDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVy
KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmNwcDoKKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1cmZhY2VDR0wu
Y3BwOgorICAgICAgICAocng6OklPU3VyZmFjZUZyYW1lYnVmZmVyOjpJT1N1cmZhY2VGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChyeDo6SU9TdXJmYWNlU3VyZmFjZUNHTDo6Y3JlYXRlRGVmYXVsdEZy
YW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZm
ZXJTdXJmYWNlQ0dMLmNwcDoKKyAgICAgICAgKHJ4OjpQYnVmZmVyU3VyZmFjZUNHTDo6Y3JlYXRl
RGVmYXVsdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL1dpbmRvd1N1cmZhY2VDR0wubW06CisgICAgICAgIChyeDo6V2luZG93U3VyZmFjZUNHTDo6
Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWFnbC9JT1N1cmZhY2VTdXJmYWNlRUFHTC5tbToKKyAgICAgICAgKHJ4OjpJT1N1cmZh
Y2VGcmFtZWJ1ZmZlcjo6SU9TdXJmYWNlRnJhbWVidWZmZXIpOgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9lYWdsL1BidWZmZXJTdXJmYWNlRUFHTC5jcHA6CisgICAgICAgIChy
eDo6UGJ1ZmZlclN1cmZhY2VFQUdMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIpOgorICAgICAg
ICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL1dpbmRvd1N1cmZhY2VFQUdMLm1tOgor
ICAgICAgICAocng6OldpbmRvd1N1cmZhY2VFQUdMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIp
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZ2JtL0Rpc3BsYXlHYm0u
Y3BwOgorICAgICAgICAocng6OkRpc3BsYXlHYm06OkJ1ZmZlcjo6ZnJhbWVidWZmZXJHTCk6Cisg
ICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwOgor
ICAgICAgICAocng6Om5hdGl2ZWdsX2dsOjpJbml0aWFsaXplRmVhdHVyZXMpOgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRDNEVGV4dHVyZVN1cmZhY2VXR0wuY3BwOgor
ICAgICAgICAocng6OkQzRFRleHR1cmVTdXJmYWNlV0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZm
ZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFp
bldpbmRvd1N1cmZhY2VXR0wuY3BwOgorICAgICAgICAocng6OkRYR0lTd2FwQ2hhaW5XaW5kb3dT
dXJmYWNlV0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIpOgorICAgICAgICAqIHNyYy90ZXN0
cy9nbF90ZXN0cy9DbGVhclRlc3QuY3BwOgorICAgICAgICAoYW5nbGU6OkNsZWFyRnJhbWVidWZm
ZXJUZXh0dXJlUkdCVGVzdFByaW50KToKKyAgICAgICAgKGFuZ2xlOjpDbGVhckZyYW1lYnVmZmVy
VGV4dHVyZVJHQlRlc3Q6OkNsZWFyRnJhbWVidWZmZXJUZXh0dXJlUkdCVGVzdCk6CisgICAgICAg
IChhbmdsZTo6Q2xlYXJGcmFtZWJ1ZmZlclRleHR1cmVSR0JUZXN0OjpnZXRDbGVhckNvbG9yIGNv
bnN0KToKKyAgICAgICAgKGFuZ2xlOjpDbGVhckZyYW1lYnVmZmVyVGV4dHVyZVJHQlRlc3Q6Omdl
dENvbG9yTWFzayBjb25zdCk6CisgICAgICAgIChhbmdsZTo6Q2xlYXJGcmFtZWJ1ZmZlclRleHR1
cmVSR0JUZXN0OjpnZXRDbGVhck1hc2sgY29uc3QpOgorICAgICAgICAoYW5nbGU6OlRFU1RfUCk6
CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5jcHA6CisgICAg
ICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVzdFJlc291cmNlSW5pdFRlc3QuY3BwOgorICAg
ICAgICAoYW5nbGU6OlJvYnVzdFJlc291cmNlSW5pdFRlc3Q6OnNldHVwVGV4dHVyZSk6CisgICAg
ICAgIChhbmdsZTo6VEVTVF9QKToKKyAgICAgICAgKiBzcmMvdGVzdHMvZ2xfdGVzdHMvVGV4dHVy
ZVRlc3QuY3BwOgorICAgICAgICAqIHNyYy90ZXN0cy90ZXN0X3V0aWxzL0FOR0xFVGVzdC5jcHA6
CisgICAgICAgIChBTkdMRVRlc3RCYXNlOjpzZXR1cFVuaW5pdGlhbGl6ZWRUZXh0dXJlKToKKyAg
ICAgICAgKiBzcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaDoKKyAgICAgICAgKiBzcmMv
dGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmg6CisKIDIwMjAtMDktMDMg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrIHVu
aWZvcm0gc2FtcGxlcnMgaW4gYW4gYXJyYXkgdW51c2VkIHBlciBlbGVtZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzR0wuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vRmVhdHVyZXNHTC5oCmlu
ZGV4IDZmNzIxMTNmYjFiMTgwMGQ3ZDUxYWNhNjEzMDJhNDUyMzdmOGRiYmEuLjExZTdmYzE5OGFl
YzgyMDU4NTNhNmExZGM1ZWE5YjI3NjFmMDk1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vRmVhdHVyZXNHTC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vRmVhdHVyZXNHTC5oCkBAIC00NjksNiArNDY5
LDEyIEBAIHN0cnVjdCBGZWF0dXJlc0dMIDogRmVhdHVyZVNldEJhc2UKICAgICAgICAgImVtdWxh
dGVfcGFja19za2lwX3Jvd3NfYW5kX3BhY2tfc2tpcF9waXhlbHMiLCBGZWF0dXJlQ2F0ZWdvcnk6
Ok9wZW5HTFdvcmthcm91bmRzLAogICAgICAgICAiR0xfUEFDS19TS0lQX1JPV1MgYW5kIEdMX1BB
Q0tfU0tJUF9QSVhFTFMgYXJlIGlnbm9yZWQgaW4gQXBwbGUncyBPcGVuR0wgZHJpdmVyLiIsICZt
ZW1iZXJzLAogICAgICAgICAiaHR0cHM6Ly9hbmdsZWJ1Zy5jb20vNDg0OSJ9OworCisgICAgRmVh
dHVyZSBjbGVhckFmZmVjdHNSR0JUZXh0dXJlQWxwaGEgPSB7ImNsZWFyX2FmZmVjdHNfcmdiX3Rl
eHR1cmVfYWxwaGEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZlYXR1cmVDYXRlZ29yeTo6T3BlbkdMV29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImdsQ2xlYXIgd3JpdGVzIGFscGhhIHdoZW4gY2xlYXJp
bmcgdW5pbml0aWFsaXplZCBSR0IiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRleHR1cmVzIGluIEFwcGxlJ3MgT3BlbkdMIGRyaXZlciBvbiBzb21lIEhXIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWVtYmVycywgImh0
dHBzOi8vYW5nbGVidWcuY29tLzQ5ODYifTsKIH07CiAKIGlubGluZSBGZWF0dXJlc0dMOjpGZWF0
dXJlc0dMKCkgID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5jcHAKaW5kZXggZjc0ODk0OWQ5ZjE1NzAy
OGQ2MjE2MjdhNDQ3ZWI5YWE2ZGRjMGM5Yi4uM2I2NWY3YzBjMzUxZTIwZWUxMGJkYjJhMzliNmZh
ZGVmMDM2YTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9p
bmZvX3V0aWwvU3lzdGVtSW5mby5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5jcHAKQEAgLTEwMCw2ICsxMDAsMTcgQEAgYm9vbCBT
eXN0ZW1JbmZvOjpoYXNBTURHUFUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9v
bCBTeXN0ZW1JbmZvOjpoYXNEZXZpY2UoVmVuZG9ySUQgdmVuZG9ySWQsIERldmljZUlEIGRldmlj
ZUlkKQoreworICAgIGZvciAoY29uc3QgR1BVRGV2aWNlSW5mbyAmZ3B1IDogZ3B1cykKKyAgICB7
CisgICAgICAgIGlmIChncHUudmVuZG9ySWQgPT0gdmVuZG9ySWQgJiYgZ3B1LmRldmljZUlkID09
IGRldmljZUlkKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CiBib29sIElzQU1EKFZlbmRvcklEIHZlbmRv
cklkKQogewogICAgIHJldHVybiB2ZW5kb3JJZCA9PSBrVmVuZG9ySURfQU1EOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5o
CmluZGV4IGQyOGU3Y2EyYzA2ZGI3MjIzMGNjNjk3ZTM4YzczOWQ2NmQzZWY5YzkuLmZjMzEzZmQy
MzJmZTA3MjA2ZDdkNDIyY2I4OWQxYjNkMmJiYzBjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvLmgKQEAgLTU1LDYg
KzU1LDcgQEAgc3RydWN0IFN5c3RlbUluZm8KICAgICBib29sIGhhc05WSURJQUdQVSgpIGNvbnN0
OwogICAgIGJvb2wgaGFzSW50ZWxHUFUoKSBjb25zdDsKICAgICBib29sIGhhc0FNREdQVSgpIGNv
bnN0OworICAgIGJvb2wgaGFzRGV2aWNlKFZlbmRvcklEIHZlbmRvcklkLCBEZXZpY2VJRCBkZXZp
Y2VJZCk7CiAKICAgICBzdGQ6OnZlY3RvcjxHUFVEZXZpY2VJbmZvPiBncHVzOwogCkBAIC0xMDIs
NiArMTAzLDcgQEAgY29uc3RleHByIFZlbmRvcklEIGtWZW5kb3JJRF9LYXphbiAgICAgICA9IDB4
MTAwMDM7CiAvLyBLbm93biBkZXZpY2UgSURzCiBjb25zdGV4cHIgRGV2aWNlSUQga0RldmljZUlE
X1N3aWZ0c2hhZGVyID0gMHhDMERFOwogY29uc3RleHByIERldmljZUlEIGtEZXZpY2VJRF9BZHJl
bm81NDAgICA9IDB4NTA0MDAwMTsKK2NvbnN0ZXhwciBEZXZpY2VJRCBrRGV2aWNlSURfSXJpcyAg
ICAgICAgPSAweEQyNjsKIAogLy8gUHJlZGljYXRlcyBvbiB2ZW5kb3IgSURzCiBib29sIElzQU1E
KFZlbmRvcklEIHZlbmRvcklkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9hbmdsZXR5cGVzLmNwcAppbmRleCA1ZTA1YjA5MGQxN2Y5NWRhMzI3ZjJhMzVj
MGU5NmFmZWQ4ZGM0YzFlLi43YjBmYjVkOTY2OGIwNzk0ODE4NzBiMGNiNDQ0ZmIwYmJlY2JhYzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0
eXBlcy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xl
dHlwZXMuY3BwCkBAIC0yNTcsNiArMjU3LDEwIEBAIEJsZW5kU3RhdGVFeHQ6OkJsZW5kU3RhdGVF
eHQoY29uc3Qgc2l6ZV90IGRyYXdCdWZmZXJzKQogICAgICAgbU1heERyYXdCdWZmZXJzKGRyYXdC
dWZmZXJzKQoge30KIAorQmxlbmRTdGF0ZUV4dDo6QmxlbmRTdGF0ZUV4dChjb25zdCBCbGVuZFN0
YXRlRXh0ICZvdGhlcikKK3sKKyAgICAqdGhpcyA9IG90aGVyOworfQogQmxlbmRTdGF0ZUV4dCAm
QmxlbmRTdGF0ZUV4dDo6b3BlcmF0b3I9KGNvbnN0IEJsZW5kU3RhdGVFeHQgJm90aGVyKQogewog
ICAgIG1lbWNweSh0aGlzLCAmb3RoZXIsIHNpemVvZihCbGVuZFN0YXRlRXh0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuaAppbmRleCAw
YTA1ZmU5NWFkZjUwYmFmYTExZTA4MDYwNDFlNWQzOWFlZTk5ZGYwLi42NjI3NjNmODU5YjQwOTM3
MzYyODViNDZjYTViMjYxZWIzNmQ2Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmgKQEAgLTUyNiw2ICs1MjYsOCBAQCBjbGFzcyBC
bGVuZFN0YXRlRXh0IGZpbmFsCiAKICAgICBCbGVuZFN0YXRlRXh0KGNvbnN0IHNpemVfdCBkcmF3
QnVmZmVycyA9IDEpOwogCisgICAgQmxlbmRTdGF0ZUV4dChjb25zdCBCbGVuZFN0YXRlRXh0ICZv
dGhlcik7CisKICAgICBCbGVuZFN0YXRlRXh0ICZvcGVyYXRvcj0oY29uc3QgQmxlbmRTdGF0ZUV4
dCAmb3RoZXIpOwogCiAgICAgLy8vLy8vLy8vIEJsZW5kaW5nIFRvZ2dsZSAvLy8vLy8vLy8KQEAg
LTYxOCwyMyArNjIwLDIzIEBAIGNsYXNzIEJsZW5kU3RhdGVFeHQgZmluYWwKIAogICAgIC8vLy8v
Ly8vLyBEYXRhIE1lbWJlcnMgLy8vLy8vLy8vCiAKLSAgICBjb25zdCBGYWN0b3JTdG9yYWdlOjpU
eXBlIG1NYXhGYWN0b3JNYXNrOworICAgIEZhY3RvclN0b3JhZ2U6OlR5cGUgbU1heEZhY3Rvck1h
c2s7CiAgICAgRmFjdG9yU3RvcmFnZTo6VHlwZSBtU3JjQ29sb3I7CiAgICAgRmFjdG9yU3RvcmFn
ZTo6VHlwZSBtRHN0Q29sb3I7CiAgICAgRmFjdG9yU3RvcmFnZTo6VHlwZSBtU3JjQWxwaGE7CiAg
ICAgRmFjdG9yU3RvcmFnZTo6VHlwZSBtRHN0QWxwaGE7CiAKLSAgICBjb25zdCBFcXVhdGlvblN0
b3JhZ2U6OlR5cGUgbU1heEVxdWF0aW9uTWFzazsKKyAgICBFcXVhdGlvblN0b3JhZ2U6OlR5cGUg
bU1heEVxdWF0aW9uTWFzazsKICAgICBFcXVhdGlvblN0b3JhZ2U6OlR5cGUgbUVxdWF0aW9uQ29s
b3I7CiAgICAgRXF1YXRpb25TdG9yYWdlOjpUeXBlIG1FcXVhdGlvbkFscGhhOwogCi0gICAgY29u
c3QgQ29sb3JNYXNrU3RvcmFnZTo6VHlwZSBtTWF4Q29sb3JNYXNrOworICAgIENvbG9yTWFza1N0
b3JhZ2U6OlR5cGUgbU1heENvbG9yTWFzazsKICAgICBDb2xvck1hc2tTdG9yYWdlOjpUeXBlIG1D
b2xvck1hc2s7CiAKLSAgICBjb25zdCBEcmF3QnVmZmVyTWFzayBtTWF4RW5hYmxlZE1hc2s7Cisg
ICAgRHJhd0J1ZmZlck1hc2sgbU1heEVuYWJsZWRNYXNrOwogICAgIERyYXdCdWZmZXJNYXNrIG1F
bmFibGVkTWFzazsKIAotICAgIGNvbnN0IHNpemVfdCBtTWF4RHJhd0J1ZmZlcnM7CisgICAgc2l6
ZV90IG1NYXhEcmF3QnVmZmVyczsKIH07CiAKIC8vIFVzZWQgaW4gU3RhdGVDYWNoZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Js
aXRHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvQmxpdEdMLmNwcAppbmRleCAyMjgzMDdhOThmYTMwZGU4ZWExZWFhYTdhNGVmMjk5MTRiNGMx
NTk1Li42M2IwZmQzOGM2OGJlMjRiNzVhMjdhYTgwZjY4ZTJkNGYzYWNiMGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdM
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvQmxpdEdMLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJlcGFyZUZv
ckNsZWFyKFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCiAgICAgewogICAgICAgICBvdXRV
bmJpbmRUYXJnZXRzLT5wdXNoX2JhY2soR0xfU1RFTkNJTF9BVFRBQ0hNRU5UKTsKICAgICB9Ci0K
KyAgICAvLyBUT0RPOiBUaGlzIHdpbGwgY2xlYXIgYWxzbyB0aGUgYWxwaGEgY2hhbm5lbCBvZiBh
biBlbXVsYXRlZCBhbHBoYSB0ZXh0dXJlLgogICAgIEFOR0xFX1RSWShTZXRDbGVhclN0YXRlKHN0
YXRlTWFuYWdlciwgYmluZENvbG9yLCBiaW5kRGVwdGgsIGJpbmRTdGVuY2lsLCBvdXRDbGVhck1h
c2spKTsKIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTQwMSw3ICs0
MDEsNyBAQCBhbmdsZTo6UmVzdWx0IEJsaXRHTDo6YmxpdENvbG9yQnVmZmVyV2l0aFNoYWRlcihj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWFJbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJmRlc3RBcmVhSW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCB3cml0ZUFscGhhKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXNhYmxlQWxwaGEpCiB7CiAgICAg
QU5HTEVfVFJZKGluaXRpYWxpemVSZXNvdXJjZXMoY29udGV4dCkpOwogICAgIG1TdGF0ZU1hbmFn
ZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVNjcmF0Y2hGQk8pOwpAQCAtNDEz
LDggKzQxMywxNSBAQCBhbmdsZTo6UmVzdWx0IEJsaXRHTDo6YmxpdENvbG9yQnVmZmVyV2l0aFNo
YWRlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICB7CiAgICAgICAgIHJldHVybiBh
bmdsZTo6UmVzdWx0OjpTdG9wOwogICAgIH0KLSAgICBhbmdsZTo6UmVzdWx0IHJlc3VsdCA9IGJs
aXRDb2xvckJ1ZmZlcldpdGhTaGFkZXIoY29udGV4dCwgc291cmNlLCBtU2NyYXRjaEZCTywgc291
cmNlQXJlYUluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXN0QXJlYUluLCBmaWx0ZXIsIHdyaXRlQWxwaGEpOworICAgIGdsOjpEcmF3QnVm
ZmVyTWFzayBlbmFibGVkRHJhd0J1ZmZlcnN7MX07CisgICAgZ2w6OkRyYXdCdWZmZXJNYXNrIGRp
c2FibGVkQWxwaGFEcmF3QnVmZmVyczsKKyAgICBpZiAoZGlzYWJsZUFscGhhKQorICAgIHsKKyAg
ICAgICAgZGlzYWJsZWRBbHBoYURyYXdCdWZmZXJzLnNldCgwLCB0cnVlKTsKKyAgICB9CisgICAg
YW5nbGU6OlJlc3VsdCByZXN1bHQgPQorICAgICAgICBibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVy
KGNvbnRleHQsIHNvdXJjZSwgbVNjcmF0Y2hGQk8sIHNvdXJjZUFyZWFJbiwgZGVzdEFyZWFJbiwg
ZmlsdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWREcmF3QnVm
ZmVycywgZGlzYWJsZWRBbHBoYURyYXdCdWZmZXJzKTsKICAgICAvLyBVbmJpbmQgdGhlIHRleHR1
cmUgZnJvbSB0aGUgdGhlIHNjcmF0Y2ggZnJhbWVidWZmZXIuCiAgICAgQU5HTEVfR0xfVFJZKGNv
bnRleHQsIG1GdW5jdGlvbnMtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkVOREVSQlVGRkVSLCAwKSk7CkBAIC00
MjcsMTEgKzQzNCwxMyBAQCBhbmdsZTo6UmVzdWx0IEJsaXRHTDo6YmxpdENvbG9yQnVmZmVyV2l0
aFNoYWRlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFy
ZWFJbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhSW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB3cml0ZUFscGhhKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkRyYXdCdWZmZXJNYXNr
IGRpc2FibGVkQWxwaGFEcmF3QnVmZmVycykKIHsKICAgICBjb25zdCBGcmFtZWJ1ZmZlckdMICpk
ZXN0R0wgPSBHZXRJbXBsQXM8RnJhbWVidWZmZXJHTD4oZGVzdCk7CisKICAgICByZXR1cm4gYmxp
dENvbG9yQnVmZmVyV2l0aFNoYWRlcihjb250ZXh0LCBzb3VyY2UsIGRlc3RHTC0+Z2V0RnJhbWVi
dWZmZXJJRCgpLCBzb3VyY2VBcmVhSW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdEFyZWFJbiwgZmlsdGVyLCB3cml0ZUFscGhhKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0QXJlYUluLCBmaWx0ZXIsIGRlc3QtPmdldFN0YXRlKCku
Z2V0RW5hYmxlZERyYXdCdWZmZXJzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlzYWJsZWRBbHBoYURyYXdCdWZmZXJzKTsKIH0KIAogYW5nbGU6OlJlc3VsdCBCbGl0
R0w6OmJsaXRDb2xvckJ1ZmZlcldpdGhTaGFkZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
CkBAIC00NDAsNyArNDQ5LDggQEAgYW5nbGU6OlJlc3VsdCBCbGl0R0w6OmJsaXRDb2xvckJ1ZmZl
cldpdGhTaGFkZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VBcmVhSW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYUluLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgd3JpdGVBbHBoYSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpEcmF3QnVmZmVy
TWFzayBlbmFibGVkRHJhd0J1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6RHJhd0J1ZmZlck1hc2sgZGlzYWJsZWRBbHBoYURyYXdCdWZm
ZXJzKQogewogICAgIEFOR0xFX1RSWShpbml0aWFsaXplUmVzb3VyY2VzKGNvbnRleHQpKTsKIApA
QCAtNTMwLDggKzU0MCwxMiBAQCBhbmdsZTo6UmVzdWx0IEJsaXRHTDo6YmxpdENvbG9yQnVmZmVy
V2l0aFNoYWRlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBBTkdMRV9UUlkoc2Nv
cGVkU3RhdGUuZW50ZXIoY29udGV4dCwgZGVzdEFyZWEsIFNjb3BlZEdMU3RhdGU6OktFRVBfU0NJ
U1NPUikpOwogICAgIHNjb3BlZFN0YXRlLndpbGxVc2VUZXh0dXJlVW5pdChjb250ZXh0LCAwKTsK
IAotICAgIC8vIFNldCB0aGUgd3JpdGUgY29sb3IgbWFzayB0byBwb3RlbnRpYWxseSBub3Qgd3Jp
dGUgYWxwaGEKLSAgICBtU3RhdGVNYW5hZ2VyLT5zZXRDb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgd3JpdGVBbHBoYSk7CisgICAgZ2w6OkJsZW5kU3RhdGVFeHQgYmxlbmRTdGF0ZXtlbmFibGVk
RHJhd0J1ZmZlcnMuc2l6ZSgpfTsKKyAgICBmb3IgKGF1dG8gZHJhd0J1ZmZlciA6IGVuYWJsZWRE
cmF3QnVmZmVycykKKyAgICB7CisgICAgICAgIGJsZW5kU3RhdGUuc2V0Q29sb3JNYXNrSW5kZXhl
ZChkcmF3QnVmZmVyLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICB9CisgICAgbVN0YXRl
TWFuYWdlci0+c2V0Q29sb3JNYXNrRm9yRnJhbWVidWZmZXIoYmxlbmRTdGF0ZSwgZGlzYWJsZWRB
bHBoYURyYXdCdWZmZXJzKTsKIAogICAgIC8vIFNldCB1bmlmb3JtcwogICAgIG1TdGF0ZU1hbmFn
ZXItPmFjdGl2ZVRleHR1cmUoMCk7CkBAIC05OTIsNiArMTAwNiw3IEBAIGFuZ2xlOjpSZXN1bHQg
QmxpdEdMOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBGcmFt
ZWJ1ZmZlckdMCiAgICAgLy8gaW5pdGlhbGl6ZVJlc291cmNlcyBza2lwcGVkIGJlY2F1c2Ugbm8g
bG9jYWwgc3RhdGUgaXMgdXNlZAogCiAgICAgLy8gQ2xlYXIgYWxsIGF0dGFjaG1lbnRzCisgICAg
Ly8gVE9ETzogdGhpcyB3aWxsIGNsZWFyIGFscGhhIG9mIGFuIGVtdWxhdGVkIGFscGhhIGZyYW1l
YnVmZmVyLgogICAgIEdMYml0ZmllbGQgY2xlYXJNYXNrID0gMDsKICAgICBBTkdMRV9UUlkoU2V0
Q2xlYXJTdGF0ZShtU3RhdGVNYW5hZ2VyLCB0cnVlLCB0cnVlLCB0cnVlLCAmY2xlYXJNYXNrKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9CbGl0R0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9CbGl0R0wuaAppbmRleCAzZmI1MGJhYmNlOTM3MmM1Y2ZiODE4ODVlMWExNGMy
NGQ0NTBhYmFjLi5jYmM5NzFiMmRhZDI4M2EwY2Y3NjliZjY2N2NjNTRkNTQ3YmZiMjFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
QmxpdEdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL0JsaXRHTC5oCkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIEJsaXRHTCA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB3cml0ZUFscGhh
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkRyYXdC
dWZmZXJNYXNrIGRpc2FibGVkQWxwaGFDaGFubmVsTWFzayk7CiAKICAgICBhbmdsZTo6UmVzdWx0
IGJsaXRDb2xvckJ1ZmZlcldpdGhTaGFkZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqc291cmNlLApAQCAtNzksNyArNzksOCBAQCBjbGFzcyBCbGl0R0wgOiBhbmdsZTo6
Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgd3JpdGVBbHBo
YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpEcmF3
QnVmZmVyTWFzayBkcmF3QnVmZmVyc01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpEcmF3QnVmZmVyTWFzayBkaXNhYmxlZEFscGhhQ2hhbm5lbE1h
c2spOwogCiAgICAgYW5nbGU6OlJlc3VsdCBibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVyKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSwKQEAgLTg5LDcgKzkwLDcg
QEAgY2xhc3MgQmxpdEdMIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJmRlc3RBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZmlsdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHdyaXRlQWxwaGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGRpc2FibGVBbHBoYSk7CiAKICAgICBhbmdsZTo6UmVzdWx0
IGNvcHlTdWJUZXh0dXJlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUdMICpzb3VyY2UsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250
ZXh0R0wuY3BwCmluZGV4IDFhNGQ1NTk5YTNiYmJkOTE1ZjFkYzllYjcxNTk4YzRjNWE2ZDZlNjYu
LjBmMjgwZmNkMzIzMTUwMWNjYTE4ZjkxYjQ0YjAwNzc5YjExNGZhNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9Db250ZXh0R0wuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEZyYW1lYnVmZmVySW1wbCAqQ29udGV4
dEdMOjpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkK
ICAgICBHTHVpbnQgZmJvID0gMDsKICAgICBmdW5jcy0+Z2VuRnJhbWVidWZmZXJzKDEsICZmYm8p
OwogCi0gICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKGRhdGEsIGZibywgZmFsc2UsIGZhbHNl
KTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woZGF0YSwgZmJvKTsKIH0KIAogVGV4dHVy
ZUltcGwgKkNvbnRleHRHTDo6Y3JlYXRlVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZz
dGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmNwcAppbmRleCA4ZWQ0N2ZkMTQ3
YzZkNTk0MWNiYWNjMTRkODc1ODVhMzgwZjM0OTQzLi43MTQ3MTZkOWU2M2Q0NjIzMmUyOGY3YmM2
NjhlZGVjNGU1OGI3NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuY3BwCkBA
IC0zODQsMTUgKzM4NCw4IEBAIGJvb2wgSXNWYWxpZFVuc2lnbmVkU2hvcnRSZWFkUGl4ZWxzRm9y
bWF0KEdMZW51bSByZWFkRm9ybWF0LCBjb25zdCBnbDo6Q29udGV4dCAqCiAKIH0gIC8vIG5hbWVz
cGFjZQogCi1GcmFtZWJ1ZmZlckdMOjpGcmFtZWJ1ZmZlckdMKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
clN0YXRlICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNEZWZhdWx0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGVtdWxhdGVkQWxwaGEpCi0gICAgOiBGcmFtZWJ1ZmZlcklt
cGwoZGF0YSksCi0gICAgICBtRnJhbWVidWZmZXJJRChpZCksCi0gICAgICBtSXNEZWZhdWx0KGlz
RGVmYXVsdCksCi0gICAgICBtSGFzRW11bGF0ZWRBbHBoYUF0dGFjaG1lbnQoZW11bGF0ZWRBbHBo
YSksCi0gICAgICBtQXBwbGllZEVuYWJsZWREcmF3QnVmZmVycygxKQorRnJhbWVidWZmZXJHTDo6
RnJhbWVidWZmZXJHTChjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwgR0x1aW50IGlk
LCBGcmFtZWJ1ZmZlcktpbmQga2luZCkKKyAgICA6IEZyYW1lYnVmZmVySW1wbChkYXRhKSwgbUZy
YW1lYnVmZmVySUQoaWQpLCBtS2luZChraW5kKSwgbUFwcGxpZWRFbmFibGVkRHJhd0J1ZmZlcnMo
MSkKIHt9CiAKIEZyYW1lYnVmZmVyR0w6On5GcmFtZWJ1ZmZlckdMKCkKQEAgLTc3Myw3ICs3NjYs
OSBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyR0w6OmJsaXQoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiAKICAgICAvLyBJZiB0aGUgZGVzdGluYXRpb24gaGFzIGFuIGVtdWxhdGVkIGFs
cGhhIGNoYW5uZWwsIHdlIG5lZWQgdG8gYmxpdCB3aXRoIGEgc2hhZGVyIHdpdGggYWxwaGEKICAg
ICAvLyB3cml0ZXMgZGlzYWJsZWQuCi0gICAgaWYgKG1IYXNFbXVsYXRlZEFscGhhQXR0YWNobWVu
dCkKKyAgICBEcmF3QnVmZmVyTWFzayBlbXVsYXRlZEFscGhhQ2hhbm5lbERyYXdCdWZmZXJNYXNr
ID0KKyAgICAgICAgZ2V0QWN0aXZlRW11bGF0ZWRBbHBoYUNoYW5uZWxEcmF3QnVmZmVyTWFzaygp
OworICAgIGlmIChlbXVsYXRlZEFscGhhQ2hhbm5lbERyYXdCdWZmZXJNYXNrLmFueSgpKQogICAg
IHsKICAgICAgICAgbmVlZE1hbnVhbENvbG9yQmxpdCA9IHRydWU7CiAgICAgfQpAQCAtNzg3LDcg
Kzc4Miw3IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJHTDo6YmxpdChjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgQmxpdEdMICpibGl0dGVyID0gR2V0QmxpdEdMKGNvbnRl
eHQpOwogICAgICAgICBBTkdMRV9UUlkoYmxpdHRlci0+YmxpdENvbG9yQnVmZmVyV2l0aFNoYWRl
cihjb250ZXh0LCBzb3VyY2VGcmFtZWJ1ZmZlciwgZGVzdEZyYW1lYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLCBk
ZXN0QXJlYSwgZmlsdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAhbUhhc0VtdWxhdGVkQWxwaGFBdHRhY2htZW50KSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtdWxhdGVkQWxwaGFD
aGFubmVsRHJhd0J1ZmZlck1hc2spKTsKICAgICAgICAgYmxpdE1hc2sgJj0gfkdMX0NPTE9SX0JV
RkZFUl9CSVQ7CiAgICAgfQogCkBAIC0xMjAxLDcgKzExOTYsNyBAQCBhbmdsZTo6UmVzdWx0IEZy
YW1lYnVmZmVyR0w6OnN5bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6
RGlydHlCaXRzICZkaXJ0eUJpdHMpCiB7CiAgICAgLy8gRG9uJ3QgbmVlZCB0byBzeW5jIHN0YXRl
IGZvciB0aGUgZGVmYXVsdCBGQk8uCi0gICAgaWYgKG1Jc0RlZmF1bHQpCisgICAgaWYgKGlzRGVm
YXVsdCgpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwog
ICAgIH0KQEAgLTEyODUsMTYgKzEyODAsMTQgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlckdM
OjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQgPSBuZXdBdHRhY2htZW50
OwogICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gSGlkaW5n
IGFuIGFscGhhIGNoYW5uZWwgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiBpdCdzIHRoZSBmaXJzdCBh
dHRhY2htZW50Ci0gICAgICAgICAgICAgICAgICAgIC8vIGN1cnJlbnRseS4gQXNzZXJ0IHRoYXQg
dGhlc2UgZW11bGF0ZWQgdGV4dHVyZXMgYXJlIG5vdCBib3VuZCB0byBhIGZyYW1lYnVmZmVyCi0g
ICAgICAgICAgICAgICAgICAgIC8vIHVzaW5nIE1SVC4KLSAgICAgICAgICAgICAgICAgICAgaWYg
KGluZGV4ID09IDApCisgICAgICAgICAgICAgICAgICAgIGF1dG8gb2xkRW11bGF0ZWRBbHBoYSA9
IG1FbXVsYXRlZEFscGhhV29ya2Fyb3VuZENvbG9yQXR0YWNobWVudEJpdHM7CisgICAgICAgICAg
ICAgICAgICAgIG1FbXVsYXRlZEFscGhhV29ya2Fyb3VuZENvbG9yQXR0YWNobWVudEJpdHMuc2V0
KAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIElzRW11bGF0ZWRBbHBoYUNoYW5uZWxU
ZXh0dXJlQXR0YWNobWVudChhdHRhY2htZW50KSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChv
bGRFbXVsYXRlZEFscGhhICE9IG1FbXVsYXRlZEFscGhhV29ya2Fyb3VuZENvbG9yQXR0YWNobWVu
dEJpdHMpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1I
YXNFbXVsYXRlZEFscGhhQXR0YWNobWVudCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXNFbXVsYXRlZEFscGhhQ2hhbm5lbFRleHR1cmVBdHRhY2htZW50KGF0dGFjaG1lbnQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogbWFyayBzdGF0ZW1hbmFnZXIgY29sb3IgbWFz
ayBkaXJ0eSBpZiB0aGUgRkIgaXMgYm91bmQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRv
IGRyYXcgZnJhbWVidWZmZXIgYmluZGluZy4KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoaW5kZXggPT0gMCB8fCAhSXNFbXVsYXRlZEFscGhhQ2hhbm5l
bFRleHR1cmVBdHRhY2htZW50KGF0dGFjaG1lbnQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xMzE3LDEyICsxMzEwLDM2IEBA
IEdMdWludCBGcmFtZWJ1ZmZlckdMOjpnZXRGcmFtZWJ1ZmZlcklEKCkgY29uc3QKIAogYm9vbCBG
cmFtZWJ1ZmZlckdMOjppc0RlZmF1bHQoKSBjb25zdAogewotICAgIHJldHVybiBtSXNEZWZhdWx0
OworICAgIHJldHVybiBtS2luZCAhPSBrRnJhbWVidWZmZXJPYmplY3Q7CiB9CiAKLWJvb2wgRnJh
bWVidWZmZXJHTDo6aGFzRW11bGF0ZWRBbHBoYUNoYW5uZWxUZXh0dXJlQXR0YWNobWVudCgpIGNv
bnN0CitEcmF3QnVmZmVyTWFzayBGcmFtZWJ1ZmZlckdMOjpnZXRBY3RpdmVFbXVsYXRlZEFscGhh
Q2hhbm5lbERyYXdCdWZmZXJNYXNrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUhhc0VtdWxhdGVk
QWxwaGFBdHRhY2htZW50OworICAgIGlmIChtS2luZCA9PSBrRGVmYXVsdEZyYW1lYnVmZmVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHt9OworICAgIH0KKyAgICBpZiAobUtpbmQgPT0ga0RlZmF1
bHRGcmFtZWJ1ZmZlcldpdGhFbXVsYXRlZEFscGhhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERy
YXdCdWZmZXJNYXNrezF9OworICAgIH0KKyAgICBpZiAobUVtdWxhdGVkQWxwaGFXb3JrYXJvdW5k
Q29sb3JBdHRhY2htZW50Qml0cy5ub25lKCkpCisgICAgeworICAgICAgICByZXR1cm4ge307Cisg
ICAgfQorICAgIERyYXdCdWZmZXJNYXNrIHJlc3VsdDsKKyAgICBjb25zdCBhdXRvICZkcmF3QnVm
ZmVycyA9IG1TdGF0ZS5nZXREcmF3QnVmZmVyU3RhdGVzKCk7CisgICAgZm9yIChzaXplX3QgZHJh
d0J1ZmZlciA9IDA7IGRyYXdCdWZmZXIgPCBkcmF3QnVmZmVycy5zaXplKCk7ICsrZHJhd0J1ZmZl
cikKKyAgICB7CisgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IGRyYXdCdWZmZXJzW2RyYXdCdWZm
ZXJdOworICAgICAgICBpZiAoYXR0YWNobWVudCA+PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCAmJgor
ICAgICAgICAgICAgYXR0YWNobWVudCA8IEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgbUVtdWxhdGVk
QWxwaGFXb3JrYXJvdW5kQ29sb3JBdHRhY2htZW50Qml0cy5zaXplKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNpemVfdCBhdHRhY2htZW50SW5kZXggPSBhdHRhY2htZW50IC0gR0xfQ09MT1Jf
QVRUQUNITUVOVDA7CisgICAgICAgICAgICByZXN1bHQuc2V0KGRyYXdCdWZmZXIsIG1FbXVsYXRl
ZEFscGhhV29ya2Fyb3VuZENvbG9yQXR0YWNobWVudEJpdHNbYXR0YWNobWVudEluZGV4XSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBGcmFtZWJ1ZmZl
ckdMOjpzeW5jQ2xlYXJTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVs
ZCBtYXNrKQpAQCAtMTMzNSw3ICsxMzUyLDcgQEAgdm9pZCBGcmFtZWJ1ZmZlckdMOjpzeW5jQ2xl
YXJTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKQogICAg
ICAgICBjb25zdCBhbmdsZTo6RmVhdHVyZXNHTCAmZmVhdHVyZXMgPSBHZXRGZWF0dXJlc0dMKGNv
bnRleHQpOwogCiAgICAgICAgIGlmIChmZWF0dXJlcy5kb2VzU1JHQkNsZWFyc09uTGluZWFyRnJh
bWVidWZmZXJBdHRhY2htZW50cy5lbmFibGVkICYmCi0gICAgICAgICAgICAobWFzayAmIEdMX0NP
TE9SX0JVRkZFUl9CSVQpICE9IDAgJiYgIW1Jc0RlZmF1bHQpCisgICAgICAgICAgICAobWFzayAm
IEdMX0NPTE9SX0JVRkZFUl9CSVQpICE9IDAgJiYgIWlzRGVmYXVsdCgpKQogICAgICAgICB7CiAg
ICAgICAgICAgICBib29sIGhhc1NSR0JBdHRhY2htZW50ID0gZmFsc2U7CiAgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8gJmF0dGFjaG1lbnQgOiBtU3RhdGUuZ2V0Q29sb3JBdHRhY2htZW50cygp
KQpAQCAtMTM1MSw3ICsxMzY4LDcgQEAgdm9pZCBGcmFtZWJ1ZmZlckdMOjpzeW5jQ2xlYXJTdGF0
ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKQogICAgICAgICB9
CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGVNYW5hZ2VyLT5zZXRG
cmFtZWJ1ZmZlclNSR0JFbmFibGVkKGNvbnRleHQsICFtSXNEZWZhdWx0KTsKKyAgICAgICAgICAg
IHN0YXRlTWFuYWdlci0+c2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChjb250ZXh0LCAhaXNEZWZh
dWx0KCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTM2OCw3ICsxMzg1LDcgQEAgdm9pZCBG
cmFtZWJ1ZmZlckdMOjpzeW5jQ2xlYXJCdWZmZXJTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgY29uc3QgYW5nbGU6OkZlYXR1cmVzR0wgJmZlYXR1cmVzID0gR2V0RmVh
dHVyZXNHTChjb250ZXh0KTsKIAogICAgICAgICBpZiAoZmVhdHVyZXMuZG9lc1NSR0JDbGVhcnNP
bkxpbmVhckZyYW1lYnVmZmVyQXR0YWNobWVudHMuZW5hYmxlZCAmJiBidWZmZXIgPT0gR0xfQ09M
T1IgJiYKLSAgICAgICAgICAgICFtSXNEZWZhdWx0KQorICAgICAgICAgICAgIWlzRGVmYXVsdCgp
KQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBJZiBkb2luZyBhIGNsZWFyIG9uIGEgY29sb3Ig
YnVmZmVyLCBzZXQgU1JHQiBibGVuZCBlbmFibGVkIG9ubHkgaWYgdGhlIGNvbG9yIGJ1ZmZlcgog
ICAgICAgICAgICAgLy8gaXMgYW4gU1JHQiBmb3JtYXQuCkBAIC0xMzkyLDcgKzE0MDksNyBAQCB2
b2lkIEZyYW1lYnVmZmVyR0w6OnN5bmNDbGVhckJ1ZmZlclN0YXRlKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGVNYW5hZ2VyLT5zZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkKGNvbnRleHQsICFtSXNE
ZWZhdWx0KTsKKyAgICAgICAgICAgIHN0YXRlTWFuYWdlci0+c2V0RnJhbWVidWZmZXJTUkdCRW5h
YmxlZChjb250ZXh0LCAhaXNEZWZhdWx0KCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTQw
Miw3ICsxNDE5LDcgQEAgYm9vbCBGcmFtZWJ1ZmZlckdMOjptb2RpZnlJbnZhbGlkYXRlQXR0YWNo
bWVudHNGb3JFbXVsYXRlZERlZmF1bHRGQk8oCiAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50
cywKICAgICBzdGQ6OnZlY3RvcjxHTGVudW0+ICptb2RpZmllZEF0dGFjaG1lbnRzKSBjb25zdAog
ewotICAgIGJvb2wgbmVlZHNNb2RpZmljYXRpb24gPSBtSXNEZWZhdWx0ICYmIG1GcmFtZWJ1ZmZl
cklEICE9IDA7CisgICAgYm9vbCBuZWVkc01vZGlmaWNhdGlvbiA9IGlzRGVmYXVsdCgpICYmIG1G
cmFtZWJ1ZmZlcklEICE9IDA7CiAgICAgaWYgKCFuZWVkc01vZGlmaWNhdGlvbikKICAgICB7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oCmluZGV4
IDY5MGY0OTFhMzM2MGRmYWJiMTQ5ZmE0ZjcxZmZhMGVjN2E3ODNlMWQuLjljNzJlYmYzZThkOThm
OTBlYTMyOTczNjBmNTZmNmZiODNhMWJmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVy
R0wuaApAQCAtMjMsNyArMjMsMTUgQEAgY2xhc3MgU3RhdGVNYW5hZ2VyR0w7CiBjbGFzcyBGcmFt
ZWJ1ZmZlckdMIDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogewogICBwdWJsaWM6Ci0gICAgRnJh
bWVidWZmZXJHTChjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwgR0x1aW50IGlkLCBi
b29sIGlzRGVmYXVsdCwgYm9vbCBlbXVsYXRlZEFscGhhKTsKKyAgICBlbnVtIEZyYW1lYnVmZmVy
S2luZAorICAgIHsKKyAgICAgICAga0ZyYW1lYnVmZmVyT2JqZWN0LAorICAgICAgICBrRGVmYXVs
dEZyYW1lYnVmZmVyLAorICAgICAgICBrRGVmYXVsdEZyYW1lYnVmZmVyV2l0aEVtdWxhdGVkQWxw
aGEKKyAgICB9OworICAgIEZyYW1lYnVmZmVyR0woY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUg
JmRhdGEsCisgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICBG
cmFtZWJ1ZmZlcktpbmQga2luZCA9IGtGcmFtZWJ1ZmZlck9iamVjdCk7CiAgICAgfkZyYW1lYnVm
ZmVyR0woKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGVzdHJveShjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCkgb3ZlcnJpZGU7CkBAIC04OCw3ICs5Niw3IEBAIGNsYXNzIEZyYW1lYnVmZmVyR0wg
OiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiAgICAgR0x1aW50IGdldEZyYW1lYnVmZmVySUQoKSBj
b25zdDsKICAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNFbXVsYXRl
ZEFscGhhQ2hhbm5lbFRleHR1cmVBdHRhY2htZW50KCkgY29uc3Q7CisgICAgZ2w6OkRyYXdCdWZm
ZXJNYXNrIGdldEFjdGl2ZUVtdWxhdGVkQWxwaGFDaGFubmVsRHJhd0J1ZmZlck1hc2soKSBjb25z
dDsKIAogICBwcml2YXRlOgogICAgIHZvaWQgc3luY0NsZWFyU3RhdGUoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzayk7CkBAIC0xMzIsOSArMTQwLDggQEAgY2xhc3Mg
RnJhbWVidWZmZXJHTCA6IHB1YmxpYyBGcmFtZWJ1ZmZlckltcGwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OlJlY3RhbmdsZSAqbmV3RGVzdEFyZWEpOwogCiAgICAgR0x1aW50
IG1GcmFtZWJ1ZmZlcklEOwotICAgIGJvb2wgbUlzRGVmYXVsdDsKLQotICAgIGJvb2wgbUhhc0Vt
dWxhdGVkQWxwaGFBdHRhY2htZW50OworICAgIGNvbnN0IEZyYW1lYnVmZmVyS2luZCBtS2luZDsK
KyAgICBnbDo6QXR0YWNobWVudHNNYXNrIG1FbXVsYXRlZEFscGhhV29ya2Fyb3VuZENvbG9yQXR0
YWNobWVudEJpdHM7CiAKICAgICBnbDo6RHJhd0J1ZmZlck1hc2sgbUFwcGxpZWRFbmFibGVkRHJh
d0J1ZmZlcnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAKaW5kZXgg
Y2ZmNzAyMjE1ZTM4MDQwOWMxYWVkYjRkMTQyZjAwYzliYzIwZjQwYi4uZjY5YTllYTQyYTlhYzE2
MTRkMTk1NzdiZGE2NzFjZWQ4ZTk5YzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5h
Z2VyR0wuY3BwCkBAIC0xNzY0LDEwICsxNzY0LDkgQEAgYW5nbGU6OlJlc3VsdCBTdGF0ZU1hbmFn
ZXJHTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBz
dGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKTsKICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1
ZmZlckdMICpmcmFtZWJ1ZmZlckdMID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyR0w+KGZyYW1lYnVm
ZmVyKTsKLSAgICAgICAgICAgICAgICBjb25zdCBib29sIGRpc2FibGVBbHBoYVdyaXRlID0KLSAg
ICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJHTC0+aGFzRW11bGF0ZWRBbHBoYUNoYW5uZWxU
ZXh0dXJlQXR0YWNobWVudCgpOwotCi0gICAgICAgICAgICAgICAgc2V0Q29sb3JNYXNrRm9yRnJh
bWVidWZmZXIoc3RhdGUuZ2V0QmxlbmRTdGF0ZUV4dCgpLCBkaXNhYmxlQWxwaGFXcml0ZSk7Cisg
ICAgICAgICAgICAgICAgc2V0Q29sb3JNYXNrRm9yRnJhbWVidWZmZXIoCisgICAgICAgICAgICAg
ICAgICAgIHN0YXRlLmdldEJsZW5kU3RhdGVFeHQoKSwKKyAgICAgICAgICAgICAgICAgICAgZnJh
bWVidWZmZXJHTC0+Z2V0QWN0aXZlRW11bGF0ZWRBbHBoYUNoYW5uZWxEcmF3QnVmZmVyTWFzaygp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFX0VOQUJMRUQ6
CkBAIC0yMTExLDIxICsyMTEwLDI3IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldEZyYW1lYnVm
ZmVyU1JHQkVuYWJsZWRGb3JGcmFtZWJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqCiAgICAgfQog
fQogCi12b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRDb2xvck1hc2tGb3JGcmFtZWJ1ZmZlcihjb25z
dCBnbDo6QmxlbmRTdGF0ZUV4dCAmYmxlbmRTdGF0ZUV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgZGlzYWJsZUFscGhhKQordm9p
ZCBTdGF0ZU1hbmFnZXJHTDo6c2V0Q29sb3JNYXNrRm9yRnJhbWVidWZmZXIoZ2w6OkJsZW5kU3Rh
dGVFeHQgYmxlbmRTdGF0ZUV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpEcmF3QnVmZmVyTWFzayAmZGlzYWJsZWRBbHBoYVdyaXRl
cykKIHsKICAgICBib29sIHIsIGcsIGIsIGE7CiAKLSAgICAvLyBHaXZlbiB0aGF0IGRpc2FibGVB
bHBoYSBjYW4gYmUgdHJ1ZSBvbmx5IG9uIG1hY09TIGJhY2tidWZmZXJzIGFuZCBjb2xvciBtYXNr
IGlzIHJlLXN5bmNlZCBvbgotICAgIC8vIGJvdW5kIGRyYXcgZnJhbWVidWZmZXIgY2hhbmdlLCBz
d2l0Y2ggYWxsIGRyYXcgYnVmZmVycyBjb2xvciBtYXNrcyB0byBhdm9pZCBzcGVjaWFsIGNhc2UK
LSAgICAvLyBsYXRlci4KLSAgICBpZiAoIW1JbmRlcGVuZGVudEJsZW5kU3RhdGVzIHx8IGRpc2Fi
bGVBbHBoYSkKKyAgICBpZiAoIW1JbmRlcGVuZGVudEJsZW5kU3RhdGVzKQogICAgIHsKKyAgICAg
ICAgLy8gSGlkaW5nIGFuIGFscGhhIGNoYW5uZWwgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiBpdCdz
IHRoZSBmaXJzdCBhdHRhY2htZW50CisgICAgICAgIC8vIG9yIHdpdGggaW5kZXBlbmRlbnQgYmxl
bmQgc3RhdGVzLiBBc3NlcnQgdGhhdCB0aGVzZSBlbXVsYXRlZCB0ZXh0dXJlcyBhcmUgbm90IGJv
dW5kIHRvIGEKKyAgICAgICAgLy8gZnJhbWVidWZmZXIgdXNpbmcgTVJULgorICAgICAgICBib29s
IGRpc2FibGVBbHBoYSA9IGRpc2FibGVkQWxwaGFXcml0ZXMuYW55KCk7CisgICAgICAgIEFTU0VS
VCghZGlzYWJsZUFscGhhIHx8IGRpc2FibGVkQWxwaGFXcml0ZXMudG9fdWxvbmcoKSA9PSAxKTsK
ICAgICAgICAgYmxlbmRTdGF0ZUV4dC5nZXRDb2xvck1hc2tJbmRleGVkKDAsICZyLCAmZywgJmIs
ICZhKTsKICAgICAgICAgc2V0Q29sb3JNYXNrKHIsIGcsIGIsIGRpc2FibGVBbHBoYSA/IGZhbHNl
IDogYSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KKyAgICBmb3IgKGF1dG8gY29sb3JJbmRl
eCA6IGRpc2FibGVkQWxwaGFXcml0ZXMpCisgICAgeworICAgICAgICBibGVuZFN0YXRlRXh0Lmdl
dENvbG9yTWFza0luZGV4ZWQoY29sb3JJbmRleCwgJnIsICZnLCAmYiwgJmEpOworICAgICAgICBi
bGVuZFN0YXRlRXh0LnNldENvbG9yTWFza0luZGV4ZWQoY29sb3JJbmRleCwgciwgZywgYiwgZmFs
c2UpOworICAgIH0KICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBtYXNrIGFscmVhZHkgbWF0
Y2hlcyB0aGUgbmV3IHN0YXRlCiAgICAgaWYgKG1CbGVuZFN0YXRlRXh0Lm1Db2xvck1hc2sgPT0g
YmxlbmRTdGF0ZUV4dC5tQ29sb3JNYXNrKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFu
YWdlckdMLmgKaW5kZXggZjAxZDAwMWFmNzg3MDg0ZjhiOTgzYjhjZGNkNWI3NjhkOTQ4NDRjZS4u
ZTdhMjUyMzRjMThjZTc4NjYyMmY3ZTZkNDhjY2RkN2ViMzFjMjY1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdl
ckdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1N0YXRlTWFuYWdlckdMLmgKQEAgLTEzNSw4ICsxMzUsOCBAQCBjbGFzcyBTdGF0ZU1hbmFn
ZXJHTCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZvaWQgc2V0RnJhbWVidWZmZXJT
UkdCRW5hYmxlZEZvckZyYW1lYnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGcmFtZWJ1ZmZlckdMICpmcmFtZWJ1ZmZlcik7Ci0gICAgdm9pZCBzZXRDb2xvck1hc2tGb3JG
cmFtZWJ1ZmZlcihjb25zdCBnbDo6QmxlbmRTdGF0ZUV4dCAmYmxlbmRTdGF0ZUV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgZGlzYWJsZUFscGhhKTsK
KyAgICB2b2lkIHNldENvbG9yTWFza0ZvckZyYW1lYnVmZmVyKGdsOjpCbGVuZFN0YXRlRXh0IGJs
ZW5kU3RhdGVFeHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6RHJhd0J1ZmZlck1hc2sgJmRpc2FibGVkQWxwaGFXcml0ZXMpOwogCiAgICAgdm9pZCBzZXRE
aXRoZXJFbmFibGVkKGJvb2wgZW5hYmxlZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAK
aW5kZXggOWVhM2EwZGYyZTMzYmZlYmQ2NjdmMDc3ZjczNDg2NmVjMjdhNTk0NC4uNjMzNWM5NTYw
ZTk5YTdmMjIwYTA1ZDRhODQwNGM2ZWNlMWFlMWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VH
TC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAgU3VyZmFjZUdMOjp+U3VyZmFjZUdMKCkge30KIEZyYW1l
YnVmZmVySW1wbCAqU3VyZmFjZUdMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhKQogewotICAg
IHJldHVybiBuZXcgRnJhbWVidWZmZXJHTChkYXRhLCAwLCB0cnVlLCBmYWxzZSk7CisgICAgcmV0
dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKGRhdGEsIDAsIEZyYW1lYnVmZmVyR0w6OmtEZWZhdWx0RnJh
bWVidWZmZXIpOwogfQogCiBlZ2w6OkVycm9yIFN1cmZhY2VHTDo6Z2V0U3luY1ZhbHVlcyhFR0x1
aW50NjRLSFIgKnVzdCwgRUdMdWludDY0S0hSICptc2MsIEVHTHVpbnQ2NEtIUiAqc2JjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1RleHR1cmVHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvVGV4dHVyZUdMLmNwcAppbmRleCBhNTdjNDUwZGE0ODZlOTA5MDg4NTFiY2ViMGI4
ODhlYzE0NTE1YjQ1Li4wNTg0ZWUzMDYxNzBjNTgwMzQ2MDNlNWM2YjhjNGEzNTc1NmM1N2ZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmNwcApAQCAtNjgsMTAgKzY4LDI3IEBAIGJvb2wgR2V0
RGVwdGhTdGVuY2lsV29ya2Fyb3VuZChHTGVudW0gZm9ybWF0KQogICAgIHJldHVybiBmb3JtYXQg
PT0gR0xfREVQVEhfQ09NUE9ORU5UIHx8IGZvcm1hdCA9PSBHTF9ERVBUSF9TVEVOQ0lMOwogfQog
Ci1ib29sIEdldEVtdWxhdGVkQWxwaGFDaGFubmVsKGNvbnN0IGFuZ2xlOjpGZWF0dXJlc0dMICZm
ZWF0dXJlcywgR0xlbnVtIGludGVybmFsRm9ybWF0KQorYm9vbCBHZXRFbXVsYXRlZEFscGhhQ2hh
bm5lbChjb25zdCBhbmdsZTo6RmVhdHVyZXNHTCAmZmVhdHVyZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGRlc3RpbmF0aW9uSW50ZXJuYWxGb3JtYXQpCiB7Ci0gICAgcmV0dXJu
IGZlYXR1cmVzLnJnYkRYVDFUZXh0dXJlc1NhbXBsZVplcm9BbHBoYS5lbmFibGVkICYmCi0gICAg
ICAgICAgIGludGVybmFsRm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7
CisgICAgaWYgKGZlYXR1cmVzLnJnYkRYVDFUZXh0dXJlc1NhbXBsZVplcm9BbHBoYS5lbmFibGVk
ICYmCisgICAgICAgIGludGVybmFsRm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhU
MV9FWFQpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGZlYXR1
cmVzLmNsZWFyQWZmZWN0c1JHQlRleHR1cmVBbHBoYS5lbmFibGVkICYmCisgICAgICAgIChkZXN0
aW5hdGlvbkludGVybmFsRm9ybWF0ID09IEdMX1JHQiB8fCBkZXN0aW5hdGlvbkludGVybmFsRm9y
bWF0ID09IEdMX1JHQjgpKQorICAgIHsKKyAgICAgICAgLy8gRW11bGF0ZSB0aGlzIGNhc2UgdG9v
LiBPbmx5IGRpc2FibGluZyB0aGUgYWxwaGEgd3JpdGVzIG9uIGNsZWFyIHdvdWxkCisgICAgICAg
IC8vIHdvcmssIGV4Y2VwdCB0aGUgYWxwaGEgZGlzYWJsZWQgbGVhdmVzIHVuaW5pdGlhbGl6ZWQg
ZGF0YSB0byB0aGUKKyAgICAgICAgLy8gYnVmZmVyIHdoaWNoIGlzIHZpc2libGUgZHVyaW5nIHNh
bXBsaW5nLiBJbiB0aGlzIGNhc2Ugd2Ugd291bGQgbmVlZAorICAgICAgICAvLyBhZGRpdGlvbmFs
IGNvZGVwYXRoIHdoZW4gc2V0dGluZyB0aGUgY2xlYXIgY29sb3IgYW5kIG1hc2ssIHdoZXJlIHdl
IHdvdWxkCisgICAgICAgIC8vIG5ldmVyIGRpc2FibGUgYWxwaGEgYW5kIGluc3RlYWQgcHV0IDEu
MCBhcyBjbGVhciBjb2xvciBhbHBoYS4gSXQgaXMgc2ltcGxlcgorICAgICAgICAvLyB0byBub3Qg
ZG8gdGhhdC4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
IH0KIAogTGV2ZWxJbmZvR0wgR2V0TGV2ZWxJbmZvKGNvbnN0IGFuZ2xlOjpGZWF0dXJlc0dMICZm
ZWF0dXJlcywKQEAgLTgwLDEwICs5NywxMCBAQCBMZXZlbEluZm9HTCBHZXRMZXZlbEluZm8oY29u
c3QgYW5nbGU6OkZlYXR1cmVzR0wgJmZlYXR1cmVzLAogewogICAgIEdMZW51bSBvcmlnaW5hbEZv
cm1hdCAgICA9IGdsOjpHZXRVbnNpemVkRm9ybWF0KG9yaWdpbmFsSW50ZXJuYWxGb3JtYXQpOwog
ICAgIEdMZW51bSBkZXN0aW5hdGlvbkZvcm1hdCA9IGdsOjpHZXRVbnNpemVkRm9ybWF0KGRlc3Rp
bmF0aW9uSW50ZXJuYWxGb3JtYXQpOwotICAgIHJldHVybiBMZXZlbEluZm9HTChvcmlnaW5hbEZv
cm1hdCwgZGVzdGluYXRpb25JbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
R2V0RGVwdGhTdGVuY2lsV29ya2Fyb3VuZChvcmlnaW5hbEZvcm1hdCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEdldExVTUFXb3JrYXJvdW5kSW5mbyhvcmlnaW5hbEZvcm1hdCwgZGVzdGluYXRp
b25Gb3JtYXQpLAotICAgICAgICAgICAgICAgICAgICAgICBHZXRFbXVsYXRlZEFscGhhQ2hhbm5l
bChmZWF0dXJlcywgb3JpZ2luYWxGb3JtYXQpKTsKKyAgICByZXR1cm4gTGV2ZWxJbmZvR0woCisg
ICAgICAgIG9yaWdpbmFsRm9ybWF0LCBkZXN0aW5hdGlvbkludGVybmFsRm9ybWF0LCBHZXREZXB0
aFN0ZW5jaWxXb3JrYXJvdW5kKG9yaWdpbmFsRm9ybWF0KSwKKyAgICAgICAgR2V0TFVNQVdvcmth
cm91bmRJbmZvKG9yaWdpbmFsRm9ybWF0LCBkZXN0aW5hdGlvbkZvcm1hdCksCisgICAgICAgIEdl
dEVtdWxhdGVkQWxwaGFDaGFubmVsKGZlYXR1cmVzLCBvcmlnaW5hbEZvcm1hdCwgZGVzdGluYXRp
b25JbnRlcm5hbEZvcm1hdCkpOwogfQogCiBnbDo6VGV4dHVyZTo6RGlydHlCaXRzIEdldExldmVs
V29ya2Fyb3VuZERpcnR5Qml0cygpCkBAIC03MTYsMTIgKzczMywxMyBAQCBhbmdsZTo6UmVzdWx0
IFRleHR1cmVHTDo6Y29weUltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgaWYgKGZlYXR1cmVzLmVtdWxhdGVDb3B5VGV4SW1hZ2UyREZyb21SZW5kZXJidWZmZXJz
LmVuYWJsZWQgJiYgcmVhZEJ1ZmZlciAmJgogICAgICAgICAgICAgICAgIHJlYWRCdWZmZXItPnR5
cGUoKSA9PSBHTF9SRU5ERVJCVUZGRVIpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ym9vbCBkaXNhYmxlQWxwaGEgPSBsZXZlbEluZm8uZW11bGF0ZWRBbHBoYUNoYW5uZWw7CiAgICAg
ICAgICAgICAgICAgQmxpdEdMICpibGl0dGVyID0gR2V0QmxpdEdMKGNvbnRleHQpOwogICAgICAg
ICAgICAgICAgIEFOR0xFX1RSWShibGl0dGVyLT5ibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVyKAog
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBzb3VyY2UsIG1UZXh0dXJlSUQsIHRhcmdldCwg
bGV2ZWwsIGNsaXBwZWRBcmVhLAogICAgICAgICAgICAgICAgICAgICBnbDo6UmVjdGFuZ2xlKGRl
c3RPZmZzZXQueCwgZGVzdE9mZnNldC55LCBjbGlwcGVkQXJlYS53aWR0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGlwcGVkQXJlYS5oZWlnaHQpLAotICAgICAgICAgICAg
ICAgICAgICBHTF9ORUFSRVNULCB0cnVlKSk7CisgICAgICAgICAgICAgICAgICAgIEdMX05FQVJF
U1QsIGRpc2FibGVBbHBoYSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAo
cmVxdWlyZXNJbml0aWFsaXphdGlvbikKICAgICAgICAgICAgIHsKQEAgLTc5NSwxMiArODEzLDEz
IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZUdMOjpjb3B5U3ViSW1hZ2UoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgc291cmNlLT5nZXRSZWFkQ29sb3JBdHRhY2ht
ZW50KCkgJiYKICAgICAgICAgICAgICAgICBzb3VyY2UtPmdldFJlYWRDb2xvckF0dGFjaG1lbnQo
KS0+dHlwZSgpID09IEdMX1JFTkRFUkJVRkZFUikKICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBib29sIGRpc2FibGVBbHBoYSA9IGxldmVsSW5mby5lbXVsYXRlZEFscGhhQ2hhbm5lbDsK
ICAgICAgICAgICAgICAgICBCbGl0R0wgKmJsaXR0ZXIgPSBHZXRCbGl0R0woY29udGV4dCk7CiAg
ICAgICAgICAgICAgICAgQU5HTEVfVFJZKGJsaXR0ZXItPmJsaXRDb2xvckJ1ZmZlcldpdGhTaGFk
ZXIoCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHNvdXJjZSwgbVRleHR1cmVJRCwgdGFy
Z2V0LCBsZXZlbCwgY2xpcHBlZEFyZWEsCiAgICAgICAgICAgICAgICAgICAgIGdsOjpSZWN0YW5n
bGUoY2xpcHBlZE9mZnNldC54LCBjbGlwcGVkT2Zmc2V0LnksIGNsaXBwZWRBcmVhLndpZHRoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBwZWRBcmVhLmhlaWdodCksCi0g
ICAgICAgICAgICAgICAgICAgIEdMX05FQVJFU1QsIHRydWUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgR0xfTkVBUkVTVCwgZGlzYWJsZUFscGhhKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0lPU3VyZmFjZVN1cmZhY2VDR0wuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1
cmZhY2VTdXJmYWNlQ0dMLmNwcAppbmRleCBhZmRjYTRmMmVmOTZjODU1Zjg2ZjY5ODhjMGE2NmYz
YjNmZjk2NDdjLi42NWZiOGNmMDUzZWIxYmI3YTFiYzEyMmY0MjMxM2I1NmY2NTFkNWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL0lPU3VyZmFjZVN1cmZhY2VDR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvSU9TdXJmYWNlU3VyZmFjZUNHTC5jcHAKQEAg
LTI2NSw5ICsyNjUsOCBAQCBjbGFzcyBJT1N1cmZhY2VGcmFtZWJ1ZmZlciA6IHB1YmxpYyBGcmFt
ZWJ1ZmZlckdMCiAgICAgSU9TdXJmYWNlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlSWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0RlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbXVs
YXRlZEFscGhhKQotICAgICAgICA6IEZyYW1lYnVmZmVyR0woZGF0YSwgaWQsIGlzRGVmYXVsdCwg
ZW11bGF0ZWRBbHBoYSksIG1UZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICAgICAgICAgICAgICAg
ICAgICAgIEZyYW1lYnVmZmVyS2luZCBraW5kKQorICAgICAgICA6IEZyYW1lYnVmZmVyR0woZGF0
YSwgaWQsIGtpbmQpLCBtVGV4dHVyZUlkKHRleHR1cmVJZCkKICAgICB7fQogICAgIHZvaWQgZGVz
dHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGUKICAgICB7CkBAIC0zMTAs
NyArMzA5LDEwIEBAIEZyYW1lYnVmZmVySW1wbCAqSU9TdXJmYWNlU3VyZmFjZUNHTDo6Y3JlYXRl
RGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0CiAgICAgZnVuY3Rpb25zLT5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfUkVDVEFOR0xFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGV4dHVyZSwgMCk7CiAKLSAgICByZXR1cm4gbmV3IElPU3VyZmFjZUZyYW1lYnVmZmVyKHN0YXRl
LCBmcmFtZWJ1ZmZlciwgdGV4dHVyZSwgdHJ1ZSwgaGFzRW11bGF0ZWRBbHBoYUNoYW5uZWwoKSk7
CisgICAgcmV0dXJuIG5ldyBJT1N1cmZhY2VGcmFtZWJ1ZmZlcihzdGF0ZSwgZnJhbWVidWZmZXIs
IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNFbXVsYXRl
ZEFscGhhQ2hhbm5lbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PyBJT1N1cmZhY2VGcmFtZWJ1ZmZlcjo6a0RlZmF1bHRGcmFtZWJ1ZmZlcldpdGhFbXVsYXRlZEFs
cGhhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBJT1N1cmZhY2VG
cmFtZWJ1ZmZlcjo6a0RlZmF1bHRGcmFtZWJ1ZmZlcik7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgSU9T
dXJmYWNlU3VyZmFjZUNHTDo6aW5pdGlhbGl6ZUFscGhhQ2hhbm5lbChjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNH
TC5jcHAKaW5kZXggYmQ3Mjk1NDgxYWJkNDk4OTQ5NzE4YjBlODRmYTcxMWJhY2ZiMjVlNC4uYmM1
OWYwZDRhZGI5MjYxNmIzNTFkOTJkNzczNGMxZDcwY2Y1MGMyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3Vy
ZmFjZUNHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBG
cmFtZWJ1ZmZlckltcGwgKlBidWZmZXJTdXJmYWNlQ0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZm
ZXIoY29uc3QgZ2w6OkNvbnRleHQgKgogICAgIGZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVO
REVSQlVGRkVSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURTUmVu
ZGVyYnVmZmVyKTsKIAotICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJHTChzdGF0ZSwgZnJhbWVi
dWZmZXIsIHRydWUsIGZhbHNlKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woc3RhdGUs
IGZyYW1lYnVmZmVyLCBGcmFtZWJ1ZmZlckdMOjprRGVmYXVsdEZyYW1lYnVmZmVyKTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZh
Y2VDR0wubW0KaW5kZXggMGZhNTdiZTQzYjc3OWYwZGVlYmNmZGM1MTIwMjY4NTE1YWI5NDU2Zi4u
Nzk5Mzc4MjI1ZmM4NzMyZjZkYmViYjRmNjU1Nzk2ZjY1YmE0OTYxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dT
dXJmYWNlQ0dMLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5tbQpAQCAtMzM1LDcgKzMzNSw3IEBAIEZy
YW1lYnVmZmVySW1wbCAqV2luZG93U3VyZmFjZUNHTDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVy
KGNvbnN0IGdsOjpDb250ZXh0ICpjCiAgICAgZnVuY3Rpb25zLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5E
RVJCVUZGRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRFNSZW5k
ZXJidWZmZXIpOwogCi0gICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKHN0YXRlLCBmcmFtZWJ1
ZmZlciwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJHTChzdGF0ZSwg
ZnJhbWVidWZmZXIsIEZyYW1lYnVmZmVyR0w6OmtEZWZhdWx0RnJhbWVidWZmZXIpOwogfQogCiB9
ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL0lPU3VyZmFjZVN1cmZhY2VFQUdMLm1tIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VhZ2wvSU9TdXJm
YWNlU3VyZmFjZUVBR0wubW0KaW5kZXggZDBiNWM5ODBiYWM5NDMwYzAxZWYxMjJjYTY0MWQxOGE0
ZDYyNmJiZC4uMDY4M2NlMGRmNDU1YmIxMGYwMWVlNDAyYmIxZWMwZDBhMzU4YjUxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vh
Z2wvSU9TdXJmYWNlU3VyZmFjZUVBR0wubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VhZ2wvSU9TdXJmYWNlU3VyZmFjZUVBR0wubW0KQEAg
LTMzMyw5ICszMzMsOCBAQCBjbGFzcyBJT1N1cmZhY2VGcmFtZWJ1ZmZlciA6IHB1YmxpYyBGcmFt
ZWJ1ZmZlckdMCiAgICAgSU9TdXJmYWNlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlSWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0RlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbXVs
YXRlZEFscGhhKQotICAgICAgICA6IEZyYW1lYnVmZmVyR0woZGF0YSwgaWQsIGlzRGVmYXVsdCwg
ZW11bGF0ZWRBbHBoYSksIG1UZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICAgICAgICAgICAgICAg
ICAgICAgIEZyYW1lYnVmZmVyS2luZCBraW5kKQorICAgICAgICA6IEZyYW1lYnVmZmVyR0woZGF0
YSwgaWQsIGtpbmQpLCBtVGV4dHVyZUlkKHRleHR1cmVJZCkKICAgICB7fQogICAgIHZvaWQgZGVz
dHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGUKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWFn
bC9QYnVmZmVyU3VyZmFjZUVBR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2VhZ2wvUGJ1ZmZlclN1cmZhY2VFQUdMLmNwcAppbmRleCAzNmYx
YzE1Yjk3NWRkY2IwYTA5N2VjOTk2MWZiMjM0ZDRhN2M0ZjE5Li43NWI3ZmNiZjFiZWQ0MDk4M2I3
OGE3NGQ2ZGU4OGFjZDMxNGFlZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWFnbC9QYnVmZmVyU3VyZmFjZUVBR0wuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWds
L1BidWZmZXJTdXJmYWNlRUFHTC5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBGcmFtZWJ1ZmZlcklt
cGwgKlBidWZmZXJTdXJmYWNlRUFHTDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGds
OjpDb250ZXh0CiAgICAgZnVuY3Rpb25zLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRFNSZW5kZXJidWZmZXIpOwog
Ci0gICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKHN0YXRlLCBmcmFtZWJ1ZmZlciwgdHJ1ZSwg
ZmFsc2UpOworICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJHTChzdGF0ZSwgZnJhbWVidWZmZXIs
IEZyYW1lYnVmZmVyR0w6OmtEZWZhdWx0RnJhbWVidWZmZXIpOwogfQogCiB9ICAvLyBuYW1lc3Bh
Y2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9lYWdsL1dpbmRvd1N1cmZhY2VFQUdMLm1tIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VhZ2wvV2luZG93U3VyZmFjZUVBR0wubW0K
aW5kZXggMzhkMjUzZWJkZWIzYjNjYzE2MzIzNzQzNDk1NDdiMDU1MzlmZWQzYy4uYzMxOGYzMThh
YzhiNmUxNGRlZDM4Mjc2ODRjZWVkYjEyNGI5YTkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VhZ2wvV2luZG93U3VyZmFjZUVB
R0wubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2VhZ2wvV2luZG93U3VyZmFjZUVBR0wubW0KQEAgLTMwMSw3ICszMDEsNyBAQCBGcmFtZWJ1
ZmZlckltcGwgKldpbmRvd1N1cmZhY2VFQUdMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29u
c3QgZ2w6OkNvbnRleHQgKgogICAgIGZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVG
RkVSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURTUmVuZGVyYnVm
ZmVyKTsKIAotICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJHTChzdGF0ZSwgZnJhbWVidWZmZXIs
IHRydWUsIGZhbHNlKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0woc3RhdGUsIGZyYW1l
YnVmZmVyLCBGcmFtZWJ1ZmZlckdMOjprRGVmYXVsdEZyYW1lYnVmZmVyKTsKIH0KIAogfSAgLy8g
bmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2dibS9EaXNwbGF5R2JtLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZ2JtL0Rpc3BsYXlHYm0uY3Bw
CmluZGV4IDI1ZGViMTRjMzQxNTYwMjE3YjIyODM4NjRlZmJmZjExYWZiYzZlZjkuLjNhMDNmNWQ4
MzEwMTU2YjE3OTkzMGIyZGZhMWZmODFjNTEzYWRkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZ2JtL0Rpc3BsYXlHYm0u
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvZ2JtL0Rpc3BsYXlHYm0uY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgR0x1aW50IERpc3Bs
YXlHYm06OkJ1ZmZlcjo6Y3JlYXRlR0xGQihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIEZy
YW1lYnVmZmVyR0wgKkRpc3BsYXlHYm06OkJ1ZmZlcjo6ZnJhbWVidWZmZXJHTChjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKHN0YXRlLCBjcmVhdGVHTEZCKGNvbnRleHQpLCB0cnVlLCBm
YWxzZSk7CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKHN0YXRlLCBjcmVhdGVHTEZCKGNv
bnRleHQpLCBGcmFtZWJ1ZmZlckdMOjprRGVmYXVsdEZyYW1lYnVmZmVyKTsKIH0KIAogdm9pZCBE
aXNwbGF5R2JtOjpCdWZmZXI6OnByZXNlbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvcmVuZGVyZXJnbF91dGlscy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5jcHAKaW5kZXggNGVhMTA2YWNlODg0
ZTM1ZWIxZDQyMjRjZWVmOTA4YTE3NjFjZTMwMS4uODM0ZTZiMTU3MzJkZDJkYzRlMzRmYmZhMTM4
MTUzZWZlOTYwMjQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmNw
cApAQCAtMTc2Myw2ICsxNzYzLDggQEAgdm9pZCBJbml0aWFsaXplRmVhdHVyZXMoY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywgYW5nbGU6OkZlYXR1cmVzR0wgKmZlYXR1cmUKICAgICAvLyBl
eHRlcm5hbGx5LiBHUFUgc3dpdGNoaW5nIHN1cHBvcnQgbXVzdCBiZSBlbmFibGVkIG9yIGRpc2Fi
bGVkIGVhcmx5LCBkdXJpbmcgZGlzcGxheQogICAgIC8vIGluaXRpYWxpemF0aW9uLCBiZWZvcmUg
dGhlc2UgZmVhdHVyZXMgYXJlIHNldCB1cC4KICAgICBib29sIGlzRHVhbEdQVU1hY1dpdGhOVklE
SUEgPSBmYWxzZTsKKworICAgIGJvb2wgaXNNYWNXaXRoSW50ZWxJcmlzID0gZmFsc2U7CiAgICAg
aWYgKElzQXBwbGUoKSAmJiBmdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tU
T1ApCiAgICAgewogICAgICAgICBhbmdsZTo6U3lzdGVtSW5mbyBpbmZvOwpAQCAtMTc3Miw5ICsx
Nzc0LDEyIEBAIHZvaWQgSW5pdGlhbGl6ZUZlYXR1cmVzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5j
dGlvbnMsIGFuZ2xlOjpGZWF0dXJlc0dMICpmZWF0dXJlCiAgICAgICAgICAgICAvLyBOVklESUEg
TWFjQm9vayBQcm8gc2luY2UgaXQncyBsaWtlbHkgdGhhdCB0aGUgaW50ZWdyYXRlZCBHUFUgd2ls
bCBiZSBhY3RpdmUKICAgICAgICAgICAgIC8vIHdoZW4gdGhlc2UgZmVhdHVyZXMgYXJlIGluaXRp
YWxpemVkLgogICAgICAgICAgICAgaXNEdWFsR1BVTWFjV2l0aE5WSURJQSA9IGluZm8uaXNNYWNT
d2l0Y2hhYmxlICYmIGluZm8uaGFzTlZJRElBR1BVKCk7CisgICAgICAgICAgICBpZiAoIWlzRHVh
bEdQVU1hY1dpdGhOVklESUEpCisgICAgICAgICAgICAgICAgaXNNYWNXaXRoSW50ZWxJcmlzID0g
aW5mby5oYXNEZXZpY2UoYW5nbGU6OmtWZW5kb3JJRF9JbnRlbCwgYW5nbGU6OmtEZXZpY2VJRF9J
cmlzKTsKICAgICAgICAgfQogICAgIH0KICAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0
dXJlcywgZGlzYWJsZUdQVVN3aXRjaGluZ1N1cHBvcnQsIGlzRHVhbEdQVU1hY1dpdGhOVklESUEp
OworICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKGZlYXR1cmVzLCBjbGVhckFmZmVjdHNSR0JU
ZXh0dXJlQWxwaGEsIGlzTWFjV2l0aEludGVsSXJpcyk7CiAKICAgICAvLyBXb3JrYXJvdW5kIGlz
c3VlIGluIE5WSURJQSBHTCBkcml2ZXIgb24gTGludXggd2hlbiBUU0FOIGlzIGVuYWJsZWQKICAg
ICAvLyBodHRwOi8vY3JidWcuY29tLzEwOTQ4NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRDNEVGV4dHVyZVN1cmZhY2VX
R0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L3dnbC9EM0RUZXh0dXJlU3VyZmFjZVdHTC5jcHAKaW5kZXggZGQyZWE5ZWRhMzVjYjA0YWFkOGVh
MjA3N2MwN2NhZjFmZDEzNmIxZS4uYjI2OGVhYTM3YTNjOWJjM2JlYWIyYzcyZGExMmU3YmU1NDdh
OGFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL3dnbC9EM0RUZXh0dXJlU3VyZmFjZVdHTC5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EM0RUZXh0dXJlU3VyZmFj
ZVdHTC5jcHAKQEAgLTQ5OCw3ICs0OTgsNyBAQCBGcmFtZWJ1ZmZlckltcGwgKkQzRFRleHR1cmVT
dXJmYWNlV0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkNvbnRleAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EZXB0aFN0ZW5jaWxSZW5k
ZXJidWZmZXJJRCk7CiAgICAgfQogCi0gICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKGRhdGEs
IGZyYW1lYnVmZmVySUQsIHRydWUsIGZhbHNlKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVy
R0woZGF0YSwgZnJhbWVidWZmZXJJRCwgRnJhbWVidWZmZXJHTDo6a0RlZmF1bHRGcmFtZWJ1ZmZl
cik7CiB9CiAKIEhEQyBEM0RUZXh0dXJlU3VyZmFjZVdHTDo6Z2V0REMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dn
bC9EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJm
YWNlV0dMLmNwcAppbmRleCAwMWI2ZmVkNTM1MzJlNTNmZDJkMTAxOWQwMmQ2YTdmNDQ2YTBiMWU3
Li45ZjBhNDRiNzA0ODI2ZjEwYzI5YmEzZmE1MGJhMDU4YWM0YzZjYWRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lT
d2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNl
V0dMLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIEZyYW1lYnVmZmVySW1wbCAqRFhHSVN3YXBDaGFp
bldpbmRvd1N1cmZhY2VXR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcigKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJHTChkYXRhLCBmcmFtZWJ1ZmZlcklE
LCB0cnVlLCBmYWxzZSk7CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKGRhdGEsIGZyYW1l
YnVmZmVySUQsIEZyYW1lYnVmZmVyR0w6OmtEZWZhdWx0RnJhbWVidWZmZXIpOwogfQogCiBIREMg
RFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0w6OmdldERDKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9DbGVhclRlc3QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5j
cHAKaW5kZXggNTNkNDZjNjU0YzJjNTgwNGI1ZjY4YTA1MWY5YTAyMWQ2MmFlZjU4ZC4uYjI1NWFh
MzA1NWEyMmRmOTBkZDBlMDhmODY1Y2RmYjhlYTVjODEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAKQEAg
LTI5OCw2ICsyOTgsNjMgQEAgY2xhc3MgVnVsa2FuQ2xlYXJUZXN0IDogcHVibGljIE1hc2tlZFNj
aXNzb3JlZENsZWFyVGVzdEJhc2UKICAgICBHTFJlbmRlcmJ1ZmZlciBtU3RlbmNpbFRleHR1cmU7
CiB9OwogCitjb25zdCBzdGQ6OmFycmF5PEdMQ29sb3IsIDU+IGtDbGVhckZyYW1lYnVmZmVyVGV4
dHVyZVJHQlRlc3RDb2xvcnMgPSB7CisgICAgR0xDb2xvcjo6dHJhbnNwYXJlbnRCbGFjaywgR0xD
b2xvcigyNTUsIDI1NSwgMjU1LCAwKSwgR0xDb2xvcigwLCAyNTUsIDAsIDApfTsKKwordXNpbmcg
Q2xlYXJGcmFtZWJ1ZmZlclRleHR1cmVSR0JUZXN0UGFyYW1zID0KKyAgICBzdGQ6OnR1cGxlPGFu
Z2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnMsIGludCAvKmNvbG9yVGVzdEluZGV4Ki8sIGJvb2wgLypt
YXNrQ29sb3JBbHBoYSovPjsKKworc3RkOjpzdHJpbmcgQ2xlYXJGcmFtZWJ1ZmZlclRleHR1cmVS
R0JUZXN0UHJpbnQoCisgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPENsZWFyRnJh
bWVidWZmZXJUZXh0dXJlUkdCVGVzdFBhcmFtcz4gJnBhcmFtSW5mbykKK3sKKyAgICBzdGQ6Om9z
dHJpbmdzdHJlYW0gb3V0OworICAgIGF1dG8gJnAgPSBwYXJhbUluZm8ucGFyYW07CisgICAgb3V0
IDw8IHN0ZDo6Z2V0PDA+KHApOworICAgIG91dCA8PCAiX2NvbG9yXyIgPDwgc3RkOjpnZXQ8MT4o
cCk7CisgICAgYm9vbCBtYXNrQ29sb3JBbHBoYSA9IHN0ZDo6Z2V0PDI+KHApOworICAgIGlmICht
YXNrQ29sb3JBbHBoYSkKKyAgICB7CisgICAgICAgIG91dCA8PCAiX21hc2tDb2xvckFscGhhIjsK
KyAgICB9CisgICAgcmV0dXJuIG91dC5zdHIoKTsKK30KKworY2xhc3MgQ2xlYXJGcmFtZWJ1ZmZl
clRleHR1cmVSR0JUZXN0CisgICAgOiBwdWJsaWMgQU5HTEVUZXN0V2l0aFBhcmFtPENsZWFyRnJh
bWVidWZmZXJUZXh0dXJlUkdCVGVzdFBhcmFtcz4KK3sKKyAgcHJvdGVjdGVkOgorICAgIENsZWFy
RnJhbWVidWZmZXJUZXh0dXJlUkdCVGVzdCgpCisgICAgeworICAgICAgICBzZXRXaW5kb3dXaWR0
aCgxMjgpOworICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKKyAgICAgICAgc2V0Q29uZmln
UmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAgICAgICBzZXRD
b25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOworICAgICAg
ICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOworICAgICAgICBzZXRDb25maWdTdGVuY2lsQml0cyg4
KTsKKyAgICB9CisKKyAgICBhbmdsZTo6VmVjdG9yNCBnZXRDbGVhckNvbG9yKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEdMQ29sb3IgYyA9IGtDbGVhckZyYW1lYnVmZmVyVGV4dHVyZVJHQlRlc3RD
b2xvcnNbc3RkOjpnZXQ8MT4oR2V0UGFyYW0oKSldOworICAgICAgICByZXR1cm4ge2MuUiAvIDI1
NS5mLCBjLkcgLyAyNTUuZiwgYy5CIC8gMjU1LmYsIGMuQSAvIDI1NS5mfTsKKyAgICB9CisKKyAg
ICBzdGQ6OmFycmF5PEdMYm9vbGVhbiwgND4gZ2V0Q29sb3JNYXNrKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEdMYm9vbGVhbiBtYXNrQ29sb3JBbHBoYSA9IHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkp
OworICAgICAgICByZXR1cm4ge0dMX1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUsICFtYXNrQ29sb3JB
bHBoYX07CisgICAgfQorCisgICAgR0xlbnVtIGdldENsZWFyTWFzaygpIGNvbnN0IHsgcmV0dXJu
IEdMX0NPTE9SX0JVRkZFUl9CSVQ7IH0KKworICAgIEdMUHJvZ3JhbSBtUHJvZ3JhbTsKK307CisK
K2NsYXNzIENsZWFyRnJhbWVidWZmZXJUZXh0dXJlUkdCRVMzVGVzdCA6IHB1YmxpYyBDbGVhckZy
YW1lYnVmZmVyVGV4dHVyZVJHQlRlc3QKK3t9OworCiAvLyBUZXN0IGNsZWFyaW5nIHRoZSBkZWZh
dWx0IGZyYW1lYnVmZmVyCiBURVNUX1AoQ2xlYXJUZXN0LCBEZWZhdWx0RnJhbWVidWZmZXIpCiB7
CkBAIC0zNDksOCArNDA2LDcgQEAgVEVTVF9QKENsZWFyVGVzdCwgUkdCQThGcmFtZWJ1ZmZlcikK
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOwogCiAgICAg
R0xUZXh0dXJlIHRleHR1cmU7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRl
eHR1cmUpOworICAgIHNldHVwVW5pbml0aWFsaXplZFRleHR1cmUoZ2V0V2luZG93V2lkdGgoKSwg
Z2V0V2luZG93SGVpZ2h0KCksIEdMX1JHQkEsIEdMX1JHQkEsICZ0ZXh0dXJlKTsKICAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0
V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQkEsCiAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X0JZVEUsIG51bGxwdHIpOwogICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKQEAg
LTM2MSw2ICs0MTcsMTA2IEBAIFRFU1RfUChDbGVhclRlc3QsIFJHQkE4RnJhbWVidWZmZXIpCiAg
ICAgRVhQRUNUX1BJWEVMX05FQVIoMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxLjApOwogfQog
CisvLyBUZXN0IGNsZWFyaW5nIGEgZnJhbWVidWZmZXIgd2l0aCBSR0I4IHRleHR1cmUgYm91bmQg
YXMgYW4gYXR0YWNobWVudC4KK1RFU1RfUChDbGVhckZyYW1lYnVmZmVyVGV4dHVyZVJHQlRlc3Qs
IEFscGhhSXNPbmVBZnRlckFueUNsZWFyKQoreworICAgIEdMRnJhbWVidWZmZXIgZmJvOworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOworICAgIEdMVGV4dHVyZSB0
ZXg7CisgICAgc2V0dXBVbmluaXRpYWxpemVkVGV4dHVyZShnZXRXaW5kb3dXaWR0aCgpLCBnZXRX
aW5kb3dIZWlnaHQoKSwgR0xfUkdCLCBHTF9SR0IsICZ0ZXgpOworICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdo
dCgpLCAwLCBHTF9SR0IsCisgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxw
dHIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXgsIDApOworICAgIGFuZ2xlOjpWZWN0b3I0
IGNsZWFyQ29sb3IgPSBnZXRDbGVhckNvbG9yKCk7CisgICAgZ2xDbGVhckNvbG9yKGNsZWFyQ29s
b3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOworICAg
IHN0ZDo6YXJyYXk8R0xib29sZWFuLCA0PiBjb2xvck1hc2sgPSBnZXRDb2xvck1hc2soKTsKKyAg
ICBnbENvbG9yTWFzayhjb2xvck1hc2tbMF0sIGNvbG9yTWFza1sxXSwgY29sb3JNYXNrWzJdLCBj
b2xvck1hc2tbM10pOworICAgIGdsQ2xlYXIoZ2V0Q2xlYXJNYXNrKCkpOworICAgIGdsQ29sb3JN
YXNrKEdMX1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUpOworICAgIEdMQ29sb3IgZXhw
ZWN0ZWRDb2xvcnt7Y2xlYXJDb2xvclswXSwgY2xlYXJDb2xvclsxXSwgY2xlYXJDb2xvclsyXSwg
MS4wZn19OworCisgICAgRVhQRUNUX1BJWEVMX1JFQ1RfRVEoMCwgMCwgZ2V0V2luZG93V2lkdGgo
KSwgZ2V0V2luZG93SGVpZ2h0KCksIGV4cGVjdGVkQ29sb3IpOworCisgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX05PTkUpOworICAgIGdsVmll
d3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOworCisgICAg
QU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBlc3NsMV9zaGFkZXJzOjp2czo6VGV4dHVyZTJEKCks
IGVzc2wxX3NoYWRlcnM6OmZzOjpUZXh0dXJlMkQoKSk7CisgICAgZ2xVc2VQcm9ncmFtKHByb2dy
YW0pOworICAgIGRyYXdRdWFkKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OlBvc2l0aW9uQXR0cmli
KCksIDAuNWYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9S
RUNUX0VRKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBleHBlY3Rl
ZENvbG9yKTsKK30KKworLy8gVGVzdCBjbGVhcmluZyBhIGZyYW1lYnVmZmVyIHdpdGggUkdCOCB0
ZXh0dXJlIGJvdW5kIGFzIGFuIGF0dGFjaG1lbnQuCisvLyBVc2VzIE4gYXR0YWNobWVudHMsIHdo
ZXJlIDAuLk4tMSBhcmUgUkdCQSBhdHRhY2htZW50cyBhbmQgTiBpcyBSR0IuCisvLyBDaGVja3Mg
dGhhdCBSR0JBIGF0dGFjaG1lbnRzIHJlY2VpdmUgdGhlIGNsZWFyIGNvbG9yIGFuZCBSR0IKKy8v
IGF0dGFjaG1lbnQgcmVjZWl2ZXMgY2xlYXIgY29sb3Igd2l0aCBhbHBoYSA9PSAxLjBmLgorVEVT
VF9QKENsZWFyRnJhbWVidWZmZXJUZXh0dXJlUkdCRVMzVGVzdCwgQWxwaGFJc09uZUFmdGVyQW55
Q2xlYXIpCit7CisgICAgR0xGcmFtZWJ1ZmZlciBmYm87CisgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIGZibyk7CisgICAgY29uc3QgdWludDMyX3Qga0F0dGFjaG1lbnRzICAg
ICA9IDM7CisgICAgY29uc3QgR0xlbnVtIGtJbnRlcm5hbEZvcm1hdHNbXSA9IHtHTF9SR0JBLCBH
TF9SR0I4LCBHTF9SR0J9OworICAgIGNvbnN0IEdMZW51bSBrRm9ybWF0c1tdICAgICAgICAgPSB7
R0xfUkdCQSwgR0xfUkdCLCBHTF9SR0J9OworICAgIHN0ZDo6dmVjdG9yPEdMVGV4dHVyZT4gdGV4
dHVyZXMoa0F0dGFjaG1lbnRzKTsKKyAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IGRyYXdCdWZmZXJz
KGtBdHRhY2htZW50cyk7CisgICAgaW50IHcgPSBnZXRXaW5kb3dXaWR0aCgpOworICAgIGludCBo
ID0gZ2V0V2luZG93SGVpZ2h0KCk7CisgICAgZm9yICh1aW50MzJfdCBhID0gMDsgYSA8IGtBdHRh
Y2htZW50czsgKythKQorICAgIHsKKworICAgICAgICBzZXR1cFVuaW5pdGlhbGl6ZWRUZXh0dXJl
KHcsIGgsIGtJbnRlcm5hbEZvcm1hdHNbYV0sIGtGb3JtYXRzW2FdLCAmdGV4dHVyZXNbYV0pOwor
ICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwga0ludGVybmFsRm9ybWF0c1th
XSwgdywgaCwgMCwga0Zvcm1hdHNbYV0sIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKKworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCArIGEsIEdMX1RFWFRVUkVfMkQsIHRleHR1
cmVzW2FdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICBkcmF3
QnVmZmVyc1thXSA9IEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgYTsKKyAgICB9CisgICAgQVNTRVJU
X0dMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKEdMX0ZSQU1FQlVGRkVSKTsKKyAgICBnbERyYXdCdWZm
ZXJzKGRyYXdCdWZmZXJzLnNpemUoKSwgZHJhd0J1ZmZlcnMuZGF0YSgpKTsKKyAgICBhbmdsZTo6
VmVjdG9yNCBjbGVhckNvbG9yID0gZ2V0Q2xlYXJDb2xvcigpOworICAgIGdsQ2xlYXJDb2xvcihj
bGVhckNvbG9yWzBdLCBjbGVhckNvbG9yWzFdLCBjbGVhckNvbG9yWzJdLCBjbGVhckNvbG9yWzNd
KTsKKyAgICBzdGQ6OmFycmF5PEdMYm9vbGVhbiwgND4gY29sb3JNYXNrID0gZ2V0Q29sb3JNYXNr
KCk7CisgICAgZ2xDb2xvck1hc2soY29sb3JNYXNrWzBdLCBjb2xvck1hc2tbMV0sIGNvbG9yTWFz
a1syXSwgY29sb3JNYXNrWzNdKTsKKyAgICBnbENsZWFyKGdldENsZWFyTWFzaygpKTsKKyAgICBn
bENvbG9yTWFzayhHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFKTsKKyAgICBmb3Ig
KHVpbnQzMl90IGEgPSAwOyBhIDwga0F0dGFjaG1lbnRzOyArK2EpCisgICAgeworICAgICAgICBH
TENvbG9yIGV4cGVjdGVkQ29sb3J7Y2xlYXJDb2xvcn07CisgICAgICAgIGlmIChrSW50ZXJuYWxG
b3JtYXRzW2FdICE9IEdMX1JHQkEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV4cGVjdGVkQ29s
b3JbM10gPSAyNTU7CisgICAgICAgIH0KKyAgICAgICAgZ2xSZWFkQnVmZmVyKEdMX0NPTE9SX0FU
VEFDSE1FTlQwICsgYSk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9SRUNUX0VRKDAsIDAsIGdldFdp
bmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBleHBlY3RlZENvbG9yKTsKKyAgICB9Cisg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgZ2xSZWFkQnVmZmVy
KEdMX0JBQ0spOworICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCkpOworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwgZXNzbDFfc2hhZGVy
czo6dnM6OlRleHR1cmUyRCgpLCBlc3NsMV9zaGFkZXJzOjpmczo6VGV4dHVyZTJEKCkpOworICAg
IGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBmb3IgKHVpbnQzMl90IGEgPSAwOyBhIDwga0F0
dGFjaG1lbnRzOyArK2EpCisgICAgeworICAgICAgICBHTENvbG9yIGV4cGVjdGVkQ29sb3J7Y2xl
YXJDb2xvcn07CisgICAgICAgIGlmIChrSW50ZXJuYWxGb3JtYXRzW2FdICE9IEdMX1JHQkEpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGV4cGVjdGVkQ29sb3JbM10gPSAyNTU7CisgICAgICAgIH0K
KyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1thXSk7CisgICAg
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIs
IEdMX05FQVJFU1QpOworICAgICAgICBkcmF3UXVhZChwcm9ncmFtLCBlc3NsMV9zaGFkZXJzOjpQ
b3NpdGlvbkF0dHJpYigpLCAwLjVmKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Cisg
ICAgICAgIEVYUEVDVF9QSVhFTF9SRUNUX0VRKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpLCBleHBlY3RlZENvbG9yKTsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAuMWYs
IDAuMmYsIDAuM2YsIDAuNGYpOworICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OworICAgIH0KK30KKwogLy8gVGVzdCB0byB2YWxpZGF0ZSB0aGF0IHdlIGNhbiBnbyBmcm9tIGFu
IFJHQkEgZnJhbWVidWZmZXIgYXR0YWNobWVudCwgdG8gYW4gUkdCIG9uZSBhbmQgc3RpbGwKIC8v
IGhhdmUgYSBjb3JyZWN0IGJlaGF2aW9yIGFmdGVyLgogVEVTVF9QKENsZWFyVGVzdCwgQ2hhbmdl
RnJhbWVidWZmZXJBdHRhY2htZW50RnJvbVJHQkF0b1JHQikKQEAgLTE3MzAsNCArMTg4NiwyNSBA
QCBBTkdMRV9JTlNUQU5USUFURV9URVNUX0NPTUJJTkVfNChWdWxrYW5DbGVhclRlc3QsCiAvLyBO
b3QgYWxsIEFOR0xFIGJhY2tlbmRzIHN1cHBvcnQgUkdCIGJhY2tidWZmZXJzCiBBTkdMRV9JTlNU
QU5USUFURV9URVNUKENsZWFyVGVzdFJHQiwgRVMyX0QzRDExKCksIEVTM19EM0QxMSgpLCBFUzJf
VlVMS0FOKCksIEVTM19WVUxLQU4oKSk7CiAKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1RfQ09NQklO
RV8yKENsZWFyRnJhbWVidWZmZXJUZXh0dXJlUkdCVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENsZWFyRnJhbWVidWZmZXJUZXh0dXJlUkdCVGVzdFByaW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UmFuZ2UoMCwgMyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpCb29sKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDExKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
UzNfRDNEMTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0wo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfVlVMS0FOKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfVlVMS0FOKCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9DT01CSU5FXzIoQ2xl
YXJGcmFtZWJ1ZmZlclRleHR1cmVSR0JFUzNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2xlYXJGcmFtZWJ1ZmZlclRleHR1cmVSR0JUZXN0UHJpbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpSYW5nZSgwLCAzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkJvb2woKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRVMzX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTEVTKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUzNfVlVMS0FO
KCkpOwogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJUZXN0LmNw
cAppbmRleCA1M2Y2OTRkMTJlYjk1M2MyMGJmYTM1ZWJmMWNjZTUxNjBmYjcyZjZjLi5lMjJjM2Ni
ZWQ4YTEzZGU2NzRhMjEzNTRjMTBmNWVlZWVmNDlkYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJU
ZXN0LmNwcApAQCAtMTU3OCw2ICsxNTc4LDU1IEBAIFRFU1RfUChGcmFtZWJ1ZmZlclRlc3QsIElu
Y29tcGxldGVDdWJlTWFwKQogICAgIEFTU0VSVF9HTEVOVU1fRVEoZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSwKICAgICAgICAgICAgICAgICAgICAgIEdMX0ZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCk7CiB9CisvLyBUZXN0IHRoYXQgYmxpdCBmcm9tIFJH
QkEgdG8gUkdCIHRleHR1cmVzCitURVNUX1AoRnJhbWVidWZmZXJUZXN0X0VTMywgQmxpdFJHQkFU
b1JHQkFscGhhT25lKQoreworICAgIGNvbnN0ZXhwciBpbnQga1NpemUgPSAxNjsKKyAgICBnbFZp
ZXdwb3J0KDAsIDAsIGtTaXplLCBrU2l6ZSk7CisKKyAgICBHTEZyYW1lYnVmZmVyIGZibzsKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBHTFRleHR1cmUg
dGV4dHVyZTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBrU2l6ZSwga1NpemUsIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKyAgICBBU1NFUlRf
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUoR0xfRlJBTUVCVUZGRVIpOworICAgIGNvbnN0IEdMQ29s
b3Iga0NsZWFyQ29sb3J7MCwgMjU1LCAwLCAwfTsKKyAgICBnbENsZWFyQ29sb3Ioa0NsZWFyQ29s
b3IuUiAvIDI1NS4wZiwga0NsZWFyQ29sb3IuRyAvIDI1NS4wZiwga0NsZWFyQ29sb3IuQiAvIDI1
NS4wZiwKKyAgICAgICAgICAgICAgICAga0NsZWFyQ29sb3IuQSAvIDI1NS5mKTsKKyAgICBnbENs
ZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgR0xGcmFtZWJ1ZmZlciBkZXN0RkJPOwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBkZXN0RkJPKTsKKyAgICBHTFRl
eHR1cmUgZGVzdFRleHR1cmU7CisgICAgc2V0dXBVbmluaXRpYWxpemVkVGV4dHVyZShrU2l6ZSwg
a1NpemUsIEdMX1JHQiwgR0xfUkdCLCAmZGVzdFRleHR1cmUpOworICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIGtTaXplLCBrU2l6ZSwgMCwgR0xfUkdCLCBHTF9VTlNJ
R05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgZGVzdFRleHR1cmUs
IDApOworICAgIEFTU0VSVF9HTF9GUkFNRUJVRkZFUl9DT01QTEVURShHTF9GUkFNRUJVRkZFUik7
CisKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBmYm8pOworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIGRlc3RGQk8pOworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xCbGl0RnJhbWVidWZmZXIoMCwgMCwga1NpemUs
IGtTaXplLCAwLCAwLCBrU2l6ZSwga1NpemUsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJF
U1QpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgY29uc3QgR0xDb2xvciBrRXhw
ZWN0ZWRDb2xvcntrQ2xlYXJDb2xvci5SLCBrQ2xlYXJDb2xvci5HLCBrQ2xlYXJDb2xvci5CLCAy
NTV9OworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVIsIGRlc3RGQk8p
OworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBrRXhwZWN0ZWRDb2xvcik7CisKKyAg
ICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgQU5HTEVfR0xfUFJP
R1JBTShwcm9ncmFtLCBlc3NsMV9zaGFkZXJzOjp2czo6VGV4dHVyZTJEKCksIGVzc2wxX3NoYWRl
cnM6OmZzOjpUZXh0dXJlMkQoKSk7CisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAgIGRy
YXdRdWFkKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OlBvc2l0aW9uQXR0cmliKCksIDAuNWYpOwor
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9SRUNUX0VRKDAsIDAs
IGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBrRXhwZWN0ZWRDb2xvcik7Cit9
CiAKIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMyKEFkZER1bW15VGV4dHVyZU5vUmVuZGVyVGFy
Z2V0VGVzdCk7CiBBTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMihGcmFtZWJ1ZmZlclRlc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Jv
YnVzdFJlc291cmNlSW5pdFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL1JvYnVzdFJlc291cmNlSW5pdFRlc3QuY3BwCmluZGV4IDdjNGFjNzFiMjE5
ODgxMTFmMmI3MTU1MDcxNDRiZmViNzU1ZDY4NmQuLjIwMmJkMTRhMjZlNzU4YjBhY2JhZGEwMzA2
YzliZTdmZWM4Mjg2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9Sb2J1c3RSZXNvdXJjZUluaXRUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUm9idXN0UmVzb3VyY2VJbml0VGVzdC5j
cHAKQEAgLTQwMCwyOCArNDAwLDcgQEAgVEVTVF9QKFJvYnVzdFJlc291cmNlSW5pdFRlc3QsIEJ1
ZmZlckRhdGFaZXJvU2l6ZSkKIC8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dl
YmdsL3Nkay90ZXN0cy9jb25mb3JtYW5jZS9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC5odG1sCiB2
b2lkIFJvYnVzdFJlc291cmNlSW5pdFRlc3Q6OnNldHVwVGV4dHVyZShHTFRleHR1cmUgKnRleCkK
IHsKLSAgICBHTHVpbnQgdGVtcFRleHR1cmU7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGVtcFRl
eHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGVtcFRleHR1cmUpOwot
ICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBrV2lkdGgsIGtIZWln
aHQsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotCi0gICAgLy8gdGhp
cyBjYW4gYmUgcXVpdGUgdW5kZXRlcm1pbmlzdGljIHNvIHRvIGltcHJvdmUgb2RkcyBvZiBzZWVp
bmcgdW5pbml0aWFsaXplZCBkYXRhIHdyaXRlIGJpdHMKLSAgICAvLyBpbnRvIHRleCB0aGVuIGRl
bGV0ZSB0ZXh0dXJlIHRoZW4gcmUtY3JlYXRlIG9uZSB3aXRoIHNhbWUgY2hhcmFjdGVyaXN0aWNz
IChkcml2ZXIgd2lsbCBsaWtlbHkKLSAgICAvLyByZXVzZSBtZW0pIHdpdGggdGhpcyB0cmljayBv
biByNTkwNDYgV2ViS2l0L09TWCBJIGdldCBGQUlMIDEwMCUgb2YgdGhlIHRpbWUgaW5zdGVhZCBv
ZiB+MTUlCi0gICAgLy8gb2YgdGhlIHRpbWUuCi0KLSAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIGtX
aWR0aCAqIGtIZWlnaHQgKiA0PiBiYWREYXRhOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YmFkRGF0YS5zaXplKCk7ICsraSkKLSAgICB7Ci0gICAgICAgIGJhZERhdGFbaV0gPSBzdGF0aWNf
Y2FzdDx1aW50OF90PihpICUgMjU1KTsKLSAgICB9Ci0KLSAgICBnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgMCwgMCwga1dpZHRoLCBrSGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLAotICAgICAgICAgICAgICAgICAgICBiYWREYXRhLmRhdGEoKSk7Ci0gICAgZ2xEZWxl
dGVUZXh0dXJlcygxLCAmdGVtcFRleHR1cmUpOwotCi0gICAgLy8gVGhpcyB3aWxsIGNyZWF0ZSB0
aGUgR0xUZXh0dXJlLgotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgKnRleCk7Cisg
ICAgc2V0dXBVbmluaXRpYWxpemVkVGV4dHVyZShrV2lkdGgsIGtIZWlnaHQsIEdMX1JHQkEsIEdM
X1JHQkEsIHRleCk7CiB9CiAKIHZvaWQgUm9idXN0UmVzb3VyY2VJbml0VGVzdDo6c2V0dXAzRFRl
eHR1cmUoR0xUZXh0dXJlICp0ZXgpCkBAIC03MDIsMzUgKzY4MSwzMiBAQCBURVNUX1AoUm9idXN0
UmVzb3VyY2VJbml0VGVzdEVTMywgQmluZFRleEltYWdlKQogfQogCiAvLyBUZXN0cyB0aGF0IGRy
YXdpbmcgd2l0aCBhbiB1bmluaXRpYWxpemVkIFRleHR1cmUgd29ya3MgYXMgZXhwZWN0ZWQuCi1U
RVNUX1AoUm9idXN0UmVzb3VyY2VJbml0VGVzdCwgRHJhd1dpdGhUZXh0dXJlKQorVEVTVF9QKFJv
YnVzdFJlc291cmNlSW5pdFRlc3QsIERyYXdXaXRoVGV4dHVyZVJHQkEpCiB7CiAgICAgQU5HTEVf
U0tJUF9URVNUX0lGKCFoYXNHTEV4dGVuc2lvbigpKTsKIAogICAgIEdMVGV4dHVyZSB0ZXh0dXJl
OwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgc2V0dXBV
bmluaXRpYWxpemVkVGV4dHVyZShrV2lkdGgsIGtIZWlnaHQsIEdMX1JHQkEsIEdMX1JHQkEsICZ0
ZXh0dXJlKTsKICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwga1dp
ZHRoLCBrSGVpZ2h0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgIGNvbnN0ZXhwciBjaGFyIGtWU1tdID0K
LSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyB2
ZWMyIHRleENvb3JkO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAg
IGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCi0gICAgICAgICIgICAgdGV4
Q29vcmQgPSAocG9zaXRpb24gKiAwLjUpICsgMC41O1xuIgotICAgICAgICAifSI7Ci0gICAgY29u
c3RleHByIGNoYXIga0ZTW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHNh
bXBsZXIyRCB0ZXg7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAg
Z2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpO1xuIgotICAgICAgICAifSI7
CisgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBlc3NsMV9zaGFkZXJzOjp2czo6VGV4dHVy
ZTJEKCksIGVzc2wxX3NoYWRlcnM6OmZzOjpUZXh0dXJlMkQoKSk7CisgICAgZ2xVc2VQcm9ncmFt
KHByb2dyYW0pOworICAgIGRyYXdRdWFkKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OlBvc2l0aW9u
QXR0cmliKCksIDAuNWYpOworICAgIGNoZWNrRnJhbWVidWZmZXJOb25aZXJvUGl4ZWxzKDAsIDAs
IGtXaWR0aCwga0hlaWdodCwgR0xDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Cit9CiAKLSAgICBB
TkdMRV9HTF9QUk9HUkFNKHByb2dyYW0sIGtWUywga0ZTKTsKLSAgICBkcmF3UXVhZChwcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKK1RFU1RfUChSb2J1c3RSZXNvdXJjZUluaXRUZXN0LCBEcmF3
V2l0aFRleHR1cmVSR0IpCit7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNHTEV4dGVuc2lv
bigpKTsKIAotICAgIGNoZWNrRnJhbWVidWZmZXJOb25aZXJvUGl4ZWxzKDAsIDAsIDAsIDAsIEdM
Q29sb3I6OmJsYWNrKTsKKyAgICBHTFRleHR1cmUgdGV4dHVyZTsKKyAgICBzZXR1cFVuaW5pdGlh
bGl6ZWRUZXh0dXJlKGtXaWR0aCwga0hlaWdodCwgR0xfUkdCLCBHTF9SR0IsICZ0ZXh0dXJlKTsK
KyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCLCBrV2lkdGgsIGtIZWln
aHQsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7
CisgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBlc3NsMV9zaGFkZXJzOjp2czo6VGV4dHVy
ZTJEKCksIGVzc2wxX3NoYWRlcnM6OmZzOjpUZXh0dXJlMkQoKSk7CisgICAgZ2xVc2VQcm9ncmFt
KHByb2dyYW0pOworICAgIGRyYXdRdWFkKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OlBvc2l0aW9u
QXR0cmliKCksIDAuNWYpOworICAgIGNoZWNrRnJhbWVidWZmZXJOb25aZXJvUGl4ZWxzKDAsIDAs
IGtXaWR0aCwga0hlaWdodCwgR0xDb2xvcjo6YmxhY2spOwogfQogCiAvLyBUZXN0cyB0aGF0IGRy
YXdpbmcgd2l0aCBhbiB1bmluaXRpYWxpemVkIG1pcHBlZCB0ZXh0dXJlIHdvcmtzIGFzIGV4cGVj
dGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1RleHR1cmVUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9UZXh0dXJlVGVzdC5jcHAKaW5kZXggY2ZmODliOTI2ZDQwYzc3NmYyNmY4N2E0NGUx
ZDMzZWExMWE0Mzk1Mi4uMjZlNTcxY2RjOGE5NjFmYTJkNzNhOGZhNmU0NDg5NjExNzNkMzNjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Rl
eHR1cmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvVGV4dHVyZVRlc3QuY3BwCkBAIC00MTQsNiArNDE0LDIzIEBAIGNsYXNzIFRleHR1cmUy
RFRlc3RFUzMgOiBwdWJsaWMgVGV4dHVyZTJEVGVzdAogICAgIH0KIH07CiAKK2NsYXNzIFRleHR1
cmUyREFscGhhVGVzdEVTMyA6IHB1YmxpYyBUZXh0dXJlMkRUZXN0RVMzCit7CisgIHByb3RlY3Rl
ZDoKKyAgICBjb25zdCBjaGFyICpnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gIiN2ZXJzaW9uIDMwMCBlc1xuIgorICAgICAgICAgICAgICAg
InByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKKyAgICAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hw
IHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgICAgICAgICAgICAiaW4gdmVjMiB0ZXhjb29yZDtcbiIK
KyAgICAgICAgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iCisgICAgICAgICAgICAgICAi
dm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAiICAg
IGZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwgdGV4dHVyZSh0ZXgsIHRleGNvb3JkKS5hKTtcbiIK
KyAgICAgICAgICAgICAgICJ9XG4iOworICAgIH0KK307CisKIGNsYXNzIFRleHR1cmUyREJhc2VN
YXhUZXN0RVMzIDogcHVibGljIEFOR0xFVGVzdAogewogICBwcm90ZWN0ZWQ6CkBAIC0zNjc4LDE2
ICszNjk1LDIxIEBAIFRFU1RfUChUZXh0dXJlU2l6ZVRleHR1cmVBcnJheVRlc3QsIEJhc2VMZXZl
bFZhcmllc0luVGV4dHVyZUFycmF5KQogCiAvLyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRo
b3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyByZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUu
CiAvLyBFUyAzLjAuNCB0YWJsZSAzLjI0Ci1URVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgVGV4dHVy
ZVJHQkltcGxpY2l0QWxwaGExKQorVEVTVF9QKFRleHR1cmUyREFscGhhVGVzdEVTMywgVGV4dHVy
ZVJHQkltcGxpY2l0QWxwaGExKQogewogICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7
Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCOCwgMSwgMSwgMCwgR0xfUkdCLCBHTF9V
TlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICBHTFRleHR1cmUgdGV4dHVyZTsKKyAgICBHTHVp
bnQgdyA9IGdldFdpbmRvd1dpZHRoKCk7CisgICAgR0x1aW50IGggPSBnZXRXaW5kb3dIZWlnaHQo
KTsKKyAgICBzZXR1cFVuaW5pdGlhbGl6ZWRUZXh0dXJlKHcsIGgsIEdMX1JHQjgsIEdMX1JHQiwg
JnRleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBHTF9SR0I4LCB3LCBoLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIp
OwogICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwogCiAgICAgZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOwogCi0gICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7
CisgICAgR0xDb2xvciBleHBlY3RlZENvbG9ye3swLjBmLCAxLjBmLCAwLjBmLCAxLjBmfX07Cisg
ICAgRVhQRUNUX1BJWEVMX1JFQ1RfRVEoMCwgMCwgdywgaCwgZXhwZWN0ZWRDb2xvcik7CiB9CiAK
IC8vIFdoZW4gc2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEi
IGlzIHJldHVybmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KQEAgLTczMzUsNiArNzM1Nyw3IEBAIEFO
R0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMyKFNhbXBsZXIyREFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0
KTsKIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMyKFNhbXBsZXJBcnJheVRlc3QpOwogQU5HTEVf
SU5TVEFOVElBVEVfVEVTVF9FUzIoU2FtcGxlckFycmF5QXNGdW5jdGlvblBhcmFtZXRlclRlc3Qp
OwogQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzMoVGV4dHVyZTJEVGVzdEVTMyk7CitBTkdMRV9J
TlNUQU5USUFURV9URVNUX0VTMyhUZXh0dXJlMkRBbHBoYVRlc3RFUzMpOwogQU5HTEVfSU5TVEFO
VElBVEVfVEVTVF9FUzMxKFRleHR1cmUyRFRlc3RFUzMxUFBPKTsKIEFOR0xFX0lOU1RBTlRJQVRF
X1RFU1RfRVMzKFRleHR1cmUyREJhc2VNYXhUZXN0RVMzKTsKIEFOR0xFX0lOU1RBTlRJQVRFX1RF
U1RfRVMzKFRleHR1cmUzRFRlc3RFUzMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL0FOR0xFVGVzdC5jcHAKaW5kZXggNDJkYTk4
ZDhlMjA4OTdmMzMwOTQ1ZWNjNTFhMTUzYWQwOGJjNTdmMi4uZjQ5ZjI4MTk1YzRiMjI5MjQzYzRl
NjFkZjYwZjZhZTcyN2YwOTg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuY3BwCkBAIC0xMSw2ICsxMSw3
IEBACiAKICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKICNpbmNsdWRlICJncHVfaW5mb191
dGlsL1N5c3RlbUluZm8uaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKICNpbmNs
dWRlICJ1dGlsL0VHTFdpbmRvdy5oIgogI2luY2x1ZGUgInV0aWwvT1NXaW5kb3cuaCIKICNpbmNs
dWRlICJ1dGlsL3JhbmRvbV91dGlscy5oIgpAQCAtNzI1LDYgKzcyNiwzOCBAQCB2b2lkIEFOR0xF
VGVzdEJhc2U6OnNldHVwSW5kZXhlZFF1YWRJbmRleEJ1ZmZlcigpCiAgICAgICAgICAgICAgICAg
IEdMX1NUQVRJQ19EUkFXKTsKIH0KIAorLy8gVGhlIGZvbGxvd2luZyB0ZXN0IGNvZGUgdHJhbnNs
YXRlZCBmcm9tIFdlYkdMIDEgdGVzdDoKKy8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lz
dHJ5L3dlYmdsL3Nkay90ZXN0cy9jb25mb3JtYW5jZS9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC5o
dG1sCit2b2lkIEFOR0xFVGVzdEJhc2U6OnNldHVwVW5pbml0aWFsaXplZFRleHR1cmUoaW50IHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkdMVGV4dHVyZSAqdGV4KQoreworICAgIGFzc2VydChmb3Jt
YXQgPT0gR0xfUkdCQSB8fCBmb3JtYXQgPT0gR0xfUkdCKTsKKyAgICBHTHVpbnQgdGVtcFRleHR1
cmU7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGVtcFRleHR1cmUpOworICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgdGVtcFRleHR1cmUpOworCisgICAgLy8gdGhpcyBjYW4gYmUgcXVp
dGUgdW5kZXRlcm1pbmlzdGljIHNvIHRvIGltcHJvdmUgb2RkcyBvZiBzZWVpbmcgdW5pbml0aWFs
aXplZCBkYXRhIHdyaXRlIGJpdHMKKyAgICAvLyBpbnRvIHRleCB0aGVuIGRlbGV0ZSB0ZXh0dXJl
IHRoZW4gcmUtY3JlYXRlIG9uZSB3aXRoIHNhbWUgY2hhcmFjdGVyaXN0aWNzIChkcml2ZXIgd2ls
bCBsaWtlbHkKKyAgICAvLyByZXVzZSBtZW0pIHdpdGggdGhpcyB0cmljayBvbiByNTkwNDYgV2Vi
S2l0L09TWCBJIGdldCBGQUlMIDEwMCUgb2YgdGhlIHRpbWUgaW5zdGVhZCBvZiB+MTUlCisgICAg
Ly8gb2YgdGhlIHRpbWUuCisgICAgaW50IHBpeGVsU2l6ZSA9IGludGVybmFsRm9ybWF0ID09IEdM
X1JHQkEgPyA0IDogMzsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBiYWREYXRhKHdpZHRoICog
aGVpZ2h0ICogcGl4ZWxTaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJhZERhdGEu
c2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBiYWREYXRhW2ldID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oaSAlIDI1NSk7CisgICAgfQorICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCBHTF9VTlNJR05FRF9C
WVRFLAorICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICBnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBHTF9VTlNJR05FRF9C
WVRFLAorICAgICAgICAgICAgICAgICAgICBiYWREYXRhLmRhdGEoKSk7CisgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmdGVtcFRleHR1cmUpOworCisgICAgLy8gVGhpcyB3aWxsIGNyZWF0ZSB0aGUg
R0xUZXh0dXJlLgorICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgKnRleCk7Cit9CiAv
LyBzdGF0aWMKIHZvaWQgQU5HTEVUZXN0QmFzZTo6ZHJhd1F1YWQoR0x1aW50IHByb2dyYW0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwb3NpdGlvbkF0
dHJpYk5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGVzdF91dGlscy9BTkdMRVRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90ZXN0X3V0aWxzL0FOR0xFVGVzdC5oCmluZGV4IGEwOGFjZjFjMTZhNmU2ZjcyMjJlZjNjZTcx
Y2EwN2NhZTcyMjkwMDQuLjIzM2FlZTJjZmFhNTM3YTJhY2FjODk2MjAzNDI5NmQyNzkzNWM1NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxz
L0FOR0xFVGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0
X3V0aWxzL0FOR0xFVGVzdC5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBhbmdsZQogewog
c3RydWN0IFN5c3RlbUluZm87CiBjbGFzcyBSTkc7CitjbGFzcyBHTFRleHR1cmU7CiB9ICAvLyBu
YW1lc3BhY2UgYW5nbGUKIAogI2RlZmluZSBBU1NFUlRfR0xfVFJVRShhKSBBU1NFUlRfRVEoc3Rh
dGljX2Nhc3Q8R0xib29sZWFuPihHTF9UUlVFKSwgKGEpKQpAQCAtMzUzLDYgKzM1NCwxMSBAQCBj
bGFzcyBBTkdMRVRlc3RCYXNlCiAgICAgdm9pZCBzZXR1cFF1YWRWZXJ0ZXhCdWZmZXIoR0xmbG9h
dCBwb3NpdGlvbkF0dHJpYlosIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlKTsKICAgICB2
b2lkIHNldHVwSW5kZXhlZFF1YWRWZXJ0ZXhCdWZmZXIoR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlos
IEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlKTsKICAgICB2b2lkIHNldHVwSW5kZXhlZFF1
YWRJbmRleEJ1ZmZlcigpOworICAgIHZvaWQgc2V0dXBVbmluaXRpYWxpemVkVGV4dHVyZShpbnQg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkdMVGV4dHVyZSAqdGV4dHVyZSk7
CiAKICAgICB2b2lkIGRyYXdRdWFkKEdMdWludCBwcm9ncmFtLCBjb25zdCBzdGQ6OnN0cmluZyAm
cG9zaXRpb25BdHRyaWJOYW1lLCBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWik7CiAgICAgdm9pZCBk
cmF3UXVhZChHTHVpbnQgcHJvZ3JhbSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFu
dGlhdGUuaAppbmRleCBlNGFiMTM4MDViNmNjZmRkODM0Y2RiZTFkZTcwYTVkZGMyMzIzZWEwLi5l
Yjc4NzY0YWIxZDdkMjE2N2QyMGQyMDE3Zjg3NmE3ZDg1M2FlNDJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3Rh
bnRpYXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRp
bHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oCkBAIC0yMTAsNiArMjEwLDEzIEBAIHN0cnVjdCBD
b21iaW5lZFByaW50VG9TdHJpbmdQYXJhbU5hbWUKICAgICBjb25zdCBkZWNsdHlwZShmaXJzdCkg
dGVzdE5hbWUjI3BhcmFtc1tdID0ge2ZpcnN0LCAjI19fVkFfQVJHU19ffTsgICAgICAgICAgXAog
ICAgIElOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICwgdGVzdE5hbWUsIHRlc3Rpbmc6OkNv
bWJpbmUoQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9QTEFURk9STVModGVzdE5hbWUpLCBjb21iaW5l
MSksIHByaW50KQorCisjZGVmaW5lIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfQ09NQklORV8yKHRl
c3ROYW1lLCBwcmludCwgY29tYmluZTEsIGNvbWJpbmUyLCBmaXJzdCwgLi4uKSBcCisgICAgY29u
c3QgZGVjbHR5cGUoZmlyc3QpIHRlc3ROYW1lIyNwYXJhbXNbXSA9IHtmaXJzdCwgIyNfX1ZBX0FS
R1NfX307ICAgICAgICAgICAgICAgICAgICBcCisgICAgSU5TVEFOVElBVEVfVEVTVF9TVUlURV9Q
KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICwgdGVzdE5hbWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRlc3Rp
bmc6OkNvbWJpbmUoQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9QTEFURk9STVModGVzdE5hbWUpLCBj
b21iaW5lMSwgY29tYmluZTIpLCBwcmludCkKKwogI2RlZmluZSBBTkdMRV9JTlNUQU5USUFURV9U
RVNUX0NPTUJJTkVfNCh0ZXN0TmFtZSwgcHJpbnQsIGNvbWJpbmUxLCBjb21iaW5lMiwgY29tYmlu
ZTMsIGNvbWJpbmU0LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpcnN0LCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBjb25zdCBkZWNsdHlwZShmaXJzdCkgdGVzdE5hbWUjI3BhcmFtc1tdID0ge2ZpcnN0
LCAjI19fVkFfQVJHU19ffTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo=
</data>
<flag name="commit-queue"
          id="423949"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>