<?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>81339</bug_id>
          
          <creation_ts>2012-03-16 05:32:28 -0700</creation_ts>
          <short_desc>[chromium] MediaStream API (JSEP): Introducing WebSessionDescription and WebICECandidate</short_desc>
          <delta_ts>2012-03-21 10:55: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 API</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>80589</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>harald</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580414</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-16 05:32:28 -0700</bug_when>
    <thetext>Simple WebKit representations of the WebCore/platform versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580421</commentid>
    <comment_count>1</comment_count>
      <attachid>132260</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-16 05:39:25 -0700</bug_when>
    <thetext>Created attachment 132260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580426</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 05:49:35 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580475</commentid>
    <comment_count>3</comment_count>
      <attachid>132260</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-16 06:50:58 -0700</bug_when>
    <thetext>Comment on attachment 132260
Patch

This looks fine, but we need fishd to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580874</commentid>
    <comment_count>4</comment_count>
      <attachid>132260</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-16 13:25:07 -0700</bug_when>
    <thetext>Comment on attachment 132260
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebIceCandidate.h:45
&gt; +class WebIceCandidate {

&quot;Ice&quot; is really an acronym, right?  ICE = Internet Connectivity Establishment, right?

In that case, &quot;Ice&quot; needs to be &quot;ICE&quot; if it appears mid-identifier or at the start of
a type name, else &quot;ice&quot; if it appears at the start of an identifier, possibly prefixed
with &quot;m_&quot;:

  m_iceRequest
  WebICECandidate

etc.

see the &quot;Names&quot; section of http://www.webkit.org/coding/coding-style.html

&gt; Source/WebKit/chromium/public/platform/WebIceCandidate.h:59
&gt; +    WEBKIT_EXPORT void initialize(const WebString&amp; label, const WebString&amp; candidateLine);

what is &quot;candidateLine&quot;?  maybe there should be some documentation?

&gt; Source/WebKit/chromium/public/platform/WebSessionDescription.h:65
&gt; +    size_t numberOfAddedCandidates() const;

don&apos;t these methods need to be exported too?

&gt; Source/WebKit/chromium/public/platform/WebSessionDescription.h:67
&gt; +    WebString initialSdp() const;

nit: initialSdp -&gt; initialSDP

&gt; Source/WebKit/chromium/public/platform/WebSessionDescription.h:76
&gt; +    WebPrivatePtr&lt;WebCore::SessionDescriptionDescriptor&gt; m_private;

why is the WebCore type named &quot;SessionDescriptionDescriptor&quot;, but the public
API is just WebSessionDescription?  seems like the WebCore one could also drop
the Descriptor suffix or else the public one should gain a Descriptor suffix.
what is the reasoning behind the Descriptor suffix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580885</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-16 13:31:26 -0700</bug_when>
    <thetext>&gt; What is the reasoning behind the Descriptor suffix?

A bunch of the concepts in the JavaScript API turn up both as implementations of the API and as concepts in WebCore/platform/mediastream.  Tommy seems to be using the Descriptor suffix to mean &quot;the WebCore/platform/mediastream instantiation of the concept.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581763</commentid>
    <comment_count>6</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 07:26:27 -0700</bug_when>
    <thetext>Adam is correct. This is the one drawback of the WebCore proper and WebCore platform split, ie needing an extra implementation class in between WebCore proper and WebKit.

(In reply to comment #5)
&gt; &gt; What is the reasoning behind the Descriptor suffix?
&gt; 
&gt; A bunch of the concepts in the JavaScript API turn up both as implementations of the API and as concepts in WebCore/platform/mediastream.  Tommy seems to be using the Descriptor suffix to mean &quot;the WebCore/platform/mediastream instantiation of the concept.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581782</commentid>
    <comment_count>7</comment_count>
      <attachid>132260</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 07:39:28 -0700</bug_when>
    <thetext>Comment on attachment 132260
Patch

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

&gt;&gt; Source/WebKit/chromium/public/platform/WebIceCandidate.h:45
&gt;&gt; +class WebIceCandidate {
&gt; 
&gt; &quot;Ice&quot; is really an acronym, right?  ICE = Internet Connectivity Establishment, right?
&gt; 
&gt; In that case, &quot;Ice&quot; needs to be &quot;ICE&quot; if it appears mid-identifier or at the start of
&gt; a type name, else &quot;ice&quot; if it appears at the start of an identifier, possibly prefixed
&gt; with &quot;m_&quot;:
&gt; 
&gt;   m_iceRequest
&gt;   WebICECandidate
&gt; 
&gt; etc.
&gt; 
&gt; see the &quot;Names&quot; section of http://www.webkit.org/coding/coding-style.html

I have deliberately used Ice as a name for the below reasons:

The JavaScript API uses &quot;Ice&quot; everywhere as a key concept
In my world Ice is used as a proper name (&quot;breaking the ice&quot;)

&gt;&gt; Source/WebKit/chromium/public/platform/WebIceCandidate.h:59
&gt;&gt; +    WEBKIT_EXPORT void initialize(const WebString&amp; label, const WebString&amp; candidateLine);
&gt; 
&gt; what is &quot;candidateLine&quot;?  maybe there should be some documentation?

Here I agree with Adams comments for my WebCore patches: that&apos;s what the standard is for.

The JSEP-enabled PeerConnection is a lot more complicated the the deprecated ROAP based one, and a thorough knowledge of the standard (both PeerConnection and SDP) is necessary to be able to implement this in a browser.

&gt;&gt; Source/WebKit/chromium/public/platform/WebSessionDescription.h:65
&gt;&gt; +    size_t numberOfAddedCandidates() const;
&gt; 
&gt; don&apos;t these methods need to be exported too?

Thanks, fixed.

&gt;&gt; Source/WebKit/chromium/public/platform/WebSessionDescription.h:67
&gt;&gt; +    WebString initialSdp() const;
&gt; 
&gt; nit: initialSdp -&gt; initialSDP

Fixed.

&gt;&gt; Source/WebKit/chromium/public/platform/WebSessionDescription.h:76
&gt;&gt; +    WebPrivatePtr&lt;WebCore::SessionDescriptionDescriptor&gt; m_private;
&gt; 
&gt; why is the WebCore type named &quot;SessionDescriptionDescriptor&quot;, but the public
&gt; API is just WebSessionDescription?  seems like the WebCore one could also drop
&gt; the Descriptor suffix or else the public one should gain a Descriptor suffix.
&gt; what is the reasoning behind the Descriptor suffix?

Silly of me but WebSessionDescriptionDescriptor just sounds awkward. So since the FooDescriptor classes are just platform representations of Foo I though WebFoo were appropriate but that just causes confusion.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581791</commentid>
    <comment_count>8</comment_count>
      <attachid>132582</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 07:48:10 -0700</bug_when>
    <thetext>Created attachment 132582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581918</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 10:32:08 -0700</bug_when>
    <thetext>For what it&apos;s worth, we usually document the WebKit API a bit more than the IDL files.  There&apos;s an obvious mapping from the IDL files to specifications, so it&apos;s easy to look up things that you don&apos;t know.  For the WebKit API, the mapping is less clear.  Maybe it would make sense to add comments that link the reader to the appropriate part of the specification?  I know the spec is moving around a bit, so we&apos;ll likely need to update the links at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581955</commentid>
    <comment_count>10</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 11:12:31 -0700</bug_when>
    <thetext>How about I make a solemn oath to add documentation to the the WebFoo files once the JSEP stuff ends up in the in the specification? Right now any link would change for every change in the draft.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582045</commentid>
    <comment_count>11</comment_count>
      <attachid>132627</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 12:24:51 -0700</bug_when>
    <thetext>Created attachment 132627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582049</commentid>
    <comment_count>12</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 12:27:30 -0700</bug_when>
    <thetext>I have now renamed WebIceCandidate to WebICECandidate, and will rename IceCandidateDescriptor in an follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582213</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-19 14:03:29 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; How about I make a solemn oath to add documentation to the the WebFoo files once the JSEP stuff ends up in the in the specification? Right now any link would change for every change in the draft.

OK, fair to leave out links.  Perhaps you can just add some light documentation then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582958</commentid>
    <comment_count>14</comment_count>
      <attachid>132803</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-20 04:58:33 -0700</bug_when>
    <thetext>Created attachment 132803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582960</commentid>
    <comment_count>15</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-20 05:01:10 -0700</bug_when>
    <thetext>Added some comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583748</commentid>
    <comment_count>16</comment_count>
      <attachid>132803</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-20 20:42:27 -0700</bug_when>
    <thetext>Comment on attachment 132803
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:263
&gt; +&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD

merge conflict.

&gt; Source/WebKit/chromium/public/platform/WebSessionDescriptionDescriptor.h:43
&gt; +

nit: no new line here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584031</commentid>
    <comment_count>17</comment_count>
      <attachid>133021</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-21 05:26:34 -0700</bug_when>
    <thetext>Created attachment 133021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584032</commentid>
    <comment_count>18</comment_count>
      <attachid>132803</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-21 05:28:07 -0700</bug_when>
    <thetext>Comment on attachment 132803
Patch

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:263
&gt;&gt; +&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD
&gt; 
&gt; merge conflict.

Ooops. Fixed.

&gt;&gt; Source/WebKit/chromium/public/platform/WebSessionDescriptionDescriptor.h:43
&gt;&gt; +
&gt; 
&gt; nit: no new line here

OK, most existing files have one though. Will remember not to add it in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584033</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 05:30:20 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584263</commentid>
    <comment_count>20</comment_count>
      <attachid>133021</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-21 10:04:07 -0700</bug_when>
    <thetext>Comment on attachment 133021
Patch

Forwarding fishd&apos;s R+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584348</commentid>
    <comment_count>21</comment_count>
      <attachid>133021</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 10:55:22 -0700</bug_when>
    <thetext>Comment on attachment 133021
Patch

Clearing flags on attachment: 133021

Committed r111577: &lt;http://trac.webkit.org/changeset/111577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584349</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 10:55:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132260</attachid>
            <date>2012-03-16 05:39:25 -0700</date>
            <delta_ts>2012-03-19 07:48:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81339-20120316133923.patch</filename>
            <type>text/plain</type>
            <size>16929</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMwYWNmMmZhYzczMWE5ZWIwMzA3YTI3ZDI1YWMwOWVmNjI1NWE1NGUuLmEyMGYwZGZiODY1NTVk
MDI3OWEwZDU1OGRiMmMwZjE3NDg5ZTA2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTItMDMtMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEkgKEpTRVApOiBJ
bnRyb2R1Y2luZyBXZWJTZXNzaW9uRGVzY3JpcHRpb24gYW5kIFdlYkljZUNhbmRpZGF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzMzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGUgV2ViS2l0
IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgV2ViQ29yZS9wbGF0Zm9ybSB2ZXJzaW9ucy4KKworICAg
ICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkljZUNhbmRp
ZGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYkljZUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkljZUNhbmRpZGF0
ZTo6V2ViSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlQ2FuZGlkYXRlOjp+
V2ViSWNlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlQ2FuZGlkYXRlOjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VDYW5kaWRhdGU6OmlzTnVsbCk6CisgICAg
ICAgICogcHVibGljL3BsYXRmb3JtL1dlYlNlc3Npb25EZXNjcmlwdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNlc3Npb25E
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbjo6V2Vi
U2Vzc2lvbkRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0
aW9uOjp+V2ViU2Vzc2lvbkRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lv
bkRlc2NyaXB0aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXNzaW9uRGVz
Y3JpcHRpb246OmlzTnVsbCk6CisgICAgICAgICogc3JjL1dlYkljZUNhbmRpZGF0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlQ2FuZGlkYXRl
OjpXZWJJY2VDYW5kaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VDYW5kaWRhdGU6OmFz
c2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYkljZUNhbmRpZGF0ZTo6cmVzZXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJY2VDYW5kaWRhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJY2VDYW5kaWRhdGU6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6SWNlQ2FuZGlk
YXRlRGVzY3JpcHRvcj4pOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VDYW5kaWRhdGU6OmxhYmVs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlQ2FuZGlkYXRlOjpjYW5kaWRhdGVMaW5lKToKKyAg
ICAgICAgKiBzcmMvV2ViU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXNzaW9uRGVzY3JpcHRpb246OldlYlNlc3Np
b25EZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbjo6
YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uOjpyZXNldCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbjo6b3BlcmF0b3IgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uOjpudW1iZXJPZkFkZGVkQ2FuZGlkYXRlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbjo6Y2FuZGlkYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uOjppbml0aWFsU2RwKToKKwogMjAx
Mi0wMy0xNSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNw
ZWVjaCBKYXZhU2NyaXB0IEFQSTogU3BlZWNoUmVjb2duaXRpb24sIENvbnRyb2xsZXIgYW5kIENs
aWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDFmNmMxOGM0ZTZmZTA3MzRjYjI3
MGU4Y2M3YTlkNzdjMTFmYTI2YmEuLmI4NTRlM2QzMGMxY2FiOTRhZGJmZmU0NTk0YTNiYThjNjM4
ODc0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw2ICsxNzMsNyBAQAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkdseXBoQ2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJIaXN0b3J5SXRlbS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkljZUNh
bmRpZGF0ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkN1cnNvci5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYklEQkRhdGFiYXNlLmgnLApAQCAtMjQ0LDYgKzI0NSw3IEBACiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJTZWN1cml0eU9yaWdpbi5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlNlY3VyaXR5UG9saWN5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
U2VsZWN0RWxlbWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlNlc3Npb25EZXNj
cmlwdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNldHRpbmdzLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViU2hhcmVkV29ya2VyQ2xpZW50LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViU2hhcmVkV29ya2VyLmgnLApAQCAtNTU5LDYgKzU2MSw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJIaXN0b3J5SXRlbS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViSFRUUEJvZHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhUVFBMb2Fk
SW5mby5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSWNlQ2FuZGlkYXRlLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJJY29uTG9hZGluZ0NvbXBsZXRpb25JbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJJY29uTG9hZGluZ0NvbXBsZXRpb25JbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAnLApAQCAtNjQ1LDYgKzY0
OCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZWN1cml0eVBvbGljeS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViU2VsZWN0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTZXNzaW9uRGVzY3JpcHRpb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2V0dGluZ3NJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSWNlQ2FuZGlk
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJY2VDYW5k
aWRhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMWIzZDI2Mzk5MDg1YmE2YTNiOWU3ZDc4MzYwNWNiYjU3YjNh
YmE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViSWNlQ2FuZGlkYXRlLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNlQ2Fu
ZGlkYXRlX2gKKyNkZWZpbmUgV2ViSWNlQ2FuZGlkYXRlX2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViSWNlQ2FuZGlkYXRlIHsKK3B1YmxpYzoKKyAg
ICBXZWJJY2VDYW5kaWRhdGUoKSB7IH0KKyAgICBXZWJJY2VDYW5kaWRhdGUoY29uc3QgV2ViSWNl
Q2FuZGlkYXRlJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9CisgICAgfldlYkljZUNhbmRpZGF0
ZSgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViSWNlQ2FuZGlkYXRlJiBvcGVyYXRvcj0oY29uc3Qg
V2ViSWNlQ2FuZGlkYXRlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNz
aWduKGNvbnN0IFdlYkljZUNhbmRpZGF0ZSYpOworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGlu
aXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgY29uc3QgV2ViU3RyaW5nJiBjYW5kaWRh
dGVMaW5lKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VY
UE9SVCBXZWJTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmlu
ZyBjYW5kaWRhdGVMaW5lKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAg
ICBXZWJJY2VDYW5kaWRhdGUoV2ViQ29yZTo6SWNlQ2FuZGlkYXRlRGVzY3JpcHRvciopOworICAg
IFdlYkljZUNhbmRpZGF0ZShXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvcj4pOworCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkljZUNh
bmRpZGF0ZURlc2NyaXB0b3I+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQ
cml2YXRlUHRyPFdlYkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+IG1fcHJpdmF0ZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSWNlQ2FuZGlkYXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNl
c3Npb25EZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViU2Vzc2lvbkRlc2NyaXB0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmViN2YxMTA4N2JhOTk2MTJl
YzVhZWZmZjRhYjZhOGVlOTQxN2I3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNlc3Npb25EZXNjcmlwdGlvbi5oCkBAIC0wLDAg
KzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlNlc3Npb25EZXNjcmlwdGlvbl9oCisjZGVmaW5lIFdlYlNlc3Np
b25EZXNjcmlwdGlvbl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJO
b25Db3B5YWJsZS5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYkljZUNhbmRpZGF0ZTsK
KworY2xhc3MgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uIHsKK3B1YmxpYzoKKyAgICBXZWJTZXNzaW9u
RGVzY3JpcHRpb24oKSB7IH0KKyAgICBXZWJTZXNzaW9uRGVzY3JpcHRpb24oY29uc3QgV2ViU2Vz
c2lvbkRlc2NyaXB0aW9uJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9CisgICAgfldlYlNlc3Np
b25EZXNjcmlwdGlvbigpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViU2Vzc2lvbkRlc2NyaXB0aW9u
JiBvcGVyYXRvcj0oY29uc3QgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlNlc3Npb25EZXNjcmlwdGlvbiYp
OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBz
ZHApOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICBzaXplX3QgbnVtYmVy
T2ZBZGRlZENhbmRpZGF0ZXMoKSBjb25zdDsKKyAgICBXZWJJY2VDYW5kaWRhdGUgY2FuZGlkYXRl
KHNpemVfdCBpbmRleCkgY29uc3Q7CisgICAgV2ViU3RyaW5nIGluaXRpYWxTZHAoKSBjb25zdDsK
KworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYlNlc3Npb25EZXNjcmlwdGlvbihj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cj4mKTsKKworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXNzaW9uRGVz
Y3JpcHRpb25EZXNjcmlwdG9yPigpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0
ZVB0cjxXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBtX3ByaXZhdGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNlc3Npb25EZXNjcmlw
dGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY2VDYW5k
aWRhdGUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNlQ2FuZGlkYXRlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NGExYWI3ZDZiNzJlOTMwYzUwOTIxNTQ1YWI1YzVmZGVlNzM3M2U0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNlQ2FuZGlk
YXRlLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkljZUNhbmRpZGF0ZS5oIgor
CisjaW5jbHVkZSAiSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlN0cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYkljZUNhbmRpZGF0ZTo6V2ViSWNlQ2FuZGlkYXRlKEljZUNhbmRpZGF0ZURl
c2NyaXB0b3IqIGljZUNhbmRpZGF0ZSkKKyAgICA6IG1fcHJpdmF0ZShpY2VDYW5kaWRhdGUpCit7
Cit9CisKK1dlYkljZUNhbmRpZGF0ZTo6V2ViSWNlQ2FuZGlkYXRlKFBhc3NSZWZQdHI8SWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvcj4gaWNlQ2FuZGlkYXRlKQorICAgIDogbV9wcml2YXRlKGljZUNhbmRp
ZGF0ZSkKK3sKK30KKwordm9pZCBXZWJJY2VDYW5kaWRhdGU6OmFzc2lnbihjb25zdCBXZWJJY2VD
YW5kaWRhdGUmIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30K
Kwordm9pZCBXZWJJY2VDYW5kaWRhdGU6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQo
KTsKK30KKwordm9pZCBXZWJJY2VDYW5kaWRhdGU6OmluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5n
JiBsYWJlbCwgY29uc3QgV2ViU3RyaW5nJiBjYW5kaWRhdGVMaW5lKQoreworICAgIG1fcHJpdmF0
ZSA9IEljZUNhbmRpZGF0ZURlc2NyaXB0b3I6OmNyZWF0ZShsYWJlbCwgY2FuZGlkYXRlTGluZSk7
Cit9CisKK1dlYkljZUNhbmRpZGF0ZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpJY2VD
YW5kaWRhdGVEZXNjcmlwdG9yPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQo
KTsKK30KKworV2ViU3RyaW5nIFdlYkljZUNhbmRpZGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAg
IEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgp
LT5sYWJlbCgpOworfQorCitXZWJTdHJpbmcgV2ViSWNlQ2FuZGlkYXRlOjpjYW5kaWRhdGVMaW5l
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS5nZXQoKS0+Y2FuZGlkYXRlTGluZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlc3Npb25EZXNjcmlwdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXNzaW9uRGVzY3JpcHRpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4NzEwMzViNjliZjUxNjU4NTJiNzBlYmU4MDUyYjI4NmM3NzE0YTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXNzaW9uRGVzY3JpcHRpb24u
Y3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2Vzc2lvbkRlc2NyaXB0aW9uLmgi
CisKKyNpbmNsdWRlICJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViSWNlQ2FuZGlkYXRlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5n
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNlc3Npb25EZXNjcmlwdGlvbjo6V2ViU2Vzc2lv
bkRlc2NyaXB0aW9uKGNvbnN0IFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cj4mIHNlc3Npb25EZXNjcmlwdGlvbikKKyAgICA6IG1fcHJpdmF0ZShzZXNzaW9uRGVzY3JpcHRp
b24pCit7Cit9CisKK3ZvaWQgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uOjphc3NpZ24oY29uc3QgV2Vi
U2Vzc2lvbkRlc2NyaXB0aW9uJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3By
aXZhdGU7Cit9CisKK3ZvaWQgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uOjpyZXNldCgpCit7CisgICAg
bV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK1dlYlNlc3Npb25EZXNjcmlwdGlvbjo6b3BlcmF0b3Ig
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KCkK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdlYlNlc3Npb25EZXNj
cmlwdGlvbjo6aW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIHNkcCkKK3sKKyAgICBtX3ByaXZh
dGUgPSBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpjcmVhdGUoc2RwKTsKK30KKworc2l6
ZV90IFdlYlNlc3Npb25EZXNjcmlwdGlvbjo6bnVtYmVyT2ZBZGRlZENhbmRpZGF0ZXMoKSBjb25z
dAoreworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2
YXRlLmdldCgpLT5udW1iZXJPZkFkZGVkQ2FuZGlkYXRlcygpOworfQorCitXZWJJY2VDYW5kaWRh
dGUgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uOjpjYW5kaWRhdGUoc2l6ZV90IGluZGV4KSBjb25zdAor
eworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LmdldCgpLT5jYW5kaWRhdGUoaW5kZXgpOworfQorCitXZWJTdHJpbmcgV2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uOjppbml0aWFsU2RwKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051
bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKS0+aW5pdGlhbFNkcCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132582</attachid>
            <date>2012-03-19 07:48:10 -0700</date>
            <delta_ts>2012-03-19 12:24:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81339-20120319154807.patch</filename>
            <type>text/plain</type>
            <size>26150</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc5YjNkNDQ3NWI4YzFm
NjUwZjRhMDhmNTkzYTBmNjU0NDdhMTQ5Yy4uYWY5YmQyZDFlYjI2YjNkZjQyN2IzNzE5MzhkMGZm
ZTY0MWE4OWM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAzLTE5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJIChKU0VQKTogSW50cm9kdWNpbmcgV2ViU2Vzc2lvbkRlc2NyaXB0aW9u
IGFuZCBXZWJJY2VDYW5kaWRhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxMzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm90IHBvc3NpYmxlIHRvIHRlc3QgdW50aWwgdGhlIGVudGlyZSBKU0VQIGZl
YXR1cmUgaXMgY29tbWl0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNh
bmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY2VDYW5kaWRhdGU6OnRvU2RwKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb246OnRvU2RwKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I6OnRvU0RQKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmg6CisgICAgICAgIChJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6Y29u
c3RydWN0U0RQKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNl
bnRlci5oOgorICAgICAgICAoTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6U2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjp0b1NEUCk6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjppbml0aWFsU0RQKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9TZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yLmg6CisgICAgICAgIChTZXNzaW9uRGVzY3JpcHRpb25EZXNj
cmlwdG9yKToKKwogMjAxMi0wMy0xOCAgTWF0dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgRmFsbGJhY2sgdG8gY29tbW9uIHNjcmlwdCB3aGVuIHBlci1zY3Jp
cHQgZm9udCBzZXR0aW5nIGlzIHRoZSBlbXB0eSBzdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYzhkNzhmZmFjMjRiNjQyMDZhY2U2NzViYjA2OTU0ODYyY2I0ZWI1YS4uMDAyMjk1
MjU0ZWM0MWMzMzE0OTI1ZTYzZDEzYzJiYjU4NWUzNTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMi0wMy0xOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0
b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSSAo
SlNFUCk6IEludHJvZHVjaW5nIFdlYlNlc3Npb25EZXNjcmlwdGlvbiBhbmQgV2ViSWNlQ2FuZGlk
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTMz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBs
ZSBXZWJLaXQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBXZWJDb3JlL3BsYXRmb3JtIHZlcnNpb25z
LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2Vi
SWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjpXZWJJY2VDYW5kaWRhdGVE
ZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjo6
fldlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yOjppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6
OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjp+V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6
Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I6OmlzTnVsbCk6CisgICAgICAgICogc3JjL1dlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkljZUNh
bmRpZGF0ZURlc2NyaXB0b3I6OldlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3IpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjphc3NpZ24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6
OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlQ2FuZGlk
YXRlRGVzY3JpcHRvcjo6bGFiZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VDYW5kaWRhdGVE
ZXNjcmlwdG9yOjpjYW5kaWRhdGVMaW5lKToKKyAgICAgICAgKiBzcmMvV2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6V2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3I6OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3I6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcjo6b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRl
c2NyaXB0aW9uRGVzY3JpcHRvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNl
c3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6Om51bWJlck9mQWRkZWRDYW5kaWRhdGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6Y2FuZGlkYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6aW5p
dGlhbFNEUCk6CisKIDIwMTItMDMtMTkgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXggYnVpbGQgdGhhdCB3YXMgYnJva2VuIGJ5IHIx
MTExMzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNl
Q2FuZGlkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2Fu
ZGlkYXRlLmNwcAppbmRleCBmMGNlNDFlOWM4N2E1M2Y0M2JkNDc5YjczNjkxZDYyYmJkZTQxOTZi
Li5jZjlhYmNiZTI2OTQ0MTM1Mjc3MjU3MDM4NmQwMGY1MjBiNGU1NjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuY3BwCkBAIC02
OSw3ICs2OSw3IEBAIGNvbnN0IFN0cmluZyYgSWNlQ2FuZGlkYXRlOjpjYW5kaWRhdGVMaW5lKCkK
IAogU3RyaW5nIEljZUNhbmRpZGF0ZTo6dG9TZHAoKQogewotICAgIHJldHVybiBtX2Rlc2NyaXB0
b3ItPnRvU2RwKCk7CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+dG9TRFAoKTsKIH0KIAogSWNl
Q2FuZGlkYXRlRGVzY3JpcHRvciogSWNlQ2FuZGlkYXRlOjpkZXNjcmlwdG9yKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0
aW9uLmNwcAppbmRleCA2N2QyMmI2ZTBhY2EzZDU2NjdmMjBjMzNlNDZlZGE5ZWJiYzUyNmYxLi4x
ODhhZWNlMzgzN2ExOGZkMzY5NWY2NGI0NTRiZmIzNTY3NmRhNDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24u
Y3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Vzc2lvbkRlc2NyaXB0aW9uOjphZGRDYW5kaWRh
dGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGU+IGNhbmRpZGF0ZSkKIAogU3RyaW5nIFNlc3Npb25E
ZXNjcmlwdGlvbjo6dG9TZHAoKQogewotICAgIHJldHVybiBtX2Rlc2NyaXB0b3ItPnRvU2RwKCk7
CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+dG9TRFAoKTsKIH0KIAogU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvciogU2Vzc2lvbkRlc2NyaXB0aW9uOjpkZXNjcmlwdG9yKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2FuZGlk
YXRlRGVzY3JpcHRvci5jcHAKaW5kZXggMzMyNTc2ZjE1YTM0OTExMDA4NTA1YjZmYTkyNTVjZjdj
ZDAyYjAwNi4uZDFmMWM2MGViOTQ5NjZmN2E5MmIxY2U4YjJkZjU1ZDY3MWVjMTViNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNl
Q2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgSWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvcjo6fkljZUNhbmRpZGF0ZURlc2NyaXB0b3IoKQogewogfQogCi1TdHJpbmcgSWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvcjo6dG9TZHAoKQorU3RyaW5nIEljZUNhbmRpZGF0ZURlc2NyaXB0b3I6
OnRvU0RQKCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuY29u
c3RydWN0U2RwKHRoaXMpOworICAgIHJldHVybiBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2Uo
KS5jb25zdHJ1Y3RTRFAodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRp
ZGF0ZURlc2NyaXB0b3IuaAppbmRleCBiOGJjY2YwYzljNTJjMWJhY2Y1YzE4Y2U5Y2ZiMDI3YTBj
ZTM5ZjViLi5iNzc1NDkwN2EzNTUwOTRjZTdjNjdlNzM0ZTM3YTEwMGE0ZDg5YWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIGxhYmVsKCkgeyByZXR1cm4gbV9sYWJlbDsgfQogICAgIGNvbnN0IFN0cmluZyYgY2Fu
ZGlkYXRlTGluZSgpIHsgcmV0dXJuIG1fY2FuZGlkYXRlTGluZTsgfQogCi0gICAgU3RyaW5nIHRv
U2RwKCk7CisgICAgU3RyaW5nIHRvU0RQKCk7CiAKIHByaXZhdGU6CiAgICAgSWNlQ2FuZGlkYXRl
RGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZUxp
bmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DZW50ZXIuY3BwCmluZGV4IDY1OWYyYWQ0Njk5MGFiMzZmZTcyOTAyYWE5ODE0
NTc5MzYzNzMwNzYuLmRlZTEwNzE3MWExMDZkMDAxYTA2YmFlZjVmZDRiODg0MjUzMjg1OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNlbnRlci5jcHAKQEAgLTU3LDEyICs1NywxMiBAQCB2b2lkIE1lZGlhU3RyZWFtQ2Vu
dGVyOjplbmRMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtRGVz
Y3JpcAogICAgICAgICBzdHJlYW1EZXNjcmlwdG9yLT5zZXRFbmRlZCgpOwogfQogCi1TdHJpbmcg
TWVkaWFTdHJlYW1DZW50ZXI6OmNvbnN0cnVjdFNkcChJY2VDYW5kaWRhdGVEZXNjcmlwdG9yKikK
K1N0cmluZyBNZWRpYVN0cmVhbUNlbnRlcjo6Y29uc3RydWN0U0RQKEljZUNhbmRpZGF0ZURlc2Ny
aXB0b3IqKQogewogICAgIHJldHVybiAiIjsKIH0KIAotU3RyaW5nIE1lZGlhU3RyZWFtQ2VudGVy
Ojpjb25zdHJ1Y3RTZHAoU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciopCitTdHJpbmcgTWVk
aWFTdHJlYW1DZW50ZXI6OmNvbnN0cnVjdFNEUChTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
KikKIHsKICAgICByZXR1cm4gIiI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaAppbmRleCA2NjY0ZTIzNGY2YWFm
NjkzZDQwNzUwZTFiNDJhYTQ3YmZkNTdkNmQ0Li43YWRhM2QxZjgxMGI0MGIyN2I1ZjM1NmY2OTA1
MjliMDk2OWE1ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7
CiAgICAgdm9pZCBkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3Iq
KTsKIAotICAgIFN0cmluZyBjb25zdHJ1Y3RTZHAoSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciopOwot
ICAgIFN0cmluZyBjb25zdHJ1Y3RTZHAoU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciopOwor
ICAgIFN0cmluZyBjb25zdHJ1Y3RTRFAoSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciopOworICAgIFN0
cmluZyBjb25zdHJ1Y3RTRFAoU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciopOwogCiAgICAg
Ly8gQ2FsbHMgZnJvbSB0aGUgcGxhdGZvcm0gdG8gdXBkYXRlIHRoZSBET00gb2JqZWN0cwogICAg
IHZvaWQgZW5kTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKaW5kZXggMGE0ZjM3OTUxZTdjMGQxYmRl
NDlhYzA2MDVmNTg0NTExNDA0NTBkMC4uNDhjNjA5NTcwM2FiOGQ3OWNiNDUzY2JmYTY5OTI1ZjVh
ZmIxOTNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpjcmVhdGUoY28KIH0KIAogU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcjo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcihjb25zdCBTdHJpbmcm
IHNkcCkKLSAgICA6IG1faW5pdGlhbFNkcChzZHApCisgICAgOiBtX2luaXRpYWxTRFAoc2RwKQog
ewogfQogCkBAIC01OCw5ICs1OCw5IEBAIHZvaWQgU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cjo6YWRkQ2FuZGlkYXRlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlRGVzY3JpcHRvCiAgICAgbV9j
YW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGUpOwogfQogCi1TdHJpbmcgU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcjo6dG9TZHAoKQorU3RyaW5nIFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3I6OnRvU0RQKCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCku
Y29uc3RydWN0U2RwKHRoaXMpOworICAgIHJldHVybiBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFu
Y2UoKS5jb25zdHJ1Y3RTRFAodGhpcyk7CiB9CiAKIHNpemVfdCBTZXNzaW9uRGVzY3JpcHRpb25E
ZXNjcmlwdG9yOjpudW1iZXJPZkFkZGVkQ2FuZGlkYXRlcygpIGNvbnN0CkBAIC03Myw5ICs3Myw5
IEBAIEljZUNhbmRpZGF0ZURlc2NyaXB0b3IqIFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6
OmNhbmRpZGF0ZShzaXplX3QgaW5kZXgpIGNvCiAgICAgcmV0dXJuIG1fY2FuZGlkYXRlc1tpbmRl
eF0uZ2V0KCk7CiB9CiAKLWNvbnN0IFN0cmluZyYgU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cjo6aW5pdGlhbFNkcCgpCitjb25zdCBTdHJpbmcmIFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3I6OmluaXRpYWxTRFAoKQogewotICAgIHJldHVybiBtX2luaXRpYWxTZHA7CisgICAgcmV0dXJu
IG1faW5pdGlhbFNEUDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRl
c2NyaXB0aW9uRGVzY3JpcHRvci5oCmluZGV4IDIwZjMwYTRkMWE4NmMyMDUwNGRiY2ExMmUyZjZi
MjYwMTE5MDBjNDkuLjQ1MTI4NDMyYTQ4YTg5OTY1ZjdmMGMwZmU5MTlmZWQyNDVmZDY4NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNj
cmlwdGlvbkRlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9TZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgKQEAgLTQ3LDE2ICs0NywxNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcigpOwogCiAg
ICAgdm9pZCBhZGRDYW5kaWRhdGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPik7
Ci0gICAgU3RyaW5nIHRvU2RwKCk7CisgICAgU3RyaW5nIHRvU0RQKCk7CiAKICAgICBzaXplX3Qg
bnVtYmVyT2ZBZGRlZENhbmRpZGF0ZXMoKSBjb25zdDsKICAgICBJY2VDYW5kaWRhdGVEZXNjcmlw
dG9yKiBjYW5kaWRhdGUoc2l6ZV90IGluZGV4KSBjb25zdDsKLSAgICBjb25zdCBTdHJpbmcmIGlu
aXRpYWxTZHAoKTsKKyAgICBjb25zdCBTdHJpbmcmIGluaXRpYWxTRFAoKTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYg
c2RwKTsKIAotICAgIFN0cmluZyBtX2luaXRpYWxTZHA7CisgICAgU3RyaW5nIG1faW5pdGlhbFNE
UDsKICAgICBWZWN0b3I8UmVmUHRyPEljZUNhbmRpZGF0ZURlc2NyaXB0b3I+ID4gbV9jYW5kaWRh
dGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDFmNmMxOGM0ZTZmZTA3
MzRjYjI3MGU4Y2M3YTlkNzdjMTFmYTI2YmEuLmM1MDI0ZTlkZTM2YzU0ODRmYWQxYTI5OGVmYjJi
ZWQ0YzAzNTZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw2ICsxNzMs
NyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdseXBoQ2FjaGUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dl
YkljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJ
REJDYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDdXJzb3IuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oJywKQEAgLTI0NCw2ICsy
NDUsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZWN1cml0eVBvbGljeS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlNlbGVjdEVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViU2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTaGFyZWRX
b3JrZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTaGFyZWRXb3JrZXIu
aCcsCkBAIC01NTksNiArNTYxLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhpc3RvcnlJ
dGVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIVFRQQm9keS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSFRUUExvYWRJbmZvLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJJY29uTG9hZGluZ0NvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJJY29uTG9hZGluZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SURCQ2FsbGJhY2tzSW1wbC5jcHAnLApAQCAtNjQ1LDYgKzY0OCw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJTZWN1cml0eVBvbGljeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
U2VsZWN0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNldHRpbmdzSW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkljZUNhbmRpZGF0ZURlc2NyaXB0
b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkljZUNhbmRp
ZGF0ZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNThjMTk1OWMwMzNlMDViNGNmNWU2MTU3ODA2
MjFkZDE5NjIxZDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3JfaAorI2RlZmluZSBXZWJJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldl
YlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSWNlQ2FuZGlkYXRl
RGVzY3JpcHRvcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsK
KworY2xhc3MgV2ViSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgV2ViSWNl
Q2FuZGlkYXRlRGVzY3JpcHRvcigpIHsgfQorICAgIFdlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3Io
Y29uc3QgV2ViSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsg
fQorICAgIH5XZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yKCkgeyByZXNldCgpOyB9CisKKyAgICBX
ZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yJiBvcGVyYXRvcj0oY29uc3QgV2ViSWNlQ2FuZGlkYXRl
RGVzY3JpcHRvciYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBjb25zdCBXZWJTdHJpbmcmIGNh
bmRpZGF0ZUxpbmUpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICBXRUJL
SVRfRVhQT1JUIFdlYlN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2Vi
U3RyaW5nIGNhbmRpZGF0ZUxpbmUoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3IoV2ViQ29yZTo6SWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvciopOworICAgIFdlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3IoV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KTsKKworICAgIG9wZXJhdG9yIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPigpIGNvbnN0OworI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJY2VDYW5kaWRhdGVE
ZXNjcmlwdG9yPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFdlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU2Vzc2lv
bkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2ZjU1Mjg1ZjQyZDJiZjZmZGM1
NDMyYTQwN2I3NmQ0ZjM2MWJkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgK
QEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcl9o
CisjZGVmaW5lIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3JfaAorCisjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJXZWJQ
cml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3I7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJp
bmc7CitjbGFzcyBXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOworCitjbGFzcyBXZWJTZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICBXZWJTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yKCkgeyB9CisgICAgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcihj
b25zdCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yJiBvdGhlcikgeyBhc3NpZ24ob3Ro
ZXIpOyB9CisgICAgfldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IoKSB7IHJlc2V0KCk7
IH0KKworICAgIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3ImIG9wZXJhdG9yPShjb25z
dCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yJiBvdGhlcikKKyAgICB7CisgICAgICAg
IGFzc2lnbihvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3ImKTsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlN0cmlu
ZyYgc2RwKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VY
UE9SVCBzaXplX3QgbnVtYmVyT2ZBZGRlZENhbmRpZGF0ZXMoKSBjb25zdDsKKyAgICBXRUJLSVRf
RVhQT1JUIFdlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3IgY2FuZGlkYXRlKHNpemVfdCBpbmRleCkg
Y29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgaW5pdGlhbFNEUCgpIGNvbnN0Owor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcj4mKTsKKworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPigpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBtX3By
aXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTc3
ZDM0NDY2Zjk3MTcxNGJmZjY2M2Q3MjQ3ZDc0OWQzMzAwNDY2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAK
QEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgi
CisKKyNpbmNsdWRlICJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViU3RyaW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjo6V2ViSWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvcihJY2VDYW5kaWRhdGVEZXNjcmlwdG9yKiBpY2VDYW5kaWRhdGUpCisgICAgOiBtX3By
aXZhdGUoaWNlQ2FuZGlkYXRlKQoreworfQorCitXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjpX
ZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlRGVzY3JpcHRv
cj4gaWNlQ2FuZGlkYXRlKQorICAgIDogbV9wcml2YXRlKGljZUNhbmRpZGF0ZSkKK3sKK30KKwor
dm9pZCBXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjphc3NpZ24oY29uc3QgV2ViSWNlQ2FuZGlk
YXRlRGVzY3JpcHRvciYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRl
OworfQorCit2b2lkIFdlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBt
X3ByaXZhdGUucmVzZXQoKTsKK30KKwordm9pZCBXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjpp
bml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGNvbnN0IFdlYlN0cmluZyYgY2FuZGlk
YXRlTGluZSkKK3sKKyAgICBtX3ByaXZhdGUgPSBJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjpjcmVh
dGUobGFiZWwsIGNhbmRpZGF0ZUxpbmUpOworfQorCitXZWJJY2VDYW5kaWRhdGVEZXNjcmlwdG9y
OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJTdHJpbmcgV2Vi
SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9w
cml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpLT5sYWJlbCgpOwor
fQorCitXZWJTdHJpbmcgV2ViSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjo6Y2FuZGlkYXRlTGluZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBt
X3ByaXZhdGUuZ2V0KCktPmNhbmRpZGF0ZUxpbmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MjZkYjdlYzQ5Y2M4MWRmMmM0M2Q2ZTAwODFiYzJiMWE4
MzUzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDkyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgIlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OldlYlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3IoY29uc3QgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yPiYgc2Vzc2lvbkRlc2NyaXB0aW9uKQorICAgIDogbV9wcml2YXRlKHNlc3Np
b25EZXNjcmlwdGlvbikKK3sKK30KKwordm9pZCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjphc3NpZ24oY29uc3QgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciYgb3RoZXIp
Cit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2b2lkIFdlYlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQo
KTsKK30KKworV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6b3BlcmF0b3IgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KCkKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdlYlNlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3I6OmluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBzZHApCit7CisgICAgbV9w
cml2YXRlID0gU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6Y3JlYXRlKHNkcCk7Cit9CisK
K3NpemVfdCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpudW1iZXJPZkFkZGVkQ2Fu
ZGlkYXRlcygpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAg
IHJldHVybiBtX3ByaXZhdGUuZ2V0KCktPm51bWJlck9mQWRkZWRDYW5kaWRhdGVzKCk7Cit9CisK
K1dlYkljZUNhbmRpZGF0ZURlc2NyaXB0b3IgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cjo6Y2FuZGlkYXRlKHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0
ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKS0+Y2FuZGlkYXRlKGluZGV4
KTsKK30KKworV2ViU3RyaW5nIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmluaXRp
YWxTRFAoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpLT5pbml0aWFsU0RQKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132627</attachid>
            <date>2012-03-19 12:24:51 -0700</date>
            <delta_ts>2012-03-20 04:58:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81339-20120319202449.patch</filename>
            <type>text/plain</type>
            <size>26150</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc5YjNkNDQ3NWI4YzFm
NjUwZjRhMDhmNTkzYTBmNjU0NDdhMTQ5Yy4uYWY5YmQyZDFlYjI2YjNkZjQyN2IzNzE5MzhkMGZm
ZTY0MWE4OWM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAzLTE5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJIChKU0VQKTogSW50cm9kdWNpbmcgV2ViU2Vzc2lvbkRlc2NyaXB0aW9u
IGFuZCBXZWJJY2VDYW5kaWRhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxMzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm90IHBvc3NpYmxlIHRvIHRlc3QgdW50aWwgdGhlIGVudGlyZSBKU0VQIGZl
YXR1cmUgaXMgY29tbWl0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNh
bmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY2VDYW5kaWRhdGU6OnRvU2RwKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb246OnRvU2RwKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I6OnRvU0RQKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmg6CisgICAgICAgIChJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6Y29u
c3RydWN0U0RQKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNl
bnRlci5oOgorICAgICAgICAoTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6U2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjp0b1NEUCk6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjppbml0aWFsU0RQKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9TZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yLmg6CisgICAgICAgIChTZXNzaW9uRGVzY3JpcHRpb25EZXNj
cmlwdG9yKToKKwogMjAxMi0wMy0xOCAgTWF0dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgRmFsbGJhY2sgdG8gY29tbW9uIHNjcmlwdCB3aGVuIHBlci1zY3Jp
cHQgZm9udCBzZXR0aW5nIGlzIHRoZSBlbXB0eSBzdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYzhkNzhmZmFjMjRiNjQyMDZhY2U2NzViYjA2OTU0ODYyY2I0ZWI1YS4uNmY5OGMx
MDIzMDQ4MzMyZDdmY2RjMmFmNDQ0M2ExOGQyMDdkMTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMi0wMy0xOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0
b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSSAo
SlNFUCk6IEludHJvZHVjaW5nIFdlYlNlc3Npb25EZXNjcmlwdGlvbiBhbmQgV2ViSWNlQ2FuZGlk
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTMz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBs
ZSBXZWJLaXQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBXZWJDb3JlL3BsYXRmb3JtIHZlcnNpb25z
LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2Vi
SUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpXZWJJQ0VDYW5kaWRhdGVE
ZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6
fldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5k
aWRhdGVEZXNjcmlwdG9yOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5k
aWRhdGVEZXNjcmlwdG9yOjppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6
OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjp+V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6
Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I6OmlzTnVsbCk6CisgICAgICAgICogc3JjL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklDRUNh
bmRpZGF0ZURlc2NyaXB0b3I6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjphc3NpZ24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6
OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KToKKyAgICAgICAgKFdlYktpdDo6V2ViSUNFQ2FuZGlk
YXRlRGVzY3JpcHRvcjo6bGFiZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVE
ZXNjcmlwdG9yOjpjYW5kaWRhdGVMaW5lKToKKyAgICAgICAgKiBzcmMvV2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6V2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3I6OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3I6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcjo6b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRl
c2NyaXB0aW9uRGVzY3JpcHRvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNl
c3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6Om51bWJlck9mQWRkZWRDYW5kaWRhdGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6Y2FuZGlkYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6aW5p
dGlhbFNEUCk6CisKIDIwMTItMDMtMTkgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXggYnVpbGQgdGhhdCB3YXMgYnJva2VuIGJ5IHIx
MTExMzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNl
Q2FuZGlkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2Fu
ZGlkYXRlLmNwcAppbmRleCBmMGNlNDFlOWM4N2E1M2Y0M2JkNDc5YjczNjkxZDYyYmJkZTQxOTZi
Li5jZjlhYmNiZTI2OTQ0MTM1Mjc3MjU3MDM4NmQwMGY1MjBiNGU1NjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuY3BwCkBAIC02
OSw3ICs2OSw3IEBAIGNvbnN0IFN0cmluZyYgSWNlQ2FuZGlkYXRlOjpjYW5kaWRhdGVMaW5lKCkK
IAogU3RyaW5nIEljZUNhbmRpZGF0ZTo6dG9TZHAoKQogewotICAgIHJldHVybiBtX2Rlc2NyaXB0
b3ItPnRvU2RwKCk7CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+dG9TRFAoKTsKIH0KIAogSWNl
Q2FuZGlkYXRlRGVzY3JpcHRvciogSWNlQ2FuZGlkYXRlOjpkZXNjcmlwdG9yKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0
aW9uLmNwcAppbmRleCA2N2QyMmI2ZTBhY2EzZDU2NjdmMjBjMzNlNDZlZGE5ZWJiYzUyNmYxLi4x
ODhhZWNlMzgzN2ExOGZkMzY5NWY2NGI0NTRiZmIzNTY3NmRhNDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24u
Y3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Vzc2lvbkRlc2NyaXB0aW9uOjphZGRDYW5kaWRh
dGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGU+IGNhbmRpZGF0ZSkKIAogU3RyaW5nIFNlc3Npb25E
ZXNjcmlwdGlvbjo6dG9TZHAoKQogewotICAgIHJldHVybiBtX2Rlc2NyaXB0b3ItPnRvU2RwKCk7
CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+dG9TRFAoKTsKIH0KIAogU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvciogU2Vzc2lvbkRlc2NyaXB0aW9uOjpkZXNjcmlwdG9yKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2FuZGlk
YXRlRGVzY3JpcHRvci5jcHAKaW5kZXggMzMyNTc2ZjE1YTM0OTExMDA4NTA1YjZmYTkyNTVjZjdj
ZDAyYjAwNi4uZDFmMWM2MGViOTQ5NjZmN2E5MmIxY2U4YjJkZjU1ZDY3MWVjMTViNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNl
Q2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgSWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvcjo6fkljZUNhbmRpZGF0ZURlc2NyaXB0b3IoKQogewogfQogCi1TdHJpbmcgSWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvcjo6dG9TZHAoKQorU3RyaW5nIEljZUNhbmRpZGF0ZURlc2NyaXB0b3I6
OnRvU0RQKCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuY29u
c3RydWN0U2RwKHRoaXMpOworICAgIHJldHVybiBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2Uo
KS5jb25zdHJ1Y3RTRFAodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRp
ZGF0ZURlc2NyaXB0b3IuaAppbmRleCBiOGJjY2YwYzljNTJjMWJhY2Y1YzE4Y2U5Y2ZiMDI3YTBj
ZTM5ZjViLi5iNzc1NDkwN2EzNTUwOTRjZTdjNjdlNzM0ZTM3YTEwMGE0ZDg5YWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIGxhYmVsKCkgeyByZXR1cm4gbV9sYWJlbDsgfQogICAgIGNvbnN0IFN0cmluZyYgY2Fu
ZGlkYXRlTGluZSgpIHsgcmV0dXJuIG1fY2FuZGlkYXRlTGluZTsgfQogCi0gICAgU3RyaW5nIHRv
U2RwKCk7CisgICAgU3RyaW5nIHRvU0RQKCk7CiAKIHByaXZhdGU6CiAgICAgSWNlQ2FuZGlkYXRl
RGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZUxp
bmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DZW50ZXIuY3BwCmluZGV4IDY1OWYyYWQ0Njk5MGFiMzZmZTcyOTAyYWE5ODE0
NTc5MzYzNzMwNzYuLmRlZTEwNzE3MWExMDZkMDAxYTA2YmFlZjVmZDRiODg0MjUzMjg1OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNlbnRlci5jcHAKQEAgLTU3LDEyICs1NywxMiBAQCB2b2lkIE1lZGlhU3RyZWFtQ2Vu
dGVyOjplbmRMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtRGVz
Y3JpcAogICAgICAgICBzdHJlYW1EZXNjcmlwdG9yLT5zZXRFbmRlZCgpOwogfQogCi1TdHJpbmcg
TWVkaWFTdHJlYW1DZW50ZXI6OmNvbnN0cnVjdFNkcChJY2VDYW5kaWRhdGVEZXNjcmlwdG9yKikK
K1N0cmluZyBNZWRpYVN0cmVhbUNlbnRlcjo6Y29uc3RydWN0U0RQKEljZUNhbmRpZGF0ZURlc2Ny
aXB0b3IqKQogewogICAgIHJldHVybiAiIjsKIH0KIAotU3RyaW5nIE1lZGlhU3RyZWFtQ2VudGVy
Ojpjb25zdHJ1Y3RTZHAoU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciopCitTdHJpbmcgTWVk
aWFTdHJlYW1DZW50ZXI6OmNvbnN0cnVjdFNEUChTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
KikKIHsKICAgICByZXR1cm4gIiI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaAppbmRleCA2NjY0ZTIzNGY2YWFm
NjkzZDQwNzUwZTFiNDJhYTQ3YmZkNTdkNmQ0Li43YWRhM2QxZjgxMGI0MGIyN2I1ZjM1NmY2OTA1
MjliMDk2OWE1ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7
CiAgICAgdm9pZCBkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3Iq
KTsKIAotICAgIFN0cmluZyBjb25zdHJ1Y3RTZHAoSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciopOwot
ICAgIFN0cmluZyBjb25zdHJ1Y3RTZHAoU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciopOwor
ICAgIFN0cmluZyBjb25zdHJ1Y3RTRFAoSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciopOworICAgIFN0
cmluZyBjb25zdHJ1Y3RTRFAoU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciopOwogCiAgICAg
Ly8gQ2FsbHMgZnJvbSB0aGUgcGxhdGZvcm0gdG8gdXBkYXRlIHRoZSBET00gb2JqZWN0cwogICAg
IHZvaWQgZW5kTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKaW5kZXggMGE0ZjM3OTUxZTdjMGQxYmRl
NDlhYzA2MDVmNTg0NTExNDA0NTBkMC4uNDhjNjA5NTcwM2FiOGQ3OWNiNDUzY2JmYTY5OTI1ZjVh
ZmIxOTNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpjcmVhdGUoY28KIH0KIAogU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcjo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcihjb25zdCBTdHJpbmcm
IHNkcCkKLSAgICA6IG1faW5pdGlhbFNkcChzZHApCisgICAgOiBtX2luaXRpYWxTRFAoc2RwKQog
ewogfQogCkBAIC01OCw5ICs1OCw5IEBAIHZvaWQgU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cjo6YWRkQ2FuZGlkYXRlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlRGVzY3JpcHRvCiAgICAgbV9j
YW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGUpOwogfQogCi1TdHJpbmcgU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcjo6dG9TZHAoKQorU3RyaW5nIFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3I6OnRvU0RQKCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCku
Y29uc3RydWN0U2RwKHRoaXMpOworICAgIHJldHVybiBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFu
Y2UoKS5jb25zdHJ1Y3RTRFAodGhpcyk7CiB9CiAKIHNpemVfdCBTZXNzaW9uRGVzY3JpcHRpb25E
ZXNjcmlwdG9yOjpudW1iZXJPZkFkZGVkQ2FuZGlkYXRlcygpIGNvbnN0CkBAIC03Myw5ICs3Myw5
IEBAIEljZUNhbmRpZGF0ZURlc2NyaXB0b3IqIFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6
OmNhbmRpZGF0ZShzaXplX3QgaW5kZXgpIGNvCiAgICAgcmV0dXJuIG1fY2FuZGlkYXRlc1tpbmRl
eF0uZ2V0KCk7CiB9CiAKLWNvbnN0IFN0cmluZyYgU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cjo6aW5pdGlhbFNkcCgpCitjb25zdCBTdHJpbmcmIFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3I6OmluaXRpYWxTRFAoKQogewotICAgIHJldHVybiBtX2luaXRpYWxTZHA7CisgICAgcmV0dXJu
IG1faW5pdGlhbFNEUDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRl
c2NyaXB0aW9uRGVzY3JpcHRvci5oCmluZGV4IDIwZjMwYTRkMWE4NmMyMDUwNGRiY2ExMmUyZjZi
MjYwMTE5MDBjNDkuLjQ1MTI4NDMyYTQ4YTg5OTY1ZjdmMGMwZmU5MTlmZWQyNDVmZDY4NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNj
cmlwdGlvbkRlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9TZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgKQEAgLTQ3LDE2ICs0NywxNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcigpOwogCiAg
ICAgdm9pZCBhZGRDYW5kaWRhdGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPik7
Ci0gICAgU3RyaW5nIHRvU2RwKCk7CisgICAgU3RyaW5nIHRvU0RQKCk7CiAKICAgICBzaXplX3Qg
bnVtYmVyT2ZBZGRlZENhbmRpZGF0ZXMoKSBjb25zdDsKICAgICBJY2VDYW5kaWRhdGVEZXNjcmlw
dG9yKiBjYW5kaWRhdGUoc2l6ZV90IGluZGV4KSBjb25zdDsKLSAgICBjb25zdCBTdHJpbmcmIGlu
aXRpYWxTZHAoKTsKKyAgICBjb25zdCBTdHJpbmcmIGluaXRpYWxTRFAoKTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYg
c2RwKTsKIAotICAgIFN0cmluZyBtX2luaXRpYWxTZHA7CisgICAgU3RyaW5nIG1faW5pdGlhbFNE
UDsKICAgICBWZWN0b3I8UmVmUHRyPEljZUNhbmRpZGF0ZURlc2NyaXB0b3I+ID4gbV9jYW5kaWRh
dGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDFmNmMxOGM0ZTZmZTA3
MzRjYjI3MGU4Y2M3YTlkNzdjMTFmYTI2YmEuLjg3Y2JiYTNmYjcwNTJlMTI3MTFmZDQzOGEyNGY1
MDEzMDVjMDYxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw2ICsxNzMs
NyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdseXBoQ2FjaGUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dl
YklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJ
REJDYWxsYmFja3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDdXJzb3IuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oJywKQEAgLTI0NCw2ICsy
NDUsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZWN1cml0eVBvbGljeS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlNlbGVjdEVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViU2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTaGFyZWRX
b3JrZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTaGFyZWRXb3JrZXIu
aCcsCkBAIC01NTksNiArNTYxLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhpc3RvcnlJ
dGVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIVFRQQm9keS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSFRUUExvYWRJbmZvLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJJY29uTG9hZGluZ0NvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJJY29uTG9hZGluZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SURCQ2FsbGJhY2tzSW1wbC5jcHAnLApAQCAtNjQ1LDYgKzY0OCw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJTZWN1cml0eVBvbGljeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
U2VsZWN0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNldHRpbmdzSW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0
b3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYklDRUNhbmRp
ZGF0ZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTg4YWVmNTkxNmUzODhkMGQ1ODc4ZWRiNzNh
MzM0MTg5NGYxZjJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3JfaAorI2RlZmluZSBXZWJJQ0VDYW5k
aWRhdGVEZXNjcmlwdG9yX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldl
YlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSWNlQ2FuZGlkYXRl
RGVzY3JpcHRvcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsK
KworY2xhc3MgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgV2ViSUNF
Q2FuZGlkYXRlRGVzY3JpcHRvcigpIHsgfQorICAgIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3Io
Y29uc3QgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvciYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsg
fQorICAgIH5XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yKCkgeyByZXNldCgpOyB9CisKKyAgICBX
ZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yJiBvcGVyYXRvcj0oY29uc3QgV2ViSUNFQ2FuZGlkYXRl
RGVzY3JpcHRvciYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBjb25zdCBXZWJTdHJpbmcmIGNh
bmRpZGF0ZUxpbmUpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICBXRUJL
SVRfRVhQT1JUIFdlYlN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2Vi
U3RyaW5nIGNhbmRpZGF0ZUxpbmUoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IoV2ViQ29yZTo6SWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvciopOworICAgIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IoV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KTsKKworICAgIG9wZXJhdG9yIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPigpIGNvbnN0OworI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJY2VDYW5kaWRhdGVE
ZXNjcmlwdG9yPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU2Vzc2lv
bkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzYzdlZTYxY2FlYmUwOThkNjNk
YTQ0OWM5ZjM2ODNlYTgzOTJkNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgK
QEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcl9o
CisjZGVmaW5lIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3JfaAorCisjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJXZWJQ
cml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3I7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJp
bmc7CitjbGFzcyBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOworCitjbGFzcyBXZWJTZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICBXZWJTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yKCkgeyB9CisgICAgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcihj
b25zdCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yJiBvdGhlcikgeyBhc3NpZ24ob3Ro
ZXIpOyB9CisgICAgfldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IoKSB7IHJlc2V0KCk7
IH0KKworICAgIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3ImIG9wZXJhdG9yPShjb25z
dCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yJiBvdGhlcikKKyAgICB7CisgICAgICAg
IGFzc2lnbihvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3ImKTsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlN0cmlu
ZyYgc2RwKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VY
UE9SVCBzaXplX3QgbnVtYmVyT2ZBZGRlZENhbmRpZGF0ZXMoKSBjb25zdDsKKyAgICBXRUJLSVRf
RVhQT1JUIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IgY2FuZGlkYXRlKHNpemVfdCBpbmRleCkg
Y29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgaW5pdGlhbFNEUCgpIGNvbnN0Owor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcj4mKTsKKworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPigpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBtX3By
aXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OThm
ODA5MzljMDg3MmI1OTdlZjUxM2Y0ZTFhYTIwOTAzOTI2ZWFlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAK
QEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmgi
CisKKyNpbmNsdWRlICJJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViU3RyaW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6V2ViSUNFQ2FuZGlkYXRlRGVz
Y3JpcHRvcihJY2VDYW5kaWRhdGVEZXNjcmlwdG9yKiBpY2VDYW5kaWRhdGUpCisgICAgOiBtX3By
aXZhdGUoaWNlQ2FuZGlkYXRlKQoreworfQorCitXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpX
ZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlRGVzY3JpcHRv
cj4gaWNlQ2FuZGlkYXRlKQorICAgIDogbV9wcml2YXRlKGljZUNhbmRpZGF0ZSkKK3sKK30KKwor
dm9pZCBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjphc3NpZ24oY29uc3QgV2ViSUNFQ2FuZGlk
YXRlRGVzY3JpcHRvciYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRl
OworfQorCit2b2lkIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBt
X3ByaXZhdGUucmVzZXQoKTsKK30KKwordm9pZCBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpp
bml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGNvbnN0IFdlYlN0cmluZyYgY2FuZGlk
YXRlTGluZSkKK3sKKyAgICBtX3ByaXZhdGUgPSBJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjpjcmVh
dGUobGFiZWwsIGNhbmRpZGF0ZUxpbmUpOworfQorCitXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9y
OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJTdHJpbmcgV2Vi
SUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9w
cml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpLT5sYWJlbCgpOwor
fQorCitXZWJTdHJpbmcgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6Y2FuZGlkYXRlTGluZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBt
X3ByaXZhdGUuZ2V0KCktPmNhbmRpZGF0ZUxpbmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4Zjk2ZTU2OGJiNGE3NmFmYjVkMjdkYzYyMDZlMWVhNTE0
NjY2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDkyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgIlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJQ0VDYW5k
aWRhdGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OldlYlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3IoY29uc3QgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yPiYgc2Vzc2lvbkRlc2NyaXB0aW9uKQorICAgIDogbV9wcml2YXRlKHNlc3Np
b25EZXNjcmlwdGlvbikKK3sKK30KKwordm9pZCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjphc3NpZ24oY29uc3QgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciYgb3RoZXIp
Cit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2b2lkIFdlYlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQo
KTsKK30KKworV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6b3BlcmF0b3IgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KCkKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdlYlNlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3I6OmluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBzZHApCit7CisgICAgbV9w
cml2YXRlID0gU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6Y3JlYXRlKHNkcCk7Cit9CisK
K3NpemVfdCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpudW1iZXJPZkFkZGVkQ2Fu
ZGlkYXRlcygpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAg
IHJldHVybiBtX3ByaXZhdGUuZ2V0KCktPm51bWJlck9mQWRkZWRDYW5kaWRhdGVzKCk7Cit9CisK
K1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cjo6Y2FuZGlkYXRlKHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0
ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKS0+Y2FuZGlkYXRlKGluZGV4
KTsKK30KKworV2ViU3RyaW5nIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmluaXRp
YWxTRFAoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpLT5pbml0aWFsU0RQKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132803</attachid>
            <date>2012-03-20 04:58:33 -0700</date>
            <delta_ts>2012-03-21 05:28:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81339-20120320125831.patch</filename>
            <type>text/plain</type>
            <size>29365</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA2YjBiOWZiZTNhZTRl
NjQ3MTM5NWY5YTVmMDAwY2U5ZjVhNGZlMS4uZjAxZDJiYjQ5MTg2OTRkNmUzZjI4ZGI0NjlkNjdl
YTVlMWFlYmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAzLTE5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJIChKU0VQKTogSW50cm9kdWNpbmcgV2ViU2Vzc2lvbkRlc2NyaXB0aW9u
IGFuZCBXZWJJY2VDYW5kaWRhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxMzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm90IHBvc3NpYmxlIHRvIHRlc3QgdW50aWwgdGhlIGVudGlyZSBKU0VQIGZl
YXR1cmUgaXMgY29tbWl0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNh
bmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY2VDYW5kaWRhdGU6OnRvU2RwKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb246OnRvU2RwKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I6OnRvU0RQKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmg6CisgICAgICAgIChJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6Y29u
c3RydWN0U0RQKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNl
bnRlci5oOgorICAgICAgICAoTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6U2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjp0b1NEUCk6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjppbml0aWFsU0RQKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9TZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yLmg6CisgICAgICAgIChTZXNzaW9uRGVzY3JpcHRpb25EZXNj
cmlwdG9yKToKKwogMjAxMi0wMy0yMCAgTHVrZSBNYWNwaGVyc29uICA8bWFjcGhlcnNvbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG1pbiBhbmQgbWF4IHBhcmFtZXRlcnMgZnJvbSBD
U1NQcmltaXRpdmVWYWx1ZSdzIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbiBmdW5jdGlvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggN2VlZGI1NTdiMTY1MTBlMDhkY2JmNTZkODM2
MjIwNGQ4NDA3OGFkNC4uYTE5MTliMTE3Njg4YWQxMWQwMDE2ZDUwN2U5ZjhiNWM2MzhiNmM5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMi0wMy0xOSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21p
dW1dIE1lZGlhU3RyZWFtIEFQSSAoSlNFUCk6IEludHJvZHVjaW5nIFdlYlNlc3Npb25EZXNjcmlw
dGlvbiBhbmQgV2ViSWNlQ2FuZGlkYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MTMzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNpbXBsZSBXZWJLaXQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBXZWJD
b3JlL3BsYXRmb3JtIHZlcnNpb25zLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAg
KiBwdWJsaWMvcGxhdGZvcm0vV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklDRUNhbmRp
ZGF0ZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlw
dG9yOjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSUNF
Q2FuZGlkYXRlRGVzY3JpcHRvcjo6fldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjppc051bGwpOgorICAgICAgICAq
IHB1YmxpYy9wbGF0Zm9ybS9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3I6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjp+V2ViU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3I6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNl
c3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmlzTnVsbCk6CisgICAgICAgICogc3JjL1dlYklD
RUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OldlYklDRUNhbmRpZGF0ZURl
c2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjph
c3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpyZXNl
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpvcGVyYXRv
ciBQYXNzUmVmUHRyPFdlYkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6bGFiZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpjYW5kaWRhdGVMaW5lKToKKyAgICAgICAg
KiBzcmMvV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvcjo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmFzc2lnbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OnJlc2V0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6b3BlcmF0b3IgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6Om51bWJlck9m
QWRkZWRDYW5kaWRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcjo6Y2FuZGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcjo6aW5pdGlhbFNEUCk6CisKIDIwMTItMDMtMTkgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2lj
IiBpZnJhbWUKQEAgLTIxNCw2ICsyNjAsNyBAQAogICAgICAgICBTaW1wbGUgV2ViS2l0IHJlcHJl
c2VudGF0aW9ucyBvZiB0aGUgV2ViQ29yZS9wbGF0Zm9ybSB2ZXJzaW9ucy4KIAogICAgICAgICAq
IFdlYktpdC5neXA6Cis8PDw8PDw8IEhFQUQKICAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2Vi
SUNFT3B0aW9ucy5oOiBBZGRlZC4KICAgICAgICAgKFdlYkNvcmUpOgogICAgICAgICAoV2ViS2l0
KToKQEAgLTMyNSw2ICszNzIsNDMgQEAKICAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKICAg
ICAgICAgKFdlYkNvcmUpOgogICAgICAgICAoV2ViVmlld0ltcGwpOgorPT09PT09PQorICAgICAg
ICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSUNFQ2Fu
ZGlkYXRlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2Ny
aXB0b3I6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
Q0VDYW5kaWRhdGVEZXNjcmlwdG9yOjp+V2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6Om9wZXJhdG9yPSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OmlzTnVsbCk6CisgICAgICAg
ICogcHVibGljL3BsYXRmb3JtL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lv
bkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6On5XZWJT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lv
bkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6aXNOdWxsKToKKyAgICAgICAgKiBzcmMvV2Vi
SUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6V2ViSUNFQ2FuZGlkYXRl
RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6
OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OnJl
c2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6Om9wZXJh
dG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpsYWJlbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OmNhbmRpZGF0ZUxpbmUpOgorICAgICAg
ICAqIHNyYy9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNj
cmlwdG9yOjpXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6YXNzaWduKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6cmVzZXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpvcGVyYXRvciBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6bnVtYmVy
T2ZBZGRlZENhbmRpZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yOjpjYW5kaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXNzaW9uRGVz
Y3JpcHRpb25EZXNjcmlwdG9yOjppbml0aWFsU0RQKToKKz4+Pj4+Pj4gV2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uICYgV2ViSWNlQ2FuZGlkYXRlCiAKIDIwMTItMDMtMTkgIEtlaXNoaSBIYXR0b3JpICA8
a2Vpc2hpQHdlYmtpdC5vcmc+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmNwcAppbmRleCBmMGNlNDFlOWM4N2E1M2Y0M2JkNDc5Yjcz
NjkxZDYyYmJkZTQxOTZiLi5jZjlhYmNiZTI2OTQ0MTM1Mjc3MjU3MDM4NmQwMGY1MjBiNGU1NjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRp
ZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5k
aWRhdGUuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IFN0cmluZyYgSWNlQ2FuZGlkYXRlOjpj
YW5kaWRhdGVMaW5lKCkKIAogU3RyaW5nIEljZUNhbmRpZGF0ZTo6dG9TZHAoKQogewotICAgIHJl
dHVybiBtX2Rlc2NyaXB0b3ItPnRvU2RwKCk7CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+dG9T
RFAoKTsKIH0KIAogSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciogSWNlQ2FuZGlkYXRlOjpkZXNjcmlw
dG9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vz
c2lvbkRlc2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
U2Vzc2lvbkRlc2NyaXB0aW9uLmNwcAppbmRleCA2N2QyMmI2ZTBhY2EzZDU2NjdmMjBjMzNlNDZl
ZGE5ZWJiYzUyNmYxLi4xODhhZWNlMzgzN2ExOGZkMzY5NWY2NGI0NTRiZmIzNTY3NmRhNDkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNj
cmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNz
aW9uRGVzY3JpcHRpb24uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Vzc2lvbkRlc2NyaXB0
aW9uOjphZGRDYW5kaWRhdGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRhdGU+IGNhbmRpZGF0ZSkKIAog
U3RyaW5nIFNlc3Npb25EZXNjcmlwdGlvbjo6dG9TZHAoKQogewotICAgIHJldHVybiBtX2Rlc2Ny
aXB0b3ItPnRvU2RwKCk7CisgICAgcmV0dXJuIG1fZGVzY3JpcHRvci0+dG9TRFAoKTsKIH0KIAog
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciogU2Vzc2lvbkRlc2NyaXB0aW9uOjpkZXNjcmlw
dG9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0lj
ZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKaW5kZXggMzMyNTc2ZjE1YTM0OTExMDA4
NTA1YjZmYTkyNTVjZjdjZDAyYjAwNi4uZDFmMWM2MGViOTQ5NjZmN2E5MmIxY2U4YjJkZjU1ZDY3
MWVjMTViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
SWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKQEAgLTUzLDkgKzUzLDkgQEAg
SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjo6fkljZUNhbmRpZGF0ZURlc2NyaXB0b3IoKQogewogfQog
Ci1TdHJpbmcgSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjo6dG9TZHAoKQorU3RyaW5nIEljZUNhbmRp
ZGF0ZURlc2NyaXB0b3I6OnRvU0RQKCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW1DZW50ZXI6
Omluc3RhbmNlKCkuY29uc3RydWN0U2RwKHRoaXMpOworICAgIHJldHVybiBNZWRpYVN0cmVhbUNl
bnRlcjo6aW5zdGFuY2UoKS5jb25zdHJ1Y3RTRFAodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaAppbmRleCBiOGJjY2YwYzljNTJjMWJhY2Y1
YzE4Y2U5Y2ZiMDI3YTBjZTM5ZjViLi5iNzc1NDkwN2EzNTUwOTRjZTdjNjdlNzM0ZTM3YTEwMGE0
ZDg5YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9J
Y2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBTdHJpbmcmIGxhYmVsKCkgeyByZXR1cm4gbV9sYWJlbDsgfQogICAgIGNv
bnN0IFN0cmluZyYgY2FuZGlkYXRlTGluZSgpIHsgcmV0dXJuIG1fY2FuZGlkYXRlTGluZTsgfQog
Ci0gICAgU3RyaW5nIHRvU2RwKCk7CisgICAgU3RyaW5nIHRvU0RQKCk7CiAKIHByaXZhdGU6CiAg
ICAgSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJp
bmcmIGNhbmRpZGF0ZUxpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwCmluZGV4IDY0ZTdmMWQ0NDEyOTAz
NzdiYjVkNGVjN2FlMDFmNmY3ODFjYzY4OTguLjIxNjUyZWUyYTM1NTkyMWU3MGJlNTQzZWM4Zjkz
YjkzMTZkOWQ0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKQEAgLTU4LDEyICs1OCwxMiBAQCB2b2lk
IE1lZGlhU3RyZWFtQ2VudGVyOjplbmRMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogc3RyZWFtRGVzY3JpcAogICAgICAgICBzdHJlYW1EZXNjcmlwdG9yLT5zZXRFbmRlZCgp
OwogfQogCi1TdHJpbmcgTWVkaWFTdHJlYW1DZW50ZXI6OmNvbnN0cnVjdFNkcChJY2VDYW5kaWRh
dGVEZXNjcmlwdG9yKikKK1N0cmluZyBNZWRpYVN0cmVhbUNlbnRlcjo6Y29uc3RydWN0U0RQKElj
ZUNhbmRpZGF0ZURlc2NyaXB0b3IqKQogewogICAgIHJldHVybiAiIjsKIH0KIAotU3RyaW5nIE1l
ZGlhU3RyZWFtQ2VudGVyOjpjb25zdHJ1Y3RTZHAoU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
ciopCitTdHJpbmcgTWVkaWFTdHJlYW1DZW50ZXI6OmNvbnN0cnVjdFNEUChTZXNzaW9uRGVzY3Jp
cHRpb25EZXNjcmlwdG9yKikKIHsKICAgICByZXR1cm4gIiI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaAppbmRl
eCA2NjY0ZTIzNGY2YWFmNjkzZDQwNzUwZTFiNDJhYTQ3YmZkNTdkNmQ0Li43YWRhM2QxZjgxMGI0
MGIyN2I1ZjM1NmY2OTA1MjliMDk2OWE1ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKQEAgLTc3LDggKzc3
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKik7CiAgICAgdm9pZCBkaWRDb25zdHJ1Y3RNZWRpYVN0cmVhbShNZWRpYVN0
cmVhbURlc2NyaXB0b3IqKTsKIAotICAgIFN0cmluZyBjb25zdHJ1Y3RTZHAoSWNlQ2FuZGlkYXRl
RGVzY3JpcHRvciopOwotICAgIFN0cmluZyBjb25zdHJ1Y3RTZHAoU2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvciopOworICAgIFN0cmluZyBjb25zdHJ1Y3RTRFAoSWNlQ2FuZGlkYXRlRGVzY3Jp
cHRvciopOworICAgIFN0cmluZyBjb25zdHJ1Y3RTRFAoU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvciopOwogCiAgICAgLy8gQ2FsbHMgZnJvbSB0aGUgcGxhdGZvcm0gdG8gdXBkYXRlIHRoZSBE
T00gb2JqZWN0cwogICAgIHZvaWQgZW5kTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2Ny
aXB0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKaW5kZXggMGE0
ZjM3OTUxZTdjMGQxYmRlNDlhYzA2MDVmNTg0NTExNDA0NTBkMC4uNDhjNjA5NTcwM2FiOGQ3OWNi
NDUzY2JmYTY5OTI1ZjVhZmIxOTNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUGFzc1JlZlB0cjxTZXNzaW9uRGVzY3JpcHRpb25E
ZXNjcmlwdG9yPiBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpjcmVhdGUoY28KIH0KIAog
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cihjb25zdCBTdHJpbmcmIHNkcCkKLSAgICA6IG1faW5pdGlhbFNkcChzZHApCisgICAgOiBtX2lu
aXRpYWxTRFAoc2RwKQogewogfQogCkBAIC01OCw5ICs1OCw5IEBAIHZvaWQgU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcjo6YWRkQ2FuZGlkYXRlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvCiAgICAgbV9jYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGUpOwogfQogCi1TdHJpbmcg
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6dG9TZHAoKQorU3RyaW5nIFNlc3Npb25EZXNj
cmlwdGlvbkRlc2NyaXB0b3I6OnRvU0RQKCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW1DZW50
ZXI6Omluc3RhbmNlKCkuY29uc3RydWN0U2RwKHRoaXMpOworICAgIHJldHVybiBNZWRpYVN0cmVh
bUNlbnRlcjo6aW5zdGFuY2UoKS5jb25zdHJ1Y3RTRFAodGhpcyk7CiB9CiAKIHNpemVfdCBTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpudW1iZXJPZkFkZGVkQ2FuZGlkYXRlcygpIGNvbnN0
CkBAIC03Myw5ICs3Myw5IEBAIEljZUNhbmRpZGF0ZURlc2NyaXB0b3IqIFNlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3I6OmNhbmRpZGF0ZShzaXplX3QgaW5kZXgpIGNvCiAgICAgcmV0dXJuIG1f
Y2FuZGlkYXRlc1tpbmRleF0uZ2V0KCk7CiB9CiAKLWNvbnN0IFN0cmluZyYgU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcjo6aW5pdGlhbFNkcCgpCitjb25zdCBTdHJpbmcmIFNlc3Npb25EZXNj
cmlwdGlvbkRlc2NyaXB0b3I6OmluaXRpYWxTRFAoKQogewotICAgIHJldHVybiBtX2luaXRpYWxT
ZHA7CisgICAgcmV0dXJuIG1faW5pdGlhbFNEUDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vU2Vzc2lv
bkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oCmluZGV4IDIwZjMwYTRkMWE4NmMy
MDUwNGRiY2ExMmUyZjZiMjYwMTE5MDBjNDkuLjQ1MTI4NDMyYTQ4YTg5OTY1ZjdmMGMwZmU5MTlm
ZWQyNDVmZDY4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgKQEAgLTQ3
LDE2ICs0NywxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvcigpOwogCiAgICAgdm9pZCBhZGRDYW5kaWRhdGUoUGFzc1JlZlB0cjxJY2VDYW5kaWRh
dGVEZXNjcmlwdG9yPik7Ci0gICAgU3RyaW5nIHRvU2RwKCk7CisgICAgU3RyaW5nIHRvU0RQKCk7
CiAKICAgICBzaXplX3QgbnVtYmVyT2ZBZGRlZENhbmRpZGF0ZXMoKSBjb25zdDsKICAgICBJY2VD
YW5kaWRhdGVEZXNjcmlwdG9yKiBjYW5kaWRhdGUoc2l6ZV90IGluZGV4KSBjb25zdDsKLSAgICBj
b25zdCBTdHJpbmcmIGluaXRpYWxTZHAoKTsKKyAgICBjb25zdCBTdHJpbmcmIGluaXRpYWxTRFAo
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
KGNvbnN0IFN0cmluZyYgc2RwKTsKIAotICAgIFN0cmluZyBtX2luaXRpYWxTZHA7CisgICAgU3Ry
aW5nIG1faW5pdGlhbFNEUDsKICAgICBWZWN0b3I8UmVmUHRyPEljZUNhbmRpZGF0ZURlc2NyaXB0
b3I+ID4gbV9jYW5kaWRhdGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4
IDM3NmY2ZDQxMTZjNjg1ZGM4MTc3NDI0NTBmODIzM2M5ZDBiMGU2NzcuLmIyMTJkZWI5MmRmZTVk
ZTkyYzk3MzQ3MGMzYmY0MjQyODkwNGZjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
QEAgLTE3Myw2ICsxNzMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdseXBoQ2FjaGUuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJIaXN0b3J5SXRlbS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJJQ0VPcHRpb25zLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
SURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCQ3Vyc29yLmgn
LApAQCAtMjQ2LDYgKzI0Nyw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZWN1cml0
eU9yaWdpbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNlY3VyaXR5UG9saWN5Lmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2VsZWN0RWxlbWVudC5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZXR0aW5ncy5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlNoYXJlZFdvcmtlci5oJywKQEAgLTU2MSw2ICs1NjMsNyBAQAogICAgICAgICAgICAgICAgICdz
cmMvV2ViSGlzdG9yeUl0ZW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhUVFBCb2R5
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwJywKKyAgICAg
ICAgICAgICAgICAnc3JjL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYklDRU9wdGlvbnMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
Ykljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
Ykljb25Mb2FkaW5nQ29tcGxldGlvbkltcGwuaCcsCkBAIC02NDksNiArNjUyLDcgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYlNlY3VyaXR5UG9saWN5LmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2V0dGluZ3NJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSUNFQ2FuZGlkYXRl
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
SUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhNDg2N2YyMjZhNzA1MWU5NDk0
YWVlMjIwMDFjYWY3MGI3M2ViOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmgKQEAgLTAs
MCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcl9oCisjZGVmaW5lIFdl
YklDRUNhbmRpZGF0ZURlc2NyaXB0b3JfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJY2VD
YW5kaWRhdGVEZXNjcmlwdG9yOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
U3RyaW5nOworCitjbGFzcyBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAg
ICBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yKCkgeyB9CisgICAgV2ViSUNFQ2FuZGlkYXRlRGVz
Y3JpcHRvcihjb25zdCBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yJiBvdGhlcikgeyBhc3NpZ24o
b3RoZXIpOyB9CisgICAgfldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IoKSB7IHJlc2V0KCk7IH0K
KworICAgIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3ImIG9wZXJhdG9yPShjb25zdCBXZWJJQ0VD
YW5kaWRhdGVEZXNjcmlwdG9yJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
YXNzaWduKGNvbnN0IFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3ImKTsKKworICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGNvbnN0IFdlYlN0
cmluZyYgY2FuZGlkYXRlTGluZSk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Cisg
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKwor
ICAgIC8vIFRoZSBTRFAgbT0gbGluZSB0aGlzIGNhbmRpZGF0ZSBpcyBhc3NvY2lhdGVkIHdpdGgu
CisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgbGFiZWwoKSBjb25zdDsKKworICAgIC8vIFRo
ZSBhY3R1YWwgU0RQIGNhbmRpZGF0ZS4KKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBjYW5k
aWRhdGVMaW5lKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJ
Q0VDYW5kaWRhdGVEZXNjcmlwdG9yKFdlYkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3IqKTsK
KyAgICBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJ
Y2VDYW5kaWRhdGVEZXNjcmlwdG9yPik7CisKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4oKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4g
bV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJ
Q0VDYW5kaWRhdGVEZXNjcmlwdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDEwNzFmYzg0NmY0MjM0NjBlMjk3M2VkMjIxY2Uz
OTkyMDc3ZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEs
OTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3JfaAorI2RlZmluZSBX
ZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3RyaW5nOworY2xhc3Mg
V2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjsKKworLyoKKyAqICBJbiBvcmRlciB0byBlc3RhYmxp
c2ggdGhlIG1lZGlhIHBsYW5lLCBQZWVyQ29ubmVjdGlvbiBuZWVkcyBzcGVjaWZpYworICogIHBh
cmFtZXRlcnMgdG8gaW5kaWNhdGUgd2hhdCB0byB0cmFuc21pdCB0byB0aGUgcmVtb3RlIHNpZGUs
IGFzIHdlbGwKKyAqICBhcyBob3cgdG8gaGFuZGxlIHRoZSBtZWRpYSB0aGF0IGlzIHJlY2VpdmVk
LiBUaGVzZSBwYXJhbWV0ZXJzIGFyZQorICogIGRldGVybWluZWQgYnkgdGhlIGV4Y2hhbmdlIG9m
IHNlc3Npb24gZGVzY3JpcHRpb25zIGluIG9mZmVycyBhbmQKKyAqICBhbnN3ZXJzLCBhbmQgdGhl
cmUgYXJlIGNlcnRhaW4gZGV0YWlscyB0byB0aGlzIHByb2Nlc3MgdGhhdCBtdXN0IGJlCisgKiAg
aGFuZGxlZCBpbiB0aGUgSlNFUCBBUElzLgorCisgKiAgV2hldGhlciBhIHNlc3Npb24gZGVzY3Jp
cHRpb24gd2FzIHNlbnQgb3IgcmVjZWl2ZWQgYWZmZWN0cyB0aGUKKyAqICBtZWFuaW5nIG9mIHRo
YXQgZGVzY3JpcHRpb24uIEZvciBleGFtcGxlLCB0aGUgbGlzdCBvZiBjb2RlY3Mgc2VudCB0bwor
ICogIGEgcmVtb3RlIHBhcnR5IGluZGljYXRlcyB3aGF0IHRoZSBsb2NhbCBzaWRlIGlzIHdpbGxp
bmcgdG8gZGVjb2RlLAorICogIGFuZCB3aGF0IHRoZSByZW1vdGUgcGFydHkgc2hvdWxkIHNlbmQu
CisgKi8KK2NsYXNzIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IgeworcHVibGljOgor
ICAgIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IoKSB7IH0KKyAgICBXZWJTZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yKGNvbnN0IFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0
b3ImIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViU2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcigpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvciYgb3BlcmF0b3I9KGNvbnN0IFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3Im
IG90aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciYpOworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGlu
aXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBzZHApOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBy
ZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVs
bCgpOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHNpemVfdCBudW1iZXJPZkFkZGVkQ2FuZGlkYXRl
cygpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvciBj
YW5kaWRhdGUoc2l6ZV90IGluZGV4KSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmlu
ZyBpbml0aWFsU0RQKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBX
ZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiYpOworCisgICAgb3BlcmF0b3IgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KCk7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlNlc3Npb25EZXNj
cmlwdGlvbkRlc2NyaXB0b3I+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU5OGY4MDkzOWMwODcyYjU5N2VmNTEzZjRlMWFhMjA5MDM5MjZl
YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJQ0VD
YW5kaWRhdGVEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYklD
RUNhbmRpZGF0ZURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgIkljZUNhbmRpZGF0ZURlc2NyaXB0
b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJQ0VDYW5kaWRhdGVEZXNjcmlw
dG9yOjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yKEljZUNhbmRpZGF0ZURlc2NyaXB0b3IqIGlj
ZUNhbmRpZGF0ZSkKKyAgICA6IG1fcHJpdmF0ZShpY2VDYW5kaWRhdGUpCit7Cit9CisKK1dlYklD
RUNhbmRpZGF0ZURlc2NyaXB0b3I6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IoUGFzc1JlZlB0
cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiBpY2VDYW5kaWRhdGUpCisgICAgOiBtX3ByaXZhdGUo
aWNlQ2FuZGlkYXRlKQoreworfQorCit2b2lkIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OmFz
c2lnbihjb25zdCBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yJiBvdGhlcikKK3sKKyAgICBtX3By
aXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViSUNFQ2FuZGlkYXRlRGVzY3Jp
cHRvcjo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCit2b2lkIFdlYklD
RUNhbmRpZGF0ZURlc2NyaXB0b3I6OmluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwg
Y29uc3QgV2ViU3RyaW5nJiBjYW5kaWRhdGVMaW5lKQoreworICAgIG1fcHJpdmF0ZSA9IEljZUNh
bmRpZGF0ZURlc2NyaXB0b3I6OmNyZWF0ZShsYWJlbCwgY2FuZGlkYXRlTGluZSk7Cit9CisKK1dl
YklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6SWNl
Q2FuZGlkYXRlRGVzY3JpcHRvcj4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0
KCk7Cit9CisKK1dlYlN0cmluZyBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpsYWJlbCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBtX3By
aXZhdGUuZ2V0KCktPmxhYmVsKCk7Cit9CisKK1dlYlN0cmluZyBXZWJJQ0VDYW5kaWRhdGVEZXNj
cmlwdG9yOjpjYW5kaWRhdGVMaW5lKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5p
c051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKS0+Y2FuZGlkYXRlTGluZSgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThmOTZlNTY4YmI0
YTc2YWZiNWQyN2RjNjIwNmUxZWE1MTQ2NjY4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwCkBA
IC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
ci5oIgorCisjaW5jbHVkZSAiU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcjo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcihjb25zdCBQYXNz
UmVmUHRyPFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+JiBzZXNzaW9uRGVzY3JpcHRpb24p
CisgICAgOiBtX3ByaXZhdGUoc2Vzc2lvbkRlc2NyaXB0aW9uKQoreworfQorCit2b2lkIFdlYlNl
c3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmFzc2lnbihjb25zdCBXZWJTZXNzaW9uRGVzY3Jp
cHRpb25EZXNjcmlwdG9yJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZh
dGU7Cit9CisKK3ZvaWQgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6cmVzZXQoKQor
eworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCitXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNj
cmlwdG9yOjpvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcj4oKQoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK3Zv
aWQgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJT
dHJpbmcmIHNkcCkKK3sKKyAgICBtX3ByaXZhdGUgPSBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjpjcmVhdGUoc2RwKTsKK30KKworc2l6ZV90IFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I6Om51bWJlck9mQWRkZWRDYW5kaWRhdGVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1f
cHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKS0+bnVtYmVyT2ZB
ZGRlZENhbmRpZGF0ZXMoKTsKK30KKworV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvciBXZWJTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpjYW5kaWRhdGUoc2l6ZV90IGluZGV4KSBjb25zdAor
eworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LmdldCgpLT5jYW5kaWRhdGUoaW5kZXgpOworfQorCitXZWJTdHJpbmcgV2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcjo6aW5pdGlhbFNEUCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3By
aXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCktPmluaXRpYWxTRFAo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133021</attachid>
            <date>2012-03-21 05:26:34 -0700</date>
            <delta_ts>2012-03-21 10:55:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81339-20120321132632.patch</filename>
            <type>text/plain</type>
            <size>26946</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE5OTM5NWY0OTFiYzk0
ZmEyNzgyMDQxNjIyODMwMjE3OTgyMDBkZi4uN2M4ZDYwZjZkNGE5NGM2Y2Y1MzE3OWIwMDY0Njcx
MjNhNjNiZTQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAzLTE5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWVkaWFTdHJlYW0gQVBJIChKU0VQKTogSW50cm9kdWNpbmcgV2ViU2Vzc2lvbkRlc2NyaXB0aW9u
IGFuZCBXZWJJY2VDYW5kaWRhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxMzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm90IHBvc3NpYmxlIHRvIHRlc3QgdW50aWwgdGhlIGVudGlyZSBKU0VQIGZl
YXR1cmUgaXMgY29tbWl0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNh
bmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY2VDYW5kaWRhdGU6OnRvU2RwKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb246OnRvU2RwKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I6OnRvU0RQKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmg6CisgICAgICAgIChJY2VDYW5k
aWRhdGVEZXNjcmlwdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlcjo6Y29u
c3RydWN0U0RQKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNl
bnRlci5oOgorICAgICAgICAoTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6U2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjp0b1NEUCk6CisgICAgICAgIChXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yOjppbml0aWFsU0RQKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9TZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yLmg6CisgICAgICAgIChTZXNzaW9uRGVzY3JpcHRpb25EZXNj
cmlwdG9yKToKKwogMjAxMi0wMy0yMSAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIEFuaW1hdGlvbiBldmVudHMgc2hvdWxkIG9ubHkgYmUg
dXNlZCBmb3Igc3luY2hyb25pemluZyBhbmltYXRpb24gc3RhcnQgdGltZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNmMzYjg0NTNlNmU0MTYzZmU4N2NjODFiNTJmNDFiNDg5YzY1MDUy
Mi4uMTg3OWI5YjhkNWQyMmI0ODFkOWMyYThmZTM5ZjVkYjJlYzAxMmZiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMi0wMy0xOSAgVG9tbXkgV2lkZW5m
bHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3Ry
ZWFtIEFQSSAoSlNFUCk6IEludHJvZHVjaW5nIFdlYlNlc3Npb25EZXNjcmlwdGlvbiBhbmQgV2Vi
SWNlQ2FuZGlkYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MTMzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNpbXBsZSBXZWJLaXQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBXZWJDb3JlL3BsYXRmb3Jt
IHZlcnNpb25zLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0
b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpXZWJJQ0VD
YW5kaWRhdGVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSUNFQ2FuZGlkYXRlRGVz
Y3JpcHRvcjo6fldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0
Zm9ybS9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3I6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjp+V2ViU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3I6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3I6OmlzTnVsbCk6CisgICAgICAgICogc3JjL1dlYklDRUNhbmRpZGF0ZURl
c2NyaXB0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjphc3NpZ24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpyZXNldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OmluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpvcGVyYXRvciBQYXNzUmVmUHRy
PFdlYkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6bGFiZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VD
YW5kaWRhdGVEZXNjcmlwdG9yOjpjYW5kaWRhdGVMaW5lKToKKyAgICAgICAgKiBzcmMvV2ViU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6V2ViU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6Om51bWJlck9mQWRkZWRDYW5kaWRh
dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6
Y2FuZGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvcjo6aW5pdGlhbFNEUCk6CisKIDIwMTItMDMtMjEgIElhbiBWb2xsaWNrICA8dm9sbGlja0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBbmltYXRpb24gZXZlbnRzIHNob3Vs
ZCBvbmx5IGJlIHVzZWQgZm9yIHN5bmNocm9uaXppbmcgYW5pbWF0aW9uIHN0YXJ0IHRpbWVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5j
cHAKaW5kZXggZjBjZTQxZTljODdhNTNmNDNiZDQ3OWI3MzY5MWQ2MmJiZGU0MTk2Yi4uY2Y5YWJj
YmUyNjk0NDEzNTI3NzI1NzAzODZkMDBmNTIwYjRlNTYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmNwcApAQCAtNjksNyArNjks
NyBAQCBjb25zdCBTdHJpbmcmIEljZUNhbmRpZGF0ZTo6Y2FuZGlkYXRlTGluZSgpCiAKIFN0cmlu
ZyBJY2VDYW5kaWRhdGU6OnRvU2RwKCkKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT50b1Nk
cCgpOworICAgIHJldHVybiBtX2Rlc2NyaXB0b3ItPnRvU0RQKCk7CiB9CiAKIEljZUNhbmRpZGF0
ZURlc2NyaXB0b3IqIEljZUNhbmRpZGF0ZTo6ZGVzY3JpcHRvcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAK
aW5kZXggNjdkMjJiNmUwYWNhM2Q1NjY3ZjIwYzMzZTQ2ZWRhOWViYmM1MjZmMS4uMTg4YWVjZTM4
MzdhMThmZDM2OTVmNjRiNDU0YmZiMzU2NzZkYTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcApAQCAt
NjcsNyArNjcsNyBAQCB2b2lkIFNlc3Npb25EZXNjcmlwdGlvbjo6YWRkQ2FuZGlkYXRlKFBhc3NS
ZWZQdHI8SWNlQ2FuZGlkYXRlPiBjYW5kaWRhdGUpCiAKIFN0cmluZyBTZXNzaW9uRGVzY3JpcHRp
b246OnRvU2RwKCkKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT50b1NkcCgpOworICAgIHJl
dHVybiBtX2Rlc2NyaXB0b3ItPnRvU0RQKCk7CiB9CiAKIFNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3IqIFNlc3Npb25EZXNjcmlwdGlvbjo6ZGVzY3JpcHRvcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURlc2Ny
aXB0b3IuY3BwCmluZGV4IDMzMjU3NmYxNWEzNDkxMTAwODUwNWI2ZmE5MjU1Y2Y3Y2QwMmIwMDYu
LmQxZjFjNjBlYjk0OTY2ZjdhOTJiMWNlOGIyZGY1NWQ2NzFlYzE1YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURlc2NyaXB0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0
ZURlc2NyaXB0b3IuY3BwCkBAIC01Myw5ICs1Myw5IEBAIEljZUNhbmRpZGF0ZURlc2NyaXB0b3I6
On5JY2VDYW5kaWRhdGVEZXNjcmlwdG9yKCkKIHsKIH0KIAotU3RyaW5nIEljZUNhbmRpZGF0ZURl
c2NyaXB0b3I6OnRvU2RwKCkKK1N0cmluZyBJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjp0b1NEUCgp
CiB7Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmNvbnN0cnVjdFNk
cCh0aGlzKTsKKyAgICByZXR1cm4gTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuY29uc3Ry
dWN0U0RQKHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNj
cmlwdG9yLmgKaW5kZXggYjhiY2NmMGM5YzUyYzFiYWNmNWMxOGNlOWNmYjAyN2EwY2UzOWY1Yi4u
Yjc3NTQ5MDdhMzU1MDk0Y2U3YzY3ZTczNGUzN2ExMDBhNGQ4OWFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZURl
c2NyaXB0b3IuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBs
YWJlbCgpIHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICBjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZUxp
bmUoKSB7IHJldHVybiBtX2NhbmRpZGF0ZUxpbmU7IH0KIAotICAgIFN0cmluZyB0b1NkcCgpOwor
ICAgIFN0cmluZyB0b1NEUCgpOwogCiBwcml2YXRlOgogICAgIEljZUNhbmRpZGF0ZURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBjYW5kaWRhdGVMaW5lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2VudGVyLmNwcAppbmRleCA2NGU3ZjFkNDQxMjkwMzc3YmI1ZDRlYzdhZTAxZjZmNzgxY2M2
ODk4Li4yMTY1MmVlMmEzNTU5MjFlNzBiZTU0M2VjOGY5M2I5MzE2ZDlkNDk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
ZW50ZXIuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgdm9pZCBNZWRpYVN0cmVhbUNlbnRlcjo6ZW5k
TG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2NyaXAKICAg
ICAgICAgc3RyZWFtRGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKIH0KIAotU3RyaW5nIE1lZGlhU3Ry
ZWFtQ2VudGVyOjpjb25zdHJ1Y3RTZHAoSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciopCitTdHJpbmcg
TWVkaWFTdHJlYW1DZW50ZXI6OmNvbnN0cnVjdFNEUChJY2VDYW5kaWRhdGVEZXNjcmlwdG9yKikK
IHsKICAgICByZXR1cm4gIiI7CiB9CiAKLVN0cmluZyBNZWRpYVN0cmVhbUNlbnRlcjo6Y29uc3Ry
dWN0U2RwKFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IqKQorU3RyaW5nIE1lZGlhU3RyZWFt
Q2VudGVyOjpjb25zdHJ1Y3RTRFAoU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciopCiB7CiAg
ICAgcmV0dXJuICIiOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgKaW5kZXggNjY2NGUyMzRmNmFhZjY5M2Q0MDc1
MGUxYjQyYWE0N2JmZDU3ZDZkNC4uN2FkYTNkMWY4MTBiNDBiMjdiNWYzNTZmNjkwNTI5YjA5Njlh
NWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUNlbnRlci5oCkBAIC03Nyw4ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwogICAgIHZv
aWQgZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAKLSAg
ICBTdHJpbmcgY29uc3RydWN0U2RwKEljZUNhbmRpZGF0ZURlc2NyaXB0b3IqKTsKLSAgICBTdHJp
bmcgY29uc3RydWN0U2RwKFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IqKTsKKyAgICBTdHJp
bmcgY29uc3RydWN0U0RQKEljZUNhbmRpZGF0ZURlc2NyaXB0b3IqKTsKKyAgICBTdHJpbmcgY29u
c3RydWN0U0RQKFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IqKTsKIAogICAgIC8vIENhbGxz
IGZyb20gdGhlIHBsYXRmb3JtIHRvIHVwZGF0ZSB0aGUgRE9NIG9iamVjdHMKICAgICB2b2lkIGVu
ZExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb25EZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Nlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwCmluZGV4IDBhNGYzNzk1MWU3YzBkMWJkZTQ5YWMwNjA1
ZjU4NDUxMTQwNDUwZDAuLjQ4YzYwOTU3MDNhYjhkNzljYjQ1M2NiZmE2OTkyNWY1YWZiMTkzZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Nlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwCkBAIC00NSw3ICs0NSw3
IEBAIFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcjo6Y3JlYXRlKGNvCiB9CiAKIFNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I6OlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBzZHApCi0g
ICAgOiBtX2luaXRpYWxTZHAoc2RwKQorICAgIDogbV9pbml0aWFsU0RQKHNkcCkKIHsKIH0KIApA
QCAtNTgsOSArNTgsOSBAQCB2b2lkIFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmFkZENh
bmRpZGF0ZShQYXNzUmVmUHRyPEljZUNhbmRpZGF0ZURlc2NyaXB0bwogICAgIG1fY2FuZGlkYXRl
cy5hcHBlbmQoY2FuZGlkYXRlKTsKIH0KIAotU3RyaW5nIFNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I6OnRvU2RwKCkKK1N0cmluZyBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjp0b1NE
UCgpCiB7Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmNvbnN0cnVj
dFNkcCh0aGlzKTsKKyAgICByZXR1cm4gTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuY29u
c3RydWN0U0RQKHRoaXMpOwogfQogCiBzaXplX3QgU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cjo6bnVtYmVyT2ZBZGRlZENhbmRpZGF0ZXMoKSBjb25zdApAQCAtNzMsOSArNzMsOSBAQCBJY2VD
YW5kaWRhdGVEZXNjcmlwdG9yKiBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpjYW5kaWRh
dGUoc2l6ZV90IGluZGV4KSBjbwogICAgIHJldHVybiBtX2NhbmRpZGF0ZXNbaW5kZXhdLmdldCgp
OwogfQogCi1jb25zdCBTdHJpbmcmIFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmluaXRp
YWxTZHAoKQorY29uc3QgU3RyaW5nJiBTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjppbml0
aWFsU0RQKCkKIHsKLSAgICByZXR1cm4gbV9pbml0aWFsU2RwOworICAgIHJldHVybiBtX2luaXRp
YWxTRFA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Nlc3Npb25EZXNjcmlwdGlv
bkRlc2NyaXB0b3IuaAppbmRleCAyMGYzMGE0ZDFhODZjMjA1MDRkYmNhMTJlMmY2YjI2MDExOTAw
YzQ5Li40NTEyODQzMmE0OGE4OTk2NWY3ZjBjMGZlOTE5ZmVkMjQ1ZmQ2ODYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9TZXNzaW9uRGVzY3JpcHRpb25E
ZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5oCkBAIC00NywxNiArNDcsMTYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IoKTsKIAogICAgIHZvaWQg
YWRkQ2FuZGlkYXRlKFBhc3NSZWZQdHI8SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pOwotICAgIFN0
cmluZyB0b1NkcCgpOworICAgIFN0cmluZyB0b1NEUCgpOwogCiAgICAgc2l6ZV90IG51bWJlck9m
QWRkZWRDYW5kaWRhdGVzKCkgY29uc3Q7CiAgICAgSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciogY2Fu
ZGlkYXRlKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0gICAgY29uc3QgU3RyaW5nJiBpbml0aWFsU2Rw
KCk7CisgICAgY29uc3QgU3RyaW5nJiBpbml0aWFsU0RQKCk7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHNkcCk7CiAK
LSAgICBTdHJpbmcgbV9pbml0aWFsU2RwOworICAgIFN0cmluZyBtX2luaXRpYWxTRFA7CiAgICAg
VmVjdG9yPFJlZlB0cjxJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiA+IG1fY2FuZGlkYXRlczsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAzNzZmNmQ0MTE2YzY4NWRjODE3NzQy
NDUwZjgyMzNjOWQwYjBlNjc3Li5iMjEyZGViOTJkZmU1ZGU5MmM5NzM0NzBjM2JmNDI0Mjg5MDRm
Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xNzMsNiArMTczLDcgQEAKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJHbHlwaENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSGlzdG9yeUl0ZW0uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJQ0VDYW5k
aWRhdGVEZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSUNFT3B0aW9u
cy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYklEQkN1cnNvci5oJywKQEAgLTI0Niw2ICsyNDcsNyBAQAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJTZWN1cml0eVBvbGljeS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNlbGVjdEVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
U2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTaGFyZWRXb3JrZXJDbGll
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTaGFyZWRXb3JrZXIuaCcsCkBAIC01
NjEsNiArNTYzLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhpc3RvcnlJdGVtLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIVFRQQm9keS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViSFRUUExvYWRJbmZvLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJQ0VD
YW5kaWRhdGVEZXNjcmlwdG9yLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJQ0VPcHRp
b25zLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJY29uTG9hZGluZ0NvbXBsZXRpb25J
bXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJY29uTG9hZGluZ0NvbXBsZXRpb25J
bXBsLmgnLApAQCAtNjQ5LDYgKzY1Miw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZWN1
cml0eVBvbGljeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2VsZWN0RWxlbWVudC5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNldHRpbmdzSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YlNoYXJlZFdvcmtlckltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iYTQ4NjdmMjI2YTcwNTFlOTQ5NGFlZTIyMDAxY2FmNzBiNzNlYjhhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklD
RUNhbmRpZGF0ZURlc2NyaXB0b3JfaAorI2RlZmluZSBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9y
X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViSUNF
Q2FuZGlkYXRlRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgV2ViSUNFQ2FuZGlkYXRlRGVzY3Jp
cHRvcigpIHsgfQorICAgIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IoY29uc3QgV2ViSUNFQ2Fu
ZGlkYXRlRGVzY3JpcHRvciYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJJQ0VD
YW5kaWRhdGVEZXNjcmlwdG9yKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJJQ0VDYW5kaWRhdGVE
ZXNjcmlwdG9yJiBvcGVyYXRvcj0oY29uc3QgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvciYgb3Ro
ZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJQ0VDYW5k
aWRhdGVEZXNjcmlwdG9yJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShj
b25zdCBXZWJTdHJpbmcmIGxhYmVsLCBjb25zdCBXZWJTdHJpbmcmIGNhbmRpZGF0ZUxpbmUpOwor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICAvLyBUaGUgU0RQIG09IGxpbmUg
dGhpcyBjYW5kaWRhdGUgaXMgYXNzb2NpYXRlZCB3aXRoLgorICAgIFdFQktJVF9FWFBPUlQgV2Vi
U3RyaW5nIGxhYmVsKCkgY29uc3Q7CisKKyAgICAvLyBUaGUgYWN0dWFsIFNEUCBjYW5kaWRhdGUu
CisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgY2FuZGlkYXRlTGluZSgpIGNvbnN0OworCisj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcihX
ZWJDb3JlOjpJY2VDYW5kaWRhdGVEZXNjcmlwdG9yKik7CisgICAgV2ViSUNFQ2FuZGlkYXRlRGVz
Y3JpcHRvcihXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4p
OworCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkljZUNhbmRpZGF0ZURl
c2NyaXB0b3I+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRy
PFdlYkNvcmU6OkljZUNhbmRpZGF0ZURlc2NyaXB0b3I+IG1fcHJpdmF0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmJlZTQ1MzE5ZjVhYWU4MmM0OTljNGRjMmEzMGU2MjQ0MGIwZWYzMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3IuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yX2gKKyNkZWZpbmUgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVz
Y3JpcHRvcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJOb25Db3B5
YWJsZS5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9y
OworCisvKgorICogIEluIG9yZGVyIHRvIGVzdGFibGlzaCB0aGUgbWVkaWEgcGxhbmUsIFBlZXJD
b25uZWN0aW9uIG5lZWRzIHNwZWNpZmljCisgKiAgcGFyYW1ldGVycyB0byBpbmRpY2F0ZSB3aGF0
IHRvIHRyYW5zbWl0IHRvIHRoZSByZW1vdGUgc2lkZSwgYXMgd2VsbAorICogIGFzIGhvdyB0byBo
YW5kbGUgdGhlIG1lZGlhIHRoYXQgaXMgcmVjZWl2ZWQuIFRoZXNlIHBhcmFtZXRlcnMgYXJlCisg
KiAgZGV0ZXJtaW5lZCBieSB0aGUgZXhjaGFuZ2Ugb2Ygc2Vzc2lvbiBkZXNjcmlwdGlvbnMgaW4g
b2ZmZXJzIGFuZAorICogIGFuc3dlcnMsIGFuZCB0aGVyZSBhcmUgY2VydGFpbiBkZXRhaWxzIHRv
IHRoaXMgcHJvY2VzcyB0aGF0IG11c3QgYmUKKyAqICBoYW5kbGVkIGluIHRoZSBKU0VQIEFQSXMu
CisKKyAqICBXaGV0aGVyIGEgc2Vzc2lvbiBkZXNjcmlwdGlvbiB3YXMgc2VudCBvciByZWNlaXZl
ZCBhZmZlY3RzIHRoZQorICogIG1lYW5pbmcgb2YgdGhhdCBkZXNjcmlwdGlvbi4gRm9yIGV4YW1w
bGUsIHRoZSBsaXN0IG9mIGNvZGVjcyBzZW50IHRvCisgKiAgYSByZW1vdGUgcGFydHkgaW5kaWNh
dGVzIHdoYXQgdGhlIGxvY2FsIHNpZGUgaXMgd2lsbGluZyB0byBkZWNvZGUsCisgKiAgYW5kIHdo
YXQgdGhlIHJlbW90ZSBwYXJ0eSBzaG91bGQgc2VuZC4KKyAqLworY2xhc3MgV2ViU2Vzc2lvbkRl
c2NyaXB0aW9uRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgV2ViU2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcigpIHsgfQorICAgIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IoY29u
c3QgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciYgb3RoZXIpIHsgYXNzaWduKG90aGVy
KTsgfQorICAgIH5XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yKCkgeyByZXNldCgpOyB9
CisKKyAgICBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yJiBvcGVyYXRvcj0oY29uc3Qg
V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciYgb3RoZXIpCisgICAgeworICAgICAgICBh
c3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9y
Jik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcm
IHNkcCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBP
UlQgc2l6ZV90IG51bWJlck9mQWRkZWRDYW5kaWRhdGVzKCkgY29uc3Q7CisgICAgV0VCS0lUX0VY
UE9SVCBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yIGNhbmRpZGF0ZShzaXplX3QgaW5kZXgpIGNv
bnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGluaXRpYWxTRFAoKSBjb25zdDsKKwor
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3IoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3I+Jik7CisKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4oKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdl
YlByaXZhdGVQdHI8V2ViQ29yZTo6U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gbV9wcml2
YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk4Zjgw
OTM5YzA4NzJiNTk3ZWY1MTNmNGUxYWEyMDkwMzkyNmVhZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwCkBA
IC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgor
CisjaW5jbHVkZSAiSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlN0cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OldlYklDRUNhbmRpZGF0ZURlc2Ny
aXB0b3IoSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciogaWNlQ2FuZGlkYXRlKQorICAgIDogbV9wcml2
YXRlKGljZUNhbmRpZGF0ZSkKK3sKK30KKworV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6V2Vi
SUNFQ2FuZGlkYXRlRGVzY3JpcHRvcihQYXNzUmVmUHRyPEljZUNhbmRpZGF0ZURlc2NyaXB0b3I+
IGljZUNhbmRpZGF0ZSkKKyAgICA6IG1fcHJpdmF0ZShpY2VDYW5kaWRhdGUpCit7Cit9CisKK3Zv
aWQgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6YXNzaWduKGNvbnN0IFdlYklDRUNhbmRpZGF0
ZURlc2NyaXB0b3ImIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsK
K30KKwordm9pZCBXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgbV9w
cml2YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6aW5p
dGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBjb25zdCBXZWJTdHJpbmcmIGNhbmRpZGF0
ZUxpbmUpCit7CisgICAgbV9wcml2YXRlID0gSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjo6Y3JlYXRl
KGxhYmVsLCBjYW5kaWRhdGVMaW5lKTsKK30KKworV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvcjo6
b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworV2ViU3RyaW5nIFdlYklD
RUNhbmRpZGF0ZURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJp
dmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKS0+bGFiZWwoKTsKK30K
KworV2ViU3RyaW5nIFdlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3I6OmNhbmRpZGF0ZUxpbmUoKSBj
b25zdAoreworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9w
cml2YXRlLmdldCgpLT5jYW5kaWRhdGVMaW5lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOGY5NmU1NjhiYjRhNzZhZmI1ZDI3ZGM2MjA2ZTFlYTUxNDY2
Njg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmgiCisKKyNpbmNsdWRlICJTZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSUNFQ2FuZGlk
YXRlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpXZWJTZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yKGNvbnN0IFBhc3NSZWZQdHI8U2Vzc2lvbkRlc2NyaXB0aW9u
RGVzY3JpcHRvcj4mIHNlc3Npb25EZXNjcmlwdGlvbikKKyAgICA6IG1fcHJpdmF0ZShzZXNzaW9u
RGVzY3JpcHRpb24pCit7Cit9CisKK3ZvaWQgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRv
cjo6YXNzaWduKGNvbnN0IFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3ImIG90aGVyKQor
eworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJTZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7
Cit9CisKK1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6Om9wZXJhdG9yIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPigpCit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwordm9pZCBXZWJTZXNzaW9uRGVzY3JpcHRpb25E
ZXNjcmlwdG9yOjppbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgc2RwKQoreworICAgIG1fcHJp
dmF0ZSA9IFNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmNyZWF0ZShzZHApOworfQorCitz
aXplX3QgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6bnVtYmVyT2ZBZGRlZENhbmRp
ZGF0ZXMoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpLT5udW1iZXJPZkFkZGVkQ2FuZGlkYXRlcygpOworfQorCitX
ZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yIFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6
OmNhbmRpZGF0ZShzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUu
aXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCktPmNhbmRpZGF0ZShpbmRleCk7
Cit9CisKK1dlYlN0cmluZyBXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjppbml0aWFs
U0RQKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS5nZXQoKS0+aW5pdGlhbFNEUCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>