<?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>62533</bug_id>
          
          <creation_ts>2011-06-13 00:07:53 -0700</creation_ts>
          <short_desc>[EFL] Fix and update doxygen documentation for ewk_frame</short_desc>
          <delta_ts>2011-06-15 09:45:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Grzegorz Czajkowski">g.czajkowski</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>419456</commentid>
    <comment_count>0</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-06-13 00:07:53 -0700</bug_when>
    <thetext>This patch:
 - fixes method descriptions,
 - adds briefs for structure and typdef,
 - replaces NULL to 0 in doxygen documentation (webkit&apos;s style required it),
 - removes dotes from the end of params and return description (see EFL&apos;s documentation),
 - moves includes and defines below brief of ewk_frame.h
 - moves internal methods at the end of ewk_frame.cpp

It will be nice to replace a brief of structure and typedef from
/// Represents actions of touch events (C++ style),
to
//! Represents actions of touch events (C style).
webkit&apos;s style treats this kind of comment as a generall comment and it causes problems.

I would like to know your opinion about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419458</commentid>
    <comment_count>1</comment_count>
      <attachid>96930</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-06-13 00:12:25 -0700</bug_when>
    <thetext>Created attachment 96930
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419531</commentid>
    <comment_count>2</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-13 06:36:41 -0700</bug_when>
    <thetext>&gt; Source/WebKit/efl/ChangeLog:12
&gt; +         - removes dotes from the end of params and return description (see EFL&apos;s documentation),

dotes -&gt; dots (or full stops)

&gt; Source/WebKit/efl/ChangeLog:14
&gt; +         - moves internal methods at the end of ewk_frame.cpp.

at the end -&gt; to the end

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:377
&gt; + * Finds a child frame by it&apos;s name, recursively.

Wrong change :)

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:425
&gt; + * It returns a internal string and should not

a internal -&gt; an internal

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:441
&gt; + * It returns a internal string and should not

ditto

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:457
&gt; + * It returns a internal string and should not

ditto

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:541
&gt; + * @param contents what to load into frame, must @b not be @c 0

It can be 0, the function will just return EINA_FALSE if so.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:681
&gt;   * Selects everything.

Even though you have not written this line yourself, I&apos;d rather make it more specific than &quot;everything&quot;.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:809
&gt; + * Sets if should highlight matches marked with ewk_frame_text_matches_mark().

I&apos;d change it to &quot;Sets whether matches marked with ewk_frame_text_matches_mark() should be highlighted&quot;.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:825
&gt; + * Gets if should highlight matches marked with ewk_frame_text_matches_mark().

I&apos;d change it to &quot;Returns whether matches marked with ewk_frame_text_matches_mark() should be highlighted&quot;.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:829
&gt; + * @return @c EINA_TRUE if matches are highlighted, @c EINA_FALSE otherwise

Either change &quot;are&quot; to to &quot;should&quot; here, or do the opposite above.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:855
&gt; + * Gets position of n-th matched text in the frame.

I&apos;d change it to &quot;Returns the position of the n-th matched text in the frame&quot;.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:983
&gt; + * Queries if is possible to navigate backwards one item in the history.

if is -&gt; if it is

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:987
&gt; + * @return @c EINA_TRUE if is possible to navigate backward one item in the history, @c EINA_FALSE otherwise

if is -&gt; if it is
backward -&gt; backwards

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:997
&gt; + * Queries if is possible to navigate forwards one item in the history.

ditto

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1001
&gt; + * @return @c EINA_TRUE if is possible to navigate forwards in the history, @c EINA_FALSE otherwise

ditto

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1011
&gt; + * Queries if is possible to navigate given @a steps in the history.

iddot

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1017
&gt; + * @return @c EINA_TRUE if is possible to navigate @a steps in the history, @c EINA_FALSE otherwise

ditto

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1028
&gt; + * Gets current zoom level used by this frame.

gets the

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1045
&gt; + * Sets current zoom level used by this frame.

sets the

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1105
&gt; + * @param hit_test instance, must @b not be @c 0

It can actually be 0, the function will just return in this case.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1187
&gt; + * Sets a relative scroll of the given frame.

There could be a more detailed description here, stating that this function will scroll  N pixels from the current location.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1206
&gt; + * Sets an absolute scroll of the given frame.

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1329
&gt; + * It gets paintsEntireContents flag. This flag tells if dirty areas 

IMO, paintsEntireContents should not be mentioned at all, as it is an implementation detail. Just explaining what the returned value means should be enough.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1348
&gt; + * It sets paintsEntireContents flag. This flag tells if dirty areas 

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1382
&gt; + * Currently feature &lt;b&gt;is not implemented&lt;/b&gt;. What should be done on focus out?

I don&apos;t think this line should be added.

&gt; Source/WebKit/efl/ewk/ewk_frame.h:75
&gt; + * \brief   Structure used to report load errors.

@brief for consistency with the rest?

&gt; Source/WebKit/efl/ewk/ewk_frame.h:96
&gt; + * \brief   Structure used to report resource request.

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419884</commentid>
    <comment_count>3</comment_count>
      <attachid>96930</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-13 14:41:20 -0700</bug_when>
    <thetext>Comment on attachment 96930
proposed patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419885</commentid>
    <comment_count>4</comment_count>
      <attachid>96930</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-13 14:41:49 -0700</bug_when>
    <thetext>Comment on attachment 96930
proposed patch

Looks like you had a real review, they just didn&apos;t set the r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420253</commentid>
    <comment_count>5</comment_count>
      <attachid>97078</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-06-14 00:18:43 -0700</bug_when>
    <thetext>Created attachment 97078
updated patch according to Raphael&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420259</commentid>
    <comment_count>6</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-06-14 00:29:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebKit/efl/ChangeLog:12
&gt; &gt; +         - removes dotes from the end of params and return description (see EFL&apos;s documentation),

Thanks for your review.

&gt; 
&gt; dotes -&gt; dots (or full stops)

Fixed.

&gt; 
&gt; &gt; Source/WebKit/efl/ChangeLog:14
&gt; &gt; +         - moves internal methods at the end of ewk_frame.cpp.
&gt; 
&gt; at the end -&gt; to the end

Fixed.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:377
&gt; &gt; + * Finds a child frame by it&apos;s name, recursively.
&gt; 
&gt; Wrong change :)

Finds a child frame by name 
or
Finds a child frame by it name 

I used second one. Do you agree? :)

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:425
&gt; &gt; + * It returns a internal string and should not
&gt; 
&gt; a internal -&gt; an internal

Fixed in all cases,

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:441
&gt; &gt; + * It returns a internal string and should not
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:457
&gt; &gt; + * It returns a internal string and should not
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:541
&gt; &gt; + * @param contents what to load into frame, must @b not be @c 0
&gt; 
&gt; It can be 0, the function will just return EINA_FALSE if so.

Removed &quot;, must @b not be @c 0&quot;

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:681
&gt; &gt;   * Selects everything.
&gt; 
&gt; Even though you have not written this line yourself, I&apos;d rather make it more specific than &quot;everything&quot;.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:809
&gt; &gt; + * Sets if should highlight matches marked with ewk_frame_text_matches_mark().
&gt; 
&gt; I&apos;d change it to &quot;Sets whether matches marked with ewk_frame_text_matches_mark() should be highlighted&quot;.

Changed

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:825
&gt; &gt; + * Gets if should highlight matches marked with ewk_frame_text_matches_mark().
&gt; 
&gt; I&apos;d change it to &quot;Returns whether matches marked with ewk_frame_text_matches_mark() should be highlighted&quot;.

Changed to: Returns whether matches marked with ewk_frame_text_matches_mark() are highlighted.

&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:829
&gt; &gt; + * @return @c EINA_TRUE if matches are highlighted, @c EINA_FALSE otherwise
&gt; 
&gt; Either change &quot;are&quot; to to &quot;should&quot; here, or do the opposite above.

Changed &quot;are&quot; above.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:855
&gt; &gt; + * Gets position of n-th matched text in the frame.
&gt; 
&gt; I&apos;d change it to &quot;Returns the position of the n-th matched text in the frame&quot;.

Changed

&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:983
&gt; &gt; + * Queries if is possible to navigate backwards one item in the history.
&gt; 
&gt; if is -&gt; if it is

Replaces &quot;if is&quot; to &quot;if it&apos;s&quot; in all history methods.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:987
&gt; &gt; + * @return @c EINA_TRUE if is possible to navigate backward one item in the history, @c EINA_FALSE otherwise
&gt; 
&gt; if is -&gt; if it is
&gt; backward -&gt; backwards

Fixed

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:997
&gt; &gt; + * Queries if is possible to navigate forwards one item in the history.
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1001
&gt; &gt; + * @return @c EINA_TRUE if is possible to navigate forwards in the history, @c EINA_FALSE otherwise
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1011
&gt; &gt; + * Queries if is possible to navigate given @a steps in the history.
&gt; 
&gt; iddot
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1017
&gt; &gt; + * @return @c EINA_TRUE if is possible to navigate @a steps in the history, @c EINA_FALSE otherwise
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1028
&gt; &gt; + * Gets current zoom level used by this frame.
&gt; 
&gt; gets the
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1045
&gt; &gt; + * Sets current zoom level used by this frame.
&gt; 
&gt; sets the
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1105
&gt; &gt; + * @param hit_test instance, must @b not be @c 0
&gt; 
&gt; It can actually be 0, the function will just return in this case.

Removed &quot;, must @b not be @c 0&quot;
 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1187
&gt; &gt; + * Sets a relative scroll of the given frame.
&gt; 
&gt; There could be a more detailed description here, stating that this function will scroll  N pixels from the current location.

Added an additional comment:
This function does scroll @a dx and @a dy pixels from the current position of scroll.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1206
&gt; &gt; + * Sets an absolute scroll of the given frame.
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1329
&gt; &gt; + * It gets paintsEntireContents flag. This flag tells if dirty areas 
&gt; 
&gt; IMO, paintsEntireContents should not be mentioned at all, as it is an implementation detail. Just explaining what the returned value means should be enough.

Ok.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1348
&gt; &gt; + * It sets paintsEntireContents flag. This flag tells if dirty areas 
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1382
&gt; &gt; + * Currently feature &lt;b&gt;is not implemented&lt;/b&gt;. What should be done on focus out?
&gt; 
&gt; I don&apos;t think this line should be added.

Removed

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.h:75
&gt; &gt; + * \brief   Structure used to report load errors.
&gt; 
&gt; @brief for consistency with the rest?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.h:96
&gt; &gt; + * \brief   Structure used to report resource request.
&gt; 
&gt; ditto


Replaced to @brief</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420265</commentid>
    <comment_count>7</comment_count>
      <attachid>97080</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-06-14 01:02:44 -0700</bug_when>
    <thetext>Created attachment 97080
updated patch

Restores origin ewk_frame_child_find description.
Updated patch to https://bugs.webkit.org/show_bug.cgi?id=62365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420346</commentid>
    <comment_count>8</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 05:44:40 -0700</bug_when>
    <thetext>Informal r+ from my side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421302</commentid>
    <comment_count>9</comment_count>
      <attachid>97080</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-06-15 08:11:24 -0700</bug_when>
    <thetext>Comment on attachment 97080
updated patch

CQ+ it when it gets API reviewed, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421337</commentid>
    <comment_count>10</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-15 09:04:32 -0700</bug_when>
    <thetext>I&apos;ve reviewed it a few days ago, but can&apos;t cq+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421340</commentid>
    <comment_count>11</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-06-15 09:06:09 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I&apos;ve reviewed it a few days ago, but can&apos;t cq+ it.

I think it will conflict with recent changes to that file, but let&apos;s try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421384</commentid>
    <comment_count>12</comment_count>
      <attachid>97080</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-15 09:45:23 -0700</bug_when>
    <thetext>Comment on attachment 97080
updated patch

Clearing flags on attachment: 97080

Committed r88947: &lt;http://trac.webkit.org/changeset/88947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421386</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-15 09:45:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96930</attachid>
            <date>2011-06-13 00:12:25 -0700</date>
            <delta_ts>2011-06-14 00:18:43 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>ewk_frame_doxygen_doc.patch</filename>
            <type>text/plain</type>
            <size>47674</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAwNzA4Y2FmLi4yY2E0MjgwIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTEtMDYtMTMgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdlbiBkb2N1bWVudGF0aW9uIGZv
