<?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>34317</bug_id>
          
          <creation_ts>2010-01-29 01:48:05 -0800</creation_ts>
          <short_desc>[GStreamer] Add a WebKit HTTP/HTTPS source that uses WebKit&apos;s network infrastructure</short_desc>
          <delta_ts>2010-02-05 13:04:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sebastian Dröge (slomo)">slomo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>ossy</cc>
    
    <cc>otte</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>185776</commentid>
    <comment_count>0</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-01-29 01:48:05 -0800</bug_when>
    <thetext>Hi,
the attached patch adds a WebKit HTTP/HTTPS GStreamer source, that uses WebKit&apos;s network infrastructure. There&apos;s only two places where soup specific things are done, which can probably be replaced too. As such this should be useful for other ports too if they decide to use GStreamer at some point.

It automatically sets cookies as required, uses proxy/authentication/certificate information from WebKit, sets referer, etc. It also works with Vimeo&apos;s HTML5 stuff.

Please test this and report any issues, it&apos;s still not 100% completed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185777</commentid>
    <comment_count>1</comment_count>
      <attachid>47689</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-01-29 01:48:51 -0800</bug_when>
    <thetext>Created attachment 47689
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185780</commentid>
    <comment_count>2</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-01-29 01:53:09 -0800</bug_when>
    <thetext>One issue here right now is bug #34318 and that seeking on vimeo.com doesn&apos;t work: They don&apos;t allow range requests but don&apos;t say in the initial response that it&apos;s not supported. Seeking on vimeo.com thus silently stops playback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186089</commentid>
    <comment_count>3</comment_count>
      <attachid>47760</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-01-30 02:38:01 -0800</bug_when>
    <thetext>Created attachment 47760
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch

This now seems to work as good as the GStreamer HTTP/HTTPS sources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186091</commentid>
    <comment_count>4</comment_count>
      <attachid>47761</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-01-30 02:43:44 -0800</bug_when>
    <thetext>Created attachment 47761
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch

Rebased against latest master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186092</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-30 02:44:21 -0800</bug_when>
    <thetext>Attachment 47760 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:145:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 2


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186093</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-30 02:45:06 -0800</bug_when>
    <thetext>Attachment 47761 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
gtk/WebKitWebSourceGStreamer.cpp:560:  webkit_web_src_set_frame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:562:  Declaration has space between type name and * in WebkitWebSrcPrivate *priv  [whitespace/declaration] [3]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:584:  Declaration has space between type name and * in WebkitWebSrcPrivate *priv  [whitespace/declaration] [3]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:590:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:602:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:602:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:607:  Declaration has space between type name and * in gchar *endptr  [whitespace/declaration] [3]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:607:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:608:  icy_metaint is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:611:  Declaration has space between type name and * in GstCaps *caps  [whitespace/declaration] [3]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:611:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:624:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:631:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:638:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:645:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:656:  Declaration has space between type name and * in WebkitWebSrcPrivate *priv  [whitespace/declaration] [3]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:665:  Declaration has space between type name and * in GstBuffer *buffer  [whitespace/declaration] [3]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:674:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:675:  One line control clauses should not use braces.  [whitespace/braces] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:687:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:145:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 138


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186096</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-30 02:57:40 -0800</bug_when>
    <thetext>Attachment 47760 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/220417</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186098</commentid>
    <comment_count>8</comment_count>
      <attachid>47764</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-01-30 03:03:51 -0800</bug_when>
    <thetext>Created attachment 47764
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch

Lots of style fixes... for the remaining ones, I don&apos;t think they should be fixed. Using camel case function names is not really GLib&apos;ish and using 0 instead of NULL in varargs functions is not a good idea either (on x86-64 0 would be passed as 32 bit value while the function itself wants a 64 bit value).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186099</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-30 03:05:58 -0800</bug_when>
    <thetext>Attachment 47764 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
eadability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:452:  webkit_web_src_uri_set_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:457:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:460:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:465:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:471:  webkit_web_src_uri_handler_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:483:  webkit_web_src_need_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:496:  webkit_web_src_need_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:508:  webkit_web_src_enough_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:520:  webkit_web_src_enough_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:532:  webkit_web_src_seek_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:540:  webkit_web_src_seek_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:563:  webkit_web_src_set_frame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:614:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:627:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:634:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:641:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:648:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:678:  One line control clauses should not use braces.  [whitespace/braces] [4]
WebCore/platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp:145:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 45


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186100</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-30 03:07:31 -0800</bug_when>
    <thetext>Attachment 47764 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/221300</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186101</commentid>
    <comment_count>11</comment_count>
      <attachid>47765</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-01-30 03:12:25 -0800</bug_when>
    <thetext>Created attachment 47765
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch

...and now it should even compile again and some more style issues should be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186102</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-30 03:14:47 -0800</bug_when>
    <thetext>Attachment 47765 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/221308</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186103</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-30 03:16:33 -0800</bug_when>
    <thetext>Attachment 47765 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
r.cpp:433:  webkit_web_src_uri_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:438:  webkit_web_src_uri_get_protocols is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:445:  webkit_web_src_uri_get_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:453:  webkit_web_src_uri_set_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:463:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:468:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:474:  webkit_web_src_uri_handler_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:486:  webkit_web_src_need_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:499:  webkit_web_src_need_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:511:  webkit_web_src_enough_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:523:  webkit_web_src_enough_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:535:  webkit_web_src_seek_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:543:  webkit_web_src_seek_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:566:  webkit_web_src_set_frame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:617:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:630:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:637:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:644:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:651:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 42


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186104</commentid>
    <comment_count>14</comment_count>
      <attachid>47766</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-01-30 03:20:16 -0800</bug_when>
    <thetext>Created attachment 47766
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186105</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-30 03:22:04 -0800</bug_when>
    <thetext>Attachment 47766 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
y/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:389:  webkit_web_src_change_state is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:433:  webkit_web_src_uri_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:438:  webkit_web_src_uri_get_protocols is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:445:  webkit_web_src_uri_get_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:453:  webkit_web_src_uri_set_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:474:  webkit_web_src_uri_handler_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:486:  webkit_web_src_need_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:499:  webkit_web_src_need_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:511:  webkit_web_src_enough_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:523:  webkit_web_src_enough_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:535:  webkit_web_src_seek_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:543:  webkit_web_src_seek_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:566:  webkit_web_src_set_frame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:617:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:630:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:637:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:644:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:651:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 40


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186319</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-02-01 00:12:13 -0800</bug_when>
    <thetext>Nice patch :) Had a quick look at the code and found a little thing to fix, the error message if appsrc could not be created mentions giostreamsrc ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186335</commentid>
    <comment_count>17</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-02-01 01:46:26 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Nice patch :) Had a quick look at the code and found a little thing to fix, the
&gt; error message if appsrc could not be created mentions giostreamsrc ;)

Oh, how embarrassing. Thanks, I&apos;ll fix this next time :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186847</commentid>
    <comment_count>18</comment_count>
      <attachid>47766</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-02-02 00:49:38 -0800</bug_when>
    <thetext>Comment on attachment 47766
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch


&gt; +	-gstapp-0.10

Are you sure, you don&apos;t want -lgstapp-0.10 here?



&gt; +    priv-&gt;appsrc = GST_APP_SRC(gst_element_factory_make(&quot;appsrc&quot;, 0));
&gt; +    if (!priv-&gt;appsrc) {
&gt; +        GST_ERROR_OBJECT(src, &quot;Failed to create giostreamsrc&quot;);
&gt; +        return;
&gt; +    }

&gt; +static void webkit_web_src_stop(WebkitWebSrc* src, gboolean resetRequestedOffset)
&gt; +{

&gt; +    gst_app_src_set_caps(priv-&gt;appsrc, 0);

Does this mix well? Will it crash or just print a critical warning? Or will this never happen because the src_change_state will report a missing plugin and then stop is never called?

The next question is can the stop method be called multiple times? Or is there any gurantee that GStreamer will not do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186853</commentid>
    <comment_count>19</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-02-02 01:10:50 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 47766 [details])
&gt; 
&gt; &gt; +	-gstapp-0.10
&gt; 
&gt; Are you sure, you don&apos;t want -lgstapp-0.10 here?

Yes, that&apos;s what I wanted. I wonder why it worked nonetheless...

&gt; &gt; +    priv-&gt;appsrc = GST_APP_SRC(gst_element_factory_make(&quot;appsrc&quot;, 0));
&gt; &gt; +    if (!priv-&gt;appsrc) {
&gt; &gt; +        GST_ERROR_OBJECT(src, &quot;Failed to create giostreamsrc&quot;);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; 
&gt; &gt; +static void webkit_web_src_stop(WebkitWebSrc* src, gboolean resetRequestedOffset)
&gt; &gt; +{
&gt; 
&gt; &gt; +    gst_app_src_set_caps(priv-&gt;appsrc, 0);
&gt; 
&gt; Does this mix well? Will it crash or just print a critical warning? Or will
&gt; this never happen because the src_change_state will report a missing plugin and
&gt; then stop is never called?

Good catch, actually _stop() is called from the instance initialization function (webkit_web_src_init) and there appsrc could be NULL.

&gt; The next question is can the stop method be called multiple times? Or is there
&gt; any gurantee that GStreamer will not do this?

It can be called multiple times and probably will, all state changes from PAUSED to READY will go through the stop method. That&apos;s why I check if the things to be freed are not NULL before freeing and set them to NULL afterwards

Anyway, I&apos;ll attach a new patch shortly with the above issues fixed. Thanks for reviewing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186854</commentid>
    <comment_count>20</comment_count>
      <attachid>47912</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-02-02 01:14:47 -0800</bug_when>
    <thetext>Created attachment 47912
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186855</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-02 01:16:36 -0800</bug_when>
    <thetext>Attachment 47912 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
y/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:390:  webkit_web_src_change_state is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:434:  webkit_web_src_uri_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:439:  webkit_web_src_uri_get_protocols is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:446:  webkit_web_src_uri_get_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:454:  webkit_web_src_uri_set_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:475:  webkit_web_src_uri_handler_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:487:  webkit_web_src_need_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:500:  webkit_web_src_need_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:512:  webkit_web_src_enough_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:524:  webkit_web_src_enough_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:536:  webkit_web_src_seek_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:544:  webkit_web_src_seek_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:567:  webkit_web_src_set_frame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:618:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:631:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:638:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:645:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:652:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 40


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188136</commentid>
    <comment_count>22</comment_count>
      <attachid>48220</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-02-05 03:37:13 -0800</bug_when>
    <thetext>Created attachment 48220
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188137</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-05 03:39:54 -0800</bug_when>
    <thetext>Attachment 48220 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
y/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:390:  webkit_web_src_change_state is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:434:  webkit_web_src_uri_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:439:  webkit_web_src_uri_get_protocols is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:446:  webkit_web_src_uri_get_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:454:  webkit_web_src_uri_set_uri is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:475:  webkit_web_src_uri_handler_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:487:  webkit_web_src_need_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:500:  webkit_web_src_need_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:512:  webkit_web_src_enough_data_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:524:  webkit_web_src_enough_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:536:  webkit_web_src_seek_main_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:544:  webkit_web_src_seek_data_cb is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:567:  webkit_web_src_set_frame is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:618:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:631:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:638:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:645:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:652:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 40


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188142</commentid>
    <comment_count>24</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-05 04:02:05 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=47764) [details]
&gt; 0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch
&gt; 
&gt; Lots of style fixes... for the remaining ones, I don&apos;t think they should be
&gt; fixed. Using camel case function names is not really GLib&apos;ish and using 0
&gt; instead of NULL in varargs functions is not a good idea either (on x86-64 0
&gt; would be passed as 32 bit value while the function itself wants a 64 bit
&gt; value).

(In reply to comment #8)
&gt; Created an attachment (id=47764) [details]
&gt; 0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch
&gt; 
&gt; Lots of style fixes... for the remaining ones, I don&apos;t think they should be
&gt; fixed. Using camel case function names is not really GLib&apos;ish and using 0
&gt; instead of NULL in varargs functions is not a good idea either (on x86-64 0
&gt; would be passed as 32 bit value while the function itself wants a 64 bit
&gt; value).

While I agree with you on this, if we plan to use glibish style on the grounds that this is a &quot;stand-alone&quot; component that we may want to extract some day, then this should be considered as a separate API, and moved to WebKit/gtk/, like the soup http auth dialog was.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188155</commentid>
    <comment_count>25</comment_count>
      <attachid>48220</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-05 05:22:38 -0800</bug_when>
    <thetext>Comment on attachment 48220
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch

 142         Frame* frame = mp-&gt;m_player-&gt;frameView() ?
 143 mp-&gt;m_player-&gt;frameView()-&gt;frame() : 0;

Keep these in a single line, or indent the second one appropriately =).

 567 void webkit_web_src_set_frame(WebkitWebSrc* src, WebCore::Frame* frame)
 568 {
 569     WebkitWebSrcPrivate* priv = src-&gt;priv;
 570 
 571     frame-&gt;ref();
 572     priv-&gt;frame = frame;
 573 }

Instead of using manual refing/unrefing, I think you should make the object&apos;s private frame a RefPtr&lt;Frame&gt;, then just assigning 0 to it will make it go away, when it&apos;s no longer needed.

 22 #include &quot;CString.h&quot;
[...]
 29 #include &quot;ResourceRequest.h&quot;
 30 #include &quot;ResourceResponse.h&quot;
 31 
 32 #include &lt;gst/app/gstappsrc.h&gt;
 33 #include &lt;gst/pbutils/missing-plugins.h&gt;

I know this pattern is used in a bunch of places, but the right thing to do here is to add the system includes in the same list as the webkit ones. See, for instance, WebCore/platform/mac/GeolocationServiceMac.mm.

 104 static void webkit_web_src_finalize(GObject* object);
 105 static void webkit_web_src_set_property(GObject* object, guint propID,
 106     const GValue* value, GParamSpec* pspec);
 107 static void webkit_web_src_get_property(GObject* object, guint propID,
 108     GValue* value, GParamSpec* pspec);
 109 static GstStateChangeReturn webkit_web_src_change_state(GstElement* element,
 110                                                         GstStateChange transition);

Indentation is weird here. I would prefer a single line for each, but just being consistent works for me =D. I have noticed indentation issues like these also in other functions, like base_init, and src_init, but I won&apos;t clutter the review with them, just give everything a pass, I&apos;d say.

223     gst_app_src_set_max_bytes(priv-&gt;appsrc, 512 * 1024);

Why is this the maximum? Does this depend on the amount of data soup will get before each got-chunk, for instance?

 234     g_free(priv-&gt;uri);

 339 static gboolean webkit_web_src_start(WebkitWebSrc* src)

You can use bool here instead of gboolean, because this is internal.

 368         gchar* val = g_strdup_printf(&quot;bytes=%&quot; G_GUINT64_FORMAT &quot;-&quot;, priv-&gt;requestedOffset);

Use GOwnPtr&lt;gchar&gt;, and throw the g_free away =).

 432 /*** GSTURIHANDLER INTERFACE *************************************************/

This is very alien for WebKit code =D.

// GstUriHandler Interface.

looks more like it =)

 441     static gchar* protocols[] = {(gchar*) &quot;http&quot;, (gchar*) &quot;https&quot;, 0 };

You can use char*, and lose the casts.

 464     if (uri &amp;&amp; !g_ascii_strncasecmp(&quot;http&quot;, uri, 4) &amp;&amp; !g_ascii_strncasecmp(&quot;http&quot;, uri, 5)) {

Looks like one of them is missing an s. You may consider storing priv-&gt;uri as a SoupURI, btw, and using SOUP_URI_VALID_FOR_HTTP() here instead. This has the advantage of only storing URIs that soup will actually accept, and saving us the trouble of finding bugs later for using invalid-for-soup URIs.

Let me push what I already have (since you&apos;ll likely work on this soonish =P), and I&apos;ll add another comment with the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188171</commentid>
    <comment_count>26</comment_count>
      <attachid>48229</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-02-05 06:38:48 -0800</bug_when>
    <thetext>Created attachment 48229
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188172</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-05 06:43:44 -0800</bug_when>
    <thetext>Attachment 48229 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.h:47:  webkit_web_src_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:121:  _doInit is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:135:  webkit_web_src_base_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:148:  webkit_web_src_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:203:  webkit_web_src_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:640:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:653:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:660:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:667:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:674:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 12


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188176</commentid>
    <comment_count>28</comment_count>
      <attachid>48231</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-02-05 06:58:52 -0800</bug_when>
    <thetext>Created attachment 48231
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188179</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-05 07:02:45 -0800</bug_when>
    <thetext>Attachment 48231 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.h:47:  webkit_web_src_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:135:  webkit_web_src_base_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:148:  webkit_web_src_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:203:  webkit_web_src_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:640:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:653:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:660:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:667:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/gtk/WebKitWebSourceGStreamer.cpp:674:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 9


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188196</commentid>
    <comment_count>30</comment_count>
      <attachid>48231</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-05 09:13:23 -0800</bug_when>
    <thetext>Comment on attachment 48231
0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch

Looks good. I&apos;ll land this manually, since there are a couple small typos I will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188199</commentid>
    <comment_count>31</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-02-05 09:25:32 -0800</bug_when>
    <thetext>Landed as r54427.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188253</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-05 12:45:37 -0800</bug_when>
    <thetext>Tiger started failing after this checkin:
http://build.webkit.org/results/Tiger%20Intel%20Release/r54427%20(8544)/results.html

But I don&apos;t think it&apos;s related to this change, rather to general run-webkit-tests issues which we&apos;ve been seeing recently.  Probably related to the &quot;run httpd tests last&quot; changes.

CCing Brian who has been dealing with these failures on the Windows bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188261</commentid>
    <comment_count>33</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-02-05 13:04:18 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; Tiger started failing after this checkin:
&gt; http://build.webkit.org/results/Tiger%20Intel%20Release/r54427%20(8544)/results.html
&gt; 
&gt; But I don&apos;t think it&apos;s related to this change, rather to general
&gt; run-webkit-tests issues which we&apos;ve been seeing recently.  Probably related to
&gt; the &quot;run httpd tests last&quot; changes.
&gt; 
&gt; CCing Brian who has been dealing with these failures on the Windows bot.

http://build.webkit.org/results/Tiger%20Intel%20Release/r54427%20(8544)/pywebsocket_log.txt said that &quot;[2010-02-05 10:41:05,703] [CRITICAL] root: (48, &apos;Address already in use&apos;)&quot;

I think it means, that websocket server stucked, it should be killed/restarted.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47689</attachid>
            <date>2010-01-29 01:48:51 -0800</date>
            <delta_ts>2010-01-30 02:38:01 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch </desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>30663</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSAwNGIxNmEzOGE4MzM0N2NlNzgyYTMxMzUyYzk2YjE3ZDUxMzkxYjkyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogVHVlLCAyNiBKYW4gMjAxMCAx
MDo1NDoxMyArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICA3ICstCiAuLi4vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgICB8ICAgMzYgKy0KIC4uLi9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcCAgICAgIHwgIDY5NCArKysrKysrKysrKysrKysrKysrKwogLi4uL2dyYXBoaWNzL2d0
ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCAgICAgICAgfCAgIDU0ICsrCiBjb25maWd1cmUu
YWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogNSBmaWxl
cyBjaGFuZ2VkLCA3NjYgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYTgzMGJjZC4uYmJiNDIw
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC0yNDAwLDEyICsyNDAwLDE1IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBc
CiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvVmlkZW9TaW5rR1N0cmVhbWVyLmggXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuY3BwIFwK
LQlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EYXRhU291cmNlR1N0cmVhbWVyLmgKKwlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EYXRhU291cmNlR1N0cmVhbWVyLmggXAorCVdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAg
XAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5oCiAKIHdlYmNvcmVfbGliYWRkICs9IFwKIAktbGdzdGludGVyZmFjZXMtMC4xMCBcCiAJLWxn
c3R2aWRlby0wLjEwIFwKLQktbGdzdHBidXRpbHMtMC4xMAorCS1sZ3N0cGJ1dGlscy0wLjEwIFwK
KwktZ3N0YXBwLTAuMTAKIAogZW5kaWYgIyBFTkQgRU5BQkxFX1ZJREVPCiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCmluZGV4IGUyNGFkODkuLjJkZTcxODYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1
ZGUgIkRhdGFTb3VyY2VHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNs
dWRlICJWaWRlb1NpbmtHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRl
ICJXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIKIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNp
bmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9taXhlci5oPgpAQCAtMTMzLDI5ICsxMzUsMTIgQEAgdm9p
ZCBtZWRpYVBsYXllclByaXZhdGVTb3VyY2VDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqb2JqZWN0
LCBHUGFyYW1TcGVjICpwc3BlYywKICAgICBnX29iamVjdF9nZXQobXAtPm1fcGxheUJpbiwgInNv
dXJjZSIsICZlbGVtZW50LCBOVUxMKTsKICAgICBnc3Rfb2JqZWN0X3JlcGxhY2UoKEdzdE9iamVj
dCoqKSAmbXAtPm1fc291cmNlLCAoR3N0T2JqZWN0KikgZWxlbWVudCk7CiAKLSAgICBpZiAoZWxl
bWVudCkgewotICAgICAgICBHUGFyYW1TcGVjKiBwc3BlYyA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRf
cHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKGVsZW1lbnQpLCAiY29va2llcyIpOworICAgIGlm
IChXRUJLSVRfSVNfV0VCX1NSQyhlbGVtZW50KSkgeworICAgICAgICBGcmFtZSogZnJhbWUgPSBt
cC0+bV9wbGF5ZXItPmZyYW1lVmlldygpID8KK21wLT5tX3BsYXllci0+ZnJhbWVWaWV3KCktPmZy
YW1lKCkgOiAwOwogCi0gICAgICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZSBzb3VyY2UgZWxlbWVu
dCBoYXMgYSBjb29raWVzIHByb3BlcnR5Ci0gICAgICAgIC8vIG9mIHRoZSBmb3JtYXQgd2UgZXhw
ZWN0Ci0gICAgICAgIGlmICghcHNwZWMgfHwgcHNwZWMtPnZhbHVlX3R5cGUgIT0gR19UWVBFX1NU
UlYpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gVGhlbiBnZXQgdGhlIGNvb2tp
ZXMgZm9yIHRoZSBVUkkgYW5kIHNldCB0aGVtCi0gICAgICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9u
ID0gd2Via2l0X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKLSAgICAgICAgU291cENvb2tpZUphciog
Y29va2llSmFyID0gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNz
aW9uLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOwotCi0gICAgICAgIGNoYXIqIGxvY2F0aW9uOwot
ICAgICAgICBnX29iamVjdF9nZXQoZWxlbWVudCwgImxvY2F0aW9uIiwgJmxvY2F0aW9uLCBOVUxM
KTsKLQotICAgICAgICBTb3VwVVJJKiB1cmkgPSBzb3VwX3VyaV9uZXcobG9jYXRpb24pOwotICAg
ICAgICBnX2ZyZWUobG9jYXRpb24pOwotICAgICAgICBjaGFyKiBjb29raWVzID0gc291cF9jb29r
aWVfamFyX2dldF9jb29raWVzKGNvb2tpZUphciwgdXJpLCBGQUxTRSk7Ci0gICAgICAgIHNvdXBf
dXJpX2ZyZWUodXJpKTsKLQotICAgICAgICBjaGFyKiBjb29raWVzU3RydltdID0ge2Nvb2tpZXMs
IE5VTEx9OwotICAgICAgICBnX29iamVjdF9zZXQoZWxlbWVudCwgImNvb2tpZXMiLCBjb29raWVz
U3RydiwgTlVMTCk7Ci0gICAgICAgIGdfZnJlZShjb29raWVzKTsKKyAgICAgICAgaWYgKGZyYW1l
KQorCSAgICB3ZWJraXRfd2ViX3NyY19zZXRfZnJhbWUoV0VCS0lUX1dFQl9TUkMoZWxlbWVudCks
IGZyYW1lKTsKICAgICB9CiAKICAgICBnc3Rfb2JqZWN0X3VucmVmKGVsZW1lbnQpOwpAQCAtMjI3
LDEyICsyMTIsMTUgQEAgc3RhdGljIGJvb2wgZG9Hc3RJbml0KCkKICAgICBpZiAoIWdzdEluaXRp
YWxpemVkKSB7CiAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgZ3N0SW5p
dGlhbGl6ZWQgPSBnc3RfaW5pdF9jaGVjaygwLCAwLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAg
ICBpZiAoIWdzdEluaXRpYWxpemVkKQorICAgICAgICBpZiAoIWdzdEluaXRpYWxpemVkKSB7CiAg
ICAgICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIkNvdWxkIG5vdCBpbml0aWFsaXplIEdTdHJl
YW1lcjogJXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2Fn
ZSA6ICJ1bmtub3duIGVycm9yIG9jY3VycmVkIik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRtZWRpYXNy
YyIsIEdTVF9SQU5LX1BSSU1BUlksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfVFlQRV9EQVRBX1NSQyk7CisgICAgICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3Rlcigw
LCAid2Via2l0d2Vic3JjIiwgR1NUX1JBTktfUFJJTUFSWSArIDEwMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9TUkMpOworICAgICAgICB9CiAKICAg
ICB9CiAgICAgcmV0dXJuIGdzdEluaXRpYWxpemVkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThmNDVhYgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAKQEAgLTAsMCArMSw2OTQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlh
biBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTdHJp
bmcuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkdSZWZQdHIuaCIKKyNpbmNs
dWRlICJOb25jb3B5YWJsZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgorCisjaW5j
bHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitjbGFzcyBTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMgTm9uY29weWFibGUsIHB1
YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBTdHJlYW1p
bmdDbGllbnQoV2Via2l0V2ViU3JjKik7CisgICAgICAgIHZpcnR1YWwgflN0cmVhbWluZ0NsaWVu
dCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5k
bGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopOworICAgICAgICB2
aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSopOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgV2Via2l0V2ViU3JjKiBtX3NyYzsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dF
Ql9TUkNfR0VUX1BSSVZBVEUob2JqKSAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChv
YmopLCBXRUJLSVRfVFlQRV9XRUJfU1JDLCBXZWJraXRXZWJTcmNQcml2YXRlKSkKK3N0cnVjdCBf
V2Via2l0V2ViU3JjUHJpdmF0ZSB7CisgICAgR3N0QXBwU3JjKiBhcHBzcmM7CisgICAgR3N0UGFk
KiBzcmNwYWQ7CisgICAgZ2NoYXIqIHVyaTsKKworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZTsK
KworICAgIFN0cmVhbWluZ0NsaWVudCAqY2xpZW50OworICAgIFJlc291cmNlUmVxdWVzdCogcmVz
b3VyY2VSZXF1ZXN0OworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gcmVzb3VyY2VIYW5kbGU7
CisKKyAgICBndWludDY0IG9mZnNldDsKKyAgICBndWludDY0IHNpemU7CisgICAgZ2Jvb2xlYW4g
c2Vla2FibGU7CisgICAgZ2Jvb2xlYW4gcGF1c2VkOworCisgICAgZ3VpbnQ2NCByZXF1ZXN0ZWRf
b2Zmc2V0OworCisgICAgZ3VpbnQgbmVlZF9kYXRhX2lkOworICAgIGd1aW50IGVub3VnaF9kYXRh
X2lkOworICAgIGd1aW50IHNlZWtfaWQ7CisKKyAgICAvLyBpY2VjYXN0IHN0dWZmCisgICAgZ2Jv
b2xlYW4gaXJhZGlvX21vZGU7CisgICAgZ2NoYXIgKmlyYWRpb19uYW1lOworICAgIGdjaGFyICpp
cmFkaW9fZ2VucmU7CisgICAgZ2NoYXIgKmlyYWRpb191cmw7CisgICAgZ2NoYXIgKmlyYWRpb190
aXRsZTsKK307CisKK2VudW0geworICAgIFBST1BfSVJBRElPX01PREUgPSAxLAorICAgIFBST1Bf
SVJBRElPX05BTUUsCisgICAgUFJPUF9JUkFESU9fR0VOUkUsCisgICAgUFJPUF9JUkFESU9fVVJM
LAorICAgIFBST1BfSVJBRElPX1RJVExFCit9OworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxh
dGUgc3JjX3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUoInNyYyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1NUX1BBRF9TUkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NU
X1NUQVRJQ19DQVBTX0FOWSk7CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X3dl
Yl9zcmNfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X3dlYl9zcmNfZGVi
dWcKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfdXJpX2hhbmRsZXJfaW5pdChncG9pbnRl
ciBnX2lmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3BvaW50ZXIgaWZhY2VfZGF0YSk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCk7CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2dl
dF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdl
YmtpdF93ZWJfc3JjX2NoYW5nZV9zdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RTdGF0ZUNo
YW5nZSB0cmFuc2l0aW9uKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfbmVlZF9kYXRh
X2NiKEdzdEFwcFNyYyogYXBwc3JjLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVzZXJfZGF0YSk7
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19lbm91Z2hfZGF0YV9jYihHc3RBcHBTcmMqIGFw
cHNyYywgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3Ny
Y19zZWVrX2RhdGFfY2IoR3N0QXBwU3JjKiBhcHBzcmMsIGd1aW50NjQgb2Zmc2V0LCBncG9pbnRl
ciB1c2VyX2RhdGEpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zdG9wKFdlYmtpdFdl
YlNyYyogc3JjKTsKKworc3RhdGljIEdzdEFwcFNyY0NhbGxiYWNrcyBhcHBzcmNfY2FsbGJhY2tz
ID0geworICAgIHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0YV9jYiwKKyAgICB3ZWJraXRfd2ViX3Ny
Y19lbm91Z2hfZGF0YV9jYiwKKyAgICB3ZWJraXRfd2ViX3NyY19zZWVrX2RhdGFfY2IsCisgICAg
eyAwIH0KK307CisKK3N0YXRpYyBjb25zdCBHSW50ZXJmYWNlSW5mbyB1cmloYW5kbGVyX2luZm8g
PSB7CisgICAgd2Via2l0X3dlYl9zcmNfdXJpX2hhbmRsZXJfaW5pdCwKKyAgICAwLCAwCit9Owor
CisKK3N0YXRpYyB2b2lkIF9kb19pbml0KEdUeXBlIGd0eXBlKQoreworICAgIEdTVF9ERUJVR19D
QVRFR09SWV9JTklUKHdlYmtpdF93ZWJfc3JjX2RlYnVnLCAid2Via2l0d2Vic3JjIiwgMCwgIndl
YnNyYyBlbGVtZW50Iik7CisgICAgZ190eXBlX2FkZF9pbnRlcmZhY2Vfc3RhdGljKGd0eXBlLCBH
U1RfVFlQRV9VUklfSEFORExFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVy
aWhhbmRsZXJfaW5mbyk7Cit9CisKK0dTVF9CT0lMRVJQTEFURV9GVUxMKFdlYmtpdFdlYlNyYywg
d2Via2l0X3dlYl9zcmMsIEdzdEJpbiwgR1NUX1RZUEVfQklOLCBfZG9faW5pdCk7CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfc3JjX2Jhc2VfaW5pdChncG9pbnRlciBrbGFzcykKK3sKKyAgICBH
c3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyhrbGFzcyk7
CisKKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVsZW1lbnRfY2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3Rfc3RhdGljX3BhZF90
ZW1wbGF0ZV9nZXQoJnNyY190ZW1wbGF0ZSkpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9k
ZXRhaWxzX3NpbXBsZShlbGVtZW50X2NsYXNzLCAoZ2NoYXIqKSAiV2ViS2l0IFdlYiBzb3VyY2Ug
ZWxlbWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnY2hh
ciopICJTb3VyY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Z2NoYXIqKSAiSGFuZGxlcyBIVFRQL0hUVFBTIHVyaXMiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoZ2NoYXIqKSAiU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFu
LmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Iik7CisKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9zcmNfY2xhc3NfaW5pdChXZWJraXRXZWJTcmNDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVj
dENsYXNzKiBva2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgR3N0RWxlbWVudENs
YXNzKiBla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyhrbGFzcyk7CisKKyAgICBva2xhc3MtPmZp
bmFsaXplID0gd2Via2l0X3dlYl9zcmNfZmluYWxpemU7CisgICAgb2tsYXNzLT5zZXRfcHJvcGVy
dHkgPSB3ZWJraXRfd2ViX3NyY19zZXRfcHJvcGVydHk7CisgICAgb2tsYXNzLT5nZXRfcHJvcGVy
dHkgPSB3ZWJraXRfd2ViX3NyY19nZXRfcHJvcGVydHk7CisKKyAgICAvLyBpY2VjYXN0IHN0dWZm
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAob2tsYXNzLAorICAgICAgICBQ
Uk9QX0lSQURJT19NT0RFLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImlyYWRpby1t
b2RlIiwKKyAgICAgICAgICAgICJpcmFkaW8tbW9kZSIsCisgICAgICAgICAgICAiRW5hYmxlIGlu
dGVybmV0IHJhZGlvIG1vZGUgKGV4dHJhY3Rpb24gb2Ygc2hvdXRjYXN0L2ljZWNhc3QgbWV0YWRh
dGEpIiwKKyAgICAgICAgICAgIEZBTFNFLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklU
RSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSAob2tsYXNzLAorICAgICAgICBQUk9QX0lSQURJT19OQU1FLAorICAgICAgICBn
X3BhcmFtX3NwZWNfc3RyaW5nICgiaXJhZGlvLW5hbWUiLAorICAgICAgICAgICAgImlyYWRpby1u
YW1lIiwgIk5hbWUgb2YgdGhlIHN0cmVhbSIsIE5VTEwsIChHUGFyYW1GbGFncykgKEdfUEFSQU1f
UkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkgKG9rbGFzcywKKyAgICAgICAgUFJPUF9JUkFESU9fR0VOUkUsCisg
ICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJpcmFkaW8tZ2VucmUiLAorICAgICAgICAgICAg
ImlyYWRpby1nZW5yZSIsICJHZW5yZSBvZiB0aGUgc3RyZWFtIiwgTlVMTCwgKEdQYXJhbUZsYWdz
KSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAob2tsYXNzLAorICAgICAgICBQUk9QX0lSQURJ
T19VUkwsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJpcmFkaW8tdXJsIiwKKyAgICAg
ICAgICAgICJpcmFkaW8tdXJsIiwKKyAgICAgICAgICAgICJIb21lcGFnZSBVUkwgZm9yIHJhZGlv
IHN0cmVhbSIsIE5VTEwsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFN
X1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkg
KG9rbGFzcywKKyAgICAgICAgUFJPUF9JUkFESU9fVElUTEUsCisgICAgICAgIGdfcGFyYW1fc3Bl
Y19zdHJpbmcgKCJpcmFkaW8tdGl0bGUiLAorICAgICAgICAgICAgImlyYWRpby10aXRsZSIsCisg
ICAgICAgICAgICAiTmFtZSBvZiBjdXJyZW50bHkgcGxheWluZyBzb25nIiwgTlVMTCwgKEdQYXJh
bUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisK
KyAgICBla2xhc3MtPmNoYW5nZV9zdGF0ZSA9IHdlYmtpdF93ZWJfc3JjX2NoYW5nZV9zdGF0ZTsK
KworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYmtpdFdlYlNy
Y1ByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfaW5pdChXZWJraXRX
ZWJTcmMqIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Via2l0V2ViU3Jj
Q2xhc3MqIGdfY2xhc3MpCit7CisgICAgR3N0UGFkVGVtcGxhdGUqIHBhZF90ZW1wbGF0ZSA9IGdz
dF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCgmc3JjX3RlbXBsYXRlKTsKKyAgICBHc3RQYWQqIHRh
cmdldHBhZDsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2ID0gV0VCS0lUX1dFQl9TUkNf
R0VUX1BSSVZBVEUoc3JjKTsKKworICAgIHNyYy0+cHJpdiA9IHByaXY7CisKKyAgICBwcml2LT5j
bGllbnQgPSBuZXcgU3RyZWFtaW5nQ2xpZW50KHNyYyk7CisKKyAgICBwcml2LT5zcmNwYWQgPSBn
c3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXRfZnJvbV90ZW1wbGF0ZSgic3JjIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZF90
ZW1wbGF0ZSk7CisKKyAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UKHNyYyksIHBy
aXYtPnNyY3BhZCk7CisKKyAgICBwcml2LT5hcHBzcmMgPSBHU1RfQVBQX1NSQyAoZ3N0X2VsZW1l
bnRfZmFjdG9yeV9tYWtlKCJhcHBzcmMiLCBOVUxMKSk7CisgICAgaWYgKCFwcml2LT5hcHBzcmMp
IHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJGYWlsZWQgdG8gY3JlYXRlIGdpb3N0
cmVhbXNyYyIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ3N0X2Jpbl9hZGQoR1NU
X0JJTihzcmMpLCBHU1RfRUxFTUVOVChwcml2LT5hcHBzcmMpKTsKKworICAgIHRhcmdldHBhZCA9
IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKEdTVF9FTEVNRU5UKHByaXYtPmFwcHNyYyksICJz
cmMiKTsKKyAgICBnc3RfZ2hvc3RfcGFkX3NldF90YXJnZXQoR1NUX0dIT1NUX1BBRChwcml2LT5z
cmNwYWQpLCB0YXJnZXRwYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYodGFyZ2V0cGFkKTsKKwor
ICAgIGdzdF9hcHBfc3JjX3NldF9jYWxsYmFja3MocHJpdi0+YXBwc3JjLCAmYXBwc3JjX2NhbGxi
YWNrcywgc3JjLCAwKTsKKyAgICBnc3RfYXBwX3NyY19zZXRfZW1pdF9zaWduYWxzKHByaXYtPmFw
cHNyYywgRkFMU0UpOworICAgIGdzdF9hcHBfc3JjX3NldF9zdHJlYW1fdHlwZShwcml2LT5hcHBz
cmMsIEdTVF9BUFBfU1RSRUFNX1RZUEVfU0VFS0FCTEUpOworICAgIGdzdF9hcHBfc3JjX3NldF9t
YXhfYnl0ZXMocHJpdi0+YXBwc3JjLCA1MTIgKiAxMDI0KTsKKworICAgIHdlYmtpdF93ZWJfc3Jj
X3N0b3Aoc3JjKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfZmluYWxpemUoR09i
amVjdCogb2JqZWN0KQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMo
b2JqZWN0KTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2ID0gc3JjLT5wcml2OworCisg
ICAgZGVsZXRlIHByaXYtPmNsaWVudDsKKyAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKworICAgIEdT
VF9DQUxMX1BBUkVOVChHX09CSkVDVF9DTEFTUywgZmluYWxpemUsICgoR09iamVjdCogKShzcmMp
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMq
IHBzcGVjKQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMob2JqZWN0
KTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2ID0gc3JjLT5wcml2OworCisgICAgc3dp
dGNoIChwcm9wX2lkKSB7CisgICAgICAgIGNhc2UgUFJPUF9JUkFESU9fTU9ERToKKyAgICAgICAg
ICAgIHByaXYtPmlyYWRpb19tb2RlID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19nZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJf
U1JDKG9iamVjdCk7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IHNyYy0+cHJpdjsK
KworICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgICAgICBjYXNlIFBST1BfSVJBRElPX01PREU6
CisgICAgICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgcHJpdi0+aXJhZGlvX21v
ZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUFJPUF9JUkFESU9fTkFNRToK
KyAgICAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHByaXYtPmlyYWRpb19uYW1l
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBST1BfSVJBRElPX0dFTlJFOgor
ICAgICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgcHJpdi0+aXJhZGlvX2dlbnJl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgIGNhc2UgUFJPUF9JUkFESU9fVVJMOgorICAg
ICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgcHJpdi0+aXJhZGlvX3VybCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICBjYXNlIFBST1BfSVJBRElPX1RJVExFOgorICAgICAg
ICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgcHJpdi0+aXJhZGlvX3RpdGxlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3N0
b3AoV2Via2l0V2ViU3JjKiBzcmMpCit7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSAqcHJpdiA9
IHNyYy0+cHJpdjsKKworICAgIGlmIChwcml2LT5yZXNvdXJjZUhhbmRsZSkgeworICAgICAgICBw
cml2LT5yZXNvdXJjZUhhbmRsZS0+Y2FuY2VsKCk7CisgICAgICAgIHByaXYtPnJlc291cmNlSGFu
ZGxlLnJlbGVhc2UoKTsKKyAgICB9CisgICAgcHJpdi0+cmVzb3VyY2VIYW5kbGUgPSAwOworCisg
ICAgaWYgKHByaXYtPmZyYW1lKQorICAgICAgICBwcml2LT5mcmFtZS0+ZGVyZWYoKTsKKyAgICBw
cml2LT5mcmFtZSA9IDA7CisKKyAgICBpZiAocHJpdi0+cmVzb3VyY2VSZXF1ZXN0KQorICAgICAg
ICBkZWxldGUgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0OworICAgIHByaXYtPnJlc291cmNlUmVxdWVz
dCA9IDA7CisKKyAgICBpZiAocHJpdi0+bmVlZF9kYXRhX2lkKQorICAgICAgICBnX3NvdXJjZV9y
ZW1vdmUocHJpdi0+bmVlZF9kYXRhX2lkKTsKKyAgICBwcml2LT5uZWVkX2RhdGFfaWQgPSAwOwor
CisgICAgaWYgKHByaXYtPmVub3VnaF9kYXRhX2lkKQorICAgICAgICBnX3NvdXJjZV9yZW1vdmUo
cHJpdi0+ZW5vdWdoX2RhdGFfaWQpOworICAgIHByaXYtPmVub3VnaF9kYXRhX2lkID0gMDsKKwor
ICAgIGlmIChwcml2LT5zZWVrX2lkKQorICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+c2Vl
a19pZCk7CisgICAgcHJpdi0+c2Vla19pZCA9IDA7CisKKyAgICBwcml2LT5wYXVzZWQgPSBGQUxT
RTsKKworICAgIGdfZnJlZShwcml2LT5pcmFkaW9fbmFtZSk7CisgICAgcHJpdi0+aXJhZGlvX25h
bWUgPSAwOworCisgICAgZ19mcmVlKHByaXYtPmlyYWRpb19nZW5yZSk7CisgICAgcHJpdi0+aXJh
ZGlvX2dlbnJlID0gMDsKKworICAgIGdfZnJlZShwcml2LT5pcmFkaW9fdXJsKTsKKyAgICBwcml2
LT5pcmFkaW9fdXJsID0gMDsKKworICAgIGdfZnJlZShwcml2LT5pcmFkaW9fdGl0bGUpOworICAg
IHByaXYtPmlyYWRpb190aXRsZSA9IDA7CisKKyAgICBnc3RfYXBwX3NyY19zZXRfY2Fwcyhwcml2
LT5hcHBzcmMsIE5VTEwpOworCisgICAgcHJpdi0+b2Zmc2V0ID0gMDsKKyAgICBwcml2LT5zaXpl
ID0gMDsKKyAgICBwcml2LT5zZWVrYWJsZSA9IEZBTFNFOworCisgICAgR1NUX0RFQlVHX09CSkVD
VChzcmMsICJTdG9wcGVkIHJlcXVlc3QiKTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93
ZWJfc3JjX3N0YXJ0KFdlYmtpdFdlYlNyYyogc3JjKQoreworICAgIFdlYmtpdFdlYlNyY1ByaXZh
dGUgKnByaXYgPSBzcmMtPnByaXY7CisKKyAgICBpZiAoIXByaXYtPnVyaSkgeworICAgICAgICBH
U1RfRVJST1JfT0JKRUNUKHNyYywgIk5vIFVSSSBwcm92aWRlZCIpOworICAgICAgICByZXR1cm4g
RkFMU0U7CisgICAgfQorCisgICAgS1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgcHJpdi0+dXJpKTsK
KyAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QgPSBuZXcgUmVzb3VyY2VSZXF1ZXN0KHVybCk7Cisg
ICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdEJh
c2U6OlRhcmdldElzTWVkaWEpOworICAgIHByaXYtPnJlc291cmNlUmVxdWVzdC0+c2V0QWxsb3dD
b29raWVzKHRydWUpOworCisgICAgaWYgKHByaXYtPmZyYW1lKSB7CisgICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IHByaXYtPmZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICBpZiAoZG9jdW1l
bnQpCisgICAgICAgICAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNldEhUVFBSZWZlcnJlcihk
b2N1bWVudC0+ZG9jdW1lbnRVUkkoKSk7CisKKyAgICAgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9
IHByaXYtPmZyYW1lLT5sb2FkZXIoKTsKKyAgICAgICAgaWYgKGxvYWRlcikKKyAgICAgICAgICAg
IGxvYWRlci0+YWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdCgqcHJpdi0+cmVzb3Vy
Y2VSZXF1ZXN0KTsKKyAgICB9CisKKyAgICBpZiAocHJpdi0+cmVxdWVzdGVkX29mZnNldCkgewor
ICAgICAgICBnY2hhciAqdmFsID0gZ19zdHJkdXBfcHJpbnRmKCJieXRlcz0lIiBHX0dVSU5UNjRf
Rk9STUFUICItIiwgcHJpdi0+cmVxdWVzdGVkX29mZnNldCk7CisgICAgICAgIHByaXYtPnJlc291
cmNlUmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKCJSYW5nZSIsIHZhbCk7CisgICAgICAgIGdf
ZnJlZSh2YWwpOworICAgIH0KKworICAgIGlmIChwcml2LT5pcmFkaW9fbW9kZSkKKyAgICAgICAg
cHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5zZXRIVFRQSGVhZGVyRmllbGQoImljeS1tZXRhZGF0YSIs
ICIxIik7CisKKyAgICAvLyBOZWVkZWQgdG8gdXNlIERMTkEgc3RyZWFtaW5nIHNlcnZlcnMKKyAg
ICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZCgidHJhbnNmZXJNb2Rl
LmRsbmEiLCAiU3RyZWFtaW5nIik7CisKKyAgICBwcml2LT5yZXNvdXJjZUhhbmRsZSA9IFJlc291
cmNlSGFuZGxlOjpjcmVhdGUoKnByaXYtPnJlc291cmNlUmVxdWVzdCwgcHJpdi0+Y2xpZW50LCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBpZiAoIXByaXYtPnJlc291cmNlSGFuZGxlKSB7
CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiRmFpbGVkIHRvIGNyZWF0ZSBSZXNvdXJj
ZUhhbmRsZSIpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJTdGFydGVkIHJlcXVlc3QiKTsKKworICAgIHJldHVybiBUUlVFOworfQor
CitzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2Via2l0X3dlYl9zcmNfY2hhbmdlX3N0YXRl
KEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCit7CisgICAg
R3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOworICAg
IFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoZWxlbWVudCk7CisgICAgV2Via2l0
V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIHN3aXRjaCAodHJhbnNpdGlv
bikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZOgorICAgICAgICBp
ZiAoIXByaXYtPmFwcHNyYykgeworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdl
KGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N0X21pc3Np
bmdfZWxlbWVudF9tZXNzYWdlX25ldyhlbGVtZW50LCAiYXBwc3JjIikpOworICAgICAgICAgICAg
R1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBNSVNTSU5HX1BMVUdJTiwgKDApLCAoIm5vIGFw
cHNyYyIpKTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MocGFyZW50X2NsYXNzKS0+Y2hhbmdl
X3N0YXRlKGVsZW1lbnQsIHRyYW5zaXRpb24pOworICAgIGlmIChHX1VOTElLRUxZKHJldCA9PSBH
U1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpKSB7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3Jj
LCAiU3RhdGUgY2hhbmdlIGZhaWxlZCIpOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKwor
ICAgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFE
WV9UT19QQVVTRUQ6CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUkVBRFktPlBBVVNF
RCIpOworICAgICAgICBpZiAoIXdlYmtpdF93ZWJfc3JjX3N0YXJ0KHNyYykpCisgICAgICAgICAg
ICByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CisgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUEFVU0VELT5SRUFEWSIpOworICAgICAgICB3ZWJraXRfd2ViX3NyY19zdG9w
KHNyYyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHJldHVybiByZXQ7Cit9CisKKy8qKiogR1NUVVJJSEFORExFUiBJTlRFUkZBQ0Ug
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3Rh
dGljIEdzdFVSSVR5cGUgd2Via2l0X3dlYl9zcmNfdXJpX2dldF90eXBlKHZvaWQpCit7CisgICAg
cmV0dXJuIEdTVF9VUklfU1JDOworfQorCitzdGF0aWMgZ2NoYXIqKiB3ZWJraXRfd2ViX3NyY191
cmlfZ2V0X3Byb3RvY29scyh2b2lkKQoreworICAgIHN0YXRpYyBnY2hhciogcHJvdG9jb2xzW10g
PSB7KGdjaGFyKikgImh0dHAiLCAoZ2NoYXIqKSAiaHR0cHMiLCAwIH07CisKKyAgICByZXR1cm4g
cHJvdG9jb2xzOworfQorCitzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfc3JjX3VyaV9n
ZXRfdXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMg
PSBXRUJLSVRfV0VCX1NSQyhoYW5kbGVyKTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2
ID0gc3JjLT5wcml2OworCisgICAgcmV0dXJuIHByaXYtPnVyaTsKK30KKworc3RhdGljIGdib29s
ZWFuIHdlYmtpdF93ZWJfc3JjX3VyaV9zZXRfdXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIsIGNv
bnN0IGdjaGFyKiB1cmkpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NS
QyhoYW5kbGVyKTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2ID0gc3JjLT5wcml2Owor
CisgICAgaWYgKEdTVF9TVEFURShzcmMpID49IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICAgICAg
R1NUX0VSUk9SX09CSkVDVCAoc3JjLCAiVVJJIGNhbiBvbmx5IGJlIHNldCBpbiBzdGF0ZXMgPCBQ
QVVTRUQiKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0gZWxzZSBpZiAodXJpICYmICFn
X2FzY2lpX3N0cm5jYXNlY21wKCJodHRwIiwgdXJpLCA0KSAmJiAhZ19hc2NpaV9zdHJuY2FzZWNt
cCAoImh0dHAiLCB1cmksIDUpKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNyYywgIklu
dmFsaWQgVVJJICclcyciLCB1cmkpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisg
ICAgZ19mcmVlIChwcml2LT51cmkpOworICAgIHByaXYtPnVyaSA9IHVyaSA/IGdfc3RyZHVwKHVy
aSkgOiAwOworICAgIAorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3NyY191cmlfaGFuZGxlcl9pbml0KGdwb2ludGVyIGdfaWZhY2UsIGdwb2ludGVyIGlmYWNl
X2RhdGEpCit7CisgICAgR3N0VVJJSGFuZGxlckludGVyZmFjZSogaWZhY2UgPSAoR3N0VVJJSGFu
ZGxlckludGVyZmFjZSAqKSBnX2lmYWNlOworCisgICAgaWZhY2UtPmdldF90eXBlID0gd2Via2l0
X3dlYl9zcmNfdXJpX2dldF90eXBlOworICAgIGlmYWNlLT5nZXRfcHJvdG9jb2xzID0gd2Via2l0
X3dlYl9zcmNfdXJpX2dldF9wcm90b2NvbHM7CisgICAgaWZhY2UtPmdldF91cmkgPSB3ZWJraXRf
d2ViX3NyY191cmlfZ2V0X3VyaTsKKyAgICBpZmFjZS0+c2V0X3VyaSA9IHdlYmtpdF93ZWJfc3Jj
X3VyaV9zZXRfdXJpOworfQorCisvLyBhcHBzcmMgY2FsbGJhY2tzCisKK3N0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3NyY19uZWVkX2RhdGFfbWFpbl9jYihXZWJraXRXZWJTcmMqIHNyYykKK3sK
KyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2ID0gc3JjLT5wcml2OworICAgIAorICAgIFJl
c291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBwcml2LT5yZXNvdXJjZUhhbmRsZS0+Z2V0SW50ZXJu
YWwoKTsKKyAgICBpZiAoZC0+bV9tc2cpCisgICAgICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21l
c3NhZ2UoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIGQtPm1fbXNnKTsKKworICAg
IHByaXYtPnBhdXNlZCA9IEZBTFNFOworICAgIHByaXYtPm5lZWRfZGF0YV9pZCA9IDA7CisgICAg
cmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19uZWVkX2RhdGFf
Y2IoR3N0QXBwU3JjKiBhcHBzcmMsIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQor
eworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkModXNlcl9kYXRhKTsKKyAg
ICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2ID0gc3JjLT5wcml2OworCisgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJOZWVkIG1vcmUgZGF0YTogJXUiLCBsZW5ndGgpOworICAgIGlmIChwcml2
LT5uZWVkX2RhdGFfaWQgfHwgIXByaXYtPnBhdXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cHJpdi0+bmVlZF9kYXRhX2lkID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwg
MCwgKEdTb3VyY2VGdW5jKSB3ZWJraXRfd2ViX3NyY19uZWVkX2RhdGFfbWFpbl9jYiwgZ3N0X29i
amVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKK30KKwor
c3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX2Vub3VnaF9kYXRhX21haW5fY2IoV2Via2l0
V2ViU3JjKiBzcmMpCit7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IHNyYy0+cHJp
djsKKworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBwcml2LT5yZXNvdXJjZUhhbmRs
ZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2FnZShSZXNvdXJj
ZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgZC0+bV9tc2cpOworICAgIAorICAgIHByaXYtPnBh
dXNlZCA9IFRSVUU7CisgICAgcHJpdi0+ZW5vdWdoX2RhdGFfaWQgPSAwOworICAgIHJldHVybiBG
QUxTRTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfZW5vdWdoX2RhdGFfY2IoR3N0
QXBwU3JjKiBhcHBzcmMsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgICBXZWJraXRXZWJTcmMq
IHNyYyA9IFdFQktJVF9XRUJfU1JDKHVzZXJfZGF0YSk7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0
ZSAqcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiSGF2ZSBl
bm91Z2ggZGF0YSIpOworICAgIGlmIChwcml2LT5lbm91Z2hfZGF0YV9pZCB8fCBwcml2LT5wYXVz
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPmVub3VnaF9kYXRhX2lkID0gZ190aW1l
b3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJraXRfd2Vi
X3NyY19lbm91Z2hfZGF0YV9tYWluX2NiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lO
b3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl9zcmNfc2Vla19tYWluX2NiKFdlYmtpdFdlYlNyYyogc3JjKQoreworICAgIHdlYmtpdF93ZWJf
c3JjX3N0b3Aoc3JjKTsKKyAgICB3ZWJraXRfd2ViX3NyY19zdGFydChzcmMpOworCisgICAgcmV0
dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfc2Vla19kYXRh
X2NiKEdzdEFwcFNyYyogYXBwc3JjLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNlcl9kYXRh
KQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkModXNlcl9kYXRhKTsK
KyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2ID0gc3JjLT5wcml2OworCisgICAgR1NUX0RF
QlVHX09CSkVDVChzcmMsICJTZWVraW5nIHRvIG9mZnNldDogJSIgR19HVUlOVDY0X0ZPUk1BVCwg
b2Zmc2V0KTsKKyAgICBpZiAob2Zmc2V0ID09IHByaXYtPm9mZnNldCkKKyAgICAgICAgcmV0dXJu
IFRSVUU7CisKKyAgICBpZiAoIXByaXYtPnNlZWthYmxlKQorICAgICAgICByZXR1cm4gRkFMU0U7
CisgICAgaWYgKG9mZnNldCA+IHByaXYtPnNpemUpCisgICAgICAgIHJldHVybiBGQUxTRTsKKwor
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiRG9pbmcgcmFuZ2UtcmVxdWVzdCBzZWVrIik7Cisg
ICAgcHJpdi0+cmVxdWVzdGVkX29mZnNldCA9IG9mZnNldDsKKyAgICBpZiAocHJpdi0+c2Vla19p
ZCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNlZWtfaWQpOworICAgIHByaXYtPnNl
ZWtfaWQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ISUdILCAwLCAoR1NvdXJjZUZ1
bmMpIHdlYmtpdF93ZWJfc3JjX3NlZWtfbWFpbl9jYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdE
ZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKKyAgICAKKyAgICByZXR1cm4gVFJVRTsK
K30KKwordm9pZCB3ZWJraXRfd2ViX3NyY19zZXRfZnJhbWUoV2Via2l0V2ViU3JjKiBzcmMsIFdl
YkNvcmU6OkZyYW1lKiBmcmFtZSkKK3sKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2ID0g
c3JjLT5wcml2OworCisgICAgZnJhbWUtPnJlZigpOworICAgIHByaXYtPmZyYW1lID0gZnJhbWU7
Cit9CisKK1N0cmVhbWluZ0NsaWVudDo6U3RyZWFtaW5nQ2xpZW50KFdlYmtpdFdlYlNyYyogc3Jj
KSA6IG1fc3JjKHNyYykKK3sKKworfQorCitTdHJlYW1pbmdDbGllbnQ6On5TdHJlYW1pbmdDbGll
bnQoKQoreworCit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikK
K3sKK30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIFdlYmtp
dFdlYlNyY1ByaXZhdGUgKnByaXYgPSBtX3NyYy0+cHJpdjsKKworICAgIEdTVF9ERUJVR19PQkpF
Q1QobV9zcmMsICJSZWNlaXZlZCByZXNwb25zZTogJWQiLCByZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpKTsKKworICAgIC8vIElmIHdlIHNlZWtlZCB3ZSBuZWVkIDIwNiA9PSBQQVJUSUFMX0NPTlRF
TlQKKyAgICBpZiAocHJpdi0+cmVxdWVzdGVkX29mZnNldCAmJiByZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpICE9IDIwNikgeworICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgUkVTT1VS
Q0UsIFJFQUQsIChOVUxMKSwgKE5VTEwpKTsKKyAgICAgICAgd2Via2l0X3dlYl9zcmNfc3RvcCht
X3NyYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsb25nIGxvbmcgbGVuZ3RoID0g
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+IDApIHsK
KyAgICAgICAgbGVuZ3RoICs9IHByaXYtPnJlcXVlc3RlZF9vZmZzZXQ7CisgICAgICAgIGdzdF9h
cHBfc3JjX3NldF9zaXplKHByaXYtPmFwcHNyYywgbGVuZ3RoKTsKKyAgICB9CisKKyAgICBwcml2
LT5zaXplID0gbGVuZ3RoID49IDAgPyBsZW5ndGggOiAwOworICAgIHByaXYtPnNlZWthYmxlID0g
bGVuZ3RoID4gMCAmJiBnX2FzY2lpX3N0cmNhc2VjbXAgKCJub25lIiwgcmVzcG9uc2UuaHR0cEhl
YWRlckZpZWxkKCJBY2NlcHQtUmFuZ2VzIikudXRmOCgpLmRhdGEoKSkgIT0gMDsKKworICAgIC8v
IGljZWNhc3Qgc3R1ZmYKKyAgICBTdHJpbmcgdmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoImljeS1tZXRhaW50Iik7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Z2NoYXIgKmVuZHB0ciA9IE5VTEw7CisgICAgICAgIGdpbnQ2NCBpY3lfbWV0YWludCA9IGdfYXNj
aWlfc3RydG9sbCh2YWx1ZS51dGY4KCkuZGF0YSgpLCAmZW5kcHRyLCAxMCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgaWYgKGVuZHB0ciAmJiAqZW5kcHRyID09ICdcMCcgJiYgaWN5X21ldGFpbnQg
PiAwKSB7CisgICAgICAgICAgICBHc3RDYXBzICpjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSgi
YXBwbGljYXRpb24veC1pY3kiLCAibWV0YWRhdGEtaW50ZXJ2YWwiLCBHX1RZUEVfSU5ULCAoZ2lu
dCkgaWN5X21ldGFpbnQsIE5VTEwpOworCisgICAgICAgICAgICBnc3RfYXBwX3NyY19zZXRfY2Fw
cyhwcml2LT5hcHBzcmMsIGNhcHMpOworICAgICAgICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHc3RUYWdMaXN0KiB0YWdzID0gZ3N0X3RhZ19saXN0
X25ldygpOworICAgIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktbmFtZSIp
OworICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2LT5pcmFk
aW9fbmFtZSk7CisgICAgICAgIHByaXYtPmlyYWRpb19uYW1lID0gZ19zdHJkdXAodmFsdWUudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX3NyYyksICJp
cmFkaW8tbmFtZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdfTUVS
R0VfUkVQTEFDRSwgR1NUX1RBR19PUkdBTklaQVRJT04sIHByaXYtPmlyYWRpb19uYW1lLCBOVUxM
KTsKKyAgICB9CisgICAgdmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImljeS1nZW5y
ZSIpOworICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2LT5p
cmFkaW9fZ2VucmUpOworICAgICAgICBwcml2LT5pcmFkaW9fZ2VucmUgPSBnX3N0cmR1cCh2YWx1
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3Jj
KSwgImlyYWRpby1nZW5yZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9U
QUdfTUVSR0VfUkVQTEFDRSwgR1NUX1RBR19HRU5SRSwgcHJpdi0+aXJhZGlvX2dlbnJlLCBOVUxM
KTsKKyAgICB9CisgICAgdmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImljeS11cmwi
KTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+aXJh
ZGlvX3VybCk7CisgICAgICAgIHByaXYtPmlyYWRpb191cmwgPSBnX3N0cmR1cCh2YWx1ZS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwgImly
YWRpby11cmwiKTsKKyAgICAgICAgZ3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01FUkdF
X1JFUExBQ0UsIEdTVF9UQUdfTE9DQVRJT04sIHByaXYtPmlyYWRpb191cmwsIE5VTEwpOworICAg
IH0KKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LXRpdGxlIik7Cisg
ICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmlyYWRpb190
aXRsZSk7CisgICAgICAgIHByaXYtPmlyYWRpb190aXRsZSA9IGdfc3RyZHVwKHZhbHVlLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMpLCAiaXJh
ZGlvLXRpdGxlIik7CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RBR19NRVJH
RV9SRVBMQUNFLCBHU1RfVEFHX1RJVExFLCBwcml2LT5pcmFkaW9fdGl0bGUsIE5VTEwpOworICAg
IH0KKworICAgIGlmIChnc3RfdGFnX2xpc3RfaXNfZW1wdHkodGFncykpCisgICAgICAgIGdzdF90
YWdfbGlzdF9mcmVlKHRhZ3MpOworICAgIGVsc2UKKyAgICAgICAgZ3N0X2VsZW1lbnRfZm91bmRf
dGFnc19mb3JfcGFkKEdTVF9FTEVNRU5UKG1fc3JjKSwgbV9zcmMtPnByaXYtPnNyY3BhZCwgdGFn
cyk7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVj
ZWl2ZWQpCit7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IG1fc3JjLT5wcml2Owor
CisgICAgR1NUX0xPR19PQkpFQ1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBsZW5n
dGgpOworCisgICAgaWYgKHByaXYtPnNlZWtfaWQgfHwgaGFuZGxlICE9IHByaXYtPnJlc291cmNl
SGFuZGxlKSB7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QobV9zcmMsICJTZWVrIGluIHByb2dy
ZXNzLCBpZ25vcmluZyBkYXRhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHc3RC
dWZmZXIgKmJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOworCisgICAg
bWVtY3B5KEdTVF9CVUZGRVJfREFUQShidWZmZXIpLCBkYXRhLCBsZW5ndGgpOworICAgIEdTVF9C
VUZGRVJfT0ZGU0VUKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CisgICAgcHJpdi0+b2Zmc2V0ICs9
IGxlbmd0aDsKKyAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQoYnVmZmVyKSA9IHByaXYtPm9mZnNl
dDsKKworICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJp
di0+YXBwc3JjLCBidWZmZXIpOworICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0sgJiYgcmV0ICE9
IEdTVF9GTE9XX1VORVhQRUNURUQpIHsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IobV9zcmMs
IENPUkUsIEZBSUxFRCwgKE5VTEwpLCAoTlVMTCkpOworICAgIH0KK30KKwordm9pZCBTdHJlYW1p
bmdDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKQoreworICAgIEdTVF9E
RUJVR19PQkpFQ1QobV9zcmMsICJIYXZlIEVPUyIpOworICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9z
dHJlYW0obV9zcmMtPnByaXYtPmFwcHNyYyk7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50Ojpk
aWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7Cisg
ICAgR1NUX0VSUk9SX09CSkVDVChtX3NyYywgIkhhdmUgZmFpbHVyZTogJXMiLCBlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIEdTVF9FTEVNRU5UX0VSUk9S
KG1fc3JjLCBSRVNPVVJDRSwgRkFJTEVELCAoIiVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKS51dGY4KCkuZGF0YSgpKSwgKE5VTEwpKTsKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3Ry
ZWFtKG1fc3JjLT5wcml2LT5hcHBzcmMpOworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6d2Fz
QmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCit7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50Ojpj
YW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxlKikKK3sKK30KKwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTVjYTBjCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgU2ViYXN0aWFu
IERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFdFQl9TT1VSQ0VfR1NUUkVBTUVSX0gKKyNkZWZp
bmUgV0VCX1NPVVJDRV9HU1RSRUFNRVJfSAorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1
ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+CisKKyNpbmNsdWRlICJGcmFtZS5oIgorCitHX0JFR0lO
X0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX1NSQyAgICAgICAgICAgICh3ZWJraXRf
d2ViX3NyY19nZXRfdHlwZSAoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkMob2JqKSAgICAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9T
UkMsIFdlYmtpdFdlYlNyYykpCisjZGVmaW5lIFdFQktJVF9XRUJfU1JDX0NMQVNTKGtsYXNzKSAg
ICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9TUkMs
IFdlYmtpdFdlYlNyY0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TUkMob2JqKSAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9T
UkMpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NSQ19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVD
S19DTEFTU19UWVBFICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9XRUJfU1JDKSkKKwordHlwZWRlZiBz
dHJ1Y3QgX1dlYmtpdFdlYlNyYyAgICAgICAgV2Via2l0V2ViU3JjOwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYmtpdFdlYlNyY0NsYXNzICAgV2Via2l0V2ViU3JjQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBf
V2Via2l0V2ViU3JjUHJpdmF0ZSBXZWJraXRXZWJTcmNQcml2YXRlOworCitzdHJ1Y3QgX1dlYmtp
dFdlYlNyYyB7CisgICAgR3N0QmluIHBhcmVudDsKKworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUg
KnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYmtpdFdlYlNyY0NsYXNzIHsKKyAgICBHc3RCaW5DbGFz
cyBwYXJlbnRfY2xhc3M7Cit9OworCitHVHlwZSB3ZWJraXRfd2ViX3NyY19nZXRfdHlwZSh2b2lk
KTsKK3ZvaWQgIHdlYmtpdF93ZWJfc3JjX3NldF9mcmFtZShXZWJraXRXZWJTcmMqIHNyYywgV2Vi
Q29yZTo6RnJhbWUqIGZyYW1lKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMzkyNDI5NC4uNTQxNWZmYiAxMDA2
NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNjk2LDYgKzY5Niw3
IEBAIGZpCiBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCiAgICBQS0dfQ0hF
Q0tfTU9EVUxFUyhbR1NUUkVBTUVSXSwKICAgICAgICAgICAgICAgICAgICAgIFtnc3RyZWFtZXIt
MC4xMCA+PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KKyAgICAgICAgICAgICAgICAgICAg
IGdzdHJlYW1lci1hcHAtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWJhc2Ut
MC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMAogICAgICAg
ICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBsdWdpbnMtYmFzZS0wLjEwCi0tIAoxLjYuNgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47760</attachid>
            <date>2010-01-30 02:38:01 -0800</date>
            <delta_ts>2010-01-30 02:43:44 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>6754</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSBkMGFjOTMxNTMyMWY5YjFlNGM2NDk5NGNhNDQ0ZDBlNjdlY2IxNWZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogU2F0LCAzMCBKYW4gMjAxMCAx
MTozNjo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEwICsrKysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxNyArKysrKysrCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKystCiAuLi4vZ3JhcGhpY3MvZ3RrL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgICB8ICAgNTAgKysrKy0tLS0tLS0tLS0tLS0tLQogY29u
ZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsK
IDUgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDI1MDY2YzEuLjRlMTM5ZDEgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
MC0wMS0zMCAgU2ViYXN0aWFuIERyw7ZnZSAgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNv
LnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBnc3RyZWFtZXItYXBwLTAuMTAgdG8gY29uZmlndXJlLmFjCisgICAgICAgIAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMTcKKworICAgICAgICAq
IGNvbmZpZ3VyZS5hYzoKKwogMjAxMC0wMS0yNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDQwMjExZTkuLjRlYWY0ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMzAgIFNl
YmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBHU3RyZWFt
ZXIgSFRUUC9IVFRQUyBzb3VyY2UsIHVzaW5nIFdlYktpdCBpbmZyYXN0cnVjdHVyZQorICAgICAg
ICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzE3
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpkb0dzdEluaXQpOgorICAgICAgICBBZGQgYSBHU3RyZWFtZXIgSFRUUC9IVFRQUyBzb3Vy
Y2UsIHVzaW5nIHRoZSBXZWJLaXQgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgIFRoaXMgbWFrZXMg
c3VyZSB0aGF0IHJlZmVyZXIsIGNvb2tpZXMsIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uCisg
ICAgICAgIGFuZCBhbGwga2luZHMgb2Ygb3RoZXIgY29udGV4dCBhcmUgcGFzc2VkIHRvIEdTdHJl
YW1lciBmb3Igd2Vic2l0ZXMKKyAgICAgICAgbGlrZSBWaW1lbyBvciBZb3VUdWJlLgorCiAyMDEw
LTAxLTI5ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhODMwYmNkLi5iYmI0MjA2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTI0MDAsMTIgKzI0MDAsMTUgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuaCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5jcHAgXAotCVdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaAorCVdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaCBcCisJV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKIAogd2ViY29y
ZV9saWJhZGQgKz0gXAogCS1sZ3N0aW50ZXJmYWNlcy0wLjEwIFwKIAktbGdzdHZpZGVvLTAuMTAg
XAotCS1sZ3N0cGJ1dGlscy0wLjEwCisJLWxnc3RwYnV0aWxzLTAuMTAgXAorCS1nc3RhcHAtMC4x
MAogCiBlbmRpZiAjIEVORCBFTkFCTEVfVklERU8KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
aW5kZXggNDFmOTBmMC4uYzA1ZDM0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC00
Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlZpZGVvU2lu
a0dTdHJlYW1lci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgIldlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5oIgogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9p
bnRlcmZhY2VzL21peGVyLmg+CkBAIC0xMzYsNDQgKzEzNywxMiBAQCB2b2lkIG1lZGlhUGxheWVy
UHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICpvYmplY3QsIEdQYXJhbVNwZWMg
KnBzcGVjLAogICAgIGdfb2JqZWN0X2dldChtcC0+bV9wbGF5QmluLCAic291cmNlIiwgJmVsZW1l
bnQsIE5VTEwpOwogICAgIGdzdF9vYmplY3RfcmVwbGFjZSgoR3N0T2JqZWN0KiopICZtcC0+bV9z
b3VyY2UsIChHc3RPYmplY3QqKSBlbGVtZW50KTsKIAotICAgIGlmIChlbGVtZW50KSB7Ci0gICAg
ICAgIEdQYXJhbVNwZWMqIHBzcGVjID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09C
SkVDVF9HRVRfQ0xBU1MoZWxlbWVudCksICJjb29raWVzIik7CisgICAgaWYgKFdFQktJVF9JU19X
RUJfU1JDKGVsZW1lbnQpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3BsYXllci0+
ZnJhbWVWaWV3KCkgPworbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IDA7CiAK
LSAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlIHNvdXJjZSBlbGVtZW50IGhhcyBhIGNvb2tp
ZXMgcHJvcGVydHkKLSAgICAgICAgLy8gb2YgdGhlIGZvcm1hdCB3ZSBleHBlY3QKLSAgICAgICAg
aWYgKCFwc3BlYyB8fCBwc3BlYy0+dmFsdWVfdHlwZSAhPSBHX1RZUEVfU1RSVikKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAvLyBUaGVuIGdldCB0aGUgY29va2llcyBmb3IgdGhlIFVS
SSBhbmQgc2V0IHRoZW0KLSAgICAgICAgU291cFNlc3Npb24qIHNlc3Npb24gPSB3ZWJraXRfZ2V0
X2RlZmF1bHRfc2Vzc2lvbigpOwotICAgICAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBT
T1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQ
RV9DT09LSUVfSkFSKSk7Ci0KLSAgICAgICAgY2hhciogbG9jYXRpb247Ci0gICAgICAgIGdfb2Jq
ZWN0X2dldChlbGVtZW50LCAibG9jYXRpb24iLCAmbG9jYXRpb24sIE5VTEwpOwotCi0gICAgICAg
IFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJpX25ldyhsb2NhdGlvbik7Ci0gICAgICAgIGdfZnJlZShs
b2NhdGlvbik7Ci0KLSAgICAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2Fu
dCB0byBhY2Nlc3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KLSAgICAgICAgaWYgKGdfc3Ry
X2VxdWFsKHVyaS0+aG9zdCwgIm1vdmllcy5hcHBsZS5jb20iKSkKLSAgICAgICAgICAgIGdfb2Jq
ZWN0X3NldChlbGVtZW50LCAidXNlci1hZ2VudCIsICJRdWlja3RpbWUvNy4yLjAiLCBOVUxMKTsK
LQotICAgICAgICBjaGFyKiBjb29raWVzID0gc291cF9jb29raWVfamFyX2dldF9jb29raWVzKGNv
b2tpZUphciwgdXJpLCBGQUxTRSk7Ci0gICAgICAgIHNvdXBfdXJpX2ZyZWUodXJpKTsKLQotICAg
ICAgICBjaGFyKiBjb29raWVzU3RydltdID0ge2Nvb2tpZXMsIE5VTEx9OwotICAgICAgICBnX29i
amVjdF9zZXQoZWxlbWVudCwgImNvb2tpZXMiLCBjb29raWVzU3RydiwgTlVMTCk7Ci0gICAgICAg
IGdfZnJlZShjb29raWVzKTsKLQotICAgICAgICBGcmFtZSogZnJhbWUgPSBtcC0+bV9wbGF5ZXIt
PmZyYW1lVmlldygpID8gbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IDA7Ci0g
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiAw
OwotICAgICAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAgICAgICAgIEdzdFN0cnVjdHVyZSogZXh0
cmFIZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXcoImV4dHJhLWhlYWRlcnMiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVmZXJl
ciIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5kb2N1bWVudFVSSSgpLnV0ZjgoKS5kYXRh
KCksIDApOwotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJleHRyYS1oZWFkZXJz
IiwgZXh0cmFIZWFkZXJzLCBOVUxMKTsKLSAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShl
eHRyYUhlYWRlcnMpOwotICAgICAgICB9CisgICAgICAgIGlmIChmcmFtZSkKKwkgICAgd2Via2l0
X3dlYl9zcmNfc2V0X2ZyYW1lKFdFQktJVF9XRUJfU1JDKGVsZW1lbnQpLCBmcmFtZSk7CiAgICAg
fQogCiAgICAgZ3N0X29iamVjdF91bnJlZihlbGVtZW50KTsKQEAgLTI0NSwxMiArMjE0LDE1IEBA
IHN0YXRpYyBib29sIGRvR3N0SW5pdCgpCiAgICAgaWYgKCFnc3RJbml0aWFsaXplZCkgewogICAg
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGdzdEluaXRpYWxpemVkID0gZ3N0
X2luaXRfY2hlY2soMCwgMCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKCFnc3RJbml0
aWFsaXplZCkKKyAgICAgICAgaWYgKCFnc3RJbml0aWFsaXplZCkgewogICAgICAgICAgICAgTE9H
X1ZFUkJPU0UoTWVkaWEsICJDb3VsZCBub3QgaW5pdGlhbGl6ZSBHU3RyZWFtZXI6ICVzIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAidW5rbm93biBl
cnJvciBvY2N1cnJlZCIpOwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0bWVkaWFzcmMiLCBHU1RfUkFOS19Q
UklNQVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfREFU
QV9TUkMpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdHdlYnNy
YyIsIEdTVF9SQU5LX1BSSU1BUlkgKyAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9XRUJfU1JDKTsKKyAgICAgICAgfQogCiAgICAgfQogICAgIHJldHVy
biBnc3RJbml0aWFsaXplZDsKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5h
YwppbmRleCAzOTI0Mjk0Li41NDE1ZmZiIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIv
Y29uZmlndXJlLmFjCkBAIC02OTYsNiArNjk2LDcgQEAgZmkKIGlmIHRlc3QgIiRlbmFibGVfdmlk
ZW8iID0gInllcyI7IHRoZW4KICAgIFBLR19DSEVDS19NT0RVTEVTKFtHU1RSRUFNRVJdLAogICAg
ICAgICAgICAgICAgICAgICAgW2dzdHJlYW1lci0wLjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURf
VkVSU0lPTgorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWFwcC0wLjEwCiAgICAgICAg
ICAgICAgICAgICAgICBnc3RyZWFtZXItYmFzZS0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBn
c3RyZWFtZXItcGJ1dGlscy0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItcGx1
Z2lucy1iYXNlLTAuMTAKLS0gCjEuNi42LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47761</attachid>
            <date>2010-01-30 02:43:44 -0800</date>
            <delta_ts>2010-01-30 03:03:51 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>33165</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSBlZjM4MDM1OTVhYWJiNjgxNjA5NDcxNDcwYmZjNTQxZGNmYWFiM2M2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogU2F0LCAzMCBKYW4gMjAxMCAx
MTozNjo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDcgKy0KIC4uLi9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCAgIHwgICA1MCArLS0KIC4uLi9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDY5OCArKysrKysrKysrKysrKysrKysrKwogLi4uL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCAgICAgICAgfCAgIDU0ICsrCiBj
b25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogNyBmaWxlcyBjaGFuZ2VkLCA3OTggaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDM1OGU1OTcuLjFjY2ZkM2MgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMS0zMCAgU2Vi
YXN0aWFuIERyw7ZnZSAgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnc3RyZWFtZXIt
YXBwLTAuMTAgdG8gY29uZmlndXJlLmFjCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMTcKKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzoKKwogMjAxMC0wMS0yOSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZTA1NjAuLmY5OGI3ODAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTAtMDEtMzAgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJv
ZWdlQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBHU3RyZWFtZXIgSFRUUC9IVFRQUyBzb3VyY2UsIHVzaW5nIFdl
YktpdCBpbmZyYXN0cnVjdHVyZQorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzE3CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpkb0dzdEluaXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaDoKKyAg
ICAgICAgQWRkIGEgR1N0cmVhbWVyIEhUVFAvSFRUUFMgc291cmNlLCB1c2luZyB0aGUgV2ViS2l0
IGluZnJhc3RydWN0dXJlLgorICAgICAgICBUaGlzIG1ha2VzIHN1cmUgdGhhdCByZWZlcmVyLCBj
b29raWVzLCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICBhbmQgYWxsIGtpbmRz
IG9mIG90aGVyIGNvbnRleHQgYXJlIHBhc3NlZCB0byBHU3RyZWFtZXIgZm9yIHdlYnNpdGVzCisg
ICAgICAgIGxpa2UgVmltZW8gb3IgWW91VHViZS4KKwogMjAxMC0wMS0yOSAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgY29weWluZyBhbiBJREwgZmlsZSBpbiB0
byB0aGUgZnJhbWV3b3JrIHdyYXBwZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhODMwYmNkLi5iYmI0MjA2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTI0MDAsMTIgKzI0MDAsMTUgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuaCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5jcHAgXAotCVdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaAorCVdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBcCisJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKIAog
d2ViY29yZV9saWJhZGQgKz0gXAogCS1sZ3N0aW50ZXJmYWNlcy0wLjEwIFwKIAktbGdzdHZpZGVv
LTAuMTAgXAotCS1sZ3N0cGJ1dGlscy0wLjEwCisJLWxnc3RwYnV0aWxzLTAuMTAgXAorCS1nc3Rh
cHAtMC4xMAogCiBlbmRpZiAjIEVORCBFTkFCTEVfVklERU8KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggNDFmOTBmMC4uYzA1ZDM0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlZp
ZGVvU2lua0dTdHJlYW1lci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgIldlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5oIgogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUg
PGdzdC9pbnRlcmZhY2VzL21peGVyLmg+CkBAIC0xMzYsNDQgKzEzNywxMiBAQCB2b2lkIG1lZGlh
UGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICpvYmplY3QsIEdQYXJh
bVNwZWMgKnBzcGVjLAogICAgIGdfb2JqZWN0X2dldChtcC0+bV9wbGF5QmluLCAic291cmNlIiwg
JmVsZW1lbnQsIE5VTEwpOwogICAgIGdzdF9vYmplY3RfcmVwbGFjZSgoR3N0T2JqZWN0KiopICZt
cC0+bV9zb3VyY2UsIChHc3RPYmplY3QqKSBlbGVtZW50KTsKIAotICAgIGlmIChlbGVtZW50KSB7
Ci0gICAgICAgIEdQYXJhbVNwZWMqIHBzcGVjID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0
eShHX09CSkVDVF9HRVRfQ0xBU1MoZWxlbWVudCksICJjb29raWVzIik7CisgICAgaWYgKFdFQktJ
VF9JU19XRUJfU1JDKGVsZW1lbnQpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3Bs
YXllci0+ZnJhbWVWaWV3KCkgPworbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6
IDA7CiAKLSAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlIHNvdXJjZSBlbGVtZW50IGhhcyBh
IGNvb2tpZXMgcHJvcGVydHkKLSAgICAgICAgLy8gb2YgdGhlIGZvcm1hdCB3ZSBleHBlY3QKLSAg
ICAgICAgaWYgKCFwc3BlYyB8fCBwc3BlYy0+dmFsdWVfdHlwZSAhPSBHX1RZUEVfU1RSVikKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBUaGVuIGdldCB0aGUgY29va2llcyBmb3Ig
dGhlIFVSSSBhbmQgc2V0IHRoZW0KLSAgICAgICAgU291cFNlc3Npb24qIHNlc3Npb24gPSB3ZWJr
aXRfZ2V0X2RlZmF1bHRfc2Vzc2lvbigpOwotICAgICAgICBTb3VwQ29va2llSmFyKiBjb29raWVK
YXIgPSBTT1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNP
VVBfVFlQRV9DT09LSUVfSkFSKSk7Ci0KLSAgICAgICAgY2hhciogbG9jYXRpb247Ci0gICAgICAg
IGdfb2JqZWN0X2dldChlbGVtZW50LCAibG9jYXRpb24iLCAmbG9jYXRpb24sIE5VTEwpOwotCi0g
ICAgICAgIFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJpX25ldyhsb2NhdGlvbik7Ci0gICAgICAgIGdf
ZnJlZShsb2NhdGlvbik7Ci0KLSAgICAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cg
d2Ugd2FudCB0byBhY2Nlc3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KLSAgICAgICAgaWYg
KGdfc3RyX2VxdWFsKHVyaS0+aG9zdCwgIm1vdmllcy5hcHBsZS5jb20iKSkKLSAgICAgICAgICAg
IGdfb2JqZWN0X3NldChlbGVtZW50LCAidXNlci1hZ2VudCIsICJRdWlja3RpbWUvNy4yLjAiLCBO
VUxMKTsKLQotICAgICAgICBjaGFyKiBjb29raWVzID0gc291cF9jb29raWVfamFyX2dldF9jb29r
aWVzKGNvb2tpZUphciwgdXJpLCBGQUxTRSk7Ci0gICAgICAgIHNvdXBfdXJpX2ZyZWUodXJpKTsK
LQotICAgICAgICBjaGFyKiBjb29raWVzU3RydltdID0ge2Nvb2tpZXMsIE5VTEx9OwotICAgICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgImNvb2tpZXMiLCBjb29raWVzU3RydiwgTlVMTCk7Ci0g
ICAgICAgIGdfZnJlZShjb29raWVzKTsKLQotICAgICAgICBGcmFtZSogZnJhbWUgPSBtcC0+bV9w
bGF5ZXItPmZyYW1lVmlldygpID8gbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6
IDA7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50
KCkgOiAwOwotICAgICAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAgICAgICAgIEdzdFN0cnVjdHVy
ZSogZXh0cmFIZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXcoImV4dHJhLWhlYWRlcnMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
UmVmZXJlciIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5kb2N1bWVudFVSSSgpLnV0Zjgo
KS5kYXRhKCksIDApOwotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJleHRyYS1o
ZWFkZXJzIiwgZXh0cmFIZWFkZXJzLCBOVUxMKTsKLSAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVf
ZnJlZShleHRyYUhlYWRlcnMpOwotICAgICAgICB9CisgICAgICAgIGlmIChmcmFtZSkKKwkgICAg
d2Via2l0X3dlYl9zcmNfc2V0X2ZyYW1lKFdFQktJVF9XRUJfU1JDKGVsZW1lbnQpLCBmcmFtZSk7
CiAgICAgfQogCiAgICAgZ3N0X29iamVjdF91bnJlZihlbGVtZW50KTsKQEAgLTI0NSwxMiArMjE0
LDE1IEBAIHN0YXRpYyBib29sIGRvR3N0SW5pdCgpCiAgICAgaWYgKCFnc3RJbml0aWFsaXplZCkg
ewogICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGdzdEluaXRpYWxpemVk
ID0gZ3N0X2luaXRfY2hlY2soMCwgMCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKCFn
c3RJbml0aWFsaXplZCkKKyAgICAgICAgaWYgKCFnc3RJbml0aWFsaXplZCkgewogICAgICAgICAg
ICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJDb3VsZCBub3QgaW5pdGlhbGl6ZSBHU3RyZWFtZXI6ICVz
IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAidW5r
bm93biBlcnJvciBvY2N1cnJlZCIpOwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0bWVkaWFzcmMiLCBHU1Rf
UkFOS19QUklNQVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfREFUQV9TUkMpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtp
dHdlYnNyYyIsIEdTVF9SQU5LX1BSSU1BUlkgKyAxMDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfU1JDKTsKKyAgICAgICAgfQogCiAgICAgfQogICAg
IHJldHVybiBnc3RJbml0aWFsaXplZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmOTk4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0w
LDAgKzEsNjk4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwOSBTZWJhc3RpYW4gRHLDtmdl
IDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJHUmVmUHRyLmgiCisjaW5jbHVkZSAiTm9u
Y29weWFibGUuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgor
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKKyNpbmNsdWRlICJXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIKKworI2luY2x1ZGUgPGdz
dC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworY2xhc3MgU3RyZWFtaW5nQ2xpZW50IDogcHVibGljIE5vbmNvcHlhYmxlLCBwdWJsaWMgUmVz
b3VyY2VIYW5kbGVDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgU3RyZWFtaW5nQ2xpZW50
KFdlYmtpdFdlYlNyYyopOworICAgICAgICB2aXJ0dWFsIH5TdHJlYW1pbmdDbGllbnQoKTsKKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBjaGFyKiwgaW50LCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKTsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIFdlYmtpdFdlYlNyYyogbV9zcmM7Cit9OworCisjZGVmaW5lIFdFQktJVF9XRUJfU1JDX0dF
VF9QUklWQVRFKG9iaikgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VC
S0lUX1RZUEVfV0VCX1NSQywgV2Via2l0V2ViU3JjUHJpdmF0ZSkpCitzdHJ1Y3QgX1dlYmtpdFdl
YlNyY1ByaXZhdGUgeworICAgIEdzdEFwcFNyYyogYXBwc3JjOworICAgIEdzdFBhZCogc3JjcGFk
OworICAgIGdjaGFyKiB1cmk7CisKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWU7CisKKyAgICBT
dHJlYW1pbmdDbGllbnQgKmNsaWVudDsKKyAgICBSZXNvdXJjZVJlcXVlc3QqIHJlc291cmNlUmVx
dWVzdDsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IHJlc291cmNlSGFuZGxlOworCisgICAg
Z3VpbnQ2NCBvZmZzZXQ7CisgICAgZ3VpbnQ2NCBzaXplOworICAgIGdib29sZWFuIHNlZWthYmxl
OworICAgIGdib29sZWFuIHBhdXNlZDsKKworICAgIGd1aW50NjQgcmVxdWVzdGVkX29mZnNldDsK
KworICAgIGd1aW50IG5lZWRfZGF0YV9pZDsKKyAgICBndWludCBlbm91Z2hfZGF0YV9pZDsKKyAg
ICBndWludCBzZWVrX2lkOworCisgICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIGdib29sZWFuIGly
YWRpb19tb2RlOworICAgIGdjaGFyICppcmFkaW9fbmFtZTsKKyAgICBnY2hhciAqaXJhZGlvX2dl
bnJlOworICAgIGdjaGFyICppcmFkaW9fdXJsOworICAgIGdjaGFyICppcmFkaW9fdGl0bGU7Cit9
OworCitlbnVtIHsKKyAgICBQUk9QX0lSQURJT19NT0RFID0gMSwKKyAgICBQUk9QX0lSQURJT19O
QU1FLAorICAgIFBST1BfSVJBRElPX0dFTlJFLAorICAgIFBST1BfSVJBRElPX1VSTCwKKyAgICBQ
Uk9QX0lSQURJT19USVRMRQorfTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY190
ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzcmMiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9Q
QURfU1JDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdTVF9QQURfQUxXQVlTLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9TVEFUSUNf
Q0FQU19BTlkpOworCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtpdF93ZWJfc3JjX2Rl
YnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF93ZWJfc3JjX2RlYnVnCisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3VyaV9oYW5kbGVyX2luaXQoZ3BvaW50ZXIgZ19pZmFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVy
IGlmYWNlX2RhdGEpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19maW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpOworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfc2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYyk7CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19nZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKTsKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJraXRfd2Vi
X3NyY19jaGFuZ2Vfc3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0U3RhdGVDaGFuZ2UgdHJh
bnNpdGlvbik7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0YV9jYihHc3RB
cHBTcmMqIGFwcHNyYywgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1c2VyX2RhdGEpOworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9zcmNfZW5vdWdoX2RhdGFfY2IoR3N0QXBwU3JjKiBhcHBzcmMsIGdw
b2ludGVyIHVzZXJfZGF0YSk7CitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfc2Vla19k
YXRhX2NiKEdzdEFwcFNyYyogYXBwc3JjLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNlcl9k
YXRhKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfc3RvcChXZWJraXRXZWJTcmMqIHNy
Yyk7CisKK3N0YXRpYyBHc3RBcHBTcmNDYWxsYmFja3MgYXBwc3JjX2NhbGxiYWNrcyA9IHsKKyAg
ICB3ZWJraXRfd2ViX3NyY19uZWVkX2RhdGFfY2IsCisgICAgd2Via2l0X3dlYl9zcmNfZW5vdWdo
X2RhdGFfY2IsCisgICAgd2Via2l0X3dlYl9zcmNfc2Vla19kYXRhX2NiLAorICAgIHsgMCB9Cit9
OworCitzdGF0aWMgY29uc3QgR0ludGVyZmFjZUluZm8gdXJpaGFuZGxlcl9pbmZvID0geworICAg
IHdlYmtpdF93ZWJfc3JjX3VyaV9oYW5kbGVyX2luaXQsCisgICAgMCwgMAorfTsKKworCitzdGF0
aWMgdm9pZCBfZG9faW5pdChHVHlwZSBndHlwZSkKK3sKKyAgICBHU1RfREVCVUdfQ0FURUdPUllf
SU5JVCh3ZWJraXRfd2ViX3NyY19kZWJ1ZywgIndlYmtpdHdlYnNyYyIsIDAsICJ3ZWJzcmMgZWxl
bWVudCIpOworICAgIGdfdHlwZV9hZGRfaW50ZXJmYWNlX3N0YXRpYyhndHlwZSwgR1NUX1RZUEVf
VVJJX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1cmloYW5kbGVy
X2luZm8pOworfQorCitHU1RfQk9JTEVSUExBVEVfRlVMTChXZWJraXRXZWJTcmMsIHdlYmtpdF93
ZWJfc3JjLCBHc3RCaW4sIEdTVF9UWVBFX0JJTiwgX2RvX2luaXQpOworCitzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3NyY19iYXNlX2luaXQoZ3BvaW50ZXIga2xhc3MpCit7CisgICAgR3N0RWxlbWVu
dENsYXNzKiBlbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1Moa2xhc3MpOworCisgICAg
Z3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShlbGVtZW50X2NsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVf
Z2V0KCZzcmNfdGVtcGxhdGUpKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfZGV0YWlsc19z
aW1wbGUoZWxlbWVudF9jbGFzcywgKGdjaGFyKikgIldlYktpdCBXZWIgc291cmNlIGVsZW1lbnQi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIqKSAiU291
cmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjaGFyKikg
IkhhbmRsZXMgSFRUUC9IVFRQUyB1cmlzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGdjaGFyKikgIlNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VA
Y29sbGFib3JhLmNvLnVrPiIpOworCit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2Ns
YXNzX2luaXQoV2Via2l0V2ViU3JjQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyog
b2tsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIEdzdEVsZW1lbnRDbGFzcyogZWts
YXNzID0gR1NUX0VMRU1FTlRfQ0xBU1Moa2xhc3MpOworCisgICAgb2tsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdF93ZWJfc3JjX2ZpbmFsaXplOworICAgIG9rbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Vi
a2l0X3dlYl9zcmNfc2V0X3Byb3BlcnR5OworICAgIG9rbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0X3dlYl9zcmNfZ2V0X3Byb3BlcnR5OworCisgICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKG9rbGFzcywKKyAgICAgICAgUFJPUF9JUkFE
SU9fTU9ERSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJpcmFkaW8tbW9kZSIsCisg
ICAgICAgICAgICAiaXJhZGlvLW1vZGUiLAorICAgICAgICAgICAgIkVuYWJsZSBpbnRlcm5ldCBy
YWRpbyBtb2RlIChleHRyYWN0aW9uIG9mIHNob3V0Y2FzdC9pY2VjYXN0IG1ldGFkYXRhKSIsCisg
ICAgICAgICAgICBGQUxTRSwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkgKG9rbGFzcywKKyAgICAgICAgUFJPUF9JUkFESU9fTkFNRSwKKyAgICAgICAgZ19wYXJhbV9z
cGVjX3N0cmluZyAoImlyYWRpby1uYW1lIiwKKyAgICAgICAgICAgICJpcmFkaW8tbmFtZSIsICJO
YW1lIG9mIHRoZSBzdHJlYW0iLCBOVUxMLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURBQkxF
IHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5IChva2xhc3MsCisgICAgICAgIFBST1BfSVJBRElPX0dFTlJFLAorICAgICAgICBn
X3BhcmFtX3NwZWNfc3RyaW5nICgiaXJhZGlvLWdlbnJlIiwKKyAgICAgICAgICAgICJpcmFkaW8t
Z2VucmUiLCAiR2VucmUgb2YgdGhlIHN0cmVhbSIsIE5VTEwsIChHUGFyYW1GbGFncykgKEdfUEFS
QU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkgKG9rbGFzcywKKyAgICAgICAgUFJPUF9JUkFESU9fVVJMLAor
ICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgiaXJhZGlvLXVybCIsCisgICAgICAgICAgICAi
aXJhZGlvLXVybCIsCisgICAgICAgICAgICAiSG9tZXBhZ2UgVVJMIGZvciByYWRpbyBzdHJlYW0i
LCBOVUxMLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNf
U1RSSU5HUykpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChva2xhc3Ms
CisgICAgICAgIFBST1BfSVJBRElPX1RJVExFLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
ICgiaXJhZGlvLXRpdGxlIiwKKyAgICAgICAgICAgICJpcmFkaW8tdGl0bGUiLAorICAgICAgICAg
ICAgIk5hbWUgb2YgY3VycmVudGx5IHBsYXlpbmcgc29uZyIsIE5VTEwsIChHUGFyYW1GbGFncykg
KEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworCisgICAgZWts
YXNzLT5jaGFuZ2Vfc3RhdGUgPSB3ZWJraXRfd2ViX3NyY19jaGFuZ2Vfc3RhdGU7CisKKyAgICBn
X3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJraXRXZWJTcmNQcml2YXRl
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2luaXQoV2Via2l0V2ViU3JjKiBz
cmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYmtpdFdlYlNyY0NsYXNzKiBn
X2NsYXNzKQoreworICAgIEdzdFBhZFRlbXBsYXRlKiBwYWRfdGVtcGxhdGUgPSBnc3Rfc3RhdGlj
X3BhZF90ZW1wbGF0ZV9nZXQoJnNyY190ZW1wbGF0ZSk7CisgICAgR3N0UGFkKiB0YXJnZXRwYWQ7
CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IFdFQktJVF9XRUJfU1JDX0dFVF9QUklW
QVRFKHNyYyk7CisKKyAgICBzcmMtPnByaXYgPSBwcml2OworCisgICAgcHJpdi0+Y2xpZW50ID0g
bmV3IFN0cmVhbWluZ0NsaWVudChzcmMpOworCisgICAgcHJpdi0+c3JjcGFkID0gZ3N0X2dob3N0
X3BhZF9uZXdfbm9fdGFyZ2V0X2Zyb21fdGVtcGxhdGUoInNyYyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRfdGVtcGxhdGUp
OworCisgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChHU1RfRUxFTUVOVChzcmMpLCBwcml2LT5zcmNw
YWQpOworCisgICAgcHJpdi0+YXBwc3JjID0gR1NUX0FQUF9TUkMgKGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZSgiYXBwc3JjIiwgTlVMTCkpOworICAgIGlmICghcHJpdi0+YXBwc3JjKSB7CisgICAg
ICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiRmFpbGVkIHRvIGNyZWF0ZSBnaW9zdHJlYW1zcmMi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdzdF9iaW5fYWRkKEdTVF9CSU4oc3Jj
KSwgR1NUX0VMRU1FTlQocHJpdi0+YXBwc3JjKSk7CisKKyAgICB0YXJnZXRwYWQgPSBnc3RfZWxl
bWVudF9nZXRfc3RhdGljX3BhZChHU1RfRUxFTUVOVChwcml2LT5hcHBzcmMpLCAic3JjIik7Cisg
ICAgZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0KEdTVF9HSE9TVF9QQUQocHJpdi0+c3JjcGFkKSwg
dGFyZ2V0cGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKHRhcmdldHBhZCk7CisKKyAgICBnc3Rf
YXBwX3NyY19zZXRfY2FsbGJhY2tzKHByaXYtPmFwcHNyYywgJmFwcHNyY19jYWxsYmFja3MsIHNy
YywgMCk7CisgICAgZ3N0X2FwcF9zcmNfc2V0X2VtaXRfc2lnbmFscyhwcml2LT5hcHBzcmMsIEZB
TFNFKTsKKyAgICBnc3RfYXBwX3NyY19zZXRfc3RyZWFtX3R5cGUocHJpdi0+YXBwc3JjLCBHU1Rf
QVBQX1NUUkVBTV9UWVBFX1NFRUtBQkxFKTsKKyAgICBnc3RfYXBwX3NyY19zZXRfbWF4X2J5dGVz
KHByaXYtPmFwcHNyYywgNTEyICogMTAyNCk7CisKKyAgICB3ZWJraXRfd2ViX3NyY19zdG9wKHNy
Yyk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2ZpbmFsaXplKEdPYmplY3QqIG9i
amVjdCkKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7
CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGRlbGV0
ZSBwcml2LT5jbGllbnQ7CisgICAgZ19mcmVlKHByaXYtPnVyaSk7CisKKyAgICBHU1RfQ0FMTF9Q
QVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAoKEdPYmplY3QqICkoc3JjKSkpOworfQor
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykK
K3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7CisgICAg
V2Via2l0V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIHN3aXRjaCAocHJv
cF9pZCkgeworICAgICAgICBjYXNlIFBST1BfSVJBRElPX01PREU6CisgICAgICAgICAgICBwcml2
LT5pcmFkaW9fbW9kZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfZ2V0X3Byb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3Bl
YyogcHNwZWMpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhvYmpl
Y3QpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUgKnByaXYgPSBzcmMtPnByaXY7CisKKyAgICBz
d2l0Y2ggKHByb3BfaWQpIHsKKyAgICAgICAgY2FzZSBQUk9QX0lSQURJT19NT0RFOgorICAgICAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHByaXYtPmlyYWRpb19tb2RlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBST1BfSVJBRElPX05BTUU6CisgICAgICAg
ICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBwcml2LT5pcmFkaW9fbmFtZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQUk9QX0lSQURJT19HRU5SRToKKyAgICAgICAg
ICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHByaXYtPmlyYWRpb19nZW5yZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICBjYXNlIFBST1BfSVJBRElPX1VSTDoKKyAgICAgICAgICAg
IGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHByaXYtPmlyYWRpb191cmwpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgY2FzZSBQUk9QX0lSQURJT19USVRMRToKKyAgICAgICAgICAgIGdf
dmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHByaXYtPmlyYWRpb190aXRsZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zdG9wKFdlYmtp
dFdlYlNyYyogc3JjKQoreworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUgKnByaXYgPSBzcmMtPnBy
aXY7CisKKyAgICBpZiAocHJpdi0+cmVzb3VyY2VIYW5kbGUpIHsKKyAgICAgICAgcHJpdi0+cmVz
b3VyY2VIYW5kbGUtPmNhbmNlbCgpOworICAgICAgICBwcml2LT5yZXNvdXJjZUhhbmRsZS5yZWxl
YXNlKCk7CisgICAgfQorICAgIHByaXYtPnJlc291cmNlSGFuZGxlID0gMDsKKworICAgIGlmIChw
cml2LT5mcmFtZSkKKyAgICAgICAgcHJpdi0+ZnJhbWUtPmRlcmVmKCk7CisgICAgcHJpdi0+ZnJh
bWUgPSAwOworCisgICAgaWYgKHByaXYtPnJlc291cmNlUmVxdWVzdCkKKyAgICAgICAgZGVsZXRl
IHByaXYtPnJlc291cmNlUmVxdWVzdDsKKyAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QgPSAwOwor
CisgICAgaWYgKHByaXYtPm5lZWRfZGF0YV9pZCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHBy
aXYtPm5lZWRfZGF0YV9pZCk7CisgICAgcHJpdi0+bmVlZF9kYXRhX2lkID0gMDsKKworICAgIGlm
IChwcml2LT5lbm91Z2hfZGF0YV9pZCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPmVu
b3VnaF9kYXRhX2lkKTsKKyAgICBwcml2LT5lbm91Z2hfZGF0YV9pZCA9IDA7CisKKyAgICBpZiAo
cHJpdi0+c2Vla19pZCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNlZWtfaWQpOwor
ICAgIHByaXYtPnNlZWtfaWQgPSAwOworCisgICAgcHJpdi0+cGF1c2VkID0gRkFMU0U7CisKKyAg
ICBnX2ZyZWUocHJpdi0+aXJhZGlvX25hbWUpOworICAgIHByaXYtPmlyYWRpb19uYW1lID0gMDsK
KworICAgIGdfZnJlZShwcml2LT5pcmFkaW9fZ2VucmUpOworICAgIHByaXYtPmlyYWRpb19nZW5y
ZSA9IDA7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvX3VybCk7CisgICAgcHJpdi0+aXJhZGlv
X3VybCA9IDA7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvX3RpdGxlKTsKKyAgICBwcml2LT5p
cmFkaW9fdGl0bGUgPSAwOworCisgICAgZ3N0X2FwcF9zcmNfc2V0X2NhcHMocHJpdi0+YXBwc3Jj
LCBOVUxMKTsKKworICAgIHByaXYtPm9mZnNldCA9IDA7CisgICAgcHJpdi0+c2l6ZSA9IDA7Cisg
ICAgcHJpdi0+c2Vla2FibGUgPSBGQUxTRTsKKworICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAi
U3RvcHBlZCByZXF1ZXN0Iik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3NyY19z
dGFydChXZWJraXRXZWJTcmMqIHNyYykKK3sKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2
ID0gc3JjLT5wcml2OworCisgICAgaWYgKCFwcml2LT51cmkpIHsKKyAgICAgICAgR1NUX0VSUk9S
X09CSkVDVChzcmMsICJObyBVUkkgcHJvdmlkZWQiKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOwor
ICAgIH0KKworICAgIEtVUkwgdXJsID0gS1VSTChLVVJMKCksIHByaXYtPnVyaSk7CisgICAgcHJp
di0+cmVzb3VyY2VSZXF1ZXN0ID0gbmV3IFJlc291cmNlUmVxdWVzdCh1cmwpOworICAgIHByaXYt
PnJlc291cmNlUmVxdWVzdC0+c2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJn
ZXRJc01lZGlhKTsKKyAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNldEFsbG93Q29va2llcyh0
cnVlKTsKKworICAgIC8vIExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNj
ZXNzIHRoZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCisgICAgaWYgKGdfYXNjaWlfc3RyY2FzZWNt
cCAoIm1vdmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpID09IDApCisg
ICAgICAgIHByaXYtPnJlc291cmNlUmVxdWVzdC0+c2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1l
LzcuMi4wIik7CisKKyAgICBpZiAocHJpdi0+ZnJhbWUpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gcHJpdi0+ZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIGlmIChkb2N1bWVudCkK
KyAgICAgICAgICAgIHByaXYtPnJlc291cmNlUmVxdWVzdC0+c2V0SFRUUFJlZmVycmVyKGRvY3Vt
ZW50LT5kb2N1bWVudFVSSSgpKTsKKworICAgICAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gcHJp
di0+ZnJhbWUtPmxvYWRlcigpOworICAgICAgICBpZiAobG9hZGVyKQorICAgICAgICAgICAgbG9h
ZGVyLT5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VSZXF1ZXN0KCpwcml2LT5yZXNvdXJjZVJl
cXVlc3QpOworICAgIH0KKworICAgIGlmIChwcml2LT5yZXF1ZXN0ZWRfb2Zmc2V0KSB7CisgICAg
ICAgIGdjaGFyICp2YWwgPSBnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JN
QVQgIi0iLCBwcml2LT5yZXF1ZXN0ZWRfb2Zmc2V0KTsKKyAgICAgICAgcHJpdi0+cmVzb3VyY2VS
ZXF1ZXN0LT5zZXRIVFRQSGVhZGVyRmllbGQoIlJhbmdlIiwgdmFsKTsKKyAgICAgICAgZ19mcmVl
KHZhbCk7CisgICAgfQorCisgICAgaWYgKHByaXYtPmlyYWRpb19tb2RlKQorICAgICAgICBwcml2
LT5yZXNvdXJjZVJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZCgiaWN5LW1ldGFkYXRhIiwgIjEi
KTsKKworICAgIC8vIE5lZWRlZCB0byB1c2UgRExOQSBzdHJlYW1pbmcgc2VydmVycworICAgIHBy
aXYtPnJlc291cmNlUmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKCJ0cmFuc2Zlck1vZGUuZGxu
YSIsICJTdHJlYW1pbmciKTsKKworICAgIHByaXYtPnJlc291cmNlSGFuZGxlID0gUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZSgqcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LCBwcml2LT5jbGllbnQsIDAsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpOworICAgIGlmICghcHJpdi0+cmVzb3VyY2VIYW5kbGUpIHsKKyAg
ICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJGYWlsZWQgdG8gY3JlYXRlIFJlc291cmNlSGFu
ZGxlIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBHU1RfREVCVUdfT0JK
RUNUKHNyYywgIlN0YXJ0ZWQgcmVxdWVzdCIpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0
YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJraXRfd2ViX3NyY19jaGFuZ2Vfc3RhdGUoR3N0
RWxlbWVudCogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKK3sKKyAgICBHc3RT
dGF0ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7CisgICAgV2Vi
a2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhlbGVtZW50KTsKKyAgICBXZWJraXRXZWJT
cmNQcml2YXRlICpwcml2ID0gc3JjLT5wcml2OworCisgICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7
CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6CisgICAgICAgIGlmICgh
cHJpdi0+YXBwc3JjKSB7CisgICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoZWxl
bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3RfbWlzc2luZ19l
bGVtZW50X21lc3NhZ2VfbmV3KGVsZW1lbnQsICJhcHBzcmMiKSk7CisgICAgICAgICAgICBHU1Rf
RUxFTUVOVF9FUlJPUihzcmMsIENPUkUsIE1JU1NJTkdfUExVR0lOLCAoMCksICgibm8gYXBwc3Jj
IikpOworICAgICAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICByZXQgPSBHU1RfRUxFTUVOVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3Rh
dGUoZWxlbWVudCwgdHJhbnNpdGlvbik7CisgICAgaWYgKEdfVU5MSUtFTFkocmV0ID09IEdTVF9T
VEFURV9DSEFOR0VfRkFJTFVSRSkpIHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJT
dGF0ZSBjaGFuZ2UgZmFpbGVkIik7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAg
c3dpdGNoICh0cmFuc2l0aW9uKSB7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RP
X1BBVVNFRDoKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJSRUFEWS0+UEFVU0VEIik7
CisgICAgICAgIGlmICghd2Via2l0X3dlYl9zcmNfc3RhcnQoc3JjKSkKKyAgICAgICAgICAgIHJl
dCA9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBH
U1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKKyAgICAgICAgR1NUX0RFQlVHX09CSkVD
VChzcmMsICJQQVVTRUQtPlJFQURZIik7CisgICAgICAgIHdlYmtpdF93ZWJfc3JjX3N0b3Aoc3Jj
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgcmV0dXJuIHJldDsKK30KKworLyoqKiBHU1RVUklIQU5ETEVSIElOVEVSRkFDRSAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMg
R3N0VVJJVHlwZSB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3R5cGUodm9pZCkKK3sKKyAgICByZXR1
cm4gR1NUX1VSSV9TUkM7Cit9CisKK3N0YXRpYyBnY2hhcioqIHdlYmtpdF93ZWJfc3JjX3VyaV9n
ZXRfcHJvdG9jb2xzKHZvaWQpCit7CisgICAgc3RhdGljIGdjaGFyKiBwcm90b2NvbHNbXSA9IHso
Z2NoYXIqKSAiaHR0cCIsIChnY2hhciopICJodHRwcyIsIDAgfTsKKworICAgIHJldHVybiBwcm90
b2NvbHM7Cit9CisKK3N0YXRpYyBjb25zdCBnY2hhciogd2Via2l0X3dlYl9zcmNfdXJpX2dldF91
cmkoR3N0VVJJSGFuZGxlciogaGFuZGxlcikKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdF
QktJVF9XRUJfU1JDKGhhbmRsZXIpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUgKnByaXYgPSBz
cmMtPnByaXY7CisKKyAgICByZXR1cm4gcHJpdi0+dXJpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X3dlYl9zcmNfdXJpX3NldF91cmkoR3N0VVJJSGFuZGxlciogaGFuZGxlciwgY29uc3Qg
Z2NoYXIqIHVyaSkKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGhh
bmRsZXIpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUgKnByaXYgPSBzcmMtPnByaXY7CisKKyAg
ICBpZiAoR1NUX1NUQVRFKHNyYykgPj0gR1NUX1NUQVRFX1BBVVNFRCkgeworICAgICAgICBHU1Rf
RVJST1JfT0JKRUNUIChzcmMsICJVUkkgY2FuIG9ubHkgYmUgc2V0IGluIHN0YXRlcyA8IFBBVVNF
RCIpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfSBlbHNlIGlmICh1cmkgJiYgIWdfYXNj
aWlfc3RybmNhc2VjbXAoImh0dHAiLCB1cmksIDQpICYmICFnX2FzY2lpX3N0cm5jYXNlY21wICgi
aHR0cCIsIHVyaSwgNSkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc3JjLCAiSW52YWxp
ZCBVUkkgJyVzJyIsIHVyaSk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBn
X2ZyZWUgKHByaXYtPnVyaSk7CisgICAgcHJpdi0+dXJpID0gdXJpID8gZ19zdHJkdXAodXJpKSA6
IDA7CisgICAgCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
c3JjX3VyaV9oYW5kbGVyX2luaXQoZ3BvaW50ZXIgZ19pZmFjZSwgZ3BvaW50ZXIgaWZhY2VfZGF0
YSkKK3sKKyAgICBHc3RVUklIYW5kbGVySW50ZXJmYWNlKiBpZmFjZSA9IChHc3RVUklIYW5kbGVy
SW50ZXJmYWNlICopIGdfaWZhY2U7CisKKyAgICBpZmFjZS0+Z2V0X3R5cGUgPSB3ZWJraXRfd2Vi
X3NyY191cmlfZ2V0X3R5cGU7CisgICAgaWZhY2UtPmdldF9wcm90b2NvbHMgPSB3ZWJraXRfd2Vi
X3NyY191cmlfZ2V0X3Byb3RvY29sczsKKyAgICBpZmFjZS0+Z2V0X3VyaSA9IHdlYmtpdF93ZWJf
c3JjX3VyaV9nZXRfdXJpOworICAgIGlmYWNlLT5zZXRfdXJpID0gd2Via2l0X3dlYl9zcmNfdXJp
X3NldF91cmk7Cit9CisKKy8vIGFwcHNyYyBjYWxsYmFja3MKKworc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfc3JjX25lZWRfZGF0YV9tYWluX2NiKFdlYmtpdFdlYlNyYyogc3JjKQoreworICAg
IFdlYmtpdFdlYlNyY1ByaXZhdGUgKnByaXYgPSBzcmMtPnByaXY7CisKKyAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkID0gcHJpdi0+cmVzb3VyY2VIYW5kbGUtPmdldEludGVybmFsKCk7Cisg
ICAgaWYgKGQtPm1fbXNnKQorICAgICAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKFJl
c291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBkLT5tX21zZyk7CisKKyAgICBwcml2LT5w
YXVzZWQgPSBGQUxTRTsKKyAgICBwcml2LT5uZWVkX2RhdGFfaWQgPSAwOworICAgIHJldHVybiBG
QUxTRTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfbmVlZF9kYXRhX2NiKEdzdEFw
cFNyYyogYXBwc3JjLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgICBX
ZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKHVzZXJfZGF0YSk7CisgICAgV2Via2l0
V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiTmVlZCBtb3JlIGRhdGE6ICV1IiwgbGVuZ3RoKTsKKyAgICBpZiAocHJpdi0+bmVlZF9k
YXRhX2lkIHx8ICFwcml2LT5wYXVzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPm5l
ZWRfZGF0YV9pZCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0hJR0gsIDAsIChHU291
cmNlRnVuYykgd2Via2l0X3dlYl9zcmNfbmVlZF9kYXRhX21haW5fY2IsIGdzdF9vYmplY3RfcmVm
KHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRfd2ViX3NyY19lbm91Z2hfZGF0YV9tYWluX2NiKFdlYmtpdFdlYlNyYyog
c3JjKQoreworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUgKnByaXYgPSBzcmMtPnByaXY7CisKKyAg
ICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gcHJpdi0+cmVzb3VyY2VIYW5kbGUtPmdldElu
dGVybmFsKCk7CisgICAgc291cF9zZXNzaW9uX3BhdXNlX21lc3NhZ2UoUmVzb3VyY2VIYW5kbGU6
OmRlZmF1bHRTZXNzaW9uKCksIGQtPm1fbXNnKTsKKyAgICAKKyAgICBwcml2LT5wYXVzZWQgPSBU
UlVFOworICAgIHByaXYtPmVub3VnaF9kYXRhX2lkID0gMDsKKyAgICByZXR1cm4gRkFMU0U7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2Vub3VnaF9kYXRhX2NiKEdzdEFwcFNyYyog
YXBwc3JjLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBX
RUJLSVRfV0VCX1NSQyh1c2VyX2RhdGEpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUgKnByaXYg
PSBzcmMtPnByaXY7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIkhhdmUgZW5vdWdoIGRh
dGEiKTsKKyAgICBpZiAocHJpdi0+ZW5vdWdoX2RhdGFfaWQgfHwgcHJpdi0+cGF1c2VkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwcml2LT5lbm91Z2hfZGF0YV9pZCA9IGdfdGltZW91dF9hZGRf
ZnVsbChHX1BSSU9SSVRZX0hJR0gsIDAsIChHU291cmNlRnVuYykgd2Via2l0X3dlYl9zcmNfZW5v
dWdoX2RhdGFfbWFpbl9jYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBn
c3Rfb2JqZWN0X3VucmVmKTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX3Nl
ZWtfbWFpbl9jYihXZWJraXRXZWJTcmMqIHNyYykKK3sKKyAgICB3ZWJraXRfd2ViX3NyY19zdG9w
KHNyYyk7CisgICAgd2Via2l0X3dlYl9zcmNfc3RhcnQoc3JjKTsKKworICAgIHJldHVybiBGQUxT
RTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX3NlZWtfZGF0YV9jYihHc3RB
cHBTcmMqIGFwcHNyYywgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAg
ICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKHVzZXJfZGF0YSk7CisgICAgV2Vi
a2l0V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiU2Vla2luZyB0byBvZmZzZXQ6ICUiIEdfR1VJTlQ2NF9GT1JNQVQsIG9mZnNldCk7
CisgICAgaWYgKG9mZnNldCA9PSBwcml2LT5vZmZzZXQpCisgICAgICAgIHJldHVybiBUUlVFOwor
CisgICAgaWYgKCFwcml2LT5zZWVrYWJsZSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIGlm
IChvZmZzZXQgPiBwcml2LT5zaXplKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIkRvaW5nIHJhbmdlLXJlcXVlc3Qgc2VlayIpOworICAgIHByaXYt
PnJlcXVlc3RlZF9vZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKHByaXYtPnNlZWtfaWQpCisgICAg
ICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zZWVrX2lkKTsKKyAgICBwcml2LT5zZWVrX2lkID0g
Z190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJr
aXRfd2ViX3NyY19zZWVrX21haW5fY2IsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5v
dGlmeSkgZ3N0X29iamVjdF91bnJlZik7CisgICAgCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3Zv
aWQgd2Via2l0X3dlYl9zcmNfc2V0X2ZyYW1lKFdlYmtpdFdlYlNyYyogc3JjLCBXZWJDb3JlOjpG
cmFtZSogZnJhbWUpCit7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSAqcHJpdiA9IHNyYy0+cHJp
djsKKworICAgIGZyYW1lLT5yZWYoKTsKKyAgICBwcml2LT5mcmFtZSA9IGZyYW1lOworfQorCitT
dHJlYW1pbmdDbGllbnQ6OlN0cmVhbWluZ0NsaWVudChXZWJraXRXZWJTcmMqIHNyYykgOiBtX3Ny
YyhzcmMpCit7CisKK30KKworU3RyZWFtaW5nQ2xpZW50Ojp+U3RyZWFtaW5nQ2xpZW50KCkKK3sK
KworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit7Cit9CisK
K3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBXZWJraXRXZWJTcmNQ
cml2YXRlICpwcml2ID0gbV9zcmMtPnByaXY7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3Jj
LCAiUmVjZWl2ZWQgcmVzcG9uc2U6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisK
KyAgICAvLyBJZiB3ZSBzZWVrZWQgd2UgbmVlZCAyMDYgPT0gUEFSVElBTF9DT05URU5UCisgICAg
aWYgKHByaXYtPnJlcXVlc3RlZF9vZmZzZXQgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAh
PSAyMDYpIHsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IobV9zcmMsIFJFU09VUkNFLCBSRUFE
LCAoTlVMTCksIChOVUxMKSk7CisgICAgICAgIHdlYmtpdF93ZWJfc3JjX3N0b3AobV9zcmMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbG9uZyBsb25nIGxlbmd0aCA9IHJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpOworICAgIGlmIChsZW5ndGggPiAwKSB7CisgICAgICAg
IGxlbmd0aCArPSBwcml2LT5yZXF1ZXN0ZWRfb2Zmc2V0OworICAgICAgICBnc3RfYXBwX3NyY19z
ZXRfc2l6ZShwcml2LT5hcHBzcmMsIGxlbmd0aCk7CisgICAgfQorCisgICAgcHJpdi0+c2l6ZSA9
IGxlbmd0aCA+PSAwID8gbGVuZ3RoIDogMDsKKyAgICBwcml2LT5zZWVrYWJsZSA9IGxlbmd0aCA+
IDAgJiYgZ19hc2NpaV9zdHJjYXNlY21wICgibm9uZSIsIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZCgiQWNjZXB0LVJhbmdlcyIpLnV0ZjgoKS5kYXRhKCkpICE9IDA7CisKKyAgICAvLyBpY2VjYXN0
IHN0dWZmCisgICAgU3RyaW5nIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3kt
bWV0YWludCIpOworICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdjaGFyICpl
bmRwdHIgPSBOVUxMOworICAgICAgICBnaW50NjQgaWN5X21ldGFpbnQgPSBnX2FzY2lpX3N0cnRv
bGwodmFsdWUudXRmOCgpLmRhdGEoKSwgJmVuZHB0ciwgMTApOworICAgICAgICAgICAgCisgICAg
ICAgIGlmIChlbmRwdHIgJiYgKmVuZHB0ciA9PSAnXDAnICYmIGljeV9tZXRhaW50ID4gMCkgewor
ICAgICAgICAgICAgR3N0Q2FwcyAqY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUoImFwcGxpY2F0
aW9uL3gtaWN5IiwgIm1ldGFkYXRhLWludGVydmFsIiwgR19UWVBFX0lOVCwgKGdpbnQpIGljeV9t
ZXRhaW50LCBOVUxMKTsKKworICAgICAgICAgICAgZ3N0X2FwcF9zcmNfc2V0X2NhcHMocHJpdi0+
YXBwc3JjLCBjYXBzKTsKKyAgICAgICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworICAgICAg
ICB9CisgICAgfQorCisgICAgR3N0VGFnTGlzdCogdGFncyA9IGdzdF90YWdfbGlzdF9uZXcoKTsK
KyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LW5hbWUiKTsKKyAgICBp
ZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+aXJhZGlvX25hbWUp
OworICAgICAgICBwcml2LT5pcmFkaW9fbmFtZSA9IGdfc3RyZHVwKHZhbHVlLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMpLCAiaXJhZGlvLW5h
bWUiKTsKKyAgICAgICAgZ3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01FUkdFX1JFUExB
Q0UsIEdTVF9UQUdfT1JHQU5JWkFUSU9OLCBwcml2LT5pcmFkaW9fbmFtZSwgTlVMTCk7CisgICAg
fQorICAgIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktZ2VucmUiKTsKKyAg
ICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+aXJhZGlvX2dl
bnJlKTsKKyAgICAgICAgcHJpdi0+aXJhZGlvX2dlbnJlID0gZ19zdHJkdXAodmFsdWUudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX3NyYyksICJpcmFk
aW8tZ2VucmUiKTsKKyAgICAgICAgZ3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01FUkdF
X1JFUExBQ0UsIEdTVF9UQUdfR0VOUkUsIHByaXYtPmlyYWRpb19nZW5yZSwgTlVMTCk7CisgICAg
fQorICAgIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktdXJsIik7CisgICAg
aWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmlyYWRpb191cmwp
OworICAgICAgICBwcml2LT5pcmFkaW9fdXJsID0gZ19zdHJkdXAodmFsdWUudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX3NyYyksICJpcmFkaW8tdXJs
Iik7CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RBR19NRVJHRV9SRVBMQUNF
LCBHU1RfVEFHX0xPQ0FUSU9OLCBwcml2LT5pcmFkaW9fdXJsLCBOVUxMKTsKKyAgICB9CisgICAg
dmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImljeS10aXRsZSIpOworICAgIGlmICgh
dmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9fdGl0bGUpOwor
ICAgICAgICBwcml2LT5pcmFkaW9fdGl0bGUgPSBnX3N0cmR1cCh2YWx1ZS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwgImlyYWRpby10aXRs
ZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdfTUVSR0VfUkVQTEFD
RSwgR1NUX1RBR19USVRMRSwgcHJpdi0+aXJhZGlvX3RpdGxlLCBOVUxMKTsKKyAgICB9CisKKyAg
ICBpZiAoZ3N0X3RhZ19saXN0X2lzX2VtcHR5KHRhZ3MpKQorICAgICAgICBnc3RfdGFnX2xpc3Rf
ZnJlZSh0YWdzKTsKKyAgICBlbHNlCisgICAgICAgIGdzdF9lbGVtZW50X2ZvdW5kX3RhZ3NfZm9y
X3BhZChHU1RfRUxFTUVOVChtX3NyYyksIG1fc3JjLT5wcml2LT5zcmNwYWQsIHRhZ3MpOworfQor
Cit2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGxlbmd0aFJlY2VpdmVkKQor
eworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUgKnByaXYgPSBtX3NyYy0+cHJpdjsKKworICAgIEdT
VF9MT0dfT0JKRUNUKG1fc3JjLCAiSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbGVuZ3RoKTsKKwor
ICAgIGlmIChwcml2LT5zZWVrX2lkIHx8IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkg
eworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdu
b3JpbmcgZGF0YSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR3N0QnVmZmVyICpi
dWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MobGVuZ3RoKTsKKworICAgIG1lbWNweShH
U1RfQlVGRkVSX0RBVEEoYnVmZmVyKSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBHU1RfQlVGRkVSX09G
RlNFVChidWZmZXIpID0gcHJpdi0+b2Zmc2V0OworICAgIHByaXYtPm9mZnNldCArPSBsZW5ndGg7
CisgICAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CisKKyAg
ICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNy
YywgYnVmZmVyKTsKKyAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxP
V19VTkVYUEVDVEVEKSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1fc3JjLCBDT1JFLCBG
QUlMRUQsIChOVUxMKSwgKE5VTEwpKTsKKyAgICB9Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50
OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKikKK3sKKyAgICBHU1RfREVCVUdfT0JK
RUNUKG1fc3JjLCAiSGF2ZSBFT1MiKTsKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKG1f
c3JjLT5wcml2LT5hcHBzcmMpOworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkRmFpbChS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIEdTVF9F
UlJPUl9PQkpFQ1QobV9zcmMsICJIYXZlIGZhaWx1cmU6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywg
UkVTT1VSQ0UsIEZBSUxFRCwgKCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRm
OCgpLmRhdGEoKSksIChOVUxMKSk7CisgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShtX3Ny
Yy0+cHJpdi0+YXBwc3JjKTsKK30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6Ondhc0Jsb2NrZWQo
UmVzb3VyY2VIYW5kbGUqKQoreworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6Y2Fubm90U2hv
d1VSTChSZXNvdXJjZUhhbmRsZSopCit7Cit9CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk1Y2EwYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2Ug
PHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2lmbmRlZiBXRUJfU09VUkNFX0dTVFJFQU1FUl9ICisjZGVmaW5lIFdFQl9T
T1VSQ0VfR1NUUkVBTUVSX0gKKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3Qv
YXBwL2dzdGFwcHNyYy5oPgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9TUkMgICAgICAgICAgICAod2Via2l0X3dlYl9zcmNf
Z2V0X3R5cGUgKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfU1JDKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU1JDLCBXZWJr
aXRXZWJTcmMpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NSQ19DTEFTUyhrbGFzcykgICAgKEdfVFlQ
RV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9XRUJfU1JDLCBXZWJraXRX
ZWJTcmNDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU1JDKG9iaikgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU1JDKSkKKyNk
ZWZpbmUgV0VCS0lUX0lTX1dFQl9TUkNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
VFlQRSAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfV0VCX1NSQykpCisKK3R5cGVkZWYgc3RydWN0IF9X
ZWJraXRXZWJTcmMgICAgICAgIFdlYmtpdFdlYlNyYzsKK3R5cGVkZWYgc3RydWN0IF9XZWJraXRX
ZWJTcmNDbGFzcyAgIFdlYmtpdFdlYlNyY0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYmtpdFdl
YlNyY1ByaXZhdGUgV2Via2l0V2ViU3JjUHJpdmF0ZTsKKworc3RydWN0IF9XZWJraXRXZWJTcmMg
eworICAgIEdzdEJpbiBwYXJlbnQ7CisKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlICpwcml2Owor
fTsKKworc3RydWN0IF9XZWJraXRXZWJTcmNDbGFzcyB7CisgICAgR3N0QmluQ2xhc3MgcGFyZW50
X2NsYXNzOworfTsKKworR1R5cGUgd2Via2l0X3dlYl9zcmNfZ2V0X3R5cGUodm9pZCk7Cit2b2lk
ICB3ZWJraXRfd2ViX3NyY19zZXRfZnJhbWUoV2Via2l0V2ViU3JjKiBzcmMsIFdlYkNvcmU6OkZy
YW1lKiBmcmFtZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29uZmln
dXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDNjYTQ3NDMuLmJlNzcwNjcgMTAwNjQ0Ci0tLSBh
L2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTcwNCw2ICs3MDQsNyBAQCBmaQog
aWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIjsgdGhlbgogICAgUEtHX0NIRUNLX01PRFVM
RVMoW0dTVFJFQU1FUl0sCiAgICAgICAgICAgICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0g
JEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFt
ZXItYXBwLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1iYXNlLTAuMTAKICAg
ICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAKICAgICAgICAgICAgICAg
ICAgICAgIGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMAotLSAKMS42LjYuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47764</attachid>
            <date>2010-01-30 03:03:51 -0800</date>
            <delta_ts>2010-01-30 03:12:25 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>32952</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSA0OWMzYzczNWY3MTBjNjA4ZDAyYjA3ODYwYzBkMmI4YWEwZmMxNThkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogU2F0LCAzMCBKYW4gMjAxMCAx
MTozNjo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDcgKy0KIC4uLi9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCAgIHwgICA1MCArLS0KIC4uLi9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDcwMSArKysrKysrKysrKysrKysrKysrKwogLi4uL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCAgICAgICAgfCAgIDUyICsrCiBj
b25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogNyBmaWxlcyBjaGFuZ2VkLCA3OTkgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDM1OGU1OTcuLjFjY2ZkM2MgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMS0zMCAgU2Vi
YXN0aWFuIERyw7ZnZSAgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnc3RyZWFtZXIt
YXBwLTAuMTAgdG8gY29uZmlndXJlLmFjCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMTcKKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzoKKwogMjAxMC0wMS0yOSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZTA1NjAuLmY5OGI3ODAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTAtMDEtMzAgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJv
ZWdlQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBHU3RyZWFtZXIgSFRUUC9IVFRQUyBzb3VyY2UsIHVzaW5nIFdl
YktpdCBpbmZyYXN0cnVjdHVyZQorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzE3CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpkb0dzdEluaXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaDoKKyAg
ICAgICAgQWRkIGEgR1N0cmVhbWVyIEhUVFAvSFRUUFMgc291cmNlLCB1c2luZyB0aGUgV2ViS2l0
IGluZnJhc3RydWN0dXJlLgorICAgICAgICBUaGlzIG1ha2VzIHN1cmUgdGhhdCByZWZlcmVyLCBj
b29raWVzLCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICBhbmQgYWxsIGtpbmRz
IG9mIG90aGVyIGNvbnRleHQgYXJlIHBhc3NlZCB0byBHU3RyZWFtZXIgZm9yIHdlYnNpdGVzCisg
ICAgICAgIGxpa2UgVmltZW8gb3IgWW91VHViZS4KKwogMjAxMC0wMS0yOSAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgY29weWluZyBhbiBJREwgZmlsZSBpbiB0
byB0aGUgZnJhbWV3b3JrIHdyYXBwZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhODMwYmNkLi5iYmI0MjA2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTI0MDAsMTIgKzI0MDAsMTUgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuaCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5jcHAgXAotCVdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaAorCVdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBcCisJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKIAog
d2ViY29yZV9saWJhZGQgKz0gXAogCS1sZ3N0aW50ZXJmYWNlcy0wLjEwIFwKIAktbGdzdHZpZGVv
LTAuMTAgXAotCS1sZ3N0cGJ1dGlscy0wLjEwCisJLWxnc3RwYnV0aWxzLTAuMTAgXAorCS1nc3Rh
cHAtMC4xMAogCiBlbmRpZiAjIEVORCBFTkFCTEVfVklERU8KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggNDFmOTBmMC4uMmM1NTFhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVyLmgiCisjaW5jbHVk
ZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKICNp
bmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC0xMzYsNDQgKzEzNywxMiBAQCB2b2lkIG1lZGlhUGxheWVy
UHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICpvYmplY3QsIEdQYXJhbVNwZWMg
KnBzcGVjLAogICAgIGdfb2JqZWN0X2dldChtcC0+bV9wbGF5QmluLCAic291cmNlIiwgJmVsZW1l
bnQsIE5VTEwpOwogICAgIGdzdF9vYmplY3RfcmVwbGFjZSgoR3N0T2JqZWN0KiopICZtcC0+bV9z
b3VyY2UsIChHc3RPYmplY3QqKSBlbGVtZW50KTsKIAotICAgIGlmIChlbGVtZW50KSB7Ci0gICAg
ICAgIEdQYXJhbVNwZWMqIHBzcGVjID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09C
SkVDVF9HRVRfQ0xBU1MoZWxlbWVudCksICJjb29raWVzIik7CisgICAgaWYgKFdFQktJVF9JU19X
RUJfU1JDKGVsZW1lbnQpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3BsYXllci0+
ZnJhbWVWaWV3KCkgPworbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IDA7CiAK
LSAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlIHNvdXJjZSBlbGVtZW50IGhhcyBhIGNvb2tp
ZXMgcHJvcGVydHkKLSAgICAgICAgLy8gb2YgdGhlIGZvcm1hdCB3ZSBleHBlY3QKLSAgICAgICAg
aWYgKCFwc3BlYyB8fCBwc3BlYy0+dmFsdWVfdHlwZSAhPSBHX1RZUEVfU1RSVikKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAvLyBUaGVuIGdldCB0aGUgY29va2llcyBmb3IgdGhlIFVS
SSBhbmQgc2V0IHRoZW0KLSAgICAgICAgU291cFNlc3Npb24qIHNlc3Npb24gPSB3ZWJraXRfZ2V0
X2RlZmF1bHRfc2Vzc2lvbigpOwotICAgICAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBT
T1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQ
RV9DT09LSUVfSkFSKSk7Ci0KLSAgICAgICAgY2hhciogbG9jYXRpb247Ci0gICAgICAgIGdfb2Jq
ZWN0X2dldChlbGVtZW50LCAibG9jYXRpb24iLCAmbG9jYXRpb24sIE5VTEwpOwotCi0gICAgICAg
IFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJpX25ldyhsb2NhdGlvbik7Ci0gICAgICAgIGdfZnJlZShs
b2NhdGlvbik7Ci0KLSAgICAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2Fu
dCB0byBhY2Nlc3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KLSAgICAgICAgaWYgKGdfc3Ry
X2VxdWFsKHVyaS0+aG9zdCwgIm1vdmllcy5hcHBsZS5jb20iKSkKLSAgICAgICAgICAgIGdfb2Jq
ZWN0X3NldChlbGVtZW50LCAidXNlci1hZ2VudCIsICJRdWlja3RpbWUvNy4yLjAiLCBOVUxMKTsK
LQotICAgICAgICBjaGFyKiBjb29raWVzID0gc291cF9jb29raWVfamFyX2dldF9jb29raWVzKGNv
b2tpZUphciwgdXJpLCBGQUxTRSk7Ci0gICAgICAgIHNvdXBfdXJpX2ZyZWUodXJpKTsKLQotICAg
ICAgICBjaGFyKiBjb29raWVzU3RydltdID0ge2Nvb2tpZXMsIE5VTEx9OwotICAgICAgICBnX29i
amVjdF9zZXQoZWxlbWVudCwgImNvb2tpZXMiLCBjb29raWVzU3RydiwgTlVMTCk7Ci0gICAgICAg
IGdfZnJlZShjb29raWVzKTsKLQotICAgICAgICBGcmFtZSogZnJhbWUgPSBtcC0+bV9wbGF5ZXIt
PmZyYW1lVmlldygpID8gbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IDA7Ci0g
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiAw
OwotICAgICAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAgICAgICAgIEdzdFN0cnVjdHVyZSogZXh0
cmFIZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXcoImV4dHJhLWhlYWRlcnMiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVmZXJl
ciIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5kb2N1bWVudFVSSSgpLnV0ZjgoKS5kYXRh
KCksIDApOwotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJleHRyYS1oZWFkZXJz
IiwgZXh0cmFIZWFkZXJzLCBOVUxMKTsKLSAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShl
eHRyYUhlYWRlcnMpOwotICAgICAgICB9CisgICAgICAgIGlmIChmcmFtZSkKKwkgICAgd2Via2l0
X3dlYl9zcmNfc2V0X2ZyYW1lKFdFQktJVF9XRUJfU1JDKGVsZW1lbnQpLCBmcmFtZSk7CiAgICAg
fQogCiAgICAgZ3N0X29iamVjdF91bnJlZihlbGVtZW50KTsKQEAgLTI0NSwxMiArMjE0LDE1IEBA
IHN0YXRpYyBib29sIGRvR3N0SW5pdCgpCiAgICAgaWYgKCFnc3RJbml0aWFsaXplZCkgewogICAg
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGdzdEluaXRpYWxpemVkID0gZ3N0
X2luaXRfY2hlY2soMCwgMCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKCFnc3RJbml0
aWFsaXplZCkKKyAgICAgICAgaWYgKCFnc3RJbml0aWFsaXplZCkgewogICAgICAgICAgICAgTE9H
X1ZFUkJPU0UoTWVkaWEsICJDb3VsZCBub3QgaW5pdGlhbGl6ZSBHU3RyZWFtZXI6ICVzIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAidW5rbm93biBl
cnJvciBvY2N1cnJlZCIpOwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0bWVkaWFzcmMiLCBHU1RfUkFOS19Q
UklNQVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfREFU
QV9TUkMpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdHdlYnNy
YyIsIEdTVF9SQU5LX1BSSU1BUlkgKyAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9XRUJfU1JDKTsKKyAgICAgICAgfQogCiAgICAgfQogICAgIHJldHVy
biBnc3RJbml0aWFsaXplZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmZlNjEzYWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0wLDAgKzEs
NzAxIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwOSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJh
c3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkdSZWZQdHIuaCIKKyNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgorI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorCisjaW5jbHVkZSA8Z3N0L3Bi
dXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitj
bGFzcyBTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMgTm9uY29weWFibGUsIHB1YmxpYyBSZXNvdXJj
ZUhhbmRsZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBTdHJlYW1pbmdDbGllbnQoV2Vi
a2l0V2ViU3JjKik7CisgICAgICAgIHZpcnR1YWwgflN0cmVhbWluZ0NsaWVudCgpOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSopOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
V2Via2l0V2ViU3JjKiBtX3NyYzsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfR0VUX1BS
SVZBVEUob2JqKSAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfU1JDLCBXZWJraXRXZWJTcmNQcml2YXRlKSkKK3N0cnVjdCBfV2Via2l0V2ViU3Jj
UHJpdmF0ZSB7CisgICAgR3N0QXBwU3JjKiBhcHBzcmM7CisgICAgR3N0UGFkKiBzcmNwYWQ7Cisg
ICAgZ2NoYXIqIHVyaTsKKworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZTsKKworICAgIFN0cmVh
bWluZ0NsaWVudCogY2xpZW50OworICAgIFJlc291cmNlUmVxdWVzdCogcmVzb3VyY2VSZXF1ZXN0
OworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gcmVzb3VyY2VIYW5kbGU7CisKKyAgICBndWlu
dDY0IG9mZnNldDsKKyAgICBndWludDY0IHNpemU7CisgICAgZ2Jvb2xlYW4gc2Vla2FibGU7Cisg
ICAgZ2Jvb2xlYW4gcGF1c2VkOworCisgICAgZ3VpbnQ2NCByZXF1ZXN0ZWRPZmZzZXQ7CisKKyAg
ICBndWludCBuZWVkRGF0YUlEOworICAgIGd1aW50IGVub3VnaERhdGFJRDsKKyAgICBndWludCBz
ZWVrSUQ7CisKKyAgICAvLyBpY2VjYXN0IHN0dWZmCisgICAgZ2Jvb2xlYW4gaXJhZGlvTW9kZTsK
KyAgICBnY2hhciogaXJhZGlvTmFtZTsKKyAgICBnY2hhciogaXJhZGlvR2VucmU7CisgICAgZ2No
YXIqIGlyYWRpb1VybDsKKyAgICBnY2hhciogaXJhZGlvVGl0bGU7Cit9OworCitlbnVtIHsKKyAg
ICBQUk9QX0lSQURJT19NT0RFID0gMSwKKyAgICBQUk9QX0lSQURJT19OQU1FLAorICAgIFBST1Bf
SVJBRElPX0dFTlJFLAorICAgIFBST1BfSVJBRElPX1VSTCwKKyAgICBQUk9QX0lSQURJT19USVRM
RQorfTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY1RlbXBsYXRlID0gR1NUX1NU
QVRJQ19QQURfVEVNUExBVEUoInNyYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1BBRF9TUkMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1NUX1BBRF9BTFdBWVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7CisKK0dT
VF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X3dlYl9zcmNfZGVidWcpOworI2RlZmluZSBH
U1RfQ0FUX0RFRkFVTFQgd2Via2l0X3dlYl9zcmNfZGVidWcKKworc3RhdGljIHZvaWQgd2Via2l0
X3dlYl9zcmNfdXJpX2hhbmRsZXJfaW5pdChncG9pbnRlciBnSWZhY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIGlmYWNlRGF0YSk7CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CitzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wSUQsCisgICAgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOwor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcElELAorICAgIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKK3N0
YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJraXRfd2ViX3NyY19jaGFuZ2Vfc3RhdGUoR3N0
RWxlbWVudCogZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQg
bGVuZ3RoLCBncG9pbnRlciB1c2VyRGF0YSk7CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19l
bm91Z2hfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3BvaW50ZXIgdXNlckRhdGEpOworc3Rh
dGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX3NlZWtfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNy
YywgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludGVyIHVzZXJEYXRhKTsKKworc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9zcmNfc3RvcChXZWJraXRXZWJTcmMqIHNyYywgZ2Jvb2xlYW4gcmVzZXRSZXF1ZXN0
ZWRPZmZzZXQpOworCitzdGF0aWMgR3N0QXBwU3JjQ2FsbGJhY2tzIGFwcHNyY19jYWxsYmFja3Mg
PSB7CisgICAgd2Via2l0X3dlYl9zcmNfbmVlZF9kYXRhX2NiLAorICAgIHdlYmtpdF93ZWJfc3Jj
X2Vub3VnaF9kYXRhX2NiLAorICAgIHdlYmtpdF93ZWJfc3JjX3NlZWtfZGF0YV9jYiwKKyAgICB7
IDAgfQorfTsKKworc3RhdGljIGNvbnN0IEdJbnRlcmZhY2VJbmZvIHVyaWhhbmRsZXJfaW5mbyA9
IHsKKyAgICB3ZWJraXRfd2ViX3NyY191cmlfaGFuZGxlcl9pbml0LAorICAgIDAsIDAKK307CisK
Kworc3RhdGljIHZvaWQgX2RvSW5pdChHVHlwZSBndHlwZSkKK3sKKyAgICBHU1RfREVCVUdfQ0FU
RUdPUllfSU5JVCh3ZWJraXRfd2ViX3NyY19kZWJ1ZywgIndlYmtpdHdlYnNyYyIsIDAsICJ3ZWJz
cmMgZWxlbWVudCIpOworICAgIGdfdHlwZV9hZGRfaW50ZXJmYWNlX3N0YXRpYyhndHlwZSwgR1NU
X1RZUEVfVVJJX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1cmlo
YW5kbGVyX2luZm8pOworfQorCitHU1RfQk9JTEVSUExBVEVfRlVMTChXZWJraXRXZWJTcmMsIHdl
YmtpdF93ZWJfc3JjLCBHc3RCaW4sIEdTVF9UWVBFX0JJTiwgX2RvSW5pdCk7CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc3JjX2Jhc2VfaW5pdChncG9pbnRlciBrbGFzcykKK3sKKyAgICBHc3RF
bGVtZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKKworICAgIGdz
dF9la2xhc3NfYWRkX3BhZFRlbXBsYXRlKGVrbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnc3Rfc3RhdGljX3BhZFRlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKKyAgICBn
c3RfZWtsYXNzX3NldF9kZXRhaWxzX3NpbXBsZShla2xhc3MsIChnY2hhciopICJXZWJLaXQgV2Vi
IHNvdXJjZSBlbGVtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2No
YXIqKSAiU291cmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIq
KSAiSGFuZGxlcyBIVFRQL0hUVFBTIHVyaXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChnY2hhciopICJTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxh
Ym9yYS5jby51az4iKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfY2xhc3NfaW5p
dChXZWJraXRXZWJTcmNDbGFzcyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBva2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgR3N0RWxlbWVudENsYXNzKiBla2xhc3MgPSBH
U1RfRUxFTUVOVF9DTEFTUyhrbGFzcyk7CisKKyAgICBva2xhc3MtPmZpbmFsaXplID0gd2Via2l0
X3dlYl9zcmNfZmluYWxpemU7CisgICAgb2tsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfd2Vi
X3NyY19zZXRfcHJvcGVydHk7CisgICAgb2tsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2Vi
X3NyY19nZXRfcHJvcGVydHk7CisKKyAgICAvLyBpY2VjYXN0IHN0dWZmCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAgIFBST1BfSVJBRElPX01PREUs
CisgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJpcmFkaW8tbW9kZSIsCisgICAgICAgICAg
ICAiaXJhZGlvLW1vZGUiLAorICAgICAgICAgICAgIkVuYWJsZSBpbnRlcm5ldCByYWRpbyBtb2Rl
IChleHRyYWN0aW9uIG9mIHNob3V0Y2FzdC9pY2VjYXN0IG1ldGFkYXRhKSIsCisgICAgICAgICAg
ICBGQUxTRSwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJ
Q19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNz
LAorICAgICAgICBQUk9QX0lSQURJT19OQU1FLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n
KCJpcmFkaW8tbmFtZSIsCisgICAgICAgICAgICAiaXJhZGlvLW5hbWUiLCAiTmFtZSBvZiB0aGUg
c3RyZWFtIiwgMCwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RB
VElDX1NUUklOR1MpKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xh
c3MsCisgICAgICAgIFBST1BfSVJBRElPX0dFTlJFLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3Ry
aW5nKCJpcmFkaW8tZ2VucmUiLAorICAgICAgICAgICAgImlyYWRpby1nZW5yZSIsICJHZW5yZSBv
ZiB0aGUgc3RyZWFtIiwgMCwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFS
QU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShva2xhc3MsCisgICAgICAgIFBST1BfSVJBRElPX1VSTCwKKyAgICAgICAgZ19wYXJhbV9zcGVj
X3N0cmluZygiaXJhZGlvLXVybCIsCisgICAgICAgICAgICAiaXJhZGlvLXVybCIsCisgICAgICAg
ICAgICAiSG9tZXBhZ2UgVVJMIGZvciByYWRpbyBzdHJlYW0iLCAwLCAoR1BhcmFtRmxhZ3MpIChH
X1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywKKyAgICAgICAgUFJPUF9JUkFESU9fVElU
TEUsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImlyYWRpby10aXRsZSIsCisgICAgICAg
ICAgICAiaXJhZGlvLXRpdGxlIiwKKyAgICAgICAgICAgICJOYW1lIG9mIGN1cnJlbnRseSBwbGF5
aW5nIHNvbmciLCAwLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9T
VEFUSUNfU1RSSU5HUykpKTsKKworICAgIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gd2Via2l0X3dl
Yl9zcmNfY2hhbmdlX3N0YXRlOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNz
LCBzaXplb2YoV2Via2l0V2ViU3JjUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3NyY19pbml0KFdlYmtpdFdlYlNyYyogc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJraXRXZWJTcmNDbGFzcyogZ0tsYXNzKQoreworICAgIEdzdFBhZFRlbXBsYXRl
KiBwYWRUZW1wbGF0ZSA9IGdzdF9zdGF0aWNfcGFkVGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSk7
CisgICAgR3N0UGFkKiB0YXJnZXRwYWQ7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9XRUJfU1JDX0dFVF9QUklWQVRFKHNyYyk7CisKKyAgICBzcmMtPnByaXYgPSBwcml2
OworCisgICAgcHJpdi0+Y2xpZW50ID0gbmV3IFN0cmVhbWluZ0NsaWVudChzcmMpOworCisgICAg
cHJpdi0+c3JjcGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfbm9fdGFyZ2V0X2Zyb21fdGVtcGxhdGUo
InNyYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYWRUZW1wbGF0ZSk7CisKKyAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9F
TEVNRU5UKHNyYyksIHByaXYtPnNyY3BhZCk7CisKKyAgICBwcml2LT5hcHBzcmMgPSBHU1RfQVBQ
X1NSQyhnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFwcHNyYyIsIDApKTsKKyAgICBpZiAoIXBy
aXYtPmFwcHNyYykgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkZhaWxlZCB0byBj
cmVhdGUgZ2lvc3RyZWFtc3JjIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnc3Rf
YmluX2FkZChHU1RfQklOKHNyYyksIEdTVF9FTEVNRU5UKHByaXYtPmFwcHNyYykpOworCisgICAg
dGFyZ2V0cGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoR1NUX0VMRU1FTlQocHJpdi0+
YXBwc3JjKSwgInNyYyIpOworICAgIGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldChHU1RfR0hPU1Rf
UEFEKHByaXYtPnNyY3BhZCksIHRhcmdldHBhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZih0YXJn
ZXRwYWQpOworCisgICAgZ3N0X2FwcF9zcmNfc2V0X2NhbGxiYWNrcyhwcml2LT5hcHBzcmMsICZh
cHBzcmNfY2FsbGJhY2tzLCBzcmMsIDApOworICAgIGdzdF9hcHBfc3JjX3NldF9lbWl0X3NpZ25h
bHMocHJpdi0+YXBwc3JjLCBGQUxTRSk7CisgICAgZ3N0X2FwcF9zcmNfc2V0X3N0cmVhbV90eXBl
KHByaXYtPmFwcHNyYywgR1NUX0FQUF9TVFJFQU1fVFlQRV9TRUVLQUJMRSk7CisgICAgZ3N0X2Fw
cF9zcmNfc2V0X21heF9ieXRlcyhwcml2LT5hcHBzcmMsIDUxMiAqIDEwMjQpOworCisgICAgd2Vi
a2l0X3dlYl9zcmNfc3RvcChzcmMsIFRSVUUpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3NyY19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMg
PSBXRUJLSVRfV0VCX1NSQyhvYmplY3QpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYg
PSBzcmMtPnByaXY7CisKKyAgICBkZWxldGUgcHJpdi0+Y2xpZW50OworICAgIGdfZnJlZShwcml2
LT51cmkpOworCisgICAgR1NUX0NBTExfUEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwg
KChHT2JqZWN0KiApKHNyYykpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfc2V0
X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJ
VF9XRUJfU1JDKG9iamVjdCk7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+
cHJpdjsKKworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX0lSQURJT19NT0RF
OgorICAgICAgICBwcml2LT5pcmFkaW9Nb2RlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNw
ZWMpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhvYmplY3QpOwor
ICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBzd2l0Y2gg
KHByb3BJRCkgeworICAgIGNhc2UgUFJPUF9JUkFESU9fTU9ERToKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+aXJhZGlvTW9kZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9JUkFESU9fTkFNRToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCBwcml2LT5pcmFkaW9OYW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lSQURJ
T19HRU5SRToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5pcmFkaW9H
ZW5yZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JUkFESU9fVVJMOgorICAgICAg
ICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPmlyYWRpb1VybCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9JUkFESU9fVElUTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0
cmluZyh2YWx1ZSwgcHJpdi0+aXJhZGlvVGl0bGUpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wSUQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfc3JjX3N0b3AoV2Via2l0V2ViU3JjKiBzcmMsIGdib29sZWFuIHJlc2V0UmVx
dWVzdGVkT2Zmc2V0KQoreworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnBy
aXY7CisKKyAgICBpZiAocHJpdi0+cmVzb3VyY2VIYW5kbGUpIHsKKyAgICAgICAgcHJpdi0+cmVz
b3VyY2VIYW5kbGUtPmNhbmNlbCgpOworICAgICAgICBwcml2LT5yZXNvdXJjZUhhbmRsZS5yZWxl
YXNlKCk7CisgICAgfQorICAgIHByaXYtPnJlc291cmNlSGFuZGxlID0gMDsKKworICAgIGlmIChw
cml2LT5mcmFtZSkKKyAgICAgICAgcHJpdi0+ZnJhbWUtPmRlcmVmKCk7CisgICAgcHJpdi0+ZnJh
bWUgPSAwOworCisgICAgaWYgKHByaXYtPnJlc291cmNlUmVxdWVzdCkKKyAgICAgICAgZGVsZXRl
IHByaXYtPnJlc291cmNlUmVxdWVzdDsKKyAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QgPSAwOwor
CisgICAgaWYgKHByaXYtPm5lZWREYXRhSUQpCisgICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2
LT5uZWVkRGF0YUlEKTsKKyAgICBwcml2LT5uZWVkRGF0YUlEID0gMDsKKworICAgIGlmIChwcml2
LT5lbm91Z2hEYXRhSUQpCisgICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5lbm91Z2hEYXRh
SUQpOworICAgIHByaXYtPmVub3VnaERhdGFJRCA9IDA7CisKKyAgICBpZiAocHJpdi0+c2Vla0lE
KQorICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+c2Vla0lEKTsKKyAgICBwcml2LT5zZWVr
SUQgPSAwOworCisgICAgcHJpdi0+cGF1c2VkID0gRkFMU0U7CisKKyAgICBnX2ZyZWUocHJpdi0+
aXJhZGlvTmFtZSk7CisgICAgcHJpdi0+aXJhZGlvTmFtZSA9IDA7CisKKyAgICBnX2ZyZWUocHJp
di0+aXJhZGlvR2VucmUpOworICAgIHByaXYtPmlyYWRpb0dlbnJlID0gMDsKKworICAgIGdfZnJl
ZShwcml2LT5pcmFkaW9VcmwpOworICAgIHByaXYtPmlyYWRpb1VybCA9IDA7CisKKyAgICBnX2Zy
ZWUocHJpdi0+aXJhZGlvVGl0bGUpOworICAgIHByaXYtPmlyYWRpb1RpdGxlID0gMDsKKworICAg
IGdzdF9hcHBfc3JjX3NldF9jYXBzKHByaXYtPmFwcHNyYywgMCk7CisKKyAgICBwcml2LT5vZmZz
ZXQgPSAwOworICAgIHByaXYtPnNpemUgPSAwOworICAgIHByaXYtPnNlZWthYmxlID0gRkFMU0U7
CisKKyAgICBpZiAocmVzZXRSZXF1ZXN0ZWRPZmZzZXQpCisgICAgICAgIHByaXYtPnJlcXVlc3Rl
ZE9mZnNldCA9IDA7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgcmVxdWVz
dCIpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfc3RhcnQoV2Via2l0V2Vi
U3JjKiBzcmMpCit7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsK
KworICAgIGlmICghcHJpdi0+dXJpKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAi
Tm8gVVJJIHByb3ZpZGVkIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBL
VVJMIHVybCA9IEtVUkwoS1VSTCgpLCBwcml2LT51cmkpOworICAgIHByaXYtPnJlc291cmNlUmVx
dWVzdCA9IG5ldyBSZXNvdXJjZVJlcXVlc3QodXJsKTsKKyAgICBwcml2LT5yZXNvdXJjZVJlcXVl
c3QtPnNldFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0QmFzZTo6VGFyZ2V0SXNNZWRpYSk7Cisg
ICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CisKKyAgICAv
LyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25vdyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNl
IG1vdmllIHRyYWlsZXJzLgorICAgIGlmICghZ19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBw
bGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAgcHJpdi0+cmVzb3Vy
Y2VSZXF1ZXN0LT5zZXRIVFRQVXNlckFnZW50KCJRdWlja3RpbWUvNy4yLjAiKTsKKworICAgIGlm
IChwcml2LT5mcmFtZSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwcml2LT5mcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgcHJpdi0+
cmVzb3VyY2VSZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIoZG9jdW1lbnQtPmRvY3VtZW50VVJJKCkp
OworCisgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBwcml2LT5mcmFtZS0+bG9hZGVyKCk7
CisgICAgICAgIGlmIChsb2FkZXIpCisgICAgICAgICAgICBsb2FkZXItPmFkZEV4dHJhRmllbGRz
VG9TdWJyZXNvdXJjZVJlcXVlc3QoKnByaXYtPnJlc291cmNlUmVxdWVzdCk7CisgICAgfQorCisg
ICAgaWYgKHByaXYtPnJlcXVlc3RlZE9mZnNldCkgeworICAgICAgICBnY2hhciogdmFsID0gZ19z
dHJkdXBfcHJpbnRmKCJieXRlcz0lIiBHX0dVSU5UNjRfRk9STUFUICItIiwgcHJpdi0+cmVxdWVz
dGVkT2Zmc2V0KTsKKyAgICAgICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5zZXRIVFRQSGVhZGVy
RmllbGQoIlJhbmdlIiwgdmFsKTsKKyAgICAgICAgZ19mcmVlKHZhbCk7CisgICAgfQorCisgICAg
aWYgKHByaXYtPmlyYWRpb01vZGUpCisgICAgICAgIHByaXYtPnJlc291cmNlUmVxdWVzdC0+c2V0
SFRUUEhlYWRlckZpZWxkKCJpY3ktbWV0YWRhdGEiLCAiMSIpOworCisgICAgLy8gTmVlZGVkIHRv
IHVzZSBETE5BIHN0cmVhbWluZyBzZXJ2ZXJzCisgICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5z
ZXRIVFRQSGVhZGVyRmllbGQoInRyYW5zZmVyTW9kZS5kbG5hIiwgIlN0cmVhbWluZyIpOworCisg
ICAgcHJpdi0+cmVzb3VyY2VIYW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKCpwcml2LT5y
ZXNvdXJjZVJlcXVlc3QsIHByaXYtPmNsaWVudCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgaWYgKCFwcml2LT5yZXNvdXJjZUhhbmRsZSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNU
KHNyYywgIkZhaWxlZCB0byBjcmVhdGUgUmVzb3VyY2VIYW5kbGUiKTsKKyAgICAgICAgcmV0dXJu
IEZBTFNFOworICAgIH0KKworICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RhcnRlZCByZXF1
ZXN0Iik7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0
dXJuIHdlYmtpdF93ZWJfc3JjX2NoYW5nZV9zdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RT
dGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQoreworICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldCA9
IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUzsKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJ
VF9XRUJfU1JDKGVsZW1lbnQpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMt
PnByaXY7CisKKyAgICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKKyAgICBjYXNlIEdTVF9TVEFURV9D
SEFOR0VfTlVMTF9UT19SRUFEWToKKyAgICAgICAgaWYgKCFwcml2LT5hcHBzcmMpIHsKKyAgICAg
ICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShlbGVtZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdzdF9taXNzaW5nX2VsZW1lbnRfbWVzc2FnZV9uZXcoZWxl
bWVudCwgImFwcHNyYyIpKTsKKyAgICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgQ09S
RSwgTUlTU0lOR19QTFVHSU4sICgwKSwgKCJubyBhcHBzcmMiKSk7CisgICAgICAgICAgICByZXR1
cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldCA9IEdTVF9FTEVN
RU5UX0NMQVNTKHBhcmVudF9jbGFzcyktPmNoYW5nZV9zdGF0ZShlbGVtZW50LCB0cmFuc2l0aW9u
KTsKKyAgICBpZiAoR19VTkxJS0VMWShyZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSkg
eworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0YXRlIGNoYW5nZSBmYWlsZWQiKTsK
KyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsK
KyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgorICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNyYywgIlJFQURZLT5QQVVTRUQiKTsKKyAgICAgICAgaWYgKCF3ZWJraXRf
d2ViX3NyY19zdGFydChzcmMpKQorICAgICAgICAgICAgcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9G
QUlMVVJFOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VE
X1RPX1JFQURZOgorICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBBVVNFRC0+UkVBRFki
KTsKKyAgICAgICAgd2Via2l0X3dlYl9zcmNfc3RvcChzcmMsIFRSVUUpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0
OworfQorCisvKioqIEdTVFVSSUhBTkRMRVIgSU5URVJGQUNFICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBHc3RVUklUeXBlIHdlYmtp
dF93ZWJfc3JjX3VyaV9nZXRfdHlwZSh2b2lkKQoreworICAgIHJldHVybiBHU1RfVVJJX1NSQzsK
K30KKworc3RhdGljIGdjaGFyKiogd2Via2l0X3dlYl9zcmNfdXJpX2dldF9wcm90b2NvbHModm9p
ZCkKK3sKKyAgICBzdGF0aWMgZ2NoYXIqIHByb3RvY29sc1tdID0geyhnY2hhciopICJodHRwIiwg
KGdjaGFyKikgImh0dHBzIiwgMCB9OworCisgICAgcmV0dXJuIHByb3RvY29sczsKK30KKworc3Rh
dGljIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3VyaShHc3RVUklIYW5kbGVy
KiBoYW5kbGVyKQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoaGFu
ZGxlcik7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAg
IHJldHVybiBwcml2LT51cmk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3NyY191
cmlfc2V0X3VyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQorewor
ICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoaGFuZGxlcik7CisgICAgV2Vi
a2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGlmIChHU1RfU1RBVEUo
c3JjKSA+PSBHU1RfU1RBVEVfUEFVU0VEKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3Jj
LCAiVVJJIGNhbiBvbmx5IGJlIHNldCBpbiBzdGF0ZXMgPCBQQVVTRUQiKTsKKyAgICAgICAgcmV0
dXJuIEZBTFNFOworICAgIH0gZWxzZSBpZiAodXJpICYmICFnX2FzY2lpX3N0cm5jYXNlY21wKCJo
dHRwIiwgdXJpLCA0KSAmJiAhZ19hc2NpaV9zdHJuY2FzZWNtcCAoImh0dHAiLCB1cmksIDUpKSB7
CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiSW52YWxpZCBVUkkgJyVzJyIsIHVyaSk7
CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBnX2ZyZWUgKHByaXYtPnVyaSk7
CisgICAgcHJpdi0+dXJpID0gdXJpID8gZ19zdHJkdXAodXJpKSA6IDA7CisgICAgCisgICAgcmV0
dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3VyaV9oYW5kbGVyX2lu
aXQoZ3BvaW50ZXIgZ0lmYWNlLCBncG9pbnRlciBpZmFjZURhdGEpCit7CisgICAgR3N0VVJJSGFu
ZGxlckludGVyZmFjZSogaWZhY2UgPSAoR3N0VVJJSGFuZGxlckludGVyZmFjZSAqKSBnSWZhY2U7
CisKKyAgICBpZmFjZS0+Z2V0X3R5cGUgPSB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3R5cGU7Cisg
ICAgaWZhY2UtPmdldF9wcm90b2NvbHMgPSB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3Byb3RvY29s
czsKKyAgICBpZmFjZS0+Z2V0X3VyaSA9IHdlYmtpdF93ZWJfc3JjX3VyaV9nZXRfdXJpOworICAg
IGlmYWNlLT5zZXRfdXJpID0gd2Via2l0X3dlYl9zcmNfdXJpX3NldF91cmk7Cit9CisKKy8vIGFw
cHNyYyBjYWxsYmFja3MKKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0
YV9tYWluX2NiKFdlYmtpdFdlYlNyYyogc3JjKQoreworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUq
IHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gcHJp
di0+cmVzb3VyY2VIYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgaWYgKGQtPm1fbXNnKQorICAg
ICAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0
U2Vzc2lvbigpLCBkLT5tX21zZyk7CisKKyAgICBwcml2LT5wYXVzZWQgPSBGQUxTRTsKKyAgICBw
cml2LT5uZWVkRGF0YUlEID0gMDsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQgbGVu
Z3RoLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJ
VF9XRUJfU1JDKHVzZXJEYXRhKTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3Jj
LT5wcml2OworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJOZWVkIG1vcmUgZGF0YTogJXUi
LCBsZW5ndGgpOworICAgIGlmIChwcml2LT5uZWVkRGF0YUlEIHx8ICFwcml2LT5wYXVzZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIHByaXYtPm5lZWREYXRhSUQgPSBnX3RpbWVvdXRfYWRkX2Z1
bGwoR19QUklPUklUWV9ISUdILCAwLCAoR1NvdXJjZUZ1bmMpIHdlYmtpdF93ZWJfc3JjX25lZWRf
ZGF0YV9tYWluX2NiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9v
YmplY3RfdW5yZWYpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfZW5vdWdo
X2RhdGFfbWFpbl9jYihXZWJraXRXZWJTcmMqIHNyYykKK3sKKyAgICBXZWJraXRXZWJTcmNQcml2
YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9
IHByaXYtPnJlc291cmNlSGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIHNvdXBfc2Vzc2lvbl9w
YXVzZV9tZXNzYWdlKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBkLT5tX21zZyk7
CisgICAgCisgICAgcHJpdi0+cGF1c2VkID0gVFJVRTsKKyAgICBwcml2LT5lbm91Z2hEYXRhSUQg
PSAwOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNf
ZW5vdWdoX2RhdGFfY2IoR3N0QXBwU3JjKiBhcHBzcmMsIGdwb2ludGVyIHVzZXJEYXRhKQorewor
ICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkModXNlckRhdGEpOworICAgIFdl
YmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBHU1RfREVCVUdfT0JK
RUNUKHNyYywgIkhhdmUgZW5vdWdoIGRhdGEiKTsKKyAgICBpZiAocHJpdi0+ZW5vdWdoRGF0YUlE
IHx8IHByaXYtPnBhdXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+ZW5vdWdoRGF0
YUlEID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwgMCwgKEdTb3VyY2VGdW5j
KSB3ZWJraXRfd2ViX3NyY19lbm91Z2hfZGF0YV9tYWluX2NiLCBnc3Rfb2JqZWN0X3JlZihzcmMp
LCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X3dlYl9zcmNfc2Vla19tYWluX2NiKFdlYmtpdFdlYlNyYyogc3JjKQoreworICAg
IHdlYmtpdF93ZWJfc3JjX3N0b3Aoc3JjLCBGQUxTRSk7CisgICAgd2Via2l0X3dlYl9zcmNfc3Rh
cnQoc3JjKTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfc3JjX3NlZWtfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQ2NCBvZmZzZXQs
IGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dF
Ql9TUkModXNlckRhdGEpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnBy
aXY7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWtpbmcgdG8gb2Zmc2V0OiAlIiBH
X0dVSU5UNjRfRk9STUFULCBvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPT0gcHJpdi0+b2Zmc2V0
KQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIGlmICghcHJpdi0+c2Vla2FibGUpCisgICAg
ICAgIHJldHVybiBGQUxTRTsKKyAgICBpZiAob2Zmc2V0ID4gcHJpdi0+c2l6ZSkKKyAgICAgICAg
cmV0dXJuIEZBTFNFOworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJEb2luZyByYW5nZS1y
ZXF1ZXN0IHNlZWsiKTsKKyAgICBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQgPSBvZmZzZXQ7CisgICAg
aWYgKHByaXYtPnNlZWtJRCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNlZWtJRCk7
CisgICAgcHJpdi0+c2Vla0lEID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwg
MCwgKEdTb3VyY2VGdW5jKSB3ZWJraXRfd2ViX3NyY19zZWVrX21haW5fY2IsIGdzdF9vYmplY3Rf
cmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7CisgICAgCisgICAg
cmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9zcmNfc2V0X2ZyYW1lKFdlYmtpdFdl
YlNyYyogc3JjLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7CisgICAgV2Via2l0V2ViU3JjUHJp
dmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGZyYW1lLT5yZWYoKTsKKyAgICBwcml2LT5m
cmFtZSA9IGZyYW1lOworfQorCitTdHJlYW1pbmdDbGllbnQ6OlN0cmVhbWluZ0NsaWVudChXZWJr
aXRXZWJTcmMqIHNyYykgOiBtX3NyYyhzcmMpCit7CisKK30KKworU3RyZWFtaW5nQ2xpZW50Ojp+
U3RyZWFtaW5nQ2xpZW50KCkKK3sKKworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6d2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3sKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CisKKyAgICBH
U1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiUmVjZWl2ZWQgcmVzcG9uc2U6ICVkIiwgcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSk7CisKKyAgICAvLyBJZiB3ZSBzZWVrZWQgd2UgbmVlZCAyMDYgPT0g
UEFSVElBTF9DT05URU5UCisgICAgaWYgKHByaXYtPnJlcXVlc3RlZE9mZnNldCAmJiByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpICE9IDIwNikgeworICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiht
X3NyYywgUkVTT1VSQ0UsIFJFQUQsICgwKSwgKDApKTsKKyAgICAgICAgd2Via2l0X3dlYl9zcmNf
c3RvcChtX3NyYywgVFJVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsb25nIGxv
bmcgbGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CisgICAgaWYgKGxl
bmd0aCA+IDApIHsKKyAgICAgICAgbGVuZ3RoICs9IHByaXYtPnJlcXVlc3RlZE9mZnNldDsKKyAg
ICAgICAgZ3N0X2FwcF9zcmNfc2V0X3NpemUocHJpdi0+YXBwc3JjLCBsZW5ndGgpOworICAgIH0K
KworICAgIHByaXYtPnNpemUgPSBsZW5ndGggPj0gMCA/IGxlbmd0aCA6IDA7CisgICAgcHJpdi0+
c2Vla2FibGUgPSBsZW5ndGggPiAwICYmIGdfYXNjaWlfc3RyY2FzZWNtcCgibm9uZSIsIHJlc3Bv
bnNlLmh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0LVJhbmdlcyIpLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIFN0cmluZyB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZCgiaWN5LW1ldGFpbnQiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAg
ICAgICBnY2hhciogZW5kcHRyID0gMDsKKyAgICAgICAgZ2ludDY0IGljeU1ldGFJbnQgPSBnX2Fz
Y2lpX3N0cnRvbGwodmFsdWUudXRmOCgpLmRhdGEoKSwgJmVuZHB0ciwgMTApOworICAgICAgICAg
ICAgCisgICAgICAgIGlmIChlbmRwdHIgJiYgKmVuZHB0ciA9PSAnXDAnICYmIGljeU1ldGFJbnQg
PiAwKSB7CisgICAgICAgICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSgi
YXBwbGljYXRpb24veC1pY3kiLCAibWV0YWRhdGEtaW50ZXJ2YWwiLCBHX1RZUEVfSU5ULCAoZ2lu
dCkgaWN5TWV0YUludCwgTlVMTCk7CisKKyAgICAgICAgICAgIGdzdF9hcHBfc3JjX3NldF9jYXBz
KHByaXYtPmFwcHNyYywgY2Fwcyk7CisgICAgICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIEdzdFRhZ0xpc3QqIHRhZ3MgPSBnc3RfdGFnX2xpc3Rf
bmV3KCk7CisgICAgdmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImljeS1uYW1lIik7
CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmlyYWRp
b05hbWUpOworICAgICAgICBwcml2LT5pcmFkaW9OYW1lID0gZ19zdHJkdXAodmFsdWUudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX3NyYyksICJpcmFk
aW8tbmFtZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdfTUVSR0Vf
UkVQTEFDRSwgR1NUX1RBR19PUkdBTklaQVRJT04sIHByaXYtPmlyYWRpb05hbWUsIE5VTEwpOwor
ICAgIH0KKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LWdlbnJlIik7
CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmlyYWRp
b0dlbnJlKTsKKyAgICAgICAgcHJpdi0+aXJhZGlvR2VucmUgPSBnX3N0cmR1cCh2YWx1ZS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwgImly
YWRpby1nZW5yZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdfTUVS
R0VfUkVQTEFDRSwgR1NUX1RBR19HRU5SRSwgcHJpdi0+aXJhZGlvR2VucmUsIE5VTEwpOworICAg
IH0KKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LXVybCIpOworICAg
IGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9Vcmwp
OworICAgICAgICBwcml2LT5pcmFkaW9VcmwgPSBnX3N0cmR1cCh2YWx1ZS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwgImlyYWRpby11cmwi
KTsKKyAgICAgICAgZ3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01FUkdFX1JFUExBQ0Us
IEdTVF9UQUdfTE9DQVRJT04sIHByaXYtPmlyYWRpb1VybCwgTlVMTCk7CisgICAgfQorICAgIHZh
bHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktdGl0bGUiKTsKKyAgICBpZiAoIXZh
bHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+aXJhZGlvVGl0bGUpOworICAg
ICAgICBwcml2LT5pcmFkaW9UaXRsZSA9IGdfc3RyZHVwKHZhbHVlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMpLCAiaXJhZGlvLXRpdGxlIik7
CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RBR19NRVJHRV9SRVBMQUNFLCBH
U1RfVEFHX1RJVExFLCBwcml2LT5pcmFkaW9UaXRsZSwgTlVMTCk7CisgICAgfQorCisgICAgaWYg
KGdzdF90YWdfbGlzdF9pc19lbXB0eSh0YWdzKSkKKyAgICAgICAgZ3N0X3RhZ19saXN0X2ZyZWUo
dGFncyk7CisgICAgZWxzZQorICAgICAgICBnc3RfZWxlbWVudF9mb3VuZF90YWdzX2Zvcl9wYWQo
R1NUX0VMRU1FTlQobV9zcmMpLCBtX3NyYy0+cHJpdi0+c3JjcGFkLCB0YWdzKTsKK30KKwordm9p
ZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAg
ICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CisKKyAgICBHU1RfTE9H
X09CSkVDVChtX3NyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIGxlbmd0aCk7CisKKyAgICBp
ZiAocHJpdi0+c2Vla0lEIHx8IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkgeworICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3Jpbmcg
ZGF0YSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR3N0QnVmZmVyKiBidWZmZXIg
PSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MobGVuZ3RoKTsKKworICAgIG1lbWNweShHU1RfQlVG
RkVSX0RBVEEoYnVmZmVyKSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBHU1RfQlVGRkVSX09GRlNFVChi
dWZmZXIpID0gcHJpdi0+b2Zmc2V0OworICAgIHByaXYtPm9mZnNldCArPSBsZW5ndGg7CisgICAg
R1NUX0JVRkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CisKKyAgICBHc3RG
bG93UmV0dXJuIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNyYywgYnVm
ZmVyKTsKKyAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxPV19VTkVY
UEVDVEVEKSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1fc3JjLCBDT1JFLCBGQUlMRUQs
ICgwKSwgKDApKTsKKyAgICB9Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKikKK3sKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAi
SGF2ZSBFT1MiKTsKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKG1fc3JjLT5wcml2LT5h
cHBzcmMpOworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIEdTVF9FUlJPUl9PQkpFQ1Qo
bV9zcmMsICJIYXZlIGZhaWx1cmU6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgUkVTT1VSQ0UsIEZB
SUxFRCwgKCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSks
ICgwKSk7CisgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShtX3NyYy0+cHJpdi0+YXBwc3Jj
KTsKK30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6Ondhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUq
KQoreworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhh
bmRsZSopCit7Cit9CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMmExYTgzMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9l
Z2VAY29sbGFib3JhLmNvLnVrPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lm
bmRlZiBXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXJfaAorI2RlZmluZSBXZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXJfaAorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfU1JDICAgICAgICAgICAg
KHdlYmtpdF93ZWJfc3JjX2dldF90eXBlICgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NSQyhvYmop
ICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgV0VCS0lUX1RZ
UEVfV0VCX1NSQywgV2Via2l0V2ViU3JjKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfQ0xBU1Mo
a2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgV0VCS0lUX1RZUEVf
V0VCX1NSQywgV2Via2l0V2ViU3JjQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NSQyhv
YmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgV0VCS0lUX1RZ
UEVfV0VCX1NSQykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU1JDX0NMQVNTKGtsYXNzKSAoR19U
WVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9TUkMpKQorCit0
eXBlZGVmIHN0cnVjdCBfV2Via2l0V2ViU3JjICAgICAgICBXZWJraXRXZWJTcmM7Cit0eXBlZGVm
IHN0cnVjdCBfV2Via2l0V2ViU3JjQ2xhc3MgICBXZWJraXRXZWJTcmNDbGFzczsKK3R5cGVkZWYg
c3RydWN0IF9XZWJraXRXZWJTcmNQcml2YXRlIFdlYmtpdFdlYlNyY1ByaXZhdGU7CisKK3N0cnVj
dCBfV2Via2l0V2ViU3JjIHsKKyAgICBHc3RCaW4gcGFyZW50OworCisgICAgV2Via2l0V2ViU3Jj
UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2Via2l0V2ViU3JjQ2xhc3MgeworICAgIEdz
dEJpbkNsYXNzIHBhcmVudENsYXNzOworfTsKKworR1R5cGUgd2Via2l0X3dlYl9zcmNfZ2V0X3R5
cGUodm9pZCk7Cit2b2lkICB3ZWJraXRfd2ViX3NyY19zZXRfZnJhbWUoV2Via2l0V2ViU3JjKiBz
cmMsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDNjYTQ3NDMuLmJlNzcw
NjcgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTcwNCw2
ICs3MDQsNyBAQCBmaQogaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIjsgdGhlbgogICAg
UEtHX0NIRUNLX01PRFVMRVMoW0dTVFJFQU1FUl0sCiAgICAgICAgICAgICAgICAgICAgICBbZ3N0
cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAgICAg
ICAgICAgICBnc3RyZWFtZXItYXBwLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1l
ci1iYXNlLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAK
ICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMAotLSAKMS42
LjYuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47765</attachid>
            <date>2010-01-30 03:12:25 -0800</date>
            <delta_ts>2010-01-30 03:21:50 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>32988</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSA3NzFmM2RkMGFjZGJlNjVmOWEzMjhjMjljNWNlYWNjYWVkNDYwNzgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogU2F0LCAzMCBKYW4gMjAxMCAx
MTozNjo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDcgKy0KIC4uLi9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCAgIHwgICA1MCArLS0KIC4uLi9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDcwMyArKysrKysrKysrKysrKysrKysrKwogLi4uL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCAgICAgICAgfCAgIDUyICsrCiBj
b25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogNyBmaWxlcyBjaGFuZ2VkLCA4MDEgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDM1OGU1OTcuLjFjY2ZkM2MgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMS0zMCAgU2Vi
YXN0aWFuIERyw7ZnZSAgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnc3RyZWFtZXIt
YXBwLTAuMTAgdG8gY29uZmlndXJlLmFjCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMTcKKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzoKKwogMjAxMC0wMS0yOSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZTA1NjAuLmY5OGI3ODAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTAtMDEtMzAgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJv
ZWdlQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBHU3RyZWFtZXIgSFRUUC9IVFRQUyBzb3VyY2UsIHVzaW5nIFdl
YktpdCBpbmZyYXN0cnVjdHVyZQorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzE3CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpkb0dzdEluaXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaDoKKyAg
ICAgICAgQWRkIGEgR1N0cmVhbWVyIEhUVFAvSFRUUFMgc291cmNlLCB1c2luZyB0aGUgV2ViS2l0
IGluZnJhc3RydWN0dXJlLgorICAgICAgICBUaGlzIG1ha2VzIHN1cmUgdGhhdCByZWZlcmVyLCBj
b29raWVzLCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICBhbmQgYWxsIGtpbmRz
IG9mIG90aGVyIGNvbnRleHQgYXJlIHBhc3NlZCB0byBHU3RyZWFtZXIgZm9yIHdlYnNpdGVzCisg
ICAgICAgIGxpa2UgVmltZW8gb3IgWW91VHViZS4KKwogMjAxMC0wMS0yOSAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgY29weWluZyBhbiBJREwgZmlsZSBpbiB0
byB0aGUgZnJhbWV3b3JrIHdyYXBwZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhODMwYmNkLi5iYmI0MjA2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTI0MDAsMTIgKzI0MDAsMTUgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuaCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5jcHAgXAotCVdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaAorCVdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBcCisJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKIAog
d2ViY29yZV9saWJhZGQgKz0gXAogCS1sZ3N0aW50ZXJmYWNlcy0wLjEwIFwKIAktbGdzdHZpZGVv
LTAuMTAgXAotCS1sZ3N0cGJ1dGlscy0wLjEwCisJLWxnc3RwYnV0aWxzLTAuMTAgXAorCS1nc3Rh
cHAtMC4xMAogCiBlbmRpZiAjIEVORCBFTkFCTEVfVklERU8KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggNDFmOTBmMC4uNmQ5NWZmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVyLmgiCisjaW5jbHVk
ZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKICNp
bmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC0xMzYsNDQgKzEzNywxMiBAQCB2b2lkIG1lZGlhUGxheWVy
UHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICpvYmplY3QsIEdQYXJhbVNwZWMg
KnBzcGVjLAogICAgIGdfb2JqZWN0X2dldChtcC0+bV9wbGF5QmluLCAic291cmNlIiwgJmVsZW1l
bnQsIE5VTEwpOwogICAgIGdzdF9vYmplY3RfcmVwbGFjZSgoR3N0T2JqZWN0KiopICZtcC0+bV9z
b3VyY2UsIChHc3RPYmplY3QqKSBlbGVtZW50KTsKIAotICAgIGlmIChlbGVtZW50KSB7Ci0gICAg
ICAgIEdQYXJhbVNwZWMqIHBzcGVjID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09C
SkVDVF9HRVRfQ0xBU1MoZWxlbWVudCksICJjb29raWVzIik7CisgICAgaWYgKFdFQktJVF9JU19X
RUJfU1JDKGVsZW1lbnQpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3BsYXllci0+
ZnJhbWVWaWV3KCkgPworbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IDA7CiAK
LSAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlIHNvdXJjZSBlbGVtZW50IGhhcyBhIGNvb2tp
ZXMgcHJvcGVydHkKLSAgICAgICAgLy8gb2YgdGhlIGZvcm1hdCB3ZSBleHBlY3QKLSAgICAgICAg
aWYgKCFwc3BlYyB8fCBwc3BlYy0+dmFsdWVfdHlwZSAhPSBHX1RZUEVfU1RSVikKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAvLyBUaGVuIGdldCB0aGUgY29va2llcyBmb3IgdGhlIFVS
SSBhbmQgc2V0IHRoZW0KLSAgICAgICAgU291cFNlc3Npb24qIHNlc3Npb24gPSB3ZWJraXRfZ2V0
X2RlZmF1bHRfc2Vzc2lvbigpOwotICAgICAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBT
T1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQ
RV9DT09LSUVfSkFSKSk7Ci0KLSAgICAgICAgY2hhciogbG9jYXRpb247Ci0gICAgICAgIGdfb2Jq
ZWN0X2dldChlbGVtZW50LCAibG9jYXRpb24iLCAmbG9jYXRpb24sIE5VTEwpOwotCi0gICAgICAg
IFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJpX25ldyhsb2NhdGlvbik7Ci0gICAgICAgIGdfZnJlZShs
b2NhdGlvbik7Ci0KLSAgICAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2Fu
dCB0byBhY2Nlc3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KLSAgICAgICAgaWYgKGdfc3Ry
X2VxdWFsKHVyaS0+aG9zdCwgIm1vdmllcy5hcHBsZS5jb20iKSkKLSAgICAgICAgICAgIGdfb2Jq
ZWN0X3NldChlbGVtZW50LCAidXNlci1hZ2VudCIsICJRdWlja3RpbWUvNy4yLjAiLCBOVUxMKTsK
LQotICAgICAgICBjaGFyKiBjb29raWVzID0gc291cF9jb29raWVfamFyX2dldF9jb29raWVzKGNv
b2tpZUphciwgdXJpLCBGQUxTRSk7Ci0gICAgICAgIHNvdXBfdXJpX2ZyZWUodXJpKTsKLQotICAg
ICAgICBjaGFyKiBjb29raWVzU3RydltdID0ge2Nvb2tpZXMsIE5VTEx9OwotICAgICAgICBnX29i
amVjdF9zZXQoZWxlbWVudCwgImNvb2tpZXMiLCBjb29raWVzU3RydiwgTlVMTCk7Ci0gICAgICAg
IGdfZnJlZShjb29raWVzKTsKLQotICAgICAgICBGcmFtZSogZnJhbWUgPSBtcC0+bV9wbGF5ZXIt
PmZyYW1lVmlldygpID8gbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IDA7Ci0g
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiAw
OwotICAgICAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAgICAgICAgIEdzdFN0cnVjdHVyZSogZXh0
cmFIZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXcoImV4dHJhLWhlYWRlcnMiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVmZXJl
ciIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5kb2N1bWVudFVSSSgpLnV0ZjgoKS5kYXRh
KCksIDApOwotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJleHRyYS1oZWFkZXJz
IiwgZXh0cmFIZWFkZXJzLCBOVUxMKTsKLSAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShl
eHRyYUhlYWRlcnMpOwotICAgICAgICB9CisgICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAgICAg
IHdlYmtpdF93ZWJfc3JjX3NldF9mcmFtZShXRUJLSVRfV0VCX1NSQyhlbGVtZW50KSwgZnJhbWUp
OwogICAgIH0KIAogICAgIGdzdF9vYmplY3RfdW5yZWYoZWxlbWVudCk7CkBAIC0yNDUsMTIgKzIx
NCwxNSBAQCBzdGF0aWMgYm9vbCBkb0dzdEluaXQoKQogICAgIGlmICghZ3N0SW5pdGlhbGl6ZWQp
IHsKICAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBnc3RJbml0aWFsaXpl
ZCA9IGdzdF9pbml0X2NoZWNrKDAsIDAsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgICAgIGlmICgh
Z3N0SW5pdGlhbGl6ZWQpCisgICAgICAgIGlmICghZ3N0SW5pdGlhbGl6ZWQpIHsKICAgICAgICAg
ICAgIExPR19WRVJCT1NFKE1lZGlhLCAiQ291bGQgbm90IGluaXRpYWxpemUgR1N0cmVhbWVyOiAl
cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogInVu
a25vd24gZXJyb3Igb2NjdXJyZWQiKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdG1lZGlhc3JjIiwgR1NU
X1JBTktfUFJJTUFSWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9U
WVBFX0RBVEFfU1JDKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJr
aXR3ZWJzcmMiLCBHU1RfUkFOS19QUklNQVJZICsgMTAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1NSQyk7CisgICAgICAgIH0KIAogICAgIH0KICAg
ICByZXR1cm4gZ3N0SW5pdGlhbGl6ZWQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWY0M2VmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAt
MCwwICsxLDcwMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgU2ViYXN0aWFuIERyw7Zn
ZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJHUmVmUHRyLmgiCisjaW5jbHVkZSAiTm9uY29weWFibGUuaCIKKyNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKworI2luY2x1ZGUg
PGdzdC9hcHAvZ3N0YXBwc3JjLmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVn
aW5zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBTdHJlYW1pbmdDbGll
bnQgOiBwdWJsaWMgTm9uY29weWFibGUsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICBTdHJlYW1pbmdDbGllbnQoV2Via2l0V2ViU3JjKik7CisgICAg
ICAgIHZpcnR1YWwgflN0cmVhbWluZ0NsaWVudCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBp
bnQsIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
SGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChS
ZXNvdXJjZUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTChSZXNv
dXJjZUhhbmRsZSopOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Via2l0V2ViU3JjKiBtX3Ny
YzsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfR0VUX1BSSVZBVEUob2JqKSAgICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU1JDLCBXZWJr
aXRXZWJTcmNQcml2YXRlKSkKK3N0cnVjdCBfV2Via2l0V2ViU3JjUHJpdmF0ZSB7CisgICAgR3N0
QXBwU3JjKiBhcHBzcmM7CisgICAgR3N0UGFkKiBzcmNwYWQ7CisgICAgZ2NoYXIqIHVyaTsKKwor
ICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZTsKKworICAgIFN0cmVhbWluZ0NsaWVudCogY2xpZW50
OworICAgIFJlc291cmNlUmVxdWVzdCogcmVzb3VyY2VSZXF1ZXN0OworICAgIFJlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gcmVzb3VyY2VIYW5kbGU7CisKKyAgICBndWludDY0IG9mZnNldDsKKyAgICBn
dWludDY0IHNpemU7CisgICAgZ2Jvb2xlYW4gc2Vla2FibGU7CisgICAgZ2Jvb2xlYW4gcGF1c2Vk
OworCisgICAgZ3VpbnQ2NCByZXF1ZXN0ZWRPZmZzZXQ7CisKKyAgICBndWludCBuZWVkRGF0YUlE
OworICAgIGd1aW50IGVub3VnaERhdGFJRDsKKyAgICBndWludCBzZWVrSUQ7CisKKyAgICAvLyBp
Y2VjYXN0IHN0dWZmCisgICAgZ2Jvb2xlYW4gaXJhZGlvTW9kZTsKKyAgICBnY2hhciogaXJhZGlv
TmFtZTsKKyAgICBnY2hhciogaXJhZGlvR2VucmU7CisgICAgZ2NoYXIqIGlyYWRpb1VybDsKKyAg
ICBnY2hhciogaXJhZGlvVGl0bGU7Cit9OworCitlbnVtIHsKKyAgICBQUk9QX0lSQURJT19NT0RF
ID0gMSwKKyAgICBQUk9QX0lSQURJT19OQU1FLAorICAgIFBST1BfSVJBRElPX0dFTlJFLAorICAg
IFBST1BfSVJBRElPX1VSTCwKKyAgICBQUk9QX0lSQURJT19USVRMRQorfTsKKworc3RhdGljIEdz
dFN0YXRpY1BhZFRlbXBsYXRlIHNyY1RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUo
InNyYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1NUX1BBRF9TUkMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1BBRF9BTFdBWVMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7CisKK0dTVF9ERUJVR19DQVRFR09SWV9T
VEFUSUMod2Via2l0X3dlYl9zcmNfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Vi
a2l0X3dlYl9zcmNfZGVidWcKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfdXJpX2hhbmRs
ZXJfaW5pdChncG9pbnRlciBnSWZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdwb2ludGVyIGlmYWNlRGF0YSk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfc3JjX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3NyY19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsCisgICAgY29u
c3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworc3RhdGljIHZvaWQgd2Via2l0
X3dlYl9zcmNfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELAorICAg
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKK3N0YXRpYyBHc3RTdGF0ZUNoYW5n
ZVJldHVybiB3ZWJraXRfd2ViX3NyY19jaGFuZ2Vfc3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3Jj
X25lZWRfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1
c2VyRGF0YSk7CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19lbm91Z2hfZGF0YV9jYihHc3RB
cHBTcmMqIGFwcHNyYywgZ3BvaW50ZXIgdXNlckRhdGEpOworc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfc3JjX3NlZWtfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQ2NCBvZmZzZXQs
IGdwb2ludGVyIHVzZXJEYXRhKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfc3RvcChX
ZWJraXRXZWJTcmMqIHNyYywgZ2Jvb2xlYW4gcmVzZXRSZXF1ZXN0ZWRPZmZzZXQpOworCitzdGF0
aWMgR3N0QXBwU3JjQ2FsbGJhY2tzIGFwcHNyY19jYWxsYmFja3MgPSB7CisgICAgd2Via2l0X3dl
Yl9zcmNfbmVlZF9kYXRhX2NiLAorICAgIHdlYmtpdF93ZWJfc3JjX2Vub3VnaF9kYXRhX2NiLAor
ICAgIHdlYmtpdF93ZWJfc3JjX3NlZWtfZGF0YV9jYiwKKyAgICB7IDAgfQorfTsKKworc3RhdGlj
IGNvbnN0IEdJbnRlcmZhY2VJbmZvIHVyaWhhbmRsZXJfaW5mbyA9IHsKKyAgICB3ZWJraXRfd2Vi
X3NyY191cmlfaGFuZGxlcl9pbml0LAorICAgIDAsIDAKK307CisKKworc3RhdGljIHZvaWQgX2Rv
SW5pdChHVHlwZSBndHlwZSkKK3sKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRf
d2ViX3NyY19kZWJ1ZywgIndlYmtpdHdlYnNyYyIsIDAsICJ3ZWJzcmMgZWxlbWVudCIpOworICAg
IGdfdHlwZV9hZGRfaW50ZXJmYWNlX3N0YXRpYyhndHlwZSwgR1NUX1RZUEVfVVJJX0hBTkRMRVIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1cmloYW5kbGVyX2luZm8pOworfQor
CitHU1RfQk9JTEVSUExBVEVfRlVMTChXZWJraXRXZWJTcmMsIHdlYmtpdF93ZWJfc3JjLCBHc3RC
aW4sIEdTVF9UWVBFX0JJTiwgX2RvSW5pdCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3Jj
X2Jhc2VfaW5pdChncG9pbnRlciBrbGFzcykKK3sKKyAgICBHc3RFbGVtZW50Q2xhc3MqIGVrbGFz
cyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKKworICAgIGdzdF9la2xhc3NfYWRkX3BhZFRl
bXBsYXRlKGVrbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3Rfc3RhdGlj
X3BhZFRlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKKyAgICBnc3RfZWtsYXNzX3NldF9kZXRh
aWxzX3NpbXBsZShla2xhc3MsIChnY2hhciopICJXZWJLaXQgV2ViIHNvdXJjZSBlbGVtZW50IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIqKSAiU291cmNlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIqKSAiSGFuZGxlcyBIVFRQL0hU
VFBTIHVyaXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnY2hhciopICJT
ZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4iKTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfY2xhc3NfaW5pdChXZWJraXRXZWJTcmNDbGFz
cyoga2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBva2xhc3MgPSBHX09CSkVDVF9DTEFTUyhr
bGFzcyk7CisgICAgR3N0RWxlbWVudENsYXNzKiBla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyhr
bGFzcyk7CisKKyAgICBva2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl9zcmNfZmluYWxpemU7
CisgICAgb2tsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3NyY19zZXRfcHJvcGVydHk7
CisgICAgb2tsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3NyY19nZXRfcHJvcGVydHk7
CisKKyAgICAvLyBpY2VjYXN0IHN0dWZmCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShva2xhc3MsCisgICAgICAgIFBST1BfSVJBRElPX01PREUsCisgICAgICAgIGdfcGFyYW1f
c3BlY19ib29sZWFuKCJpcmFkaW8tbW9kZSIsCisgICAgICAgICAgICAiaXJhZGlvLW1vZGUiLAor
ICAgICAgICAgICAgIkVuYWJsZSBpbnRlcm5ldCByYWRpbyBtb2RlIChleHRyYWN0aW9uIG9mIHNo
b3V0Y2FzdC9pY2VjYXN0IG1ldGFkYXRhKSIsCisgICAgICAgICAgICBGQUxTRSwgKEdQYXJhbUZs
YWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAgICAgICBQUk9QX0lS
QURJT19OQU1FLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tbmFtZSIsCisg
ICAgICAgICAgICAiaXJhZGlvLW5hbWUiLCAiTmFtZSBvZiB0aGUgc3RyZWFtIiwgMCwgKEdQYXJh
bUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7Cisg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAgIFBST1Bf
SVJBRElPX0dFTlJFLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tZ2VucmUi
LAorICAgICAgICAgICAgImlyYWRpby1nZW5yZSIsICJHZW5yZSBvZiB0aGUgc3RyZWFtIiwgMCwg
KEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1Mp
KSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAg
IFBST1BfSVJBRElPX1VSTCwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygiaXJhZGlvLXVy
bCIsCisgICAgICAgICAgICAiaXJhZGlvLXVybCIsCisgICAgICAgICAgICAiSG9tZXBhZ2UgVVJM
IGZvciByYWRpbyBzdHJlYW0iLCAwLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURBQkxFIHwg
R19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KG9rbGFzcywKKyAgICAgICAgUFJPUF9JUkFESU9fVElUTEUsCisgICAgICAgIGdfcGFy
YW1fc3BlY19zdHJpbmcoImlyYWRpby10aXRsZSIsCisgICAgICAgICAgICAiaXJhZGlvLXRpdGxl
IiwKKyAgICAgICAgICAgICJOYW1lIG9mIGN1cnJlbnRseSBwbGF5aW5nIHNvbmciLCAwLCAoR1Bh
cmFtRmxhZ3MpIChHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsK
KworICAgIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gd2Via2l0X3dlYl9zcmNfY2hhbmdlX3N0YXRl
OworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2Via2l0V2Vi
U3JjUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19pbml0KFdlYmtp
dFdlYlNyYyogc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJraXRXZWJT
cmNDbGFzcyogZ0tsYXNzKQoreworICAgIEdzdFBhZFRlbXBsYXRlKiBwYWRUZW1wbGF0ZSA9IGdz
dF9zdGF0aWNfcGFkVGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSk7CisgICAgR3N0UGFkKiB0YXJn
ZXRwYWQ7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfU1JDX0dF
VF9QUklWQVRFKHNyYyk7CisKKyAgICBzcmMtPnByaXYgPSBwcml2OworCisgICAgcHJpdi0+Y2xp
ZW50ID0gbmV3IFN0cmVhbWluZ0NsaWVudChzcmMpOworCisgICAgcHJpdi0+c3JjcGFkID0gZ3N0
X2dob3N0X3BhZF9uZXdfbm9fdGFyZ2V0X2Zyb21fdGVtcGxhdGUoInNyYyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRUZW1w
bGF0ZSk7CisKKyAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UKHNyYyksIHByaXYt
PnNyY3BhZCk7CisKKyAgICBwcml2LT5hcHBzcmMgPSBHU1RfQVBQX1NSQyhnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoImFwcHNyYyIsIDApKTsKKyAgICBpZiAoIXByaXYtPmFwcHNyYykgeworICAg
ICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkZhaWxlZCB0byBjcmVhdGUgZ2lvc3RyZWFtc3Jj
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnc3RfYmluX2FkZChHU1RfQklOKHNy
YyksIEdTVF9FTEVNRU5UKHByaXYtPmFwcHNyYykpOworCisgICAgdGFyZ2V0cGFkID0gZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRpY19wYWQoR1NUX0VMRU1FTlQocHJpdi0+YXBwc3JjKSwgInNyYyIpOwor
ICAgIGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldChHU1RfR0hPU1RfUEFEKHByaXYtPnNyY3BhZCks
IHRhcmdldHBhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZih0YXJnZXRwYWQpOworCisgICAgZ3N0
X2FwcF9zcmNfc2V0X2NhbGxiYWNrcyhwcml2LT5hcHBzcmMsICZhcHBzcmNfY2FsbGJhY2tzLCBz
cmMsIDApOworICAgIGdzdF9hcHBfc3JjX3NldF9lbWl0X3NpZ25hbHMocHJpdi0+YXBwc3JjLCBG
QUxTRSk7CisgICAgZ3N0X2FwcF9zcmNfc2V0X3N0cmVhbV90eXBlKHByaXYtPmFwcHNyYywgR1NU
X0FQUF9TVFJFQU1fVFlQRV9TRUVLQUJMRSk7CisgICAgZ3N0X2FwcF9zcmNfc2V0X21heF9ieXRl
cyhwcml2LT5hcHBzcmMsIDUxMiAqIDEwMjQpOworCisgICAgd2Via2l0X3dlYl9zcmNfc3RvcChz
cmMsIFRSVUUpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19maW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhv
YmplY3QpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAg
ICBkZWxldGUgcHJpdi0+Y2xpZW50OworICAgIGdfZnJlZShwcml2LT51cmkpOworCisgICAgR1NU
X0NBTExfUEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKChHT2JqZWN0KiApKHNyYykp
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfc2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
c3BlYykKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7
CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIHN3aXRj
aCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX0lSQURJT19NT0RFOgorICAgICAgICBwcml2LT5p
cmFkaW9Nb2RlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BJRCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfc3JjX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJRCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2Via2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhvYmplY3QpOworICAgIFdlYmtpdFdlYlNyY1By
aXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBzd2l0Y2ggKHByb3BJRCkgeworICAgIGNh
c2UgUFJPUF9JUkFESU9fTU9ERToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwg
cHJpdi0+aXJhZGlvTW9kZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JUkFESU9f
TkFNRToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5pcmFkaW9OYW1l
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lSQURJT19HRU5SRToKKyAgICAgICAg
Z192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5pcmFkaW9HZW5yZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9JUkFESU9fVVJMOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJp
bmcodmFsdWUsIHByaXYtPmlyYWRpb1VybCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9JUkFESU9fVElUTEU6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgcHJpdi0+
aXJhZGlvVGl0bGUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBzcGVjKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3N0
b3AoV2Via2l0V2ViU3JjKiBzcmMsIGdib29sZWFuIHJlc2V0UmVxdWVzdGVkT2Zmc2V0KQorewor
ICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBpZiAocHJp
di0+cmVzb3VyY2VIYW5kbGUpIHsKKyAgICAgICAgcHJpdi0+cmVzb3VyY2VIYW5kbGUtPmNhbmNl
bCgpOworICAgICAgICBwcml2LT5yZXNvdXJjZUhhbmRsZS5yZWxlYXNlKCk7CisgICAgfQorICAg
IHByaXYtPnJlc291cmNlSGFuZGxlID0gMDsKKworICAgIGlmIChwcml2LT5mcmFtZSkKKyAgICAg
ICAgcHJpdi0+ZnJhbWUtPmRlcmVmKCk7CisgICAgcHJpdi0+ZnJhbWUgPSAwOworCisgICAgaWYg
KHByaXYtPnJlc291cmNlUmVxdWVzdCkKKyAgICAgICAgZGVsZXRlIHByaXYtPnJlc291cmNlUmVx
dWVzdDsKKyAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QgPSAwOworCisgICAgaWYgKHByaXYtPm5l
ZWREYXRhSUQpCisgICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5uZWVkRGF0YUlEKTsKKyAg
ICBwcml2LT5uZWVkRGF0YUlEID0gMDsKKworICAgIGlmIChwcml2LT5lbm91Z2hEYXRhSUQpCisg
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5lbm91Z2hEYXRhSUQpOworICAgIHByaXYtPmVu
b3VnaERhdGFJRCA9IDA7CisKKyAgICBpZiAocHJpdi0+c2Vla0lEKQorICAgICAgICBnX3NvdXJj
ZV9yZW1vdmUocHJpdi0+c2Vla0lEKTsKKyAgICBwcml2LT5zZWVrSUQgPSAwOworCisgICAgcHJp
di0+cGF1c2VkID0gRkFMU0U7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvTmFtZSk7CisgICAg
cHJpdi0+aXJhZGlvTmFtZSA9IDA7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvR2VucmUpOwor
ICAgIHByaXYtPmlyYWRpb0dlbnJlID0gMDsKKworICAgIGdfZnJlZShwcml2LT5pcmFkaW9Vcmwp
OworICAgIHByaXYtPmlyYWRpb1VybCA9IDA7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvVGl0
bGUpOworICAgIHByaXYtPmlyYWRpb1RpdGxlID0gMDsKKworICAgIGdzdF9hcHBfc3JjX3NldF9j
YXBzKHByaXYtPmFwcHNyYywgMCk7CisKKyAgICBwcml2LT5vZmZzZXQgPSAwOworICAgIHByaXYt
PnNpemUgPSAwOworICAgIHByaXYtPnNlZWthYmxlID0gRkFMU0U7CisKKyAgICBpZiAocmVzZXRS
ZXF1ZXN0ZWRPZmZzZXQpCisgICAgICAgIHByaXYtPnJlcXVlc3RlZE9mZnNldCA9IDA7CisKKyAg
ICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgcmVxdWVzdCIpOworfQorCitzdGF0aWMg
Z2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfc3RhcnQoV2Via2l0V2ViU3JjKiBzcmMpCit7CisgICAg
V2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGlmICghcHJpdi0+
dXJpKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiTm8gVVJJIHByb3ZpZGVkIik7
CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBLVVJMIHVybCA9IEtVUkwoS1VS
TCgpLCBwcml2LT51cmkpOworICAgIHByaXYtPnJlc291cmNlUmVxdWVzdCA9IG5ldyBSZXNvdXJj
ZVJlcXVlc3QodXJsKTsKKyAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNldFRhcmdldFR5cGUo
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6VGFyZ2V0SXNNZWRpYSk7CisgICAgcHJpdi0+cmVzb3VyY2VS
ZXF1ZXN0LT5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CisKKyAgICAvLyBMZXQgQXBwbGUgd2ViIHNl
cnZlcnMga25vdyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWlsZXJzLgor
ICAgIGlmICghZ19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJsLmhvc3Qo
KS51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5zZXRIVFRQ
VXNlckFnZW50KCJRdWlja3RpbWUvNy4yLjAiKTsKKworICAgIGlmIChwcml2LT5mcmFtZSkgewor
ICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwcml2LT5mcmFtZS0+ZG9jdW1lbnQoKTsKKyAg
ICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5z
ZXRIVFRQUmVmZXJyZXIoZG9jdW1lbnQtPmRvY3VtZW50VVJJKCkpOworCisgICAgICAgIEZyYW1l
TG9hZGVyKiBsb2FkZXIgPSBwcml2LT5mcmFtZS0+bG9hZGVyKCk7CisgICAgICAgIGlmIChsb2Fk
ZXIpCisgICAgICAgICAgICBsb2FkZXItPmFkZEV4dHJhRmllbGRzVG9TdWJyZXNvdXJjZVJlcXVl
c3QoKnByaXYtPnJlc291cmNlUmVxdWVzdCk7CisgICAgfQorCisgICAgaWYgKHByaXYtPnJlcXVl
c3RlZE9mZnNldCkgeworICAgICAgICBnY2hhciogdmFsID0gZ19zdHJkdXBfcHJpbnRmKCJieXRl
cz0lIiBHX0dVSU5UNjRfRk9STUFUICItIiwgcHJpdi0+cmVxdWVzdGVkT2Zmc2V0KTsKKyAgICAg
ICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5zZXRIVFRQSGVhZGVyRmllbGQoIlJhbmdlIiwgdmFs
KTsKKyAgICAgICAgZ19mcmVlKHZhbCk7CisgICAgfQorCisgICAgaWYgKHByaXYtPmlyYWRpb01v
ZGUpCisgICAgICAgIHByaXYtPnJlc291cmNlUmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKCJp
Y3ktbWV0YWRhdGEiLCAiMSIpOworCisgICAgLy8gTmVlZGVkIHRvIHVzZSBETE5BIHN0cmVhbWlu
ZyBzZXJ2ZXJzCisgICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5zZXRIVFRQSGVhZGVyRmllbGQo
InRyYW5zZmVyTW9kZS5kbG5hIiwgIlN0cmVhbWluZyIpOworCisgICAgcHJpdi0+cmVzb3VyY2VI
YW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKCpwcml2LT5yZXNvdXJjZVJlcXVlc3QsIHBy
aXYtPmNsaWVudCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgaWYgKCFwcml2LT5yZXNv
dXJjZUhhbmRsZSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkZhaWxlZCB0byBj
cmVhdGUgUmVzb3VyY2VIYW5kbGUiKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKwor
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RhcnRlZCByZXF1ZXN0Iik7CisKKyAgICByZXR1
cm4gVFJVRTsKK30KKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYmtpdF93ZWJfc3Jj
X2NoYW5nZV9zdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0
aW9uKQoreworICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldCA9IEdTVF9TVEFURV9DSEFOR0Vf
U1VDQ0VTUzsKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGVsZW1lbnQp
OworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBzd2l0
Y2ggKHRyYW5zaXRpb24pIHsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFE
WToKKyAgICAgICAgaWYgKCFwcml2LT5hcHBzcmMpIHsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50
X3Bvc3RfbWVzc2FnZShlbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdzdF9taXNzaW5nX2VsZW1lbnRfbWVzc2FnZV9uZXcoZWxlbWVudCwgImFwcHNyYyIpKTsK
KyAgICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgQ09SRSwgTUlTU0lOR19QTFVHSU4s
ICgwKSwgKCJubyBhcHBzcmMiKSk7CisgICAgICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5H
RV9GQUlMVVJFOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIHJldCA9IEdTVF9FTEVNRU5UX0NMQVNTKHBhcmVudF9j
bGFzcyktPmNoYW5nZV9zdGF0ZShlbGVtZW50LCB0cmFuc2l0aW9uKTsKKyAgICBpZiAoR19VTkxJ
S0VMWShyZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSkgeworICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHNyYywgIlN0YXRlIGNoYW5nZSBmYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuIHJl
dDsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKKyAgICBjYXNlIEdTVF9TVEFU
RV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgorICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywg
IlJFQURZLT5QQVVTRUQiKTsKKyAgICAgICAgaWYgKCF3ZWJraXRfd2ViX3NyY19zdGFydChzcmMp
KQorICAgICAgICAgICAgcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgorICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBBVVNFRC0+UkVBRFkiKTsKKyAgICAgICAgd2Via2l0
X3dlYl9zcmNfc3RvcChzcmMsIFRSVUUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCisvKioqIEdTVFVS
SUhBTkRMRVIgSU5URVJGQUNFICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCisKK3N0YXRpYyBHc3RVUklUeXBlIHdlYmtpdF93ZWJfc3JjX3VyaV9nZXRf
dHlwZSh2b2lkKQoreworICAgIHJldHVybiBHU1RfVVJJX1NSQzsKK30KKworc3RhdGljIGdjaGFy
Kiogd2Via2l0X3dlYl9zcmNfdXJpX2dldF9wcm90b2NvbHModm9pZCkKK3sKKyAgICBzdGF0aWMg
Z2NoYXIqIHByb3RvY29sc1tdID0geyhnY2hhciopICJodHRwIiwgKGdjaGFyKikgImh0dHBzIiwg
MCB9OworCisgICAgcmV0dXJuIHByb3RvY29sczsKK30KKworc3RhdGljIGNvbnN0IGdjaGFyKiB3
ZWJraXRfd2ViX3NyY191cmlfZ2V0X3VyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyKQoreworICAg
IFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoaGFuZGxlcik7CisgICAgV2Via2l0
V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIHJldHVybiBwcml2LT51cmk7
Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3NyY191cmlfc2V0X3VyaShHc3RVUklI
YW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQoreworICAgIFdlYmtpdFdlYlNyYyog
c3JjID0gV0VCS0lUX1dFQl9TUkMoaGFuZGxlcik7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSog
cHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGlmIChHU1RfU1RBVEUoc3JjKSA+PSBHU1RfU1RBVEVf
UEFVU0VEKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiVVJJIGNhbiBvbmx5IGJl
IHNldCBpbiBzdGF0ZXMgPCBQQVVTRUQiKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0K
KyAgICAKKyAgICBpZiAodXJpICYmICFnX2FzY2lpX3N0cm5jYXNlY21wKCJodHRwIiwgdXJpLCA0
KSAmJiAhZ19hc2NpaV9zdHJuY2FzZWNtcCAoImh0dHAiLCB1cmksIDUpKSB7CisgICAgICAgIEdT
VF9FUlJPUl9PQkpFQ1Qoc3JjLCAiSW52YWxpZCBVUkkgJyVzJyIsIHVyaSk7CisgICAgICAgIHJl
dHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBnX2ZyZWUgKHByaXYtPnVyaSk7CisgICAgcHJpdi0+
dXJpID0gdXJpID8gZ19zdHJkdXAodXJpKSA6IDA7CisgICAgCisgICAgcmV0dXJuIFRSVUU7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3VyaV9oYW5kbGVyX2luaXQoZ3BvaW50ZXIg
Z0lmYWNlLCBncG9pbnRlciBpZmFjZURhdGEpCit7CisgICAgR3N0VVJJSGFuZGxlckludGVyZmFj
ZSogaWZhY2UgPSAoR3N0VVJJSGFuZGxlckludGVyZmFjZSAqKSBnSWZhY2U7CisKKyAgICBpZmFj
ZS0+Z2V0X3R5cGUgPSB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3R5cGU7CisgICAgaWZhY2UtPmdl
dF9wcm90b2NvbHMgPSB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3Byb3RvY29sczsKKyAgICBpZmFj
ZS0+Z2V0X3VyaSA9IHdlYmtpdF93ZWJfc3JjX3VyaV9nZXRfdXJpOworICAgIGlmYWNlLT5zZXRf
dXJpID0gd2Via2l0X3dlYl9zcmNfdXJpX3NldF91cmk7Cit9CisKKy8vIGFwcHNyYyBjYWxsYmFj
a3MKKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0YV9tYWluX2NiKFdl
YmtpdFdlYlNyYyogc3JjKQoreworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMt
PnByaXY7CisKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gcHJpdi0+cmVzb3VyY2VI
YW5kbGUtPmdldEludGVybmFsKCk7CisgICAgaWYgKGQtPm1fbXNnKQorICAgICAgICBzb3VwX3Nl
c3Npb25fdW5wYXVzZV9tZXNzYWdlKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBk
LT5tX21zZyk7CisKKyAgICBwcml2LT5wYXVzZWQgPSBGQUxTRTsKKyAgICBwcml2LT5uZWVkRGF0
YUlEID0gMDsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
c3JjX25lZWRfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQgbGVuZ3RoLCBncG9pbnRl
ciB1c2VyRGF0YSkKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKHVz
ZXJEYXRhKTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisg
ICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJOZWVkIG1vcmUgZGF0YTogJXUiLCBsZW5ndGgpOwor
ICAgIGlmIChwcml2LT5uZWVkRGF0YUlEIHx8ICFwcml2LT5wYXVzZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIHByaXYtPm5lZWREYXRhSUQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklU
WV9ISUdILCAwLCAoR1NvdXJjZUZ1bmMpIHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0YV9tYWluX2Ni
LCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYp
OworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfZW5vdWdoX2RhdGFfbWFpbl9j
YihXZWJraXRXZWJTcmMqIHNyYykKK3sKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0g
c3JjLT5wcml2OworCisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IHByaXYtPnJlc291
cmNlSGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIHNvdXBfc2Vzc2lvbl9wYXVzZV9tZXNzYWdl
KFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBkLT5tX21zZyk7CisgICAgCisgICAg
cHJpdi0+cGF1c2VkID0gVFJVRTsKKyAgICBwcml2LT5lbm91Z2hEYXRhSUQgPSAwOworICAgIHJl
dHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfZW5vdWdoX2RhdGFf
Y2IoR3N0QXBwU3JjKiBhcHBzcmMsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIFdlYmtpdFdl
YlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkModXNlckRhdGEpOworICAgIFdlYmtpdFdlYlNyY1By
aXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIkhh
dmUgZW5vdWdoIGRhdGEiKTsKKyAgICBpZiAocHJpdi0+ZW5vdWdoRGF0YUlEIHx8IHByaXYtPnBh
dXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+ZW5vdWdoRGF0YUlEID0gZ190aW1l
b3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJraXRfd2Vi
X3NyY19lbm91Z2hfZGF0YV9tYWluX2NiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lO
b3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl9zcmNfc2Vla19tYWluX2NiKFdlYmtpdFdlYlNyYyogc3JjKQoreworICAgIHdlYmtpdF93ZWJf
c3JjX3N0b3Aoc3JjLCBGQUxTRSk7CisgICAgd2Via2l0X3dlYl9zcmNfc3RhcnQoc3JjKTsKKwor
ICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX3Nl
ZWtfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludGVyIHVz
ZXJEYXRhKQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkModXNlckRh
dGEpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWtpbmcgdG8gb2Zmc2V0OiAlIiBHX0dVSU5UNjRfRk9S
TUFULCBvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPT0gcHJpdi0+b2Zmc2V0KQorICAgICAgICBy
ZXR1cm4gVFJVRTsKKworICAgIGlmICghcHJpdi0+c2Vla2FibGUpCisgICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICBpZiAob2Zmc2V0ID4gcHJpdi0+c2l6ZSkKKyAgICAgICAgcmV0dXJuIEZBTFNF
OworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJEb2luZyByYW5nZS1yZXF1ZXN0IHNlZWsi
KTsKKyAgICBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKHByaXYtPnNl
ZWtJRCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNlZWtJRCk7CisgICAgcHJpdi0+
c2Vla0lEID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwgMCwgKEdTb3VyY2VG
dW5jKSB3ZWJraXRfd2ViX3NyY19zZWVrX21haW5fY2IsIGdzdF9vYmplY3RfcmVmKHNyYyksIChH
RGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7CisgICAgCisgICAgcmV0dXJuIFRSVUU7
Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9zcmNfc2V0X2ZyYW1lKFdlYmtpdFdlYlNyYyogc3JjLCBX
ZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IHNyYy0+cHJpdjsKKworICAgIGZyYW1lLT5yZWYoKTsKKyAgICBwcml2LT5mcmFtZSA9IGZyYW1l
OworfQorCitTdHJlYW1pbmdDbGllbnQ6OlN0cmVhbWluZ0NsaWVudChXZWJraXRXZWJTcmMqIHNy
YykgOiBtX3NyYyhzcmMpCit7CisKK30KKworU3RyZWFtaW5nQ2xpZW50Ojp+U3RyZWFtaW5nQ2xp
ZW50KCkKK3sKKworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
Cit7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBXZWJr
aXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CisKKyAgICBHU1RfREVCVUdfT0JK
RUNUKG1fc3JjLCAiUmVjZWl2ZWQgcmVzcG9uc2U6ICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSk7CisKKyAgICAvLyBJZiB3ZSBzZWVrZWQgd2UgbmVlZCAyMDYgPT0gUEFSVElBTF9DT05U
RU5UCisgICAgaWYgKHByaXYtPnJlcXVlc3RlZE9mZnNldCAmJiByZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpICE9IDIwNikgeworICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgUkVTT1VS
Q0UsIFJFQUQsICgwKSwgKDApKTsKKyAgICAgICAgd2Via2l0X3dlYl9zcmNfc3RvcChtX3NyYywg
VFJVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsb25nIGxvbmcgbGVuZ3RoID0g
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA+IDApIHsK
KyAgICAgICAgbGVuZ3RoICs9IHByaXYtPnJlcXVlc3RlZE9mZnNldDsKKyAgICAgICAgZ3N0X2Fw
cF9zcmNfc2V0X3NpemUocHJpdi0+YXBwc3JjLCBsZW5ndGgpOworICAgIH0KKworICAgIHByaXYt
PnNpemUgPSBsZW5ndGggPj0gMCA/IGxlbmd0aCA6IDA7CisgICAgcHJpdi0+c2Vla2FibGUgPSBs
ZW5ndGggPiAwICYmIGdfYXNjaWlfc3RyY2FzZWNtcCgibm9uZSIsIHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZCgiQWNjZXB0LVJhbmdlcyIpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgLy8gaWNlY2Fz
dCBzdHVmZgorICAgIFN0cmluZyB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5
LW1ldGFpbnQiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnY2hhciog
ZW5kcHRyID0gMDsKKyAgICAgICAgZ2ludDY0IGljeU1ldGFJbnQgPSBnX2FzY2lpX3N0cnRvbGwo
dmFsdWUudXRmOCgpLmRhdGEoKSwgJmVuZHB0ciwgMTApOworICAgICAgICAgICAgCisgICAgICAg
IGlmIChlbmRwdHIgJiYgKmVuZHB0ciA9PSAnXDAnICYmIGljeU1ldGFJbnQgPiAwKSB7CisgICAg
ICAgICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXBwbGljYXRpb24v
eC1pY3kiLCAibWV0YWRhdGEtaW50ZXJ2YWwiLCBHX1RZUEVfSU5ULCAoZ2ludCkgaWN5TWV0YUlu
dCwgTlVMTCk7CisKKyAgICAgICAgICAgIGdzdF9hcHBfc3JjX3NldF9jYXBzKHByaXYtPmFwcHNy
YywgY2Fwcyk7CisgICAgICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEdzdFRhZ0xpc3QqIHRhZ3MgPSBnc3RfdGFnX2xpc3RfbmV3KCk7CisgICAg
dmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImljeS1uYW1lIik7CisgICAgaWYgKCF2
YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmlyYWRpb05hbWUpOworICAg
ICAgICBwcml2LT5pcmFkaW9OYW1lID0gZ19zdHJkdXAodmFsdWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX3NyYyksICJpcmFkaW8tbmFtZSIpOwor
ICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdfTUVSR0VfUkVQTEFDRSwgR1NU
X1RBR19PUkdBTklaQVRJT04sIHByaXYtPmlyYWRpb05hbWUsIE5VTEwpOworICAgIH0KKyAgICB2
YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LWdlbnJlIik7CisgICAgaWYgKCF2
YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmlyYWRpb0dlbnJlKTsKKyAg
ICAgICAgcHJpdi0+aXJhZGlvR2VucmUgPSBnX3N0cmR1cCh2YWx1ZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwgImlyYWRpby1nZW5yZSIp
OworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdfTUVSR0VfUkVQTEFDRSwg
R1NUX1RBR19HRU5SRSwgcHJpdi0+aXJhZGlvR2VucmUsIE5VTEwpOworICAgIH0KKyAgICB2YWx1
ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LXVybCIpOworICAgIGlmICghdmFsdWUu
aXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9VcmwpOworICAgICAgICBw
cml2LT5pcmFkaW9VcmwgPSBnX3N0cmR1cCh2YWx1ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwgImlyYWRpby11cmwiKTsKKyAgICAgICAg
Z3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01FUkdFX1JFUExBQ0UsIEdTVF9UQUdfTE9D
QVRJT04sIHByaXYtPmlyYWRpb1VybCwgTlVMTCk7CisgICAgfQorICAgIHZhbHVlID0gcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktdGl0bGUiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHko
KSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+aXJhZGlvVGl0bGUpOworICAgICAgICBwcml2LT5p
cmFkaW9UaXRsZSA9IGdfc3RyZHVwKHZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBnX29i
amVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMpLCAiaXJhZGlvLXRpdGxlIik7CisgICAgICAgIGdz
dF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RBR19NRVJHRV9SRVBMQUNFLCBHU1RfVEFHX1RJVExF
LCBwcml2LT5pcmFkaW9UaXRsZSwgTlVMTCk7CisgICAgfQorCisgICAgaWYgKGdzdF90YWdfbGlz
dF9pc19lbXB0eSh0YWdzKSkKKyAgICAgICAgZ3N0X3RhZ19saXN0X2ZyZWUodGFncyk7CisgICAg
ZWxzZQorICAgICAgICBnc3RfZWxlbWVudF9mb3VuZF90YWdzX2Zvcl9wYWQoR1NUX0VMRU1FTlQo
bV9zcmMpLCBtX3NyYy0+cHJpdi0+c3JjcGFkLCB0YWdzKTsKK30KKwordm9pZCBTdHJlYW1pbmdD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAgICBXZWJraXRXZWJT
cmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CisKKyAgICBHU1RfTE9HX09CSkVDVChtX3Ny
YywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIGxlbmd0aCk7CisKKyAgICBpZiAocHJpdi0+c2Vl
a0lEIHx8IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkgeworICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKG1fc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVy
X25ld19hbmRfYWxsb2MobGVuZ3RoKTsKKworICAgIG1lbWNweShHU1RfQlVGRkVSX0RBVEEoYnVm
ZmVyKSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBHU1RfQlVGRkVSX09GRlNFVChidWZmZXIpID0gcHJp
di0+b2Zmc2V0OworICAgIHByaXYtPm9mZnNldCArPSBsZW5ndGg7CisgICAgR1NUX0JVRkZFUl9P
RkZTRVRfRU5EKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CisKKyAgICBHc3RGbG93UmV0dXJuIHJl
dCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNyYywgYnVmZmVyKTsKKyAgICBp
ZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxPV19VTkVYUEVDVEVEKQorICAg
ICAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgQ09SRSwgRkFJTEVELCAoMCksICgwKSk7Cit9
CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxl
KikKK3sKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiSGF2ZSBFT1MiKTsKKyAgICBnc3Rf
YXBwX3NyY19lbmRfb2Zfc3RyZWFtKG1fc3JjLT5wcml2LT5hcHBzcmMpOworfQorCit2b2lkIFN0
cmVhbWluZ0NsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQoreworICAgIEdTVF9FUlJPUl9PQkpFQ1QobV9zcmMsICJIYXZlIGZhaWx1cmU6
ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBH
U1RfRUxFTUVOVF9FUlJPUihtX3NyYywgUkVTT1VSQ0UsIEZBSUxFRCwgKCIlcyIsIGVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSksICgwKSk7CisgICAgZ3N0X2FwcF9z
cmNfZW5kX29mX3N0cmVhbShtX3NyYy0+cHJpdi0+YXBwc3JjKTsKK30KKwordm9pZCBTdHJlYW1p
bmdDbGllbnQ6Ondhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKQoreworfQorCit2b2lkIFN0cmVh
bWluZ0NsaWVudDo6Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSopCit7Cit9CisKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmExYTgzMQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBXZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXJfaAorI2RlZmluZSBXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXJfaAorCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2Rl
ZmluZSBXRUJLSVRfVFlQRV9XRUJfU1JDICAgICAgICAgICAgKHdlYmtpdF93ZWJfc3JjX2dldF90
eXBlICgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NSQyhvYmopICAgICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NSQywgV2Via2l0V2Vi
U3JjKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfV0VCX1NSQywgV2Via2l0V2ViU3Jj
Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NSQyhvYmopICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NSQykpCisjZGVmaW5l
IFdFQktJVF9JU19XRUJfU1JDX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUg
KChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9TUkMpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Via2l0
V2ViU3JjICAgICAgICBXZWJraXRXZWJTcmM7Cit0eXBlZGVmIHN0cnVjdCBfV2Via2l0V2ViU3Jj
Q2xhc3MgICBXZWJraXRXZWJTcmNDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJraXRXZWJTcmNQ
cml2YXRlIFdlYmtpdFdlYlNyY1ByaXZhdGU7CisKK3N0cnVjdCBfV2Via2l0V2ViU3JjIHsKKyAg
ICBHc3RCaW4gcGFyZW50OworCisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSAqcHJpdjsKK307CisK
K3N0cnVjdCBfV2Via2l0V2ViU3JjQ2xhc3MgeworICAgIEdzdEJpbkNsYXNzIHBhcmVudENsYXNz
OworfTsKKworR1R5cGUgd2Via2l0X3dlYl9zcmNfZ2V0X3R5cGUodm9pZCk7Cit2b2lkICB3ZWJr
aXRfd2ViX3NyY19zZXRfZnJhbWUoV2Via2l0V2ViU3JjKiBzcmMsIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFj
IGIvY29uZmlndXJlLmFjCmluZGV4IDNjYTQ3NDMuLmJlNzcwNjcgMTAwNjQ0Ci0tLSBhL2NvbmZp
Z3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTcwNCw2ICs3MDQsNyBAQCBmaQogaWYgdGVz
dCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIjsgdGhlbgogICAgUEtHX0NIRUNLX01PRFVMRVMoW0dT
VFJFQU1FUl0sCiAgICAgICAgICAgICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJF
QU1FUl9SRVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXBw
LTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1iYXNlLTAuMTAKICAgICAgICAg
ICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAKICAgICAgICAgICAgICAgICAgICAg
IGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMAotLSAKMS42LjYuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47766</attachid>
            <date>2010-01-30 03:20:16 -0800</date>
            <delta_ts>2010-02-02 01:14:47 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>33003</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSBiZWE5YzBjZTExODQ5OGJmMzdiNjkyNTIwNmZlNjllOTg0ZDdkZmRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogU2F0LCAzMCBKYW4gMjAxMCAx
MTozNjo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDcgKy0KIC4uLi9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCAgIHwgICA1MCArLS0KIC4uLi9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDcwMyArKysrKysrKysrKysrKysrKysrKwogLi4uL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCAgICAgICAgfCAgIDUyICsrCiBj
b25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogNyBmaWxlcyBjaGFuZ2VkLCA4MDEgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDM1OGU1OTcuLjFjY2ZkM2MgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMS0zMCAgU2Vi
YXN0aWFuIERyw7ZnZSAgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnc3RyZWFtZXIt
YXBwLTAuMTAgdG8gY29uZmlndXJlLmFjCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMTcKKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzoKKwogMjAxMC0wMS0yOSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZTA1NjAuLmY5OGI3ODAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTAtMDEtMzAgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4uZHJv
ZWdlQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBHU3RyZWFtZXIgSFRUUC9IVFRQUyBzb3VyY2UsIHVzaW5nIFdl
YktpdCBpbmZyYXN0cnVjdHVyZQorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzE3CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpkb0dzdEluaXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaDoKKyAg
ICAgICAgQWRkIGEgR1N0cmVhbWVyIEhUVFAvSFRUUFMgc291cmNlLCB1c2luZyB0aGUgV2ViS2l0
IGluZnJhc3RydWN0dXJlLgorICAgICAgICBUaGlzIG1ha2VzIHN1cmUgdGhhdCByZWZlcmVyLCBj
b29raWVzLCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbgorICAgICAgICBhbmQgYWxsIGtpbmRz
IG9mIG90aGVyIGNvbnRleHQgYXJlIHBhc3NlZCB0byBHU3RyZWFtZXIgZm9yIHdlYnNpdGVzCisg
ICAgICAgIGxpa2UgVmltZW8gb3IgWW91VHViZS4KKwogMjAxMC0wMS0yOSAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgY29weWluZyBhbiBJREwgZmlsZSBpbiB0
byB0aGUgZnJhbWV3b3JrIHdyYXBwZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhODMwYmNkLi5iYmI0MjA2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTI0MDAsMTIgKzI0MDAsMTUgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9WaWRlb1NpbmtHU3RyZWFtZXIuaCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5jcHAgXAotCVdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaAorCVdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuaCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBcCisJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKIAog
d2ViY29yZV9saWJhZGQgKz0gXAogCS1sZ3N0aW50ZXJmYWNlcy0wLjEwIFwKIAktbGdzdHZpZGVv
LTAuMTAgXAotCS1sZ3N0cGJ1dGlscy0wLjEwCisJLWxnc3RwYnV0aWxzLTAuMTAgXAorCS1nc3Rh
cHAtMC4xMAogCiBlbmRpZiAjIEVORCBFTkFCTEVfVklERU8KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggNDFmOTBmMC4uNmQ5NWZmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVyLmgiCisjaW5jbHVk
ZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAKICNp
bmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC0xMzYsNDQgKzEzNywxMiBAQCB2b2lkIG1lZGlhUGxheWVy
UHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICpvYmplY3QsIEdQYXJhbVNwZWMg
KnBzcGVjLAogICAgIGdfb2JqZWN0X2dldChtcC0+bV9wbGF5QmluLCAic291cmNlIiwgJmVsZW1l
bnQsIE5VTEwpOwogICAgIGdzdF9vYmplY3RfcmVwbGFjZSgoR3N0T2JqZWN0KiopICZtcC0+bV9z
b3VyY2UsIChHc3RPYmplY3QqKSBlbGVtZW50KTsKIAotICAgIGlmIChlbGVtZW50KSB7Ci0gICAg
ICAgIEdQYXJhbVNwZWMqIHBzcGVjID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09C
SkVDVF9HRVRfQ0xBU1MoZWxlbWVudCksICJjb29raWVzIik7CisgICAgaWYgKFdFQktJVF9JU19X
RUJfU1JDKGVsZW1lbnQpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3BsYXllci0+
ZnJhbWVWaWV3KCkgPworbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IDA7CiAK
LSAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlIHNvdXJjZSBlbGVtZW50IGhhcyBhIGNvb2tp
ZXMgcHJvcGVydHkKLSAgICAgICAgLy8gb2YgdGhlIGZvcm1hdCB3ZSBleHBlY3QKLSAgICAgICAg
aWYgKCFwc3BlYyB8fCBwc3BlYy0+dmFsdWVfdHlwZSAhPSBHX1RZUEVfU1RSVikKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAvLyBUaGVuIGdldCB0aGUgY29va2llcyBmb3IgdGhlIFVS
SSBhbmQgc2V0IHRoZW0KLSAgICAgICAgU291cFNlc3Npb24qIHNlc3Npb24gPSB3ZWJraXRfZ2V0
X2RlZmF1bHRfc2Vzc2lvbigpOwotICAgICAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBT
T1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQ
RV9DT09LSUVfSkFSKSk7Ci0KLSAgICAgICAgY2hhciogbG9jYXRpb247Ci0gICAgICAgIGdfb2Jq
ZWN0X2dldChlbGVtZW50LCAibG9jYXRpb24iLCAmbG9jYXRpb24sIE5VTEwpOwotCi0gICAgICAg
IFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJpX25ldyhsb2NhdGlvbik7Ci0gICAgICAgIGdfZnJlZShs
b2NhdGlvbik7Ci0KLSAgICAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2Fu
dCB0byBhY2Nlc3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KLSAgICAgICAgaWYgKGdfc3Ry
X2VxdWFsKHVyaS0+aG9zdCwgIm1vdmllcy5hcHBsZS5jb20iKSkKLSAgICAgICAgICAgIGdfb2Jq
ZWN0X3NldChlbGVtZW50LCAidXNlci1hZ2VudCIsICJRdWlja3RpbWUvNy4yLjAiLCBOVUxMKTsK
LQotICAgICAgICBjaGFyKiBjb29raWVzID0gc291cF9jb29raWVfamFyX2dldF9jb29raWVzKGNv
b2tpZUphciwgdXJpLCBGQUxTRSk7Ci0gICAgICAgIHNvdXBfdXJpX2ZyZWUodXJpKTsKLQotICAg
ICAgICBjaGFyKiBjb29raWVzU3RydltdID0ge2Nvb2tpZXMsIE5VTEx9OwotICAgICAgICBnX29i
amVjdF9zZXQoZWxlbWVudCwgImNvb2tpZXMiLCBjb29raWVzU3RydiwgTlVMTCk7Ci0gICAgICAg
IGdfZnJlZShjb29raWVzKTsKLQotICAgICAgICBGcmFtZSogZnJhbWUgPSBtcC0+bV9wbGF5ZXIt
PmZyYW1lVmlldygpID8gbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IDA7Ci0g
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiAw
OwotICAgICAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAgICAgICAgIEdzdFN0cnVjdHVyZSogZXh0
cmFIZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXcoImV4dHJhLWhlYWRlcnMiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVmZXJl
ciIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5kb2N1bWVudFVSSSgpLnV0ZjgoKS5kYXRh
KCksIDApOwotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJleHRyYS1oZWFkZXJz
IiwgZXh0cmFIZWFkZXJzLCBOVUxMKTsKLSAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShl
eHRyYUhlYWRlcnMpOwotICAgICAgICB9CisgICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAgICAg
IHdlYmtpdF93ZWJfc3JjX3NldF9mcmFtZShXRUJLSVRfV0VCX1NSQyhlbGVtZW50KSwgZnJhbWUp
OwogICAgIH0KIAogICAgIGdzdF9vYmplY3RfdW5yZWYoZWxlbWVudCk7CkBAIC0yNDUsMTIgKzIx
NCwxNSBAQCBzdGF0aWMgYm9vbCBkb0dzdEluaXQoKQogICAgIGlmICghZ3N0SW5pdGlhbGl6ZWQp
IHsKICAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBnc3RJbml0aWFsaXpl
ZCA9IGdzdF9pbml0X2NoZWNrKDAsIDAsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgICAgIGlmICgh
Z3N0SW5pdGlhbGl6ZWQpCisgICAgICAgIGlmICghZ3N0SW5pdGlhbGl6ZWQpIHsKICAgICAgICAg
ICAgIExPR19WRVJCT1NFKE1lZGlhLCAiQ291bGQgbm90IGluaXRpYWxpemUgR1N0cmVhbWVyOiAl
cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogInVu
a25vd24gZXJyb3Igb2NjdXJyZWQiKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdG1lZGlhc3JjIiwgR1NU
X1JBTktfUFJJTUFSWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9U
WVBFX0RBVEFfU1JDKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJr
aXR3ZWJzcmMiLCBHU1RfUkFOS19QUklNQVJZICsgMTAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1NSQyk7CisgICAgICAgIH0KIAogICAgIH0KICAg
ICByZXR1cm4gZ3N0SW5pdGlhbGl6ZWQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjQ3ZmYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAt
MCwwICsxLDcwMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgU2ViYXN0aWFuIERyw7Zn
ZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJHUmVmUHRyLmgiCisjaW5jbHVkZSAiTm9uY29weWFibGUuaCIKKyNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKworI2luY2x1ZGUg
PGdzdC9hcHAvZ3N0YXBwc3JjLmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVn
aW5zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBTdHJlYW1pbmdDbGll
bnQgOiBwdWJsaWMgTm9uY29weWFibGUsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICBTdHJlYW1pbmdDbGllbnQoV2Via2l0V2ViU3JjKik7CisgICAg
ICAgIHZpcnR1YWwgflN0cmVhbWluZ0NsaWVudCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBp
bnQsIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
SGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChS
ZXNvdXJjZUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTChSZXNv
dXJjZUhhbmRsZSopOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Via2l0V2ViU3JjKiBtX3Ny
YzsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfR0VUX1BSSVZBVEUob2JqKSAgICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU1JDLCBXZWJr
aXRXZWJTcmNQcml2YXRlKSkKK3N0cnVjdCBfV2Via2l0V2ViU3JjUHJpdmF0ZSB7CisgICAgR3N0
QXBwU3JjKiBhcHBzcmM7CisgICAgR3N0UGFkKiBzcmNwYWQ7CisgICAgZ2NoYXIqIHVyaTsKKwor
ICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZTsKKworICAgIFN0cmVhbWluZ0NsaWVudCogY2xpZW50
OworICAgIFJlc291cmNlUmVxdWVzdCogcmVzb3VyY2VSZXF1ZXN0OworICAgIFJlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gcmVzb3VyY2VIYW5kbGU7CisKKyAgICBndWludDY0IG9mZnNldDsKKyAgICBn
dWludDY0IHNpemU7CisgICAgZ2Jvb2xlYW4gc2Vla2FibGU7CisgICAgZ2Jvb2xlYW4gcGF1c2Vk
OworCisgICAgZ3VpbnQ2NCByZXF1ZXN0ZWRPZmZzZXQ7CisKKyAgICBndWludCBuZWVkRGF0YUlE
OworICAgIGd1aW50IGVub3VnaERhdGFJRDsKKyAgICBndWludCBzZWVrSUQ7CisKKyAgICAvLyBp
Y2VjYXN0IHN0dWZmCisgICAgZ2Jvb2xlYW4gaXJhZGlvTW9kZTsKKyAgICBnY2hhciogaXJhZGlv
TmFtZTsKKyAgICBnY2hhciogaXJhZGlvR2VucmU7CisgICAgZ2NoYXIqIGlyYWRpb1VybDsKKyAg
ICBnY2hhciogaXJhZGlvVGl0bGU7Cit9OworCitlbnVtIHsKKyAgICBQUk9QX0lSQURJT19NT0RF
ID0gMSwKKyAgICBQUk9QX0lSQURJT19OQU1FLAorICAgIFBST1BfSVJBRElPX0dFTlJFLAorICAg
IFBST1BfSVJBRElPX1VSTCwKKyAgICBQUk9QX0lSQURJT19USVRMRQorfTsKKworc3RhdGljIEdz
dFN0YXRpY1BhZFRlbXBsYXRlIHNyY1RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUo
InNyYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1NUX1BBRF9TUkMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1BBRF9BTFdBWVMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7CisKK0dTVF9ERUJVR19DQVRFR09SWV9T
VEFUSUMod2Via2l0X3dlYl9zcmNfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Vi
a2l0X3dlYl9zcmNfZGVidWcKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfdXJpX2hhbmRs
ZXJfaW5pdChncG9pbnRlciBnSWZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdwb2ludGVyIGlmYWNlRGF0YSk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfc3JjX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3NyY19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsCisgICAgY29u
c3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworc3RhdGljIHZvaWQgd2Via2l0
X3dlYl9zcmNfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELAorICAg
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKK3N0YXRpYyBHc3RTdGF0ZUNoYW5n
ZVJldHVybiB3ZWJraXRfd2ViX3NyY19jaGFuZ2Vfc3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3Jj
X25lZWRfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1
c2VyRGF0YSk7CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19lbm91Z2hfZGF0YV9jYihHc3RB
cHBTcmMqIGFwcHNyYywgZ3BvaW50ZXIgdXNlckRhdGEpOworc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfc3JjX3NlZWtfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQ2NCBvZmZzZXQs
IGdwb2ludGVyIHVzZXJEYXRhKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfc3RvcChX
ZWJraXRXZWJTcmMqIHNyYywgZ2Jvb2xlYW4gcmVzZXRSZXF1ZXN0ZWRPZmZzZXQpOworCitzdGF0
aWMgR3N0QXBwU3JjQ2FsbGJhY2tzIGFwcHNyY19jYWxsYmFja3MgPSB7CisgICAgd2Via2l0X3dl
Yl9zcmNfbmVlZF9kYXRhX2NiLAorICAgIHdlYmtpdF93ZWJfc3JjX2Vub3VnaF9kYXRhX2NiLAor
ICAgIHdlYmtpdF93ZWJfc3JjX3NlZWtfZGF0YV9jYiwKKyAgICB7IDAgfQorfTsKKworc3RhdGlj
IGNvbnN0IEdJbnRlcmZhY2VJbmZvIHVyaWhhbmRsZXJfaW5mbyA9IHsKKyAgICB3ZWJraXRfd2Vi
X3NyY191cmlfaGFuZGxlcl9pbml0LAorICAgIDAsIDAKK307CisKKworc3RhdGljIHZvaWQgX2Rv
SW5pdChHVHlwZSBndHlwZSkKK3sKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRf
d2ViX3NyY19kZWJ1ZywgIndlYmtpdHdlYnNyYyIsIDAsICJ3ZWJzcmMgZWxlbWVudCIpOworICAg
IGdfdHlwZV9hZGRfaW50ZXJmYWNlX3N0YXRpYyhndHlwZSwgR1NUX1RZUEVfVVJJX0hBTkRMRVIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1cmloYW5kbGVyX2luZm8pOworfQor
CitHU1RfQk9JTEVSUExBVEVfRlVMTChXZWJraXRXZWJTcmMsIHdlYmtpdF93ZWJfc3JjLCBHc3RC
aW4sIEdTVF9UWVBFX0JJTiwgX2RvSW5pdCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3Jj
X2Jhc2VfaW5pdChncG9pbnRlciBrbGFzcykKK3sKKyAgICBHc3RFbGVtZW50Q2xhc3MqIGVrbGFz
cyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKKworICAgIGdzdF9lbGVtZW50X2NsYXNzX2Fk
ZF9wYWRfdGVtcGxhdGUoZWtsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdz
dF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKKyAgICBnc3RfZWxlbWVu
dF9jbGFzc19zZXRfZGV0YWlsc19zaW1wbGUoZWtsYXNzLCAoZ2NoYXIqKSAiV2ViS2l0IFdlYiBz
b3VyY2UgZWxlbWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjaGFy
KikgIlNvdXJjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjaGFyKikg
IkhhbmRsZXMgSFRUUC9IVFRQUyB1cmlzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoZ2NoYXIqKSAiU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJv
cmEuY28udWs+Iik7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2NsYXNzX2luaXQo
V2Via2l0V2ViU3JjQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2tsYXNzID0g
R19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIEdzdEVsZW1lbnRDbGFzcyogZWtsYXNzID0gR1NU
X0VMRU1FTlRfQ0xBU1Moa2xhc3MpOworCisgICAgb2tsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF93
ZWJfc3JjX2ZpbmFsaXplOworICAgIG9rbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9z
cmNfc2V0X3Byb3BlcnR5OworICAgIG9rbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9z
cmNfZ2V0X3Byb3BlcnR5OworCisgICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAgICAgICBQUk9QX0lSQURJT19NT0RFLAor
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiaXJhZGlvLW1vZGUiLAorICAgICAgICAgICAg
ImlyYWRpby1tb2RlIiwKKyAgICAgICAgICAgICJFbmFibGUgaW50ZXJuZXQgcmFkaW8gbW9kZSAo
ZXh0cmFjdGlvbiBvZiBzaG91dGNhc3QvaWNlY2FzdCBtZXRhZGF0YSkiLAorICAgICAgICAgICAg
RkFMU0UsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNf
U1RSSU5HUykpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywK
KyAgICAgICAgUFJPUF9JUkFESU9fTkFNRSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygi
aXJhZGlvLW5hbWUiLAorICAgICAgICAgICAgImlyYWRpby1uYW1lIiwgIk5hbWUgb2YgdGhlIHN0
cmVhbSIsIDAsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJ
Q19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNz
LAorICAgICAgICBQUk9QX0lSQURJT19HRU5SRSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmlu
ZygiaXJhZGlvLWdlbnJlIiwKKyAgICAgICAgICAgICJpcmFkaW8tZ2VucmUiLCAiR2VucmUgb2Yg
dGhlIHN0cmVhbSIsIDAsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFN
X1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
b2tsYXNzLAorICAgICAgICBQUk9QX0lSQURJT19VUkwsCisgICAgICAgIGdfcGFyYW1fc3BlY19z
dHJpbmcoImlyYWRpby11cmwiLAorICAgICAgICAgICAgImlyYWRpby11cmwiLAorICAgICAgICAg
ICAgIkhvbWVwYWdlIFVSTCBmb3IgcmFkaW8gc3RyZWFtIiwgMCwgKEdQYXJhbUZsYWdzKSAoR19Q
QVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAgIFBST1BfSVJBRElPX1RJVExF
LAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tdGl0bGUiLAorICAgICAgICAg
ICAgImlyYWRpby10aXRsZSIsCisgICAgICAgICAgICAiTmFtZSBvZiBjdXJyZW50bHkgcGxheWlu
ZyBzb25nIiwgMCwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RB
VElDX1NUUklOR1MpKSk7CisKKyAgICBla2xhc3MtPmNoYW5nZV9zdGF0ZSA9IHdlYmtpdF93ZWJf
c3JjX2NoYW5nZV9zdGF0ZTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywg
c2l6ZW9mKFdlYmtpdFdlYlNyY1ByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9zcmNfaW5pdChXZWJraXRXZWJTcmMqIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2Via2l0V2ViU3JjQ2xhc3MqIGdLbGFzcykKK3sKKyAgICBHc3RQYWRUZW1wbGF0ZSog
cGFkVGVtcGxhdGUgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQoJnNyY1RlbXBsYXRlKTsK
KyAgICBHc3RQYWQqIHRhcmdldHBhZDsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0g
V0VCS0lUX1dFQl9TUkNfR0VUX1BSSVZBVEUoc3JjKTsKKworICAgIHNyYy0+cHJpdiA9IHByaXY7
CisKKyAgICBwcml2LT5jbGllbnQgPSBuZXcgU3RyZWFtaW5nQ2xpZW50KHNyYyk7CisKKyAgICBw
cml2LT5zcmNwYWQgPSBnc3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXRfZnJvbV90ZW1wbGF0ZSgi
c3JjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhZFRlbXBsYXRlKTsKKworICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VM
RU1FTlQoc3JjKSwgcHJpdi0+c3JjcGFkKTsKKworICAgIHByaXYtPmFwcHNyYyA9IEdTVF9BUFBf
U1JDKGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXBwc3JjIiwgMCkpOworICAgIGlmICghcHJp
di0+YXBwc3JjKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiRmFpbGVkIHRvIGNy
ZWF0ZSBnaW9zdHJlYW1zcmMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdzdF9i
aW5fYWRkKEdTVF9CSU4oc3JjKSwgR1NUX0VMRU1FTlQocHJpdi0+YXBwc3JjKSk7CisKKyAgICB0
YXJnZXRwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChHU1RfRUxFTUVOVChwcml2LT5h
cHBzcmMpLCAic3JjIik7CisgICAgZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0KEdTVF9HSE9TVF9Q
QUQocHJpdi0+c3JjcGFkKSwgdGFyZ2V0cGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKHRhcmdl
dHBhZCk7CisKKyAgICBnc3RfYXBwX3NyY19zZXRfY2FsbGJhY2tzKHByaXYtPmFwcHNyYywgJmFw
cHNyY19jYWxsYmFja3MsIHNyYywgMCk7CisgICAgZ3N0X2FwcF9zcmNfc2V0X2VtaXRfc2lnbmFs
cyhwcml2LT5hcHBzcmMsIEZBTFNFKTsKKyAgICBnc3RfYXBwX3NyY19zZXRfc3RyZWFtX3R5cGUo
cHJpdi0+YXBwc3JjLCBHU1RfQVBQX1NUUkVBTV9UWVBFX1NFRUtBQkxFKTsKKyAgICBnc3RfYXBw
X3NyY19zZXRfbWF4X2J5dGVzKHByaXYtPmFwcHNyYywgNTEyICogMTAyNCk7CisKKyAgICB3ZWJr
aXRfd2ViX3NyY19zdG9wKHNyYywgVFJVRSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
c3JjX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9
IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IHNyYy0+cHJpdjsKKworICAgIGRlbGV0ZSBwcml2LT5jbGllbnQ7CisgICAgZ19mcmVlKHByaXYt
PnVyaSk7CisKKyAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAo
KEdPYmplY3QqICkoc3JjKSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFs
dWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lU
X1dFQl9TUkMob2JqZWN0KTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5w
cml2OworCisgICAgc3dpdGNoIChwcm9wSUQpIHsKKyAgICBjYXNlIFBST1BfSVJBRElPX01PREU6
CisgICAgICAgIHByaXYtPmlyYWRpb01vZGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfZ2V0X3Byb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
YykKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7Cisg
ICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIHN3aXRjaCAo
cHJvcElEKSB7CisgICAgY2FzZSBQUk9QX0lSQURJT19NT0RFOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9ib29sZWFuKHZhbHVlLCBwcml2LT5pcmFkaW9Nb2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0lSQURJT19OQU1FOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUs
IHByaXYtPmlyYWRpb05hbWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSVJBRElP
X0dFTlJFOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPmlyYWRpb0dl
bnJlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lSQURJT19VUkw6CisgICAgICAg
IGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgcHJpdi0+aXJhZGlvVXJsKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0lSQURJT19USVRMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3Ry
aW5nKHZhbHVlLCBwcml2LT5pcmFkaW9UaXRsZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BJRCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9zcmNfc3RvcChXZWJraXRXZWJTcmMqIHNyYywgZ2Jvb2xlYW4gcmVzZXRSZXF1
ZXN0ZWRPZmZzZXQpCit7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJp
djsKKworICAgIGlmIChwcml2LT5yZXNvdXJjZUhhbmRsZSkgeworICAgICAgICBwcml2LT5yZXNv
dXJjZUhhbmRsZS0+Y2FuY2VsKCk7CisgICAgICAgIHByaXYtPnJlc291cmNlSGFuZGxlLnJlbGVh
c2UoKTsKKyAgICB9CisgICAgcHJpdi0+cmVzb3VyY2VIYW5kbGUgPSAwOworCisgICAgaWYgKHBy
aXYtPmZyYW1lKQorICAgICAgICBwcml2LT5mcmFtZS0+ZGVyZWYoKTsKKyAgICBwcml2LT5mcmFt
ZSA9IDA7CisKKyAgICBpZiAocHJpdi0+cmVzb3VyY2VSZXF1ZXN0KQorICAgICAgICBkZWxldGUg
cHJpdi0+cmVzb3VyY2VSZXF1ZXN0OworICAgIHByaXYtPnJlc291cmNlUmVxdWVzdCA9IDA7CisK
KyAgICBpZiAocHJpdi0+bmVlZERhdGFJRCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYt
Pm5lZWREYXRhSUQpOworICAgIHByaXYtPm5lZWREYXRhSUQgPSAwOworCisgICAgaWYgKHByaXYt
PmVub3VnaERhdGFJRCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPmVub3VnaERhdGFJ
RCk7CisgICAgcHJpdi0+ZW5vdWdoRGF0YUlEID0gMDsKKworICAgIGlmIChwcml2LT5zZWVrSUQp
CisgICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zZWVrSUQpOworICAgIHByaXYtPnNlZWtJ
RCA9IDA7CisKKyAgICBwcml2LT5wYXVzZWQgPSBGQUxTRTsKKworICAgIGdfZnJlZShwcml2LT5p
cmFkaW9OYW1lKTsKKyAgICBwcml2LT5pcmFkaW9OYW1lID0gMDsKKworICAgIGdfZnJlZShwcml2
LT5pcmFkaW9HZW5yZSk7CisgICAgcHJpdi0+aXJhZGlvR2VucmUgPSAwOworCisgICAgZ19mcmVl
KHByaXYtPmlyYWRpb1VybCk7CisgICAgcHJpdi0+aXJhZGlvVXJsID0gMDsKKworICAgIGdfZnJl
ZShwcml2LT5pcmFkaW9UaXRsZSk7CisgICAgcHJpdi0+aXJhZGlvVGl0bGUgPSAwOworCisgICAg
Z3N0X2FwcF9zcmNfc2V0X2NhcHMocHJpdi0+YXBwc3JjLCAwKTsKKworICAgIHByaXYtPm9mZnNl
dCA9IDA7CisgICAgcHJpdi0+c2l6ZSA9IDA7CisgICAgcHJpdi0+c2Vla2FibGUgPSBGQUxTRTsK
KworICAgIGlmIChyZXNldFJlcXVlc3RlZE9mZnNldCkKKyAgICAgICAgcHJpdi0+cmVxdWVzdGVk
T2Zmc2V0ID0gMDsKKworICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RvcHBlZCByZXF1ZXN0
Iik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3NyY19zdGFydChXZWJraXRXZWJT
cmMqIHNyYykKK3sKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2Owor
CisgICAgaWYgKCFwcml2LT51cmkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJO
byBVUkkgcHJvdmlkZWQiKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIEtV
UkwgdXJsID0gS1VSTChLVVJMKCksIHByaXYtPnVyaSk7CisgICAgcHJpdi0+cmVzb3VyY2VSZXF1
ZXN0ID0gbmV3IFJlc291cmNlUmVxdWVzdCh1cmwpOworICAgIHByaXYtPnJlc291cmNlUmVxdWVz
dC0+c2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRJc01lZGlhKTsKKyAg
ICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNldEFsbG93Q29va2llcyh0cnVlKTsKKworICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCisgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQorICAgICAgICBwcml2LT5yZXNvdXJj
ZVJlcXVlc3QtPnNldEhUVFBVc2VyQWdlbnQoIlF1aWNrdGltZS83LjIuMCIpOworCisgICAgaWYg
KHByaXYtPmZyYW1lKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHByaXYtPmZyYW1l
LT5kb2N1bWVudCgpOworICAgICAgICBpZiAoZG9jdW1lbnQpCisgICAgICAgICAgICBwcml2LT5y
ZXNvdXJjZVJlcXVlc3QtPnNldEhUVFBSZWZlcnJlcihkb2N1bWVudC0+ZG9jdW1lbnRVUkkoKSk7
CisKKyAgICAgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IHByaXYtPmZyYW1lLT5sb2FkZXIoKTsK
KyAgICAgICAgaWYgKGxvYWRlcikKKyAgICAgICAgICAgIGxvYWRlci0+YWRkRXh0cmFGaWVsZHNU
b1N1YnJlc291cmNlUmVxdWVzdCgqcHJpdi0+cmVzb3VyY2VSZXF1ZXN0KTsKKyAgICB9CisKKyAg
ICBpZiAocHJpdi0+cmVxdWVzdGVkT2Zmc2V0KSB7CisgICAgICAgIGdjaGFyKiB2YWwgPSBnX3N0
cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIi0iLCBwcml2LT5yZXF1ZXN0
ZWRPZmZzZXQpOworICAgICAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNldEhUVFBIZWFkZXJG
aWVsZCgiUmFuZ2UiLCB2YWwpOworICAgICAgICBnX2ZyZWUodmFsKTsKKyAgICB9CisKKyAgICBp
ZiAocHJpdi0+aXJhZGlvTW9kZSkKKyAgICAgICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0LT5zZXRI
VFRQSGVhZGVyRmllbGQoImljeS1tZXRhZGF0YSIsICIxIik7CisKKyAgICAvLyBOZWVkZWQgdG8g
dXNlIERMTkEgc3RyZWFtaW5nIHNlcnZlcnMKKyAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZCgidHJhbnNmZXJNb2RlLmRsbmEiLCAiU3RyZWFtaW5nIik7CisKKyAg
ICBwcml2LT5yZXNvdXJjZUhhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUoKnByaXYtPnJl
c291cmNlUmVxdWVzdCwgcHJpdi0+Y2xpZW50LCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAg
ICBpZiAoIXByaXYtPnJlc291cmNlSGFuZGxlKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qo
c3JjLCAiRmFpbGVkIHRvIGNyZWF0ZSBSZXNvdXJjZUhhbmRsZSIpOworICAgICAgICByZXR1cm4g
RkFMU0U7CisgICAgfQorCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdGFydGVkIHJlcXVl
c3QiKTsKKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1
cm4gd2Via2l0X3dlYl9zcmNfY2hhbmdlX3N0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0
YXRlQ2hhbmdlIHRyYW5zaXRpb24pCit7CisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0g
R1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lU
X1dFQl9TUkMoZWxlbWVudCk7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+
cHJpdjsKKworICAgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NI
QU5HRV9OVUxMX1RPX1JFQURZOgorICAgICAgICBpZiAoIXByaXYtPmFwcHNyYykgeworICAgICAg
ICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKGVsZW1lbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3N0X21pc3NpbmdfZWxlbWVudF9tZXNzYWdlX25ldyhlbGVt
ZW50LCAiYXBwc3JjIikpOworICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBDT1JF
LCBNSVNTSU5HX1BMVUdJTiwgKDApLCAoIm5vIGFwcHNyYyIpKTsKKyAgICAgICAgICAgIHJldHVy
biBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0ID0gR1NUX0VMRU1F
TlRfQ0xBU1MocGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlKGVsZW1lbnQsIHRyYW5zaXRpb24p
OworICAgIGlmIChHX1VOTElLRUxZKHJldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpKSB7
CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RhdGUgY2hhbmdlIGZhaWxlZCIpOwor
ICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHN3aXRjaCAodHJhbnNpdGlvbikgewor
ICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CisgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1Qoc3JjLCAiUkVBRFktPlBBVVNFRCIpOworICAgICAgICBpZiAoIXdlYmtpdF93
ZWJfc3JjX3N0YXJ0KHNyYykpCisgICAgICAgICAgICByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX0ZB
SUxVUkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURf
VE9fUkVBRFk6CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUEFVU0VELT5SRUFEWSIp
OworICAgICAgICB3ZWJraXRfd2ViX3NyY19zdG9wKHNyYywgVFJVRSk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByZXQ7
Cit9CisKKy8qKiogR1NUVVJJSEFORExFUiBJTlRFUkZBQ0UgKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIEdzdFVSSVR5cGUgd2Via2l0
X3dlYl9zcmNfdXJpX2dldF90eXBlKHZvaWQpCit7CisgICAgcmV0dXJuIEdTVF9VUklfU1JDOwor
fQorCitzdGF0aWMgZ2NoYXIqKiB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3Byb3RvY29scyh2b2lk
KQoreworICAgIHN0YXRpYyBnY2hhciogcHJvdG9jb2xzW10gPSB7KGdjaGFyKikgImh0dHAiLCAo
Z2NoYXIqKSAiaHR0cHMiLCAwIH07CisKKyAgICByZXR1cm4gcHJvdG9jb2xzOworfQorCitzdGF0
aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfc3JjX3VyaV9nZXRfdXJpKEdzdFVSSUhhbmRsZXIq
IGhhbmRsZXIpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhoYW5k
bGVyKTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAg
cmV0dXJuIHByaXYtPnVyaTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX3Vy
aV9zZXRfdXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIsIGNvbnN0IGdjaGFyKiB1cmkpCit7Cisg
ICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhoYW5kbGVyKTsKKyAgICBXZWJr
aXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgaWYgKEdTVF9TVEFURShz
cmMpID49IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMs
ICJVUkkgY2FuIG9ubHkgYmUgc2V0IGluIHN0YXRlcyA8IFBBVVNFRCIpOworICAgICAgICByZXR1
cm4gRkFMU0U7CisgICAgfQorICAgIAorICAgIGlmICh1cmkgJiYgIWdfYXNjaWlfc3RybmNhc2Vj
bXAoImh0dHAiLCB1cmksIDQpICYmICFnX2FzY2lpX3N0cm5jYXNlY21wKCJodHRwIiwgdXJpLCA1
KSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkludmFsaWQgVVJJICclcyciLCB1
cmkpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgZ19mcmVlKHByaXYtPnVy
aSk7CisgICAgcHJpdi0+dXJpID0gdXJpID8gZ19zdHJkdXAodXJpKSA6IDA7CisgICAgCisgICAg
cmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3VyaV9oYW5kbGVy
X2luaXQoZ3BvaW50ZXIgZ0lmYWNlLCBncG9pbnRlciBpZmFjZURhdGEpCit7CisgICAgR3N0VVJJ
SGFuZGxlckludGVyZmFjZSogaWZhY2UgPSAoR3N0VVJJSGFuZGxlckludGVyZmFjZSAqKSBnSWZh
Y2U7CisKKyAgICBpZmFjZS0+Z2V0X3R5cGUgPSB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3R5cGU7
CisgICAgaWZhY2UtPmdldF9wcm90b2NvbHMgPSB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3Byb3Rv
Y29sczsKKyAgICBpZmFjZS0+Z2V0X3VyaSA9IHdlYmtpdF93ZWJfc3JjX3VyaV9nZXRfdXJpOwor
ICAgIGlmYWNlLT5zZXRfdXJpID0gd2Via2l0X3dlYl9zcmNfdXJpX3NldF91cmk7Cit9CisKKy8v
IGFwcHNyYyBjYWxsYmFja3MKKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX25lZWRf
ZGF0YV9tYWluX2NiKFdlYmtpdFdlYlNyYyogc3JjKQoreworICAgIFdlYmtpdFdlYlNyY1ByaXZh
dGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0g
cHJpdi0+cmVzb3VyY2VIYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgaWYgKGQtPm1fbXNnKQor
ICAgICAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKFJlc291cmNlSGFuZGxlOjpkZWZh
dWx0U2Vzc2lvbigpLCBkLT5tX21zZyk7CisKKyAgICBwcml2LT5wYXVzZWQgPSBGQUxTRTsKKyAg
ICBwcml2LT5uZWVkRGF0YUlEID0gMDsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQg
bGVuZ3RoLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdF
QktJVF9XRUJfU1JDKHVzZXJEYXRhKTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0g
c3JjLT5wcml2OworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJOZWVkIG1vcmUgZGF0YTog
JXUiLCBsZW5ndGgpOworICAgIGlmIChwcml2LT5uZWVkRGF0YUlEIHx8ICFwcml2LT5wYXVzZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPm5lZWREYXRhSUQgPSBnX3RpbWVvdXRfYWRk
X2Z1bGwoR19QUklPUklUWV9ISUdILCAwLCAoR1NvdXJjZUZ1bmMpIHdlYmtpdF93ZWJfc3JjX25l
ZWRfZGF0YV9tYWluX2NiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdz
dF9vYmplY3RfdW5yZWYpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfZW5v
dWdoX2RhdGFfbWFpbl9jYihXZWJraXRXZWJTcmMqIHNyYykKK3sKKyAgICBXZWJraXRXZWJTcmNQ
cml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCog
ZCA9IHByaXYtPnJlc291cmNlSGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIHNvdXBfc2Vzc2lv
bl9wYXVzZV9tZXNzYWdlKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBkLT5tX21z
Zyk7CisgICAgCisgICAgcHJpdi0+cGF1c2VkID0gVFJVRTsKKyAgICBwcml2LT5lbm91Z2hEYXRh
SUQgPSAwOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9z
cmNfZW5vdWdoX2RhdGFfY2IoR3N0QXBwU3JjKiBhcHBzcmMsIGdwb2ludGVyIHVzZXJEYXRhKQor
eworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkModXNlckRhdGEpOworICAg
IFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBHU1RfREVCVUdf
T0JKRUNUKHNyYywgIkhhdmUgZW5vdWdoIGRhdGEiKTsKKyAgICBpZiAocHJpdi0+ZW5vdWdoRGF0
YUlEIHx8IHByaXYtPnBhdXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+ZW5vdWdo
RGF0YUlEID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwgMCwgKEdTb3VyY2VG
dW5jKSB3ZWJraXRfd2ViX3NyY19lbm91Z2hfZGF0YV9tYWluX2NiLCBnc3Rfb2JqZWN0X3JlZihz
cmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOworfQorCitzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0X3dlYl9zcmNfc2Vla19tYWluX2NiKFdlYmtpdFdlYlNyYyogc3JjKQorewor
ICAgIHdlYmtpdF93ZWJfc3JjX3N0b3Aoc3JjLCBGQUxTRSk7CisgICAgd2Via2l0X3dlYl9zcmNf
c3RhcnQoc3JjKTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfc3JjX3NlZWtfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQ2NCBvZmZz
ZXQsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lU
X1dFQl9TUkModXNlckRhdGEpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMt
PnByaXY7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWtpbmcgdG8gb2Zmc2V0OiAl
IiBHX0dVSU5UNjRfRk9STUFULCBvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPT0gcHJpdi0+b2Zm
c2V0KQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIGlmICghcHJpdi0+c2Vla2FibGUpCisg
ICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBpZiAob2Zmc2V0ID4gcHJpdi0+c2l6ZSkKKyAgICAg
ICAgcmV0dXJuIEZBTFNFOworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJEb2luZyByYW5n
ZS1yZXF1ZXN0IHNlZWsiKTsKKyAgICBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQgPSBvZmZzZXQ7Cisg
ICAgaWYgKHByaXYtPnNlZWtJRCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNlZWtJ
RCk7CisgICAgcHJpdi0+c2Vla0lEID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElH
SCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJraXRfd2ViX3NyY19zZWVrX21haW5fY2IsIGdzdF9vYmpl
Y3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7CisgICAgCisg
ICAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9zcmNfc2V0X2ZyYW1lKFdlYmtp
dFdlYlNyYyogc3JjLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7CisgICAgV2Via2l0V2ViU3Jj
UHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGZyYW1lLT5yZWYoKTsKKyAgICBwcml2
LT5mcmFtZSA9IGZyYW1lOworfQorCitTdHJlYW1pbmdDbGllbnQ6OlN0cmVhbWluZ0NsaWVudChX
ZWJraXRXZWJTcmMqIHNyYykgOiBtX3NyYyhzcmMpCit7CisKK30KKworU3RyZWFtaW5nQ2xpZW50
Ojp+U3RyZWFtaW5nQ2xpZW50KCkKK3sKKworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3sKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CisKKyAg
ICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiUmVjZWl2ZWQgcmVzcG9uc2U6ICVkIiwgcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSk7CisKKyAgICAvLyBJZiB3ZSBzZWVrZWQgd2UgbmVlZCAyMDYg
PT0gUEFSVElBTF9DT05URU5UCisgICAgaWYgKHByaXYtPnJlcXVlc3RlZE9mZnNldCAmJiByZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpICE9IDIwNikgeworICAgICAgICBHU1RfRUxFTUVOVF9FUlJP
UihtX3NyYywgUkVTT1VSQ0UsIFJFQUQsICgwKSwgKDApKTsKKyAgICAgICAgd2Via2l0X3dlYl9z
cmNfc3RvcChtX3NyYywgVFJVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsb25n
IGxvbmcgbGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CisgICAgaWYg
KGxlbmd0aCA+IDApIHsKKyAgICAgICAgbGVuZ3RoICs9IHByaXYtPnJlcXVlc3RlZE9mZnNldDsK
KyAgICAgICAgZ3N0X2FwcF9zcmNfc2V0X3NpemUocHJpdi0+YXBwc3JjLCBsZW5ndGgpOworICAg
IH0KKworICAgIHByaXYtPnNpemUgPSBsZW5ndGggPj0gMCA/IGxlbmd0aCA6IDA7CisgICAgcHJp
di0+c2Vla2FibGUgPSBsZW5ndGggPiAwICYmIGdfYXNjaWlfc3RyY2FzZWNtcCgibm9uZSIsIHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0LVJhbmdlcyIpLnV0ZjgoKS5kYXRhKCkpOwor
CisgICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIFN0cmluZyB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZCgiaWN5LW1ldGFpbnQiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgewor
ICAgICAgICBnY2hhciogZW5kcHRyID0gMDsKKyAgICAgICAgZ2ludDY0IGljeU1ldGFJbnQgPSBn
X2FzY2lpX3N0cnRvbGwodmFsdWUudXRmOCgpLmRhdGEoKSwgJmVuZHB0ciwgMTApOworICAgICAg
ICAgICAgCisgICAgICAgIGlmIChlbmRwdHIgJiYgKmVuZHB0ciA9PSAnXDAnICYmIGljeU1ldGFJ
bnQgPiAwKSB7CisgICAgICAgICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBs
ZSgiYXBwbGljYXRpb24veC1pY3kiLCAibWV0YWRhdGEtaW50ZXJ2YWwiLCBHX1RZUEVfSU5ULCAo
Z2ludCkgaWN5TWV0YUludCwgTlVMTCk7CisKKyAgICAgICAgICAgIGdzdF9hcHBfc3JjX3NldF9j
YXBzKHByaXYtPmFwcHNyYywgY2Fwcyk7CisgICAgICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBz
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdzdFRhZ0xpc3QqIHRhZ3MgPSBnc3RfdGFnX2xp
c3RfbmV3KCk7CisgICAgdmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImljeS1uYW1l
Iik7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmly
YWRpb05hbWUpOworICAgICAgICBwcml2LT5pcmFkaW9OYW1lID0gZ19zdHJkdXAodmFsdWUudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX3NyYyksICJp
cmFkaW8tbmFtZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdfTUVS
R0VfUkVQTEFDRSwgR1NUX1RBR19PUkdBTklaQVRJT04sIHByaXYtPmlyYWRpb05hbWUsIE5VTEwp
OworICAgIH0KKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LWdlbnJl
Iik7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmly
YWRpb0dlbnJlKTsKKyAgICAgICAgcHJpdi0+aXJhZGlvR2VucmUgPSBnX3N0cmR1cCh2YWx1ZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwg
ImlyYWRpby1nZW5yZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdf
TUVSR0VfUkVQTEFDRSwgR1NUX1RBR19HRU5SRSwgcHJpdi0+aXJhZGlvR2VucmUsIE5VTEwpOwor
ICAgIH0KKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LXVybCIpOwor
ICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9V
cmwpOworICAgICAgICBwcml2LT5pcmFkaW9VcmwgPSBnX3N0cmR1cCh2YWx1ZS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwgImlyYWRpby11
cmwiKTsKKyAgICAgICAgZ3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01FUkdFX1JFUExB
Q0UsIEdTVF9UQUdfTE9DQVRJT04sIHByaXYtPmlyYWRpb1VybCwgTlVMTCk7CisgICAgfQorICAg
IHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktdGl0bGUiKTsKKyAgICBpZiAo
IXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+aXJhZGlvVGl0bGUpOwor
ICAgICAgICBwcml2LT5pcmFkaW9UaXRsZSA9IGdfc3RyZHVwKHZhbHVlLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMpLCAiaXJhZGlvLXRpdGxl
Iik7CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RBR19NRVJHRV9SRVBMQUNF
LCBHU1RfVEFHX1RJVExFLCBwcml2LT5pcmFkaW9UaXRsZSwgTlVMTCk7CisgICAgfQorCisgICAg
aWYgKGdzdF90YWdfbGlzdF9pc19lbXB0eSh0YWdzKSkKKyAgICAgICAgZ3N0X3RhZ19saXN0X2Zy
ZWUodGFncyk7CisgICAgZWxzZQorICAgICAgICBnc3RfZWxlbWVudF9mb3VuZF90YWdzX2Zvcl9w
YWQoR1NUX0VMRU1FTlQobV9zcmMpLCBtX3NyYy0+cHJpdi0+c3JjcGFkLCB0YWdzKTsKK30KKwor
dm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkKK3sK
KyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CisKKyAgICBHU1Rf
TE9HX09CSkVDVChtX3NyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIGxlbmd0aCk7CisKKyAg
ICBpZiAocHJpdi0+c2Vla0lEIHx8IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkgewor
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3Jp
bmcgZGF0YSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR3N0QnVmZmVyKiBidWZm
ZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MobGVuZ3RoKTsKKworICAgIG1lbWNweShHU1Rf
QlVGRkVSX0RBVEEoYnVmZmVyKSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBHU1RfQlVGRkVSX09GRlNF
VChidWZmZXIpID0gcHJpdi0+b2Zmc2V0OworICAgIHByaXYtPm9mZnNldCArPSBsZW5ndGg7Cisg
ICAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CisKKyAgICBH
c3RGbG93UmV0dXJuIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNyYywg
YnVmZmVyKTsKKyAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxPV19V
TkVYUEVDVEVEKQorICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgQ09SRSwgRkFJTEVE
LCAoMCksICgwKSk7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKikKK3sKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiSGF2ZSBF
T1MiKTsKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKG1fc3JjLT5wcml2LT5hcHBzcmMp
OworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIEdTVF9FUlJPUl9PQkpFQ1QobV9zcmMs
ICJIYXZlIGZhaWx1cmU6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgUkVTT1VSQ0UsIEZBSUxFRCwg
KCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSksICgwKSk7
CisgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShtX3NyYy0+cHJpdi0+YXBwc3JjKTsKK30K
Kwordm9pZCBTdHJlYW1pbmdDbGllbnQ6Ondhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKQorewor
fQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSop
Cit7Cit9CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMmExYTgzMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29s
bGFib3JhLmNvLnVrPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBX
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXJfaAorI2RlZmluZSBXZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXJfaAorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVH
SU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfU1JDICAgICAgICAgICAgKHdlYmtp
dF93ZWJfc3JjX2dldF90eXBlICgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NSQyhvYmopICAgICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgV0VCS0lUX1RZUEVfV0VC
X1NSQywgV2Via2l0V2ViU3JjKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfQ0xBU1Moa2xhc3Mp
ICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfV0VCX1NS
QywgV2Via2l0V2ViU3JjQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NSQyhvYmopICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgV0VCS0lUX1RZUEVfV0VC
X1NSQykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU1JDX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NI
RUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9TUkMpKQorCit0eXBlZGVm
IHN0cnVjdCBfV2Via2l0V2ViU3JjICAgICAgICBXZWJraXRXZWJTcmM7Cit0eXBlZGVmIHN0cnVj
dCBfV2Via2l0V2ViU3JjQ2xhc3MgICBXZWJraXRXZWJTcmNDbGFzczsKK3R5cGVkZWYgc3RydWN0
IF9XZWJraXRXZWJTcmNQcml2YXRlIFdlYmtpdFdlYlNyY1ByaXZhdGU7CisKK3N0cnVjdCBfV2Vi
a2l0V2ViU3JjIHsKKyAgICBHc3RCaW4gcGFyZW50OworCisgICAgV2Via2l0V2ViU3JjUHJpdmF0
ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2Via2l0V2ViU3JjQ2xhc3MgeworICAgIEdzdEJpbkNs
YXNzIHBhcmVudENsYXNzOworfTsKKworR1R5cGUgd2Via2l0X3dlYl9zcmNfZ2V0X3R5cGUodm9p
ZCk7Cit2b2lkICB3ZWJraXRfd2ViX3NyY19zZXRfZnJhbWUoV2Via2l0V2ViU3JjKiBzcmMsIFdl
YkNvcmU6OkZyYW1lKiBmcmFtZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDNjYTQ3NDMuLmJlNzcwNjcgMTAw
NjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTcwNCw2ICs3MDQs
NyBAQCBmaQogaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIjsgdGhlbgogICAgUEtHX0NI
RUNLX01PRFVMRVMoW0dTVFJFQU1FUl0sCiAgICAgICAgICAgICAgICAgICAgICBbZ3N0cmVhbWVy
LTAuMTAgPj0gJEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAgICAgICAgICAg
ICBnc3RyZWFtZXItYXBwLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1iYXNl
LTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAKICAgICAg
ICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMAotLSAKMS42LjYuMQoK
</data>
<flag name="review"
          id="30298"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47912</attachid>
            <date>2010-02-02 01:14:47 -0800</date>
            <delta_ts>2010-02-05 03:37:13 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>33062</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSBmNDhiZDc3NGFjNTZhZjdkMTM1YTA0YWI5YzY0ZjgyZGI1YzRkZmNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogU2F0LCAzMCBKYW4gMjAxMCAx
MTozNjo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDcgKy0KIC4uLi9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCAgIHwgICA1MCArLS0KIC4uLi9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDcwNCArKysrKysrKysrKysrKysrKysrKwogLi4uL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCAgICAgICAgfCAgIDUyICsrCiBj
b25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogNyBmaWxlcyBjaGFuZ2VkLCA4MDIgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDM1OGU1OTcuLjFjY2ZkM2MgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMS0zMCAgU2Vi
YXN0aWFuIERyw7ZnZSAgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBnc3RyZWFtZXIt
YXBwLTAuMTAgdG8gY29uZmlndXJlLmFjCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMTcKKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzoKKwogMjAxMC0wMS0yOSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJjYzRiMTguLmVhNDM1MDEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
Mzc4LDYgKzEzNzgsMjUgQEAKIAogICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgogCisyMDEwLTAx
LTMwICBTZWJhc3RpYW4gRHLDtmdlICA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEg
R1N0cmVhbWVyIEhUVFAvSFRUUFMgc291cmNlLCB1c2luZyBXZWJLaXQgaW5mcmFzdHJ1Y3R1cmUK
KyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNDMxNworCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptZWRpYVBsYXllclByaXZhdGVTb3VyY2VDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6ZG9Hc3RJbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmg6CisgICAgICAgIEFkZCBhIEdTdHJlYW1l
ciBIVFRQL0hUVFBTIHNvdXJjZSwgdXNpbmcgdGhlIFdlYktpdCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgcmVmZXJlciwgY29va2llcywgYXV0aGVudGljYXRp
b24gaW5mb3JtYXRpb24KKyAgICAgICAgYW5kIGFsbCBraW5kcyBvZiBvdGhlciBjb250ZXh0IGFy
ZSBwYXNzZWQgdG8gR1N0cmVhbWVyIGZvciB3ZWJzaXRlcworICAgICAgICBsaWtlIFZpbWVvIG9y
IFlvdVR1YmUuCisKIDIwMTAtMDEtMjkgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTdG9wIGNvcHlpbmcgYW4gSURMIGZpbGUgaW4gdG8gdGhlIGZyYW1ld29yayB3cmFw
cGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggMjY4MGE4MC4uNjZkYTIyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNDAyLDEyICsyNDAy
LDE1IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvVmlkZW9TaW5rR1N0cmVhbWVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0RhdGFTb3VyY2VHU3RyZWFtZXIuY3BwIFwKLQlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9EYXRhU291cmNlR1N0cmVhbWVyLmgKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9EYXRhU291cmNlR1N0cmVhbWVyLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCiAKIHdlYmNvcmVfbGliYWRkICs9IFwK
IAktbGdzdGludGVyZmFjZXMtMC4xMCBcCiAJLWxnc3R2aWRlby0wLjEwIFwKLQktbGdzdHBidXRp
bHMtMC4xMAorCS1sZ3N0cGJ1dGlscy0wLjEwIFwKKwktbGdzdGFwcC0wLjEwCiAKIGVuZGlmICMg
RU5EIEVOQUJMRV9WSURFTwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBkOTZjMWUz
Li5lODNkZWQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNp
bmNsdWRlICJWaWRlb1NpbmtHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4K
QEAgLTEzNiw0NCArMTM3LDEyIEBAIHZvaWQgbWVkaWFQbGF5ZXJQcml2YXRlU291cmNlQ2hhbmdl
ZENhbGxiYWNrKEdPYmplY3QgKm9iamVjdCwgR1BhcmFtU3BlYyAqcHNwZWMsCiAgICAgZ19vYmpl
Y3RfZ2V0KG1wLT5tX3BsYXlCaW4sICJzb3VyY2UiLCAmZWxlbWVudCwgTlVMTCk7CiAgICAgZ3N0
X29iamVjdF9yZXBsYWNlKChHc3RPYmplY3QqKikgJm1wLT5tX3NvdXJjZSwgKEdzdE9iamVjdCop
IGVsZW1lbnQpOwogCi0gICAgaWYgKGVsZW1lbnQpIHsKLSAgICAgICAgR1BhcmFtU3BlYyogcHNw
ZWMgPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhlbGVt
ZW50KSwgImNvb2tpZXMiKTsKKyAgICBpZiAoV0VCS0lUX0lTX1dFQl9TUkMoZWxlbWVudCkpIHsK
KyAgICAgICAgRnJhbWUqIGZyYW1lID0gbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKSA/CittcC0+
bV9wbGF5ZXItPmZyYW1lVmlldygpLT5mcmFtZSgpIDogMDsKIAotICAgICAgICAvLyBGaXJzdCBj
aGVjayBpZiB0aGUgc291cmNlIGVsZW1lbnQgaGFzIGEgY29va2llcyBwcm9wZXJ0eQotICAgICAg
ICAvLyBvZiB0aGUgZm9ybWF0IHdlIGV4cGVjdAotICAgICAgICBpZiAoIXBzcGVjIHx8IHBzcGVj
LT52YWx1ZV90eXBlICE9IEdfVFlQRV9TVFJWKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIC8vIFRoZW4gZ2V0IHRoZSBjb29raWVzIGZvciB0aGUgVVJJIGFuZCBzZXQgdGhlbQotICAg
ICAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IHdlYmtpdF9nZXRfZGVmYXVsdF9zZXNzaW9uKCk7
Ci0gICAgICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IFNPVVBfQ09PS0lFX0pBUihzb3Vw
X3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX0NPT0tJRV9KQVIpKTsKLQot
ICAgICAgICBjaGFyKiBsb2NhdGlvbjsKLSAgICAgICAgZ19vYmplY3RfZ2V0KGVsZW1lbnQsICJs
b2NhdGlvbiIsICZsb2NhdGlvbiwgTlVMTCk7Ci0KLSAgICAgICAgU291cFVSSSogdXJpID0gc291
cF91cmlfbmV3KGxvY2F0aW9uKTsKLSAgICAgICAgZ19mcmVlKGxvY2F0aW9uKTsKLQotICAgICAg
ICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25vdyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBu
aWNlIG1vdmllIHRyYWlsZXJzLgotICAgICAgICBpZiAoZ19zdHJfZXF1YWwodXJpLT5ob3N0LCAi
bW92aWVzLmFwcGxlLmNvbSIpKQotICAgICAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJ1
c2VyLWFnZW50IiwgIlF1aWNrdGltZS83LjIuMCIsIE5VTEwpOwotCi0gICAgICAgIGNoYXIqIGNv
b2tpZXMgPSBzb3VwX2Nvb2tpZV9qYXJfZ2V0X2Nvb2tpZXMoY29va2llSmFyLCB1cmksIEZBTFNF
KTsKLSAgICAgICAgc291cF91cmlfZnJlZSh1cmkpOwotCi0gICAgICAgIGNoYXIqIGNvb2tpZXNT
dHJ2W10gPSB7Y29va2llcywgTlVMTH07Ci0gICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAi
Y29va2llcyIsIGNvb2tpZXNTdHJ2LCBOVUxMKTsKLSAgICAgICAgZ19mcmVlKGNvb2tpZXMpOwot
Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3BsYXllci0+ZnJhbWVWaWV3KCkgPyBtcC0+
bV9wbGF5ZXItPmZyYW1lVmlldygpLT5mcmFtZSgpIDogMDsKLSAgICAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6IDA7Ci0gICAgICAgIGlmIChkb2N1
bWVudCkgewotICAgICAgICAgICAgR3N0U3RydWN0dXJlKiBleHRyYUhlYWRlcnMgPSBnc3Rfc3Ry
dWN0dXJlX25ldygiZXh0cmEtaGVhZGVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWZlcmVyIiwgR19UWVBFX1NUUklORywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQtPmRvY3VtZW50VVJJKCkudXRmOCgpLmRhdGEoKSwgMCk7Ci0gICAgICAgICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgImV4dHJhLWhlYWRlcnMiLCBleHRyYUhlYWRlcnMsIE5V
TEwpOwotICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlKGV4dHJhSGVhZGVycyk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGZyYW1lKQorICAgICAgICAgICAgd2Via2l0X3dlYl9zcmNfc2V0
X2ZyYW1lKFdFQktJVF9XRUJfU1JDKGVsZW1lbnQpLCBmcmFtZSk7CiAgICAgfQogCiAgICAgZ3N0
X29iamVjdF91bnJlZihlbGVtZW50KTsKQEAgLTI2MSwxMiArMjMwLDE1IEBAIHN0YXRpYyBib29s
IGRvR3N0SW5pdCgpCiAgICAgaWYgKCFnc3RJbml0aWFsaXplZCkgewogICAgICAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGdzdEluaXRpYWxpemVkID0gZ3N0X2luaXRfY2hlY2so
MCwgMCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgaWYgKCFnc3RJbml0aWFsaXplZCkKKyAg
ICAgICAgaWYgKCFnc3RJbml0aWFsaXplZCkgewogICAgICAgICAgICAgTE9HX1ZFUkJPU0UoTWVk
aWEsICJDb3VsZCBub3QgaW5pdGlhbGl6ZSBHU3RyZWFtZXI6ICVzIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAidW5rbm93biBlcnJvciBvY2N1cnJl
ZCIpOwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBnc3RfZWxl
bWVudF9yZWdpc3RlcigwLCAid2Via2l0bWVkaWFzcmMiLCBHU1RfUkFOS19QUklNQVJZLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfREFUQV9TUkMpOworICAg
ICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdHdlYnNyYyIsIEdTVF9SQU5L
X1BSSU1BUlkgKyAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
VFlQRV9XRUJfU1JDKTsKKyAgICAgICAgfQogCiAgICAgfQogICAgIHJldHVybiBnc3RJbml0aWFs
aXplZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmIyY2UyNmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0wLDAgKzEsNzA0IEBACisvKgor
ICogIENvcHlyaWdodCAoQykgMjAwOSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdl
QGNvbGxhYm9yYS5jby51az4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIKKwor
I2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkdS
ZWZQdHIuaCIKKyNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZUludGVybmFsLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorCisjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMu
aD4KKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK2NsYXNzIFN0cmVhbWluZ0NsaWVudCA6IHB1YmxpYyBOb25jb3B5
YWJsZSwgcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IFN0cmVhbWluZ0NsaWVudChXZWJraXRXZWJTcmMqKTsKKyAgICAgICAgdmlydHVhbCB+U3RyZWFt
aW5nQ2xpZW50KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCwgaW50KTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxlKik7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBXZWJraXRXZWJTcmMqIG1fc3JjOworfTsKKworI2RlZmluZSBX
RUJLSVRfV0VCX1NSQ19HRVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BS
SVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TUkMsIFdlYmtpdFdlYlNyY1ByaXZhdGUpKQor
c3RydWN0IF9XZWJraXRXZWJTcmNQcml2YXRlIHsKKyAgICBHc3RBcHBTcmMqIGFwcHNyYzsKKyAg
ICBHc3RQYWQqIHNyY3BhZDsKKyAgICBnY2hhciogdXJpOworCisgICAgV2ViQ29yZTo6RnJhbWUq
IGZyYW1lOworCisgICAgU3RyZWFtaW5nQ2xpZW50KiBjbGllbnQ7CisgICAgUmVzb3VyY2VSZXF1
ZXN0KiByZXNvdXJjZVJlcXVlc3Q7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiByZXNvdXJj
ZUhhbmRsZTsKKworICAgIGd1aW50NjQgb2Zmc2V0OworICAgIGd1aW50NjQgc2l6ZTsKKyAgICBn
Ym9vbGVhbiBzZWVrYWJsZTsKKyAgICBnYm9vbGVhbiBwYXVzZWQ7CisKKyAgICBndWludDY0IHJl
cXVlc3RlZE9mZnNldDsKKworICAgIGd1aW50IG5lZWREYXRhSUQ7CisgICAgZ3VpbnQgZW5vdWdo
RGF0YUlEOworICAgIGd1aW50IHNlZWtJRDsKKworICAgIC8vIGljZWNhc3Qgc3R1ZmYKKyAgICBn
Ym9vbGVhbiBpcmFkaW9Nb2RlOworICAgIGdjaGFyKiBpcmFkaW9OYW1lOworICAgIGdjaGFyKiBp
cmFkaW9HZW5yZTsKKyAgICBnY2hhciogaXJhZGlvVXJsOworICAgIGdjaGFyKiBpcmFkaW9UaXRs
ZTsKK307CisKK2VudW0geworICAgIFBST1BfSVJBRElPX01PREUgPSAxLAorICAgIFBST1BfSVJB
RElPX05BTUUsCisgICAgUFJPUF9JUkFESU9fR0VOUkUsCisgICAgUFJPUF9JUkFESU9fVVJMLAor
ICAgIFBST1BfSVJBRElPX1RJVExFCit9OworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUg
c3JjVGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSgic3JjIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
U1RfUEFEX1NSQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHU1RfUEFEX0FMV0FZUywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1RfU1RB
VElDX0NBUFNfQU5ZKTsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfd2ViX3Ny
Y19kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfd2ViX3NyY19kZWJ1Zwor
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY191cmlfaGFuZGxlcl9pbml0KGdwb2ludGVyIGdJ
ZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50
ZXIgaWZhY2VEYXRhKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfZmluYWxpemUoR09i
amVjdCogb2JqZWN0KTsKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3NldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwKKyAgICBjb25zdCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYyk7CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19nZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsCisgICAgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpOworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYmtpdF93ZWJf
c3JjX2NoYW5nZV9zdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RTdGF0ZUNoYW5nZSB0cmFu
c2l0aW9uKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfbmVlZF9kYXRhX2NiKEdzdEFw
cFNyYyogYXBwc3JjLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVzZXJEYXRhKTsKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc3JjX2Vub3VnaF9kYXRhX2NiKEdzdEFwcFNyYyogYXBwc3JjLCBncG9p
bnRlciB1c2VyRGF0YSk7CitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfc2Vla19kYXRh
X2NiKEdzdEFwcFNyYyogYXBwc3JjLCBndWludDY0IG9mZnNldCwgZ3BvaW50ZXIgdXNlckRhdGEp
OworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zdG9wKFdlYmtpdFdlYlNyYyogc3JjLCBn
Ym9vbGVhbiByZXNldFJlcXVlc3RlZE9mZnNldCk7CisKK3N0YXRpYyBHc3RBcHBTcmNDYWxsYmFj
a3MgYXBwc3JjX2NhbGxiYWNrcyA9IHsKKyAgICB3ZWJraXRfd2ViX3NyY19uZWVkX2RhdGFfY2Is
CisgICAgd2Via2l0X3dlYl9zcmNfZW5vdWdoX2RhdGFfY2IsCisgICAgd2Via2l0X3dlYl9zcmNf
c2Vla19kYXRhX2NiLAorICAgIHsgMCB9Cit9OworCitzdGF0aWMgY29uc3QgR0ludGVyZmFjZUlu
Zm8gdXJpaGFuZGxlcl9pbmZvID0geworICAgIHdlYmtpdF93ZWJfc3JjX3VyaV9oYW5kbGVyX2lu
aXQsCisgICAgMCwgMAorfTsKKworCitzdGF0aWMgdm9pZCBfZG9Jbml0KEdUeXBlIGd0eXBlKQor
eworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF93ZWJfc3JjX2RlYnVnLCAid2Vi
a2l0d2Vic3JjIiwgMCwgIndlYnNyYyBlbGVtZW50Iik7CisgICAgZ190eXBlX2FkZF9pbnRlcmZh
Y2Vfc3RhdGljKGd0eXBlLCBHU1RfVFlQRV9VUklfSEFORExFUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnVyaWhhbmRsZXJfaW5mbyk7Cit9CisKK0dTVF9CT0lMRVJQTEFURV9G
VUxMKFdlYmtpdFdlYlNyYywgd2Via2l0X3dlYl9zcmMsIEdzdEJpbiwgR1NUX1RZUEVfQklOLCBf
ZG9Jbml0KTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfYmFzZV9pbml0KGdwb2ludGVy
IGtsYXNzKQoreworICAgIEdzdEVsZW1lbnRDbGFzcyogZWtsYXNzID0gR1NUX0VMRU1FTlRfQ0xB
U1Moa2xhc3MpOworCisgICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShla2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxh
dGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9kZXRhaWxz
X3NpbXBsZShla2xhc3MsIChnY2hhciopICJXZWJLaXQgV2ViIHNvdXJjZSBlbGVtZW50IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIqKSAiU291cmNlIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIqKSAiSGFuZGxlcyBIVFRQL0hUVFBT
IHVyaXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnY2hhciopICJTZWJh
c3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4iKTsKK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfY2xhc3NfaW5pdChXZWJraXRXZWJTcmNDbGFzcyog
a2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBva2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFz
cyk7CisgICAgR3N0RWxlbWVudENsYXNzKiBla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyhrbGFz
cyk7CisKKyAgICBva2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl9zcmNfZmluYWxpemU7Cisg
ICAgb2tsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3NyY19zZXRfcHJvcGVydHk7Cisg
ICAgb2tsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX3NyY19nZXRfcHJvcGVydHk7CisK
KyAgICAvLyBpY2VjYXN0IHN0dWZmCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShva2xhc3MsCisgICAgICAgIFBST1BfSVJBRElPX01PREUsCisgICAgICAgIGdfcGFyYW1fc3Bl
Y19ib29sZWFuKCJpcmFkaW8tbW9kZSIsCisgICAgICAgICAgICAiaXJhZGlvLW1vZGUiLAorICAg
ICAgICAgICAgIkVuYWJsZSBpbnRlcm5ldCByYWRpbyBtb2RlIChleHRyYWN0aW9uIG9mIHNob3V0
Y2FzdC9pY2VjYXN0IG1ldGFkYXRhKSIsCisgICAgICAgICAgICBGQUxTRSwgKEdQYXJhbUZsYWdz
KSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAgICAgICBQUk9QX0lSQURJ
T19OQU1FLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tbmFtZSIsCisgICAg
ICAgICAgICAiaXJhZGlvLW5hbWUiLCAiTmFtZSBvZiB0aGUgc3RyZWFtIiwgMCwgKEdQYXJhbUZs
YWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAgIFBST1BfSVJB
RElPX0dFTlJFLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tZ2VucmUiLAor
ICAgICAgICAgICAgImlyYWRpby1nZW5yZSIsICJHZW5yZSBvZiB0aGUgc3RyZWFtIiwgMCwgKEdQ
YXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAgIFBS
T1BfSVJBRElPX1VSTCwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygiaXJhZGlvLXVybCIs
CisgICAgICAgICAgICAiaXJhZGlvLXVybCIsCisgICAgICAgICAgICAiSG9tZXBhZ2UgVVJMIGZv
ciByYWRpbyBzdHJlYW0iLCAwLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURBQkxFIHwgR19Q
QVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KG9rbGFzcywKKyAgICAgICAgUFJPUF9JUkFESU9fVElUTEUsCisgICAgICAgIGdfcGFyYW1f
c3BlY19zdHJpbmcoImlyYWRpby10aXRsZSIsCisgICAgICAgICAgICAiaXJhZGlvLXRpdGxlIiwK
KyAgICAgICAgICAgICJOYW1lIG9mIGN1cnJlbnRseSBwbGF5aW5nIHNvbmciLCAwLCAoR1BhcmFt
RmxhZ3MpIChHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKwor
ICAgIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gd2Via2l0X3dlYl9zcmNfY2hhbmdlX3N0YXRlOwor
CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2Via2l0V2ViU3Jj
UHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19pbml0KFdlYmtpdFdl
YlNyYyogc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJraXRXZWJTcmND
bGFzcyogZ0tsYXNzKQoreworICAgIEdzdFBhZFRlbXBsYXRlKiBwYWRUZW1wbGF0ZSA9IGdzdF9z
dGF0aWNfcGFkX3RlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpOworICAgIEdzdFBhZCogdGFyZ2V0
cGFkOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1NSQ19HRVRf
UFJJVkFURShzcmMpOworCisgICAgc3JjLT5wcml2ID0gcHJpdjsKKworICAgIHByaXYtPmNsaWVu
dCA9IG5ldyBTdHJlYW1pbmdDbGllbnQoc3JjKTsKKworICAgIHByaXYtPnNyY3BhZCA9IGdzdF9n
aG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlKCJzcmMiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkVGVtcGxh
dGUpOworCisgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZChHU1RfRUxFTUVOVChzcmMpLCBwcml2LT5z
cmNwYWQpOworCisgICAgcHJpdi0+YXBwc3JjID0gR1NUX0FQUF9TUkMoZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJhcHBzcmMiLCAwKSk7CisgICAgaWYgKCFwcml2LT5hcHBzcmMpIHsKKyAgICAg
ICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJGYWlsZWQgdG8gY3JlYXRlIGFwcHNyYyIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTihzcmMpLCBHU1Rf
RUxFTUVOVChwcml2LT5hcHBzcmMpKTsKKworICAgIHRhcmdldHBhZCA9IGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKEdTVF9FTEVNRU5UKHByaXYtPmFwcHNyYyksICJzcmMiKTsKKyAgICBnc3Rf
Z2hvc3RfcGFkX3NldF90YXJnZXQoR1NUX0dIT1NUX1BBRChwcml2LT5zcmNwYWQpLCB0YXJnZXRw
YWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYodGFyZ2V0cGFkKTsKKworICAgIGdzdF9hcHBfc3Jj
X3NldF9jYWxsYmFja3MocHJpdi0+YXBwc3JjLCAmYXBwc3JjX2NhbGxiYWNrcywgc3JjLCAwKTsK
KyAgICBnc3RfYXBwX3NyY19zZXRfZW1pdF9zaWduYWxzKHByaXYtPmFwcHNyYywgRkFMU0UpOwor
ICAgIGdzdF9hcHBfc3JjX3NldF9zdHJlYW1fdHlwZShwcml2LT5hcHBzcmMsIEdTVF9BUFBfU1RS
RUFNX1RZUEVfU0VFS0FCTEUpOworICAgIGdzdF9hcHBfc3JjX3NldF9tYXhfYnl0ZXMocHJpdi0+
YXBwc3JjLCA1MTIgKiAxMDI0KTsKKworICAgIHdlYmtpdF93ZWJfc3JjX3N0b3Aoc3JjLCBUUlVF
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfZmluYWxpemUoR09iamVjdCogb2Jq
ZWN0KQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMob2JqZWN0KTsK
KyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgZGVsZXRl
IHByaXYtPmNsaWVudDsKKyAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKworICAgIEdTVF9DQUxMX1BB
UkVOVChHX09CSkVDVF9DTEFTUywgZmluYWxpemUsICgoR09iamVjdCogKShzcmMpKSk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7
CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhvYmplY3QpOworICAgIFdl
YmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBzd2l0Y2ggKHByb3BJ
RCkgeworICAgIGNhc2UgUFJPUF9JUkFESU9fTU9ERToKKyAgICAgICAgcHJpdi0+aXJhZGlvTW9k
ZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wSUQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3NyY19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQs
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYmtpdFdlYlNyYyog
c3JjID0gV0VCS0lUX1dFQl9TUkMob2JqZWN0KTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBw
cml2ID0gc3JjLT5wcml2OworCisgICAgc3dpdGNoIChwcm9wSUQpIHsKKyAgICBjYXNlIFBST1Bf
SVJBRElPX01PREU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmly
YWRpb01vZGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSVJBRElPX05BTUU6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgcHJpdi0+aXJhZGlvTmFtZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JUkFESU9fR0VOUkU6CisgICAgICAgIGdfdmFsdWVf
c2V0X3N0cmluZyh2YWx1ZSwgcHJpdi0+aXJhZGlvR2VucmUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfSVJBRElPX1VSTDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCBwcml2LT5pcmFkaW9VcmwpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSVJBRElP
X1RJVExFOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPmlyYWRpb1Rp
dGxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zdG9wKFdlYmtp
dFdlYlNyYyogc3JjLCBnYm9vbGVhbiByZXNldFJlcXVlc3RlZE9mZnNldCkKK3sKKyAgICBXZWJr
aXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgaWYgKHByaXYtPnJlc291
cmNlSGFuZGxlKSB7CisgICAgICAgIHByaXYtPnJlc291cmNlSGFuZGxlLT5jYW5jZWwoKTsKKyAg
ICAgICAgcHJpdi0+cmVzb3VyY2VIYW5kbGUucmVsZWFzZSgpOworICAgIH0KKyAgICBwcml2LT5y
ZXNvdXJjZUhhbmRsZSA9IDA7CisKKyAgICBpZiAocHJpdi0+ZnJhbWUpCisgICAgICAgIHByaXYt
PmZyYW1lLT5kZXJlZigpOworICAgIHByaXYtPmZyYW1lID0gMDsKKworICAgIGlmIChwcml2LT5y
ZXNvdXJjZVJlcXVlc3QpCisgICAgICAgIGRlbGV0ZSBwcml2LT5yZXNvdXJjZVJlcXVlc3Q7Cisg
ICAgcHJpdi0+cmVzb3VyY2VSZXF1ZXN0ID0gMDsKKworICAgIGlmIChwcml2LT5uZWVkRGF0YUlE
KQorICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+bmVlZERhdGFJRCk7CisgICAgcHJpdi0+
bmVlZERhdGFJRCA9IDA7CisKKyAgICBpZiAocHJpdi0+ZW5vdWdoRGF0YUlEKQorICAgICAgICBn
X3NvdXJjZV9yZW1vdmUocHJpdi0+ZW5vdWdoRGF0YUlEKTsKKyAgICBwcml2LT5lbm91Z2hEYXRh
SUQgPSAwOworCisgICAgaWYgKHByaXYtPnNlZWtJRCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3Zl
KHByaXYtPnNlZWtJRCk7CisgICAgcHJpdi0+c2Vla0lEID0gMDsKKworICAgIHByaXYtPnBhdXNl
ZCA9IEZBTFNFOworCisgICAgZ19mcmVlKHByaXYtPmlyYWRpb05hbWUpOworICAgIHByaXYtPmly
YWRpb05hbWUgPSAwOworCisgICAgZ19mcmVlKHByaXYtPmlyYWRpb0dlbnJlKTsKKyAgICBwcml2
LT5pcmFkaW9HZW5yZSA9IDA7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvVXJsKTsKKyAgICBw
cml2LT5pcmFkaW9VcmwgPSAwOworCisgICAgZ19mcmVlKHByaXYtPmlyYWRpb1RpdGxlKTsKKyAg
ICBwcml2LT5pcmFkaW9UaXRsZSA9IDA7CisKKyAgICBpZiAocHJpdi0+YXBwc3JjKQorICAgICAg
ICBnc3RfYXBwX3NyY19zZXRfY2Fwcyhwcml2LT5hcHBzcmMsIDApOworCisgICAgcHJpdi0+b2Zm
c2V0ID0gMDsKKyAgICBwcml2LT5zaXplID0gMDsKKyAgICBwcml2LT5zZWVrYWJsZSA9IEZBTFNF
OworCisgICAgaWYgKHJlc2V0UmVxdWVzdGVkT2Zmc2V0KQorICAgICAgICBwcml2LT5yZXF1ZXN0
ZWRPZmZzZXQgPSAwOworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdG9wcGVkIHJlcXVl
c3QiKTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX3N0YXJ0KFdlYmtpdFdl
YlNyYyogc3JjKQoreworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7
CisKKyAgICBpZiAoIXByaXYtPnVyaSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywg
Ik5vIFVSSSBwcm92aWRlZCIpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAg
S1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgcHJpdi0+dXJpKTsKKyAgICBwcml2LT5yZXNvdXJjZVJl
cXVlc3QgPSBuZXcgUmVzb3VyY2VSZXF1ZXN0KHVybCk7CisgICAgcHJpdi0+cmVzb3VyY2VSZXF1
ZXN0LT5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdEJhc2U6OlRhcmdldElzTWVkaWEpOwor
ICAgIHByaXYtPnJlc291cmNlUmVxdWVzdC0+c2V0QWxsb3dDb29raWVzKHRydWUpOworCisgICAg
Ly8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2FudCB0byBhY2Nlc3MgdGhlaXIgbmlj
ZSBtb3ZpZSB0cmFpbGVycy4KKyAgICBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCgibW92aWVzLmFw
cGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkpCisgICAgICAgIHByaXYtPnJlc291
cmNlUmVxdWVzdC0+c2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuMi4wIik7CisKKyAgICBp
ZiAocHJpdi0+ZnJhbWUpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcHJpdi0+ZnJh
bWUtPmRvY3VtZW50KCk7CisgICAgICAgIGlmIChkb2N1bWVudCkKKyAgICAgICAgICAgIHByaXYt
PnJlc291cmNlUmVxdWVzdC0+c2V0SFRUUFJlZmVycmVyKGRvY3VtZW50LT5kb2N1bWVudFVSSSgp
KTsKKworICAgICAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gcHJpdi0+ZnJhbWUtPmxvYWRlcigp
OworICAgICAgICBpZiAobG9hZGVyKQorICAgICAgICAgICAgbG9hZGVyLT5hZGRFeHRyYUZpZWxk
c1RvU3VicmVzb3VyY2VSZXF1ZXN0KCpwcml2LT5yZXNvdXJjZVJlcXVlc3QpOworICAgIH0KKwor
ICAgIGlmIChwcml2LT5yZXF1ZXN0ZWRPZmZzZXQpIHsKKyAgICAgICAgZ2NoYXIqIHZhbCA9IGdf
c3RyZHVwX3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIHByaXYtPnJlcXVl
c3RlZE9mZnNldCk7CisgICAgICAgIHByaXYtPnJlc291cmNlUmVxdWVzdC0+c2V0SFRUUEhlYWRl
ckZpZWxkKCJSYW5nZSIsIHZhbCk7CisgICAgICAgIGdfZnJlZSh2YWwpOworICAgIH0KKworICAg
IGlmIChwcml2LT5pcmFkaW9Nb2RlKQorICAgICAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZCgiaWN5LW1ldGFkYXRhIiwgIjEiKTsKKworICAgIC8vIE5lZWRlZCB0
byB1c2UgRExOQSBzdHJlYW1pbmcgc2VydmVycworICAgIHByaXYtPnJlc291cmNlUmVxdWVzdC0+
c2V0SFRUUEhlYWRlckZpZWxkKCJ0cmFuc2Zlck1vZGUuZGxuYSIsICJTdHJlYW1pbmciKTsKKwor
ICAgIHByaXYtPnJlc291cmNlSGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZSgqcHJpdi0+
cmVzb3VyY2VSZXF1ZXN0LCBwcml2LT5jbGllbnQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwor
ICAgIGlmICghcHJpdi0+cmVzb3VyY2VIYW5kbGUpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVD
VChzcmMsICJGYWlsZWQgdG8gY3JlYXRlIFJlc291cmNlSGFuZGxlIik7CisgICAgICAgIHJldHVy
biBGQUxTRTsKKyAgICB9CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0YXJ0ZWQgcmVx
dWVzdCIpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJl
dHVybiB3ZWJraXRfd2ViX3NyY19jaGFuZ2Vfc3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0
U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKK3sKKyAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQg
PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJL
SVRfV0VCX1NSQyhlbGVtZW50KTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3Jj
LT5wcml2OworCisgICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CisgICAgY2FzZSBHU1RfU1RBVEVf
Q0hBTkdFX05VTExfVE9fUkVBRFk6CisgICAgICAgIGlmICghcHJpdi0+YXBwc3JjKSB7CisgICAg
ICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoZWxlbWVudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnc3RfbWlzc2luZ19lbGVtZW50X21lc3NhZ2VfbmV3KGVs
ZW1lbnQsICJhcHBzcmMiKSk7CisgICAgICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihzcmMsIENP
UkUsIE1JU1NJTkdfUExVR0lOLCAoMCksICgibm8gYXBwc3JjIikpOworICAgICAgICAgICAgcmV0
dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXQgPSBHU1RfRUxF
TUVOVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUoZWxlbWVudCwgdHJhbnNpdGlv
bik7CisgICAgaWYgKEdfVU5MSUtFTFkocmV0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkp
IHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdGF0ZSBjaGFuZ2UgZmFpbGVkIik7
CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7
CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKKyAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJSRUFEWS0+UEFVU0VEIik7CisgICAgICAgIGlmICghd2Via2l0
X3dlYl9zcmNfc3RhcnQoc3JjKSkKKyAgICAgICAgICAgIHJldCA9IEdTVF9TVEFURV9DSEFOR0Vf
RkFJTFVSRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNF
RF9UT19SRUFEWToKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQQVVTRUQtPlJFQURZ
Iik7CisgICAgICAgIHdlYmtpdF93ZWJfc3JjX3N0b3Aoc3JjLCBUUlVFKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJl
dDsKK30KKworLyoqKiBHU1RVUklIQU5ETEVSIElOVEVSRkFDRSAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgR3N0VVJJVHlwZSB3ZWJr
aXRfd2ViX3NyY191cmlfZ2V0X3R5cGUodm9pZCkKK3sKKyAgICByZXR1cm4gR1NUX1VSSV9TUkM7
Cit9CisKK3N0YXRpYyBnY2hhcioqIHdlYmtpdF93ZWJfc3JjX3VyaV9nZXRfcHJvdG9jb2xzKHZv
aWQpCit7CisgICAgc3RhdGljIGdjaGFyKiBwcm90b2NvbHNbXSA9IHsoZ2NoYXIqKSAiaHR0cCIs
IChnY2hhciopICJodHRwcyIsIDAgfTsKKworICAgIHJldHVybiBwcm90b2NvbHM7Cit9CisKK3N0
YXRpYyBjb25zdCBnY2hhciogd2Via2l0X3dlYl9zcmNfdXJpX2dldF91cmkoR3N0VVJJSGFuZGxl
ciogaGFuZGxlcikKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGhh
bmRsZXIpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAg
ICByZXR1cm4gcHJpdi0+dXJpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNf
dXJpX3NldF91cmkoR3N0VVJJSGFuZGxlciogaGFuZGxlciwgY29uc3QgZ2NoYXIqIHVyaSkKK3sK
KyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGhhbmRsZXIpOworICAgIFdl
YmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBpZiAoR1NUX1NUQVRF
KHNyYykgPj0gR1NUX1NUQVRFX1BBVVNFRCkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNy
YywgIlVSSSBjYW4gb25seSBiZSBzZXQgaW4gc3RhdGVzIDwgUEFVU0VEIik7CisgICAgICAgIHJl
dHVybiBGQUxTRTsKKyAgICB9CisgICAgCisgICAgaWYgKHVyaSAmJiAhZ19hc2NpaV9zdHJuY2Fz
ZWNtcCgiaHR0cCIsIHVyaSwgNCkgJiYgIWdfYXNjaWlfc3RybmNhc2VjbXAoImh0dHAiLCB1cmks
IDUpKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiSW52YWxpZCBVUkkgJyVzJyIs
IHVyaSk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBnX2ZyZWUocHJpdi0+
dXJpKTsKKyAgICBwcml2LT51cmkgPSB1cmkgPyBnX3N0cmR1cCh1cmkpIDogMDsKKyAgICAKKyAg
ICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfdXJpX2hhbmRs
ZXJfaW5pdChncG9pbnRlciBnSWZhY2UsIGdwb2ludGVyIGlmYWNlRGF0YSkKK3sKKyAgICBHc3RV
UklIYW5kbGVySW50ZXJmYWNlKiBpZmFjZSA9IChHc3RVUklIYW5kbGVySW50ZXJmYWNlICopIGdJ
ZmFjZTsKKworICAgIGlmYWNlLT5nZXRfdHlwZSA9IHdlYmtpdF93ZWJfc3JjX3VyaV9nZXRfdHlw
ZTsKKyAgICBpZmFjZS0+Z2V0X3Byb3RvY29scyA9IHdlYmtpdF93ZWJfc3JjX3VyaV9nZXRfcHJv
dG9jb2xzOworICAgIGlmYWNlLT5nZXRfdXJpID0gd2Via2l0X3dlYl9zcmNfdXJpX2dldF91cmk7
CisgICAgaWZhY2UtPnNldF91cmkgPSB3ZWJraXRfd2ViX3NyY191cmlfc2V0X3VyaTsKK30KKwor
Ly8gYXBwc3JjIGNhbGxiYWNrcworCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfbmVl
ZF9kYXRhX21haW5fY2IoV2Via2l0V2ViU3JjKiBzcmMpCit7CisgICAgV2Via2l0V2ViU3JjUHJp
dmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQg
PSBwcml2LT5yZXNvdXJjZUhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoZC0+bV9tc2cp
CisgICAgICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2UoUmVzb3VyY2VIYW5kbGU6OmRl
ZmF1bHRTZXNzaW9uKCksIGQtPm1fbXNnKTsKKworICAgIHByaXYtPnBhdXNlZCA9IEZBTFNFOwor
ICAgIHByaXYtPm5lZWREYXRhSUQgPSAwOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9zcmNfbmVlZF9kYXRhX2NiKEdzdEFwcFNyYyogYXBwc3JjLCBndWlu
dCBsZW5ndGgsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0g
V0VCS0lUX1dFQl9TUkModXNlckRhdGEpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYg
PSBzcmMtPnByaXY7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIk5lZWQgbW9yZSBkYXRh
OiAldSIsIGxlbmd0aCk7CisgICAgaWYgKHByaXYtPm5lZWREYXRhSUQgfHwgIXByaXYtPnBhdXNl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+bmVlZERhdGFJRCA9IGdfdGltZW91dF9h
ZGRfZnVsbChHX1BSSU9SSVRZX0hJR0gsIDAsIChHU291cmNlRnVuYykgd2Via2l0X3dlYl9zcmNf
bmVlZF9kYXRhX21haW5fY2IsIGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkg
Z3N0X29iamVjdF91bnJlZik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3NyY19l
bm91Z2hfZGF0YV9tYWluX2NiKFdlYmtpdFdlYlNyYyogc3JjKQoreworICAgIFdlYmtpdFdlYlNy
Y1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFs
KiBkID0gcHJpdi0+cmVzb3VyY2VIYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgc291cF9zZXNz
aW9uX3BhdXNlX21lc3NhZ2UoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIGQtPm1f
bXNnKTsKKyAgICAKKyAgICBwcml2LT5wYXVzZWQgPSBUUlVFOworICAgIHByaXYtPmVub3VnaERh
dGFJRCA9IDA7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3NyY19lbm91Z2hfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3BvaW50ZXIgdXNlckRhdGEp
Cit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyh1c2VyRGF0YSk7Cisg
ICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAiSGF2ZSBlbm91Z2ggZGF0YSIpOworICAgIGlmIChwcml2LT5lbm91Z2hE
YXRhSUQgfHwgcHJpdi0+cGF1c2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5lbm91
Z2hEYXRhSUQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ISUdILCAwLCAoR1NvdXJj
ZUZ1bmMpIHdlYmtpdF93ZWJfc3JjX2Vub3VnaF9kYXRhX21haW5fY2IsIGdzdF9vYmplY3RfcmVm
KHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRfd2ViX3NyY19zZWVrX21haW5fY2IoV2Via2l0V2ViU3JjKiBzcmMpCit7
CisgICAgd2Via2l0X3dlYl9zcmNfc3RvcChzcmMsIEZBTFNFKTsKKyAgICB3ZWJraXRfd2ViX3Ny
Y19zdGFydChzcmMpOworCisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X3dlYl9zcmNfc2Vla19kYXRhX2NiKEdzdEFwcFNyYyogYXBwc3JjLCBndWludDY0IG9m
ZnNldCwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJL
SVRfV0VCX1NSQyh1c2VyRGF0YSk7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNy
Yy0+cHJpdjsKKworICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU2Vla2luZyB0byBvZmZzZXQ6
ICUiIEdfR1VJTlQ2NF9GT1JNQVQsIG9mZnNldCk7CisgICAgaWYgKG9mZnNldCA9PSBwcml2LT5v
ZmZzZXQpCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgaWYgKCFwcml2LT5zZWVrYWJsZSkK
KyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIGlmIChvZmZzZXQgPiBwcml2LT5zaXplKQorICAg
ICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIkRvaW5nIHJh
bmdlLXJlcXVlc3Qgc2VlayIpOworICAgIHByaXYtPnJlcXVlc3RlZE9mZnNldCA9IG9mZnNldDsK
KyAgICBpZiAocHJpdi0+c2Vla0lEKQorICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+c2Vl
a0lEKTsKKyAgICBwcml2LT5zZWVrSUQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9I
SUdILCAwLCAoR1NvdXJjZUZ1bmMpIHdlYmtpdF93ZWJfc3JjX3NlZWtfbWFpbl9jYiwgZ3N0X29i
amVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKKyAgICAK
KyAgICByZXR1cm4gVFJVRTsKK30KKwordm9pZCB3ZWJraXRfd2ViX3NyY19zZXRfZnJhbWUoV2Vi
a2l0V2ViU3JjKiBzcmMsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKK3sKKyAgICBXZWJraXRXZWJT
cmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgZnJhbWUtPnJlZigpOworICAgIHBy
aXYtPmZyYW1lID0gZnJhbWU7Cit9CisKK1N0cmVhbWluZ0NsaWVudDo6U3RyZWFtaW5nQ2xpZW50
KFdlYmtpdFdlYlNyYyogc3JjKSA6IG1fc3JjKHNyYykKK3sKKworfQorCitTdHJlYW1pbmdDbGll
bnQ6On5TdHJlYW1pbmdDbGllbnQoKQoreworCit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50Ojp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikKK3sKK30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQoreworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBtX3NyYy0+cHJpdjsKKwor
ICAgIEdTVF9ERUJVR19PQkpFQ1QobV9zcmMsICJSZWNlaXZlZCByZXNwb25zZTogJWQiLCByZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpKTsKKworICAgIC8vIElmIHdlIHNlZWtlZCB3ZSBuZWVkIDIw
NiA9PSBQQVJUSUFMX0NPTlRFTlQKKyAgICBpZiAocHJpdi0+cmVxdWVzdGVkT2Zmc2V0ICYmIHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgIT0gMjA2KSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VS
Uk9SKG1fc3JjLCBSRVNPVVJDRSwgUkVBRCwgKDApLCAoMCkpOworICAgICAgICB3ZWJraXRfd2Vi
X3NyY19zdG9wKG1fc3JjLCBUUlVFKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxv
bmcgbG9uZyBsZW5ndGggPSByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKyAgICBp
ZiAobGVuZ3RoID4gMCkgeworICAgICAgICBsZW5ndGggKz0gcHJpdi0+cmVxdWVzdGVkT2Zmc2V0
OworICAgICAgICBnc3RfYXBwX3NyY19zZXRfc2l6ZShwcml2LT5hcHBzcmMsIGxlbmd0aCk7Cisg
ICAgfQorCisgICAgcHJpdi0+c2l6ZSA9IGxlbmd0aCA+PSAwID8gbGVuZ3RoIDogMDsKKyAgICBw
cml2LT5zZWVrYWJsZSA9IGxlbmd0aCA+IDAgJiYgZ19hc2NpaV9zdHJjYXNlY21wKCJub25lIiwg
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJBY2NlcHQtUmFuZ2VzIikudXRmOCgpLmRhdGEoKSk7
CisKKyAgICAvLyBpY2VjYXN0IHN0dWZmCisgICAgU3RyaW5nIHZhbHVlID0gcmVzcG9uc2UuaHR0
cEhlYWRlckZpZWxkKCJpY3ktbWV0YWludCIpOworICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7
CisgICAgICAgIGdjaGFyKiBlbmRwdHIgPSAwOworICAgICAgICBnaW50NjQgaWN5TWV0YUludCA9
IGdfYXNjaWlfc3RydG9sbCh2YWx1ZS51dGY4KCkuZGF0YSgpLCAmZW5kcHRyLCAxMCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgaWYgKGVuZHB0ciAmJiAqZW5kcHRyID09ICdcMCcgJiYgaWN5TWV0
YUludCA+IDApIHsKKyAgICAgICAgICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2lt
cGxlKCJhcHBsaWNhdGlvbi94LWljeSIsICJtZXRhZGF0YS1pbnRlcnZhbCIsIEdfVFlQRV9JTlQs
IChnaW50KSBpY3lNZXRhSW50LCBOVUxMKTsKKworICAgICAgICAgICAgZ3N0X2FwcF9zcmNfc2V0
X2NhcHMocHJpdi0+YXBwc3JjLCBjYXBzKTsKKyAgICAgICAgICAgIGdzdF9jYXBzX3VucmVmKGNh
cHMpOworICAgICAgICB9CisgICAgfQorCisgICAgR3N0VGFnTGlzdCogdGFncyA9IGdzdF90YWdf
bGlzdF9uZXcoKTsKKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LW5h
bWUiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+
aXJhZGlvTmFtZSk7CisgICAgICAgIHByaXYtPmlyYWRpb05hbWUgPSBnX3N0cmR1cCh2YWx1ZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwg
ImlyYWRpby1uYW1lIik7CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RBR19N
RVJHRV9SRVBMQUNFLCBHU1RfVEFHX09SR0FOSVpBVElPTiwgcHJpdi0+aXJhZGlvTmFtZSwgTlVM
TCk7CisgICAgfQorICAgIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktZ2Vu
cmUiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+
aXJhZGlvR2VucmUpOworICAgICAgICBwcml2LT5pcmFkaW9HZW5yZSA9IGdfc3RyZHVwKHZhbHVl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMp
LCAiaXJhZGlvLWdlbnJlIik7CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RB
R19NRVJHRV9SRVBMQUNFLCBHU1RfVEFHX0dFTlJFLCBwcml2LT5pcmFkaW9HZW5yZSwgTlVMTCk7
CisgICAgfQorICAgIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktdXJsIik7
CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmlyYWRp
b1VybCk7CisgICAgICAgIHByaXYtPmlyYWRpb1VybCA9IGdfc3RyZHVwKHZhbHVlLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMpLCAiaXJhZGlv
LXVybCIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdfTUVSR0VfUkVQ
TEFDRSwgR1NUX1RBR19MT0NBVElPTiwgcHJpdi0+aXJhZGlvVXJsLCBOVUxMKTsKKyAgICB9Cisg
ICAgdmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImljeS10aXRsZSIpOworICAgIGlm
ICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9UaXRsZSk7
CisgICAgICAgIHByaXYtPmlyYWRpb1RpdGxlID0gZ19zdHJkdXAodmFsdWUudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX3NyYyksICJpcmFkaW8tdGl0
bGUiKTsKKyAgICAgICAgZ3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01FUkdFX1JFUExB
Q0UsIEdTVF9UQUdfVElUTEUsIHByaXYtPmlyYWRpb1RpdGxlLCBOVUxMKTsKKyAgICB9CisKKyAg
ICBpZiAoZ3N0X3RhZ19saXN0X2lzX2VtcHR5KHRhZ3MpKQorICAgICAgICBnc3RfdGFnX2xpc3Rf
ZnJlZSh0YWdzKTsKKyAgICBlbHNlCisgICAgICAgIGdzdF9lbGVtZW50X2ZvdW5kX3RhZ3NfZm9y
X3BhZChHU1RfRUxFTUVOVChtX3NyYyksIG1fc3JjLT5wcml2LT5zcmNwYWQsIHRhZ3MpOworfQor
Cit2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGxlbmd0aFJlY2VpdmVkKQor
eworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBtX3NyYy0+cHJpdjsKKworICAgIEdT
VF9MT0dfT0JKRUNUKG1fc3JjLCAiSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbGVuZ3RoKTsKKwor
ICAgIGlmIChwcml2LT5zZWVrSUQgfHwgaGFuZGxlICE9IHByaXYtPnJlc291cmNlSGFuZGxlKSB7
CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QobV9zcmMsICJTZWVrIGluIHByb2dyZXNzLCBpZ25v
cmluZyBkYXRhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHc3RCdWZmZXIqIGJ1
ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOworCisgICAgbWVtY3B5KEdT
VF9CVUZGRVJfREFUQShidWZmZXIpLCBkYXRhLCBsZW5ndGgpOworICAgIEdTVF9CVUZGRVJfT0ZG
U0VUKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CisgICAgcHJpdi0+b2Zmc2V0ICs9IGxlbmd0aDsK
KyAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQoYnVmZmVyKSA9IHByaXYtPm9mZnNldDsKKworICAg
IEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3Jj
LCBidWZmZXIpOworICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0sgJiYgcmV0ICE9IEdTVF9GTE9X
X1VORVhQRUNURUQpCisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1fc3JjLCBDT1JFLCBGQUlM
RUQsICgwKSwgKDApKTsKK30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqKQoreworICAgIEdTVF9ERUJVR19PQkpFQ1QobV9zcmMsICJIYXZl
IEVPUyIpOworICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9zdHJlYW0obV9zcmMtPnByaXYtPmFwcHNy
Yyk7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgR1NUX0VSUk9SX09CSkVDVChtX3Ny
YywgIkhhdmUgZmFpbHVyZTogJXMiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0Zjgo
KS5kYXRhKCkpOworICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1fc3JjLCBSRVNPVVJDRSwgRkFJTEVE
LCAoIiVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSwgKDAp
KTsKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKG1fc3JjLT5wcml2LT5hcHBzcmMpOwor
fQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCit7
Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpjYW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxl
KikKK3sKK30KKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yYTFhODMxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDkgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBj
b2xsYWJvcmEuY28udWs+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVm
IFdlYktpdFdlYlNvdXJjZUdTdHJlYW1lcl9oCisjZGVmaW5lIFdlYktpdFdlYlNvdXJjZUdTdHJl
YW1lcl9oCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9TUkMgICAgICAgICAgICAod2Vi
a2l0X3dlYl9zcmNfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfU1JDKG9iaikgICAg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBXRUJLSVRfVFlQRV9X
RUJfU1JDLCBXZWJraXRXZWJTcmMpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NSQ19DTEFTUyhrbGFz
cykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9XRUJf
U1JDLCBXZWJraXRXZWJTcmNDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU1JDKG9iaikg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBXRUJLSVRfVFlQRV9X
RUJfU1JDKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TUkNfQ0xBU1Moa2xhc3MpIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfV0VCX1NSQykpCisKK3R5cGVk
ZWYgc3RydWN0IF9XZWJraXRXZWJTcmMgICAgICAgIFdlYmtpdFdlYlNyYzsKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJraXRXZWJTcmNDbGFzcyAgIFdlYmtpdFdlYlNyY0NsYXNzOwordHlwZWRlZiBzdHJ1
Y3QgX1dlYmtpdFdlYlNyY1ByaXZhdGUgV2Via2l0V2ViU3JjUHJpdmF0ZTsKKworc3RydWN0IF9X
ZWJraXRXZWJTcmMgeworICAgIEdzdEJpbiBwYXJlbnQ7CisKKyAgICBXZWJraXRXZWJTcmNQcml2
YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJraXRXZWJTcmNDbGFzcyB7CisgICAgR3N0Qmlu
Q2xhc3MgcGFyZW50Q2xhc3M7Cit9OworCitHVHlwZSB3ZWJraXRfd2ViX3NyY19nZXRfdHlwZSh2
b2lkKTsKK3ZvaWQgIHdlYmtpdF93ZWJfc3JjX3NldF9mcmFtZShXZWJraXRXZWJTcmMqIHNyYywg
V2ViQ29yZTo6RnJhbWUqIGZyYW1lKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggM2NhNDc0My4uYmU3NzA2NyAx
MDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNzA0LDYgKzcw
NCw3IEBAIGZpCiBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCiAgICBQS0df
Q0hFQ0tfTU9EVUxFUyhbR1NUUkVBTUVSXSwKICAgICAgICAgICAgICAgICAgICAgIFtnc3RyZWFt
ZXItMC4xMCA+PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KKyAgICAgICAgICAgICAgICAg
ICAgIGdzdHJlYW1lci1hcHAtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWJh
c2UtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMAogICAg
ICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBsdWdpbnMtYmFzZS0wLjEwCi0tIAoxLjYuNi4x
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48220</attachid>
            <date>2010-02-05 03:37:13 -0800</date>
            <delta_ts>2010-02-05 06:38:48 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>33525</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSAzMDUyM2EyNmE3MDE0NjBkNmFjZjE1MWYyODQyOTAxYzIyMDg4YmUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogU2F0LCAzMCBKYW4gMjAxMCAx
MTozNjo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDcgKy0KIC4uLi9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCAgIHwgICA2MCArLS0KIC4uLi9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDcwNCArKysrKysrKysrKysrKysrKysrKwogLi4uL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCAgICAgICAgfCAgIDUyICsrCiBj
b25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogNyBmaWxlcyBjaGFuZ2VkLCA4MDIgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGY4ZDA4MWQuLmFiYjcxMmUgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTMzLDYgKzMzLDE2IEBACiAKICAgICAgICAgKiBj
b25maWd1cmUuYWM6CiAKKzIwMTAtMDEtMzAgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4u
ZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgZ3N0cmVhbWVyLWFwcC0wLjEwIHRvIGNvbmZpZ3VyZS5hYwor
ICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM0MzE3CisKKyAgICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMTAtMDEtMjkgIEplcmVteSBP
cmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmYmU4Nzk2Li44MGJlMjNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMzM2MCw2ICszMzYwLDI1IEBACiAKICAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKIAorMjAxMC0wMS0zMCAgU2ViYXN0aWFuIERyw7ZnZSAgPHNl
YmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEdTdHJlYW1lciBIVFRQL0hUVFBTIHNvdXJj
ZSwgdXNpbmcgV2ViS2l0IGluZnJhc3RydWN0dXJlCisgICAgICAgIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMTcKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFQbGF5ZXJQcml2YXRl
U291cmNlQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRvR3N0SW5pdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5oOgorICAgICAgICBBZGQgYSBHU3RyZWFtZXIgSFRUUC9IVFRQUyBzb3VyY2UsIHVzaW5n
IHRoZSBXZWJLaXQgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgIFRoaXMgbWFrZXMgc3VyZSB0aGF0
IHJlZmVyZXIsIGNvb2tpZXMsIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uCisgICAgICAgIGFu
ZCBhbGwga2luZHMgb2Ygb3RoZXIgY29udGV4dCBhcmUgcGFzc2VkIHRvIEdTdHJlYW1lciBmb3Ig
d2Vic2l0ZXMKKyAgICAgICAgbGlrZSBWaW1lbyBvciBZb3VUdWJlLgorCiAyMDEwLTAxLTI5ICBN
YXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCBjb3B5aW5nIGFuIElE
TCBmaWxlIGluIHRvIHRoZSBmcmFtZXdvcmsgd3JhcHBlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDE2YzgwNTIuLmNh
ZTEzZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQpAQCAtMjQwOSwxMiArMjQwOSwxNSBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1ZpZGVvU2lua0dTdHJlYW1lci5j
cHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1ZpZGVvU2lua0dTdHJlYW1lci5o
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EYXRhU291cmNlR1N0cmVhbWVyLmNw
cCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5o
CisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5oIFwK
KwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuaAogCiB3ZWJjb3JlX2xpYmFkZCArPSBcCiAJLWxnc3RpbnRlcmZhY2VzLTAuMTAgXAog
CS1sZ3N0dmlkZW8tMC4xMCBcCi0JLWxnc3RwYnV0aWxzLTAuMTAKKwktbGdzdHBidXRpbHMtMC4x
MCBcCisJLWxnc3RhcHAtMC4xMAogCiBlbmRpZiAjIEVORCBFTkFCTEVfVklERU8KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDM3MjAyMS4uZWE5YTRhNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVy
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2lk
Z2V0LmgiCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC0xMzcsNTUgKzEzOCwxMyBAQCB2b2lk
IG1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICpvYmplY3Qs
IEdQYXJhbVNwZWMgKnBzcGVjLAogICAgIGdfb2JqZWN0X2dldChtcC0+bV9wbGF5QmluLCAic291
cmNlIiwgJmVsZW1lbnQub3V0UHRyKCksIE5VTEwpOwogICAgIGdzdF9vYmplY3RfcmVwbGFjZSgo
R3N0T2JqZWN0KiopICZtcC0+bV9zb3VyY2UsIChHc3RPYmplY3QqKSBlbGVtZW50LmdldCgpKTsK
IAotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR093blB0cjxjaGFy
PiBsb2NhdGlvbjsKLSAgICBnX29iamVjdF9nZXQoZWxlbWVudC5nZXQoKSwgImxvY2F0aW9uIiwg
JmxvY2F0aW9uLm91dFB0cigpLCBOVUxMKTsKLQotICAgIC8vIERvIGluamVjdGlvbiBvbmx5IGZv
ciBlbGVtZW50cyBkZWFsaW5nIHdpdGggdXJpcy4KLSAgICBpZiAoIWdzdF91cmlfaXNfdmFsaWQo
bG9jYXRpb24uZ2V0KCkpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKFdFQktJVF9JU19XRUJf
U1JDKGVsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3BsYXll
ci0+ZnJhbWVWaWV3KCkgPworbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IDA7
CiAKLSAgICBHT3duUHRyPFNvdXBVUkk+IHVyaShzb3VwX3VyaV9uZXcobG9jYXRpb24uZ2V0KCkp
KTsKLQotICAgIC8vIERvIGluamVjdGlvbiBvbmx5IGZvciBodHRwKHMpIHVyaXMuCi0gICAgaWYg
KCFTT1VQX1VSSV9WQUxJRF9GT1JfSFRUUCh1cmkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25vdyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNl
IG1vdmllIHRyYWlsZXJzLgotICAgIGlmIChnX3N0cl9lcXVhbCh1cmktPmhvc3QsICJtb3ZpZXMu
YXBwbGUuY29tIikpCi0gICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50LmdldCgpLCAidXNlci1h
Z2VudCIsICJRdWlja3RpbWUvNy4yLjAiLCBOVUxMKTsKLQotICAgIC8vIFNldCB0aGUgSFRUUCBy
ZWZlcmVyLgotICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3BsYXllci0+ZnJhbWVWaWV3KCkgPyBt
cC0+bV9wbGF5ZXItPmZyYW1lVmlldygpLT5mcmFtZSgpIDogMDsKLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDogMDsKLSAgICBpZiAoZG9jdW1lbnQp
IHsKLSAgICAgICAgR3N0U3RydWN0dXJlKiBleHRyYUhlYWRlcnMgPSBnc3Rfc3RydWN0dXJlX25l
dygiZXh0cmEtaGVhZGVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlJlZmVyZXIiLCBHX1RZUEVfU1RSSU5HLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5kb2N1
bWVudFVSSSgpLnV0ZjgoKS5kYXRhKCksIDApOwotICAgICAgICBnX29iamVjdF9zZXQoZWxlbWVu
dC5nZXQoKSwgImV4dHJhLWhlYWRlcnMiLCBleHRyYUhlYWRlcnMsIE5VTEwpOwotICAgICAgICBn
c3Rfc3RydWN0dXJlX2ZyZWUoZXh0cmFIZWFkZXJzKTsKKyAgICAgICAgaWYgKGZyYW1lKQorICAg
ICAgICAgICAgd2Via2l0X3dlYl9zcmNfc2V0X2ZyYW1lKFdFQktJVF9XRUJfU1JDKGVsZW1lbnQu
Z2V0KCkpLCBmcmFtZSk7CiAgICAgfQotCi0gICAgLy8gRGVhbCB3aXRoIHRoZSBjb29raWVzIGZy
b20gbm93IG9uLgotICAgIEdQYXJhbVNwZWMqIGNvb2tpZXNQYXJhbVNwZWMgPSBnX29iamVjdF9j
bGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhlbGVtZW50LmdldCgpKSwgImNv
b2tpZXMiKTsKLQotICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZSBzb3VyY2UgZWxlbWVudCBoYXMg
YSBjb29raWVzIHByb3BlcnR5Ci0gICAgLy8gb2YgdGhlIGZvcm1hdCB3ZSBleHBlY3QKLSAgICBp
ZiAoIWNvb2tpZXNQYXJhbVNwZWMgfHwgY29va2llc1BhcmFtU3BlYy0+dmFsdWVfdHlwZSAhPSBH
X1RZUEVfU1RSVikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhlbiBnZXQgdGhlIGNvb2tp
ZXMgZm9yIHRoZSBVUkkgYW5kIHNldCB0aGVtCi0gICAgU291cFNlc3Npb24qIHNlc3Npb24gPSB3
ZWJraXRfZ2V0X2RlZmF1bHRfc2Vzc2lvbigpOwotICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogY29v
a2llSmFyRmVhdHVyZSA9IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1RZ
UEVfQ09PS0lFX0pBUik7Ci0gICAgaWYgKCFjb29raWVKYXJGZWF0dXJlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBTT1VQX0NPT0tJRV9KQVIoY29v
a2llSmFyRmVhdHVyZSk7Ci0gICAgR093blB0cjxjaGFyPiBjb29raWVzKHNvdXBfY29va2llX2ph
cl9nZXRfY29va2llcyhjb29raWVKYXIsIHVyaS5nZXQoKSwgRkFMU0UpKTsKLSAgICBjaGFyKiBj
b29raWVzU3RydltdID0ge2Nvb2tpZXMuZ2V0KCksIDB9OwotICAgIGdfb2JqZWN0X3NldChlbGVt
ZW50LmdldCgpLCAiY29va2llcyIsIGNvb2tpZXNTdHJ2LCBOVUxMKTsKIH0KIAogdm9pZCBtZWRp
YVBsYXllclByaXZhdGVWb2x1bWVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1Bh
cmFtU3BlYyAqcHNwZWMsIGdwb2ludGVyIGRhdGEpCkBAIC0yNzAsMTIgKzIyOSwxNSBAQCBzdGF0
aWMgYm9vbCBkb0dzdEluaXQoKQogICAgIGlmICghZ3N0SW5pdGlhbGl6ZWQpIHsKICAgICAgICAg
R093blB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBnc3RJbml0aWFsaXplZCA9IGdzdF9pbml0
X2NoZWNrKDAsIDAsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgICAgIGlmICghZ3N0SW5pdGlhbGl6
ZWQpCisgICAgICAgIGlmICghZ3N0SW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgIExPR19WRVJC
T1NFKE1lZGlhLCAiQ291bGQgbm90IGluaXRpYWxpemUgR1N0cmVhbWVyOiAlcyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogInVua25vd24gZXJyb3Ig
b2NjdXJyZWQiKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Z3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtpdG1lZGlhc3JjIiwgR1NUX1JBTktfUFJJTUFS
WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0RBVEFfU1JD
KTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXR3ZWJzcmMiLCBH
U1RfUkFOS19QUklNQVJZICsgMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V0VCS0lUX1RZUEVfV0VCX1NSQyk7CisgICAgICAgIH0KIAogICAgIH0KICAgICByZXR1cm4gZ3N0
SW5pdGlhbGl6ZWQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iMmNlMjZlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDcwNCBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFu
LmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJHUmVmUHRyLmgiCisjaW5jbHVkZSAiTm9uY29weWFibGUuaCIKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKworI2luY2x1ZGUgPGdzdC9hcHAvZ3N0
YXBwc3JjLmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMg
Tm9uY29weWFibGUsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CisgICAgcHVibGljOgor
ICAgICAgICBTdHJlYW1pbmdDbGllbnQoV2Via2l0V2ViU3JjKik7CisgICAgICAgIHZpcnR1YWwg
flN0cmVhbWluZ0NsaWVudCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRs
ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSop
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Via2l0V2ViU3JjKiBtX3NyYzsKK307CisKKyNk
ZWZpbmUgV0VCS0lUX1dFQl9TUkNfR0VUX1BSSVZBVEUob2JqKSAgICAoR19UWVBFX0lOU1RBTkNF
X0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU1JDLCBXZWJraXRXZWJTcmNQcml2
YXRlKSkKK3N0cnVjdCBfV2Via2l0V2ViU3JjUHJpdmF0ZSB7CisgICAgR3N0QXBwU3JjKiBhcHBz
cmM7CisgICAgR3N0UGFkKiBzcmNwYWQ7CisgICAgZ2NoYXIqIHVyaTsKKworICAgIFdlYkNvcmU6
OkZyYW1lKiBmcmFtZTsKKworICAgIFN0cmVhbWluZ0NsaWVudCogY2xpZW50OworICAgIFJlc291
cmNlUmVxdWVzdCogcmVzb3VyY2VSZXF1ZXN0OworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4g
cmVzb3VyY2VIYW5kbGU7CisKKyAgICBndWludDY0IG9mZnNldDsKKyAgICBndWludDY0IHNpemU7
CisgICAgZ2Jvb2xlYW4gc2Vla2FibGU7CisgICAgZ2Jvb2xlYW4gcGF1c2VkOworCisgICAgZ3Vp
bnQ2NCByZXF1ZXN0ZWRPZmZzZXQ7CisKKyAgICBndWludCBuZWVkRGF0YUlEOworICAgIGd1aW50
IGVub3VnaERhdGFJRDsKKyAgICBndWludCBzZWVrSUQ7CisKKyAgICAvLyBpY2VjYXN0IHN0dWZm
CisgICAgZ2Jvb2xlYW4gaXJhZGlvTW9kZTsKKyAgICBnY2hhciogaXJhZGlvTmFtZTsKKyAgICBn
Y2hhciogaXJhZGlvR2VucmU7CisgICAgZ2NoYXIqIGlyYWRpb1VybDsKKyAgICBnY2hhciogaXJh
ZGlvVGl0bGU7Cit9OworCitlbnVtIHsKKyAgICBQUk9QX0lSQURJT19NT0RFID0gMSwKKyAgICBQ
Uk9QX0lSQURJT19OQU1FLAorICAgIFBST1BfSVJBRElPX0dFTlJFLAorICAgIFBST1BfSVJBRElP
X1VSTCwKKyAgICBQUk9QX0lSQURJT19USVRMRQorfTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRl
bXBsYXRlIHNyY1RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUoInNyYyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1NUX1BBRF9TUkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R1NUX1NUQVRJQ19DQVBTX0FOWSk7CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0
X3dlYl9zcmNfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X3dlYl9zcmNf
ZGVidWcKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfdXJpX2hhbmRsZXJfaW5pdChncG9p
bnRlciBnSWZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdwb2ludGVyIGlmYWNlRGF0YSk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCk7CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsCisgICAgY29uc3QgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfZ2V0
X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELAorICAgIEdWYWx1ZSogdmFs
dWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJr
aXRfd2ViX3NyY19jaGFuZ2Vfc3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0U3RhdGVDaGFu
Z2UgdHJhbnNpdGlvbik7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0YV9j
YihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1c2VyRGF0YSk7Citz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19lbm91Z2hfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNy
YywgZ3BvaW50ZXIgdXNlckRhdGEpOworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfc3JjX3Nl
ZWtfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludGVyIHVz
ZXJEYXRhKTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfc3RvcChXZWJraXRXZWJTcmMq
IHNyYywgZ2Jvb2xlYW4gcmVzZXRSZXF1ZXN0ZWRPZmZzZXQpOworCitzdGF0aWMgR3N0QXBwU3Jj
Q2FsbGJhY2tzIGFwcHNyY19jYWxsYmFja3MgPSB7CisgICAgd2Via2l0X3dlYl9zcmNfbmVlZF9k
YXRhX2NiLAorICAgIHdlYmtpdF93ZWJfc3JjX2Vub3VnaF9kYXRhX2NiLAorICAgIHdlYmtpdF93
ZWJfc3JjX3NlZWtfZGF0YV9jYiwKKyAgICB7IDAgfQorfTsKKworc3RhdGljIGNvbnN0IEdJbnRl
cmZhY2VJbmZvIHVyaWhhbmRsZXJfaW5mbyA9IHsKKyAgICB3ZWJraXRfd2ViX3NyY191cmlfaGFu
ZGxlcl9pbml0LAorICAgIDAsIDAKK307CisKKworc3RhdGljIHZvaWQgX2RvSW5pdChHVHlwZSBn
dHlwZSkKK3sKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfd2ViX3NyY19kZWJ1
ZywgIndlYmtpdHdlYnNyYyIsIDAsICJ3ZWJzcmMgZWxlbWVudCIpOworICAgIGdfdHlwZV9hZGRf
aW50ZXJmYWNlX3N0YXRpYyhndHlwZSwgR1NUX1RZUEVfVVJJX0hBTkRMRVIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZ1cmloYW5kbGVyX2luZm8pOworfQorCitHU1RfQk9JTEVS
UExBVEVfRlVMTChXZWJraXRXZWJTcmMsIHdlYmtpdF93ZWJfc3JjLCBHc3RCaW4sIEdTVF9UWVBF
X0JJTiwgX2RvSW5pdCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2Jhc2VfaW5pdChn
cG9pbnRlciBrbGFzcykKK3sKKyAgICBHc3RFbGVtZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVN
RU5UX0NMQVNTKGtsYXNzKTsKKworICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxh
dGUoZWtsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzdF9zdGF0aWNfcGFk
X3RlbXBsYXRlX2dldCgmc3JjVGVtcGxhdGUpKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRf
ZGV0YWlsc19zaW1wbGUoZWtsYXNzLCAoZ2NoYXIqKSAiV2ViS2l0IFdlYiBzb3VyY2UgZWxlbWVu
dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjaGFyKikgIlNvdXJjZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjaGFyKikgIkhhbmRsZXMgSFRU
UC9IVFRQUyB1cmlzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIq
KSAiU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Iik7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2NsYXNzX2luaXQoV2Via2l0V2ViU3Jj
Q2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2tsYXNzID0gR19PQkpFQ1RfQ0xB
U1Moa2xhc3MpOworICAgIEdzdEVsZW1lbnRDbGFzcyogZWtsYXNzID0gR1NUX0VMRU1FTlRfQ0xB
U1Moa2xhc3MpOworCisgICAgb2tsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF93ZWJfc3JjX2ZpbmFs
aXplOworICAgIG9rbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9zcmNfc2V0X3Byb3Bl
cnR5OworICAgIG9rbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9zcmNfZ2V0X3Byb3Bl
cnR5OworCisgICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkob2tsYXNzLAorICAgICAgICBQUk9QX0lSQURJT19NT0RFLAorICAgICAgICBnX3Bh
cmFtX3NwZWNfYm9vbGVhbigiaXJhZGlvLW1vZGUiLAorICAgICAgICAgICAgImlyYWRpby1tb2Rl
IiwKKyAgICAgICAgICAgICJFbmFibGUgaW50ZXJuZXQgcmFkaW8gbW9kZSAoZXh0cmFjdGlvbiBv
ZiBzaG91dGNhc3QvaWNlY2FzdCBtZXRhZGF0YSkiLAorICAgICAgICAgICAgRkFMU0UsIChHUGFy
YW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsK
KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywKKyAgICAgICAgUFJP
UF9JUkFESU9fTkFNRSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygiaXJhZGlvLW5hbWUi
LAorICAgICAgICAgICAgImlyYWRpby1uYW1lIiwgIk5hbWUgb2YgdGhlIHN0cmVhbSIsIDAsIChH
UGFyYW1GbGFncykgKEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkp
OworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAgICAgICBQ
Uk9QX0lSQURJT19HRU5SRSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygiaXJhZGlvLWdl
bnJlIiwKKyAgICAgICAgICAgICJpcmFkaW8tZ2VucmUiLCAiR2VucmUgb2YgdGhlIHN0cmVhbSIs
IDAsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJ
TkdTKSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAg
ICAgICBQUk9QX0lSQURJT19VUkwsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImlyYWRp
by11cmwiLAorICAgICAgICAgICAgImlyYWRpby11cmwiLAorICAgICAgICAgICAgIkhvbWVwYWdl
IFVSTCBmb3IgcmFkaW8gc3RyZWFtIiwgMCwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEQUJM
RSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAgIFBST1BfSVJBRElPX1RJVExFLAorICAgICAgICBn
X3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tdGl0bGUiLAorICAgICAgICAgICAgImlyYWRpby10
aXRsZSIsCisgICAgICAgICAgICAiTmFtZSBvZiBjdXJyZW50bHkgcGxheWluZyBzb25nIiwgMCwg
KEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1Mp
KSk7CisKKyAgICBla2xhc3MtPmNoYW5nZV9zdGF0ZSA9IHdlYmtpdF93ZWJfc3JjX2NoYW5nZV9z
dGF0ZTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYmtp
dFdlYlNyY1ByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfaW5pdChX
ZWJraXRXZWJTcmMqIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Via2l0
V2ViU3JjQ2xhc3MqIGdLbGFzcykKK3sKKyAgICBHc3RQYWRUZW1wbGF0ZSogcGFkVGVtcGxhdGUg
PSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQoJnNyY1RlbXBsYXRlKTsKKyAgICBHc3RQYWQq
IHRhcmdldHBhZDsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9T
UkNfR0VUX1BSSVZBVEUoc3JjKTsKKworICAgIHNyYy0+cHJpdiA9IHByaXY7CisKKyAgICBwcml2
LT5jbGllbnQgPSBuZXcgU3RyZWFtaW5nQ2xpZW50KHNyYyk7CisKKyAgICBwcml2LT5zcmNwYWQg
PSBnc3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXRfZnJvbV90ZW1wbGF0ZSgic3JjIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
ZFRlbXBsYXRlKTsKKworICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlQoc3JjKSwg
cHJpdi0+c3JjcGFkKTsKKworICAgIHByaXYtPmFwcHNyYyA9IEdTVF9BUFBfU1JDKGdzdF9lbGVt
ZW50X2ZhY3RvcnlfbWFrZSgiYXBwc3JjIiwgMCkpOworICAgIGlmICghcHJpdi0+YXBwc3JjKSB7
CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiRmFpbGVkIHRvIGNyZWF0ZSBhcHBzcmMi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdzdF9iaW5fYWRkKEdTVF9CSU4oc3Jj
KSwgR1NUX0VMRU1FTlQocHJpdi0+YXBwc3JjKSk7CisKKyAgICB0YXJnZXRwYWQgPSBnc3RfZWxl
bWVudF9nZXRfc3RhdGljX3BhZChHU1RfRUxFTUVOVChwcml2LT5hcHBzcmMpLCAic3JjIik7Cisg
ICAgZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0KEdTVF9HSE9TVF9QQUQocHJpdi0+c3JjcGFkKSwg
dGFyZ2V0cGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKHRhcmdldHBhZCk7CisKKyAgICBnc3Rf
YXBwX3NyY19zZXRfY2FsbGJhY2tzKHByaXYtPmFwcHNyYywgJmFwcHNyY19jYWxsYmFja3MsIHNy
YywgMCk7CisgICAgZ3N0X2FwcF9zcmNfc2V0X2VtaXRfc2lnbmFscyhwcml2LT5hcHBzcmMsIEZB
TFNFKTsKKyAgICBnc3RfYXBwX3NyY19zZXRfc3RyZWFtX3R5cGUocHJpdi0+YXBwc3JjLCBHU1Rf
QVBQX1NUUkVBTV9UWVBFX1NFRUtBQkxFKTsKKyAgICBnc3RfYXBwX3NyY19zZXRfbWF4X2J5dGVz
KHByaXYtPmFwcHNyYywgNTEyICogMTAyNCk7CisKKyAgICB3ZWJraXRfd2ViX3NyY19zdG9wKHNy
YywgVFJVRSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2ZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKK3sKKyAgICBXZWJraXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9i
amVjdCk7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAg
IGRlbGV0ZSBwcml2LT5jbGllbnQ7CisgICAgZ19mcmVlKHByaXYtPnVyaSk7CisKKyAgICBHU1Rf
Q0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAoKEdPYmplY3QqICkoc3JjKSkp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19zZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBz
cGVjKQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMob2JqZWN0KTsK
KyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgc3dpdGNo
IChwcm9wSUQpIHsKKyAgICBjYXNlIFBST1BfSVJBRElPX01PREU6CisgICAgICAgIHByaXYtPmly
YWRpb01vZGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcElELCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9zcmNfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJraXRX
ZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7CisgICAgV2Via2l0V2ViU3JjUHJp
dmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2Fz
ZSBQUk9QX0lSQURJT19NT0RFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBw
cml2LT5pcmFkaW9Nb2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lSQURJT19O
QU1FOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPmlyYWRpb05hbWUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSVJBRElPX0dFTlJFOgorICAgICAgICBn
X3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPmlyYWRpb0dlbnJlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0lSQURJT19VUkw6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmlu
Zyh2YWx1ZSwgcHJpdi0+aXJhZGlvVXJsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X0lSQURJT19USVRMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5p
cmFkaW9UaXRsZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMpOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfc3Rv
cChXZWJraXRXZWJTcmMqIHNyYywgZ2Jvb2xlYW4gcmVzZXRSZXF1ZXN0ZWRPZmZzZXQpCit7Cisg
ICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGlmIChwcml2
LT5yZXNvdXJjZUhhbmRsZSkgeworICAgICAgICBwcml2LT5yZXNvdXJjZUhhbmRsZS0+Y2FuY2Vs
KCk7CisgICAgICAgIHByaXYtPnJlc291cmNlSGFuZGxlLnJlbGVhc2UoKTsKKyAgICB9CisgICAg
cHJpdi0+cmVzb3VyY2VIYW5kbGUgPSAwOworCisgICAgaWYgKHByaXYtPmZyYW1lKQorICAgICAg
ICBwcml2LT5mcmFtZS0+ZGVyZWYoKTsKKyAgICBwcml2LT5mcmFtZSA9IDA7CisKKyAgICBpZiAo
cHJpdi0+cmVzb3VyY2VSZXF1ZXN0KQorICAgICAgICBkZWxldGUgcHJpdi0+cmVzb3VyY2VSZXF1
ZXN0OworICAgIHByaXYtPnJlc291cmNlUmVxdWVzdCA9IDA7CisKKyAgICBpZiAocHJpdi0+bmVl
ZERhdGFJRCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPm5lZWREYXRhSUQpOworICAg
IHByaXYtPm5lZWREYXRhSUQgPSAwOworCisgICAgaWYgKHByaXYtPmVub3VnaERhdGFJRCkKKyAg
ICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPmVub3VnaERhdGFJRCk7CisgICAgcHJpdi0+ZW5v
dWdoRGF0YUlEID0gMDsKKworICAgIGlmIChwcml2LT5zZWVrSUQpCisgICAgICAgIGdfc291cmNl
X3JlbW92ZShwcml2LT5zZWVrSUQpOworICAgIHByaXYtPnNlZWtJRCA9IDA7CisKKyAgICBwcml2
LT5wYXVzZWQgPSBGQUxTRTsKKworICAgIGdfZnJlZShwcml2LT5pcmFkaW9OYW1lKTsKKyAgICBw
cml2LT5pcmFkaW9OYW1lID0gMDsKKworICAgIGdfZnJlZShwcml2LT5pcmFkaW9HZW5yZSk7Cisg
ICAgcHJpdi0+aXJhZGlvR2VucmUgPSAwOworCisgICAgZ19mcmVlKHByaXYtPmlyYWRpb1VybCk7
CisgICAgcHJpdi0+aXJhZGlvVXJsID0gMDsKKworICAgIGdfZnJlZShwcml2LT5pcmFkaW9UaXRs
ZSk7CisgICAgcHJpdi0+aXJhZGlvVGl0bGUgPSAwOworCisgICAgaWYgKHByaXYtPmFwcHNyYykK
KyAgICAgICAgZ3N0X2FwcF9zcmNfc2V0X2NhcHMocHJpdi0+YXBwc3JjLCAwKTsKKworICAgIHBy
aXYtPm9mZnNldCA9IDA7CisgICAgcHJpdi0+c2l6ZSA9IDA7CisgICAgcHJpdi0+c2Vla2FibGUg
PSBGQUxTRTsKKworICAgIGlmIChyZXNldFJlcXVlc3RlZE9mZnNldCkKKyAgICAgICAgcHJpdi0+
cmVxdWVzdGVkT2Zmc2V0ID0gMDsKKworICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RvcHBl
ZCByZXF1ZXN0Iik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3NyY19zdGFydChX
ZWJraXRXZWJTcmMqIHNyYykKK3sKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3Jj
LT5wcml2OworCisgICAgaWYgKCFwcml2LT51cmkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVD
VChzcmMsICJObyBVUkkgcHJvdmlkZWQiKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0K
KworICAgIEtVUkwgdXJsID0gS1VSTChLVVJMKCksIHByaXYtPnVyaSk7CisgICAgcHJpdi0+cmVz
b3VyY2VSZXF1ZXN0ID0gbmV3IFJlc291cmNlUmVxdWVzdCh1cmwpOworICAgIHByaXYtPnJlc291
cmNlUmVxdWVzdC0+c2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRJc01l
ZGlhKTsKKyAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNldEFsbG93Q29va2llcyh0cnVlKTsK
KworICAgIC8vIExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRo
ZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCisgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1v
dmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQorICAgICAgICBwcml2
LT5yZXNvdXJjZVJlcXVlc3QtPnNldEhUVFBVc2VyQWdlbnQoIlF1aWNrdGltZS83LjIuMCIpOwor
CisgICAgaWYgKHByaXYtPmZyYW1lKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHBy
aXYtPmZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICBpZiAoZG9jdW1lbnQpCisgICAgICAgICAg
ICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNldEhUVFBSZWZlcnJlcihkb2N1bWVudC0+ZG9jdW1l
bnRVUkkoKSk7CisKKyAgICAgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IHByaXYtPmZyYW1lLT5s
b2FkZXIoKTsKKyAgICAgICAgaWYgKGxvYWRlcikKKyAgICAgICAgICAgIGxvYWRlci0+YWRkRXh0
cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdCgqcHJpdi0+cmVzb3VyY2VSZXF1ZXN0KTsKKyAg
ICB9CisKKyAgICBpZiAocHJpdi0+cmVxdWVzdGVkT2Zmc2V0KSB7CisgICAgICAgIGdjaGFyKiB2
YWwgPSBnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIi0iLCBwcml2
LT5yZXF1ZXN0ZWRPZmZzZXQpOworICAgICAgICBwcml2LT5yZXNvdXJjZVJlcXVlc3QtPnNldEhU
VFBIZWFkZXJGaWVsZCgiUmFuZ2UiLCB2YWwpOworICAgICAgICBnX2ZyZWUodmFsKTsKKyAgICB9
CisKKyAgICBpZiAocHJpdi0+aXJhZGlvTW9kZSkKKyAgICAgICAgcHJpdi0+cmVzb3VyY2VSZXF1
ZXN0LT5zZXRIVFRQSGVhZGVyRmllbGQoImljeS1tZXRhZGF0YSIsICIxIik7CisKKyAgICAvLyBO
ZWVkZWQgdG8gdXNlIERMTkEgc3RyZWFtaW5nIHNlcnZlcnMKKyAgICBwcml2LT5yZXNvdXJjZVJl
cXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZCgidHJhbnNmZXJNb2RlLmRsbmEiLCAiU3RyZWFtaW5n
Iik7CisKKyAgICBwcml2LT5yZXNvdXJjZUhhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUo
KnByaXYtPnJlc291cmNlUmVxdWVzdCwgcHJpdi0+Y2xpZW50LCAwLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKTsKKyAgICBpZiAoIXByaXYtPnJlc291cmNlSGFuZGxlKSB7CisgICAgICAgIEdTVF9FUlJP
Ul9PQkpFQ1Qoc3JjLCAiRmFpbGVkIHRvIGNyZWF0ZSBSZXNvdXJjZUhhbmRsZSIpOworICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdGFy
dGVkIHJlcXVlc3QiKTsKKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgR3N0U3RhdGVD
aGFuZ2VSZXR1cm4gd2Via2l0X3dlYl9zcmNfY2hhbmdlX3N0YXRlKEdzdEVsZW1lbnQqIGVsZW1l
bnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCit7CisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1
cm4gcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOworICAgIFdlYmtpdFdlYlNyYyogc3Jj
ID0gV0VCS0lUX1dFQl9TUkMoZWxlbWVudCk7CisgICAgV2Via2l0V2ViU3JjUHJpdmF0ZSogcHJp
diA9IHNyYy0+cHJpdjsKKworICAgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAgIGNhc2UgR1NU
X1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZOgorICAgICAgICBpZiAoIXByaXYtPmFwcHNyYykg
eworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKGVsZW1lbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N0X21pc3NpbmdfZWxlbWVudF9tZXNzYWdl
X25ldyhlbGVtZW50LCAiYXBwc3JjIikpOworICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Io
c3JjLCBDT1JFLCBNSVNTSU5HX1BMVUdJTiwgKDApLCAoIm5vIGFwcHNyYyIpKTsKKyAgICAgICAg
ICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0ID0g
R1NUX0VMRU1FTlRfQ0xBU1MocGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlKGVsZW1lbnQsIHRy
YW5zaXRpb24pOworICAgIGlmIChHX1VOTElLRUxZKHJldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZB
SUxVUkUpKSB7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RhdGUgY2hhbmdlIGZh
aWxlZCIpOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHN3aXRjaCAodHJhbnNp
dGlvbikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CisgICAg
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUkVBRFktPlBBVVNFRCIpOworICAgICAgICBpZiAo
IXdlYmtpdF93ZWJfc3JjX3N0YXJ0KHNyYykpCisgICAgICAgICAgICByZXQgPSBHU1RfU1RBVEVf
Q0hBTkdFX0ZBSUxVUkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5H
RV9QQVVTRURfVE9fUkVBRFk6CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUEFVU0VE
LT5SRUFEWSIpOworICAgICAgICB3ZWJraXRfd2ViX3NyY19zdG9wKHNyYywgVFJVRSk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJl
dHVybiByZXQ7Cit9CisKKy8qKiogR1NUVVJJSEFORExFUiBJTlRFUkZBQ0UgKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIEdzdFVSSVR5
cGUgd2Via2l0X3dlYl9zcmNfdXJpX2dldF90eXBlKHZvaWQpCit7CisgICAgcmV0dXJuIEdTVF9V
UklfU1JDOworfQorCitzdGF0aWMgZ2NoYXIqKiB3ZWJraXRfd2ViX3NyY191cmlfZ2V0X3Byb3Rv
Y29scyh2b2lkKQoreworICAgIHN0YXRpYyBnY2hhciogcHJvdG9jb2xzW10gPSB7KGdjaGFyKikg
Imh0dHAiLCAoZ2NoYXIqKSAiaHR0cHMiLCAwIH07CisKKyAgICByZXR1cm4gcHJvdG9jb2xzOwor
fQorCitzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfc3JjX3VyaV9nZXRfdXJpKEdzdFVS
SUhhbmRsZXIqIGhhbmRsZXIpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VC
X1NSQyhoYW5kbGVyKTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2
OworCisgICAgcmV0dXJuIHByaXYtPnVyaTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93
ZWJfc3JjX3VyaV9zZXRfdXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIsIGNvbnN0IGdjaGFyKiB1
cmkpCit7CisgICAgV2Via2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhoYW5kbGVyKTsK
KyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgaWYgKEdT
VF9TVEFURShzcmMpID49IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICAgICAgR1NUX0VSUk9SX09C
SkVDVChzcmMsICJVUkkgY2FuIG9ubHkgYmUgc2V0IGluIHN0YXRlcyA8IFBBVVNFRCIpOworICAg
ICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIAorICAgIGlmICh1cmkgJiYgIWdfYXNjaWlf
c3RybmNhc2VjbXAoImh0dHAiLCB1cmksIDQpICYmICFnX2FzY2lpX3N0cm5jYXNlY21wKCJodHRw
IiwgdXJpLCA1KSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkludmFsaWQgVVJJ
ICclcyciLCB1cmkpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgZ19mcmVl
KHByaXYtPnVyaSk7CisgICAgcHJpdi0+dXJpID0gdXJpID8gZ19zdHJkdXAodXJpKSA6IDA7Cisg
ICAgCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX3Vy
aV9oYW5kbGVyX2luaXQoZ3BvaW50ZXIgZ0lmYWNlLCBncG9pbnRlciBpZmFjZURhdGEpCit7Cisg
ICAgR3N0VVJJSGFuZGxlckludGVyZmFjZSogaWZhY2UgPSAoR3N0VVJJSGFuZGxlckludGVyZmFj
ZSAqKSBnSWZhY2U7CisKKyAgICBpZmFjZS0+Z2V0X3R5cGUgPSB3ZWJraXRfd2ViX3NyY191cmlf
Z2V0X3R5cGU7CisgICAgaWZhY2UtPmdldF9wcm90b2NvbHMgPSB3ZWJraXRfd2ViX3NyY191cmlf
Z2V0X3Byb3RvY29sczsKKyAgICBpZmFjZS0+Z2V0X3VyaSA9IHdlYmtpdF93ZWJfc3JjX3VyaV9n
ZXRfdXJpOworICAgIGlmYWNlLT5zZXRfdXJpID0gd2Via2l0X3dlYl9zcmNfdXJpX3NldF91cmk7
Cit9CisKKy8vIGFwcHNyYyBjYWxsYmFja3MKKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJf
c3JjX25lZWRfZGF0YV9tYWluX2NiKFdlYmtpdFdlYlNyYyogc3JjKQoreworICAgIFdlYmtpdFdl
YlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBSZXNvdXJjZUhhbmRsZUludGVy
bmFsKiBkID0gcHJpdi0+cmVzb3VyY2VIYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgaWYgKGQt
Pm1fbXNnKQorICAgICAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKFJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBkLT5tX21zZyk7CisKKyAgICBwcml2LT5wYXVzZWQgPSBG
QUxTRTsKKyAgICBwcml2LT5uZWVkRGF0YUlEID0gMDsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX25lZWRfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNy
YywgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBXZWJraXRXZWJTcmMq
IHNyYyA9IFdFQktJVF9XRUJfU1JDKHVzZXJEYXRhKTsKKyAgICBXZWJraXRXZWJTcmNQcml2YXRl
KiBwcml2ID0gc3JjLT5wcml2OworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJOZWVkIG1v
cmUgZGF0YTogJXUiLCBsZW5ndGgpOworICAgIGlmIChwcml2LT5uZWVkRGF0YUlEIHx8ICFwcml2
LT5wYXVzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPm5lZWREYXRhSUQgPSBnX3Rp
bWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ISUdILCAwLCAoR1NvdXJjZUZ1bmMpIHdlYmtpdF93
ZWJfc3JjX25lZWRfZGF0YV9tYWluX2NiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lO
b3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl9zcmNfZW5vdWdoX2RhdGFfbWFpbl9jYihXZWJraXRXZWJTcmMqIHNyYykKK3sKKyAgICBXZWJr
aXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbCogZCA9IHByaXYtPnJlc291cmNlSGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIHNv
dXBfc2Vzc2lvbl9wYXVzZV9tZXNzYWdlKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigp
LCBkLT5tX21zZyk7CisgICAgCisgICAgcHJpdi0+cGF1c2VkID0gVFJVRTsKKyAgICBwcml2LT5l
bm91Z2hEYXRhSUQgPSAwOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9zcmNfZW5vdWdoX2RhdGFfY2IoR3N0QXBwU3JjKiBhcHBzcmMsIGdwb2ludGVyIHVz
ZXJEYXRhKQoreworICAgIFdlYmtpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkModXNlckRh
dGEpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgIkhhdmUgZW5vdWdoIGRhdGEiKTsKKyAgICBpZiAocHJpdi0+
ZW5vdWdoRGF0YUlEIHx8IHByaXYtPnBhdXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJp
di0+ZW5vdWdoRGF0YUlEID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwgMCwg
KEdTb3VyY2VGdW5jKSB3ZWJraXRfd2ViX3NyY19lbm91Z2hfZGF0YV9tYWluX2NiLCBnc3Rfb2Jq
ZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOworfQorCitz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl9zcmNfc2Vla19tYWluX2NiKFdlYmtpdFdlYlNyYyog
c3JjKQoreworICAgIHdlYmtpdF93ZWJfc3JjX3N0b3Aoc3JjLCBGQUxTRSk7CisgICAgd2Via2l0
X3dlYl9zcmNfc3RhcnQoc3JjKTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdi
b29sZWFuIHdlYmtpdF93ZWJfc3JjX3NlZWtfZGF0YV9jYihHc3RBcHBTcmMqIGFwcHNyYywgZ3Vp
bnQ2NCBvZmZzZXQsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIFdlYmtpdFdlYlNyYyogc3Jj
ID0gV0VCS0lUX1dFQl9TUkModXNlckRhdGEpOworICAgIFdlYmtpdFdlYlNyY1ByaXZhdGUqIHBy
aXYgPSBzcmMtPnByaXY7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWtpbmcgdG8g
b2Zmc2V0OiAlIiBHX0dVSU5UNjRfRk9STUFULCBvZmZzZXQpOworICAgIGlmIChvZmZzZXQgPT0g
cHJpdi0+b2Zmc2V0KQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIGlmICghcHJpdi0+c2Vl
a2FibGUpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBpZiAob2Zmc2V0ID4gcHJpdi0+c2l6
ZSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJE
b2luZyByYW5nZS1yZXF1ZXN0IHNlZWsiKTsKKyAgICBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQgPSBv
ZmZzZXQ7CisgICAgaWYgKHByaXYtPnNlZWtJRCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHBy
aXYtPnNlZWtJRCk7CisgICAgcHJpdi0+c2Vla0lEID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJ
T1JJVFlfSElHSCwgMCwgKEdTb3VyY2VGdW5jKSB3ZWJraXRfd2ViX3NyY19zZWVrX21haW5fY2Is
IGdzdF9vYmplY3RfcmVmKHNyYyksIChHRGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7
CisgICAgCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9zcmNfc2V0X2Zy
YW1lKFdlYmtpdFdlYlNyYyogc3JjLCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCit7CisgICAgV2Vi
a2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGZyYW1lLT5yZWYoKTsK
KyAgICBwcml2LT5mcmFtZSA9IGZyYW1lOworfQorCitTdHJlYW1pbmdDbGllbnQ6OlN0cmVhbWlu
Z0NsaWVudChXZWJraXRXZWJTcmMqIHNyYykgOiBtX3NyYyhzcmMpCit7CisKK30KKworU3RyZWFt
aW5nQ2xpZW50Ojp+U3RyZWFtaW5nQ2xpZW50KCkKK3sKKworfQorCit2b2lkIFN0cmVhbWluZ0Ns
aWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK3sKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnBy
aXY7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiUmVjZWl2ZWQgcmVzcG9uc2U6ICVk
IiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisKKyAgICAvLyBJZiB3ZSBzZWVrZWQgd2Ug
bmVlZCAyMDYgPT0gUEFSVElBTF9DT05URU5UCisgICAgaWYgKHByaXYtPnJlcXVlc3RlZE9mZnNl
dCAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpICE9IDIwNikgeworICAgICAgICBHU1RfRUxF
TUVOVF9FUlJPUihtX3NyYywgUkVTT1VSQ0UsIFJFQUQsICgwKSwgKDApKTsKKyAgICAgICAgd2Vi
a2l0X3dlYl9zcmNfc3RvcChtX3NyYywgVFJVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBsb25nIGxvbmcgbGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7
CisgICAgaWYgKGxlbmd0aCA+IDApIHsKKyAgICAgICAgbGVuZ3RoICs9IHByaXYtPnJlcXVlc3Rl
ZE9mZnNldDsKKyAgICAgICAgZ3N0X2FwcF9zcmNfc2V0X3NpemUocHJpdi0+YXBwc3JjLCBsZW5n
dGgpOworICAgIH0KKworICAgIHByaXYtPnNpemUgPSBsZW5ndGggPj0gMCA/IGxlbmd0aCA6IDA7
CisgICAgcHJpdi0+c2Vla2FibGUgPSBsZW5ndGggPiAwICYmIGdfYXNjaWlfc3RyY2FzZWNtcCgi
bm9uZSIsIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0LVJhbmdlcyIpLnV0ZjgoKS5k
YXRhKCkpOworCisgICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIFN0cmluZyB2YWx1ZSA9IHJlc3Bv
bnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LW1ldGFpbnQiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1w
dHkoKSkgeworICAgICAgICBnY2hhciogZW5kcHRyID0gMDsKKyAgICAgICAgZ2ludDY0IGljeU1l
dGFJbnQgPSBnX2FzY2lpX3N0cnRvbGwodmFsdWUudXRmOCgpLmRhdGEoKSwgJmVuZHB0ciwgMTAp
OworICAgICAgICAgICAgCisgICAgICAgIGlmIChlbmRwdHIgJiYgKmVuZHB0ciA9PSAnXDAnICYm
IGljeU1ldGFJbnQgPiAwKSB7CisgICAgICAgICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X2NhcHNf
bmV3X3NpbXBsZSgiYXBwbGljYXRpb24veC1pY3kiLCAibWV0YWRhdGEtaW50ZXJ2YWwiLCBHX1RZ
UEVfSU5ULCAoZ2ludCkgaWN5TWV0YUludCwgTlVMTCk7CisKKyAgICAgICAgICAgIGdzdF9hcHBf
c3JjX3NldF9jYXBzKHByaXYtPmFwcHNyYywgY2Fwcyk7CisgICAgICAgICAgICBnc3RfY2Fwc191
bnJlZihjYXBzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdzdFRhZ0xpc3QqIHRhZ3MgPSBn
c3RfdGFnX2xpc3RfbmV3KCk7CisgICAgdmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQo
ImljeS1uYW1lIik7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVl
KHByaXYtPmlyYWRpb05hbWUpOworICAgICAgICBwcml2LT5pcmFkaW9OYW1lID0gZ19zdHJkdXAo
dmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVCht
X3NyYyksICJpcmFkaW8tbmFtZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdT
VF9UQUdfTUVSR0VfUkVQTEFDRSwgR1NUX1RBR19PUkdBTklaQVRJT04sIHByaXYtPmlyYWRpb05h
bWUsIE5VTEwpOworICAgIH0KKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgi
aWN5LWdlbnJlIik7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVl
KHByaXYtPmlyYWRpb0dlbnJlKTsKKyAgICAgICAgcHJpdi0+aXJhZGlvR2VucmUgPSBnX3N0cmR1
cCh2YWx1ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KG1fc3JjKSwgImlyYWRpby1nZW5yZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3Ms
IEdTVF9UQUdfTUVSR0VfUkVQTEFDRSwgR1NUX1RBR19HRU5SRSwgcHJpdi0+aXJhZGlvR2VucmUs
IE5VTEwpOworICAgIH0KKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5
LXVybCIpOworICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2
LT5pcmFkaW9VcmwpOworICAgICAgICBwcml2LT5pcmFkaW9VcmwgPSBnX3N0cmR1cCh2YWx1ZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwg
ImlyYWRpby11cmwiKTsKKyAgICAgICAgZ3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01F
UkdFX1JFUExBQ0UsIEdTVF9UQUdfTE9DQVRJT04sIHByaXYtPmlyYWRpb1VybCwgTlVMTCk7Cisg
ICAgfQorICAgIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktdGl0bGUiKTsK
KyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+aXJhZGlv
VGl0bGUpOworICAgICAgICBwcml2LT5pcmFkaW9UaXRsZSA9IGdfc3RyZHVwKHZhbHVlLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMpLCAiaXJh
ZGlvLXRpdGxlIik7CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RBR19NRVJH
RV9SRVBMQUNFLCBHU1RfVEFHX1RJVExFLCBwcml2LT5pcmFkaW9UaXRsZSwgTlVMTCk7CisgICAg
fQorCisgICAgaWYgKGdzdF90YWdfbGlzdF9pc19lbXB0eSh0YWdzKSkKKyAgICAgICAgZ3N0X3Rh
Z19saXN0X2ZyZWUodGFncyk7CisgICAgZWxzZQorICAgICAgICBnc3RfZWxlbWVudF9mb3VuZF90
YWdzX2Zvcl9wYWQoR1NUX0VMRU1FTlQobV9zcmMpLCBtX3NyYy0+cHJpdi0+c3JjcGFkLCB0YWdz
KTsKK30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNl
aXZlZCkKK3sKKyAgICBXZWJraXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CisK
KyAgICBHU1RfTE9HX09CSkVDVChtX3NyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIGxlbmd0
aCk7CisKKyAgICBpZiAocHJpdi0+c2Vla0lEIHx8IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJjZUhh
bmRsZSkgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiU2VlayBpbiBwcm9ncmVz
cywgaWdub3JpbmcgZGF0YSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR3N0QnVm
ZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MobGVuZ3RoKTsKKworICAgIG1l
bWNweShHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBHU1RfQlVG
RkVSX09GRlNFVChidWZmZXIpID0gcHJpdi0+b2Zmc2V0OworICAgIHByaXYtPm9mZnNldCArPSBs
ZW5ndGg7CisgICAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7
CisKKyAgICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYt
PmFwcHNyYywgYnVmZmVyKTsKKyAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBH
U1RfRkxPV19VTkVYUEVDVEVEKQorICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgQ09S
RSwgRkFJTEVELCAoMCksICgwKSk7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKikKK3sKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3Jj
LCAiSGF2ZSBFT1MiKTsKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKG1fc3JjLT5wcml2
LT5hcHBzcmMpOworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIEdTVF9FUlJPUl9PQkpF
Q1QobV9zcmMsICJIYXZlIGZhaWx1cmU6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgUkVTT1VSQ0Us
IEZBSUxFRCwgKCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEo
KSksICgwKSk7CisgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShtX3NyYy0+cHJpdi0+YXBw
c3JjKTsKK30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6Ondhc0Jsb2NrZWQoUmVzb3VyY2VIYW5k
bGUqKQoreworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6Y2Fubm90U2hvd1VSTChSZXNvdXJj
ZUhhbmRsZSopCit7Cit9CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMmExYTgzMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5k
cm9lZ2VAY29sbGFib3JhLmNvLnVrPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKwor
I2lmbmRlZiBXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXJfaAorI2RlZmluZSBXZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXJfaAorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfU1JDICAgICAgICAg
ICAgKHdlYmtpdF93ZWJfc3JjX2dldF90eXBlICgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NSQyhv
YmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgV0VCS0lU
X1RZUEVfV0VCX1NSQywgV2Via2l0V2ViU3JjKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfQ0xB
U1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgV0VCS0lUX1RZ
UEVfV0VCX1NSQywgV2Via2l0V2ViU3JjQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NS
QyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgV0VCS0lU
X1RZUEVfV0VCX1NSQykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU1JDX0NMQVNTKGtsYXNzKSAo
R19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9TUkMpKQor
Cit0eXBlZGVmIHN0cnVjdCBfV2Via2l0V2ViU3JjICAgICAgICBXZWJraXRXZWJTcmM7Cit0eXBl
ZGVmIHN0cnVjdCBfV2Via2l0V2ViU3JjQ2xhc3MgICBXZWJraXRXZWJTcmNDbGFzczsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJraXRXZWJTcmNQcml2YXRlIFdlYmtpdFdlYlNyY1ByaXZhdGU7CisKK3N0
cnVjdCBfV2Via2l0V2ViU3JjIHsKKyAgICBHc3RCaW4gcGFyZW50OworCisgICAgV2Via2l0V2Vi
U3JjUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2Via2l0V2ViU3JjQ2xhc3MgeworICAg
IEdzdEJpbkNsYXNzIHBhcmVudENsYXNzOworfTsKKworR1R5cGUgd2Via2l0X3dlYl9zcmNfZ2V0
X3R5cGUodm9pZCk7Cit2b2lkICB3ZWJraXRfd2ViX3NyY19zZXRfZnJhbWUoV2Via2l0V2ViU3Jj
KiBzcmMsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDYwMGQ2MzUuLjIx
MjQxYTIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTcw
NCw2ICs3MDQsNyBAQCBmaQogaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIjsgdGhlbgog
ICAgUEtHX0NIRUNLX01PRFVMRVMoW0dTVFJFQU1FUl0sCiAgICAgICAgICAgICAgICAgICAgICBb
Z3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAg
ICAgICAgICAgICBnc3RyZWFtZXItYXBwLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJl
YW1lci1iYXNlLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAu
MTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMAotLSAK
MS42LjYuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48229</attachid>
            <date>2010-02-05 06:38:48 -0800</date>
            <delta_ts>2010-02-05 06:58:52 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch </desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>34657</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSAwYTkxYmE3OGUzMzA1MjkzZGE4MTNhZjZkM2I0ZDNhY2RjYjg0ZTcxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogU2F0LCAzMCBKYW4gMjAxMCAx
MTozNjo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDcgKy0KIC4uLi9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCAgIHwgICA1OSArLS0KIC4uLi9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDcyNiArKysrKysrKysrKysrKysrKysrKwogLi4uL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCAgICAgICAgfCAgIDUyICsrCiBj
b25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogNyBmaWxlcyBjaGFuZ2VkLCA4MjMgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGY4ZDA4MWQuLmFiYjcxMmUgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTMzLDYgKzMzLDE2IEBACiAKICAgICAgICAgKiBj
b25maWd1cmUuYWM6CiAKKzIwMTAtMDEtMzAgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4u
ZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgZ3N0cmVhbWVyLWFwcC0wLjEwIHRvIGNvbmZpZ3VyZS5hYwor
ICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM0MzE3CisKKyAgICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMTAtMDEtMjkgIEplcmVteSBP
cmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmYmU4Nzk2Li44MGJlMjNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMzM2MCw2ICszMzYwLDI1IEBACiAKICAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKIAorMjAxMC0wMS0zMCAgU2ViYXN0aWFuIERyw7ZnZSAgPHNl
YmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEdTdHJlYW1lciBIVFRQL0hUVFBTIHNvdXJj
ZSwgdXNpbmcgV2ViS2l0IGluZnJhc3RydWN0dXJlCisgICAgICAgIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMTcKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFQbGF5ZXJQcml2YXRl
U291cmNlQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRvR3N0SW5pdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5oOgorICAgICAgICBBZGQgYSBHU3RyZWFtZXIgSFRUUC9IVFRQUyBzb3VyY2UsIHVzaW5n
IHRoZSBXZWJLaXQgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgIFRoaXMgbWFrZXMgc3VyZSB0aGF0
IHJlZmVyZXIsIGNvb2tpZXMsIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uCisgICAgICAgIGFu
ZCBhbGwga2luZHMgb2Ygb3RoZXIgY29udGV4dCBhcmUgcGFzc2VkIHRvIEdTdHJlYW1lciBmb3Ig
d2Vic2l0ZXMKKyAgICAgICAgbGlrZSBWaW1lbyBvciBZb3VUdWJlLgorCiAyMDEwLTAxLTI5ICBN
YXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCBjb3B5aW5nIGFuIElE
TCBmaWxlIGluIHRvIHRoZSBmcmFtZXdvcmsgd3JhcHBlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDE2YzgwNTIuLmNh
ZTEzZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQpAQCAtMjQwOSwxMiArMjQwOSwxNSBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1ZpZGVvU2lua0dTdHJlYW1lci5j
cHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1ZpZGVvU2lua0dTdHJlYW1lci5o
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EYXRhU291cmNlR1N0cmVhbWVyLmNw
cCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5o
CisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5oIFwK
KwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuaAogCiB3ZWJjb3JlX2xpYmFkZCArPSBcCiAJLWxnc3RpbnRlcmZhY2VzLTAuMTAgXAog
CS1sZ3N0dmlkZW8tMC4xMCBcCi0JLWxnc3RwYnV0aWxzLTAuMTAKKwktbGdzdHBidXRpbHMtMC4x
MCBcCisJLWxnc3RhcHAtMC4xMAogCiBlbmRpZiAjIEVORCBFTkFCTEVfVklERU8KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDM3MjAyMS4uMTg2NmMzNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVy
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2lk
Z2V0LmgiCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC0xMzcsNTUgKzEzOCwxMiBAQCB2b2lk
IG1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICpvYmplY3Qs
IEdQYXJhbVNwZWMgKnBzcGVjLAogICAgIGdfb2JqZWN0X2dldChtcC0+bV9wbGF5QmluLCAic291
cmNlIiwgJmVsZW1lbnQub3V0UHRyKCksIE5VTEwpOwogICAgIGdzdF9vYmplY3RfcmVwbGFjZSgo
R3N0T2JqZWN0KiopICZtcC0+bV9zb3VyY2UsIChHc3RPYmplY3QqKSBlbGVtZW50LmdldCgpKTsK
IAotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR093blB0cjxjaGFy
PiBsb2NhdGlvbjsKLSAgICBnX29iamVjdF9nZXQoZWxlbWVudC5nZXQoKSwgImxvY2F0aW9uIiwg
JmxvY2F0aW9uLm91dFB0cigpLCBOVUxMKTsKLQotICAgIC8vIERvIGluamVjdGlvbiBvbmx5IGZv
ciBlbGVtZW50cyBkZWFsaW5nIHdpdGggdXJpcy4KLSAgICBpZiAoIWdzdF91cmlfaXNfdmFsaWQo
bG9jYXRpb24uZ2V0KCkpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKFdFQktJVF9JU19XRUJf
U1JDKGVsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3BsYXll
ci0+ZnJhbWVWaWV3KCkgPyBtcC0+bV9wbGF5ZXItPmZyYW1lVmlldygpLT5mcmFtZSgpIDogMDsK
IAotICAgIEdPd25QdHI8U291cFVSST4gdXJpKHNvdXBfdXJpX25ldyhsb2NhdGlvbi5nZXQoKSkp
OwotCi0gICAgLy8gRG8gaW5qZWN0aW9uIG9ubHkgZm9yIGh0dHAocykgdXJpcy4KLSAgICBpZiAo
IVNPVVBfVVJJX1ZBTElEX0ZPUl9IVFRQKHVyaSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCi0gICAgaWYgKGdfc3RyX2VxdWFsKHVyaS0+aG9zdCwgIm1vdmllcy5h
cHBsZS5jb20iKSkKLSAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQuZ2V0KCksICJ1c2VyLWFn
ZW50IiwgIlF1aWNrdGltZS83LjIuMCIsIE5VTEwpOwotCi0gICAgLy8gU2V0IHRoZSBIVFRQIHJl
ZmVyZXIuCi0gICAgRnJhbWUqIGZyYW1lID0gbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKSA/IG1w
LT5tX3BsYXllci0+ZnJhbWVWaWV3KCktPmZyYW1lKCkgOiAwOwotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiAwOwotICAgIGlmIChkb2N1bWVudCkg
ewotICAgICAgICBHc3RTdHJ1Y3R1cmUqIGV4dHJhSGVhZGVycyA9IGdzdF9zdHJ1Y3R1cmVfbmV3
KCJleHRyYS1oZWFkZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiUmVmZXJlciIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmRvY3Vt
ZW50VVJJKCkudXRmOCgpLmRhdGEoKSwgMCk7Ci0gICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50
LmdldCgpLCAiZXh0cmEtaGVhZGVycyIsIGV4dHJhSGVhZGVycywgTlVMTCk7Ci0gICAgICAgIGdz
dF9zdHJ1Y3R1cmVfZnJlZShleHRyYUhlYWRlcnMpOworICAgICAgICBpZiAoZnJhbWUpCisgICAg
ICAgICAgICB3ZWJLaXRXZWJTcmNTZXRGcmFtZShXRUJLSVRfV0VCX1NSQyhlbGVtZW50LmdldCgp
KSwgZnJhbWUpOwogICAgIH0KLQotICAgIC8vIERlYWwgd2l0aCB0aGUgY29va2llcyBmcm9tIG5v
dyBvbi4KLSAgICBHUGFyYW1TcGVjKiBjb29raWVzUGFyYW1TcGVjID0gZ19vYmplY3RfY2xhc3Nf
ZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1MoZWxlbWVudC5nZXQoKSksICJjb29raWVz
Iik7Ci0KLSAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGUgc291cmNlIGVsZW1lbnQgaGFzIGEgY29v
a2llcyBwcm9wZXJ0eQotICAgIC8vIG9mIHRoZSBmb3JtYXQgd2UgZXhwZWN0Ci0gICAgaWYgKCFj
b29raWVzUGFyYW1TcGVjIHx8IGNvb2tpZXNQYXJhbVNwZWMtPnZhbHVlX3R5cGUgIT0gR19UWVBF
X1NUUlYpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRoZW4gZ2V0IHRoZSBjb29raWVzIGZv
ciB0aGUgVVJJIGFuZCBzZXQgdGhlbQotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gd2Via2l0
X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKLSAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIGNvb2tpZUph
ckZlYXR1cmUgPSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX0NP
T0tJRV9KQVIpOwotICAgIGlmICghY29va2llSmFyRmVhdHVyZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgU291cENvb2tpZUphciogY29va2llSmFyID0gU09VUF9DT09LSUVfSkFSKGNvb2tpZUph
ckZlYXR1cmUpOwotICAgIEdPd25QdHI8Y2hhcj4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfZ2V0
X2Nvb2tpZXMoY29va2llSmFyLCB1cmkuZ2V0KCksIEZBTFNFKSk7Ci0gICAgY2hhciogY29va2ll
c1N0cnZbXSA9IHtjb29raWVzLmdldCgpLCAwfTsKLSAgICBnX29iamVjdF9zZXQoZWxlbWVudC5n
ZXQoKSwgImNvb2tpZXMiLCBjb29raWVzU3RydiwgTlVMTCk7CiB9CiAKIHZvaWQgbWVkaWFQbGF5
ZXJQcml2YXRlVm9sdW1lQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJhbVNw
ZWMgKnBzcGVjLCBncG9pbnRlciBkYXRhKQpAQCAtMjcwLDEyICsyMjgsMTUgQEAgc3RhdGljIGJv
b2wgZG9Hc3RJbml0KCkKICAgICBpZiAoIWdzdEluaXRpYWxpemVkKSB7CiAgICAgICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgZ3N0SW5pdGlhbGl6ZWQgPSBnc3RfaW5pdF9jaGVj
aygwLCAwLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBpZiAoIWdzdEluaXRpYWxpemVkKQor
ICAgICAgICBpZiAoIWdzdEluaXRpYWxpemVkKSB7CiAgICAgICAgICAgICBMT0dfVkVSQk9TRShN
ZWRpYSwgIkNvdWxkIG5vdCBpbml0aWFsaXplIEdTdHJlYW1lcjogJXMiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJ1bmtub3duIGVycm9yIG9jY3Vy
cmVkIik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGdzdF9l
bGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRtZWRpYXNyYyIsIEdTVF9SQU5LX1BSSU1BUlksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9EQVRBX1NSQyk7Cisg
ICAgICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0d2Vic3JjIiwgR1NUX1JB
TktfUFJJTUFSWSArIDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJ
VF9UWVBFX1dFQl9TUkMpOworICAgICAgICB9CiAKICAgICB9CiAgICAgcmV0dXJuIGdzdEluaXRp
YWxpemVkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNzcxZTFjYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSw3MjYgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9l
Z2VAY29sbGFib3JhLmNvLnVrPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgor
CisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
R1JlZlB0ci5oIgorI2luY2x1ZGUgIkdPd25QdHIuaCIKKyNpbmNsdWRlIDxnc3QvYXBwL2dzdGFw
cHNyYy5oPgorI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgorI2luY2x1
ZGUgIk5vbmNvcHlhYmxlLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJu
YWwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBTdHJlYW1pbmdD
bGllbnQgOiBwdWJsaWMgTm9uY29weWFibGUsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICBTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKik7Cisg
ICAgICAgIHZpcnR1YWwgflN0cmVhbWluZ0NsaWVudCgpOworCisgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIq
LCBpbnQsIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tl
ZChSZXNvdXJjZUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTChS
ZXNvdXJjZUhhbmRsZSopOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2ViS2l0V2ViU3JjKiBt
X3NyYzsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfR0VUX1BSSVZBVEUob2JqKSAoR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU1JDLCBXZWJL
aXRXZWJTcmNQcml2YXRlKSkKK3N0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CisgICAgR3N0
QXBwU3JjKiBhcHBzcmM7CisgICAgR3N0UGFkKiBzcmNwYWQ7CisgICAgZ2NoYXIqIHVyaTsKKwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gZnJhbWU7CisKKyAgICBTdHJlYW1pbmdDbGllbnQq
IGNsaWVudDsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IHJlc291cmNlSGFuZGxlOworCisg
ICAgZ3VpbnQ2NCBvZmZzZXQ7CisgICAgZ3VpbnQ2NCBzaXplOworICAgIGdib29sZWFuIHNlZWth
YmxlOworICAgIGdib29sZWFuIHBhdXNlZDsKKworICAgIGd1aW50NjQgcmVxdWVzdGVkT2Zmc2V0
OworCisgICAgZ3VpbnQgbmVlZERhdGFJRDsKKyAgICBndWludCBlbm91Z2hEYXRhSUQ7CisgICAg
Z3VpbnQgc2Vla0lEOworCisgICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIGdib29sZWFuIGlyYWRp
b01vZGU7CisgICAgZ2NoYXIqIGlyYWRpb05hbWU7CisgICAgZ2NoYXIqIGlyYWRpb0dlbnJlOwor
ICAgIGdjaGFyKiBpcmFkaW9Vcmw7CisgICAgZ2NoYXIqIGlyYWRpb1RpdGxlOworfTsKKworZW51
bSB7CisgICAgUFJPUF9JUkFESU9fTU9ERSA9IDEsCisgICAgUFJPUF9JUkFESU9fTkFNRSwKKyAg
ICBQUk9QX0lSQURJT19HRU5SRSwKKyAgICBQUk9QX0lSQURJT19VUkwsCisgICAgUFJPUF9JUkFE
SU9fVElUTEUKK307CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNUZW1wbGF0ZSA9
IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzcmMiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1BBRF9TUkMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHU1RfUEFEX0FMV0FZUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9TVEFUSUNfQ0FQU19BTlkpOwor
CitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtpdF93ZWJfc3JjX2RlYnVnKTsKKyNkZWZp
bmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF93ZWJfc3JjX2RlYnVnCisKK3N0YXRpYyB2b2lkIHdl
YktpdFdlYlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgaWZhY2VEYXRhKTsKKworc3Rh
dGljIHZvaWQgd2ViS2l0V2ViU3JjRmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKK3N0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElE
LCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CitzdGF0aWMgdm9pZCB3
ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0
dXJuIHdlYktpdFdlYlNyY0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRl
Q2hhbmdlIHRyYW5zaXRpb24pOworCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNi
KEdzdEFwcFNyYyogYXBwc3JjLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVzZXJEYXRhKTsKK3N0
YXRpYyB2b2lkIHdlYktpdFdlYlNyY0Vub3VnaERhdGFDYihHc3RBcHBTcmMqIGFwcHNyYywgZ3Bv
aW50ZXIgdXNlckRhdGEpOworc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NlZWtEYXRhQ2Io
R3N0QXBwU3JjKiBhcHBzcmMsIGd1aW50NjQgb2Zmc2V0LCBncG9pbnRlciB1c2VyRGF0YSk7CisK
K3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMsIGJvb2wgcmVz
ZXRSZXF1ZXN0ZWRPZmZzZXQpOworCitzdGF0aWMgR3N0QXBwU3JjQ2FsbGJhY2tzIGFwcHNyY0Nh
bGxiYWNrcyA9IHsKKyAgICB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiLAorICAgIHdlYktpdFdlYlNy
Y0Vub3VnaERhdGFDYiwKKyAgICB3ZWJLaXRXZWJTcmNTZWVrRGF0YUNiLAorICAgIHsgMCB9Cit9
OworCitzdGF0aWMgdm9pZCBfZG9Jbml0KEdUeXBlIGd0eXBlKQoreworICAgIHN0YXRpYyBjb25z
dCBHSW50ZXJmYWNlSW5mbyB1cmlIYW5kbGVySW5mbyA9IHsKKyAgICAgICAgd2ViS2l0V2ViU3Jj
VXJpSGFuZGxlckluaXQsCisgICAgICAgIDAsIDAKKyAgICB9OworCisgICAgR1NUX0RFQlVHX0NB
VEVHT1JZX0lOSVQod2Via2l0X3dlYl9zcmNfZGVidWcsICJ3ZWJraXR3ZWJzcmMiLCAwLCAid2Vi
c3JjIGVsZW1lbnQiKTsKKyAgICBnX3R5cGVfYWRkX2ludGVyZmFjZV9zdGF0aWMoZ3R5cGUsIEdT
VF9UWVBFX1VSSV9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXJp
SGFuZGxlckluZm8pOworfQorCitHU1RfQk9JTEVSUExBVEVfRlVMTChXZWJLaXRXZWJTcmMsIHdl
YmtpdF93ZWJfc3JjLCBHc3RCaW4sIEdTVF9UWVBFX0JJTiwgX2RvSW5pdCk7CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc3JjX2Jhc2VfaW5pdChncG9pbnRlciBrbGFzcykKK3sKKyAgICBHc3RF
bGVtZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKKworICAgIGdz
dF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUoZWtsYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNU
ZW1wbGF0ZSkpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9kZXRhaWxzX3NpbXBsZShla2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnY2hhciopICJX
ZWJLaXQgV2ViIHNvdXJjZSBlbGVtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGdjaGFyKikgIlNvdXJjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChnY2hhciopICJIYW5kbGVzIEhUVFAvSFRUUFMgdXJpcyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnY2hhciopICJTZWJhc3RpYW4g
RHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4iKTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9zcmNfY2xhc3NfaW5pdChXZWJLaXRXZWJTcmNDbGFzcyoga2xhc3Mp
Cit7CisgICAgR09iamVjdENsYXNzKiBva2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7Cisg
ICAgR3N0RWxlbWVudENsYXNzKiBla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyhrbGFzcyk7CisK
KyAgICBva2xhc3MtPmZpbmFsaXplID0gd2ViS2l0V2ViU3JjRmluYWxpemU7CisgICAgb2tsYXNz
LT5zZXRfcHJvcGVydHkgPSB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eTsKKyAgICBva2xhc3MtPmdl
dF9wcm9wZXJ0eSA9IHdlYktpdFdlYlNyY0dldFByb3BlcnR5OworCisgICAgLy8gaWNlY2FzdCBz
dHVmZgorICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9JUkFESU9fTU9ERSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJpcmFkaW8t
bW9kZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaXJhZGlvLW1vZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkVuYWJsZSBpbnRlcm5ldCByYWRpbyBtb2RlIChleHRy
YWN0aW9uIG9mIHNob3V0Y2FzdC9pY2VjYXN0IG1ldGFkYXRhKSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1G
bGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9JUkFESU9fTkFNRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImlyYWRpby1uYW1lIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImlyYWRpby1uYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk5hbWUgb2YgdGhlIHN0cmVhbSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1GbGFncykgKEdf
UEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworCisgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0lSQURJT19HRU5SRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImlyYWRpby1nZW5yZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcmFkaW8t
Z2VucmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiR2VucmUgb2YgdGhlIHN0cmVhbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1f
UkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfSVJBRElPX1VSTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImlyYWRpby11cmwiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXJhZGlvLXVybCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb21l
cGFnZSBVUkwgZm9yIHJhZGlvIHN0cmVhbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVB
REFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0lSQURJT19USVRMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImlyYWRpby10aXRsZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcmFkaW8tdGl0bGUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
TmFtZSBvZiBjdXJyZW50bHkgcGxheWluZyBzb25nIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJB
TV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisKKyAgICBla2xhc3MtPmNo
YW5nZV9zdGF0ZSA9IHdlYktpdFdlYlNyY0NoYW5nZVN0YXRlOworCisgICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViU3JjUHJpdmF0ZSkpOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19pbml0KFdlYktpdFdlYlNyYyogc3JjLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJTcmNDbGFzcyogZ0tsYXNzKQorewor
ICAgIEdzdFBhZFRlbXBsYXRlKiBwYWRUZW1wbGF0ZSA9IGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRl
X2dldCgmc3JjVGVtcGxhdGUpOworICAgIEdzdFBhZCogdGFyZ2V0cGFkOworICAgIFdlYktpdFdl
YlNyY1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1NSQ19HRVRfUFJJVkFURShzcmMpOworCisg
ICAgc3JjLT5wcml2ID0gcHJpdjsKKworICAgIHByaXYtPmNsaWVudCA9IG5ldyBTdHJlYW1pbmdD
bGllbnQoc3JjKTsKKworICAgIHByaXYtPnNyY3BhZCA9IGdzdF9naG9zdF9wYWRfbmV3X25vX3Rh
cmdldF9mcm9tX3RlbXBsYXRlKCJzcmMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZFRlbXBsYXRlKTsKKworICAgIGdzdF9l
bGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlQoc3JjKSwgcHJpdi0+c3JjcGFkKTsKKworICAgIHBy
aXYtPmFwcHNyYyA9IEdTVF9BUFBfU1JDKGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXBwc3Jj
IiwgMCkpOworICAgIGlmICghcHJpdi0+YXBwc3JjKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpF
Q1Qoc3JjLCAiRmFpbGVkIHRvIGNyZWF0ZSBhcHBzcmMiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGdzdF9iaW5fYWRkKEdTVF9CSU4oc3JjKSwgR1NUX0VMRU1FTlQocHJpdi0+YXBw
c3JjKSk7CisKKyAgICB0YXJnZXRwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChHU1Rf
RUxFTUVOVChwcml2LT5hcHBzcmMpLCAic3JjIik7CisgICAgZ3N0X2dob3N0X3BhZF9zZXRfdGFy
Z2V0KEdTVF9HSE9TVF9QQUQocHJpdi0+c3JjcGFkKSwgdGFyZ2V0cGFkKTsKKyAgICBnc3Rfb2Jq
ZWN0X3VucmVmKHRhcmdldHBhZCk7CisKKyAgICBnc3RfYXBwX3NyY19zZXRfY2FsbGJhY2tzKHBy
aXYtPmFwcHNyYywgJmFwcHNyY0NhbGxiYWNrcywgc3JjLCAwKTsKKyAgICBnc3RfYXBwX3NyY19z
ZXRfZW1pdF9zaWduYWxzKHByaXYtPmFwcHNyYywgRkFMU0UpOworICAgIGdzdF9hcHBfc3JjX3Nl
dF9zdHJlYW1fdHlwZShwcml2LT5hcHBzcmMsIEdTVF9BUFBfU1RSRUFNX1RZUEVfU0VFS0FCTEUp
OworCisgICAgLy8gNTEyayBpcyBhIGFiaXRyYXJ5IG51bWJlciBidXQgd2Ugc2hvdWxkIGNob29z
ZSBhIHZhbHVlCisgICAgLy8gaGVyZSB0byBub3QgcGF1c2UvdW5wYXVzZSB0aGUgU291cE1lc3Nh
Z2UgdG8gb2Z0ZW4gYW5kCisgICAgLy8gdG8gbWFrZSBzdXJlIHRoZXJlJ3MgYWx3YXlzIHNvbWUg
ZGF0YSBhdmFpbGFibGUgZm9yCisgICAgLy8gR1N0cmVhbWVyIHRvIGhhbmRsZQorICAgIGdzdF9h
cHBfc3JjX3NldF9tYXhfYnl0ZXMocHJpdi0+YXBwc3JjLCA1MTIgKiAxMDI0KTsKKworICAgIHdl
YktpdFdlYlNyY1N0b3Aoc3JjLCB0cnVlKTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0V2ViU3Jj
RmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VC
S0lUX1dFQl9TUkMob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3Jj
LT5wcml2OworCisgICAgZGVsZXRlIHByaXYtPmNsaWVudDsKKworICAgIGdfZnJlZShwcml2LT51
cmkpOworCisgICAgR1NUX0NBTExfUEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKChH
T2JqZWN0KiApKHNyYykpKTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9T
UkMob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2Owor
CisgICAgc3dpdGNoIChwcm9wSUQpIHsKKyAgICBjYXNlIFBST1BfSVJBRElPX01PREU6CisgICAg
ICAgIHByaXYtPmlyYWRpb01vZGUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAg
IFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMob2JqZWN0KTsKKyAgICBXZWJLaXRX
ZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgc3dpdGNoIChwcm9wSUQpIHsK
KyAgICBjYXNlIFBST1BfSVJBRElPX01PREU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4o
dmFsdWUsIHByaXYtPmlyYWRpb01vZGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
SVJBRElPX05BTUU6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgcHJpdi0+aXJh
ZGlvTmFtZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JUkFESU9fR0VOUkU6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgcHJpdi0+aXJhZGlvR2VucmUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSVJBRElPX1VSTDoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5pcmFkaW9VcmwpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfSVJBRElPX1RJVExFOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUs
IHByaXYtPmlyYWRpb1RpdGxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3Bl
Yyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJT
cmNTdG9wKFdlYktpdFdlYlNyYyogc3JjLCBib29sIHJlc2V0UmVxdWVzdGVkT2Zmc2V0KQorewor
ICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBpZiAocHJp
di0+cmVzb3VyY2VIYW5kbGUpIHsKKyAgICAgICAgcHJpdi0+cmVzb3VyY2VIYW5kbGUtPmNhbmNl
bCgpOworICAgICAgICBwcml2LT5yZXNvdXJjZUhhbmRsZS5yZWxlYXNlKCk7CisgICAgfQorICAg
IHByaXYtPnJlc291cmNlSGFuZGxlID0gMDsKKworICAgIGlmIChwcml2LT5mcmFtZSkKKyAgICAg
ICAgcHJpdi0+ZnJhbWUucmVsZWFzZSgpOworCisgICAgaWYgKHByaXYtPm5lZWREYXRhSUQpCisg
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5uZWVkRGF0YUlEKTsKKyAgICBwcml2LT5uZWVk
RGF0YUlEID0gMDsKKworICAgIGlmIChwcml2LT5lbm91Z2hEYXRhSUQpCisgICAgICAgIGdfc291
cmNlX3JlbW92ZShwcml2LT5lbm91Z2hEYXRhSUQpOworICAgIHByaXYtPmVub3VnaERhdGFJRCA9
IDA7CisKKyAgICBpZiAocHJpdi0+c2Vla0lEKQorICAgICAgICBnX3NvdXJjZV9yZW1vdmUocHJp
di0+c2Vla0lEKTsKKyAgICBwcml2LT5zZWVrSUQgPSAwOworCisgICAgcHJpdi0+cGF1c2VkID0g
RkFMU0U7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvTmFtZSk7CisgICAgcHJpdi0+aXJhZGlv
TmFtZSA9IDA7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvR2VucmUpOworICAgIHByaXYtPmly
YWRpb0dlbnJlID0gMDsKKworICAgIGdfZnJlZShwcml2LT5pcmFkaW9VcmwpOworICAgIHByaXYt
PmlyYWRpb1VybCA9IDA7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvVGl0bGUpOworICAgIHBy
aXYtPmlyYWRpb1RpdGxlID0gMDsKKworICAgIGlmIChwcml2LT5hcHBzcmMpCisgICAgICAgIGdz
dF9hcHBfc3JjX3NldF9jYXBzKHByaXYtPmFwcHNyYywgMCk7CisKKyAgICBwcml2LT5vZmZzZXQg
PSAwOworICAgIHByaXYtPnNpemUgPSAwOworICAgIHByaXYtPnNlZWthYmxlID0gRkFMU0U7CisK
KyAgICBpZiAocmVzZXRSZXF1ZXN0ZWRPZmZzZXQpCisgICAgICAgIHByaXYtPnJlcXVlc3RlZE9m
ZnNldCA9IDA7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgcmVxdWVzdCIp
OworfQorCitzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykK
K3sKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgaWYg
KCFwcml2LT51cmkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJObyBVUkkgcHJv
dmlkZWQiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBLVVJMIHVy
bCA9IEtVUkwoS1VSTCgpLCBwcml2LT51cmkpOworCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QodXJsKTsKKyAgICByZXF1ZXN0LnNldFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
VGFyZ2V0SXNNZWRpYSk7CisgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CisKKyAg
ICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25vdyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBu
aWNlIG1vdmllIHRyYWlsZXJzLgorICAgIGlmICghZ19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMu
YXBwbGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAgcmVxdWVzdC5z
ZXRIVFRQVXNlckFnZW50KCJRdWlja3RpbWUvNy4yLjAiKTsKKworICAgIGlmIChwcml2LT5mcmFt
ZSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwcml2LT5mcmFtZS0+ZG9jdW1lbnQo
KTsKKyAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVm
ZXJyZXIoZG9jdW1lbnQtPmRvY3VtZW50VVJJKCkpOworCisgICAgICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIgPSBwcml2LT5mcmFtZS0+bG9hZGVyKCk7CisgICAgICAgIGlmIChsb2FkZXIpCisgICAg
ICAgICAgICBsb2FkZXItPmFkZEV4dHJhRmllbGRzVG9TdWJyZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCk7CisgICAgfQorCisgICAgaWYgKHByaXYtPnJlcXVlc3RlZE9mZnNldCkgeworICAgICAgICBH
T3duUHRyPGdjaGFyPiB2YWw7CisKKyAgICAgICAgdmFsLnNldChnX3N0cmR1cF9wcmludGYoImJ5
dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIi0iLCBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlJhbmdlIiwgdmFsLmdldCgpKTsKKyAg
ICB9CisKKyAgICBpZiAocHJpdi0+aXJhZGlvTW9kZSkKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoImljeS1tZXRhZGF0YSIsICIxIik7CisKKyAgICAvLyBOZWVkZWQgdG8gdXNl
IERMTkEgc3RyZWFtaW5nIHNlcnZlcnMKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgi
dHJhbnNmZXJNb2RlLmRsbmEiLCAiU3RyZWFtaW5nIik7CisKKyAgICBwcml2LT5yZXNvdXJjZUhh
bmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUocmVxdWVzdCwgcHJpdi0+Y2xpZW50LCAwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICBpZiAoIXByaXYtPnJlc291cmNlSGFuZGxlKSB7Cisg
ICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiRmFpbGVkIHRvIGNyZWF0ZSBSZXNvdXJjZUhh
bmRsZSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJTdGFydGVkIHJlcXVlc3QiKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitz
dGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViU3JjQ2hhbmdlU3RhdGUoR3N0RWxl
bWVudCogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKK3sKKyAgICBHc3RTdGF0
ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7CisgICAgV2ViS2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhlbGVtZW50KTsKKyAgICBXZWJLaXRXZWJTcmNQ
cml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Cisg
ICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6CisgICAgICAgIGlmICghcHJp
di0+YXBwc3JjKSB7CisgICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoZWxlbWVu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3RfbWlzc2luZ19lbGVt
ZW50X21lc3NhZ2VfbmV3KGVsZW1lbnQsICJhcHBzcmMiKSk7CisgICAgICAgICAgICBHU1RfRUxF
TUVOVF9FUlJPUihzcmMsIENPUkUsIE1JU1NJTkdfUExVR0lOLCAoMCksICgibm8gYXBwc3JjIikp
OworICAgICAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICByZXQgPSBHU1RfRUxFTUVOVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUo
ZWxlbWVudCwgdHJhbnNpdGlvbik7CisgICAgaWYgKEdfVU5MSUtFTFkocmV0ID09IEdTVF9TVEFU
RV9DSEFOR0VfRkFJTFVSRSkpIHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdGF0
ZSBjaGFuZ2UgZmFpbGVkIik7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgc3dp
dGNoICh0cmFuc2l0aW9uKSB7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BB
VVNFRDoKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJSRUFEWS0+UEFVU0VEIik7Cisg
ICAgICAgIGlmICghd2ViS2l0V2ViU3JjU3RhcnQoc3JjKSkKKyAgICAgICAgICAgIHJldCA9IEdT
VF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RB
VEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMs
ICJQQVVTRUQtPlJFQURZIik7CisgICAgICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjLCB0cnVlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgcmV0dXJuIHJldDsKK30KKworLy8gdXJpIGhhbmRsZXIgaW50ZXJmYWNlCisKK3N0YXRpYyBH
c3RVUklUeXBlIHdlYktpdFdlYlNyY1VyaUdldFR5cGUodm9pZCkKK3sKKyAgICByZXR1cm4gR1NU
X1VSSV9TUkM7Cit9CisKK3N0YXRpYyBnY2hhcioqIHdlYktpdFdlYlNyY0dldFByb3RvY29scyh2
b2lkKQoreworICAgIHN0YXRpYyBnY2hhciogcHJvdG9jb2xzW10gPSB7KGdjaGFyKikgImh0dHAi
LCAoZ2NoYXIqKSAiaHR0cHMiLCAwIH07CisKKyAgICByZXR1cm4gcHJvdG9jb2xzOworfQorCitz
dGF0aWMgY29uc3QgZ2NoYXIqIHdlYktpdFdlYlNyY0dldFVyaShHc3RVUklIYW5kbGVyKiBoYW5k
bGVyKQoreworICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoaGFuZGxlcik7
CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIHJldHVy
biBwcml2LT51cmk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTZXRVcmkoR3N0
VVJJSGFuZGxlciogaGFuZGxlciwgY29uc3QgZ2NoYXIqIHVyaSkKK3sKKyAgICBXZWJLaXRXZWJT
cmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGhhbmRsZXIpOworICAgIFdlYktpdFdlYlNyY1ByaXZh
dGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBpZiAoR1NUX1NUQVRFKHNyYykgPj0gR1NUX1NU
QVRFX1BBVVNFRCkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIlVSSSBjYW4gb25s
eSBiZSBzZXQgaW4gc3RhdGVzIDwgUEFVU0VEIik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAg
ICB9CisKKyAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKyAgICBwcml2LT51cmkgPSAwOworCisgICAg
aWYgKCF1cmkpCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgU291cFVSSSogc291cFVyaSA9
IHNvdXBfdXJpX25ldyh1cmkpOworCisgICAgaWYgKCFzb3VwVXJpIHx8ICFTT1VQX1VSSV9WQUxJ
RF9GT1JfSFRUUChzb3VwVXJpKSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIklu
dmFsaWQgVVJJICclcyciLCB1cmkpOworICAgICAgICBzb3VwX3VyaV9mcmVlKHNvdXBVcmkpOwor
ICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgcHJpdi0+dXJpID0gc291cF91cmlf
dG9fc3RyaW5nKHNvdXBVcmksIEZBTFNFKTsKKyAgICBzb3VwX3VyaV9mcmVlKHNvdXBVcmkpOwor
CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1VyaUhhbmRs
ZXJJbml0KGdwb2ludGVyIGdJZmFjZSwgZ3BvaW50ZXIgaWZhY2VEYXRhKQoreworICAgIEdzdFVS
SUhhbmRsZXJJbnRlcmZhY2UqIGlmYWNlID0gKEdzdFVSSUhhbmRsZXJJbnRlcmZhY2UgKikgZ0lm
YWNlOworCisgICAgaWZhY2UtPmdldF90eXBlID0gd2ViS2l0V2ViU3JjVXJpR2V0VHlwZTsKKyAg
ICBpZmFjZS0+Z2V0X3Byb3RvY29scyA9IHdlYktpdFdlYlNyY0dldFByb3RvY29sczsKKyAgICBp
ZmFjZS0+Z2V0X3VyaSA9IHdlYktpdFdlYlNyY0dldFVyaTsKKyAgICBpZmFjZS0+c2V0X3VyaSA9
IHdlYktpdFdlYlNyY1NldFVyaTsKK30KKworLy8gYXBwc3JjIGNhbGxiYWNrcworCitzdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0V2ViU3JjTmVlZERhdGFNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCit7
CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIFJlc291
cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBwcml2LT5yZXNvdXJjZUhhbmRsZS0+Z2V0SW50ZXJuYWwo
KTsKKyAgICBpZiAoZC0+bV9tc2cpCisgICAgICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3Nh
Z2UoUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIGQtPm1fbXNnKTsKKworICAgIHBy
aXYtPnBhdXNlZCA9IEZBTFNFOworICAgIHByaXYtPm5lZWREYXRhSUQgPSAwOworICAgIHJldHVy
biBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTmVlZERhdGFDYihHc3RBcHBT
cmMqIGFwcHNyYywgZ3VpbnQgbGVuZ3RoLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBXZWJL
aXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKHVzZXJEYXRhKTsKKyAgICBXZWJLaXRXZWJT
cmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMs
ICJOZWVkIG1vcmUgZGF0YTogJXUiLCBsZW5ndGgpOworICAgIGlmIChwcml2LT5uZWVkRGF0YUlE
IHx8ICFwcml2LT5wYXVzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPm5lZWREYXRh
SUQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ISUdILCAwLCAoR1NvdXJjZUZ1bmMp
IHdlYktpdFdlYlNyY05lZWREYXRhTWFpbkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ry
b3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
V2ViU3JjRW5vdWdoRGF0YU1haW5DYihXZWJLaXRXZWJTcmMqIHNyYykKK3sKKyAgICBXZWJLaXRX
ZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IHByaXYtPnJlc291cmNlSGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIHNvdXBf
c2Vzc2lvbl9wYXVzZV9tZXNzYWdlKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBk
LT5tX21zZyk7CisgICAgCisgICAgcHJpdi0+cGF1c2VkID0gVFJVRTsKKyAgICBwcml2LT5lbm91
Z2hEYXRhSUQgPSAwOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0
V2ViU3JjRW5vdWdoRGF0YUNiKEdzdEFwcFNyYyogYXBwc3JjLCBncG9pbnRlciB1c2VyRGF0YSkK
K3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKHVzZXJEYXRhKTsKKyAg
ICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJIYXZlIGVub3VnaCBkYXRhIik7CisgICAgaWYgKHByaXYtPmVub3VnaERh
dGFJRCB8fCBwcml2LT5wYXVzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPmVub3Vn
aERhdGFJRCA9IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0hJR0gsIDAsIChHU291cmNl
RnVuYykgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YU1haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwg
KEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKK30KKworc3RhdGljIGdib29sZWFu
IHdlYktpdFdlYlNyY1NlZWtNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCit7CisgICAgd2ViS2l0
V2ViU3JjU3RvcChzcmMsIGZhbHNlKTsKKyAgICB3ZWJLaXRXZWJTcmNTdGFydChzcmMpOworCisg
ICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU2Vla0Rh
dGFDYihHc3RBcHBTcmMqIGFwcHNyYywgZ3VpbnQ2NCBvZmZzZXQsIGdwb2ludGVyIHVzZXJEYXRh
KQoreworICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkModXNlckRhdGEpOwor
ICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBHU1RfREVC
VUdfT0JKRUNUKHNyYywgIlNlZWtpbmcgdG8gb2Zmc2V0OiAlIiBHX0dVSU5UNjRfRk9STUFULCBv
ZmZzZXQpOworICAgIGlmIChvZmZzZXQgPT0gcHJpdi0+b2Zmc2V0KQorICAgICAgICByZXR1cm4g
VFJVRTsKKworICAgIGlmICghcHJpdi0+c2Vla2FibGUpCisgICAgICAgIHJldHVybiBGQUxTRTsK
KyAgICBpZiAob2Zmc2V0ID4gcHJpdi0+c2l6ZSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisg
ICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJEb2luZyByYW5nZS1yZXF1ZXN0IHNlZWsiKTsKKyAg
ICBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKHByaXYtPnNlZWtJRCkK
KyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPnNlZWtJRCk7CisgICAgcHJpdi0+c2Vla0lE
ID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwgMCwgKEdTb3VyY2VGdW5jKSB3
ZWJLaXRXZWJTcmNTZWVrTWFpbkNiLCBnc3Rfb2JqZWN0X3JlZihzcmMpLCAoR0Rlc3Ryb3lOb3Rp
ZnkpIGdzdF9vYmplY3RfdW5yZWYpOworICAgIAorICAgIHJldHVybiBUUlVFOworfQorCit2b2lk
IHdlYktpdFdlYlNyY1NldEZyYW1lKFdlYktpdFdlYlNyYyogc3JjLCBXZWJDb3JlOjpGcmFtZSog
ZnJhbWUpCit7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKwor
ICAgIHByaXYtPmZyYW1lID0gZnJhbWU7Cit9CisKK1N0cmVhbWluZ0NsaWVudDo6U3RyZWFtaW5n
Q2xpZW50KFdlYktpdFdlYlNyYyogc3JjKSA6IG1fc3JjKHNyYykKK3sKKworfQorCitTdHJlYW1p
bmdDbGllbnQ6On5TdHJlYW1pbmdDbGllbnQoKQoreworCit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xp
ZW50Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3sKK30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQoreworICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBtX3NyYy0+cHJp
djsKKworICAgIEdTVF9ERUJVR19PQkpFQ1QobV9zcmMsICJSZWNlaXZlZCByZXNwb25zZTogJWQi
LCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKKworICAgIC8vIElmIHdlIHNlZWtlZCB3ZSBu
ZWVkIDIwNiA9PSBQQVJUSUFMX0NPTlRFTlQKKyAgICBpZiAocHJpdi0+cmVxdWVzdGVkT2Zmc2V0
ICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgIT0gMjA2KSB7CisgICAgICAgIEdTVF9FTEVN
RU5UX0VSUk9SKG1fc3JjLCBSRVNPVVJDRSwgUkVBRCwgKDApLCAoMCkpOworICAgICAgICB3ZWJL
aXRXZWJTcmNTdG9wKG1fc3JjLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGxvbmcgbG9uZyBsZW5ndGggPSByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKyAg
ICBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICBsZW5ndGggKz0gcHJpdi0+cmVxdWVzdGVkT2Zm
c2V0OworICAgICAgICBnc3RfYXBwX3NyY19zZXRfc2l6ZShwcml2LT5hcHBzcmMsIGxlbmd0aCk7
CisgICAgfQorCisgICAgcHJpdi0+c2l6ZSA9IGxlbmd0aCA+PSAwID8gbGVuZ3RoIDogMDsKKyAg
ICBwcml2LT5zZWVrYWJsZSA9IGxlbmd0aCA+IDAgJiYgZ19hc2NpaV9zdHJjYXNlY21wKCJub25l
IiwgcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJBY2NlcHQtUmFuZ2VzIikudXRmOCgpLmRhdGEo
KSk7CisKKyAgICAvLyBpY2VjYXN0IHN0dWZmCisgICAgU3RyaW5nIHZhbHVlID0gcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkKCJpY3ktbWV0YWludCIpOworICAgIGlmICghdmFsdWUuaXNFbXB0eSgp
KSB7CisgICAgICAgIGdjaGFyKiBlbmRwdHIgPSAwOworICAgICAgICBnaW50NjQgaWN5TWV0YUlu
dCA9IGdfYXNjaWlfc3RydG9sbCh2YWx1ZS51dGY4KCkuZGF0YSgpLCAmZW5kcHRyLCAxMCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgaWYgKGVuZHB0ciAmJiAqZW5kcHRyID09ICdcMCcgJiYgaWN5
TWV0YUludCA+IDApIHsKKyAgICAgICAgICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfY2Fwc19uZXdf
c2ltcGxlKCJhcHBsaWNhdGlvbi94LWljeSIsICJtZXRhZGF0YS1pbnRlcnZhbCIsIEdfVFlQRV9J
TlQsIChnaW50KSBpY3lNZXRhSW50LCBOVUxMKTsKKworICAgICAgICAgICAgZ3N0X2FwcF9zcmNf
c2V0X2NhcHMocHJpdi0+YXBwc3JjLCBjYXBzKTsKKyAgICAgICAgICAgIGdzdF9jYXBzX3VucmVm
KGNhcHMpOworICAgICAgICB9CisgICAgfQorCisgICAgR3N0VGFnTGlzdCogdGFncyA9IGdzdF90
YWdfbGlzdF9uZXcoKTsKKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5
LW5hbWUiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJp
di0+aXJhZGlvTmFtZSk7CisgICAgICAgIHByaXYtPmlyYWRpb05hbWUgPSBnX3N0cmR1cCh2YWx1
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3Jj
KSwgImlyYWRpby1uYW1lIik7CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RB
R19NRVJHRV9SRVBMQUNFLCBHU1RfVEFHX09SR0FOSVpBVElPTiwgcHJpdi0+aXJhZGlvTmFtZSwg
TlVMTCk7CisgICAgfQorICAgIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3kt
Z2VucmUiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJp
di0+aXJhZGlvR2VucmUpOworICAgICAgICBwcml2LT5pcmFkaW9HZW5yZSA9IGdfc3RyZHVwKHZh
bHVlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9z
cmMpLCAiaXJhZGlvLWdlbnJlIik7CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NU
X1RBR19NRVJHRV9SRVBMQUNFLCBHU1RfVEFHX0dFTlJFLCBwcml2LT5pcmFkaW9HZW5yZSwgTlVM
TCk7CisgICAgfQorICAgIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktdXJs
Iik7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYtPmly
YWRpb1VybCk7CisgICAgICAgIHByaXYtPmlyYWRpb1VybCA9IGdfc3RyZHVwKHZhbHVlLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMpLCAiaXJh
ZGlvLXVybCIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdfTUVSR0Vf
UkVQTEFDRSwgR1NUX1RBR19MT0NBVElPTiwgcHJpdi0+aXJhZGlvVXJsLCBOVUxMKTsKKyAgICB9
CisgICAgdmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImljeS10aXRsZSIpOworICAg
IGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2LT5pcmFkaW9UaXRs
ZSk7CisgICAgICAgIHByaXYtPmlyYWRpb1RpdGxlID0gZ19zdHJkdXAodmFsdWUudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX3NyYyksICJpcmFkaW8t
dGl0bGUiKTsKKyAgICAgICAgZ3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01FUkdFX1JF
UExBQ0UsIEdTVF9UQUdfVElUTEUsIHByaXYtPmlyYWRpb1RpdGxlLCBOVUxMKTsKKyAgICB9CisK
KyAgICBpZiAoZ3N0X3RhZ19saXN0X2lzX2VtcHR5KHRhZ3MpKQorICAgICAgICBnc3RfdGFnX2xp
c3RfZnJlZSh0YWdzKTsKKyAgICBlbHNlCisgICAgICAgIGdzdF9lbGVtZW50X2ZvdW5kX3RhZ3Nf
Zm9yX3BhZChHU1RfRUxFTUVOVChtX3NyYyksIG1fc3JjLT5wcml2LT5zcmNwYWQsIHRhZ3MpOwor
fQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGxlbmd0aFJlY2VpdmVk
KQoreworICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBtX3NyYy0+cHJpdjsKKworICAg
IEdTVF9MT0dfT0JKRUNUKG1fc3JjLCAiSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbGVuZ3RoKTsK
KworICAgIGlmIChwcml2LT5zZWVrSUQgfHwgaGFuZGxlICE9IHByaXYtPnJlc291cmNlSGFuZGxl
KSB7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QobV9zcmMsICJTZWVrIGluIHByb2dyZXNzLCBp
Z25vcmluZyBkYXRhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHc3RCdWZmZXIq
IGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOworCisgICAgbWVtY3B5
KEdTVF9CVUZGRVJfREFUQShidWZmZXIpLCBkYXRhLCBsZW5ndGgpOworICAgIEdTVF9CVUZGRVJf
T0ZGU0VUKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CisgICAgcHJpdi0+b2Zmc2V0ICs9IGxlbmd0
aDsKKyAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQoYnVmZmVyKSA9IHByaXYtPm9mZnNldDsKKwor
ICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBw
c3JjLCBidWZmZXIpOworICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0sgJiYgcmV0ICE9IEdTVF9G
TE9XX1VORVhQRUNURUQpCisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1fc3JjLCBDT1JFLCBG
QUlMRUQsICgwKSwgKDApKTsKK30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VIYW5kbGUqKQoreworICAgIEdTVF9ERUJVR19PQkpFQ1QobV9zcmMsICJI
YXZlIEVPUyIpOworICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9zdHJlYW0obV9zcmMtPnByaXYtPmFw
cHNyYyk7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRGYWlsKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgR1NUX0VSUk9SX09CSkVDVCht
X3NyYywgIkhhdmUgZmFpbHVyZTogJXMiLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0
ZjgoKS5kYXRhKCkpOworICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1fc3JjLCBSRVNPVVJDRSwgRkFJ
TEVELCAoIiVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSwg
KDApKTsKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKG1fc3JjLT5wcml2LT5hcHBzcmMp
OworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSop
Cit7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpjYW5ub3RTaG93VVJMKFJlc291cmNlSGFu
ZGxlKikKK3sKK30KKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wNDVlN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2Vn
ZUBjb2xsYWJvcmEuY28udWs+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZu
ZGVmIFdlYktpdFdlYlNvdXJjZUdTdHJlYW1lcl9oCisjZGVmaW5lIFdlYktpdFdlYlNvdXJjZUdT
dHJlYW1lcl9oCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgPGdzdC9nc3QuaD4KKwor
R19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9TUkMgICAgICAgICAgICAo
d2Via2l0X3dlYl9zcmNfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfU1JDKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBXRUJLSVRfVFlQ
RV9XRUJfU1JDLCBXZWJLaXRXZWJTcmMpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NSQ19DTEFTUyhr
bGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9X
RUJfU1JDLCBXZWJLaXRXZWJTcmNDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU1JDKG9i
aikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBXRUJLSVRfVFlQ
RV9XRUJfU1JDKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9TUkNfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfV0VCX1NSQykpCisKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTcmMgICAgICAgIFdlYktpdFdlYlNyYzsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJTcmNDbGFzcyAgIFdlYktpdFdlYlNyY0NsYXNzOwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYlNyY1ByaXZhdGUgV2ViS2l0V2ViU3JjUHJpdmF0ZTsKKworc3RydWN0
IF9XZWJLaXRXZWJTcmMgeworICAgIEdzdEJpbiBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJTcmNQ
cml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJTcmNDbGFzcyB7CisgICAgR3N0
QmluQ2xhc3MgcGFyZW50Q2xhc3M7Cit9OworCitHVHlwZSB3ZWJraXRfd2ViX3NyY19nZXRfdHlw
ZSh2b2lkKTsKK3ZvaWQgIHdlYktpdFdlYlNyY1NldEZyYW1lKFdlYktpdFdlYlNyYyogc3JjLCBX
ZWJDb3JlOjpGcmFtZSogZnJhbWUpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdp
dCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA2MDBkNjM1Li4yMTI0MWEyIDEw
MDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC03MDQsNiArNzA0
LDcgQEAgZmkKIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KICAgIFBLR19D
SEVDS19NT0RVTEVTKFtHU1RSRUFNRVJdLAogICAgICAgICAgICAgICAgICAgICAgW2dzdHJlYW1l
ci0wLjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTgorICAgICAgICAgICAgICAgICAg
ICAgZ3N0cmVhbWVyLWFwcC0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYmFz
ZS0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItcGJ1dGlscy0wLjEwCiAgICAg
ICAgICAgICAgICAgICAgICBnc3RyZWFtZXItcGx1Z2lucy1iYXNlLTAuMTAKLS0gCjEuNi42LjEK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48231</attachid>
            <date>2010-02-05 06:58:52 -0800</date>
            <delta_ts>2010-02-05 09:13:22 -0800</delta_ts>
            <desc>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</desc>
            <filename>0001-Add-webkitwebsrc-a-GStreamer-HTTP-HTTPS-source-using.patch</filename>
            <type>text/plain</type>
            <size>34655</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSA1NmExNzMxZDFkNzJlNWI0YjJlYzBlMzE5Y2Q5NzAwMTA4MGNmMWM1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KRGF0ZTogU2F0LCAzMCBKYW4gMjAxMCAx
MTozNjo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCB3ZWJraXR3ZWJzcmMsIGEgR1N0cmVh
bWVyIEhUVFAvSFRUUFMgc291cmNlIHVzaW5nIFdlYktpdCdzIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1
cmUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDcgKy0KIC4uLi9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCAgIHwgICA1OSArLS0KIC4uLi9ncmFwaGljcy9ndGsvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCAgICAgIHwgIDcyNiArKysrKysrKysrKysrKysrKysrKwogLi4uL2dy
YXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCAgICAgICAgfCAgIDUyICsrCiBj
b25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogNyBmaWxlcyBjaGFuZ2VkLCA4MjMgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCgpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGY4ZDA4MWQuLmFiYjcxMmUgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTMzLDYgKzMzLDE2IEBACiAKICAgICAgICAgKiBj
b25maWd1cmUuYWM6CiAKKzIwMTAtMDEtMzAgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW4u
ZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgZ3N0cmVhbWVyLWFwcC0wLjEwIHRvIGNvbmZpZ3VyZS5hYwor
ICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM0MzE3CisKKyAgICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMTAtMDEtMjkgIEplcmVteSBP
cmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmYmU4Nzk2Li44MGJlMjNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMzM2MCw2ICszMzYwLDI1IEBACiAKICAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKIAorMjAxMC0wMS0zMCAgU2ViYXN0aWFuIERyw7ZnZSAgPHNl
YmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEdTdHJlYW1lciBIVFRQL0hUVFBTIHNvdXJj
ZSwgdXNpbmcgV2ViS2l0IGluZnJhc3RydWN0dXJlCisgICAgICAgIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMTcKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFQbGF5ZXJQcml2YXRl
U291cmNlQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRvR3N0SW5pdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5oOgorICAgICAgICBBZGQgYSBHU3RyZWFtZXIgSFRUUC9IVFRQUyBzb3VyY2UsIHVzaW5n
IHRoZSBXZWJLaXQgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgIFRoaXMgbWFrZXMgc3VyZSB0aGF0
IHJlZmVyZXIsIGNvb2tpZXMsIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uCisgICAgICAgIGFu
ZCBhbGwga2luZHMgb2Ygb3RoZXIgY29udGV4dCBhcmUgcGFzc2VkIHRvIEdTdHJlYW1lciBmb3Ig
d2Vic2l0ZXMKKyAgICAgICAgbGlrZSBWaW1lbyBvciBZb3VUdWJlLgorCiAyMDEwLTAxLTI5ICBN
YXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCBjb3B5aW5nIGFuIElE
TCBmaWxlIGluIHRvIHRoZSBmcmFtZXdvcmsgd3JhcHBlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDE2YzgwNTIuLmNh
ZTEzZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQpAQCAtMjQwOSwxMiArMjQwOSwxNSBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1ZpZGVvU2lua0dTdHJlYW1lci5j
cHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1ZpZGVvU2lua0dTdHJlYW1lci5o
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9EYXRhU291cmNlR1N0cmVhbWVyLmNw
cCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5o
CisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGF0YVNvdXJjZUdTdHJlYW1lci5oIFwK
KwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuaAogCiB3ZWJjb3JlX2xpYmFkZCArPSBcCiAJLWxnc3RpbnRlcmZhY2VzLTAuMTAgXAog
CS1sZ3N0dmlkZW8tMC4xMCBcCi0JLWxnc3RwYnV0aWxzLTAuMTAKKwktbGdzdHBidXRpbHMtMC4x
MCBcCisJLWxnc3RhcHAtMC4xMAogCiBlbmRpZiAjIEVORCBFTkFCTEVfVklERU8KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDM3MjAyMS4uMTg2NmMzNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVmlkZW9TaW5rR1N0cmVhbWVy
LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiV2lk
Z2V0LmgiCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CkBAIC0xMzcsNTUgKzEzOCwxMiBAQCB2b2lk
IG1lZGlhUGxheWVyUHJpdmF0ZVNvdXJjZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICpvYmplY3Qs
IEdQYXJhbVNwZWMgKnBzcGVjLAogICAgIGdfb2JqZWN0X2dldChtcC0+bV9wbGF5QmluLCAic291
cmNlIiwgJmVsZW1lbnQub3V0UHRyKCksIE5VTEwpOwogICAgIGdzdF9vYmplY3RfcmVwbGFjZSgo
R3N0T2JqZWN0KiopICZtcC0+bV9zb3VyY2UsIChHc3RPYmplY3QqKSBlbGVtZW50LmdldCgpKTsK
IAotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR093blB0cjxjaGFy
PiBsb2NhdGlvbjsKLSAgICBnX29iamVjdF9nZXQoZWxlbWVudC5nZXQoKSwgImxvY2F0aW9uIiwg
JmxvY2F0aW9uLm91dFB0cigpLCBOVUxMKTsKLQotICAgIC8vIERvIGluamVjdGlvbiBvbmx5IGZv
ciBlbGVtZW50cyBkZWFsaW5nIHdpdGggdXJpcy4KLSAgICBpZiAoIWdzdF91cmlfaXNfdmFsaWQo
bG9jYXRpb24uZ2V0KCkpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKFdFQktJVF9JU19XRUJf
U1JDKGVsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1wLT5tX3BsYXll
ci0+ZnJhbWVWaWV3KCkgPyBtcC0+bV9wbGF5ZXItPmZyYW1lVmlldygpLT5mcmFtZSgpIDogMDsK
IAotICAgIEdPd25QdHI8U291cFVSST4gdXJpKHNvdXBfdXJpX25ldyhsb2NhdGlvbi5nZXQoKSkp
OwotCi0gICAgLy8gRG8gaW5qZWN0aW9uIG9ubHkgZm9yIGh0dHAocykgdXJpcy4KLSAgICBpZiAo
IVNPVVBfVVJJX1ZBTElEX0ZPUl9IVFRQKHVyaSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCi0gICAgaWYgKGdfc3RyX2VxdWFsKHVyaS0+aG9zdCwgIm1vdmllcy5h
cHBsZS5jb20iKSkKLSAgICAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQuZ2V0KCksICJ1c2VyLWFn
ZW50IiwgIlF1aWNrdGltZS83LjIuMCIsIE5VTEwpOwotCi0gICAgLy8gU2V0IHRoZSBIVFRQIHJl
ZmVyZXIuCi0gICAgRnJhbWUqIGZyYW1lID0gbXAtPm1fcGxheWVyLT5mcmFtZVZpZXcoKSA/IG1w
LT5tX3BsYXllci0+ZnJhbWVWaWV3KCktPmZyYW1lKCkgOiAwOwotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiAwOwotICAgIGlmIChkb2N1bWVudCkg
ewotICAgICAgICBHc3RTdHJ1Y3R1cmUqIGV4dHJhSGVhZGVycyA9IGdzdF9zdHJ1Y3R1cmVfbmV3
KCJleHRyYS1oZWFkZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiUmVmZXJlciIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmRvY3Vt
ZW50VVJJKCkudXRmOCgpLmRhdGEoKSwgMCk7Ci0gICAgICAgIGdfb2JqZWN0X3NldChlbGVtZW50
LmdldCgpLCAiZXh0cmEtaGVhZGVycyIsIGV4dHJhSGVhZGVycywgTlVMTCk7Ci0gICAgICAgIGdz
dF9zdHJ1Y3R1cmVfZnJlZShleHRyYUhlYWRlcnMpOworICAgICAgICBpZiAoZnJhbWUpCisgICAg
ICAgICAgICB3ZWJLaXRXZWJTcmNTZXRGcmFtZShXRUJLSVRfV0VCX1NSQyhlbGVtZW50LmdldCgp
KSwgZnJhbWUpOwogICAgIH0KLQotICAgIC8vIERlYWwgd2l0aCB0aGUgY29va2llcyBmcm9tIG5v
dyBvbi4KLSAgICBHUGFyYW1TcGVjKiBjb29raWVzUGFyYW1TcGVjID0gZ19vYmplY3RfY2xhc3Nf
ZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1MoZWxlbWVudC5nZXQoKSksICJjb29raWVz
Iik7Ci0KLSAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGUgc291cmNlIGVsZW1lbnQgaGFzIGEgY29v
a2llcyBwcm9wZXJ0eQotICAgIC8vIG9mIHRoZSBmb3JtYXQgd2UgZXhwZWN0Ci0gICAgaWYgKCFj
b29raWVzUGFyYW1TcGVjIHx8IGNvb2tpZXNQYXJhbVNwZWMtPnZhbHVlX3R5cGUgIT0gR19UWVBF
X1NUUlYpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRoZW4gZ2V0IHRoZSBjb29raWVzIGZv
ciB0aGUgVVJJIGFuZCBzZXQgdGhlbQotICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gd2Via2l0
X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKLSAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIGNvb2tpZUph
ckZlYXR1cmUgPSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX0NP
T0tJRV9KQVIpOwotICAgIGlmICghY29va2llSmFyRmVhdHVyZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgU291cENvb2tpZUphciogY29va2llSmFyID0gU09VUF9DT09LSUVfSkFSKGNvb2tpZUph
ckZlYXR1cmUpOwotICAgIEdPd25QdHI8Y2hhcj4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfZ2V0
X2Nvb2tpZXMoY29va2llSmFyLCB1cmkuZ2V0KCksIEZBTFNFKSk7Ci0gICAgY2hhciogY29va2ll
c1N0cnZbXSA9IHtjb29raWVzLmdldCgpLCAwfTsKLSAgICBnX29iamVjdF9zZXQoZWxlbWVudC5n
ZXQoKSwgImNvb2tpZXMiLCBjb29raWVzU3RydiwgTlVMTCk7CiB9CiAKIHZvaWQgbWVkaWFQbGF5
ZXJQcml2YXRlVm9sdW1lQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJhbVNw
ZWMgKnBzcGVjLCBncG9pbnRlciBkYXRhKQpAQCAtMjcwLDEyICsyMjgsMTUgQEAgc3RhdGljIGJv
b2wgZG9Hc3RJbml0KCkKICAgICBpZiAoIWdzdEluaXRpYWxpemVkKSB7CiAgICAgICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgZ3N0SW5pdGlhbGl6ZWQgPSBnc3RfaW5pdF9jaGVj
aygwLCAwLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBpZiAoIWdzdEluaXRpYWxpemVkKQor
ICAgICAgICBpZiAoIWdzdEluaXRpYWxpemVkKSB7CiAgICAgICAgICAgICBMT0dfVkVSQk9TRShN
ZWRpYSwgIkNvdWxkIG5vdCBpbml0aWFsaXplIEdTdHJlYW1lcjogJXMiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJ1bmtub3duIGVycm9yIG9jY3Vy
cmVkIik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGdzdF9l
bGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXRtZWRpYXNyYyIsIEdTVF9SQU5LX1BSSU1BUlksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9EQVRBX1NSQyk7Cisg
ICAgICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3RlcigwLCAid2Via2l0d2Vic3JjIiwgR1NUX1JB
TktfUFJJTUFSWSArIDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJ
VF9UWVBFX1dFQl9TUkMpOworICAgICAgICB9CiAKICAgICB9CiAgICAgcmV0dXJuIGdzdEluaXRp
YWxpemVkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNmFkNzgxYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSw3MjYgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9l
Z2VAY29sbGFib3JhLmNvLnVrPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIgor
CisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
R093blB0ci5oIgorI2luY2x1ZGUgIkdSZWZQdHIuaCIKKyNpbmNsdWRlICJOb25jb3B5YWJsZS5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVD
bGllbnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1w
bHVnaW5zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBTdHJlYW1pbmdD
bGllbnQgOiBwdWJsaWMgTm9uY29weWFibGUsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICBTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKik7Cisg
ICAgICAgIHZpcnR1YWwgflN0cmVhbWluZ0NsaWVudCgpOworCisgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIq
LCBpbnQsIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tl
ZChSZXNvdXJjZUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTChS
ZXNvdXJjZUhhbmRsZSopOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2ViS2l0V2ViU3JjKiBt
X3NyYzsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfR0VUX1BSSVZBVEUob2JqKSAoR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU1JDLCBXZWJL
aXRXZWJTcmNQcml2YXRlKSkKK3N0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CisgICAgR3N0
QXBwU3JjKiBhcHBzcmM7CisgICAgR3N0UGFkKiBzcmNwYWQ7CisgICAgZ2NoYXIqIHVyaTsKKwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gZnJhbWU7CisKKyAgICBTdHJlYW1pbmdDbGllbnQq
IGNsaWVudDsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IHJlc291cmNlSGFuZGxlOworCisg
ICAgZ3VpbnQ2NCBvZmZzZXQ7CisgICAgZ3VpbnQ2NCBzaXplOworICAgIGdib29sZWFuIHNlZWth
YmxlOworICAgIGdib29sZWFuIHBhdXNlZDsKKworICAgIGd1aW50NjQgcmVxdWVzdGVkT2Zmc2V0
OworCisgICAgZ3VpbnQgbmVlZERhdGFJRDsKKyAgICBndWludCBlbm91Z2hEYXRhSUQ7CisgICAg
Z3VpbnQgc2Vla0lEOworCisgICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIGdib29sZWFuIGlyYWRp
b01vZGU7CisgICAgZ2NoYXIqIGlyYWRpb05hbWU7CisgICAgZ2NoYXIqIGlyYWRpb0dlbnJlOwor
ICAgIGdjaGFyKiBpcmFkaW9Vcmw7CisgICAgZ2NoYXIqIGlyYWRpb1RpdGxlOworfTsKKworZW51
bSB7CisgICAgUFJPUF9JUkFESU9fTU9ERSA9IDEsCisgICAgUFJPUF9JUkFESU9fTkFNRSwKKyAg
ICBQUk9QX0lSQURJT19HRU5SRSwKKyAgICBQUk9QX0lSQURJT19VUkwsCisgICAgUFJPUF9JUkFE
SU9fVElUTEUKK307CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNUZW1wbGF0ZSA9
IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzcmMiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1BBRF9TUkMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHU1RfUEFEX0FMV0FZUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9TVEFUSUNfQ0FQU19BTlkpOwor
CitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtpdF93ZWJfc3JjX2RlYnVnKTsKKyNkZWZp
bmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF93ZWJfc3JjX2RlYnVnCisKK3N0YXRpYyB2b2lkIHdl
YktpdFdlYlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgaWZhY2VEYXRhKTsKKworc3Rh
dGljIHZvaWQgd2ViS2l0V2ViU3JjRmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKK3N0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElE
LCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CitzdGF0aWMgdm9pZCB3
ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0
dXJuIHdlYktpdFdlYlNyY0NoYW5nZVN0YXRlKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFN0YXRl
Q2hhbmdlIHRyYW5zaXRpb24pOworCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNi
KEdzdEFwcFNyYyogYXBwc3JjLCBndWludCBsZW5ndGgsIGdwb2ludGVyIHVzZXJEYXRhKTsKK3N0
YXRpYyB2b2lkIHdlYktpdFdlYlNyY0Vub3VnaERhdGFDYihHc3RBcHBTcmMqIGFwcHNyYywgZ3Bv
aW50ZXIgdXNlckRhdGEpOworc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NlZWtEYXRhQ2Io
R3N0QXBwU3JjKiBhcHBzcmMsIGd1aW50NjQgb2Zmc2V0LCBncG9pbnRlciB1c2VyRGF0YSk7CisK
K3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMsIGJvb2wgcmVz
ZXRSZXF1ZXN0ZWRPZmZzZXQpOworCitzdGF0aWMgR3N0QXBwU3JjQ2FsbGJhY2tzIGFwcHNyY0Nh
bGxiYWNrcyA9IHsKKyAgICB3ZWJLaXRXZWJTcmNOZWVkRGF0YUNiLAorICAgIHdlYktpdFdlYlNy
Y0Vub3VnaERhdGFDYiwKKyAgICB3ZWJLaXRXZWJTcmNTZWVrRGF0YUNiLAorICAgIHsgMCB9Cit9
OworCitzdGF0aWMgdm9pZCBkb0luaXQoR1R5cGUgZ3R5cGUpCit7CisgICAgc3RhdGljIGNvbnN0
IEdJbnRlcmZhY2VJbmZvIHVyaUhhbmRsZXJJbmZvID0geworICAgICAgICB3ZWJLaXRXZWJTcmNV
cmlIYW5kbGVySW5pdCwKKyAgICAgICAgMCwgMAorICAgIH07CisKKyAgICBHU1RfREVCVUdfQ0FU
RUdPUllfSU5JVCh3ZWJraXRfd2ViX3NyY19kZWJ1ZywgIndlYmtpdHdlYnNyYyIsIDAsICJ3ZWJz
cmMgZWxlbWVudCIpOworICAgIGdfdHlwZV9hZGRfaW50ZXJmYWNlX3N0YXRpYyhndHlwZSwgR1NU
X1RZUEVfVVJJX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1cmlI
YW5kbGVySW5mbyk7Cit9CisKK0dTVF9CT0lMRVJQTEFURV9GVUxMKFdlYktpdFdlYlNyYywgd2Vi
a2l0X3dlYl9zcmMsIEdzdEJpbiwgR1NUX1RZUEVfQklOLCBkb0luaXQpOworCitzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3NyY19iYXNlX2luaXQoZ3BvaW50ZXIga2xhc3MpCit7CisgICAgR3N0RWxl
bWVudENsYXNzKiBla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyhrbGFzcyk7CisKKyAgICBnc3Rf
ZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVrbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCgmc3JjVGVt
cGxhdGUpKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19zZXRfZGV0YWlsc19zaW1wbGUoZWtsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIqKSAiV2Vi
S2l0IFdlYiBzb3VyY2UgZWxlbWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChnY2hhciopICJTb3VyY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZ2NoYXIqKSAiSGFuZGxlcyBIVFRQL0hUVFBTIHVyaXMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NoYXIqKSAiU2ViYXN0aWFuIERy
w7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Iik7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc3JjX2NsYXNzX2luaXQoV2ViS2l0V2ViU3JjQ2xhc3MqIGtsYXNzKQor
eworICAgIEdPYmplY3RDbGFzcyogb2tsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAg
IEdzdEVsZW1lbnRDbGFzcyogZWtsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1Moa2xhc3MpOworCisg
ICAgb2tsYXNzLT5maW5hbGl6ZSA9IHdlYktpdFdlYlNyY0ZpbmFsaXplOworICAgIG9rbGFzcy0+
c2V0X3Byb3BlcnR5ID0gd2ViS2l0V2ViU3JjU2V0UHJvcGVydHk7CisgICAgb2tsYXNzLT5nZXRf
cHJvcGVydHkgPSB3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eTsKKworICAgIC8vIGljZWNhc3Qgc3R1
ZmYKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfSVJBRElPX01PREUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiaXJhZGlvLW1v
ZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImlyYWRpby1tb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJFbmFibGUgaW50ZXJuZXQgcmFkaW8gbW9kZSAoZXh0cmFj
dGlvbiBvZiBzaG91dGNhc3QvaWNlY2FzdCBtZXRhZGF0YSkiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR1BhcmFtRmxh
Z3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisKKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9rbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfSVJBRElPX05BTUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tbmFtZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp
cmFkaW8tbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJOYW1lIG9mIHRoZSBzdHJlYW0iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BB
UkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJPUF9JUkFESU9fR0VOUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tZ2VucmUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXJhZGlvLWdl
bnJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkdlbnJlIG9mIHRoZSBzdHJlYW0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JF
QURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0lSQURJT19VUkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tdXJsIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlyYWRpby11cmwiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9tZXBh
Z2UgVVJMIGZvciByYWRpbyBzdHJlYW0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURB
QkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9JUkFESU9fVElUTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpcmFkaW8tdGl0bGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXJhZGlvLXRpdGxlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5h
bWUgb2YgY3VycmVudGx5IHBsYXlpbmcgc29uZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1f
UkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworCisgICAgZWtsYXNzLT5jaGFu
Z2Vfc3RhdGUgPSB3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZTsKKworICAgIGdfdHlwZV9jbGFzc19h
ZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNyY1ByaXZhdGUpKTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9zcmNfaW5pdChXZWJLaXRXZWJTcmMqIHNyYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViU3JjQ2xhc3MqIGdLbGFzcykKK3sKKyAg
ICBHc3RQYWRUZW1wbGF0ZSogcGFkVGVtcGxhdGUgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9n
ZXQoJnNyY1RlbXBsYXRlKTsKKyAgICBHc3RQYWQqIHRhcmdldHBhZDsKKyAgICBXZWJLaXRXZWJT
cmNQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9TUkNfR0VUX1BSSVZBVEUoc3JjKTsKKworICAg
IHNyYy0+cHJpdiA9IHByaXY7CisKKyAgICBwcml2LT5jbGllbnQgPSBuZXcgU3RyZWFtaW5nQ2xp
ZW50KHNyYyk7CisKKyAgICBwcml2LT5zcmNwYWQgPSBnc3RfZ2hvc3RfcGFkX25ld19ub190YXJn
ZXRfZnJvbV90ZW1wbGF0ZSgic3JjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRUZW1wbGF0ZSk7CisKKyAgICBnc3RfZWxl
bWVudF9hZGRfcGFkKEdTVF9FTEVNRU5UKHNyYyksIHByaXYtPnNyY3BhZCk7CisKKyAgICBwcml2
LT5hcHBzcmMgPSBHU1RfQVBQX1NSQyhnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFwcHNyYyIs
IDApKTsKKyAgICBpZiAoIXByaXYtPmFwcHNyYykgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNU
KHNyYywgIkZhaWxlZCB0byBjcmVhdGUgYXBwc3JjIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBnc3RfYmluX2FkZChHU1RfQklOKHNyYyksIEdTVF9FTEVNRU5UKHByaXYtPmFwcHNy
YykpOworCisgICAgdGFyZ2V0cGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoR1NUX0VM
RU1FTlQocHJpdi0+YXBwc3JjKSwgInNyYyIpOworICAgIGdzdF9naG9zdF9wYWRfc2V0X3Rhcmdl
dChHU1RfR0hPU1RfUEFEKHByaXYtPnNyY3BhZCksIHRhcmdldHBhZCk7CisgICAgZ3N0X29iamVj
dF91bnJlZih0YXJnZXRwYWQpOworCisgICAgZ3N0X2FwcF9zcmNfc2V0X2NhbGxiYWNrcyhwcml2
LT5hcHBzcmMsICZhcHBzcmNDYWxsYmFja3MsIHNyYywgMCk7CisgICAgZ3N0X2FwcF9zcmNfc2V0
X2VtaXRfc2lnbmFscyhwcml2LT5hcHBzcmMsIEZBTFNFKTsKKyAgICBnc3RfYXBwX3NyY19zZXRf
c3RyZWFtX3R5cGUocHJpdi0+YXBwc3JjLCBHU1RfQVBQX1NUUkVBTV9UWVBFX1NFRUtBQkxFKTsK
KworICAgIC8vIDUxMmsgaXMgYSBhYml0cmFyeSBudW1iZXIgYnV0IHdlIHNob3VsZCBjaG9vc2Ug
YSB2YWx1ZQorICAgIC8vIGhlcmUgdG8gbm90IHBhdXNlL3VucGF1c2UgdGhlIFNvdXBNZXNzYWdl
IHRvIG9mdGVuIGFuZAorICAgIC8vIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIGFsd2F5cyBzb21lIGRh
dGEgYXZhaWxhYmxlIGZvcgorICAgIC8vIEdTdHJlYW1lciB0byBoYW5kbGUKKyAgICBnc3RfYXBw
X3NyY19zZXRfbWF4X2J5dGVzKHByaXYtPmFwcHNyYywgNTEyICogMTAyNCk7CisKKyAgICB3ZWJL
aXRXZWJTcmNTdG9wKHNyYywgdHJ1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0Zp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJ
VF9XRUJfU1JDKG9iamVjdCk7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+
cHJpdjsKKworICAgIGRlbGV0ZSBwcml2LT5jbGllbnQ7CisKKyAgICBnX2ZyZWUocHJpdi0+dXJp
KTsKKworICAgIEdTVF9DQUxMX1BBUkVOVChHX09CSkVDVF9DTEFTUywgZmluYWxpemUsICgoR09i
amVjdCogKShzcmMpKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1NldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JD
KG9iamVjdCk7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKwor
ICAgIHN3aXRjaCAocHJvcElEKSB7CisgICAgY2FzZSBQUk9QX0lSQURJT19NT0RFOgorICAgICAg
ICBwcml2LT5pcmFkaW9Nb2RlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBX
ZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7CisgICAgV2ViS2l0V2Vi
U3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIHN3aXRjaCAocHJvcElEKSB7Cisg
ICAgY2FzZSBQUk9QX0lSQURJT19NT0RFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCBwcml2LT5pcmFkaW9Nb2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lS
QURJT19OQU1FOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPmlyYWRp
b05hbWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSVJBRElPX0dFTlJFOgorICAg
ICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPmlyYWRpb0dlbnJlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lSQURJT19VUkw6CisgICAgICAgIGdfdmFsdWVfc2V0
X3N0cmluZyh2YWx1ZSwgcHJpdi0+aXJhZGlvVXJsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0lSQURJT19USVRMRToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBw
cml2LT5pcmFkaW9UaXRsZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKworc3RhdGljIHZvaWQgd2ViS2l0V2ViU3Jj
U3RvcChXZWJLaXRXZWJTcmMqIHNyYywgYm9vbCByZXNldFJlcXVlc3RlZE9mZnNldCkKK3sKKyAg
ICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgaWYgKHByaXYt
PnJlc291cmNlSGFuZGxlKSB7CisgICAgICAgIHByaXYtPnJlc291cmNlSGFuZGxlLT5jYW5jZWwo
KTsKKyAgICAgICAgcHJpdi0+cmVzb3VyY2VIYW5kbGUucmVsZWFzZSgpOworICAgIH0KKyAgICBw
cml2LT5yZXNvdXJjZUhhbmRsZSA9IDA7CisKKyAgICBpZiAocHJpdi0+ZnJhbWUpCisgICAgICAg
IHByaXYtPmZyYW1lLnJlbGVhc2UoKTsKKworICAgIGlmIChwcml2LT5uZWVkRGF0YUlEKQorICAg
ICAgICBnX3NvdXJjZV9yZW1vdmUocHJpdi0+bmVlZERhdGFJRCk7CisgICAgcHJpdi0+bmVlZERh
dGFJRCA9IDA7CisKKyAgICBpZiAocHJpdi0+ZW5vdWdoRGF0YUlEKQorICAgICAgICBnX3NvdXJj
ZV9yZW1vdmUocHJpdi0+ZW5vdWdoRGF0YUlEKTsKKyAgICBwcml2LT5lbm91Z2hEYXRhSUQgPSAw
OworCisgICAgaWYgKHByaXYtPnNlZWtJRCkKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYt
PnNlZWtJRCk7CisgICAgcHJpdi0+c2Vla0lEID0gMDsKKworICAgIHByaXYtPnBhdXNlZCA9IEZB
TFNFOworCisgICAgZ19mcmVlKHByaXYtPmlyYWRpb05hbWUpOworICAgIHByaXYtPmlyYWRpb05h
bWUgPSAwOworCisgICAgZ19mcmVlKHByaXYtPmlyYWRpb0dlbnJlKTsKKyAgICBwcml2LT5pcmFk
aW9HZW5yZSA9IDA7CisKKyAgICBnX2ZyZWUocHJpdi0+aXJhZGlvVXJsKTsKKyAgICBwcml2LT5p
cmFkaW9VcmwgPSAwOworCisgICAgZ19mcmVlKHByaXYtPmlyYWRpb1RpdGxlKTsKKyAgICBwcml2
LT5pcmFkaW9UaXRsZSA9IDA7CisKKyAgICBpZiAocHJpdi0+YXBwc3JjKQorICAgICAgICBnc3Rf
YXBwX3NyY19zZXRfY2Fwcyhwcml2LT5hcHBzcmMsIDApOworCisgICAgcHJpdi0+b2Zmc2V0ID0g
MDsKKyAgICBwcml2LT5zaXplID0gMDsKKyAgICBwcml2LT5zZWVrYWJsZSA9IEZBTFNFOworCisg
ICAgaWYgKHJlc2V0UmVxdWVzdGVkT2Zmc2V0KQorICAgICAgICBwcml2LT5yZXF1ZXN0ZWRPZmZz
ZXQgPSAwOworCisgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdG9wcGVkIHJlcXVlc3QiKTsK
K30KKworc3RhdGljIGJvb2wgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCit7
CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGlmICgh
cHJpdi0+dXJpKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiTm8gVVJJIHByb3Zp
ZGVkIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgS1VSTCB1cmwg
PSBLVVJMKEtVUkwoKSwgcHJpdi0+dXJpKTsKKworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KHVybCk7CisgICAgcmVxdWVzdC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdEJhc2U6OlRh
cmdldElzTWVkaWEpOworICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOworCisgICAg
Ly8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2FudCB0byBhY2Nlc3MgdGhlaXIgbmlj
ZSBtb3ZpZSB0cmFpbGVycy4KKyAgICBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCgibW92aWVzLmFw
cGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkpCisgICAgICAgIHJlcXVlc3Quc2V0
SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuMi4wIik7CisKKyAgICBpZiAocHJpdi0+ZnJhbWUp
IHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcHJpdi0+ZnJhbWUtPmRvY3VtZW50KCk7
CisgICAgICAgIGlmIChkb2N1bWVudCkKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVy
cmVyKGRvY3VtZW50LT5kb2N1bWVudFVSSSgpKTsKKworICAgICAgICBGcmFtZUxvYWRlciogbG9h
ZGVyID0gcHJpdi0+ZnJhbWUtPmxvYWRlcigpOworICAgICAgICBpZiAobG9hZGVyKQorICAgICAg
ICAgICAgbG9hZGVyLT5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
OworICAgIH0KKworICAgIGlmIChwcml2LT5yZXF1ZXN0ZWRPZmZzZXQpIHsKKyAgICAgICAgR093
blB0cjxnY2hhcj4gdmFsOworCisgICAgICAgIHZhbC5zZXQoZ19zdHJkdXBfcHJpbnRmKCJieXRl
cz0lIiBHX0dVSU5UNjRfRk9STUFUICItIiwgcHJpdi0+cmVxdWVzdGVkT2Zmc2V0KSk7CisgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJSYW5nZSIsIHZhbC5nZXQoKSk7CisgICAg
fQorCisgICAgaWYgKHByaXYtPmlyYWRpb01vZGUpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKCJpY3ktbWV0YWRhdGEiLCAiMSIpOworCisgICAgLy8gTmVlZGVkIHRvIHVzZSBE
TE5BIHN0cmVhbWluZyBzZXJ2ZXJzCisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoInRy
YW5zZmVyTW9kZS5kbG5hIiwgIlN0cmVhbWluZyIpOworCisgICAgcHJpdi0+cmVzb3VyY2VIYW5k
bGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKHJlcXVlc3QsIHByaXYtPmNsaWVudCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSk7CisgICAgaWYgKCFwcml2LT5yZXNvdXJjZUhhbmRsZSkgeworICAg
ICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIkZhaWxlZCB0byBjcmVhdGUgUmVzb3VyY2VIYW5k
bGUiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiU3RhcnRlZCByZXF1ZXN0Iik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdFdlYlNyY0NoYW5nZVN0YXRlKEdzdEVsZW1l
bnQqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCit7CisgICAgR3N0U3RhdGVD
aGFuZ2VSZXR1cm4gcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOworICAgIFdlYktpdFdl
YlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoZWxlbWVudCk7CisgICAgV2ViS2l0V2ViU3JjUHJp
dmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAg
IGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZOgorICAgICAgICBpZiAoIXByaXYt
PmFwcHNyYykgeworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKGVsZW1lbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3N0X21pc3NpbmdfZWxlbWVu
dF9tZXNzYWdlX25ldyhlbGVtZW50LCAiYXBwc3JjIikpOworICAgICAgICAgICAgR1NUX0VMRU1F
TlRfRVJST1Ioc3JjLCBDT1JFLCBNSVNTSU5HX1BMVUdJTiwgKDApLCAoIm5vIGFwcHNyYyIpKTsK
KyAgICAgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MocGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlKGVs
ZW1lbnQsIHRyYW5zaXRpb24pOworICAgIGlmIChHX1VOTElLRUxZKHJldCA9PSBHU1RfU1RBVEVf
Q0hBTkdFX0ZBSUxVUkUpKSB7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RhdGUg
Y2hhbmdlIGZhaWxlZCIpOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHN3aXRj
aCAodHJhbnNpdGlvbikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVT
RUQ6CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUkVBRFktPlBBVVNFRCIpOworICAg
ICAgICBpZiAoIXdlYktpdFdlYlNyY1N0YXJ0KHNyYykpCisgICAgICAgICAgICByZXQgPSBHU1Rf
U1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRF
X0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAi
UEFVU0VELT5SRUFEWSIpOworICAgICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYywgdHJ1ZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IHJldHVybiByZXQ7Cit9CisKKy8vIHVyaSBoYW5kbGVyIGludGVyZmFjZQorCitzdGF0aWMgR3N0
VVJJVHlwZSB3ZWJLaXRXZWJTcmNVcmlHZXRUeXBlKHZvaWQpCit7CisgICAgcmV0dXJuIEdTVF9V
UklfU1JDOworfQorCitzdGF0aWMgZ2NoYXIqKiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHModm9p
ZCkKK3sKKyAgICBzdGF0aWMgZ2NoYXIqIHByb3RvY29sc1tdID0geyhnY2hhciopICJodHRwIiwg
KGdjaGFyKikgImh0dHBzIiwgMCB9OworCisgICAgcmV0dXJuIHByb3RvY29sczsKK30KKworc3Rh
dGljIGNvbnN0IGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxl
cikKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGhhbmRsZXIpOwor
ICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICByZXR1cm4g
cHJpdi0+dXJpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU2V0VXJpKEdzdFVS
SUhhbmRsZXIqIGhhbmRsZXIsIGNvbnN0IGdjaGFyKiB1cmkpCit7CisgICAgV2ViS2l0V2ViU3Jj
KiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhoYW5kbGVyKTsKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRl
KiBwcml2ID0gc3JjLT5wcml2OworCisgICAgaWYgKEdTVF9TVEFURShzcmMpID49IEdTVF9TVEFU
RV9QQVVTRUQpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJVUkkgY2FuIG9ubHkg
YmUgc2V0IGluIHN0YXRlcyA8IFBBVVNFRCIpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAg
fQorCisgICAgZ19mcmVlKHByaXYtPnVyaSk7CisgICAgcHJpdi0+dXJpID0gMDsKKworICAgIGlm
ICghdXJpKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIFNvdXBVUkkqIHNvdXBVcmkgPSBz
b3VwX3VyaV9uZXcodXJpKTsKKworICAgIGlmICghc291cFVyaSB8fCAhU09VUF9VUklfVkFMSURf
Rk9SX0hUVFAoc291cFVyaSkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJJbnZh
bGlkIFVSSSAnJXMnIiwgdXJpKTsKKyAgICAgICAgc291cF91cmlfZnJlZShzb3VwVXJpKTsKKyAg
ICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHByaXYtPnVyaSA9IHNvdXBfdXJpX3Rv
X3N0cmluZyhzb3VwVXJpLCBGQUxTRSk7CisgICAgc291cF91cmlfZnJlZShzb3VwVXJpKTsKKwor
ICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNVcmlIYW5kbGVy
SW5pdChncG9pbnRlciBnSWZhY2UsIGdwb2ludGVyIGlmYWNlRGF0YSkKK3sKKyAgICBHc3RVUklI
YW5kbGVySW50ZXJmYWNlKiBpZmFjZSA9IChHc3RVUklIYW5kbGVySW50ZXJmYWNlICopIGdJZmFj
ZTsKKworICAgIGlmYWNlLT5nZXRfdHlwZSA9IHdlYktpdFdlYlNyY1VyaUdldFR5cGU7CisgICAg
aWZhY2UtPmdldF9wcm90b2NvbHMgPSB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHM7CisgICAgaWZh
Y2UtPmdldF91cmkgPSB3ZWJLaXRXZWJTcmNHZXRVcmk7CisgICAgaWZhY2UtPnNldF91cmkgPSB3
ZWJLaXRXZWJTcmNTZXRVcmk7Cit9CisKKy8vIGFwcHNyYyBjYWxsYmFja3MKKworc3RhdGljIGdi
b29sZWFuIHdlYktpdFdlYlNyY05lZWREYXRhTWFpbkNiKFdlYktpdFdlYlNyYyogc3JjKQorewor
ICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBSZXNvdXJj
ZUhhbmRsZUludGVybmFsKiBkID0gcHJpdi0+cmVzb3VyY2VIYW5kbGUtPmdldEludGVybmFsKCk7
CisgICAgaWYgKGQtPm1fbXNnKQorICAgICAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdl
KFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBkLT5tX21zZyk7CisKKyAgICBwcml2
LT5wYXVzZWQgPSBGQUxTRTsKKyAgICBwcml2LT5uZWVkRGF0YUlEID0gMDsKKyAgICByZXR1cm4g
RkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY05lZWREYXRhQ2IoR3N0QXBwU3Jj
KiBhcHBzcmMsIGd1aW50IGxlbmd0aCwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgV2ViS2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyh1c2VyRGF0YSk7CisgICAgV2ViS2l0V2ViU3Jj
UHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAi
TmVlZCBtb3JlIGRhdGE6ICV1IiwgbGVuZ3RoKTsKKyAgICBpZiAocHJpdi0+bmVlZERhdGFJRCB8
fCAhcHJpdi0+cGF1c2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5uZWVkRGF0YUlE
ID0gZ190aW1lb3V0X2FkZF9mdWxsKEdfUFJJT1JJVFlfSElHSCwgMCwgKEdTb3VyY2VGdW5jKSB3
ZWJLaXRXZWJTcmNOZWVkRGF0YU1haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95
Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY0Vub3VnaERhdGFNYWluQ2IoV2ViS2l0V2ViU3JjKiBzcmMpCit7CisgICAgV2ViS2l0V2Vi
U3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIFJlc291cmNlSGFuZGxlSW50ZXJu
YWwqIGQgPSBwcml2LT5yZXNvdXJjZUhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBzb3VwX3Nl
c3Npb25fcGF1c2VfbWVzc2FnZShSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgZC0+
bV9tc2cpOworICAgIAorICAgIHByaXYtPnBhdXNlZCA9IFRSVUU7CisgICAgcHJpdi0+ZW5vdWdo
RGF0YUlEID0gMDsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdFdl
YlNyY0Vub3VnaERhdGFDYihHc3RBcHBTcmMqIGFwcHNyYywgZ3BvaW50ZXIgdXNlckRhdGEpCit7
CisgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyh1c2VyRGF0YSk7CisgICAg
V2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiSGF2ZSBlbm91Z2ggZGF0YSIpOworICAgIGlmIChwcml2LT5lbm91Z2hEYXRh
SUQgfHwgcHJpdi0+cGF1c2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5lbm91Z2hE
YXRhSUQgPSBnX3RpbWVvdXRfYWRkX2Z1bGwoR19QUklPUklUWV9ISUdILCAwLCAoR1NvdXJjZUZ1
bmMpIHdlYktpdFdlYlNyY0Vub3VnaERhdGFNYWluQ2IsIGdzdF9vYmplY3RfcmVmKHNyYyksIChH
RGVzdHJveU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRXZWJTcmNTZWVrTWFpbkNiKFdlYktpdFdlYlNyYyogc3JjKQoreworICAgIHdlYktpdFdl
YlNyY1N0b3Aoc3JjLCBmYWxzZSk7CisgICAgd2ViS2l0V2ViU3JjU3RhcnQoc3JjKTsKKworICAg
IHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NlZWtEYXRh
Q2IoR3N0QXBwU3JjKiBhcHBzcmMsIGd1aW50NjQgb2Zmc2V0LCBncG9pbnRlciB1c2VyRGF0YSkK
K3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKHVzZXJEYXRhKTsKKyAg
ICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OworCisgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJTZWVraW5nIHRvIG9mZnNldDogJSIgR19HVUlOVDY0X0ZPUk1BVCwgb2Zm
c2V0KTsKKyAgICBpZiAob2Zmc2V0ID09IHByaXYtPm9mZnNldCkKKyAgICAgICAgcmV0dXJuIFRS
VUU7CisKKyAgICBpZiAoIXByaXYtPnNlZWthYmxlKQorICAgICAgICByZXR1cm4gRkFMU0U7Cisg
ICAgaWYgKG9mZnNldCA+IHByaXYtPnNpemUpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAg
IEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiRG9pbmcgcmFuZ2UtcmVxdWVzdCBzZWVrIik7CisgICAg
cHJpdi0+cmVxdWVzdGVkT2Zmc2V0ID0gb2Zmc2V0OworICAgIGlmIChwcml2LT5zZWVrSUQpCisg
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5zZWVrSUQpOworICAgIHByaXYtPnNlZWtJRCA9
IGdfdGltZW91dF9hZGRfZnVsbChHX1BSSU9SSVRZX0hJR0gsIDAsIChHU291cmNlRnVuYykgd2Vi
S2l0V2ViU3JjU2Vla01haW5DYiwgZ3N0X29iamVjdF9yZWYoc3JjKSwgKEdEZXN0cm95Tm90aWZ5
KSBnc3Rfb2JqZWN0X3VucmVmKTsKKyAgICAKKyAgICByZXR1cm4gVFJVRTsKK30KKwordm9pZCB3
ZWJLaXRXZWJTcmNTZXRGcmFtZShXZWJLaXRXZWJTcmMqIHNyYywgV2ViQ29yZTo6RnJhbWUqIGZy
YW1lKQoreworICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAg
ICBwcml2LT5mcmFtZSA9IGZyYW1lOworfQorCitTdHJlYW1pbmdDbGllbnQ6OlN0cmVhbWluZ0Ns
aWVudChXZWJLaXRXZWJTcmMqIHNyYykgOiBtX3NyYyhzcmMpCit7CisKK30KKworU3RyZWFtaW5n
Q2xpZW50Ojp+U3RyZWFtaW5nQ2xpZW50KCkKK3sKKworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVu
dDo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK3sKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7
CisKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiUmVjZWl2ZWQgcmVzcG9uc2U6ICVkIiwg
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisKKyAgICAvLyBJZiB3ZSBzZWVrZWQgd2UgbmVl
ZCAyMDYgPT0gUEFSVElBTF9DT05URU5UCisgICAgaWYgKHByaXYtPnJlcXVlc3RlZE9mZnNldCAm
JiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpICE9IDIwNikgeworICAgICAgICBHU1RfRUxFTUVO
VF9FUlJPUihtX3NyYywgUkVTT1VSQ0UsIFJFQUQsICgwKSwgKDApKTsKKyAgICAgICAgd2ViS2l0
V2ViU3JjU3RvcChtX3NyYywgdHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBs
b25nIGxvbmcgbGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CisgICAg
aWYgKGxlbmd0aCA+IDApIHsKKyAgICAgICAgbGVuZ3RoICs9IHByaXYtPnJlcXVlc3RlZE9mZnNl
dDsKKyAgICAgICAgZ3N0X2FwcF9zcmNfc2V0X3NpemUocHJpdi0+YXBwc3JjLCBsZW5ndGgpOwor
ICAgIH0KKworICAgIHByaXYtPnNpemUgPSBsZW5ndGggPj0gMCA/IGxlbmd0aCA6IDA7CisgICAg
cHJpdi0+c2Vla2FibGUgPSBsZW5ndGggPiAwICYmIGdfYXNjaWlfc3RyY2FzZWNtcCgibm9uZSIs
IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQWNjZXB0LVJhbmdlcyIpLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgLy8gaWNlY2FzdCBzdHVmZgorICAgIFN0cmluZyB2YWx1ZSA9IHJlc3BvbnNlLmh0
dHBIZWFkZXJGaWVsZCgiaWN5LW1ldGFpbnQiKTsKKyAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkg
eworICAgICAgICBnY2hhciogZW5kcHRyID0gMDsKKyAgICAgICAgZ2ludDY0IGljeU1ldGFJbnQg
PSBnX2FzY2lpX3N0cnRvbGwodmFsdWUudXRmOCgpLmRhdGEoKSwgJmVuZHB0ciwgMTApOworICAg
ICAgICAgICAgCisgICAgICAgIGlmIChlbmRwdHIgJiYgKmVuZHB0ciA9PSAnXDAnICYmIGljeU1l
dGFJbnQgPiAwKSB7CisgICAgICAgICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X2NhcHNfbmV3X3Np
bXBsZSgiYXBwbGljYXRpb24veC1pY3kiLCAibWV0YWRhdGEtaW50ZXJ2YWwiLCBHX1RZUEVfSU5U
LCAoZ2ludCkgaWN5TWV0YUludCwgTlVMTCk7CisKKyAgICAgICAgICAgIGdzdF9hcHBfc3JjX3Nl
dF9jYXBzKHByaXYtPmFwcHNyYywgY2Fwcyk7CisgICAgICAgICAgICBnc3RfY2Fwc191bnJlZihj
YXBzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdzdFRhZ0xpc3QqIHRhZ3MgPSBnc3RfdGFn
X2xpc3RfbmV3KCk7CisgICAgdmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoImljeS1u
YW1lIik7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYt
PmlyYWRpb05hbWUpOworICAgICAgICBwcml2LT5pcmFkaW9OYW1lID0gZ19zdHJkdXAodmFsdWUu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChtX3NyYyks
ICJpcmFkaW8tbmFtZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9UQUdf
TUVSR0VfUkVQTEFDRSwgR1NUX1RBR19PUkdBTklaQVRJT04sIHByaXYtPmlyYWRpb05hbWUsIE5V
TEwpOworICAgIH0KKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LWdl
bnJlIik7CisgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19mcmVlKHByaXYt
PmlyYWRpb0dlbnJlKTsKKyAgICAgICAgcHJpdi0+aXJhZGlvR2VucmUgPSBnX3N0cmR1cCh2YWx1
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3Jj
KSwgImlyYWRpby1nZW5yZSIpOworICAgICAgICBnc3RfdGFnX2xpc3RfYWRkKHRhZ3MsIEdTVF9U
QUdfTUVSR0VfUkVQTEFDRSwgR1NUX1RBR19HRU5SRSwgcHJpdi0+aXJhZGlvR2VucmUsIE5VTEwp
OworICAgIH0KKyAgICB2YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiaWN5LXVybCIp
OworICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfZnJlZShwcml2LT5pcmFk
aW9VcmwpOworICAgICAgICBwcml2LT5pcmFkaW9VcmwgPSBnX3N0cmR1cCh2YWx1ZS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fc3JjKSwgImlyYWRp
by11cmwiKTsKKyAgICAgICAgZ3N0X3RhZ19saXN0X2FkZCh0YWdzLCBHU1RfVEFHX01FUkdFX1JF
UExBQ0UsIEdTVF9UQUdfTE9DQVRJT04sIHByaXYtPmlyYWRpb1VybCwgTlVMTCk7CisgICAgfQor
ICAgIHZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJpY3ktdGl0bGUiKTsKKyAgICBp
ZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBnX2ZyZWUocHJpdi0+aXJhZGlvVGl0bGUp
OworICAgICAgICBwcml2LT5pcmFkaW9UaXRsZSA9IGdfc3RyZHVwKHZhbHVlLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV9zcmMpLCAiaXJhZGlvLXRp
dGxlIik7CisgICAgICAgIGdzdF90YWdfbGlzdF9hZGQodGFncywgR1NUX1RBR19NRVJHRV9SRVBM
QUNFLCBHU1RfVEFHX1RJVExFLCBwcml2LT5pcmFkaW9UaXRsZSwgTlVMTCk7CisgICAgfQorCisg
ICAgaWYgKGdzdF90YWdfbGlzdF9pc19lbXB0eSh0YWdzKSkKKyAgICAgICAgZ3N0X3RhZ19saXN0
X2ZyZWUodGFncyk7CisgICAgZWxzZQorICAgICAgICBnc3RfZWxlbWVudF9mb3VuZF90YWdzX2Zv
cl9wYWQoR1NUX0VMRU1FTlQobV9zcmMpLCBtX3NyYy0+cHJpdi0+c3JjcGFkLCB0YWdzKTsKK30K
Kwordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkK
K3sKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CisKKyAgICBH
U1RfTE9HX09CSkVDVChtX3NyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIGxlbmd0aCk7CisK
KyAgICBpZiAocHJpdi0+c2Vla0lEIHx8IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkg
eworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdu
b3JpbmcgZGF0YSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR3N0QnVmZmVyKiBi
dWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MobGVuZ3RoKTsKKworICAgIG1lbWNweShH
U1RfQlVGRkVSX0RBVEEoYnVmZmVyKSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBHU1RfQlVGRkVSX09G
RlNFVChidWZmZXIpID0gcHJpdi0+b2Zmc2V0OworICAgIHByaXYtPm9mZnNldCArPSBsZW5ndGg7
CisgICAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CisKKyAg
ICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNy
YywgYnVmZmVyKTsKKyAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxP
V19VTkVYUEVDVEVEKQorICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgQ09SRSwgRkFJ
TEVELCAoMCksICgwKSk7Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKikKK3sKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiSGF2
ZSBFT1MiKTsKKyAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKG1fc3JjLT5wcml2LT5hcHBz
cmMpOworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIEdTVF9FUlJPUl9PQkpFQ1QobV9z
cmMsICJIYXZlIGZhaWx1cmU6ICVzIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgUkVTT1VSQ0UsIEZBSUxF
RCwgKCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSksICgw
KSk7CisgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShtX3NyYy0+cHJpdi0+YXBwc3JjKTsK
K30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6Ondhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKQor
eworfQorCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRs
ZSopCit7Cit9CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMDQ1ZTdkNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VA
Y29sbGFib3JhLmNvLnVrPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRl
ZiBXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXJfaAorI2RlZmluZSBXZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXJfaAorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0df
QkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfU1JDICAgICAgICAgICAgKHdl
YmtpdF93ZWJfc3JjX2dldF90eXBlICgpKQorI2RlZmluZSBXRUJLSVRfV0VCX1NSQyhvYmopICAg
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgV0VCS0lUX1RZUEVf
V0VCX1NSQywgV2ViS2l0V2ViU3JjKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9TUkNfQ0xBU1Moa2xh
c3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfV0VC
X1NSQywgV2ViS2l0V2ViU3JjQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1NSQyhvYmop
ICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgV0VCS0lUX1RZUEVf
V0VCX1NSQykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfU1JDX0NMQVNTKGtsYXNzKSAoR19UWVBF
X0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9TUkMpKQorCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViU3JjICAgICAgICBXZWJLaXRXZWJTcmM7Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViU3JjQ2xhc3MgICBXZWJLaXRXZWJTcmNDbGFzczsKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJTcmNQcml2YXRlIFdlYktpdFdlYlNyY1ByaXZhdGU7CisKK3N0cnVjdCBf
V2ViS2l0V2ViU3JjIHsKKyAgICBHc3RCaW4gcGFyZW50OworCisgICAgV2ViS2l0V2ViU3JjUHJp
dmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0V2ViU3JjQ2xhc3MgeworICAgIEdzdEJp
bkNsYXNzIHBhcmVudENsYXNzOworfTsKKworR1R5cGUgd2Via2l0X3dlYl9zcmNfZ2V0X3R5cGUo
dm9pZCk7Cit2b2lkICB3ZWJLaXRXZWJTcmNTZXRGcmFtZShXZWJLaXRXZWJTcmMqIHNyYywgV2Vi
Q29yZTo6RnJhbWUqIGZyYW1lKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNjAwZDYzNS4uMjEyNDFhMiAxMDA2
NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNzA0LDYgKzcwNCw3
IEBAIGZpCiBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCiAgICBQS0dfQ0hF
Q0tfTU9EVUxFUyhbR1NUUkVBTUVSXSwKICAgICAgICAgICAgICAgICAgICAgIFtnc3RyZWFtZXIt
MC4xMCA+PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KKyAgICAgICAgICAgICAgICAgICAg
IGdzdHJlYW1lci1hcHAtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWJhc2Ut
MC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMAogICAgICAg
ICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBsdWdpbnMtYmFzZS0wLjEwCi0tIAoxLjYuNi4xCgo=
</data>
<flag name="review"
          id="30877"
          type_id="1"
          status="+"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="30882"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>