<?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>138562</bug_id>
          
          <creation_ts>2014-11-10 04:05:17 -0800</creation_ts>
          <short_desc>[GStreamer] GstGL support in the video sink</short_desc>
          <delta_ts>2015-04-01 03:20:28 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142530</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>j.isorce</cc>
    
    <cc>obzhirov</cc>
    
    <cc>pnormand</cc>
    
    <cc>slomo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>yoon</cc>
    
    <cc>ystreet00</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1047514</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-10 04:05:17 -0800</bug_when>
    <thetext>See https://bugzilla.gnome.org/show_bug.cgi?id=723674</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053829</commentid>
    <comment_count>1</comment_count>
      <attachid>242936</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-09 10:02:28 -0800</bug_when>
    <thetext>Created attachment 242936
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054220</commentid>
    <comment_count>2</comment_count>
      <attachid>243045</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-10 10:23:47 -0800</bug_when>
    <thetext>Created attachment 243045
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054389</commentid>
    <comment_count>3</comment_count>
      <attachid>243045</attachid>
    <who name="Matthew Waters">ystreet00</who>
    <bug_when>2014-12-10 19:23:04 -0800</bug_when>
    <thetext>Comment on attachment 243045
patch

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

Looks good.  There doesn&apos;t seem to be any threading issues.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:316
&gt; +                gst_gl_context_set_error(glMemory-&gt;context, &quot;Failed to map intermediate memory&quot;);

gst_gl_context_set_error() simply GST_WARNING&apos;s in the GstGLContext debug category.  I would avoid using it for new code and call GST_WARNING yourself.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:444
&gt; +    gst_caps_set_features(priv-&gt;glCaps, 0, glFeatures);

You probably also want to set the format here as well unless you&apos;re never going to deal with YUV formats.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:600
&gt; +    gst_gl_handle_set_context(element, context, &amp;sink-&gt;priv-&gt;display, &amp;sink-&gt;priv-&gt;context);

shouldn&apos;t this be &amp;sink-&gt;priv-&gt;otherContext or nullptr if you don&apos;t care?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054474</commentid>
    <comment_count>4</comment_count>
      <attachid>243045</attachid>
    <who name="Julien Isorce">j.isorce</who>
    <bug_when>2014-12-11 05:15:24 -0800</bug_when>
    <thetext>Comment on attachment 243045
patch

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

It is nice than now with gstgl we can share the texture list between gstgl context and external contexts. Your patch will be a good example! I have put some remarks to open the discussion.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:316
&gt;&gt; +                gst_gl_context_set_error(glMemory-&gt;context, &quot;Failed to map intermediate memory&quot;);
&gt; 
&gt; gst_gl_context_set_error() simply GST_WARNING&apos;s in the GstGLContext debug category.  I would avoid using it for new code and call GST_WARNING yourself.

Also I would go for gst_buffer_map instead of gst_memory_map as you do not actually use the mapInfo. And I would put this gst_buffer_map just before gst_buffer_n_memory. You just want to &quot;protect&quot; the calls that access the memory, even right ?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:319
&gt; +            gboolean copied = gst_gl_memory_copy_into_texture(glMemory, textureID, textureType, size.width(), size.height(), GST_VIDEO_INFO_PLANE_STRIDE(&amp;videoInfo, 0), true /* respecify */);

For future I think you can even try to improve BitmapTextureGL to create for example a BitmapTextureGstGL that own a ref on the gstbuffer. And internally wrap its gl texture from gstgl. Then also improve the textureMapperPool so that you can attach your BitmapTextureGstGL into the pool. In order to avoid this GPU/GPU copy.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:325
&gt; +    }

Generally speaking about this block, correct me if I am wrong but in case of the decoder gives you raw data (I mean system mem data) then this block make the path even worst no ?  Without the block the raw data is uploaded through webkit::texture-&gt;updateContents(..), and with this block it is uploaded through &quot;gst_gl_upload_perform_with_buffer&quot; but with the additional GPU-GPU frame copy.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:329
&gt;      GstVideoGLTextureUploadMeta* meta;

Why do you need to big block that call gst_gl_memory_copy_into_texture ? I think glupload should set the meta so that the block below that calls gst_video_gl_texture_upload_meta_upload should handle that for you. Especially for eglimage, it will convert the eglimage directly to the webkit&apos;s textureID acquired above.
Ah after going through more of your patch, I think this first big block could only be when decoders output raw data. The second block below about meta upload should be for vaapi and omx cases.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:184
&gt; +        if (glxSharingContext)

glx: so what is the gstdecoder involve in your tests ? vaapi ? or only decoders that output raw frames for now ?
Because in case your decoder gives you raw data, like gst/avdec_h264, then you have 2 options: 1: let webkit do the texture upload as existing, 2:use gstgl+avoid_GPU_GPU_frame_copy.  I think option 2 is better also because you could set in webkit::VideoSinkGstreamer.cpp that it supports same rgb and yuv variants as glimagesink. (for example if decode outputs YUV then you avoid software conversion to RGB)
And in case of vaapidec or omxvideodec, the gst gl upload meta stuffs should do. For these zero-copy paths you only need to keep the context sharing setup.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:472
&gt; +    }

You do not need to map/unmap here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054770</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-11 23:53:40 -0800</bug_when>
    <thetext>Thanks for the reviews :) I won&apos;t have time today but I&apos;ll update the patch next week according to your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055967</commentid>
    <comment_count>6</comment_count>
      <attachid>243045</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-12-16 06:23:51 -0800</bug_when>
    <thetext>Comment on attachment 243045
patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:432
&gt; +    GThreadSafeMainLoopSource timeoutSource;
&gt; +    gst_object_ref(sink);
&gt; +    timeoutSource.schedule(&quot;[WebKit][gst] GL context wrap&quot;, std::function&lt;void()&gt;(std::bind(wrapGLContextCallback, sink)), G_PRIORITY_DEFAULT, [sink] {
&gt; +        gst_object_unref(sink);
&gt; +    });

Would GMainLoopSource::scheduleAndDeleteOnDestroy() fit better here? I don&apos;t think GThreadSafeMainLoopSource is required here in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057025</commentid>
    <comment_count>7</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-12-19 05:12:35 -0800</bug_when>
    <thetext>Testing the patch I got hit by http://www.w3.org/2010/05/video/mediaevents.html

This the gst (gl related) log:

0:00:04.765747396 12231      0x2633720 INFO               glcontext gstglcontext.c:1338:gst_gl_context_create_thread: Enabling GL context debugging
0:00:04.765781113 12231      0x1b22350 INFO               glcontext gstglcontext.c:907:gst_gl_context_create: gl thread created

** (WebKitWebProcess:12231): CRITICAL **: gst_gl_context_new_wrapped: assertion &apos;(display_api &amp; available_apis) != GST_GL_API_NONE&apos; failed
0:00:04.772857003 12231 0x7f869c0e5e80 DEBUG               glmemory gstglmemory.c:603:_gl_mem_init: new GL texture memory:0x7f86a40f7630 format:4 dimensions:854x480 size:1639680
0:00:04.773751979 12231 0x7f869c0e5e80 DEBUG               glmemory gstglmemory.c:603:_gl_mem_init: new GL texture memory:0x7f86a40f77b0 format:4 dimensions:854x480 size:1639680
0:00:04.776882953 12231 0x7f869c0e5e80 DEBUG               glupload gstglupload.c:754:_upload_find_method:&lt;glupload0&gt; attempting upload with uploader GLMemory
0:00:04.776919275 12231 0x7f869c0e5e80 DEBUG               glupload gstglupload.c:754:_upload_find_method:&lt;glupload0&gt; attempting upload with uploader EGLImage
0:00:04.776927610 12231 0x7f869c0e5e80 DEBUG               glupload gstglupload.c:754:_upload_find_method:&lt;glupload0&gt; attempting upload with uploader UploadMeta
0:00:04.776939099 12231 0x7f869c0e5e80 DEBUG               glupload gstglupload.c:754:_upload_find_method:&lt;glupload0&gt; attempting upload with uploader Raw Data
0:00:04.776960106 12231 0x7f869c0e5e80 DEBUG               glmemory gstglmemory.c:603:_gl_mem_init: new GL texture memory:0x7f86a40f7930 format:4 dimensions:854x480 size:1639680
0:00:18.544331134 12231      0x2633720 ERROR              glcontext gstglcontext.c:1046:_gst_gl_debug_callback:&lt;glcontextglx0&gt; high: GL error from API id:1, GL_INVALID_OPERATION in glBindTexture(non-gen name)
0:00:18.544425112 12231      0x2633720 ERROR              glcontext gstglcontext.c:1046:_gst_gl_debug_callback:&lt;glcontextglx0&gt; high: GL error from API id:1, GL_INVALID_OPERATION in glTexSubImage2D(invalid texture image)

and the last two messages are repeated indefinitely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057036</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-19 08:34:12 -0800</bug_when>
    <thetext>With gst git master?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057282</commentid>
    <comment_count>9</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-12-20 13:29:55 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; With gst git master?

Yep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057305</commentid>
    <comment_count>10</comment_count>
    <who name="Matthew Waters">ystreet00</who>
    <bug_when>2014-12-20 20:30:21 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Testing the patch I got hit by
&gt; http://www.w3.org/2010/05/video/mediaevents.html
&gt; 
&gt; This the gst (gl related) log:

You&apos;re missing the beginning of the log which contains some other useful information on how the GL api was chosen and what limited the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057313</commentid>
    <comment_count>11</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-12-21 07:21:49 -0800</bug_when>
    <thetext>0:00:04.436295684  4752       0x6fc350 INFO               gldisplay gstgldisplay.c:147:gst_gl_display_new: creating a display, user choice:(NULL) (platform: (NULL))

** (WebKitWebProcess:4752): CRITICAL **: gst_gl_context_new_wrapped: assertion &apos;(display_api &amp; available_apis) != GST_GL_API_NONE&apos; failed
0:00:04.436896976  4752       0x6fc350 INFO               glcontext gstglcontext.c:277:gst_gl_context_new: creating a context, user choice:(null)
0:00:04.436936743  4752       0x6fc350 INFO                glwindow gstglwindow.c:213:gst_gl_window_new: creating a window, user choice:(null)
0:00:04.446047276  4752      0x1640450 INFO                glwindow gstglcontext_glx.c:303:gst_gl_context_glx_choose_format: GLX Version: 1.4
0:00:04.446087292  4752      0x1640450 DEBUG               glwindow gstglcontext_glx.c:121:_describe_fbconfig: ID: 117
0:00:04.446093990  4752      0x1640450 DEBUG               glwindow gstglcontext_glx.c:123:_describe_fbconfig: double buffering: 1
0:00:04.446099277  4752      0x1640450 DEBUG               glwindow gstglcontext_glx.c:125:_describe_fbconfig: red: 8
0:00:04.446104281  4752      0x1640450 DEBUG               glwindow gstglcontext_glx.c:127:_describe_fbconfig: green: 8
0:00:04.446108829  4752      0x1640450 DEBUG               glwindow gstglcontext_glx.c:129:_describe_fbconfig: blue: 8
0:00:04.446113135  4752      0x1640450 DEBUG               glwindow gstglcontext_glx.c:131:_describe_fbconfig: alpha: 8
0:00:04.446117791  4752      0x1640450 DEBUG               glwindow gstglcontext_glx.c:133:_describe_fbconfig: depth: 24
0:00:04.446122141  4752      0x1640450 DEBUG               glwindow gstglcontext_glx.c:135:_describe_fbconfig: stencil: 8
0:00:04.446283327  4752      0x1640450 INFO               glcontext gstglcontext.c:1238:gst_gl_context_create_thread: Attempting to create opengl context. user chosen api(s) (any), compiled api support (opengl o
pengl3) display api (any)
0:00:04.446321137  4752      0x1640450 DEBUG               glwindow gstglcontext_glx.c:194:gst_gl_context_glx_create_context:&lt;glwindowx11-0&gt; trying to create a GL 3.1 core context
0:00:04.446910565  4752      0x1640450 INFO               glcontext gstglcontext.c:1248:gst_gl_context_create_thread: created context
0:00:04.447130884  4752      0x1640450 INFO               glcontext gstglcontext.c:1264:gst_gl_context_create_thread: available GL APIs: opengl3
0:00:04.447160429  4752      0x1640450 INFO               glcontext gstglcontext.c:1083:_create_context_info: GL_VERSION: 3.3 (Core Profile) Mesa 10.3.2
0:00:04.447167402  4752      0x1640450 INFO               glcontext gstglcontext.c:1085:_create_context_info: GL_SHADING_LANGUAGE_VERSION: 3.30
0:00:04.447173133  4752      0x1640450 INFO               glcontext gstglcontext.c:1087:_create_context_info: GL_VENDOR: Intel Open Source Technology Center
0:00:04.447179709  4752      0x1640450 INFO               glcontext gstglcontext.c:1089:_create_context_info: GL_RENDERER: Mesa DRI Intel(R) Haswell Mobile 
0:00:04.447242654  4752      0x1640450 DEBUG              glcontext gstglcontext.c:1308:gst_gl_context_create_thread:&lt;glcontextglx0&gt; GL_EXTENSIONS: GL_ARB_ES2_compatibility GL_ARB_ES3_compatibility GL_ARB_base_i
nstance GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_clear_buffer_object GL_ARB_clear_texture GL_ARB_compressed_texture_pixel_storage GL_ARB_conditional_render_inverted GL_ARB_copy_buffer GL_ARB_copy_
image GL_ARB_conservative_depth GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_derivative_control GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_dr
aw_instanced GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_shader GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_get_program_binary 
GL_ARB_gpu_shader5 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multi_
bind GL_ARB_occlusion_query2 GL_ARB_pixel_buffer_object GL_ARB_point_sprite GL_ARB_provoking_vertex GL_ARB_robustness GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_seamless_cubemap
_per_texture GL_ARB_separate_shader_objects GL_ARB_shader_atomic_counters GL_ARB_shader_bit_encoding GL_ARB_shader_objects GL_ARB_shader_texture_lod GL_ARB_shading_language_packing GL_ARB_shading_language_420pac
k GL_ARB_sync GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map_array GL_ARB_text
ure_float GL_ARB_texture_gather GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB
_texture_rgb10_a2ui GL_ARB_texture_rg GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_view GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra
 GL_ARB_vertex_array_object GL_ARB_vertex_attrib_binding GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_abgr GL_EXT_blend_equation_separate
 GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_sRGB GL_EXT_packed_depth_stencil GL_EXT_packed_flo
at GL_EXT_pixel_buffer_object GL_EXT_provoking_vertex GL_EXT_shader_integer_mix GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_EXT_tex
ture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_shared_exponent GL_EXT_texture_snorm GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode G
L_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array_bgra GL_OES_EGL_image GL_OES_read_format GL_KHR_debug GL_3DFX_texture_compression_FXT1 GL_AMD_conservative_depth GL_AMD_draw
_buffers_blend GL_AMD_seamless_cubemap_per_texture GL_AMD_shader_trinary_minmax GL_AMD_vertex_shader_layer GL_AMD_vertex_shader_viewport_index GL_APPLE_object_purgeable GL_ATI_blend_equation_separate GL_ATI_text
ure_float GL_IBM_multimode_draw_arrays GL_MESA_pack_invert GL_MESA_texture_signed_rgba GL_NV_conditional_render GL_NV_depth_clamp GL_NV_packed_depth_stencil GL_S3_s3tc 
0:00:04.447454397  4752      0x1640450 INFO               glcontext gstglcontext.c:1338:gst_gl_context_create_thread: Enabling GL context debugging
0:00:04.447489672  4752       0x6fc350 INFO               glcontext gstglcontext.c:907:gst_gl_context_create: gl thread created
** (WebKitWebProcess:4752): CRITICAL **: gst_gl_context_new_wrapped: assertion &apos;(display_api &amp; available_apis) != GST_GL_API_NONE&apos; failed
0:00:04.454232922  4752      0x1622850 DEBUG               glmemory gstglmemory.c:603:_gl_mem_init: new GL texture memory:0x7fc75c0f7630 format:4 dimensions:854x480 size:1639680
0:00:04.455053461  4752      0x1622850 DEBUG               glmemory gstglmemory.c:603:_gl_mem_init: new GL texture memory:0x7fc75c0f77b0 format:4 dimensions:854x480 size:1639680
0:00:04.458152552  4752      0x1622850 DEBUG               glupload gstglupload.c:754:_upload_find_method:&lt;glupload0&gt; attempting upload with uploader GLMemory
0:00:04.458197394  4752      0x1622850 DEBUG               glupload gstglupload.c:754:_upload_find_method:&lt;glupload0&gt; attempting upload with uploader EGLImage
0:00:04.458205531  4752      0x1622850 DEBUG               glupload gstglupload.c:754:_upload_find_method:&lt;glupload0&gt; attempting upload with uploader UploadMeta
0:00:04.458216904  4752      0x1622850 DEBUG               glupload gstglupload.c:754:_upload_find_method:&lt;glupload0&gt; attempting upload with uploader Raw Data
0:00:04.458240276  4752      0x1622850 DEBUG               glmemory gstglmemory.c:603:_gl_mem_init: new GL texture memory:0x7fc75c0f7930 format:4 dimensions:854x480 size:1639680
0:00:13.302055589  4752      0x1640450 ERROR              glcontext gstglcontext.c:1046:_gst_gl_debug_callback:&lt;glcontextglx0&gt; high: GL error from API id:1, GL_INVALID_OPERATION in glBindTexture(non-gen name)
0:00:13.302168079  4752      0x1640450 ERROR              glcontext gstglcontext.c:1046:_gst_gl_debug_callback:&lt;glcontextglx0&gt; high: GL error from API id:1, GL_INVALID_OPERATION in glTexSubImage2D(invalid textur
e image)
0:00:13.317916014  4752      0x1640450 ERROR              glcontext gstglcontext.c:1046:_gst_gl_debug_callback:&lt;glcontextglx0&gt; high: GL error from API id:1, GL_INVALID_OPERATION in glBindTexture(non-gen name)
0:00:13.317992554  4752      0x1640450 ERROR              glcontext gstglcontext.c:1046:_gst_gl_debug_callback:&lt;glcontextglx0&gt; high: GL error from API id:1, GL_INVALID_OPERATION in glTexSubImage2D(invalid textur
e image)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057908</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-26 08:43:16 -0800</bug_when>
    <thetext>I&apos;m trying to add YUV support to the sink but for my test video the gstglupload seems to fail... The buffers don&apos;t have any gl memory attached and the rendered frames look weird, probably because the fallback rendering path I have in the player assumes the frames have only one plane :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057909</commentid>
    <comment_count>13</comment_count>
      <attachid>243761</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-26 08:45:28 -0800</bug_when>
    <thetext>Created attachment 243761
I420 rendering gone bad</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057910</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-26 08:47:15 -0800</bug_when>
    <thetext>Victor, first make sure glimagesink works: gst-launch ... video-sink=glimagesink</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058080</commentid>
    <comment_count>15</comment_count>
      <attachid>243045</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-29 01:43:03 -0800</bug_when>
    <thetext>Comment on attachment 243045
patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:316
&gt;&gt;&gt; +                gst_gl_context_set_error(glMemory-&gt;context, &quot;Failed to map intermediate memory&quot;);
&gt;&gt; 
&gt;&gt; gst_gl_context_set_error() simply GST_WARNING&apos;s in the GstGLContext debug category.  I would avoid using it for new code and call GST_WARNING yourself.
&gt; 
&gt; Also I would go for gst_buffer_map instead of gst_memory_map as you do not actually use the mapInfo. And I would put this gst_buffer_map just before gst_buffer_n_memory. You just want to &quot;protect&quot; the calls that access the memory, even right ?

Yep

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:319
&gt;&gt; +            gboolean copied = gst_gl_memory_copy_into_texture(glMemory, textureID, textureType, size.width(), size.height(), GST_VIDEO_INFO_PLANE_STRIDE(&amp;videoInfo, 0), true /* respecify */);
&gt; 
&gt; For future I think you can even try to improve BitmapTextureGL to create for example a BitmapTextureGstGL that own a ref on the gstbuffer. And internally wrap its gl texture from gstgl. Then also improve the textureMapperPool so that you can attach your BitmapTextureGstGL into the pool. In order to avoid this GPU/GPU copy.

Yes that&apos;s a good idea :)

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:325
&gt;&gt; +    }
&gt; 
&gt; Generally speaking about this block, correct me if I am wrong but in case of the decoder gives you raw data (I mean system mem data) then this block make the path even worst no ?  Without the block the raw data is uploaded through webkit::texture-&gt;updateContents(..), and with this block it is uploaded through &quot;gst_gl_upload_perform_with_buffer&quot; but with the additional GPU-GPU frame copy.

Right I focused only on raw data for now.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:329
&gt;&gt;      GstVideoGLTextureUploadMeta* meta;
&gt; 
&gt; Why do you need to big block that call gst_gl_memory_copy_into_texture ? I think glupload should set the meta so that the block below that calls gst_video_gl_texture_upload_meta_upload should handle that for you. Especially for eglimage, it will convert the eglimage directly to the webkit&apos;s textureID acquired above.
&gt; Ah after going through more of your patch, I think this first big block could only be when decoders output raw data. The second block below about meta upload should be for vaapi and omx cases.

For va-api at least yes but for OMX I&apos;m not sure... the updateContents() call isn&apos;t very efficient so I think I&apos;d rather have a new block for EGL above.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:184
&gt;&gt; +        if (glxSharingContext)
&gt; 
&gt; glx: so what is the gstdecoder involve in your tests ? vaapi ? or only decoders that output raw frames for now ?
&gt; Because in case your decoder gives you raw data, like gst/avdec_h264, then you have 2 options: 1: let webkit do the texture upload as existing, 2:use gstgl+avoid_GPU_GPU_frame_copy.  I think option 2 is better also because you could set in webkit::VideoSinkGstreamer.cpp that it supports same rgb and yuv variants as glimagesink. (for example if decode outputs YUV then you avoid software conversion to RGB)
&gt; And in case of vaapidec or omxvideodec, the gst gl upload meta stuffs should do. For these zero-copy paths you only need to keep the context sharing setup.

For now I&apos;ll leave YUV support aside :)

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:432
&gt;&gt; +    });
&gt; 
&gt; Would GMainLoopSource::scheduleAndDeleteOnDestroy() fit better here? I don&apos;t think GThreadSafeMainLoopSource is required here in any case.

That works yeah

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:444
&gt;&gt; +    gst_caps_set_features(priv-&gt;glCaps, 0, glFeatures);
&gt; 
&gt; You probably also want to set the format here as well unless you&apos;re never going to deal with YUV formats.

Ok!

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:472
&gt;&gt; +    }
&gt; 
&gt; You do not need to map/unmap here.

Ok!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058091</commentid>
    <comment_count>16</comment_count>
      <attachid>243795</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-29 07:30:33 -0800</bug_when>
    <thetext>Created attachment 243795
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058928</commentid>
    <comment_count>17</comment_count>
      <attachid>243795</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-01-06 00:25:48 -0800</bug_when>
    <thetext>Comment on attachment 243795
patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:308
&gt; +    GstMemory* bufferMemory;

This can be moved into the scope of the gst_buffer_n_memory(buffer) &gt;= 1 if-statement.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:316
&gt; +            GstGLMemory* glMemory = reinterpret_cast&lt;GstGLMemory*&gt;(bufferMemory);

I usually go with &apos;auto* &lt;variable&gt;&apos; when using reinterpret_cast, but as you prefer really.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:320
&gt; +            gboolean copied = gst_gl_memory_copy_into_texture(glMemory, textureID, textureType, size.width(), size.height(), GST_VIDEO_INFO_PLANE_STRIDE(&amp;videoInfo, 0), true /* respecify */);
&gt; +            if (copied) {

If you find it readable enough, gst_gl_memory_copy_into_texture() call could sit in the if-statement directly.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:385
&gt; +    if (priv-&gt;pool)
&gt; +        gst_object_unref(priv-&gt;pool);
&gt; +    priv-&gt;pool = nullptr;

This ...

&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:393
&gt; +    if (priv-&gt;upload) {
&gt; +        gst_object_unref(priv-&gt;upload);
&gt; +        priv-&gt;upload = nullptr;
&gt; +    }

... should match with this, specifically whether priv-&gt;upload should be nullified unconditionally, or priv-&gt;pool nullified conditionally.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:496
&gt; +    GstAllocator* allocator = nullptr;
&gt; +    GstAllocationParams params;

These two could be declared in the later #if block, where they are used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059392</commentid>
    <comment_count>18</comment_count>
      <attachid>243795</attachid>
    <who name="Julien Isorce">j.isorce</who>
    <bug_when>2015-01-07 08:07:38 -0800</bug_when>
    <thetext>Comment on attachment 243795
patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:314
&gt; +    if (gst_buffer_n_memory(buffer) &gt;= 1) {

Could you try to add &quot;!gst_buffer_get_video_gl_texture_upload_meta(buffer) &amp;&amp; &quot; ? Because it is the job of the next block.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp:571
&gt; +#if GST_GL_HAVE_PLATFORM_EGL

Remove all references to egl/eglimage if you have not tested with eglimage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059766</commentid>
    <comment_count>19</comment_count>
      <attachid>244248</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-01-08 02:20:42 -0800</bug_when>
    <thetext>Created attachment 244248
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059767</commentid>
    <comment_count>20</comment_count>
      <attachid>244249</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-01-08 02:21:05 -0800</bug_when>
    <thetext>Created attachment 244249
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067791</commentid>
    <comment_count>21</comment_count>
      <attachid>244249</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-02-09 03:36:44 -0800</bug_when>
    <thetext>Comment on attachment 244249
patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:309
&gt; +    if (!gst_buffer_map(buffer, &amp;mapInfo, static_cast&lt;GstMapFlags&gt;(GST_MAP_READ | GST_MAP_GL))) {

Mapping might be expensive if the buffer stored in the GPU&apos;s memory. When using GstVideoGLTextureUploadMeta, this mapping is no necessary, but here, the meta usage is tried after the buffer mapping.

Also, AFAIK, gst_video_frame_map() is preferred over gst_buffer_map()

I&apos;ll post a patch which goes above yours addressing this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067792</commentid>
    <comment_count>22</comment_count>
      <attachid>246263</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-02-09 03:40:27 -0800</bug_when>
    <thetext>Created attachment 246263
Re-order the upload method sequence and use gst_video_frame_map()

This patch goes above attachment 244249</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067793</commentid>
    <comment_count>23</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-02-09 03:46:50 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Victor, first make sure glimagesink works: gst-launch ...
&gt; video-sink=glimagesink

A pipeline with glimagesink for me works since comment 7.

And right now I&apos;m using current master of gstreamer/gst-plugins-bad and the same behavior is shown. 

Furthermore, when you have several different videos in the same web page, the same video is reproduced on each video. This is observable here: http://www.quirksmode.org/html5/tests/video.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067794</commentid>
    <comment_count>24</comment_count>
      <attachid>244249</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-02-09 03:50:01 -0800</bug_when>
    <thetext>Comment on attachment 244249
patch

We should try to use glimagesink directly, that would allow us to remove the webkit video-sink all together at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068865</commentid>
    <comment_count>25</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-02-13 00:31:11 -0800</bug_when>
    <thetext>Another approach would be to use glimagesink but we first need to fix these 2 bugs:

https://bugzilla.gnome.org/show_bug.cgi?id=739681
https://bugzilla.gnome.org/show_bug.cgi?id=704807</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076287</commentid>
    <comment_count>26</comment_count>
      <attachid>248411</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-11 04:37:51 -0700</bug_when>
    <thetext>Created attachment 248411
Experimental support for texture sharing with glimagesink</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079301</commentid>
    <comment_count>27</comment_count>
      <attachid>249237</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-23 10:27:26 -0700</bug_when>
    <thetext>Created attachment 249237
patch

This is a first draft but works on X11/GL and DispmanX/EGL already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079302</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-23 10:29:00 -0700</bug_when>
    <thetext>Attachment 249237 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:47:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/texmap/TextureMapperGL.h:175:  The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079304</commentid>
    <comment_count>29</comment_count>
      <attachid>249239</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-23 10:33:50 -0700</bug_when>
    <thetext>Created attachment 249239
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079561</commentid>
    <comment_count>30</comment_count>
      <attachid>249239</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-03-23 22:44:35 -0700</bug_when>
    <thetext>Comment on attachment 249239
patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:317
&gt; +    textureGL-&gt;wrapGstSample(m_sample);

You don&apos;t have to create (or acquire) BitmapTextureGL at this code path.
Because TextureMapperGL have a interface to draw a platform texture directly as you used in BitmapTextureGL::wrapGstSample.
You can get a platform texture and draw it directly in MediaPlayerPrivateGStreamerBase::paintToTextureMapper
By this way, BitmapTextureGL and TextureMapperGL don&apos;t have to know about the Gstreamer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079576</commentid>
    <comment_count>31</comment_count>
      <attachid>249319</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-24 00:59:14 -0700</bug_when>
    <thetext>Created attachment 249319
patch

Much simpler indeed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079577</commentid>
    <comment_count>32</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-03-24 01:06:18 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created attachment 249319 [details]
&gt; patch
&gt; 
&gt; Much simpler indeed :)

Yes! and this patch reduces merge conflicts with mine :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079580</commentid>
    <comment_count>33</comment_count>
      <attachid>249319</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-03-24 01:35:24 -0700</bug_when>
    <thetext>Comment on attachment 249319
patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        [GStreamer] GstGL support in the video sink
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=138562
&gt; +
&gt; +        Use GStreamer&apos;s glimagesink for video rendering instead of our
&gt; +        custom video sink if a recent-enough version of GstGL is found
&gt; +        during the build. When glimagesink is used it passes a texture to
&gt; +        the media player which then wraps it inside a TextureMapper
&gt; +        texture later used for actual rendering.
&gt; +
&gt; +        Using this new code path will allow us to remove our custom sink
&gt; +        entirely in the long term.
&gt; +
&gt; +        No new test, existing media tests cover video rendering already.

Reviewed by line is missing in the changelog.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:354
&gt; +    g_return_if_fail(GST_IS_SAMPLE(sample));

Is it really possible that the client-draw signal is emitted with a NULL or invalid sample?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:360
&gt; +        if (m_sample)
&gt; +            gst_sample_unref(m_sample);
&gt; +        m_sample = gst_sample_ref(sample);

m_sample should probably be a GRefPtr

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:369
&gt; +            if (supportsAcceleratedRendering() &amp;&amp; m_player-&gt;client().mediaPlayerRenderingCanBeAccelerated(m_player) &amp;&amp; client())

I would check client() is not nullptr, before asking the m_player-&gt;client().

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:373
&gt; +        }, std::chrono::milliseconds(0), G_PRIORITY_HIGH, nullptr, g_main_context_get_thread_default());

What&apos;s the point of scheduling after a 0 delay? Why not using schedule() instead? G_PRIORITY_HIGH is too much, it will affect any other source in the context.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:374
&gt; +        g_cond_wait(&amp;m_drawCondition, &amp;m_drawMutex);

Why does this need to be blocking? what thread is this supposed to be run? We should probably add an ASSERT(isMainThread()) or !isMainThread.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:443
&gt; +    GstBuffer* buffer = gst_sample_get_buffer(m_sample);

You could do this later, it&apos;s not needed if caps is NULL or gst_video_info_from_caps returns FALSE.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:457
&gt; +    guint textureID = *(guint *) videoFrame.data[0];

Use C++ style cast for this.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:506
&gt; +        videoSink = m_webkitVideoSink.get();
&gt; +        return videoSink;

why do you need the local variable? can&apos;t you just return m_webkitVideoSink.get()?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:82
&gt; +#if USE(GSTREAMER_GL)
&gt; +    void triggerDraw(GstSample*);
&gt; +#endif
&gt;      void triggerRepaint(GstSample*);

Since you are reusing the m_repaintHandler, maybe you could reuse the trigger function too, since they share some code. You could add the specific code of triggerDraw into triggerRepaint inside a #if USE(GSTREAMER_GL) block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079602</commentid>
    <comment_count>34</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-24 06:55:14 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:354
&gt; &gt; +    g_return_if_fail(GST_IS_SAMPLE(sample));
&gt; 
&gt; Is it really possible that the client-draw signal is emitted with a NULL or
&gt; invalid sample?
&gt; 

No, I&apos;ll remove this g_return_if_fail.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:360
&gt; &gt; +        if (m_sample)
&gt; &gt; +            gst_sample_unref(m_sample);
&gt; &gt; +        m_sample = gst_sample_ref(sample);
&gt; 
&gt; m_sample should probably be a GRefPtr
&gt; 

Ok I can do that in a separate patch.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:369
&gt; &gt; +            if (supportsAcceleratedRendering() &amp;&amp; m_player-&gt;client().mediaPlayerRenderingCanBeAccelerated(m_player) &amp;&amp; client())
&gt; 
&gt; I would check client() is not nullptr, before asking the m_player-&gt;client().
&gt; 

I checked MediaPlayer, the client is never null there and no one reported a crash about this either.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:373
&gt; &gt; +        }, std::chrono::milliseconds(0), G_PRIORITY_HIGH, nullptr, g_main_context_get_thread_default());
&gt; 
&gt; What&apos;s the point of scheduling after a 0 delay? Why not using schedule()
&gt; instead? G_PRIORITY_HIGH is too much, it will affect any other source in the
&gt; context.
&gt; 

Oh yeah that&apos;s what I did first, I&apos;ll switch back to a simple schedule :)

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:374
&gt; &gt; +        g_cond_wait(&amp;m_drawCondition, &amp;m_drawMutex);
&gt; 
&gt; Why does this need to be blocking? what thread is this supposed to be run?
&gt; We should probably add an ASSERT(isMainThread()) or !isMainThread.
&gt; 

This signal is emitted from the sink streaming thread but the texture can&apos;t be used from there, hence the switch to main thread. And it needs to be blocking because the sample emitted is freed from the sink after the signal emission completed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079603</commentid>
    <comment_count>35</comment_count>
      <attachid>249326</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-24 06:57:49 -0700</bug_when>
    <thetext>Created attachment 249326
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079604</commentid>
    <comment_count>36</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-03-24 07:05:10 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:354
&gt; &gt; &gt; +    g_return_if_fail(GST_IS_SAMPLE(sample));
&gt; &gt; 
&gt; &gt; Is it really possible that the client-draw signal is emitted with a NULL or
&gt; &gt; invalid sample?
&gt; &gt; 
&gt; 
&gt; No, I&apos;ll remove this g_return_if_fail.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:360
&gt; &gt; &gt; +        if (m_sample)
&gt; &gt; &gt; +            gst_sample_unref(m_sample);
&gt; &gt; &gt; +        m_sample = gst_sample_ref(sample);
&gt; &gt; 
&gt; &gt; m_sample should probably be a GRefPtr
&gt; &gt; 
&gt; 
&gt; Ok I can do that in a separate patch.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:369
&gt; &gt; &gt; +            if (supportsAcceleratedRendering() &amp;&amp; m_player-&gt;client().mediaPlayerRenderingCanBeAccelerated(m_player) &amp;&amp; client())
&gt; &gt; 
&gt; &gt; I would check client() is not nullptr, before asking the m_player-&gt;client().
&gt; &gt; 
&gt; 
&gt; I checked MediaPlayer, the client is never null there and no one reported a
&gt; crash about this either.

What I meant was doing 

if (supportsAcceleratedRendering() &amp;&amp; client() &amp;&amp; m_player-&gt;client().mediaPlayerRenderingCanBeAccelerated(m_player))

so that we don&apos;t even use the media player client if client() is nullptr. But I guess that hardly ever happens, so it&apos;s probably not so important.

&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:373
&gt; &gt; &gt; +        }, std::chrono::milliseconds(0), G_PRIORITY_HIGH, nullptr, g_main_context_get_thread_default());
&gt; &gt; 
&gt; &gt; What&apos;s the point of scheduling after a 0 delay? Why not using schedule()
&gt; &gt; instead? G_PRIORITY_HIGH is too much, it will affect any other source in the
&gt; &gt; context.
&gt; &gt; 
&gt; 
&gt; Oh yeah that&apos;s what I did first, I&apos;ll switch back to a simple schedule :)
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:374
&gt; &gt; &gt; +        g_cond_wait(&amp;m_drawCondition, &amp;m_drawMutex);
&gt; &gt; 
&gt; &gt; Why does this need to be blocking? what thread is this supposed to be run?
&gt; &gt; We should probably add an ASSERT(isMainThread()) or !isMainThread.
&gt; &gt; 
&gt; 
&gt; This signal is emitted from the sink streaming thread but the texture can&apos;t
&gt; be used from there, hence the switch to main thread. And it needs to be
&gt; blocking because the sample emitted is freed from the sink after the signal
&gt; emission completed.

Can&apos;t you just take a reference of the sample then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079610</commentid>
    <comment_count>37</comment_count>
      <attachid>249327</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-24 08:09:49 -0700</bug_when>
    <thetext>Created attachment 249327
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081156</commentid>
    <comment_count>38</comment_count>
      <attachid>249729</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-30 08:11:37 -0700</bug_when>
    <thetext>Created attachment 249729
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081943</commentid>
    <comment_count>39</comment_count>
      <attachid>249729</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-01 02:17:50 -0700</bug_when>
    <thetext>Comment on attachment 249729
patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:363
&gt; +            // Rendering should be done from the main thread
&gt; +            // because this is where the GL APIs were initialized.
&gt; +            ASSERT(isMainThread());

I think the important thing here is not that the lambda runs in the main thread, we are scheduling this in the default main context so it will be in the main thread. What matter is that MediaPlayerPrivateGStreamerBase::triggerRepaint is not called in the main thread, because it&apos;s going to be blocked waiting for the task to complete. So, I would remove this assert and add ASSERT(!isMainThread()); at the beginning of MediaPlayerPrivateGStreamerBase::triggerRepaint.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:425
&gt; +        RefPtr&lt;BitmapTexture&gt; texture = updateTexture(textureMapper);
&gt; +        if (texture)

This could be if (RefPtr&lt;BitmapTexture&gt; texture = updateTexture(textureMapper)) I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081959</commentid>
    <comment_count>40</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-01 03:20:28 -0700</bug_when>
    <thetext>Committed r182227: &lt;http://trac.webkit.org/changeset/182227&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242936</attachid>
            <date>2014-12-09 10:02:28 -0800</date>
            <delta_ts>2014-12-10 10:23:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>24522</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAyMjlkZmEzYzIyMGM3ODk1YTgzOGQwZmVhMDNmNzRmYjUxMWU5ZGRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDkgRGVjIDIwMTQgMTk6MDI6NDMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAzNyArKysKIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlICAgICAg
ICAgICAgICAgICAgIHwgICAyICsKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgIHwgIDI5ICsrCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHAgICAgICB8IDMxNiArKysrKysrKysrKysrKysrKysrKy0KIFNvdXJjZS9j
bWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIFNvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiA3
IGZpbGVzIGNoYW5nZWQsIDM5NSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggN2QwMDg0OC4uNGQ1ZTZiMSAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTEyLTA5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1N0cmVhbWVyXSBHc3RHTCBzdXBwb3J0IGluIHRoZSB2aWRlbyBzaW5rCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1NjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5k
R1N0cmVhbWVyLmNtYWtlOiBMb29rdXAgdGhlIEdzdEdMIGxpYnJhcnkgYW5kIGhlYWRlcnMuCisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IFR1cm4gb24gdGhlIFVTRShH
U1RSRUFNRVJfR0wpCisgICAgICAgIG1hY3JvIGlmIEdzdEdMIHdhcyBmb3VuZC4KKwogMjAxNC0x
Mi0wNyAgQWxiZXJ0byBHYXJjaWEgIDxiZXJ0b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IFdlYktpdCBoYXMgYSBuZXcgcmVxdWlyZWQgZGVwZW5kZW5jeSBvbiBHbnVUTFMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAzNTIwMTFkLi44Y2NlYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTQt
MTItMDkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIEdzdEdMIHN1cHBvcnQgaW4gdGhlIHZpZGVvIHNpbmsKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODU2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGEgcmVjZW50IGVub3VnaCAo
Pj0gMS41KSBHU3RyZWFtZXIgdmVyc2lvbiBpcyBhdmFpbGFibGUgdGhlbgorICAgICAgICB0aGUg
dmlkZW8gc2luayB3aWxsIHVzZSB0aGUgR3N0R0wgbGlicmFyeSB0byBlbWJlZCBhIEdMIHRleHR1
cmUgaW4KKyAgICAgICAgZWFjaCBHc3RCdWZmZXIgdG8gYmUgcmVuZGVyZWQgdmlhIHRoZSBUZXh0
dXJlTWFwcGVyLiBJbiB0aGlzCisgICAgICAgIHNjZW5hcmlvIGEgR1BVLUdQVSB0ZXh0dXJlIGNv
cHkgd2lsbCBiZSBwZXJmb3JtZWQuIEZvciB0aGlzIHRvIGJlCisgICAgICAgIHBvc3NpYmxlIHRo
ZSBHTCBjb250ZXh0IHVzZWQgd2l0aGluIFdlYktpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aAor
ICAgICAgICB0aGUgR0wgY29udGV4dCB1c2VkIGJ5IEdzdEdMLiBGb3Igbm93IHdlIHN1cHBvcnQg
b25seSB0aGUgR0xYL1gxMQorICAgICAgICBzaGFyaW5nIGNvbnRleHQuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBleGlzdGluZyBtZWRpYSB0ZXN0cyB3aWxsIGNvdmVyIHRoaXMgY2hhbmdlIG9u
Y2UgdGhlCisgICAgICAgIGJ1aWxkYm90cyBoYXZlIEdTdHJlYW1lciA+PSAxLjUuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogVXNlIEdzdEdMIGxpYnJhcnkgZm9yIHRoZSBidWlsZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKTogRG8gYQorICAgICAgICBHUFUtR1BVIHRleHR1
cmUgaWYgdGhlIGJ1ZmZlciBhbHJlYWR5IGhhcyBhIEdMIHRleHR1cmUgYXZhaWxhYmxlLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoX1dlYktpdFZpZGVvU2lua1ByaXZhdGU6Ol9XZWJLaXRWaWRlb1NpbmtQcml2
YXRlKTogVXNlIGEgbXV0ZXgKKyAgICAgICAgYW5kIGNvbmRpdGlvbiBzbyBhcyB0byBnZXQgdGhl
IFdlYktpdCBHTCBjb250ZXh0IGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAoX1dlYktp
dFZpZGVvU2lua1ByaXZhdGU6On5fV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSk6CisgICAgICAgICh3
cmFwR0xDb250ZXh0Q2FsbGJhY2spOiBXcmFwIHRoZSBXZWJLaXQgR0wgY29udGV4dCBpbiBhIEdz
dEdMIGNvbnRleHQuCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtTdG9wKTogRnJlZSBidWZmZXIg
cG9vbCBhbmQgcHJlLWFsbG9jYXRlZCBidWZmZXIuCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtT
ZXRDYXBzKTogQ3JlYXRlIHRoZSBHc3RHTFVwbG9hZCB0aGF0IHdpbGwgdGFrZQorICAgICAgICBj
YXJlIG9mIHVwZGF0aW5nIHRoZSBidWZmZXIncyB0ZXh0dXJlIGFuZCB1cGRhdGUgY2FwcyBhY2Nv
cmRpbmdseS4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1ByZXBhcmUpOiBVcGRhdGUgdGhlIGJ1
ZmZlcidzIHRleHR1cmUgYmVmb3JlIHJlbmRlcmluZy4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lu
a1Byb3Bvc2VBbGxvY2F0aW9uKTogUHJlcGFyZSBhIGJ1ZmZlciBwb29sLCBzZXQgdGhlCisgICAg
ICAgIEdMIGNvbnRleHQgdXAgYW5kIHVwZGF0ZSB0aGUgbWV0YSBpbmZvcm1hdGlvbnMgc3VwcG9y
dGVkIGJ5IHRoZSBzaW5rLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rU2V0Q29udGV4dCk6IFBh
c3MtdGhyb3VnaCB0aGUgY29udGV4dCB0byBHc3RHTC4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lu
a1F1ZXJ5KTogQmFzaWMgc3VwcG9ydCBmb3IgY29udGV4dCBxdWVyaWVzLgorICAgICAgICAod2Vi
a2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdCk6CisKIDIwMTQtMTItMDkgIEplcmVteSBKb25lcyAg
PGplcmVteWpAYXBwbGUuY29tPgogCiAgICAgICAgIFdoZW4gaW52YWxpZGF0aW5nIGZ1bGxzY3Jl
ZW4sIGNhbmNlbCBpbnN0ZWFkIG9mIHN0b3Agb3B0aW1pemVkRnVsbHNjZnJlZW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IDE2NTAyMmMuLmEwNmFkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0zMzQsMTAgKzMzNCwxMiBAQCBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1ZJ
REVPKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAg
ICAke0dTVFJFQU1FUl9HTF9JTkNMVURFX0RJUlN9CiAgICAgICAgICR7R1NUUkVBTUVSX1RBR19J
TkNMVURFX0RJUlN9CiAgICAgICAgICR7R1NUUkVBTUVSX1ZJREVPX0lOQ0xVREVfRElSU30KICAg
ICApCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKKyAgICAgICAgJHtHU1RSRUFN
RVJfR0xfTElCUkFSSUVTfQogICAgICAgICAke0dTVFJFQU1FUl9UQUdfTElCUkFSSUVTfQogICAg
ICAgICAke0dTVFJFQU1FUl9WSURFT19MSUJSQVJJRVN9CiAgICAgKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDQ0ZGU3NTYu
LmMxYjk3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKQEAgLTQ0LDYgKzQ0LDEyIEBACiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0
cmVhbXZvbHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KIAorI2lm
IFVTRShHU1RSRUFNRVJfR0wpCisjZGVmaW5lIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisjaW5jbHVk
ZSA8Z3N0L2dsL2dzdGdsbWVtb3J5Lmg+CisjdW5kZWYgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyNl
bmRpZgorCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkgJiYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogI2VuZGlmCkBAIC0yOTUsNiAr
MzAxLDI5IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlCiAgICAgSW50U2l6ZSBzaXplID0gSW50
U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJ
R0hUKCZ2aWRlb0luZm8pKTsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHRl
eHR1cmVNYXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgR1NUX1ZJREVPX0lORk9f
SEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJp
dG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxl
X2dldF9idWZmZXIobV9zYW1wbGUpOworICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCogdGV4dHVy
ZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSk7
CisgICAgdWludDMyX3QgdGV4dHVyZUlEID0gdGV4dHVyZUdMLT5pZCgpOworCisjaWYgVVNFKEdT
VFJFQU1FUl9HTCkKKyAgICBHc3RNZW1vcnkqIGJ1ZmZlck1lbW9yeTsKKyAgICBpZiAoZ3N0X2J1
ZmZlcl9uX21lbW9yeShidWZmZXIpID49IDEpIHsKKyAgICAgICAgaWYgKChidWZmZXJNZW1vcnkg
PSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5KGJ1ZmZlciwgMCkpICYmIGdzdF9pc19nbF9tZW1vcnko
YnVmZmVyTWVtb3J5KSkgeworICAgICAgICAgICAgR3N0R0xNZW1vcnkqIGdsTWVtb3J5ID0gcmVp
bnRlcnByZXRfY2FzdDxHc3RHTE1lbW9yeSo+KGJ1ZmZlck1lbW9yeSk7CisgICAgICAgICAgICBH
c3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUgPSBnc3RfZ2xfdGV4dHVyZV90eXBlX2Zy
b21fZm9ybWF0KGdsTWVtb3J5LT5jb250ZXh0LCBHU1RfVklERU9fSU5GT19GT1JNQVQoJnZpZGVv
SW5mbyksIDApOworICAgICAgICAgICAgR3N0TWFwSW5mbyBtYXBJbmZvOworCisgICAgICAgICAg
ICBpZiAoIWdzdF9tZW1vcnlfbWFwKGJ1ZmZlck1lbW9yeSwgJm1hcEluZm8sIHN0YXRpY19jYXN0
PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkpIHsKKyAgICAgICAgICAg
ICAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IoZ2xNZW1vcnktPmNvbnRleHQsICJGYWlsZWQg
dG8gbWFwIGludGVybWVkaWF0ZSBtZW1vcnkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdib29sZWFuIGNvcGllZCA9IGdzdF9n
bF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmUoZ2xNZW1vcnksIHRleHR1cmVJRCwgdGV4dHVyZVR5
cGUsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgR1NUX1ZJREVPX0lORk9fUExBTkVfU1RS
SURFKCZ2aWRlb0luZm8sIDApLCB0cnVlIC8qIHJlc3BlY2lmeSAqLyk7CisgICAgICAgICAgICBn
c3RfbWVtb3J5X3VubWFwKGJ1ZmZlck1lbW9yeSwgJm1hcEluZm8pOworICAgICAgICAgICAgaWYg
KGNvcGllZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZTsKKyAgICAgICAgICAgIFdB
Uk5fTUVESUFfTUVTU0FHRSgiVGV4dHVyZSBjb3B5IGZhaWxlZCwgdHJ5aW5nIGZhbGxiYWNrIHNs
b3cgcGF0aC4iKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogCiAjaWYgR1NUX0NIRUNLX1ZF
UlNJT04oMSwgMSwgMCkKICAgICBHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEqIG1ldGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCmluZGV4IDI1NWU3NjAuLjY3MjI3YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1NpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCkBAIC0zNSw5ICszNSwzMiBAQAogI2lu
Y2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVv
L2dzdHZpZGVvbWV0YS5oPgorI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb3Bvb2wuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR011dGV4TG9ja2Vy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZS5oPgor
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KKworI2lmIFVTRShHU1RSRUFNRVJf
R0wpCisjZGVmaW5lIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGds
Y29udGV4dC5oPgorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGRpc3BsYXkuaD4KKyN1bmRlZiBHU1Rf
VVNFX1VOU1RBQkxFX0FQSQorCisjaWYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCisjaW5jbHVk
ZSA8Z3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5oPgorI2VuZGlmCisjaW5jbHVkZSA8Z3N0
L2dsL2dzdGdsdXRpbHMuaD4KKworI2lmIFBMQVRGT1JNKFgxMSkKKyNpbmNsdWRlIDxnc3QvZ2wv
eDExL2dzdGdsZGlzcGxheV94MTEuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiR0xDb250ZXh0Lmgi
CisjaWYgVVNFKEdMWCkKKyNpbmNsdWRlICJHTENvbnRleHRHTFguaCIKKyNlbmRpZgorI2VuZGlm
IC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00
Nyw3ICs3MCwxOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNlbHNlCiAjZGVmaW5lIEdT
VF9DQVBTX0ZPUk1BVCAieyB4UkdCLCBBUkdCIH0iCiAjZW5kaWYKLSNpZiBHU1RfQ0hFQ0tfVkVS
U0lPTigxLCAxLCAwKQorCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKworI2lmIEdTVF9HTF9IQVZF
X1BMQVRGT1JNX0VHTAorI2RlZmluZSBFR0xfQ0FQUyBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhf
RkVBVFVSRVMoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfRUdMX0lNQUdFLCBHU1RfQ0FQU19GT1JN
QVQpICI7ICIKKyNlbHNlCisjZGVmaW5lIEVHTF9DQVBTCisjZW5kaWYKKworI2RlZmluZSBHU1Rf
RkVBVFVSRURfQ0FQUyBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMoR1NUX0NBUFNf
RkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBHU1RfQ0FQU19GT1JNQVQpICI7ICIgRUdMX0NBUFMg
R1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9H
U1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSwgR1NUX0NBUFNfRk9STUFUKSAiOyIKKwor
I2VsaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKICNkZWZpbmUgR1NUX0ZFQVRVUkVEX0NB
UFMgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVU
QV9HU1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSwgR1NUX0NBUFNfRk9STUFUKSAiOyIK
ICNlbHNlCiAjZGVmaW5lIEdTVF9GRUFUVVJFRF9DQVBTCkBAIC03Myw2ICsxMDcsMTAgQEAgc3Ry
dWN0IF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICB7CiAgICAgICAgIGdfbXV0ZXhfaW5p
dCgmc2FtcGxlTXV0ZXgpOwogICAgICAgICBnX2NvbmRfaW5pdCgmZGF0YUNvbmRpdGlvbik7Cisj
aWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICAgICAgZ19tdXRleF9pbml0KCZjb250ZXh0TXV0ZXgp
OworICAgICAgICBnX2NvbmRfaW5pdCgmY29udGV4dENvbmRpdGlvbik7CisjZW5kaWYKICAgICAg
ICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7CiAgICAgfQogCkBAIC04MCw2ICsxMTgsMTAg
QEAgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICB7CiAgICAgICAgIGdfbXV0
ZXhfY2xlYXIoJnNhbXBsZU11dGV4KTsKICAgICAgICAgZ19jb25kX2NsZWFyKCZkYXRhQ29uZGl0
aW9uKTsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgICAgICBnX211dGV4X2NsZWFyKCZjb250
ZXh0TXV0ZXgpOworICAgICAgICBnX2NvbmRfY2xlYXIoJmNvbnRleHRDb25kaXRpb24pOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgR3N0U2FtcGxlKiBzYW1wbGU7CkBAIC0xMDAsMTYgKzE0Miw3MCBA
QCBzdHJ1Y3QgX1dlYktpdFZpZGVvU2lua1ByaXZhdGUgewogICAgIC8vCiAgICAgLy8gUHJvdGVj
dGVkIGJ5IHRoZSBzYW1wbGUgbXV0ZXgKICAgICBib29sIHVubG9ja2VkOworCisjaWYgVVNFKEdT
VFJFQU1FUl9HTCkKKyAgICBHc3RDYXBzKiBnbENhcHM7CisgICAgR3N0QnVmZmVyUG9vbCogcG9v
bDsKKyAgICBHc3RHTERpc3BsYXkqIGRpc3BsYXk7CisgICAgR3N0R0xDb250ZXh0KiBjb250ZXh0
OworICAgIEdzdEdMQ29udGV4dCogb3RoZXJDb250ZXh0OworICAgIEdNdXRleCBjb250ZXh0TXV0
ZXg7CisgICAgR0NvbmQgY29udGV4dENvbmRpdGlvbjsKKworICAgIEdzdEdMVXBsb2FkKiB1cGxv
YWQ7CisgICAgR3N0QnVmZmVyKiBuZXh0QnVmZmVyOworI2VuZGlmCiB9OwogCiAjZGVmaW5lIHdl
YmtpdF92aWRlb19zaW5rX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKIEdfREVGSU5FX1RZUEVf
V0lUSF9DT0RFKFdlYktpdFZpZGVvU2luaywgd2Via2l0X3ZpZGVvX3NpbmssIEdTVF9UWVBFX1ZJ
REVPX1NJTkssIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdFZpZGVvU2lua0RlYnVnLCAi
d2Via2l0c2luayIsIDAsICJ3ZWJraXQgdmlkZW8gc2luayIpKTsKIAorI2lmIFVTRShHU1RSRUFN
RVJfR0wpCitnYm9vbGVhbiB3cmFwR0xDb250ZXh0Q2FsbGJhY2soZ3BvaW50ZXIgdXNlckRhdGEp
Cit7CisgICAgV2ViS2l0VmlkZW9TaW5rKiBzaW5rID0gcmVpbnRlcnByZXRfY2FzdDxXZWJLaXRW
aWRlb1NpbmsqPih1c2VyRGF0YSk7CisgICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9
IHNpbmstPnByaXY7CisKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPmNvbnRl
eHRNdXRleCk7CisKKyAgICBHRXJyb3IqIGVycm9yID0gbnVsbHB0cjsKKworICAgIGlmICghcHJp
di0+ZGlzcGxheSkKKyAgICAgICAgcHJpdi0+ZGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X25ldygp
OworCisgICAgaWYgKCFwcml2LT5vdGhlckNvbnRleHQpIHsKKyAgICAgICAgR0xDb250ZXh0KiB3
ZWJraXRDb250ZXh0ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpOworI2lmIFBMQVRGT1JN
KFgxMSkKKyAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IEdMQ29udGV4dDo6c2hhcmVkWDExRGlz
cGxheSgpOworICAgICAgICBHTFhDb250ZXh0KiBnbHhTaGFyaW5nQ29udGV4dCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8R0xYQ29udGV4dCo+KHdlYmtpdENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsK
KyAgICAgICAgR3N0R0xEaXNwbGF5WDExKiBnc3RHTERpc3BsYXkgPSBnc3RfZ2xfZGlzcGxheV94
MTFfbmV3X3dpdGhfZGlzcGxheShkaXNwbGF5KTsKKyAgICAgICAgR3N0R0xQbGF0Zm9ybSBwbGF0
Zm9ybSA9IEdTVF9HTF9QTEFURk9STV9HTFg7CisgICAgICAgIEdzdEdMQVBJIGdsQXBpID0gZ3N0
X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfYXBpKG51bGxwdHIsIG51bGxwdHIpOworICAgICAg
ICBpZiAoZ2x4U2hhcmluZ0NvbnRleHQpCisgICAgICAgICAgICBwcml2LT5vdGhlckNvbnRleHQg
PSBnc3RfZ2xfY29udGV4dF9uZXdfd3JhcHBlZChHU1RfR0xfRElTUExBWShnc3RHTERpc3BsYXkp
LCByZWludGVycHJldF9jYXN0PGd1aW50cHRyPihnbHhTaGFyaW5nQ29udGV4dCksIHBsYXRmb3Jt
LCBnbEFwaSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoIXByaXYtPmNvbnRleHQpIHsKKyAg
ICAgICAgcHJpdi0+Y29udGV4dCA9IGdzdF9nbF9jb250ZXh0X25ldyhwcml2LT5kaXNwbGF5KTsK
KyAgICAgICAgaWYgKCFnc3RfZ2xfY29udGV4dF9jcmVhdGUocHJpdi0+Y29udGV4dCwgcHJpdi0+
b3RoZXJDb250ZXh0LCAmZXJyb3IpKSB7CisgICAgICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihz
aW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpLCAobnVsbHB0
cikpOworICAgICAgICAgICAgZ3N0X29iamVjdF91bnJlZihwcml2LT5jb250ZXh0KTsKKyAgICAg
ICAgICAgIHByaXYtPmNvbnRleHQgPSBudWxscHRyOworICAgICAgICAgICAgZ19jb25kX3NpZ25h
bCgmcHJpdi0+Y29udGV4dENvbmRpdGlvbik7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBnX2NvbmRfc2lnbmFsKCZwcml2LT5jb250ZXh0Q29uZGl0
aW9uKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisjZW5kaWYKIAogc3RhdGljIHZvaWQgd2Via2l0
X3ZpZGVvX3NpbmtfaW5pdChXZWJLaXRWaWRlb1NpbmsqIHNpbmspCiB7CiAgICAgc2luay0+cHJp
diA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzaW5rLCBXRUJLSVRfVFlQRV9WSURFT19T
SU5LLCBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKTsKLSAgICBnX29iamVjdF9zZXQoR1NUX0JBU0Vf
U0lOSyhzaW5rKSwgImVuYWJsZS1sYXN0LXNhbXBsZSIsIEZBTFNFLCBOVUxMKTsKKyAgICBnX29i
amVjdF9zZXQoR1NUX0JBU0VfU0lOSyhzaW5rKSwgImVuYWJsZS1sYXN0LXNhbXBsZSIsIEZBTFNF
LCBudWxscHRyKTsKICAgICBuZXcgKHNpbmstPnByaXYpIFdlYktpdFZpZGVvU2lua1ByaXZhdGUo
KTsKIH0KIApAQCAtMTE5LDcgKzIxNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua1Rp
bWVvdXRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqIHNpbmspCiAKICAgICBHTXV0ZXhMb2NrZXI8
R011dGV4PiBsb2NrKHByaXYtPnNhbXBsZU11dGV4KTsKICAgICBHc3RTYW1wbGUqIHNhbXBsZSA9
IHByaXYtPnNhbXBsZTsKLSAgICBwcml2LT5zYW1wbGUgPSAwOworICAgIHByaXYtPnNhbXBsZSA9
IG51bGxwdHI7CiAKICAgICBpZiAoIXNhbXBsZSB8fCBwcml2LT51bmxvY2tlZCB8fCBVTkxJS0VM
WSghR1NUX0lTX1NBTVBMRShzYW1wbGUpKSkgewogICAgICAgICBnX2NvbmRfc2lnbmFsKCZwcml2
LT5kYXRhQ29uZGl0aW9uKTsKQEAgLTIxOSw4ICszMTUsMTEgQEAgc3RhdGljIEdzdEZsb3dSZXR1
cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0QnVmZmVy
KiBidWYKICAgICAvLyBsb3dlciBwcmlvcml0eSBzb3VyY2VzLgogICAgIC8vIFNlZTogaHR0cHM6
Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTYxMDgzMC4KICAgICBnc3Rfb2Jq
ZWN0X3JlZihzaW5rKTsKLSAgICBwcml2LT50aW1lb3V0U291cmNlLnNjaGVkdWxlKCJbV2ViS2l0
XSB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2siLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4o
c3RkOjpiaW5kKHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjaywgc2luaykpLCBHX1BSSU9S
SVRZX0RFRkFVTFQsCi0gICAgICAgIFtzaW5rXSB7IGdzdF9vYmplY3RfdW5yZWYoc2luayk7IH0p
OworICAgIHByaXYtPnRpbWVvdXRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYmtpdFZpZGVv
U2lua1RpbWVvdXRDYWxsYmFjayIsCisgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihzdGQ6
OmJpbmQod2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrLCBzaW5rKSksCisgICAgICAgIEdf
UFJJT1JJVFlfREVGQVVMVCwgW3NpbmtdIHsKKyAgICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYo
c2luayk7CisgICAgICAgIH0pOwogCiAgICAgZ19jb25kX3dhaXQoJnByaXYtPmRhdGFDb25kaXRp
b24sICZwcml2LT5zYW1wbGVNdXRleCk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwpAQCAtMjM4
LDcgKzMzNyw3IEBAIHN0YXRpYyB2b2lkIHVubG9ja1NhbXBsZU11dGV4KFdlYktpdFZpZGVvU2lu
a1ByaXZhdGUqIHByaXYpCiAKICAgICBpZiAocHJpdi0+c2FtcGxlKSB7CiAgICAgICAgIGdzdF9z
YW1wbGVfdW5yZWYocHJpdi0+c2FtcGxlKTsKLSAgICAgICAgcHJpdi0+c2FtcGxlID0gMDsKKyAg
ICAgICAgcHJpdi0+c2FtcGxlID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBwcml2LT51bmxvY2tl
ZCA9IHRydWU7CkBAIC0yNjksMTQgKzM2OCwzMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0Vmlk
ZW9TaW5rVW5sb2NrU3RvcChHc3RCYXNlU2luayogYmFzZVNpbmspCiAKIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRWaWRlb1NpbmtTdG9wKEdzdEJhc2VTaW5rKiBiYXNlU2luaykKIHsKLSAgICBXZWJL
aXRWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gV0VCS0lUX1ZJREVPX1NJTksoYmFzZVNpbmspLT5w
cml2OworICAgIFdlYktpdFZpZGVvU2luayogc2luayA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFdl
YktpdFZpZGVvU2luayo+KGJhc2VTaW5rKTsKKyAgICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBw
cml2ID0gc2luay0+cHJpdjsKIAogICAgIHVubG9ja1NhbXBsZU11dGV4KHByaXYpOwogCiAgICAg
aWYgKHByaXYtPmN1cnJlbnRDYXBzKSB7CiAgICAgICAgIGdzdF9jYXBzX3VucmVmKHByaXYtPmN1
cnJlbnRDYXBzKTsKLSAgICAgICAgcHJpdi0+Y3VycmVudENhcHMgPSAwOworICAgICAgICBwcml2
LT5jdXJyZW50Q2FwcyA9IG51bGxwdHI7CisgICAgfQorCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkK
KyAgICBHU1RfT0JKRUNUX0xPQ0soc2luayk7CisgICAgaWYgKHByaXYtPnBvb2wpCisgICAgICAg
IGdzdF9vYmplY3RfdW5yZWYocHJpdi0+cG9vbCk7CisgICAgcHJpdi0+cG9vbCA9IG51bGxwdHI7
CisgICAgR1NUX09CSkVDVF9VTkxPQ0soc2luayk7CisKKyAgICBnc3RfYnVmZmVyX3JlcGxhY2Uo
JnByaXYtPm5leHRCdWZmZXIsIG51bGxwdHIpOworCisgICAgaWYgKHByaXYtPnVwbG9hZCkgewor
ICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYtPnVwbG9hZCk7CisgICAgICAgIHByaXYtPnVw
bG9hZCA9IG51bGxwdHI7CiAgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gVFJVRTsKIH0KQEAg
LTMwNiwxMyArNDIxLDcwIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtTZXRDYXBz
KEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0Q2FwcyogY2FwcykKIAogICAgIHByaXYtPmluZm8g
PSB2aWRlb0luZm87CiAgICAgZ3N0X2NhcHNfcmVwbGFjZSgmcHJpdi0+Y3VycmVudENhcHMsIGNh
cHMpOworCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBs
b2NrKHByaXYtPmNvbnRleHRNdXRleCk7CisKKyAgICBHVGhyZWFkU2FmZU1haW5Mb29wU291cmNl
IHRpbWVvdXRTb3VyY2U7CisgICAgZ3N0X29iamVjdF9yZWYoc2luayk7CisgICAgdGltZW91dFNv
dXJjZS5zY2hlZHVsZSgiW1dlYktpdF1bZ3N0XSBHTCBjb250ZXh0IHdyYXAiLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4oc3RkOjpiaW5kKHdyYXBHTENvbnRleHRDYWxsYmFjaywgc2luaykpLCBHX1BS
SU9SSVRZX0RFRkFVTFQsIFtzaW5rXSB7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYoc2luayk7
CisgICAgfSk7CisKKyAgICBnX2NvbmRfd2FpdCgmc2luay0+cHJpdi0+Y29udGV4dENvbmRpdGlv
biwgJnNpbmstPnByaXYtPmNvbnRleHRNdXRleCk7CisKKyAgICBpZiAocHJpdi0+dXBsb2FkKQor
ICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYtPnVwbG9hZCk7CisgICAgcHJpdi0+dXBsb2Fk
ID0gZ3N0X2dsX3VwbG9hZF9uZXcocHJpdi0+Y29udGV4dCk7CisKKyAgICBHc3RDYXBzRmVhdHVy
ZXMqIGdsRmVhdHVyZXMgPSBnc3RfY2Fwc19mZWF0dXJlc19mcm9tX3N0cmluZyhHU1RfQ0FQU19G
RUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOworICAgIGlmIChwcml2LT5nbENhcHMpCisgICAgICAg
IGdzdF9jYXBzX3VucmVmKHByaXYtPmdsQ2Fwcyk7CisgICAgcHJpdi0+Z2xDYXBzID0gZ3N0X2Nh
cHNfY29weShjYXBzKTsKKyAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMocHJpdi0+Z2xDYXBzLCAw
LCBnbEZlYXR1cmVzKTsKKworICAgIGdzdF9nbF91cGxvYWRfc2V0X2NhcHMocHJpdi0+dXBsb2Fk
LCBjYXBzLCBwcml2LT5nbENhcHMpOworI2VuZGlmCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKKyNp
ZiBVU0UoR1NUUkVBTUVSX0dMKQorc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5r
UHJlcGFyZShHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAg
IFdlYktpdFZpZGVvU2luayogc2luayA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5rKTsKKyAg
ICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gc2luay0+cHJpdjsKKworICAgIEdzdEJ1
ZmZlciogbmV4dEJ1ZmZlciA9IG51bGxwdHI7CisgICAgR3N0VmlkZW9GcmFtZSBnbEZyYW1lOwor
ICAgIEdzdFZpZGVvSW5mbyBnbEluZm87CisKKyAgICBpZiAoIWdzdF9nbF91cGxvYWRfcGVyZm9y
bV93aXRoX2J1ZmZlcihwcml2LT51cGxvYWQsIGJ1ZmZlciwgJm5leHRCdWZmZXIpKSB7CisgICAg
ICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNpbmssIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLCAi
RmFpbGVkIHRvIHVwbG9hZCBidWZmZXIiKSwgKG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuIEdT
VF9GTE9XX0VSUk9SOworICAgIH0KKworICAgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmZ2xJ
bmZvLCBwcml2LT5nbENhcHMpOworCisgICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZnbEZy
YW1lLCAmZ2xJbmZvLCBuZXh0QnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01B
UF9SRUFEIHwgR1NUX01BUF9HTCkpKSB7CisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYobmV4dEJ1
ZmZlcik7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNpbmssIFJFU09VUkNFLCBOT1RfRk9V
TkQsICgiJXMiLCAiRmFpbGVkIHRvIHVwbG9hZCBidWZmZXIiKSwgKG51bGxwdHIpKTsKKyAgICAg
ICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICAgIH0KKworICAgIGdzdF9idWZmZXJfcmVwbGFj
ZSgmcHJpdi0+bmV4dEJ1ZmZlciwgbmV4dEJ1ZmZlcik7CisgICAgZ3N0X2J1ZmZlcl91bnJlZihu
ZXh0QnVmZmVyKTsKKworICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgmZ2xGcmFtZSk7CisgICAg
cmV0dXJuIEdTVF9GTE9XX09LOworfQorI2VuZGlmCisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRW
aWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdFF1ZXJ5
KiBxdWVyeSkKIHsKICAgICBHc3RDYXBzKiBjYXBzOwotICAgIGdzdF9xdWVyeV9wYXJzZV9hbGxv
Y2F0aW9uKHF1ZXJ5LCAmY2FwcywgMCk7CisgICAgZ2Jvb2xlYW4gbmVlZFBvb2w7CisKKyAgICBn
c3RfcXVlcnlfcGFyc2VfYWxsb2NhdGlvbihxdWVyeSwgJmNhcHMsICZuZWVkUG9vbCk7CiAgICAg
aWYgKCFjYXBzKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKQEAgLTMyMCwxNCArNDkyLDEzMyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rUHJvcG9zZUFsbG9jYXRpb24oR3N0QmFz
ZVNpbmsqIGJhc2VTaW5rLCBHc3RRdWVyeQogICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9j
YXBzKCZzaW5rLT5wcml2LT5pbmZvLCBjYXBzKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCisg
ICAgR3N0U3RydWN0dXJlKiBnbENvbnRleHQgPSBudWxscHRyOworI2lmIFVTRShHU1RSRUFNRVJf
R0wpCisgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAicHJvcG9zZSBhbGxvY2F0aW9uIik7Cisg
ICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhzaW5rLT5wcml2LT5jb250ZXh0TXV0ZXgpOwor
CisgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSB0aW1lb3V0U291cmNlOworICAgIGdzdF9v
YmplY3RfcmVmKHNpbmspOworICAgIHRpbWVvdXRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdW2dz
dF0gR0wgY29udGV4dCB3cmFwIiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KHN0ZDo6YmluZCh3cmFw
R0xDb250ZXh0Q2FsbGJhY2ssIHNpbmspKSwgR19QUklPUklUWV9ERUZBVUxULCBbc2lua10gewor
ICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHNpbmspOworICAgIH0pOworCisgICAgZ19jb25kX3dh
aXQoJnNpbmstPnByaXYtPmNvbnRleHRDb25kaXRpb24sICZzaW5rLT5wcml2LT5jb250ZXh0TXV0
ZXgpOworCisgICAgR3N0QnVmZmVyUG9vbCogcG9vbDsKKyAgICBHc3RBbGxvY2F0b3IqIGFsbG9j
YXRvciA9IG51bGxwdHI7CisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXM7CisgICAgR3N0
U3RydWN0dXJlKiBjb25maWc7CisgICAgZ3VpbnQgc2l6ZTsKKworICAgIGlmICgocG9vbCA9IHNp
bmstPnByaXYtPnBvb2wpKQorICAgICAgICBnc3Rfb2JqZWN0X3JlZihwb29sKTsKKworICAgIGlm
IChwb29sKSB7CisgICAgICAgIEdzdENhcHMqIHBjYXBzOworCisgICAgICAgIC8vIFdlIGhhZCBh
IHBvb2wsIGNoZWNrIGl0cyBjYXBzLgorICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNpbmssICJj
aGVjayBleGlzdGluZyBwb29sIGNhcHMiKTsKKyAgICAgICAgY29uZmlnID0gZ3N0X2J1ZmZlcl9w
b29sX2dldF9jb25maWcocG9vbCk7CisgICAgICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0
X3BhcmFtcyhjb25maWcsICZwY2FwcywgJnNpemUsIDAsIDApOworCisgICAgICAgIGlmICghZ3N0
X2NhcHNfaXNfZXF1YWwoY2FwcywgcGNhcHMpKSB7CisgICAgICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHNpbmssICJwb29sIGhhcyBkaWZmZXJlbnQgY2FwcyIpOworICAgICAgICAgICAgLy8gRGlm
ZmVyZW50IGNhcHMsIHdlIGNhbid0IHVzZSB0aGlzIHBvb2wuCisgICAgICAgICAgICBnc3Rfb2Jq
ZWN0X3VucmVmKHBvb2wpOworICAgICAgICAgICAgcG9vbCA9IG51bGxwdHI7CisgICAgICAgIH0K
KyAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlKGNvbmZpZyk7CisgICAgfQorCisgICAgaWYgKG5l
ZWRQb29sICYmICFwb29sKSB7CisgICAgICAgIEdzdFZpZGVvSW5mbyBpbmZvOworCisgICAgICAg
IGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkgeworICAgICAgICAg
ICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAiaW52YWxpZCBjYXBzIHNwZWNpZmllZCIpOworICAg
ICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgR1NUX0RFQlVHX09C
SkVDVChzaW5rLCAiY3JlYXRlIG5ldyBwb29sIHdpdGggY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwg
Y2Fwcyk7CisgICAgICAgIHBvb2wgPSBnc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3KHNpbmstPnByaXYt
PmNvbnRleHQpOworCisgICAgICAgIC8vIFRoZSBub3JtYWwgc2l6ZSBvZiBhIGZyYW1lLgorICAg
ICAgICBzaXplID0gaW5mby5zaXplOworCisgICAgICAgIGNvbmZpZyA9IGdzdF9idWZmZXJfcG9v
bF9nZXRfY29uZmlnKHBvb2wpOworICAgICAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9w
YXJhbXMoY29uZmlnLCBjYXBzLCBzaXplLCAwLCAwKTsKKyAgICAgICAgaWYgKCFnc3RfYnVmZmVy
X3Bvb2xfc2V0X2NvbmZpZyhwb29sLCBjb25maWcpKSB7CisgICAgICAgICAgICBHU1RfREVCVUdf
T0JKRUNUKHNpbmssICJmYWlsZWQgc2V0dGluZyBjb25maWciKTsKKyAgICAgICAgICAgIHJldHVy
biBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChwb29sKSB7CisgICAgICAgIGdz
dF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wb29sKHF1ZXJ5LCBwb29sLCBzaXplLCAyLCAwKTsKKyAg
ICAgICAgZ3N0X29iamVjdF91bnJlZihwb29sKTsKKyAgICB9CisKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiBwbGF0Zm9ybShnc3RfZ2xfcGxhdGZvcm1fdG9fc3RyaW5nKGdzdF9nbF9jb250ZXh0X2dl
dF9nbF9wbGF0Zm9ybShzaW5rLT5wcml2LT5jb250ZXh0KSkpOworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGdsQXBpcyhnc3RfZ2xfYXBpX3RvX3N0cmluZyhnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBp
KHNpbmstPnByaXYtPmNvbnRleHQpKSk7CisgICAgZ3BvaW50ZXIgaGFuZGxlID0gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8Z3BvaW50ZXI+KGdzdF9nbF9jb250ZXh0X2dldF9nbF9jb250ZXh0KHNpbmst
PnByaXYtPmNvbnRleHQpKTsKKworICAgIGdsQ29udGV4dCA9IGdzdF9zdHJ1Y3R1cmVfbmV3KCJH
c3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEiLCAiZ3N0LmdsLkdzdEdMQ29udGV4dCIsCisgICAg
ICAgIEdTVF9HTF9UWVBFX0NPTlRFWFQsIHNpbmstPnByaXYtPmNvbnRleHQsICJnc3QuZ2wuY29u
dGV4dC5oYW5kbGUiLAorICAgICAgICBHX1RZUEVfUE9JTlRFUiwgaGFuZGxlLCAiZ3N0LmdsLmNv
bnRleHQudHlwZSIsIEdfVFlQRV9TVFJJTkcsIHBsYXRmb3JtLmdldCgpLAorICAgICAgICAiZ3N0
LmdsLmNvbnRleHQuYXBpcyIsIEdfVFlQRV9TVFJJTkcsIGdsQXBpcy5nZXQoKSwgbnVsbHB0cik7
CisjZW5kaWYKKwogICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9tZXRhKHF1ZXJ5LCBHU1Rf
VklERU9fTUVUQV9BUElfVFlQRSwgMCk7CiAgICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX21l
dGEocXVlcnksIEdTVF9WSURFT19DUk9QX01FVEFfQVBJX1RZUEUsIDApOwogI2lmIEdTVF9DSEVD
S19WRVJTSU9OKDEsIDEsIDApCi0gICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX21ldGEocXVl
cnksIEdTVF9WSURFT19HTF9URVhUVVJFX1VQTE9BRF9NRVRBX0FQSV9UWVBFLCAwKTsKKyAgICBn
c3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fbWV0YShxdWVyeSwgR1NUX1ZJREVPX0dMX1RFWFRVUkVf
VVBMT0FEX01FVEFfQVBJX1RZUEUsIGdsQ29udGV4dCk7CisjZW5kaWYKKworICAgIGlmIChnbENv
bnRleHQpCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShnbENvbnRleHQpOworCisjaWYgVVNF
KEdTVFJFQU1FUl9HTCkKKyAgICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCgmcGFyYW1zKTsK
KyAgICBhbGxvY2F0b3IgPSBnc3RfYWxsb2NhdG9yX2ZpbmQoR1NUX0dMX01FTU9SWV9BTExPQ0FU
T1IpOworICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wYXJhbShxdWVyeSwgYWxsb2NhdG9y
LCAmcGFyYW1zKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKGFsbG9jYXRvcik7CisjaWYgR1NUX0dM
X0hBVkVfUExBVEZPUk1fRUdMCisgICAgaWYgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmUo
c2luay0+cHJpdi0+Y29udGV4dCwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpKSB7CisgICAgICAgIGFs
bG9jYXRvciA9IGdzdF9hbGxvY2F0b3JfZmluZChHU1RfRUdMX0lNQUdFX01FTU9SWV9UWVBFKTsK
KyAgICAgICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX3BhcmFtKHF1ZXJ5LCBhbGxvY2F0b3Is
ICZwYXJhbXMpOworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKGFsbG9jYXRvcik7CisgICAgfQor
I2VuZGlmCiAjZW5kaWYKICAgICByZXR1cm4gVFJVRTsKIH0KIAorI2lmIFVTRShHU1RSRUFNRVJf
R0wpCitzdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtTZXRDb250ZXh0KEdzdEVsZW1lbnQqIGVs
ZW1lbnQsIEdzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgV2ViS2l0VmlkZW9TaW5rKiBzaW5r
ID0gIFdFQktJVF9WSURFT19TSU5LKGVsZW1lbnQpOworICAgIGdzdF9nbF9oYW5kbGVfc2V0X2Nv
bnRleHQoZWxlbWVudCwgY29udGV4dCwgJnNpbmstPnByaXYtPmRpc3BsYXksICZzaW5rLT5wcml2
LT5jb250ZXh0KTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1F1ZXJ5KEdz
dEJhc2VTaW5rKiBiYXNlU2luaywgR3N0UXVlcnkqIHF1ZXJ5KQoreworICAgIFdlYktpdFZpZGVv
U2luayogc2luayA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5rKTsKKyAgICBnYm9vbGVhbiBy
ZXN1bHQgPSBGQUxTRTsKKworICAgIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUocXVlcnkpKSB7Cisg
ICAgY2FzZSBHU1RfUVVFUllfQ09OVEVYVDogeworICAgICAgICByZXN1bHQgPSBnc3RfZ2xfaGFu
ZGxlX2NvbnRleHRfcXVlcnkocmVpbnRlcnByZXRfY2FzdDxHc3RFbGVtZW50Kj4oc2luayksIHF1
ZXJ5LCAmc2luay0+cHJpdi0+ZGlzcGxheSwgJnNpbmstPnByaXYtPm90aGVyQ29udGV4dCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXN1bHQgPSBHU1Rf
QkFTRV9TSU5LX0NMQVNTKHBhcmVudF9jbGFzcyktPnF1ZXJ5KGJhc2VTaW5rLCBxdWVyeSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKwog
c3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdChXZWJLaXRWaWRlb1NpbmtD
bGFzcyoga2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhrbGFzcyk7CkBAIC0zNDksNiArNjQwLDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF92
aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogICAgIGJh
c2VTaW5rQ2xhc3MtPnN0YXJ0ID0gd2Via2l0VmlkZW9TaW5rU3RhcnQ7CiAgICAgYmFzZVNpbmtD
bGFzcy0+c2V0X2NhcHMgPSB3ZWJraXRWaWRlb1NpbmtTZXRDYXBzOwogICAgIGJhc2VTaW5rQ2xh
c3MtPnByb3Bvc2VfYWxsb2NhdGlvbiA9IHdlYmtpdFZpZGVvU2lua1Byb3Bvc2VBbGxvY2F0aW9u
OworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgYmFzZVNpbmtDbGFzcy0+cHJlcGFyZSA9IHdl
YmtpdFZpZGVvU2lua1ByZXBhcmU7CisgICAgYmFzZVNpbmtDbGFzcy0+cXVlcnkgPSB3ZWJraXRW
aWRlb1NpbmtRdWVyeTsKKyAgICBlbGVtZW50Q2xhc3MtPnNldF9jb250ZXh0ID0gd2Via2l0Vmlk
ZW9TaW5rU2V0Q29udGV4dDsKKyNlbmRpZgogCiAgICAgd2Via2l0VmlkZW9TaW5rU2lnbmFsc1tS
RVBBSU5UX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoInJlcGFpbnQtcmVxdWVzdGVkIiwKICAg
ICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21h
a2UKaW5kZXggNzQ0NDc2MC4uYWNkMTI0MyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL0ZpbmRH
U3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21ha2UKQEAg
LTE5LDYgKzE5LDcgQEAKICMgIGdzdHJlYW1lci1hcHA6ICAgICAgICBHU1RSRUFNRVJfQVBQX0lO
Q0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0FQUF9MSUJSQVJJRVMKICMgIGdzdHJlYW1lci1hdWRp
bzogICAgICBHU1RSRUFNRVJfQVVESU9fSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfQVVESU9f
TElCUkFSSUVTCiAjICBnc3RyZWFtZXItZmZ0OiAgICAgICAgR1NUUkVBTUVSX0ZGVF9JTkNMVURF
X0RJUlMgYW5kIEdTVFJFQU1FUl9GRlRfTElCUkFSSUVTCisjICBnc3RyZWFtZXItZ2w6ICAgICAg
ICAgR1NUUkVBTUVSX0dMX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0dMX0xJQlJBUklFUwog
IyAgZ3N0cmVhbWVyLW1wZWd0czogICAgIEdTVFJFQU1FUl9NUEVHVFNfSU5DTFVERV9ESVJTIGFu
ZCBHU1RSRUFNRVJfTVBFR1RTX0xJQlJBUklFUwogIyAgZ3N0cmVhbWVyLXBidXRpbHM6ICAgIEdT
VFJFQU1FUl9QQlVUSUxTX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX1BCVVRJTFNfTElCUkFS
SUVTCiAjICBnc3RyZWFtZXItdGFnOiAgICAgICAgR1NUUkVBTUVSX1RBR19JTkNMVURFX0RJUlMg
YW5kIEdTVFJFQU1FUl9UQUdfTElCUkFSSUVTCkBAIC04NCw2ICs4NSw3IEBAIEZJTkRfR1NUUkVB
TUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfQkFTRSBnc3RyZWFtZXItYmFzZS0xLjAgZ3N0YmFzZS0x
LjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0FQUCBnc3RyZWFtZXItYXBw
LTEuMCBnc3RhcHAtMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9BVURJ
TyBnc3RyZWFtZXItYXVkaW8tMS4wIGdzdGF1ZGlvLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBP
TkVOVChHU1RSRUFNRVJfRkZUIGdzdHJlYW1lci1mZnQtMS4wIGdzdGZmdC0xLjApCitGSU5EX0dT
VFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0dMIGdzdHJlYW1lci1nbC0xLjA+PTEuNS4wIGdz
dGdsLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfTVBFR1RTIGdzdHJl
YW1lci1tcGVndHMtMS4wPj0xLjQuMCBnc3RtcGVndHMtMS4wKQogRklORF9HU1RSRUFNRVJfQ09N
UE9ORU5UKEdTVFJFQU1FUl9QQlVUSUxTIGdzdHJlYW1lci1wYnV0aWxzLTEuMCBnc3RwYnV0aWxz
LTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfVEFHIGdzdHJlYW1lci10
YWctMS4wIGdzdHRhZy0xLjApCkBAIC0xMTQsNiArMTE2LDggQEAgbWFya19hc19hZHZhbmNlZCgK
ICAgICBHU1RSRUFNRVJfQkFTRV9MSUJSQVJJRVMKICAgICBHU1RSRUFNRVJfRkZUX0lOQ0xVREVf
RElSUwogICAgIEdTVFJFQU1FUl9GRlRfTElCUkFSSUVTCisgICAgR1NUUkVBTUVSX0dMX0lOQ0xV
REVfRElSUworICAgIEdTVFJFQU1FUl9HTF9MSUJSQVJJRVMKICAgICBHU1RSRUFNRVJfSU5DTFVE
RV9ESVJTCiAgICAgR1NUUkVBTUVSX0xJQlJBUklFUwogICAgIEdTVFJFQU1FUl9NUEVHVFNfSU5D
TFVERV9ESVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IDQ1NjI5OWEuLjM4ZDk0ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zR1RLLmNtYWtlCkBAIC0yMjUsNyArMjI1LDcgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBF
TkFCTEVfV0VCX0FVRElPKQogICAgIHNldChHU1RSRUFNRVJfQ09NUE9ORU5UUyBhcHAgcGJ1dGls
cykKICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0dTVFJFQU1FUikKICAgICBpZiAoRU5B
QkxFX1ZJREVPKQotICAgICAgICBsaXN0KEFQUEVORCBHU1RSRUFNRVJfQ09NUE9ORU5UUyB2aWRl
byBtcGVndHMgdGFnKQorICAgICAgICBsaXN0KEFQUEVORCBHU1RSRUFNRVJfQ09NUE9ORU5UUyB2
aWRlbyBtcGVndHMgdGFnIGdsKQogICAgIGVuZGlmICgpCiAKICAgICBpZiAoRU5BQkxFX1dFQl9B
VURJTykKQEAgLTIzOSw2ICsyMzksMTEgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VC
X0FVRElPKQogICAgICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0dTVFJFQU1FUl9NUEVH
VFMpCiAgICAgICAgIHNldChVU0VfR1NUUkVBTUVSX01QRUdUUyBUUlVFKQogICAgIGVuZGlmICgp
CisKKyAgICBpZiAoUENfR1NUUkVBTUVSX0dMX0ZPVU5EKQorICAgICAgICBhZGRfZGVmaW5pdGlv
bnMoLURXVEZfVVNFX0dTVFJFQU1FUl9HTCkKKyAgICAgICAgc2V0KFVTRV9HU1RSRUFNRVJfR0wg
VFJVRSkKKyAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdF
VCkKLS0gCjIuMS4z
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243045</attachid>
            <date>2014-12-10 10:23:47 -0800</date>
            <delta_ts>2014-12-29 07:30:33 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>24540</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmZDVlM2MxNTRiOGQ4ODFmZGYxOWQ1NmJkMTc3OWZhMDA1NzI0MDJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDkgRGVjIDIwMTQgMTk6MDI6NDMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAzNyArKysKIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlICAgICAg
ICAgICAgICAgICAgIHwgIDEwICsKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgIHwgIDI5ICsrCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHAgICAgICB8IDMxNiArKysrKysrKysrKysrKysrKysrKy0KIFNvdXJjZS9j
bWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIFNvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiA3
IGZpbGVzIGNoYW5nZWQsIDQwMyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggOTdkMDcyNC4uYmZiNWFhMiAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTEyLTA5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1N0cmVhbWVyXSBHc3RHTCBzdXBwb3J0IGluIHRoZSB2aWRlbyBzaW5rCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1NjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5k
R1N0cmVhbWVyLmNtYWtlOiBMb29rdXAgdGhlIEdzdEdMIGxpYnJhcnkgYW5kIGhlYWRlcnMuCisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IFR1cm4gb24gdGhlIFVTRShH
U1RSRUFNRVJfR0wpCisgICAgICAgIG1hY3JvIGlmIEdzdEdMIHdhcyBmb3VuZC4KKwogMjAxNC0x
Mi0wOSAgQmVtIEpvbmVzLUJleSAgPGJqb25lc2JlQGFkb2JlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OKHIxNTU5MDYpOiBQYWdlIGNvbnRlbnQgZGlzYXBwZWFycyBvbiBUdWF3IGFydGljbGUg
YWZ0ZXIgbG9hZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc5Yjk1OGUuLjMyYzhiMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MCBAQAorMjAxNC0xMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gR3N0R0wgc3VwcG9ydCBpbiB0aGUg
dmlkZW8gc2luaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM4NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSWYgYSByZWNlbnQgZW5vdWdoICg+PSAxLjUpIEdTdHJlYW1lciB2ZXJzaW9uIGlzIGF2YWls
YWJsZSB0aGVuCisgICAgICAgIHRoZSB2aWRlbyBzaW5rIHdpbGwgdXNlIHRoZSBHc3RHTCBsaWJy
YXJ5IHRvIGVtYmVkIGEgR0wgdGV4dHVyZSBpbgorICAgICAgICBlYWNoIEdzdEJ1ZmZlciB0byBi
ZSByZW5kZXJlZCB2aWEgdGhlIFRleHR1cmVNYXBwZXIuIEluIHRoaXMKKyAgICAgICAgc2NlbmFy
aW8gYSBHUFUtR1BVIHRleHR1cmUgY29weSB3aWxsIGJlIHBlcmZvcm1lZC4gRm9yIHRoaXMgdG8g
YmUKKyAgICAgICAgcG9zc2libGUgdGhlIEdMIGNvbnRleHQgdXNlZCB3aXRoaW4gV2ViS2l0IG5l
ZWRzIHRvIGJlIHNoYXJlZCB3aXRoCisgICAgICAgIHRoZSBHTCBjb250ZXh0IHVzZWQgYnkgR3N0
R0wuIEZvciBub3cgd2Ugc3VwcG9ydCBvbmx5IHRoZSBHTFgvWDExCisgICAgICAgIHNoYXJpbmcg
Y29udGV4dC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIG1lZGlhIHRlc3RzIHdp
bGwgY292ZXIgdGhpcyBjaGFuZ2Ugb25jZSB0aGUKKyAgICAgICAgYnVpbGRib3RzIGhhdmUgR1N0
cmVhbWVyID49IDEuNS4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBVc2UgR3N0R0wg
bGlicmFyeSBmb3IgdGhlIGJ1aWxkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOiBEbyBh
CisgICAgICAgIEdQVS1HUFUgdGV4dHVyZSBpZiB0aGUgYnVmZmVyIGFscmVhZHkgaGFzIGEgR0wg
dGV4dHVyZSBhdmFpbGFibGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6CisgICAgICAgIChfV2ViS2l0VmlkZW9TaW5rUHJpdmF0
ZTo6X1dlYktpdFZpZGVvU2lua1ByaXZhdGUpOiBVc2UgYSBtdXRleAorICAgICAgICBhbmQgY29u
ZGl0aW9uIHNvIGFzIHRvIGdldCB0aGUgV2ViS2l0IEdMIGNvbnRleHQgZnJvbSB0aGUgbWFpbiB0
aHJlYWQuCisgICAgICAgIChfV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZTo6fl9XZWJLaXRWaWRlb1Np
bmtQcml2YXRlKToKKyAgICAgICAgKHdyYXBHTENvbnRleHRDYWxsYmFjayk6IFdyYXAgdGhlIFdl
YktpdCBHTCBjb250ZXh0IGluIGEgR3N0R0wgY29udGV4dC4KKyAgICAgICAgKHdlYmtpdFZpZGVv
U2lua1N0b3ApOiBGcmVlIGJ1ZmZlciBwb29sIGFuZCBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4KKyAg
ICAgICAgKHdlYmtpdFZpZGVvU2lua1NldENhcHMpOiBDcmVhdGUgdGhlIEdzdEdMVXBsb2FkIHRo
YXQgd2lsbCB0YWtlCisgICAgICAgIGNhcmUgb2YgdXBkYXRpbmcgdGhlIGJ1ZmZlcidzIHRleHR1
cmUgYW5kIHVwZGF0ZSBjYXBzIGFjY29yZGluZ2x5LgorICAgICAgICAod2Via2l0VmlkZW9TaW5r
UHJlcGFyZSk6IFVwZGF0ZSB0aGUgYnVmZmVyJ3MgdGV4dHVyZSBiZWZvcmUgcmVuZGVyaW5nLgor
ICAgICAgICAod2Via2l0VmlkZW9TaW5rUHJvcG9zZUFsbG9jYXRpb24pOiBQcmVwYXJlIGEgYnVm
ZmVyIHBvb2wsIHNldCB0aGUKKyAgICAgICAgR0wgY29udGV4dCB1cCBhbmQgdXBkYXRlIHRoZSBt
ZXRhIGluZm9ybWF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIHNpbmsuCisgICAgICAgICh3ZWJraXRW
aWRlb1NpbmtTZXRDb250ZXh0KTogUGFzcy10aHJvdWdoIHRoZSBjb250ZXh0IHRvIEdzdEdMLgor
ICAgICAgICAod2Via2l0VmlkZW9TaW5rUXVlcnkpOiBCYXNpYyBzdXBwb3J0IGZvciBjb250ZXh0
IHF1ZXJpZXMuCisgICAgICAgICh3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KToKKwogMjAx
NC0xMi0wOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dTdHJlYW1lcl0gQXVkaW9Tb3VyY2VQcm92aWRlciBzdXBwb3J0IGluIHRoZSBNZWRpYVBs
YXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwMjU2YTJlLi4yNWVjNjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzUyLDYgKzM1MiwxNiBAQCBpZiAoRU5BQkxFX1ZJ
REVPKQogICAgICAgICAgICAgJHtHU1RSRUFNRVJfTVBFR1RTX0xJQlJBUklFU30KICAgICAgICAg
KQogICAgIGVuZGlmICgpCisKKyAgICBpZiAoVVNFX0dTVFJFQU1FUl9HTCkKKyAgICAgICAgbGlz
dChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICAgICAke0dTVFJF
QU1FUl9HTF9JTkNMVURFX0RJUlN9CisgICAgICAgICkKKworICAgICAgICBsaXN0KEFQUEVORCBX
ZWJDb3JlX0xJQlJBUklFUworICAgICAgICAgICAgJHtHU1RSRUFNRVJfR0xfTElCUkFSSUVTfQor
ICAgICAgICApCisgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKIGlmIChFTkFCTEVfV0VCX0FVRElP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCmluZGV4IDQ0ZGU3NTYuLmMxYjk3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTQ0LDYgKzQ0LDEyIEBACiAjaW5j
bHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZvbHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2
aWRlb21ldGEuaD4KIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisjZGVmaW5lIEdTVF9VU0VfVU5T
VEFCTEVfQVBJCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsbWVtb3J5Lmg+CisjdW5kZWYgR1NUX1VT
RV9VTlNUQUJMRV9BUEkKKyNlbmRpZgorCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkg
JiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgog
I2VuZGlmCkBAIC0yOTUsNiArMzAxLDI5IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlCiAgICAg
SW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwg
R1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8pKTsKICAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6
ZSwgR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gQml0bWFwVGV4dHVyZTo6
U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAgICAgR3N0QnVmZmVyKiBi
dWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1wbGUpOworICAgIGNvbnN0IEJpdG1h
cFRleHR1cmVHTCogdGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdM
Kj4odGV4dHVyZS5nZXQoKSk7CisgICAgdWludDMyX3QgdGV4dHVyZUlEID0gdGV4dHVyZUdMLT5p
ZCgpOworCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBHc3RNZW1vcnkqIGJ1ZmZlck1lbW9y
eTsKKyAgICBpZiAoZ3N0X2J1ZmZlcl9uX21lbW9yeShidWZmZXIpID49IDEpIHsKKyAgICAgICAg
aWYgKChidWZmZXJNZW1vcnkgPSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5KGJ1ZmZlciwgMCkpICYm
IGdzdF9pc19nbF9tZW1vcnkoYnVmZmVyTWVtb3J5KSkgeworICAgICAgICAgICAgR3N0R0xNZW1v
cnkqIGdsTWVtb3J5ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RHTE1lbW9yeSo+KGJ1ZmZlck1lbW9y
eSk7CisgICAgICAgICAgICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUgPSBnc3Rf
Z2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0KGdsTWVtb3J5LT5jb250ZXh0LCBHU1RfVklERU9f
SU5GT19GT1JNQVQoJnZpZGVvSW5mbyksIDApOworICAgICAgICAgICAgR3N0TWFwSW5mbyBtYXBJ
bmZvOworCisgICAgICAgICAgICBpZiAoIWdzdF9tZW1vcnlfbWFwKGJ1ZmZlck1lbW9yeSwgJm1h
cEluZm8sIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dM
KSkpIHsKKyAgICAgICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IoZ2xNZW1vcnkt
PmNvbnRleHQsICJGYWlsZWQgdG8gbWFwIGludGVybWVkaWF0ZSBtZW1vcnkiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdib29s
ZWFuIGNvcGllZCA9IGdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmUoZ2xNZW1vcnksIHRl
eHR1cmVJRCwgdGV4dHVyZVR5cGUsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgR1NUX1ZJ
REVPX0lORk9fUExBTkVfU1RSSURFKCZ2aWRlb0luZm8sIDApLCB0cnVlIC8qIHJlc3BlY2lmeSAq
Lyk7CisgICAgICAgICAgICBnc3RfbWVtb3J5X3VubWFwKGJ1ZmZlck1lbW9yeSwgJm1hcEluZm8p
OworICAgICAgICAgICAgaWYgKGNvcGllZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVy
ZTsKKyAgICAgICAgICAgIFdBUk5fTUVESUFfTUVTU0FHRSgiVGV4dHVyZSBjb3B5IGZhaWxlZCwg
dHJ5aW5nIGZhbGxiYWNrIHNsb3cgcGF0aC4iKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgog
CiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKICAgICBHc3RWaWRlb0dMVGV4dHVyZVVw
bG9hZE1ldGEqIG1ldGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCmluZGV4IDI1
NWU3NjAuLjY3MjI3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCkBAIC0z
NSw5ICszNSwzMiBAQAogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAj
aW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgorI2luY2x1ZGUgPGdzdC92aWRlby9n
c3R2aWRlb3Bvb2wuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR011dGV4TG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1RocmVhZFNhZmVN
YWluTG9vcFNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KKwor
I2lmIFVTRShHU1RSRUFNRVJfR0wpCisjZGVmaW5lIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisjaW5j
bHVkZSA8Z3N0L2dsL2dzdGdsY29udGV4dC5oPgorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGRpc3Bs
YXkuaD4KKyN1bmRlZiBHU1RfVVNFX1VOU1RBQkxFX0FQSQorCisjaWYgR1NUX0dMX0hBVkVfUExB
VEZPUk1fRUdMCisjaW5jbHVkZSA8Z3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5oPgorI2Vu
ZGlmCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsdXRpbHMuaD4KKworI2lmIFBMQVRGT1JNKFgxMSkK
KyNpbmNsdWRlIDxnc3QvZ2wveDExL2dzdGdsZGlzcGxheV94MTEuaD4KKyNlbmRpZgorCisjaW5j
bHVkZSAiR0xDb250ZXh0LmgiCisjaWYgVVNFKEdMWCkKKyNpbmNsdWRlICJHTENvbnRleHRHTFgu
aCIKKyNlbmRpZgorI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC00Nyw3ICs3MCwxOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
ICNlbHNlCiAjZGVmaW5lIEdTVF9DQVBTX0ZPUk1BVCAieyB4UkdCLCBBUkdCIH0iCiAjZW5kaWYK
LSNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxLCAwKQorCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkK
KworI2lmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VHTAorI2RlZmluZSBFR0xfQ0FQUyBHU1RfVklE
RU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfRUdMX0lN
QUdFLCBHU1RfQ0FQU19GT1JNQVQpICI7ICIKKyNlbHNlCisjZGVmaW5lIEVHTF9DQVBTCisjZW5k
aWYKKworI2RlZmluZSBHU1RfRkVBVFVSRURfQ0FQUyBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhf
RkVBVFVSRVMoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBHU1RfQ0FQU19GT1JN
QVQpICI7ICIgRUdMX0NBUFMgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKEdTVF9D
QVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSwgR1NUX0NB
UFNfRk9STUFUKSAiOyIKKworI2VsaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKICNkZWZp
bmUgR1NUX0ZFQVRVUkVEX0NBUFMgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKEdT
VF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSwgR1NU
X0NBUFNfRk9STUFUKSAiOyIKICNlbHNlCiAjZGVmaW5lIEdTVF9GRUFUVVJFRF9DQVBTCkBAIC03
Myw2ICsxMDcsMTAgQEAgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICB7CiAg
ICAgICAgIGdfbXV0ZXhfaW5pdCgmc2FtcGxlTXV0ZXgpOwogICAgICAgICBnX2NvbmRfaW5pdCgm
ZGF0YUNvbmRpdGlvbik7CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICAgICAgZ19tdXRleF9p
bml0KCZjb250ZXh0TXV0ZXgpOworICAgICAgICBnX2NvbmRfaW5pdCgmY29udGV4dENvbmRpdGlv
bik7CisjZW5kaWYKICAgICAgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7CiAgICAgfQog
CkBAIC04MCw2ICsxMTgsMTAgQEAgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAg
ICB7CiAgICAgICAgIGdfbXV0ZXhfY2xlYXIoJnNhbXBsZU11dGV4KTsKICAgICAgICAgZ19jb25k
X2NsZWFyKCZkYXRhQ29uZGl0aW9uKTsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgICAgICBn
X211dGV4X2NsZWFyKCZjb250ZXh0TXV0ZXgpOworICAgICAgICBnX2NvbmRfY2xlYXIoJmNvbnRl
eHRDb25kaXRpb24pOworI2VuZGlmCiAgICAgfQogCiAgICAgR3N0U2FtcGxlKiBzYW1wbGU7CkBA
IC0xMDAsMTYgKzE0Miw3MCBAQCBzdHJ1Y3QgX1dlYktpdFZpZGVvU2lua1ByaXZhdGUgewogICAg
IC8vCiAgICAgLy8gUHJvdGVjdGVkIGJ5IHRoZSBzYW1wbGUgbXV0ZXgKICAgICBib29sIHVubG9j
a2VkOworCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBHc3RDYXBzKiBnbENhcHM7CisgICAg
R3N0QnVmZmVyUG9vbCogcG9vbDsKKyAgICBHc3RHTERpc3BsYXkqIGRpc3BsYXk7CisgICAgR3N0
R0xDb250ZXh0KiBjb250ZXh0OworICAgIEdzdEdMQ29udGV4dCogb3RoZXJDb250ZXh0OworICAg
IEdNdXRleCBjb250ZXh0TXV0ZXg7CisgICAgR0NvbmQgY29udGV4dENvbmRpdGlvbjsKKworICAg
IEdzdEdMVXBsb2FkKiB1cGxvYWQ7CisgICAgR3N0QnVmZmVyKiBuZXh0QnVmZmVyOworI2VuZGlm
CiB9OwogCiAjZGVmaW5lIHdlYmtpdF92aWRlb19zaW5rX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xh
c3MKIEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdFZpZGVvU2luaywgd2Via2l0X3ZpZGVv
X3NpbmssIEdTVF9UWVBFX1ZJREVPX1NJTkssIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtp
dFZpZGVvU2lua0RlYnVnLCAid2Via2l0c2luayIsIDAsICJ3ZWJraXQgdmlkZW8gc2luayIpKTsK
IAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCitnYm9vbGVhbiB3cmFwR0xDb250ZXh0Q2FsbGJhY2so
Z3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgV2ViS2l0VmlkZW9TaW5rKiBzaW5rID0gcmVpbnRl
cnByZXRfY2FzdDxXZWJLaXRWaWRlb1NpbmsqPih1c2VyRGF0YSk7CisgICAgV2ViS2l0VmlkZW9T
aW5rUHJpdmF0ZSogcHJpdiA9IHNpbmstPnByaXY7CisKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4
PiBsb2NrKHByaXYtPmNvbnRleHRNdXRleCk7CisKKyAgICBHRXJyb3IqIGVycm9yID0gbnVsbHB0
cjsKKworICAgIGlmICghcHJpdi0+ZGlzcGxheSkKKyAgICAgICAgcHJpdi0+ZGlzcGxheSA9IGdz
dF9nbF9kaXNwbGF5X25ldygpOworCisgICAgaWYgKCFwcml2LT5vdGhlckNvbnRleHQpIHsKKyAg
ICAgICAgR0xDb250ZXh0KiB3ZWJraXRDb250ZXh0ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4
dCgpOworI2lmIFBMQVRGT1JNKFgxMSkKKyAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IEdMQ29u
dGV4dDo6c2hhcmVkWDExRGlzcGxheSgpOworICAgICAgICBHTFhDb250ZXh0KiBnbHhTaGFyaW5n
Q29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xYQ29udGV4dCo+KHdlYmtpdENvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpKTsKKyAgICAgICAgR3N0R0xEaXNwbGF5WDExKiBnc3RHTERpc3BsYXkg
PSBnc3RfZ2xfZGlzcGxheV94MTFfbmV3X3dpdGhfZGlzcGxheShkaXNwbGF5KTsKKyAgICAgICAg
R3N0R0xQbGF0Zm9ybSBwbGF0Zm9ybSA9IEdTVF9HTF9QTEFURk9STV9HTFg7CisgICAgICAgIEdz
dEdMQVBJIGdsQXBpID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfYXBpKG51bGxwdHIs
IG51bGxwdHIpOworICAgICAgICBpZiAoZ2x4U2hhcmluZ0NvbnRleHQpCisgICAgICAgICAgICBw
cml2LT5vdGhlckNvbnRleHQgPSBnc3RfZ2xfY29udGV4dF9uZXdfd3JhcHBlZChHU1RfR0xfRElT
UExBWShnc3RHTERpc3BsYXkpLCByZWludGVycHJldF9jYXN0PGd1aW50cHRyPihnbHhTaGFyaW5n
Q29udGV4dCksIHBsYXRmb3JtLCBnbEFwaSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoIXBy
aXYtPmNvbnRleHQpIHsKKyAgICAgICAgcHJpdi0+Y29udGV4dCA9IGdzdF9nbF9jb250ZXh0X25l
dyhwcml2LT5kaXNwbGF5KTsKKyAgICAgICAgaWYgKCFnc3RfZ2xfY29udGV4dF9jcmVhdGUocHJp
di0+Y29udGV4dCwgcHJpdi0+b3RoZXJDb250ZXh0LCAmZXJyb3IpKSB7CisgICAgICAgICAgICBH
U1RfRUxFTUVOVF9FUlJPUihzaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwgZXJyb3It
Pm1lc3NhZ2UpLCAobnVsbHB0cikpOworICAgICAgICAgICAgZ3N0X29iamVjdF91bnJlZihwcml2
LT5jb250ZXh0KTsKKyAgICAgICAgICAgIHByaXYtPmNvbnRleHQgPSBudWxscHRyOworICAgICAg
ICAgICAgZ19jb25kX3NpZ25hbCgmcHJpdi0+Y29udGV4dENvbmRpdGlvbik7CisgICAgICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnX2NvbmRfc2lnbmFsKCZw
cml2LT5jb250ZXh0Q29uZGl0aW9uKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisjZW5kaWYKIAog
c3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfaW5pdChXZWJLaXRWaWRlb1NpbmsqIHNpbmsp
CiB7CiAgICAgc2luay0+cHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzaW5rLCBX
RUJLSVRfVFlQRV9WSURFT19TSU5LLCBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKTsKLSAgICBnX29i
amVjdF9zZXQoR1NUX0JBU0VfU0lOSyhzaW5rKSwgImVuYWJsZS1sYXN0LXNhbXBsZSIsIEZBTFNF
LCBOVUxMKTsKKyAgICBnX29iamVjdF9zZXQoR1NUX0JBU0VfU0lOSyhzaW5rKSwgImVuYWJsZS1s
YXN0LXNhbXBsZSIsIEZBTFNFLCBudWxscHRyKTsKICAgICBuZXcgKHNpbmstPnByaXYpIFdlYktp
dFZpZGVvU2lua1ByaXZhdGUoKTsKIH0KIApAQCAtMTE5LDcgKzIxNSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqIHNpbmspCiAK
ICAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPnNhbXBsZU11dGV4KTsKICAgICBH
c3RTYW1wbGUqIHNhbXBsZSA9IHByaXYtPnNhbXBsZTsKLSAgICBwcml2LT5zYW1wbGUgPSAwOwor
ICAgIHByaXYtPnNhbXBsZSA9IG51bGxwdHI7CiAKICAgICBpZiAoIXNhbXBsZSB8fCBwcml2LT51
bmxvY2tlZCB8fCBVTkxJS0VMWSghR1NUX0lTX1NBTVBMRShzYW1wbGUpKSkgewogICAgICAgICBn
X2NvbmRfc2lnbmFsKCZwcml2LT5kYXRhQ29uZGl0aW9uKTsKQEAgLTIxOSw4ICszMTUsMTEgQEAg
c3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBi
YXNlU2luaywgR3N0QnVmZmVyKiBidWYKICAgICAvLyBsb3dlciBwcmlvcml0eSBzb3VyY2VzLgog
ICAgIC8vIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTYx
MDgzMC4KICAgICBnc3Rfb2JqZWN0X3JlZihzaW5rKTsKLSAgICBwcml2LT50aW1lb3V0U291cmNl
LnNjaGVkdWxlKCJbV2ViS2l0XSB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2siLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4oc3RkOjpiaW5kKHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFj
aywgc2luaykpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCi0gICAgICAgIFtzaW5rXSB7IGdzdF9vYmpl
Y3RfdW5yZWYoc2luayk7IH0pOworICAgIHByaXYtPnRpbWVvdXRTb3VyY2Uuc2NoZWR1bGUoIltX
ZWJLaXRdIHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjayIsCisgICAgICAgIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPihzdGQ6OmJpbmQod2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrLCBz
aW5rKSksCisgICAgICAgIEdfUFJJT1JJVFlfREVGQVVMVCwgW3NpbmtdIHsKKyAgICAgICAgICAg
IGdzdF9vYmplY3RfdW5yZWYoc2luayk7CisgICAgICAgIH0pOwogCiAgICAgZ19jb25kX3dhaXQo
JnByaXYtPmRhdGFDb25kaXRpb24sICZwcml2LT5zYW1wbGVNdXRleCk7CiAgICAgcmV0dXJuIEdT
VF9GTE9XX09LOwpAQCAtMjM4LDcgKzMzNyw3IEBAIHN0YXRpYyB2b2lkIHVubG9ja1NhbXBsZU11
dGV4KFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYpCiAKICAgICBpZiAocHJpdi0+c2FtcGxl
KSB7CiAgICAgICAgIGdzdF9zYW1wbGVfdW5yZWYocHJpdi0+c2FtcGxlKTsKLSAgICAgICAgcHJp
di0+c2FtcGxlID0gMDsKKyAgICAgICAgcHJpdi0+c2FtcGxlID0gbnVsbHB0cjsKICAgICB9CiAK
ICAgICBwcml2LT51bmxvY2tlZCA9IHRydWU7CkBAIC0yNjksMTQgKzM2OCwzMCBAQCBzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rVW5sb2NrU3RvcChHc3RCYXNlU2luayogYmFzZVNpbmsp
CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtTdG9wKEdzdEJhc2VTaW5rKiBiYXNl
U2luaykKIHsKLSAgICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gV0VCS0lUX1ZJREVP
X1NJTksoYmFzZVNpbmspLT5wcml2OworICAgIFdlYktpdFZpZGVvU2luayogc2luayA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPFdlYktpdFZpZGVvU2luayo+KGJhc2VTaW5rKTsKKyAgICBXZWJLaXRW
aWRlb1NpbmtQcml2YXRlKiBwcml2ID0gc2luay0+cHJpdjsKIAogICAgIHVubG9ja1NhbXBsZU11
dGV4KHByaXYpOwogCiAgICAgaWYgKHByaXYtPmN1cnJlbnRDYXBzKSB7CiAgICAgICAgIGdzdF9j
YXBzX3VucmVmKHByaXYtPmN1cnJlbnRDYXBzKTsKLSAgICAgICAgcHJpdi0+Y3VycmVudENhcHMg
PSAwOworICAgICAgICBwcml2LT5jdXJyZW50Q2FwcyA9IG51bGxwdHI7CisgICAgfQorCisjaWYg
VVNFKEdTVFJFQU1FUl9HTCkKKyAgICBHU1RfT0JKRUNUX0xPQ0soc2luayk7CisgICAgaWYgKHBy
aXYtPnBvb2wpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocHJpdi0+cG9vbCk7CisgICAgcHJp
di0+cG9vbCA9IG51bGxwdHI7CisgICAgR1NUX09CSkVDVF9VTkxPQ0soc2luayk7CisKKyAgICBn
c3RfYnVmZmVyX3JlcGxhY2UoJnByaXYtPm5leHRCdWZmZXIsIG51bGxwdHIpOworCisgICAgaWYg
KHByaXYtPnVwbG9hZCkgeworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYtPnVwbG9hZCk7
CisgICAgICAgIHByaXYtPnVwbG9hZCA9IG51bGxwdHI7CiAgICAgfQorI2VuZGlmCiAKICAgICBy
ZXR1cm4gVFJVRTsKIH0KQEAgLTMwNiwxMyArNDIxLDcwIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRWaWRlb1NpbmtTZXRDYXBzKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0Q2FwcyogY2FwcykK
IAogICAgIHByaXYtPmluZm8gPSB2aWRlb0luZm87CiAgICAgZ3N0X2NhcHNfcmVwbGFjZSgmcHJp
di0+Y3VycmVudENhcHMsIGNhcHMpOworCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBHTXV0
ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPmNvbnRleHRNdXRleCk7CisKKyAgICBHVGhyZWFk
U2FmZU1haW5Mb29wU291cmNlIHRpbWVvdXRTb3VyY2U7CisgICAgZ3N0X29iamVjdF9yZWYoc2lu
ayk7CisgICAgdGltZW91dFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF1bZ3N0XSBHTCBjb250ZXh0
IHdyYXAiLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oc3RkOjpiaW5kKHdyYXBHTENvbnRleHRDYWxs
YmFjaywgc2luaykpLCBHX1BSSU9SSVRZX0RFRkFVTFQsIFtzaW5rXSB7CisgICAgICAgIGdzdF9v
YmplY3RfdW5yZWYoc2luayk7CisgICAgfSk7CisKKyAgICBnX2NvbmRfd2FpdCgmc2luay0+cHJp
di0+Y29udGV4dENvbmRpdGlvbiwgJnNpbmstPnByaXYtPmNvbnRleHRNdXRleCk7CisKKyAgICBp
ZiAocHJpdi0+dXBsb2FkKQorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYtPnVwbG9hZCk7
CisgICAgcHJpdi0+dXBsb2FkID0gZ3N0X2dsX3VwbG9hZF9uZXcocHJpdi0+Y29udGV4dCk7CisK
KyAgICBHc3RDYXBzRmVhdHVyZXMqIGdsRmVhdHVyZXMgPSBnc3RfY2Fwc19mZWF0dXJlc19mcm9t
X3N0cmluZyhHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOworICAgIGlmIChwcml2
LT5nbENhcHMpCisgICAgICAgIGdzdF9jYXBzX3VucmVmKHByaXYtPmdsQ2Fwcyk7CisgICAgcHJp
di0+Z2xDYXBzID0gZ3N0X2NhcHNfY29weShjYXBzKTsKKyAgICBnc3RfY2Fwc19zZXRfZmVhdHVy
ZXMocHJpdi0+Z2xDYXBzLCAwLCBnbEZlYXR1cmVzKTsKKworICAgIGdzdF9nbF91cGxvYWRfc2V0
X2NhcHMocHJpdi0+dXBsb2FkLCBjYXBzLCBwcml2LT5nbENhcHMpOworI2VuZGlmCiAgICAgcmV0
dXJuIFRSVUU7CiB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorc3RhdGljIEdzdEZsb3dSZXR1
cm4gd2Via2l0VmlkZW9TaW5rUHJlcGFyZShHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZl
ciogYnVmZmVyKQoreworICAgIFdlYktpdFZpZGVvU2luayogc2luayA9IFdFQktJVF9WSURFT19T
SU5LKGJhc2VTaW5rKTsKKyAgICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gc2luay0+
cHJpdjsKKworICAgIEdzdEJ1ZmZlciogbmV4dEJ1ZmZlciA9IG51bGxwdHI7CisgICAgR3N0Vmlk
ZW9GcmFtZSBnbEZyYW1lOworICAgIEdzdFZpZGVvSW5mbyBnbEluZm87CisKKyAgICBpZiAoIWdz
dF9nbF91cGxvYWRfcGVyZm9ybV93aXRoX2J1ZmZlcihwcml2LT51cGxvYWQsIGJ1ZmZlciwgJm5l
eHRCdWZmZXIpKSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNpbmssIFJFU09VUkNFLCBO
T1RfRk9VTkQsICgiJXMiLCAiRmFpbGVkIHRvIHVwbG9hZCBidWZmZXIiKSwgKG51bGxwdHIpKTsK
KyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICAgIH0KKworICAgIGdzdF92aWRlb19p
bmZvX2Zyb21fY2FwcygmZ2xJbmZvLCBwcml2LT5nbENhcHMpOworCisgICAgaWYgKCFnc3Rfdmlk
ZW9fZnJhbWVfbWFwKCZnbEZyYW1lLCAmZ2xJbmZvLCBuZXh0QnVmZmVyLCBzdGF0aWNfY2FzdDxH
c3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKSB7CisgICAgICAgIGdzdF9i
dWZmZXJfdW5yZWYobmV4dEJ1ZmZlcik7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNpbmss
IFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLCAiRmFpbGVkIHRvIHVwbG9hZCBidWZmZXIiKSwg
KG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICAgIH0KKworICAg
IGdzdF9idWZmZXJfcmVwbGFjZSgmcHJpdi0+bmV4dEJ1ZmZlciwgbmV4dEJ1ZmZlcik7CisgICAg
Z3N0X2J1ZmZlcl91bnJlZihuZXh0QnVmZmVyKTsKKworICAgIGdzdF92aWRlb19mcmFtZV91bm1h
cCgmZ2xGcmFtZSk7CisgICAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorI2VuZGlmCisKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbihHc3RCYXNlU2luayog
YmFzZVNpbmssIEdzdFF1ZXJ5KiBxdWVyeSkKIHsKICAgICBHc3RDYXBzKiBjYXBzOwotICAgIGdz
dF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uKHF1ZXJ5LCAmY2FwcywgMCk7CisgICAgZ2Jvb2xlYW4g
bmVlZFBvb2w7CisKKyAgICBnc3RfcXVlcnlfcGFyc2VfYWxsb2NhdGlvbihxdWVyeSwgJmNhcHMs
ICZuZWVkUG9vbCk7CiAgICAgaWYgKCFjYXBzKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKQEAg
LTMyMCwxNCArNDkyLDEzMyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rUHJvcG9z
ZUFsbG9jYXRpb24oR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RRdWVyeQogICAgIGlmICghZ3N0
X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZzaW5rLT5wcml2LT5pbmZvLCBjYXBzKSkKICAgICAgICAg
cmV0dXJuIEZBTFNFOwogCisgICAgR3N0U3RydWN0dXJlKiBnbENvbnRleHQgPSBudWxscHRyOwor
I2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAicHJvcG9z
ZSBhbGxvY2F0aW9uIik7CisgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhzaW5rLT5wcml2
LT5jb250ZXh0TXV0ZXgpOworCisgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSB0aW1lb3V0
U291cmNlOworICAgIGdzdF9vYmplY3RfcmVmKHNpbmspOworICAgIHRpbWVvdXRTb3VyY2Uuc2No
ZWR1bGUoIltXZWJLaXRdW2dzdF0gR0wgY29udGV4dCB3cmFwIiwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+KHN0ZDo6YmluZCh3cmFwR0xDb250ZXh0Q2FsbGJhY2ssIHNpbmspKSwgR19QUklPUklUWV9E
RUZBVUxULCBbc2lua10geworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHNpbmspOworICAgIH0p
OworCisgICAgZ19jb25kX3dhaXQoJnNpbmstPnByaXYtPmNvbnRleHRDb25kaXRpb24sICZzaW5r
LT5wcml2LT5jb250ZXh0TXV0ZXgpOworCisgICAgR3N0QnVmZmVyUG9vbCogcG9vbDsKKyAgICBH
c3RBbGxvY2F0b3IqIGFsbG9jYXRvciA9IG51bGxwdHI7CisgICAgR3N0QWxsb2NhdGlvblBhcmFt
cyBwYXJhbXM7CisgICAgR3N0U3RydWN0dXJlKiBjb25maWc7CisgICAgZ3VpbnQgc2l6ZTsKKwor
ICAgIGlmICgocG9vbCA9IHNpbmstPnByaXYtPnBvb2wpKQorICAgICAgICBnc3Rfb2JqZWN0X3Jl
Zihwb29sKTsKKworICAgIGlmIChwb29sKSB7CisgICAgICAgIEdzdENhcHMqIHBjYXBzOworCisg
ICAgICAgIC8vIFdlIGhhZCBhIHBvb2wsIGNoZWNrIGl0cyBjYXBzLgorICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHNpbmssICJjaGVjayBleGlzdGluZyBwb29sIGNhcHMiKTsKKyAgICAgICAgY29u
ZmlnID0gZ3N0X2J1ZmZlcl9wb29sX2dldF9jb25maWcocG9vbCk7CisgICAgICAgIGdzdF9idWZm
ZXJfcG9vbF9jb25maWdfZ2V0X3BhcmFtcyhjb25maWcsICZwY2FwcywgJnNpemUsIDAsIDApOwor
CisgICAgICAgIGlmICghZ3N0X2NhcHNfaXNfZXF1YWwoY2FwcywgcGNhcHMpKSB7CisgICAgICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHNpbmssICJwb29sIGhhcyBkaWZmZXJlbnQgY2FwcyIpOwor
ICAgICAgICAgICAgLy8gRGlmZmVyZW50IGNhcHMsIHdlIGNhbid0IHVzZSB0aGlzIHBvb2wuCisg
ICAgICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHBvb2wpOworICAgICAgICAgICAgcG9vbCA9IG51
bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlKGNvbmZpZyk7Cisg
ICAgfQorCisgICAgaWYgKG5lZWRQb29sICYmICFwb29sKSB7CisgICAgICAgIEdzdFZpZGVvSW5m
byBpbmZvOworCisgICAgICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBj
YXBzKSkgeworICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAiaW52YWxpZCBjYXBz
IHNwZWNpZmllZCIpOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisKKyAg
ICAgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAiY3JlYXRlIG5ldyBwb29sIHdpdGggY2FwcyAl
IiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisgICAgICAgIHBvb2wgPSBnc3RfZ2xfYnVmZmVyX3Bv
b2xfbmV3KHNpbmstPnByaXYtPmNvbnRleHQpOworCisgICAgICAgIC8vIFRoZSBub3JtYWwgc2l6
ZSBvZiBhIGZyYW1lLgorICAgICAgICBzaXplID0gaW5mby5zaXplOworCisgICAgICAgIGNvbmZp
ZyA9IGdzdF9idWZmZXJfcG9vbF9nZXRfY29uZmlnKHBvb2wpOworICAgICAgICBnc3RfYnVmZmVy
X3Bvb2xfY29uZmlnX3NldF9wYXJhbXMoY29uZmlnLCBjYXBzLCBzaXplLCAwLCAwKTsKKyAgICAg
ICAgaWYgKCFnc3RfYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyhwb29sLCBjb25maWcpKSB7CisgICAg
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNpbmssICJmYWlsZWQgc2V0dGluZyBjb25maWciKTsK
KyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChw
b29sKSB7CisgICAgICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wb29sKHF1ZXJ5LCBwb29s
LCBzaXplLCAyLCAwKTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZihwb29sKTsKKyAgICB9CisK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiBwbGF0Zm9ybShnc3RfZ2xfcGxhdGZvcm1fdG9fc3RyaW5n
KGdzdF9nbF9jb250ZXh0X2dldF9nbF9wbGF0Zm9ybShzaW5rLT5wcml2LT5jb250ZXh0KSkpOwor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGdsQXBpcyhnc3RfZ2xfYXBpX3RvX3N0cmluZyhnc3RfZ2xf
Y29udGV4dF9nZXRfZ2xfYXBpKHNpbmstPnByaXYtPmNvbnRleHQpKSk7CisgICAgZ3BvaW50ZXIg
aGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Z3BvaW50ZXI+KGdzdF9nbF9jb250ZXh0X2dl
dF9nbF9jb250ZXh0KHNpbmstPnByaXYtPmNvbnRleHQpKTsKKworICAgIGdsQ29udGV4dCA9IGdz
dF9zdHJ1Y3R1cmVfbmV3KCJHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEiLCAiZ3N0LmdsLkdz
dEdMQ29udGV4dCIsCisgICAgICAgIEdTVF9HTF9UWVBFX0NPTlRFWFQsIHNpbmstPnByaXYtPmNv
bnRleHQsICJnc3QuZ2wuY29udGV4dC5oYW5kbGUiLAorICAgICAgICBHX1RZUEVfUE9JTlRFUiwg
aGFuZGxlLCAiZ3N0LmdsLmNvbnRleHQudHlwZSIsIEdfVFlQRV9TVFJJTkcsIHBsYXRmb3JtLmdl
dCgpLAorICAgICAgICAiZ3N0LmdsLmNvbnRleHQuYXBpcyIsIEdfVFlQRV9TVFJJTkcsIGdsQXBp
cy5nZXQoKSwgbnVsbHB0cik7CisjZW5kaWYKKwogICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlv
bl9tZXRhKHF1ZXJ5LCBHU1RfVklERU9fTUVUQV9BUElfVFlQRSwgMCk7CiAgICAgZ3N0X3F1ZXJ5
X2FkZF9hbGxvY2F0aW9uX21ldGEocXVlcnksIEdTVF9WSURFT19DUk9QX01FVEFfQVBJX1RZUEUs
IDApOwogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApCi0gICAgZ3N0X3F1ZXJ5X2FkZF9h
bGxvY2F0aW9uX21ldGEocXVlcnksIEdTVF9WSURFT19HTF9URVhUVVJFX1VQTE9BRF9NRVRBX0FQ
SV9UWVBFLCAwKTsKKyAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fbWV0YShxdWVyeSwgR1NU
X1ZJREVPX0dMX1RFWFRVUkVfVVBMT0FEX01FVEFfQVBJX1RZUEUsIGdsQ29udGV4dCk7CisjZW5k
aWYKKworICAgIGlmIChnbENvbnRleHQpCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShnbENv
bnRleHQpOworCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBnc3RfYWxsb2NhdGlvbl9wYXJh
bXNfaW5pdCgmcGFyYW1zKTsKKyAgICBhbGxvY2F0b3IgPSBnc3RfYWxsb2NhdG9yX2ZpbmQoR1NU
X0dMX01FTU9SWV9BTExPQ0FUT1IpOworICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wYXJh
bShxdWVyeSwgYWxsb2NhdG9yLCAmcGFyYW1zKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKGFsbG9j
YXRvcik7CisjaWYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCisgICAgaWYgKGdzdF9nbF9jb250
ZXh0X2NoZWNrX2ZlYXR1cmUoc2luay0+cHJpdi0+Y29udGV4dCwgIkVHTF9LSFJfaW1hZ2VfYmFz
ZSIpKSB7CisgICAgICAgIGFsbG9jYXRvciA9IGdzdF9hbGxvY2F0b3JfZmluZChHU1RfRUdMX0lN
QUdFX01FTU9SWV9UWVBFKTsKKyAgICAgICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX3BhcmFt
KHF1ZXJ5LCBhbGxvY2F0b3IsICZwYXJhbXMpOworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKGFs
bG9jYXRvcik7CisgICAgfQorI2VuZGlmCiAjZW5kaWYKICAgICByZXR1cm4gVFJVRTsKIH0KIAor
I2lmIFVTRShHU1RSRUFNRVJfR0wpCitzdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtTZXRDb250
ZXh0KEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgV2Vi
S2l0VmlkZW9TaW5rKiBzaW5rID0gIFdFQktJVF9WSURFT19TSU5LKGVsZW1lbnQpOworICAgIGdz
dF9nbF9oYW5kbGVfc2V0X2NvbnRleHQoZWxlbWVudCwgY29udGV4dCwgJnNpbmstPnByaXYtPmRp
c3BsYXksICZzaW5rLT5wcml2LT5jb250ZXh0KTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtp
dFZpZGVvU2lua1F1ZXJ5KEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0UXVlcnkqIHF1ZXJ5KQor
eworICAgIFdlYktpdFZpZGVvU2luayogc2luayA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5r
KTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBGQUxTRTsKKworICAgIHN3aXRjaCAoR1NUX1FVRVJZ
X1RZUEUocXVlcnkpKSB7CisgICAgY2FzZSBHU1RfUVVFUllfQ09OVEVYVDogeworICAgICAgICBy
ZXN1bHQgPSBnc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnkocmVpbnRlcnByZXRfY2FzdDxHc3RF
bGVtZW50Kj4oc2luayksIHF1ZXJ5LCAmc2luay0+cHJpdi0+ZGlzcGxheSwgJnNpbmstPnByaXYt
Pm90aGVyQ29udGV4dCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXN1bHQgPSBHU1RfQkFTRV9TSU5LX0NMQVNTKHBhcmVudF9jbGFzcyktPnF1ZXJ5KGJh
c2VTaW5rLCBxdWVyeSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5p
dChXZWJLaXRWaWRlb1NpbmtDbGFzcyoga2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnb2Jq
ZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CkBAIC0zNDksNiArNjQwLDExIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xh
c3MqIGtsYXNzKQogICAgIGJhc2VTaW5rQ2xhc3MtPnN0YXJ0ID0gd2Via2l0VmlkZW9TaW5rU3Rh
cnQ7CiAgICAgYmFzZVNpbmtDbGFzcy0+c2V0X2NhcHMgPSB3ZWJraXRWaWRlb1NpbmtTZXRDYXBz
OwogICAgIGJhc2VTaW5rQ2xhc3MtPnByb3Bvc2VfYWxsb2NhdGlvbiA9IHdlYmtpdFZpZGVvU2lu
a1Byb3Bvc2VBbGxvY2F0aW9uOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgYmFzZVNpbmtD
bGFzcy0+cHJlcGFyZSA9IHdlYmtpdFZpZGVvU2lua1ByZXBhcmU7CisgICAgYmFzZVNpbmtDbGFz
cy0+cXVlcnkgPSB3ZWJraXRWaWRlb1NpbmtRdWVyeTsKKyAgICBlbGVtZW50Q2xhc3MtPnNldF9j
b250ZXh0ID0gd2Via2l0VmlkZW9TaW5rU2V0Q29udGV4dDsKKyNlbmRpZgogCiAgICAgd2Via2l0
VmlkZW9TaW5rU2lnbmFsc1tSRVBBSU5UX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoInJlcGFp
bnQtcmVxdWVzdGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlIGIvU291cmNlL2NtYWtl
L0ZpbmRHU3RyZWFtZXIuY21ha2UKaW5kZXggNzQ0NDc2MC4uYWNkMTI0MyAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRH
U3RyZWFtZXIuY21ha2UKQEAgLTE5LDYgKzE5LDcgQEAKICMgIGdzdHJlYW1lci1hcHA6ICAgICAg
ICBHU1RSRUFNRVJfQVBQX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0FQUF9MSUJSQVJJRVMK
ICMgIGdzdHJlYW1lci1hdWRpbzogICAgICBHU1RSRUFNRVJfQVVESU9fSU5DTFVERV9ESVJTIGFu
ZCBHU1RSRUFNRVJfQVVESU9fTElCUkFSSUVTCiAjICBnc3RyZWFtZXItZmZ0OiAgICAgICAgR1NU
UkVBTUVSX0ZGVF9JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9GRlRfTElCUkFSSUVTCisjICBn
c3RyZWFtZXItZ2w6ICAgICAgICAgR1NUUkVBTUVSX0dMX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVB
TUVSX0dMX0xJQlJBUklFUwogIyAgZ3N0cmVhbWVyLW1wZWd0czogICAgIEdTVFJFQU1FUl9NUEVH
VFNfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfTVBFR1RTX0xJQlJBUklFUwogIyAgZ3N0cmVh
bWVyLXBidXRpbHM6ICAgIEdTVFJFQU1FUl9QQlVUSUxTX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVB
TUVSX1BCVVRJTFNfTElCUkFSSUVTCiAjICBnc3RyZWFtZXItdGFnOiAgICAgICAgR1NUUkVBTUVS
X1RBR19JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9UQUdfTElCUkFSSUVTCkBAIC04NCw2ICs4
NSw3IEBAIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfQkFTRSBnc3RyZWFtZXIt
YmFzZS0xLjAgZ3N0YmFzZS0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVS
X0FQUCBnc3RyZWFtZXItYXBwLTEuMCBnc3RhcHAtMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9O
RU5UKEdTVFJFQU1FUl9BVURJTyBnc3RyZWFtZXItYXVkaW8tMS4wIGdzdGF1ZGlvLTEuMCkKIEZJ
TkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfRkZUIGdzdHJlYW1lci1mZnQtMS4wIGdz
dGZmdC0xLjApCitGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0dMIGdzdHJlYW1l
ci1nbC0xLjA+PTEuNS4wIGdzdGdsLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RS
RUFNRVJfTVBFR1RTIGdzdHJlYW1lci1tcGVndHMtMS4wPj0xLjQuMCBnc3RtcGVndHMtMS4wKQog
RklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9QQlVUSUxTIGdzdHJlYW1lci1wYnV0
aWxzLTEuMCBnc3RwYnV0aWxzLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFN
RVJfVEFHIGdzdHJlYW1lci10YWctMS4wIGdzdHRhZy0xLjApCkBAIC0xMTQsNiArMTE2LDggQEAg
bWFya19hc19hZHZhbmNlZCgKICAgICBHU1RSRUFNRVJfQkFTRV9MSUJSQVJJRVMKICAgICBHU1RS
RUFNRVJfRkZUX0lOQ0xVREVfRElSUwogICAgIEdTVFJFQU1FUl9GRlRfTElCUkFSSUVTCisgICAg
R1NUUkVBTUVSX0dMX0lOQ0xVREVfRElSUworICAgIEdTVFJFQU1FUl9HTF9MSUJSQVJJRVMKICAg
ICBHU1RSRUFNRVJfSU5DTFVERV9ESVJTCiAgICAgR1NUUkVBTUVSX0xJQlJBUklFUwogICAgIEdT
VFJFQU1FUl9NUEVHVFNfSU5DTFVERV9ESVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IDQ1NjI5
OWEuLjM4ZDk0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0yMjUsNyArMjI1LDcgQEAgaWYg
KEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgIHNldChHU1RSRUFNRVJfQ09N
UE9ORU5UUyBhcHAgcGJ1dGlscykKICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0dTVFJF
QU1FUikKICAgICBpZiAoRU5BQkxFX1ZJREVPKQotICAgICAgICBsaXN0KEFQUEVORCBHU1RSRUFN
RVJfQ09NUE9ORU5UUyB2aWRlbyBtcGVndHMgdGFnKQorICAgICAgICBsaXN0KEFQUEVORCBHU1RS
RUFNRVJfQ09NUE9ORU5UUyB2aWRlbyBtcGVndHMgdGFnIGdsKQogICAgIGVuZGlmICgpCiAKICAg
ICBpZiAoRU5BQkxFX1dFQl9BVURJTykKQEAgLTIzOSw2ICsyMzksMTEgQEAgaWYgKEVOQUJMRV9W
SURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZf
VVNFX0dTVFJFQU1FUl9NUEVHVFMpCiAgICAgICAgIHNldChVU0VfR1NUUkVBTUVSX01QRUdUUyBU
UlVFKQogICAgIGVuZGlmICgpCisKKyAgICBpZiAoUENfR1NUUkVBTUVSX0dMX0ZPVU5EKQorICAg
ICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0dTVFJFQU1FUl9HTCkKKyAgICAgICAgc2V0
KFVTRV9HU1RSRUFNRVJfR0wgVFJVRSkKKyAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAogaWYgKEVO
QUJMRV9XQVlMQU5EX1RBUkdFVCkKLS0gCjIuMS4z
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>243761</attachid>
            <date>2014-12-26 08:45:28 -0800</date>
            <delta_ts>2014-12-26 08:45:28 -0800</delta_ts>
            <desc>I420 rendering gone bad</desc>
            <filename>Screenshot from 2014-12-26 17:40:51.png</filename>
            <type>image/png</type>
            <size>29159</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAyIAAAKACAYAAABg7swPAAAABHNCSVQICAgIfAhkiAAAABl0RVh0
U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AACAASURBVHic7N11fBx1/vjx16xGNu5J403d
3d0Fh+PLHdxxHHb4IUcLhxzuDsUdDpdiBVqot9RdkjZJ21jjvj6/Pza7JGlkk4at/N5PHvugmd2Z
ec9nPjs77/l8PjMKDTIzM43btm270mq1XgT0AwIRQgghhBBCiONTC+zU6/XvDxo06JWMjAwLgAKw
dOnShOLi4m8zMjIG9urVi4CAgBMaqRBCCCGEEOL0UVNTw/79+8nMzNwaFRU1b+rUqXlKZmamcdOm
TevnzJkz0GQynegYhRBCCCGEEKepmpoavvvuu61Dhw4dpZ04ceI16enpf0tKSjrRcQkhhBBCCCFO
YwaDAYvFErtv374ijdVq/XOPHj1OdExCCCGEEEKI/w/07NkTm832Zx3Qx9/fH1VVT3RMQgghhBBC
iNNcQEAAqqr20wAyMEQIIYQQQgjhSyYdIK0hQgghhBBCCJ/SnOgAhBBCCCGEEP//kRYRIYQQQggh
hM9Ji4gQQgghhBDC56RFRAghhBBCCOFz0iIihBBCCCGE8DlJRIQQQgghhBA+J12zhBCnJb1ej0aj
wWq1NjnGuac7HA7sdrtnukajQa/XHzO9NUajEVVVsVqtLb5vMBhQFAWLxXLMOpxOJzabzavlNKfR
aNBqtSiKgqIoqKqK0+nE4XB41tsWm82G0+n0Or7GtFotgGddbXEvv6Vt0+l0nmU1Xn9Hy6L5593r
dGtcNvI7J4QQJx/diQ5ACCH+CA+/8DLrNm/jqbsX0i0uxjP9/mdfYuO2HUyfMJYrLrrAMz0zO4fb
H3qCCSOHc92lf2l3+WdcehUJsTE8fc/CFt//58J7yCss4pNFzwCgKArrt2zn0ZdeZfjA/tx61WUo
inLMcpyq6koyWlimTqdj2+69fP/LCrIPH6GquoaYyAh6Z6QzY+I4/I1Grl54T5tx33n91Qzs08vr
+Br7csnPmAICmDxmZLvl415+95RkHl5wsycRUBSFtz/5gi+X/AzgWb83Zdpc88+71+leT0xkBH16
ZPDns+cTbAr0aplCCCF+Z264WORnNHo1vaOkRUQIcVoaNqA/6zZvY8e+/STERgNgtdnYtmsPADv2
7AN+P/6t3bQVgEmjR3TomNjeZ9WGxOJwQSFPv/4WifGx/OuKSz3vDenXh4jwMM9y/nXvQ+QVFvHx
S083WY5Wq+WNjz5j8U/L0Gg0dE9JIjkhnqOlZSxZvorisnL+ecn/MX7EMM88G7btwGyxNJkWEhzU
JOb24mvsnU+/JCE2hkmjR3hdPlk5uezNOkiPtBQA6urN/PDryibrd2teFu1p7fPjRwzDbLGQX3SU
ZavXkl90lP/efJ3XMQshhACL1coN9zyAw+Hkxsv+St8e3QHYtT+Lp19/G61WwzP33IGxnZb4tkiL
iBDitDS4X28URWH7nn3MmjgOgG179mGz24mKCKewuISyikrCQoJRFIXVGzcTEhxE354ZgOuKursb
l6qqrXbZMhqNKIri6QLUUrelOrOZB59bhE6rY+F1V6PV/D48756brwfAbDbj5+fnme7+t91ux263
s2HbThb/tIzE+FgWXHsV8THRnjjLK6sAlUB/f08SAXDtnf8lr7CoyTSHw4HT6fQ6vuMVGBDA59//
yIJrr0RVVX74dSUWqxV/Pz/qzeYmn21cFu4ycMeq0Wg8XcbciUfzz7vdevU/XNMtFi791wKKSkqa
vN+4nMGVDLm7iGm1WnQ6nadbmd1ux+FwoNPp0Ol02Gw2zz5273uLxYKqqmg0GgwGAw6HA5vNhkaj
QafTeepQ425k7dWvtmIUQghfcTqcmC1WHlv0OrdedRkAjy16HYfTib+x8wmIm7SICCFOS0GBgWSk
prBz736cTieKorBh6w60Gg1/OedMnnr1TXbtz2LssMFkH86jpKycedMmg6qiApXVNbz64cfs3Luf
4KAgpowZxVmzpqE2OokvKSvn+rvuo/BoCQlxMfxp/lyG9Ovd5ERfURQefek1SsrKuevGa4gIDWly
zHV3L3ryrts549KrmkwH+Nv5ZzN78gS++fkXAG696h9EhoVit9vR6/UAhIUEA64T8pbGV7Q15qKt
+Nwn380ZGzXFNz4xb8m8qZP4aPF3HCksIio8jMU/L2Ps8CFkHzpCXqG51bJw/z2wTy+qqmsoOFpM
UkI8V1/yf8RHR7X4eberF9yN1WajpKwcP6ORK/78p2PW01hsdBTP3LMQjUbDqg2b+fKHn8gvOkp0
ZDhzpkxi+vgxfPHDT7z72Vdc//eLGTtsCAB/ue4Wqmtref3xBzAFBLD/YA4LH3mSGRPGctmF57En
6yDvfvYlRwoK0ev0xMVEcce1V2Ew6NutX63FKIQQvmLQ67nlqn/w4HOLcDidPPzCqyiAqoBWo+GW
q/6BQa8/rjxCWkSEEKclVVUZPrA/+w9mc/DQYdKSEtmwbQf9evVkaP8+aDUadjckIuu3bANg/Iih
ADgcTu56/Bnq6s2cP282B3MP88GXizEa9MyaNN6zDq1Wy5ihQzAY9Hy3bDkPv/Ay9/zrOnqlp3o+
8+bHn7NrXyZ/PucM+vfq0eZJ+7+uuJQ3P/qM8soqTytGckICANmHjxASHERsVCSqqrJm4xY+Wvxd
k/mbn5B7o634vl36K0uWr2ry+cLiEv7ZaBzKxeecyeB+vVtd/qzJ4/liyU98+cPPpCV1o6a2jnPn
zOTxRa97Fd/u/VmMGzGUXt3T+P6XFbz49gfcf+sNbc7jHicCrnqQfegwwwf0a7JtWq2Wwf36EBEW
SmlZOQArf9vEs2+8Q6/uaVzx5z+xbvNWXn7vfygKTBw1gve/WMzG7TsZO2wI2YePUF1bC8DOfZmM
GjyQjTt2AjB13BgAHnvpNQx6PX8++wwAcg7nAR2rX81jFEIIX+qZlsLC667ivmdexGK1AAp+BgML
r7uKnmkpx7Swd5S0iAghTltD+/fl/S++Zue+TKw2O7V1dYwY1B+dVkuv7mls37sPRVFYs3EzsVGR
pHRLQFVVtuzaQ8HRYq7521+YOXEcqqqSmZ3D8nUbmNnQzQtcLRHnzZ0JQJ+MdP794OMsXbWWng3j
IQB6dU/ju2XL2Zt1EHWG2urxVlVVxgwdzEdff0d5ZRVjhg4GwOl04nQ6MRr0VNfU4lRVUFWqa2ub
nHC7l9HaslvTVnyV1dXHrMPhcDSZVmeub3P5AX5+zJw4nm+X/sqWnbsZPrA/CQ3dylqLrfG06MgI
rrv0Yk/ylX34yDHzNP/76zcXYbFaKSwu4eOvv+Pjxd8TbDIxbdxoz2dioyK547qrPGNkLBYLXy35
Ga1Gw4JrryTQ359xI4Zyxb//w7dLlzN59EiG9u/L5h27cTidbN+zj2CTiYiwULbt3seowQP5bct2
EuPjSOkWj6qqBPj7YbZY0Wq1jBg8gHnTJmM2m9m4fZdX9aulGIUQwpfc3UYVFXC1h6AqeLqtHi95
jogQ4rSVEBtNZHgY2/fsZ+N219XqYQP6ATCgdy+OlpSyeeceCotLmDh6pOeEtvBoMQAvvPUeZ1x6
FWf+/WoKi0s4Wlp6zDpsNhs2m42EWNeduZqfuI8eMohz58xk0/adfPj1ty12dXJrPEbAPTbEfbUp
LSkRm93Olp170Gq1zJw4jq/fXMTXby7yrLsz2orvorPme9bx9ZuLAEiIjWkybcLI4W0uX1VV5k+b
jAJU1dRw3txZHb6CZrVasdlsmAIDvLq1cl1dHQ67nZiIcK78y4UArNqw+ZjPWSwWrFar5wS/sLiE
sNAQ/I1G7HY7qtNJt9gYjpaUoqoqk8eMwmyxsCfrIFt27WFI/z4MHdCPLbt2U1JewZGCQqaOG+2p
RzdfeRnhYSEsevdDLrt5IU+/9hZWm71D9at5jEII4Uu7Mw/w6IuvoSrgZzR4uuY++uJr7M48cNzL
lxYRIcRpS1VVRgwawI8rVpNf5LqVbEiQCVVV6dfTdfePtz7+DIBxw4d4joWREWEAXH/ZJUxr6Gbj
Xl5dXV2TdbhP3I8UHgUgOjK8yTHVbrdz4RlzOHjoMJ9/9yOpid0YMbD/MSfjzY/DWp0OBTyD4M+e
PYON23fy0jsfcOvVl9G/V08cDscxz81orRxa01Z8Vqu1xfEltQ1dkryhqirBpkBuufof1NebSekW
32Tb22sR6czf7ueJKIrCjn2ZAOi02nbni44MJ7+oGLPVin/Dj21+0VFPd7hBfXsRFBjIyvUb2Xcg
mxkTxhIVEc6n3/7A59//iEajYdzwoZ7lZqQm8+RdC8jKyWXpqrV8/8sKYiIjiGtoEfKmfsnvsxDi
RLFYrTzzxjs4VCdajYY7rr8aVVU9Y0aeeeMdnrlnodw1SwghWjOkXx++W7acsopKZk+e6DmxS0tK
xN/Pj8LiErqnJBEdEe45QR7avy/RkRG8/fEXVFZVEx4aQnFpGRFhoYwaPNCz7LKKSr5oeLbGVz8u
BWDmxPHHxGC327np8r9x2/2P8twb7/LQgptJiIlu8SQzLDSEvMIinnn9bXqkpZLSLYGMlCQyUpL4
v7Pm8eGX3/Cfx54hMT6WuJhoyiuqyCss8jwgsDM6El9nqKrKsP59Pev6oz316lvYHXZKyyvIzM4F
YN60Se3ON3fqZBa9+yGPvPAKU8ePYf3mbZRXVnnGeCjAxNEjPDcOGNCrJwEB/gQGBLB01VpGDBqA
KcDfU2633v8ofTLSSU5M8KzDYDB4Xb+EEOJE0+m0+GPglqv+QUZKEgALr7uKxxe9hlbX+d8dz/JB
rrgIIU5fPdNT8TMaMVssDB3Qt8nxrn+vHvy2dTsTRo1o0tdVoyjcf9tNvP3JF3z941IsVisJsbFM
a9TtBqDebOb9z7/GoNeTGB/HgmuvpHf3tCbLcn9er9Wy4Lqr+PcDj/HAsy9x/603EhocdMzn/nre
Wbz83kds2LqDzOxcpowZSffkROx2O+fOnkHv7ul8+u0PHMg9TMHREsJCgpkydhTnzZ3VqRYRb+MD
mDJ2NGEhwZ16zkpLT2pvLbbjbRFZ+dtGdDod0RHhDB/Yn3PmzCAtsdsxSVDz+aaMGYmiKHzz8y8s
evdDYiIjufbSvzBhxDDPvJNGuRKR7ilJBPj7oTqdDO7Xm1W/bWLS6JFNWnsiwkJYvm4DNcuWExYS
zBkzpjJz4jgU8Kp+tVY+QgjhCwa9nhcfuMf1R8PtzAEyUpJ4+ZH7AHDY7cd1nFI++OADdf78+ccb
qxBCnLQCAwNRFIW6uromJ4p+fn7odDosFssxJ8qKomA0Gj0tDU6nE7vd7vmcyWRq8nl3Vyb3gTog
IACNRkNNTY3nMxqNBn9/f8A1jkFVVUwmE06n09MlR6PR4Ofn53luht1ub9I9SqvVYjAY0Gg0nmdd
OBwOrFbrMd29Woqhrfdaiq8x93M92rodsDfrbu395mXR/O/m87T2vpt7oH/zWww3n68xvV7veb6H
e97GdUOj0RAQENBkfnc9MpvNxzwLRKvVNnnOjHushzf1q7UYhRDCV9zdf5v/HrQ2vSMWL14siYgQ
QgghhBDCtxYvXixds4QQQgghhBC+J7fvFUIIIYQQQvictIgIIYQQQgghfE5aRIQQQgghhBA+Jy0i
QgghhBBCCJ+TFhEhhBBCCCGEz0mLiBBCCCGEEMLnpEVECCGEEEII4XPSIiKEEEIIIYTwOWkREUII
IYQQQvictIgIIYQQQgghfE5aRIQQQgghhBA+J4mIEEIIIYQQwuckERFCCCGEEEL4nCQiQgghhBBC
CJ+TREQIIYQQQgjhc7oTHYAQQrg5nU6ysrPIPJBJZVXliQ5HCCGEOGWFBIeQkZ5B99TuaDQnZ9uD
JCJCiJNGVnYWObk5pCenExgQeKLDEUIIIU5Z1TXVHMw+CECP9B4nOJqWSSIihDhpHMg+QM/uPYmL
iUOr1Z7ocIQQQohTVnR0NP4B/uzN3CuJiBBCtKeuro5u8d3w9/dHUZQTHY4QQghxylJVldTkVDZv
23yiQ2mVJCJCiJNKQECAJCFCCCHEcVIU5aQdG+ImiYgQp4jNB6rYmFnJrtwasgpqUYH02AD6Jgcx
rHswwzJCTkhcTqeD/II84uIS0GqOrzuVoiiShAghhBBd6GT+Xe2yRMRms1FeUUZ9fR3+/gFEhEee
1n28HQ4H5RVl1NRUExhgIjQ0DL1ef6LDEqeh6jo7j3+Wya6DNfSNiKRPSBTjB3ZDpwW7AqXV9Sz6
OofoCD23ntedMJPBZ7FZrVZ2791BWGgY23duoW+v/hgMxk4vTxIRIYQQomt19ne1sqqCsvJSLFYz
VosFm92G0WAkODiUsJBwTKYgamtr2Je5B41WS1pKOiHBoR1aR5ckIjablfyCPFKS09BqtZSUFlNa
VkJ0VExXLP6kVFpWQmhIKN0SEjGbzWQdyCQxMQnjcZyEnQh1dXVs2LSegwcPYLfbO70crVZLenp3
hg8dSUBAwHHFZLfbOJJ/mOqaSqxWq1fzGAwGgkwhdItPRKfrmoTwZIhj24Fy7nxrOxnBEUyPj2X9
1l9Zmb2ZyqpCtDoDMRFxDBsxicsnT2N3XgkXP7Keey7uy7Ae4ce97vbU1tawY/c2xowcR2hoGBUV
5axcvZyB/QdjMgV1apneHCxLy0rIOrCP2ro6QEVVVVQVQEWr1RIWGkFityQiQ80oagmqEo6qSQQk
wRFCCPH/n44mItU1VRzJyyU0OJRePXpjNPqh07lSBpvNRmVlBbmHstm7bxdWu5UpE6dTWlbKrj07
GTlsdIfWddyJiNVmJT8/j/S0dHQ6PTablbDQMDKzMk/rRKS2tobEbknY7XaMRiM9Mnqyd99ukpNS
MRpPnWRkw6b1REfFMH3qDE8lc5/U/f5v19/uf6u/T/Sw2+3s2LGNDZvWM3H85E7HY7fb2Je5h4zu
PYmKHOx1q5rDYae4pJh9mXvomdH7uJOAkyGOqlorC17byKjoRKqL83jn1zeIiw9mwqTeRIUORlEg
v7ia7ftW8Muq77jtugXcOHUod72xhvfvnPCHtoyUlZWwZ/8epk2ejsFgpKqqgqCgYKZNmcGPP/1A
7159iYyM6vByvWkR2bNvFyOGjSIs9Nhky263UVp6iOrit3Bqj+Co3YjVXEVQ3D9R/S9EVcI6HJMQ
QghxKutIInI4L5d6cx3DhozCYDBgtVowm+ux220A6PUGQkJCGDxoGHa7neUrlxEYaMJqtVBSUtzh
2I4rEbHarOTlHaF7end0Oj1WqwWNRktVVQWmwNP7GQB+Rj+qqioJDAzEarVgMBjp1bMPu3bvJC01
DaPR70SH6JWDBw8wfeoMT0UDV/LhSjZUz7+bvppOA9BoNPTvP5DX3nj5uBKRvIIj9OzRm6jIaFRV
xeFweDWfomiIiY5Fo9GQl3+E5MTUTsdwssTx8AdbSfQzUV1ayOrdPzBnam9GD0wlODiE8LBQomNi
cdjt7M/M5KeVW7j/6Xu54qKbmNkrnfvf3sQT13TsqoS3juQdJr/wMLOmz0FRoLq6Eq1WR3V1JSZT
EHNmz+eHJd9RW1dDclLHtt+bQXVVVZWEhYZTU1uDw2HD7rDjcNix2+2oqorR/h1pMVux1OWi+g3F
PzAec+mbBMSYsBsu7uxmCyGEEKckbwesFxYVoFE0jBw2BqvVQkVFOTqdFo1Gi8FgRFEUnE4n9fX1
OJ0O/P0DGDNqvGd+d7LSEZ1ORKxWK3n5h0lPy2iShNTU1pBXkEdqclpnF31KiIiIIic3m8TEREyB
QZ5kpE+fvuzcuYP0tO74+Z38yYjdbken02E21/PPa/95zPvPP/s8x3ZpUZtMU1UVp9OJTqfz+oS9
NVXVlQyMGOw5qewIRVGIjIhiz75dxxXDyRDHxr1H2byrgLExSfy0/XvOnNKHKaP7Eh4egckUSHh4
BOHhYej1BmJiYwkLCyMw0MRbn77CTX+/i/VZB1m9o4Cx/eM6HUNL9mXuwWKpZ8bU2dhsdurrazEY
jNTW1RIYEEhNTTX+/gHMmT2Pn5ctobq6mn59B3i9fG9aRGw2VxfC35MQh+vldKI4C9BZv6aqbh9O
p5nQ7l+hKEYK8l6gvuYh/GPMGCOuOK4yECef1WvWMnjQIAIC/E90KF47FWMWJ5bUGdFZ3rSIVFZV
UFpWzLgxE6mvr8Nms2E0GqmoLCcnN4fa2mrMZgsx0THExSUQER6B2WzG6XR4znftto538e/UPb2s
VitH8g6RnpaBXt80CTl0KIeUpFQMBt8NmD0RDAYDyUkp5ObmUFNTjUajdSUjegP9+vYnM2s/ZrP5
RIfZYR//71PPC1yVd8a8M5k5/yxmnXG250Rx7tnnMu+c85h/7vldOrjYVZc02O2NTjC9fNntdjQa
DVar5Q+N4y+XXNTk9UfEsX5XHjFGf/Ye2UtinIEpo/sRFxdHdFQUYaFhaDQabDY7VqsVVVWJiopk
ypj+dIsLYvmG5fSMjGbtjiPHXQ5uTqeTTVs2oNPpmTh+KhaLBbO5DoPByN59u1n87Vfs3rsLnV5P
dU0VdfV1TJ86C61Ow+q1K3E6nV6tx5u6ZLO5rrg0T0KcTgc6CrFUbyGs12Ei+hSjNSSh0ceQMKKI
+GG5lGXf1+Iyd+zaxSWXXc6kGbM498KLuOnWf3veGz1xMrmHDnkVf1tuv/MuXnn9jQ5Ne/bFlygv
rzjudXe1luJuTXvb0Lh8Wyvr9tZ3y4KFFHeiS0Br3Ou7+fYFPPnscy2u75LLLj9m+ocffcwNN9/i
1Trai7l5WdTU1HDRXy/lkSee9Fwc6UjdbFyGXVWnfeHNd95l9MTJrb6W/br8hMXWke9BV2hcZzq6
D30dq6+d7tsHUFJSytTZcxg9seO9Ttr7bVVVlT37djNy+BisVis2mxWdTsuGTevZvHUTYaFh9OrZ
l7TU7mTnZvPjzz+wdv1aVNX1215V5TrG2zox1rjDiYjVauVw3iG6p/domoTUVJObm01K8qk1RuJ4
GI1GUlPSOJh9kOrqKjQaDRaLGYPBQP9+A9i3fy/1Dd2dTmaurlauf/+07HvPC1yV12DQe17uRKTp
tK6/NZzdbu/Uq6s1X77D4cBkCvQkayZToCf56Mo4tu3NJ0hnoKIynxEDexAREU5IcAgBgYHo9DoU
RaG+vo6qqirM5nqMBiMREeGMHdGfQwX7Men92b4vvwtKACwWC6vWrCApMYlhQ4ZTV1eD1WpFp9Ox
7re1HDp8iJnTZnP48GHWrluDXqenvq6GiooyRo8cR3JyMj/+/L1Xibm7frX1sttsgNqQhNhxOh0N
Lyeq6sToH0fpvtlAo+THWUnRjpkEho1vcZn3P/QIY0aN5NsvPuPTD9/n3v/ccUzrjDextfYym82s
++03pkya2KFpH370MVXVVce17q5+tRR3W6/2tmHJ4q9I7Nat1bL2Zn1dsY9aWt+k8eNZtXpNk2Vb
LBa2btvOgYMHKSo62mTeNevXM37sWK/W017Mjd+32+0suOtu4uPjuPWmG9FoNMeUXVHRUf5+xVVe
7bOuLK+ufLW0DRf96QKWLP6KJYu/4tWXXgDw/L1k8VeMHzumy9fZ0Xriq/JpvN8a7/uTKdbOlufx
LLf59v0RMfxR29WR1wuLXiYhPqHT3922VFZVEB4ajk6no76+Fr3ewLYdWwGFMSPHExMdR2CAicys
/cycPofL/nYFUydPIyjo98cGOJ3OTp3/dKhrltVq5fCRXDK6H5uE5BzKIS0lDY1GS17+EaqqXP3F
Y6JjGwa7WCkoyKe8spyQ4BDi4xM6fYcpq9VKYVEhCfEJLQ4idjgc5OXnERsT2+mWGbvdRnl5GTW1
tQQEBBAeHoFep8dms1FcUkx1TRWmQBPRUdGkp3UnM2s/qSmpBAUFUVfnmmdA/4Fs2bqZ3r364O/f
uabU+vp6juS3f2U7IT6BAP/O3q3q97Eer77yerP3FIJMpiZTbrjpelITYz1/33zrv3j80Sc7ue6m
3JXY6XSg1Wqx273r6qXTaT3dwroiEWgrjsBG458CAwObrK+r4tiTXcD4bv2xqypp3aIxmUwY/Ywo
/H4AUlVQFBVVVTAYjQQGBtK7RyIffbceg6In6/DRhs90OgwsFjO/rFjGpAmTiYuNo7q6CkVxLfOn
pT/i5+fPuDET0Wg0jB87kd82rGPJz0uYPHEyFquFoqP59O3dn2BTMIu//Yq5s+e3eVc1jdL+tRGb
zYZKo3FKgIKCRlGwE4Nf6FhKD32Ow3wArTEOnLXYzLuoq9hM3KCfaKmj3eEjR5g1YwamhroeEtK1
z2RZ99sGIsLD6Z6e3uFpJ5uujrG9svZ1mTReX0REBA899jg5ubmkpqQAsGnzFvr06oXD6WDl6tWc
f+45ANTW1rJ123YW3nZrl8ajqioPP/4EtbV1PPbgA01+8xqXndliZs++fe1u08mspW3w8/PzdPsI
qnBdde3K72db5daWE12mHSkDX8ba2fI8nuU2374/IoY/aru8tW37DpavWsXD99/ndatrY+39th49
WkRqahoOhx2NRktJaQnFxSWMHT2+yecsFjO1NTWoTofnN9ipOlGdKqrqbLhQ2DFeJyJNkxBDkyQk
OzebtNR0jEY/juQdJjw8gvS07pSVlVJQWEByUjL5BXlERkbRs2cvSkqKyTtyhLS0zn0pCo8Wsjdz
L/mF+QwbPMxztydwnfxt3LKRquoqUCCpW1Kn1lFWXkZISCiJiclUVlZQUlJMXGw8xSVHCQ8LJy01
jfLyMgqLCknslkRG9x7s27+X1NRUgoKCXc8XCQxi8KDBbN6ymT69+3YqGfH390er1ZJ1MKvVz/Tq
0YvIiEgsFkunxmi4B58//+wLXH717+NE3nhlEQBBpt9PvN1ZtbvrFsAFF57XbrbtLfdVc4fDjlar
4eFHH2iyf1tit9u5c+F/cDjsTZbxR8XR+AcgJCSEx598pMvjcNit2O12DFp/9AYjBoMBnVaHolFQ
FI0ncVRQAFe2odPp0Ov06PQ6zGYr0zMO/AAAIABJREFUqt2Gitrwmc7ZvXcX0yZPJzIykqqqSrRa
LWaLhe9/+JbkpJQm4z80Gg2jRo5h+45tfPnVl8yaOQutVsuhwzl0S0hkzOgxrFu/himTp7W6Pm+u
3Nia9UFVANWVoWF3xlDv7IfV/C5avwwqDy0E1UFI8iPYrBbQ9zymPGbMnY+qqlz+z2vQajQ4nE5q
ampYv/L3Lh+N47LZbLz4yqv8vHQZZrOZ0aNGcvONNxASHAzAyPET+ei9d0hJTvbM/+uKFUyeOKHJ
gEFvp1148V89MaQkJ7PwtlsY0L8/ALV1dTz3wousXLMG1akyZvQobrz2Gk9CNXH6TCaOH8fqtesw
6PWcdcZ8KquqWL5yJXa7g2uuvIIz5s1tVLZtb1tLMU6cPpOZ06fx6/IVOJxOJo4fx79vuRljo4tA
bW1D8/JqXgear89itfLWO+/y3ZIlFBYWHbOP2tqGjz/9jE+/+JKP3nvHs47nXnyJI3n5PPLAfces
LyI8nAH9+7Fq9RrSUl03Xli1Zg1jx4xGURRWrFrNBeedC8DGzZtJSkwkIT7e67J0l0t0VBQzpk3l
isv+3qRHgaIovPH2O2zbvoPXXnrxmCTeXXYHs3NY8J+7ABg1YZJru556ghHDhrVar1r7rj3wyKOs
Wr2Gqupq4mJjuOm66xg7ZjTv/+8jfvp5KW+99orns78sX8Hrb73Fe2+6usS0Vx+b7+uc3Fz+9JdL
WL9yOct+Xd7mNrhjbvx/t/bKet3631j02utk5+QQGBDAqJEjuGvhgjbX2do8bi19D7ryu9ZePW9c
lq3ts9Ziramp4flFL7N23Xpq62oZMWwY999zNxqNxqtjyuyZM9i4aRNHjxYTGxvL7bfezJBBg9os
z/a2t7PLbb59xxNDZ+pJcx2tB94cP51OJ48//Qx/u/gvxMZEe+pBR7T3+aKjhQwdMgyr1YpWq+Xw
kUMkJSYfM8h96JDh/Lh0CZWVFa5ExKk2TUg6OKYWOtA1K78wj7CwcPR6AxaLGUVxNQ1nHcyiW3w3
/BruElVZWUl4WDg2m43AwEAqKsoAKC8vJzIiEpvNhskURGlZaYeDdYuPjSc4KJiq6io2btnoufLc
OAkJDgomPja+0+uoqakmJDgEm82Gv78/1dVVAFRVVREaGobNZiMgIJDKykrAddUmKSmZvXv3oNNq
0Wp1VFVXYjAYiYqMZN/+vZ2OJS0ljZ4ZPVt8r1+ffgwaMKhDd3ZqibsimUyBnldL09yO7cLV6VU3
UV9vRlVV11VvFUwmE/f/96E2XyaTCVVtuFKuqtTXH38i0l4cbn9UHBkJoZTWVBDsH8uRgjrXQaSh
FQQaHVQaTsBRVTSKhpz8UsICIzlaXkZSbCCa49wxhw7lEh0dTW1tDTqdjsrKSj7/8lN69+rb6iD0
Af0HMnDAID7/4nOqqqswGAwczDlASGgIBYUFba7Pmzt72Dx35Wi4aYLiSs60Gq2rW5g6BYNpOFm/
BFNX8gXl+V+y/6dgAiLOpqVnifz47WIAXl/0Ij9+u5jXF73Y5vpfePkVduzYySMP3Mdri16ktKyM
Z55/wfP+pZdcTGijZNVqtbJqzVomT5rY4WkAF55/Hi89+wyff/Qh/fr24aHHnvC89/hTT5NfWMgH
b7/F/957h6PFxTz25NOe981mM1GRkbzywnNceMH5vPH2O6iqylOPPcqF55/H40893SRhbm/bWorR
bDYzdPBgvvr0Y1598XlycnN56NHHvN6GtrS0vpdefoXlK1fxn9tv58tPPuLZJx5vMk9b2zBj2lSO
5OWRmeW6sON0Ovnx56XMnT2r1fVNGj+elQ3ds1RVZeWaNYwdPYpJ48ezZds2ampqAFi1Zi3jGp38
tVeWALffeguf/e8D7r3rTtZv2MCLL7/S5P0lP/3MO++9z9OPP0pYWOsPCZsyyXVSCrB+5XLWr1zu
OUlqrV61ZtSIETzxyEN89N47TJsyhQV33Y3D4WDWjOnsy8wkJzfX89nvfviBOTNnev5urz62pa1t
aE9bZW2xWll49z2cOW8uH733Dk8/8Rj9+vRpc51tzQOtfw+68rvWXj1vrLV91lqsd9//AHl5+Txw
7z18/P57LLj1Vs+x15tjip+fHwtvu42P3n+XIYMG8sjjT7a7D9vb3s4ut/n2dTaGztSTlnS0Hnhz
/Pziq6+pr6/n//50Qat1oD3t/bZWVlWh0+mx221oNBoOHT7U4i34w8MiOHPe2Vzy50v561/+zt8u
uYxL//oP/v63y/nHpVdy+d+v6nhs3n4wLiae4pJiysrLGgbx2tBqNQzoN5DDhw95CjYoKIiCgnws
FjO5uTkEB7t+kENCQjiSdwSzuZ6D2QcIDe38/fx1Oh3DBg9rkoyYzeYmSUjzlpKOCggIoLj4KFar
hbz8PAIDXVcDTCYThUUFWCxmDh3OJSjI9eC2+vp6srMPMnzYSDRaLRaLGb1OT2FRAQWFhfRoJZHw
VnJi8jHJSL8+/ejXpx/19fXU1x/fWBR30hFkCvS83LfqbTzNfV776iuve14uXdQiUl+P0+nEZrOh
KIqr65PD3uYrMDDQcyXU6XRiPs6y8CYOtz8qjkE9Y6ioK8fkH8ueveXY7a6xEPD7gB7Fk5iooLi6
JG7bk4ufPpKjVYUMzIhtaxVeiY2JJ68gHxXIyc3hq8VfMG70BNJS227N7J6ewdQp0/jmm8Xk5GYT
4B9A5r79REVFtzmfN/1cbZ6mXw0ajYJGo0Gn1aLT6dHp9Gj0oWi7fUBo35+J6fMmS3eeScKYI0T1
fqXNvrOt/d34306nk8+//Iobr7+WbgkJhIWGMn/uHNauW+/5zNVXXE5YWJjn742bt+Dn50e/Pn06
PA3gnLPOZOiQwSTEx3PBueeQnZPjKYcffvyJG665htCQEEKCg7nhmmv4celS7Ha7Z/4z5s2le3o6
Z595BuBKCnpmZHDu2WdhsVopLinxettai7FXzx4EBASQnpbG7bfczLJfl+N0OtvdhrbKuqX1OZ1O
Pv3iS/6z4N8MHzaU+Lg4Ro0c4ZmvvW0ICwtj7OhR/PjzUhRFYduOHVhtNsaOHtXq9k2cMJ6du3dT
VVXF/sws/Ix+JCUmEhcXS/f0NFavXYeqqqxZu84zPsSbsgQYMmggid26MXTwYO749218/tXXqKrq
eT85OQmNVsvylas6XG/b22etfRemTZlM3z59SOzWjYv+dAEWi4XCoiIiIyIYM3oUP/z4E4qiUFVV
xfrfNjBrxvQO1cfObENb77dX1nabDYfDQXVNDUEmk6fut7XM9uZprUy76rvWXj1vHnNr+6ylWPML
Cli9Zi0P/Pce+vfrS0R4OMHBQR3ah2efMZ+hQwYTHxfHuWefRe6hQ8e1jzq73Nb2ha/qSWv109t6
4M3xs6q6mkWvvcbNN1yPn9HodRytxdYa98153D0u9Dqd1zeZOV5en6kbjUZSklI5kJ1FUmISpkAT
NTU1BAaa6Nu3P9t3bKNHRg9iY+LIL8gj51AOoSGhxDcMrEmI78bhI4c4eDCLsNBwkpI612XKE3hD
MuJOPlauXYmqql2ShABEhEdRXHKUvII8gkxBRDecQEVHxVBYVMDhw4cIDgohLi6e+vp6du/ZxZDB
QzAYDFRUlGMwGCmvKCcrM4sBAwYe99PGwZWMAOzL3NelSYhrkK/r5LZxNyxVhWuvb3pL32uvv5bn
nnmex5/8/erMTTfc1KnmuJbUN9wKzmZzZeXBIcG89U7zcStNBYcEN9xFyobT6aC+C7pmtRWH0+nk
isuuBuCNt171XGnoyjhGDUzly5+2kxTaA1tdMkt+zebs2X3x8/PDqaoNad/vz3RxOOys2bKPvdlF
9IycxOb8zVw6cPpxlgIM6D+ArVu2cDA7C7vDQXBwsNfNXzqtDr3BwIqVq0BdQff0DCaMm9DmPO0d
LMHV4qTgvsLTtKuGguLJiRVSUYyRHCr4FvDugZTtKS4pwWKxcNmVV3s9zy/LlzOlWbcYb6c1ZzQa
Pd+1srJynE4niYndPO8ndkvA6XRSWlZGbEzTB8o27hLU+G/3j4032+ZNjMlJSVgsFkrLyoiOOvaK
WuNtaE/z9RWXlGCz2UhPa/n28N5sw5xZs3jq2ee45qorWfLjT8yaPs3ze9HS9nVLSCAtNYXVa9eR
l5/v6ZYFMHH8eFasWk1KcjJ2u53+/fp6HUdzaampWK1WjhYXe/Zd7549efDee7hlwUIS4uOZ4mWr
RmPe7LPGlq9cxZvvvEteXh6VVa6eAO5eB/PnzOapZ5/nyn9cxo9LlzFk8GAiIiKAjtfHrtJeWZtM
Jt54eRFvv/ceZ57/J0YOH86V//g7yW2cg7Q3T3tlerzftfbqeXNt7bPmsR45kkdwUNAxMULn9qHB
YGj3+9yZ74M3ywXv6/cfUU/a0149aEnz4+eLL79C97R0+vXtQ2VlJdUNLbCVla6u0qZmY3hb095v
q9FgwGK1oNW6EhFToImKinKCTEFtzmexWvhtwzpycrKJjIhi9OixhIa03nrbkg6drRuNRtJS08nK
yiQpKQmTyUR1dSVBQcH07z+Abdu20LNHb1KSU0lJTj1m3u7pGZCe0aEA2wy+WTLSVUkIgF6vJz4u
gfi4hCbTDQYDSYnJ0JAUNE9CystLMRqNVFaUk5mVxcAuSkLckhOTiYyIJLFbYpckIfB7awiAKSiw
yXQ4djxI8881//zxqK+vx+5wYGt4fseF51/k1XyqqmKz27E7HF1SJm3F8eXizz3/DgwM5Kz553R5
HKMHpjGoTwLZB/eQHDySrRtr8Pc7wJypGegNBs8t88A1jmXNpn28/OEyYvx6c+BoNjZzPhOGHf93
zd8/gNGjxpCTm80Zs+ZRXl7G6jUrOPfsC8gvyGf1mpXk5+d56lBUVDSTJ00lIT6Bb777mjmz51JS
UszWbduZOqX9xEjT0OWzLa4xIgo6nbZheExD9yyAxomI+vvVTW+uCLV05avRuyiK4uly9flHH5LY
rVsLS2nK4XCwYuUqHrrvv57leTuteVyNY1IUhYiIcNeDM/PyPCcsefn5aLVaoiIjj7ly1tLyGv/d
3rZ5G+PB7GyMBkOrMbRUvk1jcv27pfWFN7Q0HczJoU+vXsfE4M3+GT92DA8++ihbtm5j6a+/8uIz
T7e6PreJEyawas0a8vML+OeVV3jenzJpIu998CHJSYmMGT3aM5Dc23rSeLtzcl1Xf8PDw5uU0bix
Y7jlxhu4+777iY2Jpm+jLkKNl+Gex+l0euLwdp+5ZefkcMfd93D7rTczddJkjEYDoyZM8nx2/Nix
PPTYE2zdvp3vlyzhwvN/v327N/XRfdW9tbrQ0jY0j7nx/70t64zu6dx/z91UV1fz/EuLuPGW2/jy
k4/aXGdr83SkTDv7XWuvnjcuh5zc3Fb3mdPpPCbWyMhIKquqOFpcTEx00xbqzhxTvNmHnfk+eLPc
1vZFZ2PoTD1pbzs6+nfz4+d33/+AxWpl+tz5TdYxfe58Ro0cwXNPetfNtb3B6v5+AVQ3nEfb7Tb6
9h3A0mU/kdjGOGuHw8G33y1m7OixnDHvLA4dzuXnn3/i7LPO9SomT2wd+jSuJ4p3T88gJyeHqqoq
tDo9FZUVGPQGBg4YxO49u7rkRNBb7mSkT68+XZaEeKu+vp5du3cyeNAQ9AYDpWWlDS0ilezPymxI
Qrr+CfOBAYFUVVV1WTk3flq60WDwvNyJRfPxIM0/56J0SSJirjejOlV0Oh1FR4s69NLpdKhOFXMX
jBFpLQ5F0WAyBWKz2RrGOwWiKJo/JI57r51HibmY8tq91JuNrFhh5cFnVrP4551k5hRyILeQJSu3
8+CLX/P0W0sI0qRhtWspqj9Eij6XB/9793GXg1txyVFSUlJIT0/n8OHDACxb9hPz5s7nzoV38587
7uGuO+9l2tRp/PLrMgCKjh6le3oGSUnJ5OZme7Ueb1pE3Hfl0Gp1aHWul06ra+ia5Rqwr9fp0epc
Pxa2htv9dlZIcDA7du0iJzcXf39/Jk2YwO13/Id163+jsKiIg9nZnlu8Arz0yquUl5cDsHXbdgAG
Dxroed/bae0xGAzMnD6dp559joqKCioqKnj6+ReYN2d2p46D7W1bWzHu259JTU0NWQcO8vDjT3DB
eed6fQW+scZl3dL6jEYjM6ZN5f6HHmbTli0UHT3KmnXrvN4GcJXbjGnTePTJJ4mOiqJHRka72zd5
wnhWrVlLzqFcBjV6PzUlhfDwcD746GMmjBvToTgANm7aTGFREdu2b+eBRx5l2pQpTQapup13ztlc
cO45/Ou225sMXG4sLMzV3Xnl6tXU1NRgNpvb3Kaq6mpPvamoqKC2rs5ztTUhLp7SslI++uTTJvPo
9XpmTZ/GK6+/QXZ2DhPHj2tSru3Vx6TERD774ksKCgvZvHUrXy7+pt1taE97ZV1RUcEXX3/Nzl27
qayqIiIiosndNFtaZ1vzdOa72tGY26vnjbW1z1qKNS01hd69enLbwjvZtHkL5eUVVFdXA11zTGmp
PL39PnR0ua3ti87E0Jl6Ak2P953V1vFz1S9L2bB6pef1yQfvAbBh9UqvkxBo/7c1MTGJ1WtXo9W6
HnAdFRlFdEwMK1b+2sr4Y5VfVyyjR0YPevToRXbuAfz8/Cg6WtjhO4Z26qzdz8+PHhk92LtvD0lJ
yQSZgigrLyU8LJzBg4awafMG+vUd0Olb1naUTqejW3z7Vye7ktlsZtfuHQwZPAyDwUBpaTF+Rj8q
KivJyspk4MDBf0gS4tbVz8xwJxEX//mvuK5I/j7t2Fv6wl8vvvSYeb3ssdMm13NXXP0TO0ftkme3
tBaHoiiYTCZWrf0FcDXnKorSQrzHH0doUABP/vs8bnr4EyJtFSSYMsg7AvlFh/nYvhOrvQpFUVFs
BmJ0fcmrKSSvZg+DY0o4a/J03vnwU95+83X+eullxxUHuJ6Wqqp4npkCkF+QT3RUNKWlxTgc9oYb
G5g8SYd7no48W8Wblgv3GBGtRntsP9hGLSLu3MP1+c63iPzp/PN47MmnGDZ0CE8/9ih337GAl19/
gwcefZTysnISGrrujB83FoA33n6HObNmEh4ezi/LlzNh/LgmP+LeTmupTJr//98338STzzzLny6+
BI1Gy8Tx47jhmms6fTWurW1rK8Y777kXgNiYGObNmc3f/3pJq+toq0WkcVknxMW1uL6Ft93KM8+/
wJ333EttbR19+/QmOirKs4z29g/A3Fmz+PTzL7jx2ms8P/htbV/PHj0IDQmhR0Z3/Jrd1WrKpIm8
9+H/GDViRJNtai8Oo9HImnXref6lRfj5+TF29Chuuv66Vsvtun9eTUFhITfccitvvPySp0tG46vs
f/3Ln7n7vvsJDg7m0QcfaHObmndRmTdnNnffsZA/X/gnblmwEJ1Ox6Tx45uULcAZ8+dx0SV/44x5
c4/5jW+vPi789608+MhjLP7ue6IiIxk+bCjGRv3eW9qGxi0CLdWd9sra4XTy7fdLyDrwInabjfT0
dM9zglpbZ3RUVKvzePtdbe/v9upHe/XcvbwB/fq1us9ailWr1fLEIw/zxNPPcPt/7kKjURg5fAT/
vetOFEXp8DGl+f9b24fefC87utzW9kVnYuhMPenTq1eT431n6gG0f/xsrLXvQHvaTUS6JbF5yyYK
C/MJDg6mpraKWdNnsXb9Wj7/8lP69e1PQkI3nA4HpWWlrPttLWnJqYwdM55Dh12/+QUF+YSGhHX4
QpjywQcfqDMb3fWiI9zdklKSUzAFmTCbzUSER1JWXkZeXh69e/Xu1HJPBQcOHiAxMZEAf3+KS4rx
9/OjqqqKzKwsBg0aTOAfmIR0pVdfX8QN1/2LkpKShu4+7pMxcCckv///WL+3gri6FDzz3JNcflnH
75rg9uzzT3HN1dcBNBkU7g2d1lX5X3jpOa6/9qZOx9BWHOFh4S1+vqy87A+JA6Csspa7nvuabXsL
CNGEYjKYCNS56letvZYaay0llmJstfmkRDgw6FQSg+0MHzaU115/n1sXLmTq1OkdPnA19ujjD3Hf
vQ9SWlrME08/wYLb7uDBh+/jwfsfobAoj6eefprrr7seVVV55tmnufs//+Xue+/ksUefJCf3AM8+
9xz33/tgu+tZsXoF82bPa/MzDz/yAP+8+lrCwyPaXV5VVSWPPPYw99x1bDcKX7j2pn9x8UX/x8jh
wzs87WTTWoxDR4/ls/990OR2xX/k+v4op8I+6Kg/YpucTieTZ87myUcfZujgwV223FPFqVRPTqVY
O+N02L4/6vjZ3Dfff8OEsW2P0SwoyGf1mhVccP6F1NTVouC6YU1lZSV79+9l46YNhIaGEh8Xx9DB
wwgODiavII/ammr0egPvf/AeZ8w/i+SkFK/jWrJkSedaRNz8/f3p07sPO3ftICUlFZPJRGlZMQa9
kYpGJ2ano5KSYvr26UtxyVH8jEYqK6vIzMpk8KAhp0wS4ma1WomPj+9UVwo3h8PhuZVxZ7gTmoT4
RLbt2M6okaOwWW04nN7dklir0aI36Fm7dg0J8YmNWmk6dvLZXhzuZvDm9HpDl8bRWHhIIM/dcSEr
NmWyalMW2/YdYeth1+1Hk2LDGNg3ioE9MrCUZvH8s88S2S2FzBp/dFu2cNGF5/Dfu+4kLDScgYMG
odVqOxWLzW4HVOx2G3abjf/efw9qw3+uFg8bdocd1enEZrNzx10LoGHciN1ux27zLqn0pg7Om3cG
zz7/DGVlpa4uhQ13Emv+b1AJCwvnnLO77jk3HfX8U8c+6NPbaScbX8d4uq/PF/6IbVr/2waCgkwM
Htj5rkmnslOpnpxKsXbG6b59Xcmb39a4uHji47vx0ScfMW/uPJxOJwey9xMWGsGQQYMZPXIUDofr
6enV1ZVs37mVAP8A/Pz8+eSTjxk5YnSHkhC3TiciTqcTs9mMxWIhLjaBzMxMkpOTCQsLo7CokECT
ibq6Ovz8/I7rBPdk495uVxeUHIKCgygrLyfrQBZpKelYrVYURTlltlur1VJTU0NeXh4Ox+9Pymw8
gL35tJbe02q1REVFdXqMjvuZHWNGj+HV117BXF/PiOEjPLd/bm/eqqoqVq9ZxbJlS7n8H1dgs9nQ
6XSdSkROhjiaL1dVVcYMTGV4n25YrVbMZjP1ZjO2hn9brVYsoRlc9c9reXnRixj9/NlaE4xWq+eC
887ixuuu5s13PyAlJbVD+0hVVZxOZ0M3KxW7w879/30QnU6P+1bCdrvdNUDf7np+ysMPPtKQmP3+
vt1ux+FwoNG0PRjdm65Z/fsNoH+/lp9hIk6cE5XsCd/66ptvmDd7drsDdoUQ3vujj5/eLn/M6HFs
2bqZd999mzlz5xERHkl1VSVHjxZitbnOb123zNcRHhbBoUOHWPbLUnr17M2I4SM7FVunExH3YF2r
1YrD4SA8LJwjR46QlZWFKdBEbGwcNpsNrVbb5Emxpzr3doeGhHH4yBFqaqoxGAxER8bgdDqxWq1o
NJpTZruTk1M4fPgQCQndUBSlxSTDrb3pR/IOExkZhd1u73BC4n5mh9OpMnzYSBYv/ppPP/sEi8Xi
1fxGoxF/P3/mzpmPomhwOByd+qE8WeJozpMQ2O2e753dZsNsNnsuCNTV1eEfEMD8M8/mu2++pqQw
jzV1lYwbPYK01GR++P57Lr/iyg7tG6fTSW1tLRHhEezctYPg4CDyCo6gNtzyWVVVDhw8iN1mJzMz
k5SUFLJzD6A6nTgb3j+YnU1YWBh1dXUEBAS0WR5yMivEyctsNpPXcOcwIcSpw9vfVovFQkpyKqpT
5YsvPickNJSM7t1J7JZEWGg4FrOZ2rpaSkpKWbf+K+pr6xkyZChJicnk5+fj7+9PQEBAh85/j2uM
iPtp3u4BrE6n05Up6XRotdpOdwM52Z1O211WVsbqtSs5erTouB5eo9FoMJmC6Nu7P3379u3w9rtP
sj1X++vrsTU8YKi9u3EpioJOp8NgMGA0GgkICECv16PVajvcKnWyxNFY4yTEbrd7WkAaJyEWi8Uz
rbq6mrKyUr779huOHMrF39+P+rp6nn7+RUaMGOl1IuJuHSovL2fnrp38tmEdFRUVzVrFVCIiIumW
kMjB7IOUl5d5prvvxBYV6bq3+KCBgwgNDUWv17e6zrW/rWX2jNmdLishhBBCNPX9j98zesToNj/j
cDioq6tr8iooyCevII+jR4uoratFq9Gi0+rw9/cnNiaOxMQk/Pz88Pf39yQh7pc3F2GPe4yI+8RL
p9OdElf/u8rptN3h4eFMmTSNwsLCTp8wO51OampqiIqKIrLRvcY7QqPRoNe7br/q7+9PSEhIkxaY
tjS+i4S76483XXxO5jiaL9cdl1arRafTYbfb8fPz87TQuRPixmbOnMWO7dtYuWI5c+bOY+TIUR3a
v4qioNVq8ff3p0dGD1JTUtssgzGjx7Y4XVEUDAaDV90VT5UEXgghhDhVePPbqtVqCQoKws/Pj8DA
QMxmM6GhoaSnd/d0r3afZ7h7/jS++Orn54fRaGzzYmNLfPfQDXHSCgwMJD09/USH0eSk/UT2Pz5Z
4miscVKj1WrR6/WeJ1Q37yrX+LMJCQnMnjPXM72jNBoNgYGBTdbV2dh1Op1XiYgkI0IIIUTX6cjv
ql6vR6/Xe/3U9uMliYgQp5DmrS6+WJ+7u6EvhASFUF5RTlhomE/WJ4QQQpzOyivKCQlq/4Y7J4ok
IkKIk0ZcXBwHsw/SPa07oaGhJzocIYQQ4pRVUVHBgYMHiIuLO9GhtEoSESHESSM8LBxU2L13N2az
+USHI4QQQpyy/Pz8iIuJIzwsHIfDu+ey+ZokIkKIk4bD4SAyMpLY2NhT4jk8QgghxMmq8W3/T1aS
iAghTiruO4EJIYQQ4vQmlxyFEEIIIYQQPieJiBBCCCGEEMLnJBERQgghhBBC+JwkIkIIIYQQQgif
0wFERESc6DiEEEIIIYQQ/5+OKqnfAAAgAElEQVT44IMPpEVECCGEEEII4XuSiAghhBBCCCF8ThIR
IYQQQgghhM9JIiKEEEIIIYTwOUlEhBBCCCGEED4niYgQQgghhBDC5yQREUIIIYQQQvicJCJCCCGE
EEIIn5NERAghhBBCCOFzkogIIYQQQgghfE4SESGEEEIIIYTPSSIihBBCCCGE8DlJRIQQQgghhBA+
J4mIEEIIIYQQwuckERFCCCGEEEL4nCQiQgghhBBCCJ+TREQIIYQQQgjhc5KICCGEEEIIIXxOEhEh
hBBCCCGEz0kiIoQQQgghhPA5SUSEEEIIIYQQPieJiBBCCCGEEMLnJBERQgghhBBC+JwkIkIIIYQQ
Qgifk0RECCGEEEII4XOSiAghhBBCCCF8ThIRIYQQQgghhM9JIiKEEEIIIYTwOUlEhBBCCCGEED4n
iYgQQgghhBDC5yQREUIIIYQQQvicJCJCCCGEEEIIn5NERAghhBBCCOFzkogIIYQQQgghfE4SESGE
EEIIIYTPSSIihBBCCCGE8DlJRIQQQgghhBA+J4mIEEIIIYQQwuckERFCCCGEEEL4nCQiQgghhBBC
CJ+TREQIIYQQQgjhc5KICCGEEEIIIXxOEhEhhBBCCCGEz0kiIoQQQgghhPA5SUSEEEIIIYQQPieJ
iBBCCCGEEMLnJBERQgghhBBC+JwkIkIIIYQQQgifk0RECCGEEEII4XOSiAghhBBCCCF8ThIR8f/a
u9sYW87DPuz/Z5ZfinyIikCkbMeOI9kOCrTVnrNy7NRWgSYRKZJugBpxJFNAREr9Upuk1CCw3bS1
XQOt9dLW8qUN5INNUip0KdkG0sQxSb0EKBrLdWzuOcsWBgxZslq/klSNyjDaT9p5+mHOvt17ubt3
5u6cO+f8foJ47tkzZ3bO7Jzd/39mzjMAADA6RQQAABidIgIAAIxOEQEAAEaniAAAAKNTRAAAgNEp
IgAAwOgUEQAAYHSKCAAAMDpFBAAAGJ0iAgAAjE4RAQAARqeIAAAAo1NEAACA0SkiAADA6BQRAABg
dIoIAAAwOkUEAAAYnSICAACMThEBAABGp4gAAACjU0QAAIDRKSIAAMDoFBEAAGB0iggAADA6RQQA
ABidIgIAAIxOEQEAAEaniAAAAKNTRAAAgNEpIgAAwOgUEQAAYHSKCAAAMDpFBAAAGJ0iAgAAjE4R
AQAARqeIAAAAo1NEAACA0SkiAADA6BQRAABgdIoIAAAwOkUEAAAYnSICAACMThEBAABGp4gAAACj
U0QAAIDRKSIAAMDoFBEAAGB0iggAADA6RQQAABidIgIAAIxOEQEAAEaniAAAAKNTRAAAgNEpIgAA
wOgUEQAAYHSKCAAAMDpFBAAAGJ0iAgAAjE4RAQAARqeIAAAAo1NEAACA0SkiAADA6BQRAABgdIoI
AAAwOkUEAAAYnSICAACMThEBAABGp4gAAACjU0QAAIDRKSIAAMDoFBEAAGB0iggAADA6RQQAABid
IgIAAIxOEQEAAEaniAAAAKNTRAAAgNEpIgAAwOgUEQAAYHSKCAAAMDpFBAAAGJ0iAgAAjE4RAQAA
RqeIAAAAo1NEAACA0SkiAADA6BQRAABgdIoIAAAwOkUEAAAYnSICAACMThEBAABGp4gAAACjU0QA
AIDRKSIAAMDoFBEAAGB0iggAADA6RQQAABidIgIAAIxOEQEAAEaniAAAAKNTRAAAgNEpIgAAwOgU
EQAAYHSKCAAAMDpFBAAAGJ0iAgAAjE4RAQAARqeIAAAAo7tn3QsADPOGN7why+Uyu3u7Wb70v2dv
bze/vVjkO3fnWRwsMpvNslwuM9+dZ7Hcz+7R/bfNstw/yN5snpeWL2U+28vLi0Xe+rZ5Xtpf3vr5
+4vM3jbPYrHIfN59fTabZbFcZj6bZfHyIvO3zo+/fvffLjKbzY/XZW2T0iQ1JSX1pnV99JVSSlJr
aq0pSUrTpNbaTVFKUsupqW+YQcnqPyePv87Ux9+r1npX3rYpKbXNjS+kpKZbM2dfR+rRq+wer7Wm
acrJl9NNU5qaWm9+fk09NY+Tx+uZe9NZf7XW0wuasr/MotTVNrmf5GTbXKQmzcFqmyvZWyT7taZk
L7OySGazHCwXabOX+awkeemm58+zTFnMs5+S+fzU9rdI6jxZHjSZ7Z76ed7lSk3+nz//2roXAxig
XL9+vT7yyCPrXg6gpze84Q3H/xakBWlBelpBupZlklmWtSRNzaxNliXZLclOLWlr7TaOZUmySDLL
Yl6yt2jT1pKX95aZ7c/Tzo/emossajJfzlJ3u7dzkpSD7jdCafdT50nJPDXdW73ZXyTzedosU2pN
yvzWC3wX+trXFBGYquvXrzs1CzZJ2elum9wcxkopadKdj3k6fJfmdKBskjYp5dbP735j1OSG+U8n
+p11toSUlP2DLJfL1DTpQt+J/dpmv1nmpbLIfjlIWS6zXC6z2C/JcpkkOVjuZ3FQUuvOLZ+fukhZ
lCwWZ3/1NqtJlwc3/0o++tncjbelJkn32pdtstjbzWx3lmVqapmnSTluqPNlk/l+sreYpysYu5ll
nrK3SKnz1JTszvYyny+yyH6ynOd0z9k7aJKDvSSLzOf7x8Wt63uLlCS7u/tJPbve72anu2ptklJL
lgfLZJkcLA7SlkUWL3frtyQptSsIpSb7s4OUZvXIXveeL6We3SNQag7KQTf/2naPNbMkyWK5TFLT
rL5WFkkpu0kz1XczMEWKCGwKQfq2bwXpYQTpO2feJrvLZDabpdmtaWe7Wbw0y95sN0my2D19BLJN
U5OD1LR1NzX7aWvJ4iDpts3Zasqd1NVugjJL9mf7qW33Q5tnlmSRRUlqW1LfVrqjMvVto71mAEUE
Jk+Q7kuQvnME6YGapMy7baI2TZo2mTdJu3g5STIvSS3de6tmJ/Xlmll7dArmPG1J5m9NFqePZpY2
u4u9JElbSpq6l8Xq98VqraaWZJFl2rZmtyYpy7FeMYAiAptCkB5GkB5IkO5pta2UZJndlDSp9TBN
U9PWkoPZ6vFFWR3BK6mlZrY7T5uaUl5O9ku30yEl8/0mTRY5+gDIwe5+km53xXyZzMu8O02zlCSH
mR/WzMu8O2WzWXYfNJuI0ztKgGlSRGBDCNIDCdI9CdJ9nQ7Si8OkXSyyvzxIWRykzTIv7y2yu1y9
/pLsz2fJbJG9xTLLcpCD5iDtS7Ok7KcpNfvLgxyU/ewmqfPuKGVWnxsri6RmP8uyyGIxy6ImyXcm
pWRZFsl+styfpTR7464EYKsZvhc2xSpI17y1C9KHNbMmqYuXU2a7p4L0LDU7ycs187Z0oxndGKSP
zllaBekyWwXptgvS81U9KaeC9KydZbcehcHZOQt6tzkVpOtuZsdBuqStTV6ez7opVkG6li5Iz3fn
qYujID1LsxpoaL5fcjDf74ZxWgXpWZkfB+la5illsRpFqwvSWQXpOsEgfTQq0+IwaQ8W2c9OSj1M
O09e3ivZXdaU2TzLkrSzWeZZZm9ZspwnaeqpID3P/uLlNDk8FaT3uiDdroJ03c+ylGQxS2rJ7FSQ
nu/PsiyzzN82qVV4bK/U1PmsKyelyUFqZrWkzLt32u5u7XYd7h+tx5q6m9RSU+o8bUpms38/Tcrx
z+SwJrvtPCXpRiKrs64qNiXZ78Zqq6nZfesspUlm7Wp+rzuGG8CdpYjA5AnSfQnSd44gPVxtk6aU
1NqmXZTuMGddDe7cpDtKNJ+dGV66qTWrgbezs3qkZidNana6Y05Jsjr6VNOkG256URaZZ57UmqaU
tLUb+ruptxr4G+BquI4ITNzRdUQWtSQH+0l20tTD1HmSUrK76IL0wbKkna2uxbAsWcyTLGvq4Tzz
Zj9lfipIz7K6tsVels1+Zu08y2Uyq4ssm7I64lEym3WRZXmwzPxwlkXJpIL06SJS0oXY4yBda2Yp
ydERoppVkF6mzudpsgqApabUsgp8bXeK0Wryw1X27k466gJmPRWk6/zo2iJdCMzEgvSN669dhdqa
mv1Fyd78KCI3N1xsZhWu050mWNNd02Un6YJ06YL00foqx89ou1O/UrJY7mc+m3fXcimlO0JXVtfm
GHMlDNCtv+46IvTjOiIwXdevX1dEYOqOioggffsE6WEE6TvB+htCEYHpckFD2DC1TXdqS23TLpKu
Gaxi7ZlTO9rjsNusrqheszptI3VVR0p2TkXiNjUpNU138fDsl0U3w3rytTRZfeh4SroPh9dkdbpZ
kpTszbvb4zE9zrSDk9dYV1WtOZ6kW/91dUpNOfOMZjVNzXy2GsFs9T3L6ntMpYQkJyUOAPpQRGDy
BOm+BGkAWB9FBADWpBSnZfXlOiIwfYoIAL0J0v0J0sC2U0SArSZI9ydIAzCEIgITJ0j3J0gDwPoo
IgCwJrUuX/exUmveX5IXlsuTP9a1ZLl4MSWPvs6TSl54X8mjLyxSSjcq3k3zuGkhkuUL70t934ur
MaRLfvr+uhqa+XW+TZocLF9IymNJkoOPlywWiywPDpK8dMGrvjMMNgHTp4gA0Jsg3d9FQbqW5Imn
km8sJbU+lSS5Vtokb0q99oFbPqetNfc+cS1PvmkntZa0t5jHzcvRJN/4eH7uiTd11wQ6rHngIwfn
Ltu1tEl9U/Kz3XLUf/d4CZLJDeENrIsiAmw1Qbo/QfqqNanf+5/n2mw39YNvT5K8/cmS2fypfODt
t37GTkl+vnxvyrXdlPL4LedxoyfLYebXSr6nPpWkpi0l/9P5qy/f80Qy/86n8oG3r85vrDXz+TxP
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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243795</attachid>
            <date>2014-12-29 07:30:33 -0800</date>
            <delta_ts>2015-01-08 02:20:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>24031</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3YmMzNGU4MDFiOWU1NmVmODczMmY4ZGQwODg2YTFiODY0NTM4Mjc1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDkgRGVjIDIwMTQgMTk6MDI6NDMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAzNyArKysKIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlICAgICAg
ICAgICAgICAgICAgIHwgIDEwICsKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgIHwgIDMxICsrKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Np
bmtHU3RyZWFtZXIuY3BwICAgICAgfCAzMDIgKysrKysrKysrKysrKysrKysrKystCiBTb3VyY2Uv
Y21ha2UvRmluZEdTdHJlYW1lci5jbWFrZSAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBTb3Vy
Y2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQog
NyBmaWxlcyBjaGFuZ2VkLCAzOTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGQ2YTE0NTMuLjY2NGZkZmMgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
NC0xMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dTdHJlYW1lcl0gR3N0R0wgc3VwcG9ydCBpbiB0aGUgdmlkZW8gc2luaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTYyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmlu
ZEdTdHJlYW1lci5jbWFrZTogTG9va3VwIHRoZSBHc3RHTCBsaWJyYXJ5IGFuZCBoZWFkZXJzLgor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOiBUdXJuIG9uIHRoZSBVU0Uo
R1NUUkVBTUVSX0dMKQorICAgICAgICBtYWNybyBpZiBHc3RHTCB3YXMgZm91bmQuCisKIDIwMTQt
MTItMjMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgU2lt
cGxpZnkgYnVpbGRpbmcgd2l0aCBBU2FuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNlNGE2NS4uOGZmYzg3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTEyLTA5ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBHc3RHTCBzdXBw
b3J0IGluIHRoZSB2aWRlbyBzaW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzg1NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJZiBhIHJlY2VudCBlbm91Z2ggKD49IDEuNSkgR1N0cmVhbWVyIHZlcnNp
b24gaXMgYXZhaWxhYmxlIHRoZW4KKyAgICAgICAgdGhlIHZpZGVvIHNpbmsgd2lsbCB1c2UgdGhl
IEdzdEdMIGxpYnJhcnkgdG8gZW1iZWQgYSBHTCB0ZXh0dXJlIGluCisgICAgICAgIGVhY2ggR3N0
QnVmZmVyIHRvIGJlIHJlbmRlcmVkIHZpYSB0aGUgVGV4dHVyZU1hcHBlci4gSW4gdGhpcworICAg
ICAgICBzY2VuYXJpbyBhIEdQVS1HUFUgdGV4dHVyZSBjb3B5IHdpbGwgYmUgcGVyZm9ybWVkLiBG
b3IgdGhpcyB0byBiZQorICAgICAgICBwb3NzaWJsZSB0aGUgR0wgY29udGV4dCB1c2VkIHdpdGhp
biBXZWJLaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGgKKyAgICAgICAgdGhlIEdMIGNvbnRleHQg
dXNlZCBieSBHc3RHTC4gRm9yIG5vdyB3ZSBzdXBwb3J0IG9ubHkgdGhlIEdMWC9YMTEKKyAgICAg
ICAgc2hhcmluZyBjb250ZXh0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZXhpc3RpbmcgbWVk
aWEgdGVzdHMgd2lsbCBjb3ZlciB0aGlzIGNoYW5nZSBvbmNlIHRoZQorICAgICAgICBidWlsZGJv
dHMgaGF2ZSBHU3RyZWFtZXIgPj0gMS41LgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IFVzZSBHc3RHTCBsaWJyYXJ5IGZvciB0aGUgYnVpbGQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4
dHVyZSk6IERvIGEKKyAgICAgICAgR1BVLUdQVSB0ZXh0dXJlIGlmIHRoZSBidWZmZXIgYWxyZWFk
eSBoYXMgYSBHTCB0ZXh0dXJlIGF2YWlsYWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKF9XZWJLaXRWaWRl
b1NpbmtQcml2YXRlOjpfV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSk6IFVzZSBhIG11dGV4CisgICAg
ICAgIGFuZCBjb25kaXRpb24gc28gYXMgdG8gZ2V0IHRoZSBXZWJLaXQgR0wgY29udGV4dCBmcm9t
IHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgKF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlOjp+X1dl
YktpdFZpZGVvU2lua1ByaXZhdGUpOgorICAgICAgICAod3JhcEdMQ29udGV4dENhbGxiYWNrKTog
V3JhcCB0aGUgV2ViS2l0IEdMIGNvbnRleHQgaW4gYSBHc3RHTCBjb250ZXh0LgorICAgICAgICAo
d2Via2l0VmlkZW9TaW5rU3RvcCk6IEZyZWUgYnVmZmVyIHBvb2wgYW5kIHByZS1hbGxvY2F0ZWQg
YnVmZmVyLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rU2V0Q2Fwcyk6IENyZWF0ZSB0aGUgR3N0
R0xVcGxvYWQgdGhhdCB3aWxsIHRha2UKKyAgICAgICAgY2FyZSBvZiB1cGRhdGluZyB0aGUgYnVm
ZmVyJ3MgdGV4dHVyZSBhbmQgdXBkYXRlIGNhcHMgYWNjb3JkaW5nbHkuCisgICAgICAgICh3ZWJr
aXRWaWRlb1NpbmtQcmVwYXJlKTogVXBkYXRlIHRoZSBidWZmZXIncyB0ZXh0dXJlIGJlZm9yZSBy
ZW5kZXJpbmcuCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbik6IFBy
ZXBhcmUgYSBidWZmZXIgcG9vbCwgc2V0IHRoZQorICAgICAgICBHTCBjb250ZXh0IHVwIGFuZCB1
cGRhdGUgdGhlIG1ldGEgaW5mb3JtYXRpb25zIHN1cHBvcnRlZCBieSB0aGUgc2luay4KKyAgICAg
ICAgKHdlYmtpdFZpZGVvU2lua1NldENvbnRleHQpOiBQYXNzLXRocm91Z2ggdGhlIGNvbnRleHQg
dG8gR3N0R0wuCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtRdWVyeSk6IEJhc2ljIHN1cHBvcnQg
Zm9yIGNvbnRleHQgcXVlcmllcy4KKyAgICAgICAgKHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2lu
aXQpOgorCiAyMDE0LTEyLTI5ICBTZWJhc3RpYW4gRHLDtmdlICA8c2ViYXN0aWFuQGNlbnRyaWN1
bGFyLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBSZXdyaXRlIE1lZGlhU291cmNlIGltcGxl
bWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDFiZjY3M2EuLjIzMmI2NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zNTEsNiArMzUxLDE2IEBAIGlmIChFTkFC
TEVfVklERU8pCiAgICAgICAgICAgICAke0dTVFJFQU1FUl9NUEVHVFNfTElCUkFSSUVTfQogICAg
ICAgICApCiAgICAgZW5kaWYgKCkKKworICAgIGlmIChVU0VfR1NUUkVBTUVSX0dMKQorICAgICAg
ICBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgICAgICR7
R1NUUkVBTUVSX0dMX0lOQ0xVREVfRElSU30KKyAgICAgICAgKQorCisgICAgICAgIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfTElCUkFSSUVTCisgICAgICAgICAgICAke0dTVFJFQU1FUl9HTF9MSUJSQVJJ
RVN9CisgICAgICAgICkKKyAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XRUJf
QVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKaW5kZXggNDRkZTc1Ni4uMGJiOGFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNDQsNiArNDQsMTIgQEAK
ICNpbmNsdWRlIDxnc3QvYXVkaW8vc3RyZWFtdm9sdW1lLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVv
L2dzdHZpZGVvbWV0YS5oPgogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyNkZWZpbmUgR1NUX1VT
RV9VTlNUQUJMRV9BUEkKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xtZW1vcnkuaD4KKyN1bmRlZiBH
U1RfVVNFX1VOU1RBQkxFX0FQSQorI2VuZGlmCisKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAx
LCAwKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdM
LmgiCiAjZW5kaWYKQEAgLTI5NSw2ICszMDEsMzEgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmUK
ICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0lu
Zm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwogICAgIFJlZlB0cjxCaXRt
YXBUZXh0dXJlPiB0ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9v
bChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0
dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICAgICBHc3RCdWZm
ZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZSk7CisgICAgY29uc3Qg
Qml0bWFwVGV4dHVyZUdMKiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0
dXJlR0wqPih0ZXh0dXJlLmdldCgpKTsKKyAgICB1aW50MzJfdCB0ZXh0dXJlSUQgPSB0ZXh0dXJl
R0wtPmlkKCk7CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIEdzdE1lbW9yeSogYnVmZmVy
TWVtb3J5OworICAgIEdzdE1hcEluZm8gbWFwSW5mbzsKKyAgICBpZiAoIWdzdF9idWZmZXJfbWFw
KGJ1ZmZlciwgJm1hcEluZm8sIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQg
fCBHU1RfTUFQX0dMKSkpIHsKKyAgICAgICAgV0FSTl9NRURJQV9NRVNTQUdFKCJGYWlsZWQgdG8g
bWFwIGJ1ZmZlciIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKGdz
dF9idWZmZXJfbl9tZW1vcnkoYnVmZmVyKSA+PSAxKSB7CisgICAgICAgIGlmICgoYnVmZmVyTWVt
b3J5ID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeShidWZmZXIsIDApKSAmJiBnc3RfaXNfZ2xfbWVt
b3J5KGJ1ZmZlck1lbW9yeSkpIHsKKyAgICAgICAgICAgIEdzdEdMTWVtb3J5KiBnbE1lbW9yeSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0R0xNZW1vcnkqPihidWZmZXJNZW1vcnkpOworICAgICAgICAg
ICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleHR1cmVUeXBlID0gZ3N0X2dsX3RleHR1cmVfdHlw
ZV9mcm9tX2Zvcm1hdChnbE1lbW9yeS0+Y29udGV4dCwgR1NUX1ZJREVPX0lORk9fRk9STUFUKCZ2
aWRlb0luZm8pLCAwKTsKKworICAgICAgICAgICAgZ2Jvb2xlYW4gY29waWVkID0gZ3N0X2dsX21l
bW9yeV9jb3B5X2ludG9fdGV4dHVyZShnbE1lbW9yeSwgdGV4dHVyZUlELCB0ZXh0dXJlVHlwZSwg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUo
JnZpZGVvSW5mbywgMCksIHRydWUgLyogcmVzcGVjaWZ5ICovKTsKKyAgICAgICAgICAgIGlmIChj
b3BpZWQpIHsKKyAgICAgICAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJm1hcElu
Zm8pOworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgV0FSTl9NRURJQV9NRVNTQUdFKCJUZXh0dXJlIGNvcHkgZmFpbGVkLCB0cnlpbmcg
ZmFsbGJhY2sgc2xvdyBwYXRoLiIpOworICAgICAgICB9CisgICAgfQorICAgIGdzdF9idWZmZXJf
dW5tYXAoYnVmZmVyLCAmbWFwSW5mbyk7CisjZW5kaWYKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9O
KDEsIDEsIDApCiAgICAgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKiBtZXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCAyNTVlNzYwLi5jZDEzMjJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5r
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtMzUsOSArMzUsMzIgQEAKICNpbmNsdWRl
IDxnbGliLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2
aWRlb21ldGEuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9wb29sLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNdXRleExvY2tlci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dUaHJlYWRTYWZlTWFpbkxvb3BTb3VyY2UuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQor
I2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGNvbnRl
eHQuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xkaXNwbGF5Lmg+CisjdW5kZWYgR1NUX1VTRV9V
TlNUQUJMRV9BUEkKKworI2lmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VHTAorI2luY2x1ZGUgPGdz
dC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGdzdC9nbC9n
c3RnbHV0aWxzLmg+CisKKyNpZiBQTEFURk9STShYMTEpCisjaW5jbHVkZSA8Z3N0L2dsL3gxMS9n
c3RnbGRpc3BsYXlfeDExLmg+CisjZW5kaWYKKworI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2lm
IFVTRShHTFgpCisjaW5jbHVkZSAiR0xDb250ZXh0R0xYLmgiCisjZW5kaWYKKyNlbmRpZiAvLyBV
U0UoR1NUUkVBTUVSX0dMKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDcsNyAr
NzAsMTggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZWxzZQogI2RlZmluZSBHU1RfQ0FQ
U19GT1JNQVQgInsgeFJHQiwgQVJHQiB9IgogI2VuZGlmCi0jaWYgR1NUX0NIRUNLX1ZFUlNJT04o
MSwgMSwgMCkKKworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisKKyNpZiBHU1RfR0xfSEFWRV9QTEFU
Rk9STV9FR0wKKyNkZWZpbmUgRUdMX0NBUFMgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRV
UkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0VHTF9JTUFHRSwgIlJHQkEiKSAiOyAiCisjZWxz
ZQorI2RlZmluZSBFR0xfQ0FQUworI2VuZGlmCisKKyNkZWZpbmUgR1NUX0ZFQVRVUkVEX0NBUFMg
R1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZ
X0dMX01FTU9SWSwgR1NUX0NBUFNfRk9STUFUKSAiOyAiIEVHTF9DQVBTIEdTVF9WSURFT19DQVBT
X01BS0VfV0lUSF9GRUFUVVJFUyhHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX0dMX1RF
WFRVUkVfVVBMT0FEX01FVEEsICJSR0JBIikgIjsiCisKKyNlbGlmIEdTVF9DSEVDS19WRVJTSU9O
KDEsIDEsIDApCiAjZGVmaW5lIEdTVF9GRUFUVVJFRF9DQVBTIEdTVF9WSURFT19DQVBTX01BS0Vf
V0lUSF9GRUFUVVJFUyhHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX0dMX1RFWFRVUkVf
VVBMT0FEX01FVEEsIEdTVF9DQVBTX0ZPUk1BVCkgIjsiCiAjZWxzZQogI2RlZmluZSBHU1RfRkVB
VFVSRURfQ0FQUwpAQCAtNzMsNiArMTA3LDEwIEBAIHN0cnVjdCBfV2ViS2l0VmlkZW9TaW5rUHJp
dmF0ZSB7CiAgICAgewogICAgICAgICBnX211dGV4X2luaXQoJnNhbXBsZU11dGV4KTsKICAgICAg
ICAgZ19jb25kX2luaXQoJmRhdGFDb25kaXRpb24pOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisg
ICAgICAgIGdfbXV0ZXhfaW5pdCgmY29udGV4dE11dGV4KTsKKyAgICAgICAgZ19jb25kX2luaXQo
JmNvbnRleHRDb25kaXRpb24pOworI2VuZGlmCiAgICAgICAgIGdzdF92aWRlb19pbmZvX2luaXQo
JmluZm8pOwogICAgIH0KIApAQCAtODAsNiArMTE4LDEwIEBAIHN0cnVjdCBfV2ViS2l0VmlkZW9T
aW5rUHJpdmF0ZSB7CiAgICAgewogICAgICAgICBnX211dGV4X2NsZWFyKCZzYW1wbGVNdXRleCk7
CiAgICAgICAgIGdfY29uZF9jbGVhcigmZGF0YUNvbmRpdGlvbik7CisjaWYgVVNFKEdTVFJFQU1F
Ul9HTCkKKyAgICAgICAgZ19tdXRleF9jbGVhcigmY29udGV4dE11dGV4KTsKKyAgICAgICAgZ19j
b25kX2NsZWFyKCZjb250ZXh0Q29uZGl0aW9uKTsKKyNlbmRpZgogICAgIH0KIAogICAgIEdzdFNh
bXBsZSogc2FtcGxlOwpAQCAtMTAwLDE2ICsxNDIsNzAgQEAgc3RydWN0IF9XZWJLaXRWaWRlb1Np
bmtQcml2YXRlIHsKICAgICAvLwogICAgIC8vIFByb3RlY3RlZCBieSB0aGUgc2FtcGxlIG11dGV4
CiAgICAgYm9vbCB1bmxvY2tlZDsKKworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgR3N0Q2Fw
cyogZ2xDYXBzOworICAgIEdzdEJ1ZmZlclBvb2wqIHBvb2w7CisgICAgR3N0R0xEaXNwbGF5KiBk
aXNwbGF5OworICAgIEdzdEdMQ29udGV4dCogY29udGV4dDsKKyAgICBHc3RHTENvbnRleHQqIG90
aGVyQ29udGV4dDsKKyAgICBHTXV0ZXggY29udGV4dE11dGV4OworICAgIEdDb25kIGNvbnRleHRD
b25kaXRpb247CisKKyAgICBHc3RHTFVwbG9hZCogdXBsb2FkOworICAgIEdzdEJ1ZmZlciogbmV4
dEJ1ZmZlcjsKKyNlbmRpZgogfTsKIAogI2RlZmluZSB3ZWJraXRfdmlkZW9fc2lua19wYXJlbnRf
Y2xhc3MgcGFyZW50X2NsYXNzCiBHX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRWaWRlb1Np
bmssIHdlYmtpdF92aWRlb19zaW5rLCBHU1RfVFlQRV9WSURFT19TSU5LLCBHU1RfREVCVUdfQ0FU
RUdPUllfSU5JVCh3ZWJraXRWaWRlb1NpbmtEZWJ1ZywgIndlYmtpdHNpbmsiLCAwLCAid2Via2l0
IHZpZGVvIHNpbmsiKSk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorZ2Jvb2xlYW4gd3JhcEdM
Q29udGV4dENhbGxiYWNrKGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIFdlYktpdFZpZGVvU2lu
ayogc2luayA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0VmlkZW9TaW5rKj4odXNlckRhdGEpOwor
ICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYgPSBzaW5rLT5wcml2OworCisgICAgR011
dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5jb250ZXh0TXV0ZXgpOworCisgICAgR0Vycm9y
KiBlcnJvciA9IG51bGxwdHI7CisKKyAgICBpZiAoIXByaXYtPmRpc3BsYXkpCisgICAgICAgIHBy
aXYtPmRpc3BsYXkgPSBnc3RfZ2xfZGlzcGxheV9uZXcoKTsKKworICAgIGlmICghcHJpdi0+b3Ro
ZXJDb250ZXh0KSB7CisgICAgICAgIEdMQ29udGV4dCogd2Via2l0Q29udGV4dCA9IEdMQ29udGV4
dDo6c2hhcmluZ0NvbnRleHQoKTsKKyNpZiBQTEFURk9STShYMTEpCisgICAgICAgIERpc3BsYXkq
IGRpc3BsYXkgPSBHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKTsKKyAgICAgICAgR0xYQ29u
dGV4dCogZ2x4U2hhcmluZ0NvbnRleHQgPSByZWludGVycHJldF9jYXN0PEdMWENvbnRleHQqPih3
ZWJraXRDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgICAgIEdzdEdMRGlzcGxheVgx
MSogZ3N0R0xEaXNwbGF5ID0gZ3N0X2dsX2Rpc3BsYXlfeDExX25ld193aXRoX2Rpc3BsYXkoZGlz
cGxheSk7CisgICAgICAgIEdzdEdMUGxhdGZvcm0gcGxhdGZvcm0gPSBHU1RfR0xfUExBVEZPUk1f
R0xYOworICAgICAgICBHc3RHTEFQSSBnbEFwaSA9IGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50
X2dsX2FwaShudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGdseFNoYXJpbmdDb250ZXh0
KQorICAgICAgICAgICAgcHJpdi0+b3RoZXJDb250ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3X3dy
YXBwZWQoR1NUX0dMX0RJU1BMQVkoZ3N0R0xEaXNwbGF5KSwgcmVpbnRlcnByZXRfY2FzdDxndWlu
dHB0cj4oZ2x4U2hhcmluZ0NvbnRleHQpLCBwbGF0Zm9ybSwgZ2xBcGkpOworI2VuZGlmCisgICAg
fQorCisgICAgaWYgKCFwcml2LT5jb250ZXh0KSB7CisgICAgICAgIHByaXYtPmNvbnRleHQgPSBn
c3RfZ2xfY29udGV4dF9uZXcocHJpdi0+ZGlzcGxheSk7CisgICAgICAgIGlmICghZ3N0X2dsX2Nv
bnRleHRfY3JlYXRlKHByaXYtPmNvbnRleHQsIHByaXYtPm90aGVyQ29udGV4dCwgJmVycm9yKSkg
eworICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc2luaywgUkVTT1VSQ0UsIE5PVF9GT1VO
RCwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSwgKG51bGxwdHIpKTsKKyAgICAgICAgICAgIGdzdF9v
YmplY3RfdW5yZWYocHJpdi0+Y29udGV4dCk7CisgICAgICAgICAgICBwcml2LT5jb250ZXh0ID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIGdfY29uZF9zaWduYWwoJnByaXYtPmNvbnRleHRDb25kaXRp
b24pOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfQorCisgICAg
Z19jb25kX3NpZ25hbCgmcHJpdi0+Y29udGV4dENvbmRpdGlvbik7CisgICAgcmV0dXJuIEZBTFNF
OworfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2luaXQoV2ViS2l0
VmlkZW9TaW5rKiBzaW5rKQogewogICAgIHNpbmstPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUoc2luaywgV0VCS0lUX1RZUEVfVklERU9fU0lOSywgV2ViS2l0VmlkZW9TaW5rUHJp
dmF0ZSk7Ci0gICAgZ19vYmplY3Rfc2V0KEdTVF9CQVNFX1NJTksoc2luayksICJlbmFibGUtbGFz
dC1zYW1wbGUiLCBGQUxTRSwgTlVMTCk7CisgICAgZ19vYmplY3Rfc2V0KEdTVF9CQVNFX1NJTkso
c2luayksICJlbmFibGUtbGFzdC1zYW1wbGUiLCBGQUxTRSwgbnVsbHB0cik7CiAgICAgbmV3IChz
aW5rLT5wcml2KSBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKCk7CiB9CiAKQEAgLTExOSw3ICsyMTUs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2soV2ViS2l0Vmlk
ZW9TaW5rKiBzaW5rKQogCiAgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5zYW1w
bGVNdXRleCk7CiAgICAgR3N0U2FtcGxlKiBzYW1wbGUgPSBwcml2LT5zYW1wbGU7Ci0gICAgcHJp
di0+c2FtcGxlID0gMDsKKyAgICBwcml2LT5zYW1wbGUgPSBudWxscHRyOwogCiAgICAgaWYgKCFz
YW1wbGUgfHwgcHJpdi0+dW5sb2NrZWQgfHwgVU5MSUtFTFkoIUdTVF9JU19TQU1QTEUoc2FtcGxl
KSkpIHsKICAgICAgICAgZ19jb25kX3NpZ25hbCgmcHJpdi0+ZGF0YUNvbmRpdGlvbik7CkBAIC0y
MTksOCArMzE1LDExIEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRl
cihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgLy8gbG93ZXIgcHJp
b3JpdHkgc291cmNlcy4KICAgICAvLyBTZWU6IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3No
b3dfYnVnLmNnaT9pZD02MTA4MzAuCiAgICAgZ3N0X29iamVjdF9yZWYoc2luayk7Ci0gICAgcHJp
di0+dGltZW91dFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gd2Via2l0VmlkZW9TaW5rVGltZW91
dENhbGxiYWNrIiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KHN0ZDo6YmluZCh3ZWJraXRWaWRlb1Np
bmtUaW1lb3V0Q2FsbGJhY2ssIHNpbmspKSwgR19QUklPUklUWV9ERUZBVUxULAotICAgICAgICBb
c2lua10geyBnc3Rfb2JqZWN0X3VucmVmKHNpbmspOyB9KTsKKyAgICBwcml2LT50aW1lb3V0U291
cmNlLnNjaGVkdWxlKCJbV2ViS2l0XSB3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2siLAor
ICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oc3RkOjpiaW5kKHdlYmtpdFZpZGVvU2lua1Rp
bWVvdXRDYWxsYmFjaywgc2luaykpLAorICAgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQsIFtzaW5r
XSB7CisgICAgICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHNpbmspOworICAgICAgICB9KTsKIAog
ICAgIGdfY29uZF93YWl0KCZwcml2LT5kYXRhQ29uZGl0aW9uLCAmcHJpdi0+c2FtcGxlTXV0ZXgp
OwogICAgIHJldHVybiBHU1RfRkxPV19PSzsKQEAgLTIzOCw3ICszMzcsNyBAQCBzdGF0aWMgdm9p
ZCB1bmxvY2tTYW1wbGVNdXRleChXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2KQogCiAgICAg
aWYgKHByaXYtPnNhbXBsZSkgewogICAgICAgICBnc3Rfc2FtcGxlX3VucmVmKHByaXYtPnNhbXBs
ZSk7Ci0gICAgICAgIHByaXYtPnNhbXBsZSA9IDA7CisgICAgICAgIHByaXYtPnNhbXBsZSA9IG51
bGxwdHI7CiAgICAgfQogCiAgICAgcHJpdi0+dW5sb2NrZWQgPSB0cnVlOwpAQCAtMjY5LDE1ICsz
NjgsMzEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFZpZGVvU2lua1VubG9ja1N0b3AoR3N0QmFz
ZVNpbmsqIGJhc2VTaW5rKQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rU3RvcChH
c3RCYXNlU2luayogYmFzZVNpbmspCiB7Ci0gICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJp
diA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5rKS0+cHJpdjsKKyAgICBXZWJLaXRWaWRlb1Np
bmsqIHNpbmsgPSByZWludGVycHJldF9jYXN0X3B0cjxXZWJLaXRWaWRlb1NpbmsqPihiYXNlU2lu
ayk7CisgICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IHNpbmstPnByaXY7CiAKICAg
ICB1bmxvY2tTYW1wbGVNdXRleChwcml2KTsKIAogICAgIGlmIChwcml2LT5jdXJyZW50Q2Fwcykg
ewogICAgICAgICBnc3RfY2Fwc191bnJlZihwcml2LT5jdXJyZW50Q2Fwcyk7Ci0gICAgICAgIHBy
aXYtPmN1cnJlbnRDYXBzID0gMDsKKyAgICAgICAgcHJpdi0+Y3VycmVudENhcHMgPSBudWxscHRy
OwogICAgIH0KIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgR1NUX09CSkVDVF9MT0NLKHNp
bmspOworICAgIGlmIChwcml2LT5wb29sKQorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYt
PnBvb2wpOworICAgIHByaXYtPnBvb2wgPSBudWxscHRyOworICAgIEdTVF9PQkpFQ1RfVU5MT0NL
KHNpbmspOworCisgICAgZ3N0X2J1ZmZlcl9yZXBsYWNlKCZwcml2LT5uZXh0QnVmZmVyLCBudWxs
cHRyKTsKKworICAgIGlmIChwcml2LT51cGxvYWQpIHsKKyAgICAgICAgZ3N0X29iamVjdF91bnJl
Zihwcml2LT51cGxvYWQpOworICAgICAgICBwcml2LT51cGxvYWQgPSBudWxscHRyOworICAgIH0K
KyNlbmRpZgorCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTMwNiwxMyArNDIxLDU3IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtTZXRDYXBzKEdzdEJhc2VTaW5rKiBiYXNlU2lu
aywgR3N0Q2FwcyogY2FwcykKIAogICAgIHByaXYtPmluZm8gPSB2aWRlb0luZm87CiAgICAgZ3N0
X2NhcHNfcmVwbGFjZSgmcHJpdi0+Y3VycmVudENhcHMsIGNhcHMpOworCisjaWYgVVNFKEdTVFJF
QU1FUl9HTCkKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPmNvbnRleHRNdXRl
eCk7CisKKyAgICBnc3Rfb2JqZWN0X3JlZihzaW5rKTsKKyAgICBHTWFpbkxvb3BTb3VyY2U6OnNj
aGVkdWxlQW5kRGVsZXRlT25EZXN0cm95KCJbV2ViS2l0XVtnc3RdIEdMIGNvbnRleHQgd3JhcCIs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihzdGQ6OmJpbmQod3JhcEdMQ29udGV4dENhbGxiYWNrLCBz
aW5rKSksIEdfUFJJT1JJVFlfREVGQVVMVCwgW3NpbmtdIHsKKyAgICAgICAgZ3N0X29iamVjdF91
bnJlZihzaW5rKTsKKyAgICB9KTsKKworICAgIGdfY29uZF93YWl0KCZzaW5rLT5wcml2LT5jb250
ZXh0Q29uZGl0aW9uLCAmc2luay0+cHJpdi0+Y29udGV4dE11dGV4KTsKKworICAgIGlmIChwcml2
LT51cGxvYWQpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocHJpdi0+dXBsb2FkKTsKKyAgICBw
cml2LT51cGxvYWQgPSBnc3RfZ2xfdXBsb2FkX25ldyhwcml2LT5jb250ZXh0KTsKKworICAgIEdz
dENhcHNGZWF0dXJlcyogZ2xGZWF0dXJlcyA9IGdzdF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5n
KEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7CisgICAgaWYgKHByaXYtPmdsQ2Fw
cykKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYocHJpdi0+Z2xDYXBzKTsKKyAgICBwcml2LT5nbENh
cHMgPSBnc3RfY2Fwc19jb3B5KGNhcHMpOworICAgIGdzdF9jYXBzX3NldF9zaW1wbGUocHJpdi0+
Z2xDYXBzLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIlJHQkEiLCBudWxscHRyKTsKKyAgICBn
c3RfY2Fwc19zZXRfZmVhdHVyZXMocHJpdi0+Z2xDYXBzLCAwLCBnbEZlYXR1cmVzKTsKKworICAg
IGdzdF9nbF91cGxvYWRfc2V0X2NhcHMocHJpdi0+dXBsb2FkLCBjYXBzLCBwcml2LT5nbENhcHMp
OworI2VuZGlmCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQor
c3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUHJlcGFyZShHc3RCYXNlU2luayog
YmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIFdlYktpdFZpZGVvU2luayogc2lu
ayA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5rKTsKKyAgICBXZWJLaXRWaWRlb1NpbmtQcml2
YXRlKiBwcml2ID0gc2luay0+cHJpdjsKKyAgICBHc3RCdWZmZXIqIG5leHRCdWZmZXIgPSBudWxs
cHRyOworCisgICAgaWYgKCFnc3RfZ2xfdXBsb2FkX3BlcmZvcm1fd2l0aF9idWZmZXIocHJpdi0+
dXBsb2FkLCBidWZmZXIsICZuZXh0QnVmZmVyKSkgeworICAgICAgICBHU1RfRUxFTUVOVF9FUlJP
UihzaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwgIkZhaWxlZCB0byB1cGxvYWQgYnVm
ZmVyIiksIChudWxscHRyKSk7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9
CisKKyAgICBnc3RfYnVmZmVyX3JlcGxhY2UoJnByaXYtPm5leHRCdWZmZXIsIG5leHRCdWZmZXIp
OworICAgIGdzdF9idWZmZXJfdW5yZWYobmV4dEJ1ZmZlcik7CisgICAgcmV0dXJuIEdTVF9GTE9X
X09LOworfQorI2VuZGlmCisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtQcm9wb3Nl
QWxsb2NhdGlvbihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdFF1ZXJ5KiBxdWVyeSkKIHsKICAg
ICBHc3RDYXBzKiBjYXBzOwotICAgIGdzdF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uKHF1ZXJ5LCAm
Y2FwcywgMCk7CisgICAgZ2Jvb2xlYW4gbmVlZFBvb2w7CisKKyAgICBnc3RfcXVlcnlfcGFyc2Vf
YWxsb2NhdGlvbihxdWVyeSwgJmNhcHMsICZuZWVkUG9vbCk7CiAgICAgaWYgKCFjYXBzKQogICAg
ICAgICByZXR1cm4gRkFMU0U7CiAKQEAgLTMyMCwxNCArNDc5LDEzMiBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0VmlkZW9TaW5rUHJvcG9zZUFsbG9jYXRpb24oR3N0QmFzZVNpbmsqIGJhc2VTaW5r
LCBHc3RRdWVyeQogICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZzaW5rLT5wcml2
LT5pbmZvLCBjYXBzKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCisgICAgR3N0U3RydWN0dXJl
KiBnbENvbnRleHQgPSBudWxscHRyOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgR1NUX0RF
QlVHX09CSkVDVChzaW5rLCAicHJvcG9zZSBhbGxvY2F0aW9uIik7CisgICAgR011dGV4TG9ja2Vy
PEdNdXRleD4gbG9jayhzaW5rLT5wcml2LT5jb250ZXh0TXV0ZXgpOworCisgICAgZ3N0X29iamVj
dF9yZWYoc2luayk7CisgICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVz
dHJveSgiW1dlYktpdF1bZ3N0XSBHTCBjb250ZXh0IHdyYXAiLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4oc3RkOjpiaW5kKHdyYXBHTENvbnRleHRDYWxsYmFjaywgc2luaykpLCBHX1BSSU9SSVRZX0RF
RkFVTFQsIFtzaW5rXSB7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYoc2luayk7CisgICAgfSk7
CisKKyAgICBnX2NvbmRfd2FpdCgmc2luay0+cHJpdi0+Y29udGV4dENvbmRpdGlvbiwgJnNpbmst
PnByaXYtPmNvbnRleHRNdXRleCk7CisKKyAgICBHc3RCdWZmZXJQb29sKiBwb29sOworICAgIEdz
dEFsbG9jYXRvciogYWxsb2NhdG9yID0gbnVsbHB0cjsKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1z
IHBhcmFtczsKKyAgICBHc3RTdHJ1Y3R1cmUqIGNvbmZpZzsKKyAgICBndWludCBzaXplOworCisg
ICAgaWYgKChwb29sID0gc2luay0+cHJpdi0+cG9vbCkpCisgICAgICAgIGdzdF9vYmplY3RfcmVm
KHBvb2wpOworCisgICAgaWYgKHBvb2wpIHsKKyAgICAgICAgR3N0Q2FwcyogcGNhcHM7CisKKyAg
ICAgICAgLy8gV2UgaGFkIGEgcG9vbCwgY2hlY2sgaXRzIGNhcHMuCisgICAgICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc2luaywgImNoZWNrIGV4aXN0aW5nIHBvb2wgY2FwcyIpOworICAgICAgICBjb25m
aWcgPSBnc3RfYnVmZmVyX3Bvb2xfZ2V0X2NvbmZpZyhwb29sKTsKKyAgICAgICAgZ3N0X2J1ZmZl
cl9wb29sX2NvbmZpZ19nZXRfcGFyYW1zKGNvbmZpZywgJnBjYXBzLCAmc2l6ZSwgMCwgMCk7CisK
KyAgICAgICAgaWYgKCFnc3RfY2Fwc19pc19lcXVhbChjYXBzLCBwY2FwcykpIHsKKyAgICAgICAg
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2luaywgInBvb2wgaGFzIGRpZmZlcmVudCBjYXBzIik7Cisg
ICAgICAgICAgICAvLyBEaWZmZXJlbnQgY2Fwcywgd2UgY2FuJ3QgdXNlIHRoaXMgcG9vbC4KKyAg
ICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocG9vbCk7CisgICAgICAgICAgICBwb29sID0gbnVs
bHB0cjsKKyAgICAgICAgfQorICAgICAgICBnc3Rfc3RydWN0dXJlX2ZyZWUoY29uZmlnKTsKKyAg
ICB9CisKKyAgICBpZiAobmVlZFBvb2wgJiYgIXBvb2wpIHsKKyAgICAgICAgR3N0VmlkZW9JbmZv
IGluZm87CisKKyAgICAgICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNh
cHMpKSB7CisgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNpbmssICJpbnZhbGlkIGNhcHMg
c3BlY2lmaWVkIik7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHNpbmssICJjcmVhdGUgbmV3IHBvb2wgd2l0aCBjYXBzICUi
IEdTVF9QVFJfRk9STUFULCBjYXBzKTsKKyAgICAgICAgcG9vbCA9IGdzdF9nbF9idWZmZXJfcG9v
bF9uZXcoc2luay0+cHJpdi0+Y29udGV4dCk7CisKKyAgICAgICAgLy8gVGhlIG5vcm1hbCBzaXpl
IG9mIGEgZnJhbWUuCisgICAgICAgIHNpemUgPSBpbmZvLnNpemU7CisKKyAgICAgICAgY29uZmln
ID0gZ3N0X2J1ZmZlcl9wb29sX2dldF9jb25maWcocG9vbCk7CisgICAgICAgIGdzdF9idWZmZXJf
cG9vbF9jb25maWdfc2V0X3BhcmFtcyhjb25maWcsIGNhcHMsIHNpemUsIDAsIDApOworICAgICAg
ICBpZiAoIWdzdF9idWZmZXJfcG9vbF9zZXRfY29uZmlnKHBvb2wsIGNvbmZpZykpIHsKKyAgICAg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2luaywgImZhaWxlZCBzZXR0aW5nIGNvbmZpZyIpOwor
ICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHBv
b2wpIHsKKyAgICAgICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX3Bvb2wocXVlcnksIHBvb2ws
IHNpemUsIDIsIDApOworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHBvb2wpOworICAgIH0KKwor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBsYXRmb3JtKGdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmco
Z3N0X2dsX2NvbnRleHRfZ2V0X2dsX3BsYXRmb3JtKHNpbmstPnByaXYtPmNvbnRleHQpKSk7Cisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZ2xBcGlzKGdzdF9nbF9hcGlfdG9fc3RyaW5nKGdzdF9nbF9j
b250ZXh0X2dldF9nbF9hcGkoc2luay0+cHJpdi0+Y29udGV4dCkpKTsKKyAgICBncG9pbnRlciBo
YW5kbGUgPSByZWludGVycHJldF9jYXN0X3B0cjxncG9pbnRlcj4oZ3N0X2dsX2NvbnRleHRfZ2V0
X2dsX2NvbnRleHQoc2luay0+cHJpdi0+Y29udGV4dCkpOworCisgICAgZ2xDb250ZXh0ID0gZ3N0
X3N0cnVjdHVyZV9uZXcoIkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSIsICJnc3QuZ2wuR3N0
R0xDb250ZXh0IiwKKyAgICAgICAgR1NUX0dMX1RZUEVfQ09OVEVYVCwgc2luay0+cHJpdi0+Y29u
dGV4dCwgImdzdC5nbC5jb250ZXh0LmhhbmRsZSIsCisgICAgICAgIEdfVFlQRV9QT0lOVEVSLCBo
YW5kbGUsICJnc3QuZ2wuY29udGV4dC50eXBlIiwgR19UWVBFX1NUUklORywgcGxhdGZvcm0uZ2V0
KCksCisgICAgICAgICJnc3QuZ2wuY29udGV4dC5hcGlzIiwgR19UWVBFX1NUUklORywgZ2xBcGlz
LmdldCgpLCBudWxscHRyKTsKKyNlbmRpZgorCiAgICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9u
X21ldGEocXVlcnksIEdTVF9WSURFT19NRVRBX0FQSV9UWVBFLCAwKTsKICAgICBnc3RfcXVlcnlf
YWRkX2FsbG9jYXRpb25fbWV0YShxdWVyeSwgR1NUX1ZJREVPX0NST1BfTUVUQV9BUElfVFlQRSwg
MCk7CiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKLSAgICBnc3RfcXVlcnlfYWRkX2Fs
bG9jYXRpb25fbWV0YShxdWVyeSwgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVVBMT0FEX01FVEFfQVBJ
X1RZUEUsIDApOworICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9tZXRhKHF1ZXJ5LCBHU1Rf
VklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQV9BUElfVFlQRSwgZ2xDb250ZXh0KTsKKyNlbmRp
ZgorCisgICAgaWYgKGdsQ29udGV4dCkKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlKGdsQ29u
dGV4dCk7CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGdzdF9hbGxvY2F0aW9uX3BhcmFt
c19pbml0KCZwYXJhbXMpOworICAgIGFsbG9jYXRvciA9IGdzdF9hbGxvY2F0b3JfZmluZChHU1Rf
R0xfTUVNT1JZX0FMTE9DQVRPUik7CisgICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX3BhcmFt
KHF1ZXJ5LCBhbGxvY2F0b3IsICZwYXJhbXMpOworICAgIGdzdF9vYmplY3RfdW5yZWYoYWxsb2Nh
dG9yKTsKKyNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wKKyAgICBpZiAoZ3N0X2dsX2NvbnRl
eHRfY2hlY2tfZmVhdHVyZShzaW5rLT5wcml2LT5jb250ZXh0LCAiRUdMX0tIUl9pbWFnZV9iYXNl
IikpIHsKKyAgICAgICAgYWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kKEdTVF9FR0xfSU1B
R0VfTUVNT1JZX1RZUEUpOworICAgICAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fcGFyYW0o
cXVlcnksIGFsbG9jYXRvciwgJnBhcmFtcyk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYoYWxs
b2NhdG9yKTsKKyAgICB9CisjZW5kaWYKICNlbmRpZgogICAgIHJldHVybiBUUlVFOwogfQogCisj
aWYgVVNFKEdTVFJFQU1FUl9HTCkKK3N0YXRpYyB2b2lkIHdlYmtpdFZpZGVvU2lua1NldENvbnRl
eHQoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBXZWJL
aXRWaWRlb1NpbmsqIHNpbmsgPSAgV0VCS0lUX1ZJREVPX1NJTksoZWxlbWVudCk7CisgICAgZ3N0
X2dsX2hhbmRsZV9zZXRfY29udGV4dChlbGVtZW50LCBjb250ZXh0LCAmc2luay0+cHJpdi0+ZGlz
cGxheSwgJnNpbmstPnByaXYtPm90aGVyQ29udGV4dCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3
ZWJraXRWaWRlb1NpbmtRdWVyeShHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdFF1ZXJ5KiBxdWVy
eSkKK3sKKyAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSBXRUJLSVRfVklERU9fU0lOSyhiYXNl
U2luayk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gRkFMU0U7CisKKyAgICBzd2l0Y2ggKEdTVF9R
VUVSWV9UWVBFKHF1ZXJ5KSkgeworICAgIGNhc2UgR1NUX1FVRVJZX0NPTlRFWFQ6IHsKKyAgICAg
ICAgcmVzdWx0ID0gZ3N0X2dsX2hhbmRsZV9jb250ZXh0X3F1ZXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8
R3N0RWxlbWVudCo+KHNpbmspLCBxdWVyeSwgJnNpbmstPnByaXYtPmRpc3BsYXksICZzaW5rLT5w
cml2LT5vdGhlckNvbnRleHQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmVzdWx0ID0gR1NUX0JBU0VfU0lOS19DTEFTUyhwYXJlbnRfY2xhc3MpLT5xdWVy
eShiYXNlU2luaywgcXVlcnkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNz
X2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyog
Z29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOwpAQCAtMzQ5LDYgKzYyNiwxMSBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KFdlYktpdFZpZGVvU2lu
a0NsYXNzKiBrbGFzcykKICAgICBiYXNlU2lua0NsYXNzLT5zdGFydCA9IHdlYmtpdFZpZGVvU2lu
a1N0YXJ0OwogICAgIGJhc2VTaW5rQ2xhc3MtPnNldF9jYXBzID0gd2Via2l0VmlkZW9TaW5rU2V0
Q2FwczsKICAgICBiYXNlU2lua0NsYXNzLT5wcm9wb3NlX2FsbG9jYXRpb24gPSB3ZWJraXRWaWRl
b1NpbmtQcm9wb3NlQWxsb2NhdGlvbjsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGJhc2VT
aW5rQ2xhc3MtPnByZXBhcmUgPSB3ZWJraXRWaWRlb1NpbmtQcmVwYXJlOworICAgIGJhc2VTaW5r
Q2xhc3MtPnF1ZXJ5ID0gd2Via2l0VmlkZW9TaW5rUXVlcnk7CisgICAgZWxlbWVudENsYXNzLT5z
ZXRfY29udGV4dCA9IHdlYmtpdFZpZGVvU2lua1NldENvbnRleHQ7CisjZW5kaWYKIAogICAgIHdl
YmtpdFZpZGVvU2lua1NpZ25hbHNbUkVQQUlOVF9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJy
ZXBhaW50LXJlcXVlc3RlZCIsCiAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCmluZGV4IDc0NDQ3NjAuLmFjZDEyNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9G
aW5kR1N0cmVhbWVyLmNtYWtlCkBAIC0xOSw2ICsxOSw3IEBACiAjICBnc3RyZWFtZXItYXBwOiAg
ICAgICAgR1NUUkVBTUVSX0FQUF9JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9BUFBfTElCUkFS
SUVTCiAjICBnc3RyZWFtZXItYXVkaW86ICAgICAgR1NUUkVBTUVSX0FVRElPX0lOQ0xVREVfRElS
UyBhbmQgR1NUUkVBTUVSX0FVRElPX0xJQlJBUklFUwogIyAgZ3N0cmVhbWVyLWZmdDogICAgICAg
IEdTVFJFQU1FUl9GRlRfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfRkZUX0xJQlJBUklFUwor
IyAgZ3N0cmVhbWVyLWdsOiAgICAgICAgIEdTVFJFQU1FUl9HTF9JTkNMVURFX0RJUlMgYW5kIEdT
VFJFQU1FUl9HTF9MSUJSQVJJRVMKICMgIGdzdHJlYW1lci1tcGVndHM6ICAgICBHU1RSRUFNRVJf
TVBFR1RTX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX01QRUdUU19MSUJSQVJJRVMKICMgIGdz
dHJlYW1lci1wYnV0aWxzOiAgICBHU1RSRUFNRVJfUEJVVElMU19JTkNMVURFX0RJUlMgYW5kIEdT
VFJFQU1FUl9QQlVUSUxTX0xJQlJBUklFUwogIyAgZ3N0cmVhbWVyLXRhZzogICAgICAgIEdTVFJF
QU1FUl9UQUdfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfVEFHX0xJQlJBUklFUwpAQCAtODQs
NiArODUsNyBAQCBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0JBU0UgZ3N0cmVh
bWVyLWJhc2UtMS4wIGdzdGJhc2UtMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJF
QU1FUl9BUFAgZ3N0cmVhbWVyLWFwcC0xLjAgZ3N0YXBwLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NP
TVBPTkVOVChHU1RSRUFNRVJfQVVESU8gZ3N0cmVhbWVyLWF1ZGlvLTEuMCBnc3RhdWRpby0xLjAp
CiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0ZGVCBnc3RyZWFtZXItZmZ0LTEu
MCBnc3RmZnQtMS4wKQorRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9HTCBnc3Ry
ZWFtZXItZ2wtMS4wPj0xLjUuMCBnc3RnbC0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQo
R1NUUkVBTUVSX01QRUdUUyBnc3RyZWFtZXItbXBlZ3RzLTEuMD49MS40LjAgZ3N0bXBlZ3RzLTEu
MCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfUEJVVElMUyBnc3RyZWFtZXIt
cGJ1dGlscy0xLjAgZ3N0cGJ1dGlscy0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NU
UkVBTUVSX1RBRyBnc3RyZWFtZXItdGFnLTEuMCBnc3R0YWctMS4wKQpAQCAtMTE0LDYgKzExNiw4
IEBAIG1hcmtfYXNfYWR2YW5jZWQoCiAgICAgR1NUUkVBTUVSX0JBU0VfTElCUkFSSUVTCiAgICAg
R1NUUkVBTUVSX0ZGVF9JTkNMVURFX0RJUlMKICAgICBHU1RSRUFNRVJfRkZUX0xJQlJBUklFUwor
ICAgIEdTVFJFQU1FUl9HTF9JTkNMVURFX0RJUlMKKyAgICBHU1RSRUFNRVJfR0xfTElCUkFSSUVT
CiAgICAgR1NUUkVBTUVSX0lOQ0xVREVfRElSUwogICAgIEdTVFJFQU1FUl9MSUJSQVJJRVMKICAg
ICBHU1RSRUFNRVJfTVBFR1RTX0lOQ0xVREVfRElSUwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtl
L09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA1
NGNiMDAzLi5hMGJmYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMjMzLDcgKzIzMyw3IEBA
IGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICBzZXQoR1NUUkVBTUVS
X0NPTVBPTkVOVFMgYXBwIHBidXRpbHMpCiAgICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9H
U1RSRUFNRVIpCiAgICAgaWYgKEVOQUJMRV9WSURFTykKLSAgICAgICAgbGlzdChBUFBFTkQgR1NU
UkVBTUVSX0NPTVBPTkVOVFMgdmlkZW8gbXBlZ3RzIHRhZykKKyAgICAgICAgbGlzdChBUFBFTkQg
R1NUUkVBTUVSX0NPTVBPTkVOVFMgdmlkZW8gbXBlZ3RzIHRhZyBnbCkKICAgICBlbmRpZiAoKQog
CiAgICAgaWYgKEVOQUJMRV9XRUJfQVVESU8pCkBAIC0yNDcsNiArMjQ3LDExIEBAIGlmIChFTkFC
TEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAgYWRkX2RlZmluaXRpb25zKC1E
V1RGX1VTRV9HU1RSRUFNRVJfTVBFR1RTKQogICAgICAgICBzZXQoVVNFX0dTVFJFQU1FUl9NUEVH
VFMgVFJVRSkKICAgICBlbmRpZiAoKQorCisgICAgaWYgKFBDX0dTVFJFQU1FUl9HTF9GT1VORCkK
KyAgICAgICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVJfR0wpCisgICAgICAg
IHNldChVU0VfR1NUUkVBTUVSX0dMIFRSVUUpCisgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKIGlm
IChFTkFCTEVfV0FZTEFORF9UQVJHRVQpCi0tIAoyLjEuMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244248</attachid>
            <date>2015-01-08 02:20:42 -0800</date>
            <delta_ts>2015-01-08 02:21:05 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>24115</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzYTg0MjMzYjQzZDU2NmFkMzQ1YTMyMDVmMTYzM2VkOTAyNzBmMjIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDkgRGVjIDIwMTQgMTk6MDI6NDMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAzNyArKysKIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlICAgICAg
ICAgICAgICAgICAgIHwgIDEwICsKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgIHwgIDMxICsrKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Np
bmtHU3RyZWFtZXIuY3BwICAgICAgfCAzMDIgKysrKysrKysrKysrKysrKysrKystCiBTb3VyY2Uv
Y21ha2UvRmluZEdTdHJlYW1lci5jbWFrZSAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBTb3Vy
Y2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQog
NyBmaWxlcyBjaGFuZ2VkLCAzOTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGE4ODVmMzUuLjA5ZTU3OWIgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
NC0xMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dTdHJlYW1lcl0gR3N0R0wgc3VwcG9ydCBpbiB0aGUgdmlkZW8gc2luaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTYyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmlu
ZEdTdHJlYW1lci5jbWFrZTogTG9va3VwIHRoZSBHc3RHTCBsaWJyYXJ5IGFuZCBoZWFkZXJzLgor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOiBUdXJuIG9uIHRoZSBVU0Uo
R1NUUkVBTUVSX0dMKQorICAgICAgICBtYWNybyBpZiBHc3RHTCB3YXMgZm91bmQuCisKIDIwMTUt
MDEtMDcgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bVGhyZWFkZWRDb21wb3NpdG9yXSBBZGQgc3VwcG9ydCBmb3IgdGhyZWFkZWQgY29tcG9zaXRv
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBjNmFhN2Y2Li44ZjhlZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDAgQEAKKzIwMTQtMTItMDkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHU3RyZWFtZXJdIEdzdEdMIHN1cHBvcnQgaW4gdGhlIHZpZGVvIHNpbmsK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODU2Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGEgcmVj
ZW50IGVub3VnaCAoPj0gMS41KSBHU3RyZWFtZXIgdmVyc2lvbiBpcyBhdmFpbGFibGUgdGhlbgor
ICAgICAgICB0aGUgdmlkZW8gc2luayB3aWxsIHVzZSB0aGUgR3N0R0wgbGlicmFyeSB0byBlbWJl
ZCBhIEdMIHRleHR1cmUgaW4KKyAgICAgICAgZWFjaCBHc3RCdWZmZXIgdG8gYmUgcmVuZGVyZWQg
dmlhIHRoZSBUZXh0dXJlTWFwcGVyLiBJbiB0aGlzCisgICAgICAgIHNjZW5hcmlvIGEgR1BVLUdQ
VSB0ZXh0dXJlIGNvcHkgd2lsbCBiZSBwZXJmb3JtZWQuIEZvciB0aGlzIHRvIGJlCisgICAgICAg
IHBvc3NpYmxlIHRoZSBHTCBjb250ZXh0IHVzZWQgd2l0aGluIFdlYktpdCBuZWVkcyB0byBiZSBz
aGFyZWQgd2l0aAorICAgICAgICB0aGUgR0wgY29udGV4dCB1c2VkIGJ5IEdzdEdMLiBGb3Igbm93
IHdlIHN1cHBvcnQgb25seSB0aGUgR0xYL1gxMQorICAgICAgICBzaGFyaW5nIGNvbnRleHQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyBtZWRpYSB0ZXN0cyB3aWxsIGNvdmVyIHRo
aXMgY2hhbmdlIG9uY2UgdGhlCisgICAgICAgIGJ1aWxkYm90cyBoYXZlIEdTdHJlYW1lciA+PSAx
LjUuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogVXNlIEdzdEdMIGxpYnJhcnkgZm9y
IHRoZSBidWlsZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKTogRG8gYQorICAgICAgICBH
UFUtR1BVIHRleHR1cmUgaWYgdGhlIGJ1ZmZlciBhbHJlYWR5IGhhcyBhIEdMIHRleHR1cmUgYXZh
aWxhYmxlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoX1dlYktpdFZpZGVvU2lua1ByaXZhdGU6Ol9XZWJLaXRW
aWRlb1NpbmtQcml2YXRlKTogVXNlIGEgbXV0ZXgKKyAgICAgICAgYW5kIGNvbmRpdGlvbiBzbyBh
cyB0byBnZXQgdGhlIFdlYktpdCBHTCBjb250ZXh0IGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAg
ICAgICAoX1dlYktpdFZpZGVvU2lua1ByaXZhdGU6On5fV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSk6
CisgICAgICAgICh3cmFwR0xDb250ZXh0Q2FsbGJhY2spOiBXcmFwIHRoZSBXZWJLaXQgR0wgY29u
dGV4dCBpbiBhIEdzdEdMIGNvbnRleHQuCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtTdG9wKTog
RnJlZSBidWZmZXIgcG9vbCBhbmQgcHJlLWFsbG9jYXRlZCBidWZmZXIuCisgICAgICAgICh3ZWJr
aXRWaWRlb1NpbmtTZXRDYXBzKTogQ3JlYXRlIHRoZSBHc3RHTFVwbG9hZCB0aGF0IHdpbGwgdGFr
ZQorICAgICAgICBjYXJlIG9mIHVwZGF0aW5nIHRoZSBidWZmZXIncyB0ZXh0dXJlIGFuZCB1cGRh
dGUgY2FwcyBhY2NvcmRpbmdseS4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1ByZXBhcmUpOiBV
cGRhdGUgdGhlIGJ1ZmZlcidzIHRleHR1cmUgYmVmb3JlIHJlbmRlcmluZy4KKyAgICAgICAgKHdl
YmtpdFZpZGVvU2lua1Byb3Bvc2VBbGxvY2F0aW9uKTogUHJlcGFyZSBhIGJ1ZmZlciBwb29sLCBz
ZXQgdGhlCisgICAgICAgIEdMIGNvbnRleHQgdXAgYW5kIHVwZGF0ZSB0aGUgbWV0YSBpbmZvcm1h
dGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBzaW5rLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rU2V0
Q29udGV4dCk6IFBhc3MtdGhyb3VnaCB0aGUgY29udGV4dCB0byBHc3RHTC4KKyAgICAgICAgKHdl
YmtpdFZpZGVvU2lua1F1ZXJ5KTogQmFzaWMgc3VwcG9ydCBmb3IgY29udGV4dCBxdWVyaWVzLgor
ICAgICAgICAod2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdCk6CisKIDIwMTUtMDEtMDcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIC13ZWJraXQtdGFw
LWhpZ2hsaWdodC1jb2xvciAvIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIC8gLXdlYmtpdC10
b3VjaC1jYWxsb3V0IHRvIHRoZSBuZXcgU3R5bGVCdWlsZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IGVkOTUyOTkuLjVjYzQ0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0zNDksNiArMzQ5LDE2IEBAIGlmIChFTkFCTEVfVklERU8pCiAgICAgICAgICAgICAke0dTVFJF
QU1FUl9NUEVHVFNfTElCUkFSSUVTfQogICAgICAgICApCiAgICAgZW5kaWYgKCkKKworICAgIGlm
IChVU0VfR1NUUkVBTUVSX0dMKQorICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVf
RElSRUNUT1JJRVMKKyAgICAgICAgICAgICR7R1NUUkVBTUVSX0dMX0lOQ0xVREVfRElSU30KKyAg
ICAgICAgKQorCisgICAgICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCisgICAgICAg
ICAgICAke0dTVFJFQU1FUl9HTF9MSUJSQVJJRVN9CisgICAgICAgICkKKyAgICBlbmRpZiAoKQog
ZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNDRkZTc1Ni4uMGJiOGFk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcApAQCAtNDQsNiArNDQsMTIgQEAKICNpbmNsdWRlIDxnc3QvYXVkaW8vc3RyZWFtdm9s
dW1lLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgogCisjaWYgVVNFKEdT
VFJFQU1FUl9HTCkKKyNkZWZpbmUgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyNpbmNsdWRlIDxnc3Qv
Z2wvZ3N0Z2xtZW1vcnkuaD4KKyN1bmRlZiBHU1RfVVNFX1VOU1RBQkxFX0FQSQorI2VuZGlmCisK
ICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxLCAwKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAjZW5kaWYKQEAgLTI5NSw2ICszMDEsMzEg
QEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmUKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdT
VF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZp
ZGVvSW5mbykpOwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gdGV4dHVyZU1h
cHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQ
SEEoJnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4
dHVyZTo6Tm9GbGFnKTsKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1
ZmZlcihtX3NhbXBsZSk7CisgICAgY29uc3QgQml0bWFwVGV4dHVyZUdMKiB0ZXh0dXJlR0wgPSBz
dGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKTsKKyAgICB1
aW50MzJfdCB0ZXh0dXJlSUQgPSB0ZXh0dXJlR0wtPmlkKCk7CisKKyNpZiBVU0UoR1NUUkVBTUVS
X0dMKQorICAgIEdzdE1lbW9yeSogYnVmZmVyTWVtb3J5OworICAgIEdzdE1hcEluZm8gbWFwSW5m
bzsKKyAgICBpZiAoIWdzdF9idWZmZXJfbWFwKGJ1ZmZlciwgJm1hcEluZm8sIHN0YXRpY19jYXN0
PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkpIHsKKyAgICAgICAgV0FS
Tl9NRURJQV9NRVNTQUdFKCJGYWlsZWQgdG8gbWFwIGJ1ZmZlciIpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgaWYgKGdzdF9idWZmZXJfbl9tZW1vcnkoYnVmZmVyKSA+PSAx
KSB7CisgICAgICAgIGlmICgoYnVmZmVyTWVtb3J5ID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeShi
dWZmZXIsIDApKSAmJiBnc3RfaXNfZ2xfbWVtb3J5KGJ1ZmZlck1lbW9yeSkpIHsKKyAgICAgICAg
ICAgIEdzdEdMTWVtb3J5KiBnbE1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0R0xNZW1vcnkq
PihidWZmZXJNZW1vcnkpOworICAgICAgICAgICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleHR1
cmVUeXBlID0gZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdChnbE1lbW9yeS0+Y29udGV4
dCwgR1NUX1ZJREVPX0lORk9fRk9STUFUKCZ2aWRlb0luZm8pLCAwKTsKKworICAgICAgICAgICAg
Z2Jvb2xlYW4gY29waWVkID0gZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZShnbE1lbW9y
eSwgdGV4dHVyZUlELCB0ZXh0dXJlVHlwZSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBH
U1RfVklERU9fSU5GT19QTEFORV9TVFJJREUoJnZpZGVvSW5mbywgMCksIHRydWUgLyogcmVzcGVj
aWZ5ICovKTsKKyAgICAgICAgICAgIGlmIChjb3BpZWQpIHsKKyAgICAgICAgICAgICAgICBnc3Rf
YnVmZmVyX3VubWFwKGJ1ZmZlciwgJm1hcEluZm8pOworICAgICAgICAgICAgICAgIHJldHVybiB0
ZXh0dXJlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgV0FSTl9NRURJQV9NRVNTQUdFKCJU
ZXh0dXJlIGNvcHkgZmFpbGVkLCB0cnlpbmcgZmFsbGJhY2sgc2xvdyBwYXRoLiIpOworICAgICAg
ICB9CisgICAgfQorICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCAmbWFwSW5mbyk7CisjZW5k
aWYKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApCiAgICAgR3N0VmlkZW9HTFRleHR1
cmVVcGxvYWRNZXRhKiBtZXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRl
eCAyNTVlNzYwLi5jZDEzMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApA
QCAtMzUsOSArMzUsMzIgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5o
PgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KKyNpbmNsdWRlIDxnc3Qvdmlk
ZW8vZ3N0dmlkZW9wb29sLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dNdXRleExvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dUaHJlYWRT
YWZlTWFpbkxvb3BTb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+
CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorI2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQor
I2luY2x1ZGUgPGdzdC9nbC9nc3RnbGNvbnRleHQuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xk
aXNwbGF5Lmg+CisjdW5kZWYgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKworI2lmIEdTVF9HTF9IQVZF
X1BMQVRGT1JNX0VHTAorI2luY2x1ZGUgPGdzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuaD4K
KyNlbmRpZgorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHV0aWxzLmg+CisKKyNpZiBQTEFURk9STShY
MTEpCisjaW5jbHVkZSA8Z3N0L2dsL3gxMS9nc3RnbGRpc3BsYXlfeDExLmg+CisjZW5kaWYKKwor
I2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2lmIFVTRShHTFgpCisjaW5jbHVkZSAiR0xDb250ZXh0
R0xYLmgiCisjZW5kaWYKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX0dMKQogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtNDcsNyArNzAsMTggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAjZWxzZQogI2RlZmluZSBHU1RfQ0FQU19GT1JNQVQgInsgeFJHQiwgQVJHQiB9IgogI2Vu
ZGlmCi0jaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKKworI2lmIFVTRShHU1RSRUFNRVJf
R0wpCisKKyNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wKKyNkZWZpbmUgRUdMX0NBUFMgR1NU
X1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0VH
TF9JTUFHRSwgIlJHQkEiKSAiOyAiCisjZWxzZQorI2RlZmluZSBFR0xfQ0FQUworI2VuZGlmCisK
KyNkZWZpbmUgR1NUX0ZFQVRVUkVEX0NBUFMgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRV
UkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgR1NUX0NBUFNfRk9STUFUKSAi
OyAiIEVHTF9DQVBTIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUyhHU1RfQ0FQU19G
RUFUVVJFX01FVEFfR1NUX1ZJREVPX0dMX1RFWFRVUkVfVVBMT0FEX01FVEEsICJSR0JBIikgIjsi
CisKKyNlbGlmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApCiAjZGVmaW5lIEdTVF9GRUFUVVJF
RF9DQVBTIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUyhHU1RfQ0FQU19GRUFUVVJF
X01FVEFfR1NUX1ZJREVPX0dMX1RFWFRVUkVfVVBMT0FEX01FVEEsIEdTVF9DQVBTX0ZPUk1BVCkg
IjsiCiAjZWxzZQogI2RlZmluZSBHU1RfRkVBVFVSRURfQ0FQUwpAQCAtNzMsNiArMTA3LDEwIEBA
IHN0cnVjdCBfV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSB7CiAgICAgewogICAgICAgICBnX211dGV4
X2luaXQoJnNhbXBsZU11dGV4KTsKICAgICAgICAgZ19jb25kX2luaXQoJmRhdGFDb25kaXRpb24p
OworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgICAgIGdfbXV0ZXhfaW5pdCgmY29udGV4dE11
dGV4KTsKKyAgICAgICAgZ19jb25kX2luaXQoJmNvbnRleHRDb25kaXRpb24pOworI2VuZGlmCiAg
ICAgICAgIGdzdF92aWRlb19pbmZvX2luaXQoJmluZm8pOwogICAgIH0KIApAQCAtODAsNiArMTE4
LDEwIEBAIHN0cnVjdCBfV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSB7CiAgICAgewogICAgICAgICBn
X211dGV4X2NsZWFyKCZzYW1wbGVNdXRleCk7CiAgICAgICAgIGdfY29uZF9jbGVhcigmZGF0YUNv
bmRpdGlvbik7CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICAgICAgZ19tdXRleF9jbGVhcigm
Y29udGV4dE11dGV4KTsKKyAgICAgICAgZ19jb25kX2NsZWFyKCZjb250ZXh0Q29uZGl0aW9uKTsK
KyNlbmRpZgogICAgIH0KIAogICAgIEdzdFNhbXBsZSogc2FtcGxlOwpAQCAtMTAwLDE2ICsxNDIs
NzAgQEAgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICAvLwogICAgIC8vIFBy
b3RlY3RlZCBieSB0aGUgc2FtcGxlIG11dGV4CiAgICAgYm9vbCB1bmxvY2tlZDsKKworI2lmIFVT
RShHU1RSRUFNRVJfR0wpCisgICAgR3N0Q2FwcyogZ2xDYXBzOworICAgIEdzdEJ1ZmZlclBvb2wq
IHBvb2w7CisgICAgR3N0R0xEaXNwbGF5KiBkaXNwbGF5OworICAgIEdzdEdMQ29udGV4dCogY29u
dGV4dDsKKyAgICBHc3RHTENvbnRleHQqIG90aGVyQ29udGV4dDsKKyAgICBHTXV0ZXggY29udGV4
dE11dGV4OworICAgIEdDb25kIGNvbnRleHRDb25kaXRpb247CisKKyAgICBHc3RHTFVwbG9hZCog
dXBsb2FkOworICAgIEdzdEJ1ZmZlciogbmV4dEJ1ZmZlcjsKKyNlbmRpZgogfTsKIAogI2RlZmlu
ZSB3ZWJraXRfdmlkZW9fc2lua19wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCiBHX0RFRklORV9U
WVBFX1dJVEhfQ09ERShXZWJLaXRWaWRlb1NpbmssIHdlYmtpdF92aWRlb19zaW5rLCBHU1RfVFlQ
RV9WSURFT19TSU5LLCBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRWaWRlb1NpbmtEZWJ1
ZywgIndlYmtpdHNpbmsiLCAwLCAid2Via2l0IHZpZGVvIHNpbmsiKSk7CiAKKyNpZiBVU0UoR1NU
UkVBTUVSX0dMKQorZ2Jvb2xlYW4gd3JhcEdMQ29udGV4dENhbGxiYWNrKGdwb2ludGVyIHVzZXJE
YXRhKQoreworICAgIFdlYktpdFZpZGVvU2luayogc2luayA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
S2l0VmlkZW9TaW5rKj4odXNlckRhdGEpOworICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHBy
aXYgPSBzaW5rLT5wcml2OworCisgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhwcml2LT5j
b250ZXh0TXV0ZXgpOworCisgICAgR0Vycm9yKiBlcnJvciA9IG51bGxwdHI7CisKKyAgICBpZiAo
IXByaXYtPmRpc3BsYXkpCisgICAgICAgIHByaXYtPmRpc3BsYXkgPSBnc3RfZ2xfZGlzcGxheV9u
ZXcoKTsKKworICAgIGlmICghcHJpdi0+b3RoZXJDb250ZXh0KSB7CisgICAgICAgIEdMQ29udGV4
dCogd2Via2l0Q29udGV4dCA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKTsKKyNpZiBQTEFU
Rk9STShYMTEpCisgICAgICAgIERpc3BsYXkqIGRpc3BsYXkgPSBHTENvbnRleHQ6OnNoYXJlZFgx
MURpc3BsYXkoKTsKKyAgICAgICAgR0xYQ29udGV4dCogZ2x4U2hhcmluZ0NvbnRleHQgPSByZWlu
dGVycHJldF9jYXN0PEdMWENvbnRleHQqPih3ZWJraXRDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSk7CisgICAgICAgIEdzdEdMRGlzcGxheVgxMSogZ3N0R0xEaXNwbGF5ID0gZ3N0X2dsX2Rpc3Bs
YXlfeDExX25ld193aXRoX2Rpc3BsYXkoZGlzcGxheSk7CisgICAgICAgIEdzdEdMUGxhdGZvcm0g
cGxhdGZvcm0gPSBHU1RfR0xfUExBVEZPUk1fR0xYOworICAgICAgICBHc3RHTEFQSSBnbEFwaSA9
IGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2FwaShudWxscHRyLCBudWxscHRyKTsKKyAg
ICAgICAgaWYgKGdseFNoYXJpbmdDb250ZXh0KQorICAgICAgICAgICAgcHJpdi0+b3RoZXJDb250
ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3X3dyYXBwZWQoR1NUX0dMX0RJU1BMQVkoZ3N0R0xEaXNw
bGF5KSwgcmVpbnRlcnByZXRfY2FzdDxndWludHB0cj4oZ2x4U2hhcmluZ0NvbnRleHQpLCBwbGF0
Zm9ybSwgZ2xBcGkpOworI2VuZGlmCisgICAgfQorCisgICAgaWYgKCFwcml2LT5jb250ZXh0KSB7
CisgICAgICAgIHByaXYtPmNvbnRleHQgPSBnc3RfZ2xfY29udGV4dF9uZXcocHJpdi0+ZGlzcGxh
eSk7CisgICAgICAgIGlmICghZ3N0X2dsX2NvbnRleHRfY3JlYXRlKHByaXYtPmNvbnRleHQsIHBy
aXYtPm90aGVyQ29udGV4dCwgJmVycm9yKSkgeworICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJS
T1Ioc2luaywgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSwgKG51
bGxwdHIpKTsKKyAgICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocHJpdi0+Y29udGV4dCk7Cisg
ICAgICAgICAgICBwcml2LT5jb250ZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGdfY29uZF9z
aWduYWwoJnByaXYtPmNvbnRleHRDb25kaXRpb24pOworICAgICAgICAgICAgcmV0dXJuIEZBTFNF
OworICAgICAgICB9CisgICAgfQorCisgICAgZ19jb25kX3NpZ25hbCgmcHJpdi0+Y29udGV4dENv
bmRpdGlvbik7CisgICAgcmV0dXJuIEZBTFNFOworfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHdl
YmtpdF92aWRlb19zaW5rX2luaXQoV2ViS2l0VmlkZW9TaW5rKiBzaW5rKQogewogICAgIHNpbmst
PnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2luaywgV0VCS0lUX1RZUEVfVklE
RU9fU0lOSywgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSk7Ci0gICAgZ19vYmplY3Rfc2V0KEdTVF9C
QVNFX1NJTksoc2luayksICJlbmFibGUtbGFzdC1zYW1wbGUiLCBGQUxTRSwgTlVMTCk7CisgICAg
Z19vYmplY3Rfc2V0KEdTVF9CQVNFX1NJTksoc2luayksICJlbmFibGUtbGFzdC1zYW1wbGUiLCBG
QUxTRSwgbnVsbHB0cik7CiAgICAgbmV3IChzaW5rLT5wcml2KSBXZWJLaXRWaWRlb1NpbmtQcml2
YXRlKCk7CiB9CiAKQEAgLTExOSw3ICsyMTUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRWaWRlb1Np
bmtUaW1lb3V0Q2FsbGJhY2soV2ViS2l0VmlkZW9TaW5rKiBzaW5rKQogCiAgICAgR011dGV4TG9j
a2VyPEdNdXRleD4gbG9jayhwcml2LT5zYW1wbGVNdXRleCk7CiAgICAgR3N0U2FtcGxlKiBzYW1w
bGUgPSBwcml2LT5zYW1wbGU7Ci0gICAgcHJpdi0+c2FtcGxlID0gMDsKKyAgICBwcml2LT5zYW1w
bGUgPSBudWxscHRyOwogCiAgICAgaWYgKCFzYW1wbGUgfHwgcHJpdi0+dW5sb2NrZWQgfHwgVU5M
SUtFTFkoIUdTVF9JU19TQU1QTEUoc2FtcGxlKSkpIHsKICAgICAgICAgZ19jb25kX3NpZ25hbCgm
cHJpdi0+ZGF0YUNvbmRpdGlvbik7CkBAIC0yMTksOCArMzE1LDExIEBAIHN0YXRpYyBHc3RGbG93
UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRlcihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1
ZmZlciogYnVmCiAgICAgLy8gbG93ZXIgcHJpb3JpdHkgc291cmNlcy4KICAgICAvLyBTZWU6IGh0
dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02MTA4MzAuCiAgICAgZ3N0
X29iamVjdF9yZWYoc2luayk7Ci0gICAgcHJpdi0+dGltZW91dFNvdXJjZS5zY2hlZHVsZSgiW1dl
YktpdF0gd2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrIiwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+KHN0ZDo6YmluZCh3ZWJraXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2ssIHNpbmspKSwgR19Q
UklPUklUWV9ERUZBVUxULAotICAgICAgICBbc2lua10geyBnc3Rfb2JqZWN0X3VucmVmKHNpbmsp
OyB9KTsKKyAgICBwcml2LT50aW1lb3V0U291cmNlLnNjaGVkdWxlKCJbV2ViS2l0XSB3ZWJraXRW
aWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2siLAorICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4o
c3RkOjpiaW5kKHdlYmtpdFZpZGVvU2lua1RpbWVvdXRDYWxsYmFjaywgc2luaykpLAorICAgICAg
ICBHX1BSSU9SSVRZX0RFRkFVTFQsIFtzaW5rXSB7CisgICAgICAgICAgICBnc3Rfb2JqZWN0X3Vu
cmVmKHNpbmspOworICAgICAgICB9KTsKIAogICAgIGdfY29uZF93YWl0KCZwcml2LT5kYXRhQ29u
ZGl0aW9uLCAmcHJpdi0+c2FtcGxlTXV0ZXgpOwogICAgIHJldHVybiBHU1RfRkxPV19PSzsKQEAg
LTIzOCw3ICszMzcsNyBAQCBzdGF0aWMgdm9pZCB1bmxvY2tTYW1wbGVNdXRleChXZWJLaXRWaWRl
b1NpbmtQcml2YXRlKiBwcml2KQogCiAgICAgaWYgKHByaXYtPnNhbXBsZSkgewogICAgICAgICBn
c3Rfc2FtcGxlX3VucmVmKHByaXYtPnNhbXBsZSk7Ci0gICAgICAgIHByaXYtPnNhbXBsZSA9IDA7
CisgICAgICAgIHByaXYtPnNhbXBsZSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgcHJpdi0+dW5s
b2NrZWQgPSB0cnVlOwpAQCAtMjY5LDE1ICszNjgsMzEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtp
dFZpZGVvU2lua1VubG9ja1N0b3AoR3N0QmFzZVNpbmsqIGJhc2VTaW5rKQogCiBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0VmlkZW9TaW5rU3RvcChHc3RCYXNlU2luayogYmFzZVNpbmspCiB7Ci0gICAg
V2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5r
KS0+cHJpdjsKKyAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSByZWludGVycHJldF9jYXN0X3B0
cjxXZWJLaXRWaWRlb1NpbmsqPihiYXNlU2luayk7CisgICAgV2ViS2l0VmlkZW9TaW5rUHJpdmF0
ZSogcHJpdiA9IHNpbmstPnByaXY7CiAKICAgICB1bmxvY2tTYW1wbGVNdXRleChwcml2KTsKIAog
ICAgIGlmIChwcml2LT5jdXJyZW50Q2FwcykgewogICAgICAgICBnc3RfY2Fwc191bnJlZihwcml2
LT5jdXJyZW50Q2Fwcyk7Ci0gICAgICAgIHByaXYtPmN1cnJlbnRDYXBzID0gMDsKKyAgICAgICAg
cHJpdi0+Y3VycmVudENhcHMgPSBudWxscHRyOwogICAgIH0KIAorI2lmIFVTRShHU1RSRUFNRVJf
R0wpCisgICAgR1NUX09CSkVDVF9MT0NLKHNpbmspOworICAgIGlmIChwcml2LT5wb29sKQorICAg
ICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYtPnBvb2wpOworICAgIHByaXYtPnBvb2wgPSBudWxs
cHRyOworICAgIEdTVF9PQkpFQ1RfVU5MT0NLKHNpbmspOworCisgICAgZ3N0X2J1ZmZlcl9yZXBs
YWNlKCZwcml2LT5uZXh0QnVmZmVyLCBudWxscHRyKTsKKworICAgIGlmIChwcml2LT51cGxvYWQp
IHsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZihwcml2LT51cGxvYWQpOworICAgICAgICBwcml2
LT51cGxvYWQgPSBudWxscHRyOworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIFRSVUU7CiB9
CiAKQEAgLTMwNiwxMyArNDIxLDU3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtT
ZXRDYXBzKEdzdEJhc2VTaW5rKiBiYXNlU2luaywgR3N0Q2FwcyogY2FwcykKIAogICAgIHByaXYt
PmluZm8gPSB2aWRlb0luZm87CiAgICAgZ3N0X2NhcHNfcmVwbGFjZSgmcHJpdi0+Y3VycmVudENh
cHMsIGNhcHMpOworCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBHTXV0ZXhMb2NrZXI8R011
dGV4PiBsb2NrKHByaXYtPmNvbnRleHRNdXRleCk7CisKKyAgICBnc3Rfb2JqZWN0X3JlZihzaW5r
KTsKKyAgICBHTWFpbkxvb3BTb3VyY2U6OnNjaGVkdWxlQW5kRGVsZXRlT25EZXN0cm95KCJbV2Vi
S2l0XVtnc3RdIEdMIGNvbnRleHQgd3JhcCIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihzdGQ6OmJp
bmQod3JhcEdMQ29udGV4dENhbGxiYWNrLCBzaW5rKSksIEdfUFJJT1JJVFlfREVGQVVMVCwgW3Np
bmtdIHsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZihzaW5rKTsKKyAgICB9KTsKKworICAgIGdf
Y29uZF93YWl0KCZzaW5rLT5wcml2LT5jb250ZXh0Q29uZGl0aW9uLCAmc2luay0+cHJpdi0+Y29u
dGV4dE11dGV4KTsKKworICAgIGlmIChwcml2LT51cGxvYWQpCisgICAgICAgIGdzdF9vYmplY3Rf
dW5yZWYocHJpdi0+dXBsb2FkKTsKKyAgICBwcml2LT51cGxvYWQgPSBnc3RfZ2xfdXBsb2FkX25l
dyhwcml2LT5jb250ZXh0KTsKKworICAgIEdzdENhcHNGZWF0dXJlcyogZ2xGZWF0dXJlcyA9IGdz
dF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5nKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01F
TU9SWSk7CisgICAgaWYgKHByaXYtPmdsQ2FwcykKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYocHJp
di0+Z2xDYXBzKTsKKyAgICBwcml2LT5nbENhcHMgPSBnc3RfY2Fwc19jb3B5KGNhcHMpOworICAg
IGdzdF9jYXBzX3NldF9zaW1wbGUocHJpdi0+Z2xDYXBzLCAiZm9ybWF0IiwgR19UWVBFX1NUUklO
RywgIlJHQkEiLCBudWxscHRyKTsKKyAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMocHJpdi0+Z2xD
YXBzLCAwLCBnbEZlYXR1cmVzKTsKKworICAgIGdzdF9nbF91cGxvYWRfc2V0X2NhcHMocHJpdi0+
dXBsb2FkLCBjYXBzLCBwcml2LT5nbENhcHMpOworI2VuZGlmCiAgICAgcmV0dXJuIFRSVUU7CiB9
CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0Vmlk
ZW9TaW5rUHJlcGFyZShHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQor
eworICAgIFdlYktpdFZpZGVvU2luayogc2luayA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5r
KTsKKyAgICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gc2luay0+cHJpdjsKKyAgICBH
c3RCdWZmZXIqIG5leHRCdWZmZXIgPSBudWxscHRyOworCisgICAgaWYgKCFnc3RfZ2xfdXBsb2Fk
X3BlcmZvcm1fd2l0aF9idWZmZXIocHJpdi0+dXBsb2FkLCBidWZmZXIsICZuZXh0QnVmZmVyKSkg
eworICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihzaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAo
IiVzIiwgIkZhaWxlZCB0byB1cGxvYWQgYnVmZmVyIiksIChudWxscHRyKSk7CisgICAgICAgIHJl
dHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9CisKKyAgICBnc3RfYnVmZmVyX3JlcGxhY2UoJnBy
aXYtPm5leHRCdWZmZXIsIG5leHRCdWZmZXIpOworICAgIGdzdF9idWZmZXJfdW5yZWYobmV4dEJ1
ZmZlcik7CisgICAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorI2VuZGlmCisKIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRWaWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbihHc3RCYXNlU2luayogYmFzZVNp
bmssIEdzdFF1ZXJ5KiBxdWVyeSkKIHsKICAgICBHc3RDYXBzKiBjYXBzOwotICAgIGdzdF9xdWVy
eV9wYXJzZV9hbGxvY2F0aW9uKHF1ZXJ5LCAmY2FwcywgMCk7CisgICAgZ2Jvb2xlYW4gbmVlZFBv
b2w7CisKKyAgICBnc3RfcXVlcnlfcGFyc2VfYWxsb2NhdGlvbihxdWVyeSwgJmNhcHMsICZuZWVk
UG9vbCk7CiAgICAgaWYgKCFjYXBzKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKQEAgLTMyMCwx
NCArNDc5LDEzMiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rUHJvcG9zZUFsbG9j
YXRpb24oR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RRdWVyeQogICAgIGlmICghZ3N0X3ZpZGVv
X2luZm9fZnJvbV9jYXBzKCZzaW5rLT5wcml2LT5pbmZvLCBjYXBzKSkKICAgICAgICAgcmV0dXJu
IEZBTFNFOwogCisgICAgR3N0U3RydWN0dXJlKiBnbENvbnRleHQgPSBudWxscHRyOworI2lmIFVT
RShHU1RSRUFNRVJfR0wpCisgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAicHJvcG9zZSBhbGxv
Y2F0aW9uIik7CisgICAgR011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhzaW5rLT5wcml2LT5jb250
ZXh0TXV0ZXgpOworCisgICAgZ3N0X29iamVjdF9yZWYoc2luayk7CisgICAgR01haW5Mb29wU291
cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVzdHJveSgiW1dlYktpdF1bZ3N0XSBHTCBjb250ZXh0
IHdyYXAiLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oc3RkOjpiaW5kKHdyYXBHTENvbnRleHRDYWxs
YmFjaywgc2luaykpLCBHX1BSSU9SSVRZX0RFRkFVTFQsIFtzaW5rXSB7CisgICAgICAgIGdzdF9v
YmplY3RfdW5yZWYoc2luayk7CisgICAgfSk7CisKKyAgICBnX2NvbmRfd2FpdCgmc2luay0+cHJp
di0+Y29udGV4dENvbmRpdGlvbiwgJnNpbmstPnByaXYtPmNvbnRleHRNdXRleCk7CisKKyAgICBH
c3RCdWZmZXJQb29sKiBwb29sOworICAgIEdzdEFsbG9jYXRvciogYWxsb2NhdG9yID0gbnVsbHB0
cjsKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtczsKKyAgICBHc3RTdHJ1Y3R1cmUqIGNv
bmZpZzsKKyAgICBndWludCBzaXplOworCisgICAgaWYgKChwb29sID0gc2luay0+cHJpdi0+cG9v
bCkpCisgICAgICAgIGdzdF9vYmplY3RfcmVmKHBvb2wpOworCisgICAgaWYgKHBvb2wpIHsKKyAg
ICAgICAgR3N0Q2FwcyogcGNhcHM7CisKKyAgICAgICAgLy8gV2UgaGFkIGEgcG9vbCwgY2hlY2sg
aXRzIGNhcHMuCisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2luaywgImNoZWNrIGV4aXN0aW5n
IHBvb2wgY2FwcyIpOworICAgICAgICBjb25maWcgPSBnc3RfYnVmZmVyX3Bvb2xfZ2V0X2NvbmZp
Zyhwb29sKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfcGFyYW1zKGNvbmZp
ZywgJnBjYXBzLCAmc2l6ZSwgMCwgMCk7CisKKyAgICAgICAgaWYgKCFnc3RfY2Fwc19pc19lcXVh
bChjYXBzLCBwY2FwcykpIHsKKyAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2luaywgInBv
b2wgaGFzIGRpZmZlcmVudCBjYXBzIik7CisgICAgICAgICAgICAvLyBEaWZmZXJlbnQgY2Fwcywg
d2UgY2FuJ3QgdXNlIHRoaXMgcG9vbC4KKyAgICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocG9v
bCk7CisgICAgICAgICAgICBwb29sID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBnc3Rf
c3RydWN0dXJlX2ZyZWUoY29uZmlnKTsKKyAgICB9CisKKyAgICBpZiAobmVlZFBvb2wgJiYgIXBv
b2wpIHsKKyAgICAgICAgR3N0VmlkZW9JbmZvIGluZm87CisKKyAgICAgICAgaWYgKCFnc3Rfdmlk
ZW9faW5mb19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKSB7CisgICAgICAgICAgICBHU1RfREVCVUdf
T0JKRUNUKHNpbmssICJpbnZhbGlkIGNhcHMgc3BlY2lmaWVkIik7CisgICAgICAgICAgICByZXR1
cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNpbmssICJj
cmVhdGUgbmV3IHBvb2wgd2l0aCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKKyAgICAg
ICAgcG9vbCA9IGdzdF9nbF9idWZmZXJfcG9vbF9uZXcoc2luay0+cHJpdi0+Y29udGV4dCk7CisK
KyAgICAgICAgLy8gVGhlIG5vcm1hbCBzaXplIG9mIGEgZnJhbWUuCisgICAgICAgIHNpemUgPSBp
bmZvLnNpemU7CisKKyAgICAgICAgY29uZmlnID0gZ3N0X2J1ZmZlcl9wb29sX2dldF9jb25maWco
cG9vbCk7CisgICAgICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X3BhcmFtcyhjb25maWcs
IGNhcHMsIHNpemUsIDAsIDApOworICAgICAgICBpZiAoIWdzdF9idWZmZXJfcG9vbF9zZXRfY29u
ZmlnKHBvb2wsIGNvbmZpZykpIHsKKyAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2luaywg
ImZhaWxlZCBzZXR0aW5nIGNvbmZpZyIpOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKHBvb2wpIHsKKyAgICAgICAgZ3N0X3F1ZXJ5X2FkZF9h
bGxvY2F0aW9uX3Bvb2wocXVlcnksIHBvb2wsIHNpemUsIDIsIDApOworICAgICAgICBnc3Rfb2Jq
ZWN0X3VucmVmKHBvb2wpOworICAgIH0KKworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBsYXRmb3Jt
KGdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmcoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX3BsYXRmb3Jt
KHNpbmstPnByaXYtPmNvbnRleHQpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZ2xBcGlzKGdz
dF9nbF9hcGlfdG9fc3RyaW5nKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkoc2luay0+cHJpdi0+
Y29udGV4dCkpKTsKKyAgICBncG9pbnRlciBoYW5kbGUgPSByZWludGVycHJldF9jYXN0X3B0cjxn
cG9pbnRlcj4oZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2NvbnRleHQoc2luay0+cHJpdi0+Y29udGV4
dCkpOworCisgICAgZ2xDb250ZXh0ID0gZ3N0X3N0cnVjdHVyZV9uZXcoIkdzdFZpZGVvR0xUZXh0
dXJlVXBsb2FkTWV0YSIsICJnc3QuZ2wuR3N0R0xDb250ZXh0IiwKKyAgICAgICAgR1NUX0dMX1RZ
UEVfQ09OVEVYVCwgc2luay0+cHJpdi0+Y29udGV4dCwgImdzdC5nbC5jb250ZXh0LmhhbmRsZSIs
CisgICAgICAgIEdfVFlQRV9QT0lOVEVSLCBoYW5kbGUsICJnc3QuZ2wuY29udGV4dC50eXBlIiwg
R19UWVBFX1NUUklORywgcGxhdGZvcm0uZ2V0KCksCisgICAgICAgICJnc3QuZ2wuY29udGV4dC5h
cGlzIiwgR19UWVBFX1NUUklORywgZ2xBcGlzLmdldCgpLCBudWxscHRyKTsKKyNlbmRpZgorCiAg
ICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX21ldGEocXVlcnksIEdTVF9WSURFT19NRVRBX0FQ
SV9UWVBFLCAwKTsKICAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fbWV0YShxdWVyeSwgR1NU
X1ZJREVPX0NST1BfTUVUQV9BUElfVFlQRSwgMCk7CiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwg
MSwgMCkKLSAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fbWV0YShxdWVyeSwgR1NUX1ZJREVP
X0dMX1RFWFRVUkVfVVBMT0FEX01FVEFfQVBJX1RZUEUsIDApOworICAgIGdzdF9xdWVyeV9hZGRf
YWxsb2NhdGlvbl9tZXRhKHF1ZXJ5LCBHU1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQV9B
UElfVFlQRSwgZ2xDb250ZXh0KTsKKyNlbmRpZgorCisgICAgaWYgKGdsQ29udGV4dCkKKyAgICAg
ICAgZ3N0X3N0cnVjdHVyZV9mcmVlKGdsQ29udGV4dCk7CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dM
KQorICAgIGdzdF9hbGxvY2F0aW9uX3BhcmFtc19pbml0KCZwYXJhbXMpOworICAgIGFsbG9jYXRv
ciA9IGdzdF9hbGxvY2F0b3JfZmluZChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUik7CisgICAgZ3N0
X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX3BhcmFtKHF1ZXJ5LCBhbGxvY2F0b3IsICZwYXJhbXMpOwor
ICAgIGdzdF9vYmplY3RfdW5yZWYoYWxsb2NhdG9yKTsKKyNpZiBHU1RfR0xfSEFWRV9QTEFURk9S
TV9FR0wKKyAgICBpZiAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZShzaW5rLT5wcml2LT5j
b250ZXh0LCAiRUdMX0tIUl9pbWFnZV9iYXNlIikpIHsKKyAgICAgICAgYWxsb2NhdG9yID0gZ3N0
X2FsbG9jYXRvcl9maW5kKEdTVF9FR0xfSU1BR0VfTUVNT1JZX1RZUEUpOworICAgICAgICBnc3Rf
cXVlcnlfYWRkX2FsbG9jYXRpb25fcGFyYW0ocXVlcnksIGFsbG9jYXRvciwgJnBhcmFtcyk7Cisg
ICAgICAgIGdzdF9vYmplY3RfdW5yZWYoYWxsb2NhdG9yKTsKKyAgICB9CisjZW5kaWYKICNlbmRp
ZgogICAgIHJldHVybiBUUlVFOwogfQogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKK3N0YXRpYyB2
b2lkIHdlYmtpdFZpZGVvU2lua1NldENvbnRleHQoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0Q29u
dGV4dCogY29udGV4dCkKK3sKKyAgICBXZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSAgV0VCS0lUX1ZJ
REVPX1NJTksoZWxlbWVudCk7CisgICAgZ3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dChlbGVtZW50
LCBjb250ZXh0LCAmc2luay0+cHJpdi0+ZGlzcGxheSwgJnNpbmstPnByaXYtPm90aGVyQ29udGV4
dCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtRdWVyeShHc3RCYXNlU2lu
ayogYmFzZVNpbmssIEdzdFF1ZXJ5KiBxdWVyeSkKK3sKKyAgICBXZWJLaXRWaWRlb1NpbmsqIHNp
bmsgPSBXRUJLSVRfVklERU9fU0lOSyhiYXNlU2luayk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0g
RkFMU0U7CisKKyAgICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFKHF1ZXJ5KSkgeworICAgIGNhc2Ug
R1NUX1FVRVJZX0NPTlRFWFQ6IHsKKyAgICAgICAgcmVzdWx0ID0gZ3N0X2dsX2hhbmRsZV9jb250
ZXh0X3F1ZXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8R3N0RWxlbWVudCo+KHNpbmspLCBxdWVyeSwgJnNp
bmstPnByaXYtPmRpc3BsYXksICZzaW5rLT5wcml2LT5vdGhlckNvbnRleHQpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmVzdWx0ID0gR1NUX0JBU0VfU0lO
S19DTEFTUyhwYXJlbnRfY2xhc3MpLT5xdWVyeShiYXNlU2luaywgcXVlcnkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKIHN0YXRpYyB2
b2lkIHdlYmtpdF92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0VmlkZW9TaW5rQ2xhc3MqIGts
YXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mo
a2xhc3MpOwpAQCAtMzQ5LDYgKzYyNiwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lu
a19jbGFzc19pbml0KFdlYktpdFZpZGVvU2lua0NsYXNzKiBrbGFzcykKICAgICBiYXNlU2lua0Ns
YXNzLT5zdGFydCA9IHdlYmtpdFZpZGVvU2lua1N0YXJ0OwogICAgIGJhc2VTaW5rQ2xhc3MtPnNl
dF9jYXBzID0gd2Via2l0VmlkZW9TaW5rU2V0Q2FwczsKICAgICBiYXNlU2lua0NsYXNzLT5wcm9w
b3NlX2FsbG9jYXRpb24gPSB3ZWJraXRWaWRlb1NpbmtQcm9wb3NlQWxsb2NhdGlvbjsKKyNpZiBV
U0UoR1NUUkVBTUVSX0dMKQorICAgIGJhc2VTaW5rQ2xhc3MtPnByZXBhcmUgPSB3ZWJraXRWaWRl
b1NpbmtQcmVwYXJlOworICAgIGJhc2VTaW5rQ2xhc3MtPnF1ZXJ5ID0gd2Via2l0VmlkZW9TaW5r
UXVlcnk7CisgICAgZWxlbWVudENsYXNzLT5zZXRfY29udGV4dCA9IHdlYmtpdFZpZGVvU2lua1Nl
dENvbnRleHQ7CisjZW5kaWYKIAogICAgIHdlYmtpdFZpZGVvU2lua1NpZ25hbHNbUkVQQUlOVF9S
RVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJyZXBhaW50LXJlcXVlc3RlZCIsCiAgICAgICAgICAg
ICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmlu
ZEdTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCmluZGV4
IDc0NDQ3NjAuLmFjZDEyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVy
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCkBAIC0xOSw2ICsx
OSw3IEBACiAjICBnc3RyZWFtZXItYXBwOiAgICAgICAgR1NUUkVBTUVSX0FQUF9JTkNMVURFX0RJ
UlMgYW5kIEdTVFJFQU1FUl9BUFBfTElCUkFSSUVTCiAjICBnc3RyZWFtZXItYXVkaW86ICAgICAg
R1NUUkVBTUVSX0FVRElPX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0FVRElPX0xJQlJBUklF
UwogIyAgZ3N0cmVhbWVyLWZmdDogICAgICAgIEdTVFJFQU1FUl9GRlRfSU5DTFVERV9ESVJTIGFu
ZCBHU1RSRUFNRVJfRkZUX0xJQlJBUklFUworIyAgZ3N0cmVhbWVyLWdsOiAgICAgICAgIEdTVFJF
QU1FUl9HTF9JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9HTF9MSUJSQVJJRVMKICMgIGdzdHJl
YW1lci1tcGVndHM6ICAgICBHU1RSRUFNRVJfTVBFR1RTX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVB
TUVSX01QRUdUU19MSUJSQVJJRVMKICMgIGdzdHJlYW1lci1wYnV0aWxzOiAgICBHU1RSRUFNRVJf
UEJVVElMU19JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9QQlVUSUxTX0xJQlJBUklFUwogIyAg
Z3N0cmVhbWVyLXRhZzogICAgICAgIEdTVFJFQU1FUl9UQUdfSU5DTFVERV9ESVJTIGFuZCBHU1RS
RUFNRVJfVEFHX0xJQlJBUklFUwpAQCAtODQsNiArODUsNyBAQCBGSU5EX0dTVFJFQU1FUl9DT01Q
T05FTlQoR1NUUkVBTUVSX0JBU0UgZ3N0cmVhbWVyLWJhc2UtMS4wIGdzdGJhc2UtMS4wKQogRklO
RF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9BUFAgZ3N0cmVhbWVyLWFwcC0xLjAgZ3N0
YXBwLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfQVVESU8gZ3N0cmVh
bWVyLWF1ZGlvLTEuMCBnc3RhdWRpby0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NU
UkVBTUVSX0ZGVCBnc3RyZWFtZXItZmZ0LTEuMCBnc3RmZnQtMS4wKQorRklORF9HU1RSRUFNRVJf
Q09NUE9ORU5UKEdTVFJFQU1FUl9HTCBnc3RyZWFtZXItZ2wtMS4wPj0xLjUuMCBnc3RnbC0xLjAp
CiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX01QRUdUUyBnc3RyZWFtZXItbXBl
Z3RzLTEuMD49MS40LjAgZ3N0bXBlZ3RzLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChH
U1RSRUFNRVJfUEJVVElMUyBnc3RyZWFtZXItcGJ1dGlscy0xLjAgZ3N0cGJ1dGlscy0xLjApCiBG
SU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX1RBRyBnc3RyZWFtZXItdGFnLTEuMCBn
c3R0YWctMS4wKQpAQCAtMTE0LDYgKzExNiw4IEBAIG1hcmtfYXNfYWR2YW5jZWQoCiAgICAgR1NU
UkVBTUVSX0JBU0VfTElCUkFSSUVTCiAgICAgR1NUUkVBTUVSX0ZGVF9JTkNMVURFX0RJUlMKICAg
ICBHU1RSRUFNRVJfRkZUX0xJQlJBUklFUworICAgIEdTVFJFQU1FUl9HTF9JTkNMVURFX0RJUlMK
KyAgICBHU1RSRUFNRVJfR0xfTElCUkFSSUVTCiAgICAgR1NUUkVBTUVSX0lOQ0xVREVfRElSUwog
ICAgIEdTVFJFQU1FUl9MSUJSQVJJRVMKICAgICBHU1RSRUFNRVJfTVBFR1RTX0lOQ0xVREVfRElS
UwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBjMGE4YWQ1Li44Njk5NDkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZQpAQCAtMjMzLDcgKzIzMyw3IEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dF
Ql9BVURJTykKICAgICBzZXQoR1NUUkVBTUVSX0NPTVBPTkVOVFMgYXBwIHBidXRpbHMpCiAgICAg
YWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVIpCiAgICAgaWYgKEVOQUJMRV9WSURF
TykKLSAgICAgICAgbGlzdChBUFBFTkQgR1NUUkVBTUVSX0NPTVBPTkVOVFMgdmlkZW8gbXBlZ3Rz
IHRhZykKKyAgICAgICAgbGlzdChBUFBFTkQgR1NUUkVBTUVSX0NPTVBPTkVOVFMgdmlkZW8gbXBl
Z3RzIHRhZyBnbCkKICAgICBlbmRpZiAoKQogCiAgICAgaWYgKEVOQUJMRV9XRUJfQVVESU8pCkBA
IC0yNDcsNiArMjQ3LDExIEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykK
ICAgICAgICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVJfTVBFR1RTKQogICAg
ICAgICBzZXQoVVNFX0dTVFJFQU1FUl9NUEVHVFMgVFJVRSkKICAgICBlbmRpZiAoKQorCisgICAg
aWYgKFBDX0dTVFJFQU1FUl9HTF9GT1VORCkKKyAgICAgICAgYWRkX2RlZmluaXRpb25zKC1EV1RG
X1VTRV9HU1RSRUFNRVJfR0wpCisgICAgICAgIHNldChVU0VfR1NUUkVBTUVSX0dMIFRSVUUpCisg
ICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKIGlmIChFTkFCTEVfV0FZTEFORF9UQVJHRVQpCi0tIAoy
LjEuMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244249</attachid>
            <date>2015-01-08 02:21:05 -0800</date>
            <delta_ts>2015-03-23 10:27:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>23531</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhMTE0NjRkODJiODI5ZGM1OWVlMGQ0Yjk5YzQ2MzFmZjU2Y2ZkNjY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDkgRGVjIDIwMTQgMTk6MDI6NDMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAzNyArKysKIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlICAgICAg
ICAgICAgICAgICAgIHwgIDEwICsKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgIHwgIDMwICsrKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Np
bmtHU3RyZWFtZXIuY3BwICAgICAgfCAyODQgKysrKysrKysrKysrKysrKysrKystCiBTb3VyY2Uv
Y21ha2UvRmluZEdTdHJlYW1lci5jbWFrZSAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBTb3Vy
Y2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQog
NyBmaWxlcyBjaGFuZ2VkLCAzNzIgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGE4ODVmMzUuLjA5ZTU3OWIgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
NC0xMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dTdHJlYW1lcl0gR3N0R0wgc3VwcG9ydCBpbiB0aGUgdmlkZW8gc2luaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTYyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmlu
ZEdTdHJlYW1lci5jbWFrZTogTG9va3VwIHRoZSBHc3RHTCBsaWJyYXJ5IGFuZCBoZWFkZXJzLgor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOiBUdXJuIG9uIHRoZSBVU0Uo
R1NUUkVBTUVSX0dMKQorICAgICAgICBtYWNybyBpZiBHc3RHTCB3YXMgZm91bmQuCisKIDIwMTUt
MDEtMDcgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bVGhyZWFkZWRDb21wb3NpdG9yXSBBZGQgc3VwcG9ydCBmb3IgdGhyZWFkZWQgY29tcG9zaXRv
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBjNmFhN2Y2Li44ZjhlZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDAgQEAKKzIwMTQtMTItMDkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHU3RyZWFtZXJdIEdzdEdMIHN1cHBvcnQgaW4gdGhlIHZpZGVvIHNpbmsK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODU2Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGEgcmVj
ZW50IGVub3VnaCAoPj0gMS41KSBHU3RyZWFtZXIgdmVyc2lvbiBpcyBhdmFpbGFibGUgdGhlbgor
ICAgICAgICB0aGUgdmlkZW8gc2luayB3aWxsIHVzZSB0aGUgR3N0R0wgbGlicmFyeSB0byBlbWJl
ZCBhIEdMIHRleHR1cmUgaW4KKyAgICAgICAgZWFjaCBHc3RCdWZmZXIgdG8gYmUgcmVuZGVyZWQg
dmlhIHRoZSBUZXh0dXJlTWFwcGVyLiBJbiB0aGlzCisgICAgICAgIHNjZW5hcmlvIGEgR1BVLUdQ
VSB0ZXh0dXJlIGNvcHkgd2lsbCBiZSBwZXJmb3JtZWQuIEZvciB0aGlzIHRvIGJlCisgICAgICAg
IHBvc3NpYmxlIHRoZSBHTCBjb250ZXh0IHVzZWQgd2l0aGluIFdlYktpdCBuZWVkcyB0byBiZSBz
aGFyZWQgd2l0aAorICAgICAgICB0aGUgR0wgY29udGV4dCB1c2VkIGJ5IEdzdEdMLiBGb3Igbm93
IHdlIHN1cHBvcnQgb25seSB0aGUgR0xYL1gxMQorICAgICAgICBzaGFyaW5nIGNvbnRleHQuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyBtZWRpYSB0ZXN0cyB3aWxsIGNvdmVyIHRo
aXMgY2hhbmdlIG9uY2UgdGhlCisgICAgICAgIGJ1aWxkYm90cyBoYXZlIEdTdHJlYW1lciA+PSAx
LjUuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogVXNlIEdzdEdMIGxpYnJhcnkgZm9y
IHRoZSBidWlsZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKTogRG8gYQorICAgICAgICBH
UFUtR1BVIHRleHR1cmUgaWYgdGhlIGJ1ZmZlciBhbHJlYWR5IGhhcyBhIEdMIHRleHR1cmUgYXZh
aWxhYmxlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoX1dlYktpdFZpZGVvU2lua1ByaXZhdGU6Ol9XZWJLaXRW
aWRlb1NpbmtQcml2YXRlKTogVXNlIGEgbXV0ZXgKKyAgICAgICAgYW5kIGNvbmRpdGlvbiBzbyBh
cyB0byBnZXQgdGhlIFdlYktpdCBHTCBjb250ZXh0IGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAg
ICAgICAoX1dlYktpdFZpZGVvU2lua1ByaXZhdGU6On5fV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSk6
CisgICAgICAgICh3cmFwR0xDb250ZXh0Q2FsbGJhY2spOiBXcmFwIHRoZSBXZWJLaXQgR0wgY29u
dGV4dCBpbiBhIEdzdEdMIGNvbnRleHQuCisgICAgICAgICh3ZWJraXRWaWRlb1NpbmtTdG9wKTog
RnJlZSBidWZmZXIgcG9vbCBhbmQgcHJlLWFsbG9jYXRlZCBidWZmZXIuCisgICAgICAgICh3ZWJr
aXRWaWRlb1NpbmtTZXRDYXBzKTogQ3JlYXRlIHRoZSBHc3RHTFVwbG9hZCB0aGF0IHdpbGwgdGFr
ZQorICAgICAgICBjYXJlIG9mIHVwZGF0aW5nIHRoZSBidWZmZXIncyB0ZXh0dXJlIGFuZCB1cGRh
dGUgY2FwcyBhY2NvcmRpbmdseS4KKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1ByZXBhcmUpOiBV
cGRhdGUgdGhlIGJ1ZmZlcidzIHRleHR1cmUgYmVmb3JlIHJlbmRlcmluZy4KKyAgICAgICAgKHdl
YmtpdFZpZGVvU2lua1Byb3Bvc2VBbGxvY2F0aW9uKTogUHJlcGFyZSBhIGJ1ZmZlciBwb29sLCBz
ZXQgdGhlCisgICAgICAgIEdMIGNvbnRleHQgdXAgYW5kIHVwZGF0ZSB0aGUgbWV0YSBpbmZvcm1h
dGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBzaW5rLgorICAgICAgICAod2Via2l0VmlkZW9TaW5rU2V0
Q29udGV4dCk6IFBhc3MtdGhyb3VnaCB0aGUgY29udGV4dCB0byBHc3RHTC4KKyAgICAgICAgKHdl
YmtpdFZpZGVvU2lua1F1ZXJ5KTogQmFzaWMgc3VwcG9ydCBmb3IgY29udGV4dCBxdWVyaWVzLgor
ICAgICAgICAod2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdCk6CisKIDIwMTUtMDEtMDcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIC13ZWJraXQtdGFw
LWhpZ2hsaWdodC1jb2xvciAvIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIC8gLXdlYmtpdC10
b3VjaC1jYWxsb3V0IHRvIHRoZSBuZXcgU3R5bGVCdWlsZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IGVkOTUyOTkuLjVjYzQ0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0zNDksNiArMzQ5LDE2IEBAIGlmIChFTkFCTEVfVklERU8pCiAgICAgICAgICAgICAke0dTVFJF
QU1FUl9NUEVHVFNfTElCUkFSSUVTfQogICAgICAgICApCiAgICAgZW5kaWYgKCkKKworICAgIGlm
IChVU0VfR1NUUkVBTUVSX0dMKQorICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVf
RElSRUNUT1JJRVMKKyAgICAgICAgICAgICR7R1NUUkVBTUVSX0dMX0lOQ0xVREVfRElSU30KKyAg
ICAgICAgKQorCisgICAgICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCisgICAgICAg
ICAgICAke0dTVFJFQU1FUl9HTF9MSUJSQVJJRVN9CisgICAgICAgICkKKyAgICBlbmRpZiAoKQog
ZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNDRkZTc1Ni4uZDUwYmU2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcApAQCAtNDQsNiArNDQsMTIgQEAKICNpbmNsdWRlIDxnc3QvYXVkaW8vc3RyZWFtdm9s
dW1lLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgogCisjaWYgVVNFKEdT
VFJFQU1FUl9HTCkKKyNkZWZpbmUgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyNpbmNsdWRlIDxnc3Qv
Z2wvZ3N0Z2xtZW1vcnkuaD4KKyN1bmRlZiBHU1RfVVNFX1VOU1RBQkxFX0FQSQorI2VuZGlmCisK
ICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxLCAwKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAjZW5kaWYKQEAgLTI5NSw2ICszMDEsMzAg
QEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmUKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdT
VF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZp
ZGVvSW5mbykpOwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gdGV4dHVyZU1h
cHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQ
SEEoJnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4
dHVyZTo6Tm9GbGFnKTsKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1
ZmZlcihtX3NhbXBsZSk7CisgICAgY29uc3QgQml0bWFwVGV4dHVyZUdMKiB0ZXh0dXJlR0wgPSBz
dGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKTsKKyAgICB1
aW50MzJfdCB0ZXh0dXJlSUQgPSB0ZXh0dXJlR0wtPmlkKCk7CisKKyNpZiBVU0UoR1NUUkVBTUVS
X0dMKQorICAgIEdzdE1hcEluZm8gbWFwSW5mbzsKKyAgICBpZiAoIWdzdF9idWZmZXJfbWFwKGJ1
ZmZlciwgJm1hcEluZm8sIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQgfCBH
U1RfTUFQX0dMKSkpIHsKKyAgICAgICAgV0FSTl9NRURJQV9NRVNTQUdFKCJGYWlsZWQgdG8gbWFw
IGJ1ZmZlciIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKCFnc3Rf
YnVmZmVyX2dldF92aWRlb19nbF90ZXh0dXJlX3VwbG9hZF9tZXRhKGJ1ZmZlcikgJiYgZ3N0X2J1
ZmZlcl9uX21lbW9yeShidWZmZXIpID49IDEpIHsKKyAgICAgICAgR3N0TWVtb3J5KiBidWZmZXJN
ZW1vcnk7CisgICAgICAgIGlmICgoYnVmZmVyTWVtb3J5ID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9y
eShidWZmZXIsIDApKSAmJiBnc3RfaXNfZ2xfbWVtb3J5KGJ1ZmZlck1lbW9yeSkpIHsKKyAgICAg
ICAgICAgIGF1dG8qIGdsTWVtb3J5ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RHTE1lbW9yeSo+KGJ1
ZmZlck1lbW9yeSk7CisgICAgICAgICAgICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4dHVyZVR5
cGUgPSBnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0KGdsTWVtb3J5LT5jb250ZXh0LCBH
U1RfVklERU9fSU5GT19GT1JNQVQoJnZpZGVvSW5mbyksIDApOworCisgICAgICAgICAgICBpZiAo
Z3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZShnbE1lbW9yeSwgdGV4dHVyZUlELCB0ZXh0
dXJlVHlwZSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBHU1RfVklERU9fSU5GT19QTEFO
RV9TVFJJREUoJnZpZGVvSW5mbywgMCksIHRydWUgLyogcmVzcGVjaWZ5ICovKSkgeworICAgICAg
ICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCAmbWFwSW5mbyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRleHR1cmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBXQVJOX01F
RElBX01FU1NBR0UoIlRleHR1cmUgY29weSBmYWlsZWQsIHRyeWluZyBmYWxsYmFjayBzbG93IHBh
dGguIik7CisgICAgICAgIH0KKyAgICB9CisgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsICZt
YXBJbmZvKTsKKyNlbmRpZgogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKICAgICBH
c3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEqIG1ldGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3Ry
ZWFtZXIuY3BwCmluZGV4IDI1NWU3NjAuLjYwY2JjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtH
U3RyZWFtZXIuY3BwCkBAIC0zNSw5ICszNSwyOSBAQAogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNs
dWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgorI2lu
Y2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb3Bvb2wuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR011dGV4TG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaD4KKworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisjZGVmaW5lIEdTVF9VU0Vf
VU5TVEFCTEVfQVBJCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsY29udGV4dC5oPgorI2luY2x1ZGUg
PGdzdC9nbC9nc3RnbGRpc3BsYXkuaD4KKyN1bmRlZiBHU1RfVVNFX1VOU1RBQkxFX0FQSQorCisj
aW5jbHVkZSA8Z3N0L2dsL2dzdGdsdXRpbHMuaD4KKworI2lmIFBMQVRGT1JNKFgxMSkKKyNpbmNs
dWRlIDxnc3QvZ2wveDExL2dzdGdsZGlzcGxheV94MTEuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAi
R0xDb250ZXh0LmgiCisjaWYgVVNFKEdMWCkKKyNpbmNsdWRlICJHTENvbnRleHRHTFguaCIKKyNl
bmRpZgorI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC00Nyw3ICs2NywxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNlbHNl
CiAjZGVmaW5lIEdTVF9DQVBTX0ZPUk1BVCAieyB4UkdCLCBBUkdCIH0iCiAjZW5kaWYKLSNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAxLCAwKQorCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKworI2Rl
ZmluZSBHU1RfRkVBVFVSRURfQ0FQUyBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMo
R1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBHU1RfQ0FQU19GT1JNQVQpICI7ICIg
R1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9H
U1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSwgIlJHQkEiKSAiOyIKKworI2VsaWYgR1NU
X0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKICNkZWZpbmUgR1NUX0ZFQVRVUkVEX0NBUFMgR1NUX1ZJ
REVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklE
RU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSwgR1NUX0NBUFNfRk9STUFUKSAiOyIKICNlbHNlCiAj
ZGVmaW5lIEdTVF9GRUFUVVJFRF9DQVBTCkBAIC03Myw2ICs5OCwxMCBAQCBzdHJ1Y3QgX1dlYktp
dFZpZGVvU2lua1ByaXZhdGUgewogICAgIHsKICAgICAgICAgZ19tdXRleF9pbml0KCZzYW1wbGVN
dXRleCk7CiAgICAgICAgIGdfY29uZF9pbml0KCZkYXRhQ29uZGl0aW9uKTsKKyNpZiBVU0UoR1NU
UkVBTUVSX0dMKQorICAgICAgICBnX211dGV4X2luaXQoJmNvbnRleHRNdXRleCk7CisgICAgICAg
IGdfY29uZF9pbml0KCZjb250ZXh0Q29uZGl0aW9uKTsKKyNlbmRpZgogICAgICAgICBnc3Rfdmlk
ZW9faW5mb19pbml0KCZpbmZvKTsKICAgICB9CiAKQEAgLTgwLDYgKzEwOSwxMCBAQCBzdHJ1Y3Qg
X1dlYktpdFZpZGVvU2lua1ByaXZhdGUgewogICAgIHsKICAgICAgICAgZ19tdXRleF9jbGVhcigm
c2FtcGxlTXV0ZXgpOwogICAgICAgICBnX2NvbmRfY2xlYXIoJmRhdGFDb25kaXRpb24pOworI2lm
IFVTRShHU1RSRUFNRVJfR0wpCisgICAgICAgIGdfbXV0ZXhfY2xlYXIoJmNvbnRleHRNdXRleCk7
CisgICAgICAgIGdfY29uZF9jbGVhcigmY29udGV4dENvbmRpdGlvbik7CisjZW5kaWYKICAgICB9
CiAKICAgICBHc3RTYW1wbGUqIHNhbXBsZTsKQEAgLTEwMCwxNiArMTMzLDcwIEBAIHN0cnVjdCBf
V2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSB7CiAgICAgLy8KICAgICAvLyBQcm90ZWN0ZWQgYnkgdGhl
IHNhbXBsZSBtdXRleAogICAgIGJvb2wgdW5sb2NrZWQ7CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dM
KQorICAgIEdzdENhcHMqIGdsQ2FwczsKKyAgICBHc3RCdWZmZXJQb29sKiBwb29sOworICAgIEdz
dEdMRGlzcGxheSogZGlzcGxheTsKKyAgICBHc3RHTENvbnRleHQqIGNvbnRleHQ7CisgICAgR3N0
R0xDb250ZXh0KiBvdGhlckNvbnRleHQ7CisgICAgR011dGV4IGNvbnRleHRNdXRleDsKKyAgICBH
Q29uZCBjb250ZXh0Q29uZGl0aW9uOworCisgICAgR3N0R0xVcGxvYWQqIHVwbG9hZDsKKyAgICBH
c3RCdWZmZXIqIG5leHRCdWZmZXI7CisjZW5kaWYKIH07CiAKICNkZWZpbmUgd2Via2l0X3ZpZGVv
X3NpbmtfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcwogR19ERUZJTkVfVFlQRV9XSVRIX0NPREUo
V2ViS2l0VmlkZW9TaW5rLCB3ZWJraXRfdmlkZW9fc2luaywgR1NUX1RZUEVfVklERU9fU0lOSywg
R1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0VmlkZW9TaW5rRGVidWcsICJ3ZWJraXRzaW5r
IiwgMCwgIndlYmtpdCB2aWRlbyBzaW5rIikpOwogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKK2di
b29sZWFuIHdyYXBHTENvbnRleHRDYWxsYmFjayhncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBX
ZWJLaXRWaWRlb1NpbmsqIHNpbmsgPSByZWludGVycHJldF9jYXN0PFdlYktpdFZpZGVvU2luayo+
KHVzZXJEYXRhKTsKKyAgICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gc2luay0+cHJp
djsKKworICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2socHJpdi0+Y29udGV4dE11dGV4KTsK
KworICAgIEdFcnJvciogZXJyb3IgPSBudWxscHRyOworCisgICAgaWYgKCFwcml2LT5kaXNwbGF5
KQorICAgICAgICBwcml2LT5kaXNwbGF5ID0gZ3N0X2dsX2Rpc3BsYXlfbmV3KCk7CisKKyAgICBp
ZiAoIXByaXYtPm90aGVyQ29udGV4dCkgeworICAgICAgICBHTENvbnRleHQqIHdlYmtpdENvbnRl
eHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCk7CisjaWYgUExBVEZPUk0oWDExKQorICAg
ICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCk7Cisg
ICAgICAgIEdMWENvbnRleHQqIGdseFNoYXJpbmdDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxH
TFhDb250ZXh0Kj4od2Via2l0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgICAgICBH
c3RHTERpc3BsYXlYMTEqIGdzdEdMRGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X3gxMV9uZXdfd2l0
aF9kaXNwbGF5KGRpc3BsYXkpOworICAgICAgICBHc3RHTFBsYXRmb3JtIHBsYXRmb3JtID0gR1NU
X0dMX1BMQVRGT1JNX0dMWDsKKyAgICAgICAgR3N0R0xBUEkgZ2xBcGkgPSBnc3RfZ2xfY29udGV4
dF9nZXRfY3VycmVudF9nbF9hcGkobnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIGlmIChnbHhT
aGFyaW5nQ29udGV4dCkKKyAgICAgICAgICAgIHByaXYtPm90aGVyQ29udGV4dCA9IGdzdF9nbF9j
b250ZXh0X25ld193cmFwcGVkKEdTVF9HTF9ESVNQTEFZKGdzdEdMRGlzcGxheSksIHJlaW50ZXJw
cmV0X2Nhc3Q8Z3VpbnRwdHI+KGdseFNoYXJpbmdDb250ZXh0KSwgcGxhdGZvcm0sIGdsQXBpKTsK
KyNlbmRpZgorICAgIH0KKworICAgIGlmICghcHJpdi0+Y29udGV4dCkgeworICAgICAgICBwcml2
LT5jb250ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3KHByaXYtPmRpc3BsYXkpOworICAgICAgICBp
ZiAoIWdzdF9nbF9jb250ZXh0X2NyZWF0ZShwcml2LT5jb250ZXh0LCBwcml2LT5vdGhlckNvbnRl
eHQsICZlcnJvcikpIHsKKyAgICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNpbmssIFJFU09V
UkNFLCBOT1RfRk9VTkQsICgiJXMiLCBlcnJvci0+bWVzc2FnZSksIChudWxscHRyKSk7CisgICAg
ICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYtPmNvbnRleHQpOworICAgICAgICAgICAgcHJp
di0+Y29udGV4dCA9IG51bGxwdHI7CisgICAgICAgICAgICBnX2NvbmRfc2lnbmFsKCZwcml2LT5j
b250ZXh0Q29uZGl0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGdfY29uZF9zaWduYWwoJnByaXYtPmNvbnRleHRDb25kaXRpb24pOworICAg
IHJldHVybiBGQUxTRTsKK30KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lu
a19pbml0KFdlYktpdFZpZGVvU2luayogc2luaykKIHsKICAgICBzaW5rLT5wcml2ID0gR19UWVBF
X0lOU1RBTkNFX0dFVF9QUklWQVRFKHNpbmssIFdFQktJVF9UWVBFX1ZJREVPX1NJTkssIFdlYktp
dFZpZGVvU2lua1ByaXZhdGUpOwotICAgIGdfb2JqZWN0X3NldChHU1RfQkFTRV9TSU5LKHNpbmsp
LCAiZW5hYmxlLWxhc3Qtc2FtcGxlIiwgRkFMU0UsIE5VTEwpOworICAgIGdfb2JqZWN0X3NldChH
U1RfQkFTRV9TSU5LKHNpbmspLCAiZW5hYmxlLWxhc3Qtc2FtcGxlIiwgRkFMU0UsIG51bGxwdHIp
OwogICAgIG5ldyAoc2luay0+cHJpdikgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSgpOwogfQogCkBA
IC0xMTksNyArMjA2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxi
YWNrKFdlYktpdFZpZGVvU2luayogc2luaykKIAogICAgIEdNdXRleExvY2tlcjxHTXV0ZXg+IGxv
Y2socHJpdi0+c2FtcGxlTXV0ZXgpOwogICAgIEdzdFNhbXBsZSogc2FtcGxlID0gcHJpdi0+c2Ft
cGxlOwotICAgIHByaXYtPnNhbXBsZSA9IDA7CisgICAgcHJpdi0+c2FtcGxlID0gbnVsbHB0cjsK
IAogICAgIGlmICghc2FtcGxlIHx8IHByaXYtPnVubG9ja2VkIHx8IFVOTElLRUxZKCFHU1RfSVNf
U0FNUExFKHNhbXBsZSkpKSB7CiAgICAgICAgIGdfY29uZF9zaWduYWwoJnByaXYtPmRhdGFDb25k
aXRpb24pOwpAQCAtMjE5LDggKzMwNiwxMSBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRW
aWRlb1NpbmtSZW5kZXIoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAg
IC8vIGxvd2VyIHByaW9yaXR5IHNvdXJjZXMuCiAgICAgLy8gU2VlOiBodHRwczovL2J1Z3ppbGxh
Lmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwODMwLgogICAgIGdzdF9vYmplY3RfcmVmKHNp
bmspOwotICAgIHByaXYtPnRpbWVvdXRTb3VyY2Uuc2NoZWR1bGUoIltXZWJLaXRdIHdlYmtpdFZp
ZGVvU2lua1RpbWVvdXRDYWxsYmFjayIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihzdGQ6OmJpbmQo
d2Via2l0VmlkZW9TaW5rVGltZW91dENhbGxiYWNrLCBzaW5rKSksIEdfUFJJT1JJVFlfREVGQVVM
VCwKLSAgICAgICAgW3NpbmtdIHsgZ3N0X29iamVjdF91bnJlZihzaW5rKTsgfSk7CisgICAgcHJp
di0+dGltZW91dFNvdXJjZS5zY2hlZHVsZSgiW1dlYktpdF0gd2Via2l0VmlkZW9TaW5rVGltZW91
dENhbGxiYWNrIiwKKyAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KHN0ZDo6YmluZCh3ZWJr
aXRWaWRlb1NpbmtUaW1lb3V0Q2FsbGJhY2ssIHNpbmspKSwKKyAgICAgICAgR19QUklPUklUWV9E
RUZBVUxULCBbc2lua10geworICAgICAgICAgICAgZ3N0X29iamVjdF91bnJlZihzaW5rKTsKKyAg
ICAgICAgfSk7CiAKICAgICBnX2NvbmRfd2FpdCgmcHJpdi0+ZGF0YUNvbmRpdGlvbiwgJnByaXYt
PnNhbXBsZU11dGV4KTsKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CkBAIC0yMzgsNyArMzI4LDcg
QEAgc3RhdGljIHZvaWQgdW5sb2NrU2FtcGxlTXV0ZXgoV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZSog
cHJpdikKIAogICAgIGlmIChwcml2LT5zYW1wbGUpIHsKICAgICAgICAgZ3N0X3NhbXBsZV91bnJl
Zihwcml2LT5zYW1wbGUpOwotICAgICAgICBwcml2LT5zYW1wbGUgPSAwOworICAgICAgICBwcml2
LT5zYW1wbGUgPSBudWxscHRyOwogICAgIH0KIAogICAgIHByaXYtPnVubG9ja2VkID0gdHJ1ZTsK
QEAgLTI2OSwxNSArMzU5LDMwIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtVbmxv
Y2tTdG9wKEdzdEJhc2VTaW5rKiBiYXNlU2luaykKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdFZp
ZGVvU2lua1N0b3AoR3N0QmFzZVNpbmsqIGJhc2VTaW5rKQogewotICAgIFdlYktpdFZpZGVvU2lu
a1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfVklERU9fU0lOSyhiYXNlU2luayktPnByaXY7CisgICAg
V2ViS2l0VmlkZW9TaW5rKiBzaW5rID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8V2ViS2l0VmlkZW9T
aW5rKj4oYmFzZVNpbmspOworICAgIFdlYktpdFZpZGVvU2lua1ByaXZhdGUqIHByaXYgPSBzaW5r
LT5wcml2OwogCiAgICAgdW5sb2NrU2FtcGxlTXV0ZXgocHJpdik7CiAKICAgICBpZiAocHJpdi0+
Y3VycmVudENhcHMpIHsKICAgICAgICAgZ3N0X2NhcHNfdW5yZWYocHJpdi0+Y3VycmVudENhcHMp
OwotICAgICAgICBwcml2LT5jdXJyZW50Q2FwcyA9IDA7CisgICAgICAgIHByaXYtPmN1cnJlbnRD
YXBzID0gbnVsbHB0cjsKICAgICB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIEdTVF9P
QkpFQ1RfTE9DSyhzaW5rKTsKKyAgICBpZiAocHJpdi0+cG9vbCkKKyAgICAgICAgZ3N0X29iamVj
dF91bnJlZihwcml2LT5wb29sKTsKKyAgICBwcml2LT5wb29sID0gbnVsbHB0cjsKKyAgICBHU1Rf
T0JKRUNUX1VOTE9DSyhzaW5rKTsKKworICAgIGdzdF9idWZmZXJfcmVwbGFjZSgmcHJpdi0+bmV4
dEJ1ZmZlciwgbnVsbHB0cik7CisKKyAgICBpZiAocHJpdi0+dXBsb2FkKQorICAgICAgICBnc3Rf
b2JqZWN0X3VucmVmKHByaXYtPnVwbG9hZCk7CisgICAgcHJpdi0+dXBsb2FkID0gbnVsbHB0cjsK
KyNlbmRpZgorCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTMwNiwxMyArNDExLDU3IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtTZXRDYXBzKEdzdEJhc2VTaW5rKiBiYXNlU2lu
aywgR3N0Q2FwcyogY2FwcykKIAogICAgIHByaXYtPmluZm8gPSB2aWRlb0luZm87CiAgICAgZ3N0
X2NhcHNfcmVwbGFjZSgmcHJpdi0+Y3VycmVudENhcHMsIGNhcHMpOworCisjaWYgVVNFKEdTVFJF
QU1FUl9HTCkKKyAgICBHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKHByaXYtPmNvbnRleHRNdXRl
eCk7CisKKyAgICBnc3Rfb2JqZWN0X3JlZihzaW5rKTsKKyAgICBHTWFpbkxvb3BTb3VyY2U6OnNj
aGVkdWxlQW5kRGVsZXRlT25EZXN0cm95KCJbV2ViS2l0XVtnc3RdIEdMIGNvbnRleHQgd3JhcCIs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihzdGQ6OmJpbmQod3JhcEdMQ29udGV4dENhbGxiYWNrLCBz
aW5rKSksIEdfUFJJT1JJVFlfREVGQVVMVCwgW3NpbmtdIHsKKyAgICAgICAgZ3N0X29iamVjdF91
bnJlZihzaW5rKTsKKyAgICB9KTsKKworICAgIGdfY29uZF93YWl0KCZzaW5rLT5wcml2LT5jb250
ZXh0Q29uZGl0aW9uLCAmc2luay0+cHJpdi0+Y29udGV4dE11dGV4KTsKKworICAgIGlmIChwcml2
LT51cGxvYWQpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocHJpdi0+dXBsb2FkKTsKKyAgICBw
cml2LT51cGxvYWQgPSBnc3RfZ2xfdXBsb2FkX25ldyhwcml2LT5jb250ZXh0KTsKKworICAgIEdz
dENhcHNGZWF0dXJlcyogZ2xGZWF0dXJlcyA9IGdzdF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5n
KEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7CisgICAgaWYgKHByaXYtPmdsQ2Fw
cykKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYocHJpdi0+Z2xDYXBzKTsKKyAgICBwcml2LT5nbENh
cHMgPSBnc3RfY2Fwc19jb3B5KGNhcHMpOworICAgIGdzdF9jYXBzX3NldF9zaW1wbGUocHJpdi0+
Z2xDYXBzLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIlJHQkEiLCBudWxscHRyKTsKKyAgICBn
c3RfY2Fwc19zZXRfZmVhdHVyZXMocHJpdi0+Z2xDYXBzLCAwLCBnbEZlYXR1cmVzKTsKKworICAg
IGdzdF9nbF91cGxvYWRfc2V0X2NhcHMocHJpdi0+dXBsb2FkLCBjYXBzLCBwcml2LT5nbENhcHMp
OworI2VuZGlmCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQor
c3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUHJlcGFyZShHc3RCYXNlU2luayog
YmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIFdlYktpdFZpZGVvU2luayogc2lu
ayA9IFdFQktJVF9WSURFT19TSU5LKGJhc2VTaW5rKTsKKyAgICBXZWJLaXRWaWRlb1NpbmtQcml2
YXRlKiBwcml2ID0gc2luay0+cHJpdjsKKyAgICBHc3RCdWZmZXIqIG5leHRCdWZmZXIgPSBudWxs
cHRyOworCisgICAgaWYgKCFnc3RfZ2xfdXBsb2FkX3BlcmZvcm1fd2l0aF9idWZmZXIocHJpdi0+
dXBsb2FkLCBidWZmZXIsICZuZXh0QnVmZmVyKSkgeworICAgICAgICBHU1RfRUxFTUVOVF9FUlJP
UihzaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwgIkZhaWxlZCB0byB1cGxvYWQgYnVm
ZmVyIiksIChudWxscHRyKSk7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9
CisKKyAgICBnc3RfYnVmZmVyX3JlcGxhY2UoJnByaXYtPm5leHRCdWZmZXIsIG5leHRCdWZmZXIp
OworICAgIGdzdF9idWZmZXJfdW5yZWYobmV4dEJ1ZmZlcik7CisgICAgcmV0dXJuIEdTVF9GTE9X
X09LOworfQorI2VuZGlmCisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRWaWRlb1NpbmtQcm9wb3Nl
QWxsb2NhdGlvbihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdFF1ZXJ5KiBxdWVyeSkKIHsKICAg
ICBHc3RDYXBzKiBjYXBzOwotICAgIGdzdF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uKHF1ZXJ5LCAm
Y2FwcywgMCk7CisgICAgZ2Jvb2xlYW4gbmVlZFBvb2w7CisKKyAgICBnc3RfcXVlcnlfcGFyc2Vf
YWxsb2NhdGlvbihxdWVyeSwgJmNhcHMsICZuZWVkUG9vbCk7CiAgICAgaWYgKCFjYXBzKQogICAg
ICAgICByZXR1cm4gRkFMU0U7CiAKQEAgLTMyMCwxNCArNDY5LDEyNCBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0VmlkZW9TaW5rUHJvcG9zZUFsbG9jYXRpb24oR3N0QmFzZVNpbmsqIGJhc2VTaW5r
LCBHc3RRdWVyeQogICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZzaW5rLT5wcml2
LT5pbmZvLCBjYXBzKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCisgICAgR3N0U3RydWN0dXJl
KiBnbENvbnRleHQgPSBudWxscHRyOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgR1NUX0RF
QlVHX09CSkVDVChzaW5rLCAicHJvcG9zZSBhbGxvY2F0aW9uIik7CisgICAgR011dGV4TG9ja2Vy
PEdNdXRleD4gbG9jayhzaW5rLT5wcml2LT5jb250ZXh0TXV0ZXgpOworCisgICAgZ3N0X29iamVj
dF9yZWYoc2luayk7CisgICAgR01haW5Mb29wU291cmNlOjpzY2hlZHVsZUFuZERlbGV0ZU9uRGVz
dHJveSgiW1dlYktpdF1bZ3N0XSBHTCBjb250ZXh0IHdyYXAiLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4oc3RkOjpiaW5kKHdyYXBHTENvbnRleHRDYWxsYmFjaywgc2luaykpLCBHX1BSSU9SSVRZX0RF
RkFVTFQsIFtzaW5rXSB7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYoc2luayk7CisgICAgfSk7
CisKKyAgICBnX2NvbmRfd2FpdCgmc2luay0+cHJpdi0+Y29udGV4dENvbmRpdGlvbiwgJnNpbmst
PnByaXYtPmNvbnRleHRNdXRleCk7CisKKyAgICBHc3RCdWZmZXJQb29sKiBwb29sOworICAgIEdz
dFN0cnVjdHVyZSogY29uZmlnOworICAgIGd1aW50IHNpemU7CisKKyAgICBpZiAoKHBvb2wgPSBz
aW5rLT5wcml2LT5wb29sKSkKKyAgICAgICAgZ3N0X29iamVjdF9yZWYocG9vbCk7CisKKyAgICBp
ZiAocG9vbCkgeworICAgICAgICBHc3RDYXBzKiBwY2FwczsKKworICAgICAgICAvLyBXZSBoYWQg
YSBwb29sLCBjaGVjayBpdHMgY2Fwcy4KKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzaW5rLCAi
Y2hlY2sgZXhpc3RpbmcgcG9vbCBjYXBzIik7CisgICAgICAgIGNvbmZpZyA9IGdzdF9idWZmZXJf
cG9vbF9nZXRfY29uZmlnKHBvb2wpOworICAgICAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dl
dF9wYXJhbXMoY29uZmlnLCAmcGNhcHMsICZzaXplLCAwLCAwKTsKKworICAgICAgICBpZiAoIWdz
dF9jYXBzX2lzX2VxdWFsKGNhcHMsIHBjYXBzKSkgeworICAgICAgICAgICAgR1NUX0RFQlVHX09C
SkVDVChzaW5rLCAicG9vbCBoYXMgZGlmZmVyZW50IGNhcHMiKTsKKyAgICAgICAgICAgIC8vIERp
ZmZlcmVudCBjYXBzLCB3ZSBjYW4ndCB1c2UgdGhpcyBwb29sLgorICAgICAgICAgICAgZ3N0X29i
amVjdF91bnJlZihwb29sKTsKKyAgICAgICAgICAgIHBvb2wgPSBudWxscHRyOworICAgICAgICB9
CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShjb25maWcpOworICAgIH0KKworICAgIGlmIChu
ZWVkUG9vbCAmJiAhcG9vbCkgeworICAgICAgICBHc3RWaWRlb0luZm8gaW5mbzsKKworICAgICAg
ICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmaW5mbywgY2FwcykpIHsKKyAgICAgICAg
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2luaywgImludmFsaWQgY2FwcyBzcGVjaWZpZWQiKTsKKyAg
ICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc2luaywgImNyZWF0ZSBuZXcgcG9vbCB3aXRoIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQs
IGNhcHMpOworICAgICAgICBwb29sID0gZ3N0X2dsX2J1ZmZlcl9wb29sX25ldyhzaW5rLT5wcml2
LT5jb250ZXh0KTsKKworICAgICAgICAvLyBUaGUgbm9ybWFsIHNpemUgb2YgYSBmcmFtZS4KKyAg
ICAgICAgc2l6ZSA9IGluZm8uc2l6ZTsKKworICAgICAgICBjb25maWcgPSBnc3RfYnVmZmVyX3Bv
b2xfZ2V0X2NvbmZpZyhwb29sKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRf
cGFyYW1zKGNvbmZpZywgY2Fwcywgc2l6ZSwgMCwgMCk7CisgICAgICAgIGlmICghZ3N0X2J1ZmZl
cl9wb29sX3NldF9jb25maWcocG9vbCwgY29uZmlnKSkgeworICAgICAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChzaW5rLCAiZmFpbGVkIHNldHRpbmcgY29uZmlnIik7CisgICAgICAgICAgICByZXR1
cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAocG9vbCkgeworICAgICAgICBn
c3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fcG9vbChxdWVyeSwgcG9vbCwgc2l6ZSwgMiwgMCk7Cisg
ICAgICAgIGdzdF9vYmplY3RfdW5yZWYocG9vbCk7CisgICAgfQorCisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gcGxhdGZvcm0oZ3N0X2dsX3BsYXRmb3JtX3RvX3N0cmluZyhnc3RfZ2xfY29udGV4dF9n
ZXRfZ2xfcGxhdGZvcm0oc2luay0+cHJpdi0+Y29udGV4dCkpKTsKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiBnbEFwaXMoZ3N0X2dsX2FwaV90b19zdHJpbmcoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2Fw
aShzaW5rLT5wcml2LT5jb250ZXh0KSkpOworICAgIGdwb2ludGVyIGhhbmRsZSA9IHJlaW50ZXJw
cmV0X2Nhc3RfcHRyPGdwb2ludGVyPihnc3RfZ2xfY29udGV4dF9nZXRfZ2xfY29udGV4dChzaW5r
LT5wcml2LT5jb250ZXh0KSk7CisKKyAgICBnbENvbnRleHQgPSBnc3Rfc3RydWN0dXJlX25ldygi
R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhIiwgImdzdC5nbC5Hc3RHTENvbnRleHQiLAorICAg
ICAgICBHU1RfR0xfVFlQRV9DT05URVhULCBzaW5rLT5wcml2LT5jb250ZXh0LCAiZ3N0LmdsLmNv
bnRleHQuaGFuZGxlIiwKKyAgICAgICAgR19UWVBFX1BPSU5URVIsIGhhbmRsZSwgImdzdC5nbC5j
b250ZXh0LnR5cGUiLCBHX1RZUEVfU1RSSU5HLCBwbGF0Zm9ybS5nZXQoKSwKKyAgICAgICAgImdz
dC5nbC5jb250ZXh0LmFwaXMiLCBHX1RZUEVfU1RSSU5HLCBnbEFwaXMuZ2V0KCksIG51bGxwdHIp
OworI2VuZGlmCisKICAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fbWV0YShxdWVyeSwgR1NU
X1ZJREVPX01FVEFfQVBJX1RZUEUsIDApOwogICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9t
ZXRhKHF1ZXJ5LCBHU1RfVklERU9fQ1JPUF9NRVRBX0FQSV9UWVBFLCAwKTsKICNpZiBHU1RfQ0hF
Q0tfVkVSU0lPTigxLCAxLCAwKQotICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9tZXRhKHF1
ZXJ5LCBHU1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQV9BUElfVFlQRSwgMCk7CisgICAg
Z3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX21ldGEocXVlcnksIEdTVF9WSURFT19HTF9URVhUVVJF
X1VQTE9BRF9NRVRBX0FQSV9UWVBFLCBnbENvbnRleHQpOworI2VuZGlmCisKKyAgICBpZiAoZ2xD
b250ZXh0KQorICAgICAgICBnc3Rfc3RydWN0dXJlX2ZyZWUoZ2xDb250ZXh0KTsKKworI2lmIFVT
RShHU1RSRUFNRVJfR0wpCisgICAgR3N0QWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBnc3RfYWxsb2Nh
dG9yX2ZpbmQoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IpOworICAgIEdzdEFsbG9jYXRpb25QYXJh
bXMgcGFyYW1zOworICAgIGdzdF9hbGxvY2F0aW9uX3BhcmFtc19pbml0KCZwYXJhbXMpOworICAg
IGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wYXJhbShxdWVyeSwgYWxsb2NhdG9yLCAmcGFyYW1z
KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKGFsbG9jYXRvcik7CiAjZW5kaWYKICAgICByZXR1cm4g
VFJVRTsKIH0KIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCitzdGF0aWMgdm9pZCB3ZWJraXRWaWRl
b1NpbmtTZXRDb250ZXh0KEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdENvbnRleHQqIGNvbnRleHQp
Cit7CisgICAgV2ViS2l0VmlkZW9TaW5rKiBzaW5rID0gIFdFQktJVF9WSURFT19TSU5LKGVsZW1l
bnQpOworICAgIGdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHQoZWxlbWVudCwgY29udGV4dCwgJnNp
bmstPnByaXYtPmRpc3BsYXksICZzaW5rLT5wcml2LT5vdGhlckNvbnRleHQpOworfQorCitzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0VmlkZW9TaW5rUXVlcnkoR3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBH
c3RRdWVyeSogcXVlcnkpCit7CisgICAgV2ViS2l0VmlkZW9TaW5rKiBzaW5rID0gV0VCS0lUX1ZJ
REVPX1NJTksoYmFzZVNpbmspOworICAgIGdib29sZWFuIHJlc3VsdCA9IEZBTFNFOworCisgICAg
c3dpdGNoIChHU1RfUVVFUllfVFlQRShxdWVyeSkpIHsKKyAgICBjYXNlIEdTVF9RVUVSWV9DT05U
RVhUOiB7CisgICAgICAgIHJlc3VsdCA9IGdzdF9nbF9oYW5kbGVfY29udGV4dF9xdWVyeShyZWlu
dGVycHJldF9jYXN0PEdzdEVsZW1lbnQqPihzaW5rKSwgcXVlcnksICZzaW5rLT5wcml2LT5kaXNw
bGF5LCAmc2luay0+cHJpdi0+b3RoZXJDb250ZXh0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJlc3VsdCA9IEdTVF9CQVNFX1NJTktfQ0xBU1MocGFyZW50
X2NsYXNzKS0+cXVlcnkoYmFzZVNpbmssIHF1ZXJ5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZCB3ZWJraXRfdmlk
ZW9fc2lua19jbGFzc19pbml0KFdlYktpdFZpZGVvU2lua0NsYXNzKiBrbGFzcykKIHsKICAgICBH
T2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKQEAgLTM0
OSw2ICs2MDgsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3ZpZGVvX3NpbmtfY2xhc3NfaW5pdChX
ZWJLaXRWaWRlb1NpbmtDbGFzcyoga2xhc3MpCiAgICAgYmFzZVNpbmtDbGFzcy0+c3RhcnQgPSB3
ZWJraXRWaWRlb1NpbmtTdGFydDsKICAgICBiYXNlU2lua0NsYXNzLT5zZXRfY2FwcyA9IHdlYmtp
dFZpZGVvU2lua1NldENhcHM7CiAgICAgYmFzZVNpbmtDbGFzcy0+cHJvcG9zZV9hbGxvY2F0aW9u
ID0gd2Via2l0VmlkZW9TaW5rUHJvcG9zZUFsbG9jYXRpb247CisjaWYgVVNFKEdTVFJFQU1FUl9H
TCkKKyAgICBiYXNlU2lua0NsYXNzLT5wcmVwYXJlID0gd2Via2l0VmlkZW9TaW5rUHJlcGFyZTsK
KyAgICBiYXNlU2lua0NsYXNzLT5xdWVyeSA9IHdlYmtpdFZpZGVvU2lua1F1ZXJ5OworICAgIGVs
ZW1lbnRDbGFzcy0+c2V0X2NvbnRleHQgPSB3ZWJraXRWaWRlb1NpbmtTZXRDb250ZXh0OworI2Vu
ZGlmCiAKICAgICB3ZWJraXRWaWRlb1NpbmtTaWduYWxzW1JFUEFJTlRfUkVRVUVTVEVEXSA9IGdf
c2lnbmFsX25ldygicmVwYWludC1yZXF1ZXN0ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01f
Q0xBU1Moa2xhc3MpLApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21h
a2UgYi9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFrZQppbmRleCA3NDQ0NzYwLi5hY2Qx
MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFrZQorKysgYi9T
b3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFrZQpAQCAtMTksNiArMTksNyBAQAogIyAgZ3N0
cmVhbWVyLWFwcDogICAgICAgIEdTVFJFQU1FUl9BUFBfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFN
RVJfQVBQX0xJQlJBUklFUwogIyAgZ3N0cmVhbWVyLWF1ZGlvOiAgICAgIEdTVFJFQU1FUl9BVURJ
T19JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9BVURJT19MSUJSQVJJRVMKICMgIGdzdHJlYW1l
ci1mZnQ6ICAgICAgICBHU1RSRUFNRVJfRkZUX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0ZG
VF9MSUJSQVJJRVMKKyMgIGdzdHJlYW1lci1nbDogICAgICAgICBHU1RSRUFNRVJfR0xfSU5DTFVE
RV9ESVJTIGFuZCBHU1RSRUFNRVJfR0xfTElCUkFSSUVTCiAjICBnc3RyZWFtZXItbXBlZ3RzOiAg
ICAgR1NUUkVBTUVSX01QRUdUU19JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9NUEVHVFNfTElC
UkFSSUVTCiAjICBnc3RyZWFtZXItcGJ1dGlsczogICAgR1NUUkVBTUVSX1BCVVRJTFNfSU5DTFVE
RV9ESVJTIGFuZCBHU1RSRUFNRVJfUEJVVElMU19MSUJSQVJJRVMKICMgIGdzdHJlYW1lci10YWc6
ICAgICAgICBHU1RSRUFNRVJfVEFHX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX1RBR19MSUJS
QVJJRVMKQEAgLTg0LDYgKzg1LDcgQEAgRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1F
Ul9CQVNFIGdzdHJlYW1lci1iYXNlLTEuMCBnc3RiYXNlLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NP
TVBPTkVOVChHU1RSRUFNRVJfQVBQIGdzdHJlYW1lci1hcHAtMS4wIGdzdGFwcC0xLjApCiBGSU5E
X0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0FVRElPIGdzdHJlYW1lci1hdWRpby0xLjAg
Z3N0YXVkaW8tMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9GRlQgZ3N0
cmVhbWVyLWZmdC0xLjAgZ3N0ZmZ0LTEuMCkKK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RS
RUFNRVJfR0wgZ3N0cmVhbWVyLWdsLTEuMD49MS41LjAgZ3N0Z2wtMS4wKQogRklORF9HU1RSRUFN
RVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9NUEVHVFMgZ3N0cmVhbWVyLW1wZWd0cy0xLjA+PTEuNC4w
IGdzdG1wZWd0cy0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX1BCVVRJ
TFMgZ3N0cmVhbWVyLXBidXRpbHMtMS4wIGdzdHBidXRpbHMtMS4wKQogRklORF9HU1RSRUFNRVJf
Q09NUE9ORU5UKEdTVFJFQU1FUl9UQUcgZ3N0cmVhbWVyLXRhZy0xLjAgZ3N0dGFnLTEuMCkKQEAg
LTExNCw2ICsxMTYsOCBAQCBtYXJrX2FzX2FkdmFuY2VkKAogICAgIEdTVFJFQU1FUl9CQVNFX0xJ
QlJBUklFUwogICAgIEdTVFJFQU1FUl9GRlRfSU5DTFVERV9ESVJTCiAgICAgR1NUUkVBTUVSX0ZG
VF9MSUJSQVJJRVMKKyAgICBHU1RSRUFNRVJfR0xfSU5DTFVERV9ESVJTCisgICAgR1NUUkVBTUVS
X0dMX0xJQlJBUklFUwogICAgIEdTVFJFQU1FUl9JTkNMVURFX0RJUlMKICAgICBHU1RSRUFNRVJf
TElCUkFSSUVTCiAgICAgR1NUUkVBTUVSX01QRUdUU19JTkNMVURFX0RJUlMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKaW5kZXggYzBhOGFkNS4uODY5OTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09w
dGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTIz
Myw3ICsyMzMsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAg
c2V0KEdTVFJFQU1FUl9DT01QT05FTlRTIGFwcCBwYnV0aWxzKQogICAgIGFkZF9kZWZpbml0aW9u
cygtRFdURl9VU0VfR1NUUkVBTUVSKQogICAgIGlmIChFTkFCTEVfVklERU8pCi0gICAgICAgIGxp
c3QoQVBQRU5EIEdTVFJFQU1FUl9DT01QT05FTlRTIHZpZGVvIG1wZWd0cyB0YWcpCisgICAgICAg
IGxpc3QoQVBQRU5EIEdTVFJFQU1FUl9DT01QT05FTlRTIHZpZGVvIG1wZWd0cyB0YWcgZ2wpCiAg
ICAgZW5kaWYgKCkKIAogICAgIGlmIChFTkFCTEVfV0VCX0FVRElPKQpAQCAtMjQ3LDYgKzI0Nywx
MSBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIGFkZF9k
ZWZpbml0aW9ucygtRFdURl9VU0VfR1NUUkVBTUVSX01QRUdUUykKICAgICAgICAgc2V0KFVTRV9H
U1RSRUFNRVJfTVBFR1RTIFRSVUUpCiAgICAgZW5kaWYgKCkKKworICAgIGlmIChQQ19HU1RSRUFN
RVJfR0xfRk9VTkQpCisgICAgICAgIGFkZF9kZWZpbml0aW9ucygtRFdURl9VU0VfR1NUUkVBTUVS
X0dMKQorICAgICAgICBzZXQoVVNFX0dTVFJFQU1FUl9HTCBUUlVFKQorICAgIGVuZGlmICgpCiBl
bmRpZiAoKQogCiBpZiAoRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQotLSAKMi4xLjM=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246263</attachid>
            <date>2015-02-09 03:40:27 -0800</date>
            <delta_ts>2015-02-09 03:40:27 -0800</delta_ts>
            <desc>Re-order the upload method sequence and use gst_video_frame_map()</desc>
            <filename>0001-Re-order-the-upload-method-sequence-and-use-gst_vide.patch</filename>
            <type>text/plain</type>
            <size>4633</size>
            <attacher name="Víctor M. Jáquez L.">vjaquez</attacher>
            
              <data encoding="base64">RnJvbSAyOTFhNTJkYzgxZmM1N2IyM2FkOGQyN2Q2NWRmYWExZGJjYWY4MWFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Vj1DMz1BRGN0b3I9MjBNYW51ZWw9MjBKPUMz
PUExcXVlej0yMExlYWw/PQogPHZqYXF1ZXpAaWdhbGlhLmNvbT4KRGF0ZTogTW9uLCA5IEZlYiAy
MDE1IDExOjM4OjE4ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gUmUtb3JkZXIgdGhlIHVwbG9hZCBt
ZXRob2Qgc2VxdWVuY2UgYW5kIHVzZQogZ3N0X3ZpZGVvX2ZyYW1lX21hcCgpCgotLS0KIC4uLi9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgIHwgNTMgKysrKysr
KysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDI3IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcAppbmRleCBkNTBiZTY3Li40ZGY2NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0zMDMsNTAgKzMw
Myw0OSBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0g
Z3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlKTsKICAgICBjb25zdCBCaXRtYXBUZXh0dXJl
R0wqIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCo+KHRleHR1
cmUuZ2V0KCkpOwogICAgIHVpbnQzMl90IHRleHR1cmVJRCA9IHRleHR1cmVHTC0+aWQoKTsKKyAg
ICBHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEqIHRleHR1cmVVcGxvYWRNZXRhID0gZ3N0X2J1
ZmZlcl9nZXRfdmlkZW9fZ2xfdGV4dHVyZV91cGxvYWRfbWV0YShidWZmZXIpOwogCisgICAgaWYg
KHRleHR1cmVVcGxvYWRNZXRhICYmIHRleHR1cmVVcGxvYWRNZXRhLT5uX3RleHR1cmVzID09IDEp
IHsgLy8gQlJHeCAmIEJHUkEgZm9ybWF0cyB1c2Ugb25seSBvbmUgdGV4dHVyZS4KKyAgICAgICAg
ICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCogdGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Qml0bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSk7CisgICAgICAgICAgICBndWludCBpZHNb
NF0gPSB7IHRleHR1cmVHTC0+aWQoKSwgMCwgMCwgMCB9OworCisgICAgICAgICAgICBpZiAoZ3N0
X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGFfdXBsb2FkKHRleHR1cmVVcGxvYWRNZXRhLCBp
ZHMpKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlOworCisgICAgICAgICAgICBXQVJO
X01FRElBX01FU1NBR0UoIlRleHR1cmUgdXBsb2FkIG1ldGEgZmFpbGVkLCB0cnlpbmcgZmFsbGJh
Y2sgc2xvdyBwYXRoLiIpOworICAgIH0KKworICAgIC8vIFJpZ2h0IG5vdyB0aGUgVGV4dHVyZU1h
cHBlciBvbmx5IHN1cHBvcnRzIGNocm9tYXMgd2l0aCBvbmUgcGxhbmUKKyAgICBBU1NFUlQoR1NU
X1ZJREVPX0lORk9fTl9QTEFORVMoJnZpZGVvSW5mbykgPT0gMSk7CisKKyAgICBpbnQgbWFwRmxh
Z3MgPSBHU1RfTUFQX1JFQUQ7CiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKLSAgICBHc3RNYXBJbmZv
IG1hcEluZm87Ci0gICAgaWYgKCFnc3RfYnVmZmVyX21hcChidWZmZXIsICZtYXBJbmZvLCBzdGF0
aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKSB7CisgICAg
bWFwRmxhZ3MgfD0gR1NUX01BUF9HTDsKKyNlbmRpZgorCisgICAgR3N0VmlkZW9GcmFtZSB2aWRl
b0ZyYW1lOworICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwgJnZpZGVv
SW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4obWFwRmxhZ3MpKSkgewogICAg
ICAgICBXQVJOX01FRElBX01FU1NBR0UoIkZhaWxlZCB0byBtYXAgYnVmZmVyIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBpZiAoIWdzdF9idWZmZXJfZ2V0X3ZpZGVvX2ds
X3RleHR1cmVfdXBsb2FkX21ldGEoYnVmZmVyKSAmJiBnc3RfYnVmZmVyX25fbWVtb3J5KGJ1ZmZl
cikgPj0gMSkgeworICAgIGludCBzdHJpZGUgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURF
KCZ2aWRlb0ZyYW1lLCAwKTsKKworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgaWYgKCF0ZXh0
dXJlVXBsb2FkTWV0YSAmJiBnc3RfYnVmZmVyX25fbWVtb3J5KGJ1ZmZlcikgPj0gMSkgewogICAg
ICAgICBHc3RNZW1vcnkqIGJ1ZmZlck1lbW9yeTsKICAgICAgICAgaWYgKChidWZmZXJNZW1vcnkg
PSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5KGJ1ZmZlciwgMCkpICYmIGdzdF9pc19nbF9tZW1vcnko
YnVmZmVyTWVtb3J5KSkgewogICAgICAgICAgICAgYXV0byogZ2xNZW1vcnkgPSByZWludGVycHJl
dF9jYXN0PEdzdEdMTWVtb3J5Kj4oYnVmZmVyTWVtb3J5KTsKICAgICAgICAgICAgIEdzdFZpZGVv
R0xUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSA9IGdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3Jt
YXQoZ2xNZW1vcnktPmNvbnRleHQsIEdTVF9WSURFT19JTkZPX0ZPUk1BVCgmdmlkZW9JbmZvKSwg
MCk7CiAKLSAgICAgICAgICAgIGlmIChnc3RfZ2xfbWVtb3J5X2NvcHlfaW50b190ZXh0dXJlKGds
TWVtb3J5LCB0ZXh0dXJlSUQsIHRleHR1cmVUeXBlLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCksIEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSgmdmlkZW9JbmZvLCAwKSwgdHJ1ZSAvKiBy
ZXNwZWNpZnkgKi8pKSB7Ci0gICAgICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIs
ICZtYXBJbmZvKTsKKyAgICAgICAgICAgIGlmIChnc3RfZ2xfbWVtb3J5X2NvcHlfaW50b190ZXh0
dXJlKGdsTWVtb3J5LCB0ZXh0dXJlSUQsIHRleHR1cmVUeXBlLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCksIHN0cmlkZSwgdHJ1ZSAvKiByZXNwZWNpZnkgKi8pKSB7CisgICAgICAgICAgICAg
ICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGV4dHVyZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFdBUk5fTUVESUFfTUVT
U0FHRSgiVGV4dHVyZSBjb3B5IGZhaWxlZCwgdHJ5aW5nIGZhbGxiYWNrIHNsb3cgcGF0aC4iKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJm1hcEluZm8p
OwogI2VuZGlmCiAKLSNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxLCAwKQotICAgIEdzdFZpZGVv
R0xUZXh0dXJlVXBsb2FkTWV0YSogbWV0YTsKLSAgICBpZiAoKG1ldGEgPSBnc3RfYnVmZmVyX2dl
dF92aWRlb19nbF90ZXh0dXJlX3VwbG9hZF9tZXRhKGJ1ZmZlcikpKSB7Ci0gICAgICAgIGlmICht
ZXRhLT5uX3RleHR1cmVzID09IDEpIHsgLy8gQlJHeCAmIEJHUkEgZm9ybWF0cyB1c2Ugb25seSBv
bmUgdGV4dHVyZS4KLSAgICAgICAgICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCogdGV4dHVyZUdM
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSk7Ci0g
ICAgICAgICAgICBndWludCBpZHNbNF0gPSB7IHRleHR1cmVHTC0+aWQoKSwgMCwgMCwgMCB9Owot
Ci0gICAgICAgICAgICBpZiAoZ3N0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGFfdXBsb2Fk
KG1ldGEsIGlkcykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmU7Ci0gICAgICAgIH0K
LSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIFJpZ2h0IG5vdyB0aGUgVGV4dHVyZU1hcHBlciBvbmx5
IHN1cHBvcnRzIGNocm9tYXMgd2l0aCBvbmUgcGxhbmUKLSAgICBBU1NFUlQoR1NUX1ZJREVPX0lO
Rk9fTl9QTEFORVMoJnZpZGVvSW5mbykgPT0gMSk7Ci0KLSAgICBHc3RWaWRlb0ZyYW1lIHZpZGVv
RnJhbWU7Ci0gICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRlb0ZyYW1lLCAmdmlkZW9J
bmZvLCBidWZmZXIsIEdTVF9NQVBfUkVBRCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgaW50IHN0cmlkZSA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUoJnZpZGVvRnJhbWUs
IDApOwogICAgIGNvbnN0IHZvaWQqIHNyY0RhdGEgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFU
QSgmdmlkZW9GcmFtZSwgMCk7CiAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoc3JjRGF0YSwg
V2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgwLCAwKSwgc2l6ZSksIFdlYkNvcmU6
OkludFBvaW50KDAsIDApLCBzdHJpZGUsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbm5vdE1vZGlm
eU9yaWdpbmFsSW1hZ2VEYXRhKTsKICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAoJnZpZGVvRnJh
bWUpOwotLSAKMi4xLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248411</attachid>
            <date>2015-03-11 04:37:51 -0700</date>
            <delta_ts>2015-03-23 10:27:26 -0700</delta_ts>
            <desc>Experimental support for texture sharing with glimagesink</desc>
            <filename>0001-Experimental-support-for-texture-sharing-with-glimag.patch</filename>
            <type>text/plain</type>
            <size>22241</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3ODFhY2RiNGQyMDc3YTZjMWZiMzY1MWVmOGIyMDlkYTIxY2E2MzUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDE5IEphbiAyMDE1IDE3OjQwOjQxICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRleHR1cmUgc2hhcmluZyB3aXRoIGdsaW1hZ2VzaW5r
CgotLS0KIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlICAgICAgICAgICAgICAgICAg
IHwgIDEwICsrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
ICAgICB8ICA4NCArKysrKysrKysrKysrKysrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oICAgICAgICB8ICAgNyArKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCAgfCAxMDggKysrKysrKysrKysrKysrKysrKystCiAu
Li4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCAgICB8ICAgOSAr
KwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwICAgICAgfCAg
IDIgKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oICAgICAg
IHwgICAzICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHAgICB8ICAzNSArKysrKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5oICAgICB8ICAxMiArKy0KIFNvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtl
ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
ICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAyNzMgaW5z
ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IDg0ODlkOWYuLmI1OTY4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zNDUsNiAr
MzQ1LDE2IEBAIGlmIChFTkFCTEVfVklERU8pCiAgICAgICAgICAgICAke0dTVFJFQU1FUl9NUEVH
VFNfTElCUkFSSUVTfQogICAgICAgICApCiAgICAgZW5kaWYgKCkKKworICAgIGlmIChVU0VfR1NU
UkVBTUVSX0dMKQorICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJ
RVMKKyAgICAgICAgICAgICR7R1NUUkVBTUVSX0dMX0lOQ0xVREVfRElSU30KKyAgICAgICAgKQor
CisgICAgICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCisgICAgICAgICAgICAke0dT
VFJFQU1FUl9HTF9MSUJSQVJJRVN9CisgICAgICAgICkKKyAgICBlbmRpZiAoKQogZW5kaWYgKCkK
IAogaWYgKEVOQUJMRV9XRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGU3ZjQwZjkuLjA4MTk1MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKKyNpbmNsdWRlICJHTENv
bnRleHQuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC02OCw2ICs2OSwzMCBAQAogI2lu
Y2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaCIKICNlbmRpZgogCisjaWYgVVNF
KEdTVFJFQU1FUl9HTCkKKyNkZWZpbmUgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyNpbmNsdWRlIDxn
c3QvZ2wvZ3N0Z2xjb250ZXh0Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZGlzcGxheS5oPgor
I3VuZGVmIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2x1dGls
cy5oPgorCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgPGdzdC9nbC94MTEvZ3N0Z2xkaXNw
bGF5X3gxMS5oPgorI2VuZGlmCisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8Z3N0
L2dsL2VnbC9nc3RnbGRpc3BsYXlfZWdsLmg+CisjZW5kaWYKKworI2lmIFVTRShHTFgpCisjaW5j
bHVkZSAiR0xDb250ZXh0R0xYLmgiCisjdW5kZWYgTm9uZQorI2VsaWYgVVNFKEVHTCkKKyNpbmNs
dWRlICJHTENvbnRleHRFR0wuaCIKKyNlbmRpZgorI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wp
CisKIC8vIE1heCBpbnRlcnZhbCBpbiBzZWNvbmRzIHRvIHN0YXkgaW4gdGhlIFJFQURZIHN0YXRl
IG9uIG1hbnVhbAogLy8gc3RhdGUgY2hhbmdlIHJlcXVlc3RzLgogc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGdSZWFkeVN0YXRlVGltZXJJbnRlcnZhbCA9IDYwOwpAQCAtNzksNiArMTA0LDExIEBAIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGdib29s
ZWFuIG1lZGlhUGxheWVyUHJpdmF0ZVN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0TWVz
c2FnZSogbWVzc2FnZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCit7Cisg
ICAgcmV0dXJuIHBsYXllci0+aGFuZGxlU3luY01lc3NhZ2UobWVzc2FnZSk7Cit9CisKIHN0YXRp
YyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiwgR3N0
TWVzc2FnZSogbWVzc2FnZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7
CiAgICAgcmV0dXJuIHBsYXllci0+aGFuZGxlTWVzc2FnZShtZXNzYWdlKTsKQEAgLTIxNyw2ICsy
NDcsMTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikKICNlbmRpZgogICAgICwgbV9yZXF1ZXN0ZWRT
dGF0ZShHU1RfU1RBVEVfVk9JRF9QRU5ESU5HKQogICAgICwgbV9taXNzaW5nUGx1Z2lucyhmYWxz
ZSkKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgICwgbV9nbENvbnRleHQobnVsbHB0cikKKyAg
ICAsIG1fZ2xEaXNwbGF5KG51bGxwdHIpCisjZW5kaWYKIHsKIH0KIApAQCAtOTA0LDYgKzkzOCw1
NiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29ucwogICAgIHJldHVybiB0aW1lUmFuZ2VzOwogfQog
CitnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVN5bmNNZXNzYWdl
KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgc3dpdGNoIChHU1RfTUVTU0FHRV9UWVBFKG1l
c3NhZ2UpKSB7CisgICAgICAgIGNhc2UgR1NUX01FU1NBR0VfTkVFRF9DT05URVhUOgorICAgICAg
ICB7CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb250
ZXh0VHlwZTsKKyAgICAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2NvbnRleHRfdHlwZShtZXNz
YWdlLCAmY29udGV4dFR5cGUpOworCisgICAgICAgICAgICBHTENvbnRleHQqIHdlYmtpdENvbnRl
eHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCk7CisjaWYgUExBVEZPUk0oWDExKQorICAg
ICAgICAgICAgaWYgKCFtX2dsRGlzcGxheSkgeworICAgICAgICAgICAgICAgIEdzdEdMRGlzcGxh
eVgxMSogZ3N0R0xEaXNwbGF5ID0gZ3N0X2dsX2Rpc3BsYXlfeDExX25ld193aXRoX2Rpc3BsYXko
R0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCkpOworICAgICAgICAgICAgICAgIG1fZ2xEaXNw
bGF5ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RHTERpc3BsYXkqPihnc3RHTERpc3BsYXkpOworICAg
ICAgICAgICAgICAgIEdMWENvbnRleHQqIGdseFNoYXJpbmdDb250ZXh0ID0gcmVpbnRlcnByZXRf
Y2FzdDxHTFhDb250ZXh0Kj4od2Via2l0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOworICAg
ICAgICAgICAgICAgIGlmIChnbHhTaGFyaW5nQ29udGV4dCAmJiAhbV9nbENvbnRleHQpCisgICAg
ICAgICAgICAgICAgICAgIG1fZ2xDb250ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3X3dyYXBwZWQo
R1NUX0dMX0RJU1BMQVkoZ3N0R0xEaXNwbGF5KSwgcmVpbnRlcnByZXRfY2FzdDxndWludHB0cj4o
Z2x4U2hhcmluZ0NvbnRleHQpLCBHU1RfR0xfUExBVEZPUk1fR0xYLCBHU1RfR0xfQVBJX09QRU5H
TCk7CisgICAgICAgICAgICB9CisjZW5kaWYKKyNpZiBVU0UoT1BFTkdMX0VTXzIpICYmIFBMQVRG
T1JNKFdBWUxBTkQpCisgICAgICAgICAgICBpZiAoIW1fZ2xEaXNwbGF5KSB7CisgICAgICAgICAg
ICAgICAgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5ID0gZWdsR2V0RGlzcGxheShXYXlsYW5k
RGlzcGxheTo6aW5zdGFuY2UoKS0+bmF0aXZlRGlzcGxheSgpKTsKKyAgICAgICAgICAgICAgICBH
c3RHTERpc3BsYXlFR0wqIGdzdEdMRGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X2VnbF9uZXdfd2l0
aF9lZ2xfZGlzcGxheShzaGFyZWRFR0xEaXNwbGF5KTsKKyAgICAgICAgICAgICAgICBtX2dsRGlz
cGxheSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0R0xEaXNwbGF5Kj4oZ3N0R0xEaXNwbGF5KTsKKyAg
ICAgICAgICAgICAgICBFR0xDb250ZXh0KiBlZ2xTaGFyaW5nQ29udGV4dCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RUdMQ29udGV4dCo+KHdlYmtpdENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZWdsU2hhcmluZ0NvbnRleHQgJiYgIW1fZ2xDb250ZXh0KQorICAg
ICAgICAgICAgICAgICAgICBtX2dsQ29udGV4dCA9IGdzdF9nbF9jb250ZXh0X25ld193cmFwcGVk
KEdTVF9HTF9ESVNQTEFZKGdzdEdMRGlzcGxheSksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3VpbnRwdHI+
KGVnbFNoYXJpbmdDb250ZXh0KSwgR1NUX0dMX1BMQVRGT1JNX0VHTCwgR1NUX0dMX0FQSV9HTEVT
Mik7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghZ19zdHJjbXAwKGNv
bnRleHRUeXBlLCBHU1RfR0xfRElTUExBWV9DT05URVhUX1RZUEUpKSB7CisgICAgICAgICAgICAg
ICAgR3N0Q29udGV4dCogZGlzcGxheUNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcoR1NUX0dMX0RJ
U1BMQVlfQ09OVEVYVF9UWVBFLCBUUlVFKTsKKyAgICAgICAgICAgICAgICBnc3RfY29udGV4dF9z
ZXRfZ2xfZGlzcGxheShkaXNwbGF5Q29udGV4dCwgbV9nbERpc3BsYXkpOworICAgICAgICAgICAg
ICAgIGdzdF9lbGVtZW50X3NldF9jb250ZXh0KEdTVF9FTEVNRU5UKG1lc3NhZ2UtPnNyYyksIGRp
c3BsYXlDb250ZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoIWdfc3RyY21wMChjb250ZXh0VHlwZSwgImdzdC5nbC5hcHBfY29udGV4dCIp
KSB7CisgICAgICAgICAgICAgICAgR3N0Q29udGV4dCogYXBwQ29udGV4dCA9IGdzdF9jb250ZXh0
X25ldygiZ3N0LmdsLmFwcF9jb250ZXh0IiwgVFJVRSk7CisgICAgICAgICAgICAgICAgR3N0U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY29udGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUoYXBwQ29u
dGV4dCk7CisgICAgICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoc3RydWN0dXJlLCAiY29u
dGV4dCIsIEdTVF9HTF9UWVBFX0NPTlRFWFQsIG1fZ2xDb250ZXh0LCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dChHU1RfRUxFTUVOVChtZXNzYWdlLT5z
cmMpLCBhcHBDb250ZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gRkFMU0U7Cit9CisK
IGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogewogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMzkwNTE1NC4u
ODgxOWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aApAQCAtNDcsNiArNDcsOCBAQCB0eXBlZGVmIHN0cnVjdCBfR3N0QnVmZmVyIEdzdEJ1ZmZlcjsK
IHR5cGVkZWYgc3RydWN0IF9Hc3RNZXNzYWdlIEdzdE1lc3NhZ2U7CiB0eXBlZGVmIHN0cnVjdCBf
R3N0RWxlbWVudCBHc3RFbGVtZW50OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdE1wZWd0c1NlY3Rpb24g
R3N0TXBlZ3RzU2VjdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTENvbnRleHQgR3N0R0xDb250
ZXh0OwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMRGlzcGxheSBHc3RHTERpc3BsYXk7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNjYsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgfk1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcigpOwogCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVu
Z2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CisgICAgZ2Jvb2xlYW4gaGFuZGxlU3luY01lc3Nh
Z2UoR3N0TWVzc2FnZSopOwogICAgIGdib29sZWFuIGhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSop
OwogICAgIHZvaWQgaGFuZGxlUGx1Z2luSW5zdGFsbGVyUmVzdWx0KEdzdEluc3RhbGxQbHVnaW5z
UmV0dXJuKTsKIApAQCAtMjUxLDYgKzI1NCwxMCBAQCBwcml2YXRlOgogI2Vsc2UKICAgICBib29s
IGlzTWVkaWFTb3VyY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCisjaWYgVVNF
KEdTVFJFQU1FUl9HTCkKKyAgICBHc3RHTENvbnRleHQqIG1fZ2xDb250ZXh0OworICAgIEdzdEdM
RGlzcGxheSogbV9nbERpc3BsYXk7CisjZW5kaWYKIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCAxMzQyYThlLi4z
OWVhMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCkBAIC00NCwxMCArNDQsMjggQEAKICNpbmNsdWRlIDxnc3QvYXVkaW8vc3Ry
ZWFtdm9sdW1lLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgogCisjaWYg
VVNFKEdTVFJFQU1FUl9HTCkKKyNkZWZpbmUgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyNpbmNsdWRl
IDxnc3QvZ2wvZ3N0Z2xtZW1vcnkuaD4KKyN1bmRlZiBHU1RfVVNFX1VOU1RBQkxFX0FQSQorI2Vu
ZGlmCisKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxLCAwKSAmJiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAjZW5kaWYKIAorI2RlZmluZSBX
TF9FR0xfUExBVEZPUk0KKworI2lmIFVTRShPUEVOR0xfRVNfMikKKyNpZiBHU1RfQ0hFQ0tfVkVS
U0lPTigxLCAzLCAwKQorI2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQorI2luY2x1ZGUgPGdz
dC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuaD4KKyN1bmRlZiBHU1RfVVNFX1VOU1RBQkxFX0FQ
SQorI2VuZGlmCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0
Lmg+CisjZW5kaWYKKwogR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVi
dWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX3BsYXllcl9kZWJ1Zwog
CkBAIC04NCwxNyArMTAyLDMyIEBAIHN0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZVJlcGFp
bnRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqLCBHc3RTYW1wbGUqIHNhbXBsCiAgICAgcGxheWVy
UHJpdmF0ZS0+dHJpZ2dlclJlcGFpbnQoc2FtcGxlKTsKIH0KIAorI2lmIFVTRShHU1RSRUFNRVJf
R0wpCitzdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlRHJhd0NhbGxiYWNrKEdzdEVs
ZW1lbnQqLCBHc3RDb250ZXh0KiwgZ3VpbnQgdGV4dHVyZUlELCBndWludCB3aWR0aCwgZ3VpbnQg
aGVpZ2h0LCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKiBwbGF5ZXJQcml2YXRlKQor
eworICAgIHBsYXllclByaXZhdGUtPnRyaWdnZXJEcmF3KHRleHR1cmVJRCwgd2lkdGgsIGhlaWdo
dCk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisjZW5kaWYKKwogTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciog
cGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9mcHNTaW5rKDApCiAgICAg
LCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQogICAgICwgbV9uZXR3b3Jr
U3RhdGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQogICAgICwgbV9zYW1wbGUoMCkKKyNpZiBVU0UoR1NU
UkVBTUVSX0dMKQorICAgICwgbV90ZXh0dXJlSUQoMCkKKyNlbmRpZgogICAgICwgbV9yZXBhaW50
SGFuZGxlcigwKQogICAgICwgbV92b2x1bWVTaWduYWxIYW5kbGVyKDApCiAgICAgLCBtX211dGVT
aWduYWxIYW5kbGVyKDApCiB7CiAgICAgZ19tdXRleF9pbml0KCZtX3NhbXBsZU11dGV4KTsKKyNp
ZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGdfY29uZF9pbml0KCZtX2RyYXdDb25kaXRpb24pOwor
ICAgIGdfbXV0ZXhfaW5pdCgmbV9kcmF3TXV0ZXgpOworI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkK
QEAgLTEyMiw2ICsxNTUsMTEgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoKQogICAgICAgICBtX211dGVTaWduYWxIYW5k
bGVyID0gMDsKICAgICB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGdfY29uZF9jbGVh
cigmbV9kcmF3Q29uZGl0aW9uKTsKKyAgICBnX211dGV4X2NsZWFyKCZtX2RyYXdNdXRleCk7Cisj
ZW5kaWYKKwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5wbGF0Zm9ybUxh
eWVyV2lsbEJlRGVzdHJveWVkKCk7CkBAIC0yODAsNiArMzE4LDIwIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5nZWQoKQogUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCiB7CiAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011
dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBp
ZiAoIW1fdGV4dHVyZUlEKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZJWE1F
IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGE7IC8vIDoKKyAgICBCaXRtYXBUZXh0dXJlOjpG
bGFncyBmbGFncyA9IEJpdG1hcFRleHR1cmU6Ok5vRmxhZzsKKyAgICBmbGFncyB8PSBCaXRtYXBU
ZXh0dXJlOjpXcmFwcGVkOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gdGV4
dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChtX3NpemUsIGZsYWdzKTsKKyAgICBC
aXRtYXBUZXh0dXJlR0wqIHRleHR1cmVHTCA9IHRvQml0bWFwVGV4dHVyZUdMKHRleHR1cmUuZ2V0
KCkpOworICAgIHRleHR1cmVHTC0+d3JhcEdzdFRleHR1cmVJRChyZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGludD4obV90ZXh0dXJlSUQpKTsKKyAgICByZXR1cm4gdGV4dHVyZTsKKyNlbHNlCisK
ICAgICBpZiAoIW1fc2FtcGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMzIyLDYg
KzM3NCw0MiBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZQogICAgIGdzdF92aWRlb19mcmFtZV91
bm1hcCgmdmlkZW9GcmFtZSk7CiAKICAgICByZXR1cm4gdGV4dHVyZTsKKyNlbmRpZgorICAgIHJl
dHVybiAwOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVJfR0wpCitzdGF0
aWMgZ2Jvb2xlYW4gZm9vQ2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlKiBwbGF5ZXIgPSByZWludGVycHJldF9jYXN0PE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqPihkYXRhKTsKKyAgICBwbGF5ZXItPnJlZHJhdygpOwor
ICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6cmVkcmF3KCkKK3sKKyAgICBnX3ByaW50ZXJyKCJyZWRyYXc6IHRocmVh
ZDogJXAsIHRleCBJRDogJXVcbiIsIGdfdGhyZWFkX3NlbGYoKSwgbV90ZXh0dXJlSUQpOworI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAg
ICBpZiAoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fcGxheWVyLT5jbGllbnQo
KS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQobV9wbGF5ZXIpICYmIGNsaWVu
dCgpKSB7CisgICAgICAgIGNsaWVudCgpLT5zZXRQbGF0Zm9ybUxheWVyTmVlZHNEaXNwbGF5KCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyRHJhdyhndWludCB0ZXh0dXJlSUQsIGd1aW50IHdp
ZHRoLCBndWludCBoZWlnaHQpCit7CisgICAgZ19wcmludGVycigidGhyZWFkOiAlcCwgdGV4IElE
OiAldSwgc2l6ZTogKCV1LCAldSlcbiIsIGdfdGhyZWFkX3NlbGYoKSwgdGV4dHVyZUlELCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9kcmF3TXV0
ZXgpOworICAgIG1fdGV4dHVyZUlEID0gdGV4dHVyZUlEOworICAgIG1fc2l6ZS5zZXRXaWR0aCh3
aWR0aCk7CisgICAgbV9zaXplLnNldEhlaWdodChoZWlnaHQpOworCisgICAgZ190aW1lb3V0X2Fk
ZCgwLCBmb29DYWxsYmFjaywgdGhpcyk7CisgICAgZ19jb25kX3dhaXQoJm1fZHJhd0NvbmRpdGlv
biwgJm1fZHJhd011dGV4KTsKKyAgICBnX3ByaW50ZXJyKCJyZWRpc3BsYXkgZG9uZVxuIik7CiB9
CiAjZW5kaWYKIApAQCAtMzc5LDExICs0NjcsMjAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2EK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkK
IHsKLSAgICBpZiAodGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpICE9IFRleHR1cmVN
YXBwZXI6Ok9wZW5HTE1vZGUpCisgICAgZ19wcmludGVycigicGFpbnRUb1RleHR1cmVNYXBwZXJc
biIpOworICAgIGlmICh0ZXh0dXJlTWFwcGVyLT5hY2NlbGVyYXRpb25Nb2RlKCkgIT0gVGV4dHVy
ZU1hcHBlcjo6T3BlbkdMTW9kZSkgeworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgICAgIGdf
Y29uZF9zaWduYWwoJm1fZHJhd0NvbmRpdGlvbik7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAotICAgIGlmICghbV9wbGF5ZXItPnZpc2libGUoKSkKKyAgICBpZiAoIW1fcGxheWVy
LT52aXNpYmxlKCkpIHsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgICAgICBnX2NvbmRfc2ln
bmFsKCZtX2RyYXdDb25kaXRpb24pOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHVwZGF0ZVRleHR1cmUodGV4dHVy
ZU1hcHBlcik7CiAgICAgaWYgKHRleHR1cmUpCkBAIC00MTcsNiArNTE0LDEzIEBAIEdzdEVsZW1l
bnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2luaygpCiAg
ICAgQVNTRVJUKGluaXRpYWxpemVHU3RyZWFtZXIoKSk7CiAKICAgICBHc3RFbGVtZW50KiB2aWRl
b1NpbmsgPSBudWxscHRyOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgbV93ZWJraXRWaWRl
b1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImdsaW1hZ2VzaW5rIiwgIndlYmtpdHNp
bmsiKTsKKyAgICBnX29iamVjdF9zZXQobV93ZWJraXRWaWRlb1NpbmsuZ2V0KCksICJzaG93LXBy
ZXJvbGwtZnJhbWUiLCBGQUxTRSwgbnVsbHB0cik7CisgICAgbV9yZXBhaW50SGFuZGxlciA9IGdf
c2lnbmFsX2Nvbm5lY3QobV93ZWJraXRWaWRlb1NpbmsuZ2V0KCksICJjbGllbnQtZHJhdyIsIEdf
Q0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlRHJhd0NhbGxiYWNrKSwgdGhpcyk7CisgICAgdmlk
ZW9TaW5rID0gbV93ZWJraXRWaWRlb1NpbmsuZ2V0KCk7CisgICAgcmV0dXJuIHZpZGVvU2luazsK
KyNlbmRpZgogICAgIG1fd2Via2l0VmlkZW9TaW5rID0gd2Via2l0VmlkZW9TaW5rTmV3KCk7CiAK
ICAgICBtX3JlcGFpbnRIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX3dlYmtpdFZpZGVvU2lu
ay5nZXQoKSwgInJlcGFpbnQtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZh
dGVSZXBhaW50Q2FsbGJhY2spLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDBiYzA1YTguLjcwMzUyOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtNzcs
NiArNzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CiAg
ICAgdm9pZCBzaXplQ2hhbmdlZCgpOwogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICB2b2lk
IHJlZHJhdygpOworICAgIHZvaWQgdHJpZ2dlckRyYXcoZ3VpbnQgdGV4dHVyZUlELCBndWludCB3
aWR0aCwgZ3VpbnQgaGVpZ2h0KTsKKyNlbmRpZgogICAgIHZvaWQgdHJpZ2dlclJlcGFpbnQoR3N0
U2FtcGxlKik7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmKTsKIApAQCAtMTI2LDYgKzEzMCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgR3N0U2FtcGxlKiBt
X3NhbXBsZTsKICAgICBHVGhyZWFkU2FmZU1haW5Mb29wU291cmNlIG1fdm9sdW1lVGltZXJIYW5k
bGVyOwogICAgIEdUaHJlYWRTYWZlTWFpbkxvb3BTb3VyY2UgbV9tdXRlVGltZXJIYW5kbGVyOwor
I2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgZ3VpbnQgbV90ZXh0dXJlSUQ7CisgICAgR0NvbmQg
bV9kcmF3Q29uZGl0aW9uOworICAgIEdNdXRleCBtX2RyYXdNdXRleDsKKyNlbmRpZgogICAgIHVu
c2lnbmVkIGxvbmcgbV9yZXBhaW50SGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1l
U2lnbmFsSGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fbXV0ZVNpZ25hbEhhbmRsZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCmluZGV4IGM5NzJjNGQuLjc5NzZiOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1NpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVyLmgiCiAKLSNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
R1NUUkVBTUVSKSAmJiAhVVNFKEdTVFJFQU1FUl9HTCkKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVh
bWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmgKaW5kZXggOTBkNGU2NC4uNWE1ODRiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5o
CkBAIC00OCw3ICs0OCw4IEBAIGNsYXNzIEJpdG1hcFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxCaXRtYXBUZXh0dXJlPiB7CiBwdWJsaWM6CiAgICAgZW51bSBGbGFnIHsKICAgICAgICAgTm9G
bGFnID0gMCwKLSAgICAgICAgU3VwcG9ydHNBbHBoYSA9IDB4MDEKKyAgICAgICAgU3VwcG9ydHNB
bHBoYSA9IDB4MDEsCisgICAgICAgIFdyYXBwZWQgPSAweDAyCiAgICAgfTsKIAogICAgIGVudW0g
VXBkYXRlQ29udGVudHNGbGFnIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggMTE1NGY0ZS4u
ZmJkYWI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTQyLDYgKzQyLDEzIEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dM
KQorI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNkZWZpbmUgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyNp
bmNsdWRlIDxnc3QvZ2wvZ3N0Z2xtZW1vcnkuaD4KKyN1bmRlZiBHU1RfVVNFX1VOU1RBQkxFX0FQ
SQorI2VuZGlmCisKICNpZiAhVVNFKFRFWE1BUF9PUEVOR0xfRVNfMikKIC8vIEZJWE1FOiBNb3Zl
IHRvIEV4dGVuc2lvbnMzRC5oLgogI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYg
MHg4MzY3CkBAIC01MTYsNiArNTIzLDEzIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4
dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmCiAgICAg
Y29uc3QgQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRt
YXBUZXh0dXJlR0wmPih0ZXh0dXJlKTsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Y29uc3QgQml0bWFw
VGV4dHVyZUdMOjpGaWx0ZXJJbmZvKj4gZmlsdGVySW5mbyhkYXRhKCkuZmlsdGVySW5mbywgdGV4
dHVyZUdMLmZpbHRlckluZm8oKSk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGlmICh0
ZXh0dXJlR0wuZ3N0VGV4dHVyZUlEKCkpIHsKKyAgICAgICAgdGV4dHVyZUdMLmRyYXdHc3RTYW1w
bGUodGhpcywgdGV4dHVyZUdMLmlzT3BhcXVlKCkgPyAwIDogU2hvdWxkQmxlbmQsIHRleHR1cmVH
TC5zaXplKCksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZHJhd1RleHR1cmUodGV4dHVyZUdM
LmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJsZW5kLCB0ZXh0dXJlR0wu
c2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7CiB9CiAK
QEAgLTY4OCw2ICs3MDIsOSBAQCBCaXRtYXBUZXh0dXJlR0w6OkJpdG1hcFRleHR1cmVHTChUZXh0
dXJlTWFwcGVyR0wqIHRleHR1cmVNYXBwZXIpCiAgICAgLCBtX2RlcHRoQnVmZmVyT2JqZWN0KDAp
CiAgICAgLCBtX3Nob3VsZENsZWFyKHRydWUpCiAgICAgLCBtX2NvbnRleHQzRCh0ZXh0dXJlTWFw
cGVyLT5ncmFwaGljc0NvbnRleHQzRCgpKQorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgLCBt
X2dzdFRleHR1cmVJRCgwKQorI2VuZGlmCiB7CiB9CiAKQEAgLTczNiw2ICs3NTMsOSBAQCBzdGF0
aWMgYm9vbCBkcml2ZXJTdXBwb3J0c1N1YkltYWdlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KQogCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6ZGlkUmVzZXQoKQogeworICAgIGlmIChmbGFncygp
ICYgQml0bWFwVGV4dHVyZTo6V3JhcHBlZCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFt
X2lkKQogICAgICAgICBtX2lkID0gbV9jb250ZXh0M0QtPmNyZWF0ZVRleHR1cmUoKTsKIApAQCAt
ODk4LDYgKzkxOCwxOSBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVH
TDo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYQogICAgIHJldHVybiByZXN1
bHRTdXJmYWNlOwogfQogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKK3ZvaWQgQml0bWFwVGV4dHVy
ZUdMOjp3cmFwR3N0VGV4dHVyZUlEKHVuc2lnbmVkIGludCB0ZXh0dXJlSUQpCit7CisgICAgbV9n
c3RUZXh0dXJlSUQgPSB0ZXh0dXJlSUQ7Cit9CisKK3ZvaWQgQml0bWFwVGV4dHVyZUdMOjpkcmF3
R3N0U2FtcGxlKFRleHR1cmVNYXBwZXJHTCogdGV4dHVyZU1hcHBlciwgRmxhZ3MgZmxhZ3MsIGNv
bnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHks
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgY29uc3QKK3sKKyAgICBnX3ByaW50ZXJyKCJ0aHJlYWQ6
ICVwLCB0ZXggaWQgJXVcbiIsIGdfdGhyZWFkX3NlbGYoKSwgbV9nc3RUZXh0dXJlSUQpOworICAg
IHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKG1fZ3N0VGV4dHVyZUlELCBmbGFncywgdGV4dHVy
ZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSwgZXhwb3NlZEVkZ2Vz
KTsKK30KKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNyZWF0
ZVByb2plY3Rpb25NYXRyaXgoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBtaXJyb3JlZCkKIHsK
ICAgICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSA5OTk5OTk5OwpAQCAtOTkwLDYgKzEwMjMsOCBA
QCBCaXRtYXBUZXh0dXJlR0w6On5CaXRtYXBUZXh0dXJlR0woKQogCiBib29sIEJpdG1hcFRleHR1
cmVHTDo6aXNWYWxpZCgpIGNvbnN0CiB7CisgICAgaWYgKGZsYWdzKCkgJiBCaXRtYXBUZXh0dXJl
OjpXcmFwcGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gbV9pZDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5oCmluZGV4IDQyNDA3ZmIuLmU2NzI5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVk
ZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAordHlwZWRlZiBzdHJ1Y3QgX0dzdFNhbXBsZSBH
c3RTYW1wbGU7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFRleHR1cmVNYXBwZXJH
TERhdGE7CkBAIC0xNjcsNiArMTY5LDEyIEBAIHB1YmxpYzoKICAgICB9OwogICAgIGNvbnN0IEZp
bHRlckluZm8qIGZpbHRlckluZm8oKSBjb25zdCB7IHJldHVybiAmbV9maWx0ZXJJbmZvOyB9CiAK
KyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIHZvaWQgd3JhcEdzdFRleHR1cmVJRCh1bnNpZ25l
ZCBpbnQgdGV4dHVyZUlEKTsKKyAgICB1bnNpZ25lZCBpbnQgZ3N0VGV4dHVyZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9nc3RUZXh0dXJlSUQ7IH0KKyAgICB2b2lkIGRyYXdHc3RTYW1wbGUoVGV4dHVy
ZU1hcHBlckdMKiwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgY29uc3Q7
CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGNv
bnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VP
ZmZzZXQsIGludCBieXRlc1BlckxpbmUsIHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0LCBQbGF0
Zm9ybTNET2JqZWN0IGdsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwogCkBAIC0x
ODcsNyArMTk1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUZib0lmTmVlZGVkKCk7CiAK
ICAgICBGaWx0ZXJJbmZvIG1fZmlsdGVySW5mbzsKLQorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisg
ICAgdW5zaWduZWQgaW50IG1fZ3N0VGV4dHVyZUlEOworI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNz
IFRleHR1cmVNYXBwZXJHTDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kR1N0
cmVhbWVyLmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21ha2UKaW5kZXggNzQ0
NDc2MC4uNjhhOTZmYSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21ha2UKQEAgLTE5LDYgKzE5LDcg
QEAKICMgIGdzdHJlYW1lci1hcHA6ICAgICAgICBHU1RSRUFNRVJfQVBQX0lOQ0xVREVfRElSUyBh
bmQgR1NUUkVBTUVSX0FQUF9MSUJSQVJJRVMKICMgIGdzdHJlYW1lci1hdWRpbzogICAgICBHU1RS
RUFNRVJfQVVESU9fSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfQVVESU9fTElCUkFSSUVTCiAj
ICBnc3RyZWFtZXItZmZ0OiAgICAgICAgR1NUUkVBTUVSX0ZGVF9JTkNMVURFX0RJUlMgYW5kIEdT
VFJFQU1FUl9GRlRfTElCUkFSSUVTCisjICBnc3RyZWFtZXItZ2w6ICAgICAgICAgR1NUUkVBTUVS
X0dMX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0dMX0xJQlJBUklFUwogIyAgZ3N0cmVhbWVy
LW1wZWd0czogICAgIEdTVFJFQU1FUl9NUEVHVFNfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJf
TVBFR1RTX0xJQlJBUklFUwogIyAgZ3N0cmVhbWVyLXBidXRpbHM6ICAgIEdTVFJFQU1FUl9QQlVU
SUxTX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX1BCVVRJTFNfTElCUkFSSUVTCiAjICBnc3Ry
ZWFtZXItdGFnOiAgICAgICAgR1NUUkVBTUVSX1RBR19JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1F
Ul9UQUdfTElCUkFSSUVTCkBAIC04NCw2ICs4NSw3IEBAIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVO
VChHU1RSRUFNRVJfQkFTRSBnc3RyZWFtZXItYmFzZS0xLjAgZ3N0YmFzZS0xLjApCiBGSU5EX0dT
VFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0FQUCBnc3RyZWFtZXItYXBwLTEuMCBnc3RhcHAt
MS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9BVURJTyBnc3RyZWFtZXIt
YXVkaW8tMS4wIGdzdGF1ZGlvLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFN
RVJfRkZUIGdzdHJlYW1lci1mZnQtMS4wIGdzdGZmdC0xLjApCitGSU5EX0dTVFJFQU1FUl9DT01Q
T05FTlQoR1NUUkVBTUVSX0dMIGdzdHJlYW1lci1nbC0xLjA+PTEuNS4wIGdzdGdsLTEuMCkKIEZJ
TkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfTVBFR1RTIGdzdHJlYW1lci1tcGVndHMt
MS4wPj0xLjQuMCBnc3RtcGVndHMtMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJF
QU1FUl9QQlVUSUxTIGdzdHJlYW1lci1wYnV0aWxzLTEuMCBnc3RwYnV0aWxzLTEuMCkKIEZJTkRf
R1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfVEFHIGdzdHJlYW1lci10YWctMS4wIGdzdHRh
Zy0xLjApCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IDcxNzJjNzMuLmExNjEyNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlCkBAIC0yNTIsNyArMjUyLDcgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFC
TEVfV0VCX0FVRElPKQogICAgIHNldChHU1RSRUFNRVJfQ09NUE9ORU5UUyBhcHAgcGJ1dGlscykK
ICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0dTVFJFQU1FUikKICAgICBpZiAoRU5BQkxF
X1ZJREVPKQotICAgICAgICBsaXN0KEFQUEVORCBHU1RSRUFNRVJfQ09NUE9ORU5UUyB2aWRlbyBt
cGVndHMgdGFnKQorICAgICAgICBsaXN0KEFQUEVORCBHU1RSRUFNRVJfQ09NUE9ORU5UUyB2aWRl
byBtcGVndHMgdGFnIGdsKQogICAgIGVuZGlmICgpCiAKICAgICBpZiAoRU5BQkxFX1dFQl9BVURJ
TykKQEAgLTI2Niw2ICsyNjYsMTEgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FV
RElPKQogICAgICAgICBhZGRfZGVmaW5pdGlvbnMoLURXVEZfVVNFX0dTVFJFQU1FUl9NUEVHVFMp
CiAgICAgICAgIHNldChVU0VfR1NUUkVBTUVSX01QRUdUUyBUUlVFKQogICAgIGVuZGlmICgpCisK
KyAgICBpZiAoUENfR1NUUkVBTUVSX0dMX0ZPVU5EKQorICAgICAgICBhZGRfZGVmaW5pdGlvbnMo
LURXVEZfVVNFX0dTVFJFQU1FUl9HTCkKKyAgICAgICAgc2V0KFVTRV9HU1RSRUFNRVJfR0wgVFJV
RSkKKyAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XQVlMQU5EX1RBUkdFVCkK
LS0gCjIuMS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249237</attachid>
            <date>2015-03-23 10:27:26 -0700</date>
            <delta_ts>2015-03-23 10:33:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>15976</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhODI0NWM1MzQ5Njc0NTJjMzdhNWUyNzQwNDA1MTg5ZDBlZTEzNDk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgpE
YXRlOiBUdWUsIDE3IE1hciAyMDE1IDEzOjM2OjI4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gcGF0
Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCA1MCArKysrKysrKysrKysrKysrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuY3BwICB8IDY2ICsrKysrKysrKysrKysrKysrKysrKy0KIC4uLi9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oICAgIHwgIDkgKystCiAuLi4v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgICAgICB8ICAyICstCiAu
Li4vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCAgICAgICB8ICAzICst
CiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgICB8IDU3
ICsrKysrKysrKysrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmggICAgIHwgMTIgKysrLQogNyBmaWxlcyBjaGFuZ2VkLCAxOTIgaW5zZXJ0aW9u
cygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UzNmJkMy4uYjg2ZWYwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE1LTAzLTIzICBQaGlsaXBwZSBOb3JtYW5kICA8
cGhpbG5AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBHc3RHTCBzdXBwb3J0IGlu
IHRoZSB2aWRlbyBzaW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzg1NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgR1N0cmVhbWVyJ3MgZ2xpbWFnZXNpbmsgZm9yIHZpZGVvIHJlbmRlcmluZyBp
bnN0ZWFkIG9mIG91cgorICAgICAgICBjdXN0b20gdmlkZW8gc2luayBpZiBhIHJlY2VudC1lbm91
Z2ggdmVyc2lvbiBvZiBHc3RHTCBpcyBmb3VuZAorICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkLiBX
aGVuIGdsaW1hZ2VzaW5rIGlzIHVzZWQgaXQgcGFzc2VzIGEgdGV4dHVyZSB0bworICAgICAgICB0
aGUgbWVkaWEgcGxheWVyIHdoaWNoIHRoZW4gd3JhcHMgaXQgaW5zaWRlIGEgVGV4dHVyZU1hcHBl
cgorICAgICAgICB0ZXh0dXJlIGxhdGVyIHVzZWQgZm9yIGFjdHVhbCByZW5kZXJpbmcuCisKKyAg
ICAgICAgVXNpbmcgdGhpcyBuZXcgY29kZSBwYXRoIHdpbGwgYWxsb3cgdXMgdG8gcmVtb3ZlIG91
ciBjdXN0b20gc2luaworICAgICAgICBlbnRpcmVseSBpbiB0aGUgbG9uZyB0ZXJtLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0LCBleGlzdGluZyBtZWRpYSB0ZXN0cyBjb3ZlciB2aWRlbyByZW5kZXJp
bmcgYWxyZWFkeS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlh
UGxheWVyUHJpdmF0ZURyYXdDYWxsYmFjayk6IGNsaWVudC1kcmF3IHNpZ25hbCBjYWxsYmFjay4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0
dXJhbFNpemUpOiBCZXR0ZXIKKyAgICAgICAgY2hlY2sgZm9yIHNhbXBsZSB2YWxpZGl0eS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRl
eHR1cmUpOiBXcmFwCisgICAgICAgIHRleHR1cmUgaWYgaXQgY29tZXMgZnJvbSBnbGltYWdlc2lu
ay4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRy
aWdnZXJEcmF3KTogVHJpZ2dlciBhCisgICAgICAgIHJlcGFpbnQgYW5kIHdhaXQgaXRzIGNvbXBs
ZXRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpjcmVhdGVWaWRlb1NpbmspOiBVc2UKKyAgICAgICAgZ2xpbWFnZXNpbmsgaWYgR3N0R0wgaXMg
YXZhaWxhYmxlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6IERpc2FibGUgdGhpcworICAgICAgICBp
ZiBHc3RHTCBpcyB1c2VkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyLmg6IE5ldyBmbGFnIHRvIHNpZ25hbAorICAgICAgICB3cmFwcGVkIHRleHR1cmVz
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
OiBOZXcgQVBJIHRvIHdyYXAKKyAgICAgICAgYW5kIGRyYXcgR3N0U2FtcGxlcy4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUpOiBEcmF3IEdzdFNhbXBsZSBp
ZiBwcmVzZW50LgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0
dXJlR0wpOiBJbml0aWFsaXplIHNhbXBsZQorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVy
ZUdMOjpkaWRSZXNldCk6IE5vIG5lZWQgdG8gcmVzZXQgd3JhcHBlZCB0ZXh0dXJlcy4KKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6d3JhcEdzdFNhbXBsZSk6IEtlZXAgdHJhY2sg
b2YgdGhlCisgICAgICAgIHNhbXBsZSwgbm8gbmVlZCB0byByZWYgaGVyZSBiZWNhdXNlIHRoZSBw
bGF5ZXIgcGFpbnQgaGFuZGxlcgorICAgICAgICBlbnN1cmVzIHRoZSByZWYgaXMgdmFsaWQgYnkg
YmxvY2tpbmcgdGhlIGNsaWVudC1kcmF3IHNpZ25hbCBoYW5kbGVyLgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwVGV4dHVyZUdMOjpkcmF3R3N0U2FtcGxlKTogRXh0cmFjdCB0ZXh0dXJlIElEIGFu
ZAorICAgICAgICB2aWRlbyBkaW1lbnNpb25zIGZyb20gdGhlIHNhbXBsZSBhbmQgZG8gYWN0dWFs
IHBhaW50LgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjppc1ZhbGlkKTogV3Jh
cHBlZCB0ZXh0dXJlcyBhbHdheXMgdmFsaWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVy
ZUdMOjpoYXNHc3RTYW1wbGUpOiBVdGlsaXR5IGZ1bmN0aW9uIHRvCisgICAgICAgIGNoZWNrIGlm
IGEgdGV4dHVyZSByZXByZXNlbnRzIGEgR1N0cmVhbWVyIHZpZGVvIHNhbXBsZS4KKwogMjAxNS0w
My0yMyAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53cz4KIAogICAgICAgICBSZWZhY3RvciBJbWFn
ZUxvYWRlcidzIHNldHRpbmcgb2YgQ2FjaGVkSW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCAxMzQyYThlLi5jN2Y1Y2Fh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCkBAIC04NCw2ICs4NCwxNCBAQCBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVS
ZXBhaW50Q2FsbGJhY2soV2ViS2l0VmlkZW9TaW5rKiwgR3N0U2FtcGxlKiBzYW1wbAogICAgIHBs
YXllclByaXZhdGUtPnRyaWdnZXJSZXBhaW50KHNhbXBsZSk7CiB9CiAKKyNpZiBVU0UoR1NUUkVB
TUVSX0dMKQorc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZURyYXdDYWxsYmFjayhH
c3RFbGVtZW50KiwgR3N0Q29udGV4dCosIEdzdFNhbXBsZSogc2FtcGxlLCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlKiBwbGF5ZXJQcml2YXRlKQoreworICAgIHBsYXllclByaXZhdGUt
PnRyaWdnZXJEcmF3KHNhbXBsZSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisjZW5kaWYKKwogTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZShNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwg
bV9mcHNTaW5rKDApCkBAIC05NSw2ICsxMDMsMTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwK
ICAgICAsIG1fbXV0ZVNpZ25hbEhhbmRsZXIoMCkKIHsKICAgICBnX211dGV4X2luaXQoJm1fc2Ft
cGxlTXV0ZXgpOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgZ19jb25kX2luaXQoJm1fZHJh
d0NvbmRpdGlvbik7CisgICAgZ19tdXRleF9pbml0KCZtX2RyYXdNdXRleCk7CisjZW5kaWYKIH0K
IAogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UoKQpAQCAtMTIyLDYgKzEzNCwxMSBAQCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpCiAgICAgICAgIG1f
bXV0ZVNpZ25hbEhhbmRsZXIgPSAwOwogICAgIH0KIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisg
ICAgZ19jb25kX2NsZWFyKCZtX2RyYXdDb25kaXRpb24pOworICAgIGdfbXV0ZXhfY2xlYXIoJm1f
ZHJhd011dGV4KTsKKyNlbmRpZgorCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50
KCktPnBsYXRmb3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQoKTsKQEAgLTEzOCw3ICsxNTUsNyBAQCBG
bG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUoKSBj
b25zdAogICAgICAgICByZXR1cm4gbV92aWRlb1NpemU7CiAKICAgICBXVEY6OkdNdXRleExvY2tl
cjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7Ci0gICAgaWYgKCFtX3NhbXBsZSkKKyAgICBp
ZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplKCk7
CiAKICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZSk7CkBA
IC0yODAsNyArMjk3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpt
dXRlQ2hhbmdlZCgpCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
cikKIHsKICAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7
Ci0gICAgaWYgKCFtX3NhbXBsZSkKKyAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rfc2FtcGxl
X2dldF9jYXBzKG1fc2FtcGxlKTsKQEAgLTI5Myw4ICszMTAsMTYgQEAgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJl
KFRleHR1cmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRTaXplIHNpemUgPSBJ
bnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19I
RUlHSFQoJnZpZGVvSW5mbykpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0g
dGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1RfVklERU9fSU5G
T19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDog
Qml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKKworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgUmVm
UHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVy
ZUZyb21Qb29sKHNpemUsIEJpdG1hcFRleHR1cmU6OldyYXBwZWQpOworICAgIEJpdG1hcFRleHR1
cmVHTCogdGV4dHVyZUdMID0gdG9CaXRtYXBUZXh0dXJlR0wodGV4dHVyZS5nZXQoKSk7CisgICAg
dGV4dHVyZUdMLT53cmFwR3N0U2FtcGxlKG1fc2FtcGxlKTsKKyAgICByZXR1cm4gdGV4dHVyZTsK
KyNlbHNlCisKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlciht
X3NhbXBsZSk7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB0ZXh0dXJlTWFw
cGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEdTVF9WSURFT19JTkZPX0hBU19BTFBI
QSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0
dXJlOjpOb0ZsYWcpOwogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKICAgICBHc3RW
aWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEqIG1ldGE7CkBAIC0zMjIsNiArMzQ3LDM1IEBAIFBhc3NS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBk
YXRlVGV4dHVyZShUZXh0dXJlCiAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1l
KTsKIAogICAgIHJldHVybiB0ZXh0dXJlOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmIFVTRShH
U1RSRUFNRVJfR0wpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdn
ZXJEcmF3KEdzdFNhbXBsZSogc2FtcGxlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoR1NUX0lT
X1NBTVBMRShzYW1wbGUpKTsKKworICAgIHsKKyAgICAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011
dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBpZiAobV9zYW1wbGUpCisgICAgICAg
ICAgICBnc3Rfc2FtcGxlX3VucmVmKG1fc2FtcGxlKTsKKyAgICAgICAgbV9zYW1wbGUgPSBnc3Rf
c2FtcGxlX3JlZihzYW1wbGUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgV1RGOjpHTXV0ZXhM
b2NrZXI8R011dGV4PiBsb2NrKG1fZHJhd011dGV4KTsKKworICAgICAgICBtX2RyYXdUaW1lckhh
bmRsZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSB2aWRlbyByZW5kZXIiLCBbdGhpc10g
eworICAgICAgICAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fZHJhd011dGV4
KTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCisgICAgICAgICAgICBpZiAoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1f
cGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQobV9w
bGF5ZXIpICYmIGNsaWVudCgpKQorICAgICAgICAgICAgICAgIGNsaWVudCgpLT5zZXRQbGF0Zm9y
bUxheWVyTmVlZHNEaXNwbGF5KCk7CisgICAgICAgICAgICBnX2NvbmRfc2lnbmFsKCZtX2RyYXdD
b25kaXRpb24pOworI2VuZGlmCisgICAgICAgIH0sIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMo
MCksIEdfUFJJT1JJVFlfSElHSCwgbnVsbHB0ciwgZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9k
ZWZhdWx0KCkpOworICAgICAgICBnX2NvbmRfd2FpdCgmbV9kcmF3Q29uZGl0aW9uLCAmbV9kcmF3
TXV0ZXgpOworICAgIH0KIH0KICNlbmRpZgogCkBAIC00MTcsNiArNDcxLDEyIEBAIEdzdEVsZW1l
bnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2luaygpCiAg
ICAgQVNTRVJUKGluaXRpYWxpemVHU3RyZWFtZXIoKSk7CiAKICAgICBHc3RFbGVtZW50KiB2aWRl
b1NpbmsgPSBudWxscHRyOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgbV93ZWJraXRWaWRl
b1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImdsaW1hZ2VzaW5rIiwgIndlYmtpdHNp
bmsiKTsKKyAgICBtX3JlcGFpbnRIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX3dlYmtpdFZp
ZGVvU2luay5nZXQoKSwgImNsaWVudC1kcmF3IiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZh
dGVEcmF3Q2FsbGJhY2spLCB0aGlzKTsKKyAgICB2aWRlb1NpbmsgPSBtX3dlYmtpdFZpZGVvU2lu
ay5nZXQoKTsKKyAgICByZXR1cm4gdmlkZW9TaW5rOworI2VuZGlmCiAgICAgbV93ZWJraXRWaWRl
b1NpbmsgPSB3ZWJraXRWaWRlb1NpbmtOZXcoKTsKIAogICAgIG1fcmVwYWludEhhbmRsZXIgPSBn
X3NpZ25hbF9jb25uZWN0KG1fd2Via2l0VmlkZW9TaW5rLmdldCgpLCAicmVwYWludC1yZXF1ZXN0
ZWQiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayksIHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgK
aW5kZXggMGJjMDVhOC4uNjU2NTMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC00MCw3ICs0MCw2IEBAIHR5cGVkZWYgc3RydWN0
IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxl
bWVudDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RNZXNzYWdlIEdzdE1lc3NhZ2U7CiB0eXBlZGVmIHN0
cnVjdCBfR3N0U3RyZWFtVm9sdW1lIEdzdFN0cmVhbVZvbHVtZTsKLXR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRWaWRlb1NpbmsgV2ViS2l0VmlkZW9TaW5rOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTc3LDYgKzc2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXpl
Jik7CiAgICAgdm9pZCBzaXplQ2hhbmdlZCgpOwogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAg
ICB2b2lkIHRyaWdnZXJEcmF3KEdzdFNhbXBsZSopOworI2VuZGlmCiAgICAgdm9pZCB0cmlnZ2Vy
UmVwYWludChHc3RTYW1wbGUqKTsKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYpOwogCkBAIC0xMjYsNiArMTI4LDExIEBAIHByb3RlY3RlZDoKICAgICBH
c3RTYW1wbGUqIG1fc2FtcGxlOwogICAgIEdUaHJlYWRTYWZlTWFpbkxvb3BTb3VyY2UgbV92b2x1
bWVUaW1lckhhbmRsZXI7CiAgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX211dGVUaW1l
ckhhbmRsZXI7CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBHVGhyZWFkU2FmZU1haW5Mb29w
U291cmNlIG1fZHJhd1RpbWVySGFuZGxlcjsKKyAgICBHQ29uZCBtX2RyYXdDb25kaXRpb247Cisg
ICAgR011dGV4IG1fZHJhd011dGV4OworI2VuZGlmCiAgICAgdW5zaWduZWQgbG9uZyBtX3JlcGFp
bnRIYW5kbGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV92b2x1bWVTaWduYWxIYW5kbGVyOwogICAg
IHVuc2lnbmVkIGxvbmcgbV9tdXRlU2lnbmFsSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dT
dHJlYW1lci5jcHAKaW5kZXggYzk3MmM0ZC4uNzk3NmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lu
a0dTdHJlYW1lci5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJWaWRlb1NpbmtHU3RyZWFtZXIuaCIKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmICFVU0Uo
R1NUUkVBTUVSX0dMKQogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJH
U3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApp
bmRleCA5MGQ0ZTY0Li41YTU4NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTQ4LDcgKzQ4LDggQEAg
Y2xhc3MgQml0bWFwVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJpdG1hcFRleHR1cmU+IHsK
IHB1YmxpYzoKICAgICBlbnVtIEZsYWcgewogICAgICAgICBOb0ZsYWcgPSAwLAotICAgICAgICBT
dXBwb3J0c0FscGhhID0gMHgwMQorICAgICAgICBTdXBwb3J0c0FscGhhID0gMHgwMSwKKyAgICAg
ICAgV3JhcHBlZCA9IDB4MDIKICAgICB9OwogCiAgICAgZW51bSBVcGRhdGVDb250ZW50c0ZsYWcg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCAxMTU0ZjRlLi44MWIzMWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmNwcApAQCAtNDIsNiArNDIsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisjaW5jbHVkZSA8Z3N0L2dz
dC5oPgorI2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQorI2luY2x1ZGUgPGdzdC9nbC9nc3Rn
bG1lbW9yeS5oPgorI3VuZGVmIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisjZW5kaWYKKwogI2lmICFV
U0UoVEVYTUFQX09QRU5HTF9FU18yKQogLy8gRklYTUU6IE1vdmUgdG8gRXh0ZW5zaW9uczNELmgu
CiAjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84X1JFViAweDgzNjcKQEAgLTUxNiw2ICs1
MjMsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRl
eHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYKICAgICBjb25zdCBCaXRtYXBUZXh0dXJl
R0wmIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHRleHR1
cmUpOwogICAgIFRlbXBvcmFyeUNoYW5nZTxjb25zdCBCaXRtYXBUZXh0dXJlR0w6OkZpbHRlcklu
Zm8qPiBmaWx0ZXJJbmZvKGRhdGEoKS5maWx0ZXJJbmZvLCB0ZXh0dXJlR0wuZmlsdGVySW5mbygp
KTsKIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgaWYgKHRleHR1cmVHTC5oYXNHc3RTYW1w
bGUoKSkgeworICAgICAgICB0ZXh0dXJlR0wuZHJhd0dzdFNhbXBsZSh0aGlzLCB0ZXh0dXJlR0wu
aXNPcGFxdWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVj
dCwgbWF0cml4LCBvcGFjaXR5LCBleHBvc2VkRWRnZXMpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCisKICAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlR0wuaWQoKSwgdGV4dHVyZUdMLmlz
T3BhcXVlKCkgPyAwIDogU2hvdWxkQmxlbmQsIHRleHR1cmVHTC5zaXplKCksIHRhcmdldFJlY3Qs
IG1hdHJpeCwgb3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIApAQCAtNjg4LDYgKzcwMiw5IEBA
IEJpdG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKFRleHR1cmVNYXBwZXJHTCogdGV4dHVy
ZU1hcHBlcikKICAgICAsIG1fZGVwdGhCdWZmZXJPYmplY3QoMCkKICAgICAsIG1fc2hvdWxkQ2xl
YXIodHJ1ZSkKICAgICAsIG1fY29udGV4dDNEKHRleHR1cmVNYXBwZXItPmdyYXBoaWNzQ29udGV4
dDNEKCkpCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICAsIG1fc2FtcGxlKG51bGxwdHIpCisj
ZW5kaWYKIHsKIH0KIApAQCAtNzM2LDYgKzc1Myw5IEBAIHN0YXRpYyBib29sIGRyaXZlclN1cHBv
cnRzU3ViSW1hZ2UoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAKIHZvaWQgQml0bWFwVGV4
dHVyZUdMOjpkaWRSZXNldCgpCiB7CisgICAgaWYgKGZsYWdzKCkgJiBCaXRtYXBUZXh0dXJlOjpX
cmFwcGVkKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIW1faWQpCiAgICAgICAgIG1faWQg
PSBtX2NvbnRleHQzRC0+Y3JlYXRlVGV4dHVyZSgpOwogCkBAIC04OTgsNiArOTE4LDQxIEBAIFBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hCiAgICAgcmV0dXJuIHJlc3VsdFN1cmZhY2U7CiB9CiAKKyNp
ZiBVU0UoR1NUUkVBTUVSX0dMKQordm9pZCBCaXRtYXBUZXh0dXJlR0w6OndyYXBHc3RTYW1wbGUo
R3N0U2FtcGxlKiBzYW1wbGUpCit7CisgICAgbV9zYW1wbGUgPSBzYW1wbGU7Cit9CisKK3ZvaWQg
Qml0bWFwVGV4dHVyZUdMOjpkcmF3R3N0U2FtcGxlKFRleHR1cmVNYXBwZXJHTCogdGV4dHVyZU1h
cHBlciwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgY29uc3QKK3sKKyAg
ICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBH
c3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZSk7CisgICAg
R3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUpOworICAgIGlmICgh
Y2FwcykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAg
ICBnc3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgIGlmICghZ3N0X3ZpZGVvX2lu
Zm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBH
c3RWaWRlb0ZyYW1lIHZpZGVvRnJhbWU7CisgICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZ2
aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihH
U1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGd1aW50
IHRleHR1cmVJRCA9ICooZ3VpbnQgKikgdmlkZW9GcmFtZS5kYXRhWzBdOworCisgICAgaWYgKEdT
VF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSkKKyAgICAgICAgZmxhZ3MgfD0gQml0
bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYTsKKworICAgIHRleHR1cmVNYXBwZXItPmRyYXdUZXh0
dXJlKHRleHR1cmVJRCwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdN
YXRyaXgsIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7CisgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFw
KCZ2aWRlb0ZyYW1lKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGNyZWF0ZVByb2plY3Rpb25NYXRyaXgoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBt
aXJyb3JlZCkKIHsKICAgICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSA5OTk5OTk5OwpAQCAtOTkw
LDYgKzEwNDUsOCBAQCBCaXRtYXBUZXh0dXJlR0w6On5CaXRtYXBUZXh0dXJlR0woKQogCiBib29s
IEJpdG1hcFRleHR1cmVHTDo6aXNWYWxpZCgpIGNvbnN0CiB7CisgICAgaWYgKGZsYWdzKCkgJiBC
aXRtYXBUZXh0dXJlOjpXcmFwcGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4g
bV9pZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDQyNDA3ZmIuLjgyYTZlOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAordHlwZWRlZiBzdHJ1Y3Qg
X0dzdFNhbXBsZSBHc3RTYW1wbGU7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFRl
eHR1cmVNYXBwZXJHTERhdGE7CkBAIC0xNjcsNiArMTY5LDEyIEBAIHB1YmxpYzoKICAgICB9Owog
ICAgIGNvbnN0IEZpbHRlckluZm8qIGZpbHRlckluZm8oKSBjb25zdCB7IHJldHVybiAmbV9maWx0
ZXJJbmZvOyB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIHZvaWQgd3JhcEdzdFNhbXBs
ZShHc3RTYW1wbGUqKTsKKyAgICBib29sIGhhc0dzdFNhbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2FtcGxlOyB9CisgICAgdm9pZCBkcmF3R3N0U2FtcGxlKFRleHR1cmVNYXBwZXJHTCosIEZsYWdz
IGZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9h
dCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIGNvbnN0OworI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lkKiwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQ
ZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNCwgUGxhdGZvcm0zRE9iamVjdCBnbEZv
cm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKIApAQCAtMTg3LDcgKzE5NSw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjcmVhdGVGYm9JZk5lZWRlZCgpOwogCiAgICAgRmlsdGVySW5mbyBt
X2ZpbHRlckluZm87Ci0KKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIG11dGFibGUgR3N0U2Ft
cGxlKiBtX3NhbXBsZTsKKyNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJlTWFwcGVyR0w7
CiB9OwogCi0tIAoyLjEuNA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249239</attachid>
            <date>2015-03-23 10:33:50 -0700</date>
            <delta_ts>2015-03-24 00:59:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>15250</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAxMzllZGI4NGRmMWExZDFiYzdmNTRjNzdkZTliZTVmNzJiZmExOTZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgpE
YXRlOiBUdWUsIDE3IE1hciAyMDE1IDEzOjM2OjI4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gcGF0
Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCA0OCArKysrKysrKysrKysrKysKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAgIHwgNjggKysrKysrKysrKysrKysrKysrKysrLQogLi4uL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggICAgfCAgOSArKy0KIC4uLi9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oICAgICAgIHwgIDMgKy0KIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCAgIHwgNTYgKysr
KysrKysrKysrKysrKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5oICAgICB8IDEyICsrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKyks
IDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdlMzZiZDMuLmE0NjFlNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MSBAQAorMjAxNS0wMy0yMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxu
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gR3N0R0wgc3VwcG9ydCBpbiB0aGUg
dmlkZW8gc2luaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM4NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIEdTdHJlYW1lcidzIGdsaW1hZ2VzaW5rIGZvciB2aWRlbyByZW5kZXJpbmcgaW5zdGVh
ZCBvZiBvdXIKKyAgICAgICAgY3VzdG9tIHZpZGVvIHNpbmsgaWYgYSByZWNlbnQtZW5vdWdoIHZl
cnNpb24gb2YgR3N0R0wgaXMgZm91bmQKKyAgICAgICAgZHVyaW5nIHRoZSBidWlsZC4gV2hlbiBn
bGltYWdlc2luayBpcyB1c2VkIGl0IHBhc3NlcyBhIHRleHR1cmUgdG8KKyAgICAgICAgdGhlIG1l
ZGlhIHBsYXllciB3aGljaCB0aGVuIHdyYXBzIGl0IGluc2lkZSBhIFRleHR1cmVNYXBwZXIKKyAg
ICAgICAgdGV4dHVyZSBsYXRlciB1c2VkIGZvciBhY3R1YWwgcmVuZGVyaW5nLgorCisgICAgICAg
IFVzaW5nIHRoaXMgbmV3IGNvZGUgcGF0aCB3aWxsIGFsbG93IHVzIHRvIHJlbW92ZSBvdXIgY3Vz
dG9tIHNpbmsKKyAgICAgICAgZW50aXJlbHkgaW4gdGhlIGxvbmcgdGVybS4KKworICAgICAgICBO
byBuZXcgdGVzdCwgZXhpc3RpbmcgbWVkaWEgdGVzdHMgY292ZXIgdmlkZW8gcmVuZGVyaW5nIGFs
cmVhZHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZWRpYVBsYXll
clByaXZhdGVEcmF3Q2FsbGJhY2spOiBjbGllbnQtZHJhdyBzaWduYWwgY2FsbGJhY2suCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxT
aXplKTogQmV0dGVyCisgICAgICAgIGNoZWNrIGZvciBzYW1wbGUgdmFsaWRpdHkuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJl
KTogV3JhcAorICAgICAgICB0ZXh0dXJlIGlmIGl0IGNvbWVzIGZyb20gZ2xpbWFnZXNpbmsuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2Vy
RHJhdyk6IFRyaWdnZXIgYQorICAgICAgICByZXBhaW50IGFuZCB3YWl0IGl0cyBjb21wbGV0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3Jl
YXRlVmlkZW9TaW5rKTogVXNlCisgICAgICAgIGdsaW1hZ2VzaW5rIGlmIEdzdEdMIGlzIGF2YWls
YWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmg6IE5ldyBmbGFnIHRvIHNpZ25hbAorICAgICAgICB3cmFwcGVkIHRl
eHR1cmVzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuY3BwOiBOZXcgQVBJIHRvIHdyYXAKKyAgICAgICAgYW5kIGRyYXcgR3N0U2FtcGxlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUpOiBEcmF3IEdzdFNh
bXBsZSBpZiBwcmVzZW50LgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpCaXRt
YXBUZXh0dXJlR0wpOiBJbml0aWFsaXplIHNhbXBsZQorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZUdMOjpkaWRSZXNldCk6IE5vIG5lZWQgdG8gcmVzZXQgd3JhcHBlZCB0ZXh0dXJlcy4K
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6d3JhcEdzdFNhbXBsZSk6IEtlZXAg
dHJhY2sgb2YgdGhlCisgICAgICAgIHNhbXBsZSwgbm8gbmVlZCB0byByZWYgaGVyZSBiZWNhdXNl
IHRoZSBwbGF5ZXIgcGFpbnQgaGFuZGxlcgorICAgICAgICBlbnN1cmVzIHRoZSByZWYgaXMgdmFs
aWQgYnkgYmxvY2tpbmcgdGhlIGNsaWVudC1kcmF3IHNpZ25hbCBoYW5kbGVyLgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpkcmF3R3N0U2FtcGxlKTogRXh0cmFjdCB0ZXh0dXJl
IElEIGFuZAorICAgICAgICB2aWRlbyBkaW1lbnNpb25zIGZyb20gdGhlIHNhbXBsZSBhbmQgZG8g
YWN0dWFsIHBhaW50LgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjppc1ZhbGlk
KTogV3JhcHBlZCB0ZXh0dXJlcyBhbHdheXMgdmFsaWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZUdMOjpoYXNHc3RTYW1wbGUpOiBVdGlsaXR5IGZ1bmN0aW9uIHRvCisgICAgICAgIGNo
ZWNrIGlmIGEgdGV4dHVyZSByZXByZXNlbnRzIGEgR1N0cmVhbWVyIHZpZGVvIHNhbXBsZS4KKwog
MjAxNS0wMy0yMyAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53cz4KIAogICAgICAgICBSZWZhY3Rv
ciBJbWFnZUxvYWRlcidzIHNldHRpbmcgb2YgQ2FjaGVkSW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCAxMzQyYThlLi40
NDEyODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCkBAIC04NCw2ICs4NCwxNCBAQCBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclBy
aXZhdGVSZXBhaW50Q2FsbGJhY2soV2ViS2l0VmlkZW9TaW5rKiwgR3N0U2FtcGxlKiBzYW1wbAog
ICAgIHBsYXllclByaXZhdGUtPnRyaWdnZXJSZXBhaW50KHNhbXBsZSk7CiB9CiAKKyNpZiBVU0Uo
R1NUUkVBTUVSX0dMKQorc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZURyYXdDYWxs
YmFjayhHc3RFbGVtZW50KiwgR3N0Q29udGV4dCosIEdzdFNhbXBsZSogc2FtcGxlLCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlKiBwbGF5ZXJQcml2YXRlKQoreworICAgIHBsYXllclBy
aXZhdGUtPnRyaWdnZXJEcmF3KHNhbXBsZSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisjZW5kaWYK
KwogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQog
ICAgICwgbV9mcHNTaW5rKDApCkBAIC05NSw2ICsxMDMsMTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXll
ciogcGwKICAgICAsIG1fbXV0ZVNpZ25hbEhhbmRsZXIoMCkKIHsKICAgICBnX211dGV4X2luaXQo
Jm1fc2FtcGxlTXV0ZXgpOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgZ19jb25kX2luaXQo
Jm1fZHJhd0NvbmRpdGlvbik7CisgICAgZ19tdXRleF9pbml0KCZtX2RyYXdNdXRleCk7CisjZW5k
aWYKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UoKQpAQCAtMTIyLDYgKzEzNCwxMSBAQCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpCiAgICAg
ICAgIG1fbXV0ZVNpZ25hbEhhbmRsZXIgPSAwOwogICAgIH0KIAorI2lmIFVTRShHU1RSRUFNRVJf
R0wpCisgICAgZ19jb25kX2NsZWFyKCZtX2RyYXdDb25kaXRpb24pOworICAgIGdfbXV0ZXhfY2xl
YXIoJm1fZHJhd011dGV4KTsKKyNlbmRpZgorCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
Y2xpZW50KCktPnBsYXRmb3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQoKTsKQEAgLTEzOCw3ICsxNTUs
NyBAQCBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNp
emUoKSBjb25zdAogICAgICAgICByZXR1cm4gbV92aWRlb1NpemU7CiAKICAgICBXVEY6OkdNdXRl
eExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7Ci0gICAgaWYgKCFtX3NhbXBsZSkK
KyAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUpKQogICAgICAgICByZXR1cm4gRmxvYXRT
aXplKCk7CiAKICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBs
ZSk7CkBAIC0yODAsNyArMjk3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjptdXRlQ2hhbmdlZCgpCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlcikKIHsKICAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVN
dXRleCk7Ci0gICAgaWYgKCFtX3NhbXBsZSkKKyAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1w
bGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rf
c2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlKTsKQEAgLTI5Myw4ICszMTAsMTYgQEAgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVU
ZXh0dXJlKFRleHR1cmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRTaXplIHNp
emUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9f
SU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1RfVklE
RU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0Fs
cGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKKworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisg
ICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5hY3F1aXJl
VGV4dHVyZUZyb21Qb29sKHNpemUsIEJpdG1hcFRleHR1cmU6OldyYXBwZWQpOworICAgIEJpdG1h
cFRleHR1cmVHTCogdGV4dHVyZUdMID0gdG9CaXRtYXBUZXh0dXJlR0wodGV4dHVyZS5nZXQoKSk7
CisgICAgdGV4dHVyZUdMLT53cmFwR3N0U2FtcGxlKG1fc2FtcGxlKTsKKyAgICByZXR1cm4gdGV4
dHVyZTsKKyNlbHNlCisKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1
ZmZlcihtX3NhbXBsZSk7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB0ZXh0
dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEdTVF9WSURFT19JTkZPX0hB
U19BTFBIQSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRt
YXBUZXh0dXJlOjpOb0ZsYWcpOwogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkKICAg
ICBHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEqIG1ldGE7CkBAIC0zMjIsNiArMzQ3LDM1IEBA
IFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJlCiAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRl
b0ZyYW1lKTsKIAogICAgIHJldHVybiB0ZXh0dXJlOworI2VuZGlmCit9CisjZW5kaWYKKworI2lm
IFVTRShHU1RSRUFNRVJfR0wpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnRyaWdnZXJEcmF3KEdzdFNhbXBsZSogc2FtcGxlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
R1NUX0lTX1NBTVBMRShzYW1wbGUpKTsKKworICAgIHsKKyAgICAgICAgV1RGOjpHTXV0ZXhMb2Nr
ZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBpZiAobV9zYW1wbGUpCisg
ICAgICAgICAgICBnc3Rfc2FtcGxlX3VucmVmKG1fc2FtcGxlKTsKKyAgICAgICAgbV9zYW1wbGUg
PSBnc3Rfc2FtcGxlX3JlZihzYW1wbGUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgV1RGOjpH
TXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fZHJhd011dGV4KTsKKworICAgICAgICBtX2RyYXdU
aW1lckhhbmRsZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSB2aWRlbyByZW5kZXIiLCBb
dGhpc10geworICAgICAgICAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fZHJh
d011dGV4KTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCisgICAgICAgICAgICBpZiAoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygp
ICYmIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0
ZWQobV9wbGF5ZXIpICYmIGNsaWVudCgpKQorICAgICAgICAgICAgICAgIGNsaWVudCgpLT5zZXRQ
bGF0Zm9ybUxheWVyTmVlZHNEaXNwbGF5KCk7CisgICAgICAgICAgICBnX2NvbmRfc2lnbmFsKCZt
X2RyYXdDb25kaXRpb24pOworI2VuZGlmCisgICAgICAgIH0sIHN0ZDo6Y2hyb25vOjptaWxsaXNl
Y29uZHMoMCksIEdfUFJJT1JJVFlfSElHSCwgbnVsbHB0ciwgZ19tYWluX2NvbnRleHRfZ2V0X3Ro
cmVhZF9kZWZhdWx0KCkpOworICAgICAgICBnX2NvbmRfd2FpdCgmbV9kcmF3Q29uZGl0aW9uLCAm
bV9kcmF3TXV0ZXgpOworICAgIH0KIH0KICNlbmRpZgogCkBAIC00MTcsNiArNDcxLDE0IEBAIEdz
dEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2lu
aygpCiAgICAgQVNTRVJUKGluaXRpYWxpemVHU3RyZWFtZXIoKSk7CiAKICAgICBHc3RFbGVtZW50
KiB2aWRlb1NpbmsgPSBudWxscHRyOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgbV93ZWJr
aXRWaWRlb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImdsaW1hZ2VzaW5rIiwgbnVs
bHB0cik7CisgICAgaWYgKG1fd2Via2l0VmlkZW9TaW5rKSB7CisgICAgICAgIG1fcmVwYWludEhh
bmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2Via2l0VmlkZW9TaW5rLmdldCgpLCAiY2xpZW50
LWRyYXciLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZURyYXdDYWxsYmFjayksIHRoaXMp
OworICAgICAgICB2aWRlb1NpbmsgPSBtX3dlYmtpdFZpZGVvU2luay5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIHZpZGVvU2luazsKKyAgICB9CisjZW5kaWYKICAgICBtX3dlYmtpdFZpZGVvU2luayA9
IHdlYmtpdFZpZGVvU2lua05ldygpOwogCiAgICAgbV9yZXBhaW50SGFuZGxlciA9IGdfc2lnbmFs
X2Nvbm5lY3QobV93ZWJraXRWaWRlb1NpbmsuZ2V0KCksICJyZXBhaW50LXJlcXVlc3RlZCIsIEdf
Q0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlUmVwYWludENhbGxiYWNrKSwgdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCAw
YmMwNWE4Li42NTY1MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmgKQEAgLTQwLDcgKzQwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdFNh
bXBsZSBHc3RTYW1wbGU7CiB0eXBlZGVmIHN0cnVjdCBfR3N0RWxlbWVudCBHc3RFbGVtZW50Owog
dHlwZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKIHR5cGVkZWYgc3RydWN0IF9H
c3RTdHJlYW1Wb2x1bWUgR3N0U3RyZWFtVm9sdW1lOwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFZp
ZGVvU2luayBXZWJLaXRWaWRlb1Npbms7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzcs
NiArNzYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKICAg
ICB2b2lkIHNpemVDaGFuZ2VkKCk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIHZvaWQg
dHJpZ2dlckRyYXcoR3N0U2FtcGxlKik7CisjZW5kaWYKICAgICB2b2lkIHRyaWdnZXJSZXBhaW50
KEdzdFNhbXBsZSopOwogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0Jik7CiAKQEAgLTEyNiw2ICsxMjgsMTEgQEAgcHJvdGVjdGVkOgogICAgIEdzdFNhbXBs
ZSogbV9zYW1wbGU7CiAgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX3ZvbHVtZVRpbWVy
SGFuZGxlcjsKICAgICBHVGhyZWFkU2FmZU1haW5Mb29wU291cmNlIG1fbXV0ZVRpbWVySGFuZGxl
cjsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIEdUaHJlYWRTYWZlTWFpbkxvb3BTb3VyY2Ug
bV9kcmF3VGltZXJIYW5kbGVyOworICAgIEdDb25kIG1fZHJhd0NvbmRpdGlvbjsKKyAgICBHTXV0
ZXggbV9kcmF3TXV0ZXg7CisjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIG1fcmVwYWludEhhbmRs
ZXI7CiAgICAgdW5zaWduZWQgbG9uZyBtX3ZvbHVtZVNpZ25hbEhhbmRsZXI7CiAgICAgdW5zaWdu
ZWQgbG9uZyBtX211dGVTaWduYWxIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5kZXggOTBkNGU2NC4u
NWE1ODRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC00OCw3ICs0OCw4IEBAIGNsYXNzIEJpdG1hcFRl
eHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxCaXRtYXBUZXh0dXJlPiB7CiBwdWJsaWM6CiAgICAg
ZW51bSBGbGFnIHsKICAgICAgICAgTm9GbGFnID0gMCwKLSAgICAgICAgU3VwcG9ydHNBbHBoYSA9
IDB4MDEKKyAgICAgICAgU3VwcG9ydHNBbHBoYSA9IDB4MDEsCisgICAgICAgIFdyYXBwZWQgPSAw
eDAyCiAgICAgfTsKIAogICAgIGVudW0gVXBkYXRlQ29udGVudHNGbGFnIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKaW5kZXggMTE1NGY0ZS4uNTJjOTQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAK
QEAgLTQyLDYgKzQyLDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2VuZGlm
CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorI2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQor
I2luY2x1ZGUgPGdzdC9nbC9nc3RnbG1lbW9yeS5oPgorI3VuZGVmIEdTVF9VU0VfVU5TVEFCTEVf
QVBJCisjZW5kaWYKKwogI2lmICFVU0UoVEVYTUFQX09QRU5HTF9FU18yKQogLy8gRklYTUU6IE1v
dmUgdG8gRXh0ZW5zaW9uczNELmguCiAjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84X1JF
ViAweDgzNjcKQEAgLTUxNiw2ICs1MjIsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdU
ZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYKICAg
ICBjb25zdCBCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJp
dG1hcFRleHR1cmVHTCY+KHRleHR1cmUpOwogICAgIFRlbXBvcmFyeUNoYW5nZTxjb25zdCBCaXRt
YXBUZXh0dXJlR0w6OkZpbHRlckluZm8qPiBmaWx0ZXJJbmZvKGRhdGEoKS5maWx0ZXJJbmZvLCB0
ZXh0dXJlR0wuZmlsdGVySW5mbygpKTsKIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgaWYg
KHRleHR1cmVHTC5oYXNHc3RTYW1wbGUoKSkgeworICAgICAgICB0ZXh0dXJlR0wuZHJhd0dzdFNh
bXBsZSh0aGlzLCB0ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVy
ZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBleHBvc2VkRWRnZXMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBkcmF3VGV4dHVyZSh0ZXh0dXJl
R0wuaWQoKSwgdGV4dHVyZUdMLmlzT3BhcXVlKCkgPyAwIDogU2hvdWxkQmxlbmQsIHRleHR1cmVH
TC5zaXplKCksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0K
IApAQCAtNjg4LDYgKzcwMSw5IEBAIEJpdG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKFRl
eHR1cmVNYXBwZXJHTCogdGV4dHVyZU1hcHBlcikKICAgICAsIG1fZGVwdGhCdWZmZXJPYmplY3Qo
MCkKICAgICAsIG1fc2hvdWxkQ2xlYXIodHJ1ZSkKICAgICAsIG1fY29udGV4dDNEKHRleHR1cmVN
YXBwZXItPmdyYXBoaWNzQ29udGV4dDNEKCkpCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICAs
IG1fc2FtcGxlKG51bGxwdHIpCisjZW5kaWYKIHsKIH0KIApAQCAtNzM2LDYgKzc1Miw5IEBAIHN0
YXRpYyBib29sIGRyaXZlclN1cHBvcnRzU3ViSW1hZ2UoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQpCiAKIHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCiB7CisgICAgaWYgKGZsYWdz
KCkgJiBCaXRtYXBUZXh0dXJlOjpXcmFwcGVkKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAo
IW1faWQpCiAgICAgICAgIG1faWQgPSBtX2NvbnRleHQzRC0+Y3JlYXRlVGV4dHVyZSgpOwogCkBA
IC04OTgsNiArOTE3LDQxIEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVy
ZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hCiAgICAgcmV0dXJuIHJl
c3VsdFN1cmZhY2U7CiB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQordm9pZCBCaXRtYXBUZXh0
dXJlR0w6OndyYXBHc3RTYW1wbGUoR3N0U2FtcGxlKiBzYW1wbGUpCit7CisgICAgbV9zYW1wbGUg
PSBzYW1wbGU7Cit9CisKK3ZvaWQgQml0bWFwVGV4dHVyZUdMOjpkcmF3R3N0U2FtcGxlKFRleHR1
cmVNYXBwZXJHTCogdGV4dHVyZU1hcHBlciwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9z
ZWRFZGdlcykgY29uc3QKK3sKKyAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1
ZmZlcihtX3NhbXBsZSk7CisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMo
bV9zYW1wbGUpOworICAgIGlmICghY2FwcykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0Vmlk
ZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBnc3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOwor
ICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBHc3RWaWRlb0ZyYW1lIHZpZGVvRnJhbWU7CisgICAgaWYgKCFn
c3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIHN0YXRp
Y19jYXN0PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIGd1aW50IHRleHR1cmVJRCA9ICooZ3VpbnQgKikgdmlkZW9GcmFtZS5k
YXRhWzBdOworCisgICAgaWYgKEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSkK
KyAgICAgICAgZmxhZ3MgfD0gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYTsKKworICAgIHRl
eHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKHRleHR1cmVJRCwgZmxhZ3MsIHRleHR1cmVTaXplLCB0
YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7CisgICAg
Z3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKK30KKyNlbmRpZgorCiBzdGF0aWMg
aW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNyZWF0ZVByb2plY3Rpb25NYXRyaXgoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgYm9vbCBtaXJyb3JlZCkKIHsKICAgICBjb25zdCBmbG9hdCBuZWFyVmFs
dWUgPSA5OTk5OTk5OwpAQCAtOTkwLDYgKzEwNDQsOCBAQCBCaXRtYXBUZXh0dXJlR0w6On5CaXRt
YXBUZXh0dXJlR0woKQogCiBib29sIEJpdG1hcFRleHR1cmVHTDo6aXNWYWxpZCgpIGNvbnN0CiB7
CisgICAgaWYgKGZsYWdzKCkgJiBCaXRtYXBUZXh0dXJlOjpXcmFwcGVkKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICByZXR1cm4gbV9pZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDQy
NDA3ZmIuLmFhMWFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTI5LDYgKzI5LDggQEAKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCIKIAordHlwZWRlZiBzdHJ1Y3QgX0dzdFNhbXBsZSBHc3RTYW1wbGU7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IFRleHR1cmVNYXBwZXJHTERhdGE7CkBAIC0xNjcsNiArMTY5LDEy
IEBAIHB1YmxpYzoKICAgICB9OwogICAgIGNvbnN0IEZpbHRlckluZm8qIGZpbHRlckluZm8oKSBj
b25zdCB7IHJldHVybiAmbV9maWx0ZXJJbmZvOyB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQor
ICAgIHZvaWQgd3JhcEdzdFNhbXBsZShHc3RTYW1wbGUqKTsKKyAgICBib29sIGhhc0dzdFNhbXBs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlOyB9CisgICAgdm9pZCBkcmF3R3N0U2FtcGxlKFRl
eHR1cmVNYXBwZXJHTCosIEZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIGNvbnN0Owor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25z
dCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zm
c2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNCwgUGxhdGZv
cm0zRE9iamVjdCBnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKIApAQCAtMTg3
LDcgKzE5NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVGYm9JZk5lZWRlZCgpOwogCiAg
ICAgRmlsdGVySW5mbyBtX2ZpbHRlckluZm87Ci0KKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAg
IG11dGFibGUgR3N0U2FtcGxlKiBtX3NhbXBsZTsKKyNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBU
ZXh0dXJlTWFwcGVyR0w7CiB9OwogCi0tIAoyLjEuNA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249319</attachid>
            <date>2015-03-24 00:59:14 -0700</date>
            <delta_ts>2015-03-24 06:57:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>9619</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmNmNhODdiMTBlNzk1MzQzYTZhYjkyZmYyNWIyYTIyMmMyYjgzMjIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgpE
YXRlOiBUdWUsIDE3IE1hciAyMDE1IDEzOjM2OjI4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gcGF0
Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAzMSArKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCAgfCA5MyArKysrKysrKysrKysrKysrKysrKystCiAuLi4vZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCAgICB8ICA5ICsrLQogMyBmaWxlcyBjaGFu
Z2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Uz
NmJkMy4uYjg3N2NlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTAzLTI0ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cGhpbG5AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBHc3RHTCBzdXBwb3J0IGluIHRoZSB2aWRlbyBzaW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1NjIKKworICAgICAgICBVc2UgR1N0cmVhbWVy
J3MgZ2xpbWFnZXNpbmsgZm9yIHZpZGVvIHJlbmRlcmluZyBpbnN0ZWFkIG9mIG91cgorICAgICAg
ICBjdXN0b20gdmlkZW8gc2luayBpZiBhIHJlY2VudC1lbm91Z2ggdmVyc2lvbiBvZiBHc3RHTCBp
cyBmb3VuZAorICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkLiBXaGVuIGdsaW1hZ2VzaW5rIGlzIHVz
ZWQgaXQgcGFzc2VzIGEgdGV4dHVyZSB0bworICAgICAgICB0aGUgbWVkaWEgcGxheWVyIHdoaWNo
IHRoZW4gd3JhcHMgaXQgaW5zaWRlIGEgVGV4dHVyZU1hcHBlcgorICAgICAgICB0ZXh0dXJlIGxh
dGVyIHVzZWQgZm9yIGFjdHVhbCByZW5kZXJpbmcuCisKKyAgICAgICAgVXNpbmcgdGhpcyBuZXcg
Y29kZSBwYXRoIHdpbGwgYWxsb3cgdXMgdG8gcmVtb3ZlIG91ciBjdXN0b20gc2luaworICAgICAg
ICBlbnRpcmVseSBpbiB0aGUgbG9uZyB0ZXJtLgorCisgICAgICAgIE5vIG5ldyB0ZXN0LCBleGlz
dGluZyBtZWRpYSB0ZXN0cyBjb3ZlciB2aWRlbyByZW5kZXJpbmcgYWxyZWFkeS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVyUHJpdmF0ZURyYXdDYWxs
YmFjayk6IGNsaWVudC1kcmF3IHNpZ25hbCBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUpOiBCZXR0ZXIKKyAg
ICAgICAgY2hlY2sgZm9yIHNhbXBsZSB2YWxpZGl0eS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJEcmF3
KTogVHJpZ2dlciBhCisgICAgICAgIHJlcGFpbnQgYW5kIHdhaXQgaXRzIGNvbXBsZXRpb24uCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludFRv
VGV4dHVyZU1hcHBlcik6CisgICAgICAgIEV4dHJhY3QgdGV4dHVyZSBJRCBhbmQgdmlkZW8gZGlt
ZW5zaW9ucyBmcm9tIHRoZSBzYW1wbGUgYW5kIGRvIGFjdHVhbCBwYWludC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2luayk6
IFVzZQorICAgICAgICBnbGltYWdlc2luayBpZiBHc3RHTCBpcyBhdmFpbGFibGUuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuaDoKKwogMjAxNS0wMy0yMyAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53cz4KIAogICAg
ICAgICBSZWZhY3RvciBJbWFnZUxvYWRlcidzIHNldHRpbmcgb2YgQ2FjaGVkSW1hZ2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRl
eCAxMzQyYThlLi42NDY3MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC00NCw2ICs0NCwxMiBAQAogI2luY2x1ZGUgPGdz
dC9hdWRpby9zdHJlYW12b2x1bWUuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9tZXRh
Lmg+CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorI2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQ
SQorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbG1lbW9yeS5oPgorI3VuZGVmIEdTVF9VU0VfVU5TVEFC
TEVfQVBJCisjZW5kaWYKKwogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApICYmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNlbmRpZgpA
QCAtODQsNiArOTAsMTQgQEAgc3RhdGljIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlUmVwYWludENh
bGxiYWNrKFdlYktpdFZpZGVvU2luayosIEdzdFNhbXBsZSogc2FtcGwKICAgICBwbGF5ZXJQcml2
YXRlLT50cmlnZ2VyUmVwYWludChzYW1wbGUpOwogfQogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkK
K3N0YXRpYyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVEcmF3Q2FsbGJhY2soR3N0RWxlbWVu
dCosIEdzdENvbnRleHQqLCBHc3RTYW1wbGUqIHNhbXBsZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZSogcGxheWVyUHJpdmF0ZSkKK3sKKyAgICBwbGF5ZXJQcml2YXRlLT50cmlnZ2Vy
RHJhdyhzYW1wbGUpOworICAgIHJldHVybiBUUlVFOworfQorI2VuZGlmCisKIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVk
aWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fZnBzU2lu
aygwKQpAQCAtOTUsNiArMTA5LDEwIEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqIHBsCiAgICAgLCBt
X211dGVTaWduYWxIYW5kbGVyKDApCiB7CiAgICAgZ19tdXRleF9pbml0KCZtX3NhbXBsZU11dGV4
KTsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGdfY29uZF9pbml0KCZtX2RyYXdDb25kaXRp
b24pOworICAgIGdfbXV0ZXhfaW5pdCgmbV9kcmF3TXV0ZXgpOworI2VuZGlmCiB9CiAKIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlKCkKQEAgLTEyMiw2ICsxNDAsMTEgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoKQogICAgICAgICBtX211dGVTaWdu
YWxIYW5kbGVyID0gMDsKICAgICB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGdfY29u
ZF9jbGVhcigmbV9kcmF3Q29uZGl0aW9uKTsKKyAgICBnX211dGV4X2NsZWFyKCZtX2RyYXdNdXRl
eCk7CisjZW5kaWYKKwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5wbGF0
Zm9ybUxheWVyV2lsbEJlRGVzdHJveWVkKCk7CkBAIC0xMzgsNyArMTYxLDcgQEAgRmxvYXRTaXpl
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIG1fdmlkZW9TaXplOwogCiAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4
PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOwotICAgIGlmICghbV9zYW1wbGUpCisgICAgaWYgKCFHU1Rf
SVNfU0FNUExFKG1fc2FtcGxlKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOwogCiAgICAg
R3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUpOwpAQCAtMjgwLDcg
KzMwMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5n
ZWQoKQogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCiB7CiAg
ICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOwotICAgIGlm
ICghbV9zYW1wbGUpCisgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2Fw
cyhtX3NhbXBsZSk7CkBAIC0zMjUsNiArMzQ4LDM0IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShUZXh0dXJl
CiB9CiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJEcmF3KEdzdFNhbXBsZSogc2FtcGxlKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoR1NUX0lTX1NBTVBMRShzYW1wbGUpKTsKKworICAgIHsKKyAgICAg
ICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgICAg
ICBpZiAobV9zYW1wbGUpCisgICAgICAgICAgICBnc3Rfc2FtcGxlX3VucmVmKG1fc2FtcGxlKTsK
KyAgICAgICAgbV9zYW1wbGUgPSBnc3Rfc2FtcGxlX3JlZihzYW1wbGUpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fZHJhd011dGV4KTsK
KworICAgICAgICBtX2RyYXdUaW1lckhhbmRsZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0
XSB2aWRlbyByZW5kZXIiLCBbdGhpc10geworICAgICAgICAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8
R011dGV4PiBsb2NrKG1fZHJhd011dGV4KTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
ICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgICAgICAgICBpZiAoc3VwcG9ydHNBY2Nl
bGVyYXRlZFJlbmRlcmluZygpICYmIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRl
cmluZ0NhbkJlQWNjZWxlcmF0ZWQobV9wbGF5ZXIpICYmIGNsaWVudCgpKQorICAgICAgICAgICAg
ICAgIGNsaWVudCgpLT5zZXRQbGF0Zm9ybUxheWVyTmVlZHNEaXNwbGF5KCk7CisgICAgICAgICAg
ICBnX2NvbmRfc2lnbmFsKCZtX2RyYXdDb25kaXRpb24pOworI2VuZGlmCisgICAgICAgIH0sIHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoMCksIEdfUFJJT1JJVFlfSElHSCwgbnVsbHB0ciwgZ19t
YWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0KCkpOworICAgICAgICBnX2NvbmRfd2FpdCgm
bV9kcmF3Q29uZGl0aW9uLCAmbV9kcmF3TXV0ZXgpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJSZXBhaW50KEdzdFNhbXBs
ZSogc2FtcGxlKQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoR1NUX0lTX1NBTVBMRShzYW1wbGUp
KTsKQEAgLTM4NSw5ICs0MzYsMzkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXIKICAgICBpZiAo
IW1fcGxheWVyLT52aXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFVTRShHU1RSRUFN
RVJfR0wpCisgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1w
bGUpOworICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlKTsK
KyAgICBpZiAoIWNhcHMpCisgICAgICAgIHJldHVybjsKKworICAgIEdzdFZpZGVvSW5mbyB2aWRl
b0luZm87CisgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKKyAgICBpZiAoIWdz
dF92aWRlb19pbmZvX2Zyb21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgR3N0VmlkZW9GcmFtZSB2aWRlb0ZyYW1lOworICAgIGlmICghZ3N0X3ZpZGVvX2Zy
YW1lX21hcCgmdmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RN
YXBGbGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKQorICAgICAgICByZXR1cm47CisK
KyAgICBndWludCB0ZXh0dXJlSUQgPSAqKGd1aW50ICopIHZpZGVvRnJhbWUuZGF0YVswXTsKKyAg
ICBCaXRtYXBUZXh0dXJlOjpGbGFncyBmbGFncyA9IEJpdG1hcFRleHR1cmU6Ok5vRmxhZzsKKyAg
ICBpZiAoR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pKQorICAgICAgICBmbGFn
cyB8PSBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhOworCisgICAgSW50U2l6ZSBzaXplID0g
SW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9f
SEVJR0hUKCZ2aWRlb0luZm8pKTsKKyAgICBUZXh0dXJlTWFwcGVyR0wqIHRleHR1cmVNYXBwZXJH
TCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7Cisg
ICAgdGV4dHVyZU1hcHBlckdMLT5kcmF3VGV4dHVyZSh0ZXh0dXJlSUQsIGZsYWdzLCBzaXplLCB0
YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOworICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgm
dmlkZW9GcmFtZSk7CisKKyNlbHNlCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUg
PSB1cGRhdGVUZXh0dXJlKHRleHR1cmVNYXBwZXIpOwogICAgIGlmICh0ZXh0dXJlKQogICAgICAg
ICB0ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZS5nZXQoKSwgdGFyZ2V0UmVjdCwg
bWF0cml4LCBvcGFjaXR5KTsKKyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTQxNyw2ICs0OTgsMTQg
QEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlk
ZW9TaW5rKCkKICAgICBBU1NFUlQoaW5pdGlhbGl6ZUdTdHJlYW1lcigpKTsKIAogICAgIEdzdEVs
ZW1lbnQqIHZpZGVvU2luayA9IG51bGxwdHI7CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBt
X3dlYmtpdFZpZGVvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZ2xpbWFnZXNpbmsi
LCBudWxscHRyKTsKKyAgICBpZiAobV93ZWJraXRWaWRlb1NpbmspIHsKKyAgICAgICAgbV9yZXBh
aW50SGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJraXRWaWRlb1NpbmsuZ2V0KCksICJj
bGllbnQtZHJhdyIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlRHJhd0NhbGxiYWNrKSwg
dGhpcyk7CisgICAgICAgIHZpZGVvU2luayA9IG1fd2Via2l0VmlkZW9TaW5rLmdldCgpOworICAg
ICAgICByZXR1cm4gdmlkZW9TaW5rOworICAgIH0KKyNlbmRpZgogICAgIG1fd2Via2l0VmlkZW9T
aW5rID0gd2Via2l0VmlkZW9TaW5rTmV3KCk7CiAKICAgICBtX3JlcGFpbnRIYW5kbGVyID0gZ19z
aWduYWxfY29ubmVjdChtX3dlYmtpdFZpZGVvU2luay5nZXQoKSwgInJlcGFpbnQtcmVxdWVzdGVk
IiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVSZXBhaW50Q2FsbGJhY2spLCB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmlu
ZGV4IDBiYzA1YTguLjY1NjUzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtNDAsNyArNDAsNiBAQCB0eXBlZGVmIHN0cnVjdCBf
R3N0U2FtcGxlIEdzdFNhbXBsZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVsZW1l
bnQ7CiB0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RNZXNzYWdlOwogdHlwZWRlZiBzdHJ1
Y3QgX0dzdFN0cmVhbVZvbHVtZSBHc3RTdHJlYW1Wb2x1bWU7Ci10eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0VmlkZW9TaW5rIFdlYktpdFZpZGVvU2luazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC03Nyw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
OwogICAgIHZvaWQgc2l6ZUNoYW5nZWQoKTsKIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAg
dm9pZCB0cmlnZ2VyRHJhdyhHc3RTYW1wbGUqKTsKKyNlbmRpZgogICAgIHZvaWQgdHJpZ2dlclJl
cGFpbnQoR3N0U2FtcGxlKik7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmKTsKIApAQCAtMTI2LDYgKzEyOCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgR3N0
U2FtcGxlKiBtX3NhbXBsZTsKICAgICBHVGhyZWFkU2FmZU1haW5Mb29wU291cmNlIG1fdm9sdW1l
VGltZXJIYW5kbGVyOwogICAgIEdUaHJlYWRTYWZlTWFpbkxvb3BTb3VyY2UgbV9tdXRlVGltZXJI
YW5kbGVyOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgR1RocmVhZFNhZmVNYWluTG9vcFNv
dXJjZSBtX2RyYXdUaW1lckhhbmRsZXI7CisgICAgR0NvbmQgbV9kcmF3Q29uZGl0aW9uOworICAg
IEdNdXRleCBtX2RyYXdNdXRleDsKKyNlbmRpZgogICAgIHVuc2lnbmVkIGxvbmcgbV9yZXBhaW50
SGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lU2lnbmFsSGFuZGxlcjsKICAgICB1
bnNpZ25lZCBsb25nIG1fbXV0ZVNpZ25hbEhhbmRsZXI7Ci0tIAoyLjEuNA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249326</attachid>
            <date>2015-03-24 06:57:49 -0700</date>
            <delta_ts>2015-03-24 08:09:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>9959</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhZjViNTBiZjUyZGNiODgzMjBjMjMyM2IxNWRlMDJlY2VkYzQzZjI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgpE
YXRlOiBUdWUsIDE3IE1hciAyMDE1IDEzOjM2OjI4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gcGF0
Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAzMyArKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCAgfCA5MCArKysrKysrKysrKysrKysrKysrKy0tCiAuLi4vZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCAgICB8ICA2ICstCiAzIGZpbGVzIGNoYW5n
ZWQsIDEyMSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NTBm
OTk2Li5lMTgwNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMDMtMjQgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJd
IEdzdEdMIHN1cHBvcnQgaW4gdGhlIHZpZGVvIHNpbmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODU2MgorCisgICAgICAgIFVzZSBHU3RyZWFtZXIn
cyBnbGltYWdlc2luayBmb3IgdmlkZW8gcmVuZGVyaW5nIGluc3RlYWQgb2Ygb3VyCisgICAgICAg
IGN1c3RvbSB2aWRlbyBzaW5rIGlmIGEgcmVjZW50LWVub3VnaCB2ZXJzaW9uIG9mIEdzdEdMIGlz
IGZvdW5kCisgICAgICAgIGR1cmluZyB0aGUgYnVpbGQuIFdoZW4gZ2xpbWFnZXNpbmsgaXMgdXNl
ZCBpdCBwYXNzZXMgYSB0ZXh0dXJlIHRvCisgICAgICAgIHRoZSBtZWRpYSBwbGF5ZXIgd2hpY2gg
dGhlbiB3cmFwcyBpdCBpbnNpZGUgYSBUZXh0dXJlTWFwcGVyCisgICAgICAgIHRleHR1cmUgbGF0
ZXIgdXNlZCBmb3IgYWN0dWFsIHJlbmRlcmluZy4KKworICAgICAgICBVc2luZyB0aGlzIG5ldyBj
b2RlIHBhdGggd2lsbCBhbGxvdyB1cyB0byByZW1vdmUgb3VyIGN1c3RvbSBzaW5rCisgICAgICAg
IGVudGlyZWx5IGluIHRoZSBsb25nIHRlcm0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3QsIGV4aXN0aW5nIG1lZGlhIHRlc3RzIGNv
dmVyIHZpZGVvIHJlbmRlcmluZyBhbHJlYWR5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWVkaWFQbGF5ZXJQcml2YXRlRHJhd0NhbGxiYWNrKTogY2xpZW50LWRyYXcg
c2lnbmFsIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6IEJldHRlcgorICAgICAgICBjaGVjayBmb3Igc2Ft
cGxlIHZhbGlkaXR5LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6dXBkYXRlVGV4dHVyZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dlclJlcGFpbnQpOiBUcmlnZ2VyIGEKKyAg
ICAgICAgcmVwYWludCBhbmQgd2FpdCBpdHMgY29tcGxldGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToK
KyAgICAgICAgRXh0cmFjdCB0ZXh0dXJlIElEIGFuZCB2aWRlbyBkaW1lbnNpb25zIGZyb20gdGhl
IHNhbXBsZSBhbmQgZG8gYWN0dWFsIHBhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9TaW5rKTogVXNlCisgICAgICAgIGds
aW1hZ2VzaW5rIGlmIEdzdEdMIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorCiAyMDE1
LTAzLTIzIFlvYXYgV2Vpc3MgIDx5b2F2QHlvYXYud3M+CiAKICAgICAgICAgVXBkYXRlIGVtcHR5
IGltYWdlIGNhbnZhcyB0ZXN0cyBhbmQgZml4IGEgcmVsYXRlZCBidWcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCAxMzQyYThl
Li42OTZiYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCkBAIC00NCw2ICs0NCwxMiBAQAogI2luY2x1ZGUgPGdzdC9hdWRpby9z
dHJlYW12b2x1bWUuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+CiAKKyNp
ZiBVU0UoR1NUUkVBTUVSX0dMKQorI2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQorI2luY2x1
ZGUgPGdzdC9nbC9nc3RnbG1lbW9yeS5oPgorI3VuZGVmIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisj
ZW5kaWYKKwogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApICYmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNlbmRpZgpAQCAtODQsNiAr
OTAsMTQgQEAgc3RhdGljIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlUmVwYWludENhbGxiYWNrKFdl
YktpdFZpZGVvU2luayosIEdzdFNhbXBsZSogc2FtcGwKICAgICBwbGF5ZXJQcml2YXRlLT50cmln
Z2VyUmVwYWludChzYW1wbGUpOwogfQogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKK3N0YXRpYyBn
Ym9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVEcmF3Q2FsbGJhY2soR3N0RWxlbWVudCosIEdzdENv
bnRleHQqLCBHc3RTYW1wbGUqIHNhbXBsZSwgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZSogcGxheWVyUHJpdmF0ZSkKK3sKKyAgICBwbGF5ZXJQcml2YXRlLT50cmlnZ2VyUmVwYWludChz
YW1wbGUpOworICAgIHJldHVybiBUUlVFOworfQorI2VuZGlmCisKIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5
ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fZnBzU2luaygwKQpA
QCAtOTUsNiArMTA5LDEwIEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqIHBsCiAgICAgLCBtX211dGVT
aWduYWxIYW5kbGVyKDApCiB7CiAgICAgZ19tdXRleF9pbml0KCZtX3NhbXBsZU11dGV4KTsKKyNp
ZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGdfY29uZF9pbml0KCZtX2RyYXdDb25kaXRpb24pOwor
ICAgIGdfbXV0ZXhfaW5pdCgmbV9kcmF3TXV0ZXgpOworI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkK
QEAgLTEyMiw2ICsxNDAsMTEgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoKQogICAgICAgICBtX211dGVTaWduYWxIYW5k
bGVyID0gMDsKICAgICB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGdfY29uZF9jbGVh
cigmbV9kcmF3Q29uZGl0aW9uKTsKKyAgICBnX211dGV4X2NsZWFyKCZtX2RyYXdNdXRleCk7Cisj
ZW5kaWYKKwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5wbGF0Zm9ybUxh
eWVyV2lsbEJlRGVzdHJveWVkKCk7CkBAIC0xMzgsNyArMTYxLDcgQEAgRmxvYXRTaXplIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIG1fdmlkZW9TaXplOwogCiAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2Nr
KG1fc2FtcGxlTXV0ZXgpOwotICAgIGlmICghbV9zYW1wbGUpCisgICAgaWYgKCFHU1RfSVNfU0FN
UExFKG1fc2FtcGxlKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOwogCiAgICAgR3N0Q2Fw
cyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUpOwpAQCAtMjgwLDcgKzMwMyw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bXV0ZUNoYW5nZWQoKQog
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
Ojp1cGRhdGVUZXh0dXJlKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCiB7CiAgICAgV1RG
OjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOwotICAgIGlmICghbV9z
YW1wbGUpCisgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3Nh
bXBsZSk7CkBAIC0zMjcsOCArMzUwLDYgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmUKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludChHc3RTYW1w
bGUqIHNhbXBsZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKEdTVF9JU19TQU1QTEUoc2FtcGxl
KSk7Ci0KICAgICB7CiAgICAgICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3Nh
bXBsZU11dGV4KTsKICAgICAgICAgaWYgKG1fc2FtcGxlKQpAQCAtMzM2LDggKzM1NywyMyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJSZXBhaW50KEdzdFNh
bXBsZSogc2FtcGxlKQogICAgICAgICBtX3NhbXBsZSA9IGdzdF9zYW1wbGVfcmVmKHNhbXBsZSk7
CiAgICAgfQogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICB7CisgICAgICAgIFdURjo6R011
dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX2RyYXdNdXRleCk7CisKKyAgICAgICAgbV9kcmF3VGlt
ZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSB2aWRlbyByZW5kZXIiLCBbdGhpc10geworICAg
ICAgICAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fZHJhd011dGV4KTsKICNp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0g
ICAgaWYgKHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAmJiBtX3BsYXllci0+Y2xpZW50
KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSAmJiBjbGll
bnQoKSkgeworICAgICAgICAgICAgaWYgKHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAm
JiBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVk
KG1fcGxheWVyKSAmJiBjbGllbnQoKSkKKyAgICAgICAgICAgICAgICBjbGllbnQoKS0+c2V0UGxh
dGZvcm1MYXllck5lZWRzRGlzcGxheSgpOworICAgICAgICAgICAgZ19jb25kX3NpZ25hbCgmbV9k
cmF3Q29uZGl0aW9uKTsKKyNlbmRpZgorICAgICAgICB9KTsKKyAgICAgICAgZ19jb25kX3dhaXQo
Jm1fZHJhd0NvbmRpdGlvbiwgJm1fZHJhd011dGV4KTsKKyAgICB9CisKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBpZiAoc3Vw
cG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fcGxheWVyLT5jbGllbnQoKSAmJiBtX3Bs
YXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKG1fcGxh
eWVyKSAmJiBjbGllbnQoKSkgewogICAgICAgICBjbGllbnQoKS0+c2V0UGxhdGZvcm1MYXllck5l
ZWRzRGlzcGxheSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzg1LDkgKzQyMSwzOSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cgogICAgIGlmICghbV9wbGF5ZXItPnZpc2libGUoKSkK
ICAgICAgICAgcmV0dXJuOwogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBpZiAoIUdTVF9J
U19TQU1QTEUobV9zYW1wbGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBHc3RDYXBzKiBjYXBz
ID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZSk7CisgICAgaWYgKCFjYXBzKQorICAgICAg
ICByZXR1cm47CisKKyAgICBHc3RWaWRlb0luZm8gdmlkZW9JbmZvOworICAgIGdzdF92aWRlb19p
bmZvX2luaXQoJnZpZGVvSW5mbyk7CisgICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMo
JnZpZGVvSW5mbywgY2FwcykpCisgICAgICAgIHJldHVybjsKKworICAgIEdzdEJ1ZmZlciogYnVm
ZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlKTsKKyAgICBHc3RWaWRlb0ZyYW1l
IHZpZGVvRnJhbWU7CisgICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRlb0ZyYW1lLCAm
dmlkZW9JbmZvLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQg
fCBHU1RfTUFQX0dMKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHRleHR1cmVJ
RCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFtZS5kYXRhWzBdKTsKKyAg
ICBCaXRtYXBUZXh0dXJlOjpGbGFncyBmbGFncyA9IEJpdG1hcFRleHR1cmU6Ok5vRmxhZzsKKyAg
ICBpZiAoR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pKQorICAgICAgICBmbGFn
cyB8PSBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhOworCisgICAgSW50U2l6ZSBzaXplID0g
SW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9f
SEVJR0hUKCZ2aWRlb0luZm8pKTsKKyAgICBUZXh0dXJlTWFwcGVyR0wqIHRleHR1cmVNYXBwZXJH
TCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7Cisg
ICAgdGV4dHVyZU1hcHBlckdMLT5kcmF3VGV4dHVyZSh0ZXh0dXJlSUQsIGZsYWdzLCBzaXplLCB0
YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOworICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgm
dmlkZW9GcmFtZSk7CisKKyNlbHNlCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUg
PSB1cGRhdGVUZXh0dXJlKHRleHR1cmVNYXBwZXIpOwogICAgIGlmICh0ZXh0dXJlKQogICAgICAg
ICB0ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZS5nZXQoKSwgdGFyZ2V0UmVjdCwg
bWF0cml4LCBvcGFjaXR5KTsKKyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTQxNyw5ICs0ODMsMTkg
QEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlk
ZW9TaW5rKCkKICAgICBBU1NFUlQoaW5pdGlhbGl6ZUdTdHJlYW1lcigpKTsKIAogICAgIEdzdEVs
ZW1lbnQqIHZpZGVvU2luayA9IG51bGxwdHI7Ci0gICAgbV93ZWJraXRWaWRlb1NpbmsgPSB3ZWJr
aXRWaWRlb1NpbmtOZXcoKTsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIG1fd2Via2l0Vmlk
ZW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJnbGltYWdlc2luayIsIG51bGxwdHIp
OworICAgIGlmIChtX3dlYmtpdFZpZGVvU2luaykgeworICAgICAgICBtX3JlcGFpbnRIYW5kbGVy
ID0gZ19zaWduYWxfY29ubmVjdChtX3dlYmtpdFZpZGVvU2luay5nZXQoKSwgImNsaWVudC1kcmF3
IiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVEcmF3Q2FsbGJhY2spLCB0aGlzKTsKKyAg
ICAgICAgdmlkZW9TaW5rID0gbV93ZWJraXRWaWRlb1NpbmsuZ2V0KCk7CisgICAgfQorI2VuZGlm
CiAKLSAgICBtX3JlcGFpbnRIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX3dlYmtpdFZpZGVv
U2luay5nZXQoKSwgInJlcGFpbnQtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclBy
aXZhdGVSZXBhaW50Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBpZiAoIW1fd2Via2l0VmlkZW9TaW5r
KSB7CisgICAgICAgIG1fd2Via2l0VmlkZW9TaW5rID0gd2Via2l0VmlkZW9TaW5rTmV3KCk7CisK
KyAgICAgICAgbV9yZXBhaW50SGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJraXRWaWRl
b1NpbmsuZ2V0KCksICJyZXBhaW50LXJlcXVlc3RlZCIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQ
cml2YXRlUmVwYWludENhbGxiYWNrKSwgdGhpcyk7CisgICAgfQogCiAgICAgbV9mcHNTaW5rID0g
Z3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmcHNkaXNwbGF5c2luayIsICJzaW5rIik7CiAgICAg
aWYgKG1fZnBzU2luaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmgKaW5kZXggMGJjMDVhOC4uMDlhMGU1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC00MCw3ICs0MCw2IEBA
IHR5cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2FtcGxlOwogdHlwZWRlZiBzdHJ1Y3QgX0dz
dEVsZW1lbnQgR3N0RWxlbWVudDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RNZXNzYWdlIEdzdE1lc3Nh
Z2U7CiB0eXBlZGVmIHN0cnVjdCBfR3N0U3RyZWFtVm9sdW1lIEdzdFN0cmVhbVZvbHVtZTsKLXR5
cGVkZWYgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmsgV2ViS2l0VmlkZW9TaW5rOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTEyNiw2ICsxMjUsMTEgQEAgcHJvdGVjdGVkOgogICAgIEdzdFNh
bXBsZSogbV9zYW1wbGU7CiAgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX3ZvbHVtZVRp
bWVySGFuZGxlcjsKICAgICBHVGhyZWFkU2FmZU1haW5Mb29wU291cmNlIG1fbXV0ZVRpbWVySGFu
ZGxlcjsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIEdUaHJlYWRTYWZlTWFpbkxvb3BTb3Vy
Y2UgbV9kcmF3VGltZXJIYW5kbGVyOworICAgIEdDb25kIG1fZHJhd0NvbmRpdGlvbjsKKyAgICBH
TXV0ZXggbV9kcmF3TXV0ZXg7CisjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIG1fcmVwYWludEhh
bmRsZXI7CiAgICAgdW5zaWduZWQgbG9uZyBtX3ZvbHVtZVNpZ25hbEhhbmRsZXI7CiAgICAgdW5z
aWduZWQgbG9uZyBtX211dGVTaWduYWxIYW5kbGVyOwotLSAKMi4xLjQ=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249327</attachid>
            <date>2015-03-24 08:09:49 -0700</date>
            <delta_ts>2015-03-30 08:11:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>13127</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmNmZiZDBiYjQ5ODkzZWRiNGNiMjM0YTAwNjFjMzE2YTFmYTZiMDQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgpE
YXRlOiBUdWUsIDE3IE1hciAyMDE1IDEzOjM2OjI4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gcGF0
Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgMzMgKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwICAgICAgfCAgIDYgKy0KIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgIHwgMTAwICsrKysrKysrKysrKysrKysrKy0tLQogLi4uL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggICAgfCAgIDggKy0KIDQgZmlsZXMg
Y2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA3NTBmOTk2Li5lMTgwNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMDMt
MjQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwaGlsbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3Ry
ZWFtZXJdIEdzdEdMIHN1cHBvcnQgaW4gdGhlIHZpZGVvIHNpbmsKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODU2MgorCisgICAgICAgIFVzZSBHU3Ry
ZWFtZXIncyBnbGltYWdlc2luayBmb3IgdmlkZW8gcmVuZGVyaW5nIGluc3RlYWQgb2Ygb3VyCisg
ICAgICAgIGN1c3RvbSB2aWRlbyBzaW5rIGlmIGEgcmVjZW50LWVub3VnaCB2ZXJzaW9uIG9mIEdz
dEdMIGlzIGZvdW5kCisgICAgICAgIGR1cmluZyB0aGUgYnVpbGQuIFdoZW4gZ2xpbWFnZXNpbmsg
aXMgdXNlZCBpdCBwYXNzZXMgYSB0ZXh0dXJlIHRvCisgICAgICAgIHRoZSBtZWRpYSBwbGF5ZXIg
d2hpY2ggdGhlbiB3cmFwcyBpdCBpbnNpZGUgYSBUZXh0dXJlTWFwcGVyCisgICAgICAgIHRleHR1
cmUgbGF0ZXIgdXNlZCBmb3IgYWN0dWFsIHJlbmRlcmluZy4KKworICAgICAgICBVc2luZyB0aGlz
IG5ldyBjb2RlIHBhdGggd2lsbCBhbGxvdyB1cyB0byByZW1vdmUgb3VyIGN1c3RvbSBzaW5rCisg
ICAgICAgIGVudGlyZWx5IGluIHRoZSBsb25nIHRlcm0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3QsIGV4aXN0aW5nIG1lZGlhIHRl
c3RzIGNvdmVyIHZpZGVvIHJlbmRlcmluZyBhbHJlYWR5LgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bWVkaWFQbGF5ZXJQcml2YXRlRHJhd0NhbGxiYWNrKTogY2xpZW50
LWRyYXcgc2lnbmFsIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp+TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6IEJldHRlcgorICAgICAgICBjaGVjayBm
b3Igc2FtcGxlIHZhbGlkaXR5LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dlclJlcGFpbnQpOiBUcmlnZ2Vy
IGEKKyAgICAgICAgcmVwYWludCBhbmQgd2FpdCBpdHMgY29tcGxldGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgRXh0cmFjdCB0ZXh0dXJlIElEIGFuZCB2aWRlbyBkaW1lbnNpb25zIGZy
b20gdGhlIHNhbXBsZSBhbmQgZG8gYWN0dWFsIHBhaW50LgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9TaW5rKTogVXNlCisgICAg
ICAgIGdsaW1hZ2VzaW5rIGlmIEdzdEdMIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgor
CiAyMDE1LTAzLTIzIFlvYXYgV2Vpc3MgIDx5b2F2QHlvYXYud3M+CiAKICAgICAgICAgVXBkYXRl
IGVtcHR5IGltYWdlIGNhbnZhcyB0ZXN0cyBhbmQgZml4IGEgcmVsYXRlZCBidWcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMjVmZmQwOC4u
NjIwZWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTI5NSw4ICsyOTUsOCBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKQogICAgICAgICBtX3BsYXlCaW4uY2xlYXIoKTsK
ICAgICB9CiAKLSAgICBpZiAobV93ZWJraXRWaWRlb1NpbmspIHsKLSAgICAgICAgR1JlZlB0cjxH
c3RQYWQ+IHZpZGVvU2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3Bh
ZChtX3dlYmtpdFZpZGVvU2luay5nZXQoKSwgInNpbmsiKSk7CisgICAgaWYgKG1fdmlkZW9TaW5r
KSB7CisgICAgICAgIEdSZWZQdHI8R3N0UGFkPiB2aWRlb1NpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0
X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQobV92aWRlb1NpbmsuZ2V0KCksICJzaW5rIikpOwogICAg
ICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmModmlkZW9TaW5rUGFkLmdl
dCgpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZWRpYVBsYXllclByaXZhdGVWaWRlb1Np
bmtDYXBzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtMjA2Myw3ICsyMDYz
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4o
KQogICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbi5nZXQoKSwgImF1ZGlvLWZpbHRl
ciIsIHNjYWxlLCBudWxscHRyKTsKICAgICB9CiAKLSAgICBHUmVmUHRyPEdzdFBhZD4gdmlkZW9T
aW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKG1fd2Via2l0Vmlk
ZW9TaW5rLmdldCgpLCAic2luayIpKTsKKyAgICBHUmVmUHRyPEdzdFBhZD4gdmlkZW9TaW5rUGFk
ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKG1fdmlkZW9TaW5rLmdldCgp
LCAic2luayIpKTsKICAgICBpZiAodmlkZW9TaW5rUGFkKQogICAgICAgICBnX3NpZ25hbF9jb25u
ZWN0KHZpZGVvU2lua1BhZC5nZXQoKSwgIm5vdGlmeTo6Y2FwcyIsIEdfQ0FMTEJBQ0sobWVkaWFQ
bGF5ZXJQcml2YXRlVmlkZW9TaW5rQ2Fwc0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmlu
ZGV4IDEzNDJhOGUuLjg0YjljNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTQ0LDYgKzQ0LDEyIEBACiAjaW5jbHVkZSA8
Z3N0L2F1ZGlvL3N0cmVhbXZvbHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21l
dGEuaD4KIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisjZGVmaW5lIEdTVF9VU0VfVU5TVEFCTEVf
QVBJCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsbWVtb3J5Lmg+CisjdW5kZWYgR1NUX1VTRV9VTlNU
QUJMRV9BUEkKKyNlbmRpZgorCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMSwgMCkgJiYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogI2VuZGlm
CkBAIC04NCw2ICs5MCwxNCBAQCBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVSZXBhaW50
Q2FsbGJhY2soV2ViS2l0VmlkZW9TaW5rKiwgR3N0U2FtcGxlKiBzYW1wbAogICAgIHBsYXllclBy
aXZhdGUtPnRyaWdnZXJSZXBhaW50KHNhbXBsZSk7CiB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dM
KQorc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZURyYXdDYWxsYmFjayhHc3RFbGVt
ZW50KiwgR3N0Q29udGV4dCosIEdzdFNhbXBsZSogc2FtcGxlLCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlKiBwbGF5ZXJQcml2YXRlKQoreworICAgIHBsYXllclByaXZhdGUtPnRyaWdn
ZXJSZXBhaW50KHNhbXBsZSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisjZW5kaWYKKwogTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZShNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9m
cHNTaW5rKDApCkBAIC05NSwxMiArMTA5LDE2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqIHBsCiAg
ICAgLCBtX211dGVTaWduYWxIYW5kbGVyKDApCiB7CiAgICAgZ19tdXRleF9pbml0KCZtX3NhbXBs
ZU11dGV4KTsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGdfY29uZF9pbml0KCZtX2RyYXdD
b25kaXRpb24pOworICAgIGdfbXV0ZXhfaW5pdCgmbV9kcmF3TXV0ZXgpOworI2VuZGlmCiB9CiAK
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlKCkKIHsKICAgICBpZiAobV9yZXBhaW50SGFuZGxlcikgewotICAgICAgICBnX3Np
Z25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93ZWJraXRWaWRlb1NpbmsuZ2V0KCksIG1fcmVwYWlu
dEhhbmRsZXIpOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV92aWRlb1Np
bmsuZ2V0KCksIG1fcmVwYWludEhhbmRsZXIpOwogICAgICAgICBtX3JlcGFpbnRIYW5kbGVyID0g
MDsKICAgICB9CiAKQEAgLTEyMiw2ICsxNDAsMTEgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoKQogICAgICAgICBtX211
dGVTaWduYWxIYW5kbGVyID0gMDsKICAgICB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAg
IGdfY29uZF9jbGVhcigmbV9kcmF3Q29uZGl0aW9uKTsKKyAgICBnX211dGV4X2NsZWFyKCZtX2Ry
YXdNdXRleCk7CisjZW5kaWYKKwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgp
LT5wbGF0Zm9ybUxheWVyV2lsbEJlRGVzdHJveWVkKCk7CkBAIC0xMzgsNyArMTYxLDcgQEAgRmxv
YXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIG1fdmlkZW9TaXplOwogCiAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8
R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOwotICAgIGlmICghbV9zYW1wbGUpCisgICAgaWYg
KCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOwog
CiAgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUpOwpAQCAt
MjgwLDcgKzMwMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bXV0
ZUNoYW5nZWQoKQogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIp
CiB7CiAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOwot
ICAgIGlmICghbV9zYW1wbGUpCisgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9n
ZXRfY2FwcyhtX3NhbXBsZSk7CkBAIC0zMjcsOCArMzUwLDYgQEAgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRl
eHR1cmUKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVw
YWludChHc3RTYW1wbGUqIHNhbXBsZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKEdTVF9JU19T
QU1QTEUoc2FtcGxlKSk7Ci0KICAgICB7CiAgICAgICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRl
eD4gbG9jayhtX3NhbXBsZU11dGV4KTsKICAgICAgICAgaWYgKG1fc2FtcGxlKQpAQCAtMzM2LDgg
KzM1NywyNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJS
ZXBhaW50KEdzdFNhbXBsZSogc2FtcGxlKQogICAgICAgICBtX3NhbXBsZSA9IGdzdF9zYW1wbGVf
cmVmKHNhbXBsZSk7CiAgICAgfQogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICB7CisgICAg
ICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX2RyYXdNdXRleCk7CisKKyAgICAg
ICAgbV9kcmF3VGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSB2aWRlbyByZW5kZXIiLCBb
dGhpc10geworICAgICAgICAgICAgLy8gUmVuZGVyaW5nIHNob3VsZCBiZSBkb25lIGZyb20gdGhl
IG1haW4gdGhyZWFkCisgICAgICAgICAgICAvLyBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgdGhlIEdM
IEFQSXMgd2VyZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgICAgICAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9kcmF3TXV0
ZXgpOwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKLSAgICBpZiAoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fcGxheWVy
LT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQobV9wbGF5ZXIp
ICYmIGNsaWVudCgpKSB7CisgICAgICAgICAgICBpZiAoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRl
cmluZygpICYmIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNj
ZWxlcmF0ZWQobV9wbGF5ZXIpICYmIGNsaWVudCgpKQorICAgICAgICAgICAgICAgIGNsaWVudCgp
LT5zZXRQbGF0Zm9ybUxheWVyTmVlZHNEaXNwbGF5KCk7CisgICAgICAgICAgICBnX2NvbmRfc2ln
bmFsKCZtX2RyYXdDb25kaXRpb24pOworI2VuZGlmCisgICAgICAgIH0pOworICAgICAgICBnX2Nv
bmRfd2FpdCgmbV9kcmF3Q29uZGl0aW9uLCAmbV9kcmF3TXV0ZXgpOworICAgIH0KKworI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAg
IGlmIChzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgJiYgbV9wbGF5ZXItPmNsaWVudCgp
ICYmIG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNjZWxlcmF0
ZWQobV9wbGF5ZXIpICYmIGNsaWVudCgpKSB7CiAgICAgICAgIGNsaWVudCgpLT5zZXRQbGF0Zm9y
bUxheWVyTmVlZHNEaXNwbGF5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zODUsOSAr
NDI0LDM5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyCiAgICAgaWYgKCFtX3BsYXllci0+dmlz
aWJsZSgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGlm
ICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIEdzdENh
cHMqIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlKTsKKyAgICBpZiAoIWNhcHMp
CisgICAgICAgIHJldHVybjsKKworICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgZ3N0
X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKKyAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zy
b21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0QnVm
ZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1wbGUpOworICAgIEdzdFZp
ZGVvRnJhbWUgdmlkZW9GcmFtZTsKKyAgICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAoJnZpZGVv
RnJhbWUsICZ2aWRlb0luZm8sIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R3N0TWFwRmxhZ3M+KEdTVF9N
QVBfUkVBRCB8IEdTVF9NQVBfR0wpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQg
dGV4dHVyZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPih2aWRlb0ZyYW1lLmRhdGFb
MF0pOworICAgIEJpdG1hcFRleHR1cmU6OkZsYWdzIGZsYWdzID0gQml0bWFwVGV4dHVyZTo6Tm9G
bGFnOworICAgIGlmIChHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykpCisgICAg
ICAgIGZsYWdzIHw9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGE7CisKKyAgICBJbnRTaXpl
IHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklE
RU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOworICAgIFRleHR1cmVNYXBwZXJHTCogdGV4dHVy
ZU1hcHBlckdMID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFw
cGVyKTsKKyAgICB0ZXh0dXJlTWFwcGVyR0wtPmRyYXdUZXh0dXJlKHRleHR1cmVJRCwgZmxhZ3Ms
IHNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CisgICAgZ3N0X3ZpZGVvX2ZyYW1l
X3VubWFwKCZ2aWRlb0ZyYW1lKTsKKworI2Vsc2UKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
dGV4dHVyZSA9IHVwZGF0ZVRleHR1cmUodGV4dHVyZU1hcHBlcik7CiAgICAgaWYgKHRleHR1cmUp
CiAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlLmdldCgpLCB0YXJn
ZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOworI2VuZGlmCiB9CiAjZW5kaWYKIApAQCAtNDE3LDkg
KzQ4NiwxOCBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpj
cmVhdGVWaWRlb1NpbmsoKQogICAgIEFTU0VSVChpbml0aWFsaXplR1N0cmVhbWVyKCkpOwogCiAg
ICAgR3N0RWxlbWVudCogdmlkZW9TaW5rID0gbnVsbHB0cjsKLSAgICBtX3dlYmtpdFZpZGVvU2lu
ayA9IHdlYmtpdFZpZGVvU2lua05ldygpOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgbV92
aWRlb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImdsaW1hZ2VzaW5rIiwgbnVsbHB0
cik7CisgICAgaWYgKG1fdmlkZW9TaW5rKSB7CisgICAgICAgIG1fcmVwYWludEhhbmRsZXIgPSBn
X3NpZ25hbF9jb25uZWN0KG1fdmlkZW9TaW5rLmdldCgpLCAiY2xpZW50LWRyYXciLCBHX0NBTExC
QUNLKG1lZGlhUGxheWVyUHJpdmF0ZURyYXdDYWxsYmFjayksIHRoaXMpOworICAgICAgICB2aWRl
b1NpbmsgPSBtX3ZpZGVvU2luay5nZXQoKTsKKyAgICB9CisjZW5kaWYKIAotICAgIG1fcmVwYWlu
dEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2Via2l0VmlkZW9TaW5rLmdldCgpLCAicmVw
YWludC1yZXF1ZXN0ZWQiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxs
YmFjayksIHRoaXMpOworICAgIGlmICghbV92aWRlb1NpbmspIHsKKyAgICAgICAgbV92aWRlb1Np
bmsgPSB3ZWJraXRWaWRlb1NpbmtOZXcoKTsKKyAgICAgICAgbV9yZXBhaW50SGFuZGxlciA9IGdf
c2lnbmFsX2Nvbm5lY3QobV92aWRlb1NpbmsuZ2V0KCksICJyZXBhaW50LXJlcXVlc3RlZCIsIEdf
Q0FMTEJBQ0sobWVkaWFQbGF5ZXJQcml2YXRlUmVwYWludENhbGxiYWNrKSwgdGhpcyk7CisgICAg
fQogCiAgICAgbV9mcHNTaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmcHNkaXNwbGF5
c2luayIsICJzaW5rIik7CiAgICAgaWYgKG1fZnBzU2luaykgewpAQCAtNDM0LDE0ICs1MTIsMTQg
QEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlk
ZW9TaW5rKCkKICNlbmRpZiAvLyBMT0dfRElTQUJMRUQKIAogICAgICAgICBpZiAoZ19vYmplY3Rf
Y2xhc3NfZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1MobV9mcHNTaW5rLmdldCgpKSwg
InZpZGVvLXNpbmsiKSkgewotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luay5nZXQo
KSwgInZpZGVvLXNpbmsiLCBtX3dlYmtpdFZpZGVvU2luay5nZXQoKSwgbnVsbHB0cik7CisgICAg
ICAgICAgICBnX29iamVjdF9zZXQobV9mcHNTaW5rLmdldCgpLCAidmlkZW8tc2luayIsIG1fdmlk
ZW9TaW5rLmdldCgpLCBudWxscHRyKTsKICAgICAgICAgICAgIHZpZGVvU2luayA9IG1fZnBzU2lu
ay5nZXQoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Zwc1NpbmsgPSBudWxscHRy
OwogICAgIH0KIAogICAgIGlmICghbV9mcHNTaW5rKQotICAgICAgICB2aWRlb1NpbmsgPSBtX3dl
YmtpdFZpZGVvU2luay5nZXQoKTsKKyAgICAgICAgdmlkZW9TaW5rID0gbV92aWRlb1NpbmsuZ2V0
KCk7CiAKICAgICBBU1NFUlQodmlkZW9TaW5rKTsKIApAQCAtNTAxLDcgKzU3OSw3IEBAIHVuc2ln
bmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZpZGVvRGVjb2RlZEJ5dGVDb3Vu
dCgpIGNvbnN0CiAgICAgR3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19wb3NpdGlvbihH
U1RfRk9STUFUX0JZVEVTKTsKICAgICBnaW50NjQgcG9zaXRpb24gPSAwOwogCi0gICAgaWYgKGdz
dF9lbGVtZW50X3F1ZXJ5KG1fd2Via2l0VmlkZW9TaW5rLmdldCgpLCBxdWVyeSkpCisgICAgaWYg
KGdzdF9lbGVtZW50X3F1ZXJ5KG1fdmlkZW9TaW5rLmdldCgpLCBxdWVyeSkpCiAgICAgICAgIGdz
dF9xdWVyeV9wYXJzZV9wb3NpdGlvbihxdWVyeSwgMCwgJnBvc2l0aW9uKTsKIAogICAgIGdzdF9x
dWVyeV91bnJlZihxdWVyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaAppbmRleCAwYmMwNWE4Li4zZmFlNzc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTQwLDcgKzQwLDYg
QEAgdHlwZWRlZiBzdHJ1Y3QgX0dzdFNhbXBsZSBHc3RTYW1wbGU7CiB0eXBlZGVmIHN0cnVjdCBf
R3N0RWxlbWVudCBHc3RFbGVtZW50OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVz
c2FnZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RTdHJlYW1Wb2x1bWUgR3N0U3RyZWFtVm9sdW1lOwot
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFZpZGVvU2luayBXZWJLaXRWaWRlb1Npbms7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTE3LDcgKzExNiw3IEBAIHByb3RlY3RlZDoKIAogICAgIE1l
ZGlhUGxheWVyKiBtX3BsYXllcjsKICAgICBHUmVmUHRyPEdzdFN0cmVhbVZvbHVtZT4gbV92b2x1
bWVFbGVtZW50OwotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV93ZWJraXRWaWRlb1Npbms7Cisg
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3ZpZGVvU2luazsKICAgICBHUmVmUHRyPEdzdEVsZW1l
bnQ+IG1fZnBzU2luazsKICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKQEAgLTEyNiw2
ICsxMjUsMTEgQEAgcHJvdGVjdGVkOgogICAgIEdzdFNhbXBsZSogbV9zYW1wbGU7CiAgICAgR1Ro
cmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX3ZvbHVtZVRpbWVySGFuZGxlcjsKICAgICBHVGhyZWFk
U2FmZU1haW5Mb29wU291cmNlIG1fbXV0ZVRpbWVySGFuZGxlcjsKKyNpZiBVU0UoR1NUUkVBTUVS
X0dMKQorICAgIEdUaHJlYWRTYWZlTWFpbkxvb3BTb3VyY2UgbV9kcmF3VGltZXJIYW5kbGVyOwor
ICAgIEdDb25kIG1fZHJhd0NvbmRpdGlvbjsKKyAgICBHTXV0ZXggbV9kcmF3TXV0ZXg7CisjZW5k
aWYKICAgICB1bnNpZ25lZCBsb25nIG1fcmVwYWludEhhbmRsZXI7CiAgICAgdW5zaWduZWQgbG9u
ZyBtX3ZvbHVtZVNpZ25hbEhhbmRsZXI7CiAgICAgdW5zaWduZWQgbG9uZyBtX211dGVTaWduYWxI
YW5kbGVyOwotLSAKMi4xLjQ=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249729</attachid>
            <date>2015-03-30 08:11:37 -0700</date>
            <delta_ts>2015-04-01 02:17:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>15252</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwYTUzMTZhYTQ3MTg0ODI4NGVkYWFhMDJkZDdiZDc5OTRjYTE3MWNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgpE
YXRlOiBUdWUsIDE3IE1hciAyMDE1IDEzOjM2OjI4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gcGF0
Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgMzMgKysrKysrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgICAgICB8ICAgNiArLQogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcCAgfCAxMzEgKysrKysrKysrKysrKysrKy0tLS0tCiAuLi4vZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCAgICB8ICAxMyArLQogNCBmaWxlcyBj
aGFuZ2VkLCAxNDcgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDQwZGM4NDkuLjExZTI5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0wMy0y
NCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBoaWxuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJl
YW1lcl0gR3N0R0wgc3VwcG9ydCBpbiB0aGUgdmlkZW8gc2luaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTYyCisKKyAgICAgICAgVXNlIEdTdHJl
YW1lcidzIGdsaW1hZ2VzaW5rIGZvciB2aWRlbyByZW5kZXJpbmcgaW5zdGVhZCBvZiBvdXIKKyAg
ICAgICAgY3VzdG9tIHZpZGVvIHNpbmsgaWYgYSByZWNlbnQtZW5vdWdoIHZlcnNpb24gb2YgR3N0
R0wgaXMgZm91bmQKKyAgICAgICAgZHVyaW5nIHRoZSBidWlsZC4gV2hlbiBnbGltYWdlc2luayBp
cyB1c2VkIGl0IHBhc3NlcyBhIHRleHR1cmUgdG8KKyAgICAgICAgdGhlIG1lZGlhIHBsYXllciB3
aGljaCB0aGVuIHdyYXBzIGl0IGluc2lkZSBhIFRleHR1cmVNYXBwZXIKKyAgICAgICAgdGV4dHVy
ZSBsYXRlciB1c2VkIGZvciBhY3R1YWwgcmVuZGVyaW5nLgorCisgICAgICAgIFVzaW5nIHRoaXMg
bmV3IGNvZGUgcGF0aCB3aWxsIGFsbG93IHVzIHRvIHJlbW92ZSBvdXIgY3VzdG9tIHNpbmsKKyAg
ICAgICAgZW50aXJlbHkgaW4gdGhlIGxvbmcgdGVybS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCwgZXhpc3RpbmcgbWVkaWEgdGVz
dHMgY292ZXIgdmlkZW8gcmVuZGVyaW5nIGFscmVhZHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjptZWRpYVBsYXllclByaXZhdGVEcmF3Q2FsbGJhY2spOiBjbGllbnQt
ZHJhdyBzaWduYWwgY2FsbGJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6Om5hdHVyYWxTaXplKTogQmV0dGVyCisgICAgICAgIGNoZWNrIGZv
ciBzYW1wbGUgdmFsaWRpdHkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludCk6IFRyaWdnZXIg
YQorICAgICAgICByZXBhaW50IGFuZCB3YWl0IGl0cyBjb21wbGV0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIpOgorICAgICAgICBFeHRyYWN0IHRleHR1cmUgSUQgYW5kIHZpZGVvIGRpbWVuc2lvbnMgZnJv
bSB0aGUgc2FtcGxlIGFuZCBkbyBhY3R1YWwgcGFpbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRlb1NpbmspOiBVc2UKKyAgICAg
ICAgZ2xpbWFnZXNpbmsgaWYgR3N0R0wgaXMgYXZhaWxhYmxlLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisK
IDIwMTUtMDMtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFN0YXJ0IHRoZSBmZWF0dXJlcy5qc29uIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDdiM2ZlMGIuLjJkMWY3NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0y
OTEsOCArMjkxLDggQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyKCkKICAgICAgICAgbV9wbGF5QmluLmNsZWFyKCk7CiAgICAgfQogCi0g
ICAgaWYgKG1fd2Via2l0VmlkZW9TaW5rKSB7Ci0gICAgICAgIEdSZWZQdHI8R3N0UGFkPiB2aWRl
b1NpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQobV93ZWJraXRW
aWRlb1NpbmsuZ2V0KCksICJzaW5rIikpOworICAgIGlmIChtX3ZpZGVvU2luaykgeworICAgICAg
ICBHUmVmUHRyPEdzdFBhZD4gdmlkZW9TaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKG1fdmlkZW9TaW5rLmdldCgpLCAic2luayIpKTsKICAgICAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHZpZGVvU2lua1BhZC5nZXQoKSwgcmVpbnRl
cnByZXRfY2FzdDxncG9pbnRlcj4obWVkaWFQbGF5ZXJQcml2YXRlVmlkZW9TaW5rQ2Fwc0NoYW5n
ZWRDYWxsYmFjayksIHRoaXMpOwogICAgIH0KIH0KQEAgLTIwNzMsNyArMjA3Myw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKICAgICAgICAg
ICAgIGdfb2JqZWN0X3NldChtX3BsYXlCaW4uZ2V0KCksICJhdWRpby1maWx0ZXIiLCBzY2FsZSwg
bnVsbHB0cik7CiAgICAgfQogCi0gICAgR1JlZlB0cjxHc3RQYWQ+IHZpZGVvU2lua1BhZCA9IGFk
b3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX3dlYmtpdFZpZGVvU2luay5nZXQo
KSwgInNpbmsiKSk7CisgICAgR1JlZlB0cjxHc3RQYWQ+IHZpZGVvU2lua1BhZCA9IGFkb3B0R1Jl
Zihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChtX3ZpZGVvU2luay5nZXQoKSwgInNpbmsiKSk7
CiAgICAgaWYgKHZpZGVvU2lua1BhZCkKICAgICAgICAgZ19zaWduYWxfY29ubmVjdCh2aWRlb1Np
bmtQYWQuZ2V0KCksICJub3RpZnk6OmNhcHMiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0
ZVZpZGVvU2lua0NhcHNDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBmZTIxYjc1
Li5jM2FkOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCkBAIC00NCw2ICs0NCwxMiBAQAogI2luY2x1ZGUgPGdzdC9hdWRpby9z
dHJlYW12b2x1bWUuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+CiAKKyNp
ZiBVU0UoR1NUUkVBTUVSX0dMKQorI2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQorI2luY2x1
ZGUgPGdzdC9nbC9nc3RnbG1lbW9yeS5oPgorI3VuZGVmIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisj
ZW5kaWYKKwogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApICYmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKICNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKICNpbmNsdWRlICJCaXRtYXBU
ZXh0dXJlUG9vbC5oIgpAQCAtODYsMzIgKzkyLDQwIEBAIHN0YXRpYyB2b2lkIG1lZGlhUGxheWVy
UHJpdmF0ZVJlcGFpbnRDYWxsYmFjayhXZWJLaXRWaWRlb1NpbmsqLCBHc3RTYW1wbGUqIHNhbXBs
CiAgICAgcGxheWVyUHJpdmF0ZS0+dHJpZ2dlclJlcGFpbnQoc2FtcGxlKTsKIH0KIAorI2lmIFVT
RShHU1RSRUFNRVJfR0wpCitzdGF0aWMgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlRHJhd0Nh
bGxiYWNrKEdzdEVsZW1lbnQqLCBHc3RDb250ZXh0KiwgR3N0U2FtcGxlKiBzYW1wbGUsIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqIHBsYXllclByaXZhdGUpCit7CisgICAgcGxheWVy
UHJpdmF0ZS0+dHJpZ2dlclJlcGFpbnQoc2FtcGxlKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKyNl
bmRpZgorCiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBtX3BsYXllcihwbGF5
ZXIpCiAgICAgLCBtX2Zwc1NpbmsoMCkKICAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6
SGF2ZU5vdGhpbmcpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6RW1wdHkpCi0g
ICAgLCBtX3NhbXBsZSgwKQogICAgICwgbV9yZXBhaW50SGFuZGxlcigwKQogICAgICwgbV92b2x1
bWVTaWduYWxIYW5kbGVyKDApCiAgICAgLCBtX211dGVTaWduYWxIYW5kbGVyKDApCisgICAgLCBt
X3VzaW5nRmFsbGJhY2tWaWRlb1NpbmsoZmFsc2UpCiB7CiAgICAgZ19tdXRleF9pbml0KCZtX3Nh
bXBsZU11dGV4KTsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIGdfY29uZF9pbml0KCZtX2Ry
YXdDb25kaXRpb24pOworICAgIGdfbXV0ZXhfaW5pdCgmbV9kcmF3TXV0ZXgpOworI2VuZGlmCiB9
CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlKCkKIHsKICAgICBpZiAobV9yZXBhaW50SGFuZGxlcikgewotICAgICAgICBn
X3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93ZWJraXRWaWRlb1NpbmsuZ2V0KCksIG1fcmVw
YWludEhhbmRsZXIpOworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV92aWRl
b1NpbmsuZ2V0KCksIG1fcmVwYWludEhhbmRsZXIpOwogICAgICAgICBtX3JlcGFpbnRIYW5kbGVy
ID0gMDsKICAgICB9CiAKICAgICBnX211dGV4X2NsZWFyKCZtX3NhbXBsZU11dGV4KTsKIAotICAg
IGlmIChtX3NhbXBsZSkKLSAgICAgICAgZ3N0X3NhbXBsZV91bnJlZihtX3NhbXBsZSk7Ci0gICAg
bV9zYW1wbGUgPSAwOwotCiAgICAgbV9wbGF5ZXIgPSAwOwogCiAgICAgaWYgKG1fdm9sdW1lU2ln
bmFsSGFuZGxlcikgewpAQCAtMTI0LDYgKzEzOCwxMSBAQCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpCiAgICAgICAgIG1f
bXV0ZVNpZ25hbEhhbmRsZXIgPSAwOwogICAgIH0KIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisg
ICAgZ19jb25kX2NsZWFyKCZtX2RyYXdDb25kaXRpb24pOworICAgIGdfbXV0ZXhfY2xlYXIoJm1f
ZHJhd011dGV4KTsKKyNlbmRpZgorCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50
KCktPnBsYXRmb3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQoKTsKQEAgLTE0MCwxMCArMTU5LDEwIEBA
IEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSgp
IGNvbnN0CiAgICAgICAgIHJldHVybiBtX3ZpZGVvU2l6ZTsKIAogICAgIFdURjo6R011dGV4TG9j
a2VyPEdNdXRleD4gbG9jayhtX3NhbXBsZU11dGV4KTsKLSAgICBpZiAoIW1fc2FtcGxlKQorICAg
IGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBGbG9h
dFNpemUoKTsKIAotICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2Ft
cGxlKTsKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZS5n
ZXQoKSk7CiAgICAgaWYgKCFjYXBzKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplKCk7CiAKQEAg
LTI4MiwxMCArMzAxLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
bXV0ZUNoYW5nZWQoKQogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIpCiB7CiAgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgp
OwotICAgIGlmICghbV9zYW1wbGUpCisgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdl
dCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0
X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZSk7CisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1w
bGVfZ2V0X2NhcHMobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghY2FwcykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTI5Niw3ICszMTUsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVy
ZQogCiAgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlk
ZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8pKTsKICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmFjcXVpcmVUZXh0dXJlRnJv
bVBvb2woc2l6ZSwgR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gQml0bWFw
VGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7Ci0gICAgR3N0
QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1wbGUpOworICAgIEdz
dEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdldCgpKTsK
IAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEsIDApCiAgICAgR3N0VmlkZW9HTFRleHR1cmVV
cGxvYWRNZXRhKiBtZXRhOwpAQCAtMzI5LDE2ICszNDgsMzAgQEAgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlKFRl
eHR1cmUKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVw
YWludChHc3RTYW1wbGUqIHNhbXBsZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKEdTVF9JU19T
QU1QTEUoc2FtcGxlKSk7Ci0KICAgICB7CiAgICAgICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRl
eD4gbG9jayhtX3NhbXBsZU11dGV4KTsKLSAgICAgICAgaWYgKG1fc2FtcGxlKQotICAgICAgICAg
ICAgZ3N0X3NhbXBsZV91bnJlZihtX3NhbXBsZSk7Ci0gICAgICAgIG1fc2FtcGxlID0gZ3N0X3Nh
bXBsZV9yZWYoc2FtcGxlKTsKKyAgICAgICAgbV9zYW1wbGUgPSBzYW1wbGU7CiAgICAgfQogCisj
aWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICB7CisgICAgICAgIFdURjo6R011dGV4TG9ja2VyPEdN
dXRleD4gbG9jayhtX2RyYXdNdXRleCk7CisKKyAgICAgICAgbV9kcmF3VGltZXJIYW5kbGVyLnNj
aGVkdWxlKCJbV2ViS2l0XSB2aWRlbyByZW5kZXIiLCBbdGhpc10geworICAgICAgICAgICAgLy8g
UmVuZGVyaW5nIHNob3VsZCBiZSBkb25lIGZyb20gdGhlIG1haW4gdGhyZWFkCisgICAgICAgICAg
ICAvLyBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgdGhlIEdMIEFQSXMgd2VyZSBpbml0aWFsaXplZC4K
KyAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICBXVEY6OkdN
dXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9kcmF3TXV0ZXgpOwogI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICAgICAgICAgIGlmIChz
dXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgJiYgbV9wbGF5ZXItPmNsaWVudCgpLm1lZGlh
UGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXllcikgJiYgY2xpZW50KCkpCisg
ICAgICAgICAgICAgICAgY2xpZW50KCktPnNldFBsYXRmb3JtTGF5ZXJOZWVkc0Rpc3BsYXkoKTsK
KyAgICAgICAgICAgIGdfY29uZF9zaWduYWwoJm1fZHJhd0NvbmRpdGlvbik7CisjZW5kaWYKKyAg
ICAgICAgfSk7CisgICAgICAgIGdfY29uZF93YWl0KCZtX2RyYXdDb25kaXRpb24sICZtX2RyYXdN
dXRleCk7CisgICAgfQorCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmco
KSAmJiBtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJh
dGVkKG1fcGxheWVyKSAmJiBjbGllbnQoKSkgewogICAgICAgICBjbGllbnQoKS0+c2V0UGxhdGZv
cm1MYXllck5lZWRzRGlzcGxheSgpOwogICAgICAgICByZXR1cm47CkBAIC0zNjcsMTAgKzQwMCwx
MCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYQogICAgICAgICByZXR1cm47CiAKICAgICBXVEY6
OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7Ci0gICAgaWYgKCFtX3Nh
bXBsZSkKKyAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdlID0gSW1hZ2VHU3Ry
ZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlKTsKKyAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+
IGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsK
ICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTM4Nyw5ICs0MjAsNDEg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXIKICAgICBpZiAoIW1fcGxheWVyLT52aXNpYmxlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0g
dXBkYXRlVGV4dHVyZSh0ZXh0dXJlTWFwcGVyKTsKLSAgICBpZiAodGV4dHVyZSkKLSAgICAgICAg
dGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnRleHR1cmUuZ2V0KCksIHRhcmdldFJlY3QsIG1h
dHJpeCwgb3BhY2l0eSk7CisgICAgaWYgKG1fdXNpbmdGYWxsYmFja1ZpZGVvU2luaykgeworICAg
ICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHVwZGF0ZVRleHR1cmUodGV4dHVy
ZU1hcHBlcik7CisgICAgICAgIGlmICh0ZXh0dXJlKQorICAgICAgICAgICAgdGV4dHVyZU1hcHBl
ci0+ZHJhd1RleHR1cmUoKnRleHR1cmUuZ2V0KCksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0
eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAg
IGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgpKTsK
KyAgICBpZiAoIWNhcHMpCisgICAgICAgIHJldHVybjsKKworICAgIEdzdFZpZGVvSW5mbyB2aWRl
b0luZm87CisgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKKyAgICBpZiAoIWdz
dF92aWRlb19pbmZvX2Zyb21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1w
bGUuZ2V0KCkpOworICAgIEdzdFZpZGVvRnJhbWUgdmlkZW9GcmFtZTsKKyAgICBpZiAoIWdzdF92
aWRlb19mcmFtZV9tYXAoJnZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIGJ1ZmZlciwgc3RhdGljX2Nh
c3Q8R3N0TWFwRmxhZ3M+KEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgdW5zaWduZWQgdGV4dHVyZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQqPih2aWRlb0ZyYW1lLmRhdGFbMF0pOworICAgIEJpdG1hcFRleHR1cmU6OkZsYWdzIGZsYWdz
ID0gQml0bWFwVGV4dHVyZTo6Tm9GbGFnOworICAgIGlmIChHU1RfVklERU9fSU5GT19IQVNfQUxQ
SEEoJnZpZGVvSW5mbykpCisgICAgICAgIGZsYWdzIHw9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGE7CisKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRI
KCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOworICAgIFRl
eHR1cmVNYXBwZXJHTCogdGV4dHVyZU1hcHBlckdMID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0dXJl
TWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKKyAgICB0ZXh0dXJlTWFwcGVyR0wtPmRyYXdUZXh0
dXJlKHRleHR1cmVJRCwgZmxhZ3MsIHNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7
CisgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKKyNlbmRpZgogfQogI2Vu
ZGlmCiAKQEAgLTQxNiwxMiArNDgxLDIyIEBAIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om1vdmllTG9hZFR5cGUoKSBjb25zCiAKIEdz
dEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2lu
aygpCiB7Ci0gICAgQVNTRVJUKGluaXRpYWxpemVHU3RyZWFtZXIoKSk7Ci0KICAgICBHc3RFbGVt
ZW50KiB2aWRlb1NpbmsgPSBudWxscHRyOwotICAgIG1fd2Via2l0VmlkZW9TaW5rID0gd2Via2l0
VmlkZW9TaW5rTmV3KCk7CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBpZiAod2Via2l0R3N0
Q2hlY2tWZXJzaW9uKDEsIDUsIDApKSB7CisgICAgICAgIG1fdmlkZW9TaW5rID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlKCJnbGltYWdlc2luayIsIG51bGxwdHIpOworICAgICAgICBpZiAobV92
aWRlb1NpbmspIHsKKyAgICAgICAgICAgIG1fcmVwYWludEhhbmRsZXIgPSBnX3NpZ25hbF9jb25u
ZWN0KG1fdmlkZW9TaW5rLmdldCgpLCAiY2xpZW50LWRyYXciLCBHX0NBTExCQUNLKG1lZGlhUGxh
eWVyUHJpdmF0ZURyYXdDYWxsYmFjayksIHRoaXMpOworICAgICAgICAgICAgdmlkZW9TaW5rID0g
bV92aWRlb1NpbmsuZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIAotICAgIG1fcmVw
YWludEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2Via2l0VmlkZW9TaW5rLmdldCgpLCAi
cmVwYWludC1yZXF1ZXN0ZWQiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRD
YWxsYmFjayksIHRoaXMpOworICAgIGlmICghbV92aWRlb1NpbmspIHsKKyAgICAgICAgbV91c2lu
Z0ZhbGxiYWNrVmlkZW9TaW5rID0gdHJ1ZTsKKyAgICAgICAgbV92aWRlb1NpbmsgPSB3ZWJraXRW
aWRlb1NpbmtOZXcoKTsKKyAgICAgICAgbV9yZXBhaW50SGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5l
Y3QobV92aWRlb1NpbmsuZ2V0KCksICJyZXBhaW50LXJlcXVlc3RlZCIsIEdfQ0FMTEJBQ0sobWVk
aWFQbGF5ZXJQcml2YXRlUmVwYWludENhbGxiYWNrKSwgdGhpcyk7CisgICAgfQogCiAgICAgbV9m
cHNTaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmcHNkaXNwbGF5c2luayIsICJzaW5r
Iik7CiAgICAgaWYgKG1fZnBzU2luaykgewpAQCAtNDM2LDE0ICs1MTEsMTQgQEAgR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9TaW5rKCkKICNl
bmRpZiAvLyBMT0dfRElTQUJMRUQKIAogICAgICAgICBpZiAoZ19vYmplY3RfY2xhc3NfZmluZF9w
cm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1MobV9mcHNTaW5rLmdldCgpKSwgInZpZGVvLXNpbmsi
KSkgewotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KG1fZnBzU2luay5nZXQoKSwgInZpZGVvLXNp
bmsiLCBtX3dlYmtpdFZpZGVvU2luay5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBnX29i
amVjdF9zZXQobV9mcHNTaW5rLmdldCgpLCAidmlkZW8tc2luayIsIG1fdmlkZW9TaW5rLmdldCgp
LCBudWxscHRyKTsKICAgICAgICAgICAgIHZpZGVvU2luayA9IG1fZnBzU2luay5nZXQoKTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Zwc1NpbmsgPSBudWxscHRyOwogICAgIH0KIAog
ICAgIGlmICghbV9mcHNTaW5rKQotICAgICAgICB2aWRlb1NpbmsgPSBtX3dlYmtpdFZpZGVvU2lu
ay5nZXQoKTsKKyAgICAgICAgdmlkZW9TaW5rID0gbV92aWRlb1NpbmsuZ2V0KCk7CiAKICAgICBB
U1NFUlQodmlkZW9TaW5rKTsKIApAQCAtNTAzLDcgKzU3OCw3IEBAIHVuc2lnbmVkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0CiAg
ICAgR3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19wb3NpdGlvbihHU1RfRk9STUFUX0JZ
VEVTKTsKICAgICBnaW50NjQgcG9zaXRpb24gPSAwOwogCi0gICAgaWYgKGdzdF9lbGVtZW50X3F1
ZXJ5KG1fd2Via2l0VmlkZW9TaW5rLmdldCgpLCBxdWVyeSkpCisgICAgaWYgKGdzdF9lbGVtZW50
X3F1ZXJ5KG1fdmlkZW9TaW5rLmdldCgpLCBxdWVyeSkpCiAgICAgICAgIGdzdF9xdWVyeV9wYXJz
ZV9wb3NpdGlvbihxdWVyeSwgMCwgJnBvc2l0aW9uKTsKIAogICAgIGdzdF9xdWVyeV91bnJlZihx
dWVyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuaAppbmRleCAwYmMwNWE4Li42MDY2NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTM2LDExICszNiw4IEBACiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNlbmRpZgogCi10eXBlZGVmIHN0cnVj
dCBfR3N0U2FtcGxlIEdzdFNhbXBsZTsKLXR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVs
ZW1lbnQ7CiB0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RNZXNzYWdlOwogdHlwZWRlZiBz
dHJ1Y3QgX0dzdFN0cmVhbVZvbHVtZSBHc3RTdHJlYW1Wb2x1bWU7Ci10eXBlZGVmIHN0cnVjdCBf
V2ViS2l0VmlkZW9TaW5rIFdlYktpdFZpZGVvU2luazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMTcsMTkgKzExNCwyNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBNZWRpYVBsYXllciogbV9w
bGF5ZXI7CiAgICAgR1JlZlB0cjxHc3RTdHJlYW1Wb2x1bWU+IG1fdm9sdW1lRWxlbWVudDsKLSAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fd2Via2l0VmlkZW9TaW5rOworICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gbV92aWRlb1Npbms7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2Zwc1Npbms7
CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwogICAgIE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAg
ICAgbXV0YWJsZSBHTXV0ZXggbV9zYW1wbGVNdXRleDsKLSAgICBHc3RTYW1wbGUqIG1fc2FtcGxl
OworICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBtX3NhbXBsZTsKICAgICBHVGhyZWFkU2FmZU1haW5M
b29wU291cmNlIG1fdm9sdW1lVGltZXJIYW5kbGVyOwogICAgIEdUaHJlYWRTYWZlTWFpbkxvb3BT
b3VyY2UgbV9tdXRlVGltZXJIYW5kbGVyOworI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgR1Ro
cmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX2RyYXdUaW1lckhhbmRsZXI7CisgICAgR0NvbmQgbV9k
cmF3Q29uZGl0aW9uOworICAgIEdNdXRleCBtX2RyYXdNdXRleDsKKyNlbmRpZgogICAgIHVuc2ln
bmVkIGxvbmcgbV9yZXBhaW50SGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lU2ln
bmFsSGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fbXV0ZVNpZ25hbEhhbmRsZXI7CiAgICAg
bXV0YWJsZSBGbG9hdFNpemUgbV92aWRlb1NpemU7CisgICAgYm9vbCBtX3VzaW5nRmFsbGJhY2tW
aWRlb1Npbms7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdXBkYXRlVGV4dHVyZShU
ZXh0dXJlTWFwcGVyKik7CiAjZW5kaWYKLS0gCjIuMS40
</data>
<flag name="review"
          id="274559"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>