ciBld2tfZnJhbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MjUzMworCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAgICAgICAtIGZpeGVzIG1ldGhv
ZCBkZXNjcmlwdGlvbnMsCisgICAgICAgICAtIGFkZHMgYnJpZWZzIGZvciBzdHJ1Y3R1cmUgYW5k
IHR5cGRlZiwKKyAgICAgICAgIC0gcmVwbGFjZXMgTlVMTCB0byAwIGluIGRveHlnZW4gZG9jdW1l
bnRhdGlvbiAod2Via2l0J3Mgc3R5bGUgcmVxdWlyZWQgaXQpLAorICAgICAgICAgLSByZW1vdmVz
IGRvdGVzIGZyb20gdGhlIGVuZCBvZiBwYXJhbXMgYW5kIHJldHVybiBkZXNjcmlwdGlvbiAoc2Vl
IEVGTCdzIGRvY3VtZW50YXRpb24pLAorICAgICAgICAgLSBtb3ZlcyBpbmNsdWRlcyBhbmQgZGVm
aW5lcyBiZWxvdyBhIGJyaWVmIG9mIGV3a19mcmFtZS5oCisgICAgICAgICAtIG1vdmVzIGludGVy
bmFsIG1ldGhvZHMgYXQgdGhlIGVuZCBvZiBld2tfZnJhbWUuY3BwLgorCisgICAgICAgICogZXdr
L2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfYWRkKToKKyAgICAgICAgKiBld2sv
ZXdrX2ZyYW1lLmg6CisKIDIwMTEtMDYtMDggIEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCAzODUzZjg2Li4zYmU1NmY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMjg5LDI5ICsyODksMTEgQEAgc3RhdGljIGlubGluZSBF
dmFzX1NtYXJ0KiBfZXdrX2ZyYW1lX3NtYXJ0X2NsYXNzX25ldyh2b2lkKQogfQogCiAvKioKLSAq
IEBpbnRlcm5hbAotICoKLSAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCBGcmFtZSBvYmplY3Qu
Ci0gKgotICogRnJhbWVzIGFyZSBsb3cgbGV2ZWwgZW50cmllcyBjb250YWluZWQgaW4gYSBwYWdl
IHRoYXQgaXMgY29udGFpbmVkCi0gKiBieSBhIHZpZXcuIFVzdWFsbHkgb25lIG9wZXJhdGVzIG9u
IHRoZSB2aWV3IGFuZCBub3QgZGlyZWN0bHkgb24gdGhlCi0gKiBmcmFtZS4KLSAqCi0gKiBAcGFy
YW0gZSBjYW52YXMgd2hlcmUgdG8gY3JlYXRlIHRoZSBmcmFtZSBvYmplY3QuCi0gKgotICogQHJl
dHVybiBmcmFtZSBvYmplY3Qgb3IgQGMgTlVMTCBpZiBlcnJvcnMuCi0gKi8KLUV2YXNfT2JqZWN0
KiBld2tfZnJhbWVfYWRkKEV2YXMqIGUpCi17Ci0gICAgcmV0dXJuIGV2YXNfb2JqZWN0X3NtYXJ0
X2FkZChlLCBfZXdrX2ZyYW1lX3NtYXJ0X2NsYXNzX25ldygpKTsKLX0KLQotLyoqCiAgKiBSZXRy
aWV2ZXMgdGhlIGV3a192aWV3IG9iamVjdCB0aGF0IG93bnMgdGhpcyBmcmFtZS4KICAqCi0gKiBA
cGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHZpZXcgZnJvbS4KKyAqIEBwYXJhbSBvIGZyYW1l
IG9iamVjdCB0byBnZXQgdmlldyBvYmplY3QKICAqCi0gKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9y
IEBjIE5VTEwgaWYgZXJyb3JzLgorICogQHJldHVybiB2aWV3IG9iamVjdCBvciBAYyAwIG9uIGZh
aWx1cmUKICAqLwogRXZhc19PYmplY3QqIGV3a19mcmFtZV92aWV3X2dldChjb25zdCBFdmFzX09i
amVjdCogbykKIHsKQEAgLTMyMCwxMyArMzAyLDE2IEBAIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVf
dmlld19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogU2V0IHRoZSB0aGVt
ZSBwYXRoIHRvIGJlIHVzZWQgYnkgdGhpcyBmcmFtZS4KKyAqIFNldHMgdGhlIHRoZW1lIHBhdGgg
dGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhpcyBmcmFtZS4KICAqCiAgKiBGcmFtZXMgaW5oZXJpdCB0
aGVtZSBmcm9tIHRoZWlyIHBhcmVudCwgdGhpcyB3aWxsIGhhdmUgYWxsIGZyYW1lcwogICogd2l0
aCB1bnNldCB0aGVtZSB0byB1c2UgdGhpcyBvbmUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2Jq
ZWN0IHRvIGNoYW5nZSB0aGVtZS4KLSAqIEBwYXJhbSBwYXRoIHRoZW1lIHBhdGgsIG1heSBiZSBA
YyBOVUxMIHRvIHJlc2V0IHRvIGRlZmF1bHQgb3IgaW5oZXJpdCBwYXJlbnQuCisgKiBAcGFyYW0g
byBmcmFtZSBvYmplY3QgdG8gY2hhbmdlIHRoZW1lCisgKiBAcGFyYW0gcGF0aCB0aGVtZSBwYXRo
LCBtYXkgYmUgQGMgMCB0byByZXNldCB0byBkZWZhdWx0IHRoZW1lCisgKiAgICAgIG9yIGluaGVy
aXQgcGFyZW50J3MgdGhlbWUuCisgKgorICogQHNlZSBld2tfZnJhbWVfdGhlbWVfZ2V0KCkKICAq
Lwogdm9pZCBld2tfZnJhbWVfdGhlbWVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBw
YXRoKQogewpAQCAtMzQwLDE0ICszMjUsMTQgQEAgdm9pZCBld2tfZnJhbWVfdGhlbWVfc2V0KEV2
YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBwYXRoKQogfQogCiAvKioKLSAqIEdldHMgdGhlIGlt
bWVkaWF0ZSB0aGVtZSBzZXQgb24gdGhpcyBmcmFtZS4KKyAqIEdldHMgdGhlIHRoZW1lIHNldCBv
biB0aGlzIGZyYW1lLgogICoKICAqIFRoaXMgcmV0dXJucyB0aGUgdmFsdWUgc2V0IGJ5IGV3a19m
cmFtZV90aGVtZV9zZXQoKS4gTm90ZSB0aGF0IGlmCi0gKiBpdCBpcyBAYyBOVUxMLCB0aGUgZnJh
bWUgd2lsbCBpbmhlcml0IHBhcmVudCdzIHRoZW1lLgorICogaXQgaXMgQGMgMCwgdGhlIGZyYW1l
IHdpbGwgaW5oZXJpdCBwYXJlbnQncyB0aGVtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gZ2V0IHRoZW1lIHBhdGguCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHRo
ZW1lIHBhdGgKICAqCi0gKiBAcmV0dXJuIHRoZW1lIHBhdGgsIG1heSBiZSBAYyBOVUxMIGlmIG5v
dCBzZXQuCisgKiBAcmV0dXJuIHRoZW1lIHBhdGgsIG1heSBiZSBAYyAwIGlmIG5vdCBzZXQKICAq
LwogY29uc3QgY2hhciogZXdrX2ZyYW1lX3RoZW1lX2dldChFdmFzX09iamVjdCogbykKIHsKQEAg
LTM2NCw5ICszNDksMTIgQEAgY29uc3QgY2hhciogZXdrX2ZyYW1lX3RoZW1lX2dldChFdmFzX09i
amVjdCogbykKICAqIEl0ZXJhdGlvbiByZXN1bHRzIGFyZSBFdmFzX09iamVjdCosIHNvIGdpdmUg
ZWluYV9pdGVyYXRvcl9uZXh0KCkgYQogICogcG9pbnRlciB0byBpdC4KICAqCi0gKiBAcmV0dXJu
IGEgbmV3bHkgYWxsb2NhdGVkIGl0ZXJhdG9yLCBmcmVlIHVzaW5nCi0gKiAgICAgICAgIGVpbmFf
aXRlcmF0b3JfZnJlZSgpLiBJZiBub3QgcG9zc2libGUgdG8gY3JlYXRlIHRoZQotICogICAgICAg
ICBpdGVyYXRvciwgQGMgTlVMTCBpcyByZXR1cm5lZC4KKyAqIFJldHVybmVkIGl0ZXJhdG9yIHNo
b3VsZCBiZSBmcmVlZCBieSBlaW5hX2l0ZXJhdG9yX2ZyZWUoKS4KKyAqCisgKiBAcGFyYW0gbyBm
cmFtZSBvYmplY3QgdG8gY3JlYXRlIHRoZSBpdGVyYXRvcgorICoKKyAqIEByZXR1cm4gYSBuZXds
eSBhbGxvY2F0ZWQgaXRlcmF0b3Igb24gc3VjZXNzLCBvciBAYyAwIGlmIG5vdCBwb3NzaWJsZSB0
byAKKyAqICAgICAgY3JlYXRlIHRoZSBpdGVyYXRvcgogICovCiBFaW5hX0l0ZXJhdG9yKiBld2tf
ZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KEV2YXNfT2JqZWN0KiBvKQogewpAQCAtMzg2LDcg
KzM3NCw3IEBAIEVpbmFfSXRlcmF0b3IqIGV3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXco
RXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogRmluZHMgYSBjaGlsZCBmcmFtZSBieSBpdHMg
bmFtZSwgcmVjdXJzaXZlbHkuCisgKiBGaW5kcyBhIGNoaWxkIGZyYW1lIGJ5IGl0J3MgbmFtZSwg
cmVjdXJzaXZlbHkuCiAgKgogICogRm9yIHByZS1kZWZpbmVkIG5hbWVzLCByZXR1cm5zIEBhIG8g
aWYgQGEgbmFtZSBpcyAiX3NlbGYiIG9yCiAgKiAiX2N1cnJlbnQiLCByZXR1cm5zIEBhIG8ncyBw
YXJlbnQgZnJhbWUgaWYgQGEgbmFtZSBpcyAiX3BhcmVudCIsCkBAIC0zOTksNyArMzg3LDEwIEBA
IEVpbmFfSXRlcmF0b3IqIGV3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcoRXZhc19PYmpl
Y3QqIG8pCiAgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgc2VhcmNoIGZvciBhIG1hdGNoaW5nIGZyYW1l
IGluIG90aGVyIG1haW4gZnJhbWUKICAqIGhpZXJhcmNoaWVzLgogICoKLSAqIEByZXR1cm4gb2Jq
ZWN0IGlmIGZvdW5kLCBAYyBOVUxMIGlmIG5vdGhpbmcgd2l0aCB0aGF0IG5hbWUuCisgKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gZmluZCBhIGNoaWxkIGZyYW1lCisgKiBAcGFyYW0gbmFtZSBj
aGlsZCBmcmFtZSBuYW1lCisgKgorICogQHJldHVybiBjaGlsZCBmcmFtZSBvZiB0aGUgZ2l2ZW4g
ZnJhbWUsIG9yIEBjIDAgdGhlIHRoZSBjaGlsZCB3YXNuJ3QgZm91bmQKICAqLwogRXZhc19PYmpl
Y3QqIGV3a19mcmFtZV9jaGlsZF9maW5kKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBuYW1l
KQogewpAQCAtNDExLDEwICs0MDIsMTIgQEAgRXZhc19PYmplY3QqIGV3a19mcmFtZV9jaGlsZF9m
aW5kKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBuYW1lKQogfQogCiAvKioKLSAqIEFzayBt
YWluIGZyYW1lIHRvIGxvYWQgdGhlIGdpdmVuIFVSSS4KKyAqIEFza3MgdGhlIG1haW4gZnJhbWUg
dG8gbG9hZCB0aGUgZ2l2ZW4gVVJJLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBs
b2FkIHVyaQorICogQHBhcmFtIHVyaSB1bmlmb3JtIHJlc291cmNlIGlkZW50aWZpZXIgdG8gbG9h
ZAogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBsb2FkIHVyaS4KLSAqIEBwYXJhbSB1
cmkgdW5pZm9ybSByZXNvdXJjZSBpZGVudGlmaWVyIHRvIGxvYWQuCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqLwogRWlu
YV9Cb29sIGV3a19mcmFtZV91cmlfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiB1cmkp
CiB7CkBAIC00MjksMTAgKzQyMiwxMiBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9zZXQoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHVyaSkKIC8qKgogICogR2V0cyB0aGUgdXJpIG9mIHRo
aXMgZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB1cmkuCisgKiBJ
dCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQgbm90CisgKiBiZSBtb2RpZmll
ZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4KICAqCi0gKiBA
cmV0dXJuIGZyYW1lIHVyaSBvciBAYyBOVUxMLiBJdCdzIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBz
aG91bGQKLSAqICAgICAgICAgbm90IGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRl
ZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB1
cmkKKyAqCisgKiBAcmV0dXJuIGZyYW1lIHVyaSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVy
ZQogICovCiBjb25zdCBjaGFyKiBld2tfZnJhbWVfdXJpX2dldChjb25zdCBFdmFzX09iamVjdCog
bykKIHsKQEAgLTQ0MywxMCArNDM4LDEyIEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV91cmlfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogLyoqCiAgKiBHZXRzIHRoZSB0aXRsZSBvZiB0aGlzIGZy
YW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgdGl0bGUuCisgKiBJdCBy
ZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQgbm90CisgKiBiZSBtb2RpZmllZC4g
VGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4KKyAqCisgKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHRpdGxlCiAgKgotICogQHJldHVybiBmcmFtZSB0aXRs
ZSBvciBAYyBOVUxMLiBJdCdzIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQKLSAqICAgICAg
ICAgbm90IGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5n
c2hhcmVkLgorICogQHJldHVybiBmcmFtZSB0aXRsZSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFp
bHVyZQogICovCiBjb25zdCBjaGFyKiBld2tfZnJhbWVfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvKQogewpAQCAtNDU3LDEwICs0NTQsMTIgQEAgY29uc3QgY2hhciogZXdrX2ZyYW1lX3Rp
dGxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIC8qKgogICogR2V0cyB0aGUgbmFtZSBvZiB0
aGlzIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgbmFtZS4KKyAq
IEl0IHJldHVybnMgYSBpbnRlcm5hbCBzdHJpbmcgYW5kIHNob3VsZCBub3QKKyAqIGJlIG1vZGlm
aWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgogICoKLSAq
IEByZXR1cm4gZnJhbWUgbmFtZSBvciBAYyBOVUxMLiBJdCdzIGEgaW50ZXJuYWwgc3RyaW5nIGFu
ZCBzaG91bGQKLSAqICAgICAgICAgbm90IGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJh
bnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdl
dCBuYW1lCisgKgorICogQHJldHVybiBmcmFtZSBuYW1lIG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBm
YWlsdXJlCiAgKi8KIGNvbnN0IGNoYXIqIGV3a19mcmFtZV9uYW1lX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKIHsKQEAgLTQ4MSwxNCArNDgwLDE0IEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV9u
YW1lX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIH0KIAogLyoqCi0gKiBHZXQgbGFzdCBrbm93
biBjb250ZW50cyBzaXplLgorICogR2V0cyBsYXN0IGtub3duIGNvbnRlbnRzIHNpemUuCiAgKgot
ICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCBjb250ZW50cyBzaXplLgotICogQHBhcmFt
IHcgd2hlcmUgdG8gc3RvcmUgY29udGVudHMgc2l6ZSB3aWR0aC4gTWF5IGJlIEBjIE5VTEwuCi0g
KiBAcGFyYW0gaCB3aGVyZSB0byBzdG9yZSBjb250ZW50cyBzaXplIGhlaWdodC4gTWF5IGJlIEBj
IE5VTEwuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IGNvbnRlbnRzIHNpemUKKyAq
IEBwYXJhbSB3IHBvaW50ZXIgdG8gc3RvcmUgY29udGVudHMgc2l6ZSB3aWR0aCwgbWF5IGJlIEBj
IDAKKyAqIEBwYXJhbSBoIHBvaW50ZXIgdG8gc3RvcmUgY29udGVudHMgc2l6ZSBoZWlnaHQsIG1h
eSBiZSBAYyAwCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBF
SU5BX0ZBTFNFIG9uIGZhaWx1cmUgYW5kCi0gKiAgICAgICAgIEBhIHcgYW5kIEBhIGggd2lsbCBi
ZSB6ZXJvZWQuCisgKiAgICAgICAgIEBhIHcgYW5kIEBhIGggd2lsbCBiZSB6ZXJvZWQKICAqLwog
RWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19zaXplX2dldChjb25zdCBFdmFzX09iamVjdCog
bywgRXZhc19Db29yZCogdywgRXZhc19Db29yZCogaCkKIHsKQEAgLTUzOCwxNiArNTM3LDE2IEBA
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jb250ZW50c19zZXRfaW50ZXJuYWwoRXdrX0Zy
YW1lX1NtYXJ0X0RhdGEgKnNkLCBjb25zCiAvKioKICAqIFJlcXVlc3RzIGxvYWRpbmcgdGhlIGdp
dmVuIGNvbnRlbnRzIGluIHRoaXMgZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHRvIGxvYWQgZG9jdW1lbnQuCi0gKiBAcGFyYW0gY29udGVudHMgd2hhdCB0byBsb2FkIGludG8g
ZnJhbWUuIE11c3Qgbm90IGJlIEBjIE5VTEwuCi0gKiBAcGFyYW0gY29udGVudHNfc2l6ZSBieXRl
IHNpemUgb2YgZGF0YSBpbiBAYSBjb250ZW50cy4KLSAqICAgICAgICBJZiB6ZXJvLCBzdHJsZW4o
KSBpcyB1c2VkLgotICogQHBhcmFtIG1pbWVfdHlwZSB0eXBlIG9mIEBhIGNvbnRlbnRzIGRhdGEu
IElmIEBjIE5VTEwgInRleHQvaHRtbCIgaXMgYXNzdW1lZC4KLSAqIEBwYXJhbSBlbmNvZGluZyB1
c2VkIGZvciBAYSBjb250ZW50cyBkYXRhLiBJZiBAYyBOVUxMICJVVEYtOCIgaXMgYXNzdW1lZC4K
LSAqIEBwYXJhbSBiYXNlX3VyaSBiYXNlIHVyaSB0byB1c2UgZm9yIHJlbGF0aXZlIHJlc291cmNl
cy4gTWF5IGJlIEBjIE5VTEwuCi0gKiAgICAgICAgSWYgcHJvdmlkZWQgbXVzdCBiZSBhbiBhYnNv
bHV0ZSB1cmkuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbG9hZCBkb2N1bWVudAorICog
QHBhcmFtIGNvbnRlbnRzIHdoYXQgdG8gbG9hZCBpbnRvIGZyYW1lLCBtdXN0IEBiIG5vdCBiZSBA
YyAwCisgKiBAcGFyYW0gY29udGVudHNfc2l6ZSBzaXplIG9mIEBhIGNvbnRlbnRzIChpbiBieXRl
cyksCisgKiAgICAgICAgaWYgQGMgMCBpcyBnaXZlbiwgbGVuZ3RoIG9mIEBhIGNvbnRlbnRzIGlz
IHVzZWQKKyAqIEBwYXJhbSBtaW1lX3R5cGUgdHlwZSBvZiBAYSBjb250ZW50cyBkYXRhLCBpZiBA
YyAwIGlzIGdpdmVuICJ0ZXh0L2h0bWwiIGlzIGFzc3VtZWQKKyAqIEBwYXJhbSBlbmNvZGluZyBl
bmNvZGluZyBmb3IgQGEgY29udGVudHMgZGF0YSwgaWYgQGMgMCBpcyBnaXZlbiAiVVRGLTgiIGlz
IGFzc3VtZWQKKyAqIEBwYXJhbSBiYXNlX3VyaSBiYXNlIHVyaSB0byB1c2UgZm9yIHJlbGF0aXZl
IHJlc291cmNlcywgbWF5IGJlIEBjIDAsCisgKiAgICAgICAgaWYgcHJvdmlkZWQgQGIgbXVzdCBi
ZSBhbiBhYnNvbHV0ZSB1cmkKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
ZnVsIHJlcXVlc3QsIEBjIEVJTkFfRkFMU0Ugb24gZXJyb3JzLgorICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2Vzc2Z1bCByZXF1ZXN0LCBAYyBFSU5BX0ZBTFNFIG9uIGVycm9ycwogICov
CiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NldChFdmFzX09iamVjdCogbywgY29uc3Qg
Y2hhciogY29udGVudHMsIHNpemVfdCBjb250ZW50c19zaXplLCBjb25zdCBjaGFyKiBtaW1lX3R5
cGUsIGNvbnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBiYXNlX3VyaSkKIHsKQEAgLTU2
MiwyMSArNTYxLDIxIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBjb25zdCBjaGFyKiBjb250ZW50cywgc2l6ZV90IGNvCiAgKiBSZXF1ZXN0cyBsb2Fk
aW5nIGFsdGVybmF0aXZlIGNvbnRlbnRzIGZvciB1bnJlYWNoYWJsZSBVUkkgaW4gdGhpcyBmcmFt
ZS4KICAqCiAgKiBUaGlzIGlzIHNpbWlsYXIgdG8gZXdrX2ZyYW1lX2NvbnRlbnRzX3NldCgpLCBi
dXQgaXMgdXNlZCB3aGVuIHNvbWUKLSAqIFVSSSBmYWlsZWQgdG8gbG9hZCwgdXNpbmcgdGhlIHBy
b3ZpZGVkIGNvbnRlbnQgaW5zdGVhZC4gVGhlIG1haW4KKyAqIFVSSSB3YXMgZmFpbGVkIHRvIGxv
YWQsIHVzaW5nIHRoZSBwcm92aWRlZCBjb250ZW50IGluc3RlYWQuIFRoZSBtYWluCiAgKiBkaWZm
ZXJlbmNlIGlzIHRoYXQgYmFjay1mb3J3YXJkIG5hdmlnYXRpb24gbGlzdCBpcyBub3QgY2hhbmdl
ZC4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbG9hZCBkb2N1bWVudC4KLSAqIEBw
YXJhbSBjb250ZW50cyB3aGF0IHRvIGxvYWQgaW50byBmcmFtZS4gTXVzdCBub3QgYmUgQGMgTlVM
TC4KLSAqIEBwYXJhbSBjb250ZW50c19zaXplIGJ5dGUgc2l6ZSBvZiBkYXRhIGluIEBhIGNvbnRl
bnRzLgotICogICAgICAgIElmIHplcm8sIHN0cmxlbigpIGlzIHVzZWQuCi0gKiBAcGFyYW0gbWlt
ZV90eXBlIHR5cGUgb2YgQGEgY29udGVudHMgZGF0YS4gSWYgQGMgTlVMTCAidGV4dC9odG1sIiBp
cyBhc3N1bWVkLgotICogQHBhcmFtIGVuY29kaW5nIHVzZWQgZm9yIEBhIGNvbnRlbnRzIGRhdGEu
IElmIEBjIE5VTEwgIlVURi04IiBpcyBhc3N1bWVkLgotICogQHBhcmFtIGJhc2VfdXJpIGJhc2Ug
dXJpIHRvIHVzZSBmb3IgcmVsYXRpdmUgcmVzb3VyY2VzLiBNYXkgYmUgQGMgTlVMTC4KLSAqICAg
ICAgICBJZiBwcm92aWRlZCBtdXN0IGJlIGFuIGFic29sdXRlIHVyaS4KKyAqIEBwYXJhbSBvIGZy
YW1lIG9iamVjdCB0byBsb2FkIGFsdGVybmF0aXZlIGNvbnRlbnQKKyAqIEBwYXJhbSBjb250ZW50
cyB3aGF0IHRvIGxvYWQgaW50byBmcmFtZSwgbXVzdCBAYiBub3QgYmUgQGMgMAorICogQHBhcmFt
IGNvbnRlbnRzX3NpemUgc2l6ZSBvZiBAYSBjb250ZW50cyAoaW4gYnl0ZXMpLAorICogICAgICAg
IGlmIEBjIDAgaXMgZ2l2ZW4sIGxlbmd0aCBvZiBAYSBjb250ZW50cyBpcyB1c2VkCisgKiBAcGFy
YW0gbWltZV90eXBlIHR5cGUgb2YgQGEgY29udGVudHMgZGF0YSwgaWYgQGMgMCBpcyBnaXZlbiAi
dGV4dC9odG1sIiBpcyBhc3N1bWVkCisgKiBAcGFyYW0gZW5jb2RpbmcgZW5jb2RpbmcgdXNlZCBm
b3IgQGEgY29udGVudHMgZGF0YSwgaWYgQGMgMCBpcyBnaXZlbiAiVVRGLTgiIGlzIGFzc3VtZWQK
KyAqIEBwYXJhbSBiYXNlX3VyaSBiYXNlIFVSSSB0byB1c2UgZm9yIHJlbGF0aXZlIHJlc291cmNl
cywgbWF5IGJlIEBjIDAsCisgKiAgICAgICAgaWYgcHJvdmlkZWQgbXVzdCBiZSBhbiBhYnNvbHV0
ZSB1cmkKICAqIEBwYXJhbSB1bnJlYWNoYWJsZV91cmkgdGhlIFVSSSB0aGF0IGZhaWxlZCB0byBs
b2FkIGFuZCBpcyBnZXR0aW5nIHRoZQotICogICAgICAgIGFsdGVybmF0aXZlIHJlcHJlc2VudGF0
aW9uLgorICogICAgICAgIGFsdGVybmF0aXZlIHJlcHJlc2VudGF0aW9uCiAgKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzc2Z1bCByZXF1ZXN0LCBAYyBFSU5BX0ZBTFNFIG9uIGVy
cm9ycy4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3NmdWwgcmVxdWVzdCwgQGMg
RUlOQV9GQUxTRSBvbiBlcnJvcnMKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19h
bHRlcm5hdGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBjb250ZW50cywgc2l6ZV90
IGNvbnRlbnRzX3NpemUsIGNvbnN0IGNoYXIqIG1pbWVfdHlwZSwgY29uc3QgY2hhciogZW5jb2Rp
bmcsIGNvbnN0IGNoYXIqIGJhc2VfdXJpLCBjb25zdCBjaGFyKiB1bnJlYWNoYWJsZV91cmkpCiB7
CkBAIC01OTAsMTIgKzU4OSwxMiBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVy
bmF0ZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGNvbnRlbnRzLAogfQogCiAvKioK
LSAqIFJlcXVlc3RzIGV4ZWN1dGlvbiBvZiBnaXZlbiBzY3JpcHQuCisgKiBSZXF1ZXN0cyBleGVj
dXRpb24gb2YgdGhlIGdpdmVuIHNjcmlwdC4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qg
dG8gZXhlY3V0ZSBzY3JpcHQuCi0gKiBAcGFyYW0gc2NyaXB0IGphdmEgc2NyaXB0IHRvIGV4ZWN1
dGUuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZXhlY3V0ZSBzY3JpcHQKKyAqIEBwYXJh
bSBzY3JpcHQgSmF2YSBTY3JpcHQgdG8gZXhlY3V0ZQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIGlmIHJlcXVlc3Qgd2FzIGRvbmUsIEBjIEVJTkFfRkFMU0Ugb24gZXJyb3JzLgorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgaWYgcmVxdWVzdCB3YXMgZG9uZSwgQGMgRUlOQV9GQUxTRSBvbiBl
cnJvcnMKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZShFdmFzX09iamVj
dCogbywgY29uc3QgY2hhciogc2NyaXB0KQogewpAQCAtNjA3LDExICs2MDYsMTEgQEAgRWluYV9C
b29sIGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZShFdmFzX09iamVjdCogbywgY29uc3QgY2hhciog
c2NyaXB0KQogfQogCiAvKioKLSAqIEdldHMgaWYgZnJhbWUgaXMgZWRpdGFibGUuCisgKiBRdWVy
aWVzIGlmIHRoZSBmcmFtZSBpcyBlZGl0YWJsZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gZ2V0IGVkaXRhYmxlIHN0YXRlLgorICogQHBhcmFtIG8gdGhlIGZyYW1lIG9iamVjdCB0
byBxdWVyeSBlZGl0YWJsZSBzdGF0ZQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGVk
aXRhYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIHRoZSBmcmFtZSBpcyBlZGl0YWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwog
RWluYV9Cb29sIGV3a19mcmFtZV9lZGl0YWJsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7
CkBAIC02MjEsMTIgKzYyMCwxMiBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChj
b25zdCBFdmFzX09iamVjdCogbykKIH0KIAogLyoqCi0gKiBTZXRzIGlmIGZyYW1lIGlzIGVkaXRh
YmxlLgorICogU2V0cyBlZGl0YWJsZSBzdGF0ZSBmb3IgZnJhbWUuCiAgKgotICogQHBhcmFtIG8g
ZnJhbWUgb2JqZWN0IHRvIHNldCBlZGl0YWJsZSBzdGF0ZS4KLSAqIEBwYXJhbSBlZGl0YWJsZSBu
ZXcgc3RhdGUuCisgKiBAcGFyYW0gbyB0aGUgZnJhbWUgb2JqZWN0IHRvIHNldCBlZGl0YWJsZSBz
dGF0ZQorICogQHBhcmFtIGVkaXRhYmxlIGEgbmV3IHN0YXRlIHRvIHNldAogICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UK
ICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9lZGl0YWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVp
bmFfQm9vbCBlZGl0YWJsZSkKIHsKQEAgLTY0MSwxMSArNjQwLDEzIEBAIEVpbmFfQm9vbCBld2tf
ZnJhbWVfZWRpdGFibGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgZWRpdGFibGUpCiB9
CiAKIC8qKgotICogR2V0IHRoZSBjb3B5IG9mIHRoZSBzZWxlY3Rpb24gdGV4dC4KKyAqIEdldHMg
dGhlIGNvcHkgb2YgdGhlIHNlbGVjdGVkIHRleHQuCisgKgorICogVGhlIHJldHVybmVkIHN0cmlu
ZyBAYiBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9i
amVjdCB0byBnZXQgc2VsZWN0aW9uIHRleHQuCisgKiBAcGFyYW0gbyB0aGUgZnJhbWUgb2JqZWN0
IHRvIGdldCBzZWxlY3RlZCB0ZXh0CiAgKgotICogQHJldHVybiBuZXdseSBhbGxvY2F0ZWQgc3Ry
aW5nIG9yIEBjIE5VTEwgaWYgbm90aGluZyBpcyBzZWxlY3RlZCBvciBmYWlsdXJlLgorICogQHJl
dHVybiBhIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgb3IgQGMgMCBpZiBub3RoaW5nIGlzIHNlbGVj
dGVkIG9yIG9uIGZhaWx1cmUKICAqLwogY2hhciogZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCiB7CkBAIC02NjMsOSArNjY0LDExIEBAIHN0YXRpYyBpbmxpbmUg
RWluYV9Cb29sIF9ld2tfZnJhbWVfZWRpdG9yX2NvbW1hbmQoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEq
IHNkLCBjb25zCiB9CiAKIC8qKgotICogVW5zZWxlY3RzIHdoYXRldmVyIHdhcyBzZWxlY3RlZC4K
KyAqIFVuc2VsZWN0cyBzZWxlY3RlZCB0ZXh0LgogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIG9wZXJhdGlvbiB3YXMgZXhlY3V0ZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICog
QHBhcmFtIG8gdGhlIGZyYW1lIG9iamVjdCB0byB1bnNlbGVjdCB0ZXh0CisgKgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgb3BlcmF0aW9uIHdhcyBleGVjdXRlZCwgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9zZWxlY3Rfbm9uZShFdmFzX09iamVj
dCogbykKIHsKQEAgLTY3Nyw3ICs2ODAsOSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3NlbGVjdF9u
b25lKEV2YXNfT2JqZWN0KiBvKQogLyoqCiAgKiBTZWxlY3RzIGV2ZXJ5dGhpbmcuCiAgKgotICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgb3BlcmF0aW9uIHdhcyBleGVjdXRlZCwgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UuCisgKiBAcGFyYW0gbyB0aGUgZnJhbWUgb2JqZWN0IHRvIHNlbGVjdCBl
dmVyeXRoaW5nCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgb3BlcmF0aW9uIHdhcyBl
eGVjdXRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFt
ZV9zZWxlY3RfYWxsKEV2YXNfT2JqZWN0KiBvKQogewpAQCAtNjg5LDcgKzY5NCw5IEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfc2VsZWN0X2FsbChFdmFzX09iamVjdCogbykKIC8qKgogICogU2VsZWN0
cyB0aGUgY3VycmVudCBwYXJhZ3JhaC4KICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBv
cGVyYXRpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEBwYXJh
bSBvIHRoZSBmcmFtZSBvYmplY3QgdG8gc2VsZWN0IHRoZSBjdXJyZW50IHBhcmFncmFoCisgKgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgb3BlcmF0aW9uIHdhcyBleGVjdXRlZCwgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9zZWxlY3RfcGFyYWdy
YXBoKEV2YXNfT2JqZWN0KiBvKQogewpAQCAtNzAxLDcgKzcwOCw5IEBAIEVpbmFfQm9vbCBld2tf
ZnJhbWVfc2VsZWN0X3BhcmFncmFwaChFdmFzX09iamVjdCogbykKIC8qKgogICogU2VsZWN0cyB0
aGUgY3VycmVudCBzZW50ZW5jZS4KICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVy
YXRpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEBwYXJhbSBv
IHRoZSBmcmFtZSBvYmplY3QgdG8gc2VsZWN0IHRoZSBjdXJyZW50IHNlbnRlbmNlCisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgb3BlcmF0aW9uIHdhcyBleGVjdXRlZCwgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9zZWxlY3Rfc2VudGVuY2Uo
RXZhc19PYmplY3QqIG8pCiB7CkBAIC03MTMsNyArNzIyLDkgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV9zZWxlY3Rfc2VudGVuY2UoRXZhc19PYmplY3QqIG8pCiAvKioKICAqIFNlbGVjdHMgdGhlIGN1
cnJlbnQgbGluZS4KICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVyYXRpb24gd2Fz
IGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEBwYXJhbSBvIHRoZSBmcmFt
ZSBvYmplY3QgdG8gc2VsZWN0IHRoZSBjdXJyZW50IGxpbmUKKyAqCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiBvcGVyYXRpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lz
ZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3NlbGVjdF9saW5lKEV2YXNfT2JqZWN0KiBvKQog
ewpAQCAtNzI1LDcgKzczNiw5IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfc2VsZWN0X2xpbmUoRXZh
c19PYmplY3QqIG8pCiAvKioKICAqIFNlbGVjdHMgdGhlIGN1cnJlbnQgd29yZC4KICAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVyYXRpb24gd2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZS4KKyAqIEBwYXJhbSBvIHRoZSBmcmFtZSBvYmplY3QgdG8gc2VsZWN0IHRo
ZSBjdXJyZW50IHdvcmQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBvcGVyYXRpb24g
d2FzIGV4ZWN1dGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdr
X2ZyYW1lX3NlbGVjdF93b3JkKEV2YXNfT2JqZWN0KiBvKQogewpAQCAtNzM1LDE1ICs3NDgsMTUg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV9zZWxlY3Rfd29yZChFdmFzX09iamVjdCogbykKIH0KIAog
LyoqCi0gKiBTZWFyY2ggdGhlIGdpdmVuIHRleHQgc3RyaW5nIGluIGRvY3VtZW50LgorICogU2Vh
cmNoZXMgdGhlIGdpdmVuIHN0cmluZyBpbiBhIGRvY3VtZW50LgogICoKLSAqIEBwYXJhbSBvIGZy
YW1lIG9iamVjdCB3aGVyZSB0byBzZWFyY2ggdGV4dC4KLSAqIEBwYXJhbSBzdHJpbmcgcmVmZXJl
bmNlIHN0cmluZyB0byBzZWFyY2guCi0gKiBAcGFyYW0gY2FzZV9zZW5zaXRpdmUgaWYgc2VhcmNo
IHNob3VsZCBiZSBjYXNlIHNlbnNpdGl2ZSBvciBub3QuCi0gKiBAcGFyYW0gZm9yd2FyZCBpZiBz
ZWFyY2ggaXMgZnJvbSBjdXJzb3IgYW5kIG9uIG9yIGJhY2t3YXJkcy4KLSAqIEBwYXJhbSB3cmFw
IGlmIHNlYXJjaCBzaG91bGQgd3JhcCBhdCBlbmQuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qg
d2hlcmUgdG8gc2VhcmNoIHRoZSB0ZXh0CisgKiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBzdHJp
bmcgdG8gc2VhcmNoCisgKiBAcGFyYW0gY2FzZV9zZW5zaXRpdmUgaWYgc2VhcmNoIHNob3VsZCBi
ZSBjYXNlIHNlbnNpdGl2ZSBvciBub3QKKyAqIEBwYXJhbSBmb3J3YXJkIGlmIHNlYXJjaCBpcyBm
cm9tIGN1cnNvciBhbmQgb24gb3IgYmFja3dhcmRzCisgKiBAcGFyYW0gd3JhcCBpZiBzZWFyY2gg
c2hvdWxkIHdyYXAgYXQgdGhlIGVuZAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGZv
dW5kLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCBvciBmYWlsdXJlLgorICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgdGhlIGdpdmVuIHN0cmluZyB3YXMgZm91bmQsIEBjIEVJTkFfRkFMU0UgaWYgbm90
IG9yIGZhaWx1cmUKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X3NlYXJjaChjb25zdCBF
dmFzX09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZV9zZW5zaXRp
dmUsIEVpbmFfQm9vbCBmb3J3YXJkLCBFaW5hX0Jvb2wgd3JhcCkKIHsKQEAgLTc1NSwxNSArNzY4
LDE1IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3Qq
IG8sIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9CCiB9CiAKIC8qKgotICogTWFyayBtYXRjaGVz
IHRoZSBnaXZlbiB0ZXh0IHN0cmluZyBpbiBkb2N1bWVudC4KKyAqIE1hcmtzIG1hdGNoZXMgdGhl
IGdpdmVuIHN0cmluZyBpbiBhIGRvY3VtZW50LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB3aGVyZSB0byBzZWFyY2ggdGV4dC4KLSAqIEBwYXJhbSBzdHJpbmcgcmVmZXJlbmNlIHN0cmlu
ZyB0byBtYXRjaC4KLSAqIEBwYXJhbSBjYXNlX3NlbnNpdGl2ZSBpZiBtYXRjaCBzaG91bGQgYmUg
Y2FzZSBzZW5zaXRpdmUgb3Igbm90LgotICogQHBhcmFtIGhpZ2hsaWdodCBpZiBtYXRjaGVzIHNo
b3VsZCBiZSBoaWdobGlnaHRlZC4KLSAqIEBwYXJhbSBsaW1pdCBtYXhpbXVtIGFtb3VudCBvZiBt
YXRjaGVzLCBvciB6ZXJvIHRvIHVubGltaXRlZC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3
aGVyZSB0byBzZWFyY2ggdGV4dAorICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRv
IG1hdGNoCisgKiBAcGFyYW0gY2FzZV9zZW5zaXRpdmUgaWYgbWF0Y2ggc2hvdWxkIGJlIGNhc2Ug
c2Vuc2l0aXZlIG9yIG5vdAorICogQHBhcmFtIGhpZ2hsaWdodCBpZiBtYXRjaGVzIHNob3VsZCBi
ZSBoaWdobGlnaHRlZAorICogQHBhcmFtIGxpbWl0IG1heGltdW0gYW1vdW50IG9mIG1hdGNoZXMs
IG9yIHplcm8gdG8gdW5saW1pdGVkCiAgKgotICogQHJldHVybiBudW1iZXIgb2YgbWF0Y2hlcy4K
KyAqIEByZXR1cm4gbnVtYmVyIG9mIG1hdGNoZWQgQGEgc3RyaW5nCiAgKi8KIHVuc2lnbmVkIGlu
dCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIq
IHN0cmluZywgRWluYV9Cb29sIGNhc2Vfc2Vuc2l0aXZlLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0LCB1
bnNpZ25lZCBpbnQgbGltaXQpCiB7CkBAIC03NzYsMTEgKzc4OSwxMiBAQCB1bnNpZ25lZCBpbnQg
ZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBz
dHJpbmcsIEVpbgogfQogCiAvKioKLSAqIFJldmVyc2VzIHRoZSBlZmZlY3Qgb2YgZXdrX2ZyYW1l
X3RleHRfbWF0Y2hlc19tYXJrKCkKKyAqIFVubWFya3MgYWxsIG1hcmtlZCBtYXRjaGVzIGluIGEg
ZG9jdW1lbnQuCisgKiBSZXZlcnNlcyB0aGUgZWZmZWN0IG9mIGV3a19mcmFtZV90ZXh0X21hdGNo
ZXNfbWFyaygpLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0byBzZWFyY2gg
dGV4dC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0byB1bm1hcmsgbWF0Y2hlcwog
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0UgZm9y
IGZhaWx1cmUuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfdW5t
YXJrX2FsbChFdmFzX09iamVjdCogbykKIHsKQEAgLTc5MiwxMiArODA2LDEyIEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QqIG8pCiB9CiAK
IC8qKgotICogU2V0IGlmIHNob3VsZCBoaWdobGlnaHQgbWF0Y2hlcyBtYXJrZWQgd2l0aCBld2tf
ZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoKS4KKyAqIFNldHMgaWYgc2hvdWxkIGhpZ2hsaWdodCBt
YXRjaGVzIG1hcmtlZCB3aXRoIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyaygpLgogICoKLSAq
IEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0byBzZXQgaWYgbWF0Y2hlcyBhcmUgaGlnaGxp
Z2h0ZWQgb3Igbm90LgotICogQHBhcmFtIGhpZ2hsaWdodCBpZiBAYyBFSU5BX1RSVUUsIG1hdGNo
ZXMgd2lsbCBiZSBoaWdobGlnaHRlZC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0
byBzZXQgaWYgbWF0Y2hlcyBhcmUgaGlnaGxpZ2h0ZWQgb3Igbm90CisgKiBAcGFyYW0gaGlnaGxp
Z2h0IEBjIEVJTkFfVFJVRSBpZiBtYXRjaGVzIGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxT
RSBpZiBub3QKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIGZvciBmYWlsdXJlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywg
QGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9t
YXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBoaWdobGlnaHQp
CiB7CkBAIC04MDgsMTEgKzgyMiwxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hl
c19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgaGlnaGxpZwogfQogCiAv
KioKLSAqIEdldCBpZiBzaG91bGQgaGlnaGxpZ2h0IG1hdGNoZXMgbWFya2VkIHdpdGggZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19tYXJrKCkuCisgKiBHZXRzIGlmIHNob3VsZCBoaWdobGlnaHQgbWF0
Y2hlcyBtYXJrZWQgd2l0aCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoKS4KICAqCi0gKiBA
cGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcXVlcnkgaWYgbWF0Y2hlcyBhcmUgaGlnaGxpZ2h0ZWQg
b3Igbm90LgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IGlmIG1hdGNoZXMgYXJl
IGhpZ2hsaWdodGVkIG9yIG5vdAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZXkg
YXJlIGhpZ2hsaWdodGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewpAQCAtODM4LDE1ICs4NTIsMTUgQEAgc3RhdGljIGJv
b2wgX2V3a19mcmFtZV9yZWN0X2lzX25lZ2F0aXZlX3ZhbHVlKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGkpCiB9CiAKIC8qKgotICogR2V0IHgsIHkgcG9zaXRpb24gb2Ygbi10aCB0ZXh0IG1hdGNo
IGluIGZyYW1lCisgKiBHZXRzIHBvc2l0aW9uIG9mIG4tdGggbWF0Y2hlZCB0ZXh0IGluIHRoZSBm
cmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qgd2hlcmUgbWF0Y2hlcyBhcmUgaGln
aGxpZ2h0ZWQuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qgd2hlcmUgbWF0Y2hlcyBhcmUgbWFy
a2VkCiAgKiBAcGFyYW0gbiBpbmRleCBvZiBlbGVtZW50IAotICogQHBhcmFtIHggd2hlcmUgdG8g
cmV0dXJuIHggcG9zaXRpb24uIE1heSBiZSBAYyBOVUxMLiAKLSAqIEBwYXJhbSB5IHdoZXJlIHRv
IHJldHVybiB5IHBvc2l0aW9uLiBNYXkgYmUgQGMgTlVMTC4KKyAqIEBwYXJhbSB4IHRoZSBwb2lu
dGVyIHRvIHN0b3JlIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9mIEBhIG4gbWF0Y2hlZCB0ZXh0
LCBtYXkgYmUgQGMgMAorICogQHBhcmFtIHkgdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIHZlcnRp
Y2FsIHBvc2l0aW9uIG9mIEBhIG4gbWF0Y2hlZCB0ZXh0LCBtYXkgYmUgQGMgMAogICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0UgZm9yIGZhaWx1cmUg
LSB3aGVuIG5vIG1hdGNoZXMgZm91bmQgb3IgCi0gKiAgICAgICAgIG4gYmlnZ2VyIHRoYW4gc2Vh
cmNoIHJlc3VsdHMuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIHdoZW4gbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kIG9yIAorICogICAgICAgICBAYSBuIGlz
IGJpZ2dlciB0aGFuIHNlYXJjaCByZXN1bHRzIG9yIG9uIGZhaWx1cmUKICAqLwogRWluYV9Cb29s
IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQoRXZhc19PYmplY3QqIG8sIHNpemVf
dCBuLCBpbnQqIHgsIGludCogeSkKIHsKQEAgLTg3MSwxMSArODg1LDExIEBAIEVpbmFfQm9vbCBl
d2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KEV2YXNfT2JqZWN0KiBvLCBzaXplX3Qg
biwgaW50KiB4LCBpCiB9CiAKIC8qKgotICogQXNrIGZyYW1lIHRvIHN0b3AgbG9hZGluZy4KKyAq
IEFza3MgZnJhbWUgdG8gc3RvcCBsb2FkaW5nLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBzdG9wIGxvYWRpbmcuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gc3RvcCBsb2Fk
aW5nCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3N0b3AoRXZhc19PYmpl
Y3QqIG8pCiB7CkBAIC04ODYsMTEgKzkwMCwxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3N0b3Ao
RXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogQXNrIGZyYW1lIHRvIHJlbG9hZCBjdXJyZW50
IGRvY3VtZW50LgorICogQXNrcyBmcmFtZSB0byByZWxvYWQgY3VycmVudCBkb2N1bWVudC4KICAq
Ci0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcmVsb2FkLgorICogQHBhcmFtIG8gZnJhbWUg
b2JqZWN0IHRvIHJlbG9hZCBjdXJyZW50IGRvY3VtZW50CiAgKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICoKICAqIEBz
ZWUgZXdrX2ZyYW1lX3JlbG9hZF9mdWxsKCkKICAqLwpAQCAtOTAzLDExICs5MTcsMTEgQEAgRWlu
YV9Cb29sIGV3a19mcmFtZV9yZWxvYWQoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogQXNr
IGZyYW1lIHRvIGZ1bGx5IHJlbG9hZCBjdXJyZW50IGRvY3VtZW50LCB1c2luZyBubyBwcmV2aW91
cyBjYWNoZXMuCisgKiBBc2tzIGZyYW1lIHRvIGZ1bGx5IHJlbG9hZCBjdXJyZW50IGRvY3VtZW50
LCB1c2luZyBubyBwcmV2aW91cyBjYWNoZXMuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHRvIHJlbG9hZC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byByZWxvYWQgY3VycmVudCBk
b2N1bWVudAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9yZWxvYWRfZnVs
bChFdmFzX09iamVjdCogbykKIHsKQEAgLTkxOCwxMSArOTMyLDExIEBAIEVpbmFfQm9vbCBld2tf
ZnJhbWVfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogQXNrIGZyYW1l
IHRvIG5hdmlnYXRlIGJhY2sgaW4gaGlzdG9yeS4KKyAqIEFza3MgdGhlIGZyYW1lIHRvIG5hdmln
YXRlIGJhY2sgaW4gdGhlIGhpc3RvcnkuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRv
IG5hdmlnYXRlIGJhY2suCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbmF2aWdhdGUgYmFj
awogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKICAqCiAgKiBAc2VlIGV3a19mcmFtZV9uYXZpZ2F0ZSgpCiAgKi8KQEAg
LTkzMiwxMSArOTQ2LDExIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfYmFjayhFdmFzX09iamVjdCog
bykKIH0KIAogLyoqCi0gKiBBc2sgZnJhbWUgdG8gbmF2aWdhdGUgZm9yd2FyZCBpbiBoaXN0b3J5
LgorICogQXNrcyBmcmFtZSB0byBuYXZpZ2F0ZSBmb3J3YXJkIGluIHRoZSBoaXN0b3J5LgogICoK
LSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBuYXZpZ2F0ZSBmb3J3YXJkLgorICogQHBhcmFt
IG8gZnJhbWUgb2JqZWN0IHRvIG5hdmlnYXRlIGZvcndhcmQKICAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKgogICog
QHNlZSBld2tfZnJhbWVfbmF2aWdhdGUoKQogICovCkBAIC05NDYsMTMgKzk2MCwxMyBAQCBFaW5h
X0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmQoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogTmF2
aWdhdGUgYmFjayBvciBmb3J3YXJkIGluIGhpc3RvcnkuCisgKiBOYXZpZ2F0ZXMgYmFjayBvciBm
b3J3YXJkIGluIHRoZSBoaXN0b3J5LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBu
YXZpZ2F0ZS4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBuYXZpZ2F0ZQogICogQHBhcmFt
IHN0ZXBzIGlmIHBvc2l0aXZlIG5hdmlnYXRlcyB0aGF0IGFtb3VudCBmb3J3YXJkcywgaWYgbmVn
YXRpdmUKLSAqICAgICAgICBkb2VzIGJhY2t3YXJkcy4KKyAqICAgICAgICBkb2VzIGJhY2t3YXJk
cwogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZShFdmFzX09i
amVjdCogbywgaW50IHN0ZXBzKQogewpAQCAtOTY2LDExICs5ODAsMTEgQEAgRWluYV9Cb29sIGV3
a19mcmFtZV9uYXZpZ2F0ZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogfQogCiAvKioKLSAq
IENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGJhY2t3YXJkcyBvbmUgaXRlbSBp
biBoaXN0b3J5LgorICogUXVlcmllcyBpZiBpcyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBiYWNrd2Fy
ZHMgb25lIGl0ZW0gaW4gdGhlIGhpc3RvcnkuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHRvIGNoZWNrIGlmIGJhY2t3YXJkIG5hdmlnYXRpb24gaXMgcG9zc2libGUuCisgKiBAcGFyYW0g
byBmcmFtZSBvYmplY3QgdG8gcXVlcnkgaWYgYmFja3dhcmQgbmF2aWdhdGlvbiBpcyBwb3NzaWJs
ZQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGlzIHBvc3NpYmxlIHRvIG5h
dmlnYXRlIGJhY2t3YXJkIG9uZSBpdGVtIGluIHRoZSBoaXN0b3J5LCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZQogICoKICAqIEBzZWUgZXdrX2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKCkKICAqLwpA
QCAtOTgwLDExICs5OTQsMTEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9iYWNrX3Bvc3NpYmxlKEV2
YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIG5h
dmlnYXRlIGZvcndhcmRzIG9uZSBpdGVtIGluIGhpc3RvcnkuCisgKiBRdWVyaWVzIGlmIGlzIHBv
c3NpYmxlIHRvIG5hdmlnYXRlIGZvcndhcmRzIG9uZSBpdGVtIGluIHRoZSBoaXN0b3J5LgogICoK
LSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBjaGVjayBpZiBmb3J3YXJkIG5hdmlnYXRpb24g
aXMgcG9zc2libGUuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcXVlcnkgaWYgZm9yd2Fy
ZCBuYXZpZ2F0aW9uIGlzIHBvc3NpYmxlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
cG9zc2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgaXMgcG9zc2libGUgdG8gbmF2aWdhdGUgZm9yd2FyZHMgaW4gdGhlIGhpc3RvcnksIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKgogICogQHNlZSBld2tfZnJhbWVfbmF2aWdhdGVfcG9z
c2libGUoKQogICovCkBAIC05OTQsMTMgKzEwMDgsMTMgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9m
b3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIENoZWNrIGlmIGl0
IGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGdpdmVuIEBhIHN0ZXBzIGluIGhpc3RvcnkuCisgKiBR
dWVyaWVzIGlmIGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGdpdmVuIEBhIHN0ZXBzIGluIHRoZSBo
aXN0b3J5LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBuYXZpZ2F0ZS4KLSAqIEBw
YXJhbSBzdGVwcyBpZiBwb3NpdGl2ZSBuYXZpZ2F0ZXMgdGhhdCBhbW91bnQgZm9yd2FyZHMsIGlm
IG5lZ2F0aXZlCi0gKiAgICAgICAgZG9lcyBiYWNrd2FyZHMuCisgKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gcXVlcnkgaWYgaXMgcG9zc2libGUgdG8gbmF2aWdhdGUgQGEgc3RlcHMgaW4gdGhl
IGhpc3RvcnkKKyAqIEBwYXJhbSBzdGVwcyBwb3NpdGl2ZSB2YWx1ZSBuYXZpZ2F0ZXMgdGhhdCBh
bW91bnQgZm9yd2FyZHMsIG5lZ2F0aXZlIHZhbHVlIAorICogICAgICAgIGRvZXMgYmFja3dhcmRz
CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXMgcG9zc2libGUgdG8gbmF2
aWdhdGUgQGEgc3RlcHMgaW4gdGhlIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAg
Ki8KIEVpbmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QqIG8s
IGludCBzdGVwcykKIHsKQEAgLTEwMTEsMTEgKzEwMjUsMTEgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogfQogCiAvKioK
LSAqIEdldCBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZyYW1lLgorICogR2V0cyBj
dXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZy
YW1lIG9iamVjdCB0byBxdWVyeSB6b29tIGxldmVsLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHRvIGdldCB6b29tIGxldmVsCiAgKgotICogQHJldHVybiB6b29tIGxldmVsIG9yIC0xLjAgb24g
ZmFpbHVyZS4KKyAqIEByZXR1cm4gem9vbSBsZXZlbCBmb3IgdGhlIGZyYW1lIG9yIEBjIC0xLjAg
b24gZmFpbHVyZQogICovCiBmbG9hdCBld2tfZnJhbWVfem9vbV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiB7CkBAIC0xMDI4LDEyICsxMDQyLDEyIEBAIGZsb2F0IGV3a19mcmFtZV96b29tX2dl
dChjb25zdCBFdmFzX09iamVjdCogbykKIH0KIAogLyoqCi0gKiBTZXQgY3VycmVudCB6b29tIGxl
dmVsIHVzZWQgYnkgdGhpcyBmcmFtZS4KKyAqIFNldHMgY3VycmVudCB6b29tIGxldmVsIHVzZWQg
YnkgdGhpcyBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY2hhbmdlIHpv
b20gbGV2ZWwuCi0gKiBAcGFyYW0gem9vbSBuZXcgbGV2ZWwuCisgKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gY2hhbmdlIHpvb20gbGV2ZWwKKyAqIEBwYXJhbSB6b29tIGEgbmV3IHpvb20gbGV2
ZWwKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFM
U0Ugb24gZmFpbHVyZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMg
RUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKgogICogQHNlZSBld2tfZnJhbWVfem9vbV90ZXh0X29u
bHlfc2V0KCkKICAqLwpAQCAtMTA0OSwxMSArMTA2MywxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1l
X3pvb21fc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tKQogfQogCiAvKioKLSAqIFF1ZXJ5
IGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQgYW5kIG5vdCBvdGhlciBlbGVtZW50
cy4KKyAqIFF1ZXJpZXMgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5IGFu
ZCBub3Qgb3RoZXIgZWxlbWVudHMuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgdG8gcXVlcnkgc2V0
dGluZy4KKyAqIEBwYXJhbSBvIGZyYW1lIHRvIHF1ZXJ5IHpvb20gbGV2ZWwgZm9yIHRleHQgb25s
eQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGp1c3QgdGV4dCBhcmUgc2NhbGVkLCBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20g
bGV2ZWwgaXMgYXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9u
IGZhaWx1cmUKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3RleHRfb25seV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCiB7CkBAIC0xMDYyLDEyICsxMDc2LDEyIEBAIEVpbmFfQm9vbCBl
d2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQogCiAv
KioKLSAqIFNldCBpZiB6b29tIGxldmVsIGp1c3QgYXBwbGllcyB0byB0ZXh0IGFuZCBub3Qgb3Ro
ZXIgZWxlbWVudHMuCisgKiBTZXRzIGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQg
b25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIHRvIGNo
YW5nZSBzZXR0aW5nLgotICogQHBhcmFtIHNldHRpbmcgQGMgRUlOQV9UUlVFIGlmIHpvb20gc2hv
dWxkIGp1c3QgYmUgYXBwbGllZCB0byB0ZXh0LgorICogQHBhcmFtIG8gZnJhbWUgdG8gYXBwbHkg
em9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5CisgKiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUg
aWYgem9vbSBsZXZlbCBzaG91bGQgYmUgYXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFM
U0UgaWYgbm90CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4
dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNldHRpbmcpCiB7CkBAIC0xMDg2
LDkgKzExMDAsOSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChFdmFz
X09iamVjdCogbywgRWluYV9Cb29sIHNldHRpbmcpCiB9CiAKIC8qKgotICogRnJlZSBoaXQgdGVz
dCBjcmVhdGVkIHdpdGggZXdrX2ZyYW1lX2hpdF90ZXN0X25ldygpLgorICogRnJlZXMgaGl0IHRl
c3QgaW5zdGFuY2UgY3JlYXRlZCBieSBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KCkuCiAgKgotICog
QHBhcmFtIGhpdF90ZXN0IGluc3RhbmNlLiBNdXN0IEBiIG5vdCBiZSBAYyBOVUxMLgorICogQHBh
cmFtIGhpdF90ZXN0IGluc3RhbmNlLCBtdXN0IEBiIG5vdCBiZSBAYyAwCiAgKi8KIHZvaWQgZXdr
X2ZyYW1lX2hpdF90ZXN0X2ZyZWUoRXdrX0hpdF9UZXN0KiBoaXRfdGVzdCkKIHsKQEAgLTExMDIs
MTQgKzExMTYsMTUgQEAgdm9pZCBld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3Qq
IGhpdF90ZXN0KQogfQogCiAvKioKLSAqIENyZWF0ZXMgYSBuZXcgaGl0IHRlc3QgZm9yIGdpdmVu
IGZyYW1lIGFuZCBwb2ludC4KKyAqIENyZWF0ZXMgYSBuZXcgaGl0IHRlc3QgZm9yIHRoZSBnaXZl
biBmcmFtZSBhbmQgcG9pbnQuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgdG8gZG8gaGl0IHRlc3Qg
b24uCi0gKiBAcGFyYW0geCBob3Jpem9udGFsIHBvc2l0aW9uIHRvIHF1ZXJ5LgotICogQHBhcmFt
IHkgdmVydGljYWwgcG9zaXRpb24gdG8gcXVlcnkuCisgKiBUaGUgcmV0dXJuZWQgb2JqZWN0IHNo
b3VsZCBiZSBmcmVlZCBieSBld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZSgpLgogICoKLSAqIEByZXR1
cm4gYSBuZXdseSBhbGxvY2F0ZWQgaGl0IHRlc3Qgb24gc3VjY2VzcywgQGMgTlVMTCBvdGhlcndp
c2UuCi0gKiAgICAgICAgIEZyZWUgbWVtb3J5IHdpdGggZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUo
KQorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGRvIGhpdCB0ZXN0IG9uCisgKiBAcGFyYW0g
eCB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiB0byBxdWVyeQorICogQHBhcmFtIHkgdGhlIHZlcnRp
Y2FsIHBvc2l0aW9uIHRvIHF1ZXJ5CisgKgorICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBo
aXQgdGVzdCBvbiBzdWNjZXNzLCBAYyAwIG90aGVyd2lzZQogICovCiBFd2tfSGl0X1Rlc3QqIGV3
a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkK
IHsKQEAgLTExNjksMTMgKzExODQsMTMgQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rl
c3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQgeCwgaW50IHkpCiB9CiAKIC8qKgotICog
UmVsYXRpdmUgc2Nyb2xsIG9mIGdpdmVuIGZyYW1lLgorICogU2V0cyBhIHJlbGF0aXZlIHNjcm9s
bCBvZiB0aGUgZ2l2ZW4gZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNj
cm9sbC4KLSAqIEBwYXJhbSBkeCBob3Jpem9udGFsIG9mZnNldCB0byBzY3JvbGwuCi0gKiBAcGFy
YW0gZHkgdmVydGljYWwgb2Zmc2V0IHRvIHNjcm9sbC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBzY3JvbGwKKyAqIEBwYXJhbSBkeCBob3Jpem9udGFsIG9mZnNldCB0byBzY3JvbGwKKyAq
IEBwYXJhbSBkeSB2ZXJ0aWNhbCBvZmZzZXQgdG8gc2Nyb2xsCiAgKgotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwog
RWluYV9Cb29sCiBld2tfZnJhbWVfc2Nyb2xsX2FkZChFdmFzX09iamVjdCogbywgaW50IGR4LCBp
bnQgZHkpCkBAIC0xMTg4LDE2ICsxMjAzLDE2IEBAIGV3a19mcmFtZV9zY3JvbGxfYWRkKEV2YXNf
T2JqZWN0KiBvLCBpbnQgZHgsIGludCBkeSkKIH0KIAogLyoqCi0gKiBTZXQgYWJzb2x1dGUgc2Ny
b2xsIG9mIGdpdmVuIGZyYW1lLgorICogU2V0cyBhbiBhYnNvbHV0ZSBzY3JvbGwgb2YgdGhlIGdp
dmVuIGZyYW1lLgogICoKICAqIEJvdGggdmFsdWVzIGFyZSBmcm9tIHplcm8gdG8gdGhlIGNvbnRl
bnRzIHNpemUgbWludXMgdGhlIHZpZXdwb3J0CiAgKiBzaXplLiBTZWUgZXdrX2ZyYW1lX3Njcm9s
bF9zaXplX2dldCgpLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBzY3JvbGwuCi0g
KiBAcGFyYW0geCBob3Jpem9udGFsIHBvc2l0aW9uIHRvIHNjcm9sbC4KLSAqIEBwYXJhbSB5IHZl
cnRpY2FsIHBvc2l0aW9uIHRvIHNjcm9sbC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBz
Y3JvbGwKKyAqIEBwYXJhbSB4IGhvcml6b250YWwgcG9zaXRpb24gdG8gc2Nyb2xsCisgKiBAcGFy
YW0geSB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBzY3JvbGwKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5h
X0Jvb2wKIGV3a19mcmFtZV9zY3JvbGxfc2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgeCwgaW50IHkp
CkBAIC0xMjEwLDE5ICsxMjI1LDE5IEBAIGV3a19mcmFtZV9zY3JvbGxfc2V0KEV2YXNfT2JqZWN0
KiBvLCBpbnQgeCwgaW50IHkpCiB9CiAKIC8qKgotICogR2V0IHRoZSBwb3NzaWJsZSBzY3JvbGwg
c2l6ZSBvZiBnaXZlbiBmcmFtZS4KKyAqIEdldHMgdGhlIHBvc3NpYmxlIHNjcm9sbCBzaXplIG9m
IHRoZSBnaXZlbiBmcmFtZS4KICAqCiAgKiBQb3NzaWJsZSBzY3JvbGwgc2l6ZSBpcyBjb250ZW50
cyBzaXplIG1pbnVzIHRoZSB2aWV3cG9ydAogICogc2l6ZS4gSXQncyB0aGUgbGFzdCBhbGxvd2Vk
IHZhbHVlIGZvciBld2tfZnJhbWVfc2Nyb2xsX3NldCgpCiAgKgotICogQHBhcmFtIG8gZnJhbWUg
b2JqZWN0IHRvIHNjcm9sbC4KLSAqIEBwYXJhbSB3IHdoZXJlIHRvIHJldHVybiBob3Jpem9udGFs
IHNpemUgdGhhdCBpcyBwb3NzaWJsZSB0bwotICogICAgICAgIHNjcm9sbC4gTWF5IGJlIEBjIE5V
TEwuCi0gKiBAcGFyYW0gaCB3aGVyZSB0byByZXR1cm4gdmVydGljYWwgc2l6ZSB0aGF0IGlzIHBv
c3NpYmxlIHRvIHNjcm9sbC4KLSAqICAgICAgICBNYXkgYmUgQGMgTlVMTC4KKyAqIEBwYXJhbSBv
IGZyYW1lIG9iamVjdCB0byBnZXQgc2Nyb2xsIHNpemUKKyAqIEBwYXJhbSB3IHRoZSBwb2ludGVy
IHRvIHN0b3JlIHRoZSBob3Jpem9udGFsIHNpemUgdGhhdCBpcyBwb3NzaWJsZSB0byBzY3JvbGws
CisgKiAgICAgICAgbWF5IGJlIEBjIDAKKyAqIEBwYXJhbSBoIHRoZSBwb2ludGVyIHRvIHN0b3Jl
IHRoZSB2ZXJ0aWNhbCBzaXplIHRoYXQgaXMgcG9zc2libGUgdG8gc2Nyb2xsLAorICogICAgICAg
IG1heSBiZSBAYyAwCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlIGFuZAotICogICAgICAgICB2YWx1ZXMgYXJlIHplcm9lZC4K
KyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlIGFuZAorICogICAgICAgICB2YWx1ZXMgYXJlIHplcm9lZAogICovCiBFaW5hX0Jvb2wKIGV3
a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCogdywgaW50
KiBoKQpAQCAtMTI0MywxMyArMTI1OCwxMyBAQCBld2tfZnJhbWVfc2Nyb2xsX3NpemVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHcsIGludCogaCkKIH0KIAogLyoqCi0gKiBHZXQgdGhl
IGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIGdpdmVuIGZyYW1lLgorICogR2V0cyB0aGUgY3Vy
cmVudCBzY3JvbGwgcG9zaXRpb24gb2YgZ2l2ZW4gZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJh
bWUgb2JqZWN0IHRvIHNjcm9sbC4KLSAqIEBwYXJhbSB4IHdoZXJlIHRvIHJldHVybiBob3Jpem9u
dGFsIHBvc2l0aW9uLiBNYXkgYmUgQGMgTlVMTC4KLSAqIEBwYXJhbSB5IHdoZXJlIHRvIHJldHVy
biB2ZXJ0aWNhbCBwb3NpdGlvbi4gTWF5IGJlIEBjIE5VTEwuCisgKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gZ2V0IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbgorICogQHBhcmFtIHggdGhl
IHBvaW50ZXIgdG8gc3RvcmUgdGhlIGhvcml6b250YWwgcG9zaXRpb24sIG1heSBiZSBAYyAwCisg
KiBAcGFyYW0geSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgdmVydGljYWwgcG9zaXRpb24uIG1h
eSBiZSBAYyAwCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlIGFuZAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UgYW5kCiAgKiAgICAgICAgIHZhbHVlcyBhcmUgemVy
b2VkLgogICovCiBFaW5hX0Jvb2wKQEAgLTEyNzEsMTcgKzEyODYsMTcgQEAgZXdrX2ZyYW1lX3Nj
cm9sbF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHgsIGludCogeSkKIH0KIAog
LyoqCi0gKiBHZXQgdGhlIGN1cnJlbnQgZnJhbWUgdmlzaWJsZSBjb250ZW50IGdlb21ldHJ5Lgor
ICogR2V0cyB0aGUgdmlzaWJsZSBjb250ZW50IGdlb21ldHJ5IG9mIHRoZSBmcmFtZS4KICAqCi0g
KiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcXVlcnkgdmlzaWJsZSBjb250ZW50IGdlb21ldHJ5
LgotICogQHBhcmFtIGluY2x1ZGVfc2Nyb2xsYmFycyB3aGVuZXZlciB0byBpbmNsdWRlIHNjcm9s
bGJhcnMgc2l6ZS4KLSAqIEBwYXJhbSB4IGhvcml6b250YWwgcG9zaXRpb24uIE1heSBiZSBAYyBO
VUxMLgotICogQHBhcmFtIHkgdmVydGljYWwgcG9zaXRpb24uIE1heSBiZSBAYyBOVUxMLgotICog
QHBhcmFtIHcgd2lkdGguIE1heSBiZSBAYyBOVUxMLgotICogQHBhcmFtIGggaGVpZ2h0LiBNYXkg
YmUgQGMgTlVMTC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSB2aXNpYmxlIGNv
bnRlbnQgZ2VvbWV0cnkKKyAqIEBwYXJhbSBpbmNsdWRlX3Njcm9sbGJhcnMgd2hlbmV2ZXIgdG8g
aW5jbHVkZSBzY3JvbGxiYXJzIHNpemUKKyAqIEBwYXJhbSB4IHRoZSBwb2ludGVyIHRvIHN0b3Jl
IHRoZSBob3Jpem9udGFsIHBvc2l0aW9uLCBtYXkgYmUgQGMgMAorICogQHBhcmFtIHkgdGhlIHBv
aW50ZXIgdG8gc3RvcmUgdGhlIHZlcnRpY2FsIHBvc2l0aW9uLCBtYXkgYmUgQGMgMAorICogQHBh
cmFtIHcgdGhlIHBvaW50ZXIgdG8gc3RvcmUgd2lkdGgsIG1heSBiZSBAYyAwCisgKiBAcGFyYW0g
aCB0aGUgcG9pbnRlciB0byBzdG9yZSBoZWlnaHQsIG1heSBiZSBAYyAwCiAgKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlIGFuZAot
ICogICAgICAgICB2YWx1ZXMgYXJlIHplcm9lZC4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlIGFuZAorICogICAgICAgICB2YWx1ZXMg
YXJlIHplcm9lZAogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2libGVfY29udGVudF9nZW9t
ZXRyeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBpbmNsdWRlX3Njcm9sbGJh
cnMsIGludCogeCwgaW50KiB5LCBpbnQqIHcsIGludCogaCkKIHsKQEAgLTEzMDksMTUgKzEzMjQs
MTUgQEAgRWluYV9Cb29sIGV3a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wKIH0KIAogLyoqCi0gKiBHZXQgdGhlIGN1cnJl
bnQgcGFpbnRzRW50aXJlQ29udGVudHMgZmxhZy4KKyAqIFF1ZXJpZXMgaWYgdGhlIGZyYW1lIHNo
b3VsZCBiZSByZXBhaW50ZWQgY29tcGxldGVseS4KICAqCi0gKiBUaGlzIGZsYWcgdGVsbHMgaWYg
ZGlydHkgYXJlYXMgc2hvdWxkIGJlIHJlcGFpbnRlZCBldmVuIGlmIHRoZXkgYXJlCi0gKiBvdXQg
b2YgdGhlIHNjcmVlbi4KKyAqIEl0IGdldHMgcGFpbnRzRW50aXJlQ29udGVudHMgZmxhZy4gVGhp
cyBmbGFnIHRlbGxzIGlmIGRpcnR5IGFyZWFzIAorICogc2hvdWxkIGJlIHJlcGFpbnRlZCBldmVu
IGlmIHRoZXkgYXJlIG91dCBvZiB0aGUgc2NyZWVuLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9i
amVjdCB0byBxdWVyeSBwYWludHNFbnRpcmVDb250ZW50cyBmbGFnLgorICogQHBhcmFtIG8gZnJh
bWUgb2JqZWN0IHRvIHF1ZXJ5IHBhaW50c0VudGlyZUNvbnRlbnRzIGZsYWcKICAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiByZXBhaW50aW5nIGFueSBkaXJ0eSBhcmVhLCBAYyBFSU5BX0ZB
TFNFCi0gKiAgICAgICAgIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGFu
eSBkaXJ0eSBhcmVhcyBzaG91bGQgYmUgcmVwYWludGVkLCBAYyBFSU5BX0ZBTFNFCisgKiAgICAg
ICAgIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogewpAQCAtMTMyOCwxNCArMTM0MywxNCBAQCBFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX3BhaW50X2Z1bGxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioK
LSAqIFNldCB0aGUgY3VycmVudCBwYWludHNFbnRpcmVDb250ZW50cyBmbGFnLgorICogU2V0cyBp
ZiB0aGUgZnJhbWUgc2hvdWxkIGJlIHJlcGFpbnRlZCBjb21wbGV0ZWx5LgogICoKLSAqIFRoaXMg
ZmxhZyB0ZWxscyBpZiBkaXJ0eSBhcmVhcyBzaG91bGQgYmUgcmVwYWludGVkIGV2ZW4gaWYgdGhl
eSBhcmUKLSAqIG91dCBvZiB0aGUgc2NyZWVuLgorICogSXQgc2V0cyBwYWludHNFbnRpcmVDb250
ZW50cyBmbGFnLiBUaGlzIGZsYWcgdGVsbHMgaWYgZGlydHkgYXJlYXMgCisgKiBzaG91bGQgYmUg
cmVwYWludGVkIGV2ZW4gaWYgdGhleSBhcmUgb3V0IG9mIHRoZSBzY3JlZW4uCiAgKgotICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNldCBwYWludHNFbnRpcmVDb250ZW50cyBmbGFnLgotICog
QHBhcmFtIGZsYWcgQGMgRUlOQV9UUlVFIGlmIHdhbnQgdG8gYWx3YXlzIHJlcGFpbnQgYW55IGRp
cnR5IGFyZWEsCi0gKiAgICAgICAgICAgICBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEBw
YXJhbSBvIGZyYW1lIG9iamVjdCB0byBzZXQgcGFpbnRzRW50aXJlQ29udGVudHMgZmxhZworICog
QHBhcmFtIGZsYWcgQGMgRUlOQV9UUlVFIHRvIHJlcGFpbnQgZnJhbWUgY29tcGxldGVseSwKKyAq
ICAgICAgICAgICAgIEBjIEVJTkFfRkFMU0UgaWYgbm90LgogICovCiB2b2lkIGV3a19mcmFtZV9w
YWludF9mdWxsX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGZsYWcpCiB7CkBAIC0xMzQ2
LDExICsxMzYxLDExIEBAIHZvaWQgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KEV2YXNfT2JqZWN0
KiBvLCBFaW5hX0Jvb2wgZmxhZykKIH0KIAogLyoqCi0gKiBGZWVkIHRoZSBmb2N1cyBpbiBzaWdu
YWwgdG8gdGhpcyBmcmFtZS4KKyAqIEZlZWRzIHRoZSBmb2N1cyBpbiBldmVudCB0byB0aGUgZnJh
bWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZvY3VzLgorICogQHBhcmFtIG8g
ZnJhbWUgb2JqZWN0IHRvIGZlZWQgZm9jdXMKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiBpdCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBpZiB0aGUgZm9jdXMgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1c19pbihFdmFzX09iamVjdCog
bykKIHsKQEAgLTEzNjIsOSArMTM3NywxMyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9j
dXNfaW4oRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogRmVlZCB0aGUgZm9jdXMgb3V0IHNp
Z25hbCB0byB0aGlzIGZyYW1lLgorICogRmVlZHMgdGhlIGZvY3VzIG91dCBldmVudCB0byB0aGUg
ZnJhbWUuCisgKgorICogQ3VycmVudGx5IGZlYXR1cmUgPGI+aXMgbm90IGltcGxlbWVudGVkPC9i
Pi4gV2hhdCBzaG91bGQgYmUgZG9uZSBvbiBmb2N1cyBvdXQ/CiAgKgotICogQHBhcmFtIG8gZnJh
bWUgb2JqZWN0IHRvIHJlbW92ZSBmb2N1cy4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBy
ZW1vdmUgZm9jdXMKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfRkFMU0Ugc2luY2UgdGhlIGZlYXR1
cmUgaXMgbm90IGltcGxlbWVudGVkCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9mb2N1
c19vdXQoRXZhc19PYmplY3QqIG8pCiB7CkBAIC0xMzc0LDEyICsxMzkzLDEyIEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfZmVlZF9mb2N1c19vdXQoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICog
RmVlZCB0aGUgbW91c2Ugd2hlZWwgZXZlbnQgdG8gdGhlIGZyYW1lLgorICogRmVlZHMgdGhlIG1v
dXNlIHdoZWVsIGV2ZW50IHRvIHRoZSBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gZmVlZCBldmVudC4KLSAqIEBwYXJhbSBldiBtb3VzZSB3aGVlbCBldmVudC4KKyAqIEBw
YXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIHRoZSBtb3VzZSB3aGVlbCBldmVudAorICogQHBh
cmFtIGV2IHRoZSBtb3VzZSB3aGVlbCBldmVudAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIGl0IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHRoZSBtb3VzZSB3aGVlbCBldmVudCB3YXMgaGFuZGxlZCwgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3do
ZWVsKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldikKIHsK
QEAgLTEzOTcsMTIgKzE0MTYsMTIgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3do
ZWVsKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWUKIH0KIAogLyoq
Ci0gKiBGZWVkIHRoZSBtb3VzZSBkb3duIGV2ZW50IHRvIHRoZSBmcmFtZS4KKyAqIEZlZWRzIHRo
ZSBtb3VzZSBkb3duIGV2ZW50IHRvIHRoZSBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gZmVlZCBldmVudC4KLSAqIEBwYXJhbSBldiBtb3VzZSBkb3duIGV2ZW50LgorICog
QHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgdGhlIG1vdXNlIGRvd24gZXZlbnQKKyAqIEBw
YXJhbSBldiB0aGUgbW91c2UgZG93biBldmVudAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIGl0IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHRoZSBtb3VzZSBkb3duIGV2ZW50IHdhcyBoYW5kbGVkLCBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfZG93
bihFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldikKIHsKQEAg
LTE0MjMsMTIgKzE0NDIsMTIgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24o
RXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93bioKIH0KIAogLyoqCi0g
KiBGZWVkIHRoZSBtb3VzZSB1cCBldmVudCB0byB0aGUgZnJhbWUuCisgKiBGZWVkcyB0aGUgbW91
c2UgdXAgZXZlbnQgdG8gdGhlIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0
byBmZWVkIGV2ZW50LgotICogQHBhcmFtIGV2IG1vdXNlIHVwIGV2ZW50LgorICogQHBhcmFtIG8g
ZnJhbWUgb2JqZWN0IHRvIGZlZWQgdGhlIG1vdXNlIHVwIGV2ZW50CisgKiBAcGFyYW0gZXYgdGhl
IG1vdXNlIHVwIGV2ZW50CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQgd2FzIGhh
bmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgdGhlIG1vdXNlIHVwIGV2ZW50IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lz
ZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXAoRXZhc19PYmplY3QqIG8s
IGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2KQogewpAQCAtMTQ0OSwxMiArMTQ2OCwxMiBA
QCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXAoRXZhc19PYmplY3QqIG8sIGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2KQogfQogCiAvKioKLSAqIEZlZWQgdGhlIG1vdXNlIG1v
dmUgZXZlbnQgdG8gdGhlIGZyYW1lLgorICogRmVlZHMgdGhlIG1vdXNlIG1vdmUgZXZlbnQgdG8g
dGhlIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIGV2ZW50Lgot
ICogQHBhcmFtIGV2IG1vdXNlIG1vdmUgZXZlbnQuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qg
dG8gZmVlZCB0aGUgbW91c2UgbW92ZSBldmVudAorICogQHBhcmFtIGV2IHRoZSBtb3VzZSBtb3Zl
IGV2ZW50CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQgd2FzIGhhbmRsZWQsIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIG1v
dXNlIG1vdmUgZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8K
IEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2KQogewpAQCAtMTQ3NSw2ICsxNDk0LDE2IEBAIEVp
bmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBF
dmFzX0V2ZW50X01vdXNlX01vdmUqCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPm1vdXNlTW92ZWQoZXZlbnQpOwogfQogCisvKioKKyAqIEZlZWRzIHRoZSB0b3VjaCBldmVu
dCB0byB0aGUgZnJhbWUuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgdG91
Y2ggZXZlbnQKKyAqIEBwYXJhbSBhY3Rpb24gdGhlIGFjdGlvbiBvZiB0b3VjaCBldmVudAorICog
QHBhcmFtIHBvaW50cyBhIGxpc3Qgb2YgcG9pbnRzIChFd2tfVG91Y2hfUG9pbnQpIHRvIHByb2Nl
c3MKKyAqIEBwYXJhbSBtZXRhU3RhdGUgREVQUkVDVEFFRCwgbm90IHN1cHBvcnRlZCBmb3Igbm93
CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdG91Y2ggZXZlbnQgd2FzIGhhbmRsZWQs
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF90
b3VjaF9ldmVudChFdmFzX09iamVjdCogbywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCBF
aW5hX0xpc3QqIHBvaW50cywgaW50IG1ldGFTdGF0ZSkKIHsKICAgICBFaW5hX0Jvb2wgcmV0ID0g
RUlOQV9GQUxTRTsKQEAgLTE1ODEsMTIgKzE2MTAsMTIgQEAgc3RhdGljIGlubGluZSBFaW5hX0Jv
b2wgX2V3a19mcmFtZV9oYW5kbGVfa2V5X3Njcm9sbGluZyhXZWJDb3JlOjpGcmFtZSogZnJhbWUs
IGMKIH0KIAogLyoqCi0gKiBGZWVkIHRoZSBrZXlib2FyZCBrZXkgZG93biBldmVudCB0byB0aGUg
ZnJhbWUuCisgKiBGZWVkcyB0aGUga2V5Ym9hcmQga2V5IGRvd24gZXZlbnQgdG8gdGhlIGZyYW1l
LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIGV2ZW50LgotICogQHBhcmFt
IGV2IGtleWJvYXJkIGtleSBkb3duIGV2ZW50LgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRv
IGZlZWQgZXZlbnQKKyAqIEBwYXJhbSBldiBrZXlib2FyZCBrZXkgZG93biBldmVudAogICoKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBrZXkgZG93biBldmVudCB3
YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19m
cmFtZV9mZWVkX2tleV9kb3duKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9E
b3duKiBldikKIHsKQEAgLTE2MDUsMTIgKzE2MzQsMTIgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9m
ZWVkX2tleV9kb3duKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBl
dikKIH0KIAogLyoqCi0gKiBGZWVkIHRoZSBrZXlib2FyZCBrZXkgdXAgZXZlbnQgdG8gdGhlIGZy
YW1lLgorICogRmVlZHMgdGhlIGtleWJvYXJkIGtleSB1cCBldmVudCB0byB0aGUgZnJhbWUuCiAg
KgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgZXZlbnQuCi0gKiBAcGFyYW0gZXYg
a2V5Ym9hcmQga2V5IHVwIGV2ZW50LgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQg
ZXZlbnQKKyAqIEBwYXJhbSBldiBrZXlib2FyZCBrZXkgdXAgZXZlbnQKICAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBpZiBpdCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2Uu
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUga2V5IHVwIGV2ZW50IHdhcyBoYW5kbGVk
LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRf
a2V5X3VwKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXYpCiB7CkBA
IC0xNjMwLDYgKzE2NTksMjQgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV91cChFdmFz
X09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIGV2KQogLyoqCiAgKiBAaW50ZXJu
YWwKICAqCisgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgRnJhbWUgb2JqZWN0LgorICoKKyAq
IEZyYW1lcyBhcmUgbG93IGxldmVsIGVudHJpZXMgY29udGFpbmVkIGluIGEgcGFnZSB0aGF0IGlz
IGNvbnRhaW5lZAorICogYnkgYSB2aWV3LiBVc3VhbGx5IG9uZSBvcGVyYXRlcyBvbiB0aGUgdmll
dyBhbmQgbm90IGRpcmVjdGx5IG9uIHRoZQorICogZnJhbWUuCisgKgorICogQHBhcmFtIGUgY2Fu
dmFzIHdoZXJlIHRvIGNyZWF0ZSB0aGUgZnJhbWUgb2JqZWN0CisgKgorICogQHJldHVybiBhIG5l
dyBmcmFtZSBvYmplY3Qgb3IgQGMgMCBvbiBmYWlsdXJlCisgKi8KK0V2YXNfT2JqZWN0KiBld2tf
ZnJhbWVfYWRkKEV2YXMqIGUpCit7CisgICAgcmV0dXJuIGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChl
LCBfZXdrX2ZyYW1lX3NtYXJ0X2NsYXNzX25ldygpKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwK
KyAqCiAgKiBJbml0aWFsaXplIGZyYW1lIGJhc2VkIG9uIGFjdHVhbCBXZWJLaXQgZnJhbWUuCiAg
KgogICogVGhpcyBpcyBpbnRlcm5hbCBhbmQgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBieSBleHRl
cm5hbCB1c2Vycy4KQEAgLTE2NTEsNiArMTY5OCwxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2lu
aXQoRXZhc19PYmplY3QqIG8sIEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3JlOjpGcmFtZSogZnJh
bQogICAgIHJldHVybiBFSU5BX0ZBTFNFOwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICoKKyAq
IEFkZHMgY2hpbGQgdG8gdGhlIGZyYW1lLgorICovCiBFdmFzX09iamVjdCogZXdrX2ZyYW1lX2No
aWxkX2FkZChFdmFzX09iamVjdCogbywgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBj
aGlsZCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAwKTsKQEAgLTE5NjcsNiArMjAxOSwxMSBAQCB2b2lkIGV3a19mcmFtZV90
aXRsZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHRpdGxlKQogICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobywgInRpdGxlLGNoYW5nZWQiLCAodm9pZCopc2QtPnRp
dGxlKTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqIAorICogQ3JlYXRlcyBhIHZpZXcuCisg
Ki8KIHZvaWQgZXdrX2ZyYW1lX3ZpZXdfY3JlYXRlX2Zvcl92aWV3KEV2YXNfT2JqZWN0KiBvLCBF
dmFzX09iamVjdCogdmlldykKIHsKICAgICBEQkcoIm89JXAsIHZpZXc9JXAiLCBvLCB2aWV3KTsK
QEAgLTIwMjMsNiArMjA4MCwxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2
YXNfT2JqZWN0KiBvKQogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKKy8qKgorICogQGludGVy
bmFsCisgKgorICogRm9yY2VzIGxheW91dCBmb3IgZnJhbWUuCisgKi8KIHZvaWQgZXdrX2ZyYW1l
X2ZvcmNlX2xheW91dChFdmFzX09iamVjdCogbykKIHsKICAgICBEQkcoIm89JXAiLCBvKTsKQEAg
LTIwMzMsNiArMjA5NSwxMSBAQCB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmpl
Y3QqIG8pCiAgICAgICAgIHZpZXctPmZvcmNlTGF5b3V0KHRydWUpOwogfQogCisvKioKKyAqIEBp
bnRlcm5hbAorICoKKyAqIENyZWF0ZXMgcGx1Z2luLgorICovCiBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVh
bGx5KQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCmluZGV4IGI4
NGZjMjUuLjQ0MDYyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKQEAgLTE4LDE5ICsx
OCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwogCi0jaWZuZGVmIGV3
a19mcmFtZV9oCi0jZGVmaW5lIGV3a19mcmFtZV9oCi0KLSNpbmNsdWRlIDxFdmFzLmg+Ci0KLSNp
ZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQogLyoqCi0gKiBAZmlsZQot
ICoKLSAqIFdlYktpdCBmcmFtZSBzbWFydCBvYmplY3QuCisgKiBAZmlsZSAgICBld2tfZnJhbWUu
aAorICogQGJyaWVmICAgV2ViS2l0IGZyYW1lIHNtYXJ0IG9iamVjdC4KICAqCiAgKiBUaGlzIG9i
amVjdCBpcyB0aGUgbG93IGxldmVsIGFjY2VzcyB0byBXZWJLaXQtRUZMIGJyb3dzZXIKICAqIGNv
bXBvbmVudC4gSXQgcmVwcmVzZW50cyBib3RoIHRoZSBtYWluIGFuZCBpbnRlcm5hbCBmcmFtZXMg
dGhhdApAQCAtNzAsMTggKzYwLDI3IEBAIGV4dGVybiAiQyIgewogICogIC0gInN0YXRlLHNhdmUi
LCB2b2lkOiBmcmFtZSdzIHN0YXRlIHdpbGwgYmUgc2F2ZWQgYXMgYSBoaXN0b3J5IGl0ZW0uCiAg
Ki8KIAorI2lmbmRlZiBld2tfZnJhbWVfaAorI2RlZmluZSBld2tfZnJhbWVfaAorCisjaW5jbHVk
ZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCiAK
Ky8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IuCit0eXBl
ZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IgRXdrX0ZyYW1lX0xvYWRfRXJyb3I7CiAv
KioKLSAqIFN0cnVjdHVyZSB1c2VkIHRvIHJlcG9ydCBsb2FkIGVycm9ycy4KKyAqIFxicmllZiAg
IFN0cnVjdHVyZSB1c2VkIHRvIHJlcG9ydCBsb2FkIGVycm9ycy4KICAqCiAgKiBMb2FkIGVycm9y
cyBhcmUgcmVwb3J0ZWQgYXMgc2lnbmFsIGJ5IGV3a192aWV3LiBBbGwgdGhlIHN0cmluZ3MgYXJl
CiAgKiB0ZW1wb3JhcnkgcmVmZXJlbmNlcyBhbmQgc2hvdWxkIEBiIG5vdCBiZSB1c2VkIGFmdGVy
IHRoZSBzaWduYWwKLSAqIGNhbGxiYWNrIHJldHVybnMuIElmIHJlcXVpcmVkLCBtYWtlIGNvcGll
cyB3aXRoIHN0cmR1cCgpIG9yCisgKiBjYWxsYmFjayByZXR1cm5zLiBJZiBpdCdzIHJlcXVpcmVk
LCBtYWtlIGNvcGllcyB3aXRoIHN0cmR1cCgpIG9yCiAgKiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgp
ICh0aGV5IGFyZSBub3QgZXZlbiBndWFyYW50ZWVkIHRvIGJlCiAgKiBzdHJpbmdzaGFyZWQsIHNv
IG11c3QgdXNlIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgYW5kIG5vdAogICogZWluYV9zdHJpbmdz
aGFyZV9yZWYoKSkuCiAgKi8KLXR5cGVkZWYgc3RydWN0IF9Fd2tfRnJhbWVfTG9hZF9FcnJvciBF
d2tfRnJhbWVfTG9hZF9FcnJvcjsKIHN0cnVjdCBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IgewogICAg
IGludCBjb2RlOyAvKio8IG51bWVyaWMgZXJyb3IgY29kZSAqLwogICAgIEVpbmFfQm9vbCBpc19j
YW5jZWxsYXRpb247IC8qKjwgaWYgbG9hZCBmYWlsZWQgYmVjYXVzZSBpdCB3YXMgY2FuY2VsZWQg
Ki8KQEAgLTkxLDQzICs5MCw0NSBAQCBzdHJ1Y3QgX0V3a19GcmFtZV9Mb2FkX0Vycm9yIHsKICAg
ICBFdmFzX09iamVjdCAqZnJhbWU7IC8qKjwgZnJhbWUgd2hlcmUgdGhlIGZhaWx1cmUgaGFwcGVu
ZWQgKi8KIH07CiAKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX0ZyYW1lX1Jlc291
cmNlX1JlcXVlc3QuCit0eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Qg
RXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Q7CiAvKioKLSAqIFN0cnVjdHVyZSB1c2VkIHRvIHJl
cG9ydCByZXNvdXJjZSByZXF1ZXN0cworICogXGJyaWVmICAgU3RydWN0dXJlIHVzZWQgdG8gcmVw
b3J0IHJlc291cmNlIHJlcXVlc3QuCiAgKgogICogRGV0YWlscyBnaXZlbiBiZWZvcmUgYSByZXNv
dXJjZSBpcyBsb2FkZWQgb24gYSBnaXZlbiBmcmFtZS4gSXQncyB1c2VkIGJ5CiAgKiBld2tfZnJh
bWVfcmVxdWVzdF93aWxsX3NlbmQoKSB0byBpbmZvcm0gdGhlIGRldGFpbHMgb2YgYSB0by1iZS1s
b2FkZWQKICAqIHJlc291cmNlLCBhbGxvd2luZyB0aGVtIHRvIGJlIG92ZXJyaWRkZW4uCiAgKi8K
LXR5cGVkZWYgc3RydWN0IF9Fd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCBFd2tfRnJhbWVfUmVz
b3VyY2VfUmVxdWVzdDsKIHN0cnVjdCBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgewotICAg
IGNvbnN0IGNoYXIgKnVybDsgLyoqPCB1cmwgb2YgdGhpcyByZXNvdXJjZSAqLwotICAgIGNvbnN0
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcjsgLyoqPCByZXNvdXJjZSdzIGlkZW50aWZpZXIuIENh
biBub3QgYmUgY2hhbmdlZCAqLworICAgIGNvbnN0IGNoYXIgKnVybDsgLyoqPCB1cmwgb2YgdGhl
IHJlc291cmNlICovCisgICAgY29uc3QgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOyAvKio8IGlk
ZW50aWZpZXIgb2YgcmVzb3VyY2UsIGNhbiBub3QgYmUgY2hhbmdlZCAqLwogfTsKIAotLyoqCi0g
KiBTdHJ1Y3R1cmUgdXNlZCB0byByZXBvcnQgaGl0IHRlc3QgcmVzdWx0cy4KLSAqLworLy8vIENy
ZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSGl0X1Rlc3QuCiB0eXBlZGVmIHN0cnVjdCBfRXdr
X0hpdF9UZXN0IEV3a19IaXRfVGVzdDsKKy8vLyBTdHJ1Y3R1cmUgdXNlZCB0byByZXBvcnQgaGl0
IHRlc3QgcmVzdWx0Lgogc3RydWN0IF9Fd2tfSGl0X1Rlc3QgewotICAgIGludCB4LCB5OworICAg
IGludCB4OyAvKio8IHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBoaXQgdGVzdCAqLwor
ICAgIGludCB5OyAvKio8IHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgaGl0IHRlc3QgKi8K
ICAgICBzdHJ1Y3QgewogICAgICAgICBpbnQgeCwgeSwgdywgaDsKLSAgICB9IGJvdW5kaW5nX2Jv
eDsKLSAgICBjb25zdCBjaGFyICp0aXRsZTsKLSAgICBjb25zdCBjaGFyICphbHRlcm5hdGVfdGV4
dDsgLyoqPCBmb3IgaW1hZ2UsIGFyZWEsIGlucHV0IGFuZCBhcHBsZXQgKi8KLSAgICBFdmFzX09i
amVjdCAqZnJhbWU7CisgICAgfSBib3VuZGluZ19ib3g7IC8qKjwgREVQUkVDQVRFRCwgc2VlIGV3
a19mcmFtZV9oaXRfdGVzdF9uZXcoKSAqLworICAgIGNvbnN0IGNoYXIgKnRpdGxlOyAvKio8IHRp
dGxlIG9mIHRoZSBlbGVtZW50ICovCisgICAgY29uc3QgY2hhciAqYWx0ZXJuYXRlX3RleHQ7IC8q
KjwgdGhlIGFsdGVybmF0ZSB0ZXh0IGZvciBpbWFnZSwgYXJlYSwgaW5wdXQgYW5kIGFwcGxldCAq
LworICAgIEV2YXNfT2JqZWN0ICpmcmFtZTsgLyoqPCB0aGUgcG9pbnRlciB0byBmcmFtZSB3aGVy
ZSBoaXQgdGVzdCB3YXMgcmVxdWVzdGVkICovCiAgICAgc3RydWN0IHsKLSAgICAgICAgY29uc3Qg
Y2hhciAqdGV4dDsKLSAgICAgICAgY29uc3QgY2hhciAqdXJsOwotICAgICAgICBjb25zdCBjaGFy
ICp0aXRsZTsKKyAgICAgICAgY29uc3QgY2hhciAqdGV4dDsgLyoqPCB0aGUgdGV4dCBvZiB0aGUg
bGluayAqLworICAgICAgICBjb25zdCBjaGFyICp1cmw7IC8qKjwgVVJMIG9mIHRoZSBsaW5rICov
CisgICAgICAgIGNvbnN0IGNoYXIgKnRpdGxlOyAvKio8IHRoZSB0aXRsZSBvZiBsaW5rICovCiAg
ICAgICAgIEV2YXNfT2JqZWN0ICp0YXJnZXRfZnJhbWU7CiAgICAgfSBsaW5rOwogICAgIHN0cnVj
dCB7Ci0gICAgICAgIEVpbmFfQm9vbCBlZGl0YWJsZToxOwotICAgICAgICBFaW5hX0Jvb2wgc2Vs
ZWN0ZWQ6MTsKKyAgICAgICAgRWluYV9Cb29sIGVkaXRhYmxlOjE7IC8qKjwgQGMgRUlOQV9UUlVF
IGlmIGVsZW1lbnQgaXMgZWRpdGFibGUsIEBjIEVJTkFfRkFMU0UgaWYgbm90ICovCisgICAgICAg
IEVpbmFfQm9vbCBzZWxlY3RlZDoxOyAvKio8IEBjIEVJTkFfVFJVRSBpZiBlbGVtZW50IGlzIHNl
bGVjdGVkLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCAqLwogICAgIH0gZmxhZ3M7CiB9OwogCisvLy8g
UmVwcmVzZW50cyBhY3Rpb25zIG9mIHRvdWNoIGV2ZW50cy4KIHR5cGVkZWYgZW51bSB7CiAgICAg
RVdLX1RPVUNIX1NUQVJULAogICAgIEVXS19UT1VDSF9FTkQsCkBAIC0xMzUsNiArMTM2LDcgQEAg
dHlwZWRlZiBlbnVtIHsKICAgICBFV0tfVE9VQ0hfQ0FOQ0VMCiB9IEV3a19Ub3VjaF9FdmVudF9U
eXBlOwogCisvLy8gUmVwcmVzZW50cyBzdGF0ZXMgb2YgdG91Y2ggZXZlbnRzLgogdHlwZWRlZiBl
bnVtIHsKICAgICBFV0tfVE9VQ0hfUE9JTlRfUFJFU1NFRCwKICAgICBFV0tfVE9VQ0hfUE9JTlRf
UkVMRUFTRUQsCkBAIC0xNDIsMTEgKzE0NCwxNCBAQCB0eXBlZGVmIGVudW0gewogICAgIEVXS19U
T1VDSF9QT0lOVF9DQU5DRUxMRUQKIH0gRXdrX1RvdWNoX1BvaW50X1R5cGU7CiAKKy8vLyBDcmVh
dGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1RvdWNoX1BvaW50LgogdHlwZWRlZiBzdHJ1Y3QgX0V3
a19Ub3VjaF9Qb2ludCBFd2tfVG91Y2hfUG9pbnQ7CisvLy8gUmVwcmVzZW50cyBhIHRvdWNoIHBv
aW50Lgogc3RydWN0IF9Fd2tfVG91Y2hfUG9pbnQgewotICAgIHVuc2lnbmVkIGludCBpZDsKLSAg
ICBpbnQgeCwgeTsKLSAgICBFd2tfVG91Y2hfUG9pbnRfVHlwZSBzdGF0ZTsKKyAgICB1bnNpZ25l
ZCBpbnQgaWQ7IC8qKjwgaWRlbnRpZmllciBvZiB0aGUgdG91Y2ggZXZlbnQgKi8KKyAgICBpbnQg
eDsgLyoqPCB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgdG91Y2ggZXZlbnQgKi8KKyAg
ICBpbnQgeTsgLyoqPCB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgdG91Y2ggZXZlbnQg
Ki8KKyAgICBFd2tfVG91Y2hfUG9pbnRfVHlwZSBzdGF0ZTsgLyoqPCBzdGF0ZSBvZiB0aGUgdG91
Y2ggZXZlbnQgKi8KIH07CiAKIEVBUEkgRXZhc19PYmplY3QgKmV3a19mcmFtZV92aWV3X2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7Cg==
</data>
<flag name="review"
          id="90727"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97078</attachid>
            <date>2011-06-14 00:18:43 -0700</date>
            <delta_ts>2011-06-14 01:02:44 -0700</delta_ts>
            <desc>updated patch according to Raphael&apos;s suggestions</desc>
            <filename>ewk_frame_doxygen_doc.patch</filename>
            <type>text/plain</type>
            <size>45311</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA3YzBlMWQ4Li5kN2Y2NDBhIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTEtMDYtMTMgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdlbiBkb2N1bWVudGF0aW9uIGZv
