<?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>200900</bug_id>
          
          <creation_ts>2019-08-19 16:15:44 -0700</creation_ts>
          <short_desc>Selectively enable extensions in ANGLE backend for WebGL</short_desc>
          <delta_ts>2019-08-28 13:38:19 -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>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>198948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Austin Eng">enga</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1562832</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2019-08-19 16:15:44 -0700</bug_when>
    <thetext>Currently in the ANGLE backend for WebGL, the underlying context is created with all extensions enabled:

https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm#L327

This was a workaround done out of expediency in order to get bits on the screen. There is a note about it here:

https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/angle/GraphicsContext3DANGLE.cpp#L395

&quot;&quot;&quot;
    // Note there are no Extensions3D::ensureEnabled calls here. The ANGLE
    // backend currently assumes at a fairly deep level that
    // EGL_EXTENSIONS_ENABLED_ANGLE is set to true during context creation: for
    // the allocation of rectangular textures, etc.
&quot;&quot;&quot;

In order for WebKit&apos;s ANGLE implementation to be conformant in the long term, with a minimum of additional validation at the WebKit level, it&apos;ll be necessary to figure out which extensions the implementation actually relies on, and selectively enable them during context initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562833</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2019-08-19 16:19:43 -0700</bug_when>
    <thetext>Austin, may I ask you to take this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562883</commentid>
    <comment_count>2</comment_count>
    <who name="Austin Eng">enga</who>
    <bug_when>2019-08-19 18:19:23 -0700</bug_when>
    <thetext>I&apos;ve got this initially working by requiring:
GL_ANGLE_texture_rectangle
GL_EXT_texture_format_BGRA8888

and placing:

GL_ANGLE_framebuffer_multisample
GL_ANGLE_framebuffer_blit
GL_OES_rgb8_rgba8
GL_OES_packed_depth_stencil

behind if(supports()) ensureEnabled(...);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563108</commentid>
    <comment_count>3</comment_count>
    <who name="Austin Eng">enga</who>
    <bug_when>2019-08-20 09:59:07 -0700</bug_when>
    <thetext>GL_ANGLE_texture_rectangle is required for textures backed by IOSurfaces.

GL_EXT_texture_format_BGRA8888 is required because GL_BGRA_EXT is used in EGL_CreatePbufferFromClientBuffer to make the pixel buffer from the IOSurface.

The GraphicsContext3D supports antialiasing via 
GL_ANGLE_framebuffer_multisample
GL_ANGLE_framebuffer_blit
GL_OES_rgb8_rgba8

and we use them to resolve a multisampled renderbuffer. They&apos;re not required because `antialias` may be false.

Finally, stencil-only is not allowed so the context only supports stencil via GL_OES_packed_depth_stencil. The extension is not required because `antialias` may be false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564616</commentid>
    <comment_count>4</comment_count>
      <attachid>377156</attachid>
    <who name="Austin Eng">enga</who>
    <bug_when>2019-08-23 14:55:45 -0700</bug_when>
    <thetext>Created attachment 377156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564670</commentid>
    <comment_count>5</comment_count>
      <attachid>377156</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2019-08-23 16:12:39 -0700</bug_when>
    <thetext>Comment on attachment 377156
Patch

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

Fantastic work Austin! It&apos;s exciting to see how many extension-related conformance tests this patch fixes!

Do any layout test expectations need to be updated?

Deferring review to Dean and Alex.

&gt; Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp:41
&gt; +    context.graphicsContext3D()-&gt;getExtensions().ensureEnabled(&quot;GL_ANGLE_instanced_arrays&quot;);

Does it seem necessary to conditionalize this with USE(ANGLE)? Many of the other ensureEnabled calls added by this patch are unconditional.

&gt; Source/WebCore/html/canvas/WebGLDepthTexture.cpp:40
&gt; +    context.graphicsContext3D()-&gt;getExtensions().ensureEnabled(&quot;GL_ARB_depth_texture&quot;);