ciBld2tfZnJhbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MjUzMworCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAgICAgICAtIGZpeGVzIG1ldGhv
ZCBkZXNjcmlwdGlvbnMsCisgICAgICAgICAtIGFkZHMgYnJpZWZzIGZvciBzdHJ1Y3R1cmUgYW5k
IHR5cGRlZiwKKyAgICAgICAgIC0gcmVwbGFjZXMgTlVMTCB0byAwIGluIGRveHlnZW4gZG9jdW1l
bnRhdGlvbiAod2Via2l0J3Mgc3R5bGUgcmVxdWlyZWQgaXQpLAorICAgICAgICAgLSByZW1vdmVz
IGRvdHMgZnJvbSB0aGUgZW5kIG9mIHBhcmFtcyBhbmQgcmV0dXJuIGRlc2NyaXB0aW9uIChzZWUg
RUZMJ3MgZG9jdW1lbnRhdGlvbiksCisgICAgICAgICAtIG1vdmVzIGluY2x1ZGVzIGFuZCBkZWZp
bmVzIGJlbG93IGEgYnJpZWYgb2YgZXdrX2ZyYW1lLmgKKyAgICAgICAgIC0gbW92ZXMgaW50ZXJu
YWwgbWV0aG9kcyB0byB0aGUgZW5kIG9mIGV3a19mcmFtZS5jcHAuCisKKyAgICAgICAgKiBld2sv
ZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9hZGQpOgorICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuaDoKKwogMjAxMS0wNi0xMyAgTWljaGFsIFBha3VsYSB2ZWwgUnV0a2EgIDxtLnBh
a3VsYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggYmIwNDgzZi4uOTczN2I4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTI4OSwyOSArMjg5LDExIEBAIHN0YXRpYyBp
bmxpbmUgRXZhc19TbWFydCogX2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcodm9pZCkKIH0KIAog
LyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgRnJhbWUg
b2JqZWN0LgotICoKLSAqIEZyYW1lcyBhcmUgbG93IGxldmVsIGVudHJpZXMgY29udGFpbmVkIGlu
IGEgcGFnZSB0aGF0IGlzIGNvbnRhaW5lZAotICogYnkgYSB2aWV3LiBVc3VhbGx5IG9uZSBvcGVy
YXRlcyBvbiB0aGUgdmlldyBhbmQgbm90IGRpcmVjdGx5IG9uIHRoZQotICogZnJhbWUuCi0gKgot
ICogQHBhcmFtIGUgY2FudmFzIHdoZXJlIHRvIGNyZWF0ZSB0aGUgZnJhbWUgb2JqZWN0LgotICoK
LSAqIEByZXR1cm4gZnJhbWUgb2JqZWN0IG9yIEBjIE5VTEwgaWYgZXJyb3JzLgotICovCi1FdmFz
X09iamVjdCogZXdrX2ZyYW1lX2FkZChFdmFzKiBlKQotewotICAgIHJldHVybiBldmFzX29iamVj
dF9zbWFydF9hZGQoZSwgX2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcoKSk7Ci19Ci0KLS8qKgog
ICogUmV0cmlldmVzIHRoZSBld2tfdmlldyBvYmplY3QgdGhhdCBvd25zIHRoaXMgZnJhbWUuCiAg
KgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB2aWV3IGZyb20uCisgKiBAcGFyYW0g
byBmcmFtZSBvYmplY3QgdG8gZ2V0IHZpZXcgb2JqZWN0CiAgKgotICogQHJldHVybiB2aWV3IG9i
amVjdCBvciBAYyBOVUxMIGlmIGVycm9ycy4KKyAqIEByZXR1cm4gdmlldyBvYmplY3Qgb3IgQGMg
MCBvbiBmYWlsdXJlCiAgKi8KIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVfdmlld19nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCiB7CkBAIC0zMjAsMTMgKzMwMiwxNiBAQCBFdmFzX09iamVjdCogZXdr
X2ZyYW1lX3ZpZXdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIFNldCB0
aGUgdGhlbWUgcGF0aCB0byBiZSB1c2VkIGJ5IHRoaXMgZnJhbWUuCisgKiBTZXRzIHRoZSB0aGVt
ZSBwYXRoIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoaXMgZnJhbWUuCiAgKgogICogRnJhbWVzIGlu
aGVyaXQgdGhlbWUgZnJvbSB0aGVpciBwYXJlbnQsIHRoaXMgd2lsbCBoYXZlIGFsbCBmcmFtZXMK
ICAqIHdpdGggdW5zZXQgdGhlbWUgdG8gdXNlIHRoaXMgb25lLgogICoKLSAqIEBwYXJhbSBvIGZy
YW1lIG9iamVjdCB0byBjaGFuZ2UgdGhlbWUuCi0gKiBAcGFyYW0gcGF0aCB0aGVtZSBwYXRoLCBt
YXkgYmUgQGMgTlVMTCB0byByZXNldCB0byBkZWZhdWx0IG9yIGluaGVyaXQgcGFyZW50LgorICog
QHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB0aGVtZQorICogQHBhcmFtIHBhdGggdGhl
bWUgcGF0aCwgbWF5IGJlIEBjIDAgdG8gcmVzZXQgdG8gZGVmYXVsdCB0aGVtZQorICogICAgICBv
ciBpbmhlcml0IHBhcmVudCdzIHRoZW1lLgorICoKKyAqIEBzZWUgZXdrX2ZyYW1lX3RoZW1lX2dl
dCgpCiAgKi8KIHZvaWQgZXdrX2ZyYW1lX3RoZW1lX3NldChFdmFzX09iamVjdCogbywgY29uc3Qg
Y2hhciogcGF0aCkKIHsKQEAgLTM0MCwxNCArMzI1LDE0IEBAIHZvaWQgZXdrX2ZyYW1lX3RoZW1l
X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogcGF0aCkKIH0KIAogLyoqCi0gKiBHZXRz
IHRoZSBpbW1lZGlhdGUgdGhlbWUgc2V0IG9uIHRoaXMgZnJhbWUuCisgKiBHZXRzIHRoZSB0aGVt
ZSBzZXQgb24gdGhpcyBmcmFtZS4KICAqCiAgKiBUaGlzIHJldHVybnMgdGhlIHZhbHVlIHNldCBi
eSBld2tfZnJhbWVfdGhlbWVfc2V0KCkuIE5vdGUgdGhhdCBpZgotICogaXQgaXMgQGMgTlVMTCwg
dGhlIGZyYW1lIHdpbGwgaW5oZXJpdCBwYXJlbnQncyB0aGVtZS4KKyAqIGl0IGlzIEBjIDAsIHRo
ZSBmcmFtZSB3aWxsIGluaGVyaXQgcGFyZW50J3MgdGhlbWUuCiAgKgotICogQHBhcmFtIG8gZnJh
bWUgb2JqZWN0IHRvIGdldCB0aGVtZSBwYXRoLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRv
IGdldCB0aGVtZSBwYXRoCiAgKgotICogQHJldHVybiB0aGVtZSBwYXRoLCBtYXkgYmUgQGMgTlVM
TCBpZiBub3Qgc2V0LgorICogQHJldHVybiB0aGVtZSBwYXRoLCBtYXkgYmUgQGMgMCBpZiBub3Qg
c2V0CiAgKi8KIGNvbnN0IGNoYXIqIGV3a19mcmFtZV90aGVtZV9nZXQoRXZhc19PYmplY3QqIG8p
CiB7CkBAIC0zNjQsOSArMzQ5LDEyIEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV90aGVtZV9nZXQo
RXZhc19PYmplY3QqIG8pCiAgKiBJdGVyYXRpb24gcmVzdWx0cyBhcmUgRXZhc19PYmplY3QqLCBz
byBnaXZlIGVpbmFfaXRlcmF0b3JfbmV4dCgpIGEKICAqIHBvaW50ZXIgdG8gaXQuCiAgKgotICog
QHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpdGVyYXRvciwgZnJlZSB1c2luZwotICogICAgICAg
ICBlaW5hX2l0ZXJhdG9yX2ZyZWUoKS4gSWYgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSB0aGUKLSAq
ICAgICAgICAgaXRlcmF0b3IsIEBjIE5VTEwgaXMgcmV0dXJuZWQuCisgKiBSZXR1cm5lZCBpdGVy
YXRvciBzaG91bGQgYmUgZnJlZWQgYnkgZWluYV9pdGVyYXRvcl9mcmVlKCkuCisgKgorICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgaXRlcmF0b3IKKyAqCisgKiBAcmV0dXJu
IGEgbmV3bHkgYWxsb2NhdGVkIGl0ZXJhdG9yIG9uIHN1Y2Vzcywgb3IgQGMgMCBpZiBub3QgcG9z
c2libGUgdG8gCisgKiAgICAgIGNyZWF0ZSB0aGUgaXRlcmF0b3IKICAqLwogRWluYV9JdGVyYXRv
ciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhFdmFzX09iamVjdCogbykKIHsKQEAg
LTM4Niw3ICszNzQsNyBAQCBFaW5hX0l0ZXJhdG9yKiBld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0
b3JfbmV3KEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIEZpbmRzIGEgY2hpbGQgZnJhbWUg
YnkgaXRzIG5hbWUsIHJlY3Vyc2l2ZWx5LgorICogRmluZHMgYSBjaGlsZCBmcmFtZSBieSBpdCBu
YW1lLCByZWN1cnNpdmVseS4KICAqCiAgKiBGb3IgcHJlLWRlZmluZWQgbmFtZXMsIHJldHVybnMg
QGEgbyBpZiBAYSBuYW1lIGlzICJfc2VsZiIgb3IKICAqICJfY3VycmVudCIsIHJldHVybnMgQGEg
bydzIHBhcmVudCBmcmFtZSBpZiBAYSBuYW1lIGlzICJfcGFyZW50IiwKQEAgLTM5OSw3ICszODcs
MTAgQEAgRWluYV9JdGVyYXRvciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhFdmFz
X09iamVjdCogbykKICAqIHRoaXMgZnVuY3Rpb24gd2lsbCBzZWFyY2ggZm9yIGEgbWF0Y2hpbmcg
ZnJhbWUgaW4gb3RoZXIgbWFpbiBmcmFtZQogICogaGllcmFyY2hpZXMuCiAgKgotICogQHJldHVy
biBvYmplY3QgaWYgZm91bmQsIEBjIE5VTEwgaWYgbm90aGluZyB3aXRoIHRoYXQgbmFtZS4KKyAq
IEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmaW5kIGEgY2hpbGQgZnJhbWUKKyAqIEBwYXJhbSBu
YW1lIGNoaWxkIGZyYW1lIG5hbWUKKyAqCisgKiBAcmV0dXJuIGNoaWxkIGZyYW1lIG9mIHRoZSBn
aXZlbiBmcmFtZSwgb3IgQGMgMCBpZiB0aGUgdGhlIGNoaWxkIHdhc24ndCBmb3VuZAogICovCiBF
dmFzX09iamVjdCogZXdrX2ZyYW1lX2NoaWxkX2ZpbmQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNo
YXIqIG5hbWUpCiB7CkBAIC00MTEsMTAgKzQwMiwxMiBAQCBFdmFzX09iamVjdCogZXdrX2ZyYW1l
X2NoaWxkX2ZpbmQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIG5hbWUpCiB9CiAKIC8qKgot
ICogQXNrIG1haW4gZnJhbWUgdG8gbG9hZCB0aGUgZ2l2ZW4gVVJJLgorICogQXNrcyB0aGUgbWFp
biBmcmFtZSB0byBsb2FkIHRoZSBnaXZlbiBVUkkuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2Jq
ZWN0IHRvIGxvYWQgdXJpCisgKiBAcGFyYW0gdXJpIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmll
ciB0byBsb2FkCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGxvYWQgdXJpLgotICog
QHBhcmFtIHVyaSB1bmlmb3JtIHJlc291cmNlIGlkZW50aWZpZXIgdG8gbG9hZC4KKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQog
ICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNo
YXIqIHVyaSkKIHsKQEAgLTQyOSwxMCArNDIyLDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdXJp
X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXJpKQogLyoqCiAgKiBHZXRzIHRoZSB1
cmkgb2YgdGhpcyBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHVy
aS4KKyAqIEl0IHJldHVybnMgYW4gaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQgbm90CisgKiBi
ZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4K
ICAqCi0gKiBAcmV0dXJuIGZyYW1lIHVyaSBvciBAYyBOVUxMLiBJdCdzIGEgaW50ZXJuYWwgc3Ry
aW5nIGFuZCBzaG91bGQKLSAqICAgICAgICAgbm90IGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlz
IGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHRvIGdldCB1cmkKKyAqCisgKiBAcmV0dXJuIGZyYW1lIHVyaSBvbiBzdWNjZXNzIG9yIEBjIDAg
b24gZmFpbHVyZQogICovCiBjb25zdCBjaGFyKiBld2tfZnJhbWVfdXJpX2dldChjb25zdCBFdmFz
X09iamVjdCogbykKIHsKQEAgLTQ0MywxMCArNDM4LDEyIEBAIGNvbnN0IGNoYXIqIGV3a19mcmFt
ZV91cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogLyoqCiAgKiBHZXRzIHRoZSB0aXRsZSBv
ZiB0aGlzIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgdGl0bGUu
CisgKiBJdCByZXR1cm5zIGFuIGludGVybmFsIHN0cmluZyBhbmQgc2hvdWxkIG5vdAorICogYmUg
bW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCisg
KgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB0aXRsZQogICoKLSAqIEByZXR1cm4g
ZnJhbWUgdGl0bGUgb3IgQGMgTlVMTC4gSXQncyBhIGludGVybmFsIHN0cmluZyBhbmQgc2hvdWxk
Ci0gKiAgICAgICAgIG5vdCBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRv
IGJlIHN0cmluZ3NoYXJlZC4KKyAqIEByZXR1cm4gZnJhbWUgdGl0bGUgb24gc3VjY2VzcyBvciBA
YyAwIG9uIGZhaWx1cmUKICAqLwogY29uc3QgY2hhciogZXdrX2ZyYW1lX3RpdGxlX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKQEAgLTQ1NywxMCArNDU0LDEyIEBAIGNvbnN0IGNoYXIqIGV3
a19mcmFtZV90aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAvKioKICAqIEdldHMgdGhl
IG5hbWUgb2YgdGhpcyBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0
IG5hbWUuCisgKiBJdCByZXR1cm5zIGFuIGludGVybmFsIHN0cmluZyBhbmQgc2hvdWxkIG5vdAor
ICogYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHJpbmdzaGFy
ZWQuCiAgKgotICogQHJldHVybiBmcmFtZSBuYW1lIG9yIEBjIE5VTEwuIEl0J3MgYSBpbnRlcm5h
bCBzdHJpbmcgYW5kIHNob3VsZAotICogICAgICAgICBub3QgYmUgbW9kaWZpZWQuIFRoZSBzdHJp
bmcgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCisgKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gZ2V0IG5hbWUKKyAqCisgKiBAcmV0dXJuIGZyYW1lIG5hbWUgb24gc3VjY2VzcyBv
ciBAYyAwIG9uIGZhaWx1cmUKICAqLwogY29uc3QgY2hhciogZXdrX2ZyYW1lX25hbWVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogewpAQCAtNDgxLDE0ICs0ODAsMTQgQEAgY29uc3QgY2hhciog
ZXdrX2ZyYW1lX25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIEdl
dCBsYXN0IGtub3duIGNvbnRlbnRzIHNpemUuCisgKiBHZXRzIGxhc3Qga25vd24gY29udGVudHMg
c2l6ZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IGNvbnRlbnRzIHNpemUu
Ci0gKiBAcGFyYW0gdyB3aGVyZSB0byBzdG9yZSBjb250ZW50cyBzaXplIHdpZHRoLiBNYXkgYmUg
QGMgTlVMTC4KLSAqIEBwYXJhbSBoIHdoZXJlIHRvIHN0b3JlIGNvbnRlbnRzIHNpemUgaGVpZ2h0
LiBNYXkgYmUgQGMgTlVMTC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgY29udGVu
dHMgc2l6ZQorICogQHBhcmFtIHcgcG9pbnRlciB0byBzdG9yZSBjb250ZW50cyBzaXplIHdpZHRo
LCBtYXkgYmUgQGMgMAorICogQHBhcmFtIGggcG9pbnRlciB0byBzdG9yZSBjb250ZW50cyBzaXpl
IGhlaWdodCwgbWF5IGJlIEBjIDAKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNj
ZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSBhbmQKLSAqICAgICAgICAgQGEgdyBhbmQg
QGEgaCB3aWxsIGJlIHplcm9lZC4KKyAqICAgICAgICAgQGEgdyBhbmQgQGEgaCB3aWxsIGJlIHpl
cm9lZAogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkKiB3LCBFdmFzX0Nvb3JkKiBoKQogewpAQCAtNTM4LDE2
ICs1MzcsMTYgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NvbnRlbnRzX3NldF9pbnRl
cm5hbChFd2tfRnJhbWVfU21hcnRfRGF0YSAqc2QsIGNvbnMKIC8qKgogICogUmVxdWVzdHMgbG9h
ZGluZyB0aGUgZ2l2ZW4gY29udGVudHMgaW4gdGhpcyBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBm
cmFtZSBvYmplY3QgdG8gbG9hZCBkb2N1bWVudC4KLSAqIEBwYXJhbSBjb250ZW50cyB3aGF0IHRv
IGxvYWQgaW50byBmcmFtZS4gTXVzdCBub3QgYmUgQGMgTlVMTC4KLSAqIEBwYXJhbSBjb250ZW50
c19zaXplIGJ5dGUgc2l6ZSBvZiBkYXRhIGluIEBhIGNvbnRlbnRzLgotICogICAgICAgIElmIHpl
cm8sIHN0cmxlbigpIGlzIHVzZWQuCi0gKiBAcGFyYW0gbWltZV90eXBlIHR5cGUgb2YgQGEgY29u
dGVudHMgZGF0YS4gSWYgQGMgTlVMTCAidGV4dC9odG1sIiBpcyBhc3N1bWVkLgotICogQHBhcmFt
IGVuY29kaW5nIHVzZWQgZm9yIEBhIGNvbnRlbnRzIGRhdGEuIElmIEBjIE5VTEwgIlVURi04IiBp
cyBhc3N1bWVkLgotICogQHBhcmFtIGJhc2VfdXJpIGJhc2UgdXJpIHRvIHVzZSBmb3IgcmVsYXRp
dmUgcmVzb3VyY2VzLiBNYXkgYmUgQGMgTlVMTC4KLSAqICAgICAgICBJZiBwcm92aWRlZCBtdXN0
IGJlIGFuIGFic29sdXRlIHVyaS4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBsb2FkIGRv
Y3VtZW50CisgKiBAcGFyYW0gY29udGVudHMgd2hhdCB0byBsb2FkIGludG8gZnJhbWUKKyAqIEBw
YXJhbSBjb250ZW50c19zaXplIHNpemUgb2YgQGEgY29udGVudHMgKGluIGJ5dGVzKSwKKyAqICAg
ICAgICBpZiBAYyAwIGlzIGdpdmVuLCBsZW5ndGggb2YgQGEgY29udGVudHMgaXMgdXNlZAorICog
QHBhcmFtIG1pbWVfdHlwZSB0eXBlIG9mIEBhIGNvbnRlbnRzIGRhdGEsIGlmIEBjIDAgaXMgZ2l2
ZW4gInRleHQvaHRtbCIgaXMgYXNzdW1lZAorICogQHBhcmFtIGVuY29kaW5nIGVuY29kaW5nIGZv
ciBAYSBjb250ZW50cyBkYXRhLCBpZiBAYyAwIGlzIGdpdmVuICJVVEYtOCIgaXMgYXNzdW1lZAor
ICogQHBhcmFtIGJhc2VfdXJpIGJhc2UgdXJpIHRvIHVzZSBmb3IgcmVsYXRpdmUgcmVzb3VyY2Vz
LCBtYXkgYmUgQGMgMCwKKyAqICAgICAgICBpZiBwcm92aWRlZCBAYiBtdXN0IGJlIGFuIGFic29s
dXRlIHVyaQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3NmdWwgcmVxdWVz
dCwgQGMgRUlOQV9GQUxTRSBvbiBlcnJvcnMuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzZnVsIHJlcXVlc3QsIEBjIEVJTkFfRkFMU0Ugb24gZXJyb3JzCiAgKi8KIEVpbmFfQm9v
bCBld2tfZnJhbWVfY29udGVudHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBjb250
ZW50cywgc2l6ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0IGNoYXIqIG1pbWVfdHlwZSwgY29uc3Qg
Y2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VfdXJpKQogewpAQCAtNTYyLDIxICs1NjEs
MjEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19zZXQoRXZhc19PYmplY3QqIG8sIGNv
bnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY28KICAqIFJlcXVlc3RzIGxvYWRpbmcgYWx0ZXJu
YXRpdmUgY29udGVudHMgZm9yIHVucmVhY2hhYmxlIFVSSSBpbiB0aGlzIGZyYW1lLgogICoKICAq
IFRoaXMgaXMgc2ltaWxhciB0byBld2tfZnJhbWVfY29udGVudHNfc2V0KCksIGJ1dCBpcyB1c2Vk
IHdoZW4gc29tZQotICogVVJJIGZhaWxlZCB0byBsb2FkLCB1c2luZyB0aGUgcHJvdmlkZWQgY29u
dGVudCBpbnN0ZWFkLiBUaGUgbWFpbgorICogVVJJIHdhcyBmYWlsZWQgdG8gbG9hZCwgdXNpbmcg
dGhlIHByb3ZpZGVkIGNvbnRlbnQgaW5zdGVhZC4gVGhlIG1haW4KICAqIGRpZmZlcmVuY2UgaXMg
dGhhdCBiYWNrLWZvcndhcmQgbmF2aWdhdGlvbiBsaXN0IGlzIG5vdCBjaGFuZ2VkLgogICoKLSAq
IEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBsb2FkIGRvY3VtZW50LgotICogQHBhcmFtIGNvbnRl
bnRzIHdoYXQgdG8gbG9hZCBpbnRvIGZyYW1lLiBNdXN0IG5vdCBiZSBAYyBOVUxMLgotICogQHBh
cmFtIGNvbnRlbnRzX3NpemUgYnl0ZSBzaXplIG9mIGRhdGEgaW4gQGEgY29udGVudHMuCi0gKiAg
ICAgICAgSWYgemVybywgc3RybGVuKCkgaXMgdXNlZC4KLSAqIEBwYXJhbSBtaW1lX3R5cGUgdHlw
ZSBvZiBAYSBjb250ZW50cyBkYXRhLiBJZiBAYyBOVUxMICJ0ZXh0L2h0bWwiIGlzIGFzc3VtZWQu
Ci0gKiBAcGFyYW0gZW5jb2RpbmcgdXNlZCBmb3IgQGEgY29udGVudHMgZGF0YS4gSWYgQGMgTlVM
TCAiVVRGLTgiIGlzIGFzc3VtZWQuCi0gKiBAcGFyYW0gYmFzZV91cmkgYmFzZSB1cmkgdG8gdXNl
IGZvciByZWxhdGl2ZSByZXNvdXJjZXMuIE1heSBiZSBAYyBOVUxMLgotICogICAgICAgIElmIHBy
b3ZpZGVkIG11c3QgYmUgYW4gYWJzb2x1dGUgdXJpLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHRvIGxvYWQgYWx0ZXJuYXRpdmUgY29udGVudAorICogQHBhcmFtIGNvbnRlbnRzIHdoYXQgdG8g
bG9hZCBpbnRvIGZyYW1lLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKiBAcGFyYW0gY29udGVudHNf
c2l6ZSBzaXplIG9mIEBhIGNvbnRlbnRzIChpbiBieXRlcyksCisgKiAgICAgICAgaWYgQGMgMCBp
cyBnaXZlbiwgbGVuZ3RoIG9mIEBhIGNvbnRlbnRzIGlzIHVzZWQKKyAqIEBwYXJhbSBtaW1lX3R5
cGUgdHlwZSBvZiBAYSBjb250ZW50cyBkYXRhLCBpZiBAYyAwIGlzIGdpdmVuICJ0ZXh0L2h0bWwi
IGlzIGFzc3VtZWQKKyAqIEBwYXJhbSBlbmNvZGluZyBlbmNvZGluZyB1c2VkIGZvciBAYSBjb250
ZW50cyBkYXRhLCBpZiBAYyAwIGlzIGdpdmVuICJVVEYtOCIgaXMgYXNzdW1lZAorICogQHBhcmFt
IGJhc2VfdXJpIGJhc2UgVVJJIHRvIHVzZSBmb3IgcmVsYXRpdmUgcmVzb3VyY2VzLCBtYXkgYmUg
QGMgMCwKKyAqICAgICAgICBpZiBwcm92aWRlZCBtdXN0IGJlIGFuIGFic29sdXRlIHVyaQogICog
QHBhcmFtIHVucmVhY2hhYmxlX3VyaSB0aGUgVVJJIHRoYXQgZmFpbGVkIHRvIGxvYWQgYW5kIGlz
IGdldHRpbmcgdGhlCi0gKiAgICAgICAgYWx0ZXJuYXRpdmUgcmVwcmVzZW50YXRpb24uCisgKiAg
ICAgICAgYWx0ZXJuYXRpdmUgcmVwcmVzZW50YXRpb24KICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3QsIEBjIEVJTkFfRkFMU0Ugb24gZXJyb3JzLgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzc2Z1bCByZXF1ZXN0LCBAYyBFSU5BX0ZBTFNF
IG9uIGVycm9ycwogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9z
ZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY29udGVudHNf
c2l6ZSwgY29uc3QgY2hhciogbWltZV90eXBlLCBjb25zdCBjaGFyKiBlbmNvZGluZywgY29uc3Qg
Y2hhciogYmFzZV91cmksIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlX3VyaSkKIHsKQEAgLTU5MCwx
MiArNTg5LDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfYWx0ZXJuYXRlX3NldChF
dmFzX09iamVjdCogbywgY29uc3QgY2hhciogY29udGVudHMsCiB9CiAKIC8qKgotICogUmVxdWVz
dHMgZXhlY3V0aW9uIG9mIGdpdmVuIHNjcmlwdC4KKyAqIFJlcXVlc3RzIGV4ZWN1dGlvbiBvZiB0
aGUgZ2l2ZW4gc2NyaXB0LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBleGVjdXRl
IHNjcmlwdC4KLSAqIEBwYXJhbSBzY3JpcHQgamF2YSBzY3JpcHQgdG8gZXhlY3V0ZS4KKyAqIEBw
YXJhbSBvIGZyYW1lIG9iamVjdCB0byBleGVjdXRlIHNjcmlwdAorICogQHBhcmFtIHNjcmlwdCBK
YXZhIFNjcmlwdCB0byBleGVjdXRlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcmVx
dWVzdCB3YXMgZG9uZSwgQGMgRUlOQV9GQUxTRSBvbiBlcnJvcnMuCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiByZXF1ZXN0IHdhcyBkb25lLCBAYyBFSU5BX0ZBTFNFIG9uIGVycm9ycwogICov
CiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBjaGFyKiBzY3JpcHQpCiB7CkBAIC02MDcsMTEgKzYwNiwxMSBAQCBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX3NjcmlwdF9leGVjdXRlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzY3JpcHQpCiB9
CiAKIC8qKgotICogR2V0cyBpZiBmcmFtZSBpcyBlZGl0YWJsZS4KKyAqIFF1ZXJpZXMgaWYgdGhl
IGZyYW1lIGlzIGVkaXRhYmxlLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQg
ZWRpdGFibGUgc3RhdGUuCisgKiBAcGFyYW0gbyB0aGUgZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IGVk
aXRhYmxlIHN0YXRlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgZWRpdGFibGUsIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGZy
YW1lIGlzIGVkaXRhYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKQEAgLTYyMSwx
MiArNjIwLDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZWRpdGFibGVfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogfQogCiAvKioKLSAqIFNldHMgaWYgZnJhbWUgaXMgZWRpdGFibGUuCisgKiBT
ZXRzIGVkaXRhYmxlIHN0YXRlIGZvciBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gc2V0IGVkaXRhYmxlIHN0YXRlLgotICogQHBhcmFtIGVkaXRhYmxlIG5ldyBzdGF0ZS4K
KyAqIEBwYXJhbSBvIHRoZSBmcmFtZSBvYmplY3QgdG8gc2V0IGVkaXRhYmxlIHN0YXRlCisgKiBA
cGFyYW0gZWRpdGFibGUgYSBuZXcgc3RhdGUgdG8gc2V0CiAgKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5h
X0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGVk
aXRhYmxlKQogewpAQCAtNjQxLDExICs2NDAsMTMgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9lZGl0
YWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlZGl0YWJsZSkKIH0KIAogLyoqCi0g
KiBHZXQgdGhlIGNvcHkgb2YgdGhlIHNlbGVjdGlvbiB0ZXh0LgorICogR2V0cyB0aGUgY29weSBv
ZiB0aGUgc2VsZWN0ZWQgdGV4dC4KKyAqCisgKiBUaGUgcmV0dXJuZWQgc3RyaW5nIEBiIHNob3Vs
ZCBiZSBmcmVlZCBhZnRlciB1c2UuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdl
dCBzZWxlY3Rpb24gdGV4dC4KKyAqIEBwYXJhbSBvIHRoZSBmcmFtZSBvYmplY3QgdG8gZ2V0IHNl
bGVjdGVkIHRleHQKICAqCi0gKiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgb3IgQGMg
TlVMTCBpZiBub3RoaW5nIGlzIHNlbGVjdGVkIG9yIGZhaWx1cmUuCisgKiBAcmV0dXJuIGEgbmV3
bHkgYWxsb2NhdGVkIHN0cmluZyBvciBAYyAwIGlmIG5vdGhpbmcgaXMgc2VsZWN0ZWQgb3Igb24g
ZmFpbHVyZQogICovCiBjaGFyKiBld2tfZnJhbWVfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKIHsKQEAgLTY1OCwxNSArNjU5LDE1IEBAIGNoYXIqIGV3a19mcmFtZV9zZWxlY3Rp
b25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIFNlYXJjaCB0aGUgZ2l2
ZW4gdGV4dCBzdHJpbmcgaW4gZG9jdW1lbnQuCisgKiBTZWFyY2hlcyB0aGUgZ2l2ZW4gc3RyaW5n
IGluIGEgZG9jdW1lbnQuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNl
YXJjaCB0ZXh0LgotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIHNlYXJjaC4K
LSAqIEBwYXJhbSBjYXNlX3NlbnNpdGl2ZSBpZiBzZWFyY2ggc2hvdWxkIGJlIGNhc2Ugc2Vuc2l0
aXZlIG9yIG5vdC4KLSAqIEBwYXJhbSBmb3J3YXJkIGlmIHNlYXJjaCBpcyBmcm9tIGN1cnNvciBh
bmQgb24gb3IgYmFja3dhcmRzLgotICogQHBhcmFtIHdyYXAgaWYgc2VhcmNoIHNob3VsZCB3cmFw
IGF0IGVuZC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0byBzZWFyY2ggdGhlIHRl
eHQKKyAqIEBwYXJhbSBzdHJpbmcgcmVmZXJlbmNlIHN0cmluZyB0byBzZWFyY2gKKyAqIEBwYXJh
bSBjYXNlX3NlbnNpdGl2ZSBpZiBzZWFyY2ggc2hvdWxkIGJlIGNhc2Ugc2Vuc2l0aXZlIG9yIG5v
dAorICogQHBhcmFtIGZvcndhcmQgaWYgc2VhcmNoIGlzIGZyb20gY3Vyc29yIGFuZCBvbiBvciBi
YWNrd2FyZHMKKyAqIEBwYXJhbSB3cmFwIGlmIHNlYXJjaCBzaG91bGQgd3JhcCBhdCB0aGUgZW5k
CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgZm91bmQsIEBjIEVJTkFfRkFMU0UgaWYg
bm90IG9yIGZhaWx1cmUuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgZ2l2ZW4gc3Ry
aW5nIHdhcyBmb3VuZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVyZQogICovCiBFaW5h
X0Jvb2wgZXdrX2ZyYW1lX3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBjb25zdCBj
aGFyKiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9Cb29sIGZvcndhcmQs
IEVpbmFfQm9vbCB3cmFwKQogewpAQCAtNjc4LDE1ICs2NzksMTUgQEAgRWluYV9Cb29sIGV3a19m
cmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5n
LCBFaW5hX0IKIH0KIAogLyoqCi0gKiBNYXJrIG1hdGNoZXMgdGhlIGdpdmVuIHRleHQgc3RyaW5n
IGluIGRvY3VtZW50LgorICogTWFya3MgbWF0Y2hlcyB0aGUgZ2l2ZW4gc3RyaW5nIGluIGEgZG9j
dW1lbnQuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0
LgotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIG1hdGNoLgotICogQHBhcmFt
IGNhc2Vfc2Vuc2l0aXZlIGlmIG1hdGNoIHNob3VsZCBiZSBjYXNlIHNlbnNpdGl2ZSBvciBub3Qu
Ci0gKiBAcGFyYW0gaGlnaGxpZ2h0IGlmIG1hdGNoZXMgc2hvdWxkIGJlIGhpZ2hsaWdodGVkLgot
ICogQHBhcmFtIGxpbWl0IG1heGltdW0gYW1vdW50IG9mIG1hdGNoZXMsIG9yIHplcm8gdG8gdW5s
aW1pdGVkLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0Cisg
KiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBzdHJpbmcgdG8gbWF0Y2gKKyAqIEBwYXJhbSBjYXNl
X3NlbnNpdGl2ZSBpZiBtYXRjaCBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUgb3Igbm90CisgKiBA
cGFyYW0gaGlnaGxpZ2h0IGlmIG1hdGNoZXMgc2hvdWxkIGJlIGhpZ2hsaWdodGVkCisgKiBAcGFy
YW0gbGltaXQgbWF4aW11bSBhbW91bnQgb2YgbWF0Y2hlcywgb3IgemVybyB0byB1bmxpbWl0ZWQK
ICAqCi0gKiBAcmV0dXJuIG51bWJlciBvZiBtYXRjaGVzLgorICogQHJldHVybiBudW1iZXIgb2Yg
bWF0Y2hlZCBAYSBzdHJpbmcKICAqLwogdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNo
ZXNfbWFyayhFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2Fz
ZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKIHsK
QEAgLTY5OSwxMSArNzAwLDEyIEBAIHVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVz
X21hcmsoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHN0cmluZywgRWluCiB9CiAKIC8qKgot
ICogUmV2ZXJzZXMgdGhlIGVmZmVjdCBvZiBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoKQor
ICogVW5tYXJrcyBhbGwgbWFya2VkIG1hdGNoZXMgaW4gYSBkb2N1bWVudC4KKyAqIFJldmVyc2Vz
IHRoZSBlZmZlY3Qgb2YgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKCkuCiAgKgotICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0LgorICogQHBhcmFtIG8gZnJh
bWUgb2JqZWN0IHdoZXJlIHRvIHVubWFyayBtYXRjaGVzCiAgKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBmb3IgZmFpbHVyZS4KKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICovCiBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0KiBv
KQogewpAQCAtNzE1LDEyICs3MTcsMTIgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNo
ZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogbykKIH0KIAogLyoqCi0gKiBTZXQgaWYgc2hvdWxk
IGhpZ2hsaWdodCBtYXRjaGVzIG1hcmtlZCB3aXRoIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFy
aygpLgorICogU2V0cyB3aGV0aGVyIG1hdGNoZXMgbWFya2VkIHdpdGggZXdrX2ZyYW1lX3RleHRf
bWF0Y2hlc19tYXJrKCkgc2hvdWxkIGJlIGhpZ2hsaWdodGVkLgogICoKLSAqIEBwYXJhbSBvIGZy
YW1lIG9iamVjdCB3aGVyZSB0byBzZXQgaWYgbWF0Y2hlcyBhcmUgaGlnaGxpZ2h0ZWQgb3Igbm90
LgotICogQHBhcmFtIGhpZ2hsaWdodCBpZiBAYyBFSU5BX1RSVUUsIG1hdGNoZXMgd2lsbCBiZSBo
aWdobGlnaHRlZC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0byBzZXQgaWYgbWF0
Y2hlcyBhcmUgaGlnaGxpZ2h0ZWQgb3Igbm90CisgKiBAcGFyYW0gaGlnaGxpZ2h0IEBjIEVJTkFf
VFJVRSBpZiBtYXRjaGVzIGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3QKICAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIGZvciBm
YWlsdXJlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxT
RSBvbiBmYWlsdXJlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hpZ2hs
aWdodF9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBoaWdobGlnaHQpCiB7CkBAIC03MzEs
MTEgKzczMywxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRf
c2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgaGlnaGxpZwogfQogCiAvKioKLSAqIEdldCBp
ZiBzaG91bGQgaGlnaGxpZ2h0IG1hdGNoZXMgbWFya2VkIHdpdGggZXdrX2ZyYW1lX3RleHRfbWF0
Y2hlc19tYXJrKCkuCisgKiBSZXR1cm5zIHdoZXRoZXIgbWF0Y2hlcyBtYXJrZWQgd2l0aCBld2tf
ZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoKSBhcmUgaGlnaGxpZ2h0ZWQuCiAgKgotICogQHBhcmFt
IG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IGlmIG1hdGNoZXMgYXJlIGhpZ2hsaWdodGVkIG9yIG5v
dC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSBpZiBtYXRjaGVzIGFyZSBoaWdo
bGlnaHRlZCBvciBub3QKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGV5IGFyZSBo
aWdobGlnaHRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBpZiBtYXRjaGVzIGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UK
ICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKIHsKQEAgLTc2MSwxNSArNzYzLDE1IEBAIHN0YXRpYyBib29sIF9l
d2tfZnJhbWVfcmVjdF9pc19uZWdhdGl2ZV92YWx1ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBp
KQogfQogCiAvKioKLSAqIEdldCB4LCB5IHBvc2l0aW9uIG9mIG4tdGggdGV4dCBtYXRjaCBpbiBm
cmFtZQorICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIG4tdGggbWF0Y2hlZCB0ZXh0IGlu
IHRoZSBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qgd2hlcmUgbWF0Y2hlcyBh
cmUgaGlnaGxpZ2h0ZWQuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qgd2hlcmUgbWF0Y2hlcyBh
cmUgbWFya2VkCiAgKiBAcGFyYW0gbiBpbmRleCBvZiBlbGVtZW50IAotICogQHBhcmFtIHggd2hl
cmUgdG8gcmV0dXJuIHggcG9zaXRpb24uIE1heSBiZSBAYyBOVUxMLiAKLSAqIEBwYXJhbSB5IHdo
ZXJlIHRvIHJldHVybiB5IHBvc2l0aW9uLiBNYXkgYmUgQGMgTlVMTC4KKyAqIEBwYXJhbSB4IHRo
ZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9mIEBhIG4gbWF0Y2hl
ZCB0ZXh0LCBtYXkgYmUgQGMgMAorICogQHBhcmFtIHkgdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhl
IHZlcnRpY2FsIHBvc2l0aW9uIG9mIEBhIG4gbWF0Y2hlZCB0ZXh0LCBtYXkgYmUgQGMgMAogICoK
LSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0UgZm9yIGZh
aWx1cmUgLSB3aGVuIG5vIG1hdGNoZXMgZm91bmQgb3IgCi0gKiAgICAgICAgIG4gYmlnZ2VyIHRo
YW4gc2VhcmNoIHJlc3VsdHMuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBA
YyBFSU5BX0ZBTFNFIHdoZW4gbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kIG9yIAorICogICAgICAgICBA
YSBuIGlzIGJpZ2dlciB0aGFuIHNlYXJjaCByZXN1bHRzIG9yIG9uIGZhaWx1cmUKICAqLwogRWlu
YV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQoRXZhc19PYmplY3QqIG8s
IHNpemVfdCBuLCBpbnQqIHgsIGludCogeSkKIHsKQEAgLTc5NCwxMSArNzk2LDExIEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KEV2YXNfT2JqZWN0KiBvLCBz
aXplX3QgbiwgaW50KiB4LCBpCiB9CiAKIC8qKgotICogQXNrIGZyYW1lIHRvIHN0b3AgbG9hZGlu
Zy4KKyAqIEFza3MgZnJhbWUgdG8gc3RvcCBsb2FkaW5nLgogICoKLSAqIEBwYXJhbSBvIGZyYW1l
IG9iamVjdCB0byBzdG9wIGxvYWRpbmcuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gc3Rv
cCBsb2FkaW5nCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3N0b3AoRXZh
c19PYmplY3QqIG8pCiB7CkBAIC04MDksMTEgKzgxMSwxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1l
X3N0b3AoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogQXNrIGZyYW1lIHRvIHJlbG9hZCBj
dXJyZW50IGRvY3VtZW50LgorICogQXNrcyBmcmFtZSB0byByZWxvYWQgY3VycmVudCBkb2N1bWVu
dC4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcmVsb2FkLgorICogQHBhcmFtIG8g
ZnJhbWUgb2JqZWN0IHRvIHJlbG9hZCBjdXJyZW50IGRvY3VtZW50CiAgKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICoK
ICAqIEBzZWUgZXdrX2ZyYW1lX3JlbG9hZF9mdWxsKCkKICAqLwpAQCAtODI2LDExICs4MjgsMTEg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV9yZWxvYWQoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgot
ICogQXNrIGZyYW1lIHRvIGZ1bGx5IHJlbG9hZCBjdXJyZW50IGRvY3VtZW50LCB1c2luZyBubyBw
cmV2aW91cyBjYWNoZXMuCisgKiBBc2tzIGZyYW1lIHRvIGZ1bGx5IHJlbG9hZCBjdXJyZW50IGRv
Y3VtZW50LCB1c2luZyBubyBwcmV2aW91cyBjYWNoZXMuCiAgKgotICogQHBhcmFtIG8gZnJhbWUg
b2JqZWN0IHRvIHJlbG9hZC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byByZWxvYWQgY3Vy
cmVudCBkb2N1bWVudAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9yZWxv
YWRfZnVsbChFdmFzX09iamVjdCogbykKIHsKQEAgLTg0MSwxMSArODQzLDExIEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogQXNr
IGZyYW1lIHRvIG5hdmlnYXRlIGJhY2sgaW4gaGlzdG9yeS4KKyAqIEFza3MgdGhlIGZyYW1lIHRv
IG5hdmlnYXRlIGJhY2sgaW4gdGhlIGhpc3RvcnkuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2Jq
ZWN0IHRvIG5hdmlnYXRlIGJhY2suCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbmF2aWdh
dGUgYmFjawogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKICAqCiAgKiBAc2VlIGV3a19mcmFtZV9uYXZpZ2F0ZSgpCiAg
Ki8KQEAgLTg1NSwxMSArODU3LDExIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfYmFjayhFdmFzX09i
amVjdCogbykKIH0KIAogLyoqCi0gKiBBc2sgZnJhbWUgdG8gbmF2aWdhdGUgZm9yd2FyZCBpbiBo
aXN0b3J5LgorICogQXNrcyBmcmFtZSB0byBuYXZpZ2F0ZSBmb3J3YXJkIGluIHRoZSBoaXN0b3J5
LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBuYXZpZ2F0ZSBmb3J3YXJkLgorICog
QHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIG5hdmlnYXRlIGZvcndhcmQKICAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAg
KgogICogQHNlZSBld2tfZnJhbWVfbmF2aWdhdGUoKQogICovCkBAIC04NjksMTMgKzg3MSwxMyBA
QCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmQoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgot
ICogTmF2aWdhdGUgYmFjayBvciBmb3J3YXJkIGluIGhpc3RvcnkuCisgKiBOYXZpZ2F0ZXMgYmFj
ayBvciBmb3J3YXJkIGluIHRoZSBoaXN0b3J5LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBuYXZpZ2F0ZS4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBuYXZpZ2F0ZQogICog
QHBhcmFtIHN0ZXBzIGlmIHBvc2l0aXZlIG5hdmlnYXRlcyB0aGF0IGFtb3VudCBmb3J3YXJkcywg
aWYgbmVnYXRpdmUKLSAqICAgICAgICBkb2VzIGJhY2t3YXJkcy4KKyAqICAgICAgICBkb2VzIGJh
Y2t3YXJkcwogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZShF
dmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogewpAQCAtODg5LDExICs4OTEsMTEgQEAgRWluYV9C
b29sIGV3a19mcmFtZV9uYXZpZ2F0ZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogfQogCiAv
KioKLSAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGJhY2t3YXJkcyBvbmUg
aXRlbSBpbiBoaXN0b3J5LgorICogUXVlcmllcyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRl
IGJhY2t3YXJkcyBvbmUgaXRlbSBpbiB0aGUgaGlzdG9yeS4KICAqCi0gKiBAcGFyYW0gbyBmcmFt
ZSBvYmplY3QgdG8gY2hlY2sgaWYgYmFja3dhcmQgbmF2aWdhdGlvbiBpcyBwb3NzaWJsZS4KKyAq
IEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSBpZiBiYWNrd2FyZCBuYXZpZ2F0aW9uIGlz
IHBvc3NpYmxlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQncyBwb3Nz
aWJsZSB0byBuYXZpZ2F0ZSBiYWNrd2FyZHMgb25lIGl0ZW0gaW4gdGhlIGhpc3RvcnksIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKgogICogQHNlZSBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2li
bGUoKQogICovCkBAIC05MDMsMTEgKzkwNSwxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2JhY2tf
cG9zc2libGUoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogQ2hlY2sgaWYgaXQgaXMgcG9z
c2libGUgdG8gbmF2aWdhdGUgZm9yd2FyZHMgb25lIGl0ZW0gaW4gaGlzdG9yeS4KKyAqIFF1ZXJp
ZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBmb3J3YXJkcyBvbmUgaXRlbSBpbiB0aGUg
aGlzdG9yeS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY2hlY2sgaWYgZm9yd2Fy
ZCBuYXZpZ2F0aW9uIGlzIHBvc3NpYmxlLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1
ZXJ5IGlmIGZvcndhcmQgbmF2aWdhdGlvbiBpcyBwb3NzaWJsZQogICoKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgZm9yd2FyZHMgaW4g
dGhlIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKgogICogQHNlZSBld2tfZnJh
bWVfbmF2aWdhdGVfcG9zc2libGUoKQogICovCkBAIC05MTcsMTMgKzkxOSwxMyBAQCBFaW5hX0Jv
b2wgZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgot
ICogQ2hlY2sgaWYgaXQgaXMgcG9zc2libGUgdG8gbmF2aWdhdGUgZ2l2ZW4gQGEgc3RlcHMgaW4g
aGlzdG9yeS4KKyAqIFF1ZXJpZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBnaXZlbiBA
YSBzdGVwcyBpbiB0aGUgaGlzdG9yeS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8g
bmF2aWdhdGUuCi0gKiBAcGFyYW0gc3RlcHMgaWYgcG9zaXRpdmUgbmF2aWdhdGVzIHRoYXQgYW1v
dW50IGZvcndhcmRzLCBpZiBuZWdhdGl2ZQotICogICAgICAgIGRvZXMgYmFja3dhcmRzLgorICog
QHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IGlmIGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRl
IEBhIHN0ZXBzIGluIHRoZSBoaXN0b3J5CisgKiBAcGFyYW0gc3RlcHMgcG9zaXRpdmUgdmFsdWUg
bmF2aWdhdGVzIHRoYXQgYW1vdW50IGZvcndhcmRzLCBuZWdhdGl2ZSB2YWx1ZSAKKyAqICAgICAg
ICBkb2VzIGJhY2t3YXJkcwogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBvc3NpYmxl
LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0
J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgQGEgc3RlcHMgaW4gdGhlIGhpc3RvcnksIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2li
bGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykKIHsKQEAgLTkzNCwxMSArOTM2LDExIEBAIEVp
bmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QqIG8sIGludCBz
dGVwcykKIH0KIAogLyoqCi0gKiBHZXQgY3VycmVudCB6b29tIGxldmVsIHVzZWQgYnkgdGhpcyBm
cmFtZS4KKyAqIEdldHMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUu
CiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IHpvb20gbGV2ZWwuCisgKiBA
cGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHpvb20gbGV2ZWwKICAqCi0gKiBAcmV0dXJuIHpv
b20gbGV2ZWwgb3IgLTEuMCBvbiBmYWlsdXJlLgorICogQHJldHVybiB6b29tIGxldmVsIGZvciB0
aGUgZnJhbWUgb3IgQGMgLTEuMCBvbiBmYWlsdXJlCiAgKi8KIGZsb2F0IGV3a19mcmFtZV96b29t
X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKQEAgLTk1MSwxMiArOTUzLDEyIEBAIGZsb2F0
IGV3a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIH0KIAogLyoqCi0gKiBT
ZXQgY3VycmVudCB6b29tIGxldmVsIHVzZWQgYnkgdGhpcyBmcmFtZS4KKyAqIFNldHMgdGhlIGN1
cnJlbnQgem9vbSBsZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJh
bWUgb2JqZWN0IHRvIGNoYW5nZSB6b29tIGxldmVsLgotICogQHBhcmFtIHpvb20gbmV3IGxldmVs
LgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB6b29tIGxldmVsCisgKiBAcGFy
YW0gem9vbSBhIG5ldyB6b29tIGxldmVsCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUuCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICoKICAqIEBzZWUg
ZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldCgpCiAgKi8KQEAgLTk3MiwxMSArOTc0LDExIEBA
IEVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20p
CiB9CiAKIC8qKgotICogUXVlcnkgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBh
bmQgbm90IG90aGVyIGVsZW1lbnRzLgorICogUXVlcmllcyBpZiB6b29tIGxldmVsIGp1c3QgYXBw
bGllcyB0byB0ZXh0IG9ubHkgYW5kIG5vdCBvdGhlciBlbGVtZW50cy4KICAqCi0gKiBAcGFyYW0g
byBmcmFtZSB0byBxdWVyeSBzZXR0aW5nLgorICogQHBhcmFtIG8gZnJhbWUgdG8gcXVlcnkgem9v
bSBsZXZlbCBmb3IgdGV4dCBvbmx5CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYganVz
dCB0ZXh0IGFyZSBzY2FsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgem9vbSBsZXZlbCBpcyBhcHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlO
QV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pv
b21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKQEAgLTk4NSwxMiArOTg3
LDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBvKQogfQogCiAvKioKLSAqIFNldCBpZiB6b29tIGxldmVsIGp1c3QgYXBwbGllcyB0
byB0ZXh0IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCisgKiBTZXRzIGlmIHpvb20gbGV2ZWwganVz
dCBhcHBsaWVzIHRvIHRleHQgb25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgogICoKLSAqIEBw
YXJhbSBvIGZyYW1lIHRvIGNoYW5nZSBzZXR0aW5nLgotICogQHBhcmFtIHNldHRpbmcgQGMgRUlO
QV9UUlVFIGlmIHpvb20gc2hvdWxkIGp1c3QgYmUgYXBwbGllZCB0byB0ZXh0LgorICogQHBhcmFt
IG8gZnJhbWUgdG8gYXBwbHkgem9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5CisgKiBAcGFyYW0gc2V0
dGluZyBAYyBFSU5BX1RSVUUgaWYgem9vbSBsZXZlbCBzaG91bGQgYmUgYXBwbGllZCB0byB0ZXh0
IG9ubHksIEBjIEVJTkFfRkFMU0UgaWYgbm90CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNl
dHRpbmcpCiB7CkBAIC0xMDA5LDkgKzEwMTEsOSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21f
dGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNldHRpbmcpCiB9CiAKIC8q
KgotICogRnJlZSBoaXQgdGVzdCBjcmVhdGVkIHdpdGggZXdrX2ZyYW1lX2hpdF90ZXN0X25ldygp
LgorICogRnJlZXMgaGl0IHRlc3QgaW5zdGFuY2UgY3JlYXRlZCBieSBld2tfZnJhbWVfaGl0X3Rl
c3RfbmV3KCkuCiAgKgotICogQHBhcmFtIGhpdF90ZXN0IGluc3RhbmNlLiBNdXN0IEBiIG5vdCBi
ZSBAYyBOVUxMLgorICogQHBhcmFtIGhpdF90ZXN0IGluc3RhbmNlCiAgKi8KIHZvaWQgZXdrX2Zy
YW1lX2hpdF90ZXN0X2ZyZWUoRXdrX0hpdF9UZXN0KiBoaXRfdGVzdCkKIHsKQEAgLTEwMjUsMTQg
KzEwMjcsMTUgQEAgdm9pZCBld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QqIGhp
dF90ZXN0KQogfQogCiAvKioKLSAqIENyZWF0ZXMgYSBuZXcgaGl0IHRlc3QgZm9yIGdpdmVuIGZy
YW1lIGFuZCBwb2ludC4KKyAqIENyZWF0ZXMgYSBuZXcgaGl0IHRlc3QgZm9yIHRoZSBnaXZlbiBm
cmFtZSBhbmQgcG9pbnQuCisgKgorICogVGhlIHJldHVybmVkIG9iamVjdCBzaG91bGQgYmUgZnJl
ZWQgYnkgZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUoKS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSB0
byBkbyBoaXQgdGVzdCBvbi4KLSAqIEBwYXJhbSB4IGhvcml6b250YWwgcG9zaXRpb24gdG8gcXVl
cnkuCi0gKiBAcGFyYW0geSB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBxdWVyeS4KKyAqIEBwYXJhbSBv
IGZyYW1lIG9iamVjdCB0byBkbyBoaXQgdGVzdCBvbgorICogQHBhcmFtIHggdGhlIGhvcml6b250
YWwgcG9zaXRpb24gdG8gcXVlcnkKKyAqIEBwYXJhbSB5IHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiB0
byBxdWVyeQogICoKLSAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaGl0IHRlc3Qgb24gc3Vj
Y2VzcywgQGMgTlVMTCBvdGhlcndpc2UuCi0gKiAgICAgICAgIEZyZWUgbWVtb3J5IHdpdGggZXdr
X2ZyYW1lX2hpdF90ZXN0X2ZyZWUoKQorICogQHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBoaXQg
dGVzdCBvbiBzdWNjZXNzLCBAYyAwIG90aGVyd2lzZQogICovCiBFd2tfSGl0X1Rlc3QqIGV3a19m
cmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkKIHsK
QEAgLTEwOTIsMTMgKzEwOTUsMTYgQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3Rf
bmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQgeCwgaW50IHkpCiB9CiAKIC8qKgotICogUmVs
YXRpdmUgc2Nyb2xsIG9mIGdpdmVuIGZyYW1lLgorICogU2V0cyBhIHJlbGF0aXZlIHNjcm9sbCBv
ZiB0aGUgZ2l2ZW4gZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNjcm9s
bC4KLSAqIEBwYXJhbSBkeCBob3Jpem9udGFsIG9mZnNldCB0byBzY3JvbGwuCi0gKiBAcGFyYW0g
ZHkgdmVydGljYWwgb2Zmc2V0IHRvIHNjcm9sbC4KKyAqIFRoaXMgZnVuY3Rpb24gZG9lcyBzY3Jv
bGwgQGEgZHggYW5kIEBhIGR5IHBpeGVscworICogZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbiBv
ZiBzY3JvbGwuCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9zc2libGUsIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNjcm9sbAor
ICogQHBhcmFtIGR4IGhvcml6b250YWwgb2Zmc2V0IHRvIHNjcm9sbAorICogQHBhcmFtIGR5IHZl
cnRpY2FsIG9mZnNldCB0byBzY3JvbGwKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wKIGV3a19mcmFt
ZV9zY3JvbGxfYWRkKEV2YXNfT2JqZWN0KiBvLCBpbnQgZHgsIGludCBkeSkKQEAgLTExMTEsMTYg
KzExMTcsMTYgQEAgZXdrX2ZyYW1lX3Njcm9sbF9hZGQoRXZhc19PYmplY3QqIG8sIGludCBkeCwg
aW50IGR5KQogfQogCiAvKioKLSAqIFNldCBhYnNvbHV0ZSBzY3JvbGwgb2YgZ2l2ZW4gZnJhbWUu
CisgKiBTZXRzIGFuIGFic29sdXRlIHNjcm9sbCBvZiB0aGUgZ2l2ZW4gZnJhbWUuCiAgKgogICog
Qm90aCB2YWx1ZXMgYXJlIGZyb20gemVybyB0byB0aGUgY29udGVudHMgc2l6ZSBtaW51cyB0aGUg
dmlld3BvcnQKICAqIHNpemUuIFNlZSBld2tfZnJhbWVfc2Nyb2xsX3NpemVfZ2V0KCkuCiAgKgot
ICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNjcm9sbC4KLSAqIEBwYXJhbSB4IGhvcml6b250
YWwgcG9zaXRpb24gdG8gc2Nyb2xsLgotICogQHBhcmFtIHkgdmVydGljYWwgcG9zaXRpb24gdG8g
c2Nyb2xsLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNjcm9sbAorICogQHBhcmFtIHgg
aG9yaXpvbnRhbCBwb3NpdGlvbiB0byBzY3JvbGwKKyAqIEBwYXJhbSB5IHZlcnRpY2FsIHBvc2l0
aW9uIHRvIHNjcm9sbAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBA
YyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVpbmFfQm9vbAogZXdrX2ZyYW1lX3Nj
cm9sbF9zZXQoRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkKQEAgLTExMzMsMTkgKzExMzks
MTkgQEAgZXdrX2ZyYW1lX3Njcm9sbF9zZXQoRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkK
IH0KIAogLyoqCi0gKiBHZXQgdGhlIHBvc3NpYmxlIHNjcm9sbCBzaXplIG9mIGdpdmVuIGZyYW1l
LgorICogR2V0cyB0aGUgcG9zc2libGUgc2Nyb2xsIHNpemUgb2YgdGhlIGdpdmVuIGZyYW1lLgog
ICoKICAqIFBvc3NpYmxlIHNjcm9sbCBzaXplIGlzIGNvbnRlbnRzIHNpemUgbWludXMgdGhlIHZp
ZXdwb3J0CiAgKiBzaXplLiBJdCdzIHRoZSBsYXN0IGFsbG93ZWQgdmFsdWUgZm9yIGV3a19mcmFt
ZV9zY3JvbGxfc2V0KCkKICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gc2Nyb2xsLgot
ICogQHBhcmFtIHcgd2hlcmUgdG8gcmV0dXJuIGhvcml6b250YWwgc2l6ZSB0aGF0IGlzIHBvc3Np
YmxlIHRvCi0gKiAgICAgICAgc2Nyb2xsLiBNYXkgYmUgQGMgTlVMTC4KLSAqIEBwYXJhbSBoIHdo
ZXJlIHRvIHJldHVybiB2ZXJ0aWNhbCBzaXplIHRoYXQgaXMgcG9zc2libGUgdG8gc2Nyb2xsLgot
ICogICAgICAgIE1heSBiZSBAYyBOVUxMLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdl
dCBzY3JvbGwgc2l6ZQorICogQHBhcmFtIHcgdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGhvcml6
b250YWwgc2l6ZSB0aGF0IGlzIHBvc3NpYmxlIHRvIHNjcm9sbCwKKyAqICAgICAgICBtYXkgYmUg
QGMgMAorICogQHBhcmFtIGggdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIHZlcnRpY2FsIHNpemUg
dGhhdCBpcyBwb3NzaWJsZSB0byBzY3JvbGwsCisgKiAgICAgICAgbWF5IGJlIEBjIDAKICAqCi0g
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UgYW5kCi0gKiAgICAgICAgIHZhbHVlcyBhcmUgemVyb2VkLgorICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UgYW5kCisgKiAgICAgICAg
IHZhbHVlcyBhcmUgemVyb2VkCiAgKi8KIEVpbmFfQm9vbAogZXdrX2ZyYW1lX3Njcm9sbF9zaXpl
X2dldChjb25zdCBFdmFzX09iamVjdCogbywgaW50KiB3LCBpbnQqIGgpCkBAIC0xMTY2LDEzICsx
MTcyLDEzIEBAIGV3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8s
IGludCogdywgaW50KiBoKQogfQogCiAvKioKLSAqIEdldCB0aGUgY3VycmVudCBzY3JvbGwgcG9z
aXRpb24gb2YgZ2l2ZW4gZnJhbWUuCisgKiBHZXRzIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlv
biBvZiBnaXZlbiBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gc2Nyb2xs
LgotICogQHBhcmFtIHggd2hlcmUgdG8gcmV0dXJuIGhvcml6b250YWwgcG9zaXRpb24uIE1heSBi
ZSBAYyBOVUxMLgotICogQHBhcmFtIHkgd2hlcmUgdG8gcmV0dXJuIHZlcnRpY2FsIHBvc2l0aW9u
LiBNYXkgYmUgQGMgTlVMTC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgdGhlIGN1
cnJlbnQgc2Nyb2xsIHBvc2l0aW9uCisgKiBAcGFyYW0geCB0aGUgcG9pbnRlciB0byBzdG9yZSB0
aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiwgbWF5IGJlIEBjIDAKKyAqIEBwYXJhbSB5IHRoZSBwb2lu
dGVyIHRvIHN0b3JlIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbi4gbWF5IGJlIEBjIDAKICAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2Ug
YW5kCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZSBhbmQKICAqICAgICAgICAgdmFsdWVzIGFyZSB6ZXJvZWQuCiAgKi8KIEVpbmFfQm9v
bApAQCAtMTE5NCwxNyArMTIwMCwxNyBAQCBld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8sIGludCogeCwgaW50KiB5KQogfQogCiAvKioKLSAqIEdldCB0aGUgY3Vy
cmVudCBmcmFtZSB2aXNpYmxlIGNvbnRlbnQgZ2VvbWV0cnkuCisgKiBHZXRzIHRoZSB2aXNpYmxl
IGNvbnRlbnQgZ2VvbWV0cnkgb2YgdGhlIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9i
amVjdCB0byBxdWVyeSB2aXNpYmxlIGNvbnRlbnQgZ2VvbWV0cnkuCi0gKiBAcGFyYW0gaW5jbHVk
ZV9zY3JvbGxiYXJzIHdoZW5ldmVyIHRvIGluY2x1ZGUgc2Nyb2xsYmFycyBzaXplLgotICogQHBh
cmFtIHggaG9yaXpvbnRhbCBwb3NpdGlvbi4gTWF5IGJlIEBjIE5VTEwuCi0gKiBAcGFyYW0geSB2
ZXJ0aWNhbCBwb3NpdGlvbi4gTWF5IGJlIEBjIE5VTEwuCi0gKiBAcGFyYW0gdyB3aWR0aC4gTWF5
IGJlIEBjIE5VTEwuCi0gKiBAcGFyYW0gaCBoZWlnaHQuIE1heSBiZSBAYyBOVUxMLgorICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IHZpc2libGUgY29udGVudCBnZW9tZXRyeQorICog
QHBhcmFtIGluY2x1ZGVfc2Nyb2xsYmFycyB3aGVuZXZlciB0byBpbmNsdWRlIHNjcm9sbGJhcnMg
c2l6ZQorICogQHBhcmFtIHggdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGhvcml6b250YWwgcG9z
aXRpb24sIG1heSBiZSBAYyAwCisgKiBAcGFyYW0geSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUg
dmVydGljYWwgcG9zaXRpb24sIG1heSBiZSBAYyAwCisgKiBAcGFyYW0gdyB0aGUgcG9pbnRlciB0
byBzdG9yZSB3aWR0aCwgbWF5IGJlIEBjIDAKKyAqIEBwYXJhbSBoIHRoZSBwb2ludGVyIHRvIHN0
b3JlIGhlaWdodCwgbWF5IGJlIEBjIDAKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBw
b3NzaWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UgYW5kCi0gKiAgICAgICAgIHZhbHVlcyBh
cmUgemVyb2VkLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UgYW5kCisgKiAgICAgICAgIHZhbHVlcyBhcmUgemVyb2VkCiAgKi8KIEVp
bmFfQm9vbCBld2tfZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChjb25zdCBFdmFz
X09iamVjdCogbywgRWluYV9Cb29sIGluY2x1ZGVfc2Nyb2xsYmFycywgaW50KiB4LCBpbnQqIHks
IGludCogdywgaW50KiBoKQogewpAQCAtMTIzMiwxNSArMTIzOCwxNSBAQCBFaW5hX0Jvb2wgZXdr
X2ZyYW1lX3Zpc2libGVfY29udGVudF9nZW9tZXRyeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8s
IEVpbmFfQm9vbAogfQogCiAvKioKLSAqIEdldCB0aGUgY3VycmVudCBwYWludHNFbnRpcmVDb250
ZW50cyBmbGFnLgorICogUXVlcmllcyBpZiB0aGUgZnJhbWUgc2hvdWxkIGJlIHJlcGFpbnRlZCBj
b21wbGV0ZWx5LgogICoKLSAqIFRoaXMgZmxhZyB0ZWxscyBpZiBkaXJ0eSBhcmVhcyBzaG91bGQg
YmUgcmVwYWludGVkIGV2ZW4gaWYgdGhleSBhcmUKLSAqIG91dCBvZiB0aGUgc2NyZWVuLgorICog
RnVuY3Rpb24gdGVsbHMgaWYgZGlydHkgYXJlYXMgc2hvdWxkIGJlIHJlcGFpbnRlZCAKKyAqIGV2
ZW4gaWYgdGhleSBhcmUgb3V0IG9mIHRoZSBzY3JlZW4uCiAgKgotICogQHBhcmFtIG8gZnJhbWUg
b2JqZWN0IHRvIHF1ZXJ5IHBhaW50c0VudGlyZUNvbnRlbnRzIGZsYWcuCisgKiBAcGFyYW0gbyBm
cmFtZSBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIGZyYW1lIHNob3VsZCBiZSByZXBhaW50ZWQgY29t
cGxldGVseQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHJlcGFpbnRpbmcgYW55IGRp
cnR5IGFyZWEsIEBjIEVJTkFfRkFMU0UKLSAqICAgICAgICAgb3RoZXJ3aXNlLgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgYW55IGRpcnR5IGFyZWFzIHNob3VsZCBiZSByZXBhaW50ZWQsIEBj
IEVJTkFfRkFMU0UKKyAqICAgICAgICAgb3RoZXJ3aXNlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJh
bWVfcGFpbnRfZnVsbF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CkBAIC0xMjUxLDE0ICsx
MjU3LDE0IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfcGFpbnRfZnVsbF9nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8pCiB9CiAKIC8qKgotICogU2V0IHRoZSBjdXJyZW50IHBhaW50c0VudGlyZUNvbnRl
bnRzIGZsYWcuCisgKiBTZXRzIGlmIHRoZSBmcmFtZSBzaG91bGQgYmUgcmVwYWludGVkIGNvbXBs
ZXRlbHkuCiAgKgotICogVGhpcyBmbGFnIHRlbGxzIGlmIGRpcnR5IGFyZWFzIHNob3VsZCBiZSBy
ZXBhaW50ZWQgZXZlbiBpZiB0aGV5IGFyZQotICogb3V0IG9mIHRoZSBzY3JlZW4uCisgKiBGdW5j
dGlvbiBzZXRzIGlmIGRpcnR5IGFyZWFzIHNob3VsZCBiZSByZXBhaW50ZWQgCisgKiBldmVuIGlm
IHRoZXkgYXJlIG91dCBvZiB0aGUgc2NyZWVuLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBzZXQgcGFpbnRzRW50aXJlQ29udGVudHMgZmxhZy4KLSAqIEBwYXJhbSBmbGFnIEBjIEVJ
TkFfVFJVRSBpZiB3YW50IHRvIGFsd2F5cyByZXBhaW50IGFueSBkaXJ0eSBhcmVhLAotICogICAg
ICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gc2V0IGlmIHRoZSBmcmFtZSBzaG91bGQgYmUgcmVwYWludGVkIGNvbXBsZXRlbHkKKyAq
IEBwYXJhbSBmbGFnIEBjIEVJTkFfVFJVRSB0byByZXBhaW50IHRoZSBmcmFtZSBjb21wbGV0ZWx5
LAorICogICAgICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3QKICAqLwogdm9pZCBld2tfZnJh
bWVfcGFpbnRfZnVsbF9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBmbGFnKQogewpAQCAt
MTI2OSwxMSArMTI3NSwxMSBAQCB2b2lkIGV3a19mcmFtZV9wYWludF9mdWxsX3NldChFdmFzX09i
amVjdCogbywgRWluYV9Cb29sIGZsYWcpCiB9CiAKIC8qKgotICogRmVlZCB0aGUgZm9jdXMgaW4g
c2lnbmFsIHRvIHRoaXMgZnJhbWUuCisgKiBGZWVkcyB0aGUgZm9jdXMgaW4gZXZlbnQgdG8gdGhl
IGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmb2N1cy4KKyAqIEBwYXJh
bSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIGZvY3VzCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgaXQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgdGhlIGZvY3VzIHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfaW4oRXZhc19PYmpl
Y3QqIG8pCiB7CkBAIC0xMjg1LDkgKzEyOTEsMTEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVk
X2ZvY3VzX2luKEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIEZlZWQgdGhlIGZvY3VzIG91
dCBzaWduYWwgdG8gdGhpcyBmcmFtZS4KKyAqIEZlZWRzIHRoZSBmb2N1cyBvdXQgZXZlbnQgdG8g
dGhlIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byByZW1vdmUgZm9jdXMK
ICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcmVtb3ZlIGZvY3VzLgorICogQHJldHVy
biBAYyBFSU5BX0ZBTFNFIHNpbmNlIHRoZSBmZWF0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZAogICov
CiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfb3V0KEV2YXNfT2JqZWN0KiBvKQogewpA
QCAtMTI5NywxMiArMTMwNSwxMiBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfb3V0
KEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIEZlZWQgdGhlIG1vdXNlIHdoZWVsIGV2ZW50
IHRvIHRoZSBmcmFtZS4KKyAqIEZlZWRzIHRoZSBtb3VzZSB3aGVlbCBldmVudCB0byB0aGUgZnJh
bWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgZXZlbnQuCi0gKiBAcGFy
YW0gZXYgbW91c2Ugd2hlZWwgZXZlbnQuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZmVl
ZCB0aGUgbW91c2Ugd2hlZWwgZXZlbnQKKyAqIEBwYXJhbSBldiB0aGUgbW91c2Ugd2hlZWwgZXZl
bnQKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCB3YXMgaGFuZGxlZCwgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgbW91c2Ug
d2hlZWwgZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVp
bmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVjdCogbywgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCiB7CkBAIC0xMzIwLDEyICsxMzI4LDEyIEBAIEVp
bmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVjdCogbywgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlCiB9CiAKIC8qKgotICogRmVlZCB0aGUgbW91c2UgZG93biBl
dmVudCB0byB0aGUgZnJhbWUuCisgKiBGZWVkcyB0aGUgbW91c2UgZG93biBldmVudCB0byB0aGUg
ZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgZXZlbnQuCi0gKiBA
cGFyYW0gZXYgbW91c2UgZG93biBldmVudC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBm
ZWVkIHRoZSBtb3VzZSBkb3duIGV2ZW50CisgKiBAcGFyYW0gZXYgdGhlIG1vdXNlIGRvd24gZXZl
bnQKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCB3YXMgaGFuZGxlZCwgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUgbW91c2Ug
ZG93biBldmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWlu
YV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24oRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfRG93biogZXYpCiB7CkBAIC0xMzQ2LDEyICsxMzU0LDEyIEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX0Rvd24qCiB9CiAKIC8qKgotICogRmVlZCB0aGUgbW91c2UgdXAgZXZlbnQg
dG8gdGhlIGZyYW1lLgorICogRmVlZHMgdGhlIG1vdXNlIHVwIGV2ZW50IHRvIHRoZSBmcmFtZS4K
ICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCBldmVudC4KLSAqIEBwYXJhbSBl
diBtb3VzZSB1cCBldmVudC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIHRoZSBt
b3VzZSB1cCBldmVudAorICogQHBhcmFtIGV2IHRoZSBtb3VzZSB1cCBldmVudAogICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBtb3VzZSB1cCBldmVudCB3YXMg
aGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFt
ZV9mZWVkX21vdXNlX3VwKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1Vw
KiBldikKIHsKQEAgLTEzNzIsMTIgKzEzODAsMTIgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVk
X21vdXNlX3VwKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldikK
IH0KIAogLyoqCi0gKiBGZWVkIHRoZSBtb3VzZSBtb3ZlIGV2ZW50IHRvIHRoZSBmcmFtZS4KKyAq
IEZlZWRzIHRoZSBtb3VzZSBtb3ZlIGV2ZW50IHRvIHRoZSBmcmFtZS4KICAqCi0gKiBAcGFyYW0g
byBmcmFtZSBvYmplY3QgdG8gZmVlZCBldmVudC4KLSAqIEBwYXJhbSBldiBtb3VzZSBtb3ZlIGV2
ZW50LgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgdGhlIG1vdXNlIG1vdmUgZXZl
bnQKKyAqIEBwYXJhbSBldiB0aGUgbW91c2UgbW92ZSBldmVudAogICoKLSAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIGl0IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBtb3VzZSBtb3ZlIGV2ZW50IHdhcyBoYW5kbGVk
LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRf
bW91c2VfbW92ZShFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBl
dikKIHsKQEAgLTEzOTgsNiArMTQwNiwxNiBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91
c2VfbW92ZShFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKgogICAg
IHJldHVybiBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKGV2ZW50KTsKIH0K
IAorLyoqCisgKiBGZWVkcyB0aGUgdG91Y2ggZXZlbnQgdG8gdGhlIGZyYW1lLgorICoKKyAqIEBw
YXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIHRvdWNoIGV2ZW50CisgKiBAcGFyYW0gYWN0aW9u
IHRoZSBhY3Rpb24gb2YgdG91Y2ggZXZlbnQKKyAqIEBwYXJhbSBwb2ludHMgYSBsaXN0IG9mIHBv
aW50cyAoRXdrX1RvdWNoX1BvaW50KSB0byBwcm9jZXNzCisgKiBAcGFyYW0gbWV0YVN0YXRlIERF
UFJFQ1RBRUQsIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdworICoKKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIGlmIHRvdWNoIGV2ZW50IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQor
ICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIG8s
IEV3a19Ub3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0KiBwb2ludHMsIGludCBtZXRh
U3RhdGUpCiB7CiAgICAgRWluYV9Cb29sIHJldCA9IEVJTkFfRkFMU0U7CkBAIC0xNTA0LDEyICsx
NTIyLDEyIEBAIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfZnJhbWVfaGFuZGxlX2tleV9z
Y3JvbGxpbmcoV2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBjCiB9CiAKIC8qKgotICogRmVlZCB0aGUg
a2V5Ym9hcmQga2V5IGRvd24gZXZlbnQgdG8gdGhlIGZyYW1lLgorICogRmVlZHMgdGhlIGtleWJv
YXJkIGtleSBkb3duIGV2ZW50IHRvIHRoZSBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gZmVlZCBldmVudC4KLSAqIEBwYXJhbSBldiBrZXlib2FyZCBrZXkgZG93biBldmVu
dC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIGV2ZW50CisgKiBAcGFyYW0gZXYg
a2V5Ym9hcmQga2V5IGRvd24gZXZlbnQKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBp
dCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiB0aGUga2V5IGRvd24gZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9rZXlfZG93bihFdmFzX09i
amVjdCogbywgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXYpCiB7CkBAIC0xNTI4LDEyICsx
NTQ2LDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9rZXlfZG93bihFdmFzX09iamVjdCog
bywgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXYpCiB9CiAKIC8qKgotICogRmVlZCB0aGUg
a2V5Ym9hcmQga2V5IHVwIGV2ZW50IHRvIHRoZSBmcmFtZS4KKyAqIEZlZWRzIHRoZSBrZXlib2Fy
ZCBrZXkgdXAgZXZlbnQgdG8gdGhlIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBmZWVkIGV2ZW50LgotICogQHBhcmFtIGV2IGtleWJvYXJkIGtleSB1cCBldmVudC4KKyAq
IEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIGV2ZW50CisgKiBAcGFyYW0gZXYga2V5Ym9h
cmQga2V5IHVwIGV2ZW50CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgaXQgd2FzIGhh
bmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgdGhlIGtleSB1cCBldmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UK
ICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV91cChFdmFzX09iamVjdCogbywgY29u
c3QgRXZhc19FdmVudF9LZXlfVXAqIGV2KQogewpAQCAtMTU1Myw2ICsxNTcxLDI0IEBAIEVpbmFf
Qm9vbCBld2tfZnJhbWVfZmVlZF9rZXlfdXAoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZl
bnRfS2V5X1VwKiBldikKIC8qKgogICogQGludGVybmFsCiAgKgorICogQ3JlYXRlcyBhIG5ldyBF
RkwgV2ViS2l0IEZyYW1lIG9iamVjdC4KKyAqCisgKiBGcmFtZXMgYXJlIGxvdyBsZXZlbCBlbnRy
aWVzIGNvbnRhaW5lZCBpbiBhIHBhZ2UgdGhhdCBpcyBjb250YWluZWQKKyAqIGJ5IGEgdmlldy4g
VXN1YWxseSBvbmUgb3BlcmF0ZXMgb24gdGhlIHZpZXcgYW5kIG5vdCBkaXJlY3RseSBvbiB0aGUK
KyAqIGZyYW1lLgorICoKKyAqIEBwYXJhbSBlIGNhbnZhcyB3aGVyZSB0byBjcmVhdGUgdGhlIGZy
YW1lIG9iamVjdAorICoKKyAqIEByZXR1cm4gYSBuZXcgZnJhbWUgb2JqZWN0IG9yIEBjIDAgb24g
ZmFpbHVyZQorICovCitFdmFzX09iamVjdCogZXdrX2ZyYW1lX2FkZChFdmFzKiBlKQoreworICAg
IHJldHVybiBldmFzX29iamVjdF9zbWFydF9hZGQoZSwgX2V3a19mcmFtZV9zbWFydF9jbGFzc19u
ZXcoKSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKgogICogSW5pdGlhbGl6ZSBmcmFtZSBi
YXNlZCBvbiBhY3R1YWwgV2ViS2l0IGZyYW1lLgogICoKICAqIFRoaXMgaXMgaW50ZXJuYWwgYW5k
IHNob3VsZCBuZXZlciBiZSBjYWxsZWQgYnkgZXh0ZXJuYWwgdXNlcnMuCkBAIC0xNTc0LDYgKzE2
MTAsMTEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0KiBvLCBFdmFzX09i
amVjdCogdmlldywgV2ViQ29yZTo6RnJhbWUqIGZyYW0KICAgICByZXR1cm4gRUlOQV9GQUxTRTsK
IH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqCisgKiBBZGRzIGNoaWxkIHRvIHRoZSBmcmFtZS4K
KyAqLwogRXZhc19PYmplY3QqIGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19PYmplY3QqIG8sIFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY2hpbGQsIGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJl
cikKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CkBAIC0xODkw
LDYgKzE5MzEsMTEgQEAgdm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBj
b25zdCBjaGFyKiB0aXRsZSkKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG8s
ICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQqKXNkLT50aXRsZSk7CiB9CiAKKy8qKgorICogQGludGVy
bmFsCisgKiAKKyAqIENyZWF0ZXMgYSB2aWV3LgorICovCiB2b2lkIGV3a19mcmFtZV92aWV3X2Ny
ZWF0ZV9mb3JfdmlldyhFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIHZpZXcpCiB7CiAgICAg
REJHKCJvPSVwLCB2aWV3PSVwIiwgbywgdmlldyk7CkBAIC0xOTQ2LDYgKzE5OTIsMTEgQEAgRWlu
YV9Cb29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCogbykKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICoKKyAqIEZvcmNlcyBsYXlvdXQg
Zm9yIGZyYW1lLgorICovCiB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3Qq
IG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CkBAIC0xOTU2LDYgKzIwMDcsMTEgQEAgdm9pZCBl
d2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNfT2JqZWN0KiBvKQogICAgICAgICB2aWV3LT5mb3Jj
ZUxheW91dCh0cnVlKTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqCisgKiBDcmVhdGVzIHBs
dWdpbi4KKyAqLwogV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2ZyYW1lX3Bs
dWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIG8sIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdp
blNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfZnJhbWUuaAppbmRleCBiODRmYzI1Li40OTMwMjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5oCkBAIC0xOCwxOSArMTgsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgogKi8KIAotI2lmbmRlZiBld2tfZnJhbWVfaAotI2RlZmluZSBld2tfZnJh
bWVfaAotCi0jaW5jbHVkZSA8RXZhcy5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAi
QyIgewotI2VuZGlmCi0KIC8qKgotICogQGZpbGUKLSAqCi0gKiBXZWJLaXQgZnJhbWUgc21hcnQg
b2JqZWN0LgorICogQGZpbGUgICAgZXdrX2ZyYW1lLmgKKyAqIEBicmllZiAgIFdlYktpdCBmcmFt
ZSBzbWFydCBvYmplY3QuCiAgKgogICogVGhpcyBvYmplY3QgaXMgdGhlIGxvdyBsZXZlbCBhY2Nl
c3MgdG8gV2ViS2l0LUVGTCBicm93c2VyCiAgKiBjb21wb25lbnQuIEl0IHJlcHJlc2VudHMgYm90
aCB0aGUgbWFpbiBhbmQgaW50ZXJuYWwgZnJhbWVzIHRoYXQKQEAgLTcwLDE4ICs2MCwyNyBAQCBl
eHRlcm4gIkMiIHsKICAqICAtICJzdGF0ZSxzYXZlIiwgdm9pZDogZnJhbWUncyBzdGF0ZSB3aWxs
IGJlIHNhdmVkIGFzIGEgaGlzdG9yeSBpdGVtLgogICovCiAKKyNpZm5kZWYgZXdrX2ZyYW1lX2gK
KyNkZWZpbmUgZXdrX2ZyYW1lX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9fY3Bs
dXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgogCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBm
b3IgX0V3a19GcmFtZV9Mb2FkX0Vycm9yLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9Mb2Fk
X0Vycm9yIEV3a19GcmFtZV9Mb2FkX0Vycm9yOwogLyoqCi0gKiBTdHJ1Y3R1cmUgdXNlZCB0byBy
ZXBvcnQgbG9hZCBlcnJvcnMuCisgKiBAYnJpZWYgICBTdHJ1Y3R1cmUgdXNlZCB0byByZXBvcnQg
bG9hZCBlcnJvcnMuCiAgKgogICogTG9hZCBlcnJvcnMgYXJlIHJlcG9ydGVkIGFzIHNpZ25hbCBi
eSBld2tfdmlldy4gQWxsIHRoZSBzdHJpbmdzIGFyZQogICogdGVtcG9yYXJ5IHJlZmVyZW5jZXMg
YW5kIHNob3VsZCBAYiBub3QgYmUgdXNlZCBhZnRlciB0aGUgc2lnbmFsCi0gKiBjYWxsYmFjayBy
ZXR1cm5zLiBJZiByZXF1aXJlZCwgbWFrZSBjb3BpZXMgd2l0aCBzdHJkdXAoKSBvcgorICogY2Fs
bGJhY2sgcmV0dXJucy4gSWYgaXQncyByZXF1aXJlZCwgbWFrZSBjb3BpZXMgd2l0aCBzdHJkdXAo
KSBvcgogICogZWluYV9zdHJpbmdzaGFyZV9hZGQoKSAodGhleSBhcmUgbm90IGV2ZW4gZ3VhcmFu
dGVlZCB0byBiZQogICogc3RyaW5nc2hhcmVkLCBzbyBtdXN0IHVzZSBlaW5hX3N0cmluZ3NoYXJl
X2FkZCgpIGFuZCBub3QKICAqIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkpLgogICovCi10eXBlZGVm
IHN0cnVjdCBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IgRXdrX0ZyYW1lX0xvYWRfRXJyb3I7CiBzdHJ1
Y3QgX0V3a19GcmFtZV9Mb2FkX0Vycm9yIHsKICAgICBpbnQgY29kZTsgLyoqPCBudW1lcmljIGVy
cm9yIGNvZGUgKi8KICAgICBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uOyAvKio8IGlmIGxvYWQg
ZmFpbGVkIGJlY2F1c2UgaXQgd2FzIGNhbmNlbGVkICovCkBAIC05MSw0MyArOTAsNDUgQEAgc3Ry
dWN0IF9Fd2tfRnJhbWVfTG9hZF9FcnJvciB7CiAgICAgRXZhc19PYmplY3QgKmZyYW1lOyAvKio8
IGZyYW1lIHdoZXJlIHRoZSBmYWlsdXJlIGhhcHBlbmVkICovCiB9OwogCisvLy8gQ3JlYXRlcyBh
IHR5cGUgbmFtZSBmb3IgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0LgordHlwZWRlZiBzdHJ1
Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0
OwogLyoqCi0gKiBTdHJ1Y3R1cmUgdXNlZCB0byByZXBvcnQgcmVzb3VyY2UgcmVxdWVzdHMKKyAq
IEBicmllZiAgIFN0cnVjdHVyZSB1c2VkIHRvIHJlcG9ydCByZXNvdXJjZSByZXF1ZXN0LgogICoK
ICAqIERldGFpbHMgZ2l2ZW4gYmVmb3JlIGEgcmVzb3VyY2UgaXMgbG9hZGVkIG9uIGEgZ2l2ZW4g
ZnJhbWUuIEl0J3MgdXNlZCBieQogICogZXdrX2ZyYW1lX3JlcXVlc3Rfd2lsbF9zZW5kKCkgdG8g
aW5mb3JtIHRoZSBkZXRhaWxzIG9mIGEgdG8tYmUtbG9hZGVkCiAgKiByZXNvdXJjZSwgYWxsb3dp
bmcgdGhlbSB0byBiZSBvdmVycmlkZGVuLgogICovCi10eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1l
X1Jlc291cmNlX1JlcXVlc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Q7CiBzdHJ1Y3QgX0V3
a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHsKLSAgICBjb25zdCBjaGFyICp1cmw7IC8qKjwgdXJs
IG9mIHRoaXMgcmVzb3VyY2UgKi8KLSAgICBjb25zdCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXI7
IC8qKjwgcmVzb3VyY2UncyBpZGVudGlmaWVyLiBDYW4gbm90IGJlIGNoYW5nZWQgKi8KKyAgICBj
b25zdCBjaGFyICp1cmw7IC8qKjwgdXJsIG9mIHRoZSByZXNvdXJjZSAqLworICAgIGNvbnN0IHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcjsgLyoqPCBpZGVudGlmaWVyIG9mIHJlc291cmNlLCBjYW4g
bm90IGJlIGNoYW5nZWQgKi8KIH07CiAKLS8qKgotICogU3RydWN0dXJlIHVzZWQgdG8gcmVwb3J0
IGhpdCB0ZXN0IHJlc3VsdHMuCi0gKi8KKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdr
X0hpdF9UZXN0LgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19IaXRfVGVzdCBFd2tfSGl0X1Rlc3Q7Cisv
Ly8gU3RydWN0dXJlIHVzZWQgdG8gcmVwb3J0IGhpdCB0ZXN0IHJlc3VsdC4KIHN0cnVjdCBfRXdr
X0hpdF9UZXN0IHsKLSAgICBpbnQgeCwgeTsKKyAgICBpbnQgeDsgLyoqPCB0aGUgaG9yaXpvbnRh
bCBwb3NpdGlvbiBvZiB0aGUgaGl0IHRlc3QgKi8KKyAgICBpbnQgeTsgLyoqPCB0aGUgdmVydGlj
YWwgcG9zaXRpb24gb2YgdGhlIGhpdCB0ZXN0ICovCiAgICAgc3RydWN0IHsKICAgICAgICAgaW50
IHgsIHksIHcsIGg7Ci0gICAgfSBib3VuZGluZ19ib3g7Ci0gICAgY29uc3QgY2hhciAqdGl0bGU7
Ci0gICAgY29uc3QgY2hhciAqYWx0ZXJuYXRlX3RleHQ7IC8qKjwgZm9yIGltYWdlLCBhcmVhLCBp
bnB1dCBhbmQgYXBwbGV0ICovCi0gICAgRXZhc19PYmplY3QgKmZyYW1lOworICAgIH0gYm91bmRp
bmdfYm94OyAvKio8IERFUFJFQ0FURUQsIHNlZSBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KCkgKi8K
KyAgICBjb25zdCBjaGFyICp0aXRsZTsgLyoqPCB0aXRsZSBvZiB0aGUgZWxlbWVudCAqLworICAg
IGNvbnN0IGNoYXIgKmFsdGVybmF0ZV90ZXh0OyAvKio8IHRoZSBhbHRlcm5hdGUgdGV4dCBmb3Ig
aW1hZ2UsIGFyZWEsIGlucHV0IGFuZCBhcHBsZXQgKi8KKyAgICBFdmFzX09iamVjdCAqZnJhbWU7
IC8qKjwgdGhlIHBvaW50ZXIgdG8gZnJhbWUgd2hlcmUgaGl0IHRlc3Qgd2FzIHJlcXVlc3RlZCAq
LwogICAgIHN0cnVjdCB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnRleHQ7Ci0gICAgICAgIGNvbnN0
IGNoYXIgKnVybDsKLSAgICAgICAgY29uc3QgY2hhciAqdGl0bGU7CisgICAgICAgIGNvbnN0IGNo
YXIgKnRleHQ7IC8qKjwgdGhlIHRleHQgb2YgdGhlIGxpbmsgKi8KKyAgICAgICAgY29uc3QgY2hh
ciAqdXJsOyAvKio8IFVSTCBvZiB0aGUgbGluayAqLworICAgICAgICBjb25zdCBjaGFyICp0aXRs
ZTsgLyoqPCB0aGUgdGl0bGUgb2YgbGluayAqLwogICAgICAgICBFdmFzX09iamVjdCAqdGFyZ2V0
X2ZyYW1lOwogICAgIH0gbGluazsKICAgICBzdHJ1Y3QgewotICAgICAgICBFaW5hX0Jvb2wgZWRp
dGFibGU6MTsKLSAgICAgICAgRWluYV9Cb29sIHNlbGVjdGVkOjE7CisgICAgICAgIEVpbmFfQm9v
bCBlZGl0YWJsZToxOyAvKio8IEBjIEVJTkFfVFJVRSBpZiBlbGVtZW50IGlzIGVkaXRhYmxlLCBA
YyBFSU5BX0ZBTFNFIGlmIG5vdCAqLworICAgICAgICBFaW5hX0Jvb2wgc2VsZWN0ZWQ6MTsgLyoq
PCBAYyBFSU5BX1RSVUUgaWYgZWxlbWVudCBpcyBzZWxlY3RlZCwgQGMgRUlOQV9GQUxTRSBpZiBu
b3QgKi8KICAgICB9IGZsYWdzOwogfTsKIAorLy8vIFJlcHJlc2VudHMgYWN0aW9ucyBvZiB0b3Vj
aCBldmVudHMuCiB0eXBlZGVmIGVudW0gewogICAgIEVXS19UT1VDSF9TVEFSVCwKICAgICBFV0tf
VE9VQ0hfRU5ELApAQCAtMTM1LDYgKzEzNiw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgRVdLX1RP
VUNIX0NBTkNFTAogfSBFd2tfVG91Y2hfRXZlbnRfVHlwZTsKIAorLy8vIFJlcHJlc2VudHMgc3Rh
dGVzIG9mIHRvdWNoIGV2ZW50cy4KIHR5cGVkZWYgZW51bSB7CiAgICAgRVdLX1RPVUNIX1BPSU5U
X1BSRVNTRUQsCiAgICAgRVdLX1RPVUNIX1BPSU5UX1JFTEVBU0VELApAQCAtMTQyLDExICsxNDQs
MTQgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBFV0tfVE9VQ0hfUE9JTlRfQ0FOQ0VMTEVECiB9IEV3
a19Ub3VjaF9Qb2ludF9UeXBlOwogCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19U
b3VjaF9Qb2ludC4KIHR5cGVkZWYgc3RydWN0IF9Fd2tfVG91Y2hfUG9pbnQgRXdrX1RvdWNoX1Bv
aW50OworLy8vIFJlcHJlc2VudHMgYSB0b3VjaCBwb2ludC4KIHN0cnVjdCBfRXdrX1RvdWNoX1Bv
aW50IHsKLSAgICB1bnNpZ25lZCBpbnQgaWQ7Ci0gICAgaW50IHgsIHk7Ci0gICAgRXdrX1RvdWNo
X1BvaW50X1R5cGUgc3RhdGU7CisgICAgdW5zaWduZWQgaW50IGlkOyAvKio8IGlkZW50aWZpZXIg
b2YgdGhlIHRvdWNoIGV2ZW50ICovCisgICAgaW50IHg7IC8qKjwgdGhlIGhvcml6b250YWwgcG9z
aXRpb24gb2YgdGhlIHRvdWNoIGV2ZW50ICovCisgICAgaW50IHk7IC8qKjwgdGhlIGhvcml6b250
YWwgcG9zaXRpb24gb2YgdGhlIHRvdWNoIGV2ZW50ICovCisgICAgRXdrX1RvdWNoX1BvaW50X1R5
cGUgc3RhdGU7IC8qKjwgc3RhdGUgb2YgdGhlIHRvdWNoIGV2ZW50ICovCiB9OwogCiBFQVBJIEV2
YXNfT2JqZWN0ICpld2tfZnJhbWVfdmlld19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97080</attachid>
            <date>2011-06-14 01:02:44 -0700</date>
            <delta_ts>2011-06-15 09:45:23 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>ewk_frame_doxygen_doc.patch</filename>
            <type>text/plain</type>
            <size>44981</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA3YzBlMWQ4Li5kN2Y2NDBhIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTEtMDYtMTMgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWpr
b3dza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0VGTF0gRml4IGFuZCB1cGRhdGUgZG94eWdlbiBkb2N1bWVudGF0aW9uIGZv
ciBld2tfZnJhbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MjUzMworCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAgICAgICAtIGZpeGVzIG1ldGhv
ZCBkZXNjcmlwdGlvbnMsCisgICAgICAgICAtIGFkZHMgYnJpZWZzIGZvciBzdHJ1Y3R1cmUgYW5k
IHR5cGRlZiwKKyAgICAgICAgIC0gcmVwbGFjZXMgTlVMTCB0byAwIGluIGRveHlnZW4gZG9jdW1l
bnRhdGlvbiAod2Via2l0J3Mgc3R5bGUgcmVxdWlyZWQgaXQpLAorICAgICAgICAgLSByZW1vdmVz
IGRvdHMgZnJvbSB0aGUgZW5kIG9mIHBhcmFtcyBhbmQgcmV0dXJuIGRlc2NyaXB0aW9uIChzZWUg
RUZMJ3MgZG9jdW1lbnRhdGlvbiksCisgICAgICAgICAtIG1vdmVzIGluY2x1ZGVzIGFuZCBkZWZp
bmVzIGJlbG93IGEgYnJpZWYgb2YgZXdrX2ZyYW1lLmgKKyAgICAgICAgIC0gbW92ZXMgaW50ZXJu
YWwgbWV0aG9kcyB0byB0aGUgZW5kIG9mIGV3a19mcmFtZS5jcHAuCisKKyAgICAgICAgKiBld2sv
ZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9hZGQpOgorICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuaDoKKwogMjAxMS0wNi0xMyAgTWljaGFsIFBha3VsYSB2ZWwgUnV0a2EgIDxtLnBh
a3VsYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggYmIwNDgzZi4uNmE0MzgyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTI4OSwyOSArMjg5LDExIEBAIHN0YXRpYyBp
bmxpbmUgRXZhc19TbWFydCogX2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcodm9pZCkKIH0KIAog
LyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgRnJhbWUg
b2JqZWN0LgotICoKLSAqIEZyYW1lcyBhcmUgbG93IGxldmVsIGVudHJpZXMgY29udGFpbmVkIGlu
IGEgcGFnZSB0aGF0IGlzIGNvbnRhaW5lZAotICogYnkgYSB2aWV3LiBVc3VhbGx5IG9uZSBvcGVy
YXRlcyBvbiB0aGUgdmlldyBhbmQgbm90IGRpcmVjdGx5IG9uIHRoZQotICogZnJhbWUuCi0gKgot
ICogQHBhcmFtIGUgY2FudmFzIHdoZXJlIHRvIGNyZWF0ZSB0aGUgZnJhbWUgb2JqZWN0LgotICoK
LSAqIEByZXR1cm4gZnJhbWUgb2JqZWN0IG9yIEBjIE5VTEwgaWYgZXJyb3JzLgotICovCi1FdmFz
X09iamVjdCogZXdrX2ZyYW1lX2FkZChFdmFzKiBlKQotewotICAgIHJldHVybiBldmFzX29iamVj
dF9zbWFydF9hZGQoZSwgX2V3a19mcmFtZV9zbWFydF9jbGFzc19uZXcoKSk7Ci19Ci0KLS8qKgog
ICogUmV0cmlldmVzIHRoZSBld2tfdmlldyBvYmplY3QgdGhhdCBvd25zIHRoaXMgZnJhbWUuCiAg
KgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB2aWV3IGZyb20uCisgKiBAcGFyYW0g
byBmcmFtZSBvYmplY3QgdG8gZ2V0IHZpZXcgb2JqZWN0CiAgKgotICogQHJldHVybiB2aWV3IG9i
amVjdCBvciBAYyBOVUxMIGlmIGVycm9ycy4KKyAqIEByZXR1cm4gdmlldyBvYmplY3Qgb3IgQGMg
MCBvbiBmYWlsdXJlCiAgKi8KIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVfdmlld19nZXQoY29uc3Qg
RXZhc19PYmplY3QqIG8pCiB7CkBAIC0zMjAsMTMgKzMwMiwxNiBAQCBFdmFzX09iamVjdCogZXdr
X2ZyYW1lX3ZpZXdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIFNldCB0
aGUgdGhlbWUgcGF0aCB0byBiZSB1c2VkIGJ5IHRoaXMgZnJhbWUuCisgKiBTZXRzIHRoZSB0aGVt
ZSBwYXRoIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoaXMgZnJhbWUuCiAgKgogICogRnJhbWVzIGlu
aGVyaXQgdGhlbWUgZnJvbSB0aGVpciBwYXJlbnQsIHRoaXMgd2lsbCBoYXZlIGFsbCBmcmFtZXMK
ICAqIHdpdGggdW5zZXQgdGhlbWUgdG8gdXNlIHRoaXMgb25lLgogICoKLSAqIEBwYXJhbSBvIGZy
YW1lIG9iamVjdCB0byBjaGFuZ2UgdGhlbWUuCi0gKiBAcGFyYW0gcGF0aCB0aGVtZSBwYXRoLCBt
YXkgYmUgQGMgTlVMTCB0byByZXNldCB0byBkZWZhdWx0IG9yIGluaGVyaXQgcGFyZW50LgorICog
QHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB0aGVtZQorICogQHBhcmFtIHBhdGggdGhl
bWUgcGF0aCwgbWF5IGJlIEBjIDAgdG8gcmVzZXQgdG8gZGVmYXVsdCB0aGVtZQorICogICAgICBv
ciBpbmhlcml0IHBhcmVudCdzIHRoZW1lLgorICoKKyAqIEBzZWUgZXdrX2ZyYW1lX3RoZW1lX2dl
dCgpCiAgKi8KIHZvaWQgZXdrX2ZyYW1lX3RoZW1lX3NldChFdmFzX09iamVjdCogbywgY29uc3Qg
Y2hhciogcGF0aCkKIHsKQEAgLTM0MCwxNCArMzI1LDE0IEBAIHZvaWQgZXdrX2ZyYW1lX3RoZW1l
X3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogcGF0aCkKIH0KIAogLyoqCi0gKiBHZXRz
IHRoZSBpbW1lZGlhdGUgdGhlbWUgc2V0IG9uIHRoaXMgZnJhbWUuCisgKiBHZXRzIHRoZSB0aGVt
ZSBzZXQgb24gdGhpcyBmcmFtZS4KICAqCiAgKiBUaGlzIHJldHVybnMgdGhlIHZhbHVlIHNldCBi
eSBld2tfZnJhbWVfdGhlbWVfc2V0KCkuIE5vdGUgdGhhdCBpZgotICogaXQgaXMgQGMgTlVMTCwg
dGhlIGZyYW1lIHdpbGwgaW5oZXJpdCBwYXJlbnQncyB0aGVtZS4KKyAqIGl0IGlzIEBjIDAsIHRo
ZSBmcmFtZSB3aWxsIGluaGVyaXQgcGFyZW50J3MgdGhlbWUuCiAgKgotICogQHBhcmFtIG8gZnJh
bWUgb2JqZWN0IHRvIGdldCB0aGVtZSBwYXRoLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRv
IGdldCB0aGVtZSBwYXRoCiAgKgotICogQHJldHVybiB0aGVtZSBwYXRoLCBtYXkgYmUgQGMgTlVM
TCBpZiBub3Qgc2V0LgorICogQHJldHVybiB0aGVtZSBwYXRoLCBtYXkgYmUgQGMgMCBpZiBub3Qg
c2V0CiAgKi8KIGNvbnN0IGNoYXIqIGV3a19mcmFtZV90aGVtZV9nZXQoRXZhc19PYmplY3QqIG8p
CiB7CkBAIC0zNjQsOSArMzQ5LDEyIEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV90aGVtZV9nZXQo
RXZhc19PYmplY3QqIG8pCiAgKiBJdGVyYXRpb24gcmVzdWx0cyBhcmUgRXZhc19PYmplY3QqLCBz
byBnaXZlIGVpbmFfaXRlcmF0b3JfbmV4dCgpIGEKICAqIHBvaW50ZXIgdG8gaXQuCiAgKgotICog
QHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpdGVyYXRvciwgZnJlZSB1c2luZwotICogICAgICAg
ICBlaW5hX2l0ZXJhdG9yX2ZyZWUoKS4gSWYgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSB0aGUKLSAq
ICAgICAgICAgaXRlcmF0b3IsIEBjIE5VTEwgaXMgcmV0dXJuZWQuCisgKiBSZXR1cm5lZCBpdGVy
YXRvciBzaG91bGQgYmUgZnJlZWQgYnkgZWluYV9pdGVyYXRvcl9mcmVlKCkuCisgKgorICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgaXRlcmF0b3IKKyAqCisgKiBAcmV0dXJu
IGEgbmV3bHkgYWxsb2NhdGVkIGl0ZXJhdG9yIG9uIHN1Y2Vzcywgb3IgQGMgMCBpZiBub3QgcG9z
c2libGUgdG8gCisgKiAgICAgIGNyZWF0ZSB0aGUgaXRlcmF0b3IKICAqLwogRWluYV9JdGVyYXRv
ciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhFdmFzX09iamVjdCogbykKIHsKQEAg
LTM5OSw3ICszODcsMTAgQEAgRWluYV9JdGVyYXRvciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJh
dG9yX25ldyhFdmFzX09iamVjdCogbykKICAqIHRoaXMgZnVuY3Rpb24gd2lsbCBzZWFyY2ggZm9y
IGEgbWF0Y2hpbmcgZnJhbWUgaW4gb3RoZXIgbWFpbiBmcmFtZQogICogaGllcmFyY2hpZXMuCiAg
KgotICogQHJldHVybiBvYmplY3QgaWYgZm91bmQsIEBjIE5VTEwgaWYgbm90aGluZyB3aXRoIHRo
YXQgbmFtZS4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmaW5kIGEgY2hpbGQgZnJhbWUK
KyAqIEBwYXJhbSBuYW1lIGNoaWxkIGZyYW1lIG5hbWUKKyAqCisgKiBAcmV0dXJuIGNoaWxkIGZy
YW1lIG9mIHRoZSBnaXZlbiBmcmFtZSwgb3IgQGMgMCBpZiB0aGUgdGhlIGNoaWxkIHdhc24ndCBm
b3VuZAogICovCiBFdmFzX09iamVjdCogZXdrX2ZyYW1lX2NoaWxkX2ZpbmQoRXZhc19PYmplY3Qq
IG8sIGNvbnN0IGNoYXIqIG5hbWUpCiB7CkBAIC00MTEsMTAgKzQwMiwxMiBAQCBFdmFzX09iamVj
dCogZXdrX2ZyYW1lX2NoaWxkX2ZpbmQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIG5hbWUp
CiB9CiAKIC8qKgotICogQXNrIG1haW4gZnJhbWUgdG8gbG9hZCB0aGUgZ2l2ZW4gVVJJLgorICog
QXNrcyB0aGUgbWFpbiBmcmFtZSB0byBsb2FkIHRoZSBnaXZlbiBVUkkuCisgKgorICogQHBhcmFt
IG8gZnJhbWUgb2JqZWN0IHRvIGxvYWQgdXJpCisgKiBAcGFyYW0gdXJpIHVuaWZvcm0gcmVzb3Vy
Y2UgaWRlbnRpZmllciB0byBsb2FkCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGxv
YWQgdXJpLgotICogQHBhcmFtIHVyaSB1bmlmb3JtIHJlc291cmNlIGlkZW50aWZpZXIgdG8gbG9h
ZC4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ug
b24gZmFpbHVyZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9zZXQoRXZhc19PYmplY3Qq
IG8sIGNvbnN0IGNoYXIqIHVyaSkKIHsKQEAgLTQyOSwxMCArNDIyLDEyIEBAIEVpbmFfQm9vbCBl
d2tfZnJhbWVfdXJpX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogdXJpKQogLyoqCiAg
KiBHZXRzIHRoZSB1cmkgb2YgdGhpcyBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gZ2V0IHVyaS4KKyAqIEl0IHJldHVybnMgYW4gaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91
bGQgbm90CisgKiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0
cmluZ3NoYXJlZC4KICAqCi0gKiBAcmV0dXJuIGZyYW1lIHVyaSBvciBAYyBOVUxMLiBJdCdzIGEg
aW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQKLSAqICAgICAgICAgbm90IGJlIG1vZGlmaWVkLiBU
aGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgorICogQHBhcmFtIG8g
ZnJhbWUgb2JqZWN0IHRvIGdldCB1cmkKKyAqCisgKiBAcmV0dXJuIGZyYW1lIHVyaSBvbiBzdWNj
ZXNzIG9yIEBjIDAgb24gZmFpbHVyZQogICovCiBjb25zdCBjaGFyKiBld2tfZnJhbWVfdXJpX2dl
dChjb25zdCBFdmFzX09iamVjdCogbykKIHsKQEAgLTQ0MywxMCArNDM4LDEyIEBAIGNvbnN0IGNo
YXIqIGV3a19mcmFtZV91cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogLyoqCiAgKiBHZXRz
IHRoZSB0aXRsZSBvZiB0aGlzIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0
byBnZXQgdGl0bGUuCisgKiBJdCByZXR1cm5zIGFuIGludGVybmFsIHN0cmluZyBhbmQgc2hvdWxk
IG5vdAorICogYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHJp
bmdzaGFyZWQuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB0aXRsZQogICoK
LSAqIEByZXR1cm4gZnJhbWUgdGl0bGUgb3IgQGMgTlVMTC4gSXQncyBhIGludGVybmFsIHN0cmlu
ZyBhbmQgc2hvdWxkCi0gKiAgICAgICAgIG5vdCBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBn
dWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4KKyAqIEByZXR1cm4gZnJhbWUgdGl0bGUgb24g
c3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwogY29uc3QgY2hhciogZXdrX2ZyYW1lX3Rp
dGxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKQEAgLTQ1NywxMCArNDU0LDEyIEBAIGNv
bnN0IGNoYXIqIGV3a19mcmFtZV90aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAvKioK
ICAqIEdldHMgdGhlIG5hbWUgb2YgdGhpcyBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gZ2V0IG5hbWUuCisgKiBJdCByZXR1cm5zIGFuIGludGVybmFsIHN0cmluZyBhbmQg
c2hvdWxkIG5vdAorICogYmUgbW9kaWZpZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBi
ZSBzdHJpbmdzaGFyZWQuCiAgKgotICogQHJldHVybiBmcmFtZSBuYW1lIG9yIEBjIE5VTEwuIEl0
J3MgYSBpbnRlcm5hbCBzdHJpbmcgYW5kIHNob3VsZAotICogICAgICAgICBub3QgYmUgbW9kaWZp
ZWQuIFRoZSBzdHJpbmcgaXMgZ3VhcmFudGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCisgKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IG5hbWUKKyAqCisgKiBAcmV0dXJuIGZyYW1lIG5hbWUg
b24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwogY29uc3QgY2hhciogZXdrX2ZyYW1l
X25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewpAQCAtNDgxLDE0ICs0ODAsMTQgQEAg
Y29uc3QgY2hhciogZXdrX2ZyYW1lX25hbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQog
CiAvKioKLSAqIEdldCBsYXN0IGtub3duIGNvbnRlbnRzIHNpemUuCisgKiBHZXRzIGxhc3Qga25v
d24gY29udGVudHMgc2l6ZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IGNv
bnRlbnRzIHNpemUuCi0gKiBAcGFyYW0gdyB3aGVyZSB0byBzdG9yZSBjb250ZW50cyBzaXplIHdp
ZHRoLiBNYXkgYmUgQGMgTlVMTC4KLSAqIEBwYXJhbSBoIHdoZXJlIHRvIHN0b3JlIGNvbnRlbnRz
IHNpemUgaGVpZ2h0LiBNYXkgYmUgQGMgTlVMTC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0
byBnZXQgY29udGVudHMgc2l6ZQorICogQHBhcmFtIHcgcG9pbnRlciB0byBzdG9yZSBjb250ZW50
cyBzaXplIHdpZHRoLCBtYXkgYmUgQGMgMAorICogQHBhcmFtIGggcG9pbnRlciB0byBzdG9yZSBj
b250ZW50cyBzaXplIGhlaWdodCwgbWF5IGJlIEBjIDAKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZSBhbmQKLSAqICAgICAg
ICAgQGEgdyBhbmQgQGEgaCB3aWxsIGJlIHplcm9lZC4KKyAqICAgICAgICAgQGEgdyBhbmQgQGEg
aCB3aWxsIGJlIHplcm9lZAogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkKiB3LCBFdmFzX0Nvb3JkKiBoKQog
ewpAQCAtNTM4LDE2ICs1MzcsMTYgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX2ZyYW1lX2NvbnRl
bnRzX3NldF9pbnRlcm5hbChFd2tfRnJhbWVfU21hcnRfRGF0YSAqc2QsIGNvbnMKIC8qKgogICog
UmVxdWVzdHMgbG9hZGluZyB0aGUgZ2l2ZW4gY29udGVudHMgaW4gdGhpcyBmcmFtZS4KICAqCi0g
KiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gbG9hZCBkb2N1bWVudC4KLSAqIEBwYXJhbSBjb250
ZW50cyB3aGF0IHRvIGxvYWQgaW50byBmcmFtZS4gTXVzdCBub3QgYmUgQGMgTlVMTC4KLSAqIEBw
YXJhbSBjb250ZW50c19zaXplIGJ5dGUgc2l6ZSBvZiBkYXRhIGluIEBhIGNvbnRlbnRzLgotICog
ICAgICAgIElmIHplcm8sIHN0cmxlbigpIGlzIHVzZWQuCi0gKiBAcGFyYW0gbWltZV90eXBlIHR5
cGUgb2YgQGEgY29udGVudHMgZGF0YS4gSWYgQGMgTlVMTCAidGV4dC9odG1sIiBpcyBhc3N1bWVk
LgotICogQHBhcmFtIGVuY29kaW5nIHVzZWQgZm9yIEBhIGNvbnRlbnRzIGRhdGEuIElmIEBjIE5V
TEwgIlVURi04IiBpcyBhc3N1bWVkLgotICogQHBhcmFtIGJhc2VfdXJpIGJhc2UgdXJpIHRvIHVz
ZSBmb3IgcmVsYXRpdmUgcmVzb3VyY2VzLiBNYXkgYmUgQGMgTlVMTC4KLSAqICAgICAgICBJZiBw
cm92aWRlZCBtdXN0IGJlIGFuIGFic29sdXRlIHVyaS4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBsb2FkIGRvY3VtZW50CisgKiBAcGFyYW0gY29udGVudHMgd2hhdCB0byBsb2FkIGludG8g
ZnJhbWUKKyAqIEBwYXJhbSBjb250ZW50c19zaXplIHNpemUgb2YgQGEgY29udGVudHMgKGluIGJ5
dGVzKSwKKyAqICAgICAgICBpZiBAYyAwIGlzIGdpdmVuLCBsZW5ndGggb2YgQGEgY29udGVudHMg
aXMgdXNlZAorICogQHBhcmFtIG1pbWVfdHlwZSB0eXBlIG9mIEBhIGNvbnRlbnRzIGRhdGEsIGlm
IEBjIDAgaXMgZ2l2ZW4gInRleHQvaHRtbCIgaXMgYXNzdW1lZAorICogQHBhcmFtIGVuY29kaW5n
IGVuY29kaW5nIGZvciBAYSBjb250ZW50cyBkYXRhLCBpZiBAYyAwIGlzIGdpdmVuICJVVEYtOCIg
aXMgYXNzdW1lZAorICogQHBhcmFtIGJhc2VfdXJpIGJhc2UgdXJpIHRvIHVzZSBmb3IgcmVsYXRp
dmUgcmVzb3VyY2VzLCBtYXkgYmUgQGMgMCwKKyAqICAgICAgICBpZiBwcm92aWRlZCBAYiBtdXN0
IGJlIGFuIGFic29sdXRlIHVyaQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3NmdWwgcmVxdWVzdCwgQGMgRUlOQV9GQUxTRSBvbiBlcnJvcnMuCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3QsIEBjIEVJTkFfRkFMU0Ugb24gZXJyb3JzCiAg
Ki8KIEVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25z
dCBjaGFyKiBjb250ZW50cywgc2l6ZV90IGNvbnRlbnRzX3NpemUsIGNvbnN0IGNoYXIqIG1pbWVf
dHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VfdXJpKQogewpAQCAt
NTYyLDIxICs1NjEsMjEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9jb250ZW50c19zZXQoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXplX3QgY28KICAqIFJlcXVlc3RzIGxv
YWRpbmcgYWx0ZXJuYXRpdmUgY29udGVudHMgZm9yIHVucmVhY2hhYmxlIFVSSSBpbiB0aGlzIGZy
YW1lLgogICoKICAqIFRoaXMgaXMgc2ltaWxhciB0byBld2tfZnJhbWVfY29udGVudHNfc2V0KCks
IGJ1dCBpcyB1c2VkIHdoZW4gc29tZQotICogVVJJIGZhaWxlZCB0byBsb2FkLCB1c2luZyB0aGUg
cHJvdmlkZWQgY29udGVudCBpbnN0ZWFkLiBUaGUgbWFpbgorICogVVJJIHdhcyBmYWlsZWQgdG8g
bG9hZCwgdXNpbmcgdGhlIHByb3ZpZGVkIGNvbnRlbnQgaW5zdGVhZC4gVGhlIG1haW4KICAqIGRp
ZmZlcmVuY2UgaXMgdGhhdCBiYWNrLWZvcndhcmQgbmF2aWdhdGlvbiBsaXN0IGlzIG5vdCBjaGFu
Z2VkLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBsb2FkIGRvY3VtZW50LgotICog
QHBhcmFtIGNvbnRlbnRzIHdoYXQgdG8gbG9hZCBpbnRvIGZyYW1lLiBNdXN0IG5vdCBiZSBAYyBO
VUxMLgotICogQHBhcmFtIGNvbnRlbnRzX3NpemUgYnl0ZSBzaXplIG9mIGRhdGEgaW4gQGEgY29u
dGVudHMuCi0gKiAgICAgICAgSWYgemVybywgc3RybGVuKCkgaXMgdXNlZC4KLSAqIEBwYXJhbSBt
aW1lX3R5cGUgdHlwZSBvZiBAYSBjb250ZW50cyBkYXRhLiBJZiBAYyBOVUxMICJ0ZXh0L2h0bWwi
IGlzIGFzc3VtZWQuCi0gKiBAcGFyYW0gZW5jb2RpbmcgdXNlZCBmb3IgQGEgY29udGVudHMgZGF0
YS4gSWYgQGMgTlVMTCAiVVRGLTgiIGlzIGFzc3VtZWQuCi0gKiBAcGFyYW0gYmFzZV91cmkgYmFz
ZSB1cmkgdG8gdXNlIGZvciByZWxhdGl2ZSByZXNvdXJjZXMuIE1heSBiZSBAYyBOVUxMLgotICog
ICAgICAgIElmIHByb3ZpZGVkIG11c3QgYmUgYW4gYWJzb2x1dGUgdXJpLgorICogQHBhcmFtIG8g
ZnJhbWUgb2JqZWN0IHRvIGxvYWQgYWx0ZXJuYXRpdmUgY29udGVudAorICogQHBhcmFtIGNvbnRl
bnRzIHdoYXQgdG8gbG9hZCBpbnRvIGZyYW1lLCBtdXN0IEBiIG5vdCBiZSBAYyAwCisgKiBAcGFy
YW0gY29udGVudHNfc2l6ZSBzaXplIG9mIEBhIGNvbnRlbnRzIChpbiBieXRlcyksCisgKiAgICAg
ICAgaWYgQGMgMCBpcyBnaXZlbiwgbGVuZ3RoIG9mIEBhIGNvbnRlbnRzIGlzIHVzZWQKKyAqIEBw
YXJhbSBtaW1lX3R5cGUgdHlwZSBvZiBAYSBjb250ZW50cyBkYXRhLCBpZiBAYyAwIGlzIGdpdmVu
ICJ0ZXh0L2h0bWwiIGlzIGFzc3VtZWQKKyAqIEBwYXJhbSBlbmNvZGluZyBlbmNvZGluZyB1c2Vk
IGZvciBAYSBjb250ZW50cyBkYXRhLCBpZiBAYyAwIGlzIGdpdmVuICJVVEYtOCIgaXMgYXNzdW1l
ZAorICogQHBhcmFtIGJhc2VfdXJpIGJhc2UgVVJJIHRvIHVzZSBmb3IgcmVsYXRpdmUgcmVzb3Vy
Y2VzLCBtYXkgYmUgQGMgMCwKKyAqICAgICAgICBpZiBwcm92aWRlZCBtdXN0IGJlIGFuIGFic29s
dXRlIHVyaQogICogQHBhcmFtIHVucmVhY2hhYmxlX3VyaSB0aGUgVVJJIHRoYXQgZmFpbGVkIHRv
IGxvYWQgYW5kIGlzIGdldHRpbmcgdGhlCi0gKiAgICAgICAgYWx0ZXJuYXRpdmUgcmVwcmVzZW50
YXRpb24uCisgKiAgICAgICAgYWx0ZXJuYXRpdmUgcmVwcmVzZW50YXRpb24KICAqCi0gKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3QsIEBjIEVJTkFfRkFMU0Ugb24g
ZXJyb3JzLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzc2Z1bCByZXF1ZXN0LCBA
YyBFSU5BX0ZBTFNFIG9uIGVycm9ycwogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2NvbnRlbnRz
X2FsdGVybmF0ZV9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIGNvbnRlbnRzLCBzaXpl
X3QgY29udGVudHNfc2l6ZSwgY29uc3QgY2hhciogbWltZV90eXBlLCBjb25zdCBjaGFyKiBlbmNv
ZGluZywgY29uc3QgY2hhciogYmFzZV91cmksIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlX3VyaSkK
IHsKQEAgLTU5MCwxMiArNTg5LDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfY29udGVudHNfYWx0
ZXJuYXRlX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogY29udGVudHMsCiB9CiAKIC8q
KgotICogUmVxdWVzdHMgZXhlY3V0aW9uIG9mIGdpdmVuIHNjcmlwdC4KKyAqIFJlcXVlc3RzIGV4
ZWN1dGlvbiBvZiB0aGUgZ2l2ZW4gc2NyaXB0LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVj
dCB0byBleGVjdXRlIHNjcmlwdC4KLSAqIEBwYXJhbSBzY3JpcHQgamF2YSBzY3JpcHQgdG8gZXhl
Y3V0ZS4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBleGVjdXRlIHNjcmlwdAorICogQHBh
cmFtIHNjcmlwdCBKYXZhIFNjcmlwdCB0byBleGVjdXRlCiAgKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgcmVxdWVzdCB3YXMgZG9uZSwgQGMgRUlOQV9GQUxTRSBvbiBlcnJvcnMuCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiByZXF1ZXN0IHdhcyBkb25lLCBAYyBFSU5BX0ZBTFNFIG9u
IGVycm9ycwogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKEV2YXNfT2Jq
ZWN0KiBvLCBjb25zdCBjaGFyKiBzY3JpcHQpCiB7CkBAIC02MDcsMTEgKzYwNiwxMSBAQCBFaW5h
X0Jvb2wgZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFy
KiBzY3JpcHQpCiB9CiAKIC8qKgotICogR2V0cyBpZiBmcmFtZSBpcyBlZGl0YWJsZS4KKyAqIFF1
ZXJpZXMgaWYgdGhlIGZyYW1lIGlzIGVkaXRhYmxlLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9i
amVjdCB0byBnZXQgZWRpdGFibGUgc3RhdGUuCisgKiBAcGFyYW0gbyB0aGUgZnJhbWUgb2JqZWN0
IHRvIHF1ZXJ5IGVkaXRhYmxlIHN0YXRlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
ZWRpdGFibGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgdGhlIGZyYW1lIGlzIGVkaXRhYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICov
CiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
IHsKQEAgLTYyMSwxMiArNjIwLDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZWRpdGFibGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIFNldHMgaWYgZnJhbWUgaXMgZWRp
dGFibGUuCisgKiBTZXRzIGVkaXRhYmxlIHN0YXRlIGZvciBmcmFtZS4KICAqCi0gKiBAcGFyYW0g
byBmcmFtZSBvYmplY3QgdG8gc2V0IGVkaXRhYmxlIHN0YXRlLgotICogQHBhcmFtIGVkaXRhYmxl
IG5ldyBzdGF0ZS4KKyAqIEBwYXJhbSBvIHRoZSBmcmFtZSBvYmplY3QgdG8gc2V0IGVkaXRhYmxl
IHN0YXRlCisgKiBAcGFyYW0gZWRpdGFibGUgYSBuZXcgc3RhdGUgdG8gc2V0CiAgKgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisg
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lz
ZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIGVkaXRhYmxlKQogewpAQCAtNjQxLDExICs2NDAsMTMgQEAgRWluYV9Cb29sIGV3
a19mcmFtZV9lZGl0YWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBlZGl0YWJsZSkK
IH0KIAogLyoqCi0gKiBHZXQgdGhlIGNvcHkgb2YgdGhlIHNlbGVjdGlvbiB0ZXh0LgorICogR2V0
cyB0aGUgY29weSBvZiB0aGUgc2VsZWN0ZWQgdGV4dC4KKyAqCisgKiBUaGUgcmV0dXJuZWQgc3Ry
aW5nIEBiIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuCiAgKgotICogQHBhcmFtIG8gZnJhbWUg
b2JqZWN0IHRvIGdldCBzZWxlY3Rpb24gdGV4dC4KKyAqIEBwYXJhbSBvIHRoZSBmcmFtZSBvYmpl
Y3QgdG8gZ2V0IHNlbGVjdGVkIHRleHQKICAqCi0gKiBAcmV0dXJuIG5ld2x5IGFsbG9jYXRlZCBz
dHJpbmcgb3IgQGMgTlVMTCBpZiBub3RoaW5nIGlzIHNlbGVjdGVkIG9yIGZhaWx1cmUuCisgKiBA
cmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIHN0cmluZyBvciBAYyAwIGlmIG5vdGhpbmcgaXMgc2Vs
ZWN0ZWQgb3Igb24gZmFpbHVyZQogICovCiBjaGFyKiBld2tfZnJhbWVfc2VsZWN0aW9uX2dldChj
b25zdCBFdmFzX09iamVjdCogbykKIHsKQEAgLTY1OCwxNSArNjU5LDE1IEBAIGNoYXIqIGV3a19m
cmFtZV9zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIFNl
YXJjaCB0aGUgZ2l2ZW4gdGV4dCBzdHJpbmcgaW4gZG9jdW1lbnQuCisgKiBTZWFyY2hlcyB0aGUg
Z2l2ZW4gc3RyaW5nIGluIGEgZG9jdW1lbnQuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHdoZXJlIHRvIHNlYXJjaCB0ZXh0LgotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5n
IHRvIHNlYXJjaC4KLSAqIEBwYXJhbSBjYXNlX3NlbnNpdGl2ZSBpZiBzZWFyY2ggc2hvdWxkIGJl
IGNhc2Ugc2Vuc2l0aXZlIG9yIG5vdC4KLSAqIEBwYXJhbSBmb3J3YXJkIGlmIHNlYXJjaCBpcyBm
cm9tIGN1cnNvciBhbmQgb24gb3IgYmFja3dhcmRzLgotICogQHBhcmFtIHdyYXAgaWYgc2VhcmNo
IHNob3VsZCB3cmFwIGF0IGVuZC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0byBz
ZWFyY2ggdGhlIHRleHQKKyAqIEBwYXJhbSBzdHJpbmcgcmVmZXJlbmNlIHN0cmluZyB0byBzZWFy
Y2gKKyAqIEBwYXJhbSBjYXNlX3NlbnNpdGl2ZSBpZiBzZWFyY2ggc2hvdWxkIGJlIGNhc2Ugc2Vu
c2l0aXZlIG9yIG5vdAorICogQHBhcmFtIGZvcndhcmQgaWYgc2VhcmNoIGlzIGZyb20gY3Vyc29y
IGFuZCBvbiBvciBiYWNrd2FyZHMKKyAqIEBwYXJhbSB3cmFwIGlmIHNlYXJjaCBzaG91bGQgd3Jh
cCBhdCB0aGUgZW5kCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgZm91bmQsIEBjIEVJ
TkFfRkFMU0UgaWYgbm90IG9yIGZhaWx1cmUuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0
aGUgZ2l2ZW4gc3RyaW5nIHdhcyBmb3VuZCwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3IgZmFpbHVy
ZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0
KiBvLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNlX3NlbnNpdGl2ZSwgRWluYV9C
b29sIGZvcndhcmQsIEVpbmFfQm9vbCB3cmFwKQogewpAQCAtNjc4LDE1ICs2NzksMTUgQEAgRWlu
YV9Cb29sIGV3a19mcmFtZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCogbywgY29uc3Qg
Y2hhciogc3RyaW5nLCBFaW5hX0IKIH0KIAogLyoqCi0gKiBNYXJrIG1hdGNoZXMgdGhlIGdpdmVu
IHRleHQgc3RyaW5nIGluIGRvY3VtZW50LgorICogTWFya3MgbWF0Y2hlcyB0aGUgZ2l2ZW4gc3Ry
aW5nIGluIGEgZG9jdW1lbnQuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRv
IHNlYXJjaCB0ZXh0LgotICogQHBhcmFtIHN0cmluZyByZWZlcmVuY2Ugc3RyaW5nIHRvIG1hdGNo
LgotICogQHBhcmFtIGNhc2Vfc2Vuc2l0aXZlIGlmIG1hdGNoIHNob3VsZCBiZSBjYXNlIHNlbnNp
dGl2ZSBvciBub3QuCi0gKiBAcGFyYW0gaGlnaGxpZ2h0IGlmIG1hdGNoZXMgc2hvdWxkIGJlIGhp
Z2hsaWdodGVkLgotICogQHBhcmFtIGxpbWl0IG1heGltdW0gYW1vdW50IG9mIG1hdGNoZXMsIG9y
IHplcm8gdG8gdW5saW1pdGVkLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNl
YXJjaCB0ZXh0CisgKiBAcGFyYW0gc3RyaW5nIHJlZmVyZW5jZSBzdHJpbmcgdG8gbWF0Y2gKKyAq
IEBwYXJhbSBjYXNlX3NlbnNpdGl2ZSBpZiBtYXRjaCBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUg
b3Igbm90CisgKiBAcGFyYW0gaGlnaGxpZ2h0IGlmIG1hdGNoZXMgc2hvdWxkIGJlIGhpZ2hsaWdo
dGVkCisgKiBAcGFyYW0gbGltaXQgbWF4aW11bSBhbW91bnQgb2YgbWF0Y2hlcywgb3IgemVybyB0
byB1bmxpbWl0ZWQKICAqCi0gKiBAcmV0dXJuIG51bWJlciBvZiBtYXRjaGVzLgorICogQHJldHVy
biBudW1iZXIgb2YgbWF0Y2hlZCBAYSBzdHJpbmcKICAqLwogdW5zaWduZWQgaW50IGV3a19mcmFt
ZV90ZXh0X21hdGNoZXNfbWFyayhFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc3RyaW5nLCBF
aW5hX0Jvb2wgY2FzZV9zZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGlu
dCBsaW1pdCkKIHsKQEAgLTY5OSwxMSArNzAwLDEyIEBAIHVuc2lnbmVkIGludCBld2tfZnJhbWVf
dGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHN0cmluZywgRWlu
CiB9CiAKIC8qKgotICogUmV2ZXJzZXMgdGhlIGVmZmVjdCBvZiBld2tfZnJhbWVfdGV4dF9tYXRj
aGVzX21hcmsoKQorICogVW5tYXJrcyBhbGwgbWFya2VkIG1hdGNoZXMgaW4gYSBkb2N1bWVudC4K
KyAqIFJldmVyc2VzIHRoZSBlZmZlY3Qgb2YgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKCku
CiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHNlYXJjaCB0ZXh0LgorICog
QHBhcmFtIG8gZnJhbWUgb2JqZWN0IHdoZXJlIHRvIHVubWFyayBtYXRjaGVzCiAgKgotICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBmb3IgZmFpbHVyZS4K
KyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb24gZmFp
bHVyZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2
YXNfT2JqZWN0KiBvKQogewpAQCAtNzE1LDEyICs3MTcsMTIgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogbykKIH0KIAogLyoqCi0gKiBT
ZXQgaWYgc2hvdWxkIGhpZ2hsaWdodCBtYXRjaGVzIG1hcmtlZCB3aXRoIGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfbWFyaygpLgorICogU2V0cyB3aGV0aGVyIG1hdGNoZXMgbWFya2VkIHdpdGggZXdr
X2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKCkgc2hvdWxkIGJlIGhpZ2hsaWdodGVkLgogICoKLSAq
IEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0byBzZXQgaWYgbWF0Y2hlcyBhcmUgaGlnaGxp
Z2h0ZWQgb3Igbm90LgotICogQHBhcmFtIGhpZ2hsaWdodCBpZiBAYyBFSU5BX1RSVUUsIG1hdGNo
ZXMgd2lsbCBiZSBoaWdobGlnaHRlZC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB3aGVyZSB0
byBzZXQgaWYgbWF0Y2hlcyBhcmUgaGlnaGxpZ2h0ZWQgb3Igbm90CisgKiBAcGFyYW0gaGlnaGxp
Z2h0IEBjIEVJTkFfVFJVRSBpZiBtYXRjaGVzIGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxT
RSBpZiBub3QKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5B
X0ZBTFNFIGZvciBmYWlsdXJlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywg
QGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9t
YXRjaGVzX2hpZ2hsaWdodF9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBoaWdobGlnaHQp
CiB7CkBAIC03MzEsMTEgKzczMywxMSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hl
c19oaWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgaGlnaGxpZwogfQogCiAv
KioKLSAqIEdldCBpZiBzaG91bGQgaGlnaGxpZ2h0IG1hdGNoZXMgbWFya2VkIHdpdGggZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19tYXJrKCkuCisgKiBSZXR1cm5zIHdoZXRoZXIgbWF0Y2hlcyBtYXJr
ZWQgd2l0aCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoKSBhcmUgaGlnaGxpZ2h0ZWQuCiAg
KgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IGlmIG1hdGNoZXMgYXJlIGhpZ2hs
aWdodGVkIG9yIG5vdC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSBpZiBtYXRj
aGVzIGFyZSBoaWdobGlnaHRlZCBvciBub3QKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiB0aGV5IGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiBtYXRjaGVzIGFyZSBoaWdobGlnaHRlZCwgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxp
Z2h0X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKQEAgLTc2MSwxNSArNzYzLDE1IEBAIHN0
YXRpYyBib29sIF9ld2tfZnJhbWVfcmVjdF9pc19uZWdhdGl2ZV92YWx1ZShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBpKQogfQogCiAvKioKLSAqIEdldCB4LCB5IHBvc2l0aW9uIG9mIG4tdGggdGV4
dCBtYXRjaCBpbiBmcmFtZQorICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIG4tdGggbWF0
Y2hlZCB0ZXh0IGluIHRoZSBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qgd2hl
cmUgbWF0Y2hlcyBhcmUgaGlnaGxpZ2h0ZWQuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qgd2hl
cmUgbWF0Y2hlcyBhcmUgbWFya2VkCiAgKiBAcGFyYW0gbiBpbmRleCBvZiBlbGVtZW50IAotICog
QHBhcmFtIHggd2hlcmUgdG8gcmV0dXJuIHggcG9zaXRpb24uIE1heSBiZSBAYyBOVUxMLiAKLSAq
IEBwYXJhbSB5IHdoZXJlIHRvIHJldHVybiB5IHBvc2l0aW9uLiBNYXkgYmUgQGMgTlVMTC4KKyAq
IEBwYXJhbSB4IHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9m
IEBhIG4gbWF0Y2hlZCB0ZXh0LCBtYXkgYmUgQGMgMAorICogQHBhcmFtIHkgdGhlIHBvaW50ZXIg
dG8gc3RvcmUgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIEBhIG4gbWF0Y2hlZCB0ZXh0LCBtYXkg
YmUgQGMgMAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFf
RkFMU0UgZm9yIGZhaWx1cmUgLSB3aGVuIG5vIG1hdGNoZXMgZm91bmQgb3IgCi0gKiAgICAgICAg
IG4gYmlnZ2VyIHRoYW4gc2VhcmNoIHJlc3VsdHMuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIHdoZW4gbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kIG9yIAor
ICogICAgICAgICBAYSBuIGlzIGJpZ2dlciB0aGFuIHNlYXJjaCByZXN1bHRzIG9yIG9uIGZhaWx1
cmUKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQoRXZh
c19PYmplY3QqIG8sIHNpemVfdCBuLCBpbnQqIHgsIGludCogeSkKIHsKQEAgLTc5NCwxMSArNzk2
LDExIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3NfZ2V0KEV2YXNf
T2JqZWN0KiBvLCBzaXplX3QgbiwgaW50KiB4LCBpCiB9CiAKIC8qKgotICogQXNrIGZyYW1lIHRv
IHN0b3AgbG9hZGluZy4KKyAqIEFza3MgZnJhbWUgdG8gc3RvcCBsb2FkaW5nLgogICoKLSAqIEBw
YXJhbSBvIGZyYW1lIG9iamVjdCB0byBzdG9wIGxvYWRpbmcuCisgKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gc3RvcCBsb2FkaW5nCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBv
biBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX3N0b3AoRXZhc19PYmplY3QqIG8pCiB7CkBAIC04MDksMTEgKzgxMSwxMSBAQCBFaW5hX0Jv
b2wgZXdrX2ZyYW1lX3N0b3AoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogQXNrIGZyYW1l
IHRvIHJlbG9hZCBjdXJyZW50IGRvY3VtZW50LgorICogQXNrcyBmcmFtZSB0byByZWxvYWQgY3Vy
cmVudCBkb2N1bWVudC4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcmVsb2FkLgor
ICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHJlbG9hZCBjdXJyZW50IGRvY3VtZW50CiAgKgot
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZQogICoKICAqIEBzZWUgZXdrX2ZyYW1lX3JlbG9hZF9mdWxsKCkKICAqLwpAQCAtODI2
LDExICs4MjgsMTEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9yZWxvYWQoRXZhc19PYmplY3QqIG8p
CiB9CiAKIC8qKgotICogQXNrIGZyYW1lIHRvIGZ1bGx5IHJlbG9hZCBjdXJyZW50IGRvY3VtZW50
LCB1c2luZyBubyBwcmV2aW91cyBjYWNoZXMuCisgKiBBc2tzIGZyYW1lIHRvIGZ1bGx5IHJlbG9h
ZCBjdXJyZW50IGRvY3VtZW50LCB1c2luZyBubyBwcmV2aW91cyBjYWNoZXMuCiAgKgotICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHRvIHJlbG9hZC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0
byByZWxvYWQgY3VycmVudCBkb2N1bWVudAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3
a19mcmFtZV9yZWxvYWRfZnVsbChFdmFzX09iamVjdCogbykKIHsKQEAgLTg0MSwxMSArODQzLDEx
IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfcmVsb2FkX2Z1bGwoRXZhc19PYmplY3QqIG8pCiB9CiAK
IC8qKgotICogQXNrIGZyYW1lIHRvIG5hdmlnYXRlIGJhY2sgaW4gaGlzdG9yeS4KKyAqIEFza3Mg
dGhlIGZyYW1lIHRvIG5hdmlnYXRlIGJhY2sgaW4gdGhlIGhpc3RvcnkuCiAgKgotICogQHBhcmFt
IG8gZnJhbWUgb2JqZWN0IHRvIG5hdmlnYXRlIGJhY2suCisgKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gbmF2aWdhdGUgYmFjawogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqCiAgKiBAc2VlIGV3a19mcmFtZV9u
YXZpZ2F0ZSgpCiAgKi8KQEAgLTg1NSwxMSArODU3LDExIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVf
YmFjayhFdmFzX09iamVjdCogbykKIH0KIAogLyoqCi0gKiBBc2sgZnJhbWUgdG8gbmF2aWdhdGUg
Zm9yd2FyZCBpbiBoaXN0b3J5LgorICogQXNrcyBmcmFtZSB0byBuYXZpZ2F0ZSBmb3J3YXJkIGlu
IHRoZSBoaXN0b3J5LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBuYXZpZ2F0ZSBm
b3J3YXJkLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIG5hdmlnYXRlIGZvcndhcmQKICAq
Ci0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ug
b3RoZXJ3aXNlCiAgKgogICogQHNlZSBld2tfZnJhbWVfbmF2aWdhdGUoKQogICovCkBAIC04Njks
MTMgKzg3MSwxMyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmQoRXZhc19PYmplY3QqIG8p
CiB9CiAKIC8qKgotICogTmF2aWdhdGUgYmFjayBvciBmb3J3YXJkIGluIGhpc3RvcnkuCisgKiBO
YXZpZ2F0ZXMgYmFjayBvciBmb3J3YXJkIGluIHRoZSBoaXN0b3J5LgogICoKLSAqIEBwYXJhbSBv
IGZyYW1lIG9iamVjdCB0byBuYXZpZ2F0ZS4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBu
YXZpZ2F0ZQogICogQHBhcmFtIHN0ZXBzIGlmIHBvc2l0aXZlIG5hdmlnYXRlcyB0aGF0IGFtb3Vu
dCBmb3J3YXJkcywgaWYgbmVnYXRpdmUKLSAqICAgICAgICBkb2VzIGJhY2t3YXJkcy4KKyAqICAg
ICAgICBkb2VzIGJhY2t3YXJkcwogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nl
c3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24g
c3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFt
ZV9uYXZpZ2F0ZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogewpAQCAtODg5LDExICs4OTEs
MTEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZShFdmFzX09iamVjdCogbywgaW50IHN0
ZXBzKQogfQogCiAvKioKLSAqIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGJh
Y2t3YXJkcyBvbmUgaXRlbSBpbiBoaXN0b3J5LgorICogUXVlcmllcyBpZiBpdCdzIHBvc3NpYmxl
IHRvIG5hdmlnYXRlIGJhY2t3YXJkcyBvbmUgaXRlbSBpbiB0aGUgaGlzdG9yeS4KICAqCi0gKiBA
cGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY2hlY2sgaWYgYmFja3dhcmQgbmF2aWdhdGlvbiBpcyBw
b3NzaWJsZS4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSBpZiBiYWNrd2FyZCBu
YXZpZ2F0aW9uIGlzIHBvc3NpYmxlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9z
c2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBiYWNrd2FyZHMgb25lIGl0ZW0gaW4gdGhlIGhp
c3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKgogICogQHNlZSBld2tfZnJhbWVfbmF2
aWdhdGVfcG9zc2libGUoKQogICovCkBAIC05MDMsMTEgKzkwNSwxMSBAQCBFaW5hX0Jvb2wgZXdr
X2ZyYW1lX2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogQ2hlY2sg
aWYgaXQgaXMgcG9zc2libGUgdG8gbmF2aWdhdGUgZm9yd2FyZHMgb25lIGl0ZW0gaW4gaGlzdG9y
eS4KKyAqIFF1ZXJpZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSBmb3J3YXJkcyBvbmUg
aXRlbSBpbiB0aGUgaGlzdG9yeS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY2hl
Y2sgaWYgZm9yd2FyZCBuYXZpZ2F0aW9uIGlzIHBvc3NpYmxlLgorICogQHBhcmFtIG8gZnJhbWUg
b2JqZWN0IHRvIHF1ZXJ5IGlmIGZvcndhcmQgbmF2aWdhdGlvbiBpcyBwb3NzaWJsZQogICoKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHBvc3NpYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lz
ZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUg
Zm9yd2FyZHMgaW4gdGhlIGhpc3RvcnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKgogICog
QHNlZSBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoKQogICovCkBAIC05MTcsMTMgKzkxOSwx
MyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QqIG8p
CiB9CiAKIC8qKgotICogQ2hlY2sgaWYgaXQgaXMgcG9zc2libGUgdG8gbmF2aWdhdGUgZ2l2ZW4g
QGEgc3RlcHMgaW4gaGlzdG9yeS4KKyAqIFF1ZXJpZXMgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZp
Z2F0ZSBnaXZlbiBAYSBzdGVwcyBpbiB0aGUgaGlzdG9yeS4KICAqCi0gKiBAcGFyYW0gbyBmcmFt
ZSBvYmplY3QgdG8gbmF2aWdhdGUuCi0gKiBAcGFyYW0gc3RlcHMgaWYgcG9zaXRpdmUgbmF2aWdh
dGVzIHRoYXQgYW1vdW50IGZvcndhcmRzLCBpZiBuZWdhdGl2ZQotICogICAgICAgIGRvZXMgYmFj
a3dhcmRzLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IGlmIGlzIHBvc3NpYmxl
IHRvIG5hdmlnYXRlIEBhIHN0ZXBzIGluIHRoZSBoaXN0b3J5CisgKiBAcGFyYW0gc3RlcHMgcG9z
aXRpdmUgdmFsdWUgbmF2aWdhdGVzIHRoYXQgYW1vdW50IGZvcndhcmRzLCBuZWdhdGl2ZSB2YWx1
ZSAKKyAqICAgICAgICBkb2VzIGJhY2t3YXJkcwogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IGlmIHBvc3NpYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIGlmIGl0J3MgcG9zc2libGUgdG8gbmF2aWdhdGUgQGEgc3RlcHMgaW4gdGhlIGhpc3Rv
cnksIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfbmF2
aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykKIHsKQEAgLTkzNCwxMSAr
OTM2LDExIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmpl
Y3QqIG8sIGludCBzdGVwcykKIH0KIAogLyoqCi0gKiBHZXQgY3VycmVudCB6b29tIGxldmVsIHVz
ZWQgYnkgdGhpcyBmcmFtZS4KKyAqIEdldHMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCB1c2VkIGJ5
IHRoaXMgZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IHpvb20g
bGV2ZWwuCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHpvb20gbGV2ZWwKICAqCi0g
KiBAcmV0dXJuIHpvb20gbGV2ZWwgb3IgLTEuMCBvbiBmYWlsdXJlLgorICogQHJldHVybiB6b29t
IGxldmVsIGZvciB0aGUgZnJhbWUgb3IgQGMgLTEuMCBvbiBmYWlsdXJlCiAgKi8KIGZsb2F0IGV3
a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKQEAgLTk1MSwxMiArOTUz
LDEyIEBAIGZsb2F0IGV3a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIH0K
IAogLyoqCi0gKiBTZXQgY3VycmVudCB6b29tIGxldmVsIHVzZWQgYnkgdGhpcyBmcmFtZS4KKyAq
IFNldHMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUuCiAgKgotICog
QHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB6b29tIGxldmVsLgotICogQHBhcmFtIHpv
b20gbmV3IGxldmVsLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB6b29tIGxl
dmVsCisgKiBAcGFyYW0gem9vbSBhIG5ldyB6b29tIGxldmVsCiAgKgotICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUuCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQog
ICoKICAqIEBzZWUgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldCgpCiAgKi8KQEAgLTk3Miwx
MSArOTc0LDExIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QqIG8s
IGZsb2F0IHpvb20pCiB9CiAKIC8qKgotICogUXVlcnkgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxp
ZXMgdG8gdGV4dCBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgorICogUXVlcmllcyBpZiB6b29tIGxl
dmVsIGp1c3QgYXBwbGllcyB0byB0ZXh0IG9ubHkgYW5kIG5vdCBvdGhlciBlbGVtZW50cy4KICAq
Ci0gKiBAcGFyYW0gbyBmcmFtZSB0byBxdWVyeSBzZXR0aW5nLgorICogQHBhcmFtIG8gZnJhbWUg
dG8gcXVlcnkgem9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5CiAgKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYganVzdCB0ZXh0IGFyZSBzY2FsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSBsZXZlbCBpcyBhcHBsaWVkIHRvIHRleHQg
b25seSwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQogICovCiBFaW5hX0Jvb2wg
ZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKQEAg
LTk4NSwxMiArOTg3LDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIFNldCBpZiB6b29tIGxldmVsIGp1
c3QgYXBwbGllcyB0byB0ZXh0IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCisgKiBTZXRzIGlmIHpv
b20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQgb25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRz
LgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIHRvIGNoYW5nZSBzZXR0aW5nLgotICogQHBhcmFtIHNl
dHRpbmcgQGMgRUlOQV9UUlVFIGlmIHpvb20gc2hvdWxkIGp1c3QgYmUgYXBwbGllZCB0byB0ZXh0
LgorICogQHBhcmFtIG8gZnJhbWUgdG8gYXBwbHkgem9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5Cisg
KiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUgaWYgem9vbSBsZXZlbCBzaG91bGQgYmUgYXBw
bGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFMU0UgaWYgbm90CiAgKgotICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICov
CiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywg
RWluYV9Cb29sIHNldHRpbmcpCiB7CkBAIC0xMDA5LDkgKzEwMTEsOSBAQCBFaW5hX0Jvb2wgZXdr
X2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNldHRp
bmcpCiB9CiAKIC8qKgotICogRnJlZSBoaXQgdGVzdCBjcmVhdGVkIHdpdGggZXdrX2ZyYW1lX2hp
dF90ZXN0X25ldygpLgorICogRnJlZXMgaGl0IHRlc3QgaW5zdGFuY2UgY3JlYXRlZCBieSBld2tf
ZnJhbWVfaGl0X3Rlc3RfbmV3KCkuCiAgKgotICogQHBhcmFtIGhpdF90ZXN0IGluc3RhbmNlLiBN
dXN0IEBiIG5vdCBiZSBAYyBOVUxMLgorICogQHBhcmFtIGhpdF90ZXN0IGluc3RhbmNlCiAgKi8K
IHZvaWQgZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUoRXdrX0hpdF9UZXN0KiBoaXRfdGVzdCkKIHsK
QEAgLTEwMjUsMTQgKzEwMjcsMTUgQEAgdm9pZCBld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tf
SGl0X1Rlc3QqIGhpdF90ZXN0KQogfQogCiAvKioKLSAqIENyZWF0ZXMgYSBuZXcgaGl0IHRlc3Qg
Zm9yIGdpdmVuIGZyYW1lIGFuZCBwb2ludC4KKyAqIENyZWF0ZXMgYSBuZXcgaGl0IHRlc3QgZm9y
IHRoZSBnaXZlbiBmcmFtZSBhbmQgcG9pbnQuCisgKgorICogVGhlIHJldHVybmVkIG9iamVjdCBz
aG91bGQgYmUgZnJlZWQgYnkgZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUoKS4KICAqCi0gKiBAcGFy
YW0gbyBmcmFtZSB0byBkbyBoaXQgdGVzdCBvbi4KLSAqIEBwYXJhbSB4IGhvcml6b250YWwgcG9z
aXRpb24gdG8gcXVlcnkuCi0gKiBAcGFyYW0geSB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBxdWVyeS4K
KyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBkbyBoaXQgdGVzdCBvbgorICogQHBhcmFtIHgg
dGhlIGhvcml6b250YWwgcG9zaXRpb24gdG8gcXVlcnkKKyAqIEBwYXJhbSB5IHRoZSB2ZXJ0aWNh
bCBwb3NpdGlvbiB0byBxdWVyeQogICoKLSAqIEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaGl0
IHRlc3Qgb24gc3VjY2VzcywgQGMgTlVMTCBvdGhlcndpc2UuCi0gKiAgICAgICAgIEZyZWUgbWVt
b3J5IHdpdGggZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUoKQorICogQHJldHVybiBhIG5ld2x5IGFs
bG9jYXRlZCBoaXQgdGVzdCBvbiBzdWNjZXNzLCBAYyAwIG90aGVyd2lzZQogICovCiBFd2tfSGl0
X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCB4
LCBpbnQgeSkKIHsKQEAgLTEwOTIsMTMgKzEwOTUsMTYgQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJh
bWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQgeCwgaW50IHkpCiB9CiAK
IC8qKgotICogUmVsYXRpdmUgc2Nyb2xsIG9mIGdpdmVuIGZyYW1lLgorICogU2V0cyBhIHJlbGF0
aXZlIHNjcm9sbCBvZiB0aGUgZ2l2ZW4gZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2Jq
ZWN0IHRvIHNjcm9sbC4KLSAqIEBwYXJhbSBkeCBob3Jpem9udGFsIG9mZnNldCB0byBzY3JvbGwu
Ci0gKiBAcGFyYW0gZHkgdmVydGljYWwgb2Zmc2V0IHRvIHNjcm9sbC4KKyAqIFRoaXMgZnVuY3Rp
b24gZG9lcyBzY3JvbGwgQGEgZHggYW5kIEBhIGR5IHBpeGVscworICogZnJvbSB0aGUgY3VycmVu
dCBwb3NpdGlvbiBvZiBzY3JvbGwuCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcG9z
c2libGUsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0
IHRvIHNjcm9sbAorICogQHBhcmFtIGR4IGhvcml6b250YWwgb2Zmc2V0IHRvIHNjcm9sbAorICog
QHBhcmFtIGR5IHZlcnRpY2FsIG9mZnNldCB0byBzY3JvbGwKKyAqCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jv
b2wKIGV3a19mcmFtZV9zY3JvbGxfYWRkKEV2YXNfT2JqZWN0KiBvLCBpbnQgZHgsIGludCBkeSkK
QEAgLTExMTEsMTYgKzExMTcsMTYgQEAgZXdrX2ZyYW1lX3Njcm9sbF9hZGQoRXZhc19PYmplY3Qq
IG8sIGludCBkeCwgaW50IGR5KQogfQogCiAvKioKLSAqIFNldCBhYnNvbHV0ZSBzY3JvbGwgb2Yg
Z2l2ZW4gZnJhbWUuCisgKiBTZXRzIGFuIGFic29sdXRlIHNjcm9sbCBvZiB0aGUgZ2l2ZW4gZnJh
bWUuCiAgKgogICogQm90aCB2YWx1ZXMgYXJlIGZyb20gemVybyB0byB0aGUgY29udGVudHMgc2l6
ZSBtaW51cyB0aGUgdmlld3BvcnQKICAqIHNpemUuIFNlZSBld2tfZnJhbWVfc2Nyb2xsX3NpemVf
Z2V0KCkuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNjcm9sbC4KLSAqIEBwYXJh
bSB4IGhvcml6b250YWwgcG9zaXRpb24gdG8gc2Nyb2xsLgotICogQHBhcmFtIHkgdmVydGljYWwg
cG9zaXRpb24gdG8gc2Nyb2xsLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHNjcm9sbAor
ICogQHBhcmFtIHggaG9yaXpvbnRhbCBwb3NpdGlvbiB0byBzY3JvbGwKKyAqIEBwYXJhbSB5IHZl
cnRpY2FsIHBvc2l0aW9uIHRvIHNjcm9sbAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlm
IHBvc3NpYmxlLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVpbmFfQm9vbAog
ZXdrX2ZyYW1lX3Njcm9sbF9zZXQoRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkKQEAgLTEx
MzMsMTkgKzExMzksMTkgQEAgZXdrX2ZyYW1lX3Njcm9sbF9zZXQoRXZhc19PYmplY3QqIG8sIGlu
dCB4LCBpbnQgeSkKIH0KIAogLyoqCi0gKiBHZXQgdGhlIHBvc3NpYmxlIHNjcm9sbCBzaXplIG9m
IGdpdmVuIGZyYW1lLgorICogR2V0cyB0aGUgcG9zc2libGUgc2Nyb2xsIHNpemUgb2YgdGhlIGdp
dmVuIGZyYW1lLgogICoKICAqIFBvc3NpYmxlIHNjcm9sbCBzaXplIGlzIGNvbnRlbnRzIHNpemUg
bWludXMgdGhlIHZpZXdwb3J0CiAgKiBzaXplLiBJdCdzIHRoZSBsYXN0IGFsbG93ZWQgdmFsdWUg
Zm9yIGV3a19mcmFtZV9zY3JvbGxfc2V0KCkKICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3Qg
dG8gc2Nyb2xsLgotICogQHBhcmFtIHcgd2hlcmUgdG8gcmV0dXJuIGhvcml6b250YWwgc2l6ZSB0
aGF0IGlzIHBvc3NpYmxlIHRvCi0gKiAgICAgICAgc2Nyb2xsLiBNYXkgYmUgQGMgTlVMTC4KLSAq
IEBwYXJhbSBoIHdoZXJlIHRvIHJldHVybiB2ZXJ0aWNhbCBzaXplIHRoYXQgaXMgcG9zc2libGUg
dG8gc2Nyb2xsLgotICogICAgICAgIE1heSBiZSBAYyBOVUxMLgorICogQHBhcmFtIG8gZnJhbWUg
b2JqZWN0IHRvIGdldCBzY3JvbGwgc2l6ZQorICogQHBhcmFtIHcgdGhlIHBvaW50ZXIgdG8gc3Rv
cmUgdGhlIGhvcml6b250YWwgc2l6ZSB0aGF0IGlzIHBvc3NpYmxlIHRvIHNjcm9sbCwKKyAqICAg
ICAgICBtYXkgYmUgQGMgMAorICogQHBhcmFtIGggdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIHZl
cnRpY2FsIHNpemUgdGhhdCBpcyBwb3NzaWJsZSB0byBzY3JvbGwsCisgKiAgICAgICAgbWF5IGJl
IEBjIDAKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UgYW5kCi0gKiAgICAgICAgIHZhbHVlcyBhcmUgemVyb2VkLgorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UgYW5k
CisgKiAgICAgICAgIHZhbHVlcyBhcmUgemVyb2VkCiAgKi8KIEVpbmFfQm9vbAogZXdrX2ZyYW1l
X3Njcm9sbF9zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogbywgaW50KiB3LCBpbnQqIGgpCkBA
IC0xMTY2LDEzICsxMTcyLDEzIEBAIGV3a19mcmFtZV9zY3JvbGxfc2l6ZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8sIGludCogdywgaW50KiBoKQogfQogCiAvKioKLSAqIEdldCB0aGUgY3VycmVu
dCBzY3JvbGwgcG9zaXRpb24gb2YgZ2l2ZW4gZnJhbWUuCisgKiBHZXRzIHRoZSBjdXJyZW50IHNj
cm9sbCBwb3NpdGlvbiBvZiBnaXZlbiBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmpl
Y3QgdG8gc2Nyb2xsLgotICogQHBhcmFtIHggd2hlcmUgdG8gcmV0dXJuIGhvcml6b250YWwgcG9z
aXRpb24uIE1heSBiZSBAYyBOVUxMLgotICogQHBhcmFtIHkgd2hlcmUgdG8gcmV0dXJuIHZlcnRp
Y2FsIHBvc2l0aW9uLiBNYXkgYmUgQGMgTlVMTC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0
byBnZXQgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uCisgKiBAcGFyYW0geCB0aGUgcG9pbnRl
ciB0byBzdG9yZSB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiwgbWF5IGJlIEBjIDAKKyAqIEBwYXJh
bSB5IHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbi4gbWF5IGJlIEBj
IDAKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UgYW5kCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBF
SU5BX0ZBTFNFIG90aGVyd2lzZSBhbmQKICAqICAgICAgICAgdmFsdWVzIGFyZSB6ZXJvZWQuCiAg
Ki8KIEVpbmFfQm9vbApAQCAtMTE5NCwxNyArMTIwMCwxNyBAQCBld2tfZnJhbWVfc2Nyb2xsX3Bv
c19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCogeCwgaW50KiB5KQogfQogCiAvKioKLSAq
IEdldCB0aGUgY3VycmVudCBmcmFtZSB2aXNpYmxlIGNvbnRlbnQgZ2VvbWV0cnkuCisgKiBHZXRz
IHRoZSB2aXNpYmxlIGNvbnRlbnQgZ2VvbWV0cnkgb2YgdGhlIGZyYW1lLgogICoKLSAqIEBwYXJh
bSBvIGZyYW1lIG9iamVjdCB0byBxdWVyeSB2aXNpYmxlIGNvbnRlbnQgZ2VvbWV0cnkuCi0gKiBA
cGFyYW0gaW5jbHVkZV9zY3JvbGxiYXJzIHdoZW5ldmVyIHRvIGluY2x1ZGUgc2Nyb2xsYmFycyBz
aXplLgotICogQHBhcmFtIHggaG9yaXpvbnRhbCBwb3NpdGlvbi4gTWF5IGJlIEBjIE5VTEwuCi0g
KiBAcGFyYW0geSB2ZXJ0aWNhbCBwb3NpdGlvbi4gTWF5IGJlIEBjIE5VTEwuCi0gKiBAcGFyYW0g
dyB3aWR0aC4gTWF5IGJlIEBjIE5VTEwuCi0gKiBAcGFyYW0gaCBoZWlnaHQuIE1heSBiZSBAYyBO
VUxMLgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IHZpc2libGUgY29udGVudCBn
ZW9tZXRyeQorICogQHBhcmFtIGluY2x1ZGVfc2Nyb2xsYmFycyB3aGVuZXZlciB0byBpbmNsdWRl
IHNjcm9sbGJhcnMgc2l6ZQorICogQHBhcmFtIHggdGhlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGhv
cml6b250YWwgcG9zaXRpb24sIG1heSBiZSBAYyAwCisgKiBAcGFyYW0geSB0aGUgcG9pbnRlciB0
byBzdG9yZSB0aGUgdmVydGljYWwgcG9zaXRpb24sIG1heSBiZSBAYyAwCisgKiBAcGFyYW0gdyB0
aGUgcG9pbnRlciB0byBzdG9yZSB3aWR0aCwgbWF5IGJlIEBjIDAKKyAqIEBwYXJhbSBoIHRoZSBw
b2ludGVyIHRvIHN0b3JlIGhlaWdodCwgbWF5IGJlIEBjIDAKICAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiBwb3NzaWJsZSwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UgYW5kCi0gKiAgICAg
ICAgIHZhbHVlcyBhcmUgemVyb2VkLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UgYW5kCisgKiAgICAgICAgIHZhbHVlcyBhcmUgemVy
b2VkCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dl
dChjb25zdCBFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGluY2x1ZGVfc2Nyb2xsYmFycywgaW50
KiB4LCBpbnQqIHksIGludCogdywgaW50KiBoKQogewpAQCAtMTIzMiwxNSArMTIzOCwxNSBAQCBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX3Zpc2libGVfY29udGVudF9nZW9tZXRyeV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8sIEVpbmFfQm9vbAogfQogCiAvKioKLSAqIEdldCB0aGUgY3VycmVudCBwYWlu
dHNFbnRpcmVDb250ZW50cyBmbGFnLgorICogUXVlcmllcyBpZiB0aGUgZnJhbWUgc2hvdWxkIGJl
IHJlcGFpbnRlZCBjb21wbGV0ZWx5LgogICoKLSAqIFRoaXMgZmxhZyB0ZWxscyBpZiBkaXJ0eSBh
cmVhcyBzaG91bGQgYmUgcmVwYWludGVkIGV2ZW4gaWYgdGhleSBhcmUKLSAqIG91dCBvZiB0aGUg
c2NyZWVuLgorICogRnVuY3Rpb24gdGVsbHMgaWYgZGlydHkgYXJlYXMgc2hvdWxkIGJlIHJlcGFp
bnRlZCAKKyAqIGV2ZW4gaWYgdGhleSBhcmUgb3V0IG9mIHRoZSBzY3JlZW4uCiAgKgotICogQHBh
cmFtIG8gZnJhbWUgb2JqZWN0IHRvIHF1ZXJ5IHBhaW50c0VudGlyZUNvbnRlbnRzIGZsYWcuCisg
KiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcXVlcnkgaWYgdGhlIGZyYW1lIHNob3VsZCBiZSBy
ZXBhaW50ZWQgY29tcGxldGVseQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHJlcGFp
bnRpbmcgYW55IGRpcnR5IGFyZWEsIEBjIEVJTkFfRkFMU0UKLSAqICAgICAgICAgb3RoZXJ3aXNl
LgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgYW55IGRpcnR5IGFyZWFzIHNob3VsZCBiZSBy
ZXBhaW50ZWQsIEBjIEVJTkFfRkFMU0UKKyAqICAgICAgICAgb3RoZXJ3aXNlCiAgKi8KIEVpbmFf
Qm9vbCBld2tfZnJhbWVfcGFpbnRfZnVsbF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CkBA
IC0xMjUxLDE0ICsxMjU3LDE0IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfcGFpbnRfZnVsbF9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCiB9CiAKIC8qKgotICogU2V0IHRoZSBjdXJyZW50IHBhaW50
c0VudGlyZUNvbnRlbnRzIGZsYWcuCisgKiBTZXRzIGlmIHRoZSBmcmFtZSBzaG91bGQgYmUgcmVw
YWludGVkIGNvbXBsZXRlbHkuCiAgKgotICogVGhpcyBmbGFnIHRlbGxzIGlmIGRpcnR5IGFyZWFz
IHNob3VsZCBiZSByZXBhaW50ZWQgZXZlbiBpZiB0aGV5IGFyZQotICogb3V0IG9mIHRoZSBzY3Jl
ZW4uCisgKiBGdW5jdGlvbiBzZXRzIGlmIGRpcnR5IGFyZWFzIHNob3VsZCBiZSByZXBhaW50ZWQg
CisgKiBldmVuIGlmIHRoZXkgYXJlIG91dCBvZiB0aGUgc2NyZWVuLgogICoKLSAqIEBwYXJhbSBv
IGZyYW1lIG9iamVjdCB0byBzZXQgcGFpbnRzRW50aXJlQ29udGVudHMgZmxhZy4KLSAqIEBwYXJh
bSBmbGFnIEBjIEVJTkFfVFJVRSBpZiB3YW50IHRvIGFsd2F5cyByZXBhaW50IGFueSBkaXJ0eSBh
cmVhLAotICogICAgICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcGFyYW0g
byBmcmFtZSBvYmplY3QgdG8gc2V0IGlmIHRoZSBmcmFtZSBzaG91bGQgYmUgcmVwYWludGVkIGNv
bXBsZXRlbHkKKyAqIEBwYXJhbSBmbGFnIEBjIEVJTkFfVFJVRSB0byByZXBhaW50IHRoZSBmcmFt
ZSBjb21wbGV0ZWx5LAorICogICAgICAgICAgICAgQGMgRUlOQV9GQUxTRSBpZiBub3QKICAqLwog
dm9pZCBld2tfZnJhbWVfcGFpbnRfZnVsbF9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBm
bGFnKQogewpAQCAtMTI2OSwxMSArMTI3NSwxMSBAQCB2b2lkIGV3a19mcmFtZV9wYWludF9mdWxs
X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIGZsYWcpCiB9CiAKIC8qKgotICogRmVlZCB0
aGUgZm9jdXMgaW4gc2lnbmFsIHRvIHRoaXMgZnJhbWUuCisgKiBGZWVkcyB0aGUgZm9jdXMgaW4g
ZXZlbnQgdG8gdGhlIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmb2N1
cy4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIGZvY3VzCiAgKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgaXQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNl
LgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGZvY3VzIHdhcyBoYW5kbGVkLCBAYyBF
SU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNf
aW4oRXZhc19PYmplY3QqIG8pCiB7CkBAIC0xMjg1LDkgKzEyOTEsMTEgQEAgRWluYV9Cb29sIGV3
a19mcmFtZV9mZWVkX2ZvY3VzX2luKEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIEZlZWQg
dGhlIGZvY3VzIG91dCBzaWduYWwgdG8gdGhpcyBmcmFtZS4KKyAqIEZlZWRzIHRoZSBmb2N1cyBv
dXQgZXZlbnQgdG8gdGhlIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBy
ZW1vdmUgZm9jdXMKICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gcmVtb3ZlIGZvY3Vz
LgorICogQHJldHVybiBAYyBFSU5BX0ZBTFNFIHNpbmNlIHRoZSBmZWF0dXJlIGlzIG5vdCBpbXBs
ZW1lbnRlZAogICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfZm9jdXNfb3V0KEV2YXNfT2Jq
ZWN0KiBvKQogewpAQCAtMTI5NywxMiArMTMwNSwxMiBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2Zl
ZWRfZm9jdXNfb3V0KEV2YXNfT2JqZWN0KiBvKQogfQogCiAvKioKLSAqIEZlZWQgdGhlIG1vdXNl
IHdoZWVsIGV2ZW50IHRvIHRoZSBmcmFtZS4KKyAqIEZlZWRzIHRoZSBtb3VzZSB3aGVlbCBldmVu
dCB0byB0aGUgZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgZXZl
bnQuCi0gKiBAcGFyYW0gZXYgbW91c2Ugd2hlZWwgZXZlbnQuCisgKiBAcGFyYW0gbyBmcmFtZSBv
YmplY3QgdG8gZmVlZCB0aGUgbW91c2Ugd2hlZWwgZXZlbnQKKyAqIEBwYXJhbSBldiB0aGUgbW91
c2Ugd2hlZWwgZXZlbnQKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCB3YXMgaGFu
ZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiB0aGUgbW91c2Ugd2hlZWwgZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVj
dCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCiB7CkBAIC0xMzIwLDEyICsx
MzI4LDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVj
dCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlCiB9CiAKIC8qKgotICogRmVlZCB0aGUg
bW91c2UgZG93biBldmVudCB0byB0aGUgZnJhbWUuCisgKiBGZWVkcyB0aGUgbW91c2UgZG93biBl
dmVudCB0byB0aGUgZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQg
ZXZlbnQuCi0gKiBAcGFyYW0gZXYgbW91c2UgZG93biBldmVudC4KKyAqIEBwYXJhbSBvIGZyYW1l
IG9iamVjdCB0byBmZWVkIHRoZSBtb3VzZSBkb3duIGV2ZW50CisgKiBAcGFyYW0gZXYgdGhlIG1v
dXNlIGRvd24gZXZlbnQKICAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBpdCB3YXMgaGFu
ZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiB0aGUgbW91c2UgZG93biBldmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24oRXZhc19PYmplY3Qq
IG8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYpCiB7CkBAIC0xMzQ2LDEyICsxMzU0
LDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV9kb3duKEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qCiB9CiAKIC8qKgotICogRmVlZCB0aGUgbW91
c2UgdXAgZXZlbnQgdG8gdGhlIGZyYW1lLgorICogRmVlZHMgdGhlIG1vdXNlIHVwIGV2ZW50IHRv
IHRoZSBmcmFtZS4KICAqCi0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCBldmVudC4K
LSAqIEBwYXJhbSBldiBtb3VzZSB1cCBldmVudC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0
byBmZWVkIHRoZSBtb3VzZSB1cCBldmVudAorICogQHBhcmFtIGV2IHRoZSBtb3VzZSB1cCBldmVu
dAogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0IHdhcyBoYW5kbGVkLCBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBtb3VzZSB1
cCBldmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwogRWluYV9C
b29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3VwKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2
ZW50X01vdXNlX1VwKiBldikKIHsKQEAgLTEzNzIsMTIgKzEzODAsMTIgQEAgRWluYV9Cb29sIGV3
a19mcmFtZV9mZWVkX21vdXNlX3VwKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1VwKiBldikKIH0KIAogLyoqCi0gKiBGZWVkIHRoZSBtb3VzZSBtb3ZlIGV2ZW50IHRvIHRo
ZSBmcmFtZS4KKyAqIEZlZWRzIHRoZSBtb3VzZSBtb3ZlIGV2ZW50IHRvIHRoZSBmcmFtZS4KICAq
Ci0gKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCBldmVudC4KLSAqIEBwYXJhbSBldiBt
b3VzZSBtb3ZlIGV2ZW50LgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgdGhlIG1v
dXNlIG1vdmUgZXZlbnQKKyAqIEBwYXJhbSBldiB0aGUgbW91c2UgbW92ZSBldmVudAogICoKLSAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIGl0IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZS4KKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBtb3VzZSBtb3ZlIGV2ZW50
IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCiBFaW5hX0Jvb2wgZXdr
X2ZyYW1lX2ZlZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9N
b3VzZV9Nb3ZlKiBldikKIHsKQEAgLTEzOTgsNiArMTQwNiwxNiBAQCBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX2ZlZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9Nb3ZlKgogICAgIHJldHVybiBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVk
KGV2ZW50KTsKIH0KIAorLyoqCisgKiBGZWVkcyB0aGUgdG91Y2ggZXZlbnQgdG8gdGhlIGZyYW1l
LgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIHRvdWNoIGV2ZW50CisgKiBA
cGFyYW0gYWN0aW9uIHRoZSBhY3Rpb24gb2YgdG91Y2ggZXZlbnQKKyAqIEBwYXJhbSBwb2ludHMg
YSBsaXN0IG9mIHBvaW50cyAoRXdrX1RvdWNoX1BvaW50KSB0byBwcm9jZXNzCisgKiBAcGFyYW0g
bWV0YVN0YXRlIERFUFJFQ1RBRUQsIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdworICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIHRvdWNoIGV2ZW50IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZQorICovCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZh
c19PYmplY3QqIG8sIEV3a19Ub3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0KiBwb2lu
dHMsIGludCBtZXRhU3RhdGUpCiB7CiAgICAgRWluYV9Cb29sIHJldCA9IEVJTkFfRkFMU0U7CkBA
IC0xNTA0LDEyICsxNTIyLDEyIEBAIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfZnJhbWVf
aGFuZGxlX2tleV9zY3JvbGxpbmcoV2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBjCiB9CiAKIC8qKgot
ICogRmVlZCB0aGUga2V5Ym9hcmQga2V5IGRvd24gZXZlbnQgdG8gdGhlIGZyYW1lLgorICogRmVl
ZHMgdGhlIGtleWJvYXJkIGtleSBkb3duIGV2ZW50IHRvIHRoZSBmcmFtZS4KICAqCi0gKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCBldmVudC4KLSAqIEBwYXJhbSBldiBrZXlib2FyZCBr
ZXkgZG93biBldmVudC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIGV2ZW50Cisg
KiBAcGFyYW0gZXYga2V5Ym9hcmQga2V5IGRvd24gZXZlbnQKICAqCi0gKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBpZiBpdCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGUga2V5IGRvd24gZXZlbnQgd2FzIGhhbmRsZWQsIEBj
IEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9rZXlf
ZG93bihFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXYpCiB7CkBA
IC0xNTI4LDEyICsxNTQ2LDEyIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9rZXlfZG93bihF
dmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXYpCiB9CiAKIC8qKgot
ICogRmVlZCB0aGUga2V5Ym9hcmQga2V5IHVwIGV2ZW50IHRvIHRoZSBmcmFtZS4KKyAqIEZlZWRz
IHRoZSBrZXlib2FyZCBrZXkgdXAgZXZlbnQgdG8gdGhlIGZyYW1lLgogICoKLSAqIEBwYXJhbSBv
IGZyYW1lIG9iamVjdCB0byBmZWVkIGV2ZW50LgotICogQHBhcmFtIGV2IGtleWJvYXJkIGtleSB1
cCBldmVudC4KKyAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIGV2ZW50CisgKiBAcGFy
YW0gZXYga2V5Ym9hcmQga2V5IHVwIGV2ZW50CiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgaXQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgaWYgdGhlIGtleSB1cCBldmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX2tleV91cChFdmFzX09i
amVjdCogbywgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIGV2KQogewpAQCAtMTU1Myw2ICsxNTcx
LDI0IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9rZXlfdXAoRXZhc19PYmplY3QqIG8sIGNv
bnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldikKIC8qKgogICogQGludGVybmFsCiAgKgorICogQ3Jl
YXRlcyBhIG5ldyBFRkwgV2ViS2l0IEZyYW1lIG9iamVjdC4KKyAqCisgKiBGcmFtZXMgYXJlIGxv
dyBsZXZlbCBlbnRyaWVzIGNvbnRhaW5lZCBpbiBhIHBhZ2UgdGhhdCBpcyBjb250YWluZWQKKyAq
IGJ5IGEgdmlldy4gVXN1YWxseSBvbmUgb3BlcmF0ZXMgb24gdGhlIHZpZXcgYW5kIG5vdCBkaXJl
Y3RseSBvbiB0aGUKKyAqIGZyYW1lLgorICoKKyAqIEBwYXJhbSBlIGNhbnZhcyB3aGVyZSB0byBj
cmVhdGUgdGhlIGZyYW1lIG9iamVjdAorICoKKyAqIEByZXR1cm4gYSBuZXcgZnJhbWUgb2JqZWN0
IG9yIEBjIDAgb24gZmFpbHVyZQorICovCitFdmFzX09iamVjdCogZXdrX2ZyYW1lX2FkZChFdmFz
KiBlKQoreworICAgIHJldHVybiBldmFzX29iamVjdF9zbWFydF9hZGQoZSwgX2V3a19mcmFtZV9z
bWFydF9jbGFzc19uZXcoKSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKgogICogSW5pdGlh
bGl6ZSBmcmFtZSBiYXNlZCBvbiBhY3R1YWwgV2ViS2l0IGZyYW1lLgogICoKICAqIFRoaXMgaXMg
aW50ZXJuYWwgYW5kIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgYnkgZXh0ZXJuYWwgdXNlcnMuCkBA
IC0xNTc0LDYgKzE2MTAsMTEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9pbml0KEV2YXNfT2JqZWN0
KiBvLCBFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6RnJhbWUqIGZyYW0KICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqCisgKiBBZGRzIGNoaWxkIHRv
IHRoZSBmcmFtZS4KKyAqLwogRXZhc19PYmplY3QqIGV3a19mcmFtZV9jaGlsZF9hZGQoRXZhc19P
YmplY3QqIG8sIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY2hpbGQsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3Ry
aW5nJiByZWZlcnJlcikKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
MCk7CkBAIC0xODkwLDYgKzE5MzEsMTEgQEAgdm9pZCBld2tfZnJhbWVfdGl0bGVfc2V0KEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBjaGFyKiB0aXRsZSkKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG8sICJ0aXRsZSxjaGFuZ2VkIiwgKHZvaWQqKXNkLT50aXRsZSk7CiB9CiAKKy8q
KgorICogQGludGVybmFsCisgKiAKKyAqIENyZWF0ZXMgYSB2aWV3LgorICovCiB2b2lkIGV3a19m
cmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldyhFdmFzX09iamVjdCogbywgRXZhc19PYmplY3QqIHZp
ZXcpCiB7CiAgICAgREJHKCJvPSVwLCB2aWV3PSVwIiwgbywgdmlldyk7CkBAIC0xOTQ2LDYgKzE5
OTIsMTEgQEAgRWluYV9Cb29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09iamVjdCogbykK
ICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICoKKyAqIEZv
cmNlcyBsYXlvdXQgZm9yIGZyYW1lLgorICovCiB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQo
RXZhc19PYmplY3QqIG8pCiB7CiAgICAgREJHKCJvPSVwIiwgbyk7CkBAIC0xOTU2LDYgKzIwMDcs
MTEgQEAgdm9pZCBld2tfZnJhbWVfZm9yY2VfbGF5b3V0KEV2YXNfT2JqZWN0KiBvKQogICAgICAg
ICB2aWV3LT5mb3JjZUxheW91dCh0cnVlKTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqCisg
KiBDcmVhdGVzIHBsdWdpbi4KKyAqLwogV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
ZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIG8sIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBj
b25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYg
cGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywg
Y29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAppbmRleCBiODRmYzI1Li40OTMwMjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCkBAIC0xOCwxOSArMTgsOSBAQAogICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KIAotI2lmbmRlZiBld2tfZnJhbWVfaAotI2Rl
ZmluZSBld2tfZnJhbWVfaAotCi0jaW5jbHVkZSA8RXZhcy5oPgotCi0jaWZkZWYgX19jcGx1c3Bs
dXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KIC8qKgotICogQGZpbGUKLSAqCi0gKiBXZWJLaXQg
ZnJhbWUgc21hcnQgb2JqZWN0LgorICogQGZpbGUgICAgZXdrX2ZyYW1lLmgKKyAqIEBicmllZiAg
IFdlYktpdCBmcmFtZSBzbWFydCBvYmplY3QuCiAgKgogICogVGhpcyBvYmplY3QgaXMgdGhlIGxv
dyBsZXZlbCBhY2Nlc3MgdG8gV2ViS2l0LUVGTCBicm93c2VyCiAgKiBjb21wb25lbnQuIEl0IHJl
cHJlc2VudHMgYm90aCB0aGUgbWFpbiBhbmQgaW50ZXJuYWwgZnJhbWVzIHRoYXQKQEAgLTcwLDE4
ICs2MCwyNyBAQCBleHRlcm4gIkMiIHsKICAqICAtICJzdGF0ZSxzYXZlIiwgdm9pZDogZnJhbWUn
cyBzdGF0ZSB3aWxsIGJlIHNhdmVkIGFzIGEgaGlzdG9yeSBpdGVtLgogICovCiAKKyNpZm5kZWYg
ZXdrX2ZyYW1lX2gKKyNkZWZpbmUgZXdrX2ZyYW1lX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKwor
I2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgogCisvLy8gQ3JlYXRlcyBh
IHR5cGUgbmFtZSBmb3IgX0V3a19GcmFtZV9Mb2FkX0Vycm9yLgordHlwZWRlZiBzdHJ1Y3QgX0V3
a19GcmFtZV9Mb2FkX0Vycm9yIEV3a19GcmFtZV9Mb2FkX0Vycm9yOwogLyoqCi0gKiBTdHJ1Y3R1
cmUgdXNlZCB0byByZXBvcnQgbG9hZCBlcnJvcnMuCisgKiBAYnJpZWYgICBTdHJ1Y3R1cmUgdXNl
ZCB0byByZXBvcnQgbG9hZCBlcnJvcnMuCiAgKgogICogTG9hZCBlcnJvcnMgYXJlIHJlcG9ydGVk
IGFzIHNpZ25hbCBieSBld2tfdmlldy4gQWxsIHRoZSBzdHJpbmdzIGFyZQogICogdGVtcG9yYXJ5
IHJlZmVyZW5jZXMgYW5kIHNob3VsZCBAYiBub3QgYmUgdXNlZCBhZnRlciB0aGUgc2lnbmFsCi0g
KiBjYWxsYmFjayByZXR1cm5zLiBJZiByZXF1aXJlZCwgbWFrZSBjb3BpZXMgd2l0aCBzdHJkdXAo
KSBvcgorICogY2FsbGJhY2sgcmV0dXJucy4gSWYgaXQncyByZXF1aXJlZCwgbWFrZSBjb3BpZXMg
d2l0aCBzdHJkdXAoKSBvcgogICogZWluYV9zdHJpbmdzaGFyZV9hZGQoKSAodGhleSBhcmUgbm90
IGV2ZW4gZ3VhcmFudGVlZCB0byBiZQogICogc3RyaW5nc2hhcmVkLCBzbyBtdXN0IHVzZSBlaW5h
X3N0cmluZ3NoYXJlX2FkZCgpIGFuZCBub3QKICAqIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkpLgog
ICovCi10eXBlZGVmIHN0cnVjdCBfRXdrX0ZyYW1lX0xvYWRfRXJyb3IgRXdrX0ZyYW1lX0xvYWRf
RXJyb3I7CiBzdHJ1Y3QgX0V3a19GcmFtZV9Mb2FkX0Vycm9yIHsKICAgICBpbnQgY29kZTsgLyoq
PCBudW1lcmljIGVycm9yIGNvZGUgKi8KICAgICBFaW5hX0Jvb2wgaXNfY2FuY2VsbGF0aW9uOyAv
Kio8IGlmIGxvYWQgZmFpbGVkIGJlY2F1c2UgaXQgd2FzIGNhbmNlbGVkICovCkBAIC05MSw0MyAr
OTAsNDUgQEAgc3RydWN0IF9Fd2tfRnJhbWVfTG9hZF9FcnJvciB7CiAgICAgRXZhc19PYmplY3Qg
KmZyYW1lOyAvKio8IGZyYW1lIHdoZXJlIHRoZSBmYWlsdXJlIGhhcHBlbmVkICovCiB9OwogCisv
Ly8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0Lgor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IEV3a19GcmFtZV9SZXNv
dXJjZV9SZXF1ZXN0OwogLyoqCi0gKiBTdHJ1Y3R1cmUgdXNlZCB0byByZXBvcnQgcmVzb3VyY2Ug
cmVxdWVzdHMKKyAqIEBicmllZiAgIFN0cnVjdHVyZSB1c2VkIHRvIHJlcG9ydCByZXNvdXJjZSBy
ZXF1ZXN0LgogICoKICAqIERldGFpbHMgZ2l2ZW4gYmVmb3JlIGEgcmVzb3VyY2UgaXMgbG9hZGVk
IG9uIGEgZ2l2ZW4gZnJhbWUuIEl0J3MgdXNlZCBieQogICogZXdrX2ZyYW1lX3JlcXVlc3Rfd2ls
bF9zZW5kKCkgdG8gaW5mb3JtIHRoZSBkZXRhaWxzIG9mIGEgdG8tYmUtbG9hZGVkCiAgKiByZXNv
dXJjZSwgYWxsb3dpbmcgdGhlbSB0byBiZSBvdmVycmlkZGVuLgogICovCi10eXBlZGVmIHN0cnVj
dCBfRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3Q7
CiBzdHJ1Y3QgX0V3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0IHsKLSAgICBjb25zdCBjaGFyICp1
cmw7IC8qKjwgdXJsIG9mIHRoaXMgcmVzb3VyY2UgKi8KLSAgICBjb25zdCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXI7IC8qKjwgcmVzb3VyY2UncyBpZGVudGlmaWVyLiBDYW4gbm90IGJlIGNoYW5n
ZWQgKi8KKyAgICBjb25zdCBjaGFyICp1cmw7IC8qKjwgdXJsIG9mIHRoZSByZXNvdXJjZSAqLwor
ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcjsgLyoqPCBpZGVudGlmaWVyIG9mIHJl
c291cmNlLCBjYW4gbm90IGJlIGNoYW5nZWQgKi8KIH07CiAKLS8qKgotICogU3RydWN0dXJlIHVz
ZWQgdG8gcmVwb3J0IGhpdCB0ZXN0IHJlc3VsdHMuCi0gKi8KKy8vLyBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciBfRXdrX0hpdF9UZXN0LgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19IaXRfVGVzdCBFd2tf
SGl0X1Rlc3Q7CisvLy8gU3RydWN0dXJlIHVzZWQgdG8gcmVwb3J0IGhpdCB0ZXN0IHJlc3VsdC4K
IHN0cnVjdCBfRXdrX0hpdF9UZXN0IHsKLSAgICBpbnQgeCwgeTsKKyAgICBpbnQgeDsgLyoqPCB0
aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgaGl0IHRlc3QgKi8KKyAgICBpbnQgeTsgLyoq
PCB0aGUgdmVydGljYWwgcG9zaXRpb24gb2YgdGhlIGhpdCB0ZXN0ICovCiAgICAgc3RydWN0IHsK
ICAgICAgICAgaW50IHgsIHksIHcsIGg7Ci0gICAgfSBib3VuZGluZ19ib3g7Ci0gICAgY29uc3Qg
Y2hhciAqdGl0bGU7Ci0gICAgY29uc3QgY2hhciAqYWx0ZXJuYXRlX3RleHQ7IC8qKjwgZm9yIGlt
YWdlLCBhcmVhLCBpbnB1dCBhbmQgYXBwbGV0ICovCi0gICAgRXZhc19PYmplY3QgKmZyYW1lOwor
ICAgIH0gYm91bmRpbmdfYm94OyAvKio8IERFUFJFQ0FURUQsIHNlZSBld2tfZnJhbWVfaGl0X3Rl
c3RfbmV3KCkgKi8KKyAgICBjb25zdCBjaGFyICp0aXRsZTsgLyoqPCB0aXRsZSBvZiB0aGUgZWxl
bWVudCAqLworICAgIGNvbnN0IGNoYXIgKmFsdGVybmF0ZV90ZXh0OyAvKio8IHRoZSBhbHRlcm5h
dGUgdGV4dCBmb3IgaW1hZ2UsIGFyZWEsIGlucHV0IGFuZCBhcHBsZXQgKi8KKyAgICBFdmFzX09i
amVjdCAqZnJhbWU7IC8qKjwgdGhlIHBvaW50ZXIgdG8gZnJhbWUgd2hlcmUgaGl0IHRlc3Qgd2Fz
IHJlcXVlc3RlZCAqLwogICAgIHN0cnVjdCB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnRleHQ7Ci0g
ICAgICAgIGNvbnN0IGNoYXIgKnVybDsKLSAgICAgICAgY29uc3QgY2hhciAqdGl0bGU7CisgICAg
ICAgIGNvbnN0IGNoYXIgKnRleHQ7IC8qKjwgdGhlIHRleHQgb2YgdGhlIGxpbmsgKi8KKyAgICAg
ICAgY29uc3QgY2hhciAqdXJsOyAvKio8IFVSTCBvZiB0aGUgbGluayAqLworICAgICAgICBjb25z
dCBjaGFyICp0aXRsZTsgLyoqPCB0aGUgdGl0bGUgb2YgbGluayAqLwogICAgICAgICBFdmFzX09i
amVjdCAqdGFyZ2V0X2ZyYW1lOwogICAgIH0gbGluazsKICAgICBzdHJ1Y3QgewotICAgICAgICBF
aW5hX0Jvb2wgZWRpdGFibGU6MTsKLSAgICAgICAgRWluYV9Cb29sIHNlbGVjdGVkOjE7CisgICAg
ICAgIEVpbmFfQm9vbCBlZGl0YWJsZToxOyAvKio8IEBjIEVJTkFfVFJVRSBpZiBlbGVtZW50IGlz
IGVkaXRhYmxlLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdCAqLworICAgICAgICBFaW5hX0Jvb2wgc2Vs
ZWN0ZWQ6MTsgLyoqPCBAYyBFSU5BX1RSVUUgaWYgZWxlbWVudCBpcyBzZWxlY3RlZCwgQGMgRUlO
QV9GQUxTRSBpZiBub3QgKi8KICAgICB9IGZsYWdzOwogfTsKIAorLy8vIFJlcHJlc2VudHMgYWN0
aW9ucyBvZiB0b3VjaCBldmVudHMuCiB0eXBlZGVmIGVudW0gewogICAgIEVXS19UT1VDSF9TVEFS
VCwKICAgICBFV0tfVE9VQ0hfRU5ELApAQCAtMTM1LDYgKzEzNiw3IEBAIHR5cGVkZWYgZW51bSB7
CiAgICAgRVdLX1RPVUNIX0NBTkNFTAogfSBFd2tfVG91Y2hfRXZlbnRfVHlwZTsKIAorLy8vIFJl
cHJlc2VudHMgc3RhdGVzIG9mIHRvdWNoIGV2ZW50cy4KIHR5cGVkZWYgZW51bSB7CiAgICAgRVdL
X1RPVUNIX1BPSU5UX1BSRVNTRUQsCiAgICAgRVdLX1RPVUNIX1BPSU5UX1JFTEVBU0VELApAQCAt
MTQyLDExICsxNDQsMTQgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBFV0tfVE9VQ0hfUE9JTlRfQ0FO
Q0VMTEVECiB9IEV3a19Ub3VjaF9Qb2ludF9UeXBlOwogCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFt
ZSBmb3IgX0V3a19Ub3VjaF9Qb2ludC4KIHR5cGVkZWYgc3RydWN0IF9Fd2tfVG91Y2hfUG9pbnQg
RXdrX1RvdWNoX1BvaW50OworLy8vIFJlcHJlc2VudHMgYSB0b3VjaCBwb2ludC4KIHN0cnVjdCBf
RXdrX1RvdWNoX1BvaW50IHsKLSAgICB1bnNpZ25lZCBpbnQgaWQ7Ci0gICAgaW50IHgsIHk7Ci0g
ICAgRXdrX1RvdWNoX1BvaW50X1R5cGUgc3RhdGU7CisgICAgdW5zaWduZWQgaW50IGlkOyAvKio8
IGlkZW50aWZpZXIgb2YgdGhlIHRvdWNoIGV2ZW50ICovCisgICAgaW50IHg7IC8qKjwgdGhlIGhv
cml6b250YWwgcG9zaXRpb24gb2YgdGhlIHRvdWNoIGV2ZW50ICovCisgICAgaW50IHk7IC8qKjwg
dGhlIGhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIHRvdWNoIGV2ZW50ICovCisgICAgRXdrX1Rv
dWNoX1BvaW50X1R5cGUgc3RhdGU7IC8qKjwgc3RhdGUgb2YgdGhlIHRvdWNoIGV2ZW50ICovCiB9
OwogCiBFQVBJIEV2YXNfT2JqZWN0ICpld2tfZnJhbWVfdmlld19nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>