Is there any problem calling ensureEnabled with GL_ARB_depth_texture if the underlying context doesn&apos;t support it? The ANGLE backend won&apos;t - it only supports ES extensions and ARB extensions are desktop-only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564685</commentid>
    <comment_count>6</comment_count>
    <who name="Austin Eng">enga</who>
    <bug_when>2019-08-23 16:33:10 -0700</bug_when>
    <thetext>(In reply to Kenneth Russell from comment #5)
&gt; Comment on attachment 377156 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377156&amp;action=review
&gt; 
&gt; Fantastic work Austin! It&apos;s exciting to see how many extension-related
&gt; conformance tests this patch fixes!
&gt; 
&gt; Do any layout test expectations need to be updated?
&gt; 

There shouldn&apos;t be any test expectation changes.

&gt; Deferring review to Dean and Alex.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp:41
&gt; &gt; +    context.graphicsContext3D()-&gt;getExtensions().ensureEnabled(&quot;GL_ANGLE_instanced_arrays&quot;);
&gt; 
&gt; Does it seem necessary to conditionalize this with USE(ANGLE)? Many of the
&gt; other ensureEnabled calls added by this patch are unconditional.
&gt;

It&apos;s conditionalized because #if !PLATFORM(GTK) &amp;&amp; !USE(ANGLE) then the header isn&apos;t included. We could unconditionally include the header though. Not sure what the conventions are in the project.

&gt; &gt; Source/WebCore/html/canvas/WebGLDepthTexture.cpp:40
&gt; &gt; +    context.graphicsContext3D()-&gt;getExtensions().ensureEnabled(&quot;GL_ARB_depth_texture&quot;);
&gt; 
&gt; Is there any problem calling ensureEnabled with GL_ARB_depth_texture if the
&gt; underlying context doesn&apos;t support it? The ANGLE backend won&apos;t - it only
&gt; supports ES extensions and ARB extensions are desktop-only.

This would just no-op but I put it here for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564718</commentid>
    <comment_count>7</comment_count>
      <attachid>377156</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2019-08-23 17:32:11 -0700</bug_when>
    <thetext>Comment on attachment 377156
Patch

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

&gt;&gt;&gt; Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp:41
&gt;&gt;&gt; +    context.graphicsContext3D()-&gt;getExtensions().ensureEnabled(&quot;GL_ANGLE_instanced_arrays&quot;);
&gt;&gt; 
&gt;&gt; Does it seem necessary to conditionalize this with USE(ANGLE)? Many of the other ensureEnabled calls added by this patch are unconditional.
&gt; 
&gt; It&apos;s conditionalized because #if !PLATFORM(GTK) &amp;&amp; !USE(ANGLE) then the header isn&apos;t included. We could unconditionally include the header though. Not sure what the conventions are in the project.

Sounds fine to conditionalize it then.

&gt;&gt;&gt; Source/WebCore/html/canvas/WebGLDepthTexture.cpp:40
&gt;&gt;&gt; +    context.graphicsContext3D()-&gt;getExtensions().ensureEnabled(&quot;GL_ARB_depth_texture&quot;);
&gt;&gt; 
&gt;&gt; Is there any problem calling ensureEnabled with GL_ARB_depth_texture if the underlying context doesn&apos;t support it? The ANGLE backend won&apos;t - it only supports ES extensions and ARB extensions are desktop-only.
&gt; 
&gt; This would just no-op but I put it here for consistency.

Sounds fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564976</commentid>
    <comment_count>8</comment_count>
      <attachid>377156</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-26 10:00:07 -0700</bug_when>
    <thetext>Comment on attachment 377156
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm:360
&gt; +    size_t requiredExtensionCount = sizeof(requiredExtensions) / sizeof(requiredExtensions[0]);

We usually use WTF_ARRAY_LENGTH for things like this.

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm:361
&gt; +    for (unsigned i = 0; i &lt; requiredExtensionCount; ++i) {

Nit: Why not use unsigned for both or size_t for both?

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm:371
&gt; +    size_t optionalExtensionCount = sizeof(optionalExtensions) / sizeof(optionalExtensions[0]);
&gt; +    for (unsigned i = 0; i &lt; optionalExtensionCount; ++i) {

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565092</commentid>
    <comment_count>9</comment_count>
      <attachid>377269</attachid>
    <who name="Austin Eng">enga</who>
    <bug_when>2019-08-26 14:24:22 -0700</bug_when>
    <thetext>Created attachment 377269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565093</commentid>
    <comment_count>10</comment_count>
      <attachid>377156</attachid>
    <who name="Austin Eng">enga</who>
    <bug_when>2019-08-26 14:26:51 -0700</bug_when>
    <thetext>Comment on attachment 377156
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm:360
&gt;&gt; +    size_t requiredExtensionCount = sizeof(requiredExtensions) / sizeof(requiredExtensions[0]);
&gt; 
&gt; We usually use WTF_ARRAY_LENGTH for things like this.

Done.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm:361
&gt;&gt; +    for (unsigned i = 0; i &lt; requiredExtensionCount; ++i) {
&gt; 
&gt; Nit: Why not use unsigned for both or size_t for both?

Done.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm:371
&gt;&gt; +    for (unsigned i = 0; i &lt; optionalExtensionCount; ++i) {
&gt; 
&gt; ditto

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565839</commentid>
    <comment_count>11</comment_count>
    <who name="Austin Eng">enga</who>
    <bug_when>2019-08-28 13:05:07 -0700</bug_when>
    <thetext>Can this have another review? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565850</commentid>
    <comment_count>12</comment_count>
      <attachid>377269</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-28 13:34:25 -0700</bug_when>
    <thetext>Comment on attachment 377269
Patch

Clearing flags on attachment: 377269

Committed r249218: &lt;https://trac.webkit.org/changeset/249218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565851</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-28 13:34:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565853</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-28 13:38:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/54805832&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377156</attachid>
            <date>2019-08-23 14:55:45 -0700</date>
            <delta_ts>2019-08-26 14:24:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200900-20190823145544.patch</filename>
            <type>text/plain</type>
            <size>15950</size>
            <attacher name="Austin Eng">enga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM4NTllNWRlMDlmM2Zm
MDk5NjVhMGRjNzIyZmVlNGVjNjM3MzIxZC4uOGM2MzZjZWQ1OTJhODdkNTNkODFhYmRiMGE5YzEx
Zjc0MWRjYTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTA4LTIzICBBdXN0
aW4gRW5nICA8ZW5nYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ3JlYXRlIEFOR0xFIEVHTCBD
b250ZXh0IHdpdGggYWxsIGV4dGVuc2lvbnMgZGlzYWJsZWQgYnkgZGVmYXVsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gV2ViR0wsIGV4dGVuc2lv
bnMgbXVzdCBiZSBleHBsaWNpdGx5IHJlcXVlc3RlZCBiZWZvcmUgdGhleSBhcmUgZW5hYmxlZC4K
KyAgICAgICAgRml4ZXMgdGhlIGZvbGxvd2luZyBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyB3aXRo
IHRoZSBBTkdMRSBiYWNrZW5kCisgICAgICAgIExheW91dFRlc3RzL3dlYmdsLyovY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9leHQtYmxlbmQtbWlubWF4Lmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMv
d2ViZ2wvKi9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC1mcmFnLWRlcHRoLmh0bWwKKyAgICAg
ICAgTGF5b3V0VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC1zaGFkZXIt
dGV4dHVyZS1sb2QuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy93ZWJnbC8qL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvZXh0LXNSR0IuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy93ZWJnbC8qL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXN0YW5kYXJkLWRlcml2YXRpdmVzLmh0bWwKKyAgICAg
ICAgTGF5b3V0VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWZsb2F0Lmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9leHRl
bnNpb25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zM3RjLmh0bWwKKyAgICAgICAgTGF5b3V0
VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtZGZkeC5mcmFn
Lmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9nbHNsL3Zhcmlh
Ymxlcy9nbHNsLWJ1aWx0LWlucy5odG1sCisgICAgICAgIExheW91dFRlc3RzL3dlYmdsLyovY29u
Zm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLW5wb3QtdmlkZW8uaHRtbAorICAgICAgICBM
YXlvdXRUZXN0cy93ZWJnbC8qL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1ucG90
Lmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNlZEFy
cmF5cyk6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFk
ZXJzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisKIDIwMTktMDgtMjEg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01haWxd
IFRhcHBpbmcgdG9wIG9mIG1lc3NhZ2Ugc2Nyb2xscyBiYWNrIHRvIGNvcGllZCB0ZXh0IGluc3Rl
YWQgb2YgdG9wIG9mIHRoZSBtZXNzYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKaW5kZXggMmEwYTdjM2M3MzU2ZjcxM2U0ZmY3
MTViYjRkZjA2ZWU2MmNmMTgwYi4uNzQwZDU0YjI1NDc1Y2Y3ODMyNDQ2ZTdhYjczYWZjYWMyZWYz
NTgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5j
ZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFu
Y2VkQXJyYXlzLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJBTkdMRUluc3RhbmNlZEFycmF5cy5oIgogCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBM
QVRGT1JNKEdUSykgfHwgVVNFKEFOR0xFKQogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2Vu
ZGlmCiAKQEAgLTM3LDYgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQU5HTEVJbnN0YW5j
ZWRBcnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogeworI2lmIFVTRShBTkdM
RSkKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisjZW5kaWYKIH0KIAogQU5H
TEVJbnN0YW5jZWRBcnJheXM6On5BTkdMRUluc3RhbmNlZEFycmF5cygpID0gZGVmYXVsdDsKQEAg
LTQ5LDggKzUyLDEyIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEFOR0xFSW5zdGFu
Y2VkQXJyYXlzOjpnZXROYW1lKCkgY29uc3QKIGJvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewogI2lmIFBMQVRG
T1JNKENPQ09BKQorI2lmIFVTRShBTkdMRSkKKyAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0Nv
bnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiKTsKKyNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiB0
cnVlOworI2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwCmluZGV4IGYxMTQ2N2YxMzJm
ZGY2MGFlM2JiNjAzY2U4ODM1MjhjZjU2ZmFmOTkuLjMwZGM0NDllNzQxMDVkYzUxZGEwOTViYzc0
ZDY4NWQ5MjljYWM1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKQEAgLTM5LDYgKzM5LDkgQEAgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UKICAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFw
aGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKSkKICAgICAsIG1faXNMRFJTdXBwb3J0ZWQoY29udGV4
dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90
ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKSkKIHsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9LSFJfdGV4dHVy
ZV9jb21wcmVzc2lvbl9hc3RjX2hkciJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHQz
RCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19sZHIiX3MpOworCiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIpOwogICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ181eDRfS0hSKTsKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEMuY3BwCmluZGV4IDFhNTBmYjdmNjkyNjQxODEyMzE5ZTBjMzhiODJlZjAwYzUwOGNjNjIuLjIx
NjhkYTM1ZmJhZjY5Yzg0NDg5NDI4NzI2MmJiNjFiMGQ4Nzc4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3Bw
CkBAIC0zNiw2ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CisgICAgY29u
dGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKwogICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsK
ICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQpOwogICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19SR0JBX0lO
VEVSUE9MQVRFRF9BTFBIQV9BTUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKaW5kZXggOWIwNzZhZWIw
NTRlMWZlNTRiMDY4YjFlMzliMDRlOTVhNzZlN2FjZi4uNGJkMGFmNDc0MDkwNDE4MzU0YjY1NjAz
YTdiNjBjNWRmZTJkOThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCkBAIC0zNyw2ICszNyw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogeworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJl
X2NvbXByZXNzaW9uX3B2cnRjIik7CisKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CiAg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcpOwogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lN
Ryk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggZTgwZmViZjI2MjBhMDBmYzQxODU0ZDU0ZjRkZDkw
N2NhNDY0MDMwZi4uNWRmZjE5MDRkNzY5NDIwOWNlOTk2ZmIwMmVmNDU5Y2I2MGE2MjNjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDLmNwcApAQCAtMzcsNiArMzcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihj
b250ZXh0KQogeworICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKTsKKyAgICBleHRlbnNpb25zLmVuc3VyZUVu
YWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpOworICAgIGV4dGVuc2lv
bnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisK
ICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsK
ICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQpOwpAQCAtNTMsOCArNTgsMTQgQEAgV2ViR0xFeHRl
bnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OmdldE5hbWUo
KSBjb25zdAogYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworI2lmIFVTRShB
TkdMRSkKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MSIpCisgICAgICAgICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xF
X3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpCisgICAgICAgICYmIGV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworI2Vsc2UKICAgICByZXR1
cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIp
CiAgICAgICAgIHx8IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDEiKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKaW5kZXggNjhk
YmRiZjY1YmIxZmZjNTI0OTVkZDQ1MzdiMWViZGIzNzIyODUyZi4uODBjZGQ1YzUyMWQ1YWU5YWE4
MTc5ODBjMjJjMmU3M2Q3NDVlNDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJl
RW5hYmxlZCgiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIik7CiB9CiAKIFdlYkdM
RGVidWdTaGFkZXJzOjp+V2ViR0xEZWJ1Z1NoYWRlcnMoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXggZmZhM2U3
MWEwNDIzY2NkMjhiZTA3YzAwMjM0MzAwMmFlOWVhMTI4ZS4uMGQxYjdhNzUxYWNkN2E4MTRhNGRl
NTEzYzk5ZjI2OWQ2ZmE5MGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmNwcApAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSIpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdMRGVwdGhUZXh0dXJlKCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVm
ZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cAppbmRleCAwZTM2MWViMDljZGJhZDM2ZmNhMTEyMTUzOWQwZTYwM2Q1Yjk2ZDQ0Li42NTA5YTky
MjQ3MmYxZTA3OWFjOTExMzRhM2Y2OTdkYThlMmM2MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogeworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKIH0KIAogV2ViR0xEcmF3QnVm
ZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBAIC00Niw4ICs0NywxMiBAQCBX
ZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERyYXdCdWZmZXJzOjpnZXROYW1lKCkg
Y29uc3QKIAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKIHsKKyNpZiBVU0UoQU5HTEUpCisgICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
ZHJhd19idWZmZXJzIik7CisjZWxzZQogICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2RyYXdfYnVmZmVycyIpCiAg
ICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOworI2VuZGlmCiB9
CiAKIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8
R0MzRGVudW0+JiBidWZmZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcAppbmRl
eCA2MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1YjE2Y2E0ZTA5Li43Y2JkZmZlOGVjZDBm
MzY1NmQwOGExYTA5OTlhMWIzNTg4MDVlY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFO
R0xFLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hh
cGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAgICAgRXh0ZW5zaW9uczNEJiBleHRl
bnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGgg
YnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQorICAgICAgICBpZiAoZXh0
ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lKSkKICAgICAg
ICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9P
RVM7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0
ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7CkBAIC0zOTIsMTMgKzM5MiwxMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7Ci0gICAgLy8g
Tm90ZSB0aGVyZSBhcmUgbm8gRXh0ZW5zaW9uczNEOjplbnN1cmVFbmFibGVkIGNhbGxzIGhlcmUu
IFRoZSBBTkdMRQotICAgIC8vIGJhY2tlbmQgY3VycmVudGx5IGFzc3VtZXMgYXQgYSBmYWlybHkg
ZGVlcCBsZXZlbCB0aGF0Ci0gICAgLy8gRUdMX0VYVEVOU0lPTlNfRU5BQkxFRF9BTkdMRSBpcyBz
ZXQgdG8gdHJ1ZSBkdXJpbmcgY29udGV4dCBjcmVhdGlvbjogZm9yCi0gICAgLy8gdGhlIGFsbG9j
YXRpb24gb2YgcmVjdGFuZ3VsYXIgdGV4dHVyZXMsIGV0Yy4KICAgICBFeHRlbnNpb25zM0QmIGV4
dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkgewog
ICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b24pKSB7CisgICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0ZW5jaWwg
aXMgdHJ1ZS4KICAgICAgICAgICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVs
c2UKQEAgLTQwOSw2ICs0MDYsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW4KICAgICAgICAg
Ly8gRklYTUU6IG11c3QgYWRqdXN0IHRoaXMgd2hlbiB1cGdyYWRpbmcgdG8gV2ViR0wgMi4wIC8g
T3BlbkdMIEVTIDMuMCBzdXBwb3J0LgogICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMo
IkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikgfHwgIWV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygi
R0xfT0VTX3JnYjhfcmdiYTgiKSB8fCBpc0dMRVMyQ29tcGxpYW50KCkpCiAgICAgICAgICAgICBt
X2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUi
KTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVi
dWZmZXJfYmxpdCIpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9P
RVNfcmdiOF9yZ2JhOCIpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0M0RDb2NvYS5tbQppbmRleCAyYzNjYWMwYWFhMDU2M2FmMWVkNGIzMzkzODY5ODk4MzIyMDU3
YzhiLi5iMmU5ZjQyMjA3Yzc0NjA3OWY5NjRmMjI4YTMzYjMxZDc1NTc1YWMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQz
RENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dDNEQ29jb2EubW0KQEAgLTMyOSw4ICszMjksNiBAQCBHcmFwaGljc0NvbnRl
eHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2luZAogICAgIGNvbnRleHRBdHRyaWJ1dGVzLnB1c2hfYmFjaygyKTsKICAgICBjb250
ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX0NPTlRFWFRfV0VCR0xfQ09NUEFUSUJJTElUWV9B
TkdMRSk7CiAgICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9UUlVFKTsKLSAgICBj
b250ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX0VYVEVOU0lPTlNfRU5BQkxFRF9BTkdMRSk7
Ci0gICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9UUlVFKTsKICAgICBpZiAoc3Ry
c3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKSkgewog
ICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BPV0VSX1BSRUZFUkVOQ0Vf
QU5HTEUpOwogICAgICAgICAvLyBFR0xfTE9XX1BPV0VSX0FOR0xFIGlzIHRoZSBkZWZhdWx0LiBD
aGFuZ2UgdG8KQEAgLTM0OCw2ICszNDYsMzMgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNz
Q29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmQKIAog
ICAgIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXlPYmosIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9f
U1VSRkFDRSwgbV9jb250ZXh0T2JqKTsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hh
ciogcmVxdWlyZWRFeHRlbnNpb25zW10gPSB7CisgICAgICAgICJHTF9BTkdMRV90ZXh0dXJlX3Jl
Y3RhbmdsZSIsIC8vIEZvciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzCisgICAgICAgICJHTF9F
WFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLCAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJm
YWNlIGZyb20gYW4gSU9TdXJmYWNlCisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogb3B0aW9uYWxFeHRlbnNpb25zW10gPSB7CisgICAgICAgICJHTF9FWFRfZGVidWdf
bWFya2VyIiwKKyAgICB9OworCisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25zID0gZ2V0RXh0
ZW5zaW9ucygpOworCisgICAgc2l6ZV90IHJlcXVpcmVkRXh0ZW5zaW9uQ291bnQgPSBzaXplb2Yo
cmVxdWlyZWRFeHRlbnNpb25zKSAvIHNpemVvZihyZXF1aXJlZEV4dGVuc2lvbnNbMF0pOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXF1aXJlZEV4dGVuc2lvbkNvdW50OyArK2kpIHsK
KyAgICAgICAgaWYgKCFleHRlbnNpb25zLnN1cHBvcnRzKHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSkp
IHsKKyAgICAgICAgICAgIExPRyhXZWJHTCwgIk1pc3NpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uLiIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZXh0ZW5zaW9ucy5l
bnN1cmVFbmFibGVkKHJlcXVpcmVkRXh0ZW5zaW9uc1tpXSk7CisgICAgfQorCisgICAgc2l6ZV90
IG9wdGlvbmFsRXh0ZW5zaW9uQ291bnQgPSBzaXplb2Yob3B0aW9uYWxFeHRlbnNpb25zKSAvIHNp
emVvZihvcHRpb25hbEV4dGVuc2lvbnNbMF0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBvcHRpb25hbEV4dGVuc2lvbkNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMu
c3VwcG9ydHMob3B0aW9uYWxFeHRlbnNpb25zW2ldKSkKKyAgICAgICAgICAgIGV4dGVuc2lvbnMu
ZW5zdXJlRW5hYmxlZChvcHRpb25hbEV4dGVuc2lvbnNbaV0pOworICAgIH0KKwogI2VuZGlmIC8v
ICNlbGlmIFVTRShBTkdMRSkKIAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377269</attachid>
            <date>2019-08-26 14:24:22 -0700</date>
            <delta_ts>2019-08-28 13:34:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200900-20190826142421.patch</filename>
            <type>text/plain</type>
            <size>15780</size>
            <attacher name="Austin Eng">enga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM4NTllNWRlMDlmM2Zm
MDk5NjVhMGRjNzIyZmVlNGVjNjM3MzIxZC4uOGM2MzZjZWQ1OTJhODdkNTNkODFhYmRiMGE5YzEx
Zjc0MWRjYTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTA4LTIzICBBdXN0
aW4gRW5nICA8ZW5nYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ3JlYXRlIEFOR0xFIEVHTCBD
b250ZXh0IHdpdGggYWxsIGV4dGVuc2lvbnMgZGlzYWJsZWQgYnkgZGVmYXVsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gV2ViR0wsIGV4dGVuc2lv
bnMgbXVzdCBiZSBleHBsaWNpdGx5IHJlcXVlc3RlZCBiZWZvcmUgdGhleSBhcmUgZW5hYmxlZC4K
KyAgICAgICAgRml4ZXMgdGhlIGZvbGxvd2luZyBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyB3aXRo
IHRoZSBBTkdMRSBiYWNrZW5kCisgICAgICAgIExheW91dFRlc3RzL3dlYmdsLyovY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9leHQtYmxlbmQtbWlubWF4Lmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMv
d2ViZ2wvKi9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC1mcmFnLWRlcHRoLmh0bWwKKyAgICAg
ICAgTGF5b3V0VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC1zaGFkZXIt
dGV4dHVyZS1sb2QuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy93ZWJnbC8qL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvZXh0LXNSR0IuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy93ZWJnbC8qL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXN0YW5kYXJkLWRlcml2YXRpdmVzLmh0bWwKKyAgICAg
ICAgTGF5b3V0VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWZsb2F0Lmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9leHRl
bnNpb25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zM3RjLmh0bWwKKyAgICAgICAgTGF5b3V0
VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc2hhZGVyLXdpdGgtZGZkeC5mcmFn
Lmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMvd2ViZ2wvKi9jb25mb3JtYW5jZS9nbHNsL3Zhcmlh
Ymxlcy9nbHNsLWJ1aWx0LWlucy5odG1sCisgICAgICAgIExheW91dFRlc3RzL3dlYmdsLyovY29u
Zm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLW5wb3QtdmlkZW8uaHRtbAorICAgICAgICBM
YXlvdXRUZXN0cy93ZWJnbC8qL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1ucG90
Lmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNlZEFy
cmF5cyk6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVk
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFk
ZXJzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisKIDIwMTktMDgtMjEg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01haWxd
IFRhcHBpbmcgdG9wIG9mIG1lc3NhZ2Ugc2Nyb2xscyBiYWNrIHRvIGNvcGllZCB0ZXh0IGluc3Rl
YWQgb2YgdG9wIG9mIHRoZSBtZXNzYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKaW5kZXggMmEwYTdjM2M3MzU2ZjcxM2U0ZmY3
MTViYjRkZjA2ZWU2MmNmMTgwYi4uNzQwZDU0YjI1NDc1Y2Y3ODMyNDQ2ZTdhYjczYWZjYWMyZWYz
NTgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5j
ZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFu
Y2VkQXJyYXlzLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbmNs
dWRlICJBTkdMRUluc3RhbmNlZEFycmF5cy5oIgogCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBM
QVRGT1JNKEdUSykgfHwgVVNFKEFOR0xFKQogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgogI2Vu
ZGlmCiAKQEAgLTM3LDYgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQU5HTEVJbnN0YW5j
ZWRBcnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogeworI2lmIFVTRShBTkdM
RSkKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisjZW5kaWYKIH0KIAogQU5H
TEVJbnN0YW5jZWRBcnJheXM6On5BTkdMRUluc3RhbmNlZEFycmF5cygpID0gZGVmYXVsdDsKQEAg
LTQ5LDggKzUyLDEyIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEFOR0xFSW5zdGFu
Y2VkQXJyYXlzOjpnZXROYW1lKCkgY29uc3QKIGJvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewogI2lmIFBMQVRG
T1JNKENPQ09BKQorI2lmIFVTRShBTkdMRSkKKyAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0Nv
bnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiKTsKKyNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiB0
cnVlOworI2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwCmluZGV4IGYxMTQ2N2YxMzJm
ZGY2MGFlM2JiNjAzY2U4ODM1MjhjZjU2ZmFmOTkuLjMwZGM0NDllNzQxMDVkYzUxZGEwOTViYzc0
ZDY4NWQ5MjljYWM1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKQEAgLTM5LDYgKzM5LDkgQEAgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UKICAgICAsIG1faXNIRFJTdXBwb3J0ZWQoY29udGV4dC5ncmFw
aGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKSkKICAgICAsIG1faXNMRFJTdXBwb3J0ZWQoY29udGV4
dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0tIUl90
ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKSkKIHsKKyAgICBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9LSFJfdGV4dHVy
ZV9jb21wcmVzc2lvbl9hc3RjX2hkciJfcyk7CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHQz
RCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19sZHIiX3MpOworCiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIpOwogICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ181eDRfS0hSKTsKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEMuY3BwCmluZGV4IDFhNTBmYjdmNjkyNjQxODEyMzE5ZTBjMzhiODJlZjAwYzUwOGNjNjIuLjIx
NjhkYTM1ZmJhZjY5Yzg0NDg5NDI4NzI2MmJiNjFiMGQ4Nzc4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3Bw
CkBAIC0zNiw2ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CisgICAgY29u
dGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKKwogICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsK
ICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQpOwogICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19SR0JBX0lO
VEVSUE9MQVRFRF9BTFBIQV9BTUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKaW5kZXggOWIwNzZhZWIw
NTRlMWZlNTRiMDY4YjFlMzliMDRlOTVhNzZlN2FjZi4uNGJkMGFmNDc0MDkwNDE4MzU0YjY1NjAz
YTdiNjBjNWRmZTJkOThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCkBAIC0zNyw2ICszNyw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogeworICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJl
X2NvbXByZXNzaW9uX3B2cnRjIik7CisKICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7CiAg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcpOwogICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lN
Ryk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggZTgwZmViZjI2MjBhMDBmYzQxODU0ZDU0ZjRkZDkw
N2NhNDY0MDMwZi4uNWRmZjE5MDRkNzY5NDIwOWNlOTk2ZmIwMmVmNDU5Y2I2MGE2MjNjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDLmNwcApAQCAtMzcsNiArMzcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihj
b250ZXh0KQogeworICAgIGF1dG8mIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQoIkdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKTsKKyAgICBleHRlbnNpb25zLmVuc3VyZUVu
YWJsZWQoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpOworICAgIGV4dGVuc2lv
bnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisK
ICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7CiAgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsK
ICAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQpOwpAQCAtNTMsOCArNTgsMTQgQEAgV2ViR0xFeHRl
bnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OmdldE5hbWUo
KSBjb25zdAogYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9
IGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworI2lmIFVTRShB
TkdMRSkKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MSIpCisgICAgICAgICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xF
X3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpCisgICAgICAgICYmIGV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworI2Vsc2UKICAgICByZXR1
cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIp
CiAgICAgICAgIHx8IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDEiKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKaW5kZXggNjhk
YmRiZjY1YmIxZmZjNTI0OTVkZDQ1MzdiMWViZGIzNzIyODUyZi4uODBjZGQ1YzUyMWQ1YWU5YWE4
MTc5ODBjMjJjMmU3M2Q3NDVlNDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7
CisgICAgY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJl
RW5hYmxlZCgiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIik7CiB9CiAKIFdlYkdM
RGVidWdTaGFkZXJzOjp+V2ViR0xEZWJ1Z1NoYWRlcnMoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXggZmZhM2U3
MWEwNDIzY2NkMjhiZTA3YzAwMjM0MzAwMmFlOWVhMTI4ZS4uMGQxYjdhNzUxYWNkN2E4MTRhNGRl
NTEzYzk5ZjI2OWQ2ZmE5MGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmNwcApAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Cisg
ICAgY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BUkJfZGVwdGhfdGV4dHVy
ZSIpOwogfQogCiBXZWJHTERlcHRoVGV4dHVyZTo6fldlYkdMRGVwdGhUZXh0dXJlKCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVm
ZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNw
cAppbmRleCAwZTM2MWViMDljZGJhZDM2ZmNhMTEyMTUzOWQwZTYwM2Q1Yjk2ZDQ0Li42NTA5YTky
MjQ3MmYxZTA3OWFjOTExMzRhM2Y2OTdkYThlMmM2MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBXZWJHTERyYXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogeworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKIH0KIAogV2ViR0xEcmF3QnVm
ZmVyczo6fldlYkdMRHJhd0J1ZmZlcnMoKSA9IGRlZmF1bHQ7CkBAIC00Niw4ICs0NywxMiBAQCBX
ZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERyYXdCdWZmZXJzOjpnZXROYW1lKCkg
Y29uc3QKIAogYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKIHsKKyNpZiBVU0UoQU5HTEUpCisgICAgcmV0dXJuIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
ZHJhd19idWZmZXJzIik7CisjZWxzZQogICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2RyYXdfYnVmZmVycyIpCiAg
ICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKGNvbnRleHQpOworI2VuZGlmCiB9
CiAKIHZvaWQgV2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8
R0MzRGVudW0+JiBidWZmZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcAppbmRl
eCA2MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1YjE2Y2E0ZTA5Li43Y2JkZmZlOGVjZDBm
MzY1NmQwOGExYTA5OTlhMWIzNTg4MDVlY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFO
R0xFLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hh
cGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAgICAgRXh0ZW5zaW9uczNEJiBleHRl
bnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGgg
YnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQorICAgICAgICBpZiAoZXh0
ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lKSkKICAgICAg
ICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9P
RVM7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0
ID0gR0xfREVQVEhfQ09NUE9ORU5UMTY7CkBAIC0zOTIsMTMgKzM5MiwxMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7Ci0gICAgLy8g
Tm90ZSB0aGVyZSBhcmUgbm8gRXh0ZW5zaW9uczNEOjplbnN1cmVFbmFibGVkIGNhbGxzIGhlcmUu
IFRoZSBBTkdMRQotICAgIC8vIGJhY2tlbmQgY3VycmVudGx5IGFzc3VtZXMgYXQgYSBmYWlybHkg
ZGVlcCBsZXZlbCB0aGF0Ci0gICAgLy8gRUdMX0VYVEVOU0lPTlNfRU5BQkxFRF9BTkdMRSBpcyBz
ZXQgdG8gdHJ1ZSBkdXJpbmcgY29udGV4dCBjcmVhdGlvbjogZm9yCi0gICAgLy8gdGhlIGFsbG9j
YXRpb24gb2YgcmVjdGFuZ3VsYXIgdGV4dHVyZXMsIGV0Yy4KICAgICBFeHRlbnNpb25zM0QmIGV4
dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkgewog
ICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b24pKSB7CisgICAgICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0ZW5jaWwg
aXMgdHJ1ZS4KICAgICAgICAgICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVs
c2UKQEAgLTQwOSw2ICs0MDYsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW4KICAgICAgICAg
Ly8gRklYTUU6IG11c3QgYWRqdXN0IHRoaXMgd2hlbiB1cGdyYWRpbmcgdG8gV2ViR0wgMi4wIC8g
T3BlbkdMIEVTIDMuMCBzdXBwb3J0LgogICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMo
IkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikgfHwgIWV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKSB8fCAhZXh0ZW5zaW9ucy5zdXBwb3J0cygi
R0xfT0VTX3JnYjhfcmdiYTgiKSB8fCBpc0dMRVMyQ29tcGxpYW50KCkpCiAgICAgICAgICAgICBt
X2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4
dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUi
KTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVi
dWZmZXJfYmxpdCIpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJHTF9P
RVNfcmdiOF9yZ2JhOCIpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0M0RDb2NvYS5tbQppbmRleCAyYzNjYWMwYWFhMDU2M2FmMWVkNGIzMzkzODY5ODk4MzIyMDU3
YzhiLi5lYzk4MDUxNDU1YjcwZDA4NWU3Y2ZlNmUzNWJjMTNiMmE5MjNmNzgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQz
RENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dDNEQ29jb2EubW0KQEAgLTMyOSw4ICszMjksNiBAQCBHcmFwaGljc0NvbnRl
eHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2luZAogICAgIGNvbnRleHRBdHRyaWJ1dGVzLnB1c2hfYmFjaygyKTsKICAgICBjb250
ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX0NPTlRFWFRfV0VCR0xfQ09NUEFUSUJJTElUWV9B
TkdMRSk7CiAgICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9UUlVFKTsKLSAgICBj
b250ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX0VYVEVOU0lPTlNfRU5BQkxFRF9BTkdMRSk7
Ci0gICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9UUlVFKTsKICAgICBpZiAoc3Ry
c3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKSkgewog
ICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BPV0VSX1BSRUZFUkVOQ0Vf
QU5HTEUpOwogICAgICAgICAvLyBFR0xfTE9XX1BPV0VSX0FOR0xFIGlzIHRoZSBkZWZhdWx0LiBD
aGFuZ2UgdG8KQEAgLTM0OCw2ICszNDYsMzEgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNz
Q29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmQKIAog
ICAgIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXlPYmosIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9f
U1VSRkFDRSwgbV9jb250ZXh0T2JqKTsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hh
ciogcmVxdWlyZWRFeHRlbnNpb25zW10gPSB7CisgICAgICAgICJHTF9BTkdMRV90ZXh0dXJlX3Jl
Y3RhbmdsZSIsIC8vIEZvciBJT1N1cmZhY2UtYmFja2VkIHRleHR1cmVzCisgICAgICAgICJHTF9F
WFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLCAvLyBGb3IgY3JlYXRpbmcgdGhlIEVHTCBzdXJm
YWNlIGZyb20gYW4gSU9TdXJmYWNlCisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogb3B0aW9uYWxFeHRlbnNpb25zW10gPSB7CisgICAgICAgICJHTF9FWFRfZGVidWdf
bWFya2VyIiwKKyAgICB9OworCisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25zID0gZ2V0RXh0
ZW5zaW9ucygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHJlcXVpcmVkRXh0ZW5zaW9ucyk7ICsraSkgeworICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3Vw
cG9ydHMocmVxdWlyZWRFeHRlbnNpb25zW2ldKSkgeworICAgICAgICAgICAgTE9HKFdlYkdMLCAi
TWlzc2luZyByZXF1aXJlZCBleHRlbnNpb24uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBleHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocmVxdWlyZWRFeHRlbnNp
b25zW2ldKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9M
RU5HVEgob3B0aW9uYWxFeHRlbnNpb25zKTsgKytpKSB7CisgICAgICAgIGlmIChleHRlbnNpb25z
LnN1cHBvcnRzKG9wdGlvbmFsRXh0ZW5zaW9uc1tpXSkpCisgICAgICAgICAgICBleHRlbnNpb25z
LmVuc3VyZUVuYWJsZWQob3B0aW9uYWxFeHRlbnNpb25zW2ldKTsKKyAgICB9CisKICNlbmRpZiAv
LyAjZWxpZiBVU0UoQU5HTEUpCiